@hitsoft/e-donusum 1.0.33 → 1.0.35

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.
Files changed (52) hide show
  1. package/config/providers/hit-providers/failed-connector-despatch-route.provider.d.ts +9 -0
  2. package/config/providers/hit-providers/failed-despatch-route.provider.d.ts +9 -0
  3. package/esm2020/config/e-donusum-config.module.mjs +6 -2
  4. package/esm2020/config/providers/hit-providers/failed-connector-despatch-route.provider.mjs +20 -0
  5. package/esm2020/config/providers/hit-providers/failed-despatch-route.provider.mjs +20 -0
  6. package/esm2020/lib/components/hit-despatches/hit-despatch.component.mjs +3 -3
  7. package/esm2020/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch-routing.module.mjs +38 -0
  8. package/esm2020/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch.component.mjs +33 -0
  9. package/esm2020/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch.module.mjs +77 -0
  10. package/esm2020/lib/components/hit-failed-despatches/hit-failed-despatch-routing.module.mjs +38 -0
  11. package/esm2020/lib/components/hit-failed-despatches/hit-failed-despatch.component.mjs +62 -0
  12. package/esm2020/lib/components/hit-failed-despatches/hit-failed-despatch.module.mjs +77 -0
  13. package/esm2020/lib/components/hit-gib-partner-pks/hit-gib-partner-pk.component.mjs +3 -3
  14. package/esm2020/lib/components/hit-invoices/hit-invoice.component.mjs +3 -3
  15. package/esm2020/lib/components/hit-paramas-invoices/hit-params-invoice.component.mjs +3 -2
  16. package/esm2020/lib/components/hit-params-companies/hit-params-company.component.mjs +3 -2
  17. package/esm2020/lib/components/hit-params-dispatches/hit-params-dispatch.component.mjs +3 -2
  18. package/esm2020/lib/components/hit-params-generals/hit-params-generals-part1/hit-params-general-part1.component.mjs +15 -4
  19. package/esm2020/lib/components/hit-params-generals/hit-params-generals-part2/hit-params-general-part2.component.mjs +5 -3
  20. package/esm2020/lib/components/hit-params-integrators/hit-params-integrator.component.mjs +11 -3
  21. package/esm2020/lib/components/hit-setup-wizard/hit-setup-wizard.component.mjs +29 -10
  22. package/esm2020/lib/e-donusum-routing.module.mjs +5 -1
  23. package/esm2020/lib/gib-partner-pk-alls/gib-partner-pk-all/gib-partner-pk-all-routing.module.mjs +16 -4
  24. package/esm2020/lib/gib-partner-pks/gib-partner-pk/gib-partner-pk-routing.module.mjs +16 -4
  25. package/esm2020/lib/hit-proxy/hit-despatches/hit-despatch.service.mjs +11 -1
  26. package/esm2020/lib/hit-proxy/hit-failed-connector-despatches/hit-failed-connector-despatches.service.mjs +24 -0
  27. package/esm2020/lib/hit-proxy/hit-failed-despatches/hit-failed-despatch.service.mjs +24 -0
  28. package/fesm2015/hitsoft-e-donusum-config.mjs +132 -94
  29. package/fesm2015/hitsoft-e-donusum-config.mjs.map +1 -1
  30. package/fesm2015/hitsoft-e-donusum.mjs +762 -368
  31. package/fesm2015/hitsoft-e-donusum.mjs.map +1 -1
  32. package/fesm2020/hitsoft-e-donusum-config.mjs +132 -94
  33. package/fesm2020/hitsoft-e-donusum-config.mjs.map +1 -1
  34. package/fesm2020/hitsoft-e-donusum.mjs +648 -262
  35. package/fesm2020/hitsoft-e-donusum.mjs.map +1 -1
  36. package/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch-routing.module.d.ts +7 -0
  37. package/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch.component.d.ts +17 -0
  38. package/lib/components/hit-failed-connector-despatches/hit-failed-connector-despatch.module.d.ts +16 -0
  39. package/lib/components/hit-failed-despatches/hit-failed-despatch-routing.module.d.ts +7 -0
  40. package/lib/components/hit-failed-despatches/hit-failed-despatch.component.d.ts +24 -0
  41. package/lib/components/hit-failed-despatches/hit-failed-despatch.module.d.ts +16 -0
  42. package/lib/components/hit-paramas-invoices/hit-params-invoice.component.d.ts +1 -1
  43. package/lib/components/hit-params-companies/hit-params-company.component.d.ts +1 -1
  44. package/lib/components/hit-params-dispatches/hit-params-dispatch.component.d.ts +1 -1
  45. package/lib/components/hit-params-generals/hit-params-generals-part1/hit-params-general-part1.component.d.ts +1 -0
  46. package/lib/components/hit-params-generals/hit-params-generals-part2/hit-params-general-part2.component.d.ts +1 -1
  47. package/lib/components/hit-params-integrators/hit-params-integrator.component.d.ts +1 -0
  48. package/lib/components/hit-setup-wizard/hit-setup-wizard.component.d.ts +1 -0
  49. package/lib/hit-proxy/hit-despatches/hit-despatch.service.d.ts +2 -0
  50. package/lib/hit-proxy/hit-failed-connector-despatches/hit-failed-connector-despatches.service.d.ts +12 -0
  51. package/lib/hit-proxy/hit-failed-despatches/hit-failed-despatch.service.d.ts +12 -0
  52. package/package.json +1 -1
@@ -25,6 +25,7 @@ export class HitParamsIntegratorComponent {
25
25
  this.toasterService = toasterService;
26
26
  this.hitEntegratorsService = hitEntegratorsService;
27
27
  this.submitButtonDisabled = false;
28
+ this.connectionTestButtonDisabled = false;
28
29
  this.IsSubmitButtonHidden = false;
29
30
  this.valid = new EventEmitter();
30
31
  }
@@ -63,11 +64,13 @@ export class HitParamsIntegratorComponent {
63
64
  behavior: 'smooth',
64
65
  });
65
66
  this.toasterService.error('eDonusum::FillRequiredFields');
67
+ this.valid.emit(false);
66
68
  return;
67
69
  }
68
70
  if (this.paramsGeneralDtoPart1.isBranch &&
69
71
  this.formParamsIntegrator.controls.branchId.value == undefined) {
70
72
  this.toasterService.error('eDonusum::PleaseSelectBranch');
73
+ this.valid.emit(false);
71
74
  return;
72
75
  }
73
76
  if (!this.paramsGeneralDtoPart1.isBranch) {
@@ -127,10 +130,12 @@ export class HitParamsIntegratorComponent {
127
130
  // });
128
131
  // }
129
132
  async connectionTest() {
133
+ this.connectionTestButtonDisabled = true;
130
134
  if (this.formParamsIntegrator.controls.branchId?.value == '')
131
135
  this.formParamsIntegrator.controls.branchId.setValue('00000000-0000-0000-0000-000000000000');
132
136
  let request = this.formParamsIntegrator.value;
133
137
  return await this.hitEntegratorsService.connectionTest(request).then(data => {
138
+ this.connectionTestButtonDisabled = false;
134
139
  this.submitButtonDisabled = false;
135
140
  if (data) {
136
141
  this.toasterService.success('eDonusum::ConnectionSuccessful');
@@ -140,15 +145,18 @@ export class HitParamsIntegratorComponent {
140
145
  this.toasterService.error(data.message);
141
146
  return false;
142
147
  }
148
+ }).finally(() => {
149
+ this.connectionTestButtonDisabled = false;
150
+ this.submitButtonDisabled = false;
143
151
  });
144
152
  }
145
153
  }
146
154
  HitParamsIntegratorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsIntegratorComponent, deps: [{ token: i1.ListService }, { token: i1.TrackByService }, { token: i2.ParamsIntegratorService }, { token: i3.ConfirmationService }, { token: i4.FormBuilder }, { token: i5.HitParamsIntegratorsService }, { token: i3.ToasterService }, { token: i6.HitEntegratorsService }], target: i0.ɵɵFactoryTarget.Component });
147
- HitParamsIntegratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsIntegratorComponent, selector: "hit-params-integrator", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\" (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i8.LookupSelectComponent, selector: "abp-lookup-select", inputs: ["maxResultCount", "emptyOption"] }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
155
+ HitParamsIntegratorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitParamsIntegratorComponent, selector: "hit-params-integrator", inputs: { paramsGeneralDtoPart1: "paramsGeneralDtoPart1", IsSubmitButtonHidden: "IsSubmitButtonHidden" }, outputs: { valid: "valid" }, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], ngImport: i0, template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\" [disabled]=\"connectionTestButtonDisabled\" (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.AutofocusDirective, selector: "[autofocus]", inputs: ["autofocus"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i8.LookupSelectComponent, selector: "abp-lookup-select", inputs: ["maxResultCount", "emptyOption"] }, { kind: "directive", type: i9.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i9.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], changeDetection: i0.ChangeDetectionStrategy.Default });
148
156
  HitParamsIntegratorComponent.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsIntegratorComponent, providedIn: 'root' });
149
157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitParamsIntegratorComponent, decorators: [{
150
158
  type: Component,
151
- args: [{ selector: 'hit-params-integrator', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\" (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
159
+ args: [{ selector: 'hit-params-integrator', changeDetection: ChangeDetectionStrategy.Default, providers: [ListService, { provide: NgbDateAdapter, useClass: DateAdapter }], template: "<div class=\"card\">\r\n <div class=\"card-body\">\r\n <form [formGroup]=\"formParamsIntegrator\" id=\"params-integrator\" (ngSubmit)=\"submitForm()\" validateOnSubmit>\r\n <div class=\"row\" *ngIf=\"paramsGeneralDtoPart1?.isBranch\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-branch-id\">\r\n {{ 'eDonusum::Branch' | abpLocalization }} *\r\n </label>\r\n\r\n <abp-lookup-select cid=\"params-integrator-branch-id\" formControlName=\"branchId\"\r\n [getFn]=\"service.getBranchLookup\" (change)=\"branchOnChange()\"></abp-lookup-select>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-user\">\r\n {{ 'eDonusum::ServiceUser' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-user\" formControlName=\"serviceUser\" class=\"form-control\"\r\n maxlength=\"64\" autofocus />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-service-password\">\r\n {{ 'eDonusum::ServicePassword' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-service-password\" formControlName=\"servicePassword\"\r\n class=\"form-control\" maxlength=\"64\" type=\"password\"/>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-gblabel\">\r\n {{ 'eDonusum::EInvoiceGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-gblabel\" formControlName=\"eInvoiceGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-einvoice-pklabel\">\r\n {{ 'eDonusum::EInvoicePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-einvoice-pklabel\" formControlName=\"eInvoicePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-gblabel\">\r\n {{ 'eDonusum::EDispatchGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-gblabel\" formControlName=\"eDispatchGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-edispatch-pklabel\">\r\n {{ 'eDonusum::EDispatchPKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-edispatch-pklabel\" formControlName=\"eDispatchPKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-gblabel\">\r\n {{ 'eDonusum::EArchiveGBLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-gblabel\" formControlName=\"eArchiveGBLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6\">\r\n <div class=\"mb-3\">\r\n <label class=\"form-label\" for=\"params-integrator-earchive-pklabel\">\r\n {{ 'eDonusum::EArchivePKLabel' | abpLocalization }} *\r\n </label>\r\n\r\n <input id=\"params-integrator-earchive-pklabel\" formControlName=\"eArchivePKLabel\"\r\n class=\"form-control\" maxlength=\"256\" />\r\n </div>\r\n </div>\r\n </div> -->\r\n </form>\r\n <div class=\"row\">\r\n <div class=\"col-sm-12 text-lg-end\">\r\n <button class=\"btn btn-primary me-2\" type=\"button\" [disabled]=\"connectionTestButtonDisabled\" (click)=\"connectionTest()\">{{\r\n 'eDonusum::ConnectionTest' | abpLocalization }}</button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"params-integrator\"\r\n [disabled]=\"submitButtonDisabled\" [hidden]=\"IsSubmitButtonHidden\">\r\n {{ 'AbpUi::Save' | abpLocalization }}\r\n </abp-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
152
160
  }, {
153
161
  type: Injectable,
154
162
  args: [{
@@ -161,4 +169,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
161
169
  }], valid: [{
162
170
  type: Output
163
171
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9ycy9oaXQtcGFyYW1zLWludGVncmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFFOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFrQnJDLE1BQU0sT0FBTyw0QkFBNEI7SUFnQnZDLFlBQ2tCLElBQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLE9BQWdDLEVBQ3hDLFlBQWlDLEVBQ2pDLEVBQWUsRUFDTiwyQkFBd0QsRUFDeEQsY0FBOEIsRUFDOUIscUJBQTRDO1FBUDdDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENB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NEJBQTRCO2lCQUNqRDs0VUFXVSxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLO2dCQUVJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFCUCwgZG93bmxvYWRCbG9iLCBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8sIFRyYWNrQnlTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIaXRQYXJhbXNJbnRlZ3JhdG9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LXBhcmFtcy1pbnRlZ3JhdG9ycy9oaXQtcGFyYW1zLWludGVncmF0b3Iuc2VydmljZSc7XHJcbmltcG9ydCB7XHJcbiAgUGFyYW1zSW50ZWdyYXRvclNlcnZpY2UsXHJcbiAgUGFyYW1zSW50ZWdyYXRvcldpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0byxcclxufSBmcm9tICcuLi8uLi9wcm94eS9wYXJhbXMtaW50ZWdyYXRvcnMnO1xyXG5pbXBvcnQgeyBQYXJhbXNHZW5lcmFsRHRvIH0gZnJvbSAnLi4vLi4vcHJveHkvcGFyYW1zLWdlbmVyYWxzJztcclxuaW1wb3J0IHsgSGl0RW50ZWdyYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1lbnRlZ3JhdG9ycy9oaXQtZW50ZWdyYXRvci5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoaXQtcGFyYW1zLWludGVncmF0b3InLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcclxuICBwcm92aWRlcnM6IFtMaXN0U2VydmljZSwgeyBwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyIH1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtcGFyYW1zLWludGVncmF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogW10sXHJcbn0pXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsIC8vIFNlcnZpcyBnaWJpIGdsb2JhbCBzYcSfbGFyXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRQYXJhbXNJbnRlZ3JhdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBmb3JtUGFyYW1zSW50ZWdyYXRvcjogRm9ybUdyb3VwO1xyXG5cclxuICBwYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvPzogUGFyYW1zSW50ZWdyYXRvcldpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0bztcclxuXHJcbiAgc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgc2NlbmFyaW9UeXBlRGF0YVNvdXJjZTogYW55O1xyXG4gIGRvY3VtZW50VHlwZURhdGFTb3VyY2U6IGFueTtcclxuXHJcbiAgQElucHV0KCkgcGFyYW1zR2VuZXJhbER0b1BhcnQxOiBQYXJhbXNHZW5lcmFsRHRvO1xyXG5cclxuICBASW5wdXQoKSBJc1N1Ym1pdEJ1dHRvbkhpZGRlbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBQYXJhbXNJbnRlZ3JhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFBhcmFtc0ludGVncmF0b3JzU2VydmljZTogSGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdEVudGVncmF0b3JzU2VydmljZTogSGl0RW50ZWdyYXRvcnNTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsICcnKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VydmljZVVzZXIsXHJcbiAgICAgIHNlcnZpY2VQYXNzd29yZCxcclxuICAgICAgZUludm9pY2VHQkxhYmVsLFxyXG4gICAgICBlSW52b2ljZVBLTGFiZWwsXHJcbiAgICAgIGVEaXNwYXRjaEdCTGFiZWwsXHJcbiAgICAgIGVEaXNwYXRjaFBLTGFiZWwsXHJcbiAgICAgIGVBcmNoaXZlR0JMYWJlbCxcclxuICAgICAgZUFyY2hpdmVQS0xhYmVsLFxyXG4gICAgICBlbW1HQkxhYmVsLFxyXG4gICAgICBlbW1QS0xhYmVsLFxyXG4gICAgICBicmFuY2hJZCxcclxuICAgIH0gPSB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/LnBhcmFtc0ludGVncmF0b3IgfHwge307XHJcblxyXG4gICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvciA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzZXJ2aWNlVXNlcjogW3NlcnZpY2VVc2VyID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcclxuICAgICAgc2VydmljZVBhc3N3b3JkOiBbc2VydmljZVBhc3N3b3JkID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcclxuICAgICAgZUludm9pY2VHQkxhYmVsOiBbZUludm9pY2VHQkxhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIGVJbnZvaWNlUEtMYWJlbDogW2VJbnZvaWNlUEtMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICBlRGlzcGF0Y2hHQkxhYmVsOiBbXHJcbiAgICAgICAgZURpc3BhdGNoR0JMYWJlbCA/PyBudWxsLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXSxcclxuICAgICAgXSxcclxuICAgICAgZURpc3BhdGNoUEtMYWJlbDogW1xyXG4gICAgICAgIGVEaXNwYXRjaFBLTGFiZWwgPz8gbnVsbCxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV0sXHJcbiAgICAgIF0sXHJcbiAgICAgIC8vIGVBcmNoaXZlR0JMYWJlbDogW2VBcmNoaXZlR0JMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICAvLyBlQXJjaGl2ZVBLTGFiZWw6IFtlQXJjaGl2ZVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZW1tR0JMYWJlbDogW2VtbUdCTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZW1tUEtMYWJlbDogW2VtbVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgYnJhbmNoSWQ6IFticmFuY2hJZCA/PyBudWxsLCBbXV0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmludmFsaWQpIHtcclxuICAgICAgd2luZG93LnNjcm9sbCh7XHJcbiAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpGaWxsUmVxdWlyZWRGaWVsZHMnKTtcclxuXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxLmlzQnJhbmNoICYmXHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQudmFsdWUgPT0gdW5kZWZpbmVkXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OlBsZWFzZVNlbGVjdEJyYW5jaCcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MS5pc0JyYW5jaCkge1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2UuaW5mbygnZURvbnVzdW06OlRyYW5zYWN0aW9uU3RhcnRlZCcpO1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZShcclxuICAgICAgICAgIHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0by5wYXJhbXNJbnRlZ3JhdG9yLmlkLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAuLi50aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIClcclxuICAgICAgOiB0aGlzLnNlcnZpY2UuY3JlYXRlKHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IudmFsdWUpO1xyXG5cclxuICAgIGxldCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY29ubmVjdGlvblRlc3QoKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm47XHJcblxyXG4gICAgcmVxdWVzdFxyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgdGFwKCgpID0+IHt9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25TdWNjZXNzZnVsJyk7XHJcblxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKFxyXG4gICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvPy5icmFuY2hcclxuICAgICAgICAgICAgICA/IHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0by5icmFuY2guaWRcclxuICAgICAgICAgICAgICA6ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRoaXMudmFsaWQuZW1pdCh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6VHJhbnNhY3Rpb25VbnN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFBhcmFtc0ludGVncmF0b3IoYnVpbGRGb3JtOiBib29sZWFuID0gZmFsc2UsIGJyYW5jaElkKSB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIHRoaXMuaGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlLmdldFBhcmFtc0ludGVncmF0b3IoYnJhbmNoSWQpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgZGVidWdnZXI7XHJcbiAgICAgIHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0byA9IGRhdGE7XHJcblxyXG4gICAgICBpZiAoYnVpbGRGb3JtKSB0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuICAgICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZShicmFuY2hJZCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZWRCcmFuY2goZGF0YTogUGFyYW1zR2VuZXJhbER0bykge1xyXG4gICAgdGhpcy5wYXJhbXNHZW5lcmFsRHRvUGFydDEgPSBkYXRhO1xyXG5cclxuICAgIGlmICghZGF0YT8uaXNCcmFuY2gpIHRoaXMuZ2V0UGFyYW1zSW50ZWdyYXRvcih0cnVlLCAnJyk7XHJcbiAgfVxyXG5cclxuICBicmFuY2hPbkNoYW5nZSgpIHtcclxuICAgIHRoaXMuZ2V0UGFyYW1zSW50ZWdyYXRvcih0cnVlLCB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vIGNvbm5lY3Rpb25UZXN0KCkge1xyXG4gIC8vICAgaWYgKHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQudmFsdWUgPT0gJycpXHJcbiAgLy8gICAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQuc2V0VmFsdWUoJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCcpO1xyXG5cclxuICAvLyAgIGxldCByZXF1ZXN0ID0gdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZTtcclxuXHJcbiAgLy8gICB0aGlzLmhpdEVudGVncmF0b3JzU2VydmljZS5jb25uZWN0aW9uVGVzdChyZXF1ZXN0KS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgLy8gICAgIHRoaXMudmFsaWQuZW1pdChkYXRhKTtcclxuXHJcbiAgLy8gICAgIHJldHVybiBkYXRhO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICBhc3luYyBjb25uZWN0aW9uVGVzdCgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkPy52YWx1ZSA9PSAnJylcclxuICAgICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZSgnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJyk7XHJcblxyXG4gICAgbGV0IHJlcXVlc3QgPSB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhpdEVudGVncmF0b3JzU2VydmljZS5jb25uZWN0aW9uVGVzdChyZXF1ZXN0KS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnZURvbnVzdW06OkNvbm5lY3Rpb25TdWNjZXNzZnVsJyk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoZGF0YS5tZXNzYWdlKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1zSW50ZWdyYXRvclwiIGlkPVwicGFyYW1zLWludGVncmF0b3JcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwicGFyYW1zR2VuZXJhbER0b1BhcnQxPy5pc0JyYW5jaFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWJyYW5jaC1pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpCcmFuY2gnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhYnAtbG9va3VwLXNlbGVjdCBjaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1icmFuY2gtaWRcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuY2hJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0Rm5dPVwic2VydmljZS5nZXRCcmFuY2hMb29rdXBcIiAoY2hhbmdlKT1cImJyYW5jaE9uQ2hhbmdlKClcIj48L2FicC1sb29rdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3Itc2VydmljZS11c2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlcnZpY2VVc2VyJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXVzZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJzZXJ2aWNlVXNlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCIgYXV0b2ZvY3VzIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlcnZpY2VQYXNzd29yZCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3Itc2VydmljZS1wYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VQYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjY0XCIgdHlwZT1cInBhc3N3b3JkXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFSW52b2ljZUdCTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlSW52b2ljZUdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtcGtsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFSW52b2ljZVBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlSW52b2ljZVBLTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLWdibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RURpc3BhdGNoR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlRGlzcGF0Y2hHQkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkaXNwYXRjaC1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVEaXNwYXRjaFBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkaXNwYXRjaC1wa2xhYmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZURpc3BhdGNoUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLWdibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RUFyY2hpdmVHQkxhYmVsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1nYmxhYmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZUFyY2hpdmVHQkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLXBrbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RUFyY2hpdmVQS0xhYmVsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1wa2xhYmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZUFyY2hpdmVQS0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWxnLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtZS0yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb25uZWN0aW9uVGVzdCgpXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAnZURvbnVzdW06OkNvbm5lY3Rpb25UZXN0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwic3VibWl0XCIgZm9ybU5hbWU9XCJwYXJhbXMtaW50ZWdyYXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdEJ1dHRvbkRpc2FibGVkXCIgW2hpZGRlbl09XCJJc1N1Ym1pdEJ1dHRvbkhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9ycy9oaXQtcGFyYW1zLWludGVncmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFFOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFrQnJDLE1BQU0sT0FBTyw0QkFBNEI7SUFpQnZDLFlBQ2tCLElBQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLE9BQWdDLEVBQ3hDLFlBQWlDLEVBQ2pDLEVBQWUsRUFDTiwyQkFBd0QsRUFDeEQsY0FBOEIsRUFDOUIscUJBQTRDO1FBUDdDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENB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Qzs7eUhBek1VLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHVMQVA1QixDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLDBCQzFCOUUseW1NQW1ITTs2SERsRk8sNEJBQTRCLGNBRjNCLE1BQU07MkZBRVAsNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNFLHVCQUF1QixtQkFDaEIsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOztrQkFJN0UsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTSxFQUFFLDRCQUE0QjtpQkFDakQ7NFVBWVUscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAsIGRvd25sb2FkQmxvYiwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCB0YXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1wYXJhbXMtaW50ZWdyYXRvcnMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFBhcmFtc0ludGVncmF0b3JTZXJ2aWNlLFxyXG4gIFBhcmFtc0ludGVncmF0b3JXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8sXHJcbn0gZnJvbSAnLi4vLi4vcHJveHkvcGFyYW1zLWludGVncmF0b3JzJztcclxuaW1wb3J0IHsgUGFyYW1zR2VuZXJhbER0byB9IGZyb20gJy4uLy4uL3Byb3h5L3BhcmFtcy1nZW5lcmFscyc7XHJcbmltcG9ydCB7IEhpdEVudGVncmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZW50ZWdyYXRvcnMvaGl0LWVudGVncmF0b3Iuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGl0LXBhcmFtcy1pbnRlZ3JhdG9yJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLCAvLyBTZXJ2aXMgZ2liaSBnbG9iYWwgc2HEn2xhclxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0UGFyYW1zSW50ZWdyYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZm9ybVBhcmFtc0ludGVncmF0b3I6IEZvcm1Hcm91cDtcclxuXHJcbiAgcGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0bz86IFBhcmFtc0ludGVncmF0b3JXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG87XHJcblxyXG4gIHN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgY29ubmVjdGlvblRlc3RCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBzY2VuYXJpb1R5cGVEYXRhU291cmNlOiBhbnk7XHJcbiAgZG9jdW1lbnRUeXBlRGF0YVNvdXJjZTogYW55O1xyXG5cclxuICBASW5wdXQoKSBwYXJhbXNHZW5lcmFsRHRvUGFydDE6IFBhcmFtc0dlbmVyYWxEdG87XHJcblxyXG4gIEBJbnB1dCgpIElzU3VibWl0QnV0dG9uSGlkZGVuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFBhcmFtc0ludGVncmF0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlOiBIaXRQYXJhbXNJbnRlZ3JhdG9yc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0RW50ZWdyYXRvcnNTZXJ2aWNlOiBIaXRFbnRlZ3JhdG9yc1NlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IodHJ1ZSwgJycpO1xyXG4gIH1cclxuXHJcbiAgYnVpbGRGb3JtKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZXJ2aWNlVXNlcixcclxuICAgICAgc2VydmljZVBhc3N3b3JkLFxyXG4gICAgICBlSW52b2ljZUdCTGFiZWwsXHJcbiAgICAgIGVJbnZvaWNlUEtMYWJlbCxcclxuICAgICAgZURpc3BhdGNoR0JMYWJlbCxcclxuICAgICAgZURpc3BhdGNoUEtMYWJlbCxcclxuICAgICAgZUFyY2hpdmVHQkxhYmVsLFxyXG4gICAgICBlQXJjaGl2ZVBLTGFiZWwsXHJcbiAgICAgIGVtbUdCTGFiZWwsXHJcbiAgICAgIGVtbVBLTGFiZWwsXHJcbiAgICAgIGJyYW5jaElkLFxyXG4gICAgfSA9IHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0bz8ucGFyYW1zSW50ZWdyYXRvciB8fCB7fTtcclxuXHJcbiAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgIHNlcnZpY2VVc2VyOiBbc2VydmljZVVzZXIgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDY0KV1dLFxyXG4gICAgICBzZXJ2aWNlUGFzc3dvcmQ6IFtzZXJ2aWNlUGFzc3dvcmQgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDY0KV1dLFxyXG4gICAgICBlSW52b2ljZUdCTGFiZWw6IFtlSW52b2ljZUdCTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgZUludm9pY2VQS0xhYmVsOiBbZUludm9pY2VQS0xhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIGVEaXNwYXRjaEdCTGFiZWw6IFtcclxuICAgICAgICBlRGlzcGF0Y2hHQkxhYmVsID8/IG51bGwsXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildLFxyXG4gICAgICBdLFxyXG4gICAgICBlRGlzcGF0Y2hQS0xhYmVsOiBbXHJcbiAgICAgICAgZURpc3BhdGNoUEtMYWJlbCA/PyBudWxsLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXSxcclxuICAgICAgXSxcclxuICAgICAgLy8gZUFyY2hpdmVHQkxhYmVsOiBbZUFyY2hpdmVHQkxhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIC8vIGVBcmNoaXZlUEtMYWJlbDogW2VBcmNoaXZlUEtMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICAvLyBlbW1HQkxhYmVsOiBbZW1tR0JMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICAvLyBlbW1QS0xhYmVsOiBbZW1tUEtMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICBicmFuY2hJZDogW2JyYW5jaElkID8/IG51bGwsIFtdXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuaW52YWxpZCkge1xyXG4gICAgICB3aW5kb3cuc2Nyb2xsKHtcclxuICAgICAgICB0b3A6IDAsXHJcbiAgICAgICAgbGVmdDogMCxcclxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OkZpbGxSZXF1aXJlZEZpZWxkcycpO1xyXG4gICAgICB0aGlzLnZhbGlkLmVtaXQoZmFsc2UpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MS5pc0JyYW5jaCAmJlxyXG4gICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnZhbHVlID09IHVuZGVmaW5lZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpQbGVhc2VTZWxlY3RCcmFuY2gnKTtcclxuICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5wYXJhbXNHZW5lcmFsRHRvUGFydDEuaXNCcmFuY2gpIHtcclxuICAgICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZShudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICAvLyB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmluZm8oJ2VEb251c3VtOjpUcmFuc2FjdGlvblN0YXJ0ZWQnKTtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgY29uc3QgcmVxdWVzdCA9IHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0b1xyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoXHJcbiAgICAgICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8ucGFyYW1zSW50ZWdyYXRvci5pZCxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgLi4udGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZSxcclxuICAgICAgICAgIH1cclxuICAgICAgICApXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlKTtcclxuXHJcbiAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbm5lY3Rpb25UZXN0KCk7XHJcblxyXG4gICAgaWYgKCFyZXNwb25zZSkgcmV0dXJuO1xyXG5cclxuICAgIHJlcXVlc3RcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIHRhcCgoKSA9PiB7fSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcygnZURvbnVzdW06OlRyYW5zYWN0aW9uU3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0UGFyYW1zSW50ZWdyYXRvcihcclxuICAgICAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgICAgIHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0bz8uYnJhbmNoXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8uYnJhbmNoLmlkXHJcbiAgICAgICAgICAgICAgOiAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJ1xyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnZhbGlkLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OlRyYW5zYWN0aW9uVW5zdWNjZXNzZnVsJyk7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRQYXJhbXNJbnRlZ3JhdG9yKGJ1aWxkRm9ybTogYm9vbGVhbiA9IGZhbHNlLCBicmFuY2hJZCkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICB0aGlzLmhpdFBhcmFtc0ludGVncmF0b3JzU2VydmljZS5nZXRQYXJhbXNJbnRlZ3JhdG9yKGJyYW5jaElkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8gPSBkYXRhO1xyXG5cclxuICAgICAgaWYgKGJ1aWxkRm9ybSkgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQuc2V0VmFsdWUoYnJhbmNoSWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VkQnJhbmNoKGRhdGE6IFBhcmFtc0dlbmVyYWxEdG8pIHtcclxuICAgIHRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxID0gZGF0YTtcclxuXHJcbiAgICBpZiAoIWRhdGE/LmlzQnJhbmNoKSB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IodHJ1ZSwgJycpO1xyXG4gIH1cclxuXHJcbiAgYnJhbmNoT25DaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IodHJ1ZSwgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBjb25uZWN0aW9uVGVzdCgpIHtcclxuICAvLyAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnZhbHVlID09ICcnKVxyXG4gIC8vICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKCcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKTtcclxuXHJcbiAgLy8gICBsZXQgcmVxdWVzdCA9IHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IudmFsdWU7XHJcblxyXG4gIC8vICAgdGhpcy5oaXRFbnRlZ3JhdG9yc1NlcnZpY2UuY29ubmVjdGlvblRlc3QocmVxdWVzdCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gIC8vICAgICB0aGlzLnZhbGlkLmVtaXQoZGF0YSk7XHJcblxyXG4gIC8vICAgICByZXR1cm4gZGF0YTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgY29ubmVjdGlvblRlc3QoKSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkPy52YWx1ZSA9PSAnJylcclxuICAgICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZSgnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJyk7XHJcblxyXG4gICAgbGV0IHJlcXVlc3QgPSB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmhpdEVudGVncmF0b3JzU2VydmljZS5jb25uZWN0aW9uVGVzdChyZXF1ZXN0KS50aGVuKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpDb25uZWN0aW9uU3VjY2Vzc2Z1bCcpO1xyXG5cclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKGRhdGEubWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1zSW50ZWdyYXRvclwiIGlkPVwicGFyYW1zLWludGVncmF0b3JcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwicGFyYW1zR2VuZXJhbER0b1BhcnQxPy5pc0JyYW5jaFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWJyYW5jaC1pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpCcmFuY2gnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhYnAtbG9va3VwLXNlbGVjdCBjaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1icmFuY2gtaWRcIiBmb3JtQ29udHJvbE5hbWU9XCJicmFuY2hJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0Rm5dPVwic2VydmljZS5nZXRCcmFuY2hMb29rdXBcIiAoY2hhbmdlKT1cImJyYW5jaE9uQ2hhbmdlKClcIj48L2FicC1sb29rdXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3Itc2VydmljZS11c2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlcnZpY2VVc2VyJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXVzZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJzZXJ2aWNlVXNlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCIgYXV0b2ZvY3VzIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlcnZpY2VQYXNzd29yZCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3Itc2VydmljZS1wYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VQYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjY0XCIgdHlwZT1cInBhc3N3b3JkXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFSW52b2ljZUdCTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlSW52b2ljZUdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtcGtsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFSW52b2ljZVBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlSW52b2ljZVBLTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLWdibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RURpc3BhdGNoR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlRGlzcGF0Y2hHQkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkaXNwYXRjaC1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVEaXNwYXRjaFBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkaXNwYXRjaC1wa2xhYmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZURpc3BhdGNoUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLWdibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RUFyY2hpdmVHQkxhYmVsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1nYmxhYmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZUFyY2hpdmVHQkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLXBrbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RUFyY2hpdmVQS0xhYmVsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1wa2xhYmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZUFyY2hpdmVQS0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiB0ZXh0LWxnLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtZS0yXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJjb25uZWN0aW9uVGVzdEJ1dHRvbkRpc2FibGVkXCIgKGNsaWNrKT1cImNvbm5lY3Rpb25UZXN0KClcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICdlRG9udXN1bTo6Q29ubmVjdGlvblRlc3QnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIGJ1dHRvblR5cGU9XCJzdWJtaXRcIiBmb3JtTmFtZT1cInBhcmFtcy1pbnRlZ3JhdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3VibWl0QnV0dG9uRGlzYWJsZWRcIiBbaGlkZGVuXT1cIklzU3VibWl0QnV0dG9uSGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9hYnAtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=