i-tech-shared-components 1.2.47 → 1.2.48
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.
|
@@ -33,6 +33,7 @@ export class AutocompleteSelectComponent {
|
|
|
33
33
|
if (this.firstRequest) {
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
|
+
this.pending = true;
|
|
36
37
|
this.getData();
|
|
37
38
|
this.firstRequest = true;
|
|
38
39
|
return;
|
|
@@ -452,4 +453,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
452
453
|
type: HostListener,
|
|
453
454
|
args: ['document:visibilitychange']
|
|
454
455
|
}] } });
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEUsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FB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LENBQUM7K0dBMWFVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDhwQkNuRHhDLDB6V0FpUEEsNHhCRGpOSSxPQUFPLG9GQUNQLFVBQVUsaVJBQ1YsSUFBSSw2RkFDSixLQUFLLGtIQUNMLGVBQWUsNEZBQ2YsbUJBQW1CLGdLQUNuQixtQkFBbUIseVRBQ25CLGVBQWUsK3hDQUNmLGVBQWUsc01BQ2YsMkJBQTJCLGdFQUczQixPQUFPLHNJQUNQLHlCQUF5Qiw4REFDekIsbUJBQW1CLGlJQUNuQixrQkFBa0I7OzRGQUlULDJCQUEyQjtrQkF4QnZDLFNBQVM7K0JBQ0UsNEJBQTRCLFdBRzdCO3dCQUNQLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLDJCQUEyQjt3QkFDM0IsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJO2lGQUdRLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBbUJHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBc0J4QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEFmdGVyVmlld0luaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTZWxlY3QsIE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbmZpZ3NJbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9hdXRvY29tcGxldGUtY29uZmlncy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sTmFtZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9idXR0b24tdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IEdldFZhbHVlQnlLZXlGcm9tT2JqZWN0UGlwZSB9IGZyb20gXCIuLi8uLi9waXBlcy9nZXQtdmFsdWUtYnkta2V5LWZyb20tb2JqZWN0LnBpcGVcIjtcbmltcG9ydCB7IEFycmF5VG9TdHJpbmdQaXBlIH0gZnJvbSBcIi4uLy4uL3BpcGVzL2FycmF5LXRvLXN0cmluZy5waXBlXCI7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUgfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2VuZXJhdGUtZXJyb3ItbWVzc2FnZXMucGlwZVwiO1xuaW1wb3J0IHsgQ2xlYXJWYWx1ZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jbGVhci12YWx1ZS9jbGVhci12YWx1ZS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1hdXRvY29tcGxldGUtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE1hdFRvb2x0aXAsXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgR2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlLFxuICAgIEFycmF5VG9TdHJpbmdQaXBlLFxuICAgIE5nT3B0aW1pemVkSW1hZ2UsXG4gICAgTWF0SWNvbixcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLFxuICAgIENsZWFyVmFsdWVDb21wb25lbnQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JykgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0ITogRWxlbWVudFJlZjtcbiAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJtaXRWYWx1ZSE6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNlZSBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlIGZvciBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgY29uZmlncyhkYXRhOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlKSB7XG4gICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xuICAgICAgdGhpcy5maXJzdFJlcXVlc3QgPSB0cnVlXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGU7XG4gICAgdGhpcy5maW5kQW5kU2V0RGVmYXVsdFZhbHVlRnJvbURhdGEoKTtcbiAgfTtcblxuICBASW5wdXQoKSBkZXRlY3RDaGFuZ2VzITogYm9vbGVhbjtcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZW1pdEFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKCdhbGxTZWxlY3RlZCcpIGFsbFNlbGVjdGVkITogTWF0U2VsZWN0O1xuICBwZW5kaW5nID0gZmFsc2U7XG4gIGRlZmF1bHRWYWx1ZSE6IGFueTtcbiAgZGF0YTogQXJyYXk8YW55PiA9IFtdO1xuICBwYWdpbmF0aW9uRGF0YTogYW55ID0geyBjdXJyZW50OiAxLCBsYXN0OiAwLCBzZWFyY2hWYWx1ZTogJycgfTtcbiAgbmdDb250cm9sOiBGb3JtQ29udHJvbE5hbWU7XG4gIHNlbGVjdENvbmZpZyE6IEF1dG9jb21wbGV0ZUNvbmZpZ3NJbnRlcmZhY2U7XG4gIGZpcnN0UmVxdWVzdCA9IGZhbHNlO1xuICBzaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xuICBpc05lZWRlZEZvclJlY2FsbCA9IGZhbHNlO1xuICBzaG93aW5nVmFsdWU6IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25Gb3JNdWx0aXBsZVNlbGVjdGlvbjogQXJyYXk8YW55PiA9IFtdO1xuICBzZWFyY2hUaW1lb3V0SWQ6IGFueTtcbiAgdGFiVmlzaWJpbGl0eSE6IGJvb2xlYW47XG4gIGFjY2Vzc1RvTmV4dFJlcXVlc3QgPSB0cnVlO1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICBibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xuICBiYXNlRGF0YTogYW55O1xuICByZXF1ZXN0TG9hZGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQnV0dG9uVHlwZSA9IEJ1dHRvblR5cGU7XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dmlzaWJpbGl0eWNoYW5nZScpXG4gIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy50YWJWaXNpYmlsaXR5ID0gIWRvY3VtZW50LmhpZGRlbjtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XG4gICAgaWYgKCFkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSB0cnVlO1xuICAgICAgdGhpcy5wZW5kaW5nID0gdHJ1ZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZVxuICAgICAgfSwgNDAwMClcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlucHV0U2VydmljZTogSW5wdXRTZXJ2aWNlKSB7XG4gICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLmlucHV0U2VydmljZS5pbmplY3ROZ0NvbnRyb2woKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snc2VsZWN0Q29uZmlnJ10gJiYgdGhpcy5zZWxlY3RDb25maWcpIHtcbiAgICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLmdldERhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChuZXdWYWx1ZTogYW55KSA9PiB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIGRhdGEgYW5kIGEgdmFsdWVcbiAgICAgIGlmICh0aGlzLmRhdGEubGVuZ3RoICYmIG5ld1ZhbHVlKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGRlZmF1bHQgdmFsdWUgZG9lc24ndCBtYXRjaCB0aGUgbmV3IHZhbHVlXG4gICAgICAgIGlmICghdGhpcy5kZWZhdWx0VmFsdWUgfHwgdGhpcy5kZWZhdWx0VmFsdWUuaWQgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgLy8gUmVzZXQgdGhlIGJsb2NrIGZsYWcgdG8gYWxsb3cgdXBkYXRpbmcgdGhlIHZhbHVlXG4gICAgICAgICAgdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobmV3VmFsdWUgJiYgIXRoaXMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHZhbHVlIGJ1dCBubyBkYXRhLCB3ZSBuZWVkIHRvIGZldGNoIHRoZSBkYXRhXG4gICAgICAgIHRoaXMuYmxvY2tSZWNhbGxEZWZhdWx0VmFsdWVTZXR0ZXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVDYWxsRGF0YSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaGFyZFJlbG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldERhdGEoJycsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIER5bmFtaWMgcmVxdWVzdCBmb3Igc2VsZWN0IGRhdGEuXG4gICAqIEBwYXJhbSBzZWFyY2hUZXh0IC0gVGhlIGlucHV0IHZhbHVlIHRvIHNlYXJjaCBvcHRpb25zIGJ5LlxuICAgKiBAcGFyYW0gZnJvbVNlYXJjaCAtIEFjY2VzcyBmb3Igc2VhcmNoLlxuICAgKiBAcmV0dXJucyBTZWxlY3QgZGF0YS5cbiAgICovXG4gIGdldERhdGEoc2VhcmNoVGV4dD86IHN0cmluZywgZnJvbVNlYXJjaD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWZyb21TZWFyY2ggJiYgIXRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlcXVlc3RMb2FkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGZyb21TZWFyY2gpIHtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCA9IDE7XG4gICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSB0cnVlO1xuICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5zZWFyY2hWYWx1ZSA9IHNlYXJjaFRleHQgfHwgJyc7XG4gICAgfVxuXG4gICAgY29uc3QgZnVuY3Rpb25Ub0RvID0gdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGUodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50LCB0aGlzLnBhZ2luYXRpb25EYXRhPy5zZWFyY2hWYWx1ZSB8fCAnJyk7XG5cbiAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gdHJ1ZTtcbiAgICBmdW5jdGlvblRvRG8/LnN1YnNjcmliZSgoZGF0YTogQXJyYXk8YW55PiB8IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGF0YVRvQWRkID0gKCdjb250ZW50JyBpbiBkYXRhKSA/IGRhdGEuY29udGVudCA6IGRhdGE7XG5cbiAgICAgIGlmICgnY29udGVudCcgaW4gZGF0YSkge1xuICAgICAgICB0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QgPSAhZGF0YS5sYXN0IHx8IChkYXRhLnRvdGFsUGFnZXMgPiB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGEgPSAoZnJvbVNlYXJjaCB8fCB0aGlzLnNlbGVjdENvbmZpZz8uYmxvY2tQYWdpbmF0aW9uKSA/IGRhdGFUb0FkZCA6IFsuLi50aGlzLmRhdGEsIC4uLmRhdGFUb0FkZF07XG4gICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgaWYgKCFkYXRhVG9BZGQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEubGFzdCA9IHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQgKz0gMTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEubGFzdCArPSAxO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk7XG4gICAgICB9LCAxMClcbiAgICB9LCAoKSA9PiB7XG4gICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcbiAgICB9KVxuICB9XG5cbiAgZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xuICAgICAgaWYgKHRoaXMubmdDb250cm9sLnZhbHVlICYmIHRoaXMubmdDb250cm9sLnZhbHVlLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHRoaXMuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLm5nQ29udHJvbC52YWx1ZVswXSkpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGlzRGlzYWJsZWQgPSB0aGlzLm5nQ29udHJvbC5kaXNhYmxlZDtcbiAgICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICAgIC8vIFRPRE8gUmVtb3ZlIGFmdGVyIG1pZ3JhdGluZyBhbGwgc2VsZWN0c1xuICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmVuYWJsZSgpO1xuICAgICAgICAvLyBpZiAoIXRoaXMubmdDb250cm9sLnZhbHVlICYmICF0aGlzLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIC8vICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgLy8gICAgIHJldHVybjtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyB0aGlzLnNldERlZmF1bHRWYWx1ZSgpO1xuICAgICAgICAvLyB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5uZ0NvbnRyb2wudmFsdWUgJiYgIXRoaXMuZGF0YSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldERlZmF1bHRWYWx1ZSgpO1xuICAgICAgfVxuXG4gICAgfVxuICB9XG5cbiAgc2V0RGVmYXVsdFZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdGhpcy5kYXRhLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IHRoaXMubmdDb250cm9sLnZhbHVlKTtcbiAgICB0aGlzLmJhc2VEYXRhID0gdGhpcy5kZWZhdWx0VmFsdWVcbiAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoKVxuICAgIHRoaXMuc2V0U2hvd2luZ1ZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcbiAgfVxuXG4gIG9wdGlvbkNsaWNrKHNob3dpbmdEYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2VEYXRhID0gc2hvd2luZ0RhdGFcbiAgICBpZiAoIXRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XG4gICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XG4gICAgICB0aGlzLm1hdFNlbGVjdC5jbG9zZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU2hvd2luZ0RhdGFJblNlbGVjdGVkT3B0aW9uc011bHRpcGxlQ2FzZShzaG93aW5nRGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0Rm9jdXNPdXQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldFNob3dpbmdWYWx1ZShzaG93aW5nRGF0YSk7XG4gICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIHRvZ2dsZVNob3dpbmdEYXRhSW5TZWxlY3RlZE9wdGlvbnNNdWx0aXBsZUNhc2Uoc2hvd2luZ0RhdGE6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNob3dpbmdEYXRhQnlKc29uID0gSlNPTi5zdHJpbmdpZnkoc2hvd2luZ0RhdGEpO1xuICAgIGNvbnN0IGluZGV4T2ZFeGlzdGluZ09wdGlvbiA9IHRoaXMuc2VsZWN0ZWRPcHRpb25Gb3JNdWx0aXBsZVNlbGVjdGlvbi5maW5kSW5kZXgoXG4gICAgICAob3B0aW9uVmFsdWU6IGFueSkgPT4gSlNPTi5zdHJpbmdpZnkob3B0aW9uVmFsdWUpID09PSBzaG93aW5nRGF0YUJ5SnNvblxuICAgIClcbiAgICBpZiAoaW5kZXhPZkV4aXN0aW5nT3B0aW9uID49IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25Gb3JNdWx0aXBsZVNlbGVjdGlvbi5zcGxpY2UoaW5kZXhPZkV4aXN0aW5nT3B0aW9uLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkZvck11bHRpcGxlU2VsZWN0aW9uLnB1c2goc2hvd2luZ0RhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGFkZE5ld0l0ZW1FdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTmVlZGVkRm9yUmVjYWxsID0gdHJ1ZTtcbiAgICB0aGlzLmVtaXRBY3Rpb24uZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhbmQgc2hvdy5cbiAgICogQHBhcmFtIGRhdGEgLSBFeGlzdGluZyBjaG9zZW4gZGF0YS5cbiAgICovXG4gIHNldFNob3dpbmdWYWx1ZShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlICYmIHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCkge1xuICAgICAgY29uc3QgZnVsbFRleHQ6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25Gb3JNdWx0aXBsZVNlbGVjdGlvbi5mb3JFYWNoKChvcHRpb25EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgZnVsbFRleHQucHVzaCh0aGlzLmNvbGxlY3RBbmRHZXRTZWxlY3Rpb25Ub1Nob3dGb3JPbmVPcHRpb24ob3B0aW9uRGF0YSkpXG4gICAgICB9KVxuICAgICAgdGhpcy5zaG93aW5nVmFsdWUgPSBmdWxsVGV4dC5qb2luKCcsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd2luZ1ZhbHVlID0gdGhpcy5jb2xsZWN0QW5kR2V0U2VsZWN0aW9uVG9TaG93Rm9yT25lT3B0aW9uKGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLmJsb2NrUmVjYWxsRGVmYXVsdFZhbHVlU2V0dGVyID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbGxlY3RBbmRHZXRTZWxlY3Rpb25Ub1Nob3dGb3JPbmVPcHRpb24oZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBsZXQgaW5jbHVkZSA9IGRhdGE7XG4gICAgbGV0IGluY2x1ZGVPcHRpb25hbCA9IGRhdGE7XG5cbiAgICBpZiAodGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleSkge1xuICAgICAgdGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleS5mb3JFYWNoKChwYXJhbTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IHN0cmluZykgPT4ge1xuXG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGluY2x1ZGUgPSAoaW5jbHVkZSkgPyBpbmNsdWRlW2tleV0gOiBudWxsO1xuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5jbHVkZSA9IGluY2x1ZGVbcGFyYW1dO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNob3dGdWxsVGV4dFdpdGhPcHRpb25hbE9uU2VsZWN0ZWRWYWx1ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0/LmZvckVhY2goKHBhcmFtOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+IHwgc3RyaW5nKSA9PiB7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgcGFyYW0uZm9yRWFjaCgoa2V5OiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgaW5jbHVkZU9wdGlvbmFsID0gKGluY2x1ZGVPcHRpb25hbCkgPyBpbmNsdWRlT3B0aW9uYWxba2V5XSA6IG51bGw7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmNsdWRlT3B0aW9uYWwgPSBpbmNsdWRlT3B0aW9uYWxbcGFyYW1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbSAmJiB0eXBlb2YgaW5jbHVkZU9wdGlvbmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGluY2x1ZGUgKz0gKHRoaXMuc2VsZWN0Q29uZmlnLndpdGhQYXJhbVN5bWJvbCB8fCAnJykgKyBpbmNsdWRlT3B0aW9uYWxcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbmNsdWRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEJsb2NrIGFub3RoZXIgZXZlbnRzLlxuICAgKiBAcGFyYW0gZXZlbnQgLSBFbGVtZW50IGNsaWNrIGV2ZW50LlxuICAgKi9cbiAgcHJldmVudERlZmF1bHQoZXZlbnQ6IGFueSkge1xuICAgIGlmICghdGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgcmVnaXN0ZXJQYW5lbFNjcm9sbEV2ZW50KGVsZW1lbnQ6IE1hdFNlbGVjdCkge1xuICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZU9uU2Nyb2xsID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhbmVsID0gZWxlbWVudC5wYW5lbC5uYXRpdmVFbGVtZW50O1xuICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudDogYW55KSA9PiB0aGlzLmxvYWREYXRhT25TY3JvbGwoZXZlbnQpKTtcbiAgfVxuXG4gIGxvYWREYXRhT25TY3JvbGwoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHBvcyA9IChldmVudC50YXJnZXQuc2Nyb2xsVG9wIHx8IGV2ZW50LnRhcmdldC5zY3JvbGxUb3ApICsgZXZlbnQudGFyZ2V0Lm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBtYXggPSBldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0O1xuICAgIGlmICgocG9zICsgMSkgPj0gbWF4KSB7XG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ID09PSB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgfHwgdGhpcy5zZWxlY3RDb25maWcuYmxvY2tQYWdpbmF0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzU2VhcmNoSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnNlYXJjaCAmJiB0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBpbnB1dEZvY3VzT3V0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSAhIXRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XG4gICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcbiAgfVxuXG4gIHJlc2V0VmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChudWxsKTtcbiAgICB0aGlzLm5nQ29udHJvbC5yZXNldChudWxsKTtcbiAgICB0aGlzLmlucHV0Rm9jdXNPdXQoKTtcbiAgfVxuXG4gIGdldERhdGFXaXRoU2VhcmNoKHZhbHVlOiBhbnksIGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyVGltZW91dEZvclNlYXJjaCgpO1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPj0gMSkge1xuICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5nZXREYXRhKHZhbHVlLCB0cnVlKVxuICAgICAgfSwgODAwKTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlLmxlbmd0aCA8PSAxICYmIGV2ZW50LmtleUNvZGUgPT09IDgpIHtcbiAgICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSwgdHJ1ZSlcbiAgICB9XG4gIH1cblxuICBjbGVhclRpbWVvdXRGb3JTZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VhcmNoVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hUaW1lb3V0SWQpO1xuICAgICAgdGhpcy5zZWFyY2hUaW1lb3V0SWQgPSAwO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5TZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLmRpc2FibGVkIHx8IHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2hvd1BsYWNlaG9sZGVyKSB7XG4gICAgICB0aGlzLm1hdFNlbGVjdC5vcGVuKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSAhdGhpcy5zaG93UGxhY2Vob2xkZXI7XG4gICAgaWYgKCF0aGlzLnNob3dQbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5tYXRTZWxlY3QuY2xvc2UoKTtcbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmJsdXIoKVxuICAgIH1cbiAgfVxuXG4gIG9wZW5lZENoYW5nZShldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBpZiAodGhpcy5pc05lZWRlZEZvclJlY2FsbCkge1xuICAgICAgICB0aGlzLnJlQ2FsbERhdGEoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2gpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2VcbiAgICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dQbGFjZWhvbGRlciA9IHRydWU7XG4gIH1cblxuICByZUNhbGxEYXRhKCk6IHZvaWQge1xuICAgIC8vIFRPRE8gcmVmYWN0b3IgdGhpcyBwYXJ0XG4gICAgaWYgKCF0aGlzLmlzTmVlZGVkRm9yUmVjYWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIHRoaXMucGVuZGluZyA9IHRydWU7XG4gICAgdGhpcy5wYWdpbmF0aW9uRGF0YSA9IHtcbiAgICAgIGN1cnJlbnQ6IDEsXG4gICAgICBsYXN0OiAwLFxuICAgIH07XG4gICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcbiAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlO1xuICAgIH1cbiAgICB0aGlzLmlzTmVlZGVkRm9yUmVjYWxsID0gZmFsc2U7XG4gIH1cblxuICBlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQudmFsdWUpO1xuICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xuICAgICAgaWYgKCFldmVudC52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wucmVzZXQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tYXRTZWxlY3QuY2xvc2UoKTtcbiAgfVxuXG4gIC8qXG4gICAqIE9wZW4gbWF0LXNlbGVjdCBhbmQgZm9jdXMgb24gc2VhcmNoIG9uIGljb24gY2xpY2tcbiAgICovXG4gIGljb25DbGljayhtYXRTZWxlY3Q6IE1hdFNlbGVjdCwgc2VhcmNoSW5wdXQ/OiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgbWF0U2VsZWN0Lm9wZW4oKTtcbiAgICBzZWFyY2hJbnB1dD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIC8qXG4gICogQ3VzdG9tIGVycm9yIHN0YXRlIG1hdGNoZXIgZm9yIG1hdC1zZWxlY3QgdG8gcHJvcGVybHkgc2hvdyBlcnJvciBzdGF0ZSBpbiBtYXQtZm9ybS1maWVsZFxuICAgKi9cbiAgY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXIgPSB7XG4gICAgaXNFcnJvclN0YXRlOiAoY29udHJvbDogYW55LCBmb3JtOiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiAhIShjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiB0aGlzLnN1Ym1pdFZhbHVlKTtcbiAgICB9XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwibmV3LW1hdC1hdXRvY29tcGxldGVcIiBpZD1cIm1hdF9hdXRvY29tcGxldGVcIlxuICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRob3V0X2ljb24nOiAhc2VsZWN0Q29uZmlnLmljb25VcmwgJiYgIXNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwsXG4gICAgICAgICAgICAnbWF0LXNlbGVjdC13aXRoLXNlYXJjaCc6IHNlbGVjdENvbmZpZy5zZWFyY2gsXG4gICAgICAgICAgICAnd2l0aG91dC1sYWJlbCc6IHNlbGVjdENvbmZpZy5oaWRlTGFiZWwsXG4gICAgICAgICAgICAnaW52YWxpZF9maWVsZCc6IG5nQ29udHJvbC5jb250cm9sLmVycm9ycyAmJiBzdWJtaXRWYWx1ZSxcbiAgICAgICAgICAgICdyZWFkb25seS1maWVsZCc6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZFxuICAgICAgICAgfVwiXG4gICAgIFttYXRUb29sdGlwXT1cIihzZWxlY3RDb25maWcuaG92ZXIgJiYgIW5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gKChzZWxlY3RDb25maWcuaG92ZXIgfHwgJycpIHwgdHJhbnNsYXRlKSA6ICcnKVwiXG4gICAgIFttYXRUb29sdGlwQ2xhc3NdPVwiJ21hdC1tZGMtdG9vbHRpcCBiaWctdGQtbWF0LXRvb2x0aXAnXCJcbiAgICAgW21hdFRvb2x0aXBQb3NpdGlvbl09XCInYWJvdmUnXCJcbiAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcgJiYgbmdDb250cm9sXCI+XG5cbiAgPGRpdiBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCIhc2VsZWN0Q29uZmlnLmhpZGVMYWJlbFwiPlxuICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdyZWFkb25seS1jb2xvcicgOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICAgJ2ludmFsaWQtbGFiZWwtY29sb3InOiAhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXG4gICAgICAgIH1cIj5cbiAgICAgIHt7IHNlbGVjdENvbmZpZy5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1pbnB1dFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydyZWFkb25seS1jb2xvcicgOiBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZH1cIj4qPC9zcGFuPlxuICA8L2Rpdj5cblxuXG4gIDwhLS0gU2VhcmNoIElucHV0IC0tPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0IHctMTAwXCJcbiAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICBbbmdDbGFzc109XCJ7IGhpZGVfaW5wdXRfcGxhY2Vob2xkZXI6IHNob3dQbGFjZWhvbGRlciB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB9XCJcbiAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2hcIlxuICA+XG4gICAgPGlucHV0IGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgIGlkPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIFtuZ0NsYXNzXT1cInsncHItMjUnOiAhc2VsZWN0Q29uZmlnLmljb25Vcmx9XCJcbiAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBzZWxlY3RDb25maWcuaG92ZXJcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkIHx8IHNlbGVjdENvbmZpZy5ob3ZlcikgPyAnJyA6ICdTZWFyY2gnXCJcbiAgICAgICAgICAgKGZvY3Vzb3V0KT1cImlucHV0Rm9jdXNPdXQoKVwiXG4gICAgICAgICAgIChmb2N1cyk9XCJvcGVuU2VsZWN0aW9uKClcIlxuICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAoa2V5dXApPVwiZ2V0RGF0YVdpdGhTZWFyY2goc2VhcmNoSW5wdXQudmFsdWUsJGV2ZW50KVwiPlxuXG4gICAgPCEtLSBTZWFyY2ggSWNvbiAtLT5cbiAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+XG4gICAgICAgICAgICA8aS10ZWNoLWljb24tYnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwibXItMTBcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxuICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5pY29uUHJlZml4ICYmICFzaG93UGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICBbaWNvbk5hbWVdPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXggfHwgJydcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IGZhbHNlXCJcbiAgICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ktdGVjaC1pY29uLWJ1dHRvbj5cbiAgICAgICAgPC9zcGFuPlxuICA8L2Rpdj5cblxuICA8IS0tIFBsYWNlaG9sZGVyL1NlbGVjdGVkIFZhbHVlIERpc3BsYXkgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGxhY2Vob2xkZXIgJiYgc2VsZWN0Q29uZmlnLnNlYXJjaFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGxhY2Vob2xkZXJcIlxuICAgICAgICAgKm5nSWY9XCIoIW5nQ29udHJvbD8udmFsdWUgJiYgIW5nQ29udHJvbD8udmFsdWU/Lmxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgICAgKHNlbGVjdENvbmZpZy5tdWx0aXBsZSAmJiBuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpXCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICdyZWFkb25seS1jb2xvcicgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcbiAgICA+XG4gICAgICB7eyAoKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGUpIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlciBjdXN0b20tdmFsdWUgZWxsaXBzaXNcIlxuICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdwci00Mic6IHNlbGVjdENvbmZpZy5pY29uVXJsLFxuICAgICAgICAgICAgICAgICdyZWFkb25seS1jb2xvcic6IHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICpuZ0lmPVwibmdDb250cm9sPy52YWx1ZVwiXG4gICAgPlxuICAgICAge3tzaG93aW5nVmFsdWV9fVxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEN1c3RvbSBJY29uIC0tPlxuICA8aW1nIGNsYXNzPVwibGVmdF9pY29uX25ldyBwb2ludGVyXCJcbiAgICAgICBhbHQ9XCJUb2dnbGUgU2VsZWN0aW9uXCJcbiAgICAgICAoY2xpY2spPVwiaWNvbkNsaWNrKG1hdFNlbGVjdCwgc2VhcmNoSW5wdXQpXCJcbiAgICAgICAqbmdJZj1cIiFzZWxlY3RDb25maWcubWF0SWNvbk5hbWUgJiYgKHNlbGVjdENvbmZpZy5pY29uVXJsIHx8IHNlbGVjdENvbmZpZy5hY3RpdmVTdGF0ZUljb25VcmwpXCJcbiAgICAgICBbc3JjXT1cIidhc3NldHMvaW1hZ2VzL2ljb25zL2dsb2JhbC8nICsgKG5nQ29udHJvbC5jb250cm9sPy52YWx1ZSAmJiBzZWxlY3RDb25maWc/LmFjdGl2ZVN0YXRlSWNvblVybCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RDb25maWcuYWN0aXZlU3RhdGVJY29uVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNlbGVjdENvbmZpZy5pY29uVXJsKVwiPlxuXG4gIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy0xMDBcIiAoY2xpY2spPVwic2VsZWN0Q29uZmlnPy5zZWFyY2ggPyBmb2N1c1NlYXJjaElucHV0KCkgOiBudWxsXCI+XG4gICAgPCEtLSBNYXRlcmlhbCBTZWxlY3QgLS0+XG4gICAgPG1hdC1zZWxlY3QgI21hdFNlbGVjdD1cIm1hdFNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2F1dG9jb21wbGV0ZS10cmFuc2Zvcm0tcGFuZWwtbG9jYXRpb24nXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXBsYWNlaG9sZGVyXT1cIihzZWxlY3RDb25maWcucGxhY2Vob2xkZXIgfHwgJycpIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RDb25maWcuZmlsdHJhdGlvbktleSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJyZWdpc3RlclBhbmVsU2Nyb2xsRXZlbnQobWF0U2VsZWN0KVwiXG4gICAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5nQ29udHJvbC5jb250cm9sXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwic2VsZWN0Q29uZmlnLm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImVtaXRTZWxlY3Rpb25DaGFuZ2VBbmRDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JTdGF0ZU1hdGNoZXJdPVwiY3VzdG9tRXJyb3JTdGF0ZU1hdGNoZXJcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCIoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkXCJcbiAgICA+XG5cbiAgICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwicGVuZGluZ1wiIGNsYXNzPVwib3B0aW9uX2xvYWRpbmcgcmVsYXRpdmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVlc3RfbG9hZGluZ1wiPlxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbG5zOnhsaW5rPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87XCIgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgd2lkdGg9XCI0MHB4XCIgaGVpZ2h0PVwiNDBweFwiPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI1MFwiIGN5PVwiNTBcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cIiMwMEFDNDdcIiBzdHJva2Utd2lkdGg9XCIxMFwiIHI9XCIzNVwiIHN0cm9rZS1kYXNoYXJyYXk9XCIxNjQuOTMzNjE0MzEzNDY0MTUgNTYuOTc3ODcxNDM3ODIxMzhcIj5cbiAgICAgICAgICA8YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPVwidHJhbnNmb3JtXCIgdHlwZT1cInJvdGF0ZVwiIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiXG4gICAgICAgICAgZHVyPVwiMXNcIiB2YWx1ZXM9XCIwIDUwIDUwOzM2MCA1MCA1MFwiIGtleVRpbWVzPVwiMDsxXCI+PC9hbmltYXRlVHJhbnNmb3JtPlxuICAgICAgICAgIDwvY2lyY2xlPlxuICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICA8IS0tIE9wdGlvbnMgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8ubGVuZ3RoICYmICFwZW5kaW5nXCI+XG4gICAgICAgIDwhLS0gQWRkIE5ldyBPcHRpb24gLS0+XG4gICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwic2VsZWN0Q29uZmlnLmFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBvaW50ZXIgYWRkX25ld1wiXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCI+XG4gICAgICAgICAgPCEtLShjbGljayk9XCJuZ0NvbnRyb2wuY29udHJvbC5yZXNldChudWxsKTtcbiAgICAgICAgICAgICAgbWF0U2VsZWN0Ll9vbkJsdXIoKTtjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCI+LS0+XG4gICAgICAgICAgPGktdGVjaC1idXR0b25cbiAgICAgICAgICAgIFt0eXBlXT1cIkJ1dHRvblR5cGUuT1VUTElORVwiXG4gICAgICAgICAgICBbZm9udEljb25dPVwiJ2FkZCdcIlxuICAgICAgICAgICAgW3RleHRdPVwiKCdkcm9wZG93bl9hZGRfaXRlbScgfCB0cmFuc2xhdGUgOiB7SU5QVVRfTkFNRTogKHNlbGVjdENvbmZpZy5sYWJlbCB8IHRyYW5zbGF0ZSl9KSBcIlxuICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIid3LTEwMCBtYXQtYXV0b2NvbXBsZXRlLXNlbGVjdC1idXR0b24nXCI+XG4gICAgICAgICAgPC9pLXRlY2gtYnV0dG9uPlxuICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgPCEtLSBSZWd1bGFyIE9wdGlvbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0Q29uZmlnPy5jaGFuZ2VUZXh0ICYmIGRhdGEubGVuZ3RoXCI+XG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdENvbmZpZy52YWx1ZUJ5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3QgOiBpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2V1cCk9XCJvcHRpb25DbGljayhpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJwcmV2ZW50RGVmYXVsdCgkZXZlbnQpXCI+XG4gICAgICAgICAgICBAaWYgKHNlbGVjdENvbmZpZz8ubmVlZFRyYW5zbGF0ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAoKHNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5S2V5IHwgZ2V0VmFsdWVCeUtleUZyb21PYmplY3RcbiAgICAgICAgICAgICAgOiBpdGVtIDogc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlQYXJhbSA6IHNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wpIHx8ICcnKSB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgKChzZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleSB8IGdldFZhbHVlQnlLZXlGcm9tT2JqZWN0XG4gICAgICAgICAgICAgIDogaXRlbSA6IHNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0gOiBzZWxlY3RDb25maWcud2l0aFBhcmFtU3ltYm9sKSB8fCAnJylcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDwhLS0gQ3VzdG9tIFRleHQgT3B0aW9ucyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dCAmJiBkYXRhLmxlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RDb25maWcudmFsdWVCeUtleSB8IGdldFZhbHVlQnlLZXlGcm9tT2JqZWN0IDogaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib3B0aW9uQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dFtpdGVtXS5kaXNhYmxlZFwiPlxuICAgICAgICAgICAge3sgc2VsZWN0Q29uZmlnPy5uZWVkVHJhbnNsYXRlT3B0aW9ucyA/IChzZWxlY3RDb25maWc/LmNoYW5nZVRleHRbaXRlbV0udGV4dCB8IHRyYW5zbGF0ZSApIDogc2VsZWN0Q29uZmlnPy5jaGFuZ2VUZXh0W2l0ZW1dLnRleHR9fVxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhcGVuZGluZyAmJiAhZGF0YS5sZW5ndGhcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gZGlzYWJsZWQgY2xhc3M9XCJlbXB0eV9zZWxlY3Rpb25fc3RhdGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc19hbmRfdGlsZSBhZGRfbmV3IGZsZXhfY29sdW1uIHctMTAwIGZsZXhfY2VudGVyX2FsaWduX2NlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ2Ryb3Bkb3duX25vX2l0ZW1zJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xMFwiPlxuICAgICAgICAgICAgICA8aS10ZWNoLWJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2VsZWN0Q29uZmlnPy5hY3Rpb25zXCJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxuICAgICAgICAgICAgICAgIChidXR0b25DbGljayk9XCJjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO2FkZE5ld0l0ZW1FdmVudCgpXCJcbiAgICAgICAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ21hdC1hdXRvY29tcGxldGUtc2VsZWN0LWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgIFtmb250SWNvbl09XCInYWRkJ1wiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiKCdkcm9wZG93bl9hZGRfaXRlbScgfCB0cmFuc2xhdGUgOiB7SU5QVVRfTkFNRTogKHNlbGVjdENvbmZpZy5sYWJlbCB8IHRyYW5zbGF0ZSl9KSBcIj5cbiAgICAgICAgICAgICAgPC9pLXRlY2gtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJzZWxlY3RDb25maWcuaWNvblByZWZpeFwiXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICdyZWFkb25seS1jb2xvcicgOiAhc2VsZWN0Q29uZmlnWydpY29uUHJlZml4Q29sb3InXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxuICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InIDogIXNlbGVjdENvbmZpZ1snaWNvblByZWZpeENvbG9yJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXG4gICAgPnt7IHNlbGVjdENvbmZpZy5pY29uUHJlZml4IH19XG4gICAgPC9tYXQtaWNvbj5cblxuICAgIDxtYXQtaWNvbiAqbmdJZj1cInNlbGVjdENvbmZpZ1snaWNvblByZWZpeFN2ZyddXCJcbiAgICAgICAgICAgICAgbWF0UHJlZml4XG4gICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIigoc2VsZWN0Q29uZmlnPy5bJ2ljb25QcmVmaXhUb29sdGlwJ10gfHwgJycpIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtzdmdJY29uXT1cInNlbGVjdENvbmZpZ1snaWNvblByZWZpeFN2ZyddIHx8ICcnXCJcbiAgICA+PC9tYXQtaWNvbj5cblxuICAgIDxpLXRlY2gtaWNvbi1idXR0b25cbiAgICAgICpuZ0lmPVwic2VsZWN0Q29uZmlnLnNlYXJjaCAmJiBzZWxlY3RDb25maWcuY2xlYXJhYmxlICYmICFuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCAmJiAhIW5nQ29udHJvbC5jb250cm9sLnZhbHVlXCJcbiAgICAgIGljb25OYW1lPVwiY2FuY2VsXCJcbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBmYWxzZVwiXG4gICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXG4gICAgICAoY2xpY2spPVwiXG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG5nQ29udHJvbC5jb250cm9sLnJlc2V0KG51bGwpO1xuICAgICAgICBtYXRTZWxlY3QuX29uQmx1cigpO1xuICAgICAgICBjbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpXG4gICAgICBcIlxuICAgID5cbiAgICA8L2ktdGVjaC1pY29uLWJ1dHRvbj5cbiAgICA8bWF0LWljb25cbiAgICAgIG1hdFN1ZmZpeFxuICAgICAgY2xhc3M9XCJzZWxlY3QtYXJyb3dcIlxuICAgICAgW2NsYXNzLm9wZW5dPVwibWF0U2VsZWN0LnBhbmVsT3BlblwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAncmVhZG9ubHktY29sb3InOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICAgICAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InOiAhKHNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCksXG4gICAgICAgICAgICAnbXQtOCc6ICEhbmdDb250cm9sLmNvbnRyb2wudmFsdWUgJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZVxuICAgICAgICAgfVwiXG4gICAgPlxuICAgICAga2V5Ym9hcmRfYXJyb3dfZG93blxuICAgIDwvbWF0LWljb24+XG4gICAgPCEtLSBFcnJvciBNZXNzYWdlIC0tPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCIhIShuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUpXCI+XG4gICAgICB7eyBuZ0NvbnRyb2wuY29udHJvbCB8IGdlbmVyYXRlRXJyb3JNZXNzYWdlcyA6IHNlbGVjdENvbmZpZy5sYWJlbCA6IHNlbGVjdENvbmZpZy5kZWZhdWx0UGF0dGVybktleSB9fVxuICAgIDwvbWF0LWVycm9yPlxuICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gIDwhLS0gUmVzZXQgQnV0dG9uIC0tPlxuICA8aS10ZWNoLWNsZWFyLXZhbHVlICpuZ0lmPVwic2VsZWN0Q29uZmlnLnJlc2V0XCIgKHJlc2V0VmFsdWUpPVwicmVzZXRWYWx1ZSgpXCI+PC9pLXRlY2gtY2xlYXItdmFsdWU+XG48L2Rpdj5cbiJdfQ==
|
|
456
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXNlbGVjdC9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdXRvY29tcGxldGUtc2VsZWN0L2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR0EsWUFBWSxFQUN6QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdEUsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FB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LEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3RDLENBQUM7K0dBM2FVLDJCQUEyQjttR0FBM0IsMkJBQTJCLDhwQkNuRHhDLDB6V0FpUEEsNHhCRGpOSSxPQUFPLG9GQUNQLFVBQVUsaVJBQ1YsSUFBSSw2RkFDSixLQUFLLGtIQUNMLGVBQWUsNEZBQ2YsbUJBQW1CLGdLQUNuQixtQkFBbUIseVRBQ25CLGVBQWUsK3hDQUNmLGVBQWUsc01BQ2YsMkJBQTJCLGdFQUczQixPQUFPLHNJQUNQLHlCQUF5Qiw4REFDekIsbUJBQW1CLGlJQUNuQixrQkFBa0I7OzRGQUlULDJCQUEyQjtrQkF4QnZDLFNBQVM7K0JBQ0UsNEJBQTRCLFdBRzdCO3dCQUNQLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLDJCQUEyQjt3QkFDM0IsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGtCQUFrQjtxQkFDbkIsY0FDVyxJQUFJO2lGQUdRLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtPLE9BQU87c0JBQW5CLEtBQUs7Z0JBb0JHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBc0J4QixzQkFBc0I7c0JBRHJCLFlBQVk7dUJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEFmdGVyVmlld0luaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTZWxlY3QsIE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3RcIjtcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbmZpZ3NJbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vaW50ZXJmYWNlcy9hdXRvY29tcGxldGUtY29uZmlncy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sTmFtZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgSW5wdXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW5wdXQuc2VydmljZSc7XG5pbXBvcnQgeyBCdXR0b25UeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9idXR0b24tdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdPcHRpbWl6ZWRJbWFnZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcFwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tIFwiLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IEdldFZhbHVlQnlLZXlGcm9tT2JqZWN0UGlwZSB9IGZyb20gXCIuLi8uLi9waXBlcy9nZXQtdmFsdWUtYnkta2V5LWZyb20tb2JqZWN0LnBpcGVcIjtcbmltcG9ydCB7IEFycmF5VG9TdHJpbmdQaXBlIH0gZnJvbSBcIi4uLy4uL3BpcGVzL2FycmF5LXRvLXN0cmluZy5waXBlXCI7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IEdlbmVyYXRlRXJyb3JNZXNzYWdlc1BpcGUgfSBmcm9tIFwiLi4vLi4vcGlwZXMvZ2VuZXJhdGUtZXJyb3ItbWVzc2FnZXMucGlwZVwiO1xuaW1wb3J0IHsgQ2xlYXJWYWx1ZUNvbXBvbmVudCB9IGZyb20gXCIuLi9jbGVhci12YWx1ZS9jbGVhci12YWx1ZS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ktdGVjaC1hdXRvY29tcGxldGUtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICBOZ0NsYXNzLFxuICAgIE1hdFRvb2x0aXAsXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgR2V0VmFsdWVCeUtleUZyb21PYmplY3RQaXBlLFxuICAgIEFycmF5VG9TdHJpbmdQaXBlLFxuICAgIE5nT3B0aW1pemVkSW1hZ2UsXG4gICAgTWF0SWNvbixcbiAgICBHZW5lcmF0ZUVycm9yTWVzc2FnZXNQaXBlLFxuICAgIENsZWFyVmFsdWVDb21wb25lbnQsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQXV0b2NvbXBsZXRlU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZCgnbWF0U2VsZWN0JykgbWF0U2VsZWN0ITogTWF0U2VsZWN0O1xuICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0ITogRWxlbWVudFJlZjtcbiAgQElucHV0KCkgY2xhc3NOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJtaXRWYWx1ZSE6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNlZSBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlIGZvciBhdmFpbGFibGUgY29uZmlndXJhdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKSBzZXQgY29uZmlncyhkYXRhOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlKSB7XG4gICAgdGhpcy5zZWxlY3RDb25maWcgPSBkYXRhO1xuICAgIGlmICghZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgodHlwZW9mIHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKHRoaXMuZmlyc3RSZXF1ZXN0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmdldERhdGEoKTtcbiAgICAgIHRoaXMuZmlyc3RSZXF1ZXN0ID0gdHJ1ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlO1xuICAgIHRoaXMuZmluZEFuZFNldERlZmF1bHRWYWx1ZUZyb21EYXRhKCk7XG4gIH07XG5cbiAgQElucHV0KCkgZGV0ZWN0Q2hhbmdlcyE6IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGVtaXRBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZCgnYWxsU2VsZWN0ZWQnKSBhbGxTZWxlY3RlZCE6IE1hdFNlbGVjdDtcbiAgcGVuZGluZyA9IGZhbHNlO1xuICBkZWZhdWx0VmFsdWUhOiBhbnk7XG4gIGRhdGE6IEFycmF5PGFueT4gPSBbXTtcbiAgcGFnaW5hdGlvbkRhdGE6IGFueSA9IHsgY3VycmVudDogMSwgbGFzdDogMCwgc2VhcmNoVmFsdWU6ICcnIH07XG4gIG5nQ29udHJvbDogRm9ybUNvbnRyb2xOYW1lO1xuICBzZWxlY3RDb25maWchOiBBdXRvY29tcGxldGVDb25maWdzSW50ZXJmYWNlO1xuICBmaXJzdFJlcXVlc3QgPSBmYWxzZTtcbiAgc2hvd1BsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgaXNOZWVkZWRGb3JSZWNhbGwgPSBmYWxzZTtcbiAgc2hvd2luZ1ZhbHVlOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uRm9yTXVsdGlwbGVTZWxlY3Rpb246IEFycmF5PGFueT4gPSBbXTtcbiAgc2VhcmNoVGltZW91dElkOiBhbnk7XG4gIHRhYlZpc2liaWxpdHkhOiBib29sZWFuO1xuICBhY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgYmxvY2tSZWNhbGxEZWZhdWx0VmFsdWVTZXR0ZXIgPSBmYWxzZTtcbiAgYmFzZURhdGE6IGFueTtcbiAgcmVxdWVzdExvYWRpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEJ1dHRvblR5cGUgPSBCdXR0b25UeXBlO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnZpc2liaWxpdHljaGFuZ2UnKVxuICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudGFiVmlzaWJpbGl0eSA9ICFkb2N1bWVudC5oaWRkZW47XG4gICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbG9zZVBhbmVsQW5kVW5zZXRGb2N1cygpO1xuICAgIGlmICghZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICB0aGlzLmlzTmVlZGVkRm9yUmVjYWxsID0gdHJ1ZTtcbiAgICAgIHRoaXMucGVuZGluZyA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2VcbiAgICAgIH0sIDQwMDApXG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbnB1dFNlcnZpY2U6IElucHV0U2VydmljZSkge1xuICAgIHRoaXMubmdDb250cm9sID0gdGhpcy5pbnB1dFNlcnZpY2UuaW5qZWN0TmdDb250cm9sKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3NlbGVjdENvbmZpZyddICYmIHRoaXMuc2VsZWN0Q29uZmlnKSB7XG4gICAgICBpZiAoKHR5cGVvZiB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZSkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgobmV3VmFsdWU6IGFueSkgPT4ge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBkYXRhIGFuZCBhIHZhbHVlXG4gICAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCAmJiBuZXdWYWx1ZSkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBkZWZhdWx0IHZhbHVlIGRvZXNuJ3QgbWF0Y2ggdGhlIG5ldyB2YWx1ZVxuICAgICAgICBpZiAoIXRoaXMuZGVmYXVsdFZhbHVlIHx8IHRoaXMuZGVmYXVsdFZhbHVlLmlkICE9PSBuZXdWYWx1ZSkge1xuICAgICAgICAgIC8vIFJlc2V0IHRoZSBibG9jayBmbGFnIHRvIGFsbG93IHVwZGF0aW5nIHRoZSB2YWx1ZVxuICAgICAgICAgIHRoaXMuYmxvY2tSZWNhbGxEZWZhdWx0VmFsdWVTZXR0ZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlICYmICF0aGlzLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIC8vIElmIHdlIGhhdmUgYSB2YWx1ZSBidXQgbm8gZGF0YSwgd2UgbmVlZCB0byBmZXRjaCB0aGUgZGF0YVxuICAgICAgICB0aGlzLmJsb2NrUmVjYWxsRGVmYXVsdFZhbHVlU2V0dGVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlQ2FsbERhdGEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGhhcmRSZWxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXREYXRhKCcnLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEeW5hbWljIHJlcXVlc3QgZm9yIHNlbGVjdCBkYXRhLlxuICAgKiBAcGFyYW0gc2VhcmNoVGV4dCAtIFRoZSBpbnB1dCB2YWx1ZSB0byBzZWFyY2ggb3B0aW9ucyBieS5cbiAgICogQHBhcmFtIGZyb21TZWFyY2ggLSBBY2Nlc3MgZm9yIHNlYXJjaC5cbiAgICogQHJldHVybnMgU2VsZWN0IGRhdGEuXG4gICAqL1xuICBnZXREYXRhKHNlYXJjaFRleHQ/OiBzdHJpbmcsIGZyb21TZWFyY2g/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFmcm9tU2VhcmNoICYmICF0aGlzLmFjY2Vzc1RvTmV4dFJlcXVlc3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXF1ZXN0TG9hZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmcm9tU2VhcmNoKSB7XG4gICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQgPSAxO1xuICAgICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gdHJ1ZTtcbiAgICAgIHRoaXMucGFnaW5hdGlvbkRhdGEuc2VhcmNoVmFsdWUgPSBzZWFyY2hUZXh0IHx8ICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bmN0aW9uVG9EbyA9IHRoaXMuc2VsZWN0Q29uZmlnLnBhZ2luYXRlKHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCwgdGhpcy5wYWdpbmF0aW9uRGF0YT8uc2VhcmNoVmFsdWUgfHwgJycpO1xuXG4gICAgdGhpcy5yZXF1ZXN0TG9hZGluZyA9IHRydWU7XG4gICAgZnVuY3Rpb25Ub0RvPy5zdWJzY3JpYmUoKGRhdGE6IEFycmF5PGFueT4gfCBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGRhdGFUb0FkZCA9ICgnY29udGVudCcgaW4gZGF0YSkgPyBkYXRhLmNvbnRlbnQgOiBkYXRhO1xuXG4gICAgICBpZiAoJ2NvbnRlbnQnIGluIGRhdGEpIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NUb05leHRSZXF1ZXN0ID0gIWRhdGEubGFzdCB8fCAoZGF0YS50b3RhbFBhZ2VzID4gdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhID0gKGZyb21TZWFyY2ggfHwgdGhpcy5zZWxlY3RDb25maWc/LmJsb2NrUGFnaW5hdGlvbikgPyBkYXRhVG9BZGQgOiBbLi4udGhpcy5kYXRhLCAuLi5kYXRhVG9BZGRdO1xuICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XG5cbiAgICAgIGlmICghZGF0YVRvQWRkLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgPSB0aGlzLnBhZ2luYXRpb25EYXRhLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wYWdpbmF0aW9uRGF0YS5jdXJyZW50ICs9IDE7XG4gICAgICB0aGlzLnBhZ2luYXRpb25EYXRhLmxhc3QgKz0gMTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpO1xuICAgICAgfSwgMTApXG4gICAgfSwgKCkgPT4ge1xuICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnJlcXVlc3RMb2FkaW5nID0gZmFsc2U7XG4gICAgfSlcbiAgfVxuXG4gIGZpbmRBbmRTZXREZWZhdWx0VmFsdWVGcm9tRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcbiAgICAgIGlmICh0aGlzLm5nQ29udHJvbC52YWx1ZSAmJiB0aGlzLm5nQ29udHJvbC52YWx1ZS5sZW5ndGggPT0gMSkge1xuICAgICAgICB0aGlzLnNldFNob3dpbmdWYWx1ZSh0aGlzLmRhdGEuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gdGhpcy5uZ0NvbnRyb2wudmFsdWVbMF0pKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5uZ0NvbnRyb2wuZGlzYWJsZWQ7XG4gICAgICBpZiAoaXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBUT0RPIFJlbW92ZSBhZnRlciBtaWdyYXRpbmcgYWxsIHNlbGVjdHNcbiAgICAgICAgLy8gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgLy8gaWYgKCF0aGlzLm5nQ29udHJvbC52YWx1ZSAmJiAhdGhpcy5kYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIC8vICAgICByZXR1cm47XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gdGhpcy5zZXREZWZhdWx0VmFsdWUoKTtcbiAgICAgICAgLy8gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXRoaXMubmdDb250cm9sLnZhbHVlICYmICF0aGlzLmRhdGEpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXREZWZhdWx0VmFsdWUoKTtcbiAgICAgIH1cblxuICAgIH1cbiAgfVxuXG4gIHNldERlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZGF0YS5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSB0aGlzLm5nQ29udHJvbC52YWx1ZSk7XG4gICAgdGhpcy5iYXNlRGF0YSA9IHRoaXMuZGVmYXVsdFZhbHVlXG4gICAgaWYgKCF0aGlzLmRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KClcbiAgICB0aGlzLnNldFNob3dpbmdWYWx1ZSh0aGlzLmRlZmF1bHRWYWx1ZSk7XG4gIH1cblxuICBvcHRpb25DbGljayhzaG93aW5nRGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5iYXNlRGF0YSA9IHNob3dpbmdEYXRhXG4gICAgaWYgKCF0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy5zZXRTaG93aW5nVmFsdWUoc2hvd2luZ0RhdGEpO1xuICAgICAgdGhpcy5tYXRTZWxlY3QuY2xvc2UoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZVNob3dpbmdEYXRhSW5TZWxlY3RlZE9wdGlvbnNNdWx0aXBsZUNhc2Uoc2hvd2luZ0RhdGEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTaG93aW5nVmFsdWUoc2hvd2luZ0RhdGEpO1xuICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gZmFsc2U7XG4gIH1cblxuICB0b2dnbGVTaG93aW5nRGF0YUluU2VsZWN0ZWRPcHRpb25zTXVsdGlwbGVDYXNlKHNob3dpbmdEYXRhOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBzaG93aW5nRGF0YUJ5SnNvbiA9IEpTT04uc3RyaW5naWZ5KHNob3dpbmdEYXRhKTtcbiAgICBjb25zdCBpbmRleE9mRXhpc3RpbmdPcHRpb24gPSB0aGlzLnNlbGVjdGVkT3B0aW9uRm9yTXVsdGlwbGVTZWxlY3Rpb24uZmluZEluZGV4KFxuICAgICAgKG9wdGlvblZhbHVlOiBhbnkpID0+IEpTT04uc3RyaW5naWZ5KG9wdGlvblZhbHVlKSA9PT0gc2hvd2luZ0RhdGFCeUpzb25cbiAgICApXG4gICAgaWYgKGluZGV4T2ZFeGlzdGluZ09wdGlvbiA+PSAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uRm9yTXVsdGlwbGVTZWxlY3Rpb24uc3BsaWNlKGluZGV4T2ZFeGlzdGluZ09wdGlvbiwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25Gb3JNdWx0aXBsZVNlbGVjdGlvbi5wdXNoKHNob3dpbmdEYXRhKTtcbiAgICB9XG4gIH1cblxuICBhZGROZXdJdGVtRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IHRydWU7XG4gICAgdGhpcy5lbWl0QWN0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYW5kIHNob3cuXG4gICAqIEBwYXJhbSBkYXRhIC0gRXhpc3RpbmcgY2hvc2VuIGRhdGEuXG4gICAqL1xuICBzZXRTaG93aW5nVmFsdWUoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2gpIHtcbiAgICAgIGNvbnN0IGZ1bGxUZXh0OiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uRm9yTXVsdGlwbGVTZWxlY3Rpb24uZm9yRWFjaCgob3B0aW9uRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGZ1bGxUZXh0LnB1c2godGhpcy5jb2xsZWN0QW5kR2V0U2VsZWN0aW9uVG9TaG93Rm9yT25lT3B0aW9uKG9wdGlvbkRhdGEpKVxuICAgICAgfSlcbiAgICAgIHRoaXMuc2hvd2luZ1ZhbHVlID0gZnVsbFRleHQuam9pbignLCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dpbmdWYWx1ZSA9IHRoaXMuY29sbGVjdEFuZEdldFNlbGVjdGlvblRvU2hvd0Zvck9uZU9wdGlvbihkYXRhKTtcbiAgICB9XG4gICAgdGhpcy5ibG9ja1JlY2FsbERlZmF1bHRWYWx1ZVNldHRlciA9IHRydWU7XG4gIH1cblxuICBjb2xsZWN0QW5kR2V0U2VsZWN0aW9uVG9TaG93Rm9yT25lT3B0aW9uKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IGluY2x1ZGUgPSBkYXRhO1xuICAgIGxldCBpbmNsdWRlT3B0aW9uYWwgPSBkYXRhO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlLZXkpIHtcbiAgICAgIHRoaXMuc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlLZXkuZm9yRWFjaCgocGFyYW06IEFycmF5PHN0cmluZyB8IG51bWJlcj4gfCBzdHJpbmcpID0+IHtcblxuICAgICAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHBhcmFtLmZvckVhY2goKGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBpbmNsdWRlID0gKGluY2x1ZGUpID8gaW5jbHVkZVtrZXldIDogbnVsbDtcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluY2x1ZGUgPSBpbmNsdWRlW3BhcmFtXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5zaG93RnVsbFRleHRXaXRoT3B0aW9uYWxPblNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeVBhcmFtPy5mb3JFYWNoKChwYXJhbTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB8IHN0cmluZykgPT4ge1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHBhcmFtLmZvckVhY2goKGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGluY2x1ZGVPcHRpb25hbCA9IChpbmNsdWRlT3B0aW9uYWwpID8gaW5jbHVkZU9wdGlvbmFsW2tleV0gOiBudWxsO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaW5jbHVkZU9wdGlvbmFsID0gaW5jbHVkZU9wdGlvbmFsW3BhcmFtXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0gJiYgdHlwZW9mIGluY2x1ZGVPcHRpb25hbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpbmNsdWRlICs9ICh0aGlzLnNlbGVjdENvbmZpZy53aXRoUGFyYW1TeW1ib2wgfHwgJycpICsgaW5jbHVkZU9wdGlvbmFsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5jbHVkZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCbG9jayBhbm90aGVyIGV2ZW50cy5cbiAgICogQHBhcmFtIGV2ZW50IC0gRWxlbWVudCBjbGljayBldmVudC5cbiAgICovXG4gIHByZXZlbnREZWZhdWx0KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0Q29uZmlnLm11bHRpcGxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIHJlZ2lzdGVyUGFuZWxTY3JvbGxFdmVudChlbGVtZW50OiBNYXRTZWxlY3QpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGVPblNjcm9sbCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYW5lbCA9IGVsZW1lbnQucGFuZWwubmF0aXZlRWxlbWVudDtcbiAgICBwYW5lbC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZXZlbnQ6IGFueSkgPT4gdGhpcy5sb2FkRGF0YU9uU2Nyb2xsKGV2ZW50KSk7XG4gIH1cblxuICBsb2FkRGF0YU9uU2Nyb2xsKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBwb3MgPSAoZXZlbnQudGFyZ2V0LnNjcm9sbFRvcCB8fCBldmVudC50YXJnZXQuc2Nyb2xsVG9wKSArIGV2ZW50LnRhcmdldC5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3QgbWF4ID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodDtcbiAgICBpZiAoKHBvcyArIDEpID49IG1heCkge1xuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkRhdGEuY3VycmVudCA9PT0gdGhpcy5wYWdpbmF0aW9uRGF0YS5sYXN0IHx8IHRoaXMuc2VsZWN0Q29uZmlnLmJsb2NrUGFnaW5hdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmdldERhdGEoKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c1NlYXJjaElucHV0KCkge1xuICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5zZWFyY2ggJiYgdGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgaW5wdXRGb2N1c091dCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzTmVlZGVkRm9yUmVjYWxsID0gISF0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xuICAgIHRoaXMuY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk7XG4gIH1cblxuICByZXNldFZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgdGhpcy5uZ0NvbnRyb2wucmVzZXQobnVsbCk7XG4gICAgdGhpcy5pbnB1dEZvY3VzT3V0KCk7XG4gIH1cblxuICBnZXREYXRhV2l0aFNlYXJjaCh2YWx1ZTogYW55LCBldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclRpbWVvdXRGb3JTZWFyY2goKTtcbiAgICBpZiAodmFsdWUubGVuZ3RoID49IDEpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSh2YWx1ZSwgdHJ1ZSlcbiAgICAgIH0sIDgwMCk7XG4gICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPD0gMSAmJiBldmVudC5rZXlDb2RlID09PSA4KSB7XG4gICAgICB0aGlzLmdldERhdGEodmFsdWUsIHRydWUpXG4gICAgfVxuICB9XG5cbiAgY2xlYXJUaW1lb3V0Rm9yU2VhcmNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlYXJjaFRpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoVGltZW91dElkKTtcbiAgICAgIHRoaXMuc2VhcmNoVGltZW91dElkID0gMDtcbiAgICB9XG4gIH1cblxuICBvcGVuU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdENvbmZpZy5kaXNhYmxlZCB8fCB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3dQbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy5tYXRTZWxlY3Qub3BlbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuc2hvd1BsYWNlaG9sZGVyID0gIXRoaXMuc2hvd1BsYWNlaG9sZGVyO1xuICAgIGlmICghdGhpcy5zaG93UGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMucmVDYWxsRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUGFuZWxBbmRVbnNldEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XG4gICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5ibHVyKClcbiAgICB9XG4gIH1cblxuICBvcGVuZWRDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKHRoaXMuaXNOZWVkZWRGb3JSZWNhbGwpIHtcbiAgICAgICAgdGhpcy5yZUNhbGxEYXRhKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5zZWxlY3RDb25maWcuc2VhcmNoKSB7XG4gICAgICAgIHRoaXMucGVuZGluZyA9IGZhbHNlXG4gICAgICAgIHRoaXMucmVDYWxsRGF0YSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zaG93UGxhY2Vob2xkZXIgPSB0cnVlO1xuICB9XG5cbiAgcmVDYWxsRGF0YSgpOiB2b2lkIHtcbiAgICAvLyBUT0RPIHJlZmFjdG9yIHRoaXMgcGFydFxuICAgIGlmICghdGhpcy5pc05lZWRlZEZvclJlY2FsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICB0aGlzLnBlbmRpbmcgPSB0cnVlO1xuICAgIHRoaXMucGFnaW5hdGlvbkRhdGEgPSB7XG4gICAgICBjdXJyZW50OiAxLFxuICAgICAgbGFzdDogMCxcbiAgICB9O1xuICAgIHRoaXMuYWNjZXNzVG9OZXh0UmVxdWVzdCA9IHRydWU7XG4gICAgaWYgKCh0eXBlb2YgdGhpcy5zZWxlY3RDb25maWcucGFnaW5hdGUpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmdldERhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmRhdGEgPSB0aGlzLnNlbGVjdENvbmZpZy5wYWdpbmF0ZTtcbiAgICB9XG4gICAgdGhpcy5pc05lZWRlZEZvclJlY2FsbCA9IGZhbHNlO1xuICB9XG5cbiAgZW1pdFNlbGVjdGlvbkNoYW5nZUFuZENsb3NlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KGV2ZW50LnZhbHVlKTtcbiAgICBpZiAodGhpcy5zZWxlY3RDb25maWcubXVsdGlwbGUpIHtcbiAgICAgIGlmICghZXZlbnQudmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLm5nQ29udHJvbC5jb250cm9sLnJlc2V0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWF0U2VsZWN0LmNsb3NlKCk7XG4gIH1cblxuICAvKlxuICAgKiBPcGVuIG1hdC1zZWxlY3QgYW5kIGZvY3VzIG9uIHNlYXJjaCBvbiBpY29uIGNsaWNrXG4gICAqL1xuICBpY29uQ2xpY2sobWF0U2VsZWN0OiBNYXRTZWxlY3QsIHNlYXJjaElucHV0PzogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIG1hdFNlbGVjdC5vcGVuKCk7XG4gICAgc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gIH1cblxuICAvKlxuICAqIEN1c3RvbSBlcnJvciBzdGF0ZSBtYXRjaGVyIGZvciBtYXQtc2VsZWN0IHRvIHByb3Blcmx5IHNob3cgZXJyb3Igc3RhdGUgaW4gbWF0LWZvcm0tZmllbGRcbiAgICovXG4gIGN1c3RvbUVycm9yU3RhdGVNYXRjaGVyID0ge1xuICAgIGlzRXJyb3JTdGF0ZTogKGNvbnRyb2w6IGFueSwgZm9ybTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICByZXR1cm4gISEoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgdGhpcy5zdWJtaXRWYWx1ZSk7XG4gICAgfVxuICB9O1xufVxuIiwiPGRpdiBjbGFzcz1cIm5ldy1tYXQtYXV0b2NvbXBsZXRlXCIgaWQ9XCJtYXRfYXV0b2NvbXBsZXRlXCJcbiAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ21hdC1zZWxlY3Qtd2l0aG91dF9pY29uJzogIXNlbGVjdENvbmZpZy5pY29uVXJsICYmICFzZWxlY3RDb25maWcuYWN0aXZlU3RhdGVJY29uVXJsLFxuICAgICAgICAgICAgJ21hdC1zZWxlY3Qtd2l0aC1zZWFyY2gnOiBzZWxlY3RDb25maWcuc2VhcmNoLFxuICAgICAgICAgICAgJ3dpdGhvdXQtbGFiZWwnOiBzZWxlY3RDb25maWcuaGlkZUxhYmVsLFxuICAgICAgICAgICAgJ2ludmFsaWRfZmllbGQnOiBuZ0NvbnRyb2wuY29udHJvbC5lcnJvcnMgJiYgc3VibWl0VmFsdWUsXG4gICAgICAgICAgICAncmVhZG9ubHktZmllbGQnOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWRcbiAgICAgICAgIH1cIlxuICAgICBbbWF0VG9vbHRpcF09XCIoc2VsZWN0Q29uZmlnLmhvdmVyICYmICFuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCA/ICgoc2VsZWN0Q29uZmlnLmhvdmVyIHx8ICcnKSB8IHRyYW5zbGF0ZSkgOiAnJylcIlxuICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIidtYXQtbWRjLXRvb2x0aXAgYmlnLXRkLW1hdC10b29sdGlwJ1wiXG4gICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2Fib3ZlJ1wiXG4gICAgICpuZ0lmPVwic2VsZWN0Q29uZmlnICYmIG5nQ29udHJvbFwiPlxuXG4gIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwiIXNlbGVjdENvbmZpZy5oaWRlTGFiZWxcIj5cbiAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAncmVhZG9ubHktY29sb3InIDogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkLFxuICAgICAgICAgICdpbnZhbGlkLWxhYmVsLWNvbG9yJzogISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdFZhbHVlKVxuICAgICAgICB9XCI+XG4gICAgICB7eyBzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8c3BhbiAqbmdJZj1cInNlbGVjdENvbmZpZy5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtaW5wdXRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsncmVhZG9ubHktY29sb3InIDogbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWR9XCI+Kjwvc3Bhbj5cbiAgPC9kaXY+XG5cblxuICA8IS0tIFNlYXJjaCBJbnB1dCAtLT5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dCB3LTEwMFwiXG4gICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTskZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyBoaWRlX2lucHV0X3BsYWNlaG9sZGVyOiBzaG93UGxhY2Vob2xkZXIgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgfVwiXG4gICAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcuc2VhcmNoXCJcbiAgPlxuICAgIDxpbnB1dCBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICBpZD1cInNlYXJjaElucHV0XCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J3ByLTI1JzogIXNlbGVjdENvbmZpZy5pY29uVXJsfVwiXG4gICAgICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICAgICBbZGlzYWJsZWRdPVwibmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgfHwgc2VsZWN0Q29uZmlnLmhvdmVyXCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIihuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZCB8fCBzZWxlY3RDb25maWcuaG92ZXIpID8gJycgOiAnU2VhcmNoJ1wiXG4gICAgICAgICAgIChmb2N1c291dCk9XCJpbnB1dEZvY3VzT3V0KClcIlxuICAgICAgICAgICAoZm9jdXMpPVwib3BlblNlbGVjdGlvbigpXCJcbiAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgKGtleXVwKT1cImdldERhdGFXaXRoU2VhcmNoKHNlYXJjaElucHV0LnZhbHVlLCRldmVudClcIj5cblxuICAgIDwhLS0gU2VhcmNoIEljb24gLS0+XG4gICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvblwiPlxuICAgICAgICAgICAgPGktdGVjaC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cIm1yLTEwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGVmYXVsdC1mb3JtLWljb24tY29sb3InXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RDb25maWcuaWNvblByZWZpeCAmJiAhc2hvd1BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cInNlbGVjdENvbmZpZy5pY29uUHJlZml4IHx8ICcnXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdENvbmZpZy5yZWFkT25seSB8fCBmYWxzZVwiXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9pLXRlY2gtaWNvbi1idXR0b24+XG4gICAgICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBQbGFjZWhvbGRlci9TZWxlY3RlZCBWYWx1ZSBEaXNwbGF5IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1BsYWNlaG9sZGVyICYmIHNlbGVjdENvbmZpZy5zZWFyY2hcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgICpuZ0lmPVwiKCFuZ0NvbnRyb2w/LnZhbHVlICYmICFuZ0NvbnRyb2w/LnZhbHVlPy5sZW5ndGgpIHx8XG4gICAgICAgICAgICAgICAgIChzZWxlY3RDb25maWcubXVsdGlwbGUgJiYgbmdDb250cm9sPy52YWx1ZSAmJiAhbmdDb250cm9sPy52YWx1ZT8ubGVuZ3RoKVwiXG4gICAgICAgICBbbmdDbGFzc109XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgPyAncmVhZG9ubHktY29sb3InIDogJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJ1wiXG4gICAgPlxuICAgICAge3sgKChzZWxlY3RDb25maWcucGxhY2Vob2xkZXIgfHwgJycpIHwgdHJhbnNsYXRlKSB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tcGxhY2Vob2xkZXIgY3VzdG9tLXZhbHVlIGVsbGlwc2lzXCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncHItNDInOiBzZWxlY3RDb25maWcuaWNvblVybCxcbiAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InOiBzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJzogIShzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAqbmdJZj1cIm5nQ29udHJvbD8udmFsdWVcIlxuICAgID5cbiAgICAgIHt7c2hvd2luZ1ZhbHVlfX1cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBDdXN0b20gSWNvbiAtLT5cbiAgPGltZyBjbGFzcz1cImxlZnRfaWNvbl9uZXcgcG9pbnRlclwiXG4gICAgICAgYWx0PVwiVG9nZ2xlIFNlbGVjdGlvblwiXG4gICAgICAgKGNsaWNrKT1cImljb25DbGljayhtYXRTZWxlY3QsIHNlYXJjaElucHV0KVwiXG4gICAgICAgKm5nSWY9XCIhc2VsZWN0Q29uZmlnLm1hdEljb25OYW1lICYmIChzZWxlY3RDb25maWcuaWNvblVybCB8fCBzZWxlY3RDb25maWcuYWN0aXZlU3RhdGVJY29uVXJsKVwiXG4gICAgICAgW3NyY109XCInYXNzZXRzL2ltYWdlcy9pY29ucy9nbG9iYWwvJyArIChuZ0NvbnRyb2wuY29udHJvbD8udmFsdWUgJiYgc2VsZWN0Q29uZmlnPy5hY3RpdmVTdGF0ZUljb25VcmwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0Q29uZmlnLmFjdGl2ZVN0YXRlSWNvblVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzZWxlY3RDb25maWcuaWNvblVybClcIj5cblxuICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctMTAwXCIgKGNsaWNrKT1cInNlbGVjdENvbmZpZz8uc2VhcmNoID8gZm9jdXNTZWFyY2hJbnB1dCgpIDogbnVsbFwiPlxuICAgIDwhLS0gTWF0ZXJpYWwgU2VsZWN0IC0tPlxuICAgIDxtYXQtc2VsZWN0ICNtYXRTZWxlY3Q9XCJtYXRTZWxlY3RcIlxuICAgICAgICAgICAgICAgIFtwYW5lbENsYXNzXT1cIidhdXRvY29tcGxldGUtdHJhbnNmb3JtLXBhbmVsLWxvY2F0aW9uJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1wbGFjZWhvbGRlcl09XCIoc2VsZWN0Q29uZmlnLnBsYWNlaG9sZGVyIHx8ICcnKSB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwic2VsZWN0Q29uZmlnLmxhYmVsIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwic2VsZWN0Q29uZmlnLmZpbHRyYXRpb25LZXkgfHwgJydcIlxuICAgICAgICAgICAgICAgIChvcGVuZWQpPVwicmVnaXN0ZXJQYW5lbFNjcm9sbEV2ZW50KG1hdFNlbGVjdClcIlxuICAgICAgICAgICAgICAgIChvcGVuZWRDaGFuZ2UpPVwib3BlbmVkQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJuZ0NvbnRyb2wuY29udHJvbFwiXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInNlbGVjdENvbmZpZy5tdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJlbWl0U2VsZWN0aW9uQ2hhbmdlQW5kQ2xvc2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2Vycm9yU3RhdGVNYXRjaGVyXT1cImN1c3RvbUVycm9yU3RhdGVNYXRjaGVyXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNlbGVjdENvbmZpZy5wbGFjZWhvbGRlciB8fCAnJykgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJuZ0NvbnRyb2wuY29udHJvbC5kaXNhYmxlZFwiXG4gICAgPlxuXG4gICAgICA8IS0tIExvYWRpbmcgU3RhdGUgLS0+XG4gICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInBlbmRpbmdcIiBjbGFzcz1cIm9wdGlvbl9sb2FkaW5nIHJlbGF0aXZlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1ZXN0X2xvYWRpbmdcIj5cbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgICAgIHN0eWxlPVwibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiBub25lOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvO1wiIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIHdpZHRoPVwiNDBweFwiIGhlaWdodD1cIjQwcHhcIj5cbiAgICAgICAgICA8Y2lyY2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCIjMDBBQzQ3XCIgc3Ryb2tlLXdpZHRoPVwiMTBcIiByPVwiMzVcIiBzdHJva2UtZGFzaGFycmF5PVwiMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4XCI+XG4gICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT1cInRyYW5zZm9ybVwiIHR5cGU9XCJyb3RhdGVcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIlxuICAgICAgICAgIGR1cj1cIjFzXCIgdmFsdWVzPVwiMCA1MCA1MDszNjAgNTAgNTBcIiBrZXlUaW1lcz1cIjA7MVwiPjwvYW5pbWF0ZVRyYW5zZm9ybT5cbiAgICAgICAgICA8L2NpcmNsZT5cbiAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgPCEtLSBPcHRpb25zIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/Lmxlbmd0aCAmJiAhcGVuZGluZ1wiPlxuICAgICAgICA8IS0tIEFkZCBOZXcgT3B0aW9uIC0tPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cInNlbGVjdENvbmZpZy5hY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb2ludGVyIGFkZF9uZXdcIlxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTthZGROZXdJdGVtRXZlbnQoKVwiPlxuICAgICAgICAgIDwhLS0oY2xpY2spPVwibmdDb250cm9sLmNvbnRyb2wucmVzZXQobnVsbCk7XG4gICAgICAgICAgICAgIG1hdFNlbGVjdC5fb25CbHVyKCk7Y2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTthZGROZXdJdGVtRXZlbnQoKVwiPi0tPlxuICAgICAgICAgIDxpLXRlY2gtYnV0dG9uXG4gICAgICAgICAgICBbdHlwZV09XCJCdXR0b25UeXBlLk9VVExJTkVcIlxuICAgICAgICAgICAgW2ZvbnRJY29uXT1cIidhZGQnXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIignZHJvcGRvd25fYWRkX2l0ZW0nIHwgdHJhbnNsYXRlIDoge0lOUFVUX05BTUU6IChzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGUpfSkgXCJcbiAgICAgICAgICAgIFtjdXN0b21DbGFzc109XCIndy0xMDAgbWF0LWF1dG9jb21wbGV0ZS1zZWxlY3QtYnV0dG9uJ1wiPlxuICAgICAgICAgIDwvaS10ZWNoLWJ1dHRvbj5cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgIDwhLS0gUmVndWxhciBPcHRpb25zIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dCAmJiBkYXRhLmxlbmd0aFwiPlxuICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RDb25maWcudmFsdWVCeUtleSB8IGdldFZhbHVlQnlLZXlGcm9tT2JqZWN0IDogaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNldXApPVwib3B0aW9uQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwicHJldmVudERlZmF1bHQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgQGlmIChzZWxlY3RDb25maWc/Lm5lZWRUcmFuc2xhdGVPcHRpb25zKSB7XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgKChzZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeUtleSB8IGdldFZhbHVlQnlLZXlGcm9tT2JqZWN0XG4gICAgICAgICAgICAgIDogaXRlbSA6IHNlbGVjdENvbmZpZy52YWx1ZVRvU2hvd0J5UGFyYW0gOiBzZWxlY3RDb25maWcud2l0aFBhcmFtU3ltYm9sKSB8fCAnJykgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICgoc2VsZWN0Q29uZmlnLnZhbHVlVG9TaG93QnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdFxuICAgICAgICAgICAgICA6IGl0ZW0gOiBzZWxlY3RDb25maWcudmFsdWVUb1Nob3dCeVBhcmFtIDogc2VsZWN0Q29uZmlnLndpdGhQYXJhbVN5bWJvbCkgfHwgJycpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEN1c3RvbSBUZXh0IE9wdGlvbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RDb25maWc/LmNoYW5nZVRleHQgJiYgZGF0YS5sZW5ndGhcIj5cbiAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0Q29uZmlnLnZhbHVlQnlLZXkgfCBnZXRWYWx1ZUJ5S2V5RnJvbU9iamVjdCA6IGl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgIChtb3VzZXVwKT1cIm9wdGlvbkNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInByZXZlbnREZWZhdWx0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWc/LmNoYW5nZVRleHRbaXRlbV0uZGlzYWJsZWRcIj5cbiAgICAgICAgICAgIHt7IHNlbGVjdENvbmZpZz8ubmVlZFRyYW5zbGF0ZU9wdGlvbnMgPyAoc2VsZWN0Q29uZmlnPy5jaGFuZ2VUZXh0W2l0ZW1dLnRleHQgfCB0cmFuc2xhdGUgKSA6IHNlbGVjdENvbmZpZz8uY2hhbmdlVGV4dFtpdGVtXS50ZXh0fX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gRW1wdHkgU3RhdGUgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXBlbmRpbmcgJiYgIWRhdGEubGVuZ3RoXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uIGRpc2FibGVkIGNsYXNzPVwiZW1wdHlfc2VsZWN0aW9uX3N0YXRlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNfYW5kX3RpbGUgYWRkX25ldyBmbGV4X2NvbHVtbiB3LTEwMCBmbGV4X2NlbnRlcl9hbGlnbl9jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdkcm9wZG93bl9ub19pdGVtcycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMTBcIj5cbiAgICAgICAgICAgICAgPGktdGVjaC1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdENvbmZpZz8uYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwiQnV0dG9uVHlwZS5PVVRMSU5FXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uQ2xpY2spPVwiY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKTthZGROZXdJdGVtRXZlbnQoKVwiXG4gICAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidtYXQtYXV0b2NvbXBsZXRlLXNlbGVjdC1idXR0b24nXCJcbiAgICAgICAgICAgICAgICBbZm9udEljb25dPVwiJ2FkZCdcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cIignZHJvcGRvd25fYWRkX2l0ZW0nIHwgdHJhbnNsYXRlIDoge0lOUFVUX05BTUU6IChzZWxlY3RDb25maWcubGFiZWwgfCB0cmFuc2xhdGUpfSkgXCI+XG4gICAgICAgICAgICAgIDwvaS10ZWNoLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwic2VsZWN0Q29uZmlnLmljb25QcmVmaXhcIlxuICAgICAgICAgICAgICBtYXRQcmVmaXhcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICAncmVhZG9ubHktY29sb3InIDogIXNlbGVjdENvbmZpZ1snaWNvblByZWZpeENvbG9yJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkKSxcbiAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJyA6ICFzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhDb2xvciddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIShzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHNlbGVjdENvbmZpZz8uWydpY29uUHJlZml4VG9vbHRpcCddIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgID57eyBzZWxlY3RDb25maWcuaWNvblByZWZpeCB9fVxuICAgIDwvbWF0LWljb24+XG5cbiAgICA8bWF0LWljb24gKm5nSWY9XCJzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhTdmcnXVwiXG4gICAgICAgICAgICAgIG1hdFByZWZpeFxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHNlbGVjdENvbmZpZz8uWydpY29uUHJlZml4VG9vbHRpcCddIHx8ICcnKSB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3ZnSWNvbl09XCJzZWxlY3RDb25maWdbJ2ljb25QcmVmaXhTdmcnXSB8fCAnJ1wiXG4gICAgPjwvbWF0LWljb24+XG5cbiAgICA8aS10ZWNoLWljb24tYnV0dG9uXG4gICAgICAqbmdJZj1cInNlbGVjdENvbmZpZy5zZWFyY2ggJiYgc2VsZWN0Q29uZmlnLmNsZWFyYWJsZSAmJiAhbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQgJiYgISFuZ0NvbnRyb2wuY29udHJvbC52YWx1ZVwiXG4gICAgICBpY29uTmFtZT1cImNhbmNlbFwiXG4gICAgICBtYXRTdWZmaXhcbiAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgZmFsc2VcIlxuICAgICAgW25nQ2xhc3NdPVwic2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkID8gJ3JlYWRvbmx5LWNvbG9yJyA6ICdkZWZhdWx0LWZvcm0taWNvbi1jb2xvcidcIlxuICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBuZ0NvbnRyb2wuY29udHJvbC5yZXNldChudWxsKTtcbiAgICAgICAgbWF0U2VsZWN0Ll9vbkJsdXIoKTtcbiAgICAgICAgY2xvc2VQYW5lbEFuZFVuc2V0Rm9jdXMoKVxuICAgICAgXCJcbiAgICA+XG4gICAgPC9pLXRlY2gtaWNvbi1idXR0b24+XG4gICAgPG1hdC1pY29uXG4gICAgICBtYXRTdWZmaXhcbiAgICAgIGNsYXNzPVwic2VsZWN0LWFycm93XCJcbiAgICAgIFtjbGFzcy5vcGVuXT1cIm1hdFNlbGVjdC5wYW5lbE9wZW5cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3JlYWRvbmx5LWNvbG9yJzogc2VsZWN0Q29uZmlnLnJlYWRPbmx5IHx8IG5nQ29udHJvbC5jb250cm9sLmRpc2FibGVkLFxuICAgICAgICAgICAgJ2RlZmF1bHQtZm9ybS1pY29uLWNvbG9yJzogIShzZWxlY3RDb25maWcucmVhZE9ubHkgfHwgbmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZWQpLFxuICAgICAgICAgICAgJ210LTgnOiAhIW5nQ29udHJvbC5jb250cm9sLnZhbHVlICYmIHNlbGVjdENvbmZpZy5jbGVhcmFibGVcbiAgICAgICAgIH1cIlxuICAgID5cbiAgICAgIGtleWJvYXJkX2Fycm93X2Rvd25cbiAgICA8L21hdC1pY29uPlxuICAgIDwhLS0gRXJyb3IgTWVzc2FnZSAtLT5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiISEobmdDb250cm9sLmNvbnRyb2wuZXJyb3JzICYmIHN1Ym1pdFZhbHVlKVwiPlxuICAgICAge3sgbmdDb250cm9sLmNvbnRyb2wgfCBnZW5lcmF0ZUVycm9yTWVzc2FnZXMgOiBzZWxlY3RDb25maWcubGFiZWwgOiBzZWxlY3RDb25maWcuZGVmYXVsdFBhdHRlcm5LZXkgfX1cbiAgICA8L21hdC1lcnJvcj5cbiAgPC9tYXQtZm9ybS1maWVsZD5cblxuICA8IS0tIFJlc2V0IEJ1dHRvbiAtLT5cbiAgPGktdGVjaC1jbGVhci12YWx1ZSAqbmdJZj1cInNlbGVjdENvbmZpZy5yZXNldFwiIChyZXNldFZhbHVlKT1cInJlc2V0VmFsdWUoKVwiPjwvaS10ZWNoLWNsZWFyLXZhbHVlPlxuPC9kaXY+XG4iXX0=
|