@quadrel-enterprise-ui/framework 18.31.4-beta.75.1 → 18.31.4-beta.80.1
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/esm2022/lib/page/object-header/page-object-header.component.mjs +6 -3
- package/esm2022/lib/page/page.component.mjs +4 -2
- package/esm2022/lib/page/shared/services/form-group-manager.service.mjs +27 -6
- package/esm2022/lib/page/shared/services/page-submit-action.service.mjs +4 -2
- package/esm2022/lib/table/store/table.reducer.mjs +1 -1
- package/fesm2022/quadrel-enterprise-ui-framework.mjs +36 -8
- package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
- package/lib/page/object-header/page-object-header.component.d.ts.map +1 -1
- package/lib/page/page.component.d.ts +1 -0
- package/lib/page/page.component.d.ts.map +1 -1
- package/lib/page/shared/services/form-group-manager.service.d.ts +5 -0
- package/lib/page/shared/services/form-group-manager.service.d.ts.map +1 -1
- package/lib/page/shared/services/page-submit-action.service.d.ts +1 -0
- package/lib/page/shared/services/page-submit-action.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/esm2022/index.mjs +0 -74
- package/esm2022/lib/table/__mocks__/mock-secondary-actions.service.mjs +0 -26
- package/index.d.ts.map +0 -1
- package/lib/table/__mocks__/mock-secondary-actions.service.d.ts +0 -14
- package/lib/table/__mocks__/mock-secondary-actions.service.d.ts.map +0 -1
|
@@ -186,10 +186,13 @@ export class QdPageObjectHeaderComponent {
|
|
|
186
186
|
.$hasValuesChanged()
|
|
187
187
|
.pipe(take(1))
|
|
188
188
|
.subscribe(hasChanged => {
|
|
189
|
-
if (hasChanged)
|
|
189
|
+
if (hasChanged) {
|
|
190
190
|
this.openCancelDialog();
|
|
191
|
-
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
this.formGroupManagerService.cancelPendingAsyncValidation();
|
|
192
194
|
this.pageStoreService.toggleViewonly(true);
|
|
195
|
+
}
|
|
193
196
|
});
|
|
194
197
|
}
|
|
195
198
|
save() {
|
|
@@ -306,4 +309,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
306
309
|
type: HostListener,
|
|
307
310
|
args: ['click']
|
|
308
311
|
}] } });
|
|
309
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQWdCbEksT0FBTyxFQUFFLDZCQUE2QixFQUF3QixNQUFNLCtCQUErQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFD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IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZywgUWRNZW51QnV0dG9uQ29uZmlnIH0gZnJvbSAnLi4vLi4vYnV0dG9uL21vZGVsL2J1dHRvbi1jb25maWcnO1xuaW1wb3J0IHsgUWREaWFsb2dDb21wb25lbnQsIFFkRGlhbG9nU2VydmljZSwgUWREaWFsb2dTaXplIH0gZnJvbSAnLi4vLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cvcGFnZS1jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSxcbiAgUWRQYWdlQ29uZmlnLFxuICBRZFBhZ2VDb25maWdDcmVhdGUsXG4gIFFkUGFnZUNvbmZpZ0N1c3RvbSxcbiAgUWRQYWdlQ29uZmlnSW5zcGVjdCxcbiAgUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgUWRQYWdlU2VsZWN0ZWRDb250ZXh0LFxuICBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUWRGYWNldE9wdGlvbk11bHRpU2VsZWN0LFxuICBRZEZhY2V0T3B0aW9uU2luZ2xlU2VsZWN0LFxuICBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZ1xufSBmcm9tICcuLi9tb2RlbC9wYWdlLWhlYWRlci1mYWNldC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sIFFkUGFnZU9iamVjdFJlc29sdmVyIH0gZnJvbSAnLi4vbW9kZWwvcGFnZS1vYmplY3QtcmVzb2x2ZXInO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWdyb3VwLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9yZXNvbHZlci10cmlnZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRDb250ZXh0U2VsZWN0RGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXNlbGVjdC1kaWFsb2cvY29udGV4dC1zZWxlY3QtZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXBhZ2Utb2JqZWN0LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLW9iamVjdC1oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgJ1tzdHlsZS5ib3JkZXJCb3R0b21dJzogJ2JvcmRlckJvdHRvbVN0eWxlJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZU9iamVjdEhlYWRlckNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb25maWchOiBRZFBhZ2VDb25maWc8VD47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgaGFzTmF2aWdhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3BhZ2Utb2JqZWN0LWhlYWRlcic7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbi1kaWFsb2cnKVxuICBnZXQgaXNJbkRpYWxvZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmRpYWxvZ0NvbXBvbmVudDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgdG9nZ2xlRmFjZXRzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZGFwdGl2ZU1vZGUgfHwgKHRoaXMuaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMCkgPj0gMikgcmV0dXJuO1xuXG4gICAgdGhpcy5mYWNldHNDb2xsYXBzZWQgPSAhdGhpcy5mYWNldHNDb2xsYXBzZWQ7XG4gIH1cblxuICBnZXQgYWRhcHRpdmVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgUWRQYWdlQ29uZmlnSW5zcGVjdCB8IFFkUGFnZUNvbmZpZ0N1c3RvbSkuYWRhcHRpdmVNb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFnZU9iamVjdERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUPih7fSBhcyBUKTtcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF9jdXN0b21BY3Rpb25zU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UWRNZW51QnV0dG9uQ29uZmlnPih7IGFjdGlvbnM6IFtdIH0pO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwYWdlT2JqZWN0RGF0YSQ6IE9ic2VydmFibGU8VD4gPSB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDQwMCkpO1xuICBjdXN0b21BY3Rpb25zJDogT2JzZXJ2YWJsZTxRZE1lbnVCdXR0b25Db25maWc+ID0gdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZmFjZXRzQ29sbGFwc2VkID0gdHJ1ZTtcblxuICBjb250ZXh0cyQhOiBPYnNlcnZhYmxlPFxuICAgIHtcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICB2YWx1ZTogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W107XG4gICAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnO1xuICAgICAgc2VsZWN0aW9uOiBRZFBhZ2VTZWxlY3RlZENvbnRleHQgfCBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcbiAgICB9W11cbiAgPjtcblxuICBnZXQgYm9yZGVyQm90dG9tU3R5bGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYWdlVHlwZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlO1xuXG4gICAgcmV0dXJuIHBhZ2VUeXBlID09PSAnY3JlYXRlJyB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKSB8fFxuICAgICAgKHBhZ2VUeXBlID09PSAnY3VzdG9tJyAmJiB0aGlzLmhhc05hdmlnYXRpb24pIHx8XG4gICAgICAocGFnZVR5cGUgPT09ICdvdmVydmlldycgJiYgdGhpcy5oYXNOYXZpZ2F0aW9uKVxuICAgICAgPyAnbm9uZSAhaW1wb3J0YW50J1xuICAgICAgOiAnJztcbiAgfVxuXG4gIGdldCBzaG93RWRpdCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhdGhpcy5oaWRlRWRpdCkpO1xuICB9XG5cbiAgZ2V0IHNob3dEZWxldGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgISF0aGlzLmRlbGV0ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IHNob3dBcmNoaXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICEhdGhpcy5hcmNoaXZlQnV0dG9uKSk7XG4gIH1cblxuICBnZXQgc2hvd0NhbmNlbCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gIXYgJiYgISF0aGlzLmNhbmNlbEJ1dHRvbiAmJiAhdGhpcy5pc0NyZWF0ZSkpO1xuICB9XG5cbiAgZ2V0IHNob3dTYXZlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiAhdiAmJiAhIXRoaXMuc2F2ZUJ1dHRvbikpO1xuICB9XG5cbiAgZ2V0IGhlYWRlckZhY2V0cygpOiBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZzxUPltdIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5oYXNIZWFkZXJGYWNldHModGhpcy5jb25maWcpKSByZXR1cm4gdGhpcy5jb25maWcuaGVhZGVyRmFjZXRzO1xuICB9XG5cbiAgZ2V0IGlzSW5zcGVjdEFuZFZpZXdNb2RlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkLnBpcGUoXG4gICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICBtYXAoaXNWaWV3ID0+IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcgJiYgaXNWaWV3KVxuICAgICk7XG4gIH1cblxuICBnZXQgaXNDcmVhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJztcbiAgfVxuXG4gIGdldCBpc092ZXJ2aWV3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JztcbiAgfVxuXG4gIGdldCBpc0NvbnRleHRTZWxlY3RhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JyB8fCB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSc7XG4gIH1cblxuICBnZXQgZWRpdEJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snZWRpdCddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZWRpdDtcbiAgfVxuXG4gIGdldCBkZWxldGVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2RlbGV0ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uZGVsZXRlO1xuICB9XG5cbiAgZ2V0IGFyY2hpdmVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2FyY2hpdmUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmFyY2hpdmU7XG4gIH1cblxuICBnZXQgY2FuY2VsQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydjYW5jZWwnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LmNhbmNlbDtcbiAgfVxuXG4gIGdldCBzYXZlQnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydzYXZlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlO1xuICB9XG5cbiAgZ2V0IGhpZGVFZGl0KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnIHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCFjb25maWcpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY29uZmlnLm9wZXJhdGlvbk1vZGUgIT09ICdlZGl0JykgcmV0dXJuIGNvbmZpZy5oaWRlRWRpdCA9PT0gdHJ1ZTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGdldCBoYXNWYWx1ZXNDaGFuZ2VkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpO1xuICB9XG5cbiAgZ2V0ICRjYW5TYXZlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICgodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5zYXZlPy5oYXNWYWxpZGF0aW9uID09PSBmYWxzZSlcbiAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKCk7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRhcmVGb3JtR3JvdXBzVmFsaWQoKSxcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgIF0pLnBpcGUobWFwKChbaXNWYWxpZCwgaGFzQ2hhbmdlc10pID0+IGlzVmFsaWQgJiYgaGFzQ2hhbmdlcykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTikgcHJpdmF0ZSBwYWdlT2JqZWN0UmVzb2x2ZXI6IFFkUGFnZU9iamVjdFJlc29sdmVyPFQ+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9ybUdyb3VwTWFuYWdlclNlcnZpY2U6IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaWFsb2dDb21wb25lbnQ6IFFkRGlhbG9nQ29tcG9uZW50LFxuICAgIHByaXZhdGUgZGlhbG9nOiBRZERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogUWRDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHJlc29sdmVyVHJpZ2dlclNlcnZpY2U6IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPlxuICApIHtcbiAgICBpZiAocGFnZU9iamVjdFJlc29sdmVyKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhID0gdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGE/LmJpbmQodGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIpO1xuICAgICAgdGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGEgPSAocHJvcHM6IFBhcnRpYWw8VD4pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVNZXRhZGF0YShwcm9wcyk7XG4gICAgICAgIGlmIChvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKSBvcmlnaW5hbFVwZGF0ZU1ldGFkYXRhKHByb3BzKTtcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0dXBSZXNvbHZlclRyaWdnZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRDb250ZXh0cygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFnZU9iamVjdFJlc29sdmVyKSB0aGlzLnNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk7XG5cbiAgICB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLnRha2VGb3JtR3JvdXBzU25hcHNob3QoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10gJiYgIWNoYW5nZXNbJ2NvbmZpZyddLmZpcnN0Q2hhbmdlKSB0aGlzLnVwZGF0ZUN1c3RvbUFjdGlvbnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG5cbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICB1cGRhdGVNZXRhZGF0YShtZXRhZGF0YTogUGFydGlhbDxUPik6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRNZXRhZGF0YSA9IHsgLi4udGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0LnZhbHVlLCAuLi5tZXRhZGF0YSB9O1xuICAgIHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KHVwZGF0ZWRNZXRhZGF0YSk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb24oZmFjZXQ6IFFkRmFjZXRPcHRpb25TaW5nbGVTZWxlY3QgfCBRZEZhY2V0T3B0aW9uTXVsdGlTZWxlY3QpOiB2b2lkIHtcbiAgICBmYWNldD8uYWN0aW9uPy5oYW5kbGVyKCk7XG4gIH1cblxuICBoYXNIZWFkZXJGYWNldHMoXG4gICAgY29uZmlnOiBRZFBhZ2VDb25maWc8VD5cbiAgKTogY29uZmlnIGlzIFFkUGFnZUNvbmZpZ0NyZWF0ZTxUPiB8IFFkUGFnZUNvbmZpZ0luc3BlY3Q8VD4gfCBRZFBhZ2VDb25maWdDdXN0b208VD4ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcgYXMgeyBoZWFkZXJGYWNldHM6IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W10gfSkuaGVhZGVyRmFjZXRzICE9IG51bGw7XG4gIH1cblxuICBlZGl0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShmYWxzZSk7XG4gICAgaWYgKHRoaXMuZWRpdEJ1dHRvbj8uaGFuZGxlcikgdGhpcy5lZGl0QnV0dG9uLmhhbmRsZXIoKTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlXG4gICAgICAuJGhhc1ZhbHVlc0NoYW5nZWQoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIGlmIChoYXNDaGFuZ2VkKSB0aGlzLm9wZW5DYW5jZWxEaWFsb2coKTtcbiAgICAgICAgZWxzZSB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlU3VjY2VzcyA9ICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICAgIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhdmVCdXR0b24/LmhhbmRsZXI/Lih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmdldEFsbFZhbHVlcygpKTtcblxuICAgIGlzT2JzZXJ2YWJsZShyZXN1bHQpID8gcmVzdWx0LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChvazogYm9vbGVhbikgPT4gb2sgJiYgaGFuZGxlU3VjY2VzcygpKSA6IGhhbmRsZVN1Y2Nlc3MoKTtcbiAgfVxuXG4gIGNoYW5nZUNvbnRleHQoXG4gICAgY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyxcbiAgICBzZWxlY3Rpb246IFFkUGFnZVNlbGVjdGVkQ29udGV4dCB8IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdLFxuICAgIGV2ZW50OiBNb3VzZUV2ZW50XG4gICk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKGNvbnRleHQudHlwZSA9PT0gJ2N1c3RvbScpIHtcbiAgICAgIGNvbnRleHQub3BlbigpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihRZENvbnRleHRTZWxlY3REaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgY29uZmlnOiBjb250ZXh0LCBzZWxlY3Rpb24gfSxcbiAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgIHRpdGxlOiBjb250ZXh0LnRpdGxlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuY2xvc2VkLnN1YnNjcmliZSgoZGF0YTogeyBzZWxlY3RlZDogUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfSkgPT4ge1xuICAgICAgaWYgKGRhdGEpIHRoaXMuY29udGV4dFNlcnZpY2Uuc2V0VmFsdWUoY29udGV4dC5pZCwgZGF0YS5zZWxlY3RlZCk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhckNvbnRleHQoY29udGV4dDogUWRQYWdlQ29udGV4dENvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dFNlcnZpY2UuY2xlYXIoY29udGV4dC5pZCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwUmVzb2x2ZXJUcmlnZ2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x2ZXJUcmlnZ2VyU2VydmljZVxuICAgICAgLnNob3VsZFRyaWdnZXJSZXNvbHZlcih0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5jb25maWc/LnRyaWdnZXJPbiA/PyAncGF0aFBhcmFtc0NoYW5nZScpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIoc2hvdWxkVHJpZ2dlciA9PiBzaG91bGRUcmlnZ2VyKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci5yZXNvbHZlKCkpLFxuICAgICAgICB0YXAob2JqZWN0RGF0YSA9PiB0aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QubmV4dChvYmplY3REYXRhKSksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9pc0xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q29udGV4dHMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0cyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHRzJC5waXBlKFxuICAgICAgbWFwKGNvbnRleHRzID0+IGNvbnRleHRzLmZpbHRlcihjb250ZXh0ID0+IGNvbnRleHQuc2VsZWN0aW9uIHx8IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnKSksXG4gICAgICBtYXAoY29udGV4dHMgPT5cbiAgICAgICAgY29udGV4dHM/Lm1hcCgoeyBzZWxlY3Rpb24sIGNvbnRleHQgfSkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogY29udGV4dC5sYWJlbC5pMThuLFxuICAgICAgICAgIHZhbHVlOiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbj8udmFsdWUpXG4gICAgICAgICAgICA/IHNlbGVjdGlvbj8udmFsdWUuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gbnVsbCAmJiBpdGVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICA6IHNlbGVjdGlvbj8udmFsdWUgIT09IG51bGwgJiYgc2VsZWN0aW9uPy52YWx1ZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IFtzZWxlY3Rpb24/LnZhbHVlXVxuICAgICAgICAgICAgOiAoW10gYXMgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10pLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgc2VsZWN0aW9uOiBzZWxlY3Rpb24/LnZhbHVlID8/IFtdXG4gICAgICAgIH0pKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUN1c3RvbUFjdGlvbnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcpIHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbk1vZGUgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZz8ub3BlcmF0aW9uTW9kZTtcblxuICAgICAgaWYgKG9wZXJhdGlvbk1vZGUpIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seShvcGVyYXRpb25Nb2RlID09PSAndmlldycpO1xuXG4gICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UuaXNWaWV3b25seSQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZShpc1ZpZXdvbmx5ID0+IHtcbiAgICAgICAgY29uc3QgY3VzdG9tQWN0aW9ucyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5jdXN0b21BY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIHRoaXMuX2N1c3RvbUFjdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5nZXRDdXN0b21BY3Rpb25zQnlNb2RlKGN1c3RvbUFjdGlvbnMsIGlzVmlld29ubHkgPyAndmlldycgOiAnZWRpdCcpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSAhPT0gJ2luc3BlY3QnKVxuICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QubmV4dCh7IGFjdGlvbnM6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5jdXN0b21BY3Rpb25zID8/IFtdIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXN0b21BY3Rpb25zQnlNb2RlKFxuICAgIGN1c3RvbUFjdGlvbnM6IChRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgJiB7IG9wZXJhdGlvbk1vZGU/OiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlIH0pW10sXG4gICAgbW9kZTogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZVxuICApOiBRZE1lbnVCdXR0b25Db25maWcge1xuICAgIGNvbnN0IGFjdGlvbnMgPSBjdXN0b21BY3Rpb25zXG4gICAgICAuZmlsdGVyKGFjdGlvbiA9PiAhYWN0aW9uLm9wZXJhdGlvbk1vZGUgfHwgYWN0aW9uLm9wZXJhdGlvbk1vZGUgPT09IG1vZGUpXG4gICAgICAubWFwKGFjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVCdXR0b25BY3Rpb24gPSB7IC4uLmFjdGlvbiB9O1xuICAgICAgICBkZWxldGUgbWVudUJ1dHRvbkFjdGlvbi5vcGVyYXRpb25Nb2RlO1xuICAgICAgICByZXR1cm4gbWVudUJ1dHRvbkFjdGlvbjtcbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgYWN0aW9ucyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ2FuY2VsRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nXG4gICAgICAub3BlbihRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5jYW5jZWwuY29uZmlybWF0aW9uLmRpYWxvZy50aXRsZScgfSxcbiAgICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgICBkYXRhOiB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZ1xuICAgICAgfSlcbiAgICAgIC5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGNvbmZpcm0gPT4ge1xuICAgICAgICBpZiAoY29uZmlybSkge1xuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UucmVzdG9yZUZvcm1Hcm91cHNGcm9tU25hcHNob3QoKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCIgKm5nSWY9XCJpc0xvYWRpbmckIHwgYXN5bmNcIj48cWQtc3Bpbm5lcj48L3FkLXNwaW5uZXI+PC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvcFwiPlxuICA8aGVhZGVyIGNsYXNzPVwib2JqZWN0LWhlYWRlci10aXRsZVwiPnt7IGNvbmZpZy50aXRsZS5pMThuIHwgdHJhbnNsYXRlIH19PC9oZWFkZXI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRvb2xiYXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJhcmNoaXZlLWJ1dHRvblwiPlxuICAgICAgPHFkLWljb25cbiAgICAgICAgKm5nSWY9XCJzaG93QXJjaGl2ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJhcmNoaXZlQnV0dG9uPy5oYW5kbGVyKClcIlxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgIFtpY29uXT1cIidyZXN1bHROZXcnXCJcbiAgICAgID48L3FkLWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLWljb25cIiBkYXRhLXRlc3QtaWQ9XCJkZWxldGUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICBjbGFzcz1cImhlYWRlci1hY3Rpb24taWNvblwiXG4gICAgICAgICpuZ0lmPVwic2hvd0RlbGV0ZSQgfCBhc3luY1wiXG4gICAgICAgIChjbGljayk9XCJkZWxldGVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIFtpY29uXT1cIid0cmFzaCdcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJzaG93RWRpdCQgfCBhc3luY1wiIHFkQnV0dG9uIChjbGljayk9XCJlZGl0KClcIiBkYXRhLXRlc3QtaWQ9XCJlZGl0LWJ1dHRvblwiPlxuICAgICAge3sgZWRpdEJ1dHRvbj8ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmVkaXRcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dDYW5jZWwkIHwgYXN5bmNcIiBxZEJ1dHRvbiBxZEJ1dHRvbkdob3N0IChjbGljayk9XCJjYW5jZWwoKVwiIGRhdGEtdGVzdC1pZD1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgIHt7IGNhbmNlbEJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuY2FuY2VsXCIgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvd1NhdmUkIHwgYXN5bmNcIlxuICAgICAgcWRCdXR0b25cbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgZGF0YS10ZXN0LWlkPVwic2F2ZS1idXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIigkY2FuU2F2ZSB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgID5cbiAgICAgIHt7IHNhdmVCdXR0b24ubGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLnNhdmVcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUFjdGlvbnMkIHwgYXN5bmMgYXMgY3VzdG9tQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhZGFwdGl2ZU1vZGU7IGVsc2UgYWRhcHRpdmVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIFtxZE1lbnVCdXR0b25dPVwiY3VzdG9tQWN0aW9uc1wiXG4gICAgICAgICAgW2F1dG9TaXplXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidwYWdlLSdcIlxuICAgICAgICAgICpuZ0lmPVwiY3VzdG9tQWN0aW9ucy5hY3Rpb25zLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlQnV0dG9uXCJcbiAgICAgICAgICBkYXRhLXRlc3QtaWQ9XCJjdXN0b20tYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbmZpZz8uY3VzdG9tQWN0aW9uc0xhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5hY3Rpb25zXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVCdXR0b24+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKS5hY3Rpb25zWzBdIGFzIHNpbmdsZUFjdGlvblwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cInNpbmdsZUFjdGlvbi5oYW5kbGVyICYmICFzaW5nbGVBY3Rpb24uaXNIaWRkZW5cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlQWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBzaW5nbGVBY3Rpb24ubGFiZWw/LmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjYWRhcHRpdmU+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cIihjdXN0b21BY3Rpb25zJCB8IGFzeW5jKT8uYWN0aW9ucy5sZW5ndGggPj0gMVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJhZGFwdGl2ZS1tZW51LWJ1dHRvblwiXG4gICAgICAgICAgW3FkUG9wb3Zlck9uQ2xpY2tdPVwibWVudVwiXG4gICAgICAgICAgW3FkUG9wb3ZlckNsb3NlU3RyYXRlZ3ldPVwiJ29uRXZlcnlDbGljaydcIlxuICAgICAgICAgIFtxZFBvcG92ZXJTdG9wUHJvcGFnYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgW3FkUG9wb3Zlck1pbldpZHRoXT1cIjE2MFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cWQtaWNvbiBpY29uPVwib3ZlcmZsb3dNZW51VmVydGljYWxcIj48L3FkLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGN1c3RvbUFjdGlvbnMuYWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtZW50cnlcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5oYW5kbGVyKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldHNcIiBbbmdDbGFzc109XCJ7IGFtb25nVGhlbXNlbHZlczogYWRhcHRpdmVNb2RlICYmICFmYWNldHNDb2xsYXBzZWQgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZU9iamVjdERhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJsZXQgZmFjZXQgb2YgaGVhZGVyRmFjZXRzIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIDogaGVhZGVyRmFjZXRzPy5sZW5ndGggPz8gMClcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZmFjZXQtJyArIGZhY2V0Lm5hbWVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGZhY2V0LmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxxZC1keW5hbWljLWZhY2V0IGNsYXNzPVwiZHluYW1pYy1mYWNldFwiIFtmYWNldF09XCJmYWNldFwiIFtkYXRhXT1cImRhdGFcIj48L3FkLWR5bmFtaWMtZmFjZXQ+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29uZmlnLmhpZGVDb250ZXh0cyAmJiBjb250ZXh0cyQgfCBhc3luYyBhcyBjb250ZXh0c1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib2JqZWN0LWhlYWRlci1mYWNldFwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IGNvbnRleHQgb2YgY29udGV4dHNcbiAgICAgICAgICB8IHNsaWNlIDogMCA6IChhZGFwdGl2ZU1vZGUgJiYgZmFjZXRzQ29sbGFwc2VkID8gMiAtIChoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKSA6IGNvbnRleHRzLmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGluZGV4O1xuICAgICAgICBsZXQgZmlyc3QgPSBmaXJzdFxuICAgICAgXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgaGFzRGl2aWRlcjogaGVhZGVyRmFjZXRzICYmIGZpcnN0IH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJmYWNldC1sYWJlbFwiPnt7IGNvbnRleHQubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibm8tc2VsZWN0ZWQtY29udGV4dFwiPnt7XG4gICAgICAgIFwiaTE4bi5xZC5wYWdlLmNvbnRleHQubm9TZWxlY3Rpb25QbGFjZWhvbGRlclwiIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJjb250ZXh0LnZhbHVlLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICA8cWQtY2hpcCBzdGF0ZT1cIm5vbmVcIiBbY2xvc2VdPVwiaXNDb250ZXh0U2VsZWN0YWJsZVwiIChjbG9zZUNsaWNrRW1pdHRlcik9XCJjbGVhckNvbnRleHQoY29udGV4dC5jb250ZXh0KVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZhbCBvZiBjb250ZXh0LnZhbHVlOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIHt7IHZhbC5sYWJlbC5pMThuIHwgdHJhbnNsYXRlIH19PHNwYW4gKm5nSWY9XCIhbGFzdFwiPiwgPC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3FkLWNoaXA+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNDb250ZXh0U2VsZWN0YWJsZSAmJiAoIWZhY2V0c0NvbGxhcHNlZCB8fCAhYWRhcHRpdmVNb2RlKVwiIGNsYXNzPVwic2VsZWN0LWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcWRCdXR0b25cbiAgICAgICAgICBxZEJ1dHRvbkxpbmtcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlQ29udGV4dChjb250ZXh0LmNvbnRleHQsIGNvbnRleHQuc2VsZWN0aW9uLCAkZXZlbnQpXCJcbiAgICAgICAgICBbZGF0YS10ZXN0LWlkXT1cIidvYmplY3QtaGVhZGVyLXNlbGVjdC1jb250ZXh0LScgKyBjb250ZXh0LmNvbnRleHQuaWRcIlxuICAgICAgICA+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXG4gICAgICAgICAgICAgID8gKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLmNoYW5nZVwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6IChcImkxOG4ucWQucGFnZS5jb250ZXh0LmJ1dHRvbi5zZWxlY3RcIiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJmYWNldHMtdG9nZ2xlclwiICpuZ0lmPVwiYWRhcHRpdmVNb2RlICYmIGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCA+IDJcIj5cbiAgICA8c3BhbiAqbmdJZj1cImZhY2V0c0NvbGxhcHNlZFwiPit7eyBoZWFkZXJGYWNldHMubGVuZ3RoICsgKGNvbnRleHRzJCB8IGFzeW5jKS5sZW5ndGggLSAyIH19PC9zcGFuPlxuICAgIDxidXR0b24gcWRJY29uQnV0dG9uPlxuICAgICAgPHFkLWljb24gW2ljb25dPVwiZmFjZXRzQ29sbGFwc2VkID8gJ2N0cmxEb3duJyA6ICdjdHJsVG9wJ1wiPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=
|
|
312
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL29iamVjdC1oZWFkZXIvcGFnZS1vYmplY3QtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQWdCbEksT0FBTyxFQUFFLDZCQUE2QixFQUF3QixNQUFNLCtCQUErQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFD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VTtzQkFEYixXQUFXO3VCQUFDLGlCQUFpQjtnQkFNOUIsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnLCBRZE1lbnVCdXR0b25Db25maWcgfSBmcm9tICcuLi8uLi9idXR0b24vbW9kZWwvYnV0dG9uLWNvbmZpZyc7XG5pbXBvcnQgeyBRZERpYWxvZ0NvbXBvbmVudCwgUWREaWFsb2dTZXJ2aWNlLCBRZERpYWxvZ1NpemUgfSBmcm9tICcuLi8uLi9kaWFsb2cvZGlhbG9nLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy9wYWdlLWNhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBRZEluc3BlY3RPcGVyYXRpb25Nb2RlLFxuICBRZFBhZ2VDb25maWcsXG4gIFFkUGFnZUNvbmZpZ0NyZWF0ZSxcbiAgUWRQYWdlQ29uZmlnQ3VzdG9tLFxuICBRZFBhZ2VDb25maWdJbnNwZWN0LFxuICBRZFBhZ2VDb250ZXh0Q29uZmlnLFxuICBRZFBhZ2VTZWxlY3RlZENvbnRleHQsXG4gIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnXG59IGZyb20gJy4uL21vZGVsL3BhZ2UtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBRZEZhY2V0T3B0aW9uTXVsdGlTZWxlY3QsXG4gIFFkRmFjZXRPcHRpb25TaW5nbGVTZWxlY3QsXG4gIFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnXG59IGZyb20gJy4uL21vZGVsL3BhZ2UtaGVhZGVyLWZhY2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTiwgUWRQYWdlT2JqZWN0UmVzb2x2ZXIgfSBmcm9tICcuLi9tb2RlbC9wYWdlLW9iamVjdC1yZXNvbHZlcic7XG5pbXBvcnQgeyBRZENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBRZEZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL2Zvcm0tZ3JvdXAtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUGFnZVN0b3JlU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9zZXJ2aWNlcy9wYWdlLXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRSZXNvbHZlclRyaWdnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3Jlc29sdmVyLXRyaWdnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZENvbnRleHRTZWxlY3REaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbnRleHQtc2VsZWN0LWRpYWxvZy9jb250ZXh0LXNlbGVjdC1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncWQtcGFnZS1vYmplY3QtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2Utb2JqZWN0LWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2Utb2JqZWN0LWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyAnW3N0eWxlLmJvcmRlckJvdHRvbV0nOiAnYm9yZGVyQm90dG9tU3R5bGUnIH1cbn0pXG5leHBvcnQgY2xhc3MgUWRQYWdlT2JqZWN0SGVhZGVyQ29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGNvbmZpZyE6IFFkUGFnZUNvbmZpZzxUPjtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBoYXNOYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KCdkYXRhLXRlc3QtaWQnKSB0ZXN0SWQgPSAncGFnZS1vYmplY3QtaGVhZGVyJztcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmluLWRpYWxvZycpXG4gIGdldCBpc0luRGlhbG9nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGlhbG9nQ29tcG9uZW50O1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICB0b2dnbGVGYWNldHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFkYXB0aXZlTW9kZSB8fCAodGhpcy5oZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKSA+PSAyKSByZXR1cm47XG5cbiAgICB0aGlzLmZhY2V0c0NvbGxhcHNlZCA9ICF0aGlzLmZhY2V0c0NvbGxhcHNlZDtcbiAgfVxuXG4gIGdldCBhZGFwdGl2ZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZyBhcyBRZFBhZ2VDb25maWdJbnNwZWN0IHwgUWRQYWdlQ29uZmlnQ3VzdG9tKS5hZGFwdGl2ZU1vZGU7XG4gIH1cblxuICBwcml2YXRlIF9wYWdlT2JqZWN0RGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQ+KHt9IGFzIFQpO1xuICBwcml2YXRlIF9pc0xvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgX2N1c3RvbUFjdGlvbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRZE1lbnVCdXR0b25Db25maWc+KHsgYWN0aW9uczogW10gfSk7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHBhZ2VPYmplY3REYXRhJDogT2JzZXJ2YWJsZTxUPiA9IHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgaXNMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShkZWJvdW5jZVRpbWUoNDAwKSk7XG4gIGN1c3RvbUFjdGlvbnMkOiBPYnNlcnZhYmxlPFFkTWVudUJ1dHRvbkNvbmZpZz4gPSB0aGlzLl9jdXN0b21BY3Rpb25zU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBmYWNldHNDb2xsYXBzZWQgPSB0cnVlO1xuXG4gIGNvbnRleHRzJCE6IE9ic2VydmFibGU8XG4gICAge1xuICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgIHZhbHVlOiBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcbiAgICAgIGNvbnRleHQ6IFFkUGFnZUNvbnRleHRDb25maWc7XG4gICAgICBzZWxlY3Rpb246IFFkUGFnZVNlbGVjdGVkQ29udGV4dCB8IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuICAgIH1bXVxuICA+O1xuXG4gIGdldCBib3JkZXJCb3R0b21TdHlsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhZ2VUeXBlID0gdGhpcy5jb25maWcucGFnZVR5cGU7XG5cbiAgICByZXR1cm4gcGFnZVR5cGUgPT09ICdjcmVhdGUnIHx8XG4gICAgICAocGFnZVR5cGUgPT09ICdpbnNwZWN0JyAmJiB0aGlzLmhhc05hdmlnYXRpb24pIHx8XG4gICAgICAocGFnZVR5cGUgPT09ICdjdXN0b20nICYmIHRoaXMuaGFzTmF2aWdhdGlvbikgfHxcbiAgICAgIChwYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JyAmJiB0aGlzLmhhc05hdmlnYXRpb24pXG4gICAgICA/ICdub25lICFpbXBvcnRhbnQnXG4gICAgICA6ICcnO1xuICB9XG5cbiAgZ2V0IHNob3dFZGl0JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiB2ICYmICF0aGlzLmhpZGVFZGl0KSk7XG4gIH1cblxuICBnZXQgc2hvd0RlbGV0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJbnNwZWN0QW5kVmlld01vZGUkLnBpcGUobWFwKHYgPT4gdiAmJiAhIXRoaXMuZGVsZXRlQnV0dG9uKSk7XG4gIH1cblxuICBnZXQgc2hvd0FyY2hpdmUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+IHYgJiYgISF0aGlzLmFyY2hpdmVCdXR0b24pKTtcbiAgfVxuXG4gIGdldCBzaG93Q2FuY2VsJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc0luc3BlY3RBbmRWaWV3TW9kZSQucGlwZShtYXAodiA9PiAhdiAmJiAhIXRoaXMuY2FuY2VsQnV0dG9uICYmICF0aGlzLmlzQ3JlYXRlKSk7XG4gIH1cblxuICBnZXQgc2hvd1NhdmUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5zcGVjdEFuZFZpZXdNb2RlJC5waXBlKG1hcCh2ID0+ICF2ICYmICEhdGhpcy5zYXZlQnV0dG9uKSk7XG4gIH1cblxuICBnZXQgaGVhZGVyRmFjZXRzKCk6IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W10gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmhhc0hlYWRlckZhY2V0cyh0aGlzLmNvbmZpZykpIHJldHVybiB0aGlzLmNvbmZpZy5oZWFkZXJGYWNldHM7XG4gIH1cblxuICBnZXQgaXNJbnNwZWN0QW5kVmlld01vZGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UuaXNWaWV3b25seSQucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSxcbiAgICAgIG1hcChpc1ZpZXcgPT4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdpbnNwZWN0JyAmJiBpc1ZpZXcpXG4gICAgKTtcbiAgfVxuXG4gIGdldCBpc0NyZWF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjcmVhdGUnO1xuICB9XG5cbiAgZ2V0IGlzT3ZlcnZpZXcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnO1xuICB9XG5cbiAgZ2V0IGlzQ29udGV4dFNlbGVjdGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnIHx8IHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3VzdG9tJztcbiAgfVxuXG4gIGdldCBlZGl0QnV0dG9uKCk6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnWydlZGl0J10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5lZGl0O1xuICB9XG5cbiAgZ2V0IGRlbGV0ZUJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snZGVsZXRlJ10ge1xuICAgIHJldHVybiAodGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcpPy5kZWxldGU7XG4gIH1cblxuICBnZXQgYXJjaGl2ZUJ1dHRvbigpOiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1snYXJjaGl2ZSddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uYXJjaGl2ZTtcbiAgfVxuXG4gIGdldCBjYW5jZWxCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ2NhbmNlbCddIHtcbiAgICByZXR1cm4gKHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnKT8uY2FuY2VsO1xuICB9XG5cbiAgZ2V0IHNhdmVCdXR0b24oKTogUWRQYWdlVHlwZUluc3BlY3RDb25maWdbJ3NhdmUnXSB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LnNhdmU7XG4gIH1cblxuICBnZXQgaGlkZUVkaXQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoIWNvbmZpZykgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjb25maWcub3BlcmF0aW9uTW9kZSAhPT0gJ2VkaXQnKSByZXR1cm4gY29uZmlnLmhpZGVFZGl0ID09PSB0cnVlO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0IGhhc1ZhbHVlc0NoYW5nZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKCk7XG4gIH1cblxuICBnZXQgJGNhblNhdmUoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCh0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyk/LnNhdmU/Lmhhc1ZhbGlkYXRpb24gPT09IGZhbHNlKVxuICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGhhc1ZhbHVlc0NoYW5nZWQoKTtcblxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuJGFyZUZvcm1Hcm91cHNWYWxpZCgpLFxuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpXG4gICAgXSkucGlwZShtYXAoKFtpc1ZhbGlkLCBoYXNDaGFuZ2VzXSkgPT4gaXNWYWxpZCAmJiBoYXNDaGFuZ2VzKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOKSBwcml2YXRlIHBhZ2VPYmplY3RSZXNvbHZlcjogUWRQYWdlT2JqZWN0UmVzb2x2ZXI8VD4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBNYW5hZ2VyU2VydmljZTogUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpYWxvZ0NvbXBvbmVudDogUWREaWFsb2dDb21wb25lbnQsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IFFkRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBRZENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzb2x2ZXJUcmlnZ2VyU2VydmljZTogUWRSZXNvbHZlclRyaWdnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFnZVN0b3JlU2VydmljZTogUWRQYWdlU3RvcmVTZXJ2aWNlPFQ+XG4gICkge1xuICAgIGlmIChwYWdlT2JqZWN0UmVzb2x2ZXIpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsVXBkYXRlTWV0YWRhdGEgPSB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci51cGRhdGVNZXRhZGF0YT8uYmluZCh0aGlzLnBhZ2VPYmplY3RSZXNvbHZlcik7XG4gICAgICB0aGlzLnBhZ2VPYmplY3RSZXNvbHZlci51cGRhdGVNZXRhZGF0YSA9IChwcm9wczogUGFydGlhbDxUPik6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU1ldGFkYXRhKHByb3BzKTtcbiAgICAgICAgaWYgKG9yaWdpbmFsVXBkYXRlTWV0YWRhdGEpIG9yaWdpbmFsVXBkYXRlTWV0YWRhdGEocHJvcHMpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXR1cFJlc29sdmVyVHJpZ2dlcigpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdENvbnRleHRzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wYWdlT2JqZWN0UmVzb2x2ZXIpIHRoaXMuc2V0dXBSZXNvbHZlclRyaWdnZXIoKTtcblxuICAgIHRoaXMudXBkYXRlQ3VzdG9tQWN0aW9ucygpO1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UudGFrZUZvcm1Hcm91cHNTbmFwc2hvdCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb25maWcnXSAmJiAhY2hhbmdlc1snY29uZmlnJ10uZmlyc3RDaGFuZ2UpIHRoaXMudXBkYXRlQ3VzdG9tQWN0aW9ucygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KGZhbHNlKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHVwZGF0ZU1ldGFkYXRhKG1ldGFkYXRhOiBQYXJ0aWFsPFQ+KTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlZE1ldGFkYXRhID0geyAuLi50aGlzLl9wYWdlT2JqZWN0RGF0YVN1YmplY3QudmFsdWUsIC4uLm1ldGFkYXRhIH07XG4gICAgdGhpcy5fcGFnZU9iamVjdERhdGFTdWJqZWN0Lm5leHQodXBkYXRlZE1ldGFkYXRhKTtcbiAgfVxuXG4gIGhhbmRsZUFjdGlvbihmYWNldDogUWRGYWNldE9wdGlvblNpbmdsZVNlbGVjdCB8IFFkRmFjZXRPcHRpb25NdWx0aVNlbGVjdCk6IHZvaWQge1xuICAgIGZhY2V0Py5hY3Rpb24/LmhhbmRsZXIoKTtcbiAgfVxuXG4gIGhhc0hlYWRlckZhY2V0cyhcbiAgICBjb25maWc6IFFkUGFnZUNvbmZpZzxUPlxuICApOiBjb25maWcgaXMgUWRQYWdlQ29uZmlnQ3JlYXRlPFQ+IHwgUWRQYWdlQ29uZmlnSW5zcGVjdDxUPiB8IFFkUGFnZUNvbmZpZ0N1c3RvbTxUPiB7XG4gICAgcmV0dXJuICh0aGlzLmNvbmZpZyBhcyB7IGhlYWRlckZhY2V0czogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXSB9KS5oZWFkZXJGYWNldHMgIT0gbnVsbDtcbiAgfVxuXG4gIGVkaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KGZhbHNlKTtcbiAgICBpZiAodGhpcy5lZGl0QnV0dG9uPy5oYW5kbGVyKSB0aGlzLmVkaXRCdXR0b24uaGFuZGxlcigpO1xuICB9XG5cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2VcbiAgICAgIC4kaGFzVmFsdWVzQ2hhbmdlZCgpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShoYXNDaGFuZ2VkID0+IHtcbiAgICAgICAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICAgICAgICB0aGlzLm9wZW5DYW5jZWxEaWFsb2coKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmNhbmNlbFBlbmRpbmdBc3luY1ZhbGlkYXRpb24oKTtcbiAgICAgICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UudG9nZ2xlVmlld29ubHkodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBoYW5kbGVTdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KHRydWUpO1xuICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS50YWtlRm9ybUdyb3Vwc1NuYXBzaG90KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2F2ZUJ1dHRvbj8uaGFuZGxlcj8uKHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuZ2V0QWxsVmFsdWVzKCkpO1xuXG4gICAgaXNPYnNlcnZhYmxlKHJlc3VsdCkgPyByZXN1bHQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKG9rOiBib29sZWFuKSA9PiBvayAmJiBoYW5kbGVTdWNjZXNzKCkpIDogaGFuZGxlU3VjY2VzcygpO1xuICB9XG5cbiAgY2hhbmdlQ29udGV4dChcbiAgICBjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnLFxuICAgIHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10sXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnRcbiAgKTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoY29udGV4dC50eXBlID09PSAnY3VzdG9tJykge1xuICAgICAgY29udGV4dC5vcGVuKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFkQ29udGV4dFNlbGVjdERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBjb25maWc6IGNvbnRleHQsIHNlbGVjdGlvbiB9LFxuICAgICAgZGlhbG9nU2l6ZTogUWREaWFsb2dTaXplLlNtYWxsLFxuICAgICAgdGl0bGU6IGNvbnRleHQudGl0bGVcbiAgICB9KTtcblxuICAgIGRpYWxvZ1JlZi5jbG9zZWQuc3Vic2NyaWJlKChkYXRhOiB7IHNlbGVjdGVkOiBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSB9KSA9PiB7XG4gICAgICBpZiAoZGF0YSkgdGhpcy5jb250ZXh0U2VydmljZS5zZXRWYWx1ZShjb250ZXh0LmlkLCBkYXRhLnNlbGVjdGVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsZWFyQ29udGV4dChjb250ZXh0OiBRZFBhZ2VDb250ZXh0Q29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5jbGVhcihjb250ZXh0LmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBSZXNvbHZlclRyaWdnZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHZlclRyaWdnZXJTZXJ2aWNlXG4gICAgICAuc2hvdWxkVHJpZ2dlclJlc29sdmVyKHRoaXMucGFnZU9iamVjdFJlc29sdmVyLmNvbmZpZz8udHJpZ2dlck9uID8/ICdwYXRoUGFyYW1zQ2hhbmdlJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCksXG4gICAgICAgIGZpbHRlcihzaG91bGRUcmlnZ2VyID0+IHNob3VsZFRyaWdnZXIpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5faXNMb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucGFnZU9iamVjdFJlc29sdmVyLnJlc29sdmUoKSksXG4gICAgICAgIHRhcChvYmplY3REYXRhID0+IHRoaXMuX3BhZ2VPYmplY3REYXRhU3ViamVjdC5uZXh0KG9iamVjdERhdGEpKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2lzTG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDb250ZXh0cygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRzJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY29udGV4dHMkLnBpcGUoXG4gICAgICBtYXAoY29udGV4dHMgPT4gY29udGV4dHMuZmlsdGVyKGNvbnRleHQgPT4gY29udGV4dC5zZWxlY3Rpb24gfHwgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycpKSxcbiAgICAgIG1hcChjb250ZXh0cyA9PlxuICAgICAgICBjb250ZXh0cz8ubWFwKCh7IHNlbGVjdGlvbiwgY29udGV4dCB9KSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBjb250ZXh0LmxhYmVsLmkxOG4sXG4gICAgICAgICAgdmFsdWU6IEFycmF5LmlzQXJyYXkoc2VsZWN0aW9uPy52YWx1ZSlcbiAgICAgICAgICAgID8gc2VsZWN0aW9uPy52YWx1ZS5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIDogc2VsZWN0aW9uPy52YWx1ZSAhPT0gbnVsbCAmJiBzZWxlY3Rpb24/LnZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gW3NlbGVjdGlvbj8udmFsdWVdXG4gICAgICAgICAgICA6IChbXSBhcyBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXSksXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBzZWxlY3Rpb246IHNlbGVjdGlvbj8udmFsdWUgPz8gW11cbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ3VzdG9tQWN0aW9ucygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdpbnNwZWN0Jykge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uTW9kZSA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5vcGVyYXRpb25Nb2RlO1xuXG4gICAgICBpZiAob3BlcmF0aW9uTW9kZSkgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLnRvZ2dsZVZpZXdvbmx5KG9wZXJhdGlvbk1vZGUgPT09ICd2aWV3Jyk7XG5cbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGlzVmlld29ubHkgPT4ge1xuICAgICAgICBjb25zdCBjdXN0b21BY3Rpb25zID0gdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgdGhpcy5fY3VzdG9tQWN0aW9uc1N1YmplY3QubmV4dCh0aGlzLmdldEN1c3RvbUFjdGlvbnNCeU1vZGUoY3VzdG9tQWN0aW9ucywgaXNWaWV3b25seSA/ICd2aWV3JyA6ICdlZGl0JykpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlICE9PSAnaW5zcGVjdCcpXG4gICAgICB0aGlzLl9jdXN0b21BY3Rpb25zU3ViamVjdC5uZXh0KHsgYWN0aW9uczogdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/LmN1c3RvbUFjdGlvbnMgPz8gW10gfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEN1c3RvbUFjdGlvbnNCeU1vZGUoXG4gICAgY3VzdG9tQWN0aW9uczogKFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZyAmIHsgb3BlcmF0aW9uTW9kZT86IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUgfSlbXSxcbiAgICBtb2RlOiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlXG4gICk6IFFkTWVudUJ1dHRvbkNvbmZpZyB7XG4gICAgY29uc3QgYWN0aW9ucyA9IGN1c3RvbUFjdGlvbnNcbiAgICAgIC5maWx0ZXIoYWN0aW9uID0+ICFhY3Rpb24ub3BlcmF0aW9uTW9kZSB8fCBhY3Rpb24ub3BlcmF0aW9uTW9kZSA9PT0gbW9kZSlcbiAgICAgIC5tYXAoYWN0aW9uID0+IHtcbiAgICAgICAgY29uc3QgbWVudUJ1dHRvbkFjdGlvbiA9IHsgLi4uYWN0aW9uIH07XG4gICAgICAgIGRlbGV0ZSBtZW51QnV0dG9uQWN0aW9uLm9wZXJhdGlvbk1vZGU7XG4gICAgICAgIHJldHVybiBtZW51QnV0dG9uQWN0aW9uO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4geyBhY3Rpb25zIH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5DYW5jZWxEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB0aXRsZTogeyBpMThuOiAnaTE4bi5xZC5wYWdlLmNhbmNlbC5jb25maXJtYXRpb24uZGlhbG9nLnRpdGxlJyB9LFxuICAgICAgICBkaWFsb2dTaXplOiBRZERpYWxvZ1NpemUuU21hbGwsXG4gICAgICAgIGRhdGE6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnXG4gICAgICB9KVxuICAgICAgLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoY29uZmlybSA9PiB7XG4gICAgICAgIGlmIChjb25maXJtKSB7XG4gICAgICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS5yZXN0b3JlRm9ybUdyb3Vwc0Zyb21TbmFwc2hvdCgpO1xuICAgICAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS50b2dnbGVWaWV3b25seSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkaW5nLW92ZXJsYXlcIiAqbmdJZj1cImlzTG9hZGluZyQgfCBhc3luY1wiPjxxZC1zcGlubmVyPjwvcWQtc3Bpbm5lcj48L2Rpdj5cblxuPGRpdiBjbGFzcz1cIm9iamVjdC1oZWFkZXItdG9wXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJvYmplY3QtaGVhZGVyLXRpdGxlXCI+e3sgY29uZmlnLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX08L2hlYWRlcj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1oZWFkZXItdG9vbGJhclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taWNvblwiIGRhdGEtdGVzdC1pZD1cImFyY2hpdmUtYnV0dG9uXCI+XG4gICAgICA8cWQtaWNvblxuICAgICAgICAqbmdJZj1cInNob3dBcmNoaXZlJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cImFyY2hpdmVCdXR0b24/LmhhbmRsZXIoKVwiXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWFjdGlvbi1pY29uXCJcbiAgICAgICAgW2ljb25dPVwiJ3Jlc3VsdE5ldydcIlxuICAgICAgPjwvcWQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24taWNvblwiIGRhdGEtdGVzdC1pZD1cImRlbGV0ZS1idXR0b25cIj5cbiAgICAgIDxxZC1pY29uXG4gICAgICAgIGNsYXNzPVwiaGVhZGVyLWFjdGlvbi1pY29uXCJcbiAgICAgICAgKm5nSWY9XCJzaG93RGVsZXRlJCB8IGFzeW5jXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUJ1dHRvbj8uaGFuZGxlcigpXCJcbiAgICAgICAgW2ljb25dPVwiJ3RyYXNoJ1wiXG4gICAgICA+PC9xZC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInNob3dFZGl0JCB8IGFzeW5jXCIgcWRCdXR0b24gKGNsaWNrKT1cImVkaXQoKVwiIGRhdGEtdGVzdC1pZD1cImVkaXQtYnV0dG9uXCI+XG4gICAgICB7eyBlZGl0QnV0dG9uPy5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuZWRpdFwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0NhbmNlbCQgfCBhc3luY1wiIHFkQnV0dG9uIHFkQnV0dG9uR2hvc3QgKGNsaWNrKT1cImNhbmNlbCgpXCIgZGF0YS10ZXN0LWlkPVwiY2FuY2VsLWJ1dHRvblwiPlxuICAgICAge3sgY2FuY2VsQnV0dG9uLmxhYmVsPy5pMThuIHx8IFwiaTE4bi5xZC5wYWdlLmhlYWRlci5jYW5jZWxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG93U2F2ZSQgfCBhc3luY1wiXG4gICAgICBxZEJ1dHRvblxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBkYXRhLXRlc3QtaWQ9XCJzYXZlLWJ1dHRvblwiXG4gICAgICBbZGlzYWJsZWRdPVwiKCRjYW5TYXZlIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgPlxuICAgICAge3sgc2F2ZUJ1dHRvbi5sYWJlbD8uaTE4biB8fCBcImkxOG4ucWQucGFnZS5oZWFkZXIuc2F2ZVwiIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tQWN0aW9ucyQgfCBhc3luYyBhcyBjdXN0b21BY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFkYXB0aXZlTW9kZTsgZWxzZSBhZGFwdGl2ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW3FkTWVudUJ1dHRvbl09XCJjdXN0b21BY3Rpb25zXCJcbiAgICAgICAgICBbYXV0b1NpemVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtkYXRhLXRlc3QtaWRdPVwiJ3BhZ2UtJ1wiXG4gICAgICAgICAgKm5nSWY9XCJjdXN0b21BY3Rpb25zLmFjdGlvbnMubGVuZ3RoID4gMTsgZWxzZSBzaW5nbGVCdXR0b25cIlxuICAgICAgICAgIGRhdGEtdGVzdC1pZD1cImN1c3RvbS1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29uZmlnPy5jdXN0b21BY3Rpb25zTGFiZWw/LmkxOG4gfHwgXCJpMThuLnFkLnBhZ2UuaGVhZGVyLmFjdGlvbnNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZUJ1dHRvbj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGN1c3RvbUFjdGlvbnMkIHwgYXN5bmMpLmFjdGlvbnNbMF0gYXMgc2luZ2xlQWN0aW9uXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHFkQnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwic2luZ2xlQWN0aW9uLmhhbmRsZXIgJiYgIXNpbmdsZUFjdGlvbi5pc0hpZGRlblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzaW5nbGVBY3Rpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaW5nbGVBY3Rpb24uaGFuZGxlcigpXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0LWlkPVwiY3VzdG9tLWJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHNpbmdsZUFjdGlvbi5sYWJlbD8uaTE4biB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNhZGFwdGl2ZT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiKGN1c3RvbUFjdGlvbnMkIHwgYXN5bmMpPy5hY3Rpb25zLmxlbmd0aCA+PSAxXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImFkYXB0aXZlLW1lbnUtYnV0dG9uXCJcbiAgICAgICAgICBbcWRQb3BvdmVyT25DbGlja109XCJtZW51XCJcbiAgICAgICAgICBbcWRQb3BvdmVyQ2xvc2VTdHJhdGVneV09XCInb25FdmVyeUNsaWNrJ1wiXG4gICAgICAgICAgW3FkUG9wb3ZlclN0b3BQcm9wYWdhdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcWRQb3BvdmVyTWluV2lkdGhdPVwiMTYwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxxZC1pY29uIGljb249XCJvdmVyZmxvd01lbnVWZXJ0aWNhbFwiPjwvcWQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNtZW51PlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgY3VzdG9tQWN0aW9ucy5hY3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRhcHRpdmUtbWVudS1lbnRyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmhhbmRsZXIoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0c1wiIFtuZ0NsYXNzXT1cInsgYW1vbmdUaGVtc2VsdmVzOiBhZGFwdGl2ZU1vZGUgJiYgIWZhY2V0c0NvbGxhcHNlZCB9XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlT2JqZWN0RGF0YSQgfCBhc3luYyBhcyBkYXRhXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0XCJcbiAgICAgICpuZ0Zvcj1cImxldCBmYWNldCBvZiBoZWFkZXJGYWNldHMgfCBzbGljZSA6IDAgOiAoYWRhcHRpdmVNb2RlICYmIGZhY2V0c0NvbGxhcHNlZCA/IDIgOiBoZWFkZXJGYWNldHM/Lmxlbmd0aCA/PyAwKVwiXG4gICAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1mYWNldC0nICsgZmFjZXQubmFtZVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZhY2V0LWxhYmVsXCI+e3sgZmFjZXQubGFiZWwuaTE4biB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgPHFkLWR5bmFtaWMtZmFjZXQgY2xhc3M9XCJkeW5hbWljLWZhY2V0XCIgW2ZhY2V0XT1cImZhY2V0XCIgW2RhdGFdPVwiZGF0YVwiPjwvcWQtZHluYW1pYy1mYWNldD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb25maWcuaGlkZUNvbnRleHRzICYmIGNvbnRleHRzJCB8IGFzeW5jIGFzIGNvbnRleHRzXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJvYmplY3QtaGVhZGVyLWZhY2V0XCJcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgY29udGV4dCBvZiBjb250ZXh0c1xuICAgICAgICAgIHwgc2xpY2UgOiAwIDogKGFkYXB0aXZlTW9kZSAmJiBmYWNldHNDb2xsYXBzZWQgPyAyIC0gKGhlYWRlckZhY2V0cz8ubGVuZ3RoID8/IDApIDogY29udGV4dHMubGVuZ3RoKTtcbiAgICAgICAgbGV0IGluZGV4ID0gaW5kZXg7XG4gICAgICAgIGxldCBmaXJzdCA9IGZpcnN0XG4gICAgICBcIlxuICAgICAgW25nQ2xhc3NdPVwieyBoYXNEaXZpZGVyOiBoZWFkZXJGYWNldHMgJiYgZmlyc3QgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImZhY2V0LWxhYmVsXCI+e3sgY29udGV4dC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRleHQudmFsdWUubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJuby1zZWxlY3RlZC1jb250ZXh0XCI+e3tcbiAgICAgICAgXCJpMThuLnFkLnBhZ2UuY29udGV4dC5ub1NlbGVjdGlvblBsYWNlaG9sZGVyXCIgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cImNvbnRleHQudmFsdWUubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgIDxxZC1jaGlwIHN0YXRlPVwibm9uZVwiIFtjbG9zZV09XCJpc0NvbnRleHRTZWxlY3RhYmxlXCIgKGNsb3NlQ2xpY2tFbWl0dGVyKT1cImNsZWFyQ29udGV4dChjb250ZXh0LmNvbnRleHQpXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdmFsIG9mIGNvbnRleHQudmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAge3sgdmFsLmxhYmVsLmkxOG4gfCB0cmFuc2xhdGUgfX08c3BhbiAqbmdJZj1cIiFsYXN0XCI+LCA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvcWQtY2hpcD5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPHNwYW4gKm5nSWY9XCJpc0NvbnRleHRTZWxlY3RhYmxlICYmICghZmFjZXRzQ29sbGFwc2VkIHx8ICFhZGFwdGl2ZU1vZGUpXCIgY2xhc3M9XCJzZWxlY3QtYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBxZEJ1dHRvblxuICAgICAgICAgIHFkQnV0dG9uTGlua1xuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VDb250ZXh0KGNvbnRleHQuY29udGV4dCwgY29udGV4dC5zZWxlY3Rpb24sICRldmVudClcIlxuICAgICAgICAgIFtkYXRhLXRlc3QtaWRdPVwiJ29iamVjdC1oZWFkZXItc2VsZWN0LWNvbnRleHQtJyArIGNvbnRleHQuY29udGV4dC5pZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgY29udGV4dC52YWx1ZS5sZW5ndGggIT09IDBcbiAgICAgICAgICAgICAgPyAoXCJpMThuLnFkLnBhZ2UuY29udGV4dC5idXR0b24uY2hhbmdlXCIgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICAgIDogKFwiaTE4bi5xZC5wYWdlLmNvbnRleHQuYnV0dG9uLnNlbGVjdFwiIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8c3BhbiBjbGFzcz1cImZhY2V0cy10b2dnbGVyXCIgKm5nSWY9XCJhZGFwdGl2ZU1vZGUgJiYgaGVhZGVyRmFjZXRzLmxlbmd0aCArIChjb250ZXh0cyQgfCBhc3luYykubGVuZ3RoID4gMlwiPlxuICAgIDxzcGFuICpuZ0lmPVwiZmFjZXRzQ29sbGFwc2VkXCI+K3t7IGhlYWRlckZhY2V0cy5sZW5ndGggKyAoY29udGV4dHMkIHwgYXN5bmMpLmxlbmd0aCAtIDIgfX08L3NwYW4+XG4gICAgPGJ1dHRvbiBxZEljb25CdXR0b24+XG4gICAgICA8cWQtaWNvbiBbaWNvbl09XCJmYWNldHNDb2xsYXBzZWQgPyAnY3RybERvd24nIDogJ2N0cmxUb3AnXCI+PC9xZC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L3NwYW4+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -444,6 +444,7 @@ export class QdPageComponent {
|
|
|
444
444
|
projectionGuardMessage = 'QD-UI | QdPage - This content is not supported. Please use QdSectionAdapterDirective for custom content projection.';
|
|
445
445
|
_isInitialized = false;
|
|
446
446
|
_destroyed$ = new Subject();
|
|
447
|
+
_cancelSubmitValidation$ = new Subject();
|
|
447
448
|
get isControlPanelVisible() {
|
|
448
449
|
return this.controlPanel !== undefined && this.controlPanel.config?.isHidden !== true;
|
|
449
450
|
}
|
|
@@ -589,9 +590,10 @@ export class QdPageComponent {
|
|
|
589
590
|
.subscribe();
|
|
590
591
|
}
|
|
591
592
|
initSubmitValidation() {
|
|
593
|
+
this._cancelSubmitValidation$.next();
|
|
592
594
|
this.formGroupManagerService
|
|
593
595
|
.$areFormGroupsValid()
|
|
594
|
-
.pipe(takeUntil(this._destroyed$), tap(isValid => {
|
|
596
|
+
.pipe(takeUntil(this._cancelSubmitValidation$), takeUntil(this._destroyed$), tap(isValid => {
|
|
595
597
|
const submitDisabledInfoText = this.config.pageType === 'inspect' ? this.config.pageTypeConfig?.submit?.disabledInfo : undefined;
|
|
596
598
|
this.footerService.updateActions([
|
|
597
599
|
{
|
|
@@ -670,4 +672,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
670
672
|
type: HostBinding,
|
|
671
673
|
args: ['class.has-info-banners']
|
|
672
674
|
}] } });
|
|
673
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDakksT0FBTyxFQUFFLDJCQUEyQixF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QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJbEUsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJL0QsV0FBVztzQkFEVixlQUFlO3VCQUFDLHlCQUF5QjtnQkF3QnRDLGFBQWE7c0JBRGhCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQU0zQixjQUFjO3NCQURqQixXQUFXO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBRRF9TQUZFX0JPVFRPTV9PRkZTRVQgfSBmcm9tICcuLi9jb3JlL2NvcmUubW9kdWxlJztcbmltcG9ydCB7IFFkRGlhbG9nU2VydmljZSwgUWREaWFsb2dTaXplIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlU3RlcHBlckFkYXB0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9wYWdlLXN0ZXBwZXIvYWRhcHRvcnMvcGFnZS1zdGVwcGVyLWFkYXB0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFFkUGFnZVN0ZXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9wYWdlLXN0ZXBwZXIvcGFnZS1zdGVwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VUYWJzQWRhcHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL3BhZ2UtdGFicy9hZGFwdG9ycy9wYWdlLXRhYnMtYWRhcHRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUWRQYWdlVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2UtdGFicy9wYWdlLXRhYnMuY29tcG9uZW50JztcbmltcG9ydCB7IFFkU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NlY3Rpb24vc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy9wYWdlLWNhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VDb250cm9sUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2wtcGFuZWwvcGFnZS1jb250cm9sLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9pbmZvLWJhbm5lci9wYWdlLWluZm8tYmFubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBRZEluc3BlY3RPcGVyYXRpb25Nb2RlLFxuICBRZFBhZ2VDb25maWcsXG4gIFFkUGFnZVR5cGVDcmVhdGVDb25maWcsXG4gIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnXG59IGZyb20gJy4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFFkQ3JlYXRlRm9vdGVyQWN0aW9uS2V5LCBRZEZvb3RlckFjdGlvblR5cGUsIFFkUGFnZUZvb3RlckFjdGlvbiB9IGZyb20gJy4vbW9kZWwvcGFnZS1mb290ZXItYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZEZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvZm9ybS1ncm91cC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlRm9vdGVyU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL3BhZ2UtZm9vdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9wYWdlLXN1Ym1pdC1hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9yZXNvbHZlci10cmlnZ2VyLnNlcnZpY2UnO1xuXG50eXBlIFBhcnRpYWxGb290ZXJBY3Rpb24gPSB7IGFjdGlvbktleTogUWRDcmVhdGVGb290ZXJBY3Rpb25LZXk7IHBhcnRpYWxBY3Rpb246IFBhcnRpYWw8UWRQYWdlRm9vdGVyQWN0aW9uPiB9O1xuXG4vLyBGb290ZXIgb2Zmc2V0IChweCkuIEtlZXAgaW4gc3luYyB3aXRoIFNDU1MgJHBhZ2UtZm9vdGVyLWhlaWdodCFcbmNvbnN0IFNBRkVfQk9UVE9NX09GRlNFVF9QWCA9IDY0O1xuXG4vKipcbiAqICoqUWRQYWdlKiogc2VydmVzIGFzIHRoZSBjZW50cmFsIHN0cnVjdHVyYWwgZWxlbWVudCB3aXRoaW4gdGhlIGhpZXJhcmNoeSB1bmRlciB0aGUgKipRZFNoZWxsKiouXG4gKiBJbnRlZ3JhdGlvbiBpcyBkb25lIHRocm91Z2ggdGhlIEFuZ3VsYXIgUm91dGluZyBNb2R1bGUsIGFuZCBRZFBhZ2UgaXMgZGVzaWduZWQgdG8gYmUgcmVzcG9uc2l2ZSBhY3Jvc3MgdmFyaW91cyBzY3JlZW4gc2l6ZXMgcmlnaHQgb3V0IG9mIHRoZSBib3guXG4gKlxuICogIyMjIyAqKlBhZ2UgVHlwZXMqKlxuICpcbiAqIFFkUGFnZSB1c2VzIHBhZ2UgdHlwZXMgdG8gZGVjaWRlIGhvdyB0aGUgcGFnZSBsb29rcyBhbmQgd29ya3MuIEVhY2ggcGFnZSB0eXBlIGhhcyBpdHMgb3duIHNldHRpbmdzIGFuZCBhY3Rpb25zLlxuICpcbiAqIC0gKipvdmVydmlldyoqOiBEaXNwbGF5cyBhIHN1bW1hcnkgb3IgYSBsaXN0IG9mIG9iamVjdHMsIHByb3ZpZGluZyBhbiBvdmVydmlldyBvZiBtdWx0aXBsZSBidXNpbmVzcyBjYXNlcy5cbiAqIC0gKipjcmVhdGUqKjogQWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBvYmplY3QsIHJlcHJlc2VudGluZyBhIGJ1c2luZXNzIGNhc2UuXG4gKiAtICoqaW5zcGVjdCoqOiBFbmFibGVzIHZpZXdpbmcsIGVkaXRpbmcsIGFuZCBleGVjdXRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIG9iamVjdCwgd2hpY2ggYWxzbyByZXByZXNlbnRzIGEgYnVzaW5lc3MgY2FzZS5cbiAqIC0gKipjdXN0b20qKjogUHJvdmlkZXMgYSB3YXkgdG8gaW1wbGVtZW50IHVuaXF1ZSBmdW5jdGlvbmFsaXR5IHRoYXQgZG9lc27igJl0IGZpdCB0aGUgb3RoZXIgcHJlZGVmaW5lZCBwYWdlIHR5cGVzLlxuICpcbiAqICoqTm90ZSB0aGF0IHRoZSAnY3VzdG9tJyBwYWdlIHR5cGUgc2hvdWxkIGJlIHVzZWQgb25seSBhcyBhIGZhbGxiYWNrIGZvciB2ZXJ5IHNwZWNpZmljIGNhc2VzLiBJZiB5b3UgZW5jb3VudGVyIHN1Y2ggYSBzaXR1YXRpb24sIHBsZWFzZSBjb250YWN0IHRoZSBRdWFkcmVsIHRlYW0uKipcbiAqXG4gKiAjIyMjICoqRmFjZXRzKipcbiAqXG4gKiBUaGVzZSBhcmUgZXh0cmEgcGllY2VzIG9mIGluZm9ybWF0aW9uIHNob3duIGluIHRoZSBwYWdlIGhlYWRlci4gVGhleSBnaXZlIGNvbnRleHQgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgb2JqZWN0IG1vZGVsIGJlaW5nIHZpZXdlZCBvciBlZGl0ZWQuIFRoZXJlIGFyZSBzZXZlcmFsIHR5cGVzIG9mIGZhY2V0cywgaW5jbHVkaW5nIGBzdGF0dXNgLCBgdmFsdWVgLCBgY3JpdGljYWxpdHlgLCBgcmVmZXJlbmNlc2AsIGBwcm9ncmVzc2AsIGBkYXRlYCwgYHNpbmdsZVNlbGVjdGAsIGFuZCBgbXVsdGlTZWxlY3RgLiBFYWNoIHR5cGUgaGFzIGl0cyBvd24gb3B0aW9ucy4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBgUWRQYWdlSGVhZGVyRmFjZXRgIGludGVyZmFjZS5cbiAqXG4gKiAjIyMjICoqQ29udGV4dCoqXG4gKlxuICogVGhlIGBjb250ZXh0YCBhY3RzIGFzIGEgZmlsdGVyIHRoYXQgY2FuIGJlIHNlbGVjdGVkIG9uIHRoZSBvdmVydmlldyBwYWdlIGFuZCBwcm92aWRlcyB0aGUgYnVzaW5lc3MgY29udGV4dCwgd2hpY2ggcmVtYWlucyBjb25zaXN0ZW50IHRocm91Z2hvdXQgdGhlIGVudGlyZSBhcHBsaWNhdGlvbi4gT24gY3JlYXRlIGFuZCBpbnNwZWN0IHBhZ2VzLCB0aGUgY29udGV4dCBpcyBkaXNwbGF5ZWQgYXMgcmVhZC1vbmx5LiBGb3IgbW9yZSBkZXRhaWxzLCBjaGVjayB0aGUgZGVkaWNhdGVkIGNoYXB0ZXIgaW4gU3Rvcnlib29rLlxuICpcbiAqXG4gKiAjIyMjICoqUGFnZSBJbmZvIEJhbm5lcnMqKlxuICpcbiAqIFRvIGluc2VydCBhIHBhZ2UgaW5mbyBiYW5uZXIgdW5kZXIgdGhlIHBhZ2UgaGVhZGVyLCBqdXN0IHB1dCBhIGBxZC1wYWdlLWluZm8tYmFubmVyYCBjb21wb25lbnQgaW5zaWRlIHRoZSBgcWQtcGFnZWAuIE11bHRpcGxlIGNvbnNlY3V0aXZlIGluZm8gYmFubmVycyBvZiB0aGUgc2FtZSB0eXBlIHdpbGwgYmUgbWVyZ2VkIGludG8gb25lIGJhbm5lciBjb250YWluZXIuIFBhZ2UgaW5mbyBiYW5uZXJzIGhhdmUgdGhlIHNhbWUgYXBwZWFyYW5jZSBsaWtlIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogIyMjIyAqKkNvbnRyb2wgUGFuZWwqKlxuICpcbiAqIFRoZSBjb250cm9sIHBhbmVsIGlzIGxvY2F0ZWQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHBhZ2UgYW5kIGlzIHVzZWQgdG8gZGlzcGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBmdW5jdGlvbnMgcmVsZXZhbnQgdG8gYSBzcGVjaWZpYyBidXNpbmVzcyBjYXNlLCB3aGljaCBpcyBsaW5rZWQgdG8gYSBzcGVjaWZpYyBvYmplY3QgbW9kZWwuIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgY29uc3VsdCB0aGUgZGVkaWNhdGVkIGNoYXB0ZXIgaW4gU3Rvcnlib29rLlxuICpcbiAqICMjIyMgKipBY3Rpb25zKipcbiAqXG4gKiBUaGVzZSBhcmUgaW50ZXJhY3RpdmUgZWxlbWVudHMgdGhhdCBwZXJmb3JtIHNwZWNpZmljIGZ1bmN0aW9ucy4gRnVuY3Rpb25zIGZvciB0aGVzZSBhY3Rpb25zIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWd1cmF0aW9ucy4gQ3VzdG9tIGFjdGlvbnMgY2FuIGJlIGFkZGVkIHRvIGFueSBwYWdlIHR5cGUuIEFkZGl0aW9uYWxseSwgYWxsIGFjdGlvbnMgY2FuIGJlIGNvbmZpZ3VyZWQgYW5kIGN1c3RvbWl6ZWQgd2l0aCB5b3VyIG93biB0ZXh0LCB3aGljaCB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHRleHRzLlxuICpcbiAqIFBsZWFzZSBjaGVjayB0aGUgcmVsZXZhbnQgaW50ZXJmYWNlcyBmb3IgZWFjaCBwYWdlIHR5cGU6IGBRZFBhZ2VDb25maWdPdmVydmlld2AsIGBRZFBhZ2VDb25maWdDcmVhdGVgLCBgUWRQYWdlQ29uZmlnSW5zcGVjdGAsIGFuZCBgUWRQYWdlQ29uZmlnQ3VzdG9tYC5cbiAqXG4gKiAjIyMjICoqVmFsaWRhdGlvbi9QYXJhbWV0ZXJpemF0aW9uKipcbiAqXG4gKiBWYWxpZGF0aW9uIGFuZCBwYXJhbWV0ZXJpemF0aW9uIGFyZSBjb3ZlcmVkIGluIGEgZGVkaWNhdGVkIGNoYXB0ZXIgaW4gdGhlIFN0b3J5Ym9vay4gUGxlYXNlIGNoZWNrIHRoZSBcIlZhbGlkYXRpb25cIiBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqICMjIyMgKipSZXNvbHZlcioqXG4gKlxuICogVXNpbmcgYSByZXNvbHZlciB0byBmZXRjaCBwYWdlIG9iamVjdCBkYXRhIGlzIGVzc2VudGlhbCB0byB0aGUgcGFnZSBjb25jZXB0LiBBZGQgdGhlIHJlc29sdmVyIHRvIHRoZSBjb21wb25lbnQncyBwcm92aWRlcnMgYW5kIHVzZSB0aGUgYFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOYCB0b2tlbi4gVGhpcyBhcHByb2FjaCBlbmFibGVzIHR5cGUgc2FmZXR5IGFuZCB1c2VyIGZlZWRiYWNrIGJ5IGVmZmVjdGl2ZWx5IG1hbmFnaW5nIHRoZSBuZWNlc3NhcnkgZGF0YSBmb3IgdGhlIHBhZ2UuXG4gKlxuICogYGBgdHNcbiAqIGludGVyZmFjZSBNeU9iamVjdE1vZGVsIHtcbiAqICAgLy8gTWV0YWRhdGEgZGlzcGxheWVkIGluIHRoZSBPYmplY3RIZWFkZXJcbiAqICAgc3RhdGU6IE15U3RhdGU7XG4gKiAgIGNvdW50cnlPZkRlc3RpbmF0aW9uOiBNeUNvdW50cnlPZkRlc3RpbmF0aW9uO1xuICogICAvLyBBcHBlYXJzIG5vdCBpbiB0aGUgT2JqZWN0SGVhZGVyXG4gKiAgIHBheWxvYWQ6IE15UGF5bG9hZDtcbiAqIH1cbiAqXG4gKiB0eXBlIE15T2JqZWN0TWV0YWRhdGEgPSAnc3RhdGUnIHwgJ2NvdW50cnlPZkRlc3RpbmF0aW9uJztcbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBNeU9iamVjdE1vZGVsUmVzb2x2ZXIgaW1wbGVtZW50cyBRZFBhZ2VPYmplY3RSZXNvbHZlcjxNeU9iamVjdE1vZGVsPiB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cbiAqXG4gKiAgIHJlc29sdmUoKTogT2JzZXJ2YWJsZTxNeU9iamVjdE1vZGVsPiB7XG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICogICAgICAgLmdldDxNeU9iamVjdE1vZGVsPignbXktYXBpJylcbiAqICAgICAgIC5waXBlKHRhcCgoZGF0YTogTXlPYmplY3RNb2RlbCkgPT4gZG9Tb21ldGhpbmdXaXRoKGRhdGEpKSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1wYWdlJyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL215LXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICogICBwcm92aWRlcnM6IFtcbiAqICAgICB7XG4gKiAgICAgICBwcm92aWRlOiBRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTixcbiAqICAgICAgIHVzZUNsYXNzOiBNeU9iamVjdE1vZGVsUmVzb2x2ZXJcbiAqICAgICB9XG4gKiAgIF1cbiAqIH0pXG4gKiBjbGFzcyBNeVBhZ2VDb21wb25lbnQge1xuICogICBwYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8UGljazxNeU9iamVjdE1vZGVsLCBNeU9iamVjdE1ldGFkYXRhPj4gPSB7XG4gKiAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgICBwYWdlVHlwZTogJ2luc3BlY3QnLFxuICogICAgIGhlYWRlckZhY2V0czogW1xuICogICAgICAge1xuICogICAgICAgICBuYW1lOiAnc3RhdHVzJyxcbiAqICAgICAgICAgbGFiZWw6IHtcbiAqICAgICAgICAgICBpMThuOiAnaTE4bi5zdGF0dXMubGFiZWwnXG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIG9wdGlvbnM6IHtcbiAqICAgICAgICAgICB0eXBlOiAnc3RhdHVzJ1xuICogICAgICAgICB9XG4gKiAgICAgICB9LFxuICogICAgICAge1xuICogICAgICAgICBuYW1lOiAnY291bnRyeU9mRGVzdGluYXRpb24nLFxuICogICAgICAgICBsYWJlbDoge1xuICogICAgICAgICAgIGkxOG46ICdpMThuLmNvdW50cnlPZkRlc3RpbmF0aW9uLmxhYmVsJ1xuICogICAgICAgICB9LFxuICogICAgICAgICBvcHRpb25zOiB7XG4gKiAgICAgICAgICAgdHlwZTogJ3ZhbHVlJ1xuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgXSxcbiAqICAgICBwYWdlVHlwZUNvbmZpZzoge1xuICogICAgICAgY2FuY2VsOiB7XG4gKiAgICAgICAgIGhhbmRsZXI6ICgpID0+IGhhbmRsZUNhbmNlbCgpXG4gKiAgICAgICB9LFxuICogICAgICAgc2F2ZToge1xuICogICAgICAgICBoYW5kbGVyOiAoZm9ybVZhbHVlcykgPT4gaGFuZGxlU2F2ZShmb3JtVmFsdWVzKVxuICogICAgICAgfVxuICogICAgIH1cbiAqICAgfTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyMgKipVcGRhdGluZyBGYWNldHMqKlxuICpcbiAqIFR5cGljYWxseSwgdGhlIHZhbHVlcyBvZiB0aGUgZmFjZXRzIG9uIGEgY3JlYXRlIG9yIGluc3BlY3QgcGFnZSBhcmUgc2V0IHRvIHJlYWQtb25seS4gSG93ZXZlciwgdGhlcmUgbWF5IGJlIGNhc2VzIHdoZXJlLCBmb3IgZXhhbXBsZSwgYSBzdGF0dXMgY2hhbmdlIGlzIG5lZWRlZCwgc3VjaCBhcyB0aHJvdWdoIGEgZGlhbG9nLiBGb3IgdGhpcyBwdXJwb3NlLCB3ZSBoYXZlIHByb3ZpZGVkIGFuIHVwZGF0ZSBtZXRob2QuIEluIHRoZSByZXNvbHZlciBzZXJ2aWNlLCBkZWZpbmUgYW4gZW1wdHkgbWV0aG9kIGNhbGxlZCBgdXBkYXRlTWV0YWRhdGFgLiBJbmplY3QgdGhpcyBzZXJ2aWNlIHVzaW5nIGl0cyB0eXBlLCBhbmQgdGhlbiBjYWxsIHRoZSBgdXBkYXRlTWV0YWRhdGFgIG1ldGhvZCB3aXRoIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIuXG4gKlxuICogKipQbGVhc2Ugbm90ZTogVGhlc2UgdmFsdWVzIHNob3VsZCBub3QgYmUgbW9kaWZpZWQgZGlyZWN0bHkgd2l0aGluIGEgUWRQYWdlLioqXG4gKlxuICogYGBgdHNcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIE15T2JqZWN0TW9kZWxSZXNvbHZlciBpbXBsZW1lbnRzIFFkUGFnZU9iamVjdFJlc29sdmVyPE15T2JqZWN0TW9kZWw+IHtcbiAqICAgY29uZmlnOiBRZFBhZ2VPYmplY3RSZXNvbHZlckNvbmZpZyA9IHtcbiAqICAgICAvLyB5b3VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBoZXJlXG4gKiAgIH1cbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cbiAqXG4gKiAgIHJlc29sdmUoKTogT2JzZXJ2YWJsZTxNeU9iamVjdE1vZGVsPiB7XG4gKiAgICAgLy8geW91ciBpbXBsZW1lbnRhdGlvbiBoZXJlXG4gKiAgIH1cbiAqXG4gKiAgIHVwZGF0ZU1ldGFkYXRhKG1ldGFkYXRhOiBQYXJ0aWFsPE15T2JqZWN0TW9kZWw+KSB7XG4gKiAgICAgLy8gbGVhdmUgZW1wdHkgaGVyZSAmIGNhbGwgaW4geW91ciBjb21wb25lbnRcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICAvLyAuLi5cbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAge1xuICogICAgICAgcHJvdmlkZTogUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sXG4gKiAgICAgICB1c2VDbGFzczogTXlPYmplY3RNb2RlbFJlc29sdmVyXG4gKiAgICAgfVxuICogICBdXG4gKiB9KVxuICogY2xhc3MgTXlQYWdlQ29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IoQEluamVjdChRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTikgcHJpdmF0ZSBvYmplY3RSZXNvbHZlcjogTXlPYmplY3RNb2RlbFJlc29sdmVyKSB7fVxuICpcbiAqICAgdXBkYXRlU3RhdHVzKCkge1xuICogICAgIHRoaXMub2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGEoeyBzdGF0ZTogJ1VwZGF0ZWQnIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMjICoqT3ZlcnZpZXcgUGFnZSoqXG4gKlxuICogT24gYW4gb3ZlcnZpZXcgcGFnZSwgYSBsaXN0IG9mIGJ1c2luZXNzIGNhc2VzIGNhbiBiZSBkaXNwbGF5ZWQuIFR5cGljYWxseSwgdGhpcyBpcyBkb25lIGluIGEgKipRZFRhYmxlKiosIGluY2x1ZGluZyBmaWx0ZXJzIGFuZC9vciBzZWFyY2ggb3B0aW9ucy4gVGhlcmUgYXJlIGFjdGlvbnMgdGhhdCBoYW5kbGUgcm91dGluZyB0byB0aGUgcmVsYXRlZCBkZXRhaWwgcGFnZXMsIHdoZXJlIHRoZSBidXNpbmVzcyBjYXNlcywgcmVwcmVzZW50ZWQgYnkgYSBidXNpbmVzcyBvYmplY3QgbW9kZWwsIGNhbiBiZSB2aWV3ZWQsIGVkaXRlZCwgb3IgbmV3bHkgY3JlYXRlZC5cbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgb3ZlcnZpZXdQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ubXktcGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdvdmVydmlldycsXG4gKiAgIHBhZ2VUeXBlQ29uZmlnOiB7XG4gKiAgICAgY3VzdG9tQWN0aW9uczogW1xuICogICAgICAge1xuICogICAgICAgICBpMThuOiAnaTE4bi5jdXN0b20uYWN0aW9uJyxcbiAqICAgICAgICAgaGFuZGxlcjogKCkgPT4gZG9Tb21ldGhpbmcoKVxuICogICAgICAgfVxuICogICAgIF1cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1wYWdlIFtjb25maWddPVwicGFnZUNvbmZpZ1wiPlxuICogICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICA8cWQtdGFibGUgW2NvbmZpZ109XCJ0YWJsZUNvbmZpZ1wiPjwvcWQtdGFibGU+XG4gKiAgIDwvcWQtc2VjdGlvbj5cbiAqIDwvcWQtcGFnZT5cbiAqIGBgYFxuICpcbiAqIFRvIGNvbmZpZ3VyZSBjb250ZXh0cyBmb3IgYSBwYWdlLCB5b3UgY2FuIGVhc2lseSBzZXQgY29udGV4dHMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvdmVydmlldyBwYWdlLiBUaGV5IGFyZSB0aGVuIHNlbGVjdGFibGUgb24gdGhlIG92ZXJ2aWV3IHBhZ2U6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IG92ZXJ2aWV3UGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIC8vIC4uLlxuICogICBjb250ZXh0czogW1xuICogICAgIHtcbiAqICAgICAgIGlkOiAndHlwZU9mVHJhZmZpYycsXG4gKiAgICAgICBsYWJlbDogeyBpMThuOiAnVmVya2VocnNhcnQnIH0sXG4gKiAgICAgICB0eXBlOiAnc2luZ2xlJyxcbiAqICAgICAgIHNlbGVjdGVkOiB7XG4gKiAgICAgICAgIGxhYmVsOiB7IGkxOG46ICdTY2hpZW5lJyB9LFxuICogICAgICAgICB2YWx1ZTogJ3JhaWwnXG4gKiAgICAgICB9LFxuICogICAgICAgb3B0aW9uczogW1xuICogICAgICAgICB7XG4gKiAgICAgICAgICAgdmFsdWU6ICdyYWlsJyxcbiAqICAgICAgICAgICBsYWJlbDogeyBpMThuOiAnU2NoaWVuZScgfVxuICogICAgICAgICB9LFxuICogICAgICAgICB7XG4gKiAgICAgICAgICAgdmFsdWU6ICdhaXInLFxuICogICAgICAgICAgIGxhYmVsOiB7IGkxOG46ICdMdWZ0JyB9XG4gKiAgICAgICAgIH1cbiAqICAgICAgIF1cbiAqICAgICB9XG4gKiAgIF1cbiAqICAgLy8gLi4uXG4gKiB9O1xuICogYGBgXG4gKlxuICogIyMjIyAqKkNyZWF0ZSBQYWdlKipcbiAqXG4gKiBPbiB0aGUgY3JlYXRlIHBhZ2UsIGEgbmV3IGJ1c2luZXNzIGNhc2UgY2FuIGJlIGNyZWF0ZWQuIFRoaXMgcGFnZSB0eXBpY2FsbHkgaW5jbHVkZXMgZm9ybXMgZm9yIGVudGVyaW5nIGRhdGEuIFRoZSBzdWJtaXQgYnV0dG9uIGlzIHBhcmFtZXRlcml6ZWQgd2l0aCB0aGUgZm9ybSBkYXRhIGFuZCBpcyB2YWxpZGF0ZWQgdGhyb3VnaCB0aGUgUWRQYWdlU3RlcHBlci5cbiAqIFRoZSBjbGljayBvbiB0aGUgc3VibWl0IGJ1dHRvbiBzaG91bGQgc3VibWl0IHRoZSBjcmVhdGlvbiBvZiB0aGUgYnVzaW5lc3MgY2FzZSBvciBvYmplY3QuIFlvdSBjYW4gZGVmaW5lIGEgc3BlY2lmaWMgaGFuZGxlciBpbiB0aGUgc3VibWl0IGJ1dHRvbidzIGNvbmZpZ3VyYXRpb24gdG8gY3JlYXRlIHRoZSBvYmplY3QuXG4gKiBJZiBvbmx5IG9uZSBzdGVwIGlzIG5lZWRlZCwgdGhlIHNpbmdsZS1zdGVwIG1vZGUgY2FuIGJlIHVzZWQuIEluIHNpbmdsZS1zdGVwIG1vZGUsIHRoZSBzdGVwcGVyIGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgYmVoYXZlcyBsaWtlIGEgKipRZFNlY3Rpb24qKi5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgY3JlYXRlUGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnBhZ2UudGl0bGUnIH0sXG4gKiAgIHBhZ2VUeXBlOiAnY3JlYXRlJyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBzdWJtaXQ6IHtcbiAqICAgICAgIGhhbmRsZXI6IChmb3JtVmFsdWVzKSA9PiBoYW5kbGVTdWJtaXQoZm9ybVZhbHVlcylcbiAqICAgICB9XG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8IS0tIEZvciBcIlF1aWNrIEFkZFwiIHVzZSBQYWdlU3RlcHBlciBpbiBzaW5nbGUtc3RlcCBtb2RlIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1wYWdlLXN0ZXBwZXIgW2NvbmZpZ109XCJzdGVwcGVyQ29uZmlnXCI+XG4gKiAgICAgPHFkLXBhZ2Utc3RlcCBbY29uZmlnXT1cInN0ZXBDb25maWdPbmVcIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXN0ZXA+XG4gKiAgIDwvcWQtcGFnZS1zdGVwcGVyPlxuICogPC9xZC1wYWdlPlxuICpcbiAqIDwhLS0gV2l0aCBQYWdlU3RlcHBlciB1c2luZyBtdWx0aXBsZSBzdGVwcyAtLT5cbiAqIDxxZC1wYWdlIFtjb25maWddPVwicGFnZUNvbmZpZ1wiPlxuICogICA8cWQtcGFnZS1zdGVwcGVyIFtjb25maWddPVwic3RlcHBlckNvbmZpZ1wiPlxuICogICAgIDxxZC1wYWdlLXN0ZXAgW2NvbmZpZ109XCJzdGVwQ29uZmlnT25lXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zT25lXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc09uZVwiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS1zdGVwPlxuICogICAgIDxxZC1wYWdlLXN0ZXAgW2NvbmZpZ109XCJzdGVwQ29uZmlnVHdvXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zVHdvXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc1R3b1wiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS1zdGVwPlxuICogICA8L3FkLXBhZ2Utc3RlcHBlcj5cbiAqIDwvcWQtcGFnZT5cbiAqIGBgYFxuICpcbiAqIFRvIGFsbG93IHJlc29sdmluZyBhc3luY2hyb25vdXMgb3BlcmF0aW9ucyB3aGVuIGdvaW5nIHRvIG5leHQgc3RlcCwgeW91IGNhbiBwcm92aWRlIGEgcmVzb2x2ZXIgb2YgdHlwZSBRZFBhZ2VTdGVwUmVzb2x2ZXI6XG4gKlxuICogYGBgdHNcbiAqIGNsYXNzIE15UmVzb2x2ZXIgaW1wbGVtZW50cyBRZFBhZ2VTdGVwUmVzb2x2ZXIge1xuICogICAuLi5cbiAqXG4gKiAgIHJlc29sdmUoaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICogICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcIm5leHQtc3RlcC5jb21cIik7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdxZC11aS1wYWdlLWNyZWF0ZScsXG4gKiAgIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICogICBwcm92aWRlcnM6IFtcbiAqICAgICB7XG4gKiAgICAgICBwcm92aWRlOiBRRF9QQUdFX1NURVBfUkVTT0xWRVJfVE9LRU4sXG4gKiAgICAgICB1c2VDbGFzczogUGFnZVN0ZXBSZXNvbHZlclxuICogICAgIH1cbiAqICAgXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBDcmVhdGVDb21wb25lbnQge1xuICogYGBgXG4gKlxuICogIyMjIyAqKkluc3BlY3QgUGFnZSoqXG4gKlxuICogT24gYW4gaW5zcGVjdCBwYWdlLCBhIHNwZWNpZmljIGJ1c2luZXNzIGNhc2UgaXMgZGlzcGxheWVkIGFuZCBtYXkgYmUgZWRpdGVkIG9yIHN1Ym1pdHRlZC4gRGVwZW5kaW5nIG9uIHlvdXIgbmVlZHMgeW91IGNhbiBoaWRlIHRoZSBzdWJtaXQgYnV0dG9uLlxuICogSW4gY29udHJhc3QgdG8gYSBjcmVhdGUgcGFnZSwgYW4gZXhpc3Rpbmcgb2JqZWN0IGlzIHNob3duIGFuZCBwb3RlbnRpYWxseSB1cGRhdGVkLlxuICpcbiAqIFRoZSBwYWdlIG9wZXJhdGVzIGluIG9uZSBvZiB0d28gbW9kZXMgLSBgdmlld2Agb3IgYGVkaXRgIC0gYXMgZGVmaW5lZCBieSB0aGUgYG9wZXJhdGlvbk1vZGVgIGNvbmZpZ3VyYXRpb24ga2V5LlxuICpcbiAqIFRoZSBgdmlld29ubHlgIGJlaGF2aW9yIGRlZmluZWQgYnkgdGhlIG9wZXJhdGlvbiBtb2RlIGlzIGF1dG9tYXRpY2FsbHkgcHJvcGFnYXRlZCB0byBhbGwgbmVzdGVkIFFkU2VjdGlvbiBjb21wb25lbnRzIHRoYXQgYXJlIHBhcnQgb2YgYSBRTFMsXG4gKiBhcyB3ZWxsIGFzIHRvIGZ1bmN0aW9uYWwgcGF0dGVybnMgc3VjaCBhcyBRZFRhYmxlLCBRZFRyZWUsIFFkRmlsZUNvbGxlY3RvciwgYW5kIFFkUXVpY2tFZGl0LlxuICogQWxsIGZvcm1zIGFyZSByZW5kZXJlZCBlaXRoZXIgaW4gdmlld29ubHkgb3IgZWRpdGFibGUgbW9kZSBhY2NvcmRpbmdseS5cbiAqXG4gKiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBleHBsaWNpdGx5IG92ZXJyaWRkZW4gaW4gZWFjaCBjb21wb25lbnTigJlzIGNvbmZpZ3VyYXRpb24gLSBmb3IgZXhhbXBsZSwgdG8gYWxsb3cgY2VydGFpbiBmaWVsZHMgdG8gcmVtYWluIGVkaXRhYmxlLlxuICpcbiAqIC0gKip2aWV3Kio6IEEgc3VibWl0IGFjdGlvbiBjYW4gb3B0aW9uYWxseSBiZSBhZGRlZCBmb3IgcHJvY2Vzcy1yZWxhdGVkIG9wZXJhdGlvbnMgc3VjaCBhcyBzdGF0dXMgdXBkYXRlcy5cbiAqICAgVGhlIGFjdGlvbiByZWNlaXZlcyB0aGUgY3VycmVudCBmb3JtIHZhbHVlcyBhbmQgc3VwcG9ydHMgdmFsaWRhdGlvbiBhbmQgcGFyYW1ldGVyaXphdGlvbi5cbiAqXG4gKiAtICoqZWRpdCoqOiBUeXBpY2FsbHkgaW5jbHVkZXMgYSBzYXZlIGJ1dHRvbiB0byBwZXJzaXN0IGNoYW5nZXMgbWFkZSBpbiBlZGl0YWJsZSBmaWVsZHMuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGluc3BlY3RQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdpbnNwZWN0JyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBvcGVyYXRpb25Nb2RlOiAnZWRpdCcsXG4gKiAgICAgY2FuY2VsOiB7XG4gKiAgICAgICBoYW5kbGVyOiAoKSA9PiBoYW5kbGVDYW5jZWwoKVxuICogICAgIH0sXG4gKiAgICAgc2F2ZToge1xuICogICAgICAgaGFuZGxlcjogKGZvcm1WYWx1ZXMpID0+IGhhbmRsZVNhdmUoZm9ybVZhbHVlcylcbiAqICAgICB9XG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8IS0tIHdpdGggU2VjdGlvbiAtLT5cbiAqIDxxZC1wYWdlIFtjb25maWddPVwicGFnZUNvbmZpZ1wiPlxuICogICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zXCI+XG4gKiAgICAgICA8IS0tIHlvdXIgcWQtZm9ybS1jb21wb25lbnRzIGhlcmUgLS0+XG4gKiAgICAgPC9xZC1ncmlkPlxuICogICA8L3FkLXNlY3Rpb24+XG4gKiA8L3FkLXBhZ2U+XG4gKlxuICogPCEtLSB3aXRoIFBhZ2VUYWJzIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1wYWdlLXRhYnMgW2NvbmZpZ109XCJzdGVwcGVyQ29uZmlnXCI+XG4gKiAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwidGFiQ29uZmlnT25lXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zT25lXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc09uZVwiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS10YWI+XG4gKiAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwidGFiQ29uZmlnVHdvXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zVHdvXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc1R3b1wiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS10YWI+XG4gKiAgIDwvcWQtcGFnZS10YWJzPlxuICogPC9xZC1wYWdlPlxuICogYGBgXG4gKlxuICogIyMjIyAqKkN1c3RvbSBQYWdlKipcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgY3VzdG9tUGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnBhZ2UudGl0bGUnIH0sXG4gKiAgIHBhZ2VUeXBlOiAnY3VzdG9tJyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBjdXN0b21BY3Rpb25zOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIGkxOG46ICdpMThuLmN1c3RvbS5hY3Rpb24nLFxuICogICAgICAgICBoYW5kbGVyOiAoKSA9PiBkb1NvbWV0aGluZygpXG4gKiAgICAgICB9XG4gKiAgICAgXVxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDwhLS0gUGxhY2UgY29udGVudCBoZXJlIHRoYXQgZG9lc27igJl0IGZpdCB0aGUgb3RoZXIgcGFnZSB0eXBlcyAtLT5cbiAqIDwvcWQtcGFnZT5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1FkUGFnZUZvb3RlclNlcnZpY2UsIFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsIFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UsIFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZV0sXG4gIGhvc3Q6IHsgJ1tjbGFzcy5oYXMtY29udHJvbC1wYW5lbF0nOiAnaXNDb250cm9sUGFuZWxWaXNpYmxlJywgJ1tjbGFzcy5jb250cm9sLXBhbmVsLWJyb2FkXSc6ICdpc0NvbnRyb2xQYW5lbEJyb2FkJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZUNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUWRQYWdlIGNvbXBvbmVudCwgaW5jbHVkaW5nIHRoZSBwYWdlIHR5cGUsXG4gICAqIHRpdGxlLCBhbmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggdHlwZSBvZiBwYWdlLlxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY29uZmlnITogUWRQYWdlQ29uZmlnPFQ+O1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LiA8YnIgLz5cbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBhdHRyaWJ1dGUgW2RhdGEtdGVzdC1pZF0uXG4gICAqL1xuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZD8gPSAncGFnZSc7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZW1pdHRlZCB3aGVuIHRoZSBvcGVyYXRpb24gbW9kZSBvZiB0aGUgaW5zcGVjdCBwYWdlIGlzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb3BlcmF0aW9uTW9kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFFkSW5zcGVjdE9wZXJhdGlvbk1vZGU+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihRZFNlY3Rpb25Db21wb25lbnQpXG4gIHNlY3Rpb25zITogUXVlcnlMaXN0PFFkU2VjdGlvbkNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChRZFBhZ2VDb250cm9sUGFuZWxDb21wb25lbnQpXG4gIGNvbnRyb2xQYW5lbCE6IFFkUGFnZUNvbnRyb2xQYW5lbENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZVN0ZXBwZXJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgc3RlcHBlckNvbXBvbmVudD86IFFkUGFnZVN0ZXBwZXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChRZFBhZ2VUYWJzQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRhYnNDb21wb25lbnQ/OiBRZFBhZ2VUYWJzQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoUWRQYWdlU3RlcHBlckFkYXB0ZXJEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgc3RlcHBlckFkYXB0ZXJEaXJlY3RpdmU/OiBRZFBhZ2VTdGVwcGVyQWRhcHRlckRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZVRhYnNBZGFwdGVyRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRhYnNBZGFwdGVyRGlyZWN0aXZlPzogUWRQYWdlVGFic0FkYXB0ZXJEaXJlY3RpdmU7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50KVxuICBpbmZvQmFubmVycyE6IFF1ZXJ5TGlzdDxRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50PjtcblxuICBmb290ZXJIYXNDb250ZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNGb290ZXJWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcm9qZWN0aW9uR3VhcmRNZXNzYWdlID1cbiAgICAnUUQtVUkgfCBRZFBhZ2UgLSBUaGlzIGNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHVzZSBRZFNlY3Rpb25BZGFwdGVyRGlyZWN0aXZlIGZvciBjdXN0b20gY29udGVudCBwcm9qZWN0aW9uLic7XG5cbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBnZXQgaXNDb250cm9sUGFuZWxWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xQYW5lbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29udHJvbFBhbmVsLmNvbmZpZz8uaXNIaWRkZW4gIT09IHRydWU7XG4gIH1cblxuICBnZXQgaXNDb250cm9sUGFuZWxCcm9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sUGFuZWw/LmNvbmZpZz8ud2lkdGggPT09ICdicm9hZCc7XG4gIH1cblxuICBnZXQgaGFzTmF2aWdhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5zdGVwcGVyQ29tcG9uZW50IHx8IHRoaXMudGFic0NvbXBvbmVudCB8fCB0aGlzLnN0ZXBwZXJBZGFwdGVyRGlyZWN0aXZlIHx8IHRoaXMudGFic0FkYXB0ZXJEaXJlY3RpdmUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtZm9vdGVyJylcbiAgZ2V0IGZvb3RlclZpc2libGUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXNGb290ZXJWaXNpYmxlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtaW5mby1iYW5uZXJzJylcbiAgZ2V0IGhhc0luZm9CYW5uZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZm9CYW5uZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvb3RlclNlcnZpY2U6IFFkUGFnZUZvb3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBNYW5hZ2VyU2VydmljZTogUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1Ym1pdEFjdGlvblNlcnZpY2U6IFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IFFkRGlhbG9nU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFFEX1NBRkVfQk9UVE9NX09GRlNFVCkgcHJpdmF0ZSBib3R0b21PZmZzZXQkPzogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dSZWY/OiBEaWFsb2dSZWY8dW5rbm93bj5cbiAgKSB7XG4gICAgdGhpcy5mb290ZXJIYXNDb250ZW50JCA9IHRoaXMuZm9vdGVyU2VydmljZS5mb290ZXJIYXNDb250ZW50JDtcbiAgICB0aGlzLmZvb3Rlckhhc0NvbnRlbnQkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKS5zdWJzY3JpYmUoaXNWaXNpYmxlID0+IHtcbiAgICAgIHRoaXMuaXNGb290ZXJWaXNpYmxlID0gaXNWaXNpYmxlO1xuICAgICAgdGhpcy5ib3R0b21PZmZzZXQkPy5uZXh0KGlzVmlzaWJsZSA/IFNBRkVfQk9UVE9NX09GRlNFVF9QWCA6IDApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGVja0NvbmZpZ1ZhbGlkaXR5KCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcpIHRoaXMucGFnZVN0b3JlU2VydmljZS5pbml0UGFnZVN0YXRlKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCBjb25maWdDaGFuZ2UgPSBjaGFuZ2VzWydjb25maWcnXTtcblxuICAgIGlmICghY29uZmlnQ2hhbmdlKSByZXR1cm47XG5cbiAgICBjb25zdCB7IGN1cnJlbnRWYWx1ZTogY3VyciwgcHJldmlvdXNWYWx1ZTogcHJldiB9ID0gY29uZmlnQ2hhbmdlO1xuXG4gICAgaWYgKGN1cnI/LnBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmlzSGlkZGVuICE9PSBwcmV2Py5wYWdlVHlwZUNvbmZpZz8uc3VibWl0Py5pc0hpZGRlbilcbiAgICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgICAgeyBhY3Rpb25LZXk6ICdzdWJtaXQnLCBwYXJ0aWFsQWN0aW9uOiB7IGlzVmlzaWJsZTogIWN1cnI/LnBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmlzSGlkZGVuIH0gfVxuICAgICAgXSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJykgdGhpcy5zZXR1cENyZWF0ZVBhZ2VGb290ZXJBY3Rpb25zKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjcmVhdGUnICYmIHRoaXMuY29uZmlnPy5wYWdlVHlwZUNvbmZpZz8uY2FuY2VsICE9PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLmhhbmRsZUNhbmNlbEFjdGlvbldpdGhGb3JtQ2hhbmdlcygpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJyAmJiB0aGlzLmNvbmZpZz8ucGFnZVR5cGVDb25maWc/LnNhdmVEcmFmdCAhPT0gdW5kZWZpbmVkKVxuICAgICAgdGhpcy5pbml0U2F2ZURyYWZ0Rm9vdGVyQWN0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdpbnNwZWN0JylcbiAgICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JFxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoaXNWaWV3b25seSA9PlxuICAgICAgICAgIHRoaXMudXBkYXRlSW5zcGVjdFBhZ2VPcGVyYXRpb25Nb2RlKFxuICAgICAgICAgICAgdGhpcy5jb25maWcucGFnZVR5cGVDb25maWcgYXMgUWRQYWdlVHlwZUluc3BlY3RDb25maWcsXG4gICAgICAgICAgICBpc1ZpZXdvbmx5ID8gJ3ZpZXcnIDogJ2VkaXQnXG4gICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgdGhpcy5zZXR1cFBhZ2VEaWFsb2dDbG9zZUNvbnRyYWN0KCk7XG4gICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZiAmJiB0aGlzLmRpYWxvZy5jbGVhclBhZ2VEaWFsb2dDYW5DbG9zZSh0aGlzLmRpYWxvZ1JlZik7XG4gICAgdGhpcy5ib3R0b21PZmZzZXQkPy5uZXh0KDApO1xuICAgIHRoaXMuX2Rlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDb25maWdWYWxpZGl0eSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSBjb25zb2xlLndhcm4oJ1FkVWkgfCBRZFBhZ2VDb21wb25lbnQgLSBUbyBjb25maWd1cmUgdGhlIHBhZ2UgeW91IHNob3VsZCBwcm92aWRlIGEgdmFsaWQgY29uZmlnLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENyZWF0ZVBhZ2VGb290ZXJBY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2VUeXBlQ29uZmlnID0gdGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWc7XG4gICAgY29uc3QgYWN0aW9uS2V5czogUWRDcmVhdGVGb290ZXJBY3Rpb25LZXlbXSA9IFsnc2F2ZURyYWZ0JywgJ2NhbmNlbCcsICdzdWJtaXQnXTtcbiAgICBjb25zdCBhY3Rpb25zOiBQYXJ0aWFsRm9vdGVyQWN0aW9uW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgYWN0aW9uS2V5IG9mIGFjdGlvbktleXMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHBhZ2VUeXBlQ29uZmlnW2FjdGlvbktleV07XG5cbiAgICAgIGlmICghYWN0aW9uKSBjb250aW51ZTtcblxuICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgYWN0aW9uS2V5LFxuICAgICAgICBwYXJ0aWFsQWN0aW9uOiB7XG4gICAgICAgICAgLi4uKGFjdGlvbj8ubGFiZWw/LmkxOG4gPyB7IHRpdGxlSTE4bjogYWN0aW9uLmxhYmVsLmkxOG4gfSA6IHt9KSxcbiAgICAgICAgICBoYW5kbGVyOiB0aGlzLmdlbmVyYXRlRm9vdGVyQWN0aW9uSGFuZGxlcihhY3Rpb24/LmhhbmRsZXIpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKGFjdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDYW5jZWxBY3Rpb25XaXRoRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25LZXk6ICdjYW5jZWwnLFxuICAgICAgICAgICAgcGFydGlhbEFjdGlvbjoge1xuICAgICAgICAgICAgICBoYW5kbGVyOiBoYXNDaGFuZ2VkXG4gICAgICAgICAgICAgICAgPyAoKTogdm9pZCA9PiB0aGlzLnNldHVwU3VibWl0QWN0aW9uVmFsaWRhdGlvbigpXG4gICAgICAgICAgICAgICAgOiAoKTogdm9pZCA9PiAodGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWcpPy5jYW5jZWw/LmhhbmRsZXIoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNhdmVEcmFmdEZvb3RlckFjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlVHlwZUNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWc7XG5cbiAgICB0aGlzLmZvb3RlclNlcnZpY2Uuc2V0QWN0aW9ucyhbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NhdmVEcmFmdCcsXG4gICAgICAgIGFjdGlvbjoge1xuICAgICAgICAgIHRpdGxlSTE4bjogcGFnZVR5cGVDb25maWcuc2F2ZURyYWZ0Py5sYWJlbD8uaTE4biA/PyAnaTE4bi5xZC5wYWdlLmZvb3Rlci5zYXZlRHJhZnQnLFxuICAgICAgICAgIHR5cGU6IFFkRm9vdGVyQWN0aW9uVHlwZS5TZWNvbmRhcnksXG4gICAgICAgICAgaGFuZGxlcjogKCk6IHZvaWQgPT4gcGFnZVR5cGVDb25maWc/LnNhdmVEcmFmdD8uaGFuZGxlcigpLFxuICAgICAgICAgIGlzVmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUluc3BlY3RQYWdlT3BlcmF0aW9uTW9kZShwYWdlVHlwZUNvbmZpZzogUWRQYWdlVHlwZUluc3BlY3RDb25maWcsIG1vZGU6IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnN1Ym1pdEFjdGlvblNlcnZpY2Uuc2V0U3VibWl0QWN0aW9uRm9ySW5zcGVjdChwYWdlVHlwZUNvbmZpZywgbW9kZSA9PT0gJ3ZpZXcnKTtcblxuICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgIHsgYWN0aW9uS2V5OiAnc3VibWl0JywgcGFydGlhbEFjdGlvbjogeyBpc1Zpc2libGU6IG1vZGUgPT09ICd2aWV3JyAmJiAhcGFnZVR5cGVDb25maWc/LnN1Ym1pdD8uaXNIaWRkZW4gfSB9XG4gICAgXSk7XG5cbiAgICB0aGlzLmluaXRTdWJtaXRWYWxpZGF0aW9uKCk7XG5cbiAgICBpZiAodGhpcy5faXNJbml0aWFsaXplZCkgdGhpcy5vcGVyYXRpb25Nb2RlQ2hhbmdlZC5lbWl0KG1vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvb3RlckFjdGlvbkhhbmRsZXIoaGFuZGxlcj86ICh2YWx1ZXM6IHVua25vd24pID0+IHZvaWQpOiAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmICghaGFuZGxlcikgcmV0dXJuO1xuXG4gICAgICBoYW5kbGVyKHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuaGFzRm9ybUdyb3VwcygpID8gdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS5nZXRBbGxWYWx1ZXMoKSA6IGFyZ3MpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldHVwU3VibWl0QWN0aW9uVmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1xuICAgICAgLm9wZW4oUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnFkLnBhZ2UuY2FuY2VsLmNvbmZpcm1hdGlvbi5kaWFsb2cudGl0bGUnIH0sXG4gICAgICAgIGRpYWxvZ1NpemU6IFFkRGlhbG9nU2l6ZS5TbWFsbCxcbiAgICAgICAgZGF0YTogdGhpcy5jb25maWcucGFnZVR5cGVDb25maWdcbiAgICAgIH0pXG4gICAgICAuY2xvc2VkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0U3VibWl0VmFsaWRhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlXG4gICAgICAuJGFyZUZvcm1Hcm91cHNWYWxpZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpLFxuICAgICAgICB0YXAoaXNWYWxpZCA9PiB7XG4gICAgICAgICAgY29uc3Qgc3VibWl0RGlzYWJsZWRJbmZvVGV4dCA9XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnID8gdGhpcy5jb25maWcucGFnZVR5cGVDb25maWc/LnN1Ym1pdD8uZGlzYWJsZWRJbmZvIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgdGhpcy5mb290ZXJTZXJ2aWNlLnVwZGF0ZUFjdGlvbnMoW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhY3Rpb25LZXk6ICdzdWJtaXQnLFxuICAgICAgICAgICAgICBwYXJ0aWFsQWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgYWRkaXRpb25hbEluZm86IGlzVmFsaWRcbiAgICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICBpbmZvVHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHN1Ym1pdERpc2FibGVkSW5mb1RleHQgPz8geyBpMThuOiAnaTE4bi5xZC5wYWdlLnN1Ym1pdC5pbnZhbGlkRm9ybScgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBQYWdlRGlhbG9nQ2xvc2VDb250cmFjdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlhbG9nUmVmKSByZXR1cm47XG5cbiAgICBjb25zdCBkaWFsb2dTaXplID0gKHRoaXMuZGlhbG9nUmVmLmNvbmZpZyBhcyB1bmtub3duIGFzIHsgZGlhbG9nU2l6ZT86IFFkRGlhbG9nU2l6ZSB9KS5kaWFsb2dTaXplO1xuICAgIGlmIChkaWFsb2dTaXplICE9PSBRZERpYWxvZ1NpemUuRnVsbFdpZHRoKSByZXR1cm47XG5cbiAgICB0aGlzLmRpYWxvZy5zZXRQYWdlRGlhbG9nQ2FuQ2xvc2UoXG4gICAgICAoKSA9PlxuICAgICAgICB0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLiRoYXNWYWx1ZXNDaGFuZ2VkKCkucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIG1hcChoYXNDaGFuZ2VzID0+ICh7XG4gICAgICAgICAgICBjYW5DbG9zZTogIWhhc0NoYW5nZXMsXG4gICAgICAgICAgICBoYXNDaGFuZ2VzLFxuICAgICAgICAgICAgY2F1c2U6IGhhc0NoYW5nZXMgPyAnVU5TQVZFRF9DSEFOR0VTJyA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0pKVxuICAgICAgICApLFxuICAgICAgdGhpcy5kaWFsb2dSZWZcbiAgICApO1xuICB9XG59XG4iLCI8bWFpbiBxZFNuYWNrYmFyTGlzdGVuZXI+XG4gIDxxZC1wYWdlLW9iamVjdC1oZWFkZXJcbiAgICBbZGF0YS10ZXN0LWlkXT1cInRlc3RJZFwiXG4gICAgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICdvYmplY3QtaGVhZGVyJ1wiXG4gICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgIFtoYXNOYXZpZ2F0aW9uXT1cImhhc05hdmlnYXRpb25cIlxuICA+PC9xZC1wYWdlLW9iamVjdC1oZWFkZXI+XG5cbiAgPGRpdiBjbGFzcz1cInBhZ2UtaW5mby1iYW5uZXJzXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicWQtcGFnZS1pbmZvLWJhbm5lclwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZScgfHwgY29uZmlnLnBhZ2VUeXBlID09PSAnY3VzdG9tJ1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInFkLXBhZ2Utc3RlcHBlclwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcWRQYWdlU3RlcHBlckFkYXB0ZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnBhZ2VUeXBlID09PSAnb3ZlcnZpZXcnIHx8IGNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnIHx8IGNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSdcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJxZC1wYWdlLXRhYnNcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3FkUGFnZVRhYnNBZGFwdGVyXVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJxZC1zZWN0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltxZFNlY3Rpb25BZGFwdGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvamVjdGVkQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbWFpbj5cblxuPGZvb3RlciAqbmdJZj1cImZvb3Rlckhhc0NvbnRlbnQkIHwgYXN5bmNcIj5cbiAgPHFkLXBhZ2UtZm9vdGVyIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWZvb3RlcidcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcWRQYWdlRm9vdGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9xZC1wYWdlLWZvb3Rlcj5cbjwvZm9vdGVyPlxuXG48YXNpZGUgKm5nSWY9XCJpc0NvbnRyb2xQYW5lbFZpc2libGVcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicWQtcGFnZS1jb250cm9sLXBhbmVsXCI+PC9uZy1jb250ZW50PlxuPC9hc2lkZT5cblxuPHFkLXByb2plY3Rpb24tZ3VhcmQgKm5nSWY9XCJjb25maWcucGFnZVR5cGUgIT09ICdjdXN0b20nXCIgW3dhcm5pbmdNZXNzYWdlXT1cInByb2plY3Rpb25HdWFyZE1lc3NhZ2VcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb2plY3RlZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbjwvcWQtcHJvamVjdGlvbi1ndWFyZD5cblxuPG5nLXRlbXBsYXRlICNwcm9qZWN0ZWRDb250ZW50PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
675
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDakksT0FBTyxFQUFFLDJCQUEyQixF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LEVBQUUsSUFBSSxFQUFFO2dCQUkzRCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUl4RCx1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUlsRSxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUkvRCxXQUFXO3NCQURWLGVBQWU7dUJBQUMseUJBQXlCO2dCQXlCdEMsYUFBYTtzQkFEaEIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBTTNCLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFFEX1NBRkVfQk9UVE9NX09GRlNFVCB9IGZyb20gJy4uL2NvcmUvY29yZS5tb2R1bGUnO1xuaW1wb3J0IHsgUWREaWFsb2dTZXJ2aWNlLCBRZERpYWxvZ1NpemUgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdGVwcGVyQWRhcHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL3BhZ2Utc3RlcHBlci9hZGFwdG9ycy9wYWdlLXN0ZXBwZXItYWRhcHRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUWRQYWdlU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2Utc3RlcHBlci9wYWdlLXN0ZXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFFkUGFnZVRhYnNBZGFwdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vcGFnZS10YWJzL2FkYXB0b3JzL3BhZ2UtdGFicy1hZGFwdGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBRZFBhZ2VUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFnZS10YWJzL3BhZ2UtdGFicy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VjdGlvbi9zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VDYW5jZWxDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nL3BhZ2UtY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFFkUGFnZUNvbnRyb2xQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vY29udHJvbC1wYW5lbC9wYWdlLWNvbnRyb2wtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFFkUGFnZUluZm9CYW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2luZm8tYmFubmVyL3BhZ2UtaW5mby1iYW5uZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIFFkSW5zcGVjdE9wZXJhdGlvbk1vZGUsXG4gIFFkUGFnZUNvbmZpZyxcbiAgUWRQYWdlVHlwZUNyZWF0ZUNvbmZpZyxcbiAgUWRQYWdlVHlwZUluc3BlY3RDb25maWdcbn0gZnJvbSAnLi9tb2RlbC9wYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRDcmVhdGVGb290ZXJBY3Rpb25LZXksIFFkRm9vdGVyQWN0aW9uVHlwZSwgUWRQYWdlRm9vdGVyQWN0aW9uIH0gZnJvbSAnLi9tb2RlbC9wYWdlLWZvb3Rlci1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9mb3JtLWdyb3VwLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VGb290ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvcGFnZS1mb290ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdG9yZVNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9wYWdlLXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3VibWl0QWN0aW9uU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3VibWl0LWFjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL3Jlc29sdmVyLXRyaWdnZXIuc2VydmljZSc7XG5cbnR5cGUgUGFydGlhbEZvb3RlckFjdGlvbiA9IHsgYWN0aW9uS2V5OiBRZENyZWF0ZUZvb3RlckFjdGlvbktleTsgcGFydGlhbEFjdGlvbjogUGFydGlhbDxRZFBhZ2VGb290ZXJBY3Rpb24+IH07XG5cbi8vIEZvb3RlciBvZmZzZXQgKHB4KS4gS2VlcCBpbiBzeW5jIHdpdGggU0NTUyAkcGFnZS1mb290ZXItaGVpZ2h0IVxuY29uc3QgU0FGRV9CT1RUT01fT0ZGU0VUX1BYID0gNjQ7XG5cbi8qKlxuICogKipRZFBhZ2UqKiBzZXJ2ZXMgYXMgdGhlIGNlbnRyYWwgc3RydWN0dXJhbCBlbGVtZW50IHdpdGhpbiB0aGUgaGllcmFyY2h5IHVuZGVyIHRoZSAqKlFkU2hlbGwqKi5cbiAqIEludGVncmF0aW9uIGlzIGRvbmUgdGhyb3VnaCB0aGUgQW5ndWxhciBSb3V0aW5nIE1vZHVsZSwgYW5kIFFkUGFnZSBpcyBkZXNpZ25lZCB0byBiZSByZXNwb25zaXZlIGFjcm9zcyB2YXJpb3VzIHNjcmVlbiBzaXplcyByaWdodCBvdXQgb2YgdGhlIGJveC5cbiAqXG4gKiAjIyMjICoqUGFnZSBUeXBlcyoqXG4gKlxuICogUWRQYWdlIHVzZXMgcGFnZSB0eXBlcyB0byBkZWNpZGUgaG93IHRoZSBwYWdlIGxvb2tzIGFuZCB3b3Jrcy4gRWFjaCBwYWdlIHR5cGUgaGFzIGl0cyBvd24gc2V0dGluZ3MgYW5kIGFjdGlvbnMuXG4gKlxuICogLSAqKm92ZXJ2aWV3Kio6IERpc3BsYXlzIGEgc3VtbWFyeSBvciBhIGxpc3Qgb2Ygb2JqZWN0cywgcHJvdmlkaW5nIGFuIG92ZXJ2aWV3IG9mIG11bHRpcGxlIGJ1c2luZXNzIGNhc2VzLlxuICogLSAqKmNyZWF0ZSoqOiBBbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IG9iamVjdCwgcmVwcmVzZW50aW5nIGEgYnVzaW5lc3MgY2FzZS5cbiAqIC0gKippbnNwZWN0Kio6IEVuYWJsZXMgdmlld2luZywgZWRpdGluZywgYW5kIGV4ZWN1dGluZyBhZGRpdGlvbmFsIGFjdGlvbnMgcmVsYXRlZCB0byB0aGUgb2JqZWN0LCB3aGljaCBhbHNvIHJlcHJlc2VudHMgYSBidXNpbmVzcyBjYXNlLlxuICogLSAqKmN1c3RvbSoqOiBQcm92aWRlcyBhIHdheSB0byBpbXBsZW1lbnQgdW5pcXVlIGZ1bmN0aW9uYWxpdHkgdGhhdCBkb2VzbuKAmXQgZml0IHRoZSBvdGhlciBwcmVkZWZpbmVkIHBhZ2UgdHlwZXMuXG4gKlxuICogKipOb3RlIHRoYXQgdGhlICdjdXN0b20nIHBhZ2UgdHlwZSBzaG91bGQgYmUgdXNlZCBvbmx5IGFzIGEgZmFsbGJhY2sgZm9yIHZlcnkgc3BlY2lmaWMgY2FzZXMuIElmIHlvdSBlbmNvdW50ZXIgc3VjaCBhIHNpdHVhdGlvbiwgcGxlYXNlIGNvbnRhY3QgdGhlIFF1YWRyZWwgdGVhbS4qKlxuICpcbiAqICMjIyMgKipGYWNldHMqKlxuICpcbiAqIFRoZXNlIGFyZSBleHRyYSBwaWVjZXMgb2YgaW5mb3JtYXRpb24gc2hvd24gaW4gdGhlIHBhZ2UgaGVhZGVyLiBUaGV5IGdpdmUgY29udGV4dCBzcGVjaWZpYyB0byB0aGUgY3VycmVudCBvYmplY3QgbW9kZWwgYmVpbmcgdmlld2VkIG9yIGVkaXRlZC4gVGhlcmUgYXJlIHNldmVyYWwgdHlwZXMgb2YgZmFjZXRzLCBpbmNsdWRpbmcgYHN0YXR1c2AsIGB2YWx1ZWAsIGBjcml0aWNhbGl0eWAsIGByZWZlcmVuY2VzYCwgYHByb2dyZXNzYCwgYGRhdGVgLCBgc2luZ2xlU2VsZWN0YCwgYW5kIGBtdWx0aVNlbGVjdGAuIEVhY2ggdHlwZSBoYXMgaXRzIG93biBvcHRpb25zLiBGb3IgbW9yZSBkZXRhaWxzLCBzZWUgdGhlIGBRZFBhZ2VIZWFkZXJGYWNldGAgaW50ZXJmYWNlLlxuICpcbiAqICMjIyMgKipDb250ZXh0KipcbiAqXG4gKiBUaGUgYGNvbnRleHRgIGFjdHMgYXMgYSBmaWx0ZXIgdGhhdCBjYW4gYmUgc2VsZWN0ZWQgb24gdGhlIG92ZXJ2aWV3IHBhZ2UgYW5kIHByb3ZpZGVzIHRoZSBidXNpbmVzcyBjb250ZXh0LCB3aGljaCByZW1haW5zIGNvbnNpc3RlbnQgdGhyb3VnaG91dCB0aGUgZW50aXJlIGFwcGxpY2F0aW9uLiBPbiBjcmVhdGUgYW5kIGluc3BlY3QgcGFnZXMsIHRoZSBjb250ZXh0IGlzIGRpc3BsYXllZCBhcyByZWFkLW9ubHkuIEZvciBtb3JlIGRldGFpbHMsIGNoZWNrIHRoZSBkZWRpY2F0ZWQgY2hhcHRlciBpbiBTdG9yeWJvb2suXG4gKlxuICpcbiAqICMjIyMgKipQYWdlIEluZm8gQmFubmVycyoqXG4gKlxuICogVG8gaW5zZXJ0IGEgcGFnZSBpbmZvIGJhbm5lciB1bmRlciB0aGUgcGFnZSBoZWFkZXIsIGp1c3QgcHV0IGEgYHFkLXBhZ2UtaW5mby1iYW5uZXJgIGNvbXBvbmVudCBpbnNpZGUgdGhlIGBxZC1wYWdlYC4gTXVsdGlwbGUgY29uc2VjdXRpdmUgaW5mbyBiYW5uZXJzIG9mIHRoZSBzYW1lIHR5cGUgd2lsbCBiZSBtZXJnZWQgaW50byBvbmUgYmFubmVyIGNvbnRhaW5lci4gUGFnZSBpbmZvIGJhbm5lcnMgaGF2ZSB0aGUgc2FtZSBhcHBlYXJhbmNlIGxpa2Ugbm90aWZpY2F0aW9ucy5cbiAqXG4gKiAjIyMjICoqQ29udHJvbCBQYW5lbCoqXG4gKlxuICogVGhlIGNvbnRyb2wgcGFuZWwgaXMgbG9jYXRlZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgcGFnZSBhbmQgaXMgdXNlZCB0byBkaXNwbGF5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYW5kIGZ1bmN0aW9ucyByZWxldmFudCB0byBhIHNwZWNpZmljIGJ1c2luZXNzIGNhc2UsIHdoaWNoIGlzIGxpbmtlZCB0byBhIHNwZWNpZmljIG9iamVjdCBtb2RlbC4gRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHBsZWFzZSBjb25zdWx0IHRoZSBkZWRpY2F0ZWQgY2hhcHRlciBpbiBTdG9yeWJvb2suXG4gKlxuICogIyMjIyAqKkFjdGlvbnMqKlxuICpcbiAqIFRoZXNlIGFyZSBpbnRlcmFjdGl2ZSBlbGVtZW50cyB0aGF0IHBlcmZvcm0gc3BlY2lmaWMgZnVuY3Rpb25zLiBGdW5jdGlvbnMgZm9yIHRoZXNlIGFjdGlvbnMgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ3VyYXRpb25zLiBDdXN0b20gYWN0aW9ucyBjYW4gYmUgYWRkZWQgdG8gYW55IHBhZ2UgdHlwZS4gQWRkaXRpb25hbGx5LCBhbGwgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZCBhbmQgY3VzdG9taXplZCB3aXRoIHlvdXIgb3duIHRleHQsIHdoaWNoIHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdGV4dHMuXG4gKlxuICogUGxlYXNlIGNoZWNrIHRoZSByZWxldmFudCBpbnRlcmZhY2VzIGZvciBlYWNoIHBhZ2UgdHlwZTogYFFkUGFnZUNvbmZpZ092ZXJ2aWV3YCwgYFFkUGFnZUNvbmZpZ0NyZWF0ZWAsIGBRZFBhZ2VDb25maWdJbnNwZWN0YCwgYW5kIGBRZFBhZ2VDb25maWdDdXN0b21gLlxuICpcbiAqICMjIyMgKipWYWxpZGF0aW9uL1BhcmFtZXRlcml6YXRpb24qKlxuICpcbiAqIFZhbGlkYXRpb24gYW5kIHBhcmFtZXRlcml6YXRpb24gYXJlIGNvdmVyZWQgaW4gYSBkZWRpY2F0ZWQgY2hhcHRlciBpbiB0aGUgU3Rvcnlib29rLiBQbGVhc2UgY2hlY2sgdGhlIFwiVmFsaWRhdGlvblwiIHNlY3Rpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogIyMjIyAqKlJlc29sdmVyKipcbiAqXG4gKiBVc2luZyBhIHJlc29sdmVyIHRvIGZldGNoIHBhZ2Ugb2JqZWN0IGRhdGEgaXMgZXNzZW50aWFsIHRvIHRoZSBwYWdlIGNvbmNlcHQuIEFkZCB0aGUgcmVzb2x2ZXIgdG8gdGhlIGNvbXBvbmVudCdzIHByb3ZpZGVycyBhbmQgdXNlIHRoZSBgUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU5gIHRva2VuLiBUaGlzIGFwcHJvYWNoIGVuYWJsZXMgdHlwZSBzYWZldHkgYW5kIHVzZXIgZmVlZGJhY2sgYnkgZWZmZWN0aXZlbHkgbWFuYWdpbmcgdGhlIG5lY2Vzc2FyeSBkYXRhIGZvciB0aGUgcGFnZS5cbiAqXG4gKiBgYGB0c1xuICogaW50ZXJmYWNlIE15T2JqZWN0TW9kZWwge1xuICogICAvLyBNZXRhZGF0YSBkaXNwbGF5ZWQgaW4gdGhlIE9iamVjdEhlYWRlclxuICogICBzdGF0ZTogTXlTdGF0ZTtcbiAqICAgY291bnRyeU9mRGVzdGluYXRpb246IE15Q291bnRyeU9mRGVzdGluYXRpb247XG4gKiAgIC8vIEFwcGVhcnMgbm90IGluIHRoZSBPYmplY3RIZWFkZXJcbiAqICAgcGF5bG9hZDogTXlQYXlsb2FkO1xuICogfVxuICpcbiAqIHR5cGUgTXlPYmplY3RNZXRhZGF0YSA9ICdzdGF0ZScgfCAnY291bnRyeU9mRGVzdGluYXRpb24nO1xuICpcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIE15T2JqZWN0TW9kZWxSZXNvbHZlciBpbXBsZW1lbnRzIFFkUGFnZU9iamVjdFJlc29sdmVyPE15T2JqZWN0TW9kZWw+IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuICpcbiAqICAgcmVzb2x2ZSgpOiBPYnNlcnZhYmxlPE15T2JqZWN0TW9kZWw+IHtcbiAqICAgICByZXR1cm4gdGhpcy5odHRwXG4gKiAgICAgICAuZ2V0PE15T2JqZWN0TW9kZWw+KCdteS1hcGknKVxuICogICAgICAgLnBpcGUodGFwKChkYXRhOiBNeU9iamVjdE1vZGVsKSA9PiBkb1NvbWV0aGluZ1dpdGgoZGF0YSkpKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ215LXBhZ2UnLFxuICogICB0ZW1wbGF0ZVVybDogJy4vbXktcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHtcbiAqICAgICAgIHByb3ZpZGU6IFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOLFxuICogICAgICAgdXNlQ2xhc3M6IE15T2JqZWN0TW9kZWxSZXNvbHZlclxuICogICAgIH1cbiAqICAgXVxuICogfSlcbiAqIGNsYXNzIE15UGFnZUNvbXBvbmVudCB7XG4gKiAgIHBhZ2VDb25maWc6IFFkUGFnZUNvbmZpZzxQaWNrPE15T2JqZWN0TW9kZWwsIE15T2JqZWN0TWV0YWRhdGE+PiA9IHtcbiAqICAgICB0aXRsZTogeyBpMThuOiAnaTE4bi5wYWdlLnRpdGxlJyB9LFxuICogICAgIHBhZ2VUeXBlOiAnaW5zcGVjdCcsXG4gKiAgICAgaGVhZGVyRmFjZXRzOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIG5hbWU6ICdzdGF0dXMnLFxuICogICAgICAgICBsYWJlbDoge1xuICogICAgICAgICAgIGkxOG46ICdpMThuLnN0YXR1cy5sYWJlbCdcbiAqICAgICAgICAgfSxcbiAqICAgICAgICAgb3B0aW9uczoge1xuICogICAgICAgICAgIHR5cGU6ICdzdGF0dXMnXG4gKiAgICAgICAgIH1cbiAqICAgICAgIH0sXG4gKiAgICAgICB7XG4gKiAgICAgICAgIG5hbWU6ICdjb3VudHJ5T2ZEZXN0aW5hdGlvbicsXG4gKiAgICAgICAgIGxhYmVsOiB7XG4gKiAgICAgICAgICAgaTE4bjogJ2kxOG4uY291bnRyeU9mRGVzdGluYXRpb24ubGFiZWwnXG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIG9wdGlvbnM6IHtcbiAqICAgICAgICAgICB0eXBlOiAndmFsdWUnXG4gKiAgICAgICAgIH1cbiAqICAgICAgIH1cbiAqICAgICBdLFxuICogICAgIHBhZ2VUeXBlQ29uZmlnOiB7XG4gKiAgICAgICBjYW5jZWw6IHtcbiAqICAgICAgICAgaGFuZGxlcjogKCkgPT4gaGFuZGxlQ2FuY2VsKClcbiAqICAgICAgIH0sXG4gKiAgICAgICBzYXZlOiB7XG4gKiAgICAgICAgIGhhbmRsZXI6IChmb3JtVmFsdWVzKSA9PiBoYW5kbGVTYXZlKGZvcm1WYWx1ZXMpXG4gKiAgICAgICB9XG4gKiAgICAgfVxuICogICB9O1xuICogfVxuICogYGBgXG4gKlxuICogIyMjIyAqKlVwZGF0aW5nIEZhY2V0cyoqXG4gKlxuICogVHlwaWNhbGx5LCB0aGUgdmFsdWVzIG9mIHRoZSBmYWNldHMgb24gYSBjcmVhdGUgb3IgaW5zcGVjdCBwYWdlIGFyZSBzZXQgdG8gcmVhZC1vbmx5LiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgY2FzZXMgd2hlcmUsIGZvciBleGFtcGxlLCBhIHN0YXR1cyBjaGFuZ2UgaXMgbmVlZGVkLCBzdWNoIGFzIHRocm91Z2ggYSBkaWFsb2cuIEZvciB0aGlzIHB1cnBvc2UsIHdlIGhhdmUgcHJvdmlkZWQgYW4gdXBkYXRlIG1ldGhvZC4gSW4gdGhlIHJlc29sdmVyIHNlcnZpY2UsIGRlZmluZSBhbiBlbXB0eSBtZXRob2QgY2FsbGVkIGB1cGRhdGVNZXRhZGF0YWAuIEluamVjdCB0aGlzIHNlcnZpY2UgdXNpbmcgaXRzIHR5cGUsIGFuZCB0aGVuIGNhbGwgdGhlIGB1cGRhdGVNZXRhZGF0YWAgbWV0aG9kIHdpdGggdGhlIHJlcXVpcmVkIHBhcmFtZXRlci5cbiAqXG4gKiAqKlBsZWFzZSBub3RlOiBUaGVzZSB2YWx1ZXMgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCBkaXJlY3RseSB3aXRoaW4gYSBRZFBhZ2UuKipcbiAqXG4gKiBgYGB0c1xuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgTXlPYmplY3RNb2RlbFJlc29sdmVyIGltcGxlbWVudHMgUWRQYWdlT2JqZWN0UmVzb2x2ZXI8TXlPYmplY3RNb2RlbD4ge1xuICogICBjb25maWc6IFFkUGFnZU9iamVjdFJlc29sdmVyQ29uZmlnID0ge1xuICogICAgIC8vIHlvdXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGhlcmVcbiAqICAgfVxuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuICpcbiAqICAgcmVzb2x2ZSgpOiBPYnNlcnZhYmxlPE15T2JqZWN0TW9kZWw+IHtcbiAqICAgICAvLyB5b3VyIGltcGxlbWVudGF0aW9uIGhlcmVcbiAqICAgfVxuICpcbiAqICAgdXBkYXRlTWV0YWRhdGEobWV0YWRhdGE6IFBhcnRpYWw8TXlPYmplY3RNb2RlbD4pIHtcbiAqICAgICAvLyBsZWF2ZSBlbXB0eSBoZXJlICYgY2FsbCBpbiB5b3VyIGNvbXBvbmVudFxuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIC8vIC4uLlxuICogICBwcm92aWRlcnM6IFtcbiAqICAgICB7XG4gKiAgICAgICBwcm92aWRlOiBRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTixcbiAqICAgICAgIHVzZUNsYXNzOiBNeU9iamVjdE1vZGVsUmVzb2x2ZXJcbiAqICAgICB9XG4gKiAgIF1cbiAqIH0pXG4gKiBjbGFzcyBNeVBhZ2VDb21wb25lbnQge1xuICogICBjb25zdHJ1Y3RvcihASW5qZWN0KFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOKSBwcml2YXRlIG9iamVjdFJlc29sdmVyOiBNeU9iamVjdE1vZGVsUmVzb2x2ZXIpIHt9XG4gKlxuICogICB1cGRhdGVTdGF0dXMoKSB7XG4gKiAgICAgdGhpcy5vYmplY3RSZXNvbHZlci51cGRhdGVNZXRhZGF0YSh7IHN0YXRlOiAnVXBkYXRlZCcgfSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyMgKipPdmVydmlldyBQYWdlKipcbiAqXG4gKiBPbiBhbiBvdmVydmlldyBwYWdlLCBhIGxpc3Qgb2YgYnVzaW5lc3MgY2FzZXMgY2FuIGJlIGRpc3BsYXllZC4gVHlwaWNhbGx5LCB0aGlzIGlzIGRvbmUgaW4gYSAqKlFkVGFibGUqKiwgaW5jbHVkaW5nIGZpbHRlcnMgYW5kL29yIHNlYXJjaCBvcHRpb25zLiBUaGVyZSBhcmUgYWN0aW9ucyB0aGF0IGhhbmRsZSByb3V0aW5nIHRvIHRoZSByZWxhdGVkIGRldGFpbCBwYWdlcywgd2hlcmUgdGhlIGJ1c2luZXNzIGNhc2VzLCByZXByZXNlbnRlZCBieSBhIGJ1c2luZXNzIG9iamVjdCBtb2RlbCwgY2FuIGJlIHZpZXdlZCwgZWRpdGVkLCBvciBuZXdseSBjcmVhdGVkLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBvdmVydmlld1BhZ2VDb25maWc6IFFkUGFnZUNvbmZpZzxNeU9iamVjdFR5cGU+ID0ge1xuICogICB0aXRsZTogeyBpMThuOiAnaTE4bi5teS1wYWdlLnRpdGxlJyB9LFxuICogICBwYWdlVHlwZTogJ292ZXJ2aWV3JyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBjdXN0b21BY3Rpb25zOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIGkxOG46ICdpMThuLmN1c3RvbS5hY3Rpb24nLFxuICogICAgICAgICBoYW5kbGVyOiAoKSA9PiBkb1NvbWV0aGluZygpXG4gKiAgICAgICB9XG4gKiAgICAgXVxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgIDxxZC10YWJsZSBbY29uZmlnXT1cInRhYmxlQ29uZmlnXCI+PC9xZC10YWJsZT5cbiAqICAgPC9xZC1zZWN0aW9uPlxuICogPC9xZC1wYWdlPlxuICogYGBgXG4gKlxuICogVG8gY29uZmlndXJlIGNvbnRleHRzIGZvciBhIHBhZ2UsIHlvdSBjYW4gZWFzaWx5IHNldCBjb250ZXh0cyBpbiB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIG92ZXJ2aWV3IHBhZ2UuIFRoZXkgYXJlIHRoZW4gc2VsZWN0YWJsZSBvbiB0aGUgb3ZlcnZpZXcgcGFnZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgb3ZlcnZpZXdQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgLy8gLi4uXG4gKiAgIGNvbnRleHRzOiBbXG4gKiAgICAge1xuICogICAgICAgaWQ6ICd0eXBlT2ZUcmFmZmljJyxcbiAqICAgICAgIGxhYmVsOiB7IGkxOG46ICdWZXJrZWhyc2FydCcgfSxcbiAqICAgICAgIHR5cGU6ICdzaW5nbGUnLFxuICogICAgICAgc2VsZWN0ZWQ6IHtcbiAqICAgICAgICAgbGFiZWw6IHsgaTE4bjogJ1NjaGllbmUnIH0sXG4gKiAgICAgICAgIHZhbHVlOiAncmFpbCdcbiAqICAgICAgIH0sXG4gKiAgICAgICBvcHRpb25zOiBbXG4gKiAgICAgICAgIHtcbiAqICAgICAgICAgICB2YWx1ZTogJ3JhaWwnLFxuICogICAgICAgICAgIGxhYmVsOiB7IGkxOG46ICdTY2hpZW5lJyB9XG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIHtcbiAqICAgICAgICAgICB2YWx1ZTogJ2FpcicsXG4gKiAgICAgICAgICAgbGFiZWw6IHsgaTE4bjogJ0x1ZnQnIH1cbiAqICAgICAgICAgfVxuICogICAgICAgXVxuICogICAgIH1cbiAqICAgXVxuICogICAvLyAuLi5cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiAjIyMjICoqQ3JlYXRlIFBhZ2UqKlxuICpcbiAqIE9uIHRoZSBjcmVhdGUgcGFnZSwgYSBuZXcgYnVzaW5lc3MgY2FzZSBjYW4gYmUgY3JlYXRlZC4gVGhpcyBwYWdlIHR5cGljYWxseSBpbmNsdWRlcyBmb3JtcyBmb3IgZW50ZXJpbmcgZGF0YS4gVGhlIHN1Ym1pdCBidXR0b24gaXMgcGFyYW1ldGVyaXplZCB3aXRoIHRoZSBmb3JtIGRhdGEgYW5kIGlzIHZhbGlkYXRlZCB0aHJvdWdoIHRoZSBRZFBhZ2VTdGVwcGVyLlxuICogVGhlIGNsaWNrIG9uIHRoZSBzdWJtaXQgYnV0dG9uIHNob3VsZCBzdWJtaXQgdGhlIGNyZWF0aW9uIG9mIHRoZSBidXNpbmVzcyBjYXNlIG9yIG9iamVjdC4gWW91IGNhbiBkZWZpbmUgYSBzcGVjaWZpYyBoYW5kbGVyIGluIHRoZSBzdWJtaXQgYnV0dG9uJ3MgY29uZmlndXJhdGlvbiB0byBjcmVhdGUgdGhlIG9iamVjdC5cbiAqIElmIG9ubHkgb25lIHN0ZXAgaXMgbmVlZGVkLCB0aGUgc2luZ2xlLXN0ZXAgbW9kZSBjYW4gYmUgdXNlZC4gSW4gc2luZ2xlLXN0ZXAgbW9kZSwgdGhlIHN0ZXBwZXIgaXMgdmlzdWFsbHkgaGlkZGVuIGFuZCBiZWhhdmVzIGxpa2UgYSAqKlFkU2VjdGlvbioqLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBjcmVhdGVQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdjcmVhdGUnLFxuICogICBwYWdlVHlwZUNvbmZpZzoge1xuICogICAgIHN1Ym1pdDoge1xuICogICAgICAgaGFuZGxlcjogKGZvcm1WYWx1ZXMpID0+IGhhbmRsZVN1Ym1pdChmb3JtVmFsdWVzKVxuICogICAgIH1cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDwhLS0gRm9yIFwiUXVpY2sgQWRkXCIgdXNlIFBhZ2VTdGVwcGVyIGluIHNpbmdsZS1zdGVwIG1vZGUgLS0+XG4gKiA8cWQtcGFnZSBbY29uZmlnXT1cInBhZ2VDb25maWdcIj5cbiAqICAgPHFkLXBhZ2Utc3RlcHBlciBbY29uZmlnXT1cInN0ZXBwZXJDb25maWdcIj5cbiAqICAgICA8cWQtcGFnZS1zdGVwIFtjb25maWddPVwic3RlcENvbmZpZ09uZVwiPlxuICogICAgICAgPHFkLXNlY3Rpb24gW2NvbmZpZ109XCJzZWN0aW9uQ29uZmlnXCI+XG4gKiAgICAgICAgIDxxZC1ncmlkIFtjb25maWddPVwiZ3JpZENvbmZpZ1wiIFtmb3JtR3JvdXBdPVwibXlGb3Jtc1wiIHFkQ29ubmVjdEZvcm1TdGF0ZVRvUGFnZT1cIm15Rm9ybXNcIj5cbiAqICAgICAgICAgICA8IS0tIHlvdXIgcWQtZm9ybS1jb21wb25lbnRzIGhlcmUgLS0+XG4gKiAgICAgICAgIDwvcWQtZ3JpZD5cbiAqICAgICAgIDwvcWQtc2VjdGlvbj5cbiAqICAgICA8L3FkLXBhZ2Utc3RlcD5cbiAqICAgPC9xZC1wYWdlLXN0ZXBwZXI+XG4gKiA8L3FkLXBhZ2U+XG4gKlxuICogPCEtLSBXaXRoIFBhZ2VTdGVwcGVyIHVzaW5nIG11bHRpcGxlIHN0ZXBzIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1wYWdlLXN0ZXBwZXIgW2NvbmZpZ109XCJzdGVwcGVyQ29uZmlnXCI+XG4gKiAgICAgPHFkLXBhZ2Utc3RlcCBbY29uZmlnXT1cInN0ZXBDb25maWdPbmVcIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNPbmVcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zT25lXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXN0ZXA+XG4gKiAgICAgPHFkLXBhZ2Utc3RlcCBbY29uZmlnXT1cInN0ZXBDb25maWdUd29cIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNUd29cIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zVHdvXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXN0ZXA+XG4gKiAgIDwvcWQtcGFnZS1zdGVwcGVyPlxuICogPC9xZC1wYWdlPlxuICogYGBgXG4gKlxuICogVG8gYWxsb3cgcmVzb2x2aW5nIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIHdoZW4gZ29pbmcgdG8gbmV4dCBzdGVwLCB5b3UgY2FuIHByb3ZpZGUgYSByZXNvbHZlciBvZiB0eXBlIFFkUGFnZVN0ZXBSZXNvbHZlcjpcbiAqXG4gKiBgYGB0c1xuICogY2xhc3MgTXlSZXNvbHZlciBpbXBsZW1lbnRzIFFkUGFnZVN0ZXBSZXNvbHZlciB7XG4gKiAgIC4uLlxuICpcbiAqICAgcmVzb2x2ZShpbmRleDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFwibmV4dC1zdGVwLmNvbVwiKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3FkLXVpLXBhZ2UtY3JlYXRlJyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS5jb21wb25lbnQuaHRtbCcsXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHtcbiAqICAgICAgIHByb3ZpZGU6IFFEX1BBR0VfU1RFUF9SRVNPTFZFUl9UT0tFTixcbiAqICAgICAgIHVzZUNsYXNzOiBQYWdlU3RlcFJlc29sdmVyXG4gKiAgICAgfVxuICogICBdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIENyZWF0ZUNvbXBvbmVudCB7XG4gKiBgYGBcbiAqXG4gKiAjIyMjICoqSW5zcGVjdCBQYWdlKipcbiAqXG4gKiBPbiBhbiBpbnNwZWN0IHBhZ2UsIGEgc3BlY2lmaWMgYnVzaW5lc3MgY2FzZSBpcyBkaXNwbGF5ZWQgYW5kIG1heSBiZSBlZGl0ZWQgb3Igc3VibWl0dGVkLiBEZXBlbmRpbmcgb24geW91ciBuZWVkcyB5b3UgY2FuIGhpZGUgdGhlIHN1Ym1pdCBidXR0b24uXG4gKiBJbiBjb250cmFzdCB0byBhIGNyZWF0ZSBwYWdlLCBhbiBleGlzdGluZyBvYmplY3QgaXMgc2hvd24gYW5kIHBvdGVudGlhbGx5IHVwZGF0ZWQuXG4gKlxuICogVGhlIHBhZ2Ugb3BlcmF0ZXMgaW4gb25lIG9mIHR3byBtb2RlcyAtIGB2aWV3YCBvciBgZWRpdGAgLSBhcyBkZWZpbmVkIGJ5IHRoZSBgb3BlcmF0aW9uTW9kZWAgY29uZmlndXJhdGlvbiBrZXkuXG4gKlxuICogVGhlIGB2aWV3b25seWAgYmVoYXZpb3IgZGVmaW5lZCBieSB0aGUgb3BlcmF0aW9uIG1vZGUgaXMgYXV0b21hdGljYWxseSBwcm9wYWdhdGVkIHRvIGFsbCBuZXN0ZWQgUWRTZWN0aW9uIGNvbXBvbmVudHMgdGhhdCBhcmUgcGFydCBvZiBhIFFMUyxcbiAqIGFzIHdlbGwgYXMgdG8gZnVuY3Rpb25hbCBwYXR0ZXJucyBzdWNoIGFzIFFkVGFibGUsIFFkVHJlZSwgUWRGaWxlQ29sbGVjdG9yLCBhbmQgUWRRdWlja0VkaXQuXG4gKiBBbGwgZm9ybXMgYXJlIHJlbmRlcmVkIGVpdGhlciBpbiB2aWV3b25seSBvciBlZGl0YWJsZSBtb2RlIGFjY29yZGluZ2x5LlxuICpcbiAqIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiBpbiBlYWNoIGNvbXBvbmVudOKAmXMgY29uZmlndXJhdGlvbiAtIGZvciBleGFtcGxlLCB0byBhbGxvdyBjZXJ0YWluIGZpZWxkcyB0byByZW1haW4gZWRpdGFibGUuXG4gKlxuICogLSAqKnZpZXcqKjogQSBzdWJtaXQgYWN0aW9uIGNhbiBvcHRpb25hbGx5IGJlIGFkZGVkIGZvciBwcm9jZXNzLXJlbGF0ZWQgb3BlcmF0aW9ucyBzdWNoIGFzIHN0YXR1cyB1cGRhdGVzLlxuICogICBUaGUgYWN0aW9uIHJlY2VpdmVzIHRoZSBjdXJyZW50IGZvcm0gdmFsdWVzIGFuZCBzdXBwb3J0cyB2YWxpZGF0aW9uIGFuZCBwYXJhbWV0ZXJpemF0aW9uLlxuICpcbiAqIC0gKiplZGl0Kio6IFR5cGljYWxseSBpbmNsdWRlcyBhIHNhdmUgYnV0dG9uIHRvIHBlcnNpc3QgY2hhbmdlcyBtYWRlIGluIGVkaXRhYmxlIGZpZWxkcy5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgaW5zcGVjdFBhZ2VDb25maWc6IFFkUGFnZUNvbmZpZzxNeU9iamVjdFR5cGU+ID0ge1xuICogICB0aXRsZTogeyBpMThuOiAnaTE4bi5wYWdlLnRpdGxlJyB9LFxuICogICBwYWdlVHlwZTogJ2luc3BlY3QnLFxuICogICBwYWdlVHlwZUNvbmZpZzoge1xuICogICAgIG9wZXJhdGlvbk1vZGU6ICdlZGl0JyxcbiAqICAgICBjYW5jZWw6IHtcbiAqICAgICAgIGhhbmRsZXI6ICgpID0+IGhhbmRsZUNhbmNlbCgpXG4gKiAgICAgfSxcbiAqICAgICBzYXZlOiB7XG4gKiAgICAgICBoYW5kbGVyOiAoZm9ybVZhbHVlcykgPT4gaGFuZGxlU2F2ZShmb3JtVmFsdWVzKVxuICogICAgIH1cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDwhLS0gd2l0aCBTZWN0aW9uIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgIDxxZC1ncmlkIFtjb25maWddPVwiZ3JpZENvbmZpZ1wiIFtmb3JtR3JvdXBdPVwibXlGb3Jtc1wiIHFkQ29ubmVjdEZvcm1TdGF0ZVRvUGFnZT1cIm15Rm9ybXNcIj5cbiAqICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICA8L3FkLWdyaWQ+XG4gKiAgIDwvcWQtc2VjdGlvbj5cbiAqIDwvcWQtcGFnZT5cbiAqXG4gKiA8IS0tIHdpdGggUGFnZVRhYnMgLS0+XG4gKiA8cWQtcGFnZSBbY29uZmlnXT1cInBhZ2VDb25maWdcIj5cbiAqICAgPHFkLXBhZ2UtdGFicyBbY29uZmlnXT1cInN0ZXBwZXJDb25maWdcIj5cbiAqICAgICA8cWQtcGFnZS10YWIgW2NvbmZpZ109XCJ0YWJDb25maWdPbmVcIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNPbmVcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zT25lXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXRhYj5cbiAqICAgICA8cWQtcGFnZS10YWIgW2NvbmZpZ109XCJ0YWJDb25maWdUd29cIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNUd29cIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zVHdvXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXRhYj5cbiAqICAgPC9xZC1wYWdlLXRhYnM+XG4gKiA8L3FkLXBhZ2U+XG4gKiBgYGBcbiAqXG4gKiAjIyMjICoqQ3VzdG9tIFBhZ2UqKlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBjdXN0b21QYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdjdXN0b20nLFxuICogICBwYWdlVHlwZUNvbmZpZzoge1xuICogICAgIGN1c3RvbUFjdGlvbnM6IFtcbiAqICAgICAgIHtcbiAqICAgICAgICAgaTE4bjogJ2kxOG4uY3VzdG9tLmFjdGlvbicsXG4gKiAgICAgICAgIGhhbmRsZXI6ICgpID0+IGRvU29tZXRoaW5nKClcbiAqICAgICAgIH1cbiAqICAgICBdXG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8cWQtcGFnZSBbY29uZmlnXT1cInBhZ2VDb25maWdcIj5cbiAqICAgPCEtLSBQbGFjZSBjb250ZW50IGhlcmUgdGhhdCBkb2VzbuKAmXQgZml0IHRoZSBvdGhlciBwYWdlIHR5cGVzIC0tPlxuICogPC9xZC1wYWdlPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbUWRQYWdlRm9vdGVyU2VydmljZSwgUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSwgUWRQYWdlU3VibWl0QWN0aW9uU2VydmljZSwgUWRSZXNvbHZlclRyaWdnZXJTZXJ2aWNlXSxcbiAgaG9zdDogeyAnW2NsYXNzLmhhcy1jb250cm9sLXBhbmVsXSc6ICdpc0NvbnRyb2xQYW5lbFZpc2libGUnLCAnW2NsYXNzLmNvbnRyb2wtcGFuZWwtYnJvYWRdJzogJ2lzQ29udHJvbFBhbmVsQnJvYWQnIH1cbn0pXG5leHBvcnQgY2xhc3MgUWRQYWdlQ29tcG9uZW50PFQgZXh0ZW5kcyBvYmplY3Q+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGlzIHByb3BlcnR5IGRlZmluZXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBRZFBhZ2UgY29tcG9uZW50LCBpbmNsdWRpbmcgdGhlIHBhZ2UgdHlwZSxcbiAgICogdGl0bGUsIGFuZCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBmb3IgZWFjaCB0eXBlIG9mIHBhZ2UuXG4gICAqL1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBjb25maWchOiBRZFBhZ2VDb25maWc8VD47XG5cbiAgLyoqXG4gICAqIEEgc3RhdGljIHRlc3QgSUQgZm9yIGludGVncmF0aW9uIHRlc3RzIGNhbiBiZSBzZXQuIDxiciAvPlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBIVE1MIGF0dHJpYnV0ZSBbZGF0YS10ZXN0LWlkXS5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkPyA9ICdwYWdlJztcblxuICAvKipcbiAgICogVGhpcyBldmVudCBpcyBlbWl0dGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBtb2RlIG9mIHRoZSBpbnNwZWN0IHBhZ2UgaXMgY2hhbmdlZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBvcGVyYXRpb25Nb2RlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UWRJbnNwZWN0T3BlcmF0aW9uTW9kZT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFFkU2VjdGlvbkNvbXBvbmVudClcbiAgc2VjdGlvbnMhOiBRdWVyeUxpc3Q8UWRTZWN0aW9uQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZUNvbnRyb2xQYW5lbENvbXBvbmVudClcbiAgY29udHJvbFBhbmVsITogUWRQYWdlQ29udHJvbFBhbmVsQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoUWRQYWdlU3RlcHBlckNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBzdGVwcGVyQ29tcG9uZW50PzogUWRQYWdlU3RlcHBlckNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZVRhYnNDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgdGFic0NvbXBvbmVudD86IFFkUGFnZVRhYnNDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChRZFBhZ2VTdGVwcGVyQWRhcHRlckRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBzdGVwcGVyQWRhcHRlckRpcmVjdGl2ZT86IFFkUGFnZVN0ZXBwZXJBZGFwdGVyRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGQoUWRQYWdlVGFic0FkYXB0ZXJEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgdGFic0FkYXB0ZXJEaXJlY3RpdmU/OiBRZFBhZ2VUYWJzQWRhcHRlckRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkcmVuKFFkUGFnZUluZm9CYW5uZXJDb21wb25lbnQpXG4gIGluZm9CYW5uZXJzITogUXVlcnlMaXN0PFFkUGFnZUluZm9CYW5uZXJDb21wb25lbnQ+O1xuXG4gIGZvb3Rlckhhc0NvbnRlbnQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0Zvb3RlclZpc2libGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByb2plY3Rpb25HdWFyZE1lc3NhZ2UgPVxuICAgICdRRC1VSSB8IFFkUGFnZSAtIFRoaXMgY29udGVudCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXNlIFFkU2VjdGlvbkFkYXB0ZXJEaXJlY3RpdmUgZm9yIGN1c3RvbSBjb250ZW50IHByb2plY3Rpb24uJztcblxuICBwcml2YXRlIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Rlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9jYW5jZWxTdWJtaXRWYWxpZGF0aW9uJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgZ2V0IGlzQ29udHJvbFBhbmVsVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sUGFuZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLmNvbnRyb2xQYW5lbC5jb25maWc/LmlzSGlkZGVuICE9PSB0cnVlO1xuICB9XG5cbiAgZ2V0IGlzQ29udHJvbFBhbmVsQnJvYWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbFBhbmVsPy5jb25maWc/LndpZHRoID09PSAnYnJvYWQnO1xuICB9XG5cbiAgZ2V0IGhhc05hdmlnYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMuc3RlcHBlckNvbXBvbmVudCB8fCB0aGlzLnRhYnNDb21wb25lbnQgfHwgdGhpcy5zdGVwcGVyQWRhcHRlckRpcmVjdGl2ZSB8fCB0aGlzLnRhYnNBZGFwdGVyRGlyZWN0aXZlKTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLWZvb3RlcicpXG4gIGdldCBmb290ZXJWaXNpYmxlKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmlzRm9vdGVyVmlzaWJsZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLWluZm8tYmFubmVycycpXG4gIGdldCBoYXNJbmZvQmFubmVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbmZvQmFubmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlU3RvcmVTZXJ2aWNlOiBRZFBhZ2VTdG9yZVNlcnZpY2U8VD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb290ZXJTZXJ2aWNlOiBRZFBhZ2VGb290ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUdyb3VwTWFuYWdlclNlcnZpY2U6IFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdWJtaXRBY3Rpb25TZXJ2aWNlOiBRZFBhZ2VTdWJtaXRBY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBRZERpYWxvZ1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChRRF9TQUZFX0JPVFRPTV9PRkZTRVQpIHByaXZhdGUgYm90dG9tT2Zmc2V0JD86IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmPzogRGlhbG9nUmVmPHVua25vd24+XG4gICkge1xuICAgIHRoaXMuZm9vdGVySGFzQ29udGVudCQgPSB0aGlzLmZvb3RlclNlcnZpY2UuZm9vdGVySGFzQ29udGVudCQ7XG4gICAgdGhpcy5mb290ZXJIYXNDb250ZW50JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKGlzVmlzaWJsZSA9PiB7XG4gICAgICB0aGlzLmlzRm9vdGVyVmlzaWJsZSA9IGlzVmlzaWJsZTtcbiAgICAgIHRoaXMuYm90dG9tT2Zmc2V0JD8ubmV4dChpc1Zpc2libGUgPyBTQUZFX0JPVFRPTV9PRkZTRVRfUFggOiAwKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hlY2tDb25maWdWYWxpZGl0eSgpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnKSB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UuaW5pdFBhZ2VTdGF0ZSh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnQ2hhbmdlID0gY2hhbmdlc1snY29uZmlnJ107XG5cbiAgICBpZiAoIWNvbmZpZ0NoYW5nZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgeyBjdXJyZW50VmFsdWU6IGN1cnIsIHByZXZpb3VzVmFsdWU6IHByZXYgfSA9IGNvbmZpZ0NoYW5nZTtcblxuICAgIGlmIChjdXJyPy5wYWdlVHlwZUNvbmZpZz8uc3VibWl0Py5pc0hpZGRlbiAhPT0gcHJldj8ucGFnZVR5cGVDb25maWc/LnN1Ym1pdD8uaXNIaWRkZW4pXG4gICAgICB0aGlzLmZvb3RlclNlcnZpY2UudXBkYXRlQWN0aW9ucyhbXG4gICAgICAgIHsgYWN0aW9uS2V5OiAnc3VibWl0JywgcGFydGlhbEFjdGlvbjogeyBpc1Zpc2libGU6ICFjdXJyPy5wYWdlVHlwZUNvbmZpZz8uc3VibWl0Py5pc0hpZGRlbiB9IH1cbiAgICAgIF0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZScpIHRoaXMuc2V0dXBDcmVhdGVQYWdlRm9vdGVyQWN0aW9ucygpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJyAmJiB0aGlzLmNvbmZpZz8ucGFnZVR5cGVDb25maWc/LmNhbmNlbCAhPT0gdW5kZWZpbmVkKVxuICAgICAgdGhpcy5oYW5kbGVDYW5jZWxBY3Rpb25XaXRoRm9ybUNoYW5nZXMoKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZScgJiYgdGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnPy5zYXZlRHJhZnQgIT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuaW5pdFNhdmVEcmFmdEZvb3RlckFjdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcpXG4gICAgICB0aGlzLnBhZ2VTdG9yZVNlcnZpY2UuaXNWaWV3b25seSRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKGlzVmlld29ubHkgPT5cbiAgICAgICAgICB0aGlzLnVwZGF0ZUluc3BlY3RQYWdlT3BlcmF0aW9uTW9kZShcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnLFxuICAgICAgICAgICAgaXNWaWV3b25seSA/ICd2aWV3JyA6ICdlZGl0J1xuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIHRoaXMuc2V0dXBQYWdlRGlhbG9nQ2xvc2VDb250cmFjdCgpO1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYgJiYgdGhpcy5kaWFsb2cuY2xlYXJQYWdlRGlhbG9nQ2FuQ2xvc2UodGhpcy5kaWFsb2dSZWYpO1xuICAgIHRoaXMuYm90dG9tT2Zmc2V0JD8ubmV4dCgwKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQ29uZmlnVmFsaWRpdHkoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZykgY29uc29sZS53YXJuKCdRZFVpIHwgUWRQYWdlQ29tcG9uZW50IC0gVG8gY29uZmlndXJlIHRoZSBwYWdlIHlvdSBzaG91bGQgcHJvdmlkZSBhIHZhbGlkIGNvbmZpZy4nKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDcmVhdGVQYWdlRm9vdGVyQWN0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlVHlwZUNvbmZpZyA9IHRoaXMuY29uZmlnPy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnO1xuICAgIGNvbnN0IGFjdGlvbktleXM6IFFkQ3JlYXRlRm9vdGVyQWN0aW9uS2V5W10gPSBbJ3NhdmVEcmFmdCcsICdjYW5jZWwnLCAnc3VibWl0J107XG4gICAgY29uc3QgYWN0aW9uczogUGFydGlhbEZvb3RlckFjdGlvbltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGFjdGlvbktleSBvZiBhY3Rpb25LZXlzKSB7XG4gICAgICBjb25zdCBhY3Rpb24gPSBwYWdlVHlwZUNvbmZpZ1thY3Rpb25LZXldO1xuXG4gICAgICBpZiAoIWFjdGlvbikgY29udGludWU7XG5cbiAgICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICAgIGFjdGlvbktleSxcbiAgICAgICAgcGFydGlhbEFjdGlvbjoge1xuICAgICAgICAgIC4uLihhY3Rpb24/LmxhYmVsPy5pMThuID8geyB0aXRsZUkxOG46IGFjdGlvbi5sYWJlbC5pMThuIH0gOiB7fSksXG4gICAgICAgICAgaGFuZGxlcjogdGhpcy5nZW5lcmF0ZUZvb3RlckFjdGlvbkhhbmRsZXIoYWN0aW9uPy5oYW5kbGVyKVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmZvb3RlclNlcnZpY2UudXBkYXRlQWN0aW9ucyhhY3Rpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2FuY2VsQWN0aW9uV2l0aEZvcm1DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2VcbiAgICAgIC4kaGFzVmFsdWVzQ2hhbmdlZCgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGhhc0NoYW5nZWQgPT4ge1xuICAgICAgICB0aGlzLmZvb3RlclNlcnZpY2UudXBkYXRlQWN0aW9ucyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWN0aW9uS2V5OiAnY2FuY2VsJyxcbiAgICAgICAgICAgIHBhcnRpYWxBY3Rpb246IHtcbiAgICAgICAgICAgICAgaGFuZGxlcjogaGFzQ2hhbmdlZFxuICAgICAgICAgICAgICAgID8gKCk6IHZvaWQgPT4gdGhpcy5zZXR1cFN1Ym1pdEFjdGlvblZhbGlkYXRpb24oKVxuICAgICAgICAgICAgICAgIDogKCk6IHZvaWQgPT4gKHRoaXMuY29uZmlnPy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnKT8uY2FuY2VsPy5oYW5kbGVyKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTYXZlRHJhZnRGb290ZXJBY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcGFnZVR5cGVDb25maWcgPSB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnO1xuXG4gICAgdGhpcy5mb290ZXJTZXJ2aWNlLnNldEFjdGlvbnMoW1xuICAgICAge1xuICAgICAgICBrZXk6ICdzYXZlRHJhZnQnLFxuICAgICAgICBhY3Rpb246IHtcbiAgICAgICAgICB0aXRsZUkxOG46IHBhZ2VUeXBlQ29uZmlnLnNhdmVEcmFmdD8ubGFiZWw/LmkxOG4gPz8gJ2kxOG4ucWQucGFnZS5mb290ZXIuc2F2ZURyYWZ0JyxcbiAgICAgICAgICB0eXBlOiBRZEZvb3RlckFjdGlvblR5cGUuU2Vjb25kYXJ5LFxuICAgICAgICAgIGhhbmRsZXI6ICgpOiB2b2lkID0+IHBhZ2VUeXBlQ29uZmlnPy5zYXZlRHJhZnQ/LmhhbmRsZXIoKSxcbiAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgaXNEaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnNwZWN0UGFnZU9wZXJhdGlvbk1vZGUocGFnZVR5cGVDb25maWc6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnLCBtb2RlOiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXRBY3Rpb25TZXJ2aWNlLnNldFN1Ym1pdEFjdGlvbkZvckluc3BlY3QocGFnZVR5cGVDb25maWcsIG1vZGUgPT09ICd2aWV3Jyk7XG5cbiAgICB0aGlzLmZvb3RlclNlcnZpY2UudXBkYXRlQWN0aW9ucyhbXG4gICAgICB7IGFjdGlvbktleTogJ3N1Ym1pdCcsIHBhcnRpYWxBY3Rpb246IHsgaXNWaXNpYmxlOiBtb2RlID09PSAndmlldycgJiYgIXBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmlzSGlkZGVuIH0gfVxuICAgIF0pO1xuXG4gICAgdGhpcy5pbml0U3VibWl0VmFsaWRhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQpIHRoaXMub3BlcmF0aW9uTW9kZUNoYW5nZWQuZW1pdChtb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVGb290ZXJBY3Rpb25IYW5kbGVyKGhhbmRsZXI/OiAodmFsdWVzOiB1bmtub3duKSA9PiB2b2lkKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICBpZiAoIWhhbmRsZXIpIHJldHVybjtcblxuICAgICAgaGFuZGxlcih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmhhc0Zvcm1Hcm91cHMoKSA/IHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuZ2V0QWxsVmFsdWVzKCkgOiBhcmdzKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFN1Ym1pdEFjdGlvblZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB0aXRsZTogeyBpMThuOiAnaTE4bi5xZC5wYWdlLmNhbmNlbC5jb25maXJtYXRpb24uZGlhbG9nLnRpdGxlJyB9LFxuICAgICAgICBkaWFsb2dTaXplOiBRZERpYWxvZ1NpemUuU21hbGwsXG4gICAgICAgIGRhdGE6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnXG4gICAgICB9KVxuICAgICAgLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN1Ym1pdFZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fY2FuY2VsU3VibWl0VmFsaWRhdGlvbiQubmV4dCgpO1xuXG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRhcmVGb3JtR3JvdXBzVmFsaWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9jYW5jZWxTdWJtaXRWYWxpZGF0aW9uJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSxcbiAgICAgICAgdGFwKGlzVmFsaWQgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1Ym1pdERpc2FibGVkSW5mb1RleHQgPVxuICAgICAgICAgICAgdGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdpbnNwZWN0JyA/IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmRpc2FibGVkSW5mbyA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWN0aW9uS2V5OiAnc3VibWl0JyxcbiAgICAgICAgICAgICAgcGFydGlhbEFjdGlvbjoge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbmZvOiBpc1ZhbGlkXG4gICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaW5mb1R5cGU6ICd3YXJuaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBzdWJtaXREaXNhYmxlZEluZm9UZXh0ID8/IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5zdWJtaXQuaW52YWxpZEZvcm0nIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwUGFnZURpYWxvZ0Nsb3NlQ29udHJhY3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpYWxvZ1JlZikgcmV0dXJuO1xuXG4gICAgY29uc3QgZGlhbG9nU2l6ZSA9ICh0aGlzLmRpYWxvZ1JlZi5jb25maWcgYXMgdW5rbm93biBhcyB7IGRpYWxvZ1NpemU/OiBRZERpYWxvZ1NpemUgfSkuZGlhbG9nU2l6ZTtcbiAgICBpZiAoZGlhbG9nU2l6ZSAhPT0gUWREaWFsb2dTaXplLkZ1bGxXaWR0aCkgcmV0dXJuO1xuXG4gICAgdGhpcy5kaWFsb2cuc2V0UGFnZURpYWxvZ0NhbkNsb3NlKFxuICAgICAgKCkgPT5cbiAgICAgICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZS4kaGFzVmFsdWVzQ2hhbmdlZCgpLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICBtYXAoaGFzQ2hhbmdlcyA9PiAoe1xuICAgICAgICAgICAgY2FuQ2xvc2U6ICFoYXNDaGFuZ2VzLFxuICAgICAgICAgICAgaGFzQ2hhbmdlcyxcbiAgICAgICAgICAgIGNhdXNlOiBoYXNDaGFuZ2VzID8gJ1VOU0FWRURfQ0hBTkdFUycgOiB1bmRlZmluZWRcbiAgICAgICAgICB9KSlcbiAgICAgICAgKSxcbiAgICAgIHRoaXMuZGlhbG9nUmVmXG4gICAgKTtcbiAgfVxufVxuIiwiPG1haW4gcWRTbmFja2Jhckxpc3RlbmVyPlxuICA8cWQtcGFnZS1vYmplY3QtaGVhZGVyXG4gICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWRcIlxuICAgIFthdHRyLmRhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnb2JqZWN0LWhlYWRlcidcIlxuICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICBbaGFzTmF2aWdhdGlvbl09XCJoYXNOYXZpZ2F0aW9uXCJcbiAgPjwvcWQtcGFnZS1vYmplY3QtaGVhZGVyPlxuXG4gIDxkaXYgY2xhc3M9XCJwYWdlLWluZm8tYmFubmVyc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInFkLXBhZ2UtaW5mby1iYW5uZXJcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucGFnZVR5cGUgPT09ICdjcmVhdGUnIHx8IGNvbmZpZy5wYWdlVHlwZSA9PT0gJ2N1c3RvbSdcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJxZC1wYWdlLXN0ZXBwZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3FkUGFnZVN0ZXBwZXJBZGFwdGVyXVwiPjwvbmctY29udGVudD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5wYWdlVHlwZSA9PT0gJ292ZXJ2aWV3JyB8fCBjb25maWcucGFnZVR5cGUgPT09ICdpbnNwZWN0JyB8fCBjb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicWQtcGFnZS10YWJzXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltxZFBhZ2VUYWJzQWRhcHRlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicWQtc2VjdGlvblwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcWRTZWN0aW9uQWRhcHRlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByb2plY3RlZENvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L21haW4+XG5cbjxmb290ZXIgKm5nSWY9XCJmb290ZXJIYXNDb250ZW50JCB8IGFzeW5jXCI+XG4gIDxxZC1wYWdlLWZvb3RlciBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1mb290ZXInXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3FkUGFnZUZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvcWQtcGFnZS1mb290ZXI+XG48L2Zvb3Rlcj5cblxuPGFzaWRlICpuZ0lmPVwiaXNDb250cm9sUGFuZWxWaXNpYmxlXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cInFkLXBhZ2UtY29udHJvbC1wYW5lbFwiPjwvbmctY29udGVudD5cbjwvYXNpZGU+XG5cbjxxZC1wcm9qZWN0aW9uLWd1YXJkICpuZ0lmPVwiY29uZmlnLnBhZ2VUeXBlICE9PSAnY3VzdG9tJ1wiIFt3YXJuaW5nTWVzc2FnZV09XCJwcm9qZWN0aW9uR3VhcmRNZXNzYWdlXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9qZWN0ZWRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L3FkLXByb2plY3Rpb24tZ3VhcmQ+XG5cbjxuZy10ZW1wbGF0ZSAjcHJvamVjdGVkQ29udGVudD5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|