@bnsights/bbsf-admin-portal 1.0.26 → 1.0.28
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/README.md +3 -3
- package/bnsights-bbsf-admin-portal-1.0.28.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +234 -24
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/ActiveDirectories/active-directory/active-directory.component.js +1 -2
- package/esm2015/lib/Pages/ActiveDirectories/active-directory-add/active-directory-add.component.js +1 -2
- package/esm2015/lib/Pages/authentication/auth-callback/auth-callback.component.js +1 -2
- package/esm2015/lib/Pages/helpCenter/help-center/help-center.component.js +3 -2
- package/esm2015/lib/Pages/providers/provider/provider.component.js +95 -5
- package/esm2015/lib/Pages/sectors/sector/sector.component.js +1 -2
- package/esm2015/lib/Pages/shared/Enums/ProviderType.js +7 -0
- package/esm2015/lib/Pages/shared/Services/provider.service.js +7 -1
- package/esm2015/lib/Pages/shared/config/environment.js +2 -2
- package/esm2015/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.js +3 -0
- package/esm2015/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.js +3 -0
- package/esm2015/lib/Pages/users/users.component.js +1 -2
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-add/workflow-activity-add.component.js +1 -2
- package/esm2015/lib/Pages/workflows/activity/workflow-activity-edit/workflow-activity-edit.component.js +1 -2
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +1 -2
- package/fesm2015/bnsights-bbsf-admin-portal.js +222 -24
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/providers/provider/provider.component.d.ts +23 -1
- package/lib/Pages/shared/Enums/ProviderType.d.ts +5 -0
- package/lib/Pages/shared/Services/provider.service.d.ts +4 -0
- package/lib/Pages/shared/models/ProviderModels/EmailProviderTesterModel.d.ts +7 -0
- package/lib/Pages/shared/models/ProviderModels/SMSProviderTesterModel.d.ts +6 -0
- package/package.json +3 -3
- package/bnsights-bbsf-admin-portal-1.0.26.tgz +0 -0
|
@@ -127,7 +127,6 @@ export class UsersComponent {
|
|
|
127
127
|
return this.userService.EditUser(EditModel);
|
|
128
128
|
};
|
|
129
129
|
this.getSetPAsswordModel = () => {
|
|
130
|
-
debugger;
|
|
131
130
|
let paramArray = [];
|
|
132
131
|
let ResultModel = this.SetUserPasswordForm.value;
|
|
133
132
|
let updatesUsers = [];
|
|
@@ -730,4 +729,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
730
729
|
type: ViewChild,
|
|
731
730
|
args: ['departmentsDDL', { static: false }]
|
|
732
731
|
}] } });
|
|
733
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy91c2Vycy91c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMU4sT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVVsRixNQUFNLE9BQU8sY0FBYztJQThGekIsWUFBb0IsV0FBd0IsRUFBUyxjQUE4QixFQUFVLG9CQUEwQyxFQUFVLGtCQUFzQyxFQUFVLGVBQWdDLEVB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LEtBQUssRUFBRTtnQkFTSCxnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLGdCQUFnQjtzQkFBakUsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsY0FBYztzQkFBN0QsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ291bnRyeSwgQ3VzdG9tVmFsaWRhdGlvbiwgRmlsdGVyVHlwZSwgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgUGhvbmVPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGaWx0ZXJJdGVtLCBQYWdpbmdPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBZGRVc2VyTW9kZWwgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL1VzZXJNb2RlbHMvQWRkVXNlck1vZGVsJztcclxuaW1wb3J0IHsgRHJvcGRvd25zUmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvVXNlck1vZGVscy9Ecm9wZG93bnNSZXNwb25zZU1vZGVsJztcclxuaW1wb3J0IHsgRWRpdFVzZXJNb2RlbCB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvVXNlck1vZGVscy9FZGl0VXNlck1vZGVsJztcclxuaW1wb3J0IHsgdXNlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvU2VydmljZXMvdXNlclNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVzZXJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlcnMuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG4gIEFwaVVybCA9IFwiL2FwaS9hZG1pbi9Vc2Vycy9cIlxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBVc2Vyc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBwZXJtaXNzaW9uU2V0c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBhY2NvdW50U3RhdHVzT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGxvY2tlZFN0YXR1c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBkZXBhcnRtZW50c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgcGVybWlzc2lvblNldHNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgbG9ja2VkU3RhdHVzRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGFjY291bnRTdGF0dXNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgZGVwYXJ0bWVudHNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBVc2VyUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgVXNlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBAVmlld0NoaWxkKCdVc2VyUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBTZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgcGVybWlzc2lvblNldExpc3QgPSBbXTtcclxuICBhY2NvdW50U3RhdHVzTGlzdCA9IFtdO1xyXG4gIGxvY2tlZFN0YXR1c0xpc3QgPSBbXTtcclxuICBkZXBhcnRtZW50c0xpc3QgPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncGVybWlzc2lvblNldERETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwZXJtaXNzaW9uU2V0RERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjY291bnRTdGF0dXNEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWNjb3VudFN0YXR1c0RETDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdsb2NrZWRTdGF0dXNEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgbG9ja2VkU3RhdHVzRERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2RlcGFydG1lbnRzRERMJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRlcGFydG1lbnRzRERMOiBFbGVtZW50UmVmO1xyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZFVzZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkVXNlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEFkZE5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgQWRkTW9iaWxlTnVtYmVyOiBQaG9uZU9wdGlvbnM7XHJcbiAgQWRkVXNlcm5hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZFNhbUFjY291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZFVzZXJEZXBhcnRtZW50OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkU2VuZEFjdGl2YXRpb25FbWFpbDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIEFkZFVzZXJQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICBFZGl0VXNlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0VXNlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEVkaXROYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEVkaXRNb2JpbGVOdW1iZXI6IFBob25lT3B0aW9ucztcclxuICBFZGl0VXNlcm5hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRFbWFpbDogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdFNhbUFjY291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRVc2VyRGVwYXJ0bWVudDogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRVc2VyUGVybWlzc2lvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBVc2VySWQ6IG51bWJlcjtcclxuXHJcblxyXG4gIC8vRGVhY3RpdmF0ZS9BY3RpdmF0ZSBVc2VyIE1vZGVsIENvbnRyb2xzXHJcbiAgU2hvd0FjdGl2YXRlTW9kZWxEYXRhOiBib29sZWFuID0gZmFsc2VcclxuICBBY3RpdmF0b3JEZWFjdGl2YXRlVXNlckxpc3Q6IGFueVtdID0gW11cclxuICBOYW1lOiBzdHJpbmdcclxuICBFbWFpbDogc3RyaW5nXHJcblxyXG4gIC8vUmVzZXQgUGFzc3dvcmQgVXNlciBNb2RlbCBDb250cm9sc1xyXG4gIFJlc2V0UGFzc3dvcmRVc2VyTGlzdDogYW55W10gPSBbXVxyXG5cclxuICAvL3NldCBQYXNzd29yZCBVc2VyIE1vZGVsIENvbnRyb2xzXHJcbiAgU2V0VXNlclBhc3N3b3JkRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIFBhc3N3b3JkOiBUZXh0Qm94T3B0aW9ucztcclxuICBQYXNzd29yZENvbmZpcm1hdGlvbjogVGV4dEJveE9wdGlvbnM7XHJcbiAgY3VzdG9tVmFsaWRhdGlvbjogQ3VzdG9tVmFsaWRhdGlvbiA9IG5ldyBDdXN0b21WYWxpZGF0aW9uKCk7XHJcbiAgc2V0UGFzc3dvcmRVc2VyTGlzdDogYW55W10gPSBbXVxyXG5cclxuICAvL0NvbmZpcm1hdGlvbiAgTW9kZWwgQ29udHJvbHNcclxuICBDb25maXJtYXRpb25Nb2RhbFR5cGU6IG51bWJlciA9IDA7XHJcbiAgQ29uZmlybWF0aW9uTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy9Vc2VycyBzZWxlY3Rpb25cclxuICBhY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkOiBudW1iZXIgPSAwO1xyXG4gIGRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZDogbnVtYmVyID0gMDtcclxuICBzaG93QWN0aXZhdGVCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RGVhY3RpdmF0ZUJ0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dTZXRQYXNzQnRuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1Jlc2V0UGFzc0J0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dTZW5kRW1haWxCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93R2VuZXJhbEJ0bnM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiB1c2VyU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcbiAgIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlVzZXJzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOicvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuXHJcbiAgfVxyXG5cclxuICAgIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldFVzZXJzTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuVXNlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB0aGlzLmFsbFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJwZXJtaXNzaW9uc2V0c1wiXS5zZXRWYWx1ZShbXSk7XHJcbiAgICB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImFjY291bnRzdGF0dXNcIl0uc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJsb2NrZWRzdGF0dXNcIl0uc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJkZXBhcnRtZW50c1wiXS5zZXRWYWx1ZShbXSk7XHJcbiAgICB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcInNlYXJjaFRleHRCb3hcIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiAoaXRlbS5uYW1lLmVuZ2xpc2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICB8fCBpdGVtLm5hbWUuYXJhYmljLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgfHwgaXRlbS51c2VybmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9KVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLlVzZXJQYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAgLy9Jbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG5cclxuICAgIC8vIFBlcm1pc3Npb24gU2V0cyBpbml0ICAgXHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNPcHRpb25zLk5hbWUgPSBcInBlcm1pc3Npb25zZXRzXCJcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNPcHRpb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c09wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c09wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG5cclxuICAgIC8vIEFjY291bnQgU3RhdHVzIGluaXRcclxuICAgIHRoaXMuYWNjb3VudFN0YXR1c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNPcHRpb25zLk5hbWUgPSBcImFjY291bnRzdGF0dXNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzT3B0aW9ucy5MYWJlbEtleSA9IFwiQWNjb3VudFN0YXR1c1wiXHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgLy8gTG9ja2VkIFN0YXR1cyBpbml0XHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c09wdGlvbnMuTmFtZSA9IFwibG9ja2Vkc3RhdHVzXCI7XHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c09wdGlvbnMuTGFiZWxLZXkgPSBcIkxvY2tlZFN0YXR1c1wiO1xyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgLy8gZGVwYXJ0bWVudHMgaW5pdFxyXG4gICAgdGhpcy5kZXBhcnRtZW50c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLmRlcGFydG1lbnRzT3B0aW9ucy5OYW1lID0gXCJkZXBhcnRtZW50c1wiXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzT3B0aW9ucy5MYWJlbEtleSA9IFwiRGVwYXJ0bWVudHNcIlxyXG4gICAgdGhpcy5kZXBhcnRtZW50c09wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlcGFydG1lbnRzT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guRXh0cmFDbGFzc2VzPVwiVXNlcnNcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lT3JFbWFpbFwiKVxyXG5cclxuXHJcbiAgICAvL0ZpbHRlcnNcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJuYW1lRmlsdGVyXCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwicGVybWlzc2lvbnNldHNcIlxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c0ZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJwZXJtaXNzaW9uSWRzXCJcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0XHJcblxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuYWNjb3VudFN0YXR1c0ZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcImFjY291bnRzdGF0dXNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcImFjY291bnRTdGF0dXNJRHNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0XHJcblxyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJsb2NrZWRzdGF0dXNcIlxyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwibG9ja2VkU3RhdHVzSWRzXCJcclxuICAgIHRoaXMubG9ja2VkU3RhdHVzRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuZGVwYXJ0bWVudHNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJkZXBhcnRtZW50c1wiXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcImRlcGFydG1lbnRJZHNcIlxyXG4gICAgdGhpcy5kZXBhcnRtZW50c0ZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5kZXBhcnRtZW50c0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcblxyXG4gICAgdGhpcy5Vc2VyUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuVXNlclBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0VXNlcnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdXHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wicGVybWlzc2lvbnNldHNcIiwgXCJhY2NvdW50c3RhdHVzXCIsIFwibG9ja2Vkc3RhdHVzXCIsIFwiZGVwYXJ0bWVudHNcIl07XHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuRmlsdGVycyA9IFt0aGlzLnBlcm1pc3Npb25TZXRzRmlsdGVyLCB0aGlzLmxvY2tlZFN0YXR1c0ZpbHRlciwgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLCB0aGlzLmRlcGFydG1lbnRzRmlsdGVyLCB0aGlzLlRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuVXNlclBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vTG9hZCBsaXN0cyBmb3IgZmlsdGVyc1xyXG4gIGxvYWRMaXN0cygpIHtcclxuICAgIGlmICghdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQpIHtcclxuICAgICAgdGhpcy51c2VyU2VydmljZS5Mb2FkZHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBsZXQgRHJvcGRvd25zUmVzcG9uc2VNb2RlbCA9IHJlc3VsdCBhcyBEcm9wZG93bnNSZXNwb25zZU1vZGVsO1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICAgIHRoaXMuYWNjb3VudFN0YXR1c0xpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLmFjY291bnRTdGF0dXM7XHJcbiAgICAgICAgdGhpcy5sb2NrZWRTdGF0dXNMaXN0ID0gRHJvcGRvd25zUmVzcG9uc2VNb2RlbC5sb2NrZWRTdGF0dXM7XHJcbiAgICAgICAgdGhpcy5kZXBhcnRtZW50c0xpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLmRlcGFydG1lbnRzO1xyXG5cclxuICAgICAgICBsZXQgcGVybWlzc2lvblNldEVsZW1lbnQgPSB0aGlzLnBlcm1pc3Npb25TZXREREwgYXMgYW55O1xyXG4gICAgICAgIGxldCBhY2NvdW50U3RhdHVzRWxlbWVudCA9IHRoaXMuYWNjb3VudFN0YXR1c0RETCBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGxvY2tlZFN0YXR1c0VsZW1lbnQgPSB0aGlzLmxvY2tlZFN0YXR1c0RETCBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGRlcGFydG1lbnRzRWxlbWVudCA9IHRoaXMuZGVwYXJ0bWVudHNEREwgYXMgYW55O1xyXG5cclxuXHJcbiAgICAgICAgcGVybWlzc2lvblNldEVsZW1lbnQuVXBkYXRlRGF0YVNvdXJjZSh0aGlzLnBlcm1pc3Npb25TZXRMaXN0KTtcclxuXHJcbiAgICAgICAgYWNjb3VudFN0YXR1c0VsZW1lbnQuVXBkYXRlRGF0YVNvdXJjZSh0aGlzLmFjY291bnRTdGF0dXNMaXN0KTtcclxuXHJcbiAgICAgICAgbG9ja2VkU3RhdHVzRWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMubG9ja2VkU3RhdHVzTGlzdCk7XHJcblxyXG4gICAgICAgIGRlcGFydG1lbnRzRWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMuZGVwYXJ0bWVudHNMaXN0KTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuSXNGaWx0ZXJEYXRhTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1VzZXJzIGNoZWNrYm94ZXMgc2VsZWN0aW9uIGZ1bmN0aW9uc1xyXG4gIHNlbGVjdEFsbFVzZXJMaXN0KGV2ZW50LCBVc2VyczogYW55W10pIHtcclxuICAgIGlmICh0aGlzLlVzZXJQYWdpbmdSZXN1bHQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLlVzZXJQYWdpbmdSZXN1bHQuZm9yRWFjaCh1ID0+IHUuc2VsZWN0ZWQgPSBldmVudC5jaGVja2VkKTtcclxuXHJcbiAgICBpZiAoZXZlbnQuY2hlY2tlZCkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVXNlcnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IFVzZXJzW2luZGV4XTtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QucHVzaCh1c2VyKTtcclxuICAgICAgICBpZiAodXNlci5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgKz0gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID0gVXNlcnMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlzQWN0aXZlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KS5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID0gVXNlcnMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiAhaXRlbS5pc0FjdGl2ZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSkubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgICB0aGlzLmRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuYWJsZUJ1dHRvbnMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVVzZXJMaXN0KGV2ZW50LCBVc2VyKSB7XHJcbiAgICB0aGlzLlVzZXJQYWdpbmdSZXN1bHQuZmluZCh1ID0+IHUuaWQgPT09IFVzZXIuaWQpLnNlbGVjdGVkID0gZXZlbnQuY2hlY2tlZDtcclxuICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSB0aGlzLlVzZXJQYWdpbmdSZXN1bHQgIT0gbnVsbCAmJiB0aGlzLlVzZXJQYWdpbmdSZXN1bHQuZXZlcnkodSA9PiB1LnNlbGVjdGVkKTtcclxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdC5wdXNoKFVzZXIpO1xyXG4gICAgICBpZiAoVXNlci5pc0FjdGl2ZSlcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgKz0gMTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZS5pZCA9PSBVc2VyLmlkKSB0aGlzLlNlbGVjdGVkVXNlckxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChVc2VyLmlzQWN0aXZlKVxyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCAtPSAxO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgLT0gMTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5hYmxlQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVXNlckZyb21MaXN0KHVzZXI6IGFueSkge1xyXG4gICAgdGhpcy5Vc2VyUGFnaW5nUmVzdWx0LmZpbmQodSA9PiB1LmlkID09PSB1c2VyLmlkKS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gdGhpcy5TZWxlY3RlZFVzZXJMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0gIT0gdXNlcik7XHJcbiAgICBpZiAodXNlci5pc0FjdGl2ZSlcclxuICAgICAgdGhpcy5hY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkIC09IDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkIC09IDE7XHJcbiAgICB0aGlzLmVuYWJsZUJ1dHRvbnMoKTtcclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVXNlckxpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBlbmFibGVCdXR0b25zKCkge1xyXG4gICAgLy9SZXNldCBhbGwgYnRuc1xyXG4gICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPT0gMCAmJiB0aGlzLmRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dlbmVyYWxCdG5zID0gdHJ1ZTtcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93R2VuZXJhbEJ0bnMgPSBmYWxzZTtcclxuXHJcbiAgICAgIC8vaWYgb25seSBhY3RpdmF0ZWQgdXNlcnNcclxuICAgICAgaWYgKHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA+IDAgJiYgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPT0gMCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RlYWN0aXZhdGVCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1Jlc2V0UGFzc0J0biA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPiAwICYmIHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9PSAwKSAgICAgLy9pZiBvbmx5IGRlQWN0aXZhdGVkIHVzZXJzXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dBY3RpdmF0ZUJ0biA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93U2VuZEVtYWlsQnRuID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPiAwICYmIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID4gMCkgLy9pZiBhY3RpdmF0ZWQgYW5kIGRlYWN0aXZhdGVkIHVzZXJzIHNlbGVjdGVkXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dSZXNldFBhc3NCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NldFBhc3NCdG4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQnV0dG9ucygpIHtcclxuICAgIC8vUmVzZXQgYWxsIGJ0bnNcclxuICAgIHRoaXMuc2hvd0FjdGl2YXRlQnRuID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dEZWFjdGl2YXRlQnRuID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTZW5kRW1haWxCdG4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1Jlc2V0UGFzc0J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U2V0UGFzc0J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93R2VuZXJhbEJ0bnMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRVc2Vyc0NvdW50KCkge1xyXG4gICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5Vc2VyUGFnaW5nUmVzdWx0LmZvckVhY2godSA9PiB1LnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgVXNlclxyXG4gIHNob3dBZGRVc2VyTW9kYWwoYWRkVXNlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5Mb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGxldCBEcm9wZG93bnNSZXNwb25zZU1vZGVsID0gcmVzdWx0IGFzIERyb3Bkb3duc1Jlc3BvbnNlTW9kZWw7XHJcbiAgICAgIC8vU2V0IHJlcXVpcmVkIGxpc3RzXHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICB0aGlzLmRlcGFydG1lbnRzTGlzdCA9IERyb3Bkb3duc1Jlc3BvbnNlTW9kZWwuZGVwYXJ0bWVudHM7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZFVzZXJGb3JtXHJcbiAgICAgIHRoaXMuQWRkVXNlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFVzZXJNb2RlbDtcclxuICAgICAgdGhpcy5BZGRVc2VyRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRVc2VyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkVXNlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG5cclxuICAgICAgdGhpcy5BZGROYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5OYW1lID0gXCJBZGROYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGROYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuVmFsdWUgPSBudWxsO1xyXG5cclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIgPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIuTmFtZSA9IFwiQWRkTW9iaWxlTnVtYmVyXCJcclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIuTGFiZWxLZXkgPSBcIk1vYmlsZU51bWJlclwiXHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLkV4dHJhQ2xhc3NlcyA9IFwiZm9ybS1jb250cm9sIGJuc2lnaHRzLWNvbnRyb2xcIlxyXG4gICAgICB0aGlzLkFkZE1vYmlsZU51bWJlci5TZWxlY3RlZENvdW50cnlJU08gPSBDb3VudHJ5LlVuaXRlZEFyYWJFbWlyYXRlc1xyXG4gICAgICB0aGlzLkFkZE1vYmlsZU51bWJlci5QaG9uZVZhbGlkYXRpb24gPSB0cnVlXHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLkFsbG93U2VhcmNoID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5BZGRVc2VybmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRVc2VybmFtZS5OYW1lID0gXCJBZGRVc2VybmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lLkxhYmVsS2V5ID0gXCJVc2VybmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgIHRoaXMuQWRkVXNlcm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFNhbUFjY291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50LlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50Lk5hbWUgPSBcIkFkZFNhbUFjY291bnRcIjtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50LkxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuQWRkU2FtQWNjb3VudC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50Lk5hbWUgPSBcIkFkZERlcGFydG1lbnRJRFwiXHJcbiAgICAgIHRoaXMuQWRkVXNlckRlcGFydG1lbnQuTGFiZWxLZXkgPSBcIkRlcGFydG1lbnRcIlxyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LkRhdGFTb3VyY2UgPSB0aGlzLmRlcGFydG1lbnRzTGlzdFxyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTZW5kQWN0aXZhdGlvbkVtYWlsLk5hbWUgPSBcIkFkZFNlbmRBY3RpdmF0aW9uTWFpbFwiXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbC5MYWJlbEtleSA9IFwiU2VuZEFjdGl2YXRpb25FbWFpbFwiXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbC5WYWx1ZSA9IGZhbHNlXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbFxyXG5cclxuXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5OYW1lID0gXCJBZGRQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25zLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5EYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oYWRkVXNlck1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QWRkVXNlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZFVzZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEFkZE1vZGVsID0gbmV3IEFkZFVzZXJNb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuVXNlcm5hbWUgPSBSZXN1bHRNb2RlbC5BZGRVc2VybmFtZTtcclxuICAgIEFkZE1vZGVsLk5hbWVBUiA9IFJlc3VsdE1vZGVsLkFkZE5hbWUuQXJhYmljO1xyXG4gICAgQWRkTW9kZWwuTmFtZUVOID0gUmVzdWx0TW9kZWwuQWRkTmFtZS5FbmdsaXNoO1xyXG4gICAgQWRkTW9kZWwuU2FtQWNjb3VudCA9IFJlc3VsdE1vZGVsLkFkZFNhbUFjY291bnQ7XHJcbiAgICBBZGRNb2RlbC5Pcmdhbml6YXRpb25JRCA9IDE7XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuQWRkRGVwYXJ0bWVudElEICE9IHVuZGVmaW5lZClcclxuICAgICAgQWRkTW9kZWwuRGVwYXJ0bWVudElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlcGFydG1lbnRJRCk7XHJcbiAgICBsZXQgUGVybWlzc2lvblNldHMgPSBSZXN1bHRNb2RlbC5BZGRQZXJtaXNzaW9uU2V0cyBhcyBzdHJpbmdbXVxyXG4gICAgQWRkTW9kZWwuUGVybWlzc2lvblNldHMgPSBQZXJtaXNzaW9uU2V0cy5tYXAoKGkpID0+IE51bWJlcihpKSk7XHJcbiAgICBBZGRNb2RlbC5TZW5kQWN0aXZhdGlvbk1haWwgPSBSZXN1bHRNb2RlbC5BZGRTZW5kQWN0aXZhdGlvbk1haWw7XHJcbiAgICBsZXQgaW50ZXJuYXRpb25hbE51bWJlcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmIChSZXN1bHRNb2RlbC5BZGRNb2JpbGVOdW1iZXIgIT0gbnVsbCkge1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gUmVzdWx0TW9kZWwuQWRkTW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBBZGRNb2RlbC5QaG9uZUlucHV0TW9iaWxlID0gaW50ZXJuYXRpb25hbE51bWJlcjtcclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZFVzZXJGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5BZGRVc2VyKEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRWRpdCBVc2VyXHJcbiAgc2hvd0VkaXRVc2VyTW9kYWwodXNlcklEOiBudW1iZXIsdXNlcklERW5jOnN0cmluZywgRWRpdFVzZXJNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuVXNlcklkID0gdXNlcklEXHJcblxyXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRFZGl0VXNlcih1c2VySURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgdXNlciA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG5cclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IGxpc3RzLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICB0aGlzLmRlcGFydG1lbnRzTGlzdCA9IGxpc3RzLmRlcGFydG1lbnRzO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0VXNlckZvcm1cclxuICAgICAgdGhpcy5FZGl0VXNlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRVc2VyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRVc2VyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vblN1Ym1pdFN1Y2Nlc3M7XHJcblxyXG5cclxuXHJcbiAgICAgIGxldCBOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgTmFtZS5BcmFiaWMgPSB1c2VyLm5hbWVBUjtcclxuICAgICAgTmFtZS5FbmdsaXNoID0gdXNlci5uYW1lRU47XHJcblxyXG4gICAgICB0aGlzLkVkaXROYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTmFtZSA9IFwiRWRpdE5hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuVmFsdWUgPSBOYW1lO1xyXG5cclxuICAgICAgdGhpcy5FZGl0TW9iaWxlTnVtYmVyID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuVmFsdWUgPSB1c2VyLm1vYmlsZSBhcyBzdHJpbmc7XHJcbiAgICAgIHRoaXMuRWRpdE1vYmlsZU51bWJlci5OYW1lID0gXCJFZGl0TW9iaWxlTnVtYmVyXCJcclxuICAgICAgdGhpcy5FZGl0TW9iaWxlTnVtYmVyLkxhYmVsS2V5ID0gXCJNb2JpbGVOdW1iZXJcIlxyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuRXh0cmFDbGFzc2VzID0gXCJmb3JtLWNvbnRyb2wgYm5zaWdodHMtY29udHJvbFwiXHJcbiAgICAgIHRoaXMuRWRpdE1vYmlsZU51bWJlci5TZWxlY3RlZENvdW50cnlJU08gPSBDb3VudHJ5LlVuaXRlZEFyYWJFbWlyYXRlc1xyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuUGhvbmVWYWxpZGF0aW9uID0gdHJ1ZVxyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuQWxsb3dTZWFyY2ggPSB0cnVlXHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuVmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xyXG4gICAgICB0aGlzLkVkaXRVc2VybmFtZS5OYW1lID0gXCJFZGl0VXNlcm5hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuTGFiZWxLZXkgPSBcIlVzZXJuYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJuYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRFbWFpbCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbC5WYWx1ZSA9IHVzZXIuZW1haWw7XHJcbiAgICAgIHRoaXMuRWRpdEVtYWlsLk5hbWUgPSBcIkVkaXRFbWFpbFwiO1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbC5MYWJlbEtleSA9IFwiRW1haWxcIjtcclxuICAgICAgdGhpcy5FZGl0RW1haWwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFNhbUFjY291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U2FtQWNjb3VudC5WYWx1ZSA9IHVzZXIuc2FtQWNjb3VudDtcclxuICAgICAgdGhpcy5FZGl0U2FtQWNjb3VudC5OYW1lID0gXCJFZGl0U2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLkVkaXRTYW1BY2NvdW50LkxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuRWRpdFNhbUFjY291bnQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJEZXBhcnRtZW50ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5OYW1lID0gXCJFZGl0RGVwYXJ0bWVudElEXCJcclxuICAgICAgdGhpcy5FZGl0VXNlckRlcGFydG1lbnQuTGFiZWxLZXkgPSBcIkRlcGFydG1lbnRcIlxyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5TZWxlY3RlZEl0ZW1zID0gdGhpcy5kZXBhcnRtZW50c0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gdXNlci5kZXBhcnRtZW50SUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5EYXRhU291cmNlID0gdGhpcy5kZXBhcnRtZW50c0xpc3RcclxuICAgICAgdGhpcy5FZGl0VXNlckRlcGFydG1lbnQuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VXNlckRlcGFydG1lbnQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvbnMuTmFtZSA9IFwiRWRpdFBlcm1pc3Npb25TZXRzXCJcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5TZWxlY3RlZEl0ZW1zID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoZnVuY3Rpb24gKHRhZykge1xyXG4gICAgICAgIHJldHVybiB1c2VyLnBlcm1pc3Npb25JRHMuaW5kZXhPZihwYXJzZUludCh0YWcua2V5KSkgPj0gMDtcclxuICAgICAgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSk7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5EYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdFVzZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEVkaXRVc2VyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdFVzZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBFZGl0VXNlck1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSB0aGlzLlVzZXJJZDtcclxuICAgIEVkaXRNb2RlbC5Vc2VybmFtZSA9IFJlc3VsdE1vZGVsLkVkaXRVc2VybmFtZTtcclxuICAgIEVkaXRNb2RlbC5FbWFpbCA9IFJlc3VsdE1vZGVsLkVkaXRFbWFpbDtcclxuICAgIEVkaXRNb2RlbC5OYW1lQVIgPSBSZXN1bHRNb2RlbC5FZGl0TmFtZS5BcmFiaWM7XHJcbiAgICBFZGl0TW9kZWwuTmFtZUVOID0gUmVzdWx0TW9kZWwuRWRpdE5hbWUuRW5nbGlzaDtcclxuICAgIEVkaXRNb2RlbC5TYW1BY2NvdW50ID0gUmVzdWx0TW9kZWwuRWRpdFNhbUFjY291bnQ7XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuRWRpdERlcGFydG1lbnRJRCAhPSB1bmRlZmluZWQpXHJcbiAgICAgIEVkaXRNb2RlbC5EZXBhcnRtZW50SUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdERlcGFydG1lbnRJRCk7XHJcbiAgICBsZXQgUGVybWlzc2lvblNldHMgPSBSZXN1bHRNb2RlbC5FZGl0UGVybWlzc2lvblNldHMgYXMgc3RyaW5nW11cclxuICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uSURzID0gUGVybWlzc2lvblNldHMubWFwKChpKSA9PiBOdW1iZXIoaSkpO1xyXG4gICAgbGV0IGludGVybmF0aW9uYWxOdW1iZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuRWRpdE1vYmlsZU51bWJlciAhPSBudWxsKSB7XHJcbiAgICAgIGludGVybmF0aW9uYWxOdW1iZXIgPSBSZXN1bHRNb2RlbC5FZGl0TW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBFZGl0TW9kZWwuTW9iaWxlID0gaW50ZXJuYXRpb25hbE51bWJlcjtcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFVzZXJGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuRWRpdFVzZXIoRWRpdE1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9FeHBvcnQgdXNlcnMgZXhjZWxcclxuICBleHBvcnRFeGNlbCgpIHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChcInBlcm1pc3Npb25JZHNcIiwgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJwZXJtaXNzaW9uc2V0c1wiXS52YWx1ZSA9PSB1bmRlZmluZWQgPyBcIlwiIDogdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJwZXJtaXNzaW9uc2V0c1wiXS52YWx1ZSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFwiYWNjb3VudFN0YXR1c0lEc1wiLCB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImFjY291bnRzdGF0dXNcIl0udmFsdWUgPT0gdW5kZWZpbmVkID8gXCJcIiA6IHRoaXMuVXNlcnNGb3JtLmNvbnRyb2xzW1wiYWNjb3VudHN0YXR1c1wiXS52YWx1ZSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFwibG9ja2VkU3RhdHVzSWRzXCIsIHRoaXMuVXNlcnNGb3JtLmNvbnRyb2xzW1wibG9ja2Vkc3RhdHVzXCJdLnZhbHVlID09IHVuZGVmaW5lZCA/IFwiXCIgOiB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImxvY2tlZHN0YXR1c1wiXS52YWx1ZSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFwiZGVwYXJ0bWVudElkc1wiLCB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImRlcGFydG1lbnRzXCJdLnZhbHVlID09IHVuZGVmaW5lZCA/IFwiXCIgOiB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImRlcGFydG1lbnRzXCJdLnZhbHVlKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoXCJuYW1lRmlsdGVyXCIsIHRoaXMuVXNlcnNGb3JtLmNvbnRyb2xzW1wic2VhcmNoVGV4dEJveFwiXS52YWx1ZSA9PSB1bmRlZmluZWQgPyBcIlwiIDogdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJzZWFyY2hUZXh0Qm94XCJdLnZhbHVlKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuRXhwb3J0KHBhcmFtcykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IEZpbGVEVE8gPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbRmlsZURUT10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB9KTtcclxuICAgICAgbGV0IGZpbGVOYW1lID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVXNlcnNcIikgKyBcIi54bHN4XCI7XHJcbiAgICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuXHJcblxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICAvL09uZSB1c2VyIGZ1bmN0aW9uc1xyXG5cclxuICAvL0FjdGl2YXRpb24gYW5kIGRlYWN0aXZhdGlvbiBmdW5jdGlvbnNcclxuICBzaG93QWN0aXZhdGVVc2VyTW9kYWwoVXNlcjogYW55LCBpc0FjdGl2YXRlTW9kZWw6IGJvb2xlYW4sIEFjdGl2YXRlVXNlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpXHJcbiAgICB0aGlzLkFjdGl2YXRvckRlYWN0aXZhdGVVc2VyTGlzdCA9IFtdXHJcbiAgICB0aGlzLkFjdGl2YXRvckRlYWN0aXZhdGVVc2VyTGlzdC5wdXNoKFVzZXIpO1xyXG4gICAgdGhpcy5OYW1lID0gVXNlci5uYW1lU3RyO1xyXG4gICAgdGhpcy5FbWFpbCA9IFVzZXIuZW1haWw7XHJcbiAgICB0aGlzLlNob3dBY3RpdmF0ZU1vZGVsRGF0YSA9IGlzQWN0aXZhdGVNb2RlbFxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBY3RpdmF0ZVVzZXJNb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLkFjdGl2YXRlVXNlcnModGhpcy5BY3RpdmF0b3JEZWFjdGl2YXRlVXNlckxpc3QpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZGVhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuRGVhY3RpdmF0ZVVzZXJzKHRoaXMuQWN0aXZhdG9yRGVhY3RpdmF0ZVVzZXJMaXN0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgICAgZWxlbWVudC5VcGRhdGVQYWdpbmcoKTtcclxuICAgICAgdGhpcy5yZXNldFVzZXJzQ291bnQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vUmVzZXQgUGFzc3dvcmQgZnVuY3Rpb25cclxuICBzaG93UmVzZXRQYXNzd29yZFVzZXJNb2RhbChVc2VyOiBhbnksIFJlc2V0UGFzc3dvcmRVc2VyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuUmVzZXRQYXNzd29yZFVzZXJMaXN0ID0gW11cclxuICAgIHRoaXMuUmVzZXRQYXNzd29yZFVzZXJMaXN0LnB1c2goVXNlcik7XHJcbiAgICB0aGlzLk5hbWUgPSBVc2VyLm5hbWVTdHI7XHJcbiAgICB0aGlzLkVtYWlsID0gVXNlci5lbWFpbFxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSZXNldFBhc3N3b3JkVXNlck1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRQYXNzd29yZCgpIHtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLlJlc2V0VXNlcnNQYXNzd29yZCh0aGlzLlJlc2V0UGFzc3dvcmRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgLy9TZW5kIGFjdGl2YXRpb24gbWFpbCBmdW5jdGlvblxyXG4gIHNob3dTZW5kQWN0aXZhdGlvbkVtYWlsTW9kYWwoVXNlcjogYW55LCBTZW5kQWN0aXZhdGlvbkVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdXHJcbiAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QucHVzaChVc2VyKTtcclxuICAgIHRoaXMuTmFtZSA9IFVzZXIubmFtZVN0cjtcclxuICAgIHRoaXMuRW1haWwgPSBVc2VyLmVtYWlsXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFNlbmRBY3RpdmF0aW9uRW1haWxNb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2VuZEFjdGl2YXRpb25FbWFpbEZvclVzZXIoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLlNlbmRBY3RpdmF0aW9uRW1haWxGb3JVc2VyKHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QgPSBbXTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIC8vU2V0IHBhc3N3b3JkIGZ1bmN0aW9uXHJcblxyXG4gIHNob3dzZXRQYXNzd29yZFVzZXJNb2RhbChVc2VyOiBhbnksIHNldFBhc3N3b3JkVXNlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybVxyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRTZXRQQXNzd29yZE1vZGVsO1xyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldFNldFBhc3N3b3JkRnVuY3Rpb247XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlO1xyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vblN1Ym1pdFN1Y2Nlc3M7XHJcblxyXG4gICAgdGhpcy5zZXRQYXNzd29yZFVzZXJMaXN0ID0gW107XHJcbiAgICB0aGlzLnNldFBhc3N3b3JkVXNlckxpc3QucHVzaChVc2VyKTtcclxuICAgIHRoaXMuTmFtZSA9IFVzZXIubmFtZVN0cjtcclxuICAgIHRoaXMuRW1haWwgPSBVc2VyLmVtYWlsO1xyXG5cclxuICAgIHRoaXMuUGFzc3dvcmQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuUGFzc3dvcmQuTmFtZSA9IFwiUGFzc3dvcmRcIjtcclxuICAgIHRoaXMuUGFzc3dvcmQuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuUGFzc3dvcmQuVHlwZSA9IElucHV0VHlwZS5QYXNzd29yZDtcclxuICAgIHRoaXMuUGFzc3dvcmQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSA9IChjb250cm9sKSA9PiB7XHJcbiAgICAgIGxldCBQYXNzd29yZCA9IHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybS5jb250cm9sc1tcIlBhc3N3b3JkXCJdLnZhbHVlO1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPSBQYXNzd29yZClcclxuICAgICAgICByZXR1cm4geyAnY3VzdG9tZXJFcnJvcic6IHRydWUgfTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZE5vdE1hdGNoXCIpO1xyXG5cclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uTmFtZSA9IFwiUGFzc3dvcmRDb25maXJtYXRpb25cIjtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uVHlwZSA9IElucHV0VHlwZS5QYXNzd29yZDtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLlBhc3N3b3JkQ29uZmlybWF0aW9uLkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5jdXN0b21WYWxpZGF0aW9uXTtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHNldFBhc3N3b3JkVXNlck1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcbiAgZ2V0U2V0UEFzc3dvcmRNb2RlbCA9ICgpID0+IHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm0udmFsdWU7XHJcbiAgICBsZXQgdXBkYXRlc1VzZXJzID0gW107XHJcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5zZXRQYXNzd29yZFVzZXJMaXN0Lmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICB2YXIgZWxlbWVudCA9IHRoaXMuc2V0UGFzc3dvcmRVc2VyTGlzdFtpbmRleF07XHJcbiAgICAgIGVsZW1lbnQuUGFzc3dvcmQgPSBSZXN1bHRNb2RlbC5QYXNzd29yZDtcclxuICAgICAgZWxlbWVudC5QYXNzd29yZENvbmZpcm1hdGlvbiA9IFJlc3VsdE1vZGVsLlBhc3N3b3JkQ29uZmlybWF0aW9uO1xyXG4gICAgICB1cGRhdGVzVXNlcnMucHVzaChlbGVtZW50KTtcclxuICAgIH1cclxuICAgIHBhcmFtQXJyYXkucHVzaCh1cGRhdGVzVXNlcnMpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRTZXRQYXNzd29yZEZ1bmN0aW9uID0gKHBhc3N3b3JkTGlzdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLlNldFVzZXJzUGFzc3dvcmQocGFzc3dvcmRMaXN0TW9kZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXRTdWNjZXNzID0gKHJlc3VsdCkgPT4ge1xyXG4gICAgdGhpcy5yZXNldFVzZXJzQ291bnQoKTtcclxuICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvL1VzZXJzIExpc3QgRnVuY3Rpb25zXHJcblxyXG4gIC8vU2hvdyBhY3RpdmF0ZSxkZWFjdGl2YXRlLHJlc2V0UGFzc3dvcmQsc2VuZGFjdGl2YXRpb25lbWFpbCBtb2RhbHNcclxuICBzaG93Q29uZmlybWF0aW9uTW9kYWwodHlwZTogbnVtYmVyLCBDb25maXJtYXRpb25Nb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlIDE6XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25NZXNzYWdlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZhdGVDb25maXJtYXRpb25cIik7XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbFR5cGUgPSAxXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgMjpcclxuICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbk1lc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlQ29uZmlybWF0aW9uXCIpO1xyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxUeXBlID0gMlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDM6XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25NZXNzYWdlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZENvbmZpcm1hdGlvblwiKTtcclxuICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsVHlwZSA9IDNcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSA0OlxyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRBY3RpdmF0aW9uTWFpbENvbmZpcm1hdGlvblwiKTtcclxuICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsVHlwZSA9IDRcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmZpcm1hdGlvbk1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcbiAgfVxyXG4gIC8vQWN0aXZhdGUgdXNlcnMgbGlzdFxyXG4gIGFjdGl2YXRlVXNlckxpc3QoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLkFjdGl2YXRlVXNlcnModGhpcy5TZWxlY3RlZFVzZXJMaXN0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICAgIC8vRGVhY3RpdmF0ZSB1c2VycyBsaXN0XHJcbiAgZGVhY3RpdmF0ZVVzZXJMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5EZWFjdGl2YXRlVXNlcnModGhpcy5TZWxlY3RlZFVzZXJMaXN0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICAvL1Jlc2V0IHBhc3N3b3JkcyB1c2VycyBsaXN0XHJcbiAgcmVzZXRVc2VyUGFzc3dvcmRMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5SZXNldFVzZXJzUGFzc3dvcmQodGhpcy5TZWxlY3RlZFVzZXJMaXN0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48ZGl2ICpuZ0lmPVwiU2hvd1BhZ2VDb250ZW50XCIgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICA8IS0tIGJlZ2luOjpIZWFkZXIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgPGRpdiAgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiVXNlcnNGb3JtXCI+XHJcbiAgICAgICAgICA8IS0tIChPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiAtLT5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggIFtvcHRpb25zXT1cInNlYXJjaFRleHRCb3hcIiBbZ3JvdXBdPVwiVXNlcnNGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46Ok1lbnUgLS0+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dHZW5lcmFsQnRuc1wiIG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBTaG93UGFnZUNvbnRlbnQ9PXRydWU/J2Jsb2NrJzonbm9uZSd9XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2FkTGlzdHMoKVwiIG5nYkRyb3Bkb3duVG9nZ2xlIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBpZD1cIkZpbHRlcnNEcm9wZG93blwiIHRpdGxlPVwiRmlsdGVyXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWZpbHRlciBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJGaWx0ZXJcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiRmlsdGVyc0Ryb3Bkb3duXCIgIGNsYXNzPVwiIGZpbHRlci1jb250YWluZXIgbWVudSBtZW51LXN1YiBtZW51LXN1Yi1kcm9wZG93biBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1ncmF5LTgwMCBtZW51LXN0YXRlLWJnLWxpZ2h0LXByaW1hcnkgIHctMjUwcHggdy1tZC01MDBweCBmdy1ib2xkIHB5LTMgZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiVXNlcnNGb3JtXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTcgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjcGVybWlzc2lvblNldERETCBbb3B0aW9uc109XCJwZXJtaXNzaW9uU2V0c09wdGlvbnNcIiBbZ3JvdXBdPVwiVXNlcnNGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNhY2NvdW50U3RhdHVzRERMIFtvcHRpb25zXT1cImFjY291bnRTdGF0dXNPcHRpb25zXCIgW2dyb3VwXT1cIlVzZXJzRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjbG9ja2VkU3RhdHVzRERMIFtvcHRpb25zXT1cImxvY2tlZFN0YXR1c09wdGlvbnNcIiBbZ3JvdXBdPVwiVXNlcnNGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNkZXBhcnRtZW50c0RETCBbb3B0aW9uc109XCJkZXBhcnRtZW50c09wdGlvbnNcIiBbZ3JvdXBdPVwiVXNlcnNGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnkgcHYtcmVzZXQgYnRuLXNtXCIgaWQ9XCJhcHBseUZpbHRlcnNCdG5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJlc2V0XCIpfX1cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dHZW5lcmFsQnRuc1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydEV4Y2VsKClcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtMyBibnNpZ2h0cy1idG4tZXhwb3J0XCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRXhwb3J0XCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRXhwb3J0XCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0FjdGl2YXRlQnRuXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuQWN0aXZhdGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwic2hvd0NvbmZpcm1hdGlvbk1vZGFsKDEsIENvbmZpcm1hdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1oaXN0b3J5XCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmF0ZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dEZWFjdGl2YXRlQnRuXCIgdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuRGVhY3RpdmF0ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJzaG93Q29uZmlybWF0aW9uTW9kYWwoMiwgQ29uZmlybWF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBvd2VyLW9mZlwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1Jlc2V0UGFzc0J0blwiIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blJlc2V0UGFzc1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJzaG93Q29uZmlybWF0aW9uTW9kYWwoMywgQ29uZmlybWF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNvZ1wiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZXNldFBhc3N3b3JkXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd1NlbmRFbWFpbEJ0blwiIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blJlc2VuZEFjdGl2YXRpb25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwic2hvd0NvbmZpcm1hdGlvbk1vZGFsKDQgLCBDb25maXJtYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZW52ZWxvcGVcIj48L2k+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRBY3RpdmF0aW9uRW1haWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93R2VuZXJhbEJ0bnNcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgdGl0bGU9XCJBZGRcIiAoY2xpY2spPVwic2hvd0FkZFVzZXJNb2RhbChhZGRVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwhLS0gZW5kOjpNZW51IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBlbmQ6OkhlYWRlciAtLT5cclxuICAgIDwhLS0gYmVnaW46OkJvZHkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgPCEtLSBiZWdpbjo6VGFibGUgY29udGFpbmVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHVzZXJzLXRhYmxlXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwidy01MHB4XCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLXNtIGZvcm0tY2hlY2stY3VzdG9tIGZvcm0tY2hlY2stc29saWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwic2VsZWN0QWxsVXNlckxpc3QoJGV2ZW50LGNsaWVudFNpZGVQYWdpbmdSZXN1bHQpXCIgW2NoZWNrZWRdPVwiYWxsU2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIChjaGFuZ2UpPVwic2VsZWN0QWxsVXNlckxpc3QoJGV2ZW50LFVzZXJQYWdpbmdSZXN1bHQpXCIgaWQ9XCJjaGtfU2VsZWN0QWxsXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgJm5ic3A7PHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW1haWxcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJNb2JpbGVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSb2xlc1wiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlN0YXR1c1wiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHVzZXIgb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1zbSBmb3JtLWNoZWNrLWN1c3RvbSBmb3JtLWNoZWNrLXNvbGlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLTxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAoY2hhbmdlKT1cInVwZGF0ZVVzZXJMaXN0KCRldmVudCx1c2VyKVwiIGlkPVwiVXNlci17e3VzZXIuaWR9fVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwidXBkYXRlVXNlckxpc3QoJGV2ZW50LHVzZXIpXCIgWyhuZ01vZGVsKV09XCJ1c2VyLnNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwic3ltYm9sLWxhYmVsIGZvbnQtc2l6ZS1oNSBmb250LXdlaWdodC1ib2xkIGJnLWxpZ2h0LXByaW1hcnkgbWwtMiBtYi0wIG1lLTNcIj5BPC9oNj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNob3dFZGl0VXNlck1vZGFsKHVzZXIuaWQsdXNlci5pZEVuY3J5cHRlZCxFZGl0VXNlck1vZGFsKVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cInRleHQtZGFyayBmdy1ib2xkZXIgdGV4dC1ob3Zlci1wcmltYXJ5IGZzLTZcIj57e3VzZXIubmFtZVN0cn19PC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7dXNlci51c2VybmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3t1c2VyLm1vYmlsZX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3t1c2VyLnBlcm1pc3Npb25zZXR9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzXCIgKm5nSWY9XCJ1c2VyLmlzQWN0aXZlPT10cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2ZVwiKX19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiICpuZ0lmPVwidXNlci5pc0FjdGl2ZT09ZmFsc2UmJiB1c2VyLmFjdGl2YXRpb25EYXRlIT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlYWN0aXZhdGVkXCIpfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtd2FybmluZ1wiICpuZ0lmPVwidXNlci5pc0FjdGl2ZT09ZmFsc2UmJiB1c2VyLmFjdGl2YXRpb25EYXRlPT1udWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBlbmRpbmdBY3RpdmF0aW9uXCIpfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWVudS1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdFVzZXJNb2RhbCh1c2VyLmlkLHVzZXIuaWRFbmNyeXB0ZWQsRWRpdFVzZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiICpuZ0lmPVwidXNlci5pc0FjdGl2ZVwiIGlkPVwiYnRuRGVhY3RpdmF0ZVwiIChjbGljayk9XCJzaG93QWN0aXZhdGVVc2VyTW9kYWwodXNlcixmYWxzZSxBY3RpdmF0ZVVzZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIGlkPVwiYnRuYWN0aXZhdGVcIiAoY2xpY2spPVwic2hvd0FjdGl2YXRlVXNlck1vZGFsKHVzZXIsdHJ1ZSxBY3RpdmF0ZVVzZXJNb2RhbClcIiAqbmdJZj1cIiF1c2VyLmlzQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZhdGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cIm1lbnUtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIiAoY2xpY2spPVwic2hvd1Jlc2V0UGFzc3dvcmRVc2VyTW9kYWwodXNlciAsIFJlc2V0UGFzc3dvcmRVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cIm1lbnUtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIiAoY2xpY2spPVwic2hvd3NldFBhc3N3b3JkVXNlck1vZGFsKHVzZXIsIHNldFBhc3N3b3JkVXNlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNldFBhc3N3b3JkXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCIgKm5nSWY9XCIhdXNlci5pc0FjdGl2ZSYmdXNlci5hY3RpdmF0aW9uRGF0ZT09bnVsbFwiIChjbGljayk9XCJzaG93U2VuZEFjdGl2YXRpb25FbWFpbE1vZGFsKHVzZXIgLCBTZW5kQWN0aXZhdGlvbkVtYWlsTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VuZEFjdGl2YXRpb25FbWFpbFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNlwiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8IS0tIGVuZDo6VGFibGUgLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGVuZDo6VGFibGUgY29udGFpbmVyIC0tPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDwhLS0gYmVnaW4gcGFnaW5nLS0+XHJcbiAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0VXNlcnNMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgW29wdGlvbnNdPVwiVXNlclBhZ2luZ1wiXHJcbiAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiVXNlcnNGb3JtXCIgI1VzZXJQYWdpbmdWaWV3RWxlbWVudD5cclxuICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgPCEtLSBFbmQgcGFnaW5nLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuPCEtLSBhZGQgdXNlci0tPlxyXG48bmctdGVtcGxhdGUgI2FkZFVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkVXNlclwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRVc2VyRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPEJCU0YtTXVsdGlMaW5ndWFsVGV4dEJveCBbb3B0aW9uc109XCJBZGROYW1lXCIgW2dyb3VwXT1cIkFkZFVzZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiQWRkVXNlcm5hbWVcIiBbZ3JvdXBdPVwiQWRkVXNlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJBZGRTYW1BY2NvdW50XCIgW2dyb3VwXT1cIkFkZFVzZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVBob25lIFtvcHRpb25zXT1cIkFkZE1vYmlsZU51bWJlclwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1QaG9uZT5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFVzZXJEZXBhcnRtZW50XCIgW2dyb3VwXT1cIkFkZFVzZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPEJCU0YtVG9nZ2xlc2xpZGUgW29wdGlvbnNdPVwiQWRkU2VuZEFjdGl2YXRpb25FbWFpbFwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1Ub2dnbGVzbGlkZT5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFVzZXJQZXJtaXNzaW9uc1wiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI0Nsb3NlVXNlck1vZGFsIGlkPVwiQ2xvc2VVc2VyTW9kYWxcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19IDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcblxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFZGl0IHVzZXItLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0VXNlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0VXNlclwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJFZGl0VXNlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRWRpdE5hbWVcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLU11bHRpTGluZ3VhbFRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVBob25lIFtvcHRpb25zXT1cIkVkaXRNb2JpbGVOdW1iZXJcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLVBob25lPlxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRVc2VybmFtZVwiIFtncm91cF09XCJFZGl0VXNlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0RW1haWxcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdFNhbUFjY291bnRcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0VXNlckRlcGFydG1lbnRcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRVc2VyUGVybWlzc2lvbnNcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiICNDbG9zZUVkaXRVc2VyTW9kYWwgaWQ9XCJDbG9zZUVkaXRVc2VyTW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcblxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tIERlYWN0aXZhdGUvQWN0aXZhdGUgVXNlciBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNBY3RpdmF0ZVVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCIgKm5nSWY9XCIhU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlYWN0aXZhdGVcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCIgKm5nSWY9XCJTaG93QWN0aXZhdGVNb2RlbERhdGFcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZhdGVcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC13YXJuaW5nIHJvdW5kZWQgYm9yZGVyLXdhcm5pbmcgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OlN2ZyBJY29uIHwgcGF0aDogaWNvbnMvZHVvdHVuZS9nZW5lcmFsL2dlbjA0NC5zdmctLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8IS0tZW5kOjpTdmcgSWNvbi0tPlxyXG4gICAgICA8IS0tZW5kOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6V3JhcHBlci0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICA8IS0tYmVnaW46OkNvbnRlbnQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiICpuZ0lmPVwiIVNob3dBY3RpdmF0ZU1vZGVsRGF0YVwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlQ29uZmlybWF0aW9uXCIpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiICpuZ0lmPVwiU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2YXRlQ29uZmlybWF0aW9uXCIpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1lbmQ6OkNvbnRlbnQtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS1lbmQ6OldyYXBwZXItLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBpZD1cIlwiIGNsYXNzPVwiXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGlkPVwidGFibGVDb25maXJtYXRpb25cIiBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVtYWlsXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ckl0ZW1cIj5cclxuICAgICAgICAgICAgICA8dGQ+e3tOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57e0VtYWlsfX08L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI0Nsb3NlQWN0aXZhdGVVc2VyTW9kYWwgaWQ9XCJDbG9zZUFjdGl2YXRlVXNlck1vZGFsXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fSA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCIhU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCIgKGNsaWNrKT1cImRlYWN0aXZhdGUoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCIgKGNsaWNrKT1cImFjdGl2YXRlKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tIFJlc2V0UGFzc3dvcmQgVXNlciBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNSZXNldFBhc3N3b3JkVXNlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZXNldFBhc3N3b3JkXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC13YXJuaW5nIHJvdW5kZWQgYm9yZGVyLXdhcm5pbmcgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OlN2ZyBJY29uIHwgcGF0aDogaWNvbnMvZHVvdHVuZS9nZW5lcmFsL2dlbjA0NC5zdmctLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8IS0tZW5kOjpTdmcgSWNvbi0tPlxyXG4gICAgICA8IS0tZW5kOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6V3JhcHBlci0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICA8IS0tYmVnaW46OkNvbnRlbnQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZXNldFBhc3N3b3JkQ29uZmlybWF0aW9uXCIpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1lbmQ6OkNvbnRlbnQtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS1lbmQ6OldyYXBwZXItLT5cclxuICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMjAwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0yMDBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidHJJdGVtXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+e3tOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57e0VtYWlsfX08L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICA8YnV0dG9uIGlkPVwiQ2xvc2VSZXNldFBhc3N3b3JkVXNlck1vZGFsXCIgI0Nsb3NlUmVzZXRQYXNzd29yZFVzZXJNb2RhbCB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0UGFzc3dvcmQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIHNldFBhc3N3b3JkIFVzZXIgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2V0UGFzc3dvcmRVc2VyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNldFBhc3N3b3JkXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC13YXJuaW5nIHJvdW5kZWQgYm9yZGVyLXdhcm5pbmcgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OlN2ZyBJY29uIHwgcGF0aDogaWNvbnMvZHVvdHVuZS9nZW5lcmFsL2dlbjA0NC5zdmctLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8IS0tZW5kOjpTdmcgSWNvbi0tPlxyXG4gICAgICA8IS0tZW5kOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6V3JhcHBlci0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICA8IS0tYmVnaW46OkNvbnRlbnQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZXRQYXNzd29yZENvbmZpcm1hdGlvblwiKX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50LS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGlkPVwidGFibGVDb25maXJtYXRpb25cIiBjbGFzcz1cInRhYmxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgXCI+XHJcbiAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBcIj4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MFwiPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUGFzc3dvcmRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvbmZpcm1QYXNzd29yZFwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidHJJdGVtXCI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiYWxpZ24tbWlkZGxlXCI+e3tOYW1lfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLW1pZGRsZVwiPnt7RW1haWx9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJQYXNzd29yZFwiIFtncm91cF09XCJTZXRVc2VyUGFzc3dvcmRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIlBhc3N3b3JkQ29uZmlybWF0aW9uXCIgW2dyb3VwXT1cIlNldFVzZXJQYXNzd29yZEZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwiQ2xvc2VzZXRQYXNzd29yZFVzZXJNb2RhbFwiICNDbG9zZXNldFBhc3N3b3JkVXNlck1vZGFsIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcblxyXG4gIFxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gU2VuZCBBY3RpdmF0aW9uIEVtYWlsIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI1NlbmRBY3RpdmF0aW9uRW1haWxNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VuZEFjdGl2YXRpb25FbWFpbFwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICA8IS0tYmVnaW46Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpTdmcgSWNvbiB8IHBhdGg6IGljb25zL2R1b3R1bmUvZ2VuZXJhbC9nZW4wNDQuc3ZnLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLWVuZDo6U3ZnIEljb24tLT5cclxuICAgICAgPCEtLWVuZDo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpDb250ZW50LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZhdGVDb25maXJtYXRpb25cIil9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLWVuZDo6Q29udGVudC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLWVuZDo6V3JhcHBlci0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90ZSBub3RlLXdhcm5pbmcgdGV4dC1jZW50ZXJcIj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgIDx0YWJsZSBpZD1cInRhYmxlQ29uZmlybWF0aW9uXCIgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVtYWlsXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MFwiICpuZ0lmPVwiU2VsZWN0ZWRVc2VyTGlzdC5sZW5ndGg+MVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdXNlciBvZiBTZWxlY3RlZFVzZXJMaXN0XCIgY2xhc3M9XCJ0ckl0ZW1cIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+e3t1c2VyLm5hbWVTdHJ9fTwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8dGQ+e3t1c2VyLnVzZXJuYW1lfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJTZWxlY3RlZFVzZXJMaXN0Lmxlbmd0aD4xXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRlbGV0ZVVzZXJGcm9tTGlzdCh1c2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1pY29uIGJ0bi1zbVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdHJhc2hcIj48L2k+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICA8YnV0dG9uICNDbG9zZUFjdGl2YXRpb25FbWFpbE1vZGFsIGlkPVwiQ2xvc2VBY3RpdmF0aW9uRW1haWxNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwic2VuZEFjdGl2YXRpb25FbWFpbEZvclVzZXIoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gY29uZmlybWF0aW9uIE1lc3NhZ2UgIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0NvbmZpcm1hdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maXJtYXRpb25NZXNzYWdlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC13YXJuaW5nIHJvdW5kZWQgYm9yZGVyLXdhcm5pbmcgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgIDwhLS1iZWdpbjo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OlN2ZyBJY29uIHwgcGF0aDogaWNvbnMvZHVvdHVuZS9nZW5lcmFsL2dlbjA0NC5zdmctLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8IS0tZW5kOjpTdmcgSWNvbi0tPlxyXG4gICAgICA8IS0tZW5kOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6V3JhcHBlci0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICA8IS0tYmVnaW46OkNvbnRlbnQtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICB7e0NvbmZpcm1hdGlvbk1lc3NhZ2V9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLWVuZDo6Q29udGVudC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLWVuZDo6V3JhcHBlci0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgPHRhYmxlIGlkPVwidGFibGVDb25maXJtYXRpb25cIiBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW1haWxcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwXCIgKm5nSWY9XCJTZWxlY3RlZFVzZXJMaXN0Lmxlbmd0aD4xXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB1c2VyIG9mIFNlbGVjdGVkVXNlckxpc3RcIiBjbGFzcz1cInRySXRlbVwiPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWRhcmtcIj57e3VzZXIubmFtZVN0cn19PC90ZD5cclxuXHJcbiAgICAgICAgICAgIDx0ZD57e3VzZXIudXNlcm5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cIlNlbGVjdGVkVXNlckxpc3QubGVuZ3RoPjFcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZGVsZXRlVXNlckZyb21MaXN0KHVzZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodC1kYW5nZXIgYnRuLWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgPGJ1dHRvbiAjQ2xvc2VDb25maXJtYXRpb25Nb2RhbCBpZD1cIkNsb3NlQ29uZmlybWF0aW9uTW9kYWxcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiQ29uZmlybWF0aW9uTW9kYWxUeXBlPT0xXCIgKGNsaWNrKT1cImFjdGl2YXRlVXNlckxpc3QoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiQ29uZmlybWF0aW9uTW9kYWxUeXBlPT0yXCIgKGNsaWNrKT1cImRlYWN0aXZhdGVVc2VyTGlzdCgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJDb25maXJtYXRpb25Nb2RhbFR5cGU9PTNcIiAoY2xpY2spPVwicmVzZXRVc2VyUGFzc3dvcmRMaXN0KClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIkNvbmZpcm1hdGlvbk1vZGFsVHlwZT09NFwiIChjbGljayk9XCJzZW5kQWN0aXZhdGlvbkVtYWlsRm9yVXNlcigpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG5cclxuIl19
|
|
732
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy91c2Vycy91c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL3VzZXJzL3VzZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLDBCQUEwQixFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMU4sT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVVsRixNQUFNLE9BQU8sY0FBYztJQThGekIsWUFBb0IsV0FBd0IsRUFBUyxjQUE4QixFQUFVLG9CQUEwQyxFQUFVLGtCQUFzQyxFQUFVLGVBQWdDLEVB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SCxnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLGdCQUFnQjtzQkFBakUsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ0MsY0FBYztzQkFBN0QsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ291bnRyeSwgQ3VzdG9tVmFsaWRhdGlvbiwgRmlsdGVyVHlwZSwgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9ucywgUGhvbmVPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgVG9nZ2xlU2xpZGVPcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgUGFnaW5nQWN0aW9uTW9kZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGaWx0ZXJJdGVtLCBQYWdpbmdPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBBZGRVc2VyTW9kZWwgfSBmcm9tICcuLi9zaGFyZWQvbW9kZWxzL1VzZXJNb2RlbHMvQWRkVXNlck1vZGVsJztcclxuaW1wb3J0IHsgRHJvcGRvd25zUmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvVXNlck1vZGVscy9Ecm9wZG93bnNSZXNwb25zZU1vZGVsJztcclxuaW1wb3J0IHsgRWRpdFVzZXJNb2RlbCB9IGZyb20gJy4uL3NoYXJlZC9tb2RlbHMvVXNlck1vZGVscy9FZGl0VXNlck1vZGVsJztcclxuaW1wb3J0IHsgdXNlclNlcnZpY2UgfSBmcm9tICcuLi9zaGFyZWQvU2VydmljZXMvdXNlclNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9fbWV0cm9uaWMvY29yZS9zZXJ2aWNlcy9wYWdlLWluZm8uc2VydmljZSc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUGFnaW5nQ29tcG9uZW50IH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMvbGliL2NvbnRyb2xzL1BhZ2luZy9QYWdpbmcuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVzZXJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlcnMuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVc2Vyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFNob3dQYWdlQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG4gIEFwaVVybCA9IFwiL2FwaS9hZG1pbi9Vc2Vycy9cIlxyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBVc2Vyc0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBwZXJtaXNzaW9uU2V0c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBhY2NvdW50U3RhdHVzT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIGxvY2tlZFN0YXR1c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBkZXBhcnRtZW50c09wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgcGVybWlzc2lvblNldHNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgbG9ja2VkU3RhdHVzRmlsdGVyOiBGaWx0ZXJJdGVtO1xyXG4gIGFjY291bnRTdGF0dXNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgZGVwYXJ0bWVudHNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBVc2VyUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIGNsaWVudFNpZGVQYWdpbmdSZXN1bHQ6IGFueVtdID0gW107XHJcbiAgVXNlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBAVmlld0NoaWxkKCdVc2VyUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBTZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgcGVybWlzc2lvblNldExpc3QgPSBbXTtcclxuICBhY2NvdW50U3RhdHVzTGlzdCA9IFtdO1xyXG4gIGxvY2tlZFN0YXR1c0xpc3QgPSBbXTtcclxuICBkZXBhcnRtZW50c0xpc3QgPSBbXTtcclxuXHJcbiAgQFZpZXdDaGlsZCgncGVybWlzc2lvblNldERETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwZXJtaXNzaW9uU2V0RERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2FjY291bnRTdGF0dXNEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWNjb3VudFN0YXR1c0RETDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdsb2NrZWRTdGF0dXNEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgbG9ja2VkU3RhdHVzRERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2RlcGFydG1lbnRzRERMJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRlcGFydG1lbnRzRERMOiBFbGVtZW50UmVmO1xyXG5cclxuICAvL0FkZCBNb2RlbCBDb250cm9sc1xyXG4gIEFkZFVzZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkVXNlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEFkZE5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgQWRkTW9iaWxlTnVtYmVyOiBQaG9uZU9wdGlvbnM7XHJcbiAgQWRkVXNlcm5hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZFNhbUFjY291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEFkZFVzZXJEZXBhcnRtZW50OiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgQWRkU2VuZEFjdGl2YXRpb25FbWFpbDogVG9nZ2xlU2xpZGVPcHRpb25zO1xyXG4gIEFkZFVzZXJQZXJtaXNzaW9uczogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICBFZGl0VXNlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0VXNlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIEVkaXROYW1lOiBNdWx0aUxpbmd1YWxUZXh0Qm94T3B0aW9uc1xyXG4gIEVkaXRNb2JpbGVOdW1iZXI6IFBob25lT3B0aW9ucztcclxuICBFZGl0VXNlcm5hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRFbWFpbDogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdFNhbUFjY291bnQ6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRVc2VyRGVwYXJ0bWVudDogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRVc2VyUGVybWlzc2lvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBVc2VySWQ6IG51bWJlcjtcclxuXHJcblxyXG4gIC8vRGVhY3RpdmF0ZS9BY3RpdmF0ZSBVc2VyIE1vZGVsIENvbnRyb2xzXHJcbiAgU2hvd0FjdGl2YXRlTW9kZWxEYXRhOiBib29sZWFuID0gZmFsc2VcclxuICBBY3RpdmF0b3JEZWFjdGl2YXRlVXNlckxpc3Q6IGFueVtdID0gW11cclxuICBOYW1lOiBzdHJpbmdcclxuICBFbWFpbDogc3RyaW5nXHJcblxyXG4gIC8vUmVzZXQgUGFzc3dvcmQgVXNlciBNb2RlbCBDb250cm9sc1xyXG4gIFJlc2V0UGFzc3dvcmRVc2VyTGlzdDogYW55W10gPSBbXVxyXG5cclxuICAvL3NldCBQYXNzd29yZCBVc2VyIE1vZGVsIENvbnRyb2xzXHJcbiAgU2V0VXNlclBhc3N3b3JkRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIFBhc3N3b3JkOiBUZXh0Qm94T3B0aW9ucztcclxuICBQYXNzd29yZENvbmZpcm1hdGlvbjogVGV4dEJveE9wdGlvbnM7XHJcbiAgY3VzdG9tVmFsaWRhdGlvbjogQ3VzdG9tVmFsaWRhdGlvbiA9IG5ldyBDdXN0b21WYWxpZGF0aW9uKCk7XHJcbiAgc2V0UGFzc3dvcmRVc2VyTGlzdDogYW55W10gPSBbXVxyXG5cclxuICAvL0NvbmZpcm1hdGlvbiAgTW9kZWwgQ29udHJvbHNcclxuICBDb25maXJtYXRpb25Nb2RhbFR5cGU6IG51bWJlciA9IDA7XHJcbiAgQ29uZmlybWF0aW9uTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy9Vc2VycyBzZWxlY3Rpb25cclxuICBhY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkOiBudW1iZXIgPSAwO1xyXG4gIGRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZDogbnVtYmVyID0gMDtcclxuICBzaG93QWN0aXZhdGVCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93RGVhY3RpdmF0ZUJ0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dTZXRQYXNzQnRuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1Jlc2V0UGFzc0J0bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dTZW5kRW1haWxCdG46IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93R2VuZXJhbEJ0bnM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSwgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgZW52aXJvbm1lbnRTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsIHByaXZhdGUgcGFnZUluZm9TZXJ2aWNlOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiB1c2VyU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLHByaXZhdGUgcmVxdWVzdEhhbmRsZXJTZXJ2aWNlOiBSZXF1ZXN0SGFuZGxlclNlcnZpY2UpIHtcclxuICB9XHJcbiAgIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VUaXRsZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlVzZXJzXCIpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZUJyZWFkY3J1bWJzID0gW1xyXG4gICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOicvQWRtaW4vSG9tZScsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgXTtcclxuXHJcbiAgICB0aGlzLnBhZ2VJbmZvU2VydmljZS5jYWxjdWxhdGVUaXRsZSgpO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlQnJlYWRjcnVtYnMoKTtcclxuICAgIHRoaXMuUHJvZHVjdGlvbk1vZGUgPSB0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRQcm9kdWN0aW9uTW9kZSgpO1xyXG5cclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuXHJcbiAgfVxyXG5cclxuICAgIC8vUGFnaW5nIGZ1bmN0aW9uc1xyXG4gIHNldFVzZXJzTGlzdFJlc3VsdChyZXN1bHQpIHtcclxuICAgIHRoaXMuVXNlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB0aGlzLmFsbFNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRGaWx0ZXJzKCkge1xyXG4gICAgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJwZXJtaXNzaW9uc2V0c1wiXS5zZXRWYWx1ZShbXSk7XHJcbiAgICB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImFjY291bnRzdGF0dXNcIl0uc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJsb2NrZWRzdGF0dXNcIl0uc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJkZXBhcnRtZW50c1wiXS5zZXRWYWx1ZShbXSk7XHJcbiAgICB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcInNlYXJjaFRleHRCb3hcIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiAoaXRlbS5uYW1lLmVuZ2xpc2gudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICB8fCBpdGVtLm5hbWUuYXJhYmljLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgfHwgaXRlbS51c2VybmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9KVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNsaWVudFNpZGVQYWdpbmdSZXN1bHQgPSB0aGlzLlVzZXJQYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAgLy9Jbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG5cclxuICAgIC8vIFBlcm1pc3Npb24gU2V0cyBpbml0ICAgXHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNPcHRpb25zLk5hbWUgPSBcInBlcm1pc3Npb25zZXRzXCJcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNPcHRpb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c09wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c09wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG5cclxuICAgIC8vIEFjY291bnQgU3RhdHVzIGluaXRcclxuICAgIHRoaXMuYWNjb3VudFN0YXR1c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNPcHRpb25zLk5hbWUgPSBcImFjY291bnRzdGF0dXNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzT3B0aW9ucy5MYWJlbEtleSA9IFwiQWNjb3VudFN0YXR1c1wiXHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgLy8gTG9ja2VkIFN0YXR1cyBpbml0XHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c09wdGlvbnMuTmFtZSA9IFwibG9ja2Vkc3RhdHVzXCI7XHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c09wdGlvbnMuTGFiZWxLZXkgPSBcIkxvY2tlZFN0YXR1c1wiO1xyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgLy8gZGVwYXJ0bWVudHMgaW5pdFxyXG4gICAgdGhpcy5kZXBhcnRtZW50c09wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLmRlcGFydG1lbnRzT3B0aW9ucy5OYW1lID0gXCJkZXBhcnRtZW50c1wiXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzT3B0aW9ucy5MYWJlbEtleSA9IFwiRGVwYXJ0bWVudHNcIlxyXG4gICAgdGhpcy5kZXBhcnRtZW50c09wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlcGFydG1lbnRzT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5IaWRlTGFiZWwgPSB0cnVlXHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guVHlwZSA9IElucHV0VHlwZS5UZXh0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3guRXh0cmFDbGFzc2VzPVwiVXNlcnNcIlxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LlBsYWNlaG9sZGVyID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VhcmNoQnlOYW1lT3JFbWFpbFwiKVxyXG5cclxuXHJcbiAgICAvL0ZpbHRlcnNcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic2VhcmNoVGV4dEJveFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJuYW1lRmlsdGVyXCJcclxuICAgIHRoaXMuVGV4dElucHV0RmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5UZXh0Qm94XHJcblxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnBlcm1pc3Npb25TZXRzRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwicGVybWlzc2lvbnNldHNcIlxyXG4gICAgdGhpcy5wZXJtaXNzaW9uU2V0c0ZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJwZXJtaXNzaW9uSWRzXCJcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMucGVybWlzc2lvblNldHNGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0XHJcblxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuYWNjb3VudFN0YXR1c0ZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcImFjY291bnRzdGF0dXNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcImFjY291bnRTdGF0dXNJRHNcIlxyXG4gICAgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLmFjY291bnRTdGF0dXNGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRHJvcGRvd25MaXN0XHJcblxyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJsb2NrZWRzdGF0dXNcIlxyXG4gICAgdGhpcy5sb2NrZWRTdGF0dXNGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwibG9ja2VkU3RhdHVzSWRzXCJcclxuICAgIHRoaXMubG9ja2VkU3RhdHVzRmlsdGVyLklzRm9ybUNvbnRyb2wgPSB0cnVlXHJcbiAgICB0aGlzLmxvY2tlZFN0YXR1c0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzRmlsdGVyID0gbmV3IEZpbHRlckl0ZW0oKTtcclxuICAgIHRoaXMuZGVwYXJ0bWVudHNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJkZXBhcnRtZW50c1wiXHJcbiAgICB0aGlzLmRlcGFydG1lbnRzRmlsdGVyLkFjdGlvblBhcmFtZXRlck5hbWUgPSBcImRlcGFydG1lbnRJZHNcIlxyXG4gICAgdGhpcy5kZXBhcnRtZW50c0ZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5kZXBhcnRtZW50c0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcblxyXG4gICAgdGhpcy5Vc2VyUGFnaW5nID0gbmV3IFBhZ2luZ09wdGlvbnMoKTtcclxuICAgIHRoaXMuVXNlclBhZ2luZy5BY3Rpb25Qb3N0VVJMID0gdGhpcy5BcGlVcmwgKyAnR2V0VXNlcnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuT25LZXlQcmVzc0ZpbHRlcnNDb250cm9sTmFtZXMgPSBbXCJzZWFyY2hUZXh0Qm94XCJdXHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wicGVybWlzc2lvbnNldHNcIiwgXCJhY2NvdW50c3RhdHVzXCIsIFwibG9ja2Vkc3RhdHVzXCIsIFwiZGVwYXJ0bWVudHNcIl07XHJcbiAgICB0aGlzLlVzZXJQYWdpbmcuRmlsdGVycyA9IFt0aGlzLnBlcm1pc3Npb25TZXRzRmlsdGVyLCB0aGlzLmxvY2tlZFN0YXR1c0ZpbHRlciwgdGhpcy5hY2NvdW50U3RhdHVzRmlsdGVyLCB0aGlzLmRlcGFydG1lbnRzRmlsdGVyLCB0aGlzLlRleHRJbnB1dEZpbHRlcl1cclxuICAgIHRoaXMuVXNlclBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpXHJcbiAgICB0aGlzLklzRmlsdGVyTG9hZGVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vTG9hZCBsaXN0cyBmb3IgZmlsdGVyc1xyXG4gIGxvYWRMaXN0cygpIHtcclxuICAgIGlmICghdGhpcy5Jc0ZpbHRlckRhdGFMb2FkZWQpIHtcclxuICAgICAgdGhpcy51c2VyU2VydmljZS5Mb2FkZHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBsZXQgRHJvcGRvd25zUmVzcG9uc2VNb2RlbCA9IHJlc3VsdCBhcyBEcm9wZG93bnNSZXNwb25zZU1vZGVsO1xyXG4gICAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICAgIHRoaXMuYWNjb3VudFN0YXR1c0xpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLmFjY291bnRTdGF0dXM7XHJcbiAgICAgICAgdGhpcy5sb2NrZWRTdGF0dXNMaXN0ID0gRHJvcGRvd25zUmVzcG9uc2VNb2RlbC5sb2NrZWRTdGF0dXM7XHJcbiAgICAgICAgdGhpcy5kZXBhcnRtZW50c0xpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLmRlcGFydG1lbnRzO1xyXG5cclxuICAgICAgICBsZXQgcGVybWlzc2lvblNldEVsZW1lbnQgPSB0aGlzLnBlcm1pc3Npb25TZXREREwgYXMgYW55O1xyXG4gICAgICAgIGxldCBhY2NvdW50U3RhdHVzRWxlbWVudCA9IHRoaXMuYWNjb3VudFN0YXR1c0RETCBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGxvY2tlZFN0YXR1c0VsZW1lbnQgPSB0aGlzLmxvY2tlZFN0YXR1c0RETCBhcyBhbnk7XHJcbiAgICAgICAgbGV0IGRlcGFydG1lbnRzRWxlbWVudCA9IHRoaXMuZGVwYXJ0bWVudHNEREwgYXMgYW55O1xyXG5cclxuXHJcbiAgICAgICAgcGVybWlzc2lvblNldEVsZW1lbnQuVXBkYXRlRGF0YVNvdXJjZSh0aGlzLnBlcm1pc3Npb25TZXRMaXN0KTtcclxuXHJcbiAgICAgICAgYWNjb3VudFN0YXR1c0VsZW1lbnQuVXBkYXRlRGF0YVNvdXJjZSh0aGlzLmFjY291bnRTdGF0dXNMaXN0KTtcclxuXHJcbiAgICAgICAgbG9ja2VkU3RhdHVzRWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMubG9ja2VkU3RhdHVzTGlzdCk7XHJcblxyXG4gICAgICAgIGRlcGFydG1lbnRzRWxlbWVudC5VcGRhdGVEYXRhU291cmNlKHRoaXMuZGVwYXJ0bWVudHNMaXN0KTtcclxuXHJcblxyXG4gICAgICAgIHRoaXMuSXNGaWx0ZXJEYXRhTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1VzZXJzIGNoZWNrYm94ZXMgc2VsZWN0aW9uIGZ1bmN0aW9uc1xyXG4gIHNlbGVjdEFsbFVzZXJMaXN0KGV2ZW50LCBVc2VyczogYW55W10pIHtcclxuICAgIGlmICh0aGlzLlVzZXJQYWdpbmdSZXN1bHQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLlVzZXJQYWdpbmdSZXN1bHQuZm9yRWFjaCh1ID0+IHUuc2VsZWN0ZWQgPSBldmVudC5jaGVja2VkKTtcclxuXHJcbiAgICBpZiAoZXZlbnQuY2hlY2tlZCkge1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgVXNlcnMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IFVzZXJzW2luZGV4XTtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QucHVzaCh1c2VyKTtcclxuICAgICAgICBpZiAodXNlci5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgKz0gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID0gVXNlcnMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLmlzQWN0aXZlOyB9KS5tYXAoKGl0ZW0pID0+IGl0ZW0ua2V5KS5sZW5ndGg7XHJcbiAgICAgIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID0gVXNlcnMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiAhaXRlbS5pc0FjdGl2ZTsgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSkubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgICB0aGlzLmRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLmVuYWJsZUJ1dHRvbnMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVVzZXJMaXN0KGV2ZW50LCBVc2VyKSB7XHJcbiAgICB0aGlzLlVzZXJQYWdpbmdSZXN1bHQuZmluZCh1ID0+IHUuaWQgPT09IFVzZXIuaWQpLnNlbGVjdGVkID0gZXZlbnQuY2hlY2tlZDtcclxuICAgIHRoaXMuYWxsU2VsZWN0ZWQgPSB0aGlzLlVzZXJQYWdpbmdSZXN1bHQgIT0gbnVsbCAmJiB0aGlzLlVzZXJQYWdpbmdSZXN1bHQuZXZlcnkodSA9PiB1LnNlbGVjdGVkKTtcclxuICAgIGlmIChldmVudC5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdC5wdXNoKFVzZXIpO1xyXG4gICAgICBpZiAoVXNlci5pc0FjdGl2ZSlcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgKz0gMTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkICs9IDE7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0LmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZS5pZCA9PSBVc2VyLmlkKSB0aGlzLlNlbGVjdGVkVXNlckxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChVc2VyLmlzQWN0aXZlKVxyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCAtPSAxO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgLT0gMTtcclxuICAgIH1cclxuICAgIHRoaXMuZW5hYmxlQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVXNlckZyb21MaXN0KHVzZXI6IGFueSkge1xyXG4gICAgdGhpcy5Vc2VyUGFnaW5nUmVzdWx0LmZpbmQodSA9PiB1LmlkID09PSB1c2VyLmlkKS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gdGhpcy5TZWxlY3RlZFVzZXJMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0gIT0gdXNlcik7XHJcbiAgICBpZiAodXNlci5pc0FjdGl2ZSlcclxuICAgICAgdGhpcy5hY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkIC09IDE7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkIC09IDE7XHJcbiAgICB0aGlzLmVuYWJsZUJ1dHRvbnMoKTtcclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVXNlckxpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBlbmFibGVCdXR0b25zKCkge1xyXG4gICAgLy9SZXNldCBhbGwgYnRuc1xyXG4gICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG5cclxuICAgIGlmICh0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPT0gMCAmJiB0aGlzLmRlQWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd0dlbmVyYWxCdG5zID0gdHJ1ZTtcclxuXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93R2VuZXJhbEJ0bnMgPSBmYWxzZTtcclxuXHJcbiAgICAgIC8vaWYgb25seSBhY3RpdmF0ZWQgdXNlcnNcclxuICAgICAgaWYgKHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA+IDAgJiYgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPT0gMCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RlYWN0aXZhdGVCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1Jlc2V0UGFzc0J0biA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPiAwICYmIHRoaXMuYWN0aXZhdGVkVXNlcnNTZWxlY3RlZCA9PSAwKSAgICAgLy9pZiBvbmx5IGRlQWN0aXZhdGVkIHVzZXJzXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dBY3RpdmF0ZUJ0biA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93U2VuZEVtYWlsQnRuID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPiAwICYmIHRoaXMuZGVBY3RpdmF0ZWRVc2Vyc1NlbGVjdGVkID4gMCkgLy9pZiBhY3RpdmF0ZWQgYW5kIGRlYWN0aXZhdGVkIHVzZXJzIHNlbGVjdGVkXHJcbiAgICAgIHtcclxuICAgICAgICB0aGlzLnNob3dSZXNldFBhc3NCdG4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd1NldFBhc3NCdG4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkaXNhYmxlQnV0dG9ucygpIHtcclxuICAgIC8vUmVzZXQgYWxsIGJ0bnNcclxuICAgIHRoaXMuc2hvd0FjdGl2YXRlQnRuID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dEZWFjdGl2YXRlQnRuID0gZmFsc2U7XHJcbiAgICB0aGlzLnNob3dTZW5kRW1haWxCdG4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1Jlc2V0UGFzc0J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93U2V0UGFzc0J0biA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93R2VuZXJhbEJ0bnMgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRVc2Vyc0NvdW50KCkge1xyXG4gICAgdGhpcy5TZWxlY3RlZFVzZXJMaXN0ID0gW107XHJcbiAgICB0aGlzLmFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5kZUFjdGl2YXRlZFVzZXJzU2VsZWN0ZWQgPSAwO1xyXG4gICAgdGhpcy5Vc2VyUGFnaW5nUmVzdWx0LmZvckVhY2godSA9PiB1LnNlbGVjdGVkID0gZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy9BZGQgVXNlclxyXG4gIHNob3dBZGRVc2VyTW9kYWwoYWRkVXNlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5Mb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuXHJcbiAgICAgIGxldCBEcm9wZG93bnNSZXNwb25zZU1vZGVsID0gcmVzdWx0IGFzIERyb3Bkb3duc1Jlc3BvbnNlTW9kZWw7XHJcbiAgICAgIC8vU2V0IHJlcXVpcmVkIGxpc3RzXHJcbiAgICAgIHRoaXMucGVybWlzc2lvblNldExpc3QgPSBEcm9wZG93bnNSZXNwb25zZU1vZGVsLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICB0aGlzLmRlcGFydG1lbnRzTGlzdCA9IERyb3Bkb3duc1Jlc3BvbnNlTW9kZWwuZGVwYXJ0bWVudHM7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkFkZFVzZXJGb3JtXHJcbiAgICAgIHRoaXMuQWRkVXNlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFVzZXJNb2RlbDtcclxuICAgICAgdGhpcy5BZGRVc2VyRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRVc2VyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkVXNlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG5cclxuICAgICAgdGhpcy5BZGROYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5OYW1lID0gXCJBZGROYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5BZGROYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuVmFsdWUgPSBudWxsO1xyXG5cclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIgPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIuTmFtZSA9IFwiQWRkTW9iaWxlTnVtYmVyXCJcclxuICAgICAgdGhpcy5BZGRNb2JpbGVOdW1iZXIuTGFiZWxLZXkgPSBcIk1vYmlsZU51bWJlclwiXHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLkV4dHJhQ2xhc3NlcyA9IFwiZm9ybS1jb250cm9sIGJuc2lnaHRzLWNvbnRyb2xcIlxyXG4gICAgICB0aGlzLkFkZE1vYmlsZU51bWJlci5TZWxlY3RlZENvdW50cnlJU08gPSBDb3VudHJ5LlVuaXRlZEFyYWJFbWlyYXRlc1xyXG4gICAgICB0aGlzLkFkZE1vYmlsZU51bWJlci5QaG9uZVZhbGlkYXRpb24gPSB0cnVlXHJcbiAgICAgIHRoaXMuQWRkTW9iaWxlTnVtYmVyLkFsbG93U2VhcmNoID0gdHJ1ZVxyXG5cclxuICAgICAgdGhpcy5BZGRVc2VybmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRVc2VybmFtZS5OYW1lID0gXCJBZGRVc2VybmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lLkxhYmVsS2V5ID0gXCJVc2VybmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZFVzZXJuYW1lLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgIHRoaXMuQWRkVXNlcm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFNhbUFjY291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50LlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50Lk5hbWUgPSBcIkFkZFNhbUFjY291bnRcIjtcclxuICAgICAgdGhpcy5BZGRTYW1BY2NvdW50LkxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuQWRkU2FtQWNjb3VudC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50Lk5hbWUgPSBcIkFkZERlcGFydG1lbnRJRFwiXHJcbiAgICAgIHRoaXMuQWRkVXNlckRlcGFydG1lbnQuTGFiZWxLZXkgPSBcIkRlcGFydG1lbnRcIlxyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LkRhdGFTb3VyY2UgPSB0aGlzLmRlcGFydG1lbnRzTGlzdFxyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkFkZFVzZXJEZXBhcnRtZW50LkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbCA9IG5ldyBUb2dnbGVTbGlkZU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRTZW5kQWN0aXZhdGlvbkVtYWlsLk5hbWUgPSBcIkFkZFNlbmRBY3RpdmF0aW9uTWFpbFwiXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbC5MYWJlbEtleSA9IFwiU2VuZEFjdGl2YXRpb25FbWFpbFwiXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbC5WYWx1ZSA9IGZhbHNlXHJcbiAgICAgIHRoaXMuQWRkU2VuZEFjdGl2YXRpb25FbWFpbC5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbFxyXG5cclxuXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5OYW1lID0gXCJBZGRQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuQWRkVXNlclBlcm1pc3Npb25zLlNlbGVjdGVkSXRlbXMgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5EYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgdGhpcy5BZGRVc2VyUGVybWlzc2lvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFVzZXJQZXJtaXNzaW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oYWRkVXNlck1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0QWRkVXNlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZFVzZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEFkZE1vZGVsID0gbmV3IEFkZFVzZXJNb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuVXNlcm5hbWUgPSBSZXN1bHRNb2RlbC5BZGRVc2VybmFtZTtcclxuICAgIEFkZE1vZGVsLk5hbWVBUiA9IFJlc3VsdE1vZGVsLkFkZE5hbWUuQXJhYmljO1xyXG4gICAgQWRkTW9kZWwuTmFtZUVOID0gUmVzdWx0TW9kZWwuQWRkTmFtZS5FbmdsaXNoO1xyXG4gICAgQWRkTW9kZWwuU2FtQWNjb3VudCA9IFJlc3VsdE1vZGVsLkFkZFNhbUFjY291bnQ7XHJcbiAgICBBZGRNb2RlbC5Pcmdhbml6YXRpb25JRCA9IDE7XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuQWRkRGVwYXJ0bWVudElEICE9IHVuZGVmaW5lZClcclxuICAgICAgQWRkTW9kZWwuRGVwYXJ0bWVudElEID0gTnVtYmVyKFJlc3VsdE1vZGVsLkFkZERlcGFydG1lbnRJRCk7XHJcbiAgICBsZXQgUGVybWlzc2lvblNldHMgPSBSZXN1bHRNb2RlbC5BZGRQZXJtaXNzaW9uU2V0cyBhcyBzdHJpbmdbXVxyXG4gICAgQWRkTW9kZWwuUGVybWlzc2lvblNldHMgPSBQZXJtaXNzaW9uU2V0cy5tYXAoKGkpID0+IE51bWJlcihpKSk7XHJcbiAgICBBZGRNb2RlbC5TZW5kQWN0aXZhdGlvbk1haWwgPSBSZXN1bHRNb2RlbC5BZGRTZW5kQWN0aXZhdGlvbk1haWw7XHJcbiAgICBsZXQgaW50ZXJuYXRpb25hbE51bWJlcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmIChSZXN1bHRNb2RlbC5BZGRNb2JpbGVOdW1iZXIgIT0gbnVsbCkge1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gUmVzdWx0TW9kZWwuQWRkTW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBBZGRNb2RlbC5QaG9uZUlucHV0TW9iaWxlID0gaW50ZXJuYXRpb25hbE51bWJlcjtcclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZFVzZXJGdW5jdGlvbiA9IChBZGRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5BZGRVc2VyKEFkZE1vZGVsKVxyXG4gIH1cclxuXHJcblxyXG4gIC8vRWRpdCBVc2VyXHJcbiAgc2hvd0VkaXRVc2VyTW9kYWwodXNlcklEOiBudW1iZXIsdXNlcklERW5jOnN0cmluZywgRWRpdFVzZXJNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMuVXNlcklkID0gdXNlcklEXHJcblxyXG4gICAgdGhpcy51c2VyU2VydmljZS5nZXRFZGl0VXNlcih1c2VySURFbmMpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgdXNlciA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgbGV0IGxpc3RzID0gcmVzdWx0T2JqLmxpc3RzO1xyXG5cclxuICAgICAgdGhpcy5wZXJtaXNzaW9uU2V0TGlzdCA9IGxpc3RzLnBlcm1lc3Npb25zZXRzO1xyXG4gICAgICB0aGlzLmRlcGFydG1lbnRzTGlzdCA9IGxpc3RzLmRlcGFydG1lbnRzO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0VXNlckZvcm1cclxuICAgICAgdGhpcy5FZGl0VXNlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRVc2VyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRVc2VyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGU7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJGb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vblN1Ym1pdFN1Y2Nlc3M7XHJcblxyXG5cclxuXHJcbiAgICAgIGxldCBOYW1lID0gbmV3IEVuZ2xpc2hBcmFiaWNEVE8oKTtcclxuICAgICAgTmFtZS5BcmFiaWMgPSB1c2VyLm5hbWVBUjtcclxuICAgICAgTmFtZS5FbmdsaXNoID0gdXNlci5uYW1lRU47XHJcblxyXG4gICAgICB0aGlzLkVkaXROYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTmFtZSA9IFwiRWRpdE5hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5BcmFiaWNMYWJlbEtleSA9IFwiTmFtZUluQXJhYmljXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuRW5nbGlzaExhYmVsS2V5ID0gXCJOYW1lSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuVmFsdWUgPSBOYW1lO1xyXG5cclxuICAgICAgdGhpcy5FZGl0TW9iaWxlTnVtYmVyID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuVmFsdWUgPSB1c2VyLm1vYmlsZSBhcyBzdHJpbmc7XHJcbiAgICAgIHRoaXMuRWRpdE1vYmlsZU51bWJlci5OYW1lID0gXCJFZGl0TW9iaWxlTnVtYmVyXCJcclxuICAgICAgdGhpcy5FZGl0TW9iaWxlTnVtYmVyLkxhYmVsS2V5ID0gXCJNb2JpbGVOdW1iZXJcIlxyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuRXh0cmFDbGFzc2VzID0gXCJmb3JtLWNvbnRyb2wgYm5zaWdodHMtY29udHJvbFwiXHJcbiAgICAgIHRoaXMuRWRpdE1vYmlsZU51bWJlci5TZWxlY3RlZENvdW50cnlJU08gPSBDb3VudHJ5LlVuaXRlZEFyYWJFbWlyYXRlc1xyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuUGhvbmVWYWxpZGF0aW9uID0gdHJ1ZVxyXG4gICAgICB0aGlzLkVkaXRNb2JpbGVOdW1iZXIuQWxsb3dTZWFyY2ggPSB0cnVlXHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuVmFsdWUgPSB1c2VyLnVzZXJuYW1lO1xyXG4gICAgICB0aGlzLkVkaXRVc2VybmFtZS5OYW1lID0gXCJFZGl0VXNlcm5hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuTGFiZWxLZXkgPSBcIlVzZXJuYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJuYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0VXNlcm5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRFbWFpbCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbC5WYWx1ZSA9IHVzZXIuZW1haWw7XHJcbiAgICAgIHRoaXMuRWRpdEVtYWlsLk5hbWUgPSBcIkVkaXRFbWFpbFwiO1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbC5MYWJlbEtleSA9IFwiRW1haWxcIjtcclxuICAgICAgdGhpcy5FZGl0RW1haWwuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRFbWFpbC5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFNhbUFjY291bnQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0U2FtQWNjb3VudC5WYWx1ZSA9IHVzZXIuc2FtQWNjb3VudDtcclxuICAgICAgdGhpcy5FZGl0U2FtQWNjb3VudC5OYW1lID0gXCJFZGl0U2FtQWNjb3VudFwiO1xyXG4gICAgICB0aGlzLkVkaXRTYW1BY2NvdW50LkxhYmVsS2V5ID0gXCJTYW1BY2NvdW50XCI7XHJcbiAgICAgIHRoaXMuRWRpdFNhbUFjY291bnQuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJEZXBhcnRtZW50ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5OYW1lID0gXCJFZGl0RGVwYXJ0bWVudElEXCJcclxuICAgICAgdGhpcy5FZGl0VXNlckRlcGFydG1lbnQuTGFiZWxLZXkgPSBcIkRlcGFydG1lbnRcIlxyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5TZWxlY3RlZEl0ZW1zID0gdGhpcy5kZXBhcnRtZW50c0xpc3QuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBwYXJzZUludChpdGVtLmtleSkgPT0gdXNlci5kZXBhcnRtZW50SUQ7IH0pLm1hcCgoaXRlbSkgPT4gaXRlbS5rZXkpWzBdO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyRGVwYXJ0bWVudC5EYXRhU291cmNlID0gdGhpcy5kZXBhcnRtZW50c0xpc3RcclxuICAgICAgdGhpcy5FZGl0VXNlckRlcGFydG1lbnQuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VXNlckRlcGFydG1lbnQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvbnMuTmFtZSA9IFwiRWRpdFBlcm1pc3Npb25TZXRzXCJcclxuICAgICAgdGhpcy5FZGl0VXNlclBlcm1pc3Npb25zLkxhYmVsS2V5ID0gXCJQZXJtaXNzaW9uU2V0c1wiXHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5TZWxlY3RlZEl0ZW1zID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdC5maWx0ZXIoZnVuY3Rpb24gKHRhZykge1xyXG4gICAgICAgIHJldHVybiB1c2VyLnBlcm1pc3Npb25JRHMuaW5kZXhPZihwYXJzZUludCh0YWcua2V5KSkgPj0gMDtcclxuICAgICAgfSkubWFwKChpdGVtKSA9PiBpdGVtLmtleSk7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5EYXRhU291cmNlID0gdGhpcy5wZXJtaXNzaW9uU2V0TGlzdFxyXG4gICAgICB0aGlzLkVkaXRVc2VyUGVybWlzc2lvbnMuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFVzZXJQZXJtaXNzaW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdFVzZXJNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldEVkaXRVc2VyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdFVzZXJGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBFZGl0VXNlck1vZGVsKCk7XHJcbiAgICBFZGl0TW9kZWwuSUQgPSB0aGlzLlVzZXJJZDtcclxuICAgIEVkaXRNb2RlbC5Vc2VybmFtZSA9IFJlc3VsdE1vZGVsLkVkaXRVc2VybmFtZTtcclxuICAgIEVkaXRNb2RlbC5FbWFpbCA9IFJlc3VsdE1vZGVsLkVkaXRFbWFpbDtcclxuICAgIEVkaXRNb2RlbC5OYW1lQVIgPSBSZXN1bHRNb2RlbC5FZGl0TmFtZS5BcmFiaWM7XHJcbiAgICBFZGl0TW9kZWwuTmFtZUVOID0gUmVzdWx0TW9kZWwuRWRpdE5hbWUuRW5nbGlzaDtcclxuICAgIEVkaXRNb2RlbC5TYW1BY2NvdW50ID0gUmVzdWx0TW9kZWwuRWRpdFNhbUFjY291bnQ7XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuRWRpdERlcGFydG1lbnRJRCAhPSB1bmRlZmluZWQpXHJcbiAgICAgIEVkaXRNb2RlbC5EZXBhcnRtZW50SUQgPSBOdW1iZXIoUmVzdWx0TW9kZWwuRWRpdERlcGFydG1lbnRJRCk7XHJcbiAgICBsZXQgUGVybWlzc2lvblNldHMgPSBSZXN1bHRNb2RlbC5FZGl0UGVybWlzc2lvblNldHMgYXMgc3RyaW5nW11cclxuICAgIEVkaXRNb2RlbC5QZXJtaXNzaW9uSURzID0gUGVybWlzc2lvblNldHMubWFwKChpKSA9PiBOdW1iZXIoaSkpO1xyXG4gICAgbGV0IGludGVybmF0aW9uYWxOdW1iZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgICBpZiAoUmVzdWx0TW9kZWwuRWRpdE1vYmlsZU51bWJlciAhPSBudWxsKSB7XHJcbiAgICAgIGludGVybmF0aW9uYWxOdW1iZXIgPSBSZXN1bHRNb2RlbC5FZGl0TW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBFZGl0TW9kZWwuTW9iaWxlID0gaW50ZXJuYXRpb25hbE51bWJlcjtcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFVzZXJGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuRWRpdFVzZXIoRWRpdE1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9FeHBvcnQgdXNlcnMgZXhjZWxcclxuICBleHBvcnRFeGNlbCgpIHtcclxuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZChcInBlcm1pc3Npb25JZHNcIiwgdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJwZXJtaXNzaW9uc2V0c1wiXS52YWx1ZSA9PSB1bmRlZmluZWQgPyBcIlwiIDogdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJwZXJtaXNzaW9uc2V0c1wiXS52YWx1ZSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFwiYWNjb3VudFN0YXR1c0lEc1wiLCB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImFjY291bnRzdGF0dXNcIl0udmFsdWUgPT0gdW5kZWZpbmVkID8gXCJcIiA6IHRoaXMuVXNlcnNGb3JtLmNvbnRyb2xzW1wiYWNjb3VudHN0YXR1c1wiXS52YWx1ZSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFwibG9ja2VkU3RhdHVzSWRzXCIsIHRoaXMuVXNlcnNGb3JtLmNvbnRyb2xzW1wibG9ja2Vkc3RhdHVzXCJdLnZhbHVlID09IHVuZGVmaW5lZCA/IFwiXCIgOiB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImxvY2tlZHN0YXR1c1wiXS52YWx1ZSk7XHJcbiAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKFwiZGVwYXJ0bWVudElkc1wiLCB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImRlcGFydG1lbnRzXCJdLnZhbHVlID09IHVuZGVmaW5lZCA/IFwiXCIgOiB0aGlzLlVzZXJzRm9ybS5jb250cm9sc1tcImRlcGFydG1lbnRzXCJdLnZhbHVlKTtcclxuICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoXCJuYW1lRmlsdGVyXCIsIHRoaXMuVXNlcnNGb3JtLmNvbnRyb2xzW1wic2VhcmNoVGV4dEJveFwiXS52YWx1ZSA9PSB1bmRlZmluZWQgPyBcIlwiIDogdGhpcy5Vc2Vyc0Zvcm0uY29udHJvbHNbXCJzZWFyY2hUZXh0Qm94XCJdLnZhbHVlKTtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuRXhwb3J0KHBhcmFtcykuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IEZpbGVEVE8gPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbRmlsZURUT10sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JyB9KTtcclxuICAgICAgbGV0IGZpbGVOYW1lID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVXNlcnNcIikgKyBcIi54bHN4XCI7XHJcbiAgICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuXHJcblxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgfSlcclxuXHJcbiAgfVxyXG5cclxuICAvL09uZSB1c2VyIGZ1bmN0aW9uc1xyXG5cclxuICAvL0FjdGl2YXRpb24gYW5kIGRlYWN0aXZhdGlvbiBmdW5jdGlvbnNcclxuICBzaG93QWN0aXZhdGVVc2VyTW9kYWwoVXNlcjogYW55LCBpc0FjdGl2YXRlTW9kZWw6IGJvb2xlYW4sIEFjdGl2YXRlVXNlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpXHJcbiAgICB0aGlzLkFjdGl2YXRvckRlYWN0aXZhdGVVc2VyTGlzdCA9IFtdXHJcbiAgICB0aGlzLkFjdGl2YXRvckRlYWN0aXZhdGVVc2VyTGlzdC5wdXNoKFVzZXIpO1xyXG4gICAgdGhpcy5OYW1lID0gVXNlci5uYW1lU3RyO1xyXG4gICAgdGhpcy5FbWFpbCA9IFVzZXIuZW1haWw7XHJcbiAgICB0aGlzLlNob3dBY3RpdmF0ZU1vZGVsRGF0YSA9IGlzQWN0aXZhdGVNb2RlbFxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihBY3RpdmF0ZVVzZXJNb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLkFjdGl2YXRlVXNlcnModGhpcy5BY3RpdmF0b3JEZWFjdGl2YXRlVXNlckxpc3QpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLmRpc21pc3NBbGwoKTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZGVhY3RpdmF0ZSgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuRGVhY3RpdmF0ZVVzZXJzKHRoaXMuQWN0aXZhdG9yRGVhY3RpdmF0ZVVzZXJMaXN0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XHJcbiAgICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgICAgZWxlbWVudC5VcGRhdGVQYWdpbmcoKTtcclxuICAgICAgdGhpcy5yZXNldFVzZXJzQ291bnQoKTtcclxuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9ucygpO1xyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcblxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vUmVzZXQgUGFzc3dvcmQgZnVuY3Rpb25cclxuICBzaG93UmVzZXRQYXNzd29yZFVzZXJNb2RhbChVc2VyOiBhbnksIFJlc2V0UGFzc3dvcmRVc2VyTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuUmVzZXRQYXNzd29yZFVzZXJMaXN0ID0gW11cclxuICAgIHRoaXMuUmVzZXRQYXNzd29yZFVzZXJMaXN0LnB1c2goVXNlcik7XHJcbiAgICB0aGlzLk5hbWUgPSBVc2VyLm5hbWVTdHI7XHJcbiAgICB0aGlzLkVtYWlsID0gVXNlci5lbWFpbFxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihSZXNldFBhc3N3b3JkVXNlck1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgcmVzZXRQYXNzd29yZCgpIHtcclxuXHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLlJlc2V0VXNlcnNQYXNzd29yZCh0aGlzLlJlc2V0UGFzc3dvcmRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICAgIGVsZW1lbnQuVXBkYXRlUGFnaW5nKCk7XHJcbiAgICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvbnMoKTtcclxuICAgIH0sIChlcnJvcikgPT4ge1xyXG5cclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgLy9TZW5kIGFjdGl2YXRpb24gbWFpbCBmdW5jdGlvblxyXG4gIHNob3dTZW5kQWN0aXZhdGlvbkVtYWlsTW9kYWwoVXNlcjogYW55LCBTZW5kQWN0aXZhdGlvbkVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCA9IFtdXHJcbiAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QucHVzaChVc2VyKTtcclxuICAgIHRoaXMuTmFtZSA9IFVzZXIubmFtZVN0cjtcclxuICAgIHRoaXMuRW1haWwgPSBVc2VyLmVtYWlsXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFNlbmRBY3RpdmF0aW9uRW1haWxNb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgc2VuZEFjdGl2YXRpb25FbWFpbEZvclVzZXIoKSB7XHJcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLlNlbmRBY3RpdmF0aW9uRW1haWxGb3JVc2VyKHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QgPSBbXTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIC8vU2V0IHBhc3N3b3JkIGZ1bmN0aW9uXHJcblxyXG4gIHNob3dzZXRQYXNzd29yZFVzZXJNb2RhbChVc2VyOiBhbnksIHNldFBhc3N3b3JkVXNlck1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybVxyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRTZXRQQXNzd29yZE1vZGVsO1xyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldFNldFBhc3N3b3JkRnVuY3Rpb247XHJcbiAgICB0aGlzLlNldFVzZXJQYXNzd29yZEZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudDtcclxuICAgIHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybU9wdGlvbnMuUGFnaW5nQWN0aW9uTW9kZSA9IFBhZ2luZ0FjdGlvbk1vZGUuVXBkYXRlO1xyXG4gICAgdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9ucy5PblN1Y2Nlc3NIYW5kbGVyID0gdGhpcy5vblN1Ym1pdFN1Y2Nlc3M7XHJcblxyXG4gICAgdGhpcy5zZXRQYXNzd29yZFVzZXJMaXN0ID0gW107XHJcbiAgICB0aGlzLnNldFBhc3N3b3JkVXNlckxpc3QucHVzaChVc2VyKTtcclxuICAgIHRoaXMuTmFtZSA9IFVzZXIubmFtZVN0cjtcclxuICAgIHRoaXMuRW1haWwgPSBVc2VyLmVtYWlsO1xyXG5cclxuICAgIHRoaXMuUGFzc3dvcmQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuUGFzc3dvcmQuTmFtZSA9IFwiUGFzc3dvcmRcIjtcclxuICAgIHRoaXMuUGFzc3dvcmQuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuUGFzc3dvcmQuVHlwZSA9IElucHV0VHlwZS5QYXNzd29yZDtcclxuICAgIHRoaXMuUGFzc3dvcmQuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uLmZ1bmN0aW9uQm9keSA9IChjb250cm9sKSA9PiB7XHJcbiAgICAgIGxldCBQYXNzd29yZCA9IHRoaXMuU2V0VXNlclBhc3N3b3JkRm9ybS5jb250cm9sc1tcIlBhc3N3b3JkXCJdLnZhbHVlO1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAhPSBQYXNzd29yZClcclxuICAgICAgICByZXR1cm4geyAnY3VzdG9tZXJFcnJvcic6IHRydWUgfTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9O1xyXG4gICAgdGhpcy5jdXN0b21WYWxpZGF0aW9uLm1hc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQYXNzd29yZE5vdE1hdGNoXCIpO1xyXG5cclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24gPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uTmFtZSA9IFwiUGFzc3dvcmRDb25maXJtYXRpb25cIjtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uVHlwZSA9IElucHV0VHlwZS5QYXNzd29yZDtcclxuICAgIHRoaXMuUGFzc3dvcmRDb25maXJtYXRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICB0aGlzLlBhc3N3b3JkQ29uZmlybWF0aW9uLkN1c3RvbVZhbGlkYXRpb24gPSBbdGhpcy5jdXN0b21WYWxpZGF0aW9uXTtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHNldFBhc3N3b3JkVXNlck1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcbiAgZ2V0U2V0UEFzc3dvcmRNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5TZXRVc2VyUGFzc3dvcmRGb3JtLnZhbHVlO1xyXG4gICAgbGV0IHVwZGF0ZXNVc2VycyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuc2V0UGFzc3dvcmRVc2VyTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnNldFBhc3N3b3JkVXNlckxpc3RbaW5kZXhdO1xyXG4gICAgICBlbGVtZW50LlBhc3N3b3JkID0gUmVzdWx0TW9kZWwuUGFzc3dvcmQ7XHJcbiAgICAgIGVsZW1lbnQuUGFzc3dvcmRDb25maXJtYXRpb24gPSBSZXN1bHRNb2RlbC5QYXNzd29yZENvbmZpcm1hdGlvbjtcclxuICAgICAgdXBkYXRlc1VzZXJzLnB1c2goZWxlbWVudCk7XHJcbiAgICB9XHJcbiAgICBwYXJhbUFycmF5LnB1c2godXBkYXRlc1VzZXJzKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2V0UGFzc3dvcmRGdW5jdGlvbiA9IChwYXNzd29yZExpc3RNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5TZXRVc2Vyc1Bhc3N3b3JkKHBhc3N3b3JkTGlzdE1vZGVsKTtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0U3VjY2VzcyA9IChyZXN1bHQpID0+IHtcclxuICAgIHRoaXMucmVzZXRVc2Vyc0NvdW50KCk7XHJcbiAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgLy9Vc2VycyBMaXN0IEZ1bmN0aW9uc1xyXG5cclxuICAvL1Nob3cgYWN0aXZhdGUsZGVhY3RpdmF0ZSxyZXNldFBhc3N3b3JkLHNlbmRhY3RpdmF0aW9uZW1haWwgbW9kYWxzXHJcbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKHR5cGU6IG51bWJlciwgQ29uZmlybWF0aW9uTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAxOlxyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2YXRlQ29uZmlybWF0aW9uXCIpO1xyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTW9kYWxUeXBlID0gMVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIDI6XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25NZXNzYWdlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVhY3RpdmF0ZUNvbmZpcm1hdGlvblwiKTtcclxuICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsVHlwZSA9IDJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAzOlxyXG4gICAgICAgIHRoaXMuQ29uZmlybWF0aW9uTWVzc2FnZSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJlc2V0UGFzc3dvcmRDb25maXJtYXRpb25cIik7XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbFR5cGUgPSAzXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgNDpcclxuICAgICAgICB0aGlzLkNvbmZpcm1hdGlvbk1lc3NhZ2UgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kQWN0aXZhdGlvbk1haWxDb25maXJtYXRpb25cIik7XHJcbiAgICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbFR5cGUgPSA0XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihDb25maXJtYXRpb25Nb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcblxyXG4gIH1cclxuICAvL0FjdGl2YXRlIHVzZXJzIGxpc3RcclxuICBhY3RpdmF0ZVVzZXJMaXN0KCkge1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5BY3RpdmF0ZVVzZXJzKHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QgPSBbXTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgICAvL0RlYWN0aXZhdGUgdXNlcnMgbGlzdFxyXG4gIGRlYWN0aXZhdGVVc2VyTGlzdCgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuRGVhY3RpdmF0ZVVzZXJzKHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QgPSBbXTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy9SZXNldCBwYXNzd29yZHMgdXNlcnMgbGlzdFxyXG4gIHJlc2V0VXNlclBhc3N3b3JkTGlzdCgpIHtcclxuICAgIHRoaXMudXNlclNlcnZpY2UuUmVzZXRVc2Vyc1Bhc3N3b3JkKHRoaXMuU2VsZWN0ZWRVc2VyTGlzdCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVXNlckxpc3QgPSBbXTtcclxuICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLnBhZ2luZ0VsZW1lbnQgYXMgYW55O1xyXG4gICAgICBlbGVtZW50LlVwZGF0ZVBhZ2luZygpO1xyXG4gICAgICB0aGlzLnJlc2V0VXNlcnNDb3VudCgpO1xyXG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25zKCk7XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG5cclxufVxyXG4iLCI8YmxvY2stdWk+PC9ibG9jay11aT5cclxuPGRpdiAqbmdJZj1cIlNob3dQYWdlQ29udGVudFwiIGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPCEtLSBiZWdpbjo6SGVhZGVyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC01XCI+XHJcbiAgICAgIDxkaXYgIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIlVzZXJzRm9ybVwiPlxyXG4gICAgICAgICAgPCEtLSAoT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgLS0+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94ICBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIlVzZXJzRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93R2VuZXJhbEJ0bnNcIiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogU2hvd1BhZ2VDb250ZW50PT10cnVlPydibG9jayc6J25vbmUnfVwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibG9hZExpc3RzKClcIiBuZ2JEcm9wZG93blRvZ2dsZSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zXCIgaWQ9XCJGaWx0ZXJzRHJvcGRvd25cIiB0aXRsZT1cIkZpbHRlclwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWx0ZXIgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRmlsdGVyXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cIkZpbHRlcnNEcm9wZG93blwiICBjbGFzcz1cIiBmaWx0ZXItY29udGFpbmVyIG1lbnUgbWVudS1zdWIgbWVudS1zdWItZHJvcGRvd24gbWVudS1jb2x1bW4gbWVudS1yb3VuZGVkIG1lbnUtZ3JheS04MDAgbWVudS1zdGF0ZS1iZy1saWdodC1wcmltYXJ5ICB3LTI1MHB4IHctbWQtNTAwcHggZnctYm9sZCBweS0zIGRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodFwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIlVzZXJzRm9ybVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC03IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI3Blcm1pc3Npb25TZXREREwgW29wdGlvbnNdPVwicGVybWlzc2lvblNldHNPcHRpb25zXCIgW2dyb3VwXT1cIlVzZXJzRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjYWNjb3VudFN0YXR1c0RETCBbb3B0aW9uc109XCJhY2NvdW50U3RhdHVzT3B0aW9uc1wiIFtncm91cF09XCJVc2Vyc0Zvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI2xvY2tlZFN0YXR1c0RETCBbb3B0aW9uc109XCJsb2NrZWRTdGF0dXNPcHRpb25zXCIgW2dyb3VwXT1cIlVzZXJzRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjZGVwYXJ0bWVudHNEREwgW29wdGlvbnNdPVwiZGVwYXJ0bWVudHNPcHRpb25zXCIgW2dyb3VwXT1cIlVzZXJzRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLWFjdGl2ZS1saWdodC1wcmltYXJ5IHB2LXJlc2V0IGJ0bi1zbVwiIGlkPVwiYXBwbHlGaWx0ZXJzQnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZXRGaWx0ZXJzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJSZXNldFwiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93R2VuZXJhbEJ0bnNcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJleHBvcnRFeGNlbCgpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTMgYm5zaWdodHMtYnRuLWV4cG9ydFwiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkV4cG9ydFwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZG93bmxvYWQgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkV4cG9ydFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dBY3RpdmF0ZUJ0blwiIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0bkFjdGl2YXRlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cInNob3dDb25maXJtYXRpb25Nb2RhbCgxLCBDb25maXJtYXRpb25Nb2RhbClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaGlzdG9yeVwiPjwvaT4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aXZhdGVcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93RGVhY3RpdmF0ZUJ0blwiIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0bkRlYWN0aXZhdGVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwic2hvd0NvbmZpcm1hdGlvbk1vZGFsKDIsIENvbmZpcm1hdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wb3dlci1vZmZcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVhY3RpdmF0ZVwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dSZXNldFBhc3NCdG5cIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5SZXNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwic2hvd0NvbmZpcm1hdGlvbk1vZGFsKDMsIENvbmZpcm1hdGlvbk1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jb2dcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dTZW5kRW1haWxCdG5cIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5SZXNlbmRBY3RpdmF0aW9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgKGNsaWNrKT1cInNob3dDb25maXJtYXRpb25Nb2RhbCg0ICwgQ29uZmlybWF0aW9uTW9kYWwpXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlXCI+PC9pPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kQWN0aXZhdGlvbkVtYWlsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0dlbmVyYWxCdG5zXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIHRpdGxlPVwiQWRkXCIgKGNsaWNrKT1cInNob3dBZGRVc2VyTW9kYWwoYWRkVXNlck1vZGFsKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gZW5kOjpIZWFkZXIgLS0+XHJcbiAgICA8IS0tIGJlZ2luOjpCb2R5IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgIDwhLS0gYmVnaW46OlRhYmxlIGNvbnRhaW5lciAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlciB1c2Vycy10YWJsZVwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cInctNTBweFwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1zbSBmb3JtLWNoZWNrLWN1c3RvbSBmb3JtLWNoZWNrLXNvbGlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cInNlbGVjdEFsbFVzZXJMaXN0KCRldmVudCxjbGllbnRTaWRlUGFnaW5nUmVzdWx0KVwiIFtjaGVja2VkXT1cImFsbFNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLTxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiAoY2hhbmdlKT1cInNlbGVjdEFsbFVzZXJMaXN0KCRldmVudCxVc2VyUGFnaW5nUmVzdWx0KVwiIGlkPVwiY2hrX1NlbGVjdEFsbFwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICZuYnNwOzxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVtYWlsXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTW9iaWxlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUm9sZXNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdGF0dXNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB1c2VyIG9mIGNsaWVudFNpZGVQYWdpbmdSZXN1bHRcIj5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2stc20gZm9ybS1jaGVjay1jdXN0b20gZm9ybS1jaGVjay1zb2xpZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS08aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgKGNoYW5nZSk9XCJ1cGRhdGVVc2VyTGlzdCgkZXZlbnQsdXNlcilcIiBpZD1cIlVzZXIte3t1c2VyLmlkfX1cIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cInVwZGF0ZVVzZXJMaXN0KCRldmVudCx1c2VyKVwiIFsobmdNb2RlbCldPVwidXNlci5zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cInN5bWJvbC1sYWJlbCBmb250LXNpemUtaDUgZm9udC13ZWlnaHQtYm9sZCBiZy1saWdodC1wcmltYXJ5IG1sLTIgbWItMCBtZS0zXCI+QTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJzaG93RWRpdFVzZXJNb2RhbCh1c2VyLmlkLHVzZXIuaWRFbmNyeXB0ZWQsRWRpdFVzZXJNb2RhbClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJ0ZXh0LWRhcmsgZnctYm9sZGVyIHRleHQtaG92ZXItcHJpbWFyeSBmcy02XCI+e3t1c2VyLm5hbWVTdHJ9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57e3VzZXIudXNlcm5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7dXNlci5tb2JpbGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPnt7dXNlci5wZXJtaXNzaW9uc2V0fX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2Vzc1wiICpuZ0lmPVwidXNlci5pc0FjdGl2ZT09dHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmVcIil9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXJcIiAqbmdJZj1cInVzZXIuaXNBY3RpdmU9PWZhbHNlJiYgdXNlci5hY3RpdmF0aW9uRGF0ZSE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlZFwiKX19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmdcIiAqbmdJZj1cInVzZXIuaXNBY3RpdmU9PWZhbHNlJiYgdXNlci5hY3RpdmF0aW9uRGF0ZT09bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQZW5kaW5nQWN0aXZhdGlvblwiKX19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1lbnUtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0VkaXRVc2VyTW9kYWwodXNlci5pZCx1c2VyLmlkRW5jcnlwdGVkLEVkaXRVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwibWVudS1pdGVtIHB4LTNcIiAqbmdJZj1cInVzZXIuaXNBY3RpdmVcIiBpZD1cImJ0bkRlYWN0aXZhdGVcIiAoY2xpY2spPVwic2hvd0FjdGl2YXRlVXNlck1vZGFsKHVzZXIsZmFsc2UsQWN0aXZhdGVVc2VyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnUtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVhY3RpdmF0ZVwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwibWVudS1pdGVtIHB4LTNcIiBpZD1cImJ0bmFjdGl2YXRlXCIgKGNsaWNrKT1cInNob3dBY3RpdmF0ZVVzZXJNb2RhbCh1c2VyLHRydWUsQWN0aXZhdGVVc2VyTW9kYWwpXCIgKm5nSWY9XCIhdXNlci5pc0FjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2YXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCIgKGNsaWNrKT1cInNob3dSZXNldFBhc3N3b3JkVXNlck1vZGFsKHVzZXIgLCBSZXNldFBhc3N3b3JkVXNlck1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJlc2V0UGFzc3dvcmRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJtZW51LWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCIgKGNsaWNrKT1cInNob3dzZXRQYXNzd29yZFVzZXJNb2RhbCh1c2VyLCBzZXRQYXNzd29yZFVzZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZXRQYXNzd29yZFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwibWVudS1pdGVtIHB4LTNcIiBpZD1cImJ0blJlc2V0UGFzc1wiICpuZ0lmPVwiIXVzZXIuaXNBY3RpdmUmJnVzZXIuYWN0aXZhdGlvbkRhdGU9PW51bGxcIiAoY2xpY2spPVwic2hvd1NlbmRBY3RpdmF0aW9uRW1haWxNb2RhbCh1c2VyICwgU2VuZEFjdGl2YXRpb25FbWFpbE1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51LWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRBY3RpdmF0aW9uRW1haWxcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cImNsaWVudFNpZGVQYWdpbmdSZXN1bHQubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjZcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPCEtLSBlbmQ6OlRhYmxlIC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBlbmQ6OlRhYmxlIGNvbnRhaW5lciAtLT5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICA8IS0tIGJlZ2luIHBhZ2luZy0tPlxyXG4gICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFVzZXJzTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiIFtvcHRpb25zXT1cIlVzZXJQYWdpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cIlVzZXJzRm9ybVwiICNVc2VyUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgIDwhLS0gRW5kIHBhZ2luZy0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbjwhLS0gYWRkIHVzZXItLT5cclxuPG5nLXRlbXBsYXRlICNhZGRVc2VyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFVzZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkVXNlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiQWRkTmFtZVwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFkZFVzZXJuYW1lXCIgW2dyb3VwXT1cIkFkZFVzZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiQWRkU2FtQWNjb3VudFwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1QaG9uZSBbb3B0aW9uc109XCJBZGRNb2JpbGVOdW1iZXJcIiBbZ3JvdXBdPVwiQWRkVXNlckZvcm1cIj48L0JCU0YtUGhvbmU+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRVc2VyRGVwYXJ0bWVudFwiIFtncm91cF09XCJBZGRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLVRvZ2dsZXNsaWRlIFtvcHRpb25zXT1cIkFkZFNlbmRBY3RpdmF0aW9uRW1haWxcIiBbZ3JvdXBdPVwiQWRkVXNlckZvcm1cIj48L0JCU0YtVG9nZ2xlc2xpZGU+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRVc2VyUGVybWlzc2lvbnNcIiBbZ3JvdXBdPVwiQWRkVXNlckZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNDbG9zZVVzZXJNb2RhbCBpZD1cIkNsb3NlVXNlck1vZGFsXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fSA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gRWRpdCB1c2VyLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdFVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFVzZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdFVzZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXROYW1lXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICA8QkJTRi1QaG9uZSBbb3B0aW9uc109XCJFZGl0TW9iaWxlTnVtYmVyXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1QaG9uZT5cclxuICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0VXNlcm5hbWVcIiBbZ3JvdXBdPVwiRWRpdFVzZXJGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdEVtYWlsXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRTYW1BY2NvdW50XCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFVzZXJEZXBhcnRtZW50XCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0VXNlclBlcm1pc3Npb25zXCIgW2dyb3VwXT1cIkVkaXRVc2VyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAjQ2xvc2VFZGl0VXNlck1vZGFsIGlkPVwiQ2xvc2VFZGl0VXNlck1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSBEZWFjdGl2YXRlL0FjdGl2YXRlIFVzZXIgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjQWN0aXZhdGVVc2VyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiICpuZ0lmPVwiIVNob3dBY3RpdmF0ZU1vZGVsRGF0YVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWFjdGl2YXRlXCIpfX1cclxuICAgICAgPC9oMT5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiICpuZ0lmPVwiU2hvd0FjdGl2YXRlTW9kZWxEYXRhXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2YXRlXCIpfX1cclxuICAgICAgPC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICA8IS0tYmVnaW46Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpTdmcgSWNvbiB8IHBhdGg6IGljb25zL2R1b3R1bmUvZ2VuZXJhbC9nZW4wNDQuc3ZnLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLWVuZDo6U3ZnIEljb24tLT5cclxuICAgICAgPCEtLWVuZDo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpDb250ZW50LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIiAqbmdJZj1cIiFTaG93QWN0aXZhdGVNb2RlbERhdGFcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVhY3RpdmF0ZUNvbmZpcm1hdGlvblwiKX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIiAqbmdJZj1cIlNob3dBY3RpdmF0ZU1vZGVsRGF0YVwiPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3RpdmF0ZUNvbmZpcm1hdGlvblwiKX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50LS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgaWQ9XCJcIiBjbGFzcz1cIlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDx0YWJsZSBpZD1cInRhYmxlQ29uZmlybWF0aW9uXCIgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFwiKX19PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwidHJJdGVtXCI+XHJcbiAgICAgICAgICAgICAgPHRkPnt7TmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3tFbWFpbH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNDbG9zZUFjdGl2YXRlVXNlck1vZGFsIGlkPVwiQ2xvc2VBY3RpdmF0ZVVzZXJNb2RhbFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX0gPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiIVNob3dBY3RpdmF0ZU1vZGVsRGF0YVwiIChjbGljayk9XCJkZWFjdGl2YXRlKClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIlNob3dBY3RpdmF0ZU1vZGVsRGF0YVwiIChjbGljayk9XCJhY3RpdmF0ZSgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSBSZXNldFBhc3N3b3JkIFVzZXIgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjUmVzZXRQYXNzd29yZFVzZXJNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZFwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICA8IS0tYmVnaW46Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpTdmcgSWNvbiB8IHBhdGg6IGljb25zL2R1b3R1bmUvZ2VuZXJhbC9nZW4wNDQuc3ZnLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLWVuZDo6U3ZnIEljb24tLT5cclxuICAgICAgPCEtLWVuZDo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpDb250ZW50LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRQYXNzd29yZENvbmZpcm1hdGlvblwiKX19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tZW5kOjpDb250ZW50LS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tZW5kOjpXcmFwcGVyLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTIwMFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMjAwXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW1haWxcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRySXRlbVwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZGFya1wiPnt7TmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQ+e3tFbWFpbH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgPGJ1dHRvbiBpZD1cIkNsb3NlUmVzZXRQYXNzd29yZFVzZXJNb2RhbFwiICNDbG9zZVJlc2V0UGFzc3dvcmRVc2VyTW9kYWwgdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX08L2J1dHRvbj5cclxuXHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldFBhc3N3b3JkKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBzZXRQYXNzd29yZCBVc2VyIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI3NldFBhc3N3b3JkVXNlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZXRQYXNzd29yZFwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICA8IS0tYmVnaW46Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpTdmcgSWNvbiB8IHBhdGg6IGljb25zL2R1b3R1bmUvZ2VuZXJhbC9nZW4wNDQuc3ZnLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLWVuZDo6U3ZnIEljb24tLT5cclxuICAgICAgPCEtLWVuZDo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpDb250ZW50LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2V0UGFzc3dvcmRDb25maXJtYXRpb25cIil9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLWVuZDo6Q29udGVudC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLWVuZDo6V3JhcHBlci0tPlxyXG4gICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJTZXRVc2VyUGFzc3dvcmRGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgIDx0YWJsZSBpZD1cInRhYmxlQ29uZmlybWF0aW9uXCIgY2xhc3M9XCJ0YWJsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIFwiPlxyXG4gICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwXCI+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBcIj4ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRW1haWxcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwXCI+IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlBhc3N3b3JkXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPiB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb25maXJtUGFzc3dvcmRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInRySXRlbVwiPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImFsaWduLW1pZGRsZVwiPnt7TmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJhbGlnbi1taWRkbGVcIj57e0VtYWlsfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiUGFzc3dvcmRcIiBbZ3JvdXBdPVwiU2V0VXNlclBhc3N3b3JkRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJQYXNzd29yZENvbmZpcm1hdGlvblwiIFtncm91cF09XCJTZXRVc2VyUGFzc3dvcmRGb3JtXCI+PC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBpZD1cIkNsb3Nlc2V0UGFzc3dvcmRVc2VyTW9kYWxcIiAjQ2xvc2VzZXRQYXNzd29yZFVzZXJNb2RhbCB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG5cclxuICBcclxuXHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFNlbmQgQWN0aXZhdGlvbiBFbWFpbCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNTZW5kQWN0aXZhdGlvbkVtYWlsTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRBY3RpdmF0aW9uRW1haWxcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LXdhcm5pbmcgcm91bmRlZCBib3JkZXItd2FybmluZyBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgPCEtLWJlZ2luOjpJY29uLS0+XHJcbiAgICAgIDwhLS1iZWdpbjo6U3ZnIEljb24gfCBwYXRoOiBpY29ucy9kdW90dW5lL2dlbmVyYWwvZ2VuMDQ0LnN2Zy0tPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi13YXJuaW5nIG1lLTRcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDwhLS1lbmQ6OlN2ZyBJY29uLS0+XHJcbiAgICAgIDwhLS1lbmQ6Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpXcmFwcGVyLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgIDwhLS1iZWdpbjo6Q29udGVudC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGl2YXRlQ29uZmlybWF0aW9uXCIpfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1lbmQ6OkNvbnRlbnQtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS1lbmQ6OldyYXBwZXItLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGUgbm90ZS13YXJuaW5nIHRleHQtY2VudGVyXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICA8dGFibGUgaWQ9XCJ0YWJsZUNvbmZpcm1hdGlvblwiIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXJcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbWFpbFwiKX19PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBcIiAqbmdJZj1cIlNlbGVjdGVkVXNlckxpc3QubGVuZ3RoPjFcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHVzZXIgb2YgU2VsZWN0ZWRVc2VyTGlzdFwiIGNsYXNzPVwidHJJdGVtXCI+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZGFya1wiPnt7dXNlci5uYW1lU3RyfX08L3RkPlxyXG5cclxuICAgICAgICAgICAgPHRkPnt7dXNlci51c2VybmFtZX19PC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwiU2VsZWN0ZWRVc2VyTGlzdC5sZW5ndGg+MVwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJkZWxldGVVc2VyRnJvbUxpc3QodXNlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0LWRhbmdlciBidG4taWNvbiBidG4tc21cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXRyYXNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgPGJ1dHRvbiAjQ2xvc2VBY3RpdmF0aW9uRW1haWxNb2RhbCBpZD1cIkNsb3NlQWN0aXZhdGlvbkVtYWlsTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCIgKGNsaWNrKT1cInNlbmRBY3RpdmF0aW9uRW1haWxGb3JVc2VyKClcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIGNvbmZpcm1hdGlvbiBNZXNzYWdlICBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNDb25maXJtYXRpb25Nb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ29uZmlybWF0aW9uTWVzc2FnZVwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICA8IS0tYmVnaW46Okljb24tLT5cclxuICAgICAgPCEtLWJlZ2luOjpTdmcgSWNvbiB8IHBhdGg6IGljb25zL2R1b3R1bmUvZ2VuZXJhbC9nZW4wNDQuc3ZnLS0+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLWVuZDo6U3ZnIEljb24tLT5cclxuICAgICAgPCEtLWVuZDo6SWNvbi0tPlxyXG4gICAgICA8IS0tYmVnaW46OldyYXBwZXItLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgPCEtLWJlZ2luOjpDb250ZW50LS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAge3tDb25maXJtYXRpb25NZXNzYWdlfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS1lbmQ6OkNvbnRlbnQtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS1lbmQ6OldyYXBwZXItLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgIDx0YWJsZSBpZD1cInRhYmxlQ29uZmlybWF0aW9uXCIgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0ciBjbGFzcz1cInRleHQtc3RhcnQgdGV4dC1ncmF5LTQwMCBmdy1ib2xkZXIgZnMtNyB0ZXh0LXVwcGVyY2FzZSBncy0wXCI+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIk5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVtYWlsXCIpfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MFwiICpuZ0lmPVwiU2VsZWN0ZWRVc2VyTGlzdC5sZW5ndGg+MVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgdXNlciBvZiBTZWxlY3RlZFVzZXJMaXN0XCIgY2xhc3M9XCJ0ckl0ZW1cIj5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYXJrXCI+e3t1c2VyLm5hbWVTdHJ9fTwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8dGQ+e3t1c2VyLnVzZXJuYW1lfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJTZWxlY3RlZFVzZXJMaXN0Lmxlbmd0aD4xXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRlbGV0ZVVzZXJGcm9tTGlzdCh1c2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS10cmFzaFwiPjwvaT5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgIDxidXR0b24gI0Nsb3NlQ29uZmlybWF0aW9uTW9kYWwgaWQ9XCJDbG9zZUNvbmZpcm1hdGlvbk1vZGFsXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIkNvbmZpcm1hdGlvbk1vZGFsVHlwZT09MVwiIChjbGljayk9XCJhY3RpdmF0ZVVzZXJMaXN0KClcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cIkNvbmZpcm1hdGlvbk1vZGFsVHlwZT09MlwiIChjbGljayk9XCJkZWFjdGl2YXRlVXNlckxpc3QoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiQ29uZmlybWF0aW9uTW9kYWxUeXBlPT0zXCIgKGNsaWNrKT1cInJlc2V0VXNlclBhc3N3b3JkTGlzdCgpXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJDb25maXJtYXRpb25Nb2RhbFR5cGU9PTRcIiAoY2xpY2spPVwic2VuZEFjdGl2YXRpb25FbWFpbEZvclVzZXIoKVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX1cclxuICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuXHJcbiJdfQ==
|