@bnsights/bbsf-admin-portal 1.0.69 → 1.0.70
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 +5 -0
- package/bnsights-bbsf-admin-portal-1.0.70.tgz +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +60 -44
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/impersonation-rules/impersonation-rules.module.js +3 -3
- package/esm2015/lib/Pages/jobs/jobs.module.js +3 -3
- package/esm2015/lib/Pages/lookups/lookup-item/lookup-item.component.js +3 -3
- package/esm2015/lib/Pages/notifications/add/add.component.js +1 -6
- package/esm2015/lib/Pages/notifications/master-layouts/master-layouts.component.js +2 -2
- package/esm2015/lib/Pages/notifications/template-info/template-info.component.js +8 -3
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +2 -4
- package/esm2015/lib/Pages/publicHolidays/public-holiday/public-holiday.component.js +1 -3
- package/esm2015/lib/Pages/shared/components/survey/survey-info/add-question/add-question.component.js +2 -2
- package/esm2015/lib/Pages/shared/components/survey/survey-info/edit-question/edit-question.component.js +2 -2
- package/esm2015/lib/Pages/shared/components/survey/survey-info/survey-info.component.js +27 -1
- package/esm2015/lib/Pages/workflows/tabs/tabs.component.js +2 -2
- package/esm2015/lib/Pages/workflows/workflow/workflow.component.js +1 -2
- package/fesm2015/bnsights-bbsf-admin-portal.js +60 -44
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/lib/Pages/notifications/template-info/template-info.component.d.ts +1 -0
- package/package.json +1 -1
- package/src/lib/assets/sass/custom-styles.scss +1 -7
- package/bnsights-bbsf-admin-portal-1.0.69.tgz +0 -0
|
@@ -31,6 +31,7 @@ export class TemplateInfoComponent {
|
|
|
31
31
|
this.modalService = modalService;
|
|
32
32
|
this.requestHandlerService = requestHandlerService;
|
|
33
33
|
this.TemplateIdEnc = "";
|
|
34
|
+
this.isDataLoaded = false;
|
|
34
35
|
//Required lists
|
|
35
36
|
this.LanguageList = [];
|
|
36
37
|
this.EmailServiceProviderList = [];
|
|
@@ -39,7 +40,7 @@ export class TemplateInfoComponent {
|
|
|
39
40
|
this.OrganizationList = [];
|
|
40
41
|
this.LanguageModeList = [];
|
|
41
42
|
this.MasterLayoutList = [];
|
|
42
|
-
//GenerateCode Model Controls
|
|
43
|
+
//GenerateCode Model Controls
|
|
43
44
|
this.GenerateCodeForm = new FormGroup({});
|
|
44
45
|
this.ValueToCopy = "";
|
|
45
46
|
//Send Email Model Controls
|
|
@@ -139,9 +140,11 @@ export class TemplateInfoComponent {
|
|
|
139
140
|
}
|
|
140
141
|
//Initialize page info
|
|
141
142
|
initializePage() {
|
|
143
|
+
this.isDataLoaded = false;
|
|
142
144
|
this.templateService.getTemplateInfo(this.TemplateId).subscribe((result) => {
|
|
143
145
|
let Result = result;
|
|
144
146
|
this.TemplateInfo = Result.val;
|
|
147
|
+
console.log(this.TemplateInfo);
|
|
145
148
|
PageInfoService.PageTitle = this.TemplateInfo.templateName;
|
|
146
149
|
PageInfoService.PageBreadcrumbs = [
|
|
147
150
|
{ title: this.utilityService.getResourceValue("Home"), path: '/Admin/Home', isSeparator: false, isActive: false },
|
|
@@ -149,6 +152,8 @@ export class TemplateInfoComponent {
|
|
|
149
152
|
{ title: this.utilityService.getResourceValue("Templates"), path: '/Admin/Notifications/Templates', isSeparator: false, isActive: false },
|
|
150
153
|
{ title: '', path: '', isSeparator: true, isActive: false }
|
|
151
154
|
];
|
|
155
|
+
this.isDataLoaded = true;
|
|
156
|
+
this.utilityService.stopBlockUI();
|
|
152
157
|
this.pageInfoService.calculateTitle();
|
|
153
158
|
this.pageInfoService.calculateBreadcrumbs();
|
|
154
159
|
});
|
|
@@ -382,7 +387,7 @@ export class TemplateInfoComponent {
|
|
|
382
387
|
}
|
|
383
388
|
}
|
|
384
389
|
TemplateInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TemplateInfoComponent, deps: [{ token: i1.UtilityService }, { token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i2.ClipboardService }, { token: i3.TemplateService }, { token: i4.ActivatedRoute }, { token: i5.PageInfoService }, { token: i6.NgbModal }, { token: i1.RequestHandlerService }], target: i0.ɵɵFactoryTarget.Component });
|
|
385
|
-
TemplateInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TemplateInfoComponent, selector: "lib-template-info", ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n <div class=\"container-fluid\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showEditTemplateModal(EditTemplateModal)\">\r\n <i class=\"fa fa fa-edit\" aria-hidden=\"true\"></i>\r\n <span>{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showSendEmailModal(SendEmailModal)\">\r\n <i class=\"fa fa-paper-plane\"></i>{{utilityService.getResourceValue(\"SendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendEmailModal(TestSendEmailModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"TestSendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendSMSModal(TestSendSMSModal)\">\r\n <i class=\"fa fa-envelope-open-text sms\"></i>{{utilityService.getResourceValue(\"TestSendSMS\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateUpdateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-key\"></i>{{utilityService.getResourceValue(\"GenerateUpdateCode\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center \">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n English:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.english}}\r\n </a>\r\n\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.english}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.english}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.arabic}}\r\n </a>\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3 ar\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.arabic}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.arabic}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n English:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt\">{{TemplateInfo.smsTemplateInfo.sms.english}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt ar\"> {{TemplateInfo.smsTemplateInfo.sms.arabic}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n<!-- send Email Modal -->\r\n<ng-template #SendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"SendEmailTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"SendEmailFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"To\" [group]=\"SendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Language\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EmailServiceProvider\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseSendEmailForm id=\"CloseSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test sms Email Modal -->\r\n<ng-template #TestSendSMSModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendSMS\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendSMSFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Phone [options]=\"TestSendSMSTo\" [group]=\"TestSendSMSForm\">\r\n </BBSF-Phone>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestSMSServiceProvider\" [group]=\"TestSendSMSForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n Kindly note that these attributes are reserved\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendSMSForm id=\"CloseTestSendSMSForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test Send Email Modal -->\r\n<ng-template #TestSendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendEmail\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendEmailFormOptions\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"TestSendEmailTo\" [group]=\"TestSendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestEmailServiceProvider\" [group]=\"TestSendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"KeyMapNote\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendEmailForm id=\"CloseTestSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- edit Modal -->\r\n<ng-template #EditTemplateModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"EditTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditTemplateFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditName\" [group]=\"EditTemplateForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditTemplateForm\">\r\n </BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditSysName\" [group]=\"EditTemplateForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditOrganization\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLanguageMode\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditCategory\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditMasterLayout\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsEmail\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsSms\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditEnableIntensiveLogging\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditTemplateModal id=\"CloseEditTemplateModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- GenerateCode Modal -->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n\r\n <div class=\"Row\">\r\n <BBSF-TextArea [options]=\"GenerateCodeTextArea\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyInputMessage()\">\r\n {{utilityService.getResourceValue(\"CopyToClipboard\")}}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n", components: [{ type: i7.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i8.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { type: i8.TextAreaComponent, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i8.PhoneComponent, selector: "BBSF-Phone", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i10.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
390
|
+
TemplateInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: TemplateInfoComponent, selector: "lib-template-info", ngImport: i0, template: "<block-ui></block-ui>\r\n\r\n <div class=\"container-fluid\" *ngIf=\"isDataLoaded\">\r\n <div class=\"card card-custom-h\">\r\n <div class=\"card-header border-0 pt-5\">\r\n <div class=\"card-title align-items-start flex-column\">\r\n\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showEditTemplateModal(EditTemplateModal)\">\r\n <i class=\"fa fa fa-edit\" aria-hidden=\"true\"></i>\r\n <span>{{utilityService.getResourceValue(\"Edit\")}}</span>\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showSendEmailModal(SendEmailModal)\">\r\n <i class=\"fa fa-paper-plane\"></i>{{utilityService.getResourceValue(\"SendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendEmailModal(TestSendEmailModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"TestSendEmail\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-light-primary\"\r\n (click)=\"showTestSendSMSModal(TestSendSMSModal)\">\r\n <i class=\"fa fa-envelope-open-text sms\"></i>{{utilityService.getResourceValue(\"TestSendSMS\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-bars\"></i>{{utilityService.getResourceValue(\"GenerateCode\")}}\r\n </button>\r\n <button type=\"button\" id=\"btnSetPass\" class=\"btn btn-sm me-3 btn-primary\" *ngIf=\"!ProductionMode\"\r\n (click)=\"showGenerateUpdateCodeByIdModal(GenerateCodeModal)\">\r\n <i class=\"fa fa-key\"></i>{{utilityService.getResourceValue(\"GenerateUpdateCode\")}}\r\n </button>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body py-3\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center \">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n English:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.english}}\r\n </a>\r\n\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.english}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.english}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.english}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6 mb-10\">\r\n <div class=\"d-flex h-100 align-items-center\">\r\n <!--begin::Option-->\r\n <div class=\"w-100 d-flex flex-column flex-center rounded-3 bg-light py-10 px-10 h-100\">\r\n <!--begin::Heading-->\r\n <div class=\"mb-7 d-flex justify-content-between w-100\">\r\n <!--begin::Title-->\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:\r\n {{TemplateInfo.emailTemplateInfo.emailSubject.arabic}}\r\n </a>\r\n <a [routerLink]=\"['/Admin/Notifications/EditEmail',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\" class=\"btn btn-sm btn-light-primary btn-icon\">\r\n <i class=\"fa fa-pen\"></i>\r\n </a>\r\n </div>\r\n <div class=\"w-100 mb-10\">\r\n <!--begin::Item-->\r\n <div class=\"d-flex align-items-center mb-5\">\r\n <div class=\"fw-bold fs-6 text-gray-800 flex-grow-1 pe-3 ar\">\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseHeader.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailHtmlHeadSection.arabic}}\">\r\n </div>\r\n <div innerHTML=\"{{TemplateInfo.emailTemplateInfo.emailBody.arabic}}\">\r\n </div>\r\n <div class=\"table-dark-skin pt-7\" innerHTML=\"{{TemplateInfo.emailTemplateInfo.templateEmailBaseFooter.arabic}}\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!--end::Select-->\r\n </div>\r\n <!--end::Option-->\r\n </div>\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n English:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'en']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt\">{{TemplateInfo.smsTemplateInfo.sms.english}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"col-xl-6\">\r\n <div class=\"card bg-light\">\r\n <div class=\"card-header border-0 py-10\">\r\n <div class=\"card-title text-primary mb-5 fw-boldest fs-2\">\r\n Arabic:SMS\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <a class=\"btn btn-sm btn-light-primary btn-icon\" [routerLink]=\"['/Admin/Notifications/EditSMS',TemplateInfo.iD_GUID,'ar']\"\r\n routerLinkActive=\"router-link-active\">\r\n <span class=\"\">\r\n <i class=\"fa fa-pen font-size-18\"></i>\r\n </span>\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"card-body d-flex align-items-center justify-content-center\">\r\n <div class=\"iphone\">\r\n <span class=\"position-absolute mobile-txt ar\"> {{TemplateInfo.smsTemplateInfo.sms.arabic}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n<!-- send Email Modal -->\r\n<ng-template #SendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"SendEmailTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"SendEmailFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"To\" [group]=\"SendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"Language\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EmailServiceProvider\" [group]=\"SendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseSendEmailForm id=\"CloseSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test sms Email Modal -->\r\n<ng-template #TestSendSMSModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendSMS\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendSMSFormOptions\">\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-Phone [options]=\"TestSendSMSTo\" [group]=\"TestSendSMSForm\">\r\n </BBSF-Phone>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestSMSServiceProvider\" [group]=\"TestSendSMSForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n\r\n </div>\r\n\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n Kindly note that these attributes are reserved\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendSMSForm id=\"CloseTestSendSMSForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Test Send Email Modal -->\r\n<ng-template #TestSendEmailModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"TestSendEmail\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"TestSendEmailFormOptions\">\r\n\r\n <div class=\"row\">\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-TextArea [options]=\"TestSendEmailTo\" [group]=\"TestSendEmailForm\">\r\n </BBSF-TextArea>\r\n </div>\r\n\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"TestEmailServiceProvider\" [group]=\"TestSendEmailForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"notice d-flex bg-light-warning rounded border-warning border border-dashed mb-10 p-6\">\r\n <span class=\"svg-icon svg-icon-2tx svg-icon-warning me-4\">\r\n <span [inlineSVG]=\"'./src/assets/images/gen044.svg'\"></span>\r\n </span>\r\n <div class=\"d-flex flex-stack flex-grow-1\">\r\n <div class=\"fw-bold\">\r\n <div class=\"fs-6 text-gray-700\">\r\n {{utilityService.getResourceValue(\"KeyMapNote\")}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"mb-2\">NameEN</li>\r\n <li class=\"mb-2\">NameAR</li>\r\n <li class=\"mb-2\">Subject</li>\r\n <li class=\"mb-2\">LangKey</li>\r\n <li class=\"mb-2\">Mobile</li>\r\n <li class=\"mb-2\">Email</li>\r\n <li class=\"mb-2\">Date</li>\r\n <li class=\"mb-2\">Time</li>\r\n <li class=\"mb-2\">DateTime</li>\r\n </ul>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseTestSendEmailForm id=\"CloseTestSendEmailForm\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"Send\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- edit Modal -->\r\n<ng-template #EditTemplateModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"EditTemplate\")}}</h1>\r\n </div>\r\n <BBSF-Form [options]=\"EditTemplateFormOptions\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextBox [options]=\"EditName\" [group]=\"EditTemplateForm\"></BBSF-MultiLingualTextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-MultiLingualTextArea [options]=\"EditDescription\" [group]=\"EditTemplateForm\">\r\n </BBSF-MultiLingualTextArea>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngIf=\"!ProductionMode\">\r\n <div class=\"col-md-12\">\r\n <BBSF-TextBox [options]=\"EditSysName\" [group]=\"EditTemplateForm\">\r\n </BBSF-TextBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditOrganization\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditLanguageMode\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditCategory\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-DropdownList [options]=\"EditMasterLayout\" [group]=\"EditTemplateForm\">\r\n </BBSF-DropdownList>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsEmail\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditIsSms\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <BBSF-CheckBox [options]=\"EditEnableIntensiveLogging\" [group]=\"EditTemplateForm\">\r\n </BBSF-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-center pt-7\">\r\n <button #CloseEditTemplateModal id=\"CloseEditTemplateModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"submit\" class=\"btn btn-primary btn-sm\">{{utilityService.getResourceValue(\"SaveLabel\")}}</button>\r\n </div>\r\n </BBSF-Form>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- GenerateCode Modal -->\r\n<ng-template #GenerateCodeModal let-modal>\r\n <div class=\"modal-header pb-0 border-0 justify-content-end\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\"></h5>\r\n <button type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-sm btn-icon btn-active-color-primary\" (click)=\"modal.dismiss()\">\r\n <span class=\"svg-icon svg-icon-1\">\r\n <span [inlineSVG]=\"'./src/assets/images/arr061.svg'\"></span>\r\n </span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body scroll-y px-10 px-lg-15 pt-0 pb-15\">\r\n <div class=\"mb-13 text-center\">\r\n <h1 class=\"mb-3\">{{utilityService.getResourceValue(\"GenerateCode\")}}</h1>\r\n </div>\r\n <form [formGroup]=\"GenerateCodeForm\">\r\n\r\n <div class=\"Row\">\r\n <BBSF-TextArea [options]=\"GenerateCodeTextArea\" [group]=\"GenerateCodeForm\" #GenerateCodeInput>\r\n </BBSF-TextArea>\r\n </div>\r\n <div class=\"text-center pt-7\">\r\n <button #CloseGenerateCodeModal id=\"CloseGenerateCodeModal\" type=\"button\" class=\"btn btn-light me-3 btn-sm\"\r\n (click)=\"modal.dismiss()\">\r\n {{utilityService.getResourceValue(\"CancelLabel\")}}\r\n </button>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" (click)=\"copyInputMessage()\">\r\n {{utilityService.getResourceValue(\"CopyToClipboard\")}}\r\n </button>\r\n </div>\r\n </form>\r\n </div>\r\n</ng-template>\r\n\r\n", components: [{ type: i7.BlockUIComponent, selector: "block-ui", inputs: ["name", "template", "message", "delayStart", "delayStop"] }, { type: i8.FormComponent, selector: "BBSF-Form", inputs: ["options"], outputs: ["OnChange"] }, { type: i8.TextAreaComponent, selector: "BBSF-TextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.DropdownListComponent, selector: "BBSF-DropdownList", inputs: ["group", "options"], outputs: ["OnChange", "onClear"] }, { type: i8.PhoneComponent, selector: "BBSF-Phone", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MultiLingualTextBoxComponent, selector: "BBSF-MultiLingualTextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.MultiLingualTextAreaComponent, selector: "BBSF-MultiLingualTextArea", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.TextboxComponent, selector: "BBSF-TextBox", inputs: ["group", "options"], outputs: ["OnChange"] }, { type: i8.CheckBoxComponent, selector: "BBSF-CheckBox", inputs: ["group", "options"], outputs: ["OnChange"] }], directives: [{ type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: i10.InlineSVGDirective, selector: "[inlineSVG]", inputs: ["resolveSVGUrl", "replaceContents", "prepend", "injectComponent", "cacheSVG", "forceEvalStyles", "evalScripts", "inlineSVG", "setSVGAttributes", "removeSVGAttributes", "fallbackImgUrl", "onSVGLoaded"], outputs: ["onSVGInserted", "onSVGFailed"] }, { type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i11.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] });
|
|
386
391
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: TemplateInfoComponent, decorators: [{
|
|
387
392
|
type: Component,
|
|
388
393
|
args: [{
|
|
@@ -390,4 +395,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
390
395
|
templateUrl: './template-info.component.html'
|
|
391
396
|
}]
|
|
392
397
|
}], ctorParameters: function () { return [{ type: i1.UtilityService }, { type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i2.ClipboardService }, { type: i3.TemplateService }, { type: i4.ActivatedRoute }, { type: i5.PageInfoService }, { type: i6.NgbModal }, { type: i1.RequestHandlerService }]; } });
|
|
393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL25vdGlmaWNhdGlvbnMvdGVtcGxhdGUtaW5mby90ZW1wbGF0ZS1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvbm90aWZpY2F0aW9ucy90ZW1wbGF0ZS1pbmZvL3RlbXBsYXRlLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFclAsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTckYsTUFBTSxPQUFPLHFCQUFxQjtJQTBEaEMsWUFDUyxjQUE4QixFQUFVLG9CQUEwQyxFQUNqRixrQkFBc0MsRUFBVSxpQkFBbUMsRUFDbkYsZUFBZ0MsRUFBVSxjQUE4QixFQUN4RSxlQUFnQyxFQUFVLFlBQXNCLEVBQ2hFLHFCQUE0QztRQUo3QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQ2pGLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25GLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUN4RSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUNoRSwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBM0R0RCxrQkFBYSxHQUFXLEVBQUUsQ0FBQTtRQUkxQixnQkFBZ0I7UUFDaEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsNkJBQXdCLEdBQUcsRUFBRSxDQUFDO1FBQzlCLDJCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUM1QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUV0QiwrQkFBK0I7UUFDL0IscUJBQWdCLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFHckMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsMkJBQTJCO1FBQzNCLGtCQUFhLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMseUJBQW9CLEdBQUcsSUFBSSxXQUFXLENBQUM7UUFLdkMsZ0NBQWdDO1FBQ2hDLHNCQUFpQixHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLDZCQUF3QixHQUFHLElBQUksV0FBVyxDQUFDO1FBSzNDLDhCQUE4QjtRQUM5QixvQkFBZSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLDJCQUFzQixHQUFHLElBQUksV0FBVyxDQUFDO1FBSXpDLHFCQUFxQjtRQUNyQixxQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyw0QkFBdUIsR0FBRyxJQUFJLFdBQVcsQ0FBQztRQTZNMUMseUJBQW9CLEdBQUcsR0FBRyxFQUFFO1lBQzFCLElBQUksVUFBVSxHQUFVLEVBQUUsQ0FBQztZQUMzQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO1lBQzlDLElBQUksU0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDbEMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3BDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hELFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xELFNBQVMsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1lBQ3RGLFNBQVMsQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFBO1lBQy9ELFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFBO1lBQzdELFNBQVMsQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUE7WUFDL0QsU0FBUyxDQUFDLG1CQUFtQixHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQTtZQUMvRCxTQUFTLENBQUMsdUJBQXVCLEdBQUcsV0FBVyxDQUFDLHVCQUF1QixDQUFBO1lBQ3ZFLFNBQVMsQ0FBQyxtQ0FBbUMsR0FBRyxXQUFXLENBQUMsbUNBQW1DLENBQUE7WUFDL0YsU0FBUyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFBO1lBQ3ZDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQTtZQUNuQyxTQUFTLENBQUMsc0JBQXNCLEdBQUcsV0FBVyxDQUFDLHNCQUFzQixDQUFBO1lBRXJFLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0IsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFBO1FBRUQsNEJBQXVCLEdBQUcsQ0FBQyxTQUFTLEVBQW1CLEVBQUU7WUFDdkQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzFELENBQUMsQ0FBQTtRQThDRCxzQkFBaUIsR0FBRyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxVQUFVLEdBQVUsRUFBRSxDQUFDO1lBQzNCLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQzNDLElBQUksc0JBQXNCLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1lBQzFELHNCQUFzQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3pELHNCQUFzQixDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFBO1lBQ3RELHNCQUFzQixDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFBO1lBQ3BELHNCQUFzQixDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQTtZQUV4RSxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDeEMsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFBO1FBRUQseUJBQW9CLEdBQUcsQ0FBQyxzQkFBc0IsRUFBbUIsRUFBRTtZQUNqRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUN2RSxDQUFDLENBQUE7UUFtQ0QsMEJBQXFCLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksVUFBVSxHQUFVLEVBQUUsQ0FBQztZQUMzQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO1lBQy9DLElBQUksc0JBQXNCLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1lBQzVELHNCQUFzQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ3pELHNCQUFzQixDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFBO1lBQ3BELHNCQUFzQixDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQTtZQUV4RSxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDeEMsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFBO1FBRUQsNkJBQXdCLEdBQUcsQ0FBQyxzQkFBc0IsRUFBbUIsRUFBRTtZQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUMzRSxDQUFDLENBQUE7UUF5Q0Qsd0JBQW1CLEdBQUcsR0FBRyxFQUFFO1lBQ3pCLElBQUksVUFBVSxHQUFVLEVBQUUsQ0FBQztZQUMzQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztZQUM3QyxJQUFJLG9CQUFvQixHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUN4RCxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN2RCxJQUFJLG1CQUFtQixHQUFXLElBQUksQ0FBQztZQUN2QyxJQUFJLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFO2dCQUN0QyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsY0FBYyxDQUFDLG1CQUE2QixDQUFDO2dCQUMvRSxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1lBQ0Qsb0JBQW9CLENBQUMsY0FBYyxHQUFHLG1CQUFtQixDQUFBO1lBQ3pELG9CQUFvQixDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFBO1lBRWxFLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN0QyxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUE7UUFFRCwyQkFBc0IsR0FBRyxDQUFDLG9CQUFvQixFQUFtQixFQUFFO1lBQ2pFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUNuRSxDQUFDLENBQUE7UUE1WEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVLLFFBQVE7O1lBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtZQUNsQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUE7WUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1lBQ2pFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDO0tBQUE7SUFFRCxzQkFBc0I7SUFDdEIsY0FBYztRQUNaLElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6RSxJQUFJLE1BQU0sR0FBUSxNQUFNLENBQUE7WUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQy9CLGVBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUE7WUFDMUQsZUFBZSxDQUFDLGVBQWUsR0FBRztnQkFDaEMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtnQkFDakgsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO2dCQUMzRCxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxnQ0FBZ0MsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7Z0JBQ3pJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTthQUU1RCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR0QsZUFBZTtJQUNmLHlCQUF5QixDQUFDLGlCQUFpQjtRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMxRSxJQUFJLEtBQUssR0FBRyxNQUFhLENBQUE7WUFDekIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztZQUN4RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFNUMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsK0JBQStCLENBQUMsaUJBQWlCO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNoRixJQUFJLEtBQUssR0FBRyxNQUFhLENBQUE7WUFDekIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztZQUN4RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELGVBQWU7SUFDZixxQkFBcUIsQ0FBQyxpQkFBaUI7UUFDckMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7O1lBQzdFLElBQUksU0FBUyxHQUFHLE1BQWEsQ0FBQztZQUU5QixJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzNDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsd0JBQXdCLENBQUM7WUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQztZQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztZQUU5QyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFFaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ3pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1lBQzlELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDMUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztZQUVsRixJQUFJLElBQUksR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFFMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDBCQUEwQixFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztZQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7WUFDaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUUzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztZQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUU5QyxJQUFJLFdBQVcsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDekMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDdEQsV0FBVyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7WUFFeEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO1lBQzFDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxHQUFHLHFCQUFxQixDQUFDO1lBQzVELElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxHQUFHLHNCQUFzQixDQUFDO1lBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQztZQUV6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFBO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFBO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQTtZQUN2RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQTtZQUN4RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQiwwQ0FBRSxXQUFXLEVBQUUsQ0FBQztZQUd2RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLHlCQUF5QixDQUFBO1lBQ3RELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFBO1lBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1lBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDeEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxNQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLDBDQUFFLFdBQVcsRUFBRSxDQUFDO1lBRzNGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcscUNBQXFDLENBQUE7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUE7WUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUE7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN4QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxHQUFHLE1BQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQ0FBbUMsMENBQUUsV0FBVyxFQUFFLENBQUM7WUFHdkcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFBO1lBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQTtZQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFBO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLE1BQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsMENBQUUsV0FBVyxFQUFFLENBQUM7WUFHbkYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQTtZQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUE7WUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUE7WUFHOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQTtZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7WUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUE7WUFHMUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksR0FBRyx3QkFBd0IsQ0FBQTtZQUMvRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxHQUFHLHdCQUF3QixDQUFBO1lBQ25FLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQTtZQUc1RSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQTJCRCxZQUFZO0lBQ1osa0JBQWtCLENBQUMsY0FBYztRQUMvQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvRCxJQUFJLE1BQU0sR0FBUSxNQUFNLENBQUM7WUFDekIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1lBQzFELElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7WUFFNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUE7WUFDeEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUNwRSxJQUFJLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBRTVFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7WUFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFHMUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQTtZQUNwRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxHQUFHLHNCQUFzQixDQUFBO1lBQzNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFBO1lBQ3BFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1lBQ2pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFFNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQTtZQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUE7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtZQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBR0wsQ0FBQztJQWtCRCxpQkFBaUI7SUFDakIsc0JBQXNCLENBQUMsa0JBQWtCO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQy9ELElBQUksTUFBTSxHQUFRLE1BQU0sQ0FBQztZQUN6QixJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFFMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzFDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2xELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFBO1lBQ2hFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDNUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztZQUVwRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRXZDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUE7WUFDeEQsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQTtZQUMvRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQTtZQUN4RSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQ3ZELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUdMLENBQUM7SUFpQkQsZUFBZTtJQUNmLG9CQUFvQixDQUFDLGdCQUFnQjtRQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM3RCxJQUFJLE1BQU0sR0FBUSxNQUFNLENBQUE7WUFDeEIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFFekMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUN4QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUE7WUFDNUQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUN4RSxJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBRWhGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUE7WUFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFBO1lBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQTtZQUVyQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFBO1lBQ3BELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLENBQUE7WUFDM0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUE7WUFDcEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDbkQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFHTCxDQUFDO0lBdUJELFlBQVk7SUFDWixXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzlDLENBQUM7O21IQWpjVSxxQkFBcUI7dUdBQXJCLHFCQUFxQix5RENuQmxDLGk1cEJBOGNBOzRGRDNiYSxxQkFBcUI7a0JBSmpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgQ291bnRyeSwgRHJvcGRvd25PcHRpb25zLCBFbmdsaXNoQXJhYmljRFRPLCBGb3JtT3B0aW9ucywgSW5wdXRUeXBlLCBNdWx0aUxpbmd1YWxUZXh0QXJlYU9wdGlvbnMsIE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zLCBQaG9uZU9wdGlvbnMsIFRleHRBcmVhT3B0aW9ucywgVGV4dEJveE9wdGlvbnMgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scyc7XHJcbmltcG9ydCB7IFRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9TZXJ2aWNlcy9UZW1wbGF0ZVNlcnZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJ25neC1jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBTZW5kRW1haWxUZW1wbGF0ZU1vZGVsIH0gZnJvbSAnLi8uLi8uLi9zaGFyZWQvbW9kZWxzL05vdGlmaWNhdGlvbnNNb2RlbHMvU2VuZEVtYWlsVGVtcGxhdGVNb2RlbCc7XHJcbmltcG9ydCB7IEVtYWlsVGVtcGxhdGVUZXN0ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvTm90aWZpY2F0aW9uc01vZGVscy9FbWFpbFRlbXBsYXRlVGVzdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBTTVNUZW1wbGF0ZVRlc3Rlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Ob3RpZmljYXRpb25zTW9kZWxzL1NNU1RlbXBsYXRlVGVzdGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZURUTyB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvTm90aWZpY2F0aW9uc01vZGVscy9UZW1wbGF0ZURUTyc7XHJcbmltcG9ydCB7IFBhZ2VJbmZvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXRyb25pYy9jb3JlL3NlcnZpY2VzL3BhZ2UtaW5mby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi10ZW1wbGF0ZS1pbmZvJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGVtcGxhdGUtaW5mby5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlSW5mb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgLy9QYWdlIHJlcXVpcmVtZW50c1xyXG4gIFByb2R1Y3Rpb25Nb2RlOiBib29sZWFuO1xyXG4gIFRlbXBsYXRlSWQ6IHN0cmluZztcclxuICBUZW1wbGF0ZUlkRW5jOiBzdHJpbmcgPSBcIlwiXHJcbiAgVGVtcGxhdGVJbmZvOiBhbnlcclxuICBUZW1wbGF0ZTogYW55XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBMYW5ndWFnZUxpc3QgPSBbXTtcclxuICBFbWFpbFNlcnZpY2VQcm92aWRlckxpc3QgPSBbXTtcclxuICBTTVNTZXJ2aWNlUHJvdmlkZXJMaXN0ID0gW107XHJcbiAgQ2F0ZWdvcnlMaXN0ID0gW107XHJcbiAgT3JnYW5pemF0aW9uTGlzdCA9IFtdO1xyXG4gIExhbmd1YWdlTW9kZUxpc3QgPSBbXTtcclxuICBNYXN0ZXJMYXlvdXRMaXN0ID0gW107XHJcblxyXG4gIC8vR2VuZXJhdGVDb2RlICBNb2RlbCBDb250cm9scyBcclxuICBHZW5lcmF0ZUNvZGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgSXNPcGVuR2VuZXJhdGVDb2RlTW9kYWw6IGJvb2xlYW47XHJcbiAgR2VuZXJhdGVDb2RlVGV4dEFyZWE6IFRleHRBcmVhT3B0aW9ucztcclxuICBWYWx1ZVRvQ29weTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy9TZW5kIEVtYWlsIE1vZGVsIENvbnRyb2xzXHJcbiAgU2VuZEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNlbmRFbWFpbEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIFRvOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRW1haWxTZXJ2aWNlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuICBMYW5ndWFnZTogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL1Rlc3QgU2VuZCBFbWFpbCBNb2RlbCBDb250cm9sc1xyXG4gIFRlc3RTZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIFRlc3RTZW5kRW1haWxUbzogVGV4dEFyZWFPcHRpb25zO1xyXG4gIFRlc3RFbWFpbFNlcnZpY2VQcm92aWRlcjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuXHJcbiAgLy9UZXN0IFNlbmQgU01TIE1vZGVsIENvbnRyb2xzXHJcbiAgVGVzdFNlbmRTTVNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgVGVzdFNlbmRTTVNGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBUZXN0U2VuZFNNU1RvOiBQaG9uZU9wdGlvbnM7XHJcbiAgVGVzdFNNU1NlcnZpY2VQcm92aWRlcjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICBFZGl0VGVtcGxhdGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgRWRpdE5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgRWRpdFN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRTeXNOYW1lVmFsdWU6IHN0cmluZztcclxuICBFZGl0RGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBFZGl0T3JnYW5pemF0aW9uOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdExhbmd1YWdlTW9kZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRDYXRlZ29yeTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRNYXN0ZXJMYXlvdXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0SXNFbWFpbDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEVkaXRJc1NtczogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nOiBDaGVja0JveE9wdGlvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLCBwcml2YXRlIF9jbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2U6IFRlbXBsYXRlU2VydmljZSwgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5UZW1wbGF0ZUlkID0gcGFyYW1zWydpZCddO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5Qcm9kdWN0aW9uTW9kZSA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFByb2R1Y3Rpb25Nb2RlKClcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG4gIC8vSW5pdGlhbGl6ZSBwYWdlIGluZm9cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlSW5mbyh0aGlzLlRlbXBsYXRlSWQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdFxyXG4gICAgICB0aGlzLlRlbXBsYXRlSW5mbyA9IFJlc3VsdC52YWw7XHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlVGl0bGUgPSB0aGlzLlRlbXBsYXRlSW5mby50ZW1wbGF0ZU5hbWVcclxuICAgICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJIb21lXCIpLCBwYXRoOiAnL0FkbWluL0hvbWUnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlbXBsYXRlc1wiKSwgcGF0aDogJy9BZG1pbi9Ob3RpZmljYXRpb25zL1RlbXBsYXRlcycsIGlzU2VwYXJhdG9yOiBmYWxzZSwgaXNBY3RpdmU6IGZhbHNlIH0sXHJcbiAgICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICAgIF07XHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvL0dlbmVyYXRlIENvZGVcclxuICBzaG93R2VuZXJhdGVDb2RlQnlJZE1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKSB7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZW5lcmF0ZUNvZGVCeUlkKHRoaXMuVGVtcGxhdGVJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIFZhbHVlID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLk5hbWUgPSBcIkdlbmVyYXRlQ29kZVRleHRBcmVhXCI7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuVmFsdWUgPSBWYWx1ZS52YWwudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5WYWx1ZVRvQ29weSA9IFZhbHVlLnZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLklzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuUm93cyA9IDIwO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLkNvbHMgPSAyMDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5NYXhMZW5ndGggPSAxMDAwMDAwO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlQ29kZU1vZGFsKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2hvd0dlbmVyYXRlVXBkYXRlQ29kZUJ5SWRNb2RhbChHZW5lcmF0ZUNvZGVNb2RhbCkge1xyXG4gICAgdGhpcy5HZW5lcmF0ZUNvZGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdlbmVyYXRlVXBkYXRlQ29kZUJ5SWQodGhpcy5UZW1wbGF0ZUlkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgVmFsdWUgPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuTmFtZSA9IFwiR2VuZXJhdGVDb2RlVGV4dEFyZWFcIjtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5WYWx1ZSA9IFZhbHVlLnZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLlZhbHVlVG9Db3B5ID0gVmFsdWUudmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuSXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5Sb3dzID0gMjA7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuQ29scyA9IDIwO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLk1heExlbmd0aCA9IDEwMDAwMDA7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVDb2RlTW9kYWwpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoKSB7XHJcbiAgICB0aGlzLl9jbGlwYm9hcmRTZXJ2aWNlLmNvcHkodGhpcy5WYWx1ZVRvQ29weS50b1N0cmluZygpKTtcclxuICB9XHJcbiAgLy9FZGl0IFRlbXBsYXRlXHJcbiAgc2hvd0VkaXRUZW1wbGF0ZU1vZGFsKEVkaXRUZW1wbGF0ZU1vZGFsKSB7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRFZGl0VGVtcGxhdGVEYXRhKHRoaXMuVGVtcGxhdGVJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcblxyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHRPYmoubGlzdHM7XHJcbiAgICAgIHRoaXMuT3JnYW5pemF0aW9uTGlzdCA9IGxpc3RzLm9yZ2FuaXphdGlvbjtcclxuICAgICAgdGhpcy5MYW5ndWFnZU1vZGVMaXN0ID0gbGlzdHMubG9va1VwSXRlbXNFbWFpbFRlbXBsYXRlO1xyXG4gICAgICB0aGlzLk1hc3RlckxheW91dExpc3QgPSBsaXN0cy5lbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5TGlzdCA9IGxpc3RzLmxvb2tVcEl0ZW1zQ2F0ZWdvcnk7XHJcblxyXG4gICAgICB0aGlzLlRlbXBsYXRlID0gcmVzdWx0T2JqLm1vZGVsO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VGVtcGxhdGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0VGVtcGxhdGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdFRlbXBsYXRlRm9ybVxyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRUZW1wbGF0ZU1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFRlbXBsYXRlRnVuY3Rpb247XHJcblxyXG4gICAgICBsZXQgTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIE5hbWUuQXJhYmljID0gdGhpcy5UZW1wbGF0ZS5uYW1lLmFyYWJpYztcclxuICAgICAgTmFtZS5FbmdsaXNoID0gdGhpcy5UZW1wbGF0ZS5uYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXROYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5WYWx1ZSA9IE5hbWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lLlZhbHVlID0gdGhpcy5UZW1wbGF0ZS5zeXNOYW1lO1xyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lVmFsdWUgPSB0aGlzLlRlbXBsYXRlLnN5c05hbWU7XHJcblxyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBkZXNjcmlwdGlvbi5BcmFiaWMgPSB0aGlzLlRlbXBsYXRlLmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgZGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuVGVtcGxhdGUuZGVzY3JpcHRpb24uZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5OYW1lID0gXCJEZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLlZhbHVlID0gZGVzY3JpcHRpb247XHJcblxyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5OYW1lID0gXCJPcmdhbml6YXRpb25JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLkxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIlxyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsXHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5EYXRhU291cmNlID0gdGhpcy5Pcmdhbml6YXRpb25MaXN0XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5UZW1wbGF0ZS5vcmdhbml6YXRpb25JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLk5hbWUgPSBcIkxhbmd1YWdlTW9kZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLkxhYmVsS2V5ID0gXCJMYW5ndWFnZU1vZGVcIlxyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuRGF0YVNvdXJjZSA9IHRoaXMuTGFuZ3VhZ2VNb2RlTGlzdFxyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuVGVtcGxhdGUubGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuTmFtZSA9IFwiRW1haWxIZWFkZXJBbmRGb290ZXJUZW1wbGF0ZUlEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuTGFiZWxLZXkgPSBcIk1hc3RlckxheW91dFwiXHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5EYXRhU291cmNlID0gdGhpcy5NYXN0ZXJMYXlvdXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5TZWxlY3RlZEl0ZW1zID0gdGhpcy5UZW1wbGF0ZS5lbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuTmFtZSA9IFwiQ2F0ZWdvcnlJdGVtSURfR1VJRFwiXHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LkxhYmVsS2V5ID0gXCJDYXRlZ29yeVwiXHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LkRhdGFTb3VyY2UgPSB0aGlzLkNhdGVnb3J5TGlzdFxyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LlNlbGVjdGVkSXRlbXMgPSB0aGlzLlRlbXBsYXRlLmNhdGVnb3J5SXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbC5OYW1lID0gXCJJc0VtYWlsXCJcclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbC5MYWJlbEtleSA9IFwiSXNFbWFpbFwiXHJcbiAgICAgIHRoaXMuRWRpdElzRW1haWwuVmFsdWUgPSB0aGlzLlRlbXBsYXRlLmlzRW1haWxcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc1NtcyA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNTbXMuTmFtZSA9IFwiSXNTbXNcIlxyXG4gICAgICB0aGlzLkVkaXRJc1Ntcy5MYWJlbEtleSA9IFwiSXNTbXNcIlxyXG4gICAgICB0aGlzLkVkaXRJc1Ntcy5WYWx1ZSA9IHRoaXMuVGVtcGxhdGUuaXNTbXNcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nLk5hbWUgPSBcIkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcIlxyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nLkxhYmVsS2V5ID0gXCJFbmFibGVJbnRlbnNpdmVMb2dnaW5nXCJcclxuICAgICAgdGhpcy5FZGl0RW5hYmxlSW50ZW5zaXZlTG9nZ2luZy5WYWx1ZSA9IHRoaXMuVGVtcGxhdGUuZW5hYmxlSW50ZW5zaXZlTG9nZ2luZ1xyXG5cclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdFRlbXBsYXRlTW9kYWwpO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRFZGl0VGVtcGxhdGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0VGVtcGxhdGVGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBUZW1wbGF0ZURUTygpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBFZGl0TW9kZWwuTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5OYW1lLkFyYWJpYztcclxuICAgIEVkaXRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5OYW1lLkVuZ2xpc2g7XHJcbiAgICBFZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLlN5c05hbWUgPyBSZXN1bHRNb2RlbC5TeXNOYW1lIDogdGhpcy5FZGl0U3lzTmFtZVZhbHVlO1xyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljXHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9IFJlc3VsdE1vZGVsLk9yZ2FuaXphdGlvbklEX0dVSURcclxuICAgIEVkaXRNb2RlbC5DYXRlZ29yeUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuQ2F0ZWdvcnlJdGVtSURfR1VJRFxyXG4gICAgRWRpdE1vZGVsLkxhbmd1YWdlTW9kZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuTGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSURcclxuICAgIEVkaXRNb2RlbC5FbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRCA9IFJlc3VsdE1vZGVsLkVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGVJRF9HVUlEXHJcbiAgICBFZGl0TW9kZWwuSXNFbWFpbCA9IFJlc3VsdE1vZGVsLklzRW1haWxcclxuICAgIEVkaXRNb2RlbC5Jc1NtcyA9IFJlc3VsdE1vZGVsLklzU21zXHJcbiAgICBFZGl0TW9kZWwuRW5hYmxlSW50ZW5zaXZlTG9nZ2luZyA9IFJlc3VsdE1vZGVsLkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFRlbXBsYXRlRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS5lZGl0RW1haWxUZW1wbGF0ZShFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL1NlbmQgRW1haWxcclxuICBzaG93U2VuZEVtYWlsTW9kYWwoU2VuZEVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRTZW5kRW1haWxUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsLmVtYWlsUHJvdmlkZXJzO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlTGlzdCA9IFJlc3VsdC52YWwubGFuZ3VhZ2VLZXlzO1xyXG5cclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuU2VuZEVtYWlsRm9ybVxyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFNlbmRFbWFpbE1vZGVsO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U2VuZEVtYWlsRnVuY3Rpb247XHJcblxyXG4gICAgICB0aGlzLlRvID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRvLk5hbWUgPSBcIlRvRW1haWxzXCI7XHJcbiAgICAgIHRoaXMuVG8uTGFiZWxLZXkgPSBcIlRvXCI7XHJcbiAgICAgIHRoaXMuVG8uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuTmFtZSA9IFwiRW1haWxQcm92aWRlck5hbWVcIlxyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLkxhYmVsS2V5ID0gXCJFbWFpbFNlcnZpY2VQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuRGF0YVNvdXJjZSA9IHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXJMaXN0XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5MYW5ndWFnZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5OYW1lID0gXCJMYW5nS2V5XCJcclxuICAgICAgdGhpcy5MYW5ndWFnZS5MYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLkxhbmd1YWdlLkRhdGFTb3VyY2UgPSB0aGlzLkxhbmd1YWdlTGlzdFxyXG4gICAgICB0aGlzLkxhbmd1YWdlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuTGFuZ3VhZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihTZW5kRW1haWxNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldFNlbmRFbWFpbE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlNlbmRFbWFpbEZvcm0udmFsdWU7XHJcbiAgICBsZXQgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCA9IG5ldyBTZW5kRW1haWxUZW1wbGF0ZU1vZGVsKCk7XHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLlRlbXBsYXRlSURfR1VJRCA9IHRoaXMuVGVtcGxhdGVJZDtcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuVG9FbWFpbHMgPSBSZXN1bHRNb2RlbC5Ub0VtYWlsc1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5MYW5nS2V5ID0gUmVzdWx0TW9kZWwuTGFuZ0tleVxyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5FbWFpbFByb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLkVtYWlsUHJvdmlkZXJOYW1lXHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRTZW5kRW1haWxGdW5jdGlvbiA9IChzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS5zZW5kRW1haWxUZW1wbGF0ZShzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9UZXN0IFNlbmQgRW1haWxcclxuICBzaG93VGVzdFNlbmRFbWFpbE1vZGFsKFRlc3RTZW5kRW1haWxNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFNlbmRFbWFpbFRlbXBsYXRlKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0O1xyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyTGlzdCA9IFJlc3VsdC52YWwuZW1haWxQcm92aWRlcnM7XHJcblxyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5UZXN0U2VuZEVtYWlsRm9ybVxyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0U2VuZEVtYWlsTW9kZWw7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdFNlbmRFbWFpbEZ1bmN0aW9uO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsVG8gPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvLk5hbWUgPSBcIlRvRW1haWxcIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsVG8uTGFiZWxLZXkgPSBcIlNlbmRUb1wiO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxUby5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLk5hbWUgPSBcIkVtYWlsUHJvdmlkZXJOYW1lXCJcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuTGFiZWxLZXkgPSBcIkVtYWlsU2VydmljZVByb3ZpZGVyXCJcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuRGF0YVNvdXJjZSA9IHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXJMaXN0XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUZXN0U2VuZEVtYWlsTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gIH1cclxuICBnZXRUZXN0U2VuZEVtYWlsTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuVGVzdFNlbmRFbWFpbEZvcm0udmFsdWU7XHJcbiAgICBsZXQgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCA9IG5ldyBFbWFpbFRlbXBsYXRlVGVzdGVyTW9kZWwoKTtcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuVGVtcGxhdGVJRF9HVUlEID0gdGhpcy5UZW1wbGF0ZUlkO1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5Ub0VtYWlsID0gUmVzdWx0TW9kZWwuVG9FbWFpbFxyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5FbWFpbFByb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLkVtYWlsUHJvdmlkZXJOYW1lXHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRUZXN0U2VuZEVtYWlsRnVuY3Rpb24gPSAoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UudGVzdFNlbmRFbWFpbFRlbXBsYXRlKHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL1Rlc3QgU2VuZCBTTVNcclxuICBzaG93VGVzdFNlbmRTTVNNb2RhbChUZXN0U2VuZFNNU01vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlc3RTTVNUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdFxyXG4gICAgICB0aGlzLlNNU1NlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU0Zvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuVGVzdFNlbmRTTVNGb3JtXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0U2VuZFNNU01vZGVsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0U2VuZFNNU0Z1bmN0aW9uO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uTmFtZSA9IFwiVG9Nb2JpbGVOdW1iZXJcIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLkxhYmVsS2V5ID0gXCJTZW5kVG9cIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uU2hvd0FzdGVyaXNrID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLlNlbGVjdGVkQ291bnRyeUlTTyA9IENvdW50cnkuVW5pdGVkQXJhYkVtaXJhdGVzXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5QaG9uZVZhbGlkYXRpb24gPSB0cnVlXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5BbGxvd1NlYXJjaCA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlciA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLk5hbWUgPSBcIlNNU1Byb3ZpZGVyTmFtZVwiXHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5MYWJlbEtleSA9IFwiU01TU2VydmljZVByb3ZpZGVyXCJcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLkRhdGFTb3VyY2UgPSB0aGlzLlNNU1NlcnZpY2VQcm92aWRlckxpc3RcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUZXN0U2VuZFNNU01vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kU01TTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuVGVzdFNlbmRTTVNGb3JtLnZhbHVlO1xyXG4gICAgbGV0IHNlbmRTTVNUZW1wbGF0ZU1vZGVsID0gbmV3IFNNU1RlbXBsYXRlVGVzdGVyTW9kZWwoKTtcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlRlbXBsYXRlSURfR1VJRCA9IHRoaXMuVGVtcGxhdGVJZDtcclxuICAgIGxldCBpbnRlcm5hdGlvbmFsTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyICE9IG51bGwpIHtcclxuICAgICAgaW50ZXJuYXRpb25hbE51bWJlciA9IFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBzZW5kU01TVGVtcGxhdGVNb2RlbC5Ub01vYmlsZU51bWJlciA9IGludGVybmF0aW9uYWxOdW1iZXJcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlNNU1Byb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLlNNU1Byb3ZpZGVyTmFtZVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChzZW5kU01TVGVtcGxhdGVNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kU01TRnVuY3Rpb24gPSAoc2VuZFNNU1RlbXBsYXRlTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTZXJ2aWNlLnRlc3RTTVNUZW1wbGF0ZShzZW5kU01TVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiPlxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RWRpdFRlbXBsYXRlTW9kYWwoRWRpdFRlbXBsYXRlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEgZmEtZWRpdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgPHNwYW4+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93U2VuZEVtYWlsTW9kYWwoU2VuZEVtYWlsTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGFwZXItcGxhbmVcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VuZEVtYWlsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5TZXRQYXNzXCIgY2xhc3M9XCJidG4gYnRuLXNtIG1lLTMgYnRuLWxpZ2h0LXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Rlc3RTZW5kRW1haWxNb2RhbChUZXN0U2VuZEVtYWlsTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U2VuZEVtYWlsXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5TZXRQYXNzXCIgY2xhc3M9XCJidG4gYnRuLXNtIG1lLTMgYnRuLWxpZ2h0LXByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Rlc3RTZW5kU01TTW9kYWwoVGVzdFNlbmRTTVNNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbnZlbG9wZS1vcGVuLXRleHQgc21zXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RTZW5kU01TXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5TZXRQYXNzXCIgY2xhc3M9XCJidG4gYnRuLXNtIG1lLTMgYnRuLXByaW1hcnlcIiAqbmdJZj1cIiFQcm9kdWN0aW9uTW9kZVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R2VuZXJhdGVDb2RlQnlJZE1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJhcnNcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiR2VuZXJhdGVDb2RlXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJidG5TZXRQYXNzXCIgY2xhc3M9XCJidG4gYnRuLXNtIG1lLTMgYnRuLXByaW1hcnlcIiAqbmdJZj1cIiFQcm9kdWN0aW9uTW9kZVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R2VuZXJhdGVVcGRhdGVDb2RlQnlJZE1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWtleVwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZVVwZGF0ZUNvZGVcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBweS0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC02IG1iLTEwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyIFwiPlxyXG4gICAgICAgICAgICAgIDwhLS1iZWdpbjo6T3B0aW9uLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIGQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWNlbnRlciByb3VuZGVkLTMgYmctbGlnaHQgcHktMTAgcHgtMTAgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SGVhZGluZy0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTcgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6VGl0bGUtLT5cclxuICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0RW1haWwnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdlbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwidGV4dC1wcmltYXJ5IG1iLTUgZnctYm9sZGVzdCBmcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgRW5nbGlzaDpcclxuICAgICAgICAgICAgICAgICAgICB7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbFN1YmplY3QuZW5nbGlzaH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL05vdGlmaWNhdGlvbnMvRWRpdEVtYWlsJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnZW4nXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LWdyYXktODAwIGZsZXgtZ3Jvdy0xIHBlLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8udGVtcGxhdGVFbWFpbEJhc2VIZWFkZXIuZW5nbGlzaH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8uZW1haWxIdG1sSGVhZFNlY3Rpb24uZW5nbGlzaH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8uZW1haWxCb2R5LmVuZ2xpc2h9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtZGFyay1za2luIHB0LTdcIiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby50ZW1wbGF0ZUVtYWlsQmFzZUZvb3Rlci5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlNlbGVjdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6Ok9wdGlvbi0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC02IG1iLTEwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggaC0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPCEtLWJlZ2luOjpPcHRpb24tLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtMyBiZy1saWdodCBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpIZWFkaW5nLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpUaXRsZS0tPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRFbWFpbCcsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2FyJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICBBcmFiaWM6XHJcbiAgICAgICAgICAgICAgICAgICAge3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8uZW1haWxTdWJqZWN0LmFyYWJpY319XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0RW1haWwnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdhciddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBidG4taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tYmVnaW46Okl0ZW0tLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTYgdGV4dC1ncmF5LTgwMCBmbGV4LWdyb3ctMSBwZS0zIGFyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlubmVySFRNTD1cInt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLnRlbXBsYXRlRW1haWxCYXNlSGVhZGVyLmFyYWJpY319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8uZW1haWxIdG1sSGVhZFNlY3Rpb24uYXJhYmljfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEJvZHkuYXJhYmljfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWRhcmstc2tpbiBwdC03XCIgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8udGVtcGxhdGVFbWFpbEJhc2VGb290ZXIuYXJhYmljfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tZW5kOjpTZWxlY3QtLT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8IS0tZW5kOjpPcHRpb24tLT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteGwtNlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBiZy1saWdodFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBweS0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgdGV4dC1wcmltYXJ5IG1iLTUgZnctYm9sZGVzdCBmcy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIEVuZ2xpc2g6U01TXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0U01TJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnZW4nXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW4gZm9udC1zaXplLTE4XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgbW9iaWxlLXR4dFwiPnt7VGVtcGxhdGVJbmZvLnNtc1RlbXBsYXRlSW5mby5zbXMuZW5nbGlzaH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC02XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJnLWxpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB5LTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgQXJhYmljOlNNU1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBidG4taWNvblwiIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL05vdGlmaWNhdGlvbnMvRWRpdFNNUycsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2FyJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuIGZvbnQtc2l6ZS0xOFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXBob25lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgbW9iaWxlLXR4dCBhclwiPiAge3tUZW1wbGF0ZUluZm8uc21zVGVtcGxhdGVJbmZvLnNtcy5hcmFiaWN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuPCEtLSBzZW5kIEVtYWlsIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI1NlbmRFbWFpbE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kRW1haWxUZW1wbGF0ZVwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJTZW5kRW1haWxGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiVG9cIiBbZ3JvdXBdPVwiU2VuZEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJMYW5ndWFnZVwiIFtncm91cF09XCJTZW5kRW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFbWFpbFNlcnZpY2VQcm92aWRlclwiIFtncm91cF09XCJTZW5kRW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVNlbmRFbWFpbEZvcm0gaWQ9XCJDbG9zZVNlbmRFbWFpbEZvcm1cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVGVzdCBzbXMgRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjVGVzdFNlbmRTTVNNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFNlbmRTTVNcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiVGVzdFNlbmRTTVNGb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVBob25lIFtvcHRpb25zXT1cIlRlc3RTZW5kU01TVG9cIiBbZ3JvdXBdPVwiVGVzdFNlbmRTTVNGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtUGhvbmU+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJUZXN0U01TU2VydmljZVByb3ZpZGVyXCIgW2dyb3VwXT1cIlRlc3RTZW5kU01TRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibm90aWNlIGQtZmxleCBiZy1saWdodC13YXJuaW5nIHJvdW5kZWQgYm9yZGVyLXdhcm5pbmcgYm9yZGVyIGJvcmRlci1kYXNoZWQgbWItMTAgcC02XCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJ0eCBzdmctaWNvbi13YXJuaW5nIG1lLTRcIj5cclxuICAgICAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9nZW4wNDQuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1zdGFjayBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy02IHRleHQtZ3JheS03MDBcIj5cclxuICAgICAgICAgICAgICAgIEtpbmRseSBub3RlIHRoYXQgdGhlc2UgYXR0cmlidXRlcyBhcmUgcmVzZXJ2ZWRcclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TmFtZUVOPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5OYW1lQVI8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlN1YmplY3Q8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkxhbmdLZXk8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk1vYmlsZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RW1haWw8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlRpbWU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGVUaW1lPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVRlc3RTZW5kU01TRm9ybSBpZD1cIkNsb3NlVGVzdFNlbmRTTVNGb3JtXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VuZFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVGVzdCBTZW5kIEVtYWlsIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI1Rlc3RTZW5kRW1haWxNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFNlbmRFbWFpbFwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJUZXN0U2VuZEVtYWlsRm9ybU9wdGlvbnNcIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiVGVzdFNlbmRFbWFpbFRvXCIgW2dyb3VwXT1cIlRlc3RTZW5kRW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJUZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiVGVzdFNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LXdhcm5pbmcgcm91bmRlZCBib3JkZXItd2FybmluZyBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiS2V5TWFwTm90ZVwiKX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZFwiPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk5hbWVFTjwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TmFtZUFSPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5TdWJqZWN0PC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5MYW5nS2V5PC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5Nb2JpbGU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkVtYWlsPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5EYXRlPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5UaW1lPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5EYXRlVGltZTwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VUZXN0U2VuZEVtYWlsRm9ybSBpZD1cIkNsb3NlVGVzdFNlbmRFbWFpbEZvcm1cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gZWRpdCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNFZGl0VGVtcGxhdGVNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRWRpdFRlbXBsYXRlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94IFtvcHRpb25zXT1cIkVkaXROYW1lXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj48L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1NdWx0aUxpbmd1YWxUZXh0QXJlYSBbb3B0aW9uc109XCJFZGl0RGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJFZGl0U3lzTmFtZVwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdE9yZ2FuaXphdGlvblwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0TGFuZ3VhZ2VNb2RlXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRDYXRlZ29yeVwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0TWFzdGVyTGF5b3V0XCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzRW1haWxcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIkVkaXRJc1Ntc1wiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdEVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLUNoZWNrQm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0VGVtcGxhdGVNb2RhbCBpZD1cIkNsb3NlRWRpdFRlbXBsYXRlTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEdlbmVyYXRlQ29kZSBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNHZW5lcmF0ZUNvZGVNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiR2VuZXJhdGVDb2RlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkdlbmVyYXRlQ29kZUZvcm1cIj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJSb3dcIj5cclxuICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJHZW5lcmF0ZUNvZGVUZXh0QXJlYVwiIFtncm91cF09XCJHZW5lcmF0ZUNvZGVGb3JtXCIgI0dlbmVyYXRlQ29kZUlucHV0PlxyXG4gICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VHZW5lcmF0ZUNvZGVNb2RhbCBpZD1cIkNsb3NlR2VuZXJhdGVDb2RlTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIiAoY2xpY2spPVwiY29weUlucHV0TWVzc2FnZSgpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDb3B5VG9DbGlwYm9hcmRcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==
|
|
398
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtaW5mby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWFkbWluLXBvcnRhbC9zcmMvbGliL1BhZ2VzL25vdGlmaWNhdGlvbnMvdGVtcGxhdGUtaW5mby90ZW1wbGF0ZS1pbmZvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtYWRtaW4tcG9ydGFsL3NyYy9saWIvUGFnZXMvbm90aWZpY2F0aW9ucy90ZW1wbGF0ZS1pbmZvL3RlbXBsYXRlLWluZm8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLDJCQUEyQixFQUFFLDBCQUEwQixFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFclAsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzFHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTckYsTUFBTSxPQUFPLHFCQUFxQjtJQTBEaEMsWUFDUyxjQUE4QixFQUFVLG9CQUEwQyxFQUNqRixrQkFBc0MsRUFBVSxpQkFBbUMsRUFDbkYs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QixXQUFXLEVBQUUsZ0NBQWdDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2hlY2tCb3hPcHRpb25zLCBDb250cm9sTGF5b3V0LCBDb3VudHJ5LCBEcm9wZG93bk9wdGlvbnMsIEVuZ2xpc2hBcmFiaWNEVE8sIEZvcm1PcHRpb25zLCBJbnB1dFR5cGUsIE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucywgTXVsdGlMaW5ndWFsVGV4dEJveE9wdGlvbnMsIFBob25lT3B0aW9ucywgVGV4dEFyZWFPcHRpb25zLCBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLWNvbnRyb2xzJztcclxuaW1wb3J0IHsgVGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL1NlcnZpY2VzL1RlbXBsYXRlU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDbGlwYm9hcmRTZXJ2aWNlIH0gZnJvbSAnbmd4LWNsaXBib2FyZCc7XHJcbmltcG9ydCB7IFNlbmRFbWFpbFRlbXBsYXRlTW9kZWwgfSBmcm9tICcuLy4uLy4uL3NoYXJlZC9tb2RlbHMvTm90aWZpY2F0aW9uc01vZGVscy9TZW5kRW1haWxUZW1wbGF0ZU1vZGVsJztcclxuaW1wb3J0IHsgRW1haWxUZW1wbGF0ZVRlc3Rlck1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Ob3RpZmljYXRpb25zTW9kZWxzL0VtYWlsVGVtcGxhdGVUZXN0ZXJNb2RlbCc7XHJcbmltcG9ydCB7IFNNU1RlbXBsYXRlVGVzdGVyTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL05vdGlmaWNhdGlvbnNNb2RlbHMvU01TVGVtcGxhdGVUZXN0ZXJNb2RlbCc7XHJcbmltcG9ydCB7IFRlbXBsYXRlRFRPIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Ob3RpZmljYXRpb25zTW9kZWxzL1RlbXBsYXRlRFRPJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UsIEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UsIFJlcXVlc3RIYW5kbGVyU2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRlbXBsYXRlLWluZm8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90ZW1wbGF0ZS1pbmZvLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVJbmZvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgUHJvZHVjdGlvbk1vZGU6IGJvb2xlYW47XHJcbiAgVGVtcGxhdGVJZDogc3RyaW5nO1xyXG4gIFRlbXBsYXRlSWRFbmM6IHN0cmluZyA9IFwiXCJcclxuICBUZW1wbGF0ZUluZm86IGFueVxyXG4gIFRlbXBsYXRlOiBhbnlcclxuICBpc0RhdGFMb2FkZWQ6Ym9vbGVhbj1mYWxzZTtcclxuICAvL1JlcXVpcmVkIGxpc3RzXHJcbiAgTGFuZ3VhZ2VMaXN0ID0gW107XHJcbiAgRW1haWxTZXJ2aWNlUHJvdmlkZXJMaXN0ID0gW107XHJcbiAgU01TU2VydmljZVByb3ZpZGVyTGlzdCA9IFtdO1xyXG4gIENhdGVnb3J5TGlzdCA9IFtdO1xyXG4gIE9yZ2FuaXphdGlvbkxpc3QgPSBbXTtcclxuICBMYW5ndWFnZU1vZGVMaXN0ID0gW107XHJcbiAgTWFzdGVyTGF5b3V0TGlzdCA9IFtdO1xyXG5cclxuICAvL0dlbmVyYXRlQ29kZSAgTW9kZWwgQ29udHJvbHNcclxuICBHZW5lcmF0ZUNvZGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgSXNPcGVuR2VuZXJhdGVDb2RlTW9kYWw6IGJvb2xlYW47XHJcbiAgR2VuZXJhdGVDb2RlVGV4dEFyZWE6IFRleHRBcmVhT3B0aW9ucztcclxuICBWYWx1ZVRvQ29weTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy9TZW5kIEVtYWlsIE1vZGVsIENvbnRyb2xzXHJcbiAgU2VuZEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIFNlbmRFbWFpbEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIFRvOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRW1haWxTZXJ2aWNlUHJvdmlkZXI6IERyb3Bkb3duT3B0aW9ucztcclxuICBMYW5ndWFnZTogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL1Rlc3QgU2VuZCBFbWFpbCBNb2RlbCBDb250cm9sc1xyXG4gIFRlc3RTZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zO1xyXG4gIFRlc3RTZW5kRW1haWxUbzogVGV4dEFyZWFPcHRpb25zO1xyXG4gIFRlc3RFbWFpbFNlcnZpY2VQcm92aWRlcjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuXHJcbiAgLy9UZXN0IFNlbmQgU01TIE1vZGVsIENvbnRyb2xzXHJcbiAgVGVzdFNlbmRTTVNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgVGVzdFNlbmRTTVNGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucztcclxuICBUZXN0U2VuZFNNU1RvOiBQaG9uZU9wdGlvbnM7XHJcbiAgVGVzdFNNU1NlcnZpY2VQcm92aWRlcjogRHJvcGRvd25PcHRpb25zO1xyXG5cclxuICAvL0VkaXQgTW9kZWwgQ29udHJvbHNcclxuICBFZGl0VGVtcGxhdGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnM7XHJcbiAgRWRpdE5hbWU6IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zXHJcbiAgRWRpdFN5c05hbWU6IFRleHRCb3hPcHRpb25zO1xyXG4gIEVkaXRTeXNOYW1lVmFsdWU6IHN0cmluZztcclxuICBFZGl0RGVzY3JpcHRpb246IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucztcclxuICBFZGl0T3JnYW5pemF0aW9uOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdExhbmd1YWdlTW9kZTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRDYXRlZ29yeTogRHJvcGRvd25PcHRpb25zO1xyXG4gIEVkaXRNYXN0ZXJMYXlvdXQ6IERyb3Bkb3duT3B0aW9ucztcclxuICBFZGl0SXNFbWFpbDogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEVkaXRJc1NtczogQ2hlY2tCb3hPcHRpb25zO1xyXG4gIEVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nOiBDaGVja0JveE9wdGlvbnM7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHV0aWxpdHlTZXJ2aWNlOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLCBwcml2YXRlIF9jbGlwYm9hcmRTZXJ2aWNlOiBDbGlwYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2U6IFRlbXBsYXRlU2VydmljZSwgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLCBwcml2YXRlIG1vZGFsU2VydmljZTogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgdGhpcy5UZW1wbGF0ZUlkID0gcGFyYW1zWydpZCddO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKClcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB9KVxyXG4gICAgdGhpcy5Qcm9kdWN0aW9uTW9kZSA9IHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldFByb2R1Y3Rpb25Nb2RlKClcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBhZ2UoKTtcclxuICB9XHJcblxyXG4gIC8vSW5pdGlhbGl6ZSBwYWdlIGluZm9cclxuICBpbml0aWFsaXplUGFnZSgpIHtcclxuICAgIHRoaXMuaXNEYXRhTG9hZGVkPWZhbHNlO1xyXG4gICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVtcGxhdGVJbmZvKHRoaXMuVGVtcGxhdGVJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0XHJcbiAgICAgIHRoaXMuVGVtcGxhdGVJbmZvID0gUmVzdWx0LnZhbDtcclxuICAgICAgY29uc29sZS5sb2codGhpcy5UZW1wbGF0ZUluZm8pO1xyXG4gICAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy5UZW1wbGF0ZUluZm8udGVtcGxhdGVOYW1lXHJcbiAgICAgIFBhZ2VJbmZvU2VydmljZS5QYWdlQnJlYWRjcnVtYnMgPSBbXHJcbiAgICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiAnJywgcGF0aDogJycsIGlzU2VwYXJhdG9yOiB0cnVlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgICB7IHRpdGxlOiB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZW1wbGF0ZXNcIiksIHBhdGg6ICcvQWRtaW4vTm90aWZpY2F0aW9ucy9UZW1wbGF0ZXMnLCBpc1NlcGFyYXRvcjogZmFsc2UsIGlzQWN0aXZlOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgdGl0bGU6ICcnLCBwYXRoOiAnJywgaXNTZXBhcmF0b3I6IHRydWUsIGlzQWN0aXZlOiBmYWxzZSB9XHJcblxyXG4gICAgICBdO1xyXG4gICAgICB0aGlzLmlzRGF0YUxvYWRlZD10cnVlO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZVRpdGxlKCk7XHJcbiAgICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvL0dlbmVyYXRlIENvZGVcclxuICBzaG93R2VuZXJhdGVDb2RlQnlJZE1vZGFsKEdlbmVyYXRlQ29kZU1vZGFsKSB7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZW5lcmF0ZUNvZGVCeUlkKHRoaXMuVGVtcGxhdGVJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIFZhbHVlID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLk5hbWUgPSBcIkdlbmVyYXRlQ29kZVRleHRBcmVhXCI7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuVmFsdWUgPSBWYWx1ZS52YWwudG9TdHJpbmcoKTtcclxuICAgICAgdGhpcy5WYWx1ZVRvQ29weSA9IFZhbHVlLnZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLklzRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuUm93cyA9IDIwO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLkNvbHMgPSAyMDtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5NYXhMZW5ndGggPSAxMDAwMDAwO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKEdlbmVyYXRlQ29kZU1vZGFsKTtcclxuXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2hvd0dlbmVyYXRlVXBkYXRlQ29kZUJ5SWRNb2RhbChHZW5lcmF0ZUNvZGVNb2RhbCkge1xyXG4gICAgdGhpcy5HZW5lcmF0ZUNvZGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdlbmVyYXRlVXBkYXRlQ29kZUJ5SWQodGhpcy5UZW1wbGF0ZUlkKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgVmFsdWUgPSByZXN1bHQgYXMgYW55XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuTmFtZSA9IFwiR2VuZXJhdGVDb2RlVGV4dEFyZWFcIjtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5WYWx1ZSA9IFZhbHVlLnZhbC50b1N0cmluZygpO1xyXG4gICAgICB0aGlzLlZhbHVlVG9Db3B5ID0gVmFsdWUudmFsLnRvU3RyaW5nKCk7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuSXNEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgdGhpcy5HZW5lcmF0ZUNvZGVUZXh0QXJlYS5Sb3dzID0gMjA7XHJcbiAgICAgIHRoaXMuR2VuZXJhdGVDb2RlVGV4dEFyZWEuQ29scyA9IDIwO1xyXG4gICAgICB0aGlzLkdlbmVyYXRlQ29kZVRleHRBcmVhLk1heExlbmd0aCA9IDEwMDAwMDA7XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oR2VuZXJhdGVDb2RlTW9kYWwpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNvcHlJbnB1dE1lc3NhZ2UoKSB7XHJcbiAgICB0aGlzLl9jbGlwYm9hcmRTZXJ2aWNlLmNvcHkodGhpcy5WYWx1ZVRvQ29weS50b1N0cmluZygpKTtcclxuICB9XHJcbiAgLy9FZGl0IFRlbXBsYXRlXHJcbiAgc2hvd0VkaXRUZW1wbGF0ZU1vZGFsKEVkaXRUZW1wbGF0ZU1vZGFsKSB7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRFZGl0VGVtcGxhdGVEYXRhKHRoaXMuVGVtcGxhdGVJZCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcblxyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHRPYmoubGlzdHM7XHJcbiAgICAgIHRoaXMuT3JnYW5pemF0aW9uTGlzdCA9IGxpc3RzLm9yZ2FuaXphdGlvbjtcclxuICAgICAgdGhpcy5MYW5ndWFnZU1vZGVMaXN0ID0gbGlzdHMubG9va1VwSXRlbXNFbWFpbFRlbXBsYXRlO1xyXG4gICAgICB0aGlzLk1hc3RlckxheW91dExpc3QgPSBsaXN0cy5lbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlO1xyXG4gICAgICB0aGlzLkNhdGVnb3J5TGlzdCA9IGxpc3RzLmxvb2tVcEl0ZW1zQ2F0ZWdvcnk7XHJcblxyXG4gICAgICB0aGlzLlRlbXBsYXRlID0gcmVzdWx0T2JqLm1vZGVsO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VGVtcGxhdGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5FZGl0VGVtcGxhdGVGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuRWRpdFRlbXBsYXRlRm9ybVxyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEVkaXRUZW1wbGF0ZU1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRUZW1wbGF0ZUZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFRlbXBsYXRlRnVuY3Rpb247XHJcblxyXG4gICAgICBsZXQgTmFtZSA9IG5ldyBFbmdsaXNoQXJhYmljRFRPKCk7XHJcbiAgICAgIE5hbWUuQXJhYmljID0gdGhpcy5UZW1wbGF0ZS5uYW1lLmFyYWJpYztcclxuICAgICAgTmFtZS5FbmdsaXNoID0gdGhpcy5UZW1wbGF0ZS5uYW1lLmVuZ2xpc2g7XHJcblxyXG4gICAgICB0aGlzLkVkaXROYW1lID0gbmV3IE11bHRpTGluZ3VhbFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTmFtZSA9IFwiTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLkFyYWJpY0xhYmVsS2V5ID0gXCJOYW1lSW5BcmFiaWNcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5FbmdsaXNoTGFiZWxLZXkgPSBcIk5hbWVJbkVuZ2xpc2hcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5WYWx1ZSA9IE5hbWU7XHJcblxyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUuTmFtZSA9IFwiU3lzTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lLkxhYmVsS2V5ID0gXCJTeXNOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdFN5c05hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lLlZhbHVlID0gdGhpcy5UZW1wbGF0ZS5zeXNOYW1lO1xyXG4gICAgICB0aGlzLkVkaXRTeXNOYW1lVmFsdWUgPSB0aGlzLlRlbXBsYXRlLnN5c05hbWU7XHJcblxyXG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSBuZXcgRW5nbGlzaEFyYWJpY0RUTygpO1xyXG4gICAgICBkZXNjcmlwdGlvbi5BcmFiaWMgPSB0aGlzLlRlbXBsYXRlLmRlc2NyaXB0aW9uLmFyYWJpYztcclxuICAgICAgZGVzY3JpcHRpb24uRW5nbGlzaCA9IHRoaXMuVGVtcGxhdGUuZGVzY3JpcHRpb24uZW5nbGlzaDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uID0gbmV3IE11bHRpTGluZ3VhbFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5OYW1lID0gXCJEZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5BcmFiaWNMYWJlbEtleSA9IFwiRGVzY3JpcHRpb25JbkFyYWJpY1wiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5FbmdsaXNoTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uSW5FbmdsaXNoXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLlZhbHVlID0gZGVzY3JpcHRpb247XHJcblxyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5OYW1lID0gXCJPcmdhbml6YXRpb25JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0T3JnYW5pemF0aW9uLkxhYmVsS2V5ID0gXCJPcmdhbml6YXRpb25cIlxyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uVmlld1R5cGUgPSBDb250cm9sTGF5b3V0LlZlcnRpY2FsXHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5EYXRhU291cmNlID0gdGhpcy5Pcmdhbml6YXRpb25MaXN0XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRPcmdhbml6YXRpb24uSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE9yZ2FuaXphdGlvbi5TZWxlY3RlZEl0ZW1zID0gdGhpcy5UZW1wbGF0ZS5vcmdhbml6YXRpb25JRF9HVUlEPy50b0xvd2VyQ2FzZSgpO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdExhbmd1YWdlTW9kZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLk5hbWUgPSBcIkxhbmd1YWdlTW9kZUl0ZW1JRF9HVUlEXCJcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLkxhYmVsS2V5ID0gXCJMYW5ndWFnZU1vZGVcIlxyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuRGF0YVNvdXJjZSA9IHRoaXMuTGFuZ3VhZ2VNb2RlTGlzdFxyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0TGFuZ3VhZ2VNb2RlLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRMYW5ndWFnZU1vZGUuU2VsZWN0ZWRJdGVtcyA9IHRoaXMuVGVtcGxhdGUubGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0TWFzdGVyTGF5b3V0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuTmFtZSA9IFwiRW1haWxIZWFkZXJBbmRGb290ZXJUZW1wbGF0ZUlEX0dVSURcIlxyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuTGFiZWxLZXkgPSBcIk1hc3RlckxheW91dFwiXHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5EYXRhU291cmNlID0gdGhpcy5NYXN0ZXJMYXlvdXRMaXN0XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRNYXN0ZXJMYXlvdXQuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdE1hc3RlckxheW91dC5TZWxlY3RlZEl0ZW1zID0gdGhpcy5UZW1wbGF0ZS5lbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuTmFtZSA9IFwiQ2F0ZWdvcnlJdGVtSURfR1VJRFwiXHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LkxhYmVsS2V5ID0gXCJDYXRlZ29yeVwiXHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LkRhdGFTb3VyY2UgPSB0aGlzLkNhdGVnb3J5TGlzdFxyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRDYXRlZ29yeS5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5FZGl0Q2F0ZWdvcnkuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdENhdGVnb3J5LlNlbGVjdGVkSXRlbXMgPSB0aGlzLlRlbXBsYXRlLmNhdGVnb3J5SXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5cclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbC5OYW1lID0gXCJJc0VtYWlsXCJcclxuICAgICAgdGhpcy5FZGl0SXNFbWFpbC5MYWJlbEtleSA9IFwiSXNFbWFpbFwiXHJcbiAgICAgIHRoaXMuRWRpdElzRW1haWwuVmFsdWUgPSB0aGlzLlRlbXBsYXRlLmlzRW1haWxcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRJc1NtcyA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0SXNTbXMuTmFtZSA9IFwiSXNTbXNcIlxyXG4gICAgICB0aGlzLkVkaXRJc1Ntcy5MYWJlbEtleSA9IFwiSXNTbXNcIlxyXG4gICAgICB0aGlzLkVkaXRJc1Ntcy5WYWx1ZSA9IHRoaXMuVGVtcGxhdGUuaXNTbXNcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nLk5hbWUgPSBcIkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcIlxyXG4gICAgICB0aGlzLkVkaXRFbmFibGVJbnRlbnNpdmVMb2dnaW5nLkxhYmVsS2V5ID0gXCJFbmFibGVJbnRlbnNpdmVMb2dnaW5nXCJcclxuICAgICAgdGhpcy5FZGl0RW5hYmxlSW50ZW5zaXZlTG9nZ2luZy5WYWx1ZSA9IHRoaXMuVGVtcGxhdGUuZW5hYmxlSW50ZW5zaXZlTG9nZ2luZ1xyXG5cclxuXHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRWRpdFRlbXBsYXRlTW9kYWwpO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRFZGl0VGVtcGxhdGVNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5FZGl0VGVtcGxhdGVGb3JtLnZhbHVlO1xyXG4gICAgbGV0IEVkaXRNb2RlbCA9IG5ldyBUZW1wbGF0ZURUTygpO1xyXG4gICAgRWRpdE1vZGVsLklEX0dVSUQgPSB0aGlzLlRlbXBsYXRlSWQ7XHJcbiAgICBFZGl0TW9kZWwuTmFtZS5BcmFiaWMgPSBSZXN1bHRNb2RlbC5OYW1lLkFyYWJpYztcclxuICAgIEVkaXRNb2RlbC5OYW1lLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5OYW1lLkVuZ2xpc2g7XHJcbiAgICBFZGl0TW9kZWwuU3lzTmFtZSA9IFJlc3VsdE1vZGVsLlN5c05hbWUgPyBSZXN1bHRNb2RlbC5TeXNOYW1lIDogdGhpcy5FZGl0U3lzTmFtZVZhbHVlO1xyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uLkVuZ2xpc2ggPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvbi5FbmdsaXNoXHJcbiAgICBFZGl0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb24uQXJhYmljXHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9IFJlc3VsdE1vZGVsLk9yZ2FuaXphdGlvbklEX0dVSURcclxuICAgIEVkaXRNb2RlbC5DYXRlZ29yeUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuQ2F0ZWdvcnlJdGVtSURfR1VJRFxyXG4gICAgRWRpdE1vZGVsLkxhbmd1YWdlTW9kZUl0ZW1JRF9HVUlEID0gUmVzdWx0TW9kZWwuTGFuZ3VhZ2VNb2RlSXRlbUlEX0dVSURcclxuICAgIEVkaXRNb2RlbC5FbWFpbEhlYWRlckFuZEZvb3RlclRlbXBsYXRlSURfR1VJRCA9IFJlc3VsdE1vZGVsLkVtYWlsSGVhZGVyQW5kRm9vdGVyVGVtcGxhdGVJRF9HVUlEXHJcbiAgICBFZGl0TW9kZWwuSXNFbWFpbCA9IFJlc3VsdE1vZGVsLklzRW1haWxcclxuICAgIEVkaXRNb2RlbC5Jc1NtcyA9IFJlc3VsdE1vZGVsLklzU21zXHJcbiAgICBFZGl0TW9kZWwuRW5hYmxlSW50ZW5zaXZlTG9nZ2luZyA9IFJlc3VsdE1vZGVsLkVuYWJsZUludGVuc2l2ZUxvZ2dpbmdcclxuXHJcbiAgICBwYXJhbUFycmF5LnB1c2goRWRpdE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdFRlbXBsYXRlRnVuY3Rpb24gPSAoRWRpdE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS5lZGl0RW1haWxUZW1wbGF0ZShFZGl0TW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL1NlbmQgRW1haWxcclxuICBzaG93U2VuZEVtYWlsTW9kYWwoU2VuZEVtYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRTZW5kRW1haWxUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsLmVtYWlsUHJvdmlkZXJzO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlTGlzdCA9IFJlc3VsdC52YWwubGFuZ3VhZ2VLZXlzO1xyXG5cclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5TZW5kRW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuU2VuZEVtYWlsRm9ybVxyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFNlbmRFbWFpbE1vZGVsO1xyXG4gICAgICB0aGlzLlNlbmRFbWFpbEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0U2VuZEVtYWlsRnVuY3Rpb247XHJcblxyXG4gICAgICB0aGlzLlRvID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRvLk5hbWUgPSBcIlRvRW1haWxzXCI7XHJcbiAgICAgIHRoaXMuVG8uTGFiZWxLZXkgPSBcIlRvXCI7XHJcbiAgICAgIHRoaXMuVG8uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLlRvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuTmFtZSA9IFwiRW1haWxQcm92aWRlck5hbWVcIlxyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLkxhYmVsS2V5ID0gXCJFbWFpbFNlcnZpY2VQcm92aWRlclwiXHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuRGF0YVNvdXJjZSA9IHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXJMaXN0XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FbWFpbFNlcnZpY2VQcm92aWRlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXIuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5MYW5ndWFnZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5OYW1lID0gXCJMYW5nS2V5XCJcclxuICAgICAgdGhpcy5MYW5ndWFnZS5MYWJlbEtleSA9IFwiTGFuZ3VhZ2VcIlxyXG4gICAgICB0aGlzLkxhbmd1YWdlLkRhdGFTb3VyY2UgPSB0aGlzLkxhbmd1YWdlTGlzdFxyXG4gICAgICB0aGlzLkxhbmd1YWdlLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuTGFuZ3VhZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkxhbmd1YWdlLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5MYW5ndWFnZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihTZW5kRW1haWxNb2RhbCk7XHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIGdldFNlbmRFbWFpbE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLlNlbmRFbWFpbEZvcm0udmFsdWU7XHJcbiAgICBsZXQgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCA9IG5ldyBTZW5kRW1haWxUZW1wbGF0ZU1vZGVsKCk7XHJcbiAgICBzZW5kRW1haWxUZW1wbGF0ZU1vZGVsLlRlbXBsYXRlSURfR1VJRCA9IHRoaXMuVGVtcGxhdGVJZDtcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuVG9FbWFpbHMgPSBSZXN1bHRNb2RlbC5Ub0VtYWlsc1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5MYW5nS2V5ID0gUmVzdWx0TW9kZWwuTGFuZ0tleVxyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5FbWFpbFByb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLkVtYWlsUHJvdmlkZXJOYW1lXHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRTZW5kRW1haWxGdW5jdGlvbiA9IChzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlU2VydmljZS5zZW5kRW1haWxUZW1wbGF0ZShzZW5kRW1haWxUZW1wbGF0ZU1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9UZXN0IFNlbmQgRW1haWxcclxuICBzaG93VGVzdFNlbmRFbWFpbE1vZGFsKFRlc3RTZW5kRW1haWxNb2RhbCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFNlbmRFbWFpbFRlbXBsYXRlKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IFJlc3VsdDogYW55ID0gcmVzdWx0O1xyXG4gICAgICB0aGlzLkVtYWlsU2VydmljZVByb3ZpZGVyTGlzdCA9IFJlc3VsdC52YWwuZW1haWxQcm92aWRlcnM7XHJcblxyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5UZXN0U2VuZEVtYWlsRm9ybVxyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0U2VuZEVtYWlsTW9kZWw7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdFNlbmRFbWFpbEZ1bmN0aW9uO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsVG8gPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvLk5hbWUgPSBcIlRvRW1haWxcIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZEVtYWlsVG8uTGFiZWxLZXkgPSBcIlNlbmRUb1wiO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kRW1haWxUby5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuVGVzdFNlbmRFbWFpbFRvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLk5hbWUgPSBcIkVtYWlsUHJvdmlkZXJOYW1lXCJcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuTGFiZWxLZXkgPSBcIkVtYWlsU2VydmljZVByb3ZpZGVyXCJcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuRGF0YVNvdXJjZSA9IHRoaXMuRW1haWxTZXJ2aWNlUHJvdmlkZXJMaXN0XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0RW1haWxTZXJ2aWNlUHJvdmlkZXIuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUZXN0U2VuZEVtYWlsTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gIH1cclxuICBnZXRUZXN0U2VuZEVtYWlsTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuVGVzdFNlbmRFbWFpbEZvcm0udmFsdWU7XHJcbiAgICBsZXQgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCA9IG5ldyBFbWFpbFRlbXBsYXRlVGVzdGVyTW9kZWwoKTtcclxuICAgIHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwuVGVtcGxhdGVJRF9HVUlEID0gdGhpcy5UZW1wbGF0ZUlkO1xyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5Ub0VtYWlsID0gUmVzdWx0TW9kZWwuVG9FbWFpbFxyXG4gICAgc2VuZEVtYWlsVGVtcGxhdGVNb2RlbC5FbWFpbFByb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLkVtYWlsUHJvdmlkZXJOYW1lXHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRUZXN0U2VuZEVtYWlsRnVuY3Rpb24gPSAoc2VuZEVtYWlsVGVtcGxhdGVNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UudGVzdFNlbmRFbWFpbFRlbXBsYXRlKHNlbmRFbWFpbFRlbXBsYXRlTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL1Rlc3QgU2VuZCBTTVNcclxuICBzaG93VGVzdFNlbmRTTVNNb2RhbChUZXN0U2VuZFNNU01vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlc3RTTVNUZW1wbGF0ZSgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBSZXN1bHQ6IGFueSA9IHJlc3VsdFxyXG4gICAgICB0aGlzLlNNU1NlcnZpY2VQcm92aWRlckxpc3QgPSBSZXN1bHQudmFsO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU0Zvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuVGVzdFNlbmRTTVNGb3JtXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0U2VuZFNNU01vZGVsO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0U2VuZFNNU0Z1bmN0aW9uO1xyXG5cclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uTmFtZSA9IFwiVG9Nb2JpbGVOdW1iZXJcIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLkxhYmVsS2V5ID0gXCJTZW5kVG9cIjtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLlZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLlRlc3RTZW5kU01TVG8uU2hvd0FzdGVyaXNrID0gdHJ1ZTtcclxuICAgICAgdGhpcy5UZXN0U2VuZFNNU1RvLlNlbGVjdGVkQ291bnRyeUlTTyA9IENvdW50cnkuVW5pdGVkQXJhYkVtaXJhdGVzXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5QaG9uZVZhbGlkYXRpb24gPSB0cnVlXHJcbiAgICAgIHRoaXMuVGVzdFNlbmRTTVNUby5BbGxvd1NlYXJjaCA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlciA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLk5hbWUgPSBcIlNNU1Byb3ZpZGVyTmFtZVwiXHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5MYWJlbEtleSA9IFwiU01TU2VydmljZVByb3ZpZGVyXCJcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLkRhdGFTb3VyY2UgPSB0aGlzLlNNU1NlcnZpY2VQcm92aWRlckxpc3RcclxuICAgICAgdGhpcy5UZXN0U01TU2VydmljZVByb3ZpZGVyLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuVGVzdFNNU1NlcnZpY2VQcm92aWRlci5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihUZXN0U2VuZFNNU01vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kU01TTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuVGVzdFNlbmRTTVNGb3JtLnZhbHVlO1xyXG4gICAgbGV0IHNlbmRTTVNUZW1wbGF0ZU1vZGVsID0gbmV3IFNNU1RlbXBsYXRlVGVzdGVyTW9kZWwoKTtcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlRlbXBsYXRlSURfR1VJRCA9IHRoaXMuVGVtcGxhdGVJZDtcclxuICAgIGxldCBpbnRlcm5hdGlvbmFsTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgaWYgKFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyICE9IG51bGwpIHtcclxuICAgICAgaW50ZXJuYXRpb25hbE51bWJlciA9IFJlc3VsdE1vZGVsLlRvTW9iaWxlTnVtYmVyLmludGVybmF0aW9uYWxOdW1iZXIgYXMgc3RyaW5nO1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlci5yZXBsYWNlKC9cXHMvZywgXCJcIik7XHJcbiAgICB9XHJcbiAgICBzZW5kU01TVGVtcGxhdGVNb2RlbC5Ub01vYmlsZU51bWJlciA9IGludGVybmF0aW9uYWxOdW1iZXJcclxuICAgIHNlbmRTTVNUZW1wbGF0ZU1vZGVsLlNNU1Byb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLlNNU1Byb3ZpZGVyTmFtZVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChzZW5kU01TVGVtcGxhdGVNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RTZW5kU01TRnVuY3Rpb24gPSAoc2VuZFNNU1RlbXBsYXRlTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVTZXJ2aWNlLnRlc3RTTVNUZW1wbGF0ZShzZW5kU01TVGVtcGxhdGVNb2RlbClcclxuICB9XHJcblxyXG4gIC8vT24gZGVzdHJveVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZXF1ZXN0SGFuZGxlclNlcnZpY2UuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIiAqbmdJZj1cImlzRGF0YUxvYWRlZFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCI+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuU2V0UGFzc1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBtZS0zIGJ0bi1saWdodC1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dFZGl0VGVtcGxhdGVNb2RhbChFZGl0VGVtcGxhdGVNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYSBmYS1lZGl0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICA8c3Bhbj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYnRuU2V0UGFzc1wiIGNsYXNzPVwiYnRuIGJ0bi1zbSBtZS0zIGJ0bi1saWdodC1wcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dTZW5kRW1haWxNb2RhbChTZW5kRW1haWxNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wYXBlci1wbGFuZVwiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kRW1haWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVzdFNlbmRFbWFpbE1vZGFsKFRlc3RTZW5kRW1haWxNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1iYXJzXCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RTZW5kRW1haWxcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tbGlnaHQtcHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVzdFNlbmRTTVNNb2RhbChUZXN0U2VuZFNNU01vZGFsKVwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWVudmVsb3BlLW9wZW4tdGV4dCBzbXNcIj48L2k+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFNlbmRTTVNcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHZW5lcmF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFyc1wiPjwvaT57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImJ0blNldFBhc3NcIiBjbGFzcz1cImJ0biBidG4tc20gbWUtMyBidG4tcHJpbWFyeVwiICpuZ0lmPVwiIVByb2R1Y3Rpb25Nb2RlXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHZW5lcmF0ZVVwZGF0ZUNvZGVCeUlkTW9kYWwoR2VuZXJhdGVDb2RlTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEta2V5XCI+PC9pPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkdlbmVyYXRlVXBkYXRlQ29kZVwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTYgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgXCI+XHJcbiAgICAgICAgICAgICAgPCEtLWJlZ2luOjpPcHRpb24tLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtY2VudGVyIHJvdW5kZWQtMyBiZy1saWdodCBweS0xMCBweC0xMCBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpIZWFkaW5nLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpUaXRsZS0tPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRFbWFpbCcsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2VuJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICBFbmdsaXNoOlxyXG4gICAgICAgICAgICAgICAgICAgIHt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLmVtYWlsU3ViamVjdC5lbmdsaXNofX1cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0RW1haWwnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdlbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBidG4taWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xMDAgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLWJlZ2luOjpJdGVtLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctYm9sZCBmcy02IHRleHQtZ3JheS04MDAgZmxleC1ncm93LTEgcGUtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby50ZW1wbGF0ZUVtYWlsQmFzZUhlYWRlci5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5lbmdsaXNofX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEJvZHkuZW5nbGlzaH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1kYXJrLXNraW4gcHQtN1wiIGlubmVySFRNTD1cInt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLnRlbXBsYXRlRW1haWxCYXNlRm9vdGVyLmVuZ2xpc2h9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLWVuZDo6U2VsZWN0LS0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZDo6T3B0aW9uLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTYgbWItMTBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8IS0tYmVnaW46Ok9wdGlvbi0tPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMCBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1jZW50ZXIgcm91bmRlZC0zIGJnLWxpZ2h0IHB5LTEwIHB4LTEwIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tYmVnaW46OkhlYWRpbmctLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi03IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tYmVnaW46OlRpdGxlLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIlsnL0FkbWluL05vdGlmaWNhdGlvbnMvRWRpdEVtYWlsJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnYXInXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIiBjbGFzcz1cInRleHQtcHJpbWFyeSBtYi01IGZ3LWJvbGRlc3QgZnMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEFyYWJpYzpcclxuICAgICAgICAgICAgICAgICAgICB7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbFN1YmplY3QuYXJhYmljfX1cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRFbWFpbCcsVGVtcGxhdGVJbmZvLmlEX0dVSUQsJ2FyJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicm91dGVyLWxpbmstYWN0aXZlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1iZWdpbjo6SXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGQgZnMtNiB0ZXh0LWdyYXktODAwIGZsZXgtZ3Jvdy0xIHBlLTMgYXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaW5uZXJIVE1MPVwie3tUZW1wbGF0ZUluZm8uZW1haWxUZW1wbGF0ZUluZm8udGVtcGxhdGVFbWFpbEJhc2VIZWFkZXIuYXJhYmljfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby5lbWFpbEh0bWxIZWFkU2VjdGlvbi5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlubmVySFRNTD1cInt7VGVtcGxhdGVJbmZvLmVtYWlsVGVtcGxhdGVJbmZvLmVtYWlsQm9keS5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtZGFyay1za2luIHB0LTdcIiBpbm5lckhUTUw9XCJ7e1RlbXBsYXRlSW5mby5lbWFpbFRlbXBsYXRlSW5mby50ZW1wbGF0ZUVtYWlsQmFzZUZvb3Rlci5hcmFiaWN9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1lbmQ6OlNlbGVjdC0tPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1lbmQ6Ok9wdGlvbi0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14bC02XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJnLWxpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB5LTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSB0ZXh0LXByaW1hcnkgbWItNSBmdy1ib2xkZXN0IGZzLTJcIj5cclxuICAgICAgICAgICAgICAgICAgRW5nbGlzaDpTTVNcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgYnRuLWljb25cIiBbcm91dGVyTGlua109XCJbJy9BZG1pbi9Ob3RpZmljYXRpb25zL0VkaXRTTVMnLFRlbXBsYXRlSW5mby5pRF9HVUlELCdlbiddXCJcclxuICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cInJvdXRlci1saW5rLWFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbiBmb250LXNpemUtMThcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBtb2JpbGUtdHh0XCI+e3tUZW1wbGF0ZUluZm8uc21zVGVtcGxhdGVJbmZvLnNtcy5lbmdsaXNofX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhsLTZcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYmctbGlnaHRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHktMTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIHRleHQtcHJpbWFyeSBtYi01IGZ3LWJvbGRlc3QgZnMtMlwiPlxyXG4gICAgICAgICAgICAgICAgICBBcmFiaWM6U01TXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IGJ0bi1pY29uXCIgW3JvdXRlckxpbmtdPVwiWycvQWRtaW4vTm90aWZpY2F0aW9ucy9FZGl0U01TJyxUZW1wbGF0ZUluZm8uaURfR1VJRCwnYXInXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJyb3V0ZXItbGluay1hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW4gZm9udC1zaXplLTE4XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpcGhvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSBtb2JpbGUtdHh0IGFyXCI+ICB7e1RlbXBsYXRlSW5mby5zbXNUZW1wbGF0ZUluZm8uc21zLmFyYWJpY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG48IS0tIHNlbmQgRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjU2VuZEVtYWlsTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRFbWFpbFRlbXBsYXRlXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlNlbmRFbWFpbEZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJUb1wiIFtncm91cF09XCJTZW5kRW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkxhbmd1YWdlXCIgW2dyb3VwXT1cIlNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVtYWlsU2VydmljZVByb3ZpZGVyXCIgW2dyb3VwXT1cIlNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlU2VuZEVtYWlsRm9ybSBpZD1cIkNsb3NlU2VuZEVtYWlsRm9ybVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUZXN0IHNtcyBFbWFpbCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNUZXN0U2VuZFNNU01vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U2VuZFNNU1wiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJUZXN0U2VuZFNNU0Zvcm1PcHRpb25zXCI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtUGhvbmUgW29wdGlvbnNdPVwiVGVzdFNlbmRTTVNUb1wiIFtncm91cF09XCJUZXN0U2VuZFNNU0Zvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1QaG9uZT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXJcIiBbZ3JvdXBdPVwiVGVzdFNlbmRTTVNGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RpY2UgZC1mbGV4IGJnLWxpZ2h0LXdhcm5pbmcgcm91bmRlZCBib3JkZXItd2FybmluZyBib3JkZXIgYm9yZGVyLWRhc2hlZCBtYi0xMCBwLTZcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMnR4IHN2Zy1pY29uLXdhcm5pbmcgbWUtNFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2dlbjA0NC5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXN0YWNrIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTYgdGV4dC1ncmF5LTcwMFwiPlxyXG4gICAgICAgICAgICAgICAgS2luZGx5IG5vdGUgdGhhdCB0aGVzZSBhdHRyaWJ1dGVzIGFyZSByZXNlcnZlZFxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5OYW1lRU48L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk5hbWVBUjwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+U3ViamVjdDwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TGFuZ0tleTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TW9iaWxlPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5FbWFpbDwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RGF0ZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+VGltZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RGF0ZVRpbWU8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlVGVzdFNlbmRTTVNGb3JtIGlkPVwiQ2xvc2VUZXN0U2VuZFNNU0Zvcm1cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZW5kXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBUZXN0IFNlbmQgRW1haWwgTW9kYWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjVGVzdFNlbmRFbWFpbE1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U2VuZEVtYWlsXCIpfX08L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIlRlc3RTZW5kRW1haWxGb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJUZXN0U2VuZEVtYWlsVG9cIiBbZ3JvdXBdPVwiVGVzdFNlbmRFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlclwiIFtncm91cF09XCJUZXN0U2VuZEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGljZSBkLWZsZXggYmctbGlnaHQtd2FybmluZyByb3VuZGVkIGJvcmRlci13YXJuaW5nIGJvcmRlciBib3JkZXItZGFzaGVkIG1iLTEwIHAtNlwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0ydHggc3ZnLWljb24td2FybmluZyBtZS00XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvZ2VuMDQ0LnN2ZydcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtc3RhY2sgZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LWJvbGRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtNiB0ZXh0LWdyYXktNzAwXCI+XHJcbiAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJLZXlNYXBOb3RlXCIpfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+TmFtZUVOPC9saT5cclxuICAgICAgICAgIDxsaSBjbGFzcz1cIm1iLTJcIj5OYW1lQVI8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlN1YmplY3Q8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkxhbmdLZXk8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPk1vYmlsZTwvbGk+XHJcbiAgICAgICAgICA8bGkgY2xhc3M9XCJtYi0yXCI+RW1haWw8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPlRpbWU8L2xpPlxyXG4gICAgICAgICAgPGxpIGNsYXNzPVwibWItMlwiPkRhdGVUaW1lPC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVRlc3RTZW5kRW1haWxGb3JtIGlkPVwiQ2xvc2VUZXN0U2VuZEVtYWlsRm9ybVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbmRcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBlZGl0IE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRUZW1wbGF0ZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0VGVtcGxhdGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdFRlbXBsYXRlRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRCb3ggW29wdGlvbnNdPVwiRWRpdE5hbWVcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPjwvQkJTRi1NdWx0aUxpbmd1YWxUZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLU11bHRpTGluZ3VhbFRleHRBcmVhIFtvcHRpb25zXT1cIkVkaXREZXNjcmlwdGlvblwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtTXVsdGlMaW5ndWFsVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhUHJvZHVjdGlvbk1vZGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXRTeXNOYW1lXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0T3JnYW5pemF0aW9uXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRMYW5ndWFnZU1vZGVcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdENhdGVnb3J5XCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkVkaXRNYXN0ZXJMYXlvdXRcIiBbZ3JvdXBdPVwiRWRpdFRlbXBsYXRlRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0SXNFbWFpbFwiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwiRWRpdElzU21zXCIgW2dyb3VwXT1cIkVkaXRUZW1wbGF0ZUZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJFZGl0RW5hYmxlSW50ZW5zaXZlTG9nZ2luZ1wiIFtncm91cF09XCJFZGl0VGVtcGxhdGVGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUVkaXRUZW1wbGF0ZU1vZGFsIGlkPVwiQ2xvc2VFZGl0VGVtcGxhdGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gR2VuZXJhdGVDb2RlIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0dlbmVyYXRlQ29kZU1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZUNvZGVcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiR2VuZXJhdGVDb2RlRm9ybVwiPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIlJvd1wiPlxyXG4gICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cIkdlbmVyYXRlQ29kZVRleHRBcmVhXCIgW2dyb3VwXT1cIkdlbmVyYXRlQ29kZUZvcm1cIiAjR2VuZXJhdGVDb2RlSW5wdXQ+XHJcbiAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZUdlbmVyYXRlQ29kZU1vZGFsIGlkPVwiQ2xvc2VHZW5lcmF0ZUNvZGVNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJjb3B5SW5wdXRNZXNzYWdlKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNvcHlUb0NsaXBib2FyZFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19
|