@hmcts/ccd-case-ui-toolkit 7.1.47-task-completing → 7.1.48-spinner-issue-fix
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/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +2 -1
- package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +8 -4
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +6 -2
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
- package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -408,6 +408,7 @@ export class CaseFullAccessViewComponent {
|
|
|
408
408
|
// we may need to take care of different triggers in the future
|
|
409
409
|
if (trigger.id === CaseViewEventIds.QueryManagementRaiseQuery) {
|
|
410
410
|
await this.router.navigate([`/query-management/query/${this.caseDetails.case_id}`]);
|
|
411
|
+
this.loadingService.unregister(spinner);
|
|
411
412
|
}
|
|
412
413
|
else if (trigger.id === CaseViewEventIds.DELETE) {
|
|
413
414
|
const dialogRef = this.dialog.open(DeleteOrCancelDialogComponent, this.dialogConfig);
|
|
@@ -710,4 +711,4 @@ export class CaseFullAccessViewComponent {
|
|
|
710
711
|
args: ['tabGroup', { static: false }]
|
|
711
712
|
}] }); })();
|
|
712
713
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFullAccessViewComponent, { className: "CaseFullAccessViewComponent", filePath: "lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.ts", lineNumber: 44 }); })();
|
|
713
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMs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Y0FBOEI7WUFBQyxBQUEvQixnREFBOEIsMkJBQXVCO1lBRzlDLGVBQTJCO1lBQTNCLDZDQUEyQjtZQUNULGNBQWdEO1lBQWhELDZFQUFnRDtZQUkvRSxjQUFzQjtZQUF0QiwyQ0FBc0I7WUFRUCxjQUErQztZQUEvQyx3RUFBK0M7WUFRbkQsZUFBc0I7WUFBdEIsMkNBQXNCOzs7aUZEZDVCLDJCQUEyQjtjQUx2QyxTQUFTOzJCQUNFLDJCQUEyQjt3ZkFZckIsUUFBUTtrQkFBdkIsS0FBSztZQUNVLGdCQUFnQjtrQkFBL0IsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxhQUFhO2tCQUE1QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQTRCMkMsUUFBUTtrQkFBeEQsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztrRkF4QzdCLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nLCBNYXRMZWdhY3lEaWFsb2dDb25maWcgYXMgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lUYWIgYXMgTWF0VGFiLCBNYXRMZWdhY3lUYWJHcm91cCBhcyBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS10YWJzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBScHhUcmFuc2xhdGVQaXBlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyxcbiAgTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MsXG4gIE5vdGlmaWNhdGlvbkJhbm5lclR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9iYW5uZXJzL25vdGlmaWNhdGlvbi1iYW5uZXInO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQWN0aXZpdHksIENhc2VGaWVsZCwgQ2FzZVRhYiwgQ2FzZVZpZXcsIENhc2VWaWV3VHJpZ2dlciwgRFJBRlRfUVVFUllfUEFSQU0sIERpc3BsYXlNb2RlLCBEcmFmdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlVmlld0V2ZW50SWRzIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLXZpZXctZXZlbnQtaWRzLmVudW0nO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBEcmFmdFNlcnZpY2UsXG4gIEVycm9yTm90aWZpZXJTZXJ2aWNlLFxuICBGaWVsZHNVdGlscyxcbiAgTG9hZGluZ1NlcnZpY2UsXG4gIE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gIE5hdmlnYXRpb25PcmlnaW4sXG4gIE9yZGVyU2VydmljZSxcbiAgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY29udmVydC1ocmVmLXRvLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IERlbGV0ZU9yQ2FuY2VsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncyc7XG5pbXBvcnQgeyBDYWxsYmFja0Vycm9yc0NvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5pbXBvcnQgeyBpbml0RGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZ1bGwtYWNjZXNzLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JJR0lOX1FVRVJZX1BBUkFNID0gJ29yaWdpbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0dvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIEdvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVTklDT0RFX1NQQUNFID0gJyUyMCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1BBQ0UgPSAnICc7XG4gIHByaXZhdGUgcmVhZG9ubHkgSEVBUklOR1NfVEFCX0xBQkVMID0gJ0hlYXJpbmdzJztcblxuICBASW5wdXQoKSBwdWJsaWMgaGFzUHJpbnQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXZlbnRTZWxlY3RvciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVwZW5kZWRUYWJzOiBDYXNlVGFiW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG5cbiAgcHVibGljIEJBTk5FUiA9IERpc3BsYXlNb2RlLkJBTk5FUjtcbiAgcHVibGljIHNvcnRlZFRhYnM6IENhc2VUYWJbXTtcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBlcnJvcjogYW55O1xuICBwdWJsaWMgdHJpZ2dlclRleHRTdGFydCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9DT05USU5VRTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmcgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aXZpdHlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVycm9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIG1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGluazogYm9vbGVhbjtcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnOiBOb3RpZmljYXRpb25CYW5uZXJDb25maWc7XG4gIHB1YmxpYyBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgcHVibGljIGFjdGl2ZUNhc2VGbGFncyA9IGZhbHNlO1xuICBwdWJsaWMgY2FzZUZsYWdzRXh0ZXJuYWxVc2VyID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdzUmVhZEV4dGVybmFsTW9kZSA9ICcjQVJHVU1FTlQoUkVBRCxFWFRFUk5BTCknO1xuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBldmVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBpc0V2ZW50QnV0dG9uQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6ICAgT2JzZXJ2YWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2U6IE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5UG9sbGluZ1NlcnZpY2U6IEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRTZXJ2aWNlOiBEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck5vdGlmaWVyU2VydmljZTogRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZTogQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblBpcGU6IFJweFRyYW5zbGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QgPSB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmVycm9yU291cmNlLnBpcGUoZmlsdGVyKCh4KSA9PiB7XG4gICAgICBpZih4ICYmIHguc3RhdHVzICE9PSA0MDEgJiYgeC5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0geDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkpO1xuICAgIFxuICAgIGluaXREaWFsb2coKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGluayA9IHRydWU7XG5cbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZT8ucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZT8uZ2V0SHJlZk1hcmtkb3duTGlua0NvbnRlbnQoKS5zdWJzY3JpYmUoKGhyZWZNYXJrZG93bkxpbmtDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIGRvIG5vdCBjb252ZXJ0IHJvdXRlciB3aXRoIGluaXRpYWwgZGVmYXVsdCB2YWx1ZTsgY29udmVydCB0byByb3V0ZXIgb25seSBvbiB1cGRhdGVkIGxpbmsgY29udGVudFxuICAgICAgaWYgKGhyZWZNYXJrZG93bkxpbmtDb250ZW50ICE9PSAnRGVmYXVsdCcpIHtcbiAgICAgICAgdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZS5jYWxsQW5ndWxhclJvdXRlcihocmVmTWFya2Rvd25MaW5rQ29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLmlzRW5hYmxlZCAmJiAhdGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uID0gdGhpcy5wb3N0Vmlld0FjdGl2aXR5KCkuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrUm91dGVBbmRTZXRDYXNlVmlld1RhYigpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGFjdGl2ZSBDYXNlIEZsYWdzXG4gICAgdGhpcy5hY3RpdmVDYXNlRmxhZ3MgPSB0aGlzLmhhc0FjdGl2ZUNhc2VGbGFncygpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzLnByZXBlbmRlZFRhYnMgJiYgIWNoYW5nZXMucHJlcGVuZGVkVGFicy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB0aGlzLmNyZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLm9yZ2FuaXNlVGFiUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQcmludEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLnByaW50RW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLmlzRW5hYmxlZCkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhc2VTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0KTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuZXJyb3JTdWJzY3JpcHRpb24pO1xuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5zdWJzY3JpcHRpb24pO1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyB1bnN1YnNjcmliZShzdWJzY3JpcHRpb246IGFueSkge1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGV2ZW50ICYmIChldmVudCBhcyBhbnkpLnVybDtcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIGNvbnN0IHRhYlVybCA9IHVybCA/IHVybC5zcGxpdCgnIycpIDogbnVsbDtcbiAgICAgICAgICBjb25zdCB0YWIgPSB0YWJVcmwgJiYgdGFiVXJsLmxlbmd0aCA+IDEgPyB0YWJVcmxbdGFiVXJsLmxlbmd0aCAtIDFdLnJlcGxhY2VBbGwoJyUyMCcsICcgJykgOiAnJztcbiAgICAgICAgICBjb25zdCBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsLnRvTG93ZXJDYXNlKCkgPT09IHRhYi50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgcG9zdFZpZXdBY3Rpdml0eSgpOiBPYnNlcnZhYmxlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLnBvc3RWaWV3QWN0aXZpdHkodGhpcy5jYXNlRGV0YWlscz8uY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5pZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFwcGx5VHJpZ2dlcih0cmlnZ2VyOiBDYXNlVmlld1RyaWdnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCl7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuICAgIGNvbnN0IHNwaW5uZXIgPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5hZGRTaGFyZWRTcGlubmVyKHNwaW5uZXIpO1xuICAgIHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuYW5ub3VuY2VFcnJvcihudWxsKTtcbiAgICBjb25zdCB0aGVRdWVyeVBhcmFtczogUGFyYW1zID0ge307XG5cbiAgICBpZiAodGhpcy5pZ25vcmVXYXJuaW5nKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1snaWdub3JlV2FybmluZyddID0gdGhpcy5pZ25vcmVXYXJuaW5nO1xuICAgIH1cblxuICAgIC8vIHdlIG1heSBuZWVkIHRvIHRha2UgY2FyZSBvZiBkaWZmZXJlbnQgdHJpZ2dlcnMgaW4gdGhlIGZ1dHVyZVxuICAgIGlmICh0cmlnZ2VyLmlkID09PSBDYXNlVmlld0V2ZW50SWRzLlF1ZXJ5TWFuYWdlbWVudFJhaXNlUXVlcnkpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL3F1ZXJ5LW1hbmFnZW1lbnQvcXVlcnkvJHt0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWR9YF0pO1xuICAgIH0gZWxzZSBpZiAodHJpZ2dlci5pZCA9PT0gQ2FzZVZpZXdFdmVudElkcy5ERUxFVEUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgIHRoaXMuZHJhZnRTZXJ2aWNlLmRlbGV0ZURyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oeyBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRFJBRlRfREVMRVRFRCB9KTtcbiAgICAgICAgICAgIH0sIF8gPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKHsgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVSUk9SX0RFTEVUSU5HX0RSQUZUIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0RyYWZ0KCkgJiYgdHJpZ2dlci5pZCAhPT0gQ2FzZVZpZXdFdmVudElkcy5ERUxFVEUpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zW0RSQUZUX1FVRVJZX1BBUkFNXSA9IHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZDtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zW0Nhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU1dID0gJ3ZpZXdEcmFmdCc7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkRSQUZUX1JFU1VNRUQsXG4gICAgICAgICAgamlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQsXG4gICAgICAgICAgY3RpZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXNcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRVZFTlRfVFJJR0dFUkVELFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtcyxcbiAgICAgICAgICBldGlkOiB0cmlnZ2VyLmlkLFxuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGVcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1RhYnNQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZFRhYnMubGVuZ3RoID4gMCB8fCB0aGlzLnByZXBlbmRlZFRhYnMubGVuZ3RoID4gMCB8fCB0aGlzLmFwcGVuZGVkVGFicy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzTm90aWZ5KGNhbGxiYWNrRXJyb3JzQ29udGV4dDogQ2FsbGJhY2tFcnJvcnNDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmVXYXJuaW5nID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0Lmlnbm9yZVdhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC50cmlnZ2VyVGV4dDtcbiAgICB0aGlzLmV2ZW50SWQgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQuZXZlbnRJZDtcbiAgfVxuXG4gIHB1YmxpYyBpc0RyYWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEcmFmdC5pc0RyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgaXNUcmlnZ2VyQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmVycm9yXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzLmxlbmd0aClcbiAgICAgIHx8ICh0aGlzLmVycm9yXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlsc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcmdhbmlzZVRhYlBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGxldCBtYXRUYWI6IE1hdFRhYjtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgodHJ1ZSk7XG4gICAgbGV0IGhhc2hWYWx1ZSA9IHVybC5zdWJzdHJpbmcodXJsLmluZGV4T2YoJyMnKSArIDEpO1xuICAgIGlmICghdXJsLmluY2x1ZGVzKCcjJykgJiYgIXVybC5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpICYmICF1cmwuaW5jbHVkZXMoJ3Rhc2tzJykgJiYgIXVybC5pbmNsdWRlcygnaGVhcmluZ3MnKSkge1xuICAgICAgY29uc3QgcGF0aHMgPSB1cmwuc3BsaXQoJy8nKTtcbiAgICAgIC8vIGxhc3RQYXRoIGNhbiBiZSAvY2FzZUlkLCBvciB0aGUgdGFicyAvdGFza3MsIC9oZWFyaW5ncyBldGMuXG4gICAgICBjb25zdCBsYXN0UGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChwYXRoc1twYXRocy5sZW5ndGggLSAxXSk7XG4gICAgICBsZXQgZm91bmRUYWI6IENhc2VUYWIgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLnByZXBlbmRlZFRhYnMpIHtcbiAgICAgICAgdGhpcy5wcmVwZW5kZWRUYWJzID0gW107XG4gICAgICB9XG4gICAgICBjb25zdCBhZGRpdGlvbmFsVGFicyA9IFsuLi50aGlzLnByZXBlbmRlZFRhYnMsIC4uLnRoaXMuYXBwZW5kZWRUYWJzXTtcbiAgICAgIGlmIChhZGRpdGlvbmFsVGFicyAmJiBhZGRpdGlvbmFsVGFicy5sZW5ndGgpIHtcbiAgICAgICAgZm91bmRUYWIgPSBhZGRpdGlvbmFsVGFicy5maW5kKChjYXNlVGFiOiBDYXNlVGFiKSA9PiBjYXNlVGFiLmlkLnRvTG93ZXJDYXNlKCkgPT09IGxhc3RQYXRoLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgICAgLy8gZm91bmQgdGFza3Mgb3IgaGVhcmluZyB0YWJcbiAgICAgIGlmIChmb3VuZFRhYikge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCwgZm91bmRUYWIuaWRdKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBmb3VuZFRhYi5sYWJlbCk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGxhc3QgcGF0aCBpcyBjYXNlSWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNvcnQgd2l0aCB0aGUgb3JkZXIgb2YgQ0NEIHByZWRlZmluZWQgdGFic1xuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLnRhYnMuc29ydCgoYVRhYiwgYlRhYikgPT4gYVRhYi5vcmRlciA+IGJUYWIub3JkZXIgPyAxIDogKGJUYWIub3JkZXIgPiBhVGFiLm9yZGVyID8gLTEgOiAwKSk7XG4gICAgICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgdGFiIGNoZWNraW5nIGlmIHRoZSB0YWIgaXMgdmlzaWJsZVxuICAgICAgICBjb25zdCBwcmVTZWxlY3RUYWI6IENhc2VUYWIgPSB0aGlzLmZpbmRQcmVTZWxlY3RlZEFjdGl2ZVRhYigpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0sIHsgZnJhZ21lbnQ6IHByZVNlbGVjdFRhYi5sYWJlbCB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBwcmVTZWxlY3RUYWIubGFiZWwpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5VTklDT0RFX1NQQUNFLCAnZycpO1xuICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLnJlcGxhY2UocmVnRXhwLCBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UpO1xuICAgICAgaWYgKGhhc2hWYWx1ZS5pbmNsdWRlcygnaGVhcmluZ3MnKSkge1xuICAgICAgICBoYXNoVmFsdWUgPSAnaGVhcmluZ3MnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGhhc2hWYWx1ZS5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpIHx8IGhhc2hWYWx1ZS5pbmNsdWRlcygndGFza3MnKSkge1xuICAgICAgICAgIGhhc2hWYWx1ZSA9IGhhc2hWYWx1ZS5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpID8gJ3JvbGVzIGFuZCBhY2Nlc3MnIDogJ3Rhc2tzJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PlxuICAgICAgICB4LnRleHRMYWJlbC5yZXBsYWNlKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSwgJycpLnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgIGhhc2hWYWx1ZS5yZXBsYWNlKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSwgJycpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kUHJlU2VsZWN0ZWRBY3RpdmVUYWIoKTogQ2FzZVRhYiB7XG4gICAgY29uc3QgdW5PcmRlcmVkVGFic0luU29ydGVkVGFicyA9IHRoaXMuY2FzZURldGFpbHMudGFic1xuICAgICAgLmZpbHRlcigodGFiKSA9PiAhdGFiLm9yZGVyICYmIHRoaXMuc29ydGVkVGFicy5zb21lKChzb3J0ZWRUYWIpID0+IHNvcnRlZFRhYi5pZCA9PT0gdGFiLmlkKSk7XG4gICAgcmV0dXJuIHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnMubGVuZ3RoID8gdW5PcmRlcmVkVGFic0luU29ydGVkVGFic1swXSA6IHRoaXMuc29ydGVkVGFic1swXTtcbiAgfVxuXG4gIC8vIFJlZmFjdG9yZWQgdW5kZXIgRVhVSS0xMTAgdG8gYWRkcmVzcyBpbmZpbml0ZSB0YWIgbG9vcCB0byB1c2UgdGFiSW5kZXhDaGFuZ2VkIGluc3RlYWRcbiAgcHVibGljIHRhYkNoYW5nZWQodGFiSW5kZXhDaGFuZ2VkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQodGFiID0+IHRhYi5pc0FjdGl2ZSk7XG4gICAgY29uc3QgdGFiTGFiZWwgPSBtYXRUYWIudGV4dExhYmVsO1xuICAgIC8vIHNvcnRlZFRhYnMgYXJlIGZyYWdtZW50c1xuICAgIC8vIGFwcGVuZGVkL3ByZXBlcGVuZGVkIHRhYnMgdXNlIHJvdXRlciBuYXZpZ2F0aW9uXG4gICAgaWYgKCh0YWJJbmRleENoYW5nZWQgPD0gMSAmJiB0aGlzLnByZXBlbmRlZFRhYnMgJiYgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCkgfHxcbiAgICAgICh0aGlzLmFwcGVuZGVkVGFicz8ubGVuZ3RoICYmICh0YWJMYWJlbCA9PT0gdGhpcy5IRUFSSU5HU19UQUJfTEFCRUxcbiAgICAgICAgfHwgdGFiTGFiZWwgPT09IHRoaXMucnB4VHJhbnNsYXRpb25QaXBlLnRyYW5zZm9ybSh0aGlzLkhFQVJJTkdTX1RBQl9MQUJFTCkpKSkge1xuICAgICAgLy8gSGFjayB0byBnZXQgSUQgZnJvbSB0YWIgYXMgaXQncyBub3QgZWFzaWx5IGFjaGlldmVkIHRocm91Z2ggQW5ndWxhciBNYXRlcmlhbCBUYWJzXG4gICAgICBjb25zdCB0YWIgPSBtYXRUYWJbJ192aWV3Q29udGFpbmVyUmVmJ10gYXMgVmlld0NvbnRhaW5lclJlZjtcbiAgICAgIGNvbnN0IGlkID0gKHRhYi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmlkO1xuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQvaGVhcmluZ3NcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkL3JvbGVzLWFuZC1hY2Nlc3NcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUm91dGluZyBoZXJlIGlzIGJhc2VkIG9uIHRhYiBsYWJlbCwgbm90IGlkZWFsXG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZCN0YWJMYWJlbFxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWRdLCB7IGZyYWdtZW50OiB0YWJMYWJlbCB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25MaW5rQ2xpY2tlZCh0cmlnZ2VyT3V0cHV0RXZlbnRUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBHZXQgdGhlICphYnNvbHV0ZSogKG5vdCByZWxhdGl2ZSkgaW5kZXggb2YgdGhlIHRhcmdldCB0YWIgYW5kIHNldCBhcyB0aGUgYWN0aXZlIHRhYiwgdXNpbmcgdGhlIHNlbGVjdGVkSW5kZXggaW5wdXRcbiAgICAvLyBvZiBtYXQtdGFiLWdyb3VwIChib3VuZCB0byBzZWxlY3RlZFRhYkluZGV4KVxuICAgIGNvbnN0IHRhcmdldFRhYkluZGV4ID0gdGhpcy50YWJHcm91cC5fdGFicy50b0FycmF5KCkuZmluZEluZGV4KHRhYiA9PiB0YWIudGV4dExhYmVsID09PSB0cmlnZ2VyT3V0cHV0RXZlbnRUZXh0KTtcbiAgICBpZiAodGFyZ2V0VGFiSW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gdGFyZ2V0VGFiSW5kZXg7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB0YXJnZXRUYWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzQWN0aXZlQ2FzZUZsYWdzKCk6IGJvb2xlYW4ge1xuICAgIC8vIERldGVybWluZSB3aGljaCB0YWIgY29udGFpbnMgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgdHlwZSwgZnJvbSB0aGUgQ2FzZVZpZXcgb2JqZWN0IGluIHRoZSBzbmFwc2hvdCBkYXRhXG4gICAgY29uc3QgY2FzZUZsYWdzVGFiID0gdGhpcy5jYXNlRGV0YWlscz8udGFic1xuICAgICAgPyAodGhpcy5jYXNlRGV0YWlscy50YWJzKS5maWx0ZXIoXG4gICAgICAgIHRhYiA9PiB0YWIuZmllbGRzICYmIHRhYi5maWVsZHMuc29tZShjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSkpWzBdXG4gICAgICA6IG51bGw7XG5cbiAgICBpZiAoY2FzZUZsYWdzVGFiKSB7XG4gICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGlzIGluIGV4dGVybmFsIG1vZGUgb3Igbm90OyB0aGUgbm90aWZpY2F0aW9uIGJhbm5lciBzaG91bGQgbm90IGJlXG4gICAgICAvLyBkaXNwbGF5ZWQgZm9yIGV4dGVybmFsIHVzZXJzXG4gICAgICB0aGlzLmNhc2VGbGFnc0V4dGVybmFsVXNlciA9IGNhc2VGbGFnc1RhYi5maWVsZHMuZmluZChcbiAgICAgICAgY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09IHRoaXMuY2FzZUZsYWdzUmVhZEV4dGVybmFsTW9kZTtcblxuICAgICAgLy8gR2V0IHRoZSBhY3RpdmUgY2FzZSBmbGFncyBjb3VudFxuICAgICAgLy8gQ2Fubm90IGZpbHRlciBvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiB0byByZW1vdmUgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgYmVjYXVzZSBGbGFncyBmaWVsZHMgbWF5IGJlXG4gICAgICAvLyBjb250YWluZWQgaW4gb3RoZXIgQ2FzZUZpZWxkIGluc3RhbmNlcywgZWl0aGVyIGFzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCBmaWVsZCwgb3IgZmllbGRzIGluIGEgY29sbGVjdGlvblxuICAgICAgLy8gKG9yIHN1Yi1maWVsZHMgb2YgQ29tcGxleCBmaWVsZHMgaW4gYSBjb2xsZWN0aW9uKVxuICAgICAgY29uc3QgYWN0aXZlQ2FzZUZsYWdzID0gY2FzZUZsYWdzVGFiLmZpZWxkc1xuICAgICAgICAuZmlsdGVyKGNhc2VGaWVsZCA9PiAhRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJiBjYXNlRmllbGQudmFsdWUpXG4gICAgICAgIC5yZWR1Y2UoKGFjdGl2ZSwgY2FzZUZsYWcpID0+IHtcbiAgICAgICAgICByZXR1cm4gRmllbGRzVXRpbHMuY291bnRBY3RpdmVGbGFnc0luQ2FzZUZpZWxkKGFjdGl2ZSwgY2FzZUZsYWcpO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgaWYgKGFjdGl2ZUNhc2VGbGFncyA+IDApIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBhY3RpdmVDYXNlRmxhZ3MgPiAxXG4gICAgICAgICAgPyBgVGhlcmUgYXJlICR7YWN0aXZlQ2FzZUZsYWdzfSBhY3RpdmUgZmxhZ3Mgb24gdGhpcyBjYXNlLmAgOiAnVGhlcmUgaXMgMSBhY3RpdmUgZmxhZyBvbiB0aGlzIGNhc2UuJztcbiAgICAgICAgLy8gSW5pdGlhbGlzZSBhbmQgZGlzcGxheSBub3RpZmljYXRpb24gYmFubmVyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQmFubmVyQ29uZmlnID0ge1xuICAgICAgICAgIGJhbm5lclR5cGU6IE5vdGlmaWNhdGlvbkJhbm5lclR5cGUuSU5GT1JNQVRJT04sXG4gICAgICAgICAgaGVhZGluZ1RleHQ6ICdJbXBvcnRhbnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgIHNob3dMaW5rOiB0cnVlLFxuICAgICAgICAgIGxpbmtUZXh0OiAnVmlldyBjYXNlIGZsYWdzJyxcbiAgICAgICAgICB0cmlnZ2VyT3V0cHV0RXZlbnQ6IHRydWUsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50VGV4dDogY2FzZUZsYWdzVGFiLmxhYmVsLFxuICAgICAgICAgIGhlYWRlckNsYXNzOiBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcy5JTkZPUk1BVElPTlxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhIENhc2VGaWVsZCBpcyB0byBiZSBkaXNwbGF5ZWQgd2l0aG91dCBhIGxhYmVsLCBhcyBpcyBleHBlY3RlZCBmb3IgYWxsIENvbXBvbmVudExhdW5jaGVyLXR5cGVcbiAgICogZmllbGRzLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkIFRoZSBgQ2FzZUZpZWxkYCBpbnN0YW5jZSB0byBjaGVja1xuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgc2hvdWxkIG5vdCBoYXZlIGEgbGFiZWw7IGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgaXNGaWVsZFRvSGF2ZU5vTGFiZWwoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBvbmVudExhdW5jaGVyJ1xuICAgICAgJiYgY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ2FzZUZpbGVWaWV3KSc7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgLy8gQ2xvbmUgYW5kIHNvcnQgdGFicyBhcnJheVxuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGhpcy5jYXNlRGV0YWlscz8udGFicyk7XG4gICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5nZXRUYWJGaWVsZHMoKTtcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLnNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRoaXMuc29ydGVkVGFicyk7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmJ1aWxkRm9ybUdyb3VwKHRoaXMuY2FzZUZpZWxkcyk7XG4gICAgaWYgKHRoaXMuY2FzZURldGFpbHM/LnRyaWdnZXJzICYmIHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRhYnM6IENhc2VUYWJbXSk6IENhc2VUYWJbXSB7XG4gICAgcmV0dXJuIHRhYnM/Lm1hcCh0YWIgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGFiLCB7IGZpZWxkczogdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0YWIuZmllbGRzKSB9KSlcbiAgICAgIC5maWx0ZXIodGFiID0+IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UodGFiLnNob3dfY29uZGl0aW9uKS5tYXRjaEJ5Q29udGV4dEZpZWxkcyh0aGlzLmNhc2VGaWVsZHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBjb25zdCBjYXNlRGF0YUZpZWxkcyA9IHRoaXMuc29ydGVkVGFicz8ucmVkdWNlKChhY2MsIHRhYikgPT4ge1xuICAgICAgcmV0dXJuIGFjYy5jb25jYXQocGxhaW5Ub0NsYXNzKENhc2VGaWVsZCwgdGFiLmZpZWxkcykpO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBjYXNlRGF0YUZpZWxkcz8uY29uY2F0KHRoaXMuY2FzZURldGFpbHMubWV0YWRhdGFGaWVsZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBFVUktMzgyNTpcbiAgICogQnVpbGRzIGEgRm9ybUdyb3VwIGZyb20gYWxsIHRoZSBDYXNlRmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHZpZXcuXG4gICAqIFRoaXMgRm9ybUdyb3VwIGlzIG5lY2Vzc2FyeSBmb3IgZXZhbHVhdGlvbiB0aGUgc2hvdy9oaWRlIGNvbmRpdGlvbnMgb2ZcbiAgICogZmllbGRzIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBhIGZpZWxkIG9ubHkgYXZhaWxhYmxlIG9uIGEgRElGRkVSRU5UIHRhYi5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRGb3JtR3JvdXAoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBGb3JtR3JvdXAge1xuICAgIGxldCB2YWx1ZTogb2JqZWN0ID0ge307XG4gICAgaWYgKGNhc2VGaWVsZHMpIHtcbiAgICAgIGNhc2VGaWVsZHMuZm9yRWFjaChjYXNlRmllbGQgPT4ge1xuICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBbY2FzZUZpZWxkLmlkXTogY2FzZUZpZWxkLnZhbHVlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoeyBkYXRhOiBuZXcgRm9ybUNvbnRyb2wodmFsdWUpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVycm9ycygpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlRXJyb3IobnVsbCk7XG4gICAgdGhpcy5hbGVydFNlcnZpY2UuY2xlYXIoKTtcbiAgfVxufVxuIiwiPCEtLSBHZW5lcmljIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIG9ubHkgaWYgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNhbGxiYWNrIGVycm9ycyBvciB3YXJuaW5ncywgb3Igbm8gZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiAhKGVycm9yLmNhbGxiYWNrRXJyb3JzIHx8IGVycm9yLmNhbGxiYWNrV2FybmluZ3MgfHwgZXJyb3IuZGV0YWlscylcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIlxuICAgICByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDEgY2xhc3M9XCJoZWFkaW5nLWgxIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1NvbWV0aGluZyB3ZW50IHdyb25nJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDE+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1ib2R5XCI+XG4gICAgPHA+e3tcIldlJ3JlIHdvcmtpbmcgdG8gZml4IHRoZSBwcm9ibGVtLiBUcnkgYWdhaW4gc2hvcnRseS5cIiB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgIDxwPlxuICAgICAgPGEgaHJlZj1cImdldC1oZWxwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgIHt7XCJDb250YWN0IHVzXCIgfCBycHhUcmFuc2xhdGV9fTwvYT4ge3tcImlmIHlvdSdyZSBzdGlsbCBoYXZpbmcgcHJvYmxlbXMuXCIgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gQ2FsbGJhY2sgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgZXJyb3IuZGV0YWlsc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiIHJvbGU9XCJncm91cFwiXG4gICAgIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMiBjbGFzcz1cImhlYWRpbmctaDIgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAge3snVGhlIGNhbGxiYWNrIGRhdGEgZmFpbGVkIHZhbGlkYXRpb24nIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9oMj5cbiAgPHA+e3tlcnJvci5tZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBmaWVsZEVycm9yIG9mIGVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXCI+XG4gICAgICB7e2ZpZWxkRXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuPGNjZC1jYWxsYmFjay1lcnJvcnNcbiAgW3RyaWdnZXJUZXh0Q29udGludWVdPVwidHJpZ2dlclRleHRTdGFydFwiXG4gIFt0cmlnZ2VyVGV4dElnbm9yZV09XCJ0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzXCJcbiAgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj5cbjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cbjxjY2QtYWN0aXZpdHkgW2Nhc2VJZF09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCIgW2Rpc3BsYXlNb2RlXT1cIkJBTk5FUlwiPjwvY2NkLWFjdGl2aXR5PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tb25lLWhhbGZcIj5cbiAgICA8Y2NkLWNhc2UtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLWNhc2UtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjYXNlLXZpZXdlci1jb250cm9sc1wiICpuZ0lmPVwiaGFzUHJpbnQgJiYgIWlzRHJhZnQoKSAmJiBpc1ByaW50RW5hYmxlZCgpXCI+XG4gICAgICA8YSBpZD1cImNhc2Utdmlld2VyLWNvbnRyb2wtcHJpbnRcIiByb3V0ZXJMaW5rPVwicHJpbnRcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCI+e3snUHJpbnQnIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaGFzRXZlbnRTZWxlY3RvclwiIGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1ldmVudC10cmlnZ2VyIFtpc0Rpc2FibGVkXT1cImlzVHJpZ2dlckJ1dHRvbkRpc2FibGVkKClcIiBbdHJpZ2dlcnNdPVwiY2FzZURldGFpbHMudHJpZ2dlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdHJpZ2dlclRleHRdPVwidHJpZ2dlclRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZXZlbnRJZF09XCJldmVudElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlckNoYW5nZSk9XCJjbGVhckVycm9yc0FuZFdhcm5pbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25UcmlnZ2VyU3VibWl0KT1cImFwcGx5VHJpZ2dlcigkZXZlbnQpXCI+PC9jY2QtZXZlbnQtdHJpZ2dlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiICpuZ0lmPVwiYWN0aXZlQ2FzZUZsYWdzICYmICFjYXNlRmxhZ3NFeHRlcm5hbFVzZXJcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPGNjZC1ub3RpZmljYXRpb24tYmFubmVyIFtub3RpZmljYXRpb25CYW5uZXJDb25maWddPVwibm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXCIgKGxpbmtDbGlja2VkKT1cIm9uTGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgIDwvY2NkLW5vdGlmaWNhdGlvbi1iYW5uZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1RhYnNQcmVzZW50KClcIj5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBhbmltYXRpb25EdXJhdGlvbj1cIjBtc1wiIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJlcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBzb3J0ZWRUYWJzOyBsZXQgY3VySWR4PWluZGV4XCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInY2FzZSB2aWV3ZXIgdGFibGUnIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCIgW2hpZGRlbl09XCJmaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIiEoZmllbGQgfCBjY2RJc0NvbXBvdW5kKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggaWQ9XCJjYXNlLXZpZXdlci1maWVsZC1sYWJlbFwiICpuZ0lmPVwiIWlzRmllbGRUb0hhdmVOb0xhYmVsKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhc2Utdmlld2VyLWxhYmVsIHRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgW2lkXT1cIidjYXNlLXZpZXdlci1maWVsZC1yZWFkLS0nICsgZmllbGQuaWRcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwiZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY2FzZVJlZmVyZW5jZV09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtdPVwibWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiIGNsYXNzPVwiY29tcG91bmQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggW2lkXT1cIidjYXNlLXZpZXdlci1maWVsZC1yZWFkLS0nICsgZmllbGQuaWRcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwiZm9ybUdyb3VwLmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua109XCJtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgYXBwZW5kZWRUYWJzXCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgICAgPHJvdXRlci1vdXRsZXQgKm5nSWY9XCIocHJlcGVuZGVkVGFicyAmJiBwcmVwZW5kZWRUYWJzLmxlbmd0aCkgfHwgKGFwcGVuZGVkVGFicyAmJiBhcHBlbmRlZFRhYnMubGVuZ3RoKVwiPjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
714
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9jYXNlLWZ1bGwtYWNjZXNzLXZpZXcvY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQzVCLFNBQVMsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxJQUFJLFNBQVMsRUFBNEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6SCxPQUFPLEVBQTBCLGlCQUFpQixJQUFJLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFVLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMs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YWhDLGNBQXdDO1lBRXhDLEFBREEsQUFEQSwwREFBd0Msb0RBQ08sb0RBQ0E7WUFHbkMsY0FBOEI7WUFBQyxBQUEvQixnREFBOEIsMkJBQXVCO1lBRzlDLGVBQTJCO1lBQTNCLDZDQUEyQjtZQUNULGNBQWdEO1lBQWhELDZFQUFnRDtZQUkvRSxjQUFzQjtZQUF0QiwyQ0FBc0I7WUFRUCxjQUErQztZQUEvQyx3RUFBK0M7WUFRbkQsZUFBc0I7WUFBdEIsMkNBQXNCOzs7aUZEZDVCLDJCQUEyQjtjQUx2QyxTQUFTOzJCQUNFLDJCQUEyQjt3ZkFZckIsUUFBUTtrQkFBdkIsS0FBSztZQUNVLGdCQUFnQjtrQkFBL0IsS0FBSztZQUNVLFdBQVc7a0JBQTFCLEtBQUs7WUFDVSxhQUFhO2tCQUE1QixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQTRCMkMsUUFBUTtrQkFBeEQsU0FBUzttQkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztrRkF4QzdCLDJCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2cgYXMgTWF0RGlhbG9nLCBNYXRMZWdhY3lEaWFsb2dDb25maWcgYXMgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBNYXRMZWdhY3lUYWIgYXMgTWF0VGFiLCBNYXRMZWdhY3lUYWJHcm91cCBhcyBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS10YWJzJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBScHhUcmFuc2xhdGVQaXBlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIE5vdGlmaWNhdGlvbkJhbm5lckNvbmZpZyxcbiAgTm90aWZpY2F0aW9uQmFubmVySGVhZGVyQ2xhc3MsXG4gIE5vdGlmaWNhdGlvbkJhbm5lclR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29tcG9uZW50cy9iYW5uZXJzL25vdGlmaWNhdGlvbi1iYW5uZXInO1xuaW1wb3J0IHsgU2hvd0NvbmRpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQWN0aXZpdHksIENhc2VGaWVsZCwgQ2FzZVRhYiwgQ2FzZVZpZXcsIENhc2VWaWV3VHJpZ2dlciwgRFJBRlRfUVVFUllfUEFSQU0sIERpc3BsYXlNb2RlLCBEcmFmdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlVmlld0V2ZW50SWRzIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9jYXNlLXZpZXctZXZlbnQtaWRzLmVudW0nO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHlQb2xsaW5nU2VydmljZSxcbiAgQWxlcnRTZXJ2aWNlLFxuICBEcmFmdFNlcnZpY2UsXG4gIEVycm9yTm90aWZpZXJTZXJ2aWNlLFxuICBGaWVsZHNVdGlscyxcbiAgTG9hZGluZ1NlcnZpY2UsXG4gIE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gIE5hdmlnYXRpb25PcmlnaW4sXG4gIE9yZGVyU2VydmljZSxcbiAgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IENvbnZlcnRIcmVmVG9Sb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY29udmVydC1ocmVmLXRvLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IERlbGV0ZU9yQ2FuY2VsRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZGlhbG9ncyc7XG5pbXBvcnQgeyBDYWxsYmFja0Vycm9yc0NvbnRleHQgfSBmcm9tICcuLi8uLi9lcnJvcic7XG5pbXBvcnQgeyBpbml0RGlhbG9nIH0gZnJvbSAnLi4vLi4vaGVscGVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jYXNlLWZ1bGwtYWNjZXNzLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FzZS1mdWxsLWFjY2Vzcy12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1JJR0lOX1FVRVJZX1BBUkFNID0gJ29yaWdpbic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFJJR0dFUl9URVhUX1NUQVJUID0gJ0dvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUUklHR0VSX1RFWFRfQ09OVElOVUUgPSAnSWdub3JlIFdhcm5pbmcgYW5kIEdvJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVTklDT0RFX1NQQUNFID0gJyUyMCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU1QVFlfU1BBQ0UgPSAnICc7XG4gIHByaXZhdGUgcmVhZG9ubHkgSEVBUklOR1NfVEFCX0xBQkVMID0gJ0hlYXJpbmdzJztcblxuICBASW5wdXQoKSBwdWJsaWMgaGFzUHJpbnQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaGFzRXZlbnRTZWxlY3RvciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcmVwZW5kZWRUYWJzOiBDYXNlVGFiW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGFwcGVuZGVkVGFiczogQ2FzZVRhYltdID0gW107XG5cbiAgcHVibGljIEJBTk5FUiA9IERpc3BsYXlNb2RlLkJBTk5FUjtcbiAgcHVibGljIHNvcnRlZFRhYnM6IENhc2VUYWJbXTtcbiAgcHVibGljIGNhc2VGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBlcnJvcjogYW55O1xuICBwdWJsaWMgdHJpZ2dlclRleHRTdGFydCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gIHB1YmxpYyB0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzID0gQ2FzZUZ1bGxBY2Nlc3NWaWV3Q29tcG9uZW50LlRSSUdHRVJfVEVYVF9DT05USU5VRTtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmcgPSBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuVFJJR0dFUl9URVhUX1NUQVJUO1xuICBwdWJsaWMgaWdub3JlV2FybmluZyA9IGZhbHNlO1xuICBwdWJsaWMgYWN0aXZpdHlTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNhc2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGVycm9yU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyBkaWFsb2dDb25maWc6IE1hdERpYWxvZ0NvbmZpZztcbiAgcHVibGljIG1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGluazogYm9vbGVhbjtcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZztcbiAgcHVibGljIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgbm90aWZpY2F0aW9uQmFubmVyQ29uZmlnOiBOb3RpZmljYXRpb25CYW5uZXJDb25maWc7XG4gIHB1YmxpYyBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgcHVibGljIGFjdGl2ZUNhc2VGbGFncyA9IGZhbHNlO1xuICBwdWJsaWMgY2FzZUZsYWdzRXh0ZXJuYWxVc2VyID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZsYWdzUmVhZEV4dGVybmFsTW9kZSA9ICcjQVJHVU1FTlQoUkVBRCxFWFRFUk5BTCknO1xuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBldmVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBpc0V2ZW50QnV0dG9uQ2xpY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc1N1YmplY3Q6ICAgT2JzZXJ2YWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwdWJsaWMgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2U6IE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2aXR5UG9sbGluZ1NlcnZpY2U6IEFjdGl2aXR5UG9sbGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZnRTZXJ2aWNlOiBEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck5vdGlmaWVyU2VydmljZTogRXJyb3JOb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZTogQ29udmVydEhyZWZUb1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgcHJpdmF0ZSByZWFkb25seSBjcmY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblBpcGU6IFJweFRyYW5zbGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxsYmFja0Vycm9yc1N1YmplY3QgPSB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmVycm9yU291cmNlLnBpcGUoZmlsdGVyKCh4KSA9PiB7XG4gICAgICBpZih4ICYmIHguc3RhdHVzICE9PSA0MDEgJiYgeC5zdGF0dXMgIT09IDQwMykge1xuICAgICAgICB0aGlzLmVycm9yID0geDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkpO1xuICAgIFxuICAgIGluaXREaWFsb2coKTtcbiAgICB0aGlzLmluaXQoKTtcbiAgICB0aGlzLm1hcmtkb3duVXNlSHJlZkFzUm91dGVyTGluayA9IHRydWU7XG5cbiAgICB0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZT8ucmVtb3ZlSXRlbSgnZXZlbnRVcmwnKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZT8uZ2V0SHJlZk1hcmtkb3duTGlua0NvbnRlbnQoKS5zdWJzY3JpYmUoKGhyZWZNYXJrZG93bkxpbmtDb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIGRvIG5vdCBjb252ZXJ0IHJvdXRlciB3aXRoIGluaXRpYWwgZGVmYXVsdCB2YWx1ZTsgY29udmVydCB0byByb3V0ZXIgb25seSBvbiB1cGRhdGVkIGxpbmsgY29udGVudFxuICAgICAgaWYgKGhyZWZNYXJrZG93bkxpbmtDb250ZW50ICE9PSAnRGVmYXVsdCcpIHtcbiAgICAgICAgdGhpcy5jb252ZXJ0SHJlZlRvUm91dGVyU2VydmljZS5jYWxsQW5ndWxhclJvdXRlcihocmVmTWFya2Rvd25MaW5rQ29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLmlzRW5hYmxlZCAmJiAhdGhpcy5hY3Rpdml0eVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uID0gdGhpcy5wb3N0Vmlld0FjdGl2aXR5KCkuc3Vic2NyaWJlKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrUm91dGVBbmRTZXRDYXNlVmlld1RhYigpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIGFjdGl2ZSBDYXNlIEZsYWdzXG4gICAgdGhpcy5hY3RpdmVDYXNlRmxhZ3MgPSB0aGlzLmhhc0FjdGl2ZUNhc2VGbGFncygpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzLnByZXBlbmRlZFRhYnMgJiYgIWNoYW5nZXMucHJlcGVuZGVkVGFicy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5pbml0KCk7XG4gICAgICB0aGlzLmNyZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLm9yZ2FuaXNlVGFiUG9zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNQcmludEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLnByaW50RW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLmlzRW5hYmxlZCkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmFjdGl2aXR5U3Vic2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZSkge1xuICAgICAgdGhpcy51bnN1YnNjcmliZSh0aGlzLmNhc2VTdWJzY3JpcHRpb24pO1xuICAgIH1cbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuY2FsbGJhY2tFcnJvcnNTdWJqZWN0KTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlKHRoaXMuZXJyb3JTdWJzY3JpcHRpb24pO1xuICAgIHRoaXMudW5zdWJzY3JpYmUodGhpcy5zdWJzY3JpcHRpb24pO1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyB1bnN1YnNjcmliZShzdWJzY3JpcHRpb246IGFueSkge1xuICAgIGlmIChzdWJzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tSb3V0ZUFuZFNldENhc2VWaWV3VGFiKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IGV2ZW50ICYmIChldmVudCBhcyBhbnkpLnVybDtcbiAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgIGNvbnN0IHRhYlVybCA9IHVybCA/IHVybC5zcGxpdCgnIycpIDogbnVsbDtcbiAgICAgICAgICBjb25zdCB0YWIgPSB0YWJVcmwgJiYgdGFiVXJsLmxlbmd0aCA+IDEgPyB0YWJVcmxbdGFiVXJsLmxlbmd0aCAtIDFdLnJlcGxhY2VBbGwoJyUyMCcsICcgJykgOiAnJztcbiAgICAgICAgICBjb25zdCBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsLnRvTG93ZXJDYXNlKCkgPT09IHRhYi50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAvLyBVcGRhdGUgc2VsZWN0ZWRJbmRleCBvbmx5IGlmIG1hdFRhYi5wb3NpdGlvbiBpcyBhIG5vbi16ZXJvIG51bWJlciAocG9zaXRpdmUgb3IgbmVnYXRpdmUpOyB0aGlzIG1lYW5zIHRoZVxuICAgICAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgICAgIGlmIChtYXRUYWI/LnBvc2l0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBtYXRUYWIucG9zaXRpb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgcG9zdFZpZXdBY3Rpdml0eSgpOiBPYnNlcnZhYmxlPEFjdGl2aXR5W10+IHtcbiAgICByZXR1cm4gdGhpcy5hY3Rpdml0eVBvbGxpbmdTZXJ2aWNlLnBvc3RWaWV3QWN0aXZpdHkodGhpcy5jYXNlRGV0YWlscz8uY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJFcnJvcnNBbmRXYXJuaW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RXJyb3JzKCk7XG4gICAgdGhpcy5pZ25vcmVXYXJuaW5nID0gZmFsc2U7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1RBUlQ7XG4gICAgdGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFwcGx5VHJpZ2dlcih0cmlnZ2VyOiBDYXNlVmlld1RyaWdnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0V2ZW50QnV0dG9uQ2xpY2tlZCl7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNFdmVudEJ1dHRvbkNsaWNrZWQgPSB0cnVlO1xuICAgIGNvbnN0IHNwaW5uZXIgPSB0aGlzLmxvYWRpbmdTZXJ2aWNlLnJlZ2lzdGVyKCk7XG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5hZGRTaGFyZWRTcGlubmVyKHNwaW5uZXIpO1xuICAgIHRoaXMuZXJyb3JOb3RpZmllclNlcnZpY2UuYW5ub3VuY2VFcnJvcihudWxsKTtcbiAgICBjb25zdCB0aGVRdWVyeVBhcmFtczogUGFyYW1zID0ge307XG5cbiAgICBpZiAodGhpcy5pZ25vcmVXYXJuaW5nKSB7XG4gICAgICB0aGVRdWVyeVBhcmFtc1snaWdub3JlV2FybmluZyddID0gdGhpcy5pZ25vcmVXYXJuaW5nO1xuICAgIH1cblxuICAgIC8vIHdlIG1heSBuZWVkIHRvIHRha2UgY2FyZSBvZiBkaWZmZXJlbnQgdHJpZ2dlcnMgaW4gdGhlIGZ1dHVyZVxuICAgIGlmICh0cmlnZ2VyLmlkID09PSBDYXNlVmlld0V2ZW50SWRzLlF1ZXJ5TWFuYWdlbWVudFJhaXNlUXVlcnkpIHtcbiAgICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlKFtgL3F1ZXJ5LW1hbmFnZW1lbnQvcXVlcnkvJHt0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWR9YF0pO1xuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS51bnJlZ2lzdGVyKHNwaW5uZXIpO1xuICAgIH0gZWxzZSBpZiAodHJpZ2dlci5pZCA9PT0gQ2FzZVZpZXdFdmVudElkcy5ERUxFVEUpIHtcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlT3JDYW5jZWxEaWFsb2dDb21wb25lbnQsIHRoaXMuZGlhbG9nQ29uZmlnKTtcbiAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgIHRoaXMuZHJhZnRTZXJ2aWNlLmRlbGV0ZURyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oeyBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRFJBRlRfREVMRVRFRCB9KTtcbiAgICAgICAgICAgIH0sIF8gPT4ge1xuICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKHsgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkVSUk9SX0RFTEVUSU5HX0RSQUZUIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5pc0RyYWZ0KCkgJiYgdHJpZ2dlci5pZCAhPT0gQ2FzZVZpZXdFdmVudElkcy5ERUxFVEUpIHtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zW0RSQUZUX1FVRVJZX1BBUkFNXSA9IHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZDtcbiAgICAgIHRoZVF1ZXJ5UGFyYW1zW0Nhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5PUklHSU5fUVVFUllfUEFSQU1dID0gJ3ZpZXdEcmFmdCc7XG4gICAgICB0aGlzLm5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UuYW5ub3VuY2VOYXZpZ2F0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgYWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLkRSQUZUX1JFU1VNRUQsXG4gICAgICAgICAgamlkOiB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQsXG4gICAgICAgICAgY3RpZDogdGhpcy5jYXNlRGV0YWlscy5jYXNlX3R5cGUuaWQsXG4gICAgICAgICAgZXRpZDogdHJpZ2dlci5pZCxcbiAgICAgICAgICBxdWVyeVBhcmFtczogdGhlUXVlcnlQYXJhbXNcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oXG4gICAgICAgIHtcbiAgICAgICAgICBhY3Rpb246IE5hdmlnYXRpb25PcmlnaW4uRVZFTlRfVFJJR0dFUkVELFxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGVRdWVyeVBhcmFtcyxcbiAgICAgICAgICBldGlkOiB0cmlnZ2VyLmlkLFxuICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGVcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1RhYnNQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNvcnRlZFRhYnMubGVuZ3RoID4gMCB8fCB0aGlzLnByZXBlbmRlZFRhYnMubGVuZ3RoID4gMCB8fCB0aGlzLmFwcGVuZGVkVGFicy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzTm90aWZ5KGNhbGxiYWNrRXJyb3JzQ29udGV4dDogQ2FsbGJhY2tFcnJvcnNDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5pZ25vcmVXYXJuaW5nID0gY2FsbGJhY2tFcnJvcnNDb250ZXh0Lmlnbm9yZVdhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGNhbGxiYWNrRXJyb3JzQ29udGV4dC50cmlnZ2VyVGV4dDtcbiAgICB0aGlzLmV2ZW50SWQgPSBjYWxsYmFja0Vycm9yc0NvbnRleHQuZXZlbnRJZDtcbiAgfVxuXG4gIHB1YmxpYyBpc0RyYWZ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBEcmFmdC5pc0RyYWZ0KHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCk7XG4gIH1cblxuICBwdWJsaWMgaXNUcmlnZ2VyQnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmVycm9yXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzXG4gICAgICAmJiB0aGlzLmVycm9yLmNhbGxiYWNrRXJyb3JzLmxlbmd0aClcbiAgICAgIHx8ICh0aGlzLmVycm9yXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlsc1xuICAgICAgICAmJiB0aGlzLmVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXG4gICAgICAgICYmIHRoaXMuZXJyb3IuZGV0YWlscy5maWVsZF9lcnJvcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyBvcmdhbmlzZVRhYlBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGxldCBtYXRUYWI6IE1hdFRhYjtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgodHJ1ZSk7XG4gICAgbGV0IGhhc2hWYWx1ZSA9IHVybC5zdWJzdHJpbmcodXJsLmluZGV4T2YoJyMnKSArIDEpO1xuICAgIGlmICghdXJsLmluY2x1ZGVzKCcjJykgJiYgIXVybC5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpICYmICF1cmwuaW5jbHVkZXMoJ3Rhc2tzJykgJiYgIXVybC5pbmNsdWRlcygnaGVhcmluZ3MnKSkge1xuICAgICAgY29uc3QgcGF0aHMgPSB1cmwuc3BsaXQoJy8nKTtcbiAgICAgIC8vIGxhc3RQYXRoIGNhbiBiZSAvY2FzZUlkLCBvciB0aGUgdGFicyAvdGFza3MsIC9oZWFyaW5ncyBldGMuXG4gICAgICBjb25zdCBsYXN0UGF0aCA9IGRlY29kZVVSSUNvbXBvbmVudChwYXRoc1twYXRocy5sZW5ndGggLSAxXSk7XG4gICAgICBsZXQgZm91bmRUYWI6IENhc2VUYWIgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLnByZXBlbmRlZFRhYnMpIHtcbiAgICAgICAgdGhpcy5wcmVwZW5kZWRUYWJzID0gW107XG4gICAgICB9XG4gICAgICBjb25zdCBhZGRpdGlvbmFsVGFicyA9IFsuLi50aGlzLnByZXBlbmRlZFRhYnMsIC4uLnRoaXMuYXBwZW5kZWRUYWJzXTtcbiAgICAgIGlmIChhZGRpdGlvbmFsVGFicyAmJiBhZGRpdGlvbmFsVGFicy5sZW5ndGgpIHtcbiAgICAgICAgZm91bmRUYWIgPSBhZGRpdGlvbmFsVGFicy5maW5kKChjYXNlVGFiOiBDYXNlVGFiKSA9PiBjYXNlVGFiLmlkLnRvTG93ZXJDYXNlKCkgPT09IGxhc3RQYXRoLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgICAgLy8gZm91bmQgdGFza3Mgb3IgaGVhcmluZyB0YWJcbiAgICAgIGlmIChmb3VuZFRhYikge1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZCwgZm91bmRUYWIuaWRdKS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBmb3VuZFRhYi5sYWJlbCk7XG4gICAgICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICAvLyBtYXRUYWIgaXMgbm90IGFscmVhZHkgc2VsZWN0ZWQgKHBvc2l0aW9uIGlzIHJlbGF0aXZlOyBwb3NpdGl2ZSA9IHJpZ2h0LCBuZWdhdGl2ZSA9IGxlZnQpIG9yIGl0IHdvdWxkIGJlIDBcbiAgICAgICAgICBpZiAobWF0VGFiPy5wb3NpdGlvbikge1xuICAgICAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGxhc3QgcGF0aCBpcyBjYXNlSWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHNvcnQgd2l0aCB0aGUgb3JkZXIgb2YgQ0NEIHByZWRlZmluZWQgdGFic1xuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLnRhYnMuc29ydCgoYVRhYiwgYlRhYikgPT4gYVRhYi5vcmRlciA+IGJUYWIub3JkZXIgPyAxIDogKGJUYWIub3JkZXIgPiBhVGFiLm9yZGVyID8gLTEgOiAwKSk7XG4gICAgICAgIC8vIHNlbGVjdCB0aGUgZmlyc3QgdGFiIGNoZWNraW5nIGlmIHRoZSB0YWIgaXMgdmlzaWJsZVxuICAgICAgICBjb25zdCBwcmVTZWxlY3RUYWI6IENhc2VUYWIgPSB0aGlzLmZpbmRQcmVTZWxlY3RlZEFjdGl2ZVRhYigpO1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ2Nhc2VzJywgJ2Nhc2UtZGV0YWlscycsIHRoaXMuY2FzZURldGFpbHMuY2FzZV9pZF0sIHsgZnJhZ21lbnQ6IHByZVNlbGVjdFRhYi5sYWJlbCB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQoKHgpID0+IHgudGV4dExhYmVsID09PSBwcmVTZWxlY3RUYWIubGFiZWwpO1xuICAgICAgICAgIC8vIFVwZGF0ZSBzZWxlY3RlZEluZGV4IG9ubHkgaWYgbWF0VGFiLnBvc2l0aW9uIGlzIGEgbm9uLXplcm8gbnVtYmVyIChwb3NpdGl2ZSBvciBuZWdhdGl2ZSk7IHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAgLy8gbWF0VGFiIGlzIG5vdCBhbHJlYWR5IHNlbGVjdGVkIChwb3NpdGlvbiBpcyByZWxhdGl2ZTsgcG9zaXRpdmUgPSByaWdodCwgbmVnYXRpdmUgPSBsZWZ0KSBvciBpdCB3b3VsZCBiZSAwXG4gICAgICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG1hdFRhYi5wb3NpdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWdFeHAgPSBuZXcgUmVnRXhwKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5VTklDT0RFX1NQQUNFLCAnZycpO1xuICAgICAgaGFzaFZhbHVlID0gaGFzaFZhbHVlLnJlcGxhY2UocmVnRXhwLCBDYXNlRnVsbEFjY2Vzc1ZpZXdDb21wb25lbnQuRU1QVFlfU1BBQ0UpO1xuICAgICAgaWYgKGhhc2hWYWx1ZS5pbmNsdWRlcygnaGVhcmluZ3MnKSkge1xuICAgICAgICBoYXNoVmFsdWUgPSAnaGVhcmluZ3MnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGhhc2hWYWx1ZS5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpIHx8IGhhc2hWYWx1ZS5pbmNsdWRlcygndGFza3MnKSkge1xuICAgICAgICAgIGhhc2hWYWx1ZSA9IGhhc2hWYWx1ZS5pbmNsdWRlcygncm9sZXMtYW5kLWFjY2VzcycpID8gJ3JvbGVzIGFuZCBhY2Nlc3MnIDogJ3Rhc2tzJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWF0VGFiID0gdGhpcy50YWJHcm91cC5fdGFicy5maW5kKCh4KSA9PlxuICAgICAgICB4LnRleHRMYWJlbC5yZXBsYWNlKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSwgJycpLnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgIGhhc2hWYWx1ZS5yZXBsYWNlKENhc2VGdWxsQWNjZXNzVmlld0NvbXBvbmVudC5FTVBUWV9TUEFDRSwgJycpLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgLy8gVXBkYXRlIHNlbGVjdGVkSW5kZXggb25seSBpZiBtYXRUYWIucG9zaXRpb24gaXMgYSBub24temVybyBudW1iZXIgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKTsgdGhpcyBtZWFucyB0aGVcbiAgICAgIC8vIG1hdFRhYiBpcyBub3QgYWxyZWFkeSBzZWxlY3RlZCAocG9zaXRpb24gaXMgcmVsYXRpdmU7IHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdCkgb3IgaXQgd291bGQgYmUgMFxuICAgICAgaWYgKG1hdFRhYj8ucG9zaXRpb24pIHtcbiAgICAgICAgdGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gbWF0VGFiLnBvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaW5kUHJlU2VsZWN0ZWRBY3RpdmVUYWIoKTogQ2FzZVRhYiB7XG4gICAgY29uc3QgdW5PcmRlcmVkVGFic0luU29ydGVkVGFicyA9IHRoaXMuY2FzZURldGFpbHMudGFic1xuICAgICAgLmZpbHRlcigodGFiKSA9PiAhdGFiLm9yZGVyICYmIHRoaXMuc29ydGVkVGFicy5zb21lKChzb3J0ZWRUYWIpID0+IHNvcnRlZFRhYi5pZCA9PT0gdGFiLmlkKSk7XG4gICAgcmV0dXJuIHVuT3JkZXJlZFRhYnNJblNvcnRlZFRhYnMubGVuZ3RoID8gdW5PcmRlcmVkVGFic0luU29ydGVkVGFic1swXSA6IHRoaXMuc29ydGVkVGFic1swXTtcbiAgfVxuXG4gIC8vIFJlZmFjdG9yZWQgdW5kZXIgRVhVSS0xMTAgdG8gYWRkcmVzcyBpbmZpbml0ZSB0YWIgbG9vcCB0byB1c2UgdGFiSW5kZXhDaGFuZ2VkIGluc3RlYWRcbiAgcHVibGljIHRhYkNoYW5nZWQodGFiSW5kZXhDaGFuZ2VkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRUYWIgPSB0aGlzLnRhYkdyb3VwLl90YWJzLmZpbmQodGFiID0+IHRhYi5pc0FjdGl2ZSk7XG4gICAgY29uc3QgdGFiTGFiZWwgPSBtYXRUYWIudGV4dExhYmVsO1xuICAgIC8vIHNvcnRlZFRhYnMgYXJlIGZyYWdtZW50c1xuICAgIC8vIGFwcGVuZGVkL3ByZXBlcGVuZGVkIHRhYnMgdXNlIHJvdXRlciBuYXZpZ2F0aW9uXG4gICAgaWYgKCh0YWJJbmRleENoYW5nZWQgPD0gMSAmJiB0aGlzLnByZXBlbmRlZFRhYnMgJiYgdGhpcy5wcmVwZW5kZWRUYWJzLmxlbmd0aCkgfHxcbiAgICAgICh0aGlzLmFwcGVuZGVkVGFicz8ubGVuZ3RoICYmICh0YWJMYWJlbCA9PT0gdGhpcy5IRUFSSU5HU19UQUJfTEFCRUxcbiAgICAgICAgfHwgdGFiTGFiZWwgPT09IHRoaXMucnB4VHJhbnNsYXRpb25QaXBlLnRyYW5zZm9ybSh0aGlzLkhFQVJJTkdTX1RBQl9MQUJFTCkpKSkge1xuICAgICAgLy8gSGFjayB0byBnZXQgSUQgZnJvbSB0YWIgYXMgaXQncyBub3QgZWFzaWx5IGFjaGlldmVkIHRocm91Z2ggQW5ndWxhciBNYXRlcmlhbCBUYWJzXG4gICAgICBjb25zdCB0YWIgPSBtYXRUYWJbJ192aWV3Q29udGFpbmVyUmVmJ10gYXMgVmlld0NvbnRhaW5lclJlZjtcbiAgICAgIGNvbnN0IGlkID0gKHRhYi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmlkO1xuICAgICAgLy8gY2FzZXMvY2FzZS1kZXRhaWxzLzpjYXNlSWQvaGVhcmluZ3NcbiAgICAgIC8vIGNhc2VzL2Nhc2UtZGV0YWlscy86Y2FzZUlkL3JvbGVzLWFuZC1hY2Nlc3NcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpZF0sIHsgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUm91dGluZyBoZXJlIGlzIGJhc2VkIG9uIHRhYiBsYWJlbCwgbm90IGlkZWFsXG4gICAgICAvLyBjYXNlcy9jYXNlLWRldGFpbHMvOmNhc2VJZCN0YWJMYWJlbFxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjYXNlcycsICdjYXNlLWRldGFpbHMnLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWRdLCB7IGZyYWdtZW50OiB0YWJMYWJlbCB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25MaW5rQ2xpY2tlZCh0cmlnZ2VyT3V0cHV0RXZlbnRUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBHZXQgdGhlICphYnNvbHV0ZSogKG5vdCByZWxhdGl2ZSkgaW5kZXggb2YgdGhlIHRhcmdldCB0YWIgYW5kIHNldCBhcyB0aGUgYWN0aXZlIHRhYiwgdXNpbmcgdGhlIHNlbGVjdGVkSW5kZXggaW5wdXRcbiAgICAvLyBvZiBtYXQtdGFiLWdyb3VwIChib3VuZCB0byBzZWxlY3RlZFRhYkluZGV4KVxuICAgIGNvbnN0IHRhcmdldFRhYkluZGV4ID0gdGhpcy50YWJHcm91cC5fdGFicy50b0FycmF5KCkuZmluZEluZGV4KHRhYiA9PiB0YWIudGV4dExhYmVsID09PSB0cmlnZ2VyT3V0cHV0RXZlbnRUZXh0KTtcbiAgICBpZiAodGFyZ2V0VGFiSW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gdGFyZ2V0VGFiSW5kZXg7XG4gICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSB0YXJnZXRUYWJJbmRleDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFzQWN0aXZlQ2FzZUZsYWdzKCk6IGJvb2xlYW4ge1xuICAgIC8vIERldGVybWluZSB3aGljaCB0YWIgY29udGFpbnMgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgdHlwZSwgZnJvbSB0aGUgQ2FzZVZpZXcgb2JqZWN0IGluIHRoZSBzbmFwc2hvdCBkYXRhXG4gICAgY29uc3QgY2FzZUZsYWdzVGFiID0gdGhpcy5jYXNlRGV0YWlscz8udGFic1xuICAgICAgPyAodGhpcy5jYXNlRGV0YWlscy50YWJzKS5maWx0ZXIoXG4gICAgICAgIHRhYiA9PiB0YWIuZmllbGRzICYmIHRhYi5maWVsZHMuc29tZShjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSkpWzBdXG4gICAgICA6IG51bGw7XG5cbiAgICBpZiAoY2FzZUZsYWdzVGFiKSB7XG4gICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBGbGFnTGF1bmNoZXIgQ2FzZUZpZWxkIGlzIGluIGV4dGVybmFsIG1vZGUgb3Igbm90OyB0aGUgbm90aWZpY2F0aW9uIGJhbm5lciBzaG91bGQgbm90IGJlXG4gICAgICAvLyBkaXNwbGF5ZWQgZm9yIGV4dGVybmFsIHVzZXJzXG4gICAgICB0aGlzLmNhc2VGbGFnc0V4dGVybmFsVXNlciA9IGNhc2VGbGFnc1RhYi5maWVsZHMuZmluZChcbiAgICAgICAgY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzRmxhZ0xhdW5jaGVyQ2FzZUZpZWxkKGNhc2VGaWVsZCkpLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09IHRoaXMuY2FzZUZsYWdzUmVhZEV4dGVybmFsTW9kZTtcblxuICAgICAgLy8gR2V0IHRoZSBhY3RpdmUgY2FzZSBmbGFncyBjb3VudFxuICAgICAgLy8gQ2Fubm90IGZpbHRlciBvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiB0byByZW1vdmUgdGhlIEZsYWdMYXVuY2hlciBDYXNlRmllbGQgYmVjYXVzZSBGbGFncyBmaWVsZHMgbWF5IGJlXG4gICAgICAvLyBjb250YWluZWQgaW4gb3RoZXIgQ2FzZUZpZWxkIGluc3RhbmNlcywgZWl0aGVyIGFzIGEgc3ViLWZpZWxkIG9mIGEgQ29tcGxleCBmaWVsZCwgb3IgZmllbGRzIGluIGEgY29sbGVjdGlvblxuICAgICAgLy8gKG9yIHN1Yi1maWVsZHMgb2YgQ29tcGxleCBmaWVsZHMgaW4gYSBjb2xsZWN0aW9uKVxuICAgICAgY29uc3QgYWN0aXZlQ2FzZUZsYWdzID0gY2FzZUZsYWdzVGFiLmZpZWxkc1xuICAgICAgICAuZmlsdGVyKGNhc2VGaWVsZCA9PiAhRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJiBjYXNlRmllbGQudmFsdWUpXG4gICAgICAgIC5yZWR1Y2UoKGFjdGl2ZSwgY2FzZUZsYWcpID0+IHtcbiAgICAgICAgICByZXR1cm4gRmllbGRzVXRpbHMuY291bnRBY3RpdmVGbGFnc0luQ2FzZUZpZWxkKGFjdGl2ZSwgY2FzZUZsYWcpO1xuICAgICAgICB9LCAwKTtcblxuICAgICAgaWYgKGFjdGl2ZUNhc2VGbGFncyA+IDApIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBhY3RpdmVDYXNlRmxhZ3MgPiAxXG4gICAgICAgICAgPyBgVGhlcmUgYXJlICR7YWN0aXZlQ2FzZUZsYWdzfSBhY3RpdmUgZmxhZ3Mgb24gdGhpcyBjYXNlLmAgOiAnVGhlcmUgaXMgMSBhY3RpdmUgZmxhZyBvbiB0aGlzIGNhc2UuJztcbiAgICAgICAgLy8gSW5pdGlhbGlzZSBhbmQgZGlzcGxheSBub3RpZmljYXRpb24gYmFubmVyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQmFubmVyQ29uZmlnID0ge1xuICAgICAgICAgIGJhbm5lclR5cGU6IE5vdGlmaWNhdGlvbkJhbm5lclR5cGUuSU5GT1JNQVRJT04sXG4gICAgICAgICAgaGVhZGluZ1RleHQ6ICdJbXBvcnRhbnQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgIHNob3dMaW5rOiB0cnVlLFxuICAgICAgICAgIGxpbmtUZXh0OiAnVmlldyBjYXNlIGZsYWdzJyxcbiAgICAgICAgICB0cmlnZ2VyT3V0cHV0RXZlbnQ6IHRydWUsXG4gICAgICAgICAgdHJpZ2dlck91dHB1dEV2ZW50VGV4dDogY2FzZUZsYWdzVGFiLmxhYmVsLFxuICAgICAgICAgIGhlYWRlckNsYXNzOiBOb3RpZmljYXRpb25CYW5uZXJIZWFkZXJDbGFzcy5JTkZPUk1BVElPTlxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBhIENhc2VGaWVsZCBpcyB0byBiZSBkaXNwbGF5ZWQgd2l0aG91dCBhIGxhYmVsLCBhcyBpcyBleHBlY3RlZCBmb3IgYWxsIENvbXBvbmVudExhdW5jaGVyLXR5cGVcbiAgICogZmllbGRzLlxuICAgKiBAcGFyYW0gY2FzZUZpZWxkIFRoZSBgQ2FzZUZpZWxkYCBpbnN0YW5jZSB0byBjaGVja1xuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgc2hvdWxkIG5vdCBoYXZlIGEgbGFiZWw7IGBmYWxzZWAgb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgaXNGaWVsZFRvSGF2ZU5vTGFiZWwoY2FzZUZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ0NvbXBvbmVudExhdW5jaGVyJ1xuICAgICAgJiYgY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ2FzZUZpbGVWaWV3KSc7XG4gIH1cblxuICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgLy8gQ2xvbmUgYW5kIHNvcnQgdGFicyBhcnJheVxuICAgIHRoaXMuc29ydGVkVGFicyA9IHRoaXMub3JkZXJTZXJ2aWNlLnNvcnQodGhpcy5jYXNlRGV0YWlscz8udGFicyk7XG4gICAgdGhpcy5jYXNlRmllbGRzID0gdGhpcy5nZXRUYWJGaWVsZHMoKTtcbiAgICB0aGlzLnNvcnRlZFRhYnMgPSB0aGlzLnNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRoaXMuc29ydGVkVGFicyk7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmJ1aWxkRm9ybUdyb3VwKHRoaXMuY2FzZUZpZWxkcyk7XG4gICAgaWYgKHRoaXMuY2FzZURldGFpbHM/LnRyaWdnZXJzICYmIHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMucmVzZXRFcnJvcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNvcnRUYWJGaWVsZHNBbmRGaWx0ZXJUYWJzKHRhYnM6IENhc2VUYWJbXSk6IENhc2VUYWJbXSB7XG4gICAgcmV0dXJuIHRhYnM/Lm1hcCh0YWIgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGFiLCB7IGZpZWxkczogdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0YWIuZmllbGRzKSB9KSlcbiAgICAgIC5maWx0ZXIodGFiID0+IFNob3dDb25kaXRpb24uZ2V0SW5zdGFuY2UodGFiLnNob3dfY29uZGl0aW9uKS5tYXRjaEJ5Q29udGV4dEZpZWxkcyh0aGlzLmNhc2VGaWVsZHMpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFiRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBjb25zdCBjYXNlRGF0YUZpZWxkcyA9IHRoaXMuc29ydGVkVGFicz8ucmVkdWNlKChhY2MsIHRhYikgPT4ge1xuICAgICAgcmV0dXJuIGFjYy5jb25jYXQocGxhaW5Ub0NsYXNzKENhc2VGaWVsZCwgdGFiLmZpZWxkcykpO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBjYXNlRGF0YUZpZWxkcz8uY29uY2F0KHRoaXMuY2FzZURldGFpbHMubWV0YWRhdGFGaWVsZHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBFVUktMzgyNTpcbiAgICogQnVpbGRzIGEgRm9ybUdyb3VwIGZyb20gYWxsIHRoZSBDYXNlRmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHZpZXcuXG4gICAqIFRoaXMgRm9ybUdyb3VwIGlzIG5lY2Vzc2FyeSBmb3IgZXZhbHVhdGlvbiB0aGUgc2hvdy9oaWRlIGNvbmRpdGlvbnMgb2ZcbiAgICogZmllbGRzIHRoYXQgYXJlIGRlcGVuZGVudCBvbiBhIGZpZWxkIG9ubHkgYXZhaWxhYmxlIG9uIGEgRElGRkVSRU5UIHRhYi5cbiAgICovXG4gIHByaXZhdGUgYnVpbGRGb3JtR3JvdXAoY2FzZUZpZWxkczogQ2FzZUZpZWxkW10pOiBGb3JtR3JvdXAge1xuICAgIGxldCB2YWx1ZTogb2JqZWN0ID0ge307XG4gICAgaWYgKGNhc2VGaWVsZHMpIHtcbiAgICAgIGNhc2VGaWVsZHMuZm9yRWFjaChjYXNlRmllbGQgPT4ge1xuICAgICAgICB2YWx1ZSA9IHtcbiAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICBbY2FzZUZpZWxkLmlkXTogY2FzZUZpZWxkLnZhbHVlXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBGb3JtR3JvdXAoeyBkYXRhOiBuZXcgRm9ybUNvbnRyb2wodmFsdWUpIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVycm9ycygpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlRXJyb3IobnVsbCk7XG4gICAgdGhpcy5hbGVydFNlcnZpY2UuY2xlYXIoKTtcbiAgfVxufVxuIiwiPCEtLSBHZW5lcmljIGVycm9yIGhlYWRpbmcgYW5kIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkIG9ubHkgaWYgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNhbGxiYWNrIGVycm9ycyBvciB3YXJuaW5ncywgb3Igbm8gZXJyb3IgZGV0YWlscyAtLT5cbjxkaXYgKm5nSWY9XCJlcnJvciAmJiAhKGVycm9yLmNhbGxiYWNrRXJyb3JzIHx8IGVycm9yLmNhbGxiYWNrV2FybmluZ3MgfHwgZXJyb3IuZGV0YWlscylcIiBjbGFzcz1cImVycm9yLXN1bW1hcnlcIlxuICAgICByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnk9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgdGFiaW5kZXg9XCItMVwiPlxuICA8aDEgY2xhc3M9XCJoZWFkaW5nLWgxIGVycm9yLXN1bW1hcnktaGVhZGluZ1wiIGlkPVwiZWRpdC1jYXNlLWV2ZW50X2Vycm9yLXN1bW1hcnktaGVhZGluZ1wiPlxuICAgIHt7J1NvbWV0aGluZyB3ZW50IHdyb25nJyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvaDE+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5X19ib2R5XCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1ib2R5XCI+XG4gICAgPHA+e3tcIldlJ3JlIHdvcmtpbmcgdG8gZml4IHRoZSBwcm9ibGVtLiBUcnkgYWdhaW4gc2hvcnRseS5cIiB8IHJweFRyYW5zbGF0ZX19PC9wPlxuICAgIDxwPlxuICAgICAgPGEgaHJlZj1cImdldC1oZWxwXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgIHt7XCJDb250YWN0IHVzXCIgfCBycHhUcmFuc2xhdGV9fTwvYT4ge3tcImlmIHlvdSdyZSBzdGlsbCBoYXZpbmcgcHJvYmxlbXMuXCIgfCBycHhUcmFuc2xhdGV9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gQ2FsbGJhY2sgZXJyb3IgaGVhZGluZyBhbmQgZXJyb3IgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGVycm9yIGRldGFpbHMgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3IgJiYgZXJyb3IuZGV0YWlsc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeVwiIHJvbGU9XCJncm91cFwiXG4gICAgIGFyaWEtbGFiZWxsZWRieT1cImVkaXQtY2FzZS1ldmVudF9lcnJvci1zdW1tYXJ5LWhlYWRpbmdcIiB0YWJpbmRleD1cIi0xXCI+XG4gIDxoMiBjbGFzcz1cImhlYWRpbmctaDIgZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCIgaWQ9XCJlZGl0LWNhc2UtZXZlbnRfZXJyb3Itc3VtbWFyeS1oZWFkaW5nXCI+XG4gICAge3snVGhlIGNhbGxiYWNrIGRhdGEgZmFpbGVkIHZhbGlkYXRpb24nIHwgcnB4VHJhbnNsYXRlfX1cbiAgPC9oMj5cbiAgPHA+e3tlcnJvci5tZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX08L3A+XG4gIDx1bCAqbmdJZj1cImVycm9yLmRldGFpbHM/LmZpZWxkX2Vycm9yc1wiIGNsYXNzPVwiZXJyb3Itc3VtbWFyeS1saXN0XCI+XG4gICAgPGxpICpuZ0Zvcj1cImxldCBmaWVsZEVycm9yIG9mIGVycm9yLmRldGFpbHMuZmllbGRfZXJyb3JzXCI+XG4gICAgICB7e2ZpZWxkRXJyb3IubWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuPGNjZC1jYWxsYmFjay1lcnJvcnNcbiAgW3RyaWdnZXJUZXh0Q29udGludWVdPVwidHJpZ2dlclRleHRTdGFydFwiXG4gIFt0cmlnZ2VyVGV4dElnbm9yZV09XCJ0cmlnZ2VyVGV4dElnbm9yZVdhcm5pbmdzXCJcbiAgW2NhbGxiYWNrRXJyb3JzU3ViamVjdF09XCJjYWxsYmFja0Vycm9yc1N1YmplY3RcIlxuICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj5cbjwvY2NkLWNhbGxiYWNrLWVycm9ycz5cbjxjY2QtYWN0aXZpdHkgW2Nhc2VJZF09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCIgW2Rpc3BsYXlNb2RlXT1cIkJBTk5FUlwiPjwvY2NkLWFjdGl2aXR5PlxuPGRpdiBjbGFzcz1cImdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tb25lLWhhbGZcIj5cbiAgICA8Y2NkLWNhc2UtaGVhZGVyIFtjYXNlRGV0YWlsc109XCJjYXNlRGV0YWlsc1wiPjwvY2NkLWNhc2UtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJjYXNlLXZpZXdlci1jb250cm9sc1wiICpuZ0lmPVwiaGFzUHJpbnQgJiYgIWlzRHJhZnQoKSAmJiBpc1ByaW50RW5hYmxlZCgpXCI+XG4gICAgICA8YSBpZD1cImNhc2Utdmlld2VyLWNvbnRyb2wtcHJpbnRcIiByb3V0ZXJMaW5rPVwicHJpbnRcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCI+e3snUHJpbnQnIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaGFzRXZlbnRTZWxlY3RvclwiIGNsYXNzPVwiY29sdW1uLW9uZS1oYWxmXCI+XG4gICAgPGNjZC1ldmVudC10cmlnZ2VyIFtpc0Rpc2FibGVkXT1cImlzVHJpZ2dlckJ1dHRvbkRpc2FibGVkKClcIiBbdHJpZ2dlcnNdPVwiY2FzZURldGFpbHMudHJpZ2dlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICBbdHJpZ2dlclRleHRdPVwidHJpZ2dlclRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICBbZXZlbnRJZF09XCJldmVudElkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKG9uVHJpZ2dlckNoYW5nZSk9XCJjbGVhckVycm9yc0FuZFdhcm5pbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAob25UcmlnZ2VyU3VibWl0KT1cImFwcGx5VHJpZ2dlcigkZXZlbnQpXCI+PC9jY2QtZXZlbnQtdHJpZ2dlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJncmlkLXJvd1wiICpuZ0lmPVwiYWN0aXZlQ2FzZUZsYWdzICYmICFjYXNlRmxhZ3NFeHRlcm5hbFVzZXJcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPGNjZC1ub3RpZmljYXRpb24tYmFubmVyIFtub3RpZmljYXRpb25CYW5uZXJDb25maWddPVwibm90aWZpY2F0aW9uQmFubmVyQ29uZmlnXCIgKGxpbmtDbGlja2VkKT1cIm9uTGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgIDwvY2NkLW5vdGlmaWNhdGlvbi1iYW5uZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbHVtbi1mdWxsXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1RhYnNQcmVzZW50KClcIj5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICN0YWJHcm91cCBhbmltYXRpb25EdXJhdGlvbj1cIjBtc1wiIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cInRhYkNoYW5nZWQoJGV2ZW50KVwiIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICBbc2VsZWN0ZWRJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJlcGVuZGVkVGFic1wiIFtpZF09XCJ0YWIuaWRcIiBbbGFiZWxdPVwidGFiLmxhYmVsIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgKm5nRm9yPVwibGV0IHRhYiBvZiBzb3J0ZWRUYWJzOyBsZXQgY3VySWR4PWluZGV4XCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbWF0VGFiQ29udGVudD5cbiAgICAgICAgICAgIDx0YWJsZSBbY2xhc3NdPVwidGFiLmlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInY2FzZSB2aWV3ZXIgdGFibGUnIHwgcnB4VHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgdGFiIHwgY2NkVGFiRmllbGRzIHwgY2NkUmVhZEZpZWxkc0ZpbHRlcjpmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDogZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCIgW2hpZGRlbl09XCJmaWVsZC5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIiEoZmllbGQgfCBjY2RJc0NvbXBvdW5kKVwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggaWQ9XCJjYXNlLXZpZXdlci1maWVsZC1sYWJlbFwiICpuZ0lmPVwiIWlzRmllbGRUb0hhdmVOb0xhYmVsKGZpZWxkKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhc2Utdmlld2VyLWxhYmVsIHRleHQtMTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgW2lkXT1cIidjYXNlLXZpZXdlci1maWVsZC1yZWFkLS0nICsgZmllbGQuaWRcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwiZm9ybUdyb3VwPy5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbY2FzZVJlZmVyZW5jZV09XCJjYXNlRGV0YWlscy5jYXNlX2lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtdPVwibWFya2Rvd25Vc2VIcmVmQXNSb3V0ZXJMaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiIGNsYXNzPVwiY29tcG91bmQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggW2lkXT1cIidjYXNlLXZpZXdlci1maWVsZC1yZWFkLS0nICsgZmllbGQuaWRcIiBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbdG9wTGV2ZWxGb3JtR3JvdXBdPVwiZm9ybUdyb3VwLmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtjYXNlUmVmZXJlbmNlXT1cImNhc2VEZXRhaWxzLmNhc2VfaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hcmtkb3duVXNlSHJlZkFzUm91dGVyTGlua109XCJtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiICpuZ0Zvcj1cImxldCB0YWIgb2YgYXBwZW5kZWRUYWJzXCIgW2lkXT1cInRhYi5pZFwiIFtsYWJlbF09XCJ0YWIubGFiZWwgfCBycHhUcmFuc2xhdGVcIj5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgICAgPHJvdXRlci1vdXRsZXQgKm5nSWY9XCIocHJlcGVuZGVkVGFicyAmJiBwcmVwZW5kZWRUYWJzLmxlbmd0aCkgfHwgKGFwcGVuZGVkVGFicyAmJiBhcHBlbmRlZFRhYnMubGVuZ3RoKVwiPjwvcm91dGVyLW91dGxldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
|
-
import {
|
|
4
|
+
import { forkJoin } from 'rxjs';
|
|
5
|
+
import { take } from 'rxjs/operators';
|
|
5
6
|
import { CaseEventTrigger } from '../../../../../../../lib/shared/domain';
|
|
6
7
|
import { SessionStorageService } from '../../../../../services';
|
|
7
8
|
import { CaseNotifier, CasesService, WorkAllocationService } from '../../../../case-editor/services';
|
|
@@ -295,8 +296,11 @@ export class QueryCheckYourAnswersComponent {
|
|
|
295
296
|
const createEvent$ = this.createEvent(data);
|
|
296
297
|
if (this.queryCreateContext === QueryCreateContext.RESPOND) {
|
|
297
298
|
if (this.filteredTasks?.length > 0) {
|
|
298
|
-
|
|
299
|
-
|
|
299
|
+
const completeTask$ = this.workAllocationService.completeTask(this.filteredTasks[0].id, this.caseViewTrigger.name);
|
|
300
|
+
this.createEventSubscription = forkJoin([createEvent$, completeTask$]).subscribe({
|
|
301
|
+
next: ([createEventResponse, tasksResponse]) => {
|
|
302
|
+
this.finaliseSubmission();
|
|
303
|
+
},
|
|
300
304
|
error: (error) => this.handleError(error)
|
|
301
305
|
});
|
|
302
306
|
}
|
|
@@ -540,4 +544,4 @@ export class QueryCheckYourAnswersComponent {
|
|
|
540
544
|
type: Output
|
|
541
545
|
}] }); })();
|
|
542
546
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(QueryCheckYourAnswersComponent, { className: "QueryCheckYourAnswersComponent", filePath: "lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.ts", lineNumber: 27 }); })();
|
|
543
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUNMLGdCQUFnQixFQUtqQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckcsT0FBTyxFQUFrRCxrQkFBa0IsRUFBRSxhQUFhLEVBQUUs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QUFJO1lBR0YsQUFERiw0QkFBSyxrQkFFa0I7WUFBbkIsa0pBQVMsWUFBUSxLQUFDO1lBQ2xCLGFBQ0Y7O1lBQUEsaUJBQVM7WUFDVCxtQ0FBeUY7WUFBbkIsa0pBQVMsWUFBUSxLQUFDO1lBQ3RGLGFBQ0Y7O1lBRUosQUFERSxBQURFLGlCQUFTLEVBQ0wsRUFDRjtZQUVOLGtEQUM2QjtZQUMvQixpQkFBTTs7OztZQXpJSSxlQUE4QjtZQUE5QixtREFBOEI7WUFnQnJCLGNBQTZEO1lBQTdELHNGQUE2RDtZQUszRCxlQUE2RDtZQUFBLEFBQTdELG9GQUE2RCw2Q0FBaUM7WUFTOUUsZUFBMkI7WUFBM0IsNkNBQTJCO1lBR3ZELGNBQTREO1lBQTVELHFGQUE0RDtZQW9CM0QsZUFDRjtZQURFLDJKQUNGO1lBRUUsZUFDRjtZQURFLHFHQUNGO1lBR0ksZUFDRjtZQURFLGlFQUNGO1lBS0QsZUFBNkQ7WUFBN0Qsc0ZBQTZEO1lBb0NWLGNBQXdEO1lBQXhELHdFQUF3RDtZQXlCNUcsZUFDRjtZQURFLG1FQUNGO1lBRUUsZUFDRjtZQURFLGlFQUNGO1lBSXdCLGVBQStDO1lBQS9DLGlFQUErQzs7O2lGRGhIaEUsOEJBQThCO2NBTDFDLFNBQVM7MkJBQ0UsOEJBQThCOzBPQVd4QixTQUFTO2tCQUF4QixLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLGtCQUFrQjtrQkFBakMsS0FBSztZQUNVLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxRQUFRO2tCQUF2QixLQUFLO1lBQ1csV0FBVztrQkFBM0IsTUFBTTtZQUNVLGNBQWM7a0JBQTlCLE1BQU07O2tGQWJJLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDYXNlRXZlbnRUcmlnZ2VyLFxuICBDYXNlRmllbGQsXG4gIENhc2VWaWV3LFxuICBDYXNlVmlld1RyaWdnZXIsXG4gIEVycm9yTWVzc2FnZVxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbic7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25QYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9kb21haW4vZXZlbnQtY29tcGxldGlvbi1wYXJhbXMubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyLCBDYXNlc1NlcnZpY2UsIFdvcmtBbGxvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24sIFF1ZXJ5Q3JlYXRlQ29udGV4dCwgUXVlcnlMaXN0SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBRdWVyeU1hbmFnZW1lbnRVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3F1ZXJ5LW1hbmFnZW1lbnQudXRpbHMnO1xuaW1wb3J0IHsgRm9ybURvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NoYXJlZC9kb21haW4vZG9jdW1lbnQnO1xuaW1wb3J0IHsgUXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1YWxpZnlpbmctcXVlc3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sTGlzdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2FjY2Vzcy1jb250cm9sLWxpc3QubW9kZWwnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcXVlcnktY2hlY2steW91ci1hbnN3ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q2hlY2tZb3VyQW5zd2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBSQUlTRV9BX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQgPSAncXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCA9ICdDYXNlUXVlcmllc0NvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgRklFTERfVFlQRV9DT01QTEVYID0gJ0NvbXBsZXgnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5SXRlbTogUXVlcnlMaXN0SXRlbTtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dDogUXVlcnlDcmVhdGVDb250ZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgZXZlbnREYXRhOiBDYXNlRXZlbnRUcmlnZ2VyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByb2xlTmFtZTogc3RyaW5nO1xuICBAT3V0cHV0KCkgcHVibGljIGJhY2tDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHF1ZXJ5U3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgY2FzZVZpZXdUcmlnZ2VyOiBDYXNlVmlld1RyaWdnZXI7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHByaXZhdGUgcXVlcnlJZDogc3RyaW5nO1xuICBwcml2YXRlIHRpZDogc3RyaW5nO1xuICBwcml2YXRlIGNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VhcmNoVGFza3NTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0RW51bSA9IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgY2FzZVF1ZXJpZXNDb2xsZWN0aW9uczogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uW107XG4gIHB1YmxpYyBmaWVsZElkOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRhY2htZW50czogRm9ybURvY3VtZW50W107XG5cbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJlZFRhc2tzOiBUYXNrW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlOiBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMudGlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcz8udGlkO1xuXG4gICAgdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICB0aGlzLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIGV2ZW50IHRyaWdnZXIgYmFzZWQgb24gdGhlIHF1ZXJ5Q3JlYXRlQ29udGV4dFxuICAgICAgdGhpcy5jYXNlVmlld1RyaWdnZXIgPSB0aGlzLmNhc2VEZXRhaWxzLnRyaWdnZXJzLmZpbmQoKHRyaWdnZXIpID0+XG4gICAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ICE9PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORFxuICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyBub3QgJ1JFU1BPTkQnLCBmaW5kIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElEIGZvciByYWlzaW5nIGEgcXVlcnlcbiAgICAgICAgICA/IHRyaWdnZXIuaWQgPT09IHRoaXMuUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEXG4gICAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzICdSRVNQT05EJywgZmluZCB0aGUgdHJpZ2dlciB3aXRoIHRoZSBJRCBmb3IgcmVzcG9uZGluZyB0byBhIHF1ZXJ5XG4gICAgICAgICAgOiB0cmlnZ2VyLmlkID09PSB0aGlzLlJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgYXR0YWNobWVudHNcbiAgICB0aGlzLmdldERvY3VtZW50QXR0YWNobWVudHMoKTtcblxuICAgIHRoaXMuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjcmlwdGlvbiA9IHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKHRoaXMuUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lELFxuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gRmlsdGVyIHRhc2sgYnkgcXVlcnkgaWRcbiAgICAgICAgICAgIGlmICh0aGlzLnRpZCAmJiByZXNwb25zZS50YXNrcz8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcz8uZmlsdGVyKCh0YXNrOiBUYXNrKSA9PiB0YXNrLmlkID09PSB0aGlzLnRpZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIHNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uOicsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoVGFza3NTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja0NsaWNrZWQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgZmllbGRJZCBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgaXMgbWlzc2luZy4gQ2Fubm90IHByb2NlZWQgd2l0aCBzdWJtaXNzaW9uLicpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGNhc2UgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIHF1ZXJ5IG1hbmFnZW1lbnQuJyxcbiAgICAgICAgICBmaWVsZElkOiAnZmllbGQtaWQnXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk7XG4gICAgY29uc3QgY3JlYXRlRXZlbnQkID0gdGhpcy5jcmVhdGVFdmVudChkYXRhKTtcblxuICAgIGlmICh0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkQpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcmVkVGFza3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbiA9IGNyZWF0ZUV2ZW50JC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoY3JlYXRlRXZlbnRSZXNwb25zZSkgPT5cbiAgICAgICAgICAgIHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmNvbXBsZXRlVGFzayhcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFRhc2tzWzBdLmlkLFxuICAgICAgICAgICAgICB0aGlzLmNhc2VWaWV3VHJpZ2dlci5uYW1lXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5maW5hbGlzZVN1Ym1pc3Npb24oKSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiBObyB0YXNrIHRvIGNvbXBsZXRlIGZvdW5kJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlRXZlbnRTdWJzY3JpcHRpb24gPSBjcmVhdGVFdmVudCQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5maW5hbGlzZVN1Ym1pc3Npb24oKSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnJvcilcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRXZlbnQoZGF0YTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jYXNlc1NlcnZpY2UuY3JlYXRlRXZlbnQodGhpcy5jYXNlRGV0YWlscywge1xuICAgICAgZGF0YSxcbiAgICAgIGV2ZW50OiB7XG4gICAgICAgIGlkOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uaWQsXG4gICAgICAgIHN1bW1hcnk6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jYXNlVmlld1RyaWdnZXI/LmRlc2NyaXB0aW9uXG4gICAgICB9LFxuICAgICAgZXZlbnRfdG9rZW46IHRoaXMuZXZlbnREYXRhPy5ldmVudF90b2tlbixcbiAgICAgIGlnbm9yZV93YXJuaW5nOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5hbGlzZVN1Ym1pc3Npb24oKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVN1Ym1pdHRlZC5lbWl0KHRydWUpO1xuICAgIHRoaXMucXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZS5jbGVhclF1YWxpZnlpbmdRdWVzdGlvblNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gQVBJIGNhbGxzOicsIGVycm9yKTtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy8nLCAnc2VydmljZS1kb3duJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUNhc2VRdWVyaWVzQ29sbGVjdGlvbkRhdGEoKTogUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyRGV0YWlscyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckRldGFpbHMnKSk7XG5cbiAgICBjb25zdCBjYXNlTWVzc2FnZSA9IHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuTkVXX1FVRVJZXG4gICAgICA/IFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmdldE5ld1F1ZXJ5RGF0YSh0aGlzLmZvcm1Hcm91cCwgY3VycmVudFVzZXJEZXRhaWxzKVxuICAgICAgOiBRdWVyeU1hbmFnZW1lbnRVdGlscy5nZXRSZXNwb25kT3JGb2xsb3d1cFF1ZXJ5RGF0YSh0aGlzLmZvcm1Hcm91cCwgdGhpcy5xdWVyeUl0ZW0sIGN1cnJlbnRVc2VyRGV0YWlscyk7XG5cbiAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7IC8vIEdldCB0aGUgbWVzc2FnZSBJRCBmcm9tIHJvdXRlIHBhcmFtcyAoaWYgcHJlc2VudClcbiAgICBjb25zdCBpc05ld1F1ZXJ5ID0gdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5ORVdfUVVFUlk7IC8vIENoZWNrIGlmIHRoaXMgaXMgYSBuZXcgcXVlcnlcblxuICAgIC8vIENoZWNrIGlmIHRoZSBmaWVsZCBJRCBoYXMgYmVlbiBzZXQgZHluYW1pY2FsbHlcbiAgICBpZiAoIXRoaXMuZmllbGRJZCkge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6IEZpZWxkIElEIGZvciBDYXNlUXVlcmllc0NvbGxlY3Rpb24gbm90IGZvdW5kLiBDYW5ub3QgcHJvY2VlZCB3aXRoIGRhdGEgZ2VuZXJhdGlvbi4nKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsICdzZXJ2aWNlLWRvd24nXSk7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBuZXcgcXVlcnkgZGF0YSBzdHJ1Y3R1cmVcbiAgICBjb25zdCBuZXdRdWVyeURhdGE6IFFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uID0ge307XG5cbiAgICBpZiAodGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zPy5sZW5ndGgpIHtcbiAgICAgIGxldCBtYXRjaGVkQ29sbGVjdGlvbjtcblxuICAgICAgLy8gSWYgaXQncyBub3QgYSBuZXcgcXVlcnksIHRyeSB0byBmaW5kIHRoZSBleGlzdGluZyBjb2xsZWN0aW9uIHdpdGggdGhlIG1lc3NhZ2UgSURcbiAgICAgIGlmICghaXNOZXdRdWVyeSAmJiBtZXNzYWdlSWQpIHtcbiAgICAgICAgbWF0Y2hlZENvbGxlY3Rpb24gPSB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMuZmluZCgoY29sbGVjdGlvbikgPT5cbiAgICAgICAgICBjb2xsZWN0aW9uLmNhc2VNZXNzYWdlcy5zb21lKChtZXNzYWdlKSA9PiBtZXNzYWdlLnZhbHVlLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXRjaGVkQ29sbGVjdGlvbikge1xuICAgICAgICAvLyBBcHBlbmQgdGhlIG5ldyBjYXNlIG1lc3NhZ2UgdG8gdGhlIG1hdGNoZWQgY29sbGVjdGlvbidzIGNhc2VNZXNzYWdlc1xuICAgICAgICBtYXRjaGVkQ29sbGVjdGlvbi5jYXNlTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgdmFsdWU6IGNhc2VNZXNzYWdlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgbWF0Y2hlZCBjb2xsZWN0aW9uIHRvIG5ld1F1ZXJ5RGF0YVxuICAgICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXSA9IHtcbiAgICAgICAgICAuLi5tYXRjaGVkQ29sbGVjdGlvbiwgLy8gS2VlcCBleGlzdGluZyBkYXRhIGludGFjdFxuICAgICAgICAgIGNhc2VNZXNzYWdlczogWy4uLm1hdGNoZWRDb2xsZWN0aW9uLmNhc2VNZXNzYWdlc10gLy8gQXBwZW5kIHRoZSB1cGRhdGVkIG1lc3NhZ2VzIGFycmF5XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiBubyBjb2xsZWN0aW9uIG1hdGNoZXMsIG9yIGl0J3MgYSBuZXcgcXVlcnlcbiAgICAgICAgbmV3UXVlcnlEYXRhW3RoaXMuZmllbGRJZF0gPSB7XG4gICAgICAgICAgcGFydHlOYW1lOiBjdXJyZW50VXNlckRldGFpbHM/Lm5hbWUgfHwgYCR7Y3VycmVudFVzZXJEZXRhaWxzPy5mb3JlbmFtZX0gJHtjdXJyZW50VXNlckRldGFpbHM/LnN1cm5hbWV9YCwgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICAgIHJvbGVPbkNhc2U6ICcnLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgICAgY2FzZU1lc3NhZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBudWxsLFxuICAgICAgICAgICAgICB2YWx1ZTogY2FzZU1lc3NhZ2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gSWYgY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyBpcyBub3QgZW1wdHksIGFwcGVuZCBpdHMgZGF0YVxuICAgICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXS5jYXNlTWVzc2FnZXMucHVzaChcbiAgICAgICAgICAuLi50aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMuZmxhdE1hcCgoY29sbGVjdGlvbikgPT4gY29sbGVjdGlvbi5jYXNlTWVzc2FnZXMpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBleGlzdGluZyBjb2xsZWN0aW9ucywgY3JlYXRlIGEgbmV3IG9uZSAoZS5nLiwgZm9yIG5ldyBxdWVyaWVzKVxuICAgICAgbmV3UXVlcnlEYXRhW3RoaXMuZmllbGRJZF0gPSB7XG4gICAgICAgIHBhcnR5TmFtZTogY3VycmVudFVzZXJEZXRhaWxzPy5uYW1lIHx8IGAke2N1cnJlbnRVc2VyRGV0YWlscz8uZm9yZW5hbWV9ICR7Y3VycmVudFVzZXJEZXRhaWxzPy5zdXJuYW1lfWAsIC8vIE5vdCByZXR1cm5lZCBieSBDQ0RcbiAgICAgICAgcm9sZU9uQ2FzZTogJycsIC8vIE5vdCByZXR1cm5lZCBieSBDQ0RcbiAgICAgICAgY2FzZU1lc3NhZ2VzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICB2YWx1ZTogY2FzZU1lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdRdWVyeURhdGE7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudERhdGE/LmNhc2VfZmllbGRzPy5sZW5ndGgpIHtcbiAgICAgIC8vIFdvcmthcm91bmQgZm9yIG11bHRpcGxlIHFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyB0aGF0IGFyZSBub3QgdG8gYmUgYXBwZWFyaW5nIGluIHRoZSBldmVudERhdGFcbiAgICAgIC8vIENvdW50cyBudW1iZXIgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb25zXG4gICAgICBjb25zdCBudW1iZXJPZkNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgPSB0aGlzLmV2ZW50RGF0YT8uY2FzZV9maWVsZHM/LmZpbHRlcihcbiAgICAgICAgKGNhc2VGaWVsZCkgPT5cbiAgICAgICAgICBjYXNlRmllbGQuZmllbGRfdHlwZS5pZCA9PT0gdGhpcy5DQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCAmJlxuICAgICAgICAgIGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09IHRoaXMuRklFTERfVFlQRV9DT01QTEVYXG4gICAgICApPy5sZW5ndGggfHwgMDtcblxuICAgICAgdGhpcy5jYXNlUXVlcmllc0NvbGxlY3Rpb25zID0gdGhpcy5ldmVudERhdGEuY2FzZV9maWVsZHMucmVkdWNlKChhY2MsIGNhc2VGaWVsZCkgPT4ge1xuICAgICAgICAvLyBFeHRyYWN0IHRoZSBJRCBiYXNlZCBvbiBjb25kaXRpb25zLCB1cGRhdGluZyB0aGlzLmZpZWxkSWQgZHluYW1pY2FsbHlcbiAgICAgICAgdGhpcy5leHRyYWN0Q2FzZVF1ZXJ5SWQoY2FzZUZpZWxkLCBudW1iZXJPZkNhc2VRdWVyaWVzQ29sbGVjdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCA9IFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmV4dHJhY3RDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQoY2FzZUZpZWxkKTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCAmJiB0eXBlb2YgZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGFjYy5wdXNoKGV4dHJhY3RlZENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RDYXNlUXVlcnlJZChkYXRhOiBDYXNlRmllbGQsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IGlkLCB2YWx1ZSwgYWNscyB9ID0gZGF0YTtcbiAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtcy5kYXRhaWQ7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgZmllbGRfdHlwZSBtYXRjaGVzIENhc2VRdWVyaWVzQ29sbGVjdGlvbiBhbmQgdHlwZSBpcyBDb21wbGV4XG4gICAgaWYgKGRhdGEuZmllbGRfdHlwZS5pZCA9PT0gdGhpcy5DQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCAmJiBkYXRhLmZpZWxkX3R5cGUudHlwZSA9PT0gdGhpcy5GSUVMRF9UWVBFX0NPTVBMRVgpIHtcbiAgICAgIGlmICh0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWSkge1xuICAgICAgICAvL2lmIG51bWJlciBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiBpcyBtb3JlIHRoZW4gZmlsdGVyIG91dCB0aGUgcmlnaHQgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb25cbiAgICAgICAgdGhpcy5zZXRGaWVsZElkKGNvdW50LCBhY2xzLCBpZCk7XG4gICAgICB9XG4gICAgICAvLyBJZiBtZXNzYWdlSWQgaXMgcHJlc2VudCwgZmluZCB0aGUgY29ycmVzcG9uZGluZyBjYXNlIG1lc3NhZ2VcbiAgICAgIHRoaXMuc2V0TWVzc2FnZUZpZWxkSWQobWVzc2FnZUlkLCB2YWx1ZSwgaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVzc2FnZUZpZWxkSWQobWVzc2FnZUlkLCB2YWx1ZSwgaWQ6IHN0cmluZykge1xuICAgIGlmIChtZXNzYWdlSWQgJiYgdmFsdWU/LmNhc2VNZXNzYWdlcykge1xuICAgICAgLy8gSWYgYSBtYXRjaGluZyBtZXNzYWdlIGlzIGZvdW5kLCBzZXQgdGhlIGZpZWxkSWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgaWRcbiAgICAgIGNvbnN0IG1hdGNoZWRNZXNzYWdlID0gdmFsdWU/LmNhc2VNZXNzYWdlcz8uZmluZCgobWVzc2FnZSkgPT4gbWVzc2FnZS52YWx1ZS5pZCA9PT0gbWVzc2FnZUlkKTtcbiAgICAgIGlmIChtYXRjaGVkTWVzc2FnZSkge1xuICAgICAgICB0aGlzLmZpZWxkSWQgPSBpZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkSWQoY291bnQ6IG51bWJlciwgYWNsczogQWNjZXNzQ29udHJvbExpc3RbXSwgaWQ6IHN0cmluZykge1xuICAgIGlmIChjb3VudCA+IDEpIHtcbiAgICAgIGNvbnN0IG1hdGNoaW5nUm9sZSA9IGFjbHM/LmZpbmQoKGFjbCkgPT4gYWNsLnJvbGUgPT09IHRoaXMucm9sZU5hbWUpO1xuICAgICAgaWYgKG1hdGNoaW5nUm9sZSkge1xuICAgICAgICB0aGlzLmZpZWxkSWQgPSBpZDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2V0IHRoZSBmaWVsZCBJRCBkeW5hbWljYWxseSBiYXNlZCBvbiB0aGUgZXh0cmFjdGVkIGRhdGFcbiAgICAgIHRoaXMuZmllbGRJZCA9IGlkOyAvLyBTdG9yZSB0aGUgSUQgZm9yIHVzZSBpbiBnZW5lcmF0aW5nIG5ld1F1ZXJ5RGF0YVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG9jdW1lbnRBdHRhY2htZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCBhdHRhY2htZW50c1ZhbHVlID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlO1xuICAgIGlmIChhdHRhY2htZW50c1ZhbHVlICYmIGF0dGFjaG1lbnRzVmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZG9jdW1lbnRzID0gYXR0YWNobWVudHNWYWx1ZTtcbiAgICAgIHRoaXMuYXR0YWNobWVudHMgPSBkb2N1bWVudHMubWFwKFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmRvY3VtZW50VG9Db2xsZWN0aW9uRm9ybURvY3VtZW50KTtcbiAgICB9XG4gIH1cbn1cblxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi10d28tdGhpcmRzLWZyb20tZGVza3RvcFwiPlxuICAgIDwhLS0gRXJyb3IgbWVzc2FnZSBzdW1tYXJ5IC0tPlxuICAgIDxkaXYgKm5nSWY9XCJlcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiIHJvbGU9XCJhbGVydFwiIHRhYmluZGV4PVwiLTFcIlxuICAgICAgZGF0YS1tb2R1bGU9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCI+XG4gICAgIDxoMiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX3RpdGxlXCIgaWQ9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCI+XG4gICAgICAge3sgJ1RoZXJlIGlzIGEgcHJvYmxlbScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgPC9oMj5cbiAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIj5cbiAgICAgICAgICAgPGEgW2lkXT1cIidlcnJvci0nICsgZXJyb3JNZXNzYWdlLmZpZWxkSWRcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgICAgICBjbGFzcz1cInZhbGlkYXRpb24tZXJyb3JcIj57eyBlcnJvck1lc3NhZ2UuZGVzY3JpcHRpb24gfCBycHhUcmFuc2xhdGUgfX08L2E+XG4gICAgICAgICA8L2xpPlxuICAgICAgIDwvdWw+XG4gICAgIDwvZGl2PlxuICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNhcHRpb24tbFwiPnt7ICdSYWlzZSBhIHF1ZXJ5JyB8IHJweFRyYW5zbGF0ZSB9fTwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQ7IGVsc2UgZGVmYXVsdENoZWNrWW91ckFuc3dlcnNUaXRsZVwiPlxuICAgICAgICB7eyAnUmV2aWV3IHF1ZXJ5IHJlc3BvbnNlIGRldGFpbHMnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2hlY2tZb3VyQW5zd2Vyc1RpdGxlPlxuICAgICAgICB7eyAnUmV2aWV3IHF1ZXJ5IGRldGFpbHMnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaDE+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCI+XG4gICAgICA8Y2NkLXF1ZXJ5LWNhc2UtZGV0YWlscy1oZWFkZXIgW2Nhc2VEZXRhaWxzXT1cImNhc2VEZXRhaWxzXCI+PC9jY2QtcXVlcnktY2FzZS1kZXRhaWxzLWhlYWRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkbCAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCAhPT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5GT0xMT1dVUFwiIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0IGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/ICdTdWJtaXR0ZWQgcXVlcnknIDogJ1F1ZXJ5IHN1YmplY3QnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORCA/IHF1ZXJ5SXRlbS5zdWJqZWN0IDogZm9ybUdyb3VwLmdldCgnc3ViamVjdCcpPy52YWx1ZSB9fVxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSAgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXCIgXG4gICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8ZGwgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gJ1Jlc3BvbnNlIGRldGFpbCcgOiAnUXVlcnkgZGV0YWlsJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAge3sgZm9ybUdyb3VwLmdldCgnYm9keScpPy52YWx1ZSB9fVxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8ZGwgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXCIgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtR3JvdXAuZ2V0KCdpc0hlYXJpbmdSZWxhdGVkJyk/LnZhbHVlID09PSB0cnVlOyBlbHNlIGlzSGVhcmluZ1JlbGF0ZWRGYWxzZVwiPlxuICAgICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZTogbnVsbCA6ICdZZXMnIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNpc0hlYXJpbmdSZWxhdGVkRmFsc2U+XG4gICAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlOiBudWxsIDogJ05vJyB9fVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJmb3JtR3JvdXAuZ2V0KCdpc0hlYXJpbmdSZWxhdGVkJyk/LnZhbHVlXCIgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcbiAgICAgICAgICAgID8gJ1doYXQgaXMgdGhlIGRhdGUgb2YgdGhlIGhlYXJpbmc/J1xuICAgICAgICAgICAgOiAnV2hhdCBpcyB0aGUgZGF0ZSBvZiB0aGUgaGVhcmluZyB5b3VyIHF1ZXJ5IGlzIHJlbGF0ZWQgdG8/JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAge3sgZm9ybUdyb3VwLmdldCgnaGVhcmluZ0RhdGUnKT8udmFsdWUgfCBkYXRlOiAnZGQgTU1NIHl5eXknIH19XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cbiAgICA8ZGwgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIiAqbmdJZj1cInRoaXMuZm9ybUdyb3VwLmdldCgnYXR0YWNobWVudHMnKS52YWx1ZS5sZW5ndGggPiAwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19yb3dcIj5cbiAgICAgICAgPGR0IGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19rZXlcIj5cbiAgICAgICAgICB7eyBxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZID8gJ1VwbG9hZCBhIGZpbGUgdG8gdGhlIHF1ZXJ5JyA6ICdEb2N1bWVudCBhdHRhY2hlZCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZSBnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlLS1kb2N1bWVudEF0dGFjaGVkXCI+XG4gICAgICAgICAgPGNjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkXG4gICAgICAgICAgICAqbmdJZj1cInRoaXMuZm9ybUdyb3VwLmdldCgnYXR0YWNobWVudHMnKS52YWx1ZVwiXG4gICAgICAgICAgICBbYXR0YWNobWVudHNdPVwiYXR0YWNobWVudHNcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2NjZC1xdWVyeS1hdHRhY2htZW50cy1yZWFkPlxuICAgICAgICA8L2RkPlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJnb3Z1ay1saW5rXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgICAgICB7eyAnQ2hhbmdlJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kZD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGw+XG5cbiAgICA8YnI+XG5cbiAgICA8ZGl2PlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImdvdnVrLWJ1dHRvbiBnb3Z1ay1idXR0b24tLXNlY29uZGFyeSBnb3Z1ay0hLW1hcmdpbi1yaWdodC0zXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAge3sgJ1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1idXR0b25cIiB0eXBlPVwic3VibWl0XCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgIHt7ICdTdWJtaXQnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGNjZC1xdWVyeS1ldmVudC1jb21wbGV0aW9uIFtldmVudENvbXBsZXRpb25QYXJhbXNdPVwiZXZlbnRDb21wbGV0aW9uUGFyYW1zXCI+ICAgIFxuICA8L2NjZC1xdWVyeS1ldmVudC1jb21wbGV0aW9uPlxuPC9kaXY+XG4iXX0=
|
|
547
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3F1ZXJ5LW1hbmFnZW1lbnQvY29tcG9uZW50cy9xdWVyeS1jaGVjay15b3VyLWFuc3dlcnMvcXVlcnktY2hlY2steW91ci1hbnN3ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBS2pCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRyxP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Q0Y7O1lBR04sQUFERSxBQURFLEFBREUsaUJBQUksRUFDRCxFQUNELEVBQ0g7WUFzQ0wsQUFwQ0EsaUZBQXVILG9FQW9DTDtZQW9CbEgsc0JBQUk7WUFHRixBQURGLDRCQUFLLGtCQUVrQjtZQUFuQixrSkFBUyxZQUFRLEtBQUM7WUFDbEIsYUFDRjs7WUFBQSxpQkFBUztZQUNULG1DQUF5RjtZQUFuQixrSkFBUyxZQUFRLEtBQUM7WUFDdEYsYUFDRjs7WUFFSixBQURFLEFBREUsaUJBQVMsRUFDTCxFQUNGO1lBRU4sa0RBQzZCO1lBQy9CLGlCQUFNOzs7O1lBeklJLGVBQThCO1lBQTlCLG1EQUE4QjtZQWdCckIsY0FBNkQ7WUFBN0Qsc0ZBQTZEO1lBSzNELGVBQTZEO1lBQUEsQUFBN0Qsb0ZBQTZELDZDQUFpQztZQVM5RSxlQUEyQjtZQUEzQiw2Q0FBMkI7WUFHdkQsY0FBNEQ7WUFBNUQscUZBQTREO1lBb0IzRCxlQUNGO1lBREUsMkpBQ0Y7WUFFRSxlQUNGO1lBREUscUdBQ0Y7WUFHSSxlQUNGO1lBREUsaUVBQ0Y7WUFLRCxlQUE2RDtZQUE3RCxzRkFBNkQ7WUFvQ1YsY0FBd0Q7WUFBeEQsd0VBQXdEO1lBeUI1RyxlQUNGO1lBREUsbUVBQ0Y7WUFFRSxlQUNGO1lBREUsaUVBQ0Y7WUFJd0IsZUFBK0M7WUFBL0MsaUVBQStDOzs7aUZEaEhoRSw4QkFBOEI7Y0FMMUMsU0FBUzsyQkFDRSw4QkFBOEI7ME9BV3hCLFNBQVM7a0JBQXhCLEtBQUs7WUFDVSxTQUFTO2tCQUF4QixLQUFLO1lBQ1Usa0JBQWtCO2tCQUFqQyxLQUFLO1lBQ1UsU0FBUztrQkFBeEIsS0FBSztZQUNVLFFBQVE7a0JBQXZCLEtBQUs7WUFDVyxXQUFXO2tCQUEzQixNQUFNO1lBQ1UsY0FBYztrQkFBOUIsTUFBTTs7a0ZBYkksOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDYXNlRXZlbnRUcmlnZ2VyLFxuICBDYXNlRmllbGQsXG4gIENhc2VWaWV3LFxuICBDYXNlVmlld1RyaWdnZXIsXG4gIEVycm9yTWVzc2FnZVxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvc2hhcmVkL2RvbWFpbic7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBFdmVudENvbXBsZXRpb25QYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9kb21haW4vZXZlbnQtY29tcGxldGlvbi1wYXJhbXMubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyLCBDYXNlc1NlcnZpY2UsIFdvcmtBbGxvY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzJztcbmltcG9ydCB7IENhc2VRdWVyaWVzQ29sbGVjdGlvbiwgUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24sIFF1ZXJ5Q3JlYXRlQ29udGV4dCwgUXVlcnlMaXN0SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBRdWVyeU1hbmFnZW1lbnRVdGlscyB9IGZyb20gJy4uLy4uL3V0aWxzL3F1ZXJ5LW1hbmFnZW1lbnQudXRpbHMnO1xuaW1wb3J0IHsgRm9ybURvY3VtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGliL3NoYXJlZC9kb21haW4vZG9jdW1lbnQnO1xuaW1wb3J0IHsgUXVhbGlmeWluZ1F1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1YWxpZnlpbmctcXVlc3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sTGlzdCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2FjY2Vzcy1jb250cm9sLWxpc3QubW9kZWwnO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtcXVlcnktY2hlY2steW91ci1hbnN3ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3F1ZXJ5LWNoZWNrLXlvdXItYW5zd2Vycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXJ5Q2hlY2tZb3VyQW5zd2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBSQUlTRV9BX1FVRVJZX0VWRU5UX1RSSUdHRVJfSUQgPSAncXVlcnlNYW5hZ2VtZW50UmFpc2VRdWVyeSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lEID0gJ3F1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDQVNFX1FVRVJJRVNfQ09MTEVDVElPTl9JRCA9ICdDYXNlUXVlcmllc0NvbGxlY3Rpb24nO1xuICBwdWJsaWMgcmVhZG9ubHkgRklFTERfVFlQRV9DT01QTEVYID0gJ0NvbXBsZXgnO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5SXRlbTogUXVlcnlMaXN0SXRlbTtcbiAgQElucHV0KCkgcHVibGljIHF1ZXJ5Q3JlYXRlQ29udGV4dDogUXVlcnlDcmVhdGVDb250ZXh0O1xuICBASW5wdXQoKSBwdWJsaWMgZXZlbnREYXRhOiBDYXNlRXZlbnRUcmlnZ2VyIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyByb2xlTmFtZTogc3RyaW5nO1xuICBAT3V0cHV0KCkgcHVibGljIGJhY2tDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHF1ZXJ5U3VibWl0dGVkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgY2FzZVZpZXdUcmlnZ2VyOiBDYXNlVmlld1RyaWdnZXI7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHByaXZhdGUgcXVlcnlJZDogc3RyaW5nO1xuICBwcml2YXRlIHRpZDogc3RyaW5nO1xuICBwcml2YXRlIGNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgc2VhcmNoVGFza3NTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgcXVlcnlDcmVhdGVDb250ZXh0RW51bSA9IFF1ZXJ5Q3JlYXRlQ29udGV4dDtcbiAgcHVibGljIGV2ZW50Q29tcGxldGlvblBhcmFtczogRXZlbnRDb21wbGV0aW9uUGFyYW1zO1xuICBwdWJsaWMgY2FzZVF1ZXJpZXNDb2xsZWN0aW9uczogQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uW107XG4gIHB1YmxpYyBmaWVsZElkOiBzdHJpbmc7XG4gIHB1YmxpYyBhdHRhY2htZW50czogRm9ybURvY3VtZW50W107XG5cbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBmaWx0ZXJlZFRhc2tzOiBUYXNrW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlTm90aWZpZXI6IENhc2VOb3RpZmllcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtBbGxvY2F0aW9uU2VydmljZTogV29ya0FsbG9jYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBxdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlOiBRdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMucWlkO1xuICAgIHRoaXMudGlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcz8udGlkO1xuXG4gICAgdGhpcy5jYXNlTm90aWZpZXIuY2FzZVZpZXcucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICB0aGlzLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIGV2ZW50IHRyaWdnZXIgYmFzZWQgb24gdGhlIHF1ZXJ5Q3JlYXRlQ29udGV4dFxuICAgICAgdGhpcy5jYXNlVmlld1RyaWdnZXIgPSB0aGlzLmNhc2VEZXRhaWxzLnRyaWdnZXJzLmZpbmQoKHRyaWdnZXIpID0+XG4gICAgICAgIHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ICE9PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORFxuICAgICAgICAvLyBJZiB0aGUgY29udGV4dCBpcyBub3QgJ1JFU1BPTkQnLCBmaW5kIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElEIGZvciByYWlzaW5nIGEgcXVlcnlcbiAgICAgICAgICA/IHRyaWdnZXIuaWQgPT09IHRoaXMuUkFJU0VfQV9RVUVSWV9FVkVOVF9UUklHR0VSX0lEXG4gICAgICAgIC8vIElmIHRoZSBjb250ZXh0IGlzICdSRVNQT05EJywgZmluZCB0aGUgdHJpZ2dlciB3aXRoIHRoZSBJRCBmb3IgcmVzcG9uZGluZyB0byBhIHF1ZXJ5XG4gICAgICAgICAgOiB0cmlnZ2VyLmlkID09PSB0aGlzLlJFU1BPTkRfVE9fUVVFUllfRVZFTlRfVFJJR0dFUl9JRFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIC8vIEdldCB0aGUgZG9jdW1lbnQgYXR0YWNobWVudHNcbiAgICB0aGlzLmdldERvY3VtZW50QXR0YWNobWVudHMoKTtcblxuICAgIHRoaXMuc2V0Q2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpO1xuXG4gICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuUkVTUE9ORCkge1xuICAgICAgdGhpcy5zZWFyY2hUYXNrc1N1YnNjcmlwdGlvbiA9IHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKHRoaXMuUkVTUE9ORF9UT19RVUVSWV9FVkVOVF9UUklHR0VSX0lELFxuICAgICAgICB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfaWQsIHRoaXMuY2FzZURldGFpbHMuY2FzZV90eXBlLmlkLCB0aGlzLmNhc2VEZXRhaWxzLmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uaWQpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgLy8gRmlsdGVyIHRhc2sgYnkgcXVlcnkgaWRcbiAgICAgICAgICAgIGlmICh0aGlzLnRpZCAmJiByZXNwb25zZS50YXNrcz8ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcz8uZmlsdGVyKCh0YXNrOiBUYXNrKSA9PiB0YXNrLmlkID09PSB0aGlzLnRpZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3MgPSByZXNwb25zZS50YXNrcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIHNlYXJjaFRhc2tzU3Vic2NyaXB0aW9uOicsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc2VhcmNoVGFza3NTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ29CYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYmFja0NsaWNrZWQuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgZmllbGRJZCBpcyBudWxsIG9yIHVuZGVmaW5lZFxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgaXMgbWlzc2luZy4gQ2Fubm90IHByb2NlZWQgd2l0aCBzdWJtaXNzaW9uLicpO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdFcnJvcicsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGNhc2UgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIHF1ZXJ5IG1hbmFnZW1lbnQuJyxcbiAgICAgICAgICBmaWVsZElkOiAnZmllbGQtaWQnXG4gICAgICAgIH1cbiAgICAgIF07XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ2VuZXJhdGVDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk7XG4gICAgY29uc3QgY3JlYXRlRXZlbnQkID0gdGhpcy5jcmVhdGVFdmVudChkYXRhKTtcblxuICAgIGlmICh0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0LlJFU1BPTkQpIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlcmVkVGFza3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgY29tcGxldGVUYXNrJCA9IHRoaXMud29ya0FsbG9jYXRpb25TZXJ2aWNlLmNvbXBsZXRlVGFzayhcbiAgICAgICAgICB0aGlzLmZpbHRlcmVkVGFza3NbMF0uaWQsXG4gICAgICAgICAgdGhpcy5jYXNlVmlld1RyaWdnZXIubmFtZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNyZWF0ZUV2ZW50U3Vic2NyaXB0aW9uID0gZm9ya0pvaW4oW2NyZWF0ZUV2ZW50JCwgY29tcGxldGVUYXNrJF0pLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKFtjcmVhdGVFdmVudFJlc3BvbnNlLCB0YXNrc1Jlc3BvbnNlXTogW2FueSwgYW55XSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maW5hbGlzZVN1Ym1pc3Npb24oKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3I6IE5vIHRhc2sgdG8gY29tcGxldGUgZm91bmQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jcmVhdGVFdmVudFN1YnNjcmlwdGlvbiA9IGNyZWF0ZUV2ZW50JC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLmZpbmFsaXNlU3VibWlzc2lvbigpLFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVFdmVudChkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VzU2VydmljZS5jcmVhdGVFdmVudCh0aGlzLmNhc2VEZXRhaWxzLCB7XG4gICAgICBkYXRhLFxuICAgICAgZXZlbnQ6IHtcbiAgICAgICAgaWQ6IHRoaXMuY2FzZVZpZXdUcmlnZ2VyPy5pZCxcbiAgICAgICAgc3VtbWFyeTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNhc2VWaWV3VHJpZ2dlcj8uZGVzY3JpcHRpb25cbiAgICAgIH0sXG4gICAgICBldmVudF90b2tlbjogdGhpcy5ldmVudERhdGE/LmV2ZW50X3Rva2VuLFxuICAgICAgaWdub3JlX3dhcm5pbmc6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmFsaXNlU3VibWlzc2lvbigpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U3VibWl0dGVkLmVtaXQodHJ1ZSk7XG4gICAgdGhpcy5xdWFsaWZ5aW5nUXVlc3Rpb25TZXJ2aWNlLmNsZWFyUXVhbGlmeWluZ1F1ZXN0aW9uU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbiBBUEkgY2FsbHM6JywgZXJyb3IpO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnLycsICdzZXJ2aWNlLWRvd24nXSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uRGF0YSgpOiBRbUNhc2VRdWVyaWVzQ29sbGVjdGlvbiB7XG4gICAgY29uc3QgY3VycmVudFVzZXJEZXRhaWxzID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCd1c2VyRGV0YWlscycpKTtcblxuICAgIGNvbnN0IGNhc2VNZXNzYWdlID0gdGhpcy5xdWVyeUNyZWF0ZUNvbnRleHQgPT09IFF1ZXJ5Q3JlYXRlQ29udGV4dC5ORVdfUVVFUllcbiAgICAgID8gUXVlcnlNYW5hZ2VtZW50VXRpbHMuZ2V0TmV3UXVlcnlEYXRhKHRoaXMuZm9ybUdyb3VwLCBjdXJyZW50VXNlckRldGFpbHMpXG4gICAgICA6IFF1ZXJ5TWFuYWdlbWVudFV0aWxzLmdldFJlc3BvbmRPckZvbGxvd3VwUXVlcnlEYXRhKHRoaXMuZm9ybUdyb3VwLCB0aGlzLnF1ZXJ5SXRlbSwgY3VycmVudFVzZXJEZXRhaWxzKTtcblxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRhdGFpZDsgLy8gR2V0IHRoZSBtZXNzYWdlIElEIGZyb20gcm91dGUgcGFyYW1zIChpZiBwcmVzZW50KVxuICAgIGNvbnN0IGlzTmV3UXVlcnkgPSB0aGlzLnF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gUXVlcnlDcmVhdGVDb250ZXh0Lk5FV19RVUVSWTsgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIG5ldyBxdWVyeVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGZpZWxkIElEIGhhcyBiZWVuIHNldCBkeW5hbWljYWxseVxuICAgIGlmICghdGhpcy5maWVsZElkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjogRmllbGQgSUQgZm9yIENhc2VRdWVyaWVzQ29sbGVjdGlvbiBub3QgZm91bmQuIENhbm5vdCBwcm9jZWVkIHdpdGggZGF0YSBnZW5lcmF0aW9uLicpO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvJywgJ3NlcnZpY2UtZG93biddKTtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIG5ldyBxdWVyeSBkYXRhIHN0cnVjdHVyZVxuICAgIGNvbnN0IG5ld1F1ZXJ5RGF0YTogUW1DYXNlUXVlcmllc0NvbGxlY3Rpb24gPSB7fTtcblxuICAgIGlmICh0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgbGV0IG1hdGNoZWRDb2xsZWN0aW9uO1xuXG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIG5ldyBxdWVyeSwgdHJ5IHRvIGZpbmQgdGhlIGV4aXN0aW5nIGNvbGxlY3Rpb24gd2l0aCB0aGUgbWVzc2FnZSBJRFxuICAgICAgaWYgKCFpc05ld1F1ZXJ5ICYmIG1lc3NhZ2VJZCkge1xuICAgICAgICBtYXRjaGVkQ29sbGVjdGlvbiA9IHRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5maW5kKChjb2xsZWN0aW9uKSA9PlxuICAgICAgICAgIGNvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzLnNvbWUoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudmFsdWUuaWQgPT09IG1lc3NhZ2VJZClcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hdGNoZWRDb2xsZWN0aW9uKSB7XG4gICAgICAgIC8vIEFwcGVuZCB0aGUgbmV3IGNhc2UgbWVzc2FnZSB0byB0aGUgbWF0Y2hlZCBjb2xsZWN0aW9uJ3MgY2FzZU1lc3NhZ2VzXG4gICAgICAgIG1hdGNoZWRDb2xsZWN0aW9uLmNhc2VNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICB2YWx1ZTogY2FzZU1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBtYXRjaGVkIGNvbGxlY3Rpb24gdG8gbmV3UXVlcnlEYXRhXG4gICAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdID0ge1xuICAgICAgICAgIC4uLm1hdGNoZWRDb2xsZWN0aW9uLCAvLyBLZWVwIGV4aXN0aW5nIGRhdGEgaW50YWN0XG4gICAgICAgICAgY2FzZU1lc3NhZ2VzOiBbLi4ubWF0Y2hlZENvbGxlY3Rpb24uY2FzZU1lc3NhZ2VzXSAvLyBBcHBlbmQgdGhlIHVwZGF0ZWQgbWVzc2FnZXMgYXJyYXlcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIG5vIGNvbGxlY3Rpb24gbWF0Y2hlcywgb3IgaXQncyBhIG5ldyBxdWVyeVxuICAgICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXSA9IHtcbiAgICAgICAgICBwYXJ0eU5hbWU6IGN1cnJlbnRVc2VyRGV0YWlscz8ubmFtZSB8fCBgJHtjdXJyZW50VXNlckRldGFpbHM/LmZvcmVuYW1lfSAke2N1cnJlbnRVc2VyRGV0YWlscz8uc3VybmFtZX1gLCAvLyBOb3QgcmV0dXJuZWQgYnkgQ0NEXG4gICAgICAgICAgcm9sZU9uQ2FzZTogJycsIC8vIE5vdCByZXR1cm5lZCBieSBDQ0RcbiAgICAgICAgICBjYXNlTWVzc2FnZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IG51bGwsXG4gICAgICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBJZiBjYXNlUXVlcmllc0NvbGxlY3Rpb25zIGlzIG5vdCBlbXB0eSwgYXBwZW5kIGl0cyBkYXRhXG4gICAgICAgIG5ld1F1ZXJ5RGF0YVt0aGlzLmZpZWxkSWRdLmNhc2VNZXNzYWdlcy5wdXNoKFxuICAgICAgICAgIC4uLnRoaXMuY2FzZVF1ZXJpZXNDb2xsZWN0aW9ucy5mbGF0TWFwKChjb2xsZWN0aW9uKSA9PiBjb2xsZWN0aW9uLmNhc2VNZXNzYWdlcylcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIGNvbGxlY3Rpb25zLCBjcmVhdGUgYSBuZXcgb25lIChlLmcuLCBmb3IgbmV3IHF1ZXJpZXMpXG4gICAgICBuZXdRdWVyeURhdGFbdGhpcy5maWVsZElkXSA9IHtcbiAgICAgICAgcGFydHlOYW1lOiBjdXJyZW50VXNlckRldGFpbHM/Lm5hbWUgfHwgYCR7Y3VycmVudFVzZXJEZXRhaWxzPy5mb3JlbmFtZX0gJHtjdXJyZW50VXNlckRldGFpbHM/LnN1cm5hbWV9YCwgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICByb2xlT25DYXNlOiAnJywgLy8gTm90IHJldHVybmVkIGJ5IENDRFxuICAgICAgICBjYXNlTWVzc2FnZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogbnVsbCxcbiAgICAgICAgICAgIHZhbHVlOiBjYXNlTWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld1F1ZXJ5RGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDYXNlUXVlcmllc0NvbGxlY3Rpb25EYXRhKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50RGF0YT8uY2FzZV9maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgbXVsdGlwbGUgcW1DYXNlUXVlcmllc0NvbGxlY3Rpb25zIHRoYXQgYXJlIG5vdCB0byBiZSBhcHBlYXJpbmcgaW4gdGhlIGV2ZW50RGF0YVxuICAgICAgLy8gQ291bnRzIG51bWJlciBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvbnNcbiAgICAgIGNvbnN0IG51bWJlck9mQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyA9IHRoaXMuZXZlbnREYXRhPy5jYXNlX2ZpZWxkcz8uZmlsdGVyKFxuICAgICAgICAoY2FzZUZpZWxkKSA9PlxuICAgICAgICAgIGNhc2VGaWVsZC5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmXG4gICAgICAgICAgY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gdGhpcy5GSUVMRF9UWVBFX0NPTVBMRVhcbiAgICAgICk/Lmxlbmd0aCB8fCAwO1xuXG4gICAgICB0aGlzLmNhc2VRdWVyaWVzQ29sbGVjdGlvbnMgPSB0aGlzLmV2ZW50RGF0YS5jYXNlX2ZpZWxkcy5yZWR1Y2UoKGFjYywgY2FzZUZpZWxkKSA9PiB7XG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIElEIGJhc2VkIG9uIGNvbmRpdGlvbnMsIHVwZGF0aW5nIHRoaXMuZmllbGRJZCBkeW5hbWljYWxseVxuICAgICAgICB0aGlzLmV4dHJhY3RDYXNlUXVlcnlJZChjYXNlRmllbGQsIG51bWJlck9mQ2FzZVF1ZXJpZXNDb2xsZWN0aW9ucyk7XG5cbiAgICAgICAgY29uc3QgZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkID0gUXVlcnlNYW5hZ2VtZW50VXRpbHMuZXh0cmFjdENhc2VRdWVyaWVzRnJvbUNhc2VGaWVsZChjYXNlRmllbGQpO1xuICAgICAgICBpZiAoZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkICYmIHR5cGVvZiBleHRyYWN0ZWRDYXNlUXVlcmllc0Zyb21DYXNlRmllbGQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgYWNjLnB1c2goZXh0cmFjdGVkQ2FzZVF1ZXJpZXNGcm9tQ2FzZUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdENhc2VRdWVyeUlkKGRhdGE6IENhc2VGaWVsZCwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgaWQsIHZhbHVlLCBhY2xzIH0gPSBkYXRhO1xuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zLmRhdGFpZDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBmaWVsZF90eXBlIG1hdGNoZXMgQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIGFuZCB0eXBlIGlzIENvbXBsZXhcbiAgICBpZiAoZGF0YS5maWVsZF90eXBlLmlkID09PSB0aGlzLkNBU0VfUVVFUklFU19DT0xMRUNUSU9OX0lEICYmIGRhdGEuZmllbGRfdHlwZS50eXBlID09PSB0aGlzLkZJRUxEX1RZUEVfQ09NUExFWCkge1xuICAgICAgaWYgKHRoaXMucXVlcnlDcmVhdGVDb250ZXh0ID09PSBRdWVyeUNyZWF0ZUNvbnRleHQuTkVXX1FVRVJZKSB7XG4gICAgICAgIC8vaWYgbnVtYmVyIHFtQ2FzZVF1ZXJpZXNDb2xsZWN0aW9uIGlzIG1vcmUgdGhlbiBmaWx0ZXIgb3V0IHRoZSByaWdodCBxbUNhc2VRdWVyaWVzQ29sbGVjdGlvblxuICAgICAgICB0aGlzLnNldEZpZWxkSWQoY291bnQsIGFjbHMsIGlkKTtcbiAgICAgIH1cbiAgICAgIC8vIElmIG1lc3NhZ2VJZCBpcyBwcmVzZW50LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgbWVzc2FnZVxuICAgICAgdGhpcy5zZXRNZXNzYWdlRmllbGRJZChtZXNzYWdlSWQsIHZhbHVlLCBpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNZXNzYWdlRmllbGRJZChtZXNzYWdlSWQsIHZhbHVlLCBpZDogc3RyaW5nKSB7XG4gICAgaWYgKG1lc3NhZ2VJZCAmJiB2YWx1ZT8uY2FzZU1lc3NhZ2VzKSB7XG4gICAgICAvLyBJZiBhIG1hdGNoaW5nIG1lc3NhZ2UgaXMgZm91bmQsIHNldCB0aGUgZmllbGRJZCB0byB0aGUgY29ycmVzcG9uZGluZyBpZFxuICAgICAgY29uc3QgbWF0Y2hlZE1lc3NhZ2UgPSB2YWx1ZT8uY2FzZU1lc3NhZ2VzPy5maW5kKChtZXNzYWdlKSA9PiBtZXNzYWdlLnZhbHVlLmlkID09PSBtZXNzYWdlSWQpO1xuICAgICAgaWYgKG1hdGNoZWRNZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuZmllbGRJZCA9IGlkO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RmllbGRJZChjb3VudDogbnVtYmVyLCBhY2xzOiBBY2Nlc3NDb250cm9sTGlzdFtdLCBpZDogc3RyaW5nKSB7XG4gICAgaWYgKGNvdW50ID4gMSkge1xuICAgICAgY29uc3QgbWF0Y2hpbmdSb2xlID0gYWNscz8uZmluZCgoYWNsKSA9PiBhY2wucm9sZSA9PT0gdGhpcy5yb2xlTmFtZSk7XG4gICAgICBpZiAobWF0Y2hpbmdSb2xlKSB7XG4gICAgICAgIHRoaXMuZmllbGRJZCA9IGlkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTZXQgdGhlIGZpZWxkIElEIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHRoZSBleHRyYWN0ZWQgZGF0YVxuICAgICAgdGhpcy5maWVsZElkID0gaWQ7IC8vIFN0b3JlIHRoZSBJRCBmb3IgdXNlIGluIGdlbmVyYXRpbmcgbmV3UXVlcnlEYXRhXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREb2N1bWVudEF0dGFjaG1lbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzVmFsdWUgPSB0aGlzLmZvcm1Hcm91cC5nZXQoJ2F0dGFjaG1lbnRzJykudmFsdWU7XG4gICAgaWYgKGF0dGFjaG1lbnRzVmFsdWUgJiYgYXR0YWNobWVudHNWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkb2N1bWVudHMgPSBhdHRhY2htZW50c1ZhbHVlO1xuICAgICAgdGhpcy5hdHRhY2htZW50cyA9IGRvY3VtZW50cy5tYXAoUXVlcnlNYW5hZ2VtZW50VXRpbHMuZG9jdW1lbnRUb0NvbGxlY3Rpb25Gb3JtRG9jdW1lbnQpO1xuICAgIH1cbiAgfVxufVxuXG4iLCI8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtY29sdW1uLXR3by10aGlyZHMtZnJvbS1kZXNrdG9wXCI+XG4gICAgPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZXMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeVwiXG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJlcnJvci1zdW1tYXJ5LXRpdGxlXCIgcm9sZT1cImFsZXJ0XCIgdGFiaW5kZXg9XCItMVwiXG4gICAgICBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgICAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICAgICB7eyAnVGhlcmUgaXMgYSBwcm9ibGVtJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICA8L2gyPlxuICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fYm9keVwiPlxuICAgICAgIDx1bCBjbGFzcz1cImdvdnVrLWxpc3QgZ292dWstZXJyb3Itc3VtbWFyeV9fbGlzdFwiPlxuICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgZXJyb3JNZXNzYWdlc1wiPlxuICAgICAgICAgICA8YSBbaWRdPVwiJ2Vycm9yLScgKyBlcnJvck1lc3NhZ2UuZmllbGRJZFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICAgICAgIGNsYXNzPVwidmFsaWRhdGlvbi1lcnJvclwiPnt7IGVycm9yTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHJweFRyYW5zbGF0ZSB9fTwvYT5cbiAgICAgICAgIDwvbGk+XG4gICAgICAgPC91bD5cbiAgICAgPC9kaXY+XG4gICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uTkVXX1FVRVJZXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+e3sgJ1JhaXNlIGEgcXVlcnknIHwgcnB4VHJhbnNsYXRlIH19PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJxdWVyeUNyZWF0ZUNvbnRleHQgPT09IHF1ZXJ5Q3JlYXRlQ29udGV4dEVudW0uUkVTUE9ORDsgZWxzZSBkZWZhdWx0Q2hlY2tZb3VyQW5zd2Vyc1RpdGxlXCI+XG4gICAgICAgIHt7ICdSZXZpZXcgcXVlcnkgcmVzcG9uc2UgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGVja1lvdXJBbnN3ZXJzVGl0bGU+XG4gICAgICAgIHt7ICdSZXZpZXcgcXVlcnkgZGV0YWlscycgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9oMT5cbiAgICA8ZGl2IGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTRcIj5cbiAgICAgIDxjY2QtcXVlcnktY2FzZS1kZXRhaWxzLWhlYWRlciBbY2FzZURldGFpbHNdPVwiY2FzZURldGFpbHNcIj48L2NjZC1xdWVyeS1jYXNlLWRldGFpbHMtaGVhZGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRsICpuZ0lmPVwicXVlcnlDcmVhdGVDb250ZXh0ICE9PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLkZPTExPV1VQXCIgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3QgZ292dWstIS1tYXJnaW4tYm90dG9tLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gJ1N1Ym1pdHRlZCBxdWVyeScgOiAnUXVlcnkgc3ViamVjdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgPC9kdD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X192YWx1ZVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5SRVNQT05EID8gcXVlcnlJdGVtLnN1YmplY3QgOiBmb3JtR3JvdXAuZ2V0KCdzdWJqZWN0Jyk/LnZhbHVlIH19XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhICAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIiBcbiAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxkbCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLlJFU1BPTkQgPyAnUmVzcG9uc2UgZGV0YWlsJyA6ICdRdWVyeSBkZXRhaWwnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyBmb3JtR3JvdXAuZ2V0KCdib2R5Jyk/LnZhbHVlIH19XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxkbCAqbmdJZj1cInF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUllcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgJ0lzIHRoZSBxdWVyeSBoZWFyaW5nIHJlbGF0ZWQ/JyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKT8udmFsdWUgPT09IHRydWU7IGVsc2UgaXNIZWFyaW5nUmVsYXRlZEZhbHNlXCI+XG4gICAgICAgICAgICB7eyAnSXMgdGhlIHF1ZXJ5IGhlYXJpbmcgcmVsYXRlZD8nIHwgcnB4VHJhbnNsYXRlOiBudWxsIDogJ1llcycgfX1cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2lzSGVhcmluZ1JlbGF0ZWRGYWxzZT5cbiAgICAgICAgICAgIHt7ICdJcyB0aGUgcXVlcnkgaGVhcmluZyByZWxhdGVkPycgfCBycHhUcmFuc2xhdGU6IG51bGwgOiAnTm8nIH19XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImZvcm1Hcm91cC5nZXQoJ2lzSGVhcmluZ1JlbGF0ZWQnKT8udmFsdWVcIiBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fcm93XCI+XG4gICAgICAgIDxkdCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fa2V5XCI+XG4gICAgICAgICAge3sgcXVlcnlDcmVhdGVDb250ZXh0ID09PSBxdWVyeUNyZWF0ZUNvbnRleHRFbnVtLk5FV19RVUVSWVxuICAgICAgICAgICAgPyAnV2hhdCBpcyB0aGUgZGF0ZSBvZiB0aGUgaGVhcmluZz8nXG4gICAgICAgICAgICA6ICdXaGF0IGlzIHRoZSBkYXRlIG9mIHRoZSBoZWFyaW5nIHlvdXIgcXVlcnkgaXMgcmVsYXRlZCB0bz8nIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgIDwvZHQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWVcIj5cbiAgICAgICAgICB7eyBmb3JtR3JvdXAuZ2V0KCdoZWFyaW5nRGF0ZScpPy52YWx1ZSB8IGRhdGU6ICdkZCBNTU0geXl5eScgfX1cbiAgICAgICAgPC9kZD5cbiAgICAgICAgPGRkIGNsYXNzPVwiZ292dWstc3VtbWFyeS1saXN0X19hY3Rpb25zXCI+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwiZ292dWstbGlua1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICAgICAge3sgJ0NoYW5nZScgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2RsPlxuICAgIDxkbCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdCBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tMFwiICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3Jvd1wiPlxuICAgICAgICA8ZHQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX2tleVwiPlxuICAgICAgICAgIHt7IHF1ZXJ5Q3JlYXRlQ29udGV4dCA9PT0gcXVlcnlDcmVhdGVDb250ZXh0RW51bS5ORVdfUVVFUlkgPyAnVXBsb2FkIGEgZmlsZSB0byB0aGUgcXVlcnknIDogJ0RvY3VtZW50IGF0dGFjaGVkJyB8IHJweFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2R0PlxuICAgICAgICA8ZGQgY2xhc3M9XCJnb3Z1ay1zdW1tYXJ5LWxpc3RfX3ZhbHVlIGdvdnVrLXN1bW1hcnktbGlzdF9fdmFsdWUtLWRvY3VtZW50QXR0YWNoZWRcIj5cbiAgICAgICAgICA8Y2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWRcbiAgICAgICAgICAgICpuZ0lmPVwidGhpcy5mb3JtR3JvdXAuZ2V0KCdhdHRhY2htZW50cycpLnZhbHVlXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvY2NkLXF1ZXJ5LWF0dGFjaG1lbnRzLXJlYWQ+XG4gICAgICAgIDwvZGQ+XG4gICAgICAgIDxkZCBjbGFzcz1cImdvdnVrLXN1bW1hcnktbGlzdF9fYWN0aW9uc1wiPlxuICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImdvdnVrLWxpbmtcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cbiAgICAgICAgICAgIHt7ICdDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2RkPlxuICAgICAgPC9kaXY+XG4gICAgPC9kbD5cblxuICAgIDxicj5cblxuICAgIDxkaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZ292dWstYnV0dG9uIGdvdnVrLWJ1dHRvbi0tc2Vjb25kYXJ5IGdvdnVrLSEtbWFyZ2luLXJpZ2h0LTNcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiPlxuICAgICAgICB7eyAnUHJldmlvdXMnIHwgcnB4VHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJnb3Z1ay1idXR0b25cIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic3VibWl0KClcIj5cbiAgICAgICAge3sgJ1N1Ym1pdCcgfCBycHhUcmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8Y2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24gW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJldmVudENvbXBsZXRpb25QYXJhbXNcIj4gICAgXG4gIDwvY2NkLXF1ZXJ5LWV2ZW50LWNvbXBsZXRpb24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -20398,8 +20398,11 @@ class QueryCheckYourAnswersComponent {
|
|
|
20398
20398
|
const createEvent$ = this.createEvent(data);
|
|
20399
20399
|
if (this.queryCreateContext === QueryCreateContext.RESPOND) {
|
|
20400
20400
|
if (this.filteredTasks?.length > 0) {
|
|
20401
|
-
|
|
20402
|
-
|
|
20401
|
+
const completeTask$ = this.workAllocationService.completeTask(this.filteredTasks[0].id, this.caseViewTrigger.name);
|
|
20402
|
+
this.createEventSubscription = forkJoin([createEvent$, completeTask$]).subscribe({
|
|
20403
|
+
next: ([createEventResponse, tasksResponse]) => {
|
|
20404
|
+
this.finaliseSubmission();
|
|
20405
|
+
},
|
|
20403
20406
|
error: (error) => this.handleError(error)
|
|
20404
20407
|
});
|
|
20405
20408
|
}
|
|
@@ -33526,6 +33529,7 @@ class CaseFullAccessViewComponent {
|
|
|
33526
33529
|
// we may need to take care of different triggers in the future
|
|
33527
33530
|
if (trigger.id === CaseViewEventIds.QueryManagementRaiseQuery) {
|
|
33528
33531
|
await this.router.navigate([`/query-management/query/${this.caseDetails.case_id}`]);
|
|
33532
|
+
this.loadingService.unregister(spinner);
|
|
33529
33533
|
}
|
|
33530
33534
|
else if (trigger.id === CaseViewEventIds.DELETE) {
|
|
33531
33535
|
const dialogRef = this.dialog.open(DeleteOrCancelDialogComponent, this.dialogConfig);
|