@sunbird-cb/toc 0.35.6 → 0.35.8
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/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +2 -2
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +1 -3
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +1 -2
- package/esm2022/lib/app-toc-lib.module.mjs +10 -5
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +17 -3
- package/esm2022/lib/models/user-profile.model.mjs +1 -1
- package/esm2022/lib/services/discuss-utils.service.mjs +30 -43
- package/esm2022/lib/services/netcore.service.mjs +116 -46
- package/esm2022/lib/services/nps-grid.service.mjs +34 -22
- package/esm2022/lib/services/otp.service.mjs +63 -25
- package/esm2022/lib/services/profile-v2.service.mjs +46 -21
- package/esm2022/lib/services/user-profile.service.mjs +159 -39
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/sunbird-cb-toc.mjs +587 -328
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -1
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -1
- package/lib/app-toc-lib.module.d.ts.map +1 -1
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +2 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -1
- package/lib/models/user-profile.model.d.ts +87 -0
- package/lib/models/user-profile.model.d.ts.map +1 -1
- package/lib/services/discuss-utils.service.d.ts +5 -27
- package/lib/services/discuss-utils.service.d.ts.map +1 -1
- package/lib/services/netcore.service.d.ts +16 -28
- package/lib/services/netcore.service.d.ts.map +1 -1
- package/lib/services/nps-grid.service.d.ts +11 -10
- package/lib/services/nps-grid.service.d.ts.map +1 -1
- package/lib/services/otp.service.d.ts +5 -10
- package/lib/services/otp.service.d.ts.map +1 -1
- package/lib/services/profile-v2.service.d.ts +7 -6
- package/lib/services/profile-v2.service.d.ts.map +1 -1
- package/lib/services/user-profile.service.d.ts +35 -11
- package/lib/services/user-profile.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs
CHANGED
|
@@ -772,7 +772,7 @@ export class AppTocAboutComponent {
|
|
|
772
772
|
// );
|
|
773
773
|
// }
|
|
774
774
|
// );
|
|
775
|
-
// } else {
|
|
775
|
+
// } else {
|
|
776
776
|
// this.contentSvc.downloadCert(certId).subscribe(
|
|
777
777
|
// (response) => {
|
|
778
778
|
// if (this.content) {
|
|
@@ -957,4 +957,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
957
957
|
type: ViewChild,
|
|
958
958
|
args: ['searchTagElem']
|
|
959
959
|
}] } });
|
|
960
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1hYm91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9jb250ZW50LXRvYy9hcHAtdG9jLWFib3V0L2FwcC10b2MtYWJvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvYXBwLXRvYy1hYm91dC9hcHAtdG9jLWFib3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFzRCxTQUFTLEVBQWMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJakssT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsMkJBQTJCO0FBQzNCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUd6QixPQUFPLGNBQWMsTUFBTSw2QkFBNkIsQ0FBQTtBQUN4RCxPQUFPLGFBQWEsTUFBTSw0QkFBNEIsQ0FBQTtBQUd0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNENBQTRDLENBQUE7QUFZdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdURBQXVELENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbkJsRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBQzVCLEtBQUss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b3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcidcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnXG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpXG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcilcbmltcG9ydCBpc1NhbWVPckJlZm9yZSBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JCZWZvcmUnXG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcidcblxuaW1wb3J0IHsgTnNXaWRnZXRSZXNvbHZlciB9IGZyb20gJ0BzdW5iaXJkLWNiL3Jlc29sdmVyLXYyJ1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vX3NlcnZpY2VzL3dpZGdldC1jb250ZW50Lm1vZGVsJ1xuaW1wb3J0IHsgUmF0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9yYXRpbmcuc2VydmljZSdcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UsIENvbmZpZ3VyYXRpb25zU2VydmljZSwgV2lkZ2V0Q29udGVudFNlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IEFwcFRvY1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hcHAtdG9jLnNlcnZpY2UnXG5pbXBvcnQgeyBUaW1lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90aW1lci5zZXJ2aWNlJ1xuaW1wb3J0IHsgSGFuZGxlQ2xhaW1TZXJ2aWNlIH0gZnJvbSAnLi4vY29udGVudC1zZXJ2aWNlcy9oYW5kbGUtY2xhaW0uc2VydmljZSdcbmltcG9ydCB7IExvYWRDaGVja1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9sb2FkLWNoZWNrLnNlcnZpY2UnXG5pbXBvcnQgeyBSZXZpZXdDb21wb25lbnREYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbnRlbnQtc2VydmljZXMvcmV2aWV3LWNvbXBvbmVudC1kYXRhLnNlcnZpY2UnXG5pbXBvcnQgeyBSZXNldFJhdGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvcmVzZXQtcmF0aW5ncy5zZXJ2aWNlJ1xuaW1wb3J0IHsgTnNDb250ZW50U3RyaXBXaXRoVGFicyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9jb250ZW50LXN0cmlwLXdpdGgtdGFicy5tb2RlbCdcbmltcG9ydCB7IERpc2N1c3NVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9kaXNjdXNzLXV0aWxzLnNlcnZpY2UnXG5cbmltcG9ydCB7IFJldmlld3NDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcmV2aWV3cy1jb250ZW50L3Jldmlld3MtY29udGVudC5jb21wb25lbnQnXG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50J1xuXG5pbnRlcmZhY2UgSVN0cmlwVW5pdENvbnRlbnREYXRhIHtcbiAga2V5OiBzdHJpbmdcbiAgY2FuSGlkZVN0cmlwOiBib29sZWFuXG4gIG1vZGU/OiBzdHJpbmdcbiAgc2hvd1N0cmlwOiBib29sZWFuXG4gIHdpZGdldHM/OiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoQW55RGF0YVtdXG4gIHN0cmlwVGl0bGU6IHN0cmluZ1xuICBzdHJpcFRpdGxlTGluaz86IHtcbiAgICBsaW5rOiBzdHJpbmcsXG4gICAgaWNvbjogc3RyaW5nXG4gIH0sXG4gIHNsaWRlckNvbmZpZz86IHtcbiAgICBzaG93TmF2czogYm9vbGVhbixcbiAgICBzaG93RG90czogYm9vbGVhbixcbiAgICBtYXhXaWRnZXRzPzogbnVtYmVyXG4gIH0sXG4gIHRhYnM/OiBOc0NvbnRlbnRTdHJpcFdpdGhUYWJzLklDb250ZW50U3RyaXBUYWJbXSB8IHVuZGVmaW5lZCxcbiAgc3RyaXBOYW1lPzogc3RyaW5nXG4gIHN0cmlwTG9nbz86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBzdHJpcEluZm8/OiBOc0NvbnRlbnRTdHJpcFdpdGhUYWJzLklTdHJpcEluZm9cbiAgbm9EYXRhV2lkZ2V0PzogTnNXaWRnZXRSZXNvbHZlci5JUmVuZGVyQ29uZmlnV2l0aEFueURhdGFcbiAgZXJyb3JXaWRnZXQ/OiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoQW55RGF0YVxuICBzaG93T25Ob0RhdGE6IGJvb2xlYW5cbiAgc2hvd09uTG9hZGVyOiBib29sZWFuXG4gIHNob3dPbkVycm9yOiBib29sZWFuXG4gIGxvYWRlcldpZGdldHM/OiBhbnlcbiAgc3RyaXBCYWNrZ3JvdW5kPzogc3RyaW5nXG4gIHNlY29uZGFyeUhlYWRpbmc/OiBhbnlcbiAgdmlld01vcmVVcmw6IGFueSxcbiAgc2VjdG9yV2lkZ2V0cz86IGFueVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtYXBwLXRvYy1hYm91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLWFib3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1hYm91dC5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEFwcFRvY0Fib3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgXG4gIEBJbnB1dCgpIGNvbmRpdGlvbjogYW55XG4gIEBJbnB1dCgpIGtwYXJyYXk6IGFueVxuICBASW5wdXQoKSBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBjb250ZW50UmVhZERhdGE6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIGJhc2VDb250ZW50UmVhZERhdGE6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIHNrZWxldG9uTG9hZGVyID0gZmFsc2VcbiAgQElucHV0KCkgc3RpY2t5ID0gZmFsc2VcbiAgQElucHV0KCkgdG9jU3RydWN0dXJlOiBhbnlcbiAgQElucHV0KCkgcGF0aFNldDogYW55XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55XG4gIEBJbnB1dCgpIHJlc3VtZURhdGE6IGFueVxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gZmFsc2VcbiAgQElucHV0KCkgc2hvd1Jldmlld3MgPSBmYWxzZVxuICBASW5wdXQoKSBiYXRjaERhdGE6IGFueVxuICBASW5wdXQoKSBmcm9tVmlld2VyID0gZmFsc2VcbiAgQElucHV0KCkgc2VsZWN0ZWRCYXRjaERhdGE6IGFueVxuICBASW5wdXQoKSBzZWxlY3RlZFRhYlZhbHVlID0gMFxuICBASW5wdXQoKSBmcm9tTWFya2V0UGxhY2U/ID0gZmFsc2VcbiAgQElucHV0KCkgc2hvd01hcmtldFBsYWNlQ2VydGlmaWNhdGUgPSBmYWxzZVxuICBASW5wdXQoKSBsYW5ndWFnZUxpc3QgPSBbXVxuICBASW5wdXQoKSBsb2NrQ2VydGlmaWNhdGUgPSBmYWxzZVxuICBASW5wdXQoKSBmcm9tTURPID0gZmFsc2VcbiAgQE91dHB1dCgpIHRyaWdlckNvbXBsZXRpb25TdXJ2ZXlGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBWaWV3Q2hpbGQoJ3N1bW1hcnlFbGVtJykgc3VtbWFyeUVsZW0gITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdvYmplY3RpdmVzRWxlbScpIG9iamVjdGl2ZXNFbGVtICE6IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZCgnZGVzY0VsZW0nKSBkZXNjRWxlbSAhOiBFbGVtZW50UmVmXG4gIEBWaWV3Q2hpbGQoJ3RhZ3NFbGVtJykgdGFnc0VsZW0gITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdzZWFyY2hUYWdFbGVtJykgc2VhcmNoVGFnRWxlbSAhOiBFbGVtZW50UmVmXG4gIGRpc2FibGVDZXJ0aWZpY2F0ZSA9IGZhbHNlXG4gIGlzRXh0ZXJuYWxDb250ZW50ID0gZmFsc2VcbiAgcHJpbWFyeUNhdGVnb3J5ID0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnlcbiAgc3RyaXBzUmVzdWx0RGF0YU1hcCE6IHsgW2tleTogc3RyaW5nXTogSVN0cmlwVW5pdENvbnRlbnREYXRhIH1cbiAgc3VtbWFyeSA9IHtcbiAgICBlbGxpcHNpczogZmFsc2UsXG4gICAgdmlld0xlc3M6IGZhbHNlLFxuICB9XG4gIGRlc2NyaXB0aW9uID0ge1xuICAgIGVsbGlwc2lzOiBmYWxzZSxcbiAgICB2aWV3TGVzczogZmFsc2UsXG4gIH1cbiAgb2JqZWN0aXZlcyA9IHtcbiAgICBlbGxpcHNpczogZmFsc2UsXG4gICAgdmlld0xlc3M6IGZhbHNlLFxuICB9XG4gIHRhZ3NFbGxpcHNpcyA9IGZhbHNlXG4gIHNlYXJjaFRhZ3NFbGxpcHNpcyA9IGZhbHNlXG4gIGNvbXBldGVuY3lTZWxlY3RlZCA9ICcnXG4gIHJhdGluZ1N1bW1hcnk6IGFueVxuICBhdXRoUmVwbGllczogYW55XG4gIHJhdGluZ1N1bW1hcnlQcm9jZXNzZWQ6IGFueVxuICB0b3BSYXRpbmdSZXZpZXdzOiBhbnlbXSA9IFtdXG4gIHJhdGluZ1Jldmlld3M6IGFueVtdID0gW11cbiAgbGF0ZXN0UmV2aWV3czogYW55W10gPSBbXVxuICBkaWFsb2dSZWY6IGFueVxuICBkaXNwbGF5TG9hZGVyID0gZmFsc2VcbiAgZGlzYWJsZUxvYWRNb3JlID0gZmFsc2VcbiAgbG9va3VwTG9hZGluZzogQm9vbGVhbiA9IHRydWVcbiAgbGFzdExvb2tVcDogYW55XG4gIHJhdGluZ0xvb2t1cDogYW55XG4gIHJldmlld1BhZ2UgPSAxXG4gIHJldmlld0RlZmF1bHRMaW1pdCA9IDJcbiAgbG9va3VwTGltaXQgPSAzXG4gIHJhdGluZ1ZpZXdDb3VudCA9IDNcbiAgcmF0aW5nVmlld0NvdW50RGVmYXVsdCA9IDNcbiAgY29tcGV0ZW5jaWVzT2JqZWN0OiBhbnkgPSBbXVxuICBwcml2YXRlIGRlc3Ryb3lTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PGFueT4oKVxuICB2aWV3TW9yZVRhZ3MgPSBmYWxzZVxuICB0aW1lclVuc3Vic2NyaWJlOiBhbnlcbiAgZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSBmYWxzZVxuXG4gIHN0cmlwOiBOc0NvbnRlbnRTdHJpcFdpdGhUYWJzLklDb250ZW50U3RyaXBVbml0ID0ge1xuICAgIGtleTogJ2JsZW5kZWRQcm9ncmFtcycsXG4gICAgbG9nbzogJycsXG4gICAgdGl0bGU6ICdCbGVuZGVkIFByb2dyYW0nLFxuICAgIHN0cmlwVGl0bGVMaW5rOiB7XG4gICAgICBsaW5rOiAnJyxcbiAgICAgIGljb246ICcnLFxuICAgIH0sXG4gICAgc2xpZGVyQ29uZmlnOiB7XG4gICAgICBzaG93TmF2czogdHJ1ZSxcbiAgICAgIHNob3dEb3RzOiBmYWxzZSxcbiAgICB9LFxuICAgIGxvYWRlcjogdHJ1ZSxcbiAgICBzdHJpcEJhY2tncm91bmQ6ICcnLFxuICAgIHRpdGxlRGVzY3JpcHRpb246ICdCbGVuZGVkIFByb2dyYW0nLFxuICAgIHN0cmlwQ29uZmlnOiB7XG4gICAgICBjYXJkU3ViVHlwZTogJ3N0YW5kYXJkJyxcbiAgICB9LFxuICAgIHZpZXdNb3JlVXJsOiB7XG4gICAgICBwYXRoOiAnJyxcbiAgICAgIHZpZXdNb3JlVGV4dDogJ1Nob3cgYWxsJyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiAnJyxcbiAgICB9LFxuICAgIHRhYnM6IFtdLFxuICAgIGZpbHRlcnM6IFtdXG4gIH1cblxuICB0aW1lcjogYW55ID0ge31cbiAgaXNNb2JpbGUgPSBmYWxzZVxuICBjb21wZW50ZW5jeUtleSE6IE5zQ29udGVudC5JQ29tcGVudGVuY3lLZXlzXG4gIHNlY3RvcnNMaXN0OiBhbnlbXSA9IFtdXG4gIHN1YlNlY3RvcnNMaXN0OiBhbnlbXSA9IFtdXG4gIHVzZXJQcm9maWxlOiBhbnkgPSBudWxsXG4gIHN1YlNlY3RvckRldGFpbEFycjogYW55ID0gW11cbiAgc2VsZWN0ZWRTZWN0b3IgPSAnJ1xuICBzZWxlY3RlZFNlY3RvcklkID0gJydcbiAgcmVmcmVzaHJhdGluZ1N1YlxuICBwYWdlQ29uZmlnRGF0YTogYW55XG4gIGVudmlyb25tZW50ITogYW55XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmF0aW5nU2VydmljZTogUmF0aW5nU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIG1hdFNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIGxvYWRDaGVja1NlcnZpY2U6IExvYWRDaGVja1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aW1lclNlcnZpY2U6IFRpbWVyU2VydmljZSxcbiAgICBwcml2YXRlIHRvY1N2YzogQXBwVG9jU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGRpc2N1c3NVdGlsaXR5U3ZjOiBEaXNjdXNzVXRpbHNTZXJ2aWNlLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJldmlld0RhdGFTZXJ2aWNlOiBSZXZpZXdDb21wb25lbnREYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGhhbmRsZUNsYWltU2VydmljZTogSGFuZGxlQ2xhaW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzZXRSYXRpbmdzU2VydmljZTogUmVzZXRSYXRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRTdmM6IFdpZGdldENvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnRcbiAgICB0aGlzLnJlZnJlc2hyYXRpbmdTdWIgPSB0aGlzLnJlc2V0UmF0aW5nc1NlcnZpY2UucmVzZXRSYXRpbmdzJC5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5mZXRjaFJhdGluZ1N1bW1hcnkoKVxuICAgIH0pXG4gIH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYWdlQ29uZmlnRGF0YSA9IHRoaXMuYWN0aXZhdGVkUm91dGU/LnNuYXBzaG90Py5kYXRhPy5wYWdlRGF0YT8uZGF0YVxuICAgIHRoaXMuY29tcGVudGVuY3lLZXkgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29tcGVudGVuY3lbdGhpcy5lbnZpcm9ubWVudC5jb21wZW50ZW5jeVZlcnNpb25LZXldXG4gICAgdGhpcy51c2VyUHJvZmlsZSA9IHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZVxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSAxMjAwKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gZmFsc2VcbiAgICB9XG5cbiAgICBcblxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmlkZW50aWZpZXIpIHtcbiAgICAgIHRoaXMuZmV0Y2hSYXRpbmdTdW1tYXJ5KClcbiAgICAgIC8vIHRoaXMubG9hZENvbXBldGVuY2llcygpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY29udGVudElkICYmIHRoaXMuY29udGVudC5jb250ZW50SWQuaW5jbHVkZXMoJ2V4dF8nKSkge1xuICAgICAgLy8gdGhpcy5sb2FkQ29tcGV0ZW5jaWVzKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnRbJ3N1YlRoZW1lJ10gPSB0aGlzLmdldFN1YlRoZW1lcygpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQ0FTRV9TVFVEWSkge1xuICAgICAgdGhpcy5kaXNhYmxlQ2VydGlmaWNhdGUgPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ3RoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS0tLScsIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSlcblxuICAgIGlmICh0aGlzLmJhc2VDb250ZW50UmVhZERhdGE/LnNlY3RvckRldGFpbHNfdjEpIHtcbiAgICAgIC8vIFBhcnNlIHN0cmluZyB0byBhcnJheSBpZiBuZWVkZWRcbiAgICAgIGxldCBzZWN0b3JEZXRhaWxzQXJyYXkgPSB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuc2VjdG9yRGV0YWlsc192MVxuXG4gICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nLCB0cnkgdG8gcGFyc2UgaXQgaW50byBhbiBhcnJheVxuICAgICAgaWYgKHR5cGVvZiBzZWN0b3JEZXRhaWxzQXJyYXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2VjdG9yRGV0YWlsc0FycmF5ID0gSlNPTi5wYXJzZShzZWN0b3JEZXRhaWxzQXJyYXkpXG4gICAgICAgICAgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjEgPSBzZWN0b3JEZXRhaWxzQXJyYXlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgc2VjdG9yRGV0YWlsc192MTonLCBlKVxuICAgICAgICAgIHNlY3RvckRldGFpbHNBcnJheSA9IFtdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyBvbmx5IGlmIHdlIGhhdmUgYSB2YWxpZCBhcnJheSB3aXRoIGl0ZW1zXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWN0b3JEZXRhaWxzQXJyYXkpICYmIHNlY3RvckRldGFpbHNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VjdG9yc0xpc3QgPSBfLnVuaXFCeShcbiAgICAgICAgICBzZWN0b3JEZXRhaWxzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uc2VjdG9yTmFtZSAmJiBpdGVtPy5zZWN0b3JJZClcbiAgICAgICAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgc2VjdG9ySWQ6IGl0ZW0uc2VjdG9ySWQsXG4gICAgICAgICAgICAgIHNlY3Rvck5hbWU6IGl0ZW0uc2VjdG9yTmFtZVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICdzZWN0b3JOYW1lJ1xuICAgICAgICApXG5cbiAgICAgICAgdGhpcy5zdWJTZWN0b3JzTGlzdCA9IF8udW5pcUJ5KFxuICAgICAgICAgIHNlY3RvckRldGFpbHNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5zdWJTZWN0b3JOYW1lICYmIGl0ZW0/LnN1YlNlY3RvcklkKVxuICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICBzdWJTZWN0b3JJZDogaXRlbS5zdWJTZWN0b3JJZCxcbiAgICAgICAgICAgICAgc3ViU2VjdG9yTmFtZTogaXRlbS5zdWJTZWN0b3JOYW1lXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgJ3N1YlNlY3Rvck5hbWUnXG4gICAgICAgIClcblxuICAgICAgICBpZiAodGhpcy5zZWN0b3JzTGlzdCAmJiB0aGlzLnNlY3RvcnNMaXN0Lmxlbmd0aCAmJiB0aGlzLnNlY3RvcnNMaXN0WzBdKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN1YnNlY3Rvcih0aGlzLnNlY3RvcnNMaXN0WzBdKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgaWYgKFxuICAgICAgdGhpcy5jb250ZW50Py5jb250ZW50SWQgJiZcbiAgICAgIHRoaXMuY29udGVudD8uY2VydGlmaWNhdGVPYmo/LmRhdGEgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29udGVudC5jZXJ0aWZpY2F0ZU9iai5kYXRhKS5sZW5ndGggPT09IDAgJiZcbiAgICAgIHRoaXMuY29udGVudC5jb21wbGV0aW9uU3RhdHVzID09PSAyXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZU9wZW5DZXJ0aWZpY2F0ZURpYWxvZygpO1xuICAgIH1cblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGltZXJVbnN1YnNjcmliZSA9IHRoaXMudGltZXJTZXJ2aWNlLmdldFRpbWVyRGF0YSgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95U3ViamVjdCQpKVxuICAgICAgLnN1YnNjcmliZSgoX3RpbWVyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50aW1lciA9IF90aW1lclxuICAgICAgfSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBlbnRlbmN5S2V5ID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbXBlbnRlbmN5W3RoaXMuZW52aXJvbm1lbnQuY29tcGVudGVuY3lWZXJzaW9uS2V5XVxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkVGFiVmFsdWUgJiYgY2hhbmdlcy5zZWxlY3RlZFRhYlZhbHVlLmN1cnJlbnRWYWx1ZSA9PT0gMCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIGlmICh0aGlzLnN1bW1hcnlFbGVtICYmIHRoaXMuc3VtbWFyeUVsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA3Mikge1xuICAgICAgICAgICAgdGhpcy5zdW1tYXJ5LmVsbGlwc2lzID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmRlc2NFbGVtICYmIHRoaXMuZGVzY0VsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA3Mikge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbi5lbGxpcHNpcyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMub2JqZWN0aXZlc0VsZW0gJiYgdGhpcy5vYmplY3RpdmVzRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDcyKSB7XG4gICAgICAgICAgICB0aGlzLm9iamVjdGl2ZXMuZWxsaXBzaXMgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnN1bW1hcnlFbGVtICYmIHRoaXMuc3VtbWFyeUVsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA0OCkge1xuICAgICAgICAgICAgdGhpcy5zdW1tYXJ5LmVsbGlwc2lzID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmRlc2NFbGVtICYmIHRoaXMuZGVzY0VsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA0OCkge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbi5lbGxpcHNpcyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMub2JqZWN0aXZlc0VsZW0gJiYgdGhpcy5vYmplY3RpdmVzRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDQ4KSB7XG4gICAgICAgICAgICB0aGlzLm9iamVjdGl2ZXMuZWxsaXBzaXMgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFnc0VsZW0gJiYgdGhpcy50YWdzRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDY0KSB7XG4gICAgICAgICAgdGhpcy50YWdzRWxsaXBzaXMgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUYWdFbGVtICYmIHRoaXMuc2VhcmNoVGFnRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDY0KSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUYWdzRWxsaXBzaXMgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgICBpZih0aGlzLmZyb21NRE8pIHtcbiAgICAgICAgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhID0gdGhpcy5jb250ZW50LnJlc3VsdC5jb250ZW50XG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmJhc2VDb250ZW50UmVhZERhdGEtLScsIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSlcbiAgICAgICAgdGhpcy5sb2FkQ29tcGV0ZW5jaWVzKClcbiAgICAgIH1cbiAgICAgIH0sIDUwMClcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5za2VsZXRvbkxvYWRlciAmJiAhY2hhbmdlcy5za2VsZXRvbkxvYWRlci5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRDaGVja1NlcnZpY2UuY29tcG9uZW50TG9hZGVkKHRydWUpXG4gICAgICB9LCA1MDApXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB7XG4gICAgICAgIGFzc2Vzc21lbnQ6IDAsXG4gICAgICAgIGNvdXJzZTogMCxcbiAgICAgICAgaGFuZHNPbjogMCxcbiAgICAgICAgaW50ZXJhY3RpdmVWaWRlbzogMCxcbiAgICAgICAgbGVhcm5pbmdNb2R1bGU6IDAsXG4gICAgICAgIG90aGVyOiAwLFxuICAgICAgICBwZGY6IDAsXG4gICAgICAgIHN1cnZleTogMCxcbiAgICAgICAgcG9kY2FzdDogMCxcbiAgICAgICAgcHJhY3RpY2VUZXN0OiAwLFxuICAgICAgICBmaW5hbFRlc3Q6IDAsXG4gICAgICAgIHF1aXo6IDAsXG4gICAgICAgIHZpZGVvOiAwLFxuICAgICAgICB3ZWJNb2R1bGU6IDAsXG4gICAgICAgIHdlYlBhZ2U6IDAsXG4gICAgICAgIHlvdXR1YmU6IDAsXG4gICAgICAgIGludGVyYWN0aXZlY29udGVudDogMCxcbiAgICAgICAgb2ZmbGluZVNlc3Npb246IDAsXG4gICAgICB9XG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZS5sZWFybmluZ01vZHVsZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICdDb3Vyc2UgVW5pdCcgPyAtMSA6IDBcbiAgICAgIHRoaXMudG9jU3RydWN0dXJlLmNvdXJzZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICdDb3Vyc2UnID8gLTEgOiAwXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZSA9IHRoaXMudG9jU3ZjLmdldFRvY1N0cnVjdHVyZSh0aGlzLmNvbnRlbnQsIHRoaXMudG9jU3RydWN0dXJlKVxuICAgICAgZm9yIChjb25zdCBwcm9nVHlwZSBpbiB0aGlzLnRvY1N0cnVjdHVyZSkge1xuICAgICAgICBpZiAodGhpcy50b2NTdHJ1Y3R1cmVbcHJvZ1R5cGVdID4gMCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmF0aW5nU3VtbWFyeSAmJiBPYmplY3Qua2V5cyh0aGlzLnJhdGluZ1N1bW1hcnkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZmV0Y2hSYXRpbmdTdW1tYXJ5KClcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wZXRlbmNpZXNPYmplY3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5sb2FkQ29tcGV0ZW5jaWVzKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jb250ZW50SWQgJiYgdGhpcy5jb250ZW50LmNvbnRlbnRJZC5pbmNsdWRlcygnZXh0XycpKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBldGVuY2llc09iamVjdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmxvYWRDb21wZXRlbmNpZXMoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbnRlbnRSZWFkRGF0YSkge1xuICAgICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YVsnc3ViVGhlbWUnXSA9IHRoaXMuZ2V0U3ViVGhlbWVzKClcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQ0FTRV9TVFVEWSkge1xuICAgICAgICB0aGlzLmRpc2FibGVDZXJ0aWZpY2F0ZSA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhPy5zZWN0b3JEZXRhaWxzX3YxKSB7XG4gICAgICAgIC8vIFBhcnNlIHN0cmluZyB0byBhcnJheSBpZiBuZWVkZWRcbiAgICAgICAgbGV0IHNlY3RvckRldGFpbHNBcnJheSA9IHRoaXMuY29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjFcblxuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nLCB0cnkgdG8gcGFyc2UgaXQgaW50byBhbiBhcnJheVxuICAgICAgICBpZiAodHlwZW9mIHNlY3RvckRldGFpbHNBcnJheSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VjdG9yRGV0YWlsc0FycmF5ID0gSlNPTi5wYXJzZShzZWN0b3JEZXRhaWxzQXJyYXkpXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YS5zZWN0b3JEZXRhaWxzX3YxID0gc2VjdG9yRGV0YWlsc0FycmF5XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBzZWN0b3JEZXRhaWxzX3YxOicsIGUpXG4gICAgICAgICAgICBzZWN0b3JEZXRhaWxzQXJyYXkgPSBbXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3Mgb25seSBpZiB3ZSBoYXZlIGEgdmFsaWQgYXJyYXkgd2l0aCBpdGVtc1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWN0b3JEZXRhaWxzQXJyYXkpICYmIHNlY3RvckRldGFpbHNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gRXh0cmFjdCB1bmlxdWUgc2VjdG9ycyB1c2luZyBsb2Rhc2hcbiAgICAgICAgICB0aGlzLnNlY3RvcnNMaXN0ID0gXy51bmlxQnkoXG4gICAgICAgICAgICBzZWN0b3JEZXRhaWxzQXJyYXlcbiAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5zZWN0b3JOYW1lICYmIGl0ZW0/LnNlY3RvcklkKVxuICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgc2VjdG9ySWQ6IGl0ZW0uc2VjdG9ySWQsXG4gICAgICAgICAgICAgICAgc2VjdG9yTmFtZTogaXRlbS5zZWN0b3JOYW1lXG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICdzZWN0b3JOYW1lJ1xuICAgICAgICAgIClcblxuICAgICAgICAgIC8vIEV4dHJhY3QgdW5pcXVlIHN1YnNlY3RvcnMgdXNpbmcgbG9kYXNoXG4gICAgICAgICAgdGhpcy5zdWJTZWN0b3JzTGlzdCA9IF8udW5pcUJ5KFxuICAgICAgICAgICAgc2VjdG9yRGV0YWlsc0FycmF5XG4gICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uc3ViU2VjdG9yTmFtZSAmJiBpdGVtPy5zdWJTZWN0b3JJZClcbiAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHN1YlNlY3RvcklkOiBpdGVtLnN1YlNlY3RvcklkLFxuICAgICAgICAgICAgICAgIHN1YlNlY3Rvck5hbWU6IGl0ZW0uc3ViU2VjdG9yTmFtZVxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAnc3ViU2VjdG9yTmFtZSdcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKVxuICAgICBpZiAoY2hhbmdlcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmlzRXh0ZXJuYWxDb250ZW50ID0gXy5nZXQoY2hhbmdlcywgJ2NvbnRlbnQuY3VycmVudFZhbHVlLmNvbnRlbnRJZCcsICcnKS50b1N0cmluZygpLmluY2x1ZGVzKCdleHRfJylcbiAgICB9XG4gIH1cblxuICBnZXRTdWJUaGVtZXMoKTogYW55W10ge1xuICAgIGNvbnN0IHN1YlRoZW1lQXJyOiBhbnlbXSA9IFtdXG4gICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhICYmIHRoaXMuY29tcGVudGVuY3lLZXkgJiYgdGhpcy5jb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XSAmJiB0aGlzLmNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldLmxlbmd0aCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldID09PSAnc3RyaW5nJyAmJiB0aGlzLmNoZWNrVmFsaWRKU09OKHRoaXMuY29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0pKSB7XG4gICAgICAgIHRoaXMuY29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0gPSBKU09OLnBhcnNlKHRoaXMuY29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0pXG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldLmZvckVhY2goKF9jb21wZXRlbmN5T2JqOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHN1YlRoZW1lQXJyLmluZGV4T2YoX2NvbXBldGVuY3lPYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeVN1YlRoZW1lXSkgPT09IC0xKSB7XG4gICAgICAgICAgc3ViVGhlbWVBcnIucHVzaChfY29tcGV0ZW5jeU9ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5U3ViVGhlbWVdKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gc3ViVGhlbWVBcnJcbiAgfVxuXG4gIGxvYWRDb21wZXRlbmNpZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XSAmJiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNvbXBldGVuY2llc09iamVjdDogYW55ID0ge31cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0gPT09ICdzdHJpbmcnXG4gICAgICAgICYmIHRoaXMuY2hlY2tWYWxpZEpTT04odGhpcy5iYXNlQ29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0pKSB7XG4gICAgICAgIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldID0gSlNPTi5wYXJzZSh0aGlzLmJhc2VDb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XSlcbiAgICAgIH1cbiAgICAgIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldLmZvckVhY2goKF9vYmo6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY29tcGV0ZW5jaWVzT2JqZWN0W19vYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeUFyZWFdXSkge1xuICAgICAgICAgIGlmIChjb21wZXRlbmNpZXNPYmplY3RbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5QXJlYV1dXG4gICAgICAgICAgW19vYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeVRoZW1lXV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lUaGVtZSA9IGNvbXBldGVuY2llc09iamVjdFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lBcmVhXV1cbiAgICAgICAgICAgIFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lUaGVtZV1dXG4gICAgICAgICAgICBpZiAoY29tcGV0ZW5jeVRoZW1lLmluZGV4T2YoX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5U3ViVGhlbWVdKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lLnB1c2goX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5U3ViVGhlbWVdKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wZXRlbmNpZXNPYmplY3RbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5QXJlYV1dXG4gICAgICAgICAgICBbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5VGhlbWVdXSA9IFtdXG4gICAgICAgICAgICBjb21wZXRlbmNpZXNPYmplY3RbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5QXJlYV1dXG4gICAgICAgICAgICBbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5VGhlbWVdXVxuICAgICAgICAgICAgICAucHVzaChfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lTdWJUaGVtZV0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbXBldGVuY2llc09iamVjdFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lBcmVhXV0gPSB7fVxuICAgICAgICAgIGNvbXBldGVuY2llc09iamVjdFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lBcmVhXV1bX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5VGhlbWVdXSA9IFtdXG4gICAgICAgICAgY29tcGV0ZW5jaWVzT2JqZWN0W19vYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeUFyZWFdXVtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lUaGVtZV1dXG4gICAgICAgICAgICAucHVzaChfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lTdWJUaGVtZV0pXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbXBldGVuY2llc09iamVjdCkge1xuICAgICAgICBpZiAoY29tcGV0ZW5jaWVzT2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBjb25zdCBfdGVtcDogYW55ID0ge31cbiAgICAgICAgICBfdGVtcFsna2V5J10gPSBrZXlcbiAgICAgICAgICBfdGVtcFsndmFsdWUnXSA9IGNvbXBldGVuY2llc09iamVjdFtrZXldXG4gICAgICAgICAgdGhpcy5jb21wZXRlbmNpZXNPYmplY3QucHVzaChfdGVtcClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVTaG93Q29tcGV0ZW5jaWVzKHRoaXMuY29tcGV0ZW5jaWVzT2JqZWN0WzBdKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNob3dDb21wZXRlbmNpZXMoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb21wZXRlbmN5U2VsZWN0ZWQgPSBpdGVtLmtleVxuICAgIGNvbnN0IHZhbHVlT2JqID0gaXRlbS52YWx1ZVxuICAgIGNvbnN0IGNvbXBldGVuY3lBcnJheSA9IFtdXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWVPYmopIHtcbiAgICAgIGlmICh2YWx1ZU9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IF90ZW1wT2JqOiBhbnkgPSB7fVxuICAgICAgICBfdGVtcE9ialsna2V5J10gPSBrZXlcbiAgICAgICAgX3RlbXBPYmpbJ3ZhbHVlJ10gPSB2YWx1ZU9ialtrZXldXG4gICAgICAgIGNvbXBldGVuY3lBcnJheS5wdXNoKF90ZW1wT2JqKVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnN0cmlwWydsb2FkZXJXaWRnZXRzJ10gPSBbXVxuICAgIHRoaXMuc3RyaXBbJ2xvYWRlcldpZGdldHMnXSA9IHRoaXMudHJhbnNmb3JtQ29tcGV0ZW5jaWVzVG9XaWRnZXQodGhpcy5jb21wZXRlbmN5U2VsZWN0ZWQsIGNvbXBldGVuY3lBcnJheSwgdGhpcy5zdHJpcClcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQ29tcGV0ZW5jaWVzVG9XaWRnZXQoXG4gICAgY29tcGV0ZW5jeUFyZWE6IHN0cmluZyxcbiAgICBjb21wZXRlbmN5QXJyT2JqZWN0OiBhbnksXG4gICAgc3RyaXA6IE5zQ29udGVudFN0cmlwV2l0aFRhYnMuSUNvbnRlbnRTdHJpcFVuaXQpIHtcbiAgICByZXR1cm4gKGNvbXBldGVuY3lBcnJPYmplY3QgfHwgW10pLm1hcCgoY29udGVudDogYW55LCBpZHg6IG51bWJlcikgPT4gKFxuICAgICAgY29udGVudCA/IHtcbiAgICAgICAgd2lkZ2V0VHlwZTogJ2NhcmQnLFxuICAgICAgICB3aWRnZXRTdWJUeXBlOiAnY29tcGV0ZW5jeUNhcmQnLFxuICAgICAgICB3aWRnZXRIb3N0Q2xhc3M6ICdtci00JyxcbiAgICAgICAgd2lkZ2V0RGF0YToge1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgY29tcGV0ZW5jeUFyZWEsXG4gICAgICAgICAgY2FyZEN1c3RvbWVDbGFzczogc3RyaXAuY3VzdG9tZUNsYXNzID8gc3RyaXAuY3VzdG9tZUNsYXNzIDogJycsXG4gICAgICAgICAgY29udGV4dDogeyBwYWdlU2VjdGlvbjogc3RyaXAua2V5LCBwb3NpdGlvbjogaWR4IH0sXG4gICAgICAgIH0sXG4gICAgICB9IDoge1xuICAgICAgICB3aWRnZXRUeXBlOiAnY2FyZCcsXG4gICAgICAgIHdpZGdldFN1YlR5cGU6ICdjb21wZXRlbmN5Q2FyZCcsXG4gICAgICAgIHdpZGdldEhvc3RDbGFzczogJ21yLTQnLFxuICAgICAgICB3aWRnZXREYXRhOiB7fSxcbiAgICAgIH1cbiAgICApKVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVBhcnNlSnNvbkRhdGEoczogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZFN0cmluZyA9IEpTT04ucGFyc2UocylcbiAgICAgIHJldHVybiBwYXJzZWRTdHJpbmdcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXG4gIGZldGNoUmF0aW5nU3VtbWFyeSgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5pZGVudGlmaWVyICYmIHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkpIHtcbiAgICAgIHRoaXMucmF0aW5nU2VydmljZS5nZXRSYXRpbmdTdW1tYXJ5KHRoaXMuY29udGVudC5pZGVudGlmaWVyLCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5KS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgICAgICB0aGlzLnJhdGluZ1N1bW1hcnkgPSByZXMucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmF0aW5nU3VtbWFyeSA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEhpZGUgbG9hZGVyIGZvciBNYXREaWFsb2cuLi5cbiAgICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHsgdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGlzcGxheUxvYWRlciA9IGZhbHNlIH1cbiAgICAgICAgICB0aGlzLnJhdGluZ1N1bW1hcnlQcm9jZXNzZWQgPSB0aGlzLnByb2Nlc3NSYXRpbmdTdW1tYXJ5KClcbiAgICAgICAgICAvLyB0aGlzLmZldGNoUmF0aW5nTG9va3VwKClcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKCdVU0VSIFJBVElORyBGRVRDSCBFUlJPUiA+JywgZXJyKVxuICAgICAgICAgIHRoaXMubWF0U25hY2tCYXIub3BlbignVW5hYmxlIHRvIGZldGNoIHJhdGluZyBzdW1tYXJ5LCBkdWUgdG8gc29tZSBlcnJvciEnKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgZmV0Y2hSYXRpbmdMb29rdXAoKSB7XG4gICAgdGhpcy5kaXNwbGF5TG9hZGVyID0gdHJ1ZVxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmlkZW50aWZpZXIgJiYgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSkge1xuICAgICAgY29uc3QgcmVxID0ge1xuICAgICAgICBhY3Rpdml0eUlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgYWN0aXZpdHlUeXBlOiB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5LFxuICAgICAgICBsaW1pdDogdGhpcy5sb29rdXBMaW1pdCxcbiAgICAgICAgLi4uKCh0aGlzLmxhc3RMb29rVXAgJiYgdGhpcy5sYXN0TG9va1VwLnVwZGF0ZWRPblVVSUQpID8geyB1cGRhdGVPbjogKHRoaXMubGFzdExvb2tVcCAmJiB0aGlzLmxhc3RMb29rVXAudXBkYXRlZE9uVVVJRCkgfSA6IG51bGwpLFxuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdGluZ1NlcnZpY2UuZ2V0UmF0aW5nTG9va3VwKHJlcSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBUbyBkaXNhYmxlIHRoZSBsb2FkZXIgaW4gdGhlIG1vZGFsLlxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGlzcGxheUxvYWRlciA9IGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMucmVzdWx0ICYmIHJlcy5yZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJldmlld1BhZ2UgPiAxKSB7XG4gICAgICAgICAgICAgIHJlcy5yZXN1bHQucmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmF0aW5nTG9va3VwLmZpbmQoKG86IGFueSkgPT4gby51cGRhdGVkT25VVUlEID09PSBpdGVtLnVwZGF0ZWRPblVVSUQpKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJhdGluZ0xvb2t1cC5wdXNoKGl0ZW0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5yYXRpbmdMb29rdXAgPSByZXMucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5wcm9jZXNzUmF0aW5nTG9va3VwKHJlcy5yZXN1bHQucmVzcG9uc2UpXG4gICAgICAgIH0sXG4gICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikgeyAgIC8vIFRvIGRpc2FibGUgdGhlIGxvYWRlciBpbiB0aGUgbW9kYWwuXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kaXNwbGF5TG9hZGVyID0gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ1VTRVIgUkFUSU5HIEZFVENIIEVSUk9SID4nLCBlcnIpXG4gICAgICAgICAgdGhpcy5tYXRTbmFja0Jhci5vcGVuKCdVbmFibGUgdG8gbG9hZCByZXZpZXdzLCBkdWUgdG8gc29tZSBlcnJvciEnKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJvY2Vzc1JhdGluZ0xvb2t1cChyZXNwb25zZTogYW55KSB7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UubGVuZ3RoIDwgdGhpcy5sb29rdXBMaW1pdCkge1xuICAgICAgICB0aGlzLmRpc2FibGVMb2FkTW9yZSA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUxvYWRNb3JlID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIHRoaXMubGFzdExvb2tVcCA9IHJlc3BvbnNlW3Jlc3BvbnNlLmxlbmd0aCAtIDFdXG4gICAgICB0aGlzLnJhdGluZ1Jldmlld3MgPSB0aGlzLnJhdGluZ0xvb2t1cFxuICAgICAgdGhpcy5hdXRoUmVwbGllcyA9IFtdXG4gICAgICB0aGlzLmF1dGhSZXBsaWVzID0gXy5rZXlCeSh0aGlzLmxhdGVzdFJldmlld3MsICd1c2VySWQnKVxuICAgICAgY29uc3QgdXNlcklkcyA9IF8ubWFwKHRoaXMubGF0ZXN0UmV2aWV3cywgJ3VzZXJJZCcpXG4gICAgICBpZiAodGhpcy5jb250ZW50ICYmIHVzZXJJZHMpIHtcbiAgICAgICAgdGhpcy5nZXRBdXRob3JSZXBseSh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSwgdXNlcklkcylcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucmF0aW5nUmV2aWV3cykge1xuICAgICAgICB0aGlzLnJhdGluZ1Jldmlld3MgPSB0aGlzLnJhdGluZ1Jldmlld3Muc2xpY2UoKVxuICAgICAgICB0aGlzLnJldmlld0RhdGFTZXJ2aWNlLnNldFJldmlld0RhdGEodGhpcy5yYXRpbmdSZXZpZXdzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEF1dGhvclJlcGx5KGlkZW50aWZpZXI6IHN0cmluZywgcHJpbWFyeUNhdGVnb3J5OiBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeSwgdXNlcklkczogYW55W10pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBhY3Rpdml0eUlkOiBpZGVudGlmaWVyLFxuICAgICAgICBhY3Rpdml0eVR5cGU6IHByaW1hcnlDYXRlZ29yeSxcbiAgICAgICAgdXNlcklkOiB1c2VySWRzLFxuICAgICAgfSxcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yYXRpbmdTZXJ2aWNlLmdldFJhdGluZ1JlcGx5KHJlcXVlc3QpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5jb250ZW50KSB7XG4gICAgICAgICAgY29uc3QgcmF0aW5nQXV0aFJlcGxheSA9IHJlcy5yZXN1bHQuY29udGVudFxuICAgICAgICAgIF8uZm9yRWFjaChyYXRpbmdBdXRoUmVwbGF5LCB2YWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRoUmVwbGllc1t2YWx1ZS51c2VySWRdKSB7XG4gICAgICAgICAgICAgIHRoaXMuYXV0aFJlcGxpZXNbdmFsdWUudXNlcklkXVsnY29tbWVudCddID0gdmFsdWUuY29tbWVudFxuICAgICAgICAgICAgICB0aGlzLmF1dGhSZXBsaWVzW3ZhbHVlLnVzZXJJZF1bJ3VzZXJJZCddID0gdmFsdWUudXNlcklkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF0ZXN0UmV2aWV3cyA9IE9iamVjdC52YWx1ZXModGhpcy5hdXRoUmVwbGllcylcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFJlcGxpZXNcbiAgICAgIH0sXG4gICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKCdVU0VSIFJBVElORyBGRVRDSCBFUlJPUiA+JywgZXJyKVxuICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBmZXRjaCBhdXRob3IgcmVwbGllcywgZHVlIHRvIHNvbWUgZXJyb3IhJylcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBjb3VudFN0YXJzUGVyY2VudGFnZSh2YWx1ZTogYW55LCBrZXk6IGFueSwgdG90YWw6IGFueSkge1xuICAgIGlmICh2YWx1ZSAmJiB0b3RhbCkge1xuICAgICAgcmV0dXJuICgoKHZhbHVlICoga2V5KSAvIHRvdGFsKSAqIDEwMCkudG9GaXhlZCgyKVxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG5cbiAgcHJvY2Vzc1JhdGluZ1N1bW1hcnkoKSB7XG4gICAgY29uc3QgYnJlYWtEb3duQXJyYXk6IGFueVtdID0gW11cbiAgICBjb25zdCByYXRpbmdTdW1tYXJ5UHIgPSB7XG4gICAgICBicmVha0Rvd246IGJyZWFrRG93bkFycmF5LFxuICAgICAgbGF0ZXN0NTBSZXZpZXdzOiBicmVha0Rvd25BcnJheSxcbiAgICAgIHJhdGluZ3NOdW1iZXI6IGJyZWFrRG93bkFycmF5LFxuICAgICAgdG90YWxfbnVtYmVyX29mX3JhdGluZ3M6IF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsX251bWJlcl9vZl9yYXRpbmdzJykgfHwgMCxcbiAgICAgIGF2Z1JhdGluZzogMCxcbiAgICB9XG5cbiAgICBjb25zdCB0b3RSYXRpbmdzID0gXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAnc3VtX29mX3RvdGFsX3JhdGluZ3MnKSB8fCAwXG4gICAgcmF0aW5nU3VtbWFyeVByLmJyZWFrRG93bi5wdXNoKHtcbiAgICAgIHBlcmNlbnQ6IHRoaXMuY291bnRTdGFyc1BlcmNlbnRhZ2UoXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAndG90YWxjb3VudDFzdGFycycpLCAxLCB0b3RSYXRpbmdzKSxcbiAgICAgIGtleTogMSxcbiAgICAgIHZhbHVlOiBfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50MXN0YXJzJyksXG4gICAgfSlcbiAgICByYXRpbmdTdW1tYXJ5UHIuYnJlYWtEb3duLnB1c2goe1xuICAgICAgcGVyY2VudDogdGhpcy5jb3VudFN0YXJzUGVyY2VudGFnZShfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50MnN0YXJzJyksIDIsIHRvdFJhdGluZ3MpLFxuICAgICAga2V5OiAyLFxuICAgICAgdmFsdWU6IF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsY291bnQyc3RhcnMnKSxcbiAgICB9KVxuICAgIHJhdGluZ1N1bW1hcnlQci5icmVha0Rvd24ucHVzaCh7XG4gICAgICBwZXJjZW50OiB0aGlzLmNvdW50U3RhcnNQZXJjZW50YWdlKF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsY291bnQzc3RhcnMnKSwgMywgdG90UmF0aW5ncyksXG4gICAgICBrZXk6IDMsXG4gICAgICB2YWx1ZTogXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAndG90YWxjb3VudDNzdGFycycpLFxuICAgIH0pXG4gICAgcmF0aW5nU3VtbWFyeVByLmJyZWFrRG93bi5wdXNoKHtcbiAgICAgIHBlcmNlbnQ6IHRoaXMuY291bnRTdGFyc1BlcmNlbnRhZ2UoXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAndG90YWxjb3VudDRzdGFycycpLCA0LCB0b3RSYXRpbmdzKSxcbiAgICAgIGtleTogNCxcbiAgICAgIHZhbHVlOiBfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50NHN0YXJzJyksXG4gICAgfSlcbiAgICByYXRpbmdTdW1tYXJ5UHIuYnJlYWtEb3duLnB1c2goe1xuICAgICAgcGVyY2VudDogdGhpcy5jb3VudFN0YXJzUGVyY2VudGFnZShfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50NXN0YXJzJyksIDUsIHRvdFJhdGluZ3MpLFxuICAgICAga2V5OiA1LFxuICAgICAgdmFsdWU6IF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsY291bnQ1c3RhcnMnKSxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucmF0aW5nU3VtbWFyeSAmJiB0aGlzLnJhdGluZ1N1bW1hcnkubGF0ZXN0NTBSZXZpZXdzKSB7XG4gICAgICBjb25zdCBsYXRlc3Q1MFJldmlld3MgPSBKU09OLnBhcnNlKHRoaXMucmF0aW5nU3VtbWFyeS5sYXRlc3Q1MFJldmlld3MpXG4gICAgICBjb25zdCBtb2RpZmllZFJldmlld3MgPSBfLm1hcChsYXRlc3Q1MFJldmlld3MsIHJhdGluZyA9PiB7XG4gICAgICAgIHJhdGluZ1sndXNlcklkJ10gPSByYXRpbmcudXNlcl9pZFxuICAgICAgICByZXR1cm4gcmF0aW5nXG4gICAgICB9KVxuICAgICAgdGhpcy5hdXRoUmVwbGllcyA9IFtdXG4gICAgICB0aGlzLmF1dGhSZXBsaWVzID0gXy5rZXlCeShsYXRlc3Q1MFJldmlld3MsICd1c2VyX2lkJylcbiAgICAgIGNvbnN0IHVzZXJJZHMgPSBfLm1hcChsYXRlc3Q1MFJldmlld3MsICd1c2VyX2lkJylcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5nZXRBdXRob3JSZXBseSh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSwgdXNlcklkcylcbiAgICAgIH1cblxuICAgICAgcmF0aW5nU3VtbWFyeVByLmxhdGVzdDUwUmV2aWV3cyA9IG1vZGlmaWVkUmV2aWV3c1xuICAgICAgdGhpcy5yYXRpbmdSZXZpZXdzID0gbW9kaWZpZWRSZXZpZXdzXG4gICAgICB0aGlzLnRvcFJhdGluZ1Jldmlld3MgPSBtb2RpZmllZFJldmlld3NcbiAgICB9XG4gICAgLy8gVG8gcGFzcyBkYXRhIHRvIHRoZSByZXZpZXcgY29udGVudFxuICAgIHRoaXMucmV2aWV3RGF0YVNlcnZpY2Uuc2V0UmV2aWV3RGF0YSh0aGlzLnJhdGluZ1Jldmlld3MpXG5cbiAgICBpZiAodGhpcy5yYXRpbmdTdW1tYXJ5ICYmIHRoaXMucmF0aW5nU3VtbWFyeS50b3RhbF9udW1iZXJfb2ZfcmF0aW5ncykge1xuICAgICAgcmF0aW5nU3VtbWFyeVByLmF2Z1JhdGluZyA9XG4gICAgICAgIHBhcnNlRmxvYXQoKHRoaXMucmF0aW5nU3VtbWFyeS5zdW1fb2ZfdG90YWxfcmF0aW5ncyAvIHRoaXMucmF0aW5nU3VtbWFyeS50b3RhbF9udW1iZXJfb2ZfcmF0aW5ncykudG9GaXhlZCgxKSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQuYXZlcmFnZVJhdGluZyA9IHJhdGluZ1N1bW1hcnlQci5hdmdSYXRpbmdcbiAgICAgIHRoaXMuY29udGVudC50b3RhbFJhdGluZyA9IHJhdGluZ1N1bW1hcnlQci50b3RhbF9udW1iZXJfb2ZfcmF0aW5nc1xuICAgIH1cbiAgICByZXR1cm4gcmF0aW5nU3VtbWFyeVByXG4gIH1cblxuICBoYW5kbGVDYXBpdGFsaXplKHN0cjogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdGVtcFN0ciA9IHN0clxuICAgIGlmICh0ZW1wU3RyKSB7XG4gICAgICB0ZW1wU3RyID0gdGVtcFN0ci5zcGxpdCgnX3gwMDBEXywnKS5qb2luKCcnKVxuICAgIH1cbiAgICBsZXQgcmV0dXJuVmFsdWUgPSAnJ1xuICAgIGlmICh0ZW1wU3RyICYmIHR5cGUgPT09ICduYW1lJykge1xuICAgICAgcmV0dXJuVmFsdWUgPSB0ZW1wU3RyLnNwbGl0KCcgJykubWFwKF9zdHIgPT4ge1xuICAgICAgICByZXR1cm4gX3N0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIF9zdHIuc2xpY2UoMSlcbiAgICAgIH0pLmpvaW4oJyAnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm5WYWx1ZSA9IHRlbXBTdHIgJiYgKHRlbXBTdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZW1wU3RyLnNsaWNlKDEpKVxuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuVmFsdWVcbiAgfVxuXG4gIGhhbmRsZU9wZW5SZXZpZXdNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUmV2aWV3c0NvbnRlbnRDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YTogeyByYXRpbmdzOiB0aGlzLnJhdGluZ1N1bW1hcnlQcm9jZXNzZWQsIHJldmlld3M6IHRoaXMuYXV0aFJlcGxpZXMsIGxhdGVzdFJldmlld3M6IHRoaXMucmF0aW5nTG9va3VwIH0sXG4gICAgICBwYW5lbENsYXNzOiAncmF0aW5ncy1tb2RhbC1ib3gnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgIH0pXG5cbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoX3Jlc3VsdDogYW55KSA9PiB7XG4gICAgfSlcblxuICAgIHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmluaXRpYXRlTG9hZE1vcmUuc3Vic2NyaWJlKChfdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5sb2FkTW9yZShfdmFsdWUpXG4gICAgfSlcblxuICAgIHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmxvYWRMYXRlc3RSZXZpZXdzLnN1YnNjcmliZSgoX3ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRpc3BsYXlMb2FkZXIgPSB0cnVlXG4gICAgICB0aGlzLnJhdGluZ1ZpZXdDb3VudCA9IHRoaXMucmF0aW5nVmlld0NvdW50RGVmYXVsdFxuICAgICAgdGhpcy5sYXN0TG9va1VwID0gJydcbiAgICAgIHRoaXMucmF0aW5nUmV2aWV3cyA9IFtdXG4gICAgICB0aGlzLnJldmlld1BhZ2UgPSAxXG4gICAgICB0aGlzLmRpc2FibGVMb2FkTW9yZSA9IGZhbHNlXG4gICAgICB0aGlzLnJhdGluZ0xvb2t1cCA9IFtdXG4gICAgICBpZiAoIXRoaXMuZm9yUHJldmlldykge1xuICAgICAgICBpZiAoX3ZhbHVlID09PSAnTGF0ZXN0Jykge1xuICAgICAgICAgIHRoaXMuZmV0Y2hSYXRpbmdMb29rdXAoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmV0Y2hSYXRpbmdTdW1tYXJ5KClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBsb2FkTW9yZShzZWxlY3RlZFJldmlldzogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVMb2FkTW9yZSkge1xuICAgICAgdGhpcy5sb29rdXBMb2FkaW5nID0gdHJ1ZVxuICAgICAgdGhpcy5yZXZpZXdQYWdlID0gdGhpcy5yZXZpZXdQYWdlICsgMVxuICAgICAgdGhpcy5yYXRpbmdWaWV3Q291bnQgPSB0aGlzLnJldmlld1BhZ2UgKiB0aGlzLnJldmlld0RlZmF1bHRMaW1pdFxuICAgICAgaWYgKHNlbGVjdGVkUmV2aWV3ID09PSAnTGF0ZXN0Jykge1xuICAgICAgICB0aGlzLnJldmlld1BhZ2UgPSB0aGlzLnJldmlld1BhZ2UgKyAxXG4gICAgICAgIHRoaXMucmF0aW5nVmlld0NvdW50ID0gdGhpcy5yZXZpZXdQYWdlICogdGhpcy5yZXZpZXdEZWZhdWx0TGltaXRcbiAgICAgICAgdGhpcy5mZXRjaFJhdGluZ0xvb2t1cCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKHRoaXMucmV2aWV3UGFnZSAqIHRoaXMucmF0aW5nVmlld0NvdW50KSA+IHRoaXMucmF0aW5nUmV2aWV3cy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmRpc2FibGVMb2FkTW9yZSA9IHRydWVcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kaXNwbGF5TG9hZGVyID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJldmlld1BhZ2UgPSB0aGlzLnJldmlld1BhZ2UgKyAxXG4gICAgICAgIHRoaXMucmF0aW5nVmlld0NvdW50ID0gdGhpcy5yZXZpZXdQYWdlICogdGhpcy5yYXRpbmdWaWV3Q291bnRcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvRGlzY3Vzc2lvbkh1YigpIHtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBtZW51T3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgcm91dGU6ICdhbGwtZGlzY3Vzc2lvbnMnLFxuICAgICAgICAgIGxhYmVsOiAnQWxsIGRpc2N1c3Npb25zJyxcbiAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICByb3V0ZTogJ2NhdGVnb3JpZXMnLFxuICAgICAgICAgIGxhYmVsOiAnQ2F0ZWdvcmllcycsXG4gICAgICAgICAgZW5hYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcm91dGU6ICd0YWdzJyxcbiAgICAgICAgICBsYWJlbDogJ1RhZ3MnLFxuICAgICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHJvdXRlOiAnbXktZGlzY3Vzc2lvbicsXG4gICAgICAgICAgbGFiZWw6ICdZb3VyIGRpc2N1c3Npb24nLFxuICAgICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgIHJvdXRlOiAnbGVhZGVyYm9hcmQnLFxuICAgICAgICAvLyAgIGxhYmVsOiAnTGVhZGVyIEJvYXJkJyxcbiAgICAgICAgLy8gICBlbmFibGU6IHRydWUsXG4gICAgICAgIC8vIH0sXG4gICAgICBdLFxuICAgICAgdXNlck5hbWU6ICh0aGlzLmNvbmZpZ1NlcnZpY2Uubm9kZWJiVXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTZXJ2aWNlLm5vZGViYlVzZXJQcm9maWxlLnVzZXJuYW1lKSB8fCAnJyxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgaWQ6IDEsXG4gICAgICB9LFxuICAgICAgY2F0ZWdvcmllczogeyByZXN1bHQ6IFtdIH0sXG4gICAgICByb3V0ZXJTbHVnOiAnL2FwcCcsXG4gICAgICBoZWFkZXJPcHRpb25zOiBmYWxzZSxcbiAgICAgIGJhbm5lck9wdGlvbjogdHJ1ZSxcbiAgICB9XG4gICAgdGhpcy5kaXNjdXNzVXRpbGl0eVN2Yy5zZXREaXNjdXNzaW9uQ29uZmlnKGNvbmZpZylcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaG9tZScsIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwL2Rpc2N1c3Npb24tZm9ydW0nXSwgeyBxdWVyeVBhcmFtczogeyBwYWdlOiAnaG9tZScgfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyB9KVxuICB9XG5cbiAgaGFuZGxlQ2xpY2tPZkNsYWltKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUNsYWltU2VydmljZS5zZXRDbGFpbURhdGEoZXZlbnQpXG4gIH1cbiAgXG4gIGdldENvdXJzZUlkRm9yQ2VydGlmaWNhdGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbUlkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJyk7XG4gICAgaWYgKHRoaXMuY29udGVudD8uY29udGVudElkPy5pbmNsdWRlcygnZXh0XycpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZW50LmNvbnRlbnRJZDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHBhcmFtSWQgfHwgJyc7XG4gIH1cblxuICAvLyAgaGFuZGxlT3BlbkNlcnRpZmljYXRlRGlhbG9nKCkge1xuICAvLyAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSB0cnVlO1xuICAvLyAgIGNvbnN0IGNlcnRJZCA9IHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQ/LmNlcnRpZmljYXRlT2JqPy5jZXJ0SWQ7XG5cbiAgLy8gICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMucGFnZUNvbmZpZ0RhdGEpIHtcbiAgLy8gICAgIGNvbnN0IGFsbG93ZWRQcmltYXJ5Q2F0ZWdvcnkgPVxuICAvLyAgICAgICB0aGlzLnBhZ2VDb25maWdEYXRhPy5keW5hbWljQ2VydGlmaWNhdGVHZW5lcmF0aW9uPy5hbGxvd3MgJiZcbiAgLy8gICAgICAgdGhpcy5wYWdlQ29uZmlnRGF0YT8uZHluYW1pY0NlcnRpZmljYXRlR2VuZXJhdGlvbj8uYWxsb3dzPy5tYXAoXG4gIC8vICAgICAgICAgKGNhdDogc3RyaW5nKSA9PiBjYXQ/LnRvTG93ZXJDYXNlKClcbiAgLy8gICAgICAgKTtcblxuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBhbGxvd2VkUHJpbWFyeUNhdGVnb3J5ICYmXG4gIC8vICAgICAgKCBhbGxvd2VkUHJpbWFyeUNhdGVnb3J5LmluY2x1ZGVzKHRoaXMuY29udGVudD8ucHJpbWFyeUNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpKSB8fCBcbiAgLy8gICAgICAgYWxsb3dlZFByaW1hcnlDYXRlZ29yeS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpKSlcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAvLyAgICAgICAgIHJlcXVlc3Q6IHtcbiAgLy8gICAgICAgICAgIGNvdXJzZUlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgLy8gICAgICAgICAgIGJhdGNoSWQ6IHRoaXMuYmF0Y2hEYXRhPy5jb250ZW50WzBdPy5iYXRjaElkIHx8ICcnLFxuICAvLyAgICAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJQcm9maWxlLnVzZXJJZCxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICB9O1xuICAvLyAgICAgICB0aGlzLmNvbnRlbnRTdmMuZG93bmxvYWRDZXJ0VjIocGF5bG9hZCkuc3Vic2NyaWJlKFxuICAvLyAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAvLyAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gIC8vICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSBmYWxzZTtcbiAgICAgICAgICAgICBcbiAgLy8gICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAvLyAgICAgICAgICAgICAgIHdpZHRoOiAnMTIwMHB4JyxcbiAgLy8gICAgICAgICAgICAgICBkYXRhOiB7XG4gIC8vICAgICAgICAgICAgICAgICBjZXQ6IHJlc3BvbnNlLnJlc3VsdC5wcmludFVyaSxcbiAgLy8gICAgICAgICAgICAgICAgIGNlcnRJZDpcbiAgLy8gICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2VydGlmaWNhdGVPYmouY2VydElkKSB8fCAnJyxcbiAgLy8gICAgICAgICAgICAgICB9LFxuICAvLyAgICAgICAgICAgICB9KTtcbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gIC8vICAgICAgICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVCb29sID0gZmFsc2U7XG4gIC8vICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ0NFUlRJRklDQVRFIEZFVENIIEVSUk9SID4nLCBlcnJvcik7XG4gIC8vICAgICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oXG4gIC8vICAgICAgICAgICAgICdVbmFibGUgdG8gVmlldyBDZXJ0aWZpY2F0ZSwgZHVlIHRvIHNvbWUgZXJyb3IhJ1xuICAvLyAgICAgICAgICAgKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9IGVsc2Uge2RlYnVnZ2VyXG4gIC8vICAgICB0aGlzLmNvbnRlbnRTdmMuZG93bmxvYWRDZXJ0KGNlcnRJZCkuc3Vic2NyaWJlKFxuICAvLyAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgLy8gICAgICAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gIC8vICAgICAgICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVCb29sID0gZmFsc2U7XG4gIC8vICAgICAgICAgICB0aGlzLmNvbnRlbnRbJ2NlcnRpZmljYXRlT2JqJ11bJ2NlcnREYXRhJ10gPVxuICAvLyAgICAgICAgICAgICByZXNwb25zZS5yZXN1bHQucHJpbnRVcmk7XG4gIC8vICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gIC8vICAgICAgICAgICAgIHdpZHRoOiAnMTIwMHB4JyxcbiAgLy8gICAgICAgICAgICAgZGF0YToge1xuICAvLyAgICAgICAgICAgICAgIGNldDogcmVzcG9uc2UucmVzdWx0LnByaW50VXJpLFxuICAvLyAgICAgICAgICAgICAgIGNlcnRJZDogdGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jZXJ0aWZpY2F0ZU9iai5jZXJ0SWQsXG4gIC8vICAgICAgICAgICAgIH0sXG4gIC8vICAgICAgICAgICB9KTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0sXG4gIC8vICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gIC8vICAgICAgICAgdGhpcy5kb3dubG9hZENlcnRpZmljYXRlQm9vbCA9IGZhbHNlO1xuICAvLyAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcignQ0VSVElGSUNBVEUgRkVUQ0ggRVJST1IgPicsIGVycm9yKTtcbiAgLy8gICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oXG4gIC8vICAgICAgICAgICAnVW5hYmxlIHRvIFZpZXcgQ2VydGlmaWNhdGUsIHBsZWFzZSBjaGVjayBhZ2FpbiBsYXRlciEnXG4gIC8vICAgICAgICAgKTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgKTtcbiAgLy8gICB9XG4gIC8vICAgfSBcbiAgLy8gfVxuXG4gIGhhbmRsZU9wZW5DZXJ0aWZpY2F0ZURpYWxvZygpIHtcbiAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVCb29sID0gdHJ1ZVxuICAgIGNvbnN0IGNlcnRJZCA9IHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2VydGlmaWNhdGVPYmouY2VydElkXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2VydGlmaWNhdGVPYmogJiYgIXRoaXMuY29udGVudC5jZXJ0aWZpY2F0ZU9iai5jZXJ0RGF0YSkge1xuICAgICBpZiAoY2VydElkKSB7XG4gICAgICAgIHRoaXMuY29udGVudFN2Yy5kb3dubG9hZENlcnQoY2VydElkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5jb250ZW50WydjZXJ0aWZpY2F0ZU9iaiddWydjZXJ0RGF0YSddID0gcmVzcG9uc2UucmVzdWx0LnByaW50VXJpXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgIHdpZHRoOiAnMTIwMHB4JyxcbiAgICAgICAgICAgICAgZGF0YTogeyBjZXQ6IHJlc3BvbnNlLnJlc3VsdC5wcmludFVyaSwgY2VydElkOiB0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNlcnRpZmljYXRlT2JqLmNlcnRJZCB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVCb29sID0gZmFsc2VcbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ0NFUlRJRklDQVRFIEZFVENIIEVSUk9SID4nLCBlcnJvcilcbiAgICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBWaWV3IENlcnRpZmljYXRlLCBkdWUgdG8gc29tZSBlcnJvciEnKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVCb29sID0gZmFsc2VcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oQ2VydGlmaWNhdGVEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgd2lkdGg6ICcxMjAwcHgnLFxuICAgICAgICBkYXRhOiB7IGNldDogdGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jZXJ0aWZpY2F0ZU9iai5jZXJ0RGF0YSwgY2VydElkOiB0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNlcnRpZmljYXRlT2JqLmNlcnRJZCB9LFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBvcGVuU3VydmV5Rm9ybVBvcHVwKCkge1xuICAgIHRoaXMudHJpZ2VyQ29tcGxldGlvblN1cnZleUZvcm0uZW1pdCh0cnVlKTtcbiAgfVxuXG4gIGNoZWNrVmFsaWRKU09OKHN0cjogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2Uoc3RyKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBoYW5kbGVTdWJzZWN0b3IoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5zdWJTZWN0b3JEZXRhaWxBcnIgPSBbXVxuICAgIHRoaXMuc2VsZWN0ZWRTZWN0b3IgPSAnJ1xuICAgIHRoaXMuc2VsZWN0ZWRTZWN0b3JJZCA9ICcnXG4gICAgaWYgKHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuc2VjdG9yRGV0YWlsc192MS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5iYXNlQ29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjFbaV1bJ3NlY3RvcklkJ10gPT09IGl0ZW0uc2VjdG9ySWQpIHtcbiAgICAgICAgICBpZiAodGhpcy5iYXNlQ29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjFbaV1bJ3N1YlNlY3Rvck5hbWUnXSkge1xuICAgICAgICAgICAgbGV0IG9iaiA9IHt9XG4gICAgICAgICAgICBvYmogPSB7XG4gICAgICAgICAgICAgICdzZWN0b3JJZCc6IHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS5zZWN0b3JEZXRhaWxzX3YxW2ldWydzZWN0b3JJZCddLFxuICAgICAgICAgICAgICAnc2VjdG9yTmFtZSc6IHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS5zZWN0b3JEZXRhaWxzX3YxW2ldWydzZWN0b3JOYW1lJ10sXG4gICAgICAgICAgICAgICdrZXknOiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuc2VjdG9yRGV0YWlsc192MVtpXVsnc3ViU2VjdG9yTmFtZSddLFxuICAgICAgICAgICAgICAndmFsdWUnOiBbdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjFbaV1bJ3N1YlNlY3Rvck5hbWUnXV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3ViU2VjdG9yRGV0YWlsQXJyLnB1c2gob2JqKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZFNlY3RvciA9IGl0ZW0uc2VjdG9yTmFtZVxuICAgICAgdGhpcy5zZWxlY3RlZFNlY3RvcklkID0gaXRlbS5zZWN0b3JJZFxuXG5cbiAgICAgIGNvbnN0IHZhbHVlT2JqID0gaXRlbVxuICAgICAgY29uc3Qgc3ViU2VjdG9yQXJyYXkgPSBbXVxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWVPYmopIHtcbiAgICAgICAgaWYgKHZhbHVlT2JqLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBjb25zdCBfdGVtcE9iajogYW55ID0ge31cbiAgICAgICAgICBfdGVtcE9ialsna2V5J10gPSBrZXlcbiAgICAgICAgICBfdGVtcE9ialsndmFsdWUnXSA9IHZhbHVlT2JqW2tleV1cbiAgICAgICAgICBzdWJTZWN0b3JBcnJheS5wdXNoKF90ZW1wT2JqKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnN0cmlwWydzZWN0b3JXaWRnZXRzJ10gPSB0aGlzLnRyYW5zZm9ybUNvbXBldGVuY2llc1RvV2lkZ2V0KCdCZWhhdmlvdXJhbCcsIHRoaXMuc3ViU2VjdG9yRGV0YWlsQXJyLCB0aGlzLnN0cmlwKVxuICAgIH1cblxuICB9XG5cbiAgbmF2aWdhdGVUb05ld1ZlcnNpb24oKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2FwcC90b2MnLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtgYXBwL3RvYy8ke3RoaXMuY29udGVudFJlYWREYXRhPy5jb250ZW50VmVyc2lvbkluZm8/LmlkZW50aWZpZXJ9L292ZXJ2aWV3YF0pXG4gICAgfSlcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95U3ViamVjdCQudW5zdWJzY3JpYmUoKVxuICAgIHRoaXMudGltZXJVbnN1YnNjcmliZS51bnN1YnNjcmliZSgpXG4gICAgaWYodGhpcy5yZWZyZXNocmF0aW5nU3ViKXtcbiAgICAgIHRoaXMucmVmcmVzaHJhdGluZ1N1Yi51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9XG5cbn1cbiIsIlxuPG5nLXRlbXBsYXRlICNjZXJ0aWZpY2F0ZUNhcmQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkaXNhYmxlQ2VydGlmaWNhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2NrQ2VydGlmaWNhdGU7IGVsc2UgY2VydGlmaWNhdGVMb2NrXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VydGlmaWNhdGUtb3V0ZXItZGl2XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgY2VydGlmaWNhdGUtaW5mbyBwLTQgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFtiaW5kaW5nQ2xhc3NdPVwiJ2ZsZXggcm91bmRlZCdcIiBbd2lkdGhdPVwiJzIwMHB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCInMjRweCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbSBmb250LXNlbWlib2xkIGN1cnNvci1wb2ludGVyIHRydW5jYXRlLTNcIj57eyBjb250ZW50Py5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInRleHQteHMgZm9udC1saWdodFwiICpuZ0lmPVwiY29udGVudD8uY29tcGxldGVkT25cIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5jb21wbGV0ZWRDb3Vyc2UnIHwgdHJhbnNsYXRlIH19IHt7IGNvbnRlbnQ/LmNvbXBsZXRlZE9uID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudD8uY29tcGxldGVkT24gfCBkYXRlOiAnZCBNTU0sIHknKSA6ICdOQScgfX08L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyBmb250LWxpZ2h0XCIgKm5nSWY9XCJjb250ZW50Py5jb21wbGV0ZWRPblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5jb3Vyc2VDYXRlZ29yeTtlbHNlIHByaW1hcnlDYXRlZ29yeUNoZWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdhcHB0b2NzaW5nbGVwYWdlLmNvbXBsZXRlZE9uJyB8IHRyYW5zbGF0ZSB9fSB7e2NvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5fX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHB0b2NzaW5nbGVwYWdlLm9uJyB8IHRyYW5zbGF0ZSBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD8uY29tcGxldGVkT25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudD8uY29tcGxldGVkT24gfCBkYXRlOiAnZCBNTU0sIHknKSA6ICdOQScgfX1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcHJpbWFyeUNhdGVnb3J5Q2hlY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeSA9PT0gJ1N0YW5kYWxvbmUgQXNzZXNzbWVudCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY29tcGxldGVkQXNzZXNzbWVudCcgfCB0cmFuc2xhdGUgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD8uY29tcGxldGVkT25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudD8uY29tcGxldGVkT24gfCBkYXRlOiAnZCBNTU0sIHknKSA6ICdOQScgfX08L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgPT09ICdQcm9ncmFtJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnYXBwdG9jc2luZ2xlcGFnZS5jb21wbGV0ZWRQcm9ncmFtJyB8IHRyYW5zbGF0ZSB9fSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50Py5jb21wbGV0ZWRPbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250ZW50Py5jb21wbGV0ZWRPbiB8IGRhdGU6ICdkIE1NTSwgeScpIDogJ05BJyB9fTwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeSA9PT0gJ0NvdXJzZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY29tcGxldGVkQ291cnNlJyB8IHRyYW5zbGF0ZSB9fSB7eyBjb250ZW50Py5jb21wbGV0ZWRPblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250ZW50Py5jb21wbGV0ZWRPbiB8IGRhdGU6ICdkIE1NTSwgeScpIDogJ05BJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBkb3dubG9hZC1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW2JpbmRpbmdDbGFzc109XCInZmxleCByb3VuZGVkJ1wiIFt3aWR0aF09XCInMjRweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiJzI0cHgnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24gY3Vyc29yLXBvaW50ZXIgXCIgKm5nSWY9XCIhZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcGVuQ2VydGlmaWNhdGVEaWFsb2coKVwiPmFycm93X2Rvd253YXJkPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImRvd25sb2FkQ2VydGlmaWNhdGVCb29sXCIgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlhbWV0ZXJdPVwiMjBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbYmluZGluZ0NsYXNzXT1cIidmbGV4IHJvdW5kZWQnXCIgW3dpZHRoXT1cIicyODBweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCInMTQ4cHgnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlX2JveFwiICpuZ0lmPVwiIWNvbnRlbnQ/LmNlcnRpZmljYXRlT2JqPy5jZXJ0SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhZnJvbU1hcmtldFBsYWNlXCIgc3JjPVwiL2Fzc2V0cy9pY29ucy90b2Mvbm8tY2VydGlmaWNhdGUuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJObyBjZXJ0aWZpY2F0ZSBpbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiZnJvbU1hcmtldFBsYWNlXCIgc3JjPVwiL2Fzc2V0cy9pY29ucy90b2Mvbm8tY2VydGlmaWNhdGUtbWFya2V0LXBsYWNlLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiTm8gY2VydGlmaWNhdGUgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGNlcnRpZmljYXRlX292ZXJsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB0ZXh0LWNlbnRlciBnYXAtMSBwLTQgdGV4dC13aGl0ZSBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3snYXBwdG9jaG9tZS5jZXJ0aWZpY2F0aW9uVGFrZXNUaW1lJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXY+e3snYXBwdG9jaG9tZS5pc3N1ZVBlcnNpc3RzTWFpbHVzJyB8IHRyYW5zbGF0ZSB9fSBtaXNzaW9uLmthcm1heW9naUBnb3YuaW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3snYXBwdG9jaG9tZS5pc3N1ZVBlcnNpc3RzTWFpbHVzJyB8IHRyYW5zbGF0ZSB9fSA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCJtYWlsdG86bWlzc2lvbi5rYXJtYXlvZ2lAZ292LmluXCIgY2xhc3M9XCJlbWFpbERlZmF1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW9uLmthcm1heW9naUBnb3YuaW48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uY2VydGlmaWNhdGVPYmo/LmNlcnRJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltZy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiY2VsZWJyYXRpb24tYW5pbWF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ltYWdlcy9hbmltYXRpb24vbGVhZGVyYm9hcmRfYW5pbWF0aW9uLmdpZlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFmcm9tTWFya2V0UGxhY2VcIiBjbGFzcz1cImNlcml0aWZpY2F0ZS1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiJy9hc3NldHMvaWNvbnMvdG9jL25vLWNlcnRpZmljYXRlLnN2ZydcIiBhbHQ9XCJjZXJ0aWZpY2F0ZSBpbWFnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImZyb21NYXJrZXRQbGFjZVwiIGNsYXNzPVwiY2VyaXRpZmljYXRlLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCInL2Fzc2V0cy9pY29ucy90b2Mvbm8tY2VydGlmaWNhdGUtbWFya2V0LXBsYWNlLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJjZXJ0aWZpY2F0ZSBpbWFnZVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndmlldy1jZXJ0aWZpY2F0ZSc6IGRvd25sb2FkQ2VydGlmaWNhdGVCb29sLCAndmlldy1jZXJ0JzogIWRvd25sb2FkQ2VydGlmaWNhdGVCb29sfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiaGFuZGxlT3BlbkNlcnRpZmljYXRlRGlhbG9nKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWRvd25sb2FkQ2VydGlmaWNhdGVCb29sXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwdG9jY29udGVudGNhcmQudmlld0NlcnRpZmljYXRlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkb3dubG9hZENlcnRpZmljYXRlQm9vbFwiIGNsYXNzPVwidXBsb2FkZXItc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyPjwvbWF0LXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNlcnRpZmljYXRlT2JqPy5jZXJ0RGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImNlbGVicmF0aW9uLWFuaW1hdGlvblwiIHNyYz1cImFzc2V0cy9pbWFnZXMvYW5pbWF0aW9uL2xlYWRlcmJvYXJkX2FuaW1hdGlvbi5naWZcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiY2VyaXRpZmljYXRlLWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImNvbnRlbnQ/LmNlcnRpZmljYXRlT2JqPy5jZXJ0RGF0YSB8IHBpcGVTYWZlU2FuaXRpemVyOiAndXJsJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiY2VydGlmaWNhdGUgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0zIGNoaXBzLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3ViVGhlbWUgb2YgY29udGVudFJlYWREYXRhPy5zdWJUaGVtZTsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAgcm91bmRlZC1mdWxsIHAtMiB0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2hpZGRlbic6IChqID4gMSAmJiAhY29udGVudD8udmlld01vcmUpLCAnY2hpcC1lbGxpcHNpcyc6ICFjb250ZW50Py52aWV3TW9yZSAmJiBjb250ZW50Py5zdWJUaGVtZT8ubGVuZ3RoID4gMSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwic3ViVGhlbWVcIj57eyBzdWJUaGVtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHRleHQtcHJpbWFyeSB1bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRlbnQ/LnN1YlRoZW1lPy5sZW5ndGggPiAyICYmICFjb250ZW50Py52aWV3TW9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGVudC52aWV3TW9yZSA9ICFjb250ZW50LnZpZXdNb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydjb21wZXRlbmN5Q2FyZERldGFpbHMudmlld01vcmUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyIHRleHQteHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py52aWV3TW9yZVwiIChjbGljayk9XCJjb250ZW50LnZpZXdNb3JlID0gIWNvbnRlbnQudmlld01vcmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J2NvbXBldGVuY3lDYXJkRGV0YWlscy52aWV3TGVzcycgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNjZXJ0aWZpY2F0ZUxvY2s+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VydGlmaWNhdGUtb3V0ZXItZGl2IGxvY2tlZC1jZXJ0aWZpY2F0ZS1vdXRlci1kaXZcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VydGlmaWNhdGUtbG9jayBwLTQgZmxleCBmbGV4LWNvbCBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgY2VydGlmaWNhdGUtbG9jay10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnYXBwdG9jLmNlcnRpZmljYXRlTG9ja2VkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGZsZXgtY29sIHAtNCBnYXAtMiBsb2NraW5nLXNjcmVlblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL2xvY2tfd2h0LnN2Z1wiIGFsdD1cImxvY2sgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlTG9ja2VkVGV4dCBwYi0yXCI+e3snYXBwdG9jLmNlcnRpZmljYXRlTG9ja2VkTWVzc2FnZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2NraW5nLXNjcmVlbi1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J2FwcHRvYy51bmxvY2tDZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGV9fSA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN1cnZleUZvcm1lVGV4dFwiPnt7J2FwcHRvYy5zdXJ2ZXlGb3JtJyB8IHRyYW5zbGF0ZX19PC9zcGFuPiB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcHB0b2MudW5sb2NrQ2VydGlmaWNhdGUyJyB8IHRyYW5zbGF0ZSA6IHsgY291cnNlQ2F0ZWdvcnk6IGNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5ID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50Py5jb3Vyc2VDYXRlZ29yeSA6IGNvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeSB9IH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwic3VydmV5Rm9ybWVCdXR0b24gcHgtN1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TdXJ2ZXlGb3JtUG9wdXAoKVwiPnt7J2FwcHRvYy5jb21wbGV0ZVN1cnZleU5vdycgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb21wZXRlbmN5TGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cInB0LW13ZWItNCBtYXQtc3ViaGVhZGluZy0xIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIHt7ICdhcHB0b2NzaW5nbGVwYWdlLmNvbXBldGVuY2llcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyIHdzLW1hdC1ibGFjazYwLXRleHQgaW5mby1pY29uIG1hdC1pY29uIG5vdHJhbnNsYXRlIG1hdGVyaWFsLWljb25zIG1hdC1pY29uLW5vLWNvbG9yXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwiJ2JlbG93J1wiICN0b29sdGlwPVwibWF0VG9vbHRpcFwiIChjbGljayk9XCJ0b29sdGlwLnRvZ2dsZSgpXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5jb21wZXRlbmNpZXNUb29sdGlwJyB8IHRyYW5zbGF0ZSB9fVwiPmluZm9fb3V0bGluZTwvbWF0LWljb24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbXQtNFwiIFtuZ0NsYXNzXT1cImlzTW9iaWxlID8gJ214LTQnIDogJydcIlxuICAgICpuZ0lmPVwiY29udGVudFJlYWREYXRhPy5yZXRpcmVtZW50RGF0ZSAmJiBjb250ZW50UmVhZERhdGE/Lmxhc3RFbnJvbGxtZW50RGF0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGNvbnRlbnQtcmV0aXJlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgcmV0aXJlLWluZm8taWNvblwiPndhcm5pbmc8L21hdC1pY29uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvZHktMVwiPlRoaXMgY291cnNlIGlzIHNjaGVkdWxlZCBmb3IgcmV0aXJlbWVudC4gVGhlIGxhc3QgZGF0ZSB0byBlbnJvbGwgaXNcbiAgICAgICAgICAgICAgICB7e2NvbnRlbnRSZWFkRGF0YT8ubGFzdEVucm9sbG1lbnREYXRlIHwgZGF0ZTogJ01NTU0gZCwgeSd9fSwgYW5kXG4gICAgICAgICAgICAgICAgdGhlIGNvdXJzZSB3aWxsIGJlIHJldGlyZWQgb24ge3tjb250ZW50UmVhZERhdGE/LnJldGlyZW1lbnREYXRlIHwgZGF0ZTogJ01NTU0gZCwgeSd9fS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbXQtNCBteC00IGJsb2NrXCIgKm5nSWY9XCJpc01vYmlsZSAmJiBjb250ZW50UmVhZERhdGE/LmNvbnRlbnRWZXJzaW9uSW5mbz8uaWRlbnRpZmllclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xICBjdXJzb3ItcG9pbnRlciBzd2l0Y2gtdmVyc2lvblwiIChjbGljayk9XCJuYXZpZ2F0ZVRvTmV3VmVyc2lvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwibmF2aWdhdGVUb05ld1ZlcnNpb24oKVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1zd2l0Y2hcIj57eyAnYXBwdG9jLnN3aXRjaFRvTmV3VmVyc2lvbicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuXG48ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBteS00IHB4LTRcIiBbY2xhc3MubXQ2MF09XCJzdGlja3lcIiBbbmdDbGFzc109XCJpc01vYmlsZSA/ICcnIDogJ2dhcC0xMCdcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiKGNvbnRlbnQ/LmNvbXBsZXRpb25TdGF0dXMgPT09IDIgfHwgY29udGVudD8uY2VydGlmaWNhdGVPYmo/LmNlcnRJZCkgJiYgIWZyb21NYXJrZXRQbGFjZSAmJiAhZGlzYWJsZUNlcnRpZmljYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1jb250YWluZXJcIiAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZWFybmVkLWNlcnRpZmljYXRlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWJib25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VydGlmaWNhdGUtYmFja2dyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWFybmVkLWNlcnRpZmljYXRlXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY2VydGlmaWNhdGVFYXJuZWQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VydGlmaWNhdGVDYXJkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUtY2VydGlmaWNhdGUtY29udGFpbmVyXCIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlYXJuZWQtY2VydGlmaWNhdGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpYmJvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWFybmVkLWNlcnRpZmljYXRlXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY2VydGlmaWNhdGVFYXJuZWQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VydGlmaWNhdGUtYmFja2dyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNlcnRpZmljYXRlQ2FyZFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93TWFya2V0UGxhY2VDZXJ0aWZpY2F0ZSAmJiBmcm9tTWFya2V0UGxhY2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLWNvbnRhaW5lclwiICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyICYmICFkaXNhYmxlQ2VydGlmaWNhdGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGVhcm5lZC1jZXJ0aWZpY2F0ZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmliYm9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLWJhY2tncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVhcm5lZC1jZXJ0aWZpY2F0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmNlcnRpZmljYXRlRWFybmVkJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNlcnRpZmljYXRlQ2FyZFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLWNlcnRpZmljYXRlLWNvbnRhaW5lclwiICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWFybmVkLWNlcnRpZmljYXRlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWJib25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVhcm5lZC1jZXJ0aWZpY2F0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmNlcnRpZmljYXRlRWFybmVkJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLWJhY2tncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjZXJ0aWZpY2F0ZUNhcmRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbYmluZGluZ0NsYXNzXT1cIidmbGV4IHJvdW5kZWQnXCIgW2hlaWdodF09XCInMTQ4cHgnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmcm9tVmlld2VyIHx8IHJvdXRlci51cmwuaW5jbHVkZXMoJy92aWV3ZXIvcGRmL2RvXycpKSAmJiAhZnJvbU1ET1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMSBtdC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmb250LXNlbWlib2xkIHRleHQtYmFzZVwiPnt7IGhhbmRsZUNhcGl0YWxpemUoY29udGVudD8ubmFtZSkgfX0gPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9iLXRleHQgYnJlYWstd29yZHMgdGV4dC1zbSBub2R0cmFuc2xhdGVcIj57eyAnY2FyZGNvbnRlbnR2Mi5ieScgfCB0cmFuc2xhdGUgfX0ge3tcbiAgICAgICAgICAgICAgICBjb250ZW50Py5zb3VyY2UgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmcm9tVmlld2VyIHx8IHJvdXRlci51cmwuaW5jbHVkZXMoJy92aWV3ZXIvcGRmL2RvXycpKSAmJiBmcm9tTURPXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xIG10LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZvbnQtc2VtaWJvbGQgdGV4dC1iYXNlXCI+e3sgaGFuZGxlQ2FwaXRhbGl6ZShjb250ZW50Py5yZXN1bHQ/LmNvbnRlbnQ/Lm5hbWUpIH19IDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYi10ZXh0IGJyZWFrLXdvcmRzIHRleHQtc20gbm9kdHJhbnNsYXRlXCI+e3sgJ2NhcmRjb250ZW50djIuYnknIHwgdHJhbnNsYXRlIH19IHt7XG4gICAgICAgICAgICAgICAgY29udGVudD8ucmVzdWx0Py5jb250ZW50Py5zb3VyY2UgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudCAmJiBjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgPT09IHByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTMganVzdGlmeS1hcm91bmQgaGlkZUFib3ZlMTIwMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhdGNoLWluZm9cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1iYXNlIGZvbnQtYm9sZFwiPnt7IHNlbGVjdGVkQmF0Y2hEYXRhPy5jb250ZW50WzBdPy5iYXRjaEF0dHJpYnV0ZXM/LmN1cnJlbnRCYXRjaFNpemUgfHxcbiAgICAgICAgICAgICAgICAgICAgJzAnIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhdGNoLWxhYmVsXCI+e3sgJ2FwcHRvYy5iYXRjaFNpemUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYmFzZSBmb250LWJvbGRcIj57eyBzZWxlY3RlZEJhdGNoRGF0YT8udXNlckNvdW50Py50b3RhbEFwcGxpZWQgfHwgJzAnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhdGNoLWxhYmVsXCI+e3sgJ2FwcHRvYy50b3RhbEFwcGxpZWQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYmFzZSBmb250LWJvbGRcIj57eyBzZWxlY3RlZEJhdGNoRGF0YT8udXNlckNvdW50Py5lbnJvbGxlZCB8fCAnMCcgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmF0Y2gtbGFiZWxcIj57eyAnYXBwdG9jLnRvdGFsRW5yb2xsZWQnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGltZXIuZGF5cyA+PSAwICYmIGNvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeSA9PT0gcHJpbWFyeUNhdGVnb3J5LkJMRU5ERURfUFJPR1JBTVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNiBteS01IGJhdGNoLXRpbWVyIGhpZGVBYm92ZTEyMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCB1bmRlcmxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZXItbGFiZWxcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5iYXRjaFN0YXJ0c0luJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdW5kZXJsaW5lXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTQganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMSBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtNHhsIGxlYWRpbmctMTAgY291bnRlclwiPnt7IHRpbWVyLmRheXMgfHwgMCB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRlci1sYWJlbFwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmRheXMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGNvdW50ZXItbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0xIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC00eGwgbGVhZGluZy0xMCBjb3VudGVyXCI+e3sgdGltZXIubWluID09PSA2MCA/IHRpbWVyLmhvdXJzICsgMSA6IHRpbWVyLmhvdXJzIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRlci1sYWJlbFwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmhvdXJzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBjb3VudGVyLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMSBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtNHhsIGxlYWRpbmctMTAgY291bnRlclwiPnt7IHRpbWVyLm1pbiA9PT0gNjAgPyAwMCA6IHRpbWVyLm1pbiB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRlci1sYWJlbFwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLm1pbnV0ZXMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiICpuZ0lmPVwiZnJvbVZpZXdlciB8fCBpc01vYmlsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic2MHB4J1wiIFtoZWlnaHRdPVwiJzYwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic2MHB4J1wiIFtoZWlnaHRdPVwiJzYwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic2MHB4J1wiIFtoZWlnaHRdPVwiJzYwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXIgJiYgIWZyb21NYXJrZXRQbGFjZSAmJiAhZnJvbU1ET1wiPlxuICAgICAgICAgICBcbiAgICAgICAgICAgIDx3cy13aWRnZXQtdG9jLWtwaS12YWx1ZXMgW2NvbnRlbnRdPVwiY29udGVudFwiIFt0b2NTdHJ1Y3R1cmVdPVwidG9jU3RydWN0dXJlXCIgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbY29udGVudFJlYWREYXRhXT1cImNvbnRlbnRSZWFkRGF0YVwiIFtiYXNlQ29udGVudFJlYWREYXRhXT1cImJhc2VDb250ZW50UmVhZERhdGFcIlxuICAgICAgICAgICAgICAgIFtsYW5ndWFnZUxpc3RdPVwibGFuZ3VhZ2VMaXN0XCI+PC93cy13aWRnZXQtdG9jLWtwaS12YWx1ZXM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlciAmJiAhZnJvbU1hcmtldFBsYWNlICYmIGZyb21NRE9cIj5cbiAgICAgICAgICAgIDx3cy13aWRnZXQtdG9jLWtwaS12YWx1ZXMgW2NvbnRlbnRdPVwiY29udGVudD8ucmVzdWx0Py5jb250ZW50XCIgW3RvY1N0cnVjdHVyZV09XCJ0b2NTdHJ1Y3R1cmVcIiBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgICAgICAgICAgICAgIFtjb250ZW50UmVhZERhdGFdPVwiY29udGVudFJlYWREYXRhXCIgW2Jhc2VDb250ZW50UmVhZERhdGFdPVwiYmFzZUNvbnRlbnRSZWFkRGF0YVwiXG4gICAgICAgICAgICAgICAgW2xhbmd1YWdlTGlzdF09XCJsYW5ndWFnZUxpc3RcIj48L3dzLXdpZGdldC10b2Mta3BpLXZhbHVlcz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInODBweCdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBtdC00XCI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic4MCUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzk1JSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNjUlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIGZvbnQtYm9sZCBub2R0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICB7eyAnYXBwdG9jc2luZ2xlcGFnZS5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiY29udGVudD8uY29udGVudElkICYmIGNvbnRlbnQ/LmNvbnRlbnRJZC5pbmNsdWRlcygnZXh0XycpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgZm9udC1ib2xkIG5vZHRyYW5zbGF0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIShjb250ZW50Py5jb250ZW50SWQgJiYgY29udGVudD8uY29udGVudElkLmluY2x1ZGVzKCdleHRfJykpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgZm9udC1ib2xkIG5vZHRyYW5zbGF0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLnN1bW1hcnknIHwgdHJhbnNsYXRlIH19PC9kaXY+IC0tPlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J21vYi1kZXNjLWVsbGlwc2lzJzogc3VtbWFyeS5lbGxpcHNpcyAmJiBpc01vYmlsZSwgJ2Rlc2MtZWxsaXBzaXMnOiBzdW1tYXJ5LmVsbGlwc2lzICYmICFpc01vYmlsZX1cIlxuICAgICAgICAgICAgICAgICNzdW1tYXJ5RWxlbT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9iLXRleHQgbm9kdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySHRtbF09XCJoYW5kbGVDYXBpdGFsaXplKGNvbnRlbnRSZWFkRGF0YT8uZGVzY3JpcHRpb24gfCByZXBsYWNlTmJzcClcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgY3Vyc29yLXBvaW50ZXIgdGV4dC1zbVwiICpuZ0lmPVwic3VtbWFyeS52aWV3TGVzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzdW1tYXJ5LmVsbGlwc2lzID0gIXN1bW1hcnkuZWxsaXBzaXM7IHN1bW1hcnkudmlld0xlc3MgPSAhc3VtbWFyeS52aWV3TGVzc1wiPiZuYnNwO3t7XG4gICAgICAgICAgICAgICAgICAgICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdMZXNzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgdGV4dC1zbVwiICpuZ0lmPVwic3VtbWFyeS5lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3VtbWFyeS5lbGxpcHNpcyA9ICFzdW1tYXJ5LmVsbGlwc2lzOyBzdW1tYXJ5LnZpZXdMZXNzID0gIXN1bW1hcnkudmlld0xlc3NcIj57e1xuICAgICAgICAgICAgICAgICAgICAnYXBwdG9jc2luZ2xlcGFnZS52aWV3TW9yZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiICpuZ0lmPVwiY29udGVudFJlYWREYXRhPy5pbnN0cnVjdGlvbnMgfHwgY29udGVudFJlYWREYXRhPy5wdXJwb3NlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic4MHB4J1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIG10LTRcIj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzgwJSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInOTUlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic2NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgbm9kdHJhbnNsYXRlXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UubGVhcm5pbmdPdXRjb21lJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbW9iLWRlc2MtZWxsaXBzaXMnOiBkZXNjcmlwdGlvbi5lbGxpcHNpcyAmJiBpc01vYmlsZSwgJ2Rlc2MtZWxsaXBzaXMnOiBkZXNjcmlwdGlvbi5lbGxpcHNpcyAmJiAhaXNNb2JpbGV9XCJcbiAgICAgICAgICAgICAgICAjZGVzY0VsZW0+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiY29udGVudFJlYWREYXRhPy5pbnN0cnVjdGlvbnMgfHwgY29udGVudFJlYWREYXRhPy5wdXJwb3NlIHwgcmVwbGFjZU5ic3BcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vYi10ZXh0IGJyZWFrLXdvcmRzIG5vZHRyYW5zbGF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cy1tYXQtZGVmYXVsdC10ZXh0IGZvbnQtYm9sZCBjdXJzb3ItcG9pbnRlciB0ZXh0LXNtXCIgKm5nSWY9XCJkZXNjcmlwdGlvbi52aWV3TGVzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXNjcmlwdGlvbi5lbGxpcHNpcyA9ICFkZXNjcmlwdGlvbi5lbGxpcHNpczsgZGVzY3JpcHRpb24udmlld0xlc3MgPSAhZGVzY3JpcHRpb24udmlld0xlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7e3sgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld0xlc3MnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cy1tYXQtZGVmYXVsdC10ZXh0IGZvbnQtYm9sZCB0ZXh0LXNtXCIgKm5nSWY9XCJkZXNjcmlwdGlvbi5lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVzY3JpcHRpb24uZWxsaXBzaXMgPSAhZGVzY3JpcHRpb24uZWxsaXBzaXM7IGRlc2NyaXB0aW9uLnZpZXdMZXNzID0gIWRlc2NyaXB0aW9uLnZpZXdMZXNzXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld01vcmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiAqbmdJZj1cImNvbnRlbnQ/Lm9iamVjdGl2ZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzgwcHgnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInODAlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic5NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzY1JSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMSBmb250LWJvbGQgcHQtbXdlYi04IG5vZHRyYW5zbGF0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmxlYXJuaW5nT3V0Y29tZScgfFxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnbW9iLWRlc2MtZWxsaXBzaXMnOiBvYmplY3RpdmVzLmVsbGlwc2lzICYmIGlzTW9iaWxlLCAnZGVzYy1lbGxpcHNpcyc6IG9iamVjdGl2ZXMuZWxsaXBzaXMgJiYgIWlzTW9iaWxlfVwiXG4gICAgICAgICAgICAgICAgI29iamVjdGl2ZXNFbGVtPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibW9iLXRleHQgbm9kdHJhbnNsYXRlXCIgW2lubmVySHRtbF09XCJoYW5kbGVDYXBpdGFsaXplKGNvbnRlbnQ/Lm9iamVjdGl2ZXMpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cy1tYXQtZGVmYXVsdC10ZXh0IGZvbnQtYm9sZCBjdXJzb3ItcG9pbnRlciB0ZXh0LXNtXCIgKm5nSWY9XCJvYmplY3RpdmVzLnZpZXdMZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9iamVjdGl2ZXMuZWxsaXBzaXMgPSAhb2JqZWN0aXZlcy5lbGxpcHNpczsgb2JqZWN0aXZlcy52aWV3TGVzcyA9ICFvYmplY3RpdmVzLnZpZXdMZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO3t7ICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdMZXNzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgdGV4dC1zbVwiICpuZ0lmPVwib2JqZWN0aXZlcy5lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib2JqZWN0aXZlcy5lbGxpcHNpcyA9ICFvYmplY3RpdmVzLmVsbGlwc2lzOyBvYmplY3RpdmVzLnZpZXdMZXNzID0gIW9iamVjdGl2ZXMudmlld0xlc3NcIj57e1xuICAgICAgICAgICAgICAgICAgICAnYXBwdG9jc2luZ2xlcGFnZS52aWV3TW9yZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiXG4gICAgICAgICpuZ0lmPVwiY29udGVudFJlYWREYXRhPy5zdW1tYXJ5ICYmIGNvbnRlbnRSZWFkRGF0YT8uY29udGVudElkICYmIGNvbnRlbnRSZWFkRGF0YT8uY29udGVudElkLmluY2x1ZGVzKCdleHRfJylcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzgwcHgnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInODAlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic5NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzY1JSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMSBub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5zdW1tYXJ5JyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbW9iLWRlc2MtZWxsaXBzaXMnOiBkZXNjcmlwdGlvbi5lbGxpcHNpcyAmJiBpc01vYmlsZSwgJ2Rlc2MtZWxsaXBzaXMnOiBkZXNjcmlwdGlvbi5lbGxpcHNpcyAmJiAhaXNNb2JpbGV9XCJcbiAgICAgICAgICAgICAgICAjZGVzY0VsZW0+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiY29udGVudFJlYWREYXRhPy5zdW1tYXJ5IHwgcmVwbGFjZU5ic3BcIiBjbGFzcz1cIm1vYi10ZXh0IGJyZWFrLXdvcmRzIG5vZHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cy1tYXQtZGVmYXVsdC10ZXh0IGZvbnQtYm9sZCBjdXJzb3ItcG9pbnRlciB0ZXh0LXNtXCIgKm5nSWY9XCJkZXNjcmlwdGlvbi52aWV3TGVzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZXNjcmlwdGlvbi5lbGxpcHNpcyA9ICFkZXNjcmlwdGlvbi5lbGxpcHNpczsgZGVzY3JpcHRpb24udmlld0xlc3MgPSAhZGVzY3JpcHRpb24udmlld0xlc3NcIj5cbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7e3sgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld0xlc3MnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cy1tYXQtZGVmYXVsdC10ZXh0IGZvbnQtYm9sZCB0ZXh0LXNtXCIgKm5nSWY9XCJkZXNjcmlwdGlvbi5lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVzY3JpcHRpb24uZWxsaXBzaXMgPSAhZGVzY3JpcHRpb24uZWxsaXBzaXM7IGRlc2NyaXB0aW9uLnZpZXdMZXNzID0gIWRlc2NyaXB0aW9uLnZpZXdMZXNzXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld01vcmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzEyMHB4J1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaSBvZiBbMSwgMl1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMjBweCdcIiBbaGVpZ2h0XT1cIiczMnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzI1MHB4J1wiIFtoZWlnaHRdPVwiJzgwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicyNTBweCdcIiBbaGVpZ2h0XT1cIic4MHB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICBcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzdHJpcD8ubG9hZGVyV2lkZ2V0cz8ubGVuZ3RoIHx8ICFjb21wZXRlbmNpZXNPYmplY3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21wZXRlbmN5TGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB7eyAnYXBwdG9jc2luZ2xlcGFnZS5ub0NvbXBldGVuY3lGb3VuZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHJpcD8ubG9hZGVyV2lkZ2V0cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbXBldGVuY3lMYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0zIHNtOmdhcC00IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb21wZXRlbmNpZXNPYmplY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZXMtYnV0dG9uXCIgW25nQ2xhc3NdPVwieyd0aGVtZS1hY3RpdmF0ZWQnOiBjb21wZXRlbmN5U2VsZWN0ZWQgPT09IGl0ZW0ua2V5fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVNob3dDb21wZXRlbmNpZXMoaXRlbSwgJ3NlbGVjdGVkJylcIj57eyBpdGVtLmtleSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbXBldGVuY2llc09iamVjdFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8ua2V5ID09PSBjb21wZXRlbmN5U2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy11dGlscy1ob3Jpem9udGFsLXNjcm9sbGVyLXYyIFtsb2FkU3RhdHVzXT1cIidkb25lJ1wiIFtzdHJpcENvbmZpZ109XCJzdHJpcC5zdHJpcENvbmZpZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHdpZGdldCBvZiBzdHJpcD8ubG9hZGVyV2lkZ2V0czsgdHJhY2tCeTogdHJhY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtzYlVpUmVzb2x2ZXJXaWRnZXRdPVwid2lkZ2V0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3dzLXV0aWxzLWhvcml6b250YWwtc2Nyb2xsZXItdjI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic0OHB4J1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBtdC00XCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzk1JSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzEwMCUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgIDwhLS0ge3tjb250ZW50fGpzb259fSAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8ua2V5d29yZHM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWdzTGlzdFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGFnRGF0YTogY29udGVudFJlYWREYXRhPy5rZXl3b3JkcyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uc2VhcmNoVGFncz8ubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LnNlYXJjaFRhZ3M/Lmxlbmd0aFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRhZ3NMaXN0XCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyB0YWdEYXRhOiBjb250ZW50Py5zZWFyY2hUYWdzPy5zbGljZSgxLGNvbnRlbnQ/LnNlYXJjaFRhZ3M/Lmxlbmd0aCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFza2VsZXRvbkxvYWRlciAmJiBzZWN0b3JzTGlzdD8ubGVuZ3RoKSAmJiAoY29udGVudD8ucHJpbWFyeUNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpID09PSAnbGVhcm5pbmcgcmVzb3VyY2UnIHx8XG4gICAgY29udGVudD8ucmVzb3VyY2VDYXRlZ29yeT8udG9Mb3dlckNhc2UoKSA9PT0gJ2Nhc2Ugc3R1ZHknKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgbm9kdHJhbnNsYXRlXCI+e3sgJ2d5YWFuS2FybWF5b2dpLnNlY3RvcnMnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VjdG9yc0xpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMyBzbTpnYXAtNCBtYi0zIGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdG9yIG9mIHNlY3RvcnNMaXN0OyBsZXQgaSA9IGluZGV4OyBsZXQgaXNMYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gW25nQ2xhc3NdPVwieyd0aGVtZS1hY3RpdmF0ZWQnOiBjb21wZXRlbmN5U2VsZWN0ZWQgPT09IGl0ZW0ua2V5fVwiLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRoZW1lcy1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RoZW1lLWFjdGl2YXRlZCc6IHNlbGVjdGVkU2VjdG9ySWQgPT09IHNlY3Rvcj8uc2VjdG9ySWR9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhhbmRsZVN1YnNlY3RvcihzZWN0b3IsICdzZWxlY3RlZCcpXCI+e3sgc2VjdG9yPy5zZWN0b3JOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdHJpcD8uc2VjdG9yV2lkZ2V0cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy11dGlscy1ob3Jpem9udGFsLXNjcm9sbGVyLXYyIFtsb2FkU3RhdHVzXT1cIidkb25lJ1wiIFtzdHJpcENvbmZpZ109XCJzdHJpcC5zdHJpcENvbmZpZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB3aWRnZXQgb2Ygc3RyaXA/LnNlY3RvcldpZGdldHM7IHRyYWNrQnk6IHRyYWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW3NiVWlSZXNvbHZlcldpZGdldF09XCJ3aWRnZXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC93cy11dGlscy1ob3Jpem9udGFsLXNjcm9sbGVyLXYyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RyaXA/LnNlY3RvcldpZGdldHM/Lmxlbmd0aCA9PT0gMCAmJiBzZWxlY3RlZFNlY3RvcklkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIFN1YnNlY3RvciBBdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTJcIiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdG9yIG9mIHNlY3RvcnNMaXN0OyBsZXQgaSA9IGluZGV4OyBsZXQgaXNMYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyBtb2ItdGV4dFwiID57eyBzZWN0b3I/LnNlY3Rvck5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCIgKm5nSWY9XCIhaXNMYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmlvZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyICYmIHN1YlNlY3RvcnNMaXN0Py5sZW5ndGhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIG5vZHRyYW5zbGF0ZVwiPnt7ICdneWFhbkthcm1heW9naS5zdWJTZWN0b3JzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCIgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3RvciBvZiBzdWJTZWN0b3JzTGlzdDsgbGV0IGkgPSBpbmRleDsgbGV0IGlzTGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgbW9iLXRleHRcIiA+e3sgc2VjdG9yPy5zdWJTZWN0b3JOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiIWlzTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJpb2RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPiAtLT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdGFnc0xpc3QgbGV0LXRhZ0RhdGE9XCJ0YWdEYXRhXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCIgKm5nSWY9XCJ0YWdEYXRhPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIG5vZHRyYW5zbGF0ZVwiPnt7ICd1c2VyUHJvZmlsZS50YWdzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhZ0RhdGE/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiIFtuZ0NsYXNzXT1cInsndGFncy1lbGxpcHNpcyc6IHRhZ3NFbGxpcHNpcyAmJiAhdmlld01vcmVUYWdzfVwiXG4gICAgICAgICAgICAgICAgICAgICN0YWdzRWxlbT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ0RhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIG1vYi10ZXh0XCI+e3sgaGFuZGxlQ2FwaXRhbGl6ZSh0YWcpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cInRhZ0RhdGE/Lmxlbmd0aCA+IChpICsgMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmlvZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgd3MtbWF0LWRlZmF1bHQtdGV4dCB1bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFnc0VsbGlwc2lzICYmICF2aWV3TW9yZVRhZ3NcIiAoY2xpY2spPVwidmlld01vcmVUYWdzID0gIXZpZXdNb3JlVGFnc1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdNb3JlJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB3cy1tYXQtZGVmYXVsdC10ZXh0IHVuZGVybGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzIG10LTFcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInZpZXdNb3JlVGFnc1wiIChjbGljayk9XCJ2aWV3TW9yZVRhZ3MgPSAhdmlld01vcmVUYWdzXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld0xlc3MnIHxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiICpuZ0lmPVwiIXRhZ0RhdGE/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIHt7ICd1c2VyUHJvZmlsZS5ub1RhZ3MnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlciAmJiBjb250ZW50Py5zZWFyY2hUYWdzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCIgKm5nSWY9XCJjb250ZW50Py5zZWFyY2hUYWdzLmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTFcIj57eyAndXNlclByb2ZpbGUudGFncycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5zZWFyY2hUYWdzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiIFtuZ0NsYXNzXT1cInsndGFncy1lbGxpcHNpcyc6IHNlYXJjaFRhZ3NFbGxpcHNpcyAmJiAhdmlld01vcmVUYWdzfVwiICNzZWFyY2hUYWdFbGVtPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWcgb2YgY29udGVudD8uc2VhcmNoVGFnczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgbW9iLXRleHRcIiA+e3sgaGFuZGxlQ2FwaXRhbGl6ZSh0YWcpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cImNvbnRlbnQ/LnNlYXJjaFRhZ3MubGVuZ3RoID4gKGkgKyAxKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyaW9kXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB3cy1tYXQtZGVmYXVsdC10ZXh0IHVuZGVybGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXCIgKm5nSWY9XCJzZWFyY2hUYWdzRWxsaXBzaXMgJiYgIXZpZXdNb3JlVGFnc1wiIChjbGljayk9XCJ2aWV3TW9yZVRhZ3MgPSAhdmlld01vcmVUYWdzXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld01vcmUnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHdzLW1hdC1kZWZhdWx0LXRleHQgdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyIHRleHQteHMgbXQtMVwiICpuZ0lmPVwidmlld01vcmVUYWdzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld01vcmVUYWdzID0gIXZpZXdNb3JlVGFnc1wiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdMZXNzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTJcIiAqbmdJZj1cIiFjb250ZW50Py5zZWFyY2hUYWdzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIHt7ICd1c2VyUHJvZmlsZS5ub1RhZ3MnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxuXG4gICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1rYXJtYS1wb2ludHNcIj5cbiAgICAgICAgPHdzLXdpZGdldC1rYXJtYS1wb2ludHMgW2NvbnRlbnRdPVwiY29udGVudFwiIFtidG5DYXRlZ29yeV09XCJcIiBbY29uZGl0aW9uXT1cImNvbmRpdGlvblwiXG4gICAgICAgICAgICAoY2xpY2tDbGFpbUthcm1hUG9pbnRzKT1cImhhbmRsZUNsaWNrT2ZDbGFpbSgkZXZlbnQpXCIgW2RhdGFdPVwia3BhcnJheVwiPlxuICAgICAgICA8L3dzLXdpZGdldC1rYXJtYS1wb2ludHM+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMDAlJ1wiIFtoZWlnaHRdPVwiJzcycHgnXCJcbiAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXIgJiYgIWZvclByZXZpZXdcIj5cbiAgICAgICAgPCEtLSBjb21tZW50ZWQgYmVjYXVzZSBvZiBuZXcgZGlzY3Vzc2lvbiB2MiBjb21tZW50cyBpbXBsbWVudGF0aW9uIC0tPlxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGl0ZW1zLWNlbnRlciBkaXNjdXNzaW9uLWRpdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMSBmb3J1bS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZ2FwLTUgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mb3J1bTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWdnZXN0aW9uLXRleHQgc206cHItNFwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmFueVN1Z2dlc3Rpb25zJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ub25lIHAtM1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9EaXNjdXNzaW9uSHViKClcIj57eyAnZGlzY3Vzcy5zdGFydERpc2N1c3MnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNFwiICpuZ0Zvcj1cImxldCBpIG9mIFsxLCAyXVwiPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNzJweCdcIiBbaGVpZ2h0XT1cIicyMHB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMzZweCdcIiBbaGVpZ2h0XT1cIiczNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkLWZ1bGwnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMjRweCdcIiBbaGVpZ2h0XT1cIicyMHB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzEyNHB4J1wiIFtoZWlnaHRdPVwiJzEycHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyICYmICFmcm9tTWFya2V0UGxhY2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIiBbbmdDbGFzc109XCJ7J2hpZGVBYm92ZTEyMDAnOiAhcm91dGVyLnVybC5pbmNsdWRlcygnL3ZpZXdlci8nKX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UuYXV0aG9yc0FuZEN1cmF0b3JzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNCBpdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYXV0aG9yIG9mIGhhbmRsZVBhcnNlSnNvbkRhdGEoY29udGVudFJlYWREYXRhPy5jcmVhdG9yRGV0YWlscylcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWF2YXRhci1waG90byBbcmFuZG9tQ29sb3JdPVwidHJ1ZVwiIFtkYXRhbGVuXT1cIjFcIiBbc2l6ZV09XCIncm91bmQtbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwaG90b1VybF09XCJhdXRob3IucGhvdG8gfHwgJydcIiBbbmFtZV09XCJhdXRob3IubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93cy13aWRnZXQtYXZhdGFyLXBob3RvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIj57eyBoYW5kbGVDYXBpdGFsaXplKGF1dGhvcj8ubmFtZS50b0xvd2VyQ2FzZSgpLCAnbmFtZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyBsZWFkaW5nLTMgbW9iLXRleHRcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5hdXRob3InIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY3JlYXRvciBvZiBoYW5kbGVQYXJzZUpzb25EYXRhKGNvbnRlbnRSZWFkRGF0YT8uY3JlYXRvckNvbnRhY3RzKVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtYXZhdGFyLXBob3RvIFtyYW5kb21Db2xvcl09XCJ0cnVlXCIgW2RhdGFsZW5dPVwiMVwiIFtzaXplXT1cIidyb3VuZC1tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bob3RvVXJsXT1cImNyZWF0b3IucGhvdG8gfHwgJydcIiBbbmFtZV09XCJjcmVhdG9yLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWF2YXRhci1waG90bz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgaGFuZGxlQ2FwaXRhbGl6ZShjcmVhdG9yPy5uYW1lLnRvTG93ZXJDYXNlKCksICduYW1lJykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIGxlYWRpbmctMyBtb2ItdGV4dFwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmN1cmF0b3InIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZnJvbU1ET1wiIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiIFtuZ0NsYXNzXT1cInsnaGlkZUFib3ZlMTIwMCc6ICFyb3V0ZXIudXJsLmluY2x1ZGVzKCcvdmlld2VyLycpfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGRcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5wcm92aWRlcicgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm92aWRlci1sb2dvLWRpdlwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiY29udGVudD8uY3JlYXRvckxvZ29cIiBbc3JjXT1cImNvbnRlbnQ/LmNyZWF0b3JMb2dvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLnByb3ZpZGVyJyB8IHRyYW5zbGF0ZSB9fVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhY29udGVudD8uY3JlYXRvckxvZ29cIiBzcmM9XCIvYXNzZXRzL2luc3RhbmNlcy9lYWdsZS9hcHBfbG9nb3MvS2FybWF5b2dpQmhhcmF0X0xvZ28uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLnByb3ZpZGVyJyB8IHRyYW5zbGF0ZSB9fVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gYnJlYWstYWxsXCI+e3sgaGFuZGxlQ2FwaXRhbGl6ZShjb250ZW50Py5zb3VyY2UsICdzb3VyY2UnKSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZnJvbU1ET1wiIGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBnYXAtM1wiIFtuZ0NsYXNzXT1cInsnaGlkZUFib3ZlMTIwMCc6ICFyb3V0ZXIudXJsLmluY2x1ZGVzKCcvdmlld2VyLycpfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYmFzZSBmb250LWJvbGRcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5wcm92aWRlcicgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm92aWRlci1sb2dvLWRpdlwiPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiKGNvbnRlbnQ/LnJlc3VsdD8uY29udGVudD8uY3JlYXRvckxvZ28pXCIgaGVpZ2h0PVwiMzZweFwiIHdpZHRoPVwiMzZweFwiIFtzcmNdPVwiY29udGVudD8ucmVzdWx0Py5jb250ZW50Py5jcmVhdG9yTG9nb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5wcm92aWRlcicgfCB0cmFuc2xhdGUgfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiIShjb250ZW50Py5yZXN1bHQ/LmNvbnRlbnQ/LmNyZWF0b3JMb2dvKVwiIGhlaWdodD1cIjM2cHhcIiB3aWR0aD1cIjM2cHhcIiBzcmM9XCIvYXNzZXRzL2luc3RhbmNlcy9lYWdsZS9hcHBfbG9nb3MvS2FybWF5b2dpQmhhcmF0X0xvZ28uc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cInt7ICdhcHB0b2NzaW5nbGVwYWdlLnByb3ZpZGVyJyB8IHRyYW5zbGF0ZSB9fVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gYnJlYWstYWxsXCI+e3sgaGFuZGxlQ2FwaXRhbGl6ZShjb250ZW50Py5yZXN1bHQ/LmNvbnRlbnQ/LnNvdXJjZSwgJ3NvdXJjZScpIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMDAlJ1wiIFtoZWlnaHRdPVwiJzQwMHB4J1wiXG4gICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyICYmICFmb3JQcmV2aWV3XCI+XG4gICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmF2ZXJhZ2VSYXRpbmdcIj4gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHJhdGluZ3MtZGl2IGdhcC0xMFwiIGlkPVwicmF0aW5nc0RpdlwiICpuZ0lmPVwic2hvd1Jldmlld3NcIj5cbiAgICAgICAgICAgIDx3cy13aWRnZXQtcmF0aW5nLXN1bW1hcnkgW3JhdGluZ1N1bW1hcnldPVwicmF0aW5nU3VtbWFyeVByb2Nlc3NlZFwiPjwvd3Mtd2lkZ2V0LXJhdGluZy1zdW1tYXJ5PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgbWF0LXN1YmhlYWRpbmctMSBub2R0cmFuc2xhdGVcIiBpZD1cInJldmlld0NvbnRhaW5lclwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnYXBwdG9jc2luZ2xlcGFnZS50b3BSZXZpZXdzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmF0aW5nU3VtbWFyeVByb2Nlc3NlZD8uYXZnUmF0aW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJoYW5kbGVPcGVuUmV2aWV3TW9kYWwoKVwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zZy5zaG93QWxsJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9wUmF0aW5nUmV2aWV3cyAmJiB0b3BSYXRpbmdSZXZpZXdzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTVcIiBbbmdDbGFzc109XCJpc01vYmlsZSA/ICdob3Jpem9udGFsLXN0cmlwJyA6ICdmbGV4LXdyYXAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1kaXZcIiAqbmdGb3I9XCJsZXQgZWFjaFJldmlldyBvZiB0b3BSYXRpbmdSZXZpZXdzIHwgc2xpY2U6MDo0OyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBmbGV4IGZsZXgtY29sIGdhcC02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGVmdCBkZXNjLWVsbGlwc2lzXCIgdGl0bGU9XCJ7eyBlYWNoUmV2aWV3Py5yZXZpZXcgfX1cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDYXBpdGFsaXplKGVhY2hSZXZpZXc/LnJldmlldykgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTIgcmF0aW5nLXN0YXJ0LXZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnN0YXI8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZWFjaFJldmlldz8ucmF0aW5nIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0yIGl0ZW1zLWNlbnRlciB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWF2YXRhci1waG90byBbcmFuZG9tQ29sb3JdPVwidHJ1ZVwiIFtkYXRhbGVuXT1cIjFcIiBbc2l6ZV09XCIncm91bmQtbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwaG90b1VybF09XCJlYWNoUmV2aWV3Py5waG90byB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiZWFjaFJldmlldz8uZmlyc3ROYW1lXCI+PC93cy13aWRnZXQtYXZhdGFyLXBob3RvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBoYW5kbGVDYXBpdGFsaXplKGVhY2hSZXZpZXc/LmZpcnN0TmFtZS50b0xvd2VyQ2FzZSgpLCAnbmFtZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIG14LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJpb2RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBlYWNoUmV2aWV3Py5kYXRlIHwgcGlwZVJlbGF0aXZlVGltZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhdG9wUmF0aW5nUmV2aWV3cyB8fCAhdG9wUmF0aW5nUmV2aWV3cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHRleHQtY2VudGVyIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSBwLTQgcm91bmRlZC1tZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYmFzZSBmb250LWJvbGQgbm9kdHJhbnNsYXRlXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2Uubm9SZXZpZXdzRm91bmQnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29udGVudD8uYXZlcmFnZVJhdGluZ1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTMganVzdGlmeS1jZW50ZXIgcmF0aW5ncy1kaXZcIj5cbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaWNvbnMvdG9jL25vLWNlcnRpZmljYXRlLnN2Z1wiIGFsdD1cIm5vIHJhdGluZ3MgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sXCI+QmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgY291cnNlIGFuZCB5b3VyIDxici8+IGxlYXJuaW5nIGV4cGVyaWVuY2U8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
|
|
960
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXRvYy1hYm91dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvX2NvbGxlY3Rpb24vX2NvbW1vbi9jb250ZW50LXRvYy9hcHAtdG9jLWFib3V0L2FwcC10b2MtYWJvdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL19jb2xsZWN0aW9uL19jb21tb24vY29udGVudC10b2MvYXBwLXRvYy1hYm91dC9hcHAtdG9jLWFib3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFzRCxTQUFTLEVBQWMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFJakssT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFMUMsMkJBQTJCO0FBQzNCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUd6QixPQUFPLGNBQWMsTUFBTSw2QkFBNkIsQ0FBQTtBQUN4RCxPQUFPLGFBQWEsTUFBTSw0QkFBNEIsQ0FBQTtBQUd0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNENBQTRDLENBQUE7QUFZdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDdEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdURBQXVELENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbkJsRyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0FBQzVCLEtBQUss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IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInXG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZydcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIGFzIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcidcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnXG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpXG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcilcbmltcG9ydCBpc1NhbWVPckJlZm9yZSBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JCZWZvcmUnXG5pbXBvcnQgaXNTYW1lT3JBZnRlciBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JBZnRlcidcblxuaW1wb3J0IHsgTnNXaWRnZXRSZXNvbHZlciB9IGZyb20gJ0BzdW5iaXJkLWNiL3Jlc29sdmVyLXYyJ1xuaW1wb3J0IHsgTnNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vX3NlcnZpY2VzL3dpZGdldC1jb250ZW50Lm1vZGVsJ1xuaW1wb3J0IHsgUmF0aW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9yYXRpbmcuc2VydmljZSdcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UsIENvbmZpZ3VyYXRpb25zU2VydmljZSwgV2lkZ2V0Q29udGVudFNlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IEFwcFRvY1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9hcHAtdG9jLnNlcnZpY2UnXG5pbXBvcnQgeyBUaW1lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy90aW1lci5zZXJ2aWNlJ1xuaW1wb3J0IHsgSGFuZGxlQ2xhaW1TZXJ2aWNlIH0gZnJvbSAnLi4vY29udGVudC1zZXJ2aWNlcy9oYW5kbGUtY2xhaW0uc2VydmljZSdcbmltcG9ydCB7IExvYWRDaGVja1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9sb2FkLWNoZWNrLnNlcnZpY2UnXG5pbXBvcnQgeyBSZXZpZXdDb21wb25lbnREYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbnRlbnQtc2VydmljZXMvcmV2aWV3LWNvbXBvbmVudC1kYXRhLnNlcnZpY2UnXG5pbXBvcnQgeyBSZXNldFJhdGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvcmVzZXQtcmF0aW5ncy5zZXJ2aWNlJ1xuaW1wb3J0IHsgTnNDb250ZW50U3RyaXBXaXRoVGFicyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9jb250ZW50LXN0cmlwLXdpdGgtdGFicy5tb2RlbCdcbmltcG9ydCB7IERpc2N1c3NVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9kaXNjdXNzLXV0aWxzLnNlcnZpY2UnXG5cbmltcG9ydCB7IFJldmlld3NDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vcmV2aWV3cy1jb250ZW50L3Jldmlld3MtY29udGVudC5jb21wb25lbnQnXG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NlcnRpZmljYXRlLWRpYWxvZy9jZXJ0aWZpY2F0ZS1kaWFsb2cuY29tcG9uZW50J1xuXG5pbnRlcmZhY2UgSVN0cmlwVW5pdENvbnRlbnREYXRhIHtcbiAga2V5OiBzdHJpbmdcbiAgY2FuSGlkZVN0cmlwOiBib29sZWFuXG4gIG1vZGU/OiBzdHJpbmdcbiAgc2hvd1N0cmlwOiBib29sZWFuXG4gIHdpZGdldHM/OiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoQW55RGF0YVtdXG4gIHN0cmlwVGl0bGU6IHN0cmluZ1xuICBzdHJpcFRpdGxlTGluaz86IHtcbiAgICBsaW5rOiBzdHJpbmcsXG4gICAgaWNvbjogc3RyaW5nXG4gIH0sXG4gIHNsaWRlckNvbmZpZz86IHtcbiAgICBzaG93TmF2czogYm9vbGVhbixcbiAgICBzaG93RG90czogYm9vbGVhbixcbiAgICBtYXhXaWRnZXRzPzogbnVtYmVyXG4gIH0sXG4gIHRhYnM/OiBOc0NvbnRlbnRTdHJpcFdpdGhUYWJzLklDb250ZW50U3RyaXBUYWJbXSB8IHVuZGVmaW5lZCxcbiAgc3RyaXBOYW1lPzogc3RyaW5nXG4gIHN0cmlwTG9nbz86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICBzdHJpcEluZm8/OiBOc0NvbnRlbnRTdHJpcFdpdGhUYWJzLklTdHJpcEluZm9cbiAgbm9EYXRhV2lkZ2V0PzogTnNXaWRnZXRSZXNvbHZlci5JUmVuZGVyQ29uZmlnV2l0aEFueURhdGFcbiAgZXJyb3JXaWRnZXQ/OiBOc1dpZGdldFJlc29sdmVyLklSZW5kZXJDb25maWdXaXRoQW55RGF0YVxuICBzaG93T25Ob0RhdGE6IGJvb2xlYW5cbiAgc2hvd09uTG9hZGVyOiBib29sZWFuXG4gIHNob3dPbkVycm9yOiBib29sZWFuXG4gIGxvYWRlcldpZGdldHM/OiBhbnlcbiAgc3RyaXBCYWNrZ3JvdW5kPzogc3RyaW5nXG4gIHNlY29uZGFyeUhlYWRpbmc/OiBhbnlcbiAgdmlld01vcmVVcmw6IGFueSxcbiAgc2VjdG9yV2lkZ2V0cz86IGFueVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy13aWRnZXQtYXBwLXRvYy1hYm91dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtdG9jLWFib3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLXRvYy1hYm91dC5jb21wb25lbnQuc2NzcyddLFxufSlcblxuZXhwb3J0IGNsYXNzIEFwcFRvY0Fib3V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgXG4gIEBJbnB1dCgpIGNvbmRpdGlvbjogYW55XG4gIEBJbnB1dCgpIGtwYXJyYXk6IGFueVxuICBASW5wdXQoKSBjb250ZW50OiBOc0NvbnRlbnQuSUNvbnRlbnQgfCBudWxsID0gbnVsbFxuICBASW5wdXQoKSBjb250ZW50UmVhZERhdGE6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIGJhc2VDb250ZW50UmVhZERhdGE6IE5zQ29udGVudC5JQ29udGVudCB8IG51bGwgPSBudWxsXG4gIEBJbnB1dCgpIHNrZWxldG9uTG9hZGVyID0gZmFsc2VcbiAgQElucHV0KCkgc3RpY2t5ID0gZmFsc2VcbiAgQElucHV0KCkgdG9jU3RydWN0dXJlOiBhbnlcbiAgQElucHV0KCkgcGF0aFNldDogYW55XG4gIEBJbnB1dCgpIGNvbmZpZzogYW55XG4gIEBJbnB1dCgpIHJlc3VtZURhdGE6IGFueVxuICBASW5wdXQoKSBmb3JQcmV2aWV3ID0gZmFsc2VcbiAgQElucHV0KCkgc2hvd1Jldmlld3MgPSBmYWxzZVxuICBASW5wdXQoKSBiYXRjaERhdGE6IGFueVxuICBASW5wdXQoKSBmcm9tVmlld2VyID0gZmFsc2VcbiAgQElucHV0KCkgc2VsZWN0ZWRCYXRjaERhdGE6IGFueVxuICBASW5wdXQoKSBzZWxlY3RlZFRhYlZhbHVlID0gMFxuICBASW5wdXQoKSBmcm9tTWFya2V0UGxhY2U/ID0gZmFsc2VcbiAgQElucHV0KCkgc2hvd01hcmtldFBsYWNlQ2VydGlmaWNhdGUgPSBmYWxzZVxuICBASW5wdXQoKSBsYW5ndWFnZUxpc3QgPSBbXVxuICBASW5wdXQoKSBsb2NrQ2VydGlmaWNhdGUgPSBmYWxzZVxuICBASW5wdXQoKSBmcm9tTURPID0gZmFsc2VcbiAgQE91dHB1dCgpIHRyaWdlckNvbXBsZXRpb25TdXJ2ZXlGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpXG4gIEBWaWV3Q2hpbGQoJ3N1bW1hcnlFbGVtJykgc3VtbWFyeUVsZW0gITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdvYmplY3RpdmVzRWxlbScpIG9iamVjdGl2ZXNFbGVtICE6IEVsZW1lbnRSZWZcbiAgQFZpZXdDaGlsZCgnZGVzY0VsZW0nKSBkZXNjRWxlbSAhOiBFbGVtZW50UmVmXG4gIEBWaWV3Q2hpbGQoJ3RhZ3NFbGVtJykgdGFnc0VsZW0gITogRWxlbWVudFJlZlxuICBAVmlld0NoaWxkKCdzZWFyY2hUYWdFbGVtJykgc2VhcmNoVGFnRWxlbSAhOiBFbGVtZW50UmVmXG4gIGRpc2FibGVDZXJ0aWZpY2F0ZSA9IGZhbHNlXG4gIGlzRXh0ZXJuYWxDb250ZW50ID0gZmFsc2VcbiAgcHJpbWFyeUNhdGVnb3J5ID0gTnNDb250ZW50LkVQcmltYXJ5Q2F0ZWdvcnlcbiAgc3RyaXBzUmVzdWx0RGF0YU1hcCE6IHsgW2tleTogc3RyaW5nXTogSVN0cmlwVW5pdENvbnRlbnREYXRhIH1cbiAgc3VtbWFyeSA9IHtcbiAgICBlbGxpcHNpczogZmFsc2UsXG4gICAgdmlld0xlc3M6IGZhbHNlLFxuICB9XG4gIGRlc2NyaXB0aW9uID0ge1xuICAgIGVsbGlwc2lzOiBmYWxzZSxcbiAgICB2aWV3TGVzczogZmFsc2UsXG4gIH1cbiAgb2JqZWN0aXZlcyA9IHtcbiAgICBlbGxpcHNpczogZmFsc2UsXG4gICAgdmlld0xlc3M6IGZhbHNlLFxuICB9XG4gIHRhZ3NFbGxpcHNpcyA9IGZhbHNlXG4gIHNlYXJjaFRhZ3NFbGxpcHNpcyA9IGZhbHNlXG4gIGNvbXBldGVuY3lTZWxlY3RlZCA9ICcnXG4gIHJhdGluZ1N1bW1hcnk6IGFueVxuICBhdXRoUmVwbGllczogYW55XG4gIHJhdGluZ1N1bW1hcnlQcm9jZXNzZWQ6IGFueVxuICB0b3BSYXRpbmdSZXZpZXdzOiBhbnlbXSA9IFtdXG4gIHJhdGluZ1Jldmlld3M6IGFueVtdID0gW11cbiAgbGF0ZXN0UmV2aWV3czogYW55W10gPSBbXVxuICBkaWFsb2dSZWY6IGFueVxuICBkaXNwbGF5TG9hZGVyID0gZmFsc2VcbiAgZGlzYWJsZUxvYWRNb3JlID0gZmFsc2VcbiAgbG9va3VwTG9hZGluZzogQm9vbGVhbiA9IHRydWVcbiAgbGFzdExvb2tVcDogYW55XG4gIHJhdGluZ0xvb2t1cDogYW55XG4gIHJldmlld1BhZ2UgPSAxXG4gIHJldmlld0RlZmF1bHRMaW1pdCA9IDJcbiAgbG9va3VwTGltaXQgPSAzXG4gIHJhdGluZ1ZpZXdDb3VudCA9IDNcbiAgcmF0aW5nVmlld0NvdW50RGVmYXVsdCA9IDNcbiAgY29tcGV0ZW5jaWVzT2JqZWN0OiBhbnkgPSBbXVxuICBwcml2YXRlIGRlc3Ryb3lTdWJqZWN0JCA9IG5ldyBTdWJqZWN0PGFueT4oKVxuICB2aWV3TW9yZVRhZ3MgPSBmYWxzZVxuICB0aW1lclVuc3Vic2NyaWJlOiBhbnlcbiAgZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSBmYWxzZVxuXG4gIHN0cmlwOiBOc0NvbnRlbnRTdHJpcFdpdGhUYWJzLklDb250ZW50U3RyaXBVbml0ID0ge1xuICAgIGtleTogJ2JsZW5kZWRQcm9ncmFtcycsXG4gICAgbG9nbzogJycsXG4gICAgdGl0bGU6ICdCbGVuZGVkIFByb2dyYW0nLFxuICAgIHN0cmlwVGl0bGVMaW5rOiB7XG4gICAgICBsaW5rOiAnJyxcbiAgICAgIGljb246ICcnLFxuICAgIH0sXG4gICAgc2xpZGVyQ29uZmlnOiB7XG4gICAgICBzaG93TmF2czogdHJ1ZSxcbiAgICAgIHNob3dEb3RzOiBmYWxzZSxcbiAgICB9LFxuICAgIGxvYWRlcjogdHJ1ZSxcbiAgICBzdHJpcEJhY2tncm91bmQ6ICcnLFxuICAgIHRpdGxlRGVzY3JpcHRpb246ICdCbGVuZGVkIFByb2dyYW0nLFxuICAgIHN0cmlwQ29uZmlnOiB7XG4gICAgICBjYXJkU3ViVHlwZTogJ3N0YW5kYXJkJyxcbiAgICB9LFxuICAgIHZpZXdNb3JlVXJsOiB7XG4gICAgICBwYXRoOiAnJyxcbiAgICAgIHZpZXdNb3JlVGV4dDogJ1Nob3cgYWxsJyxcbiAgICAgIHF1ZXJ5UGFyYW1zOiAnJyxcbiAgICB9LFxuICAgIHRhYnM6IFtdLFxuICAgIGZpbHRlcnM6IFtdXG4gIH1cblxuICB0aW1lcjogYW55ID0ge31cbiAgaXNNb2JpbGUgPSBmYWxzZVxuICBjb21wZW50ZW5jeUtleSE6IE5zQ29udGVudC5JQ29tcGVudGVuY3lLZXlzXG4gIHNlY3RvcnNMaXN0OiBhbnlbXSA9IFtdXG4gIHN1YlNlY3RvcnNMaXN0OiBhbnlbXSA9IFtdXG4gIHVzZXJQcm9maWxlOiBhbnkgPSBudWxsXG4gIHN1YlNlY3RvckRldGFpbEFycjogYW55ID0gW11cbiAgc2VsZWN0ZWRTZWN0b3IgPSAnJ1xuICBzZWxlY3RlZFNlY3RvcklkID0gJydcbiAgcmVmcmVzaHJhdGluZ1N1YlxuICBwYWdlQ29uZmlnRGF0YTogYW55XG4gIGVudmlyb25tZW50ITogYW55XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmF0aW5nU2VydmljZTogUmF0aW5nU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlclNlcnZpY2U6IExvZ2dlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIG1hdFNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIGxvYWRDaGVja1NlcnZpY2U6IExvYWRDaGVja1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aW1lclNlcnZpY2U6IFRpbWVyU2VydmljZSxcbiAgICBwcml2YXRlIHRvY1N2YzogQXBwVG9jU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ3VyYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGRpc2N1c3NVdGlsaXR5U3ZjOiBEaXNjdXNzVXRpbHNTZXJ2aWNlLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJldmlld0RhdGFTZXJ2aWNlOiBSZXZpZXdDb21wb25lbnREYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGhhbmRsZUNsYWltU2VydmljZTogSGFuZGxlQ2xhaW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzZXRSYXRpbmdzU2VydmljZTogUmVzZXRSYXRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRlbnRTdmM6IFdpZGdldENvbnRlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgZW52aXJvbm1lbnQ6IGFueVxuICApIHtcbiAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnRcbiAgICB0aGlzLnJlZnJlc2hyYXRpbmdTdWIgPSB0aGlzLnJlc2V0UmF0aW5nc1NlcnZpY2UucmVzZXRSYXRpbmdzJC5zdWJzY3JpYmUoKF9yZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5mZXRjaFJhdGluZ1N1bW1hcnkoKVxuICAgIH0pXG4gIH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYWdlQ29uZmlnRGF0YSA9IHRoaXMuYWN0aXZhdGVkUm91dGU/LnNuYXBzaG90Py5kYXRhPy5wYWdlRGF0YT8uZGF0YVxuICAgIHRoaXMuY29tcGVudGVuY3lLZXkgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29tcGVudGVuY3lbdGhpcy5lbnZpcm9ubWVudC5jb21wZW50ZW5jeVZlcnNpb25LZXldXG4gICAgdGhpcy51c2VyUHJvZmlsZSA9IHRoaXMuY29uZmlnU2VydmljZS51c2VyUHJvZmlsZVxuICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8PSAxMjAwKSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzTW9iaWxlID0gZmFsc2VcbiAgICB9XG5cbiAgICBcblxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmlkZW50aWZpZXIpIHtcbiAgICAgIHRoaXMuZmV0Y2hSYXRpbmdTdW1tYXJ5KClcbiAgICAgIC8vIHRoaXMubG9hZENvbXBldGVuY2llcygpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY29udGVudElkICYmIHRoaXMuY29udGVudC5jb250ZW50SWQuaW5jbHVkZXMoJ2V4dF8nKSkge1xuICAgICAgLy8gdGhpcy5sb2FkQ29tcGV0ZW5jaWVzKClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnRbJ3N1YlRoZW1lJ10gPSB0aGlzLmdldFN1YlRoZW1lcygpXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQ0FTRV9TVFVEWSkge1xuICAgICAgdGhpcy5kaXNhYmxlQ2VydGlmaWNhdGUgPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ3RoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS0tLScsIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSlcblxuICAgIGlmICh0aGlzLmJhc2VDb250ZW50UmVhZERhdGE/LnNlY3RvckRldGFpbHNfdjEpIHtcbiAgICAgIC8vIFBhcnNlIHN0cmluZyB0byBhcnJheSBpZiBuZWVkZWRcbiAgICAgIGxldCBzZWN0b3JEZXRhaWxzQXJyYXkgPSB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuc2VjdG9yRGV0YWlsc192MVxuXG4gICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nLCB0cnkgdG8gcGFyc2UgaXQgaW50byBhbiBhcnJheVxuICAgICAgaWYgKHR5cGVvZiBzZWN0b3JEZXRhaWxzQXJyYXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc2VjdG9yRGV0YWlsc0FycmF5ID0gSlNPTi5wYXJzZShzZWN0b3JEZXRhaWxzQXJyYXkpXG4gICAgICAgICAgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjEgPSBzZWN0b3JEZXRhaWxzQXJyYXlcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgc2VjdG9yRGV0YWlsc192MTonLCBlKVxuICAgICAgICAgIHNlY3RvckRldGFpbHNBcnJheSA9IFtdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyBvbmx5IGlmIHdlIGhhdmUgYSB2YWxpZCBhcnJheSB3aXRoIGl0ZW1zXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWN0b3JEZXRhaWxzQXJyYXkpICYmIHNlY3RvckRldGFpbHNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VjdG9yc0xpc3QgPSBfLnVuaXFCeShcbiAgICAgICAgICBzZWN0b3JEZXRhaWxzQXJyYXlcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uc2VjdG9yTmFtZSAmJiBpdGVtPy5zZWN0b3JJZClcbiAgICAgICAgICAgIC5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgICAgc2VjdG9ySWQ6IGl0ZW0uc2VjdG9ySWQsXG4gICAgICAgICAgICAgIHNlY3Rvck5hbWU6IGl0ZW0uc2VjdG9yTmFtZVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICdzZWN0b3JOYW1lJ1xuICAgICAgICApXG5cbiAgICAgICAgdGhpcy5zdWJTZWN0b3JzTGlzdCA9IF8udW5pcUJ5KFxuICAgICAgICAgIHNlY3RvckRldGFpbHNBcnJheVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5zdWJTZWN0b3JOYW1lICYmIGl0ZW0/LnN1YlNlY3RvcklkKVxuICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICBzdWJTZWN0b3JJZDogaXRlbS5zdWJTZWN0b3JJZCxcbiAgICAgICAgICAgICAgc3ViU2VjdG9yTmFtZTogaXRlbS5zdWJTZWN0b3JOYW1lXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgJ3N1YlNlY3Rvck5hbWUnXG4gICAgICAgIClcblxuICAgICAgICBpZiAodGhpcy5zZWN0b3JzTGlzdCAmJiB0aGlzLnNlY3RvcnNMaXN0Lmxlbmd0aCAmJiB0aGlzLnNlY3RvcnNMaXN0WzBdKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN1YnNlY3Rvcih0aGlzLnNlY3RvcnNMaXN0WzBdKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgaWYgKFxuICAgICAgdGhpcy5jb250ZW50Py5jb250ZW50SWQgJiZcbiAgICAgIHRoaXMuY29udGVudD8uY2VydGlmaWNhdGVPYmo/LmRhdGEgJiZcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuY29udGVudC5jZXJ0aWZpY2F0ZU9iai5kYXRhKS5sZW5ndGggPT09IDAgJiZcbiAgICAgIHRoaXMuY29udGVudC5jb21wbGV0aW9uU3RhdHVzID09PSAyXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZU9wZW5DZXJ0aWZpY2F0ZURpYWxvZygpO1xuICAgIH1cblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGltZXJVbnN1YnNjcmliZSA9IHRoaXMudGltZXJTZXJ2aWNlLmdldFRpbWVyRGF0YSgpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95U3ViamVjdCQpKVxuICAgICAgLnN1YnNjcmliZSgoX3RpbWVyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50aW1lciA9IF90aW1lclxuICAgICAgfSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBlbnRlbmN5S2V5ID0gdGhpcy5jb25maWdTZXJ2aWNlLmNvbXBlbnRlbmN5W3RoaXMuZW52aXJvbm1lbnQuY29tcGVudGVuY3lWZXJzaW9uS2V5XVxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGVkVGFiVmFsdWUgJiYgY2hhbmdlcy5zZWxlY3RlZFRhYlZhbHVlLmN1cnJlbnRWYWx1ZSA9PT0gMCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIGlmICh0aGlzLnN1bW1hcnlFbGVtICYmIHRoaXMuc3VtbWFyeUVsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA3Mikge1xuICAgICAgICAgICAgdGhpcy5zdW1tYXJ5LmVsbGlwc2lzID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmRlc2NFbGVtICYmIHRoaXMuZGVzY0VsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA3Mikge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbi5lbGxpcHNpcyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMub2JqZWN0aXZlc0VsZW0gJiYgdGhpcy5vYmplY3RpdmVzRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDcyKSB7XG4gICAgICAgICAgICB0aGlzLm9iamVjdGl2ZXMuZWxsaXBzaXMgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnN1bW1hcnlFbGVtICYmIHRoaXMuc3VtbWFyeUVsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA0OCkge1xuICAgICAgICAgICAgdGhpcy5zdW1tYXJ5LmVsbGlwc2lzID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLmRlc2NFbGVtICYmIHRoaXMuZGVzY0VsZW0ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQgPiA0OCkge1xuICAgICAgICAgICAgdGhpcy5kZXNjcmlwdGlvbi5lbGxpcHNpcyA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRoaXMub2JqZWN0aXZlc0VsZW0gJiYgdGhpcy5vYmplY3RpdmVzRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDQ4KSB7XG4gICAgICAgICAgICB0aGlzLm9iamVjdGl2ZXMuZWxsaXBzaXMgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFnc0VsZW0gJiYgdGhpcy50YWdzRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDY0KSB7XG4gICAgICAgICAgdGhpcy50YWdzRWxsaXBzaXMgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUYWdFbGVtICYmIHRoaXMuc2VhcmNoVGFnRWxlbS5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCA+IDY0KSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUYWdzRWxsaXBzaXMgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgICBpZih0aGlzLmZyb21NRE8pIHtcbiAgICAgICAgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhID0gdGhpcy5jb250ZW50LnJlc3VsdC5jb250ZW50XG4gICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLmJhc2VDb250ZW50UmVhZERhdGEtLScsIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSlcbiAgICAgICAgdGhpcy5sb2FkQ29tcGV0ZW5jaWVzKClcbiAgICAgIH1cbiAgICAgIH0sIDUwMClcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5za2VsZXRvbkxvYWRlciAmJiAhY2hhbmdlcy5za2VsZXRvbkxvYWRlci5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRDaGVja1NlcnZpY2UuY29tcG9uZW50TG9hZGVkKHRydWUpXG4gICAgICB9LCA1MDApXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy50b2NTdHJ1Y3R1cmUgPSB7XG4gICAgICAgIGFzc2Vzc21lbnQ6IDAsXG4gICAgICAgIGNvdXJzZTogMCxcbiAgICAgICAgaGFuZHNPbjogMCxcbiAgICAgICAgaW50ZXJhY3RpdmVWaWRlbzogMCxcbiAgICAgICAgbGVhcm5pbmdNb2R1bGU6IDAsXG4gICAgICAgIG90aGVyOiAwLFxuICAgICAgICBwZGY6IDAsXG4gICAgICAgIHN1cnZleTogMCxcbiAgICAgICAgcG9kY2FzdDogMCxcbiAgICAgICAgcHJhY3RpY2VUZXN0OiAwLFxuICAgICAgICBmaW5hbFRlc3Q6IDAsXG4gICAgICAgIHF1aXo6IDAsXG4gICAgICAgIHZpZGVvOiAwLFxuICAgICAgICB3ZWJNb2R1bGU6IDAsXG4gICAgICAgIHdlYlBhZ2U6IDAsXG4gICAgICAgIHlvdXR1YmU6IDAsXG4gICAgICAgIGludGVyYWN0aXZlY29udGVudDogMCxcbiAgICAgICAgb2ZmbGluZVNlc3Npb246IDAsXG4gICAgICB9XG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZS5sZWFybmluZ01vZHVsZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICdDb3Vyc2UgVW5pdCcgPyAtMSA6IDBcbiAgICAgIHRoaXMudG9jU3RydWN0dXJlLmNvdXJzZSA9IHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkgPT09ICdDb3Vyc2UnID8gLTEgOiAwXG4gICAgICB0aGlzLnRvY1N0cnVjdHVyZSA9IHRoaXMudG9jU3ZjLmdldFRvY1N0cnVjdHVyZSh0aGlzLmNvbnRlbnQsIHRoaXMudG9jU3RydWN0dXJlKVxuICAgICAgZm9yIChjb25zdCBwcm9nVHlwZSBpbiB0aGlzLnRvY1N0cnVjdHVyZSkge1xuICAgICAgICBpZiAodGhpcy50b2NTdHJ1Y3R1cmVbcHJvZ1R5cGVdID4gMCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgaWYgKHRoaXMucmF0aW5nU3VtbWFyeSAmJiBPYmplY3Qua2V5cyh0aGlzLnJhdGluZ1N1bW1hcnkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZmV0Y2hSYXRpbmdTdW1tYXJ5KClcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb21wZXRlbmNpZXNPYmplY3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5sb2FkQ29tcGV0ZW5jaWVzKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jb250ZW50SWQgJiYgdGhpcy5jb250ZW50LmNvbnRlbnRJZC5pbmNsdWRlcygnZXh0XycpKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbXBldGVuY2llc09iamVjdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmxvYWRDb21wZXRlbmNpZXMoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmNvbnRlbnRSZWFkRGF0YSkge1xuICAgICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YVsnc3ViVGhlbWUnXSA9IHRoaXMuZ2V0U3ViVGhlbWVzKClcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY291cnNlQ2F0ZWdvcnkgPT09IE5zQ29udGVudC5FQ291cnNlQ2F0ZWdvcnkuQ0FTRV9TVFVEWSkge1xuICAgICAgICB0aGlzLmRpc2FibGVDZXJ0aWZpY2F0ZSA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhPy5zZWN0b3JEZXRhaWxzX3YxKSB7XG4gICAgICAgIC8vIFBhcnNlIHN0cmluZyB0byBhcnJheSBpZiBuZWVkZWRcbiAgICAgICAgbGV0IHNlY3RvckRldGFpbHNBcnJheSA9IHRoaXMuY29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjFcblxuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nLCB0cnkgdG8gcGFyc2UgaXQgaW50byBhbiBhcnJheVxuICAgICAgICBpZiAodHlwZW9mIHNlY3RvckRldGFpbHNBcnJheSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VjdG9yRGV0YWlsc0FycmF5ID0gSlNPTi5wYXJzZShzZWN0b3JEZXRhaWxzQXJyYXkpXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YS5zZWN0b3JEZXRhaWxzX3YxID0gc2VjdG9yRGV0YWlsc0FycmF5XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBzZWN0b3JEZXRhaWxzX3YxOicsIGUpXG4gICAgICAgICAgICBzZWN0b3JEZXRhaWxzQXJyYXkgPSBbXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3Mgb25seSBpZiB3ZSBoYXZlIGEgdmFsaWQgYXJyYXkgd2l0aCBpdGVtc1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWN0b3JEZXRhaWxzQXJyYXkpICYmIHNlY3RvckRldGFpbHNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gRXh0cmFjdCB1bmlxdWUgc2VjdG9ycyB1c2luZyBsb2Rhc2hcbiAgICAgICAgICB0aGlzLnNlY3RvcnNMaXN0ID0gXy51bmlxQnkoXG4gICAgICAgICAgICBzZWN0b3JEZXRhaWxzQXJyYXlcbiAgICAgICAgICAgICAgLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5zZWN0b3JOYW1lICYmIGl0ZW0/LnNlY3RvcklkKVxuICAgICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgc2VjdG9ySWQ6IGl0ZW0uc2VjdG9ySWQsXG4gICAgICAgICAgICAgICAgc2VjdG9yTmFtZTogaXRlbS5zZWN0b3JOYW1lXG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICdzZWN0b3JOYW1lJ1xuICAgICAgICAgIClcblxuICAgICAgICAgIC8vIEV4dHJhY3QgdW5pcXVlIHN1YnNlY3RvcnMgdXNpbmcgbG9kYXNoXG4gICAgICAgICAgdGhpcy5zdWJTZWN0b3JzTGlzdCA9IF8udW5pcUJ5KFxuICAgICAgICAgICAgc2VjdG9yRGV0YWlsc0FycmF5XG4gICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbT8uc3ViU2VjdG9yTmFtZSAmJiBpdGVtPy5zdWJTZWN0b3JJZClcbiAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgIHN1YlNlY3RvcklkOiBpdGVtLnN1YlNlY3RvcklkLFxuICAgICAgICAgICAgICAgIHN1YlNlY3Rvck5hbWU6IGl0ZW0uc3ViU2VjdG9yTmFtZVxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAnc3ViU2VjdG9yTmFtZSdcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mb3JQcmV2aWV3ID0gd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJy9wdWJsaWMvJykgfHwgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5jbHVkZXMoJyZwcmV2aWV3PXRydWUnKVxuICAgICBpZiAoY2hhbmdlcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmlzRXh0ZXJuYWxDb250ZW50ID0gXy5nZXQoY2hhbmdlcywgJ2NvbnRlbnQuY3VycmVudFZhbHVlLmNvbnRlbnRJZCcsICcnKS50b1N0cmluZygpLmluY2x1ZGVzKCdleHRfJylcbiAgICB9XG4gIH1cblxuICBnZXRTdWJUaGVtZXMoKTogYW55W10ge1xuICAgIGNvbnN0IHN1YlRoZW1lQXJyOiBhbnlbXSA9IFtdXG4gICAgaWYgKHRoaXMuY29udGVudFJlYWREYXRhICYmIHRoaXMuY29tcGVudGVuY3lLZXkgJiYgdGhpcy5jb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XSAmJiB0aGlzLmNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldLmxlbmd0aCkge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldID09PSAnc3RyaW5nJyAmJiB0aGlzLmNoZWNrVmFsaWRKU09OKHRoaXMuY29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0pKSB7XG4gICAgICAgIHRoaXMuY29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0gPSBKU09OLnBhcnNlKHRoaXMuY29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0pXG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldLmZvckVhY2goKF9jb21wZXRlbmN5T2JqOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHN1YlRoZW1lQXJyLmluZGV4T2YoX2NvbXBldGVuY3lPYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeVN1YlRoZW1lXSkgPT09IC0xKSB7XG4gICAgICAgICAgc3ViVGhlbWVBcnIucHVzaChfY29tcGV0ZW5jeU9ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5U3ViVGhlbWVdKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gc3ViVGhlbWVBcnJcbiAgfVxuXG4gIGxvYWRDb21wZXRlbmNpZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YSAmJiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XSAmJiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XS5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNvbXBldGVuY2llc09iamVjdDogYW55ID0ge31cbiAgICAgIGlmICh0eXBlb2YgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0gPT09ICdzdHJpbmcnXG4gICAgICAgICYmIHRoaXMuY2hlY2tWYWxpZEpTT04odGhpcy5iYXNlQ29udGVudFJlYWREYXRhW3RoaXMuY29tcGVudGVuY3lLZXkudktleV0pKSB7XG4gICAgICAgIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldID0gSlNPTi5wYXJzZSh0aGlzLmJhc2VDb250ZW50UmVhZERhdGFbdGhpcy5jb21wZW50ZW5jeUtleS52S2V5XSlcbiAgICAgIH1cbiAgICAgIHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YVt0aGlzLmNvbXBlbnRlbmN5S2V5LnZLZXldLmZvckVhY2goKF9vYmo6IGFueSkgPT4ge1xuICAgICAgICBpZiAoY29tcGV0ZW5jaWVzT2JqZWN0W19vYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeUFyZWFdXSkge1xuICAgICAgICAgIGlmIChjb21wZXRlbmNpZXNPYmplY3RbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5QXJlYV1dXG4gICAgICAgICAgW19vYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeVRoZW1lXV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBldGVuY3lUaGVtZSA9IGNvbXBldGVuY2llc09iamVjdFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lBcmVhXV1cbiAgICAgICAgICAgIFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lUaGVtZV1dXG4gICAgICAgICAgICBpZiAoY29tcGV0ZW5jeVRoZW1lLmluZGV4T2YoX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5U3ViVGhlbWVdKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgY29tcGV0ZW5jeVRoZW1lLnB1c2goX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5U3ViVGhlbWVdKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21wZXRlbmNpZXNPYmplY3RbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5QXJlYV1dXG4gICAgICAgICAgICBbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5VGhlbWVdXSA9IFtdXG4gICAgICAgICAgICBjb21wZXRlbmNpZXNPYmplY3RbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5QXJlYV1dXG4gICAgICAgICAgICBbX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5VGhlbWVdXVxuICAgICAgICAgICAgICAucHVzaChfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lTdWJUaGVtZV0pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbXBldGVuY2llc09iamVjdFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lBcmVhXV0gPSB7fVxuICAgICAgICAgIGNvbXBldGVuY2llc09iamVjdFtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lBcmVhXV1bX29ialt0aGlzLmNvbXBlbnRlbmN5S2V5LnZDb21wZXRlbmN5VGhlbWVdXSA9IFtdXG4gICAgICAgICAgY29tcGV0ZW5jaWVzT2JqZWN0W19vYmpbdGhpcy5jb21wZW50ZW5jeUtleS52Q29tcGV0ZW5jeUFyZWFdXVtfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lUaGVtZV1dXG4gICAgICAgICAgICAucHVzaChfb2JqW3RoaXMuY29tcGVudGVuY3lLZXkudkNvbXBldGVuY3lTdWJUaGVtZV0pXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbXBldGVuY2llc09iamVjdCkge1xuICAgICAgICBpZiAoY29tcGV0ZW5jaWVzT2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICBjb25zdCBfdGVtcDogYW55ID0ge31cbiAgICAgICAgICBfdGVtcFsna2V5J10gPSBrZXlcbiAgICAgICAgICBfdGVtcFsndmFsdWUnXSA9IGNvbXBldGVuY2llc09iamVjdFtrZXldXG4gICAgICAgICAgdGhpcy5jb21wZXRlbmNpZXNPYmplY3QucHVzaChfdGVtcClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5oYW5kbGVTaG93Q29tcGV0ZW5jaWVzKHRoaXMuY29tcGV0ZW5jaWVzT2JqZWN0WzBdKVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNob3dDb21wZXRlbmNpZXMoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5jb21wZXRlbmN5U2VsZWN0ZWQgPSBpdGVtLmtleVxuICAgIGNvbnN0IHZhbHVlT2JqID0gaXRlbS52YWx1ZVxuICAgIGNvbnN0IGNvbXBldGVuY3lBcnJheSA9IFtdXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdmFsdWVPYmopIHtcbiAgICAgIGlmICh2YWx1ZU9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IF90ZW1wT2JqOiBhbnkgPSB7fVxuICAgICAgICBfdGVtcE9ialsna2V5J10gPSBrZXlcbiAgICAgICAgX3RlbXBPYmpbJ3ZhbHVlJ10gPSB2YWx1ZU9ialtrZXldXG4gICAgICAgIGNvbXBldGVuY3lBcnJheS5wdXNoKF90ZW1wT2JqKVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnN0cmlwWydsb2FkZXJXaWRnZXRzJ10gPSBbXVxuICAgIHRoaXMuc3RyaXBbJ2xvYWRlcldpZGdldHMnXSA9IHRoaXMudHJhbnNmb3JtQ29tcGV0ZW5jaWVzVG9XaWRnZXQodGhpcy5jb21wZXRlbmN5U2VsZWN0ZWQsIGNvbXBldGVuY3lBcnJheSwgdGhpcy5zdHJpcClcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtQ29tcGV0ZW5jaWVzVG9XaWRnZXQoXG4gICAgY29tcGV0ZW5jeUFyZWE6IHN0cmluZyxcbiAgICBjb21wZXRlbmN5QXJyT2JqZWN0OiBhbnksXG4gICAgc3RyaXA6IE5zQ29udGVudFN0cmlwV2l0aFRhYnMuSUNvbnRlbnRTdHJpcFVuaXQpIHtcbiAgICByZXR1cm4gKGNvbXBldGVuY3lBcnJPYmplY3QgfHwgW10pLm1hcCgoY29udGVudDogYW55LCBpZHg6IG51bWJlcikgPT4gKFxuICAgICAgY29udGVudCA/IHtcbiAgICAgICAgd2lkZ2V0VHlwZTogJ2NhcmQnLFxuICAgICAgICB3aWRnZXRTdWJUeXBlOiAnY29tcGV0ZW5jeUNhcmQnLFxuICAgICAgICB3aWRnZXRIb3N0Q2xhc3M6ICdtci00JyxcbiAgICAgICAgd2lkZ2V0RGF0YToge1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgY29tcGV0ZW5jeUFyZWEsXG4gICAgICAgICAgY2FyZEN1c3RvbWVDbGFzczogc3RyaXAuY3VzdG9tZUNsYXNzID8gc3RyaXAuY3VzdG9tZUNsYXNzIDogJycsXG4gICAgICAgICAgY29udGV4dDogeyBwYWdlU2VjdGlvbjogc3RyaXAua2V5LCBwb3NpdGlvbjogaWR4IH0sXG4gICAgICAgIH0sXG4gICAgICB9IDoge1xuICAgICAgICB3aWRnZXRUeXBlOiAnY2FyZCcsXG4gICAgICAgIHdpZGdldFN1YlR5cGU6ICdjb21wZXRlbmN5Q2FyZCcsXG4gICAgICAgIHdpZGdldEhvc3RDbGFzczogJ21yLTQnLFxuICAgICAgICB3aWRnZXREYXRhOiB7fSxcbiAgICAgIH1cbiAgICApKVxuICB9XG5cbiAgcHVibGljIGhhbmRsZVBhcnNlSnNvbkRhdGEoczogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZFN0cmluZyA9IEpTT04ucGFyc2UocylcbiAgICAgIHJldHVybiBwYXJzZWRTdHJpbmdcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgfVxuXG4gIGZldGNoUmF0aW5nU3VtbWFyeSgpIHtcbiAgICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5pZGVudGlmaWVyICYmIHRoaXMuY29udGVudC5wcmltYXJ5Q2F0ZWdvcnkpIHtcbiAgICAgIHRoaXMucmF0aW5nU2VydmljZS5nZXRSYXRpbmdTdW1tYXJ5KHRoaXMuY29udGVudC5pZGVudGlmaWVyLCB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5KS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnJlc3VsdCAmJiByZXMucmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgICAgICB0aGlzLnJhdGluZ1N1bW1hcnkgPSByZXMucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmF0aW5nU3VtbWFyeSA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEhpZGUgbG9hZGVyIGZvciBNYXREaWFsb2cuLi5cbiAgICAgICAgICBpZiAodGhpcy5kaWFsb2dSZWYpIHsgdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGlzcGxheUxvYWRlciA9IGZhbHNlIH1cbiAgICAgICAgICB0aGlzLnJhdGluZ1N1bW1hcnlQcm9jZXNzZWQgPSB0aGlzLnByb2Nlc3NSYXRpbmdTdW1tYXJ5KClcbiAgICAgICAgICAvLyB0aGlzLmZldGNoUmF0aW5nTG9va3VwKClcbiAgICAgICAgfSxcbiAgICAgICAgKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKCdVU0VSIFJBVElORyBGRVRDSCBFUlJPUiA+JywgZXJyKVxuICAgICAgICAgIHRoaXMubWF0U25hY2tCYXIub3BlbignVW5hYmxlIHRvIGZldGNoIHJhdGluZyBzdW1tYXJ5LCBkdWUgdG8gc29tZSBlcnJvciEnKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgZmV0Y2hSYXRpbmdMb29rdXAoKSB7XG4gICAgdGhpcy5kaXNwbGF5TG9hZGVyID0gdHJ1ZVxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmlkZW50aWZpZXIgJiYgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSkge1xuICAgICAgY29uc3QgcmVxID0ge1xuICAgICAgICBhY3Rpdml0eUlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgICAgICAgYWN0aXZpdHlUeXBlOiB0aGlzLmNvbnRlbnQucHJpbWFyeUNhdGVnb3J5LFxuICAgICAgICBsaW1pdDogdGhpcy5sb29rdXBMaW1pdCxcbiAgICAgICAgLi4uKCh0aGlzLmxhc3RMb29rVXAgJiYgdGhpcy5sYXN0TG9va1VwLnVwZGF0ZWRPblVVSUQpID8geyB1cGRhdGVPbjogKHRoaXMubGFzdExvb2tVcCAmJiB0aGlzLmxhc3RMb29rVXAudXBkYXRlZE9uVVVJRCkgfSA6IG51bGwpLFxuICAgICAgfVxuXG4gICAgICB0aGlzLnJhdGluZ1NlcnZpY2UuZ2V0UmF0aW5nTG9va3VwKHJlcSkuc3Vic2NyaWJlKFxuICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBUbyBkaXNhYmxlIHRoZSBsb2FkZXIgaW4gdGhlIG1vZGFsLlxuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGlzcGxheUxvYWRlciA9IGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMucmVzdWx0ICYmIHJlcy5yZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJldmlld1BhZ2UgPiAxKSB7XG4gICAgICAgICAgICAgIHJlcy5yZXN1bHQucmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmF0aW5nTG9va3VwLmZpbmQoKG86IGFueSkgPT4gby51cGRhdGVkT25VVUlEID09PSBpdGVtLnVwZGF0ZWRPblVVSUQpKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJhdGluZ0xvb2t1cC5wdXNoKGl0ZW0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5yYXRpbmdMb29rdXAgPSByZXMucmVzdWx0LnJlc3BvbnNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5wcm9jZXNzUmF0aW5nTG9va3VwKHJlcy5yZXN1bHQucmVzcG9uc2UpXG4gICAgICAgIH0sXG4gICAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ1JlZikgeyAgIC8vIFRvIGRpc2FibGUgdGhlIGxvYWRlciBpbiB0aGUgbW9kYWwuXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kaXNwbGF5TG9hZGVyID0gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ1VTRVIgUkFUSU5HIEZFVENIIEVSUk9SID4nLCBlcnIpXG4gICAgICAgICAgdGhpcy5tYXRTbmFja0Jhci5vcGVuKCdVbmFibGUgdG8gbG9hZCByZXZpZXdzLCBkdWUgdG8gc29tZSBlcnJvciEnKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJvY2Vzc1JhdGluZ0xvb2t1cChyZXNwb25zZTogYW55KSB7XG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UubGVuZ3RoIDwgdGhpcy5sb29rdXBMaW1pdCkge1xuICAgICAgICB0aGlzLmRpc2FibGVMb2FkTW9yZSA9IHRydWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZUxvYWRNb3JlID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIHRoaXMubGFzdExvb2tVcCA9IHJlc3BvbnNlW3Jlc3BvbnNlLmxlbmd0aCAtIDFdXG4gICAgICB0aGlzLnJhdGluZ1Jldmlld3MgPSB0aGlzLnJhdGluZ0xvb2t1cFxuICAgICAgdGhpcy5hdXRoUmVwbGllcyA9IFtdXG4gICAgICB0aGlzLmF1dGhSZXBsaWVzID0gXy5rZXlCeSh0aGlzLmxhdGVzdFJldmlld3MsICd1c2VySWQnKVxuICAgICAgY29uc3QgdXNlcklkcyA9IF8ubWFwKHRoaXMubGF0ZXN0UmV2aWV3cywgJ3VzZXJJZCcpXG4gICAgICBpZiAodGhpcy5jb250ZW50ICYmIHVzZXJJZHMpIHtcbiAgICAgICAgdGhpcy5nZXRBdXRob3JSZXBseSh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSwgdXNlcklkcylcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucmF0aW5nUmV2aWV3cykge1xuICAgICAgICB0aGlzLnJhdGluZ1Jldmlld3MgPSB0aGlzLnJhdGluZ1Jldmlld3Muc2xpY2UoKVxuICAgICAgICB0aGlzLnJldmlld0RhdGFTZXJ2aWNlLnNldFJldmlld0RhdGEodGhpcy5yYXRpbmdSZXZpZXdzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEF1dGhvclJlcGx5KGlkZW50aWZpZXI6IHN0cmluZywgcHJpbWFyeUNhdGVnb3J5OiBOc0NvbnRlbnQuRVByaW1hcnlDYXRlZ29yeSwgdXNlcklkczogYW55W10pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgcmVxdWVzdDoge1xuICAgICAgICBhY3Rpdml0eUlkOiBpZGVudGlmaWVyLFxuICAgICAgICBhY3Rpdml0eVR5cGU6IHByaW1hcnlDYXRlZ29yeSxcbiAgICAgICAgdXNlcklkOiB1c2VySWRzLFxuICAgICAgfSxcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yYXRpbmdTZXJ2aWNlLmdldFJhdGluZ1JlcGx5KHJlcXVlc3QpLnN1YnNjcmliZShcbiAgICAgIChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5jb250ZW50KSB7XG4gICAgICAgICAgY29uc3QgcmF0aW5nQXV0aFJlcGxheSA9IHJlcy5yZXN1bHQuY29udGVudFxuICAgICAgICAgIF8uZm9yRWFjaChyYXRpbmdBdXRoUmVwbGF5LCB2YWx1ZSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hdXRoUmVwbGllc1t2YWx1ZS51c2VySWRdKSB7XG4gICAgICAgICAgICAgIHRoaXMuYXV0aFJlcGxpZXNbdmFsdWUudXNlcklkXVsnY29tbWVudCddID0gdmFsdWUuY29tbWVudFxuICAgICAgICAgICAgICB0aGlzLmF1dGhSZXBsaWVzW3ZhbHVlLnVzZXJJZF1bJ3VzZXJJZCddID0gdmFsdWUudXNlcklkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGF0ZXN0UmV2aWV3cyA9IE9iamVjdC52YWx1ZXModGhpcy5hdXRoUmVwbGllcylcbiAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFJlcGxpZXNcbiAgICAgIH0sXG4gICAgICAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKCdVU0VSIFJBVElORyBGRVRDSCBFUlJPUiA+JywgZXJyKVxuICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBmZXRjaCBhdXRob3IgcmVwbGllcywgZHVlIHRvIHNvbWUgZXJyb3IhJylcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBjb3VudFN0YXJzUGVyY2VudGFnZSh2YWx1ZTogYW55LCBrZXk6IGFueSwgdG90YWw6IGFueSkge1xuICAgIGlmICh2YWx1ZSAmJiB0b3RhbCkge1xuICAgICAgcmV0dXJuICgoKHZhbHVlICoga2V5KSAvIHRvdGFsKSAqIDEwMCkudG9GaXhlZCgyKVxuICAgIH1cbiAgICByZXR1cm4gMFxuICB9XG5cbiAgcHJvY2Vzc1JhdGluZ1N1bW1hcnkoKSB7XG4gICAgY29uc3QgYnJlYWtEb3duQXJyYXk6IGFueVtdID0gW11cbiAgICBjb25zdCByYXRpbmdTdW1tYXJ5UHIgPSB7XG4gICAgICBicmVha0Rvd246IGJyZWFrRG93bkFycmF5LFxuICAgICAgbGF0ZXN0NTBSZXZpZXdzOiBicmVha0Rvd25BcnJheSxcbiAgICAgIHJhdGluZ3NOdW1iZXI6IGJyZWFrRG93bkFycmF5LFxuICAgICAgdG90YWxfbnVtYmVyX29mX3JhdGluZ3M6IF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsX251bWJlcl9vZl9yYXRpbmdzJykgfHwgMCxcbiAgICAgIGF2Z1JhdGluZzogMCxcbiAgICB9XG5cbiAgICBjb25zdCB0b3RSYXRpbmdzID0gXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAnc3VtX29mX3RvdGFsX3JhdGluZ3MnKSB8fCAwXG4gICAgcmF0aW5nU3VtbWFyeVByLmJyZWFrRG93bi5wdXNoKHtcbiAgICAgIHBlcmNlbnQ6IHRoaXMuY291bnRTdGFyc1BlcmNlbnRhZ2UoXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAndG90YWxjb3VudDFzdGFycycpLCAxLCB0b3RSYXRpbmdzKSxcbiAgICAgIGtleTogMSxcbiAgICAgIHZhbHVlOiBfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50MXN0YXJzJyksXG4gICAgfSlcbiAgICByYXRpbmdTdW1tYXJ5UHIuYnJlYWtEb3duLnB1c2goe1xuICAgICAgcGVyY2VudDogdGhpcy5jb3VudFN0YXJzUGVyY2VudGFnZShfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50MnN0YXJzJyksIDIsIHRvdFJhdGluZ3MpLFxuICAgICAga2V5OiAyLFxuICAgICAgdmFsdWU6IF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsY291bnQyc3RhcnMnKSxcbiAgICB9KVxuICAgIHJhdGluZ1N1bW1hcnlQci5icmVha0Rvd24ucHVzaCh7XG4gICAgICBwZXJjZW50OiB0aGlzLmNvdW50U3RhcnNQZXJjZW50YWdlKF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsY291bnQzc3RhcnMnKSwgMywgdG90UmF0aW5ncyksXG4gICAgICBrZXk6IDMsXG4gICAgICB2YWx1ZTogXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAndG90YWxjb3VudDNzdGFycycpLFxuICAgIH0pXG4gICAgcmF0aW5nU3VtbWFyeVByLmJyZWFrRG93bi5wdXNoKHtcbiAgICAgIHBlcmNlbnQ6IHRoaXMuY291bnRTdGFyc1BlcmNlbnRhZ2UoXy5nZXQodGhpcy5yYXRpbmdTdW1tYXJ5LCAndG90YWxjb3VudDRzdGFycycpLCA0LCB0b3RSYXRpbmdzKSxcbiAgICAgIGtleTogNCxcbiAgICAgIHZhbHVlOiBfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50NHN0YXJzJyksXG4gICAgfSlcbiAgICByYXRpbmdTdW1tYXJ5UHIuYnJlYWtEb3duLnB1c2goe1xuICAgICAgcGVyY2VudDogdGhpcy5jb3VudFN0YXJzUGVyY2VudGFnZShfLmdldCh0aGlzLnJhdGluZ1N1bW1hcnksICd0b3RhbGNvdW50NXN0YXJzJyksIDUsIHRvdFJhdGluZ3MpLFxuICAgICAga2V5OiA1LFxuICAgICAgdmFsdWU6IF8uZ2V0KHRoaXMucmF0aW5nU3VtbWFyeSwgJ3RvdGFsY291bnQ1c3RhcnMnKSxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucmF0aW5nU3VtbWFyeSAmJiB0aGlzLnJhdGluZ1N1bW1hcnkubGF0ZXN0NTBSZXZpZXdzKSB7XG4gICAgICBjb25zdCBsYXRlc3Q1MFJldmlld3MgPSBKU09OLnBhcnNlKHRoaXMucmF0aW5nU3VtbWFyeS5sYXRlc3Q1MFJldmlld3MpXG4gICAgICBjb25zdCBtb2RpZmllZFJldmlld3MgPSBfLm1hcChsYXRlc3Q1MFJldmlld3MsIHJhdGluZyA9PiB7XG4gICAgICAgIHJhdGluZ1sndXNlcklkJ10gPSByYXRpbmcudXNlcl9pZFxuICAgICAgICByZXR1cm4gcmF0aW5nXG4gICAgICB9KVxuICAgICAgdGhpcy5hdXRoUmVwbGllcyA9IFtdXG4gICAgICB0aGlzLmF1dGhSZXBsaWVzID0gXy5rZXlCeShsYXRlc3Q1MFJldmlld3MsICd1c2VyX2lkJylcbiAgICAgIGNvbnN0IHVzZXJJZHMgPSBfLm1hcChsYXRlc3Q1MFJldmlld3MsICd1c2VyX2lkJylcbiAgICAgIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5nZXRBdXRob3JSZXBseSh0aGlzLmNvbnRlbnQuaWRlbnRpZmllciwgdGhpcy5jb250ZW50LnByaW1hcnlDYXRlZ29yeSwgdXNlcklkcylcbiAgICAgIH1cblxuICAgICAgcmF0aW5nU3VtbWFyeVByLmxhdGVzdDUwUmV2aWV3cyA9IG1vZGlmaWVkUmV2aWV3c1xuICAgICAgdGhpcy5yYXRpbmdSZXZpZXdzID0gbW9kaWZpZWRSZXZpZXdzXG4gICAgICB0aGlzLnRvcFJhdGluZ1Jldmlld3MgPSBtb2RpZmllZFJldmlld3NcbiAgICB9XG4gICAgLy8gVG8gcGFzcyBkYXRhIHRvIHRoZSByZXZpZXcgY29udGVudFxuICAgIHRoaXMucmV2aWV3RGF0YVNlcnZpY2Uuc2V0UmV2aWV3RGF0YSh0aGlzLnJhdGluZ1Jldmlld3MpXG5cbiAgICBpZiAodGhpcy5yYXRpbmdTdW1tYXJ5ICYmIHRoaXMucmF0aW5nU3VtbWFyeS50b3RhbF9udW1iZXJfb2ZfcmF0aW5ncykge1xuICAgICAgcmF0aW5nU3VtbWFyeVByLmF2Z1JhdGluZyA9XG4gICAgICAgIHBhcnNlRmxvYXQoKHRoaXMucmF0aW5nU3VtbWFyeS5zdW1fb2ZfdG90YWxfcmF0aW5ncyAvIHRoaXMucmF0aW5nU3VtbWFyeS50b3RhbF9udW1iZXJfb2ZfcmF0aW5ncykudG9GaXhlZCgxKSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICB0aGlzLmNvbnRlbnQuYXZlcmFnZVJhdGluZyA9IHJhdGluZ1N1bW1hcnlQci5hdmdSYXRpbmdcbiAgICAgIHRoaXMuY29udGVudC50b3RhbFJhdGluZyA9IHJhdGluZ1N1bW1hcnlQci50b3RhbF9udW1iZXJfb2ZfcmF0aW5nc1xuICAgIH1cbiAgICByZXR1cm4gcmF0aW5nU3VtbWFyeVByXG4gIH1cblxuICBoYW5kbGVDYXBpdGFsaXplKHN0cjogc3RyaW5nLCB0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdGVtcFN0ciA9IHN0clxuICAgIGlmICh0ZW1wU3RyKSB7XG4gICAgICB0ZW1wU3RyID0gdGVtcFN0ci5zcGxpdCgnX3gwMDBEXywnKS5qb2luKCcnKVxuICAgIH1cbiAgICBsZXQgcmV0dXJuVmFsdWUgPSAnJ1xuICAgIGlmICh0ZW1wU3RyICYmIHR5cGUgPT09ICduYW1lJykge1xuICAgICAgcmV0dXJuVmFsdWUgPSB0ZW1wU3RyLnNwbGl0KCcgJykubWFwKF9zdHIgPT4ge1xuICAgICAgICByZXR1cm4gX3N0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIF9zdHIuc2xpY2UoMSlcbiAgICAgIH0pLmpvaW4oJyAnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm5WYWx1ZSA9IHRlbXBTdHIgJiYgKHRlbXBTdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZW1wU3RyLnNsaWNlKDEpKVxuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuVmFsdWVcbiAgfVxuXG4gIGhhbmRsZU9wZW5SZXZpZXdNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUmV2aWV3c0NvbnRlbnRDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YTogeyByYXRpbmdzOiB0aGlzLnJhdGluZ1N1bW1hcnlQcm9jZXNzZWQsIHJldmlld3M6IHRoaXMuYXV0aFJlcGxpZXMsIGxhdGVzdFJldmlld3M6IHRoaXMucmF0aW5nTG9va3VwIH0sXG4gICAgICBwYW5lbENsYXNzOiAncmF0aW5ncy1tb2RhbC1ib3gnLFxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxuICAgIH0pXG5cbiAgICB0aGlzLmRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoX3Jlc3VsdDogYW55KSA9PiB7XG4gICAgfSlcblxuICAgIHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmluaXRpYXRlTG9hZE1vcmUuc3Vic2NyaWJlKChfdmFsdWU6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5sb2FkTW9yZShfdmFsdWUpXG4gICAgfSlcblxuICAgIHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmxvYWRMYXRlc3RSZXZpZXdzLnN1YnNjcmliZSgoX3ZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRpc3BsYXlMb2FkZXIgPSB0cnVlXG4gICAgICB0aGlzLnJhdGluZ1ZpZXdDb3VudCA9IHRoaXMucmF0aW5nVmlld0NvdW50RGVmYXVsdFxuICAgICAgdGhpcy5sYXN0TG9va1VwID0gJydcbiAgICAgIHRoaXMucmF0aW5nUmV2aWV3cyA9IFtdXG4gICAgICB0aGlzLnJldmlld1BhZ2UgPSAxXG4gICAgICB0aGlzLmRpc2FibGVMb2FkTW9yZSA9IGZhbHNlXG4gICAgICB0aGlzLnJhdGluZ0xvb2t1cCA9IFtdXG4gICAgICBpZiAoIXRoaXMuZm9yUHJldmlldykge1xuICAgICAgICBpZiAoX3ZhbHVlID09PSAnTGF0ZXN0Jykge1xuICAgICAgICAgIHRoaXMuZmV0Y2hSYXRpbmdMb29rdXAoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmV0Y2hSYXRpbmdTdW1tYXJ5KClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBsb2FkTW9yZShzZWxlY3RlZFJldmlldzogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVMb2FkTW9yZSkge1xuICAgICAgdGhpcy5sb29rdXBMb2FkaW5nID0gdHJ1ZVxuICAgICAgdGhpcy5yZXZpZXdQYWdlID0gdGhpcy5yZXZpZXdQYWdlICsgMVxuICAgICAgdGhpcy5yYXRpbmdWaWV3Q291bnQgPSB0aGlzLnJldmlld1BhZ2UgKiB0aGlzLnJldmlld0RlZmF1bHRMaW1pdFxuICAgICAgaWYgKHNlbGVjdGVkUmV2aWV3ID09PSAnTGF0ZXN0Jykge1xuICAgICAgICB0aGlzLnJldmlld1BhZ2UgPSB0aGlzLnJldmlld1BhZ2UgKyAxXG4gICAgICAgIHRoaXMucmF0aW5nVmlld0NvdW50ID0gdGhpcy5yZXZpZXdQYWdlICogdGhpcy5yZXZpZXdEZWZhdWx0TGltaXRcbiAgICAgICAgdGhpcy5mZXRjaFJhdGluZ0xvb2t1cCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKHRoaXMucmV2aWV3UGFnZSAqIHRoaXMucmF0aW5nVmlld0NvdW50KSA+IHRoaXMucmF0aW5nUmV2aWV3cy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmRpc2FibGVMb2FkTW9yZSA9IHRydWVcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kaXNwbGF5TG9hZGVyID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJldmlld1BhZ2UgPSB0aGlzLnJldmlld1BhZ2UgKyAxXG4gICAgICAgIHRoaXMucmF0aW5nVmlld0NvdW50ID0gdGhpcy5yZXZpZXdQYWdlICogdGhpcy5yYXRpbmdWaWV3Q291bnRcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvRGlzY3Vzc2lvbkh1YigpIHtcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICBtZW51T3B0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgcm91dGU6ICdhbGwtZGlzY3Vzc2lvbnMnLFxuICAgICAgICAgIGxhYmVsOiAnQWxsIGRpc2N1c3Npb25zJyxcbiAgICAgICAgICBlbmFibGU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICByb3V0ZTogJ2NhdGVnb3JpZXMnLFxuICAgICAgICAgIGxhYmVsOiAnQ2F0ZWdvcmllcycsXG4gICAgICAgICAgZW5hYmxlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgcm91dGU6ICd0YWdzJyxcbiAgICAgICAgICBsYWJlbDogJ1RhZ3MnLFxuICAgICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHJvdXRlOiAnbXktZGlzY3Vzc2lvbicsXG4gICAgICAgICAgbGFiZWw6ICdZb3VyIGRpc2N1c3Npb24nLFxuICAgICAgICAgIGVuYWJsZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgIHJvdXRlOiAnbGVhZGVyYm9hcmQnLFxuICAgICAgICAvLyAgIGxhYmVsOiAnTGVhZGVyIEJvYXJkJyxcbiAgICAgICAgLy8gICBlbmFibGU6IHRydWUsXG4gICAgICAgIC8vIH0sXG4gICAgICBdLFxuICAgICAgdXNlck5hbWU6ICh0aGlzLmNvbmZpZ1NlcnZpY2Uubm9kZWJiVXNlclByb2ZpbGUgJiYgdGhpcy5jb25maWdTZXJ2aWNlLm5vZGViYlVzZXJQcm9maWxlLnVzZXJuYW1lKSB8fCAnJyxcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgaWQ6IDEsXG4gICAgICB9LFxuICAgICAgY2F0ZWdvcmllczogeyByZXN1bHQ6IFtdIH0sXG4gICAgICByb3V0ZXJTbHVnOiAnL2FwcCcsXG4gICAgICBoZWFkZXJPcHRpb25zOiBmYWxzZSxcbiAgICAgIGJhbm5lck9wdGlvbjogdHJ1ZSxcbiAgICB9XG4gICAgdGhpcy5kaXNjdXNzVXRpbGl0eVN2Yy5zZXREaXNjdXNzaW9uQ29uZmlnKGNvbmZpZylcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaG9tZScsIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwL2Rpc2N1c3Npb24tZm9ydW0nXSwgeyBxdWVyeVBhcmFtczogeyBwYWdlOiAnaG9tZScgfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyB9KVxuICB9XG5cbiAgaGFuZGxlQ2xpY2tPZkNsYWltKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUNsYWltU2VydmljZS5zZXRDbGFpbURhdGEoZXZlbnQpXG4gIH1cbiAgXG4gIGdldENvdXJzZUlkRm9yQ2VydGlmaWNhdGUoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJhbUlkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJyk7XG4gICAgaWYgKHRoaXMuY29udGVudD8uY29udGVudElkPy5pbmNsdWRlcygnZXh0XycpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZW50LmNvbnRlbnRJZDtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHBhcmFtSWQgfHwgJyc7XG4gIH1cblxuICAvLyAgaGFuZGxlT3BlbkNlcnRpZmljYXRlRGlhbG9nKCkge1xuICAvLyAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSB0cnVlO1xuICAvLyAgIGNvbnN0IGNlcnRJZCA9IHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQ/LmNlcnRpZmljYXRlT2JqPy5jZXJ0SWQ7XG5cbiAgLy8gICBpZiAodGhpcy5jb250ZW50ICYmIHRoaXMucGFnZUNvbmZpZ0RhdGEpIHtcbiAgLy8gICAgIGNvbnN0IGFsbG93ZWRQcmltYXJ5Q2F0ZWdvcnkgPVxuICAvLyAgICAgICB0aGlzLnBhZ2VDb25maWdEYXRhPy5keW5hbWljQ2VydGlmaWNhdGVHZW5lcmF0aW9uPy5hbGxvd3MgJiZcbiAgLy8gICAgICAgdGhpcy5wYWdlQ29uZmlnRGF0YT8uZHluYW1pY0NlcnRpZmljYXRlR2VuZXJhdGlvbj8uYWxsb3dzPy5tYXAoXG4gIC8vICAgICAgICAgKGNhdDogc3RyaW5nKSA9PiBjYXQ/LnRvTG93ZXJDYXNlKClcbiAgLy8gICAgICAgKTtcblxuICAvLyAgICAgaWYgKFxuICAvLyAgICAgICBhbGxvd2VkUHJpbWFyeUNhdGVnb3J5ICYmXG4gIC8vICAgICAgKCBhbGxvd2VkUHJpbWFyeUNhdGVnb3J5LmluY2x1ZGVzKHRoaXMuY29udGVudD8ucHJpbWFyeUNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpKSB8fCBcbiAgLy8gICAgICAgYWxsb3dlZFByaW1hcnlDYXRlZ29yeS5pbmNsdWRlcyh0aGlzLmNvbnRlbnQ/LmNvdXJzZUNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpKSlcbiAgLy8gICAgICkge1xuICAvLyAgICAgICBjb25zdCBwYXlsb2FkID0ge1xuICAvLyAgICAgICAgIHJlcXVlc3Q6IHtcbiAgLy8gICAgICAgICAgIGNvdXJzZUlkOiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllcixcbiAgLy8gICAgICAgICAgIGJhdGNoSWQ6IHRoaXMuYmF0Y2hEYXRhPy5jb250ZW50WzBdPy5iYXRjaElkIHx8ICcnLFxuICAvLyAgICAgICAgICAgdXNlcklkOiB0aGlzLnVzZXJQcm9maWxlLnVzZXJJZCxcbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICB9O1xuICAvLyAgICAgICB0aGlzLmNvbnRlbnRTdmMuZG93bmxvYWRDZXJ0VjIocGF5bG9hZCkuc3Vic2NyaWJlKFxuICAvLyAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAvLyAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XG4gIC8vICAgICAgICAgICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSBmYWxzZTtcbiAgICAgICAgICAgICBcbiAgLy8gICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAvLyAgICAgICAgICAgICAgIHdpZHRoOiAnMTIwMHB4JyxcbiAgLy8gICAgICAgICAgICAgICBkYXRhOiB7XG4gIC8vICAgICAgICAgICAgICAgICBjZXQ6IHJlc3BvbnNlLnJlc3VsdC5wcmludFVyaSxcbiAgLy8gICAgICAgICAgICAgICAgIGNlcnRJZDpcbiAgLy8gICAgICAgICAgICAgICAgICAgKHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2VydGlmaWNhdGVPYmouY2VydElkKSB8fCAnJyxcbiAgLy8gICAgICAgICAgICAgICB9LFxuICAvLyAgICAgICAgICAgICB9KTtcbiAgLy8gICAgICAgICAgIH1cbiAgLy8gICAgICAgICB9LFxuICAvLyAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gIC8vICAgICAgICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVCb29sID0gZmFsc2U7XG4gIC8vICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ0NFUlRJRklDQVRFIEZFVENIIEVSUk9SID4nLCBlcnJvcik7XG4gIC8vICAgICAgICAgICB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oXG4gIC8vICAgICAgICAgICAgICdVbmFibGUgdG8gVmlldyBDZXJ0aWZpY2F0ZSwgZHVlIHRvIHNvbWUgZXJyb3IhJ1xuICAvLyAgICAgICAgICAgKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgdGhpcy5jb250ZW50U3ZjLmRvd25sb2FkQ2VydChjZXJ0SWQpLnN1YnNjcmliZShcbiAgLy8gICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gIC8vICAgICAgICAgaWYgKHRoaXMuY29udGVudCkge1xuICAvLyAgICAgICAgICAgdGhpcy5kb3dubG9hZENlcnRpZmljYXRlQm9vbCA9IGZhbHNlO1xuICAvLyAgICAgICAgICAgdGhpcy5jb250ZW50WydjZXJ0aWZpY2F0ZU9iaiddWydjZXJ0RGF0YSddID1cbiAgLy8gICAgICAgICAgICAgcmVzcG9uc2UucmVzdWx0LnByaW50VXJpO1xuICAvLyAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAvLyAgICAgICAgICAgICB3aWR0aDogJzEyMDBweCcsXG4gIC8vICAgICAgICAgICAgIGRhdGE6IHtcbiAgLy8gICAgICAgICAgICAgICBjZXQ6IHJlc3BvbnNlLnJlc3VsdC5wcmludFVyaSxcbiAgLy8gICAgICAgICAgICAgICBjZXJ0SWQ6IHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2VydGlmaWNhdGVPYmouY2VydElkLFxuICAvLyAgICAgICAgICAgICB9LFxuICAvLyAgICAgICAgICAgfSk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9LFxuICAvLyAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAvLyAgICAgICAgIHRoaXMuZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2wgPSBmYWxzZTtcbiAgLy8gICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoJ0NFUlRJRklDQVRFIEZFVENIIEVSUk9SID4nLCBlcnJvcik7XG4gIC8vICAgICAgICAgdGhpcy5tYXRTbmFja0Jhci5vcGVuKFxuICAvLyAgICAgICAgICAgJ1VuYWJsZSB0byBWaWV3IENlcnRpZmljYXRlLCBwbGVhc2UgY2hlY2sgYWdhaW4gbGF0ZXIhJ1xuICAvLyAgICAgICAgICk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICk7XG4gIC8vICAgfVxuICAvLyAgIH0gXG4gIC8vIH1cblxuICBoYW5kbGVPcGVuQ2VydGlmaWNhdGVEaWFsb2coKSB7XG4gICAgdGhpcy5kb3dubG9hZENlcnRpZmljYXRlQm9vbCA9IHRydWVcbiAgICBjb25zdCBjZXJ0SWQgPSB0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNlcnRpZmljYXRlT2JqLmNlcnRJZFxuICAgIGlmICh0aGlzLmNvbnRlbnQgJiYgdGhpcy5jb250ZW50LmNlcnRpZmljYXRlT2JqICYmICF0aGlzLmNvbnRlbnQuY2VydGlmaWNhdGVPYmouY2VydERhdGEpIHtcbiAgICAgaWYgKGNlcnRJZCkge1xuICAgICAgICB0aGlzLmNvbnRlbnRTdmMuZG93bmxvYWRDZXJ0KGNlcnRJZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmRvd25sb2FkQ2VydGlmaWNhdGVCb29sID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuY29udGVudFsnY2VydGlmaWNhdGVPYmonXVsnY2VydERhdGEnXSA9IHJlc3BvbnNlLnJlc3VsdC5wcmludFVyaVxuICAgICAgICAgICAgdGhpcy5kaWFsb2cub3BlbihDZXJ0aWZpY2F0ZURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICB3aWR0aDogJzEyMDBweCcsXG4gICAgICAgICAgICAgIGRhdGE6IHsgY2V0OiByZXNwb25zZS5yZXN1bHQucHJpbnRVcmksIGNlcnRJZDogdGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jZXJ0aWZpY2F0ZU9iai5jZXJ0SWQgfSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5kb3dubG9hZENlcnRpZmljYXRlQm9vbCA9IGZhbHNlXG4gICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKCdDRVJUSUZJQ0FURSBGRVRDSCBFUlJPUiA+JywgZXJyb3IpXG4gICAgICAgICAgdGhpcy5tYXRTbmFja0Jhci5vcGVuKCdVbmFibGUgdG8gVmlldyBDZXJ0aWZpY2F0ZSwgZHVlIHRvIHNvbWUgZXJyb3IhJylcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb3dubG9hZENlcnRpZmljYXRlQm9vbCA9IGZhbHNlXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKENlcnRpZmljYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIHdpZHRoOiAnMTIwMHB4JyxcbiAgICAgICAgZGF0YTogeyBjZXQ6IHRoaXMuY29udGVudCAmJiB0aGlzLmNvbnRlbnQuY2VydGlmaWNhdGVPYmouY2VydERhdGEsIGNlcnRJZDogdGhpcy5jb250ZW50ICYmIHRoaXMuY29udGVudC5jZXJ0aWZpY2F0ZU9iai5jZXJ0SWQgfSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgb3BlblN1cnZleUZvcm1Qb3B1cCgpIHtcbiAgICB0aGlzLnRyaWdlckNvbXBsZXRpb25TdXJ2ZXlGb3JtLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBjaGVja1ZhbGlkSlNPTihzdHI6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBKU09OLnBhcnNlKHN0cilcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgaGFuZGxlU3Vic2VjdG9yKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3ViU2VjdG9yRGV0YWlsQXJyID0gW11cbiAgICB0aGlzLnNlbGVjdGVkU2VjdG9yID0gJydcbiAgICB0aGlzLnNlbGVjdGVkU2VjdG9ySWQgPSAnJ1xuICAgIGlmICh0aGlzLmJhc2VDb250ZW50UmVhZERhdGEpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS5zZWN0b3JEZXRhaWxzX3YxW2ldWydzZWN0b3JJZCddID09PSBpdGVtLnNlY3RvcklkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS5zZWN0b3JEZXRhaWxzX3YxW2ldWydzdWJTZWN0b3JOYW1lJ10pIHtcbiAgICAgICAgICAgIGxldCBvYmogPSB7fVxuICAgICAgICAgICAgb2JqID0ge1xuICAgICAgICAgICAgICAnc2VjdG9ySWQnOiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuc2VjdG9yRGV0YWlsc192MVtpXVsnc2VjdG9ySWQnXSxcbiAgICAgICAgICAgICAgJ3NlY3Rvck5hbWUnOiB0aGlzLmJhc2VDb250ZW50UmVhZERhdGEuc2VjdG9yRGV0YWlsc192MVtpXVsnc2VjdG9yTmFtZSddLFxuICAgICAgICAgICAgICAna2V5JzogdGhpcy5iYXNlQ29udGVudFJlYWREYXRhLnNlY3RvckRldGFpbHNfdjFbaV1bJ3N1YlNlY3Rvck5hbWUnXSxcbiAgICAgICAgICAgICAgJ3ZhbHVlJzogW3RoaXMuYmFzZUNvbnRlbnRSZWFkRGF0YS5zZWN0b3JEZXRhaWxzX3YxW2ldWydzdWJTZWN0b3JOYW1lJ11dXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN1YlNlY3RvckRldGFpbEFyci5wdXNoKG9iailcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRTZWN0b3IgPSBpdGVtLnNlY3Rvck5hbWVcbiAgICAgIHRoaXMuc2VsZWN0ZWRTZWN0b3JJZCA9IGl0ZW0uc2VjdG9ySWRcblxuXG4gICAgICBjb25zdCB2YWx1ZU9iaiA9IGl0ZW1cbiAgICAgIGNvbnN0IHN1YlNlY3RvckFycmF5ID0gW11cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHZhbHVlT2JqKSB7XG4gICAgICAgIGlmICh2YWx1ZU9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgY29uc3QgX3RlbXBPYmo6IGFueSA9IHt9XG4gICAgICAgICAgX3RlbXBPYmpbJ2tleSddID0ga2V5XG4gICAgICAgICAgX3RlbXBPYmpbJ3ZhbHVlJ10gPSB2YWx1ZU9ialtrZXldXG4gICAgICAgICAgc3ViU2VjdG9yQXJyYXkucHVzaChfdGVtcE9iailcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zdHJpcFsnc2VjdG9yV2lkZ2V0cyddID0gdGhpcy50cmFuc2Zvcm1Db21wZXRlbmNpZXNUb1dpZGdldCgnQmVoYXZpb3VyYWwnLCB0aGlzLnN1YlNlY3RvckRldGFpbEFyciwgdGhpcy5zdHJpcClcbiAgICB9XG5cbiAgfVxuXG4gIG5hdmlnYXRlVG9OZXdWZXJzaW9uKCkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9hcHAvdG9jJywgeyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfSkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYGFwcC90b2MvJHt0aGlzLmNvbnRlbnRSZWFkRGF0YT8uY29udGVudFZlcnNpb25JbmZvPy5pZGVudGlmaWVyfS9vdmVydmlld2BdKVxuICAgIH0pXG5cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVN1YmplY3QkLnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLnRpbWVyVW5zdWJzY3JpYmUudW5zdWJzY3JpYmUoKVxuICAgIGlmKHRoaXMucmVmcmVzaHJhdGluZ1N1Yil7XG4gICAgICB0aGlzLnJlZnJlc2hyYXRpbmdTdWIudW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfVxuXG59XG4iLCJcbjxuZy10ZW1wbGF0ZSAjY2VydGlmaWNhdGVDYXJkPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZGlzYWJsZUNlcnRpZmljYXRlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9ja0NlcnRpZmljYXRlOyBlbHNlIGNlcnRpZmljYXRlTG9ja1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLW91dGVyLWRpdlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGNlcnRpZmljYXRlLWluZm8gcC00IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbYmluZGluZ0NsYXNzXT1cIidmbGV4IHJvdW5kZWQnXCIgW3dpZHRoXT1cIicyMDBweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiJzI0cHgnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCBjdXJzb3ItcG9pbnRlciB0cnVuY2F0ZS0zXCI+e3sgY29udGVudD8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtbGlnaHRcIiAqbmdJZj1cImNvbnRlbnQ/LmNvbXBsZXRlZE9uXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY29tcGxldGVkQ291cnNlJyB8IHRyYW5zbGF0ZSB9fSB7eyBjb250ZW50Py5jb21wbGV0ZWRPbiA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQ/LmNvbXBsZXRlZE9uIHwgZGF0ZTogJ2QgTU1NLCB5JykgOiAnTkEnIH19PC9kaXY+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgZm9udC1saWdodFwiICpuZ0lmPVwiY29udGVudD8uY29tcGxldGVkT25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8uY291cnNlQ2F0ZWdvcnk7ZWxzZSBwcmltYXJ5Q2F0ZWdvcnlDaGVja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnYXBwdG9jc2luZ2xlcGFnZS5jb21wbGV0ZWRPbicgfCB0cmFuc2xhdGUgfX0ge3tjb250ZW50Py5jb3Vyc2VDYXRlZ29yeX19IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwdG9jc2luZ2xlcGFnZS5vbicgfCB0cmFuc2xhdGUgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ/LmNvbXBsZXRlZE9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQ/LmNvbXBsZXRlZE9uIHwgZGF0ZTogJ2QgTU1NLCB5JykgOiAnTkEnIH19XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3ByaW1hcnlDYXRlZ29yeUNoZWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgPT09ICdTdGFuZGFsb25lIEFzc2Vzc21lbnQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdhcHB0b2NzaW5nbGVwYWdlLmNvbXBsZXRlZEFzc2Vzc21lbnQnIHwgdHJhbnNsYXRlIH19IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ/LmNvbXBsZXRlZE9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQ/LmNvbXBsZXRlZE9uIHwgZGF0ZTogJ2QgTU1NLCB5JykgOiAnTkEnIH19PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ID09PSAnUHJvZ3JhbSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY29tcGxldGVkUHJvZ3JhbScgfCB0cmFuc2xhdGUgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD8uY29tcGxldGVkT24gP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudD8uY29tcGxldGVkT24gfCBkYXRlOiAnZCBNTU0sIHknKSA6ICdOQScgfX08L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgPT09ICdDb3Vyc2UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdhcHB0b2NzaW5nbGVwYWdlLmNvbXBsZXRlZENvdXJzZScgfCB0cmFuc2xhdGUgfX0ge3sgY29udGVudD8uY29tcGxldGVkT25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudD8uY29tcGxldGVkT24gfCBkYXRlOiAnZCBNTU0sIHknKSA6ICdOQScgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgZG93bmxvYWQtc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFtiaW5kaW5nQ2xhc3NdPVwiJ2ZsZXggcm91bmRlZCdcIiBbd2lkdGhdPVwiJzI0cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIicyNHB4J1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJpY29uIGN1cnNvci1wb2ludGVyIFwiICpuZ0lmPVwiIWRvd25sb2FkQ2VydGlmaWNhdGVCb29sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3BlbkNlcnRpZmljYXRlRGlhbG9nKClcIj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJkb3dubG9hZENlcnRpZmljYXRlQm9vbFwiIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RpYW1ldGVyXT1cIjIwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW2JpbmRpbmdDbGFzc109XCInZmxleCByb3VuZGVkJ1wiIFt3aWR0aF09XCInMjgwcHgnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiJzE0OHB4J1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZXJ0aWZpY2F0ZV9ib3hcIiAqbmdJZj1cIiFjb250ZW50Py5jZXJ0aWZpY2F0ZU9iaj8uY2VydElkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWZyb21NYXJrZXRQbGFjZVwiIHNyYz1cIi9hc3NldHMvaWNvbnMvdG9jL25vLWNlcnRpZmljYXRlLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiTm8gY2VydGlmaWNhdGUgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImZyb21NYXJrZXRQbGFjZVwiIHNyYz1cIi9hc3NldHMvaWNvbnMvdG9jL25vLWNlcnRpZmljYXRlLW1hcmtldC1wbGFjZS5zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIk5vIGNlcnRpZmljYXRlIGltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBjZXJ0aWZpY2F0ZV9vdmVybGF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgdGV4dC1jZW50ZXIgZ2FwLTEgcC00IHRleHQtd2hpdGUgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7J2FwcHRvY2hvbWUuY2VydGlmaWNhdGlvblRha2VzVGltZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2Pnt7J2FwcHRvY2hvbWUuaXNzdWVQZXJzaXN0c01haWx1cycgfCB0cmFuc2xhdGUgfX0gbWlzc2lvbi5rYXJtYXlvZ2lAZ292LmluIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7J2FwcHRvY2hvbWUuaXNzdWVQZXJzaXN0c01haWx1cycgfCB0cmFuc2xhdGUgfX0gPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwibWFpbHRvOm1pc3Npb24ua2FybWF5b2dpQGdvdi5pblwiIGNsYXNzPVwiZW1haWxEZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2lvbi5rYXJtYXlvZ2lAZ292LmluPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LmNlcnRpZmljYXRlT2JqPy5jZXJ0SWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImNlbGVicmF0aW9uLWFuaW1hdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pbWFnZXMvYW5pbWF0aW9uL2xlYWRlcmJvYXJkX2FuaW1hdGlvbi5naWZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhZnJvbU1hcmtldFBsYWNlXCIgY2xhc3M9XCJjZXJpdGlmaWNhdGUtaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIicvYXNzZXRzL2ljb25zL3RvYy9uby1jZXJ0aWZpY2F0ZS5zdmcnXCIgYWx0PVwiY2VydGlmaWNhdGUgaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmcm9tTWFya2V0UGxhY2VcIiBjbGFzcz1cImNlcml0aWZpY2F0ZS1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiJy9hc3NldHMvaWNvbnMvdG9jL25vLWNlcnRpZmljYXRlLW1hcmtldC1wbGFjZS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiY2VydGlmaWNhdGUgaW1hZ2VcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3ZpZXctY2VydGlmaWNhdGUnOiBkb3dubG9hZENlcnRpZmljYXRlQm9vbCwgJ3ZpZXctY2VydCc6ICFkb3dubG9hZENlcnRpZmljYXRlQm9vbH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZU9wZW5DZXJ0aWZpY2F0ZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFkb3dubG9hZENlcnRpZmljYXRlQm9vbFwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcHRvY2NvbnRlbnRjYXJkLnZpZXdDZXJ0aWZpY2F0ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZG93bmxvYWRDZXJ0aWZpY2F0ZUJvb2xcIiBjbGFzcz1cInVwbG9hZGVyLXN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lcj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5jZXJ0aWZpY2F0ZU9iaj8uY2VydERhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJjZWxlYnJhdGlvbi1hbmltYXRpb25cIiBzcmM9XCJhc3NldHMvaW1hZ2VzL2FuaW1hdGlvbi9sZWFkZXJib2FyZF9hbmltYXRpb24uZ2lmXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImNlcml0aWZpY2F0ZS1pbWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJjb250ZW50Py5jZXJ0aWZpY2F0ZU9iaj8uY2VydERhdGEgfCBwaXBlU2FmZVNhbml0aXplcjogJ3VybCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cImNlcnRpZmljYXRlIGltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMyBjaGlwcy1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1YlRoZW1lIG9mIGNvbnRlbnRSZWFkRGF0YT8uc3ViVGhlbWU7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwIHJvdW5kZWQtZnVsbCBwLTIgdGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydoaWRkZW4nOiAoaiA+IDEgJiYgIWNvbnRlbnQ/LnZpZXdNb3JlKSwgJ2NoaXAtZWxsaXBzaXMnOiAhY29udGVudD8udmlld01vcmUgJiYgY29udGVudD8uc3ViVGhlbWU/Lmxlbmd0aCA+IDEgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInN1YlRoZW1lXCI+e3sgc3ViVGhlbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyIHRleHQteHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjb250ZW50Py5zdWJUaGVtZT8ubGVuZ3RoID4gMiAmJiAhY29udGVudD8udmlld01vcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRlbnQudmlld01vcmUgPSAhY29udGVudC52aWV3TW9yZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3snY29tcGV0ZW5jeUNhcmREZXRhaWxzLnZpZXdNb3JlJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1wcmltYXJ5IHVuZGVybGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udGVudD8udmlld01vcmVcIiAoY2xpY2spPVwiY29udGVudC52aWV3TW9yZSA9ICFjb250ZW50LnZpZXdNb3JlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eydjb21wZXRlbmN5Q2FyZERldGFpbHMudmlld0xlc3MnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VydGlmaWNhdGVMb2NrPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLW91dGVyLWRpdiBsb2NrZWQtY2VydGlmaWNhdGUtb3V0ZXItZGl2XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLWxvY2sgcC00IGZsZXggZmxleC1jb2wgZ2FwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIGNlcnRpZmljYXRlLWxvY2stdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2FwcHRvYy5jZXJ0aWZpY2F0ZUxvY2tlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciBmbGV4LWNvbCBwLTQgZ2FwLTIgbG9ja2luZy1zY3JlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2Fzc2V0cy9pY29ucy9sb2NrX3dodC5zdmdcIiBhbHQ9XCJsb2NrIGltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZXJ0aWZpY2F0ZUxvY2tlZFRleHQgcGItMlwiPnt7J2FwcHRvYy5jZXJ0aWZpY2F0ZUxvY2tlZE1lc3NhZ2UnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9ja2luZy1zY3JlZW4tZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydhcHB0b2MudW5sb2NrQ2VydGlmaWNhdGUnIHwgdHJhbnNsYXRlfX0gPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdXJ2ZXlGb3JtZVRleHRcIj57eydhcHB0b2Muc3VydmV5Rm9ybScgfCB0cmFuc2xhdGV9fTwvc3Bhbj4ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwdG9jLnVubG9ja0NlcnRpZmljYXRlMicgfCB0cmFuc2xhdGUgOiB7IGNvdXJzZUNhdGVnb3J5OiBjb250ZW50Py5jb3Vyc2VDYXRlZ29yeSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudD8uY291cnNlQ2F0ZWdvcnkgOiBjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgfSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInN1cnZleUZvcm1lQnV0dG9uIHB4LTdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuU3VydmV5Rm9ybVBvcHVwKClcIj57eydhcHB0b2MuY29tcGxldGVTdXJ2ZXlOb3cnIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29tcGV0ZW5jeUxhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJwdC1td2ViLTQgbWF0LXN1YmhlYWRpbmctMSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICB7eyAnYXBwdG9jc2luZ2xlcGFnZS5jb21wZXRlbmNpZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciB3cy1tYXQtYmxhY2s2MC10ZXh0IGluZm8taWNvbiBtYXQtaWNvbiBub3RyYW5zbGF0ZSBtYXRlcmlhbC1pY29ucyBtYXQtaWNvbi1uby1jb2xvclwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcFBvc2l0aW9uXT1cIidiZWxvdydcIiAjdG9vbHRpcD1cIm1hdFRvb2x0aXBcIiAoY2xpY2spPVwidG9vbHRpcC50b2dnbGUoKVwiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2UuY29tcGV0ZW5jaWVzVG9vbHRpcCcgfCB0cmFuc2xhdGUgfX1cIj5pbmZvX291dGxpbmU8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG10LTRcIiBbbmdDbGFzc109XCJpc01vYmlsZSA/ICdteC00JyA6ICcnXCJcbiAgICAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8ucmV0aXJlbWVudERhdGUgJiYgY29udGVudFJlYWREYXRhPy5sYXN0RW5yb2xsbWVudERhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBjb250ZW50LXJldGlyZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHJldGlyZS1pbmZvLWljb25cIj53YXJuaW5nPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib2R5LTFcIj5UaGlzIGNvdXJzZSBpcyBzY2hlZHVsZWQgZm9yIHJldGlyZW1lbnQuIFRoZSBsYXN0IGRhdGUgdG8gZW5yb2xsIGlzXG4gICAgICAgICAgICAgICAge3tjb250ZW50UmVhZERhdGE/Lmxhc3RFbnJvbGxtZW50RGF0ZSB8IGRhdGU6ICdNTU1NIGQsIHknfX0sIGFuZFxuICAgICAgICAgICAgICAgIHRoZSBjb3Vyc2Ugd2lsbCBiZSByZXRpcmVkIG9uIHt7Y29udGVudFJlYWREYXRhPy5yZXRpcmVtZW50RGF0ZSB8IGRhdGU6ICdNTU1NIGQsIHknfX0uXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG10LTQgbXgtNCBibG9ja1wiICpuZ0lmPVwiaXNNb2JpbGUgJiYgY29udGVudFJlYWREYXRhPy5jb250ZW50VmVyc2lvbkluZm8/LmlkZW50aWZpZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMSAgY3Vyc29yLXBvaW50ZXIgc3dpdGNoLXZlcnNpb25cIiAoY2xpY2spPVwibmF2aWdhdGVUb05ld1ZlcnNpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm5hdmlnYXRlVG9OZXdWZXJzaW9uKClcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tc3dpdGNoXCI+e3sgJ2FwcHRvYy5zd2l0Y2hUb05ld1ZlcnNpb24nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cblxuPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgbXktNCBweC00XCIgW2NsYXNzLm10NjBdPVwic3RpY2t5XCIgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAnJyA6ICdnYXAtMTAnXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIihjb250ZW50Py5jb21wbGV0aW9uU3RhdHVzID09PSAyIHx8IGNvbnRlbnQ/LmNlcnRpZmljYXRlT2JqPy5jZXJ0SWQpICYmICFmcm9tTWFya2V0UGxhY2UgJiYgIWRpc2FibGVDZXJ0aWZpY2F0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2VydGlmaWNhdGUtY29udGFpbmVyXCIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGVhcm5lZC1jZXJ0aWZpY2F0ZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmliYm9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLWJhY2tncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVhcm5lZC1jZXJ0aWZpY2F0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmNlcnRpZmljYXRlRWFybmVkJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNlcnRpZmljYXRlQ2FyZFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLWNlcnRpZmljYXRlLWNvbnRhaW5lclwiICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWFybmVkLWNlcnRpZmljYXRlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWJib25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVhcm5lZC1jZXJ0aWZpY2F0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmNlcnRpZmljYXRlRWFybmVkJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlcnRpZmljYXRlLWJhY2tncm91bmRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjZXJ0aWZpY2F0ZUNhcmRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd01hcmtldFBsYWNlQ2VydGlmaWNhdGUgJiYgZnJvbU1hcmtldFBsYWNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1jb250YWluZXJcIiAqbmdJZj1cIiFza2VsZXRvbkxvYWRlciAmJiAhZGlzYWJsZUNlcnRpZmljYXRlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBlYXJuZWQtY2VydGlmaWNhdGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpYmJvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1iYWNrZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlYXJuZWQtY2VydGlmaWNhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5jZXJ0aWZpY2F0ZUVhcm5lZCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjZXJ0aWZpY2F0ZUNhcmRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vYmlsZS1jZXJ0aWZpY2F0ZS1jb250YWluZXJcIiAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVhcm5lZC1jZXJ0aWZpY2F0ZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmliYm9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlYXJuZWQtY2VydGlmaWNhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5jZXJ0aWZpY2F0ZUVhcm5lZCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZXJ0aWZpY2F0ZS1iYWNrZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2VydGlmaWNhdGVDYXJkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW2JpbmRpbmdDbGFzc109XCInZmxleCByb3VuZGVkJ1wiIFtoZWlnaHRdPVwiJzE0OHB4J1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZnJvbVZpZXdlciB8fCByb3V0ZXIudXJsLmluY2x1ZGVzKCcvdmlld2VyL3BkZi9kb18nKSkgJiYgIWZyb21NRE9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTEgbXQtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZm9udC1zZW1pYm9sZCB0ZXh0LWJhc2VcIj57eyBoYW5kbGVDYXBpdGFsaXplKGNvbnRlbnQ/Lm5hbWUpIH19IDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYi10ZXh0IGJyZWFrLXdvcmRzIHRleHQtc20gbm9kdHJhbnNsYXRlXCI+e3sgJ2NhcmRjb250ZW50djIuYnknIHwgdHJhbnNsYXRlIH19IHt7XG4gICAgICAgICAgICAgICAgY29udGVudD8uc291cmNlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZnJvbVZpZXdlciB8fCByb3V0ZXIudXJsLmluY2x1ZGVzKCcvdmlld2VyL3BkZi9kb18nKSkgJiYgZnJvbU1ET1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMSBtdC0yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmb250LXNlbWlib2xkIHRleHQtYmFzZVwiPnt7IGhhbmRsZUNhcGl0YWxpemUoY29udGVudD8ucmVzdWx0Py5jb250ZW50Py5uYW1lKSB9fSA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2ItdGV4dCBicmVhay13b3JkcyB0ZXh0LXNtIG5vZHRyYW5zbGF0ZVwiPnt7ICdjYXJkY29udGVudHYyLmJ5JyB8IHRyYW5zbGF0ZSB9fSB7e1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ/LnJlc3VsdD8uY29udGVudD8uc291cmNlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQgJiYgY29udGVudD8ucHJpbWFyeUNhdGVnb3J5ID09PSBwcmltYXJ5Q2F0ZWdvcnkuQkxFTkRFRF9QUk9HUkFNXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0zIGp1c3RpZnktYXJvdW5kIGhpZGVBYm92ZTEyMDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYmFzZSBmb250LWJvbGRcIj57eyBzZWxlY3RlZEJhdGNoRGF0YT8uY29udGVudFswXT8uYmF0Y2hBdHRyaWJ1dGVzPy5jdXJyZW50QmF0Y2hTaXplIHx8XG4gICAgICAgICAgICAgICAgICAgICcwJyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1sYWJlbFwiPnt7ICdhcHB0b2MuYmF0Y2hTaXplJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmF0Y2gtaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJhc2UgZm9udC1ib2xkXCI+e3sgc2VsZWN0ZWRCYXRjaERhdGE/LnVzZXJDb3VudD8udG90YWxBcHBsaWVkIHx8ICcwJyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYXRjaC1sYWJlbFwiPnt7ICdhcHB0b2MudG90YWxBcHBsaWVkJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmF0Y2gtaW5mb1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJhc2UgZm9udC1ib2xkXCI+e3sgc2VsZWN0ZWRCYXRjaERhdGE/LnVzZXJDb3VudD8uZW5yb2xsZWQgfHwgJzAnIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhdGNoLWxhYmVsXCI+e3sgJ2FwcHRvYy50b3RhbEVucm9sbGVkJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRpbWVyLmRheXMgPj0gMCAmJiBjb250ZW50Py5wcmltYXJ5Q2F0ZWdvcnkgPT09IHByaW1hcnlDYXRlZ29yeS5CTEVOREVEX1BST0dSQU1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTYgbXktNSBiYXRjaC10aW1lciBoaWRlQWJvdmUxMjAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggdW5kZXJsaW5lXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpbWVyLWxhYmVsXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UuYmF0Y2hTdGFydHNJbicgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IHVuZGVybGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTR4bCBsZWFkaW5nLTEwIGNvdW50ZXJcIj57eyB0aW1lci5kYXlzIHx8IDAgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXItbGFiZWxcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5kYXlzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBjb3VudGVyLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMSBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtNHhsIGxlYWRpbmctMTAgY291bnRlclwiPnt7IHRpbWVyLm1pbiA9PT0gNjAgPyB0aW1lci5ob3VycyArIDEgOiB0aW1lci5ob3VycyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXItbGFiZWxcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5ob3VycycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgY291bnRlci1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTR4bCBsZWFkaW5nLTEwIGNvdW50ZXJcIj57eyB0aW1lci5taW4gPT09IDYwID8gMDAgOiB0aW1lci5taW4gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXItbGFiZWxcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5taW51dGVzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiAqbmdJZj1cImZyb21WaWV3ZXIgfHwgaXNNb2JpbGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNjBweCdcIiBbaGVpZ2h0XT1cIic2MHB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNjBweCdcIiBbaGVpZ2h0XT1cIic2MHB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNjBweCdcIiBbaGVpZ2h0XT1cIic2MHB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyICYmICFmcm9tTWFya2V0UGxhY2UgJiYgIWZyb21NRE9cIj5cbiAgICAgICAgICAgXG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXRvYy1rcGktdmFsdWVzIFtjb250ZW50XT1cImNvbnRlbnRcIiBbdG9jU3RydWN0dXJlXT1cInRvY1N0cnVjdHVyZVwiIFtpc01vYmlsZV09XCJpc01vYmlsZVwiXG4gICAgICAgICAgICAgICAgW2NvbnRlbnRSZWFkRGF0YV09XCJjb250ZW50UmVhZERhdGFcIiBbYmFzZUNvbnRlbnRSZWFkRGF0YV09XCJiYXNlQ29udGVudFJlYWREYXRhXCJcbiAgICAgICAgICAgICAgICBbbGFuZ3VhZ2VMaXN0XT1cImxhbmd1YWdlTGlzdFwiPjwvd3Mtd2lkZ2V0LXRvYy1rcGktdmFsdWVzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXIgJiYgIWZyb21NYXJrZXRQbGFjZSAmJiBmcm9tTURPXCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXRvYy1rcGktdmFsdWVzIFtjb250ZW50XT1cImNvbnRlbnQ/LnJlc3VsdD8uY29udGVudFwiIFt0b2NTdHJ1Y3R1cmVdPVwidG9jU3RydWN0dXJlXCIgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbY29udGVudFJlYWREYXRhXT1cImNvbnRlbnRSZWFkRGF0YVwiIFtiYXNlQ29udGVudFJlYWREYXRhXT1cImJhc2VDb250ZW50UmVhZERhdGFcIlxuICAgICAgICAgICAgICAgIFtsYW5ndWFnZUxpc3RdPVwibGFuZ3VhZ2VMaXN0XCI+PC93cy13aWRnZXQtdG9jLWtwaS12YWx1ZXM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzgwcHgnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgbXQtNFwiPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInODAlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic5NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzY1JSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMSBmb250LWJvbGQgbm9kdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAge3sgJ2FwcHRvY3NpbmdsZXBhZ2UuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImNvbnRlbnQ/LmNvbnRlbnRJZCAmJiBjb250ZW50Py5jb250ZW50SWQuaW5jbHVkZXMoJ2V4dF8nKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIGZvbnQtYm9sZCBub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiEoY29udGVudD8uY29udGVudElkICYmIGNvbnRlbnQ/LmNvbnRlbnRJZC5pbmNsdWRlcygnZXh0XycpKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIGZvbnQtYm9sZCBub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5zdW1tYXJ5JyB8IHRyYW5zbGF0ZSB9fTwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieydtb2ItZGVzYy1lbGxpcHNpcyc6IHN1bW1hcnkuZWxsaXBzaXMgJiYgaXNNb2JpbGUsICdkZXNjLWVsbGlwc2lzJzogc3VtbWFyeS5lbGxpcHNpcyAmJiAhaXNNb2JpbGV9XCJcbiAgICAgICAgICAgICAgICAjc3VtbWFyeUVsZW0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vYi10ZXh0IG5vZHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiaGFuZGxlQ2FwaXRhbGl6ZShjb250ZW50UmVhZERhdGE/LmRlc2NyaXB0aW9uIHwgcmVwbGFjZU5ic3ApXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndzLW1hdC1kZWZhdWx0LXRleHQgZm9udC1ib2xkIGN1cnNvci1wb2ludGVyIHRleHQtc21cIiAqbmdJZj1cInN1bW1hcnkudmlld0xlc3NcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic3VtbWFyeS5lbGxpcHNpcyA9ICFzdW1tYXJ5LmVsbGlwc2lzOyBzdW1tYXJ5LnZpZXdMZXNzID0gIXN1bW1hcnkudmlld0xlc3NcIj4mbmJzcDt7e1xuICAgICAgICAgICAgICAgICAgICAnYXBwdG9jc2luZ2xlcGFnZS52aWV3TGVzcycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndzLW1hdC1kZWZhdWx0LXRleHQgZm9udC1ib2xkIHRleHQtc21cIiAqbmdJZj1cInN1bW1hcnkuZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN1bW1hcnkuZWxsaXBzaXMgPSAhc3VtbWFyeS5lbGxpcHNpczsgc3VtbWFyeS52aWV3TGVzcyA9ICFzdW1tYXJ5LnZpZXdMZXNzXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld01vcmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIiAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8uaW5zdHJ1Y3Rpb25zIHx8IGNvbnRlbnRSZWFkRGF0YT8ucHVycG9zZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInODBweCdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMiBtdC00XCI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic4MCUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzk1JSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNjUlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIG5vZHRyYW5zbGF0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmxlYXJuaW5nT3V0Y29tZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21vYi1kZXNjLWVsbGlwc2lzJzogZGVzY3JpcHRpb24uZWxsaXBzaXMgJiYgaXNNb2JpbGUsICdkZXNjLWVsbGlwc2lzJzogZGVzY3JpcHRpb24uZWxsaXBzaXMgJiYgIWlzTW9iaWxlfVwiXG4gICAgICAgICAgICAgICAgI2Rlc2NFbGVtPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImNvbnRlbnRSZWFkRGF0YT8uaW5zdHJ1Y3Rpb25zIHx8IGNvbnRlbnRSZWFkRGF0YT8ucHVycG9zZSB8IHJlcGxhY2VOYnNwXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb2ItdGV4dCBicmVhay13b3JkcyBub2R0cmFuc2xhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgY3Vyc29yLXBvaW50ZXIgdGV4dC1zbVwiICpuZ0lmPVwiZGVzY3JpcHRpb24udmlld0xlc3NcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVzY3JpcHRpb24uZWxsaXBzaXMgPSAhZGVzY3JpcHRpb24uZWxsaXBzaXM7IGRlc2NyaXB0aW9uLnZpZXdMZXNzID0gIWRlc2NyaXB0aW9uLnZpZXdMZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO3t7ICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdMZXNzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgdGV4dC1zbVwiICpuZ0lmPVwiZGVzY3JpcHRpb24uZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlc2NyaXB0aW9uLmVsbGlwc2lzID0gIWRlc2NyaXB0aW9uLmVsbGlwc2lzOyBkZXNjcmlwdGlvbi52aWV3TGVzcyA9ICFkZXNjcmlwdGlvbi52aWV3TGVzc1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdNb3JlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCIgKm5nSWY9XCJjb250ZW50Py5vYmplY3RpdmVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic4MHB4J1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIG10LTRcIj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzgwJSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInOTUlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic2NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgZm9udC1ib2xkIHB0LW13ZWItOCBub2R0cmFuc2xhdGVcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5sZWFybmluZ091dGNvbWUnIHxcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7J21vYi1kZXNjLWVsbGlwc2lzJzogb2JqZWN0aXZlcy5lbGxpcHNpcyAmJiBpc01vYmlsZSwgJ2Rlc2MtZWxsaXBzaXMnOiBvYmplY3RpdmVzLmVsbGlwc2lzICYmICFpc01vYmlsZX1cIlxuICAgICAgICAgICAgICAgICNvYmplY3RpdmVzRWxlbT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vYi10ZXh0IG5vZHRyYW5zbGF0ZVwiIFtpbm5lckh0bWxdPVwiaGFuZGxlQ2FwaXRhbGl6ZShjb250ZW50Py5vYmplY3RpdmVzKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgY3Vyc29yLXBvaW50ZXIgdGV4dC1zbVwiICpuZ0lmPVwib2JqZWN0aXZlcy52aWV3TGVzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvYmplY3RpdmVzLmVsbGlwc2lzID0gIW9iamVjdGl2ZXMuZWxsaXBzaXM7IG9iamVjdGl2ZXMudmlld0xlc3MgPSAhb2JqZWN0aXZlcy52aWV3TGVzc1wiPlxuICAgICAgICAgICAgICAgICAgICAmbmJzcDt7eyAnYXBwdG9jc2luZ2xlcGFnZS52aWV3TGVzcycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndzLW1hdC1kZWZhdWx0LXRleHQgZm9udC1ib2xkIHRleHQtc21cIiAqbmdJZj1cIm9iamVjdGl2ZXMuZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9iamVjdGl2ZXMuZWxsaXBzaXMgPSAhb2JqZWN0aXZlcy5lbGxpcHNpczsgb2JqZWN0aXZlcy52aWV3TGVzcyA9ICFvYmplY3RpdmVzLnZpZXdMZXNzXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgJ2FwcHRvY3NpbmdsZXBhZ2Uudmlld01vcmUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIlxuICAgICAgICAqbmdJZj1cImNvbnRlbnRSZWFkRGF0YT8uc3VtbWFyeSAmJiBjb250ZW50UmVhZERhdGE/LmNvbnRlbnRJZCAmJiBjb250ZW50UmVhZERhdGE/LmNvbnRlbnRJZC5pbmNsdWRlcygnZXh0XycpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic4MHB4J1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0yIG10LTRcIj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzgwJSdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInOTUlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic2NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgbm9kdHJhbnNsYXRlXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2Uuc3VtbWFyeScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21vYi1kZXNjLWVsbGlwc2lzJzogZGVzY3JpcHRpb24uZWxsaXBzaXMgJiYgaXNNb2JpbGUsICdkZXNjLWVsbGlwc2lzJzogZGVzY3JpcHRpb24uZWxsaXBzaXMgJiYgIWlzTW9iaWxlfVwiXG4gICAgICAgICAgICAgICAgI2Rlc2NFbGVtPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImNvbnRlbnRSZWFkRGF0YT8uc3VtbWFyeSB8IHJlcGxhY2VOYnNwXCIgY2xhc3M9XCJtb2ItdGV4dCBicmVhay13b3JkcyBub2R0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgY3Vyc29yLXBvaW50ZXIgdGV4dC1zbVwiICpuZ0lmPVwiZGVzY3JpcHRpb24udmlld0xlc3NcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVzY3JpcHRpb24uZWxsaXBzaXMgPSAhZGVzY3JpcHRpb24uZWxsaXBzaXM7IGRlc2NyaXB0aW9uLnZpZXdMZXNzID0gIWRlc2NyaXB0aW9uLnZpZXdMZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgICZuYnNwO3t7ICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdMZXNzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3MtbWF0LWRlZmF1bHQtdGV4dCBmb250LWJvbGQgdGV4dC1zbVwiICpuZ0lmPVwiZGVzY3JpcHRpb24uZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlc2NyaXB0aW9uLmVsbGlwc2lzID0gIWRlc2NyaXB0aW9uLmVsbGlwc2lzOyBkZXNjcmlwdGlvbi52aWV3TGVzcyA9ICFkZXNjcmlwdGlvbi52aWV3TGVzc1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdNb3JlJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiPlxuICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMjBweCdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtM1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGkgb2YgWzEsIDJdXCI+XG4gICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMTIwcHgnXCIgW2hlaWdodF09XCInMzJweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00XCI+XG4gICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicyNTBweCdcIiBbaGVpZ2h0XT1cIic4MHB4J1wiXG4gICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMjUwcHgnXCIgW2hlaWdodF09XCInODBweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXJcIj5cbiAgICAgICAgXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3RyaXA/LmxvYWRlcldpZGdldHM/Lmxlbmd0aCB8fCAhY29tcGV0ZW5jaWVzT2JqZWN0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29tcGV0ZW5jeUxhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAge3sgJ2FwcHRvY3NpbmdsZXBhZ2Uubm9Db21wZXRlbmN5Rm91bmQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RyaXA/LmxvYWRlcldpZGdldHM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb21wZXRlbmN5TGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMyBzbTpnYXAtNCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29tcGV0ZW5jaWVzT2JqZWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhlbWVzLWJ1dHRvblwiIFtuZ0NsYXNzXT1cInsndGhlbWUtYWN0aXZhdGVkJzogY29tcGV0ZW5jeVNlbGVjdGVkID09PSBpdGVtLmtleX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVTaG93Q29tcGV0ZW5jaWVzKGl0ZW0sICdzZWxlY3RlZCcpXCI+e3sgaXRlbS5rZXkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb21wZXRlbmNpZXNPYmplY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/LmtleSA9PT0gY29tcGV0ZW5jeVNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3MtdXRpbHMtaG9yaXpvbnRhbC1zY3JvbGxlci12MiBbbG9hZFN0YXR1c109XCInZG9uZSdcIiBbc3RyaXBDb25maWddPVwic3RyaXAuc3RyaXBDb25maWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB3aWRnZXQgb2Ygc3RyaXA/LmxvYWRlcldpZGdldHM7IHRyYWNrQnk6IHRyYWNrZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbc2JVaVJlc29sdmVyV2lkZ2V0XT1cIndpZGdldFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC93cy11dGlscy1ob3Jpem9udGFsLXNjcm9sbGVyLXYyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInNDhweCdcIiBbaGVpZ2h0XT1cIicxNnB4J1wiXG4gICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTIgbXQtNFwiPlxuICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIic5NSUnXCIgW2hlaWdodF09XCInMTZweCdcIlxuICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMDAlJ1wiIFtoZWlnaHRdPVwiJzE2cHgnXCJcbiAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICA8IS0tIHt7Y29udGVudHxqc29ufX0gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50UmVhZERhdGE/LmtleXdvcmRzPy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFnc0xpc3RcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRhZ0RhdGE6IGNvbnRlbnRSZWFkRGF0YT8ua2V5d29yZHMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnQ/LnNlYXJjaFRhZ3M/Lmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5zZWFyY2hUYWdzPy5sZW5ndGhcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ0YWdzTGlzdFwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGFnRGF0YTogY29udGVudD8uc2VhcmNoVGFncz8uc2xpY2UoMSxjb250ZW50Py5zZWFyY2hUYWdzPy5sZW5ndGgpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIighc2tlbGV0b25Mb2FkZXIgJiYgc2VjdG9yc0xpc3Q/Lmxlbmd0aCkgJiYgKGNvbnRlbnQ/LnByaW1hcnlDYXRlZ29yeT8udG9Mb3dlckNhc2UoKSA9PT0gJ2xlYXJuaW5nIHJlc291cmNlJyB8fFxuICAgIGNvbnRlbnQ/LnJlc291cmNlQ2F0ZWdvcnk/LnRvTG93ZXJDYXNlKCkgPT09ICdjYXNlIHN0dWR5JylcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xIG5vZHRyYW5zbGF0ZVwiPnt7ICdneWFhbkthcm1heW9naS5zZWN0b3JzJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3RvcnNMaXN0Py5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTMgc206Z2FwLTQgbWItMyBmbGV4LXdyYXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3RvciBvZiBzZWN0b3JzTGlzdDsgbGV0IGkgPSBpbmRleDsgbGV0IGlzTGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFtuZ0NsYXNzXT1cInsndGhlbWUtYWN0aXZhdGVkJzogY29tcGV0ZW5jeVNlbGVjdGVkID09PSBpdGVtLmtleX1cIi0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aGVtZXMtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0aGVtZS1hY3RpdmF0ZWQnOiBzZWxlY3RlZFNlY3RvcklkID09PSBzZWN0b3I/LnNlY3RvcklkfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVTdWJzZWN0b3Ioc2VjdG9yLCAnc2VsZWN0ZWQnKVwiPnt7IHNlY3Rvcj8uc2VjdG9yTmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RyaXA/LnNlY3RvcldpZGdldHM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d3MtdXRpbHMtaG9yaXpvbnRhbC1zY3JvbGxlci12MiBbbG9hZFN0YXR1c109XCInZG9uZSdcIiBbc3RyaXBDb25maWddPVwic3RyaXAuc3RyaXBDb25maWdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIHN0cmlwPy5zZWN0b3JXaWRnZXRzOyB0cmFja0J5OiB0cmFja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtzYlVpUmVzb2x2ZXJXaWRnZXRdPVwid2lkZ2V0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvd3MtdXRpbHMtaG9yaXpvbnRhbC1zY3JvbGxlci12Mj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0cmlwPy5zZWN0b3JXaWRnZXRzPy5sZW5ndGggPT09IDAgJiYgc2VsZWN0ZWRTZWN0b3JJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBTdWJzZWN0b3IgQXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCIgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHNlY3RvciBvZiBzZWN0b3JzTGlzdDsgbGV0IGkgPSBpbmRleDsgbGV0IGlzTGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgbW9iLXRleHRcIiA+e3sgc2VjdG9yPy5zZWN0b3JOYW1lIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiIWlzTGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJpb2RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlciAmJiBzdWJTZWN0b3JzTGlzdD8ubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMSBub2R0cmFuc2xhdGVcIj57eyAnZ3lhYW5LYXJtYXlvZ2kuc3ViU2VjdG9ycycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMlwiID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWN0b3Igb2Ygc3ViU2VjdG9yc0xpc3Q7IGxldCBpID0gaW5kZXg7IGxldCBpc0xhc3QgPSBsYXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIG1vYi10ZXh0XCIgPnt7IHNlY3Rvcj8uc3ViU2VjdG9yTmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIiAqbmdJZj1cIiFpc0xhc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyaW9kXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RhZ3NMaXN0IGxldC10YWdEYXRhPVwidGFnRGF0YVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiICpuZ0lmPVwidGFnRGF0YT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LXN1YmhlYWRpbmctMSBub2R0cmFuc2xhdGVcIj57eyAndXNlclByb2ZpbGUudGFncycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWdEYXRhPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTJcIiBbbmdDbGFzc109XCJ7J3RhZ3MtZWxsaXBzaXMnOiB0YWdzRWxsaXBzaXMgJiYgIXZpZXdNb3JlVGFnc31cIlxuICAgICAgICAgICAgICAgICAgICAjdGFnc0VsZW0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhZyBvZiB0YWdEYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyBtb2ItdGV4dFwiPnt7IGhhbmRsZUNhcGl0YWxpemUodGFnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCIgKm5nSWY9XCJ0YWdEYXRhPy5sZW5ndGggPiAoaSArIDEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwZXJpb2RcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHdzLW1hdC1kZWZhdWx0LXRleHQgdW5kZXJsaW5lIGN1cnNvci1wb2ludGVyIHRleHQteHNcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRhZ3NFbGxpcHNpcyAmJiAhdmlld01vcmVUYWdzXCIgKGNsaWNrKT1cInZpZXdNb3JlVGFncyA9ICF2aWV3TW9yZVRhZ3NcIj57e1xuICAgICAgICAgICAgICAgICAgICAnYXBwdG9jc2luZ2xlcGFnZS52aWV3TW9yZScgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgd3MtbWF0LWRlZmF1bHQtdGV4dCB1bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC14cyBtdC0xXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3TW9yZVRhZ3NcIiAoY2xpY2spPVwidmlld01vcmVUYWdzID0gIXZpZXdNb3JlVGFnc1wiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdMZXNzJyB8XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTJcIiAqbmdJZj1cIiF0YWdEYXRhPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICB7eyAndXNlclByb2ZpbGUubm9UYWdzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25Mb2FkZXIgJiYgY29udGVudD8uc2VhcmNoVGFnc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiICpuZ0lmPVwiY29udGVudD8uc2VhcmNoVGFncy5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtc3ViaGVhZGluZy0xXCI+e3sgJ3VzZXJQcm9maWxlLnRhZ3MnIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudD8uc2VhcmNoVGFncy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTJcIiBbbmdDbGFzc109XCJ7J3RhZ3MtZWxsaXBzaXMnOiBzZWFyY2hUYWdzRWxsaXBzaXMgJiYgIXZpZXdNb3JlVGFnc31cIiAjc2VhcmNoVGFnRWxlbT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFnIG9mIGNvbnRlbnQ/LnNlYXJjaFRhZ3M7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIG1vYi10ZXh0XCIgPnt7IGhhbmRsZUNhcGl0YWxpemUodGFnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCIgKm5nSWY9XCJjb250ZW50Py5zZWFyY2hUYWdzLmxlbmd0aCA+IChpICsgMSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBlcmlvZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgd3MtbWF0LWRlZmF1bHQtdGV4dCB1bmRlcmxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC14c1wiICpuZ0lmPVwic2VhcmNoVGFnc0VsbGlwc2lzICYmICF2aWV3TW9yZVRhZ3NcIiAoY2xpY2spPVwidmlld01vcmVUYWdzID0gIXZpZXdNb3JlVGFnc1wiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLnZpZXdNb3JlJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciB3cy1tYXQtZGVmYXVsdC10ZXh0IHVuZGVybGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LXhzIG10LTFcIiAqbmdJZj1cInZpZXdNb3JlVGFnc1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpZXdNb3JlVGFncyA9ICF2aWV3TW9yZVRhZ3NcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS52aWV3TGVzcycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGdhcC0yXCIgKm5nSWY9XCIhY29udGVudD8uc2VhcmNoVGFncy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICB7eyAndXNlclByb2ZpbGUubm9UYWdzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPiAtLT5cblxuICAgIDxkaXYgY2xhc3M9XCJtb2JpbGUta2FybWEtcG9pbnRzXCI+XG4gICAgICAgIDx3cy13aWRnZXQta2FybWEtcG9pbnRzIFtjb250ZW50XT1cImNvbnRlbnRcIiBbYnRuQ2F0ZWdvcnldPVwiXCIgW2NvbmRpdGlvbl09XCJjb25kaXRpb25cIlxuICAgICAgICAgICAgKGNsaWNrQ2xhaW1LYXJtYVBvaW50cyk9XCJoYW5kbGVDbGlja09mQ2xhaW0oJGV2ZW50KVwiIFtkYXRhXT1cImtwYXJyYXlcIj5cbiAgICAgICAgPC93cy13aWRnZXQta2FybWEtcG9pbnRzPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMTAwJSdcIiBbaGVpZ2h0XT1cIic3MnB4J1wiXG4gICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uTG9hZGVyICYmICFmb3JQcmV2aWV3XCI+XG4gICAgICAgIDwhLS0gY29tbWVudGVkIGJlY2F1c2Ugb2YgbmV3IGRpc2N1c3Npb24gdjIgY29tbWVudHMgaW1wbG1lbnRhdGlvbiAtLT5cbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBpdGVtcy1jZW50ZXIgZGlzY3Vzc2lvbi1kaXZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTEgZm9ydW0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHNtOmZsZXgtcm93IGdhcC01IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Zm9ydW08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VnZ2VzdGlvbi10ZXh0IHNtOnByLTRcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5hbnlTdWdnZXN0aW9ucycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm9uZSBwLTNcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIChjbGljayk9XCJuYXZpZ2F0ZVRvRGlzY3Vzc2lvbkh1YigpXCI+e3sgJ2Rpc2N1c3Muc3RhcnREaXNjdXNzJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvbkxvYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTRcIiAqbmdGb3I9XCJsZXQgaSBvZiBbMSwgMl1cIj5cbiAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzcycHgnXCIgW2hlaWdodF09XCInMjBweCdcIlxuICAgICAgICAgICAgICAgICAgICBbYmluZGluZ0NsYXNzXT1cIidyb3VuZGVkJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlciBbd2lkdGhdPVwiJzM2cHgnXCIgW2hlaWdodF09XCInMzZweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZC1mdWxsJ1wiPjwvd3Mtd2lkZ2V0LXNrZWxldG9uLWxvYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMTI0cHgnXCIgW2hlaWdodF09XCInMjBweCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiaW5kaW5nQ2xhc3NdPVwiJ3JvdW5kZWQnXCI+PC93cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1za2VsZXRvbi1sb2FkZXIgW3dpZHRoXT1cIicxMjRweCdcIiBbaGVpZ2h0XT1cIicxMnB4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlciAmJiAhZnJvbU1hcmtldFBsYWNlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGdhcC0zXCIgW25nQ2xhc3NdPVwieydoaWRlQWJvdmUxMjAwJzogIXJvdXRlci51cmwuaW5jbHVkZXMoJy92aWV3ZXIvJyl9XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZFwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLmF1dGhvcnNBbmRDdXJhdG9ycycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTQgaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF1dGhvciBvZiBoYW5kbGVQYXJzZUpzb25EYXRhKGNvbnRlbnRSZWFkRGF0YT8uY3JlYXRvckRldGFpbHMpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hdmF0YXItcGhvdG8gW3JhbmRvbUNvbG9yXT1cInRydWVcIiBbZGF0YWxlbl09XCIxXCIgW3NpemVdPVwiJ3JvdW5kLW0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGhvdG9VcmxdPVwiYXV0aG9yLnBob3RvIHx8ICcnXCIgW25hbWVdPVwiYXV0aG9yLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvd3Mtd2lkZ2V0LWF2YXRhci1waG90bz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgaGFuZGxlQ2FwaXRhbGl6ZShhdXRob3I/Lm5hbWUudG9Mb3dlckNhc2UoKSwgJ25hbWUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgbGVhZGluZy0zIG1vYi10ZXh0XCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UuYXV0aG9yJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC00XCJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNyZWF0b3Igb2YgaGFuZGxlUGFyc2VKc29uRGF0YShjb250ZW50UmVhZERhdGE/LmNyZWF0b3JDb250YWN0cylcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8d3Mtd2lkZ2V0LWF2YXRhci1waG90byBbcmFuZG9tQ29sb3JdPVwidHJ1ZVwiIFtkYXRhbGVuXT1cIjFcIiBbc2l6ZV09XCIncm91bmQtbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwaG90b1VybF09XCJjcmVhdG9yLnBob3RvIHx8ICcnXCIgW25hbWVdPVwiY3JlYXRvci5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3dzLXdpZGdldC1hdmF0YXItcGhvdG8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtMSBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbnQtYm9sZFwiPnt7IGhhbmRsZUNhcGl0YWxpemUoY3JlYXRvcj8ubmFtZS50b0xvd2VyQ2FzZSgpLCAnbmFtZScpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyBsZWFkaW5nLTMgbW9iLXRleHRcIj57eyAnYXBwdG9jc2luZ2xlcGFnZS5jdXJhdG9yJyB8IHRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWZyb21NRE9cIiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIiBbbmdDbGFzc109XCJ7J2hpZGVBYm92ZTEyMDAnOiAhcm91dGVyLnVybC5pbmNsdWRlcygnL3ZpZXdlci8nKX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UucHJvdmlkZXInIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvdmlkZXItbG9nby1kaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImNvbnRlbnQ/LmNyZWF0b3JMb2dvXCIgW3NyY109XCJjb250ZW50Py5jcmVhdG9yTG9nb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5wcm92aWRlcicgfCB0cmFuc2xhdGUgfX1cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiIWNvbnRlbnQ/LmNyZWF0b3JMb2dvXCIgc3JjPVwiL2Fzc2V0cy9pbnN0YW5jZXMvZWFnbGUvYXBwX2xvZ29zL0thcm1heW9naUJoYXJhdF9Mb2dvLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5wcm92aWRlcicgfCB0cmFuc2xhdGUgfX1cIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIGJyZWFrLWFsbFwiPnt7IGhhbmRsZUNhcGl0YWxpemUoY29udGVudD8uc291cmNlLCAnc291cmNlJykgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZyb21NRE9cIiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gZ2FwLTNcIiBbbmdDbGFzc109XCJ7J2hpZGVBYm92ZTEyMDAnOiAhcm91dGVyLnVybC5pbmNsdWRlcygnL3ZpZXdlci8nKX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkXCI+e3sgJ2FwcHRvY3NpbmdsZXBhZ2UucHJvdmlkZXInIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvdmlkZXItbG9nby1kaXZcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIihjb250ZW50Py5yZXN1bHQ/LmNvbnRlbnQ/LmNyZWF0b3JMb2dvKVwiIGhlaWdodD1cIjM2cHhcIiB3aWR0aD1cIjM2cHhcIiBbc3JjXT1cImNvbnRlbnQ/LnJlc3VsdD8uY29udGVudD8uY3JlYXRvckxvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwie3sgJ2FwcHRvY3NpbmdsZXBhZ2UucHJvdmlkZXInIHwgdHJhbnNsYXRlIH19XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiEoY29udGVudD8ucmVzdWx0Py5jb250ZW50Py5jcmVhdG9yTG9nbylcIiBoZWlnaHQ9XCIzNnB4XCIgd2lkdGg9XCIzNnB4XCIgc3JjPVwiL2Fzc2V0cy9pbnN0YW5jZXMvZWFnbGUvYXBwX2xvZ29zL0thcm1heW9naUJoYXJhdF9Mb2dvLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJ7eyAnYXBwdG9jc2luZ2xlcGFnZS5wcm92aWRlcicgfCB0cmFuc2xhdGUgfX1cIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIGJyZWFrLWFsbFwiPnt7IGhhbmRsZUNhcGl0YWxpemUoY29udGVudD8ucmVzdWx0Py5jb250ZW50Py5zb3VyY2UsICdzb3VyY2UnKSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNrZWxldG9uTG9hZGVyXCI+XG4gICAgICAgIDx3cy13aWRnZXQtc2tlbGV0b24tbG9hZGVyIFt3aWR0aF09XCInMTAwJSdcIiBbaGVpZ2h0XT1cIic0MDBweCdcIlxuICAgICAgICAgICAgW2JpbmRpbmdDbGFzc109XCIncm91bmRlZCdcIj48L3dzLXdpZGdldC1za2VsZXRvbi1sb2FkZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFza2VsZXRvbkxvYWRlciAmJiAhZm9yUHJldmlld1wiPlxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZW50Py5hdmVyYWdlUmF0aW5nXCI+IC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCByYXRpbmdzLWRpdiBnYXAtMTBcIiBpZD1cInJhdGluZ3NEaXZcIiAqbmdJZj1cInNob3dSZXZpZXdzXCI+XG4gICAgICAgICAgICA8d3Mtd2lkZ2V0LXJhdGluZy1zdW1tYXJ5IFtyYXRpbmdTdW1tYXJ5XT1cInJhdGluZ1N1bW1hcnlQcm9jZXNzZWRcIj48L3dzLXdpZGdldC1yYXRpbmctc3VtbWFyeT5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIG1hdC1zdWJoZWFkaW5nLTEgbm9kdHJhbnNsYXRlXCIgaWQ9XCJyZXZpZXdDb250YWluZXJcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FwcHRvY3NpbmdsZXBhZ2UudG9wUmV2aWV3cycgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJhdGluZ1N1bW1hcnlQcm9jZXNzZWQ/LmF2Z1JhdGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndzLW1hdC1kZWZhdWx0LXRleHQgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiaGFuZGxlT3BlblJldmlld01vZGFsKClcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtc2cuc2hvd0FsbCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvcFJhdGluZ1Jldmlld3MgJiYgdG9wUmF0aW5nUmV2aWV3cz8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC01XCIgW25nQ2xhc3NdPVwiaXNNb2JpbGUgPyAnaG9yaXpvbnRhbC1zdHJpcCcgOiAnZmxleC13cmFwJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtZGl2XCIgKm5nRm9yPVwibGV0IGVhY2hSZXZpZXcgb2YgdG9wUmF0aW5nUmV2aWV3cyB8IHNsaWNlOjA6NDsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTQgZmxleCBmbGV4LWNvbCBnYXAtNlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnQgZGVzYy1lbGxpcHNpc1wiIHRpdGxlPVwie3sgZWFjaFJldmlldz8ucmV2aWV3IH19XCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2FwaXRhbGl6ZShlYWNoUmV2aWV3Py5yZXZpZXcpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0yIHJhdGluZy1zdGFydC12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5zdGFyPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGVhY2hSZXZpZXc/LnJhdGluZyB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBpdGVtcy1jZW50ZXIgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHdzLXdpZGdldC1hdmF0YXItcGhvdG8gW3JhbmRvbUNvbG9yXT1cInRydWVcIiBbZGF0YWxlbl09XCIxXCIgW3NpemVdPVwiJ3JvdW5kLW0nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGhvdG9VcmxdPVwiZWFjaFJldmlldz8ucGhvdG8gfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImVhY2hSZXZpZXc/LmZpcnN0TmFtZVwiPjwvd3Mtd2lkZ2V0LWF2YXRhci1waG90bz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgaGFuZGxlQ2FwaXRhbGl6ZShlYWNoUmV2aWV3Py5maXJzdE5hbWUudG9Mb3dlckNhc2UoKSwgJ25hbWUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGVyaW9kXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZWFjaFJldmlldz8uZGF0ZSB8IHBpcGVSZWxhdGl2ZVRpbWUgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXRvcFJhdGluZ1Jldmlld3MgfHwgIXRvcFJhdGluZ1Jldmlld3M/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB0ZXh0LWNlbnRlciBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgcC00IHJvdW5kZWQtbWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJhc2UgZm9udC1ib2xkIG5vZHRyYW5zbGF0ZVwiPnt7ICdhcHB0b2NzaW5nbGVwYWdlLm5vUmV2aWV3c0ZvdW5kJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbnRlbnQ/LmF2ZXJhZ2VSYXRpbmdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zIGp1c3RpZnktY2VudGVyIHJhdGluZ3MtZGl2XCI+XG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ljb25zL3RvYy9uby1jZXJ0aWZpY2F0ZS5zdmdcIiBhbHQ9XCJubyByYXRpbmdzIGltYWdlXCIgLz5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZyBmb250LWJvbFwiPkJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIGNvdXJzZSBhbmQgeW91ciA8YnIvPiBsZWFybmluZyBleHBlcmllbmNlPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|