@hitsoft/e-donusum 100.1.10-Edo-Test → 100.1.11-Edo-Test

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.
@@ -3,7 +3,6 @@ import { DateAdapter } from '@abp/ng.theme.shared/extensions';
3
3
  import { ChangeDetectionStrategy, Component, EventEmitter, Injectable, Input, Output, } from '@angular/core';
4
4
  import { Validators } from '@angular/forms';
5
5
  import { NgbDateAdapter } from '@ng-bootstrap/ng-bootstrap';
6
- import { finalize } from 'rxjs';
7
6
  import * as i0 from "@angular/core";
8
7
  import * as i1 from "@abp/ng.core";
9
8
  import * as i2 from "../../proxy/params-integrators";
@@ -69,26 +68,52 @@ export class HitParamsIntegratorComponent {
69
68
  this.valid.emit(false);
70
69
  return;
71
70
  }
72
- this.formParamsIntegrator.controls.branchId.setValue(null);
73
71
  this.submitButtonDisabled = true;
74
- const request = this.paramsIntegratorDtoWithNavigationPropertiesDto
72
+ try {
73
+ const saved = await this.saveParamsIntegrator();
74
+ if (!saved) {
75
+ this.valid.emit(false);
76
+ return;
77
+ }
78
+ const testResult = await this.runConnectionTest();
79
+ this.valid.emit(testResult);
80
+ }
81
+ finally {
82
+ this.submitButtonDisabled = false;
83
+ }
84
+ }
85
+ saveParamsIntegrator() {
86
+ this.formParamsIntegrator.controls.branchId.setValue(null);
87
+ const request$ = this.paramsIntegratorDtoWithNavigationPropertiesDto
75
88
  ? this.service.update(this.paramsIntegratorDtoWithNavigationPropertiesDto.paramsIntegrator.id, {
76
89
  ...this.formParamsIntegrator.value,
77
90
  })
78
91
  : this.service.create(this.formParamsIntegrator.value);
79
- request
80
- .pipe(finalize(() => {
81
- this.submitButtonDisabled = false;
82
- }))
83
- .subscribe(async () => {
84
- await this.getParamsIntegrator(false, this.paramsIntegratorDtoWithNavigationPropertiesDto?.branch
85
- ? this.paramsIntegratorDtoWithNavigationPropertiesDto.branch.id
86
- : '00000000-0000-0000-0000-000000000000');
87
- const testResult = await this.connectionTest();
88
- this.valid.emit(testResult);
89
- }, err => {
90
- this.toasterService.error('eDonusum::TransactionUnsuccessful');
91
- this.valid.emit(false);
92
+ return new Promise((resolve) => {
93
+ request$.subscribe(async () => {
94
+ await this.getParamsIntegrator(false, this.paramsIntegratorDtoWithNavigationPropertiesDto?.branch
95
+ ? this.paramsIntegratorDtoWithNavigationPropertiesDto.branch.id
96
+ : '00000000-0000-0000-0000-000000000000');
97
+ resolve(true);
98
+ }, () => {
99
+ this.toasterService.error('eDonusum::TransactionUnsuccessful');
100
+ resolve(false);
101
+ });
102
+ });
103
+ }
104
+ async runConnectionTest() {
105
+ const request = this.formParamsIntegrator.value;
106
+ return await this.hitEntegratorsService.connectionTest(request).then(data => {
107
+ if (data) {
108
+ this.toasterService.success('eDonusum::ConnectionSuccessful');
109
+ return true;
110
+ }
111
+ else {
112
+ this.toasterService.error(data?.message);
113
+ return false;
114
+ }
115
+ }).catch(() => {
116
+ return false;
92
117
  });
93
118
  }
94
119
  async getParamsIntegrator(buildForm = false, branchId) {
@@ -124,24 +149,16 @@ export class HitParamsIntegratorComponent {
124
149
  return false;
125
150
  }
126
151
  this.connectionTestButtonDisabled = true;
127
- if (this.formParamsIntegrator.controls.branchId?.value == '')
128
- this.formParamsIntegrator.controls.branchId.setValue('00000000-0000-0000-0000-000000000000');
129
- let request = this.formParamsIntegrator.value;
130
- return await this.hitEntegratorsService.connectionTest(request).then(data => {
131
- this.connectionTestButtonDisabled = false;
132
- this.submitButtonDisabled = false;
133
- if (data) {
134
- this.toasterService.success('eDonusum::ConnectionSuccessful');
135
- return true;
136
- }
137
- else {
138
- this.toasterService.error(data.message);
152
+ try {
153
+ const saved = await this.saveParamsIntegrator();
154
+ if (!saved)
139
155
  return false;
140
- }
141
- }).finally(() => {
156
+ return await this.runConnectionTest();
157
+ }
158
+ finally {
142
159
  this.connectionTestButtonDisabled = false;
143
160
  this.submitButtonDisabled = false;
144
- });
161
+ }
145
162
  }
146
163
  }
147
164
  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 });
@@ -162,4 +179,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
162
179
  }], valid: [{
163
180
  type: Output
164
181
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9ycy9oaXQtcGFyYW1zLWludGVncmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFFOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFrQmhDLE1BQU0sT0FBTyw0QkFBNEI7SUFtQnZDLFlBQ2tCLElBQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLE9BQWdDLEVBQ3hDLFlBQWlDLEVBQ2pDLEVBQWUsRUFDTiwyQkFBd0QsRUFDeEQsY0FBOEIsRUFDOUIscUJBQTRDO1FBUDdDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDeEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLE9B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Q0FBQyxPQUFPLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztnQkFFOUQsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRXhDLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLDRCQUE0QixHQUFHLEtBQUssQ0FBQztZQUMxQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7eUhBcE1VLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHVMQVA1QixDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDLDBCQzFCOUUsMHdUQXlLTTs2SER4SU8sNEJBQTRCLGNBRjNCLE1BQU07MkZBRVAsNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNFLHVCQUF1QixtQkFDaEIsdUJBQXVCLENBQUMsT0FBTyxhQUNyQyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDOztrQkFJN0UsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTSxFQUFFLDRCQUE0QjtpQkFDakQ7NFVBY1UscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBQlAsIGRvd25sb2FkQmxvYiwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIFRvYXN0ZXJTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkL2V4dGVuc2lvbnMnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiRGF0ZUFkYXB0ZXIgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEhpdFBhcmFtc0ludGVncmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBQYXJhbXNJbnRlZ3JhdG9yU2VydmljZSxcclxuICBQYXJhbXNJbnRlZ3JhdG9yV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvLFxyXG59IGZyb20gJy4uLy4uL3Byb3h5L3BhcmFtcy1pbnRlZ3JhdG9ycyc7XHJcbmltcG9ydCB7IFBhcmFtc0dlbmVyYWxEdG8gfSBmcm9tICcuLi8uLi9wcm94eS9wYXJhbXMtZ2VuZXJhbHMnO1xyXG5pbXBvcnQgeyBIaXRFbnRlZ3JhdG9yc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9oaXQtcHJveHkvaGl0LWVudGVncmF0b3JzL2hpdC1lbnRlZ3JhdG9yLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hpdC1wYXJhbXMtaW50ZWdyYXRvcicsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7IHByb3ZpZGU6IE5nYkRhdGVBZGFwdGVyLCB1c2VDbGFzczogRGF0ZUFkYXB0ZXIgfV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbXSxcclxufSlcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JywgLy8gU2VydmlzIGdpYmkgZ2xvYmFsIHNhxJ9sYXJcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdFBhcmFtc0ludGVncmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgVVJMX1BBVFRFUk4gPSAvXihodHRwcz86XFwvXFwvKShbXFx3LV0rXFwuKStbXFx3LV17Mix9KFs6XFwvPyNdW15cXHNdKik/JC87XHJcblxyXG4gIGZvcm1QYXJhbXNJbnRlZ3JhdG9yOiBGb3JtR3JvdXA7XHJcblxyXG4gIHBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/OiBQYXJhbXNJbnRlZ3JhdG9yV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvO1xyXG5cclxuICBzdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuXHJcbiAgc2NlbmFyaW9UeXBlRGF0YVNvdXJjZTogYW55O1xyXG4gIGRvY3VtZW50VHlwZURhdGFTb3VyY2U6IGFueTtcclxuXHJcbiAgQElucHV0KCkgcGFyYW1zR2VuZXJhbER0b1BhcnQxOiBQYXJhbXNHZW5lcmFsRHRvO1xyXG5cclxuICBASW5wdXQoKSBJc1N1Ym1pdEJ1dHRvbkhpZGRlbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBQYXJhbXNJbnRlZ3JhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdFBhcmFtc0ludGVncmF0b3JzU2VydmljZTogSGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpdEVudGVncmF0b3JzU2VydmljZTogSGl0RW50ZWdyYXRvcnNTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG5cclxuICAgIHRoaXMuZ2V0UGFyYW1zSW50ZWdyYXRvcih0cnVlLCAnJyk7XHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlcnZpY2VVc2VyLFxyXG4gICAgICBzZXJ2aWNlUGFzc3dvcmQsXHJcbiAgICAgIGVJbnZvaWNlR0JMYWJlbCxcclxuICAgICAgZUludm9pY2VQS0xhYmVsLFxyXG4gICAgICBlRGlzcGF0Y2hHQkxhYmVsLFxyXG4gICAgICBlRGlzcGF0Y2hQS0xhYmVsLFxyXG4gICAgICBlQXJjaGl2ZUdCTGFiZWwsXHJcbiAgICAgIGVBcmNoaXZlUEtMYWJlbCxcclxuICAgICAgZW1tR0JMYWJlbCxcclxuICAgICAgZW1tUEtMYWJlbCxcclxuICAgICAgZUludm9pY2VBcGlVcmwsXHJcbiAgICAgIGVEZXNwYXRjaEFwaVVybCxcclxuICAgICAgZUFyY2hpdmVBcGlVcmwsXHJcbiAgICAgIGVtbUFwaVVybCxcclxuICAgICAgYnJhbmNoSWQsXHJcbiAgICB9ID0gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvPy5wYXJhbXNJbnRlZ3JhdG9yIHx8IHt9O1xyXG5cclxuICAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IgPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgc2VydmljZVVzZXI6IFtzZXJ2aWNlVXNlciA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNjQpXV0sXHJcbiAgICAgIHNlcnZpY2VQYXNzd29yZDogW3NlcnZpY2VQYXNzd29yZCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNjQpXV0sXHJcbiAgICAgIGVJbnZvaWNlR0JMYWJlbDogW2VJbnZvaWNlR0JMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICBlSW52b2ljZVBLTGFiZWw6IFtlSW52b2ljZVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgZURpc3BhdGNoR0JMYWJlbDogW1xyXG4gICAgICAgIGVEaXNwYXRjaEdCTGFiZWwgPz8gbnVsbCxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV0sXHJcbiAgICAgIF0sXHJcbiAgICAgIGVEaXNwYXRjaFBLTGFiZWw6IFtcclxuICAgICAgICBlRGlzcGF0Y2hQS0xhYmVsID8/IG51bGwsXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildLFxyXG4gICAgICBdLFxyXG4gICAgICAvLyBlQXJjaGl2ZUdCTGFiZWw6IFtlQXJjaGl2ZUdCTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZUFyY2hpdmVQS0xhYmVsOiBbZUFyY2hpdmVQS0xhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIC8vIGVtbUdCTGFiZWw6IFtlbW1HQkxhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIC8vIGVtbVBLTGFiZWw6IFtlbW1QS0xhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIGVJbnZvaWNlQXBpVXJsOiBbZUludm9pY2VBcGlVcmwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMiksIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlVSTF9QQVRURVJOKV1dLFxyXG4gICAgICBlRGVzcGF0Y2hBcGlVcmw6IFtlRGVzcGF0Y2hBcGlVcmwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMiksIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlVSTF9QQVRURVJOKV1dLFxyXG4gICAgICBlQXJjaGl2ZUFwaVVybDogW2VBcmNoaXZlQXBpVXJsID8/IG51bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg1MTIpLCBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5VUkxfUEFUVEVSTildXSxcclxuICAgICAgZW1tQXBpVXJsOiBbZW1tQXBpVXJsID8/IG51bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg1MTIpLCBWYWxpZGF0b3JzLnBhdHRlcm4odGhpcy5VUkxfUEFUVEVSTildXSxcclxuICAgICAgYnJhbmNoSWQ6IFticmFuY2hJZCA/PyBudWxsLCBbXV0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHN1Ym1pdEZvcm0oKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5pbnZhbGlkKSB7XHJcbiAgICAgIHdpbmRvdy5zY3JvbGwoe1xyXG4gICAgICAgIHRvcDogMCxcclxuICAgICAgICBsZWZ0OiAwLFxyXG4gICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6RmlsbFJlcXVpcmVkRmllbGRzJyk7XHJcbiAgICAgIHRoaXMudmFsaWQuZW1pdChmYWxzZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKG51bGwpO1xyXG5cclxuICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG9cclxuICAgICAgPyB0aGlzLnNlcnZpY2UudXBkYXRlKFxyXG4gICAgICAgIHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0by5wYXJhbXNJbnRlZ3JhdG9yLmlkLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLnRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IudmFsdWUsXHJcbiAgICAgICAgfVxyXG4gICAgICApXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlKTtcclxuXHJcbiAgICByZXF1ZXN0XHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKFxyXG4gICAgICAgICAgICBmYWxzZSxcclxuICAgICAgICAgICAgdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvPy5icmFuY2hcclxuICAgICAgICAgICAgICA/IHRoaXMucGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0by5icmFuY2guaWRcclxuICAgICAgICAgICAgICA6ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGNvbnN0IHRlc3RSZXN1bHQgPSBhd2FpdCB0aGlzLmNvbm5lY3Rpb25UZXN0KCk7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkLmVtaXQodGVzdFJlc3VsdCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OlRyYW5zYWN0aW9uVW5zdWNjZXNzZnVsJyk7XHJcblxyXG4gICAgICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRQYXJhbXNJbnRlZ3JhdG9yKGJ1aWxkRm9ybTogYm9vbGVhbiA9IGZhbHNlLCBicmFuY2hJZCkge1xyXG4gICAgZGVidWdnZXI7XHJcbiAgICB0aGlzLmhpdFBhcmFtc0ludGVncmF0b3JzU2VydmljZS5nZXRQYXJhbXNJbnRlZ3JhdG9yKGJyYW5jaElkKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8gPSBkYXRhO1xyXG5cclxuICAgICAgaWYgKGJ1aWxkRm9ybSkgdGhpcy5idWlsZEZvcm0oKTtcclxuXHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQuc2V0VmFsdWUoYnJhbmNoSWQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VkQnJhbmNoKGRhdGE6IFBhcmFtc0dlbmVyYWxEdG8pIHtcclxuICAgIHRoaXMucGFyYW1zR2VuZXJhbER0b1BhcnQxID0gZGF0YTtcclxuXHJcbiAgICBpZiAoIWRhdGE/LmlzQnJhbmNoKSB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IodHJ1ZSwgJycpO1xyXG4gIH1cclxuXHJcbiAgYnJhbmNoT25DaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IodHJ1ZSwgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvLyBjb25uZWN0aW9uVGVzdCgpIHtcclxuICAvLyAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnZhbHVlID09ICcnKVxyXG4gIC8vICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKCcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKTtcclxuXHJcbiAgLy8gICBsZXQgcmVxdWVzdCA9IHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IudmFsdWU7XHJcblxyXG4gIC8vICAgdGhpcy5oaXRFbnRlZ3JhdG9yc1NlcnZpY2UuY29ubmVjdGlvblRlc3QocmVxdWVzdCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gIC8vICAgICB0aGlzLnZhbGlkLmVtaXQoZGF0YSk7XHJcblxyXG4gIC8vICAgICByZXR1cm4gZGF0YTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgY29ubmVjdGlvblRlc3QoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5pbnZhbGlkKSB7XHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpGaWxsUmVxdWlyZWRGaWVsZHMnKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29ubmVjdGlvblRlc3RCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQ/LnZhbHVlID09ICcnKVxyXG4gICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKCcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKTtcclxuXHJcbiAgICBsZXQgcmVxdWVzdCA9IHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IudmFsdWU7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuaGl0RW50ZWdyYXRvcnNTZXJ2aWNlLmNvbm5lY3Rpb25UZXN0KHJlcXVlc3QpLnRoZW4oZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvblRlc3RCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdlRG9udXN1bTo6Q29ubmVjdGlvblN1Y2Nlc3NmdWwnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihkYXRhLm1lc3NhZ2UpO1xyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1zSW50ZWdyYXRvclwiIGlkPVwicGFyYW1zLWludGVncmF0b3JcIiAobmdTdWJtaXQpPVwic3VibWl0Rm9ybSgpXCIgdmFsaWRhdGVPblN1Ym1pdD5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJwYXJhbXNHZW5lcmFsRHRvUGFydDE/LmlzQnJhbmNoXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItYnJhbmNoLWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkJyYW5jaCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGFicC1sb29rdXAtc2VsZWN0IGNpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWJyYW5jaC1pZFwiIGZvcm1Db250cm9sTmFtZT1cImJyYW5jaElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtnZXRGbl09XCJzZXJ2aWNlLmdldEJyYW5jaExvb2t1cFwiIChjaGFuZ2UpPVwiYnJhbmNoT25DaGFuZ2UoKVwiPjwvYWJwLWxvb2t1cC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3Itc2VydmljZS11c2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlcnZpY2VVc2VyJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXVzZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJzZXJ2aWNlVXNlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjY0XCIgYXV0b2ZvY3VzIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXBhc3N3b3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OlNlcnZpY2VQYXNzd29yZCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3Itc2VydmljZS1wYXNzd29yZFwiIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VQYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjY0XCIgdHlwZT1cInBhc3N3b3JkXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFSW52b2ljZUdCTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlSW52b2ljZUdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtcGtsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFSW52b2ljZVBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlSW52b2ljZVBLTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLWdibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RURpc3BhdGNoR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlRGlzcGF0Y2hHQkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkaXNwYXRjaC1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVEaXNwYXRjaFBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkaXNwYXRjaC1wa2xhYmVsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZURpc3BhdGNoUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1hcGktdXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVJbnZvaWNlQXBpVXJsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtYXBpLXVybFwiIGZvcm1Db250cm9sTmFtZT1cImVJbnZvaWNlQXBpVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZUludm9pY2VBcGlVcmwnKT8uaW52YWxpZCAmJiAoZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlSW52b2ljZUFwaVVybCcpPy50b3VjaGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZUludm9pY2VBcGlVcmwnKT8uZGlydHkpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyAnZURvbnVzdW06OkludmFsaWRVcmxGb3JtYXQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGVzcGF0Y2gtYXBpLXVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFRGVzcGF0Y2hBcGlVcmwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGVzcGF0Y2gtYXBpLXVybFwiIGZvcm1Db250cm9sTmFtZT1cImVEZXNwYXRjaEFwaVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjUxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VEZXNwYXRjaEFwaVVybCcpPy5pbnZhbGlkICYmIChmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VEZXNwYXRjaEFwaVVybCcpPy50b3VjaGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZURlc3BhdGNoQXBpVXJsJyk/LmRpcnR5KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sgJ2VEb251c3VtOjpJbnZhbGlkVXJsRm9ybWF0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtYXBpLXVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFQXJjaGl2ZUFwaVVybCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLWFwaS11cmxcIiBmb3JtQ29udHJvbE5hbWU9XCJlQXJjaGl2ZUFwaVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjUxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VBcmNoaXZlQXBpVXJsJyk/LmludmFsaWQgJiYgKGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZUFyY2hpdmVBcGlVcmwnKT8udG91Y2hlZCB8fCBmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VBcmNoaXZlQXBpVXJsJyk/LmRpcnR5KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sgJ2VEb251c3VtOjpJbnZhbGlkVXJsRm9ybWF0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZW1tLWFwaS11cmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RW1tQXBpVXJsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZW1tLWFwaS11cmxcIiBmb3JtQ29udHJvbE5hbWU9XCJlbW1BcGlVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI1MTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlbW1BcGlVcmwnKT8uaW52YWxpZCAmJiAoZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlbW1BcGlVcmwnKT8udG91Y2hlZCB8fCBmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VtbUFwaVVybCcpPy5kaXJ0eSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7ICdlRG9udXN1bTo6SW52YWxpZFVybEZvcm1hdCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFQXJjaGl2ZUdCTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLWdibGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlQXJjaGl2ZUdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtcGtsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFQXJjaGl2ZVBLTGFiZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVhcmNoaXZlLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlQXJjaGl2ZVBLTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtbGctZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1lLTJcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29ubmVjdGlvblRlc3RCdXR0b25EaXNhYmxlZCB8fCBmb3JtUGFyYW1zSW50ZWdyYXRvci5pbnZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29ubmVjdGlvblRlc3QoKVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgJ2VEb251c3VtOjpDb25uZWN0aW9uVGVzdCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCIgYnV0dG9uVHlwZT1cInN1Ym1pdFwiIGZvcm1OYW1lPVwicGFyYW1zLWludGVncmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXRCdXR0b25EaXNhYmxlZCB8fCBmb3JtUGFyYW1zSW50ZWdyYXRvci5pbnZhbGlkXCIgW2hpZGRlbl09XCJJc1N1Ym1pdEJ1dHRvbkhpZGRlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdBYnBVaTo6U2F2ZScgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgIDwvYWJwLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
182
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2UtZG9udXN1bS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9ycy9oaXQtcGFyYW1zLWludGVncmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZS1kb251c3VtL3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFyYW1zLWludGVncmF0b3JzL2hpdC1wYXJhbXMtaW50ZWdyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFdBQVcsRUFBa0MsTUFBTSxjQUFjLENBQUM7QUFFOUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7O0FBa0I1RCxNQUFNLE9BQU8sNEJBQTRCO0lBbUJ2QyxZQUNrQixJQUFpQixFQUNqQixLQUFxQixFQUNyQixPQUFnQyxFQUN4QyxZQUFpQyxFQUNqQyxFQUFlLEVBQ04sMkJBQXdELEVBQ3hELGNBQThCLEVBQzlCLHFCQUE0QztRQVA3QyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFlBQU8sR0FBUCxPQUFPLENBQXlCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ04sZ0NBQTJCLEdBQTNCLDJCQUEy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ImltcG9ydCB7IEFCUCwgZG93bmxvYWRCbG9iLCBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8sIFRyYWNrQnlTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbmplY3RhYmxlLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JEYXRlQWRhcHRlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgSGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1wYXJhbXMtaW50ZWdyYXRvcnMvaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFBhcmFtc0ludGVncmF0b3JTZXJ2aWNlLFxyXG4gIFBhcmFtc0ludGVncmF0b3JXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8sXHJcbn0gZnJvbSAnLi4vLi4vcHJveHkvcGFyYW1zLWludGVncmF0b3JzJztcclxuaW1wb3J0IHsgUGFyYW1zR2VuZXJhbER0byB9IGZyb20gJy4uLy4uL3Byb3h5L3BhcmFtcy1nZW5lcmFscyc7XHJcbmltcG9ydCB7IEhpdEVudGVncmF0b3JzU2VydmljZSB9IGZyb20gJy4uLy4uL2hpdC1wcm94eS9oaXQtZW50ZWdyYXRvcnMvaGl0LWVudGVncmF0b3Iuc2VydmljZSc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaGl0LXBhcmFtcy1pbnRlZ3JhdG9yJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHsgcHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlciB9XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LXBhcmFtcy1pbnRlZ3JhdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZXM6IFtdLFxyXG59KVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLCAvLyBTZXJ2aXMgZ2liaSBnbG9iYWwgc2HEn2xhclxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0UGFyYW1zSW50ZWdyYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBVUkxfUEFUVEVSTiA9IC9eKGh0dHBzPzpcXC9cXC8pKFtcXHctXStcXC4pK1tcXHctXXsyLH0oWzpcXC8/I11bXlxcc10qKT8kLztcclxuXHJcbiAgZm9ybVBhcmFtc0ludGVncmF0b3I6IEZvcm1Hcm91cDtcclxuXHJcbiAgcGFyYW1zSW50ZWdyYXRvckR0b1dpdGhOYXZpZ2F0aW9uUHJvcGVydGllc0R0bz86IFBhcmFtc0ludGVncmF0b3JXaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG87XHJcblxyXG4gIHN1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgY29ubmVjdGlvblRlc3RCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICBzY2VuYXJpb1R5cGVEYXRhU291cmNlOiBhbnk7XHJcbiAgZG9jdW1lbnRUeXBlRGF0YVNvdXJjZTogYW55O1xyXG5cclxuICBASW5wdXQoKSBwYXJhbXNHZW5lcmFsRHRvUGFydDE6IFBhcmFtc0dlbmVyYWxEdG87XHJcblxyXG4gIEBJbnB1dCgpIElzU3VibWl0QnV0dG9uSGlkZGVuID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdDogTGlzdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHJhY2s6IFRyYWNrQnlTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFBhcmFtc0ludGVncmF0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0UGFyYW1zSW50ZWdyYXRvcnNTZXJ2aWNlOiBIaXRQYXJhbXNJbnRlZ3JhdG9yc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGl0RW50ZWdyYXRvcnNTZXJ2aWNlOiBIaXRFbnRlZ3JhdG9yc1NlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsICcnKTtcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VydmljZVVzZXIsXHJcbiAgICAgIHNlcnZpY2VQYXNzd29yZCxcclxuICAgICAgZUludm9pY2VHQkxhYmVsLFxyXG4gICAgICBlSW52b2ljZVBLTGFiZWwsXHJcbiAgICAgIGVEaXNwYXRjaEdCTGFiZWwsXHJcbiAgICAgIGVEaXNwYXRjaFBLTGFiZWwsXHJcbiAgICAgIGVBcmNoaXZlR0JMYWJlbCxcclxuICAgICAgZUFyY2hpdmVQS0xhYmVsLFxyXG4gICAgICBlbW1HQkxhYmVsLFxyXG4gICAgICBlbW1QS0xhYmVsLFxyXG4gICAgICBlSW52b2ljZUFwaVVybCxcclxuICAgICAgZURlc3BhdGNoQXBpVXJsLFxyXG4gICAgICBlQXJjaGl2ZUFwaVVybCxcclxuICAgICAgZW1tQXBpVXJsLFxyXG4gICAgICBicmFuY2hJZCxcclxuICAgIH0gPSB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/LnBhcmFtc0ludGVncmF0b3IgfHwge307XHJcblxyXG4gICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvciA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBzZXJ2aWNlVXNlcjogW3NlcnZpY2VVc2VyID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcclxuICAgICAgc2VydmljZVBhc3N3b3JkOiBbc2VydmljZVBhc3N3b3JkID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg2NCldXSxcclxuICAgICAgZUludm9pY2VHQkxhYmVsOiBbZUludm9pY2VHQkxhYmVsID8/IG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXV0sXHJcbiAgICAgIGVJbnZvaWNlUEtMYWJlbDogW2VJbnZvaWNlUEtMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICBlRGlzcGF0Y2hHQkxhYmVsOiBbXHJcbiAgICAgICAgZURpc3BhdGNoR0JMYWJlbCA/PyBudWxsLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXSxcclxuICAgICAgXSxcclxuICAgICAgZURpc3BhdGNoUEtMYWJlbDogW1xyXG4gICAgICAgIGVEaXNwYXRjaFBLTGFiZWwgPz8gbnVsbCxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV0sXHJcbiAgICAgIF0sXHJcbiAgICAgIC8vIGVBcmNoaXZlR0JMYWJlbDogW2VBcmNoaXZlR0JMYWJlbCA/PyBudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMjU2KV1dLFxyXG4gICAgICAvLyBlQXJjaGl2ZVBLTGFiZWw6IFtlQXJjaGl2ZVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZW1tR0JMYWJlbDogW2VtbUdCTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgLy8gZW1tUEtMYWJlbDogW2VtbVBLTGFiZWwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildXSxcclxuICAgICAgZUludm9pY2VBcGlVcmw6IFtlSW52b2ljZUFwaVVybCA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuVVJMX1BBVFRFUk4pXV0sXHJcbiAgICAgIGVEZXNwYXRjaEFwaVVybDogW2VEZXNwYXRjaEFwaVVybCA/PyBudWxsLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTEyKSwgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuVVJMX1BBVFRFUk4pXV0sXHJcbiAgICAgIGVBcmNoaXZlQXBpVXJsOiBbZUFyY2hpdmVBcGlVcmwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMiksIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlVSTF9QQVRURVJOKV1dLFxyXG4gICAgICBlbW1BcGlVcmw6IFtlbW1BcGlVcmwgPz8gbnVsbCwgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDUxMiksIFZhbGlkYXRvcnMucGF0dGVybih0aGlzLlVSTF9QQVRURVJOKV1dLFxyXG4gICAgICBicmFuY2hJZDogW2JyYW5jaElkID8/IG51bGwsIFtdXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc3VibWl0Rm9ybSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmludmFsaWQpIHtcclxuICAgICAgd2luZG93LnNjcm9sbCh7XHJcbiAgICAgICAgdG9wOiAwLFxyXG4gICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoJ2VEb251c3VtOjpGaWxsUmVxdWlyZWRGaWVsZHMnKTtcclxuICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgdGhpcy5zYXZlUGFyYW1zSW50ZWdyYXRvcigpO1xyXG4gICAgICBpZiAoIXNhdmVkKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZC5lbWl0KGZhbHNlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHRlc3RSZXN1bHQgPSBhd2FpdCB0aGlzLnJ1bkNvbm5lY3Rpb25UZXN0KCk7XHJcbiAgICAgIHRoaXMudmFsaWQuZW1pdCh0ZXN0UmVzdWx0KTtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2F2ZVBhcmFtc0ludGVncmF0b3IoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKG51bGwpO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3QkID0gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvXHJcbiAgICAgID8gdGhpcy5zZXJ2aWNlLnVwZGF0ZShcclxuICAgICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8ucGFyYW1zSW50ZWdyYXRvci5pZCxcclxuICAgICAgICB7XHJcbiAgICAgICAgICAuLi50aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlLFxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgICA6IHRoaXMuc2VydmljZS5jcmVhdGUodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZSk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHJlcXVlc3QkLnN1YnNjcmliZShcclxuICAgICAgICBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLmdldFBhcmFtc0ludGVncmF0b3IoXHJcbiAgICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgICB0aGlzLnBhcmFtc0ludGVncmF0b3JEdG9XaXRoTmF2aWdhdGlvblByb3BlcnRpZXNEdG8/LmJyYW5jaFxyXG4gICAgICAgICAgICAgID8gdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvLmJyYW5jaC5pZFxyXG4gICAgICAgICAgICAgIDogJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcignZURvbnVzdW06OlRyYW5zYWN0aW9uVW5zdWNjZXNzZnVsJyk7XHJcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgcnVuQ29ubmVjdGlvblRlc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci52YWx1ZTtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5oaXRFbnRlZ3JhdG9yc1NlcnZpY2UuY29ubmVjdGlvblRlc3QocmVxdWVzdCkudGhlbihkYXRhID0+IHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoJ2VEb251c3VtOjpDb25uZWN0aW9uU3VjY2Vzc2Z1bCcpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoZGF0YT8ubWVzc2FnZSk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UGFyYW1zSW50ZWdyYXRvcihidWlsZEZvcm06IGJvb2xlYW4gPSBmYWxzZSwgYnJhbmNoSWQpIHtcclxuICAgIGRlYnVnZ2VyO1xyXG4gICAgdGhpcy5oaXRQYXJhbXNJbnRlZ3JhdG9yc1NlcnZpY2UuZ2V0UGFyYW1zSW50ZWdyYXRvcihicmFuY2hJZCkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICBkZWJ1Z2dlcjtcclxuICAgICAgdGhpcy5wYXJhbXNJbnRlZ3JhdG9yRHRvV2l0aE5hdmlnYXRpb25Qcm9wZXJ0aWVzRHRvID0gZGF0YTtcclxuXHJcbiAgICAgIGlmIChidWlsZEZvcm0pIHRoaXMuYnVpbGRGb3JtKCk7XHJcblxyXG4gICAgICB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLmNvbnRyb2xzLmJyYW5jaElkLnNldFZhbHVlKGJyYW5jaElkKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlZEJyYW5jaChkYXRhOiBQYXJhbXNHZW5lcmFsRHRvKSB7XHJcbiAgICB0aGlzLnBhcmFtc0dlbmVyYWxEdG9QYXJ0MSA9IGRhdGE7XHJcblxyXG4gICAgaWYgKCFkYXRhPy5pc0JyYW5jaCkgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsICcnKTtcclxuICB9XHJcblxyXG4gIGJyYW5jaE9uQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5nZXRQYXJhbXNJbnRlZ3JhdG9yKHRydWUsIHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuY29udHJvbHMuYnJhbmNoSWQudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLy8gY29ubmVjdGlvblRlc3QoKSB7XHJcbiAgLy8gICBpZiAodGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC52YWx1ZSA9PSAnJylcclxuICAvLyAgICAgdGhpcy5mb3JtUGFyYW1zSW50ZWdyYXRvci5jb250cm9scy5icmFuY2hJZC5zZXRWYWx1ZSgnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJyk7XHJcblxyXG4gIC8vICAgbGV0IHJlcXVlc3QgPSB0aGlzLmZvcm1QYXJhbXNJbnRlZ3JhdG9yLnZhbHVlO1xyXG5cclxuICAvLyAgIHRoaXMuaGl0RW50ZWdyYXRvcnNTZXJ2aWNlLmNvbm5lY3Rpb25UZXN0KHJlcXVlc3QpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAvLyAgICAgdGhpcy52YWxpZC5lbWl0KGRhdGEpO1xyXG5cclxuICAvLyAgICAgcmV0dXJuIGRhdGE7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIGFzeW5jIGNvbm5lY3Rpb25UZXN0KCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtc0ludGVncmF0b3IuaW52YWxpZCkge1xyXG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKCdlRG9udXN1bTo6RmlsbFJlcXVpcmVkRmllbGRzJyk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb25UZXN0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgdGhpcy5zYXZlUGFyYW1zSW50ZWdyYXRvcigpO1xyXG4gICAgICBpZiAoIXNhdmVkKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5Db25uZWN0aW9uVGVzdCgpO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5jb25uZWN0aW9uVGVzdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yXCIgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvclwiIChuZ1N1Ym1pdCk9XCJzdWJtaXRGb3JtKClcIiB2YWxpZGF0ZU9uU3VibWl0PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInBhcmFtc0dlbmVyYWxEdG9QYXJ0MT8uaXNCcmFuY2hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1icmFuY2gtaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6QnJhbmNoJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YWJwLWxvb2t1cC1zZWxlY3QgY2lkPVwicGFyYW1zLWludGVncmF0b3ItYnJhbmNoLWlkXCIgZm9ybUNvbnRyb2xOYW1lPVwiYnJhbmNoSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dldEZuXT1cInNlcnZpY2UuZ2V0QnJhbmNoTG9va3VwXCIgKGNoYW5nZSk9XCJicmFuY2hPbkNoYW5nZSgpXCI+PC9hYnAtbG9va3VwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXVzZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U2VydmljZVVzZXInIHwgYWJwTG9jYWxpemF0aW9uIH19ICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLXNlcnZpY2UtdXNlclwiIGZvcm1Db250cm9sTmFtZT1cInNlcnZpY2VVc2VyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNjRcIiBhdXRvZm9jdXMgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLXNlcnZpY2UtcGFzc3dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6U2VydmljZVBhc3N3b3JkJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1zZXJ2aWNlLXBhc3N3b3JkXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VydmljZVBhc3N3b3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNjRcIiB0eXBlPVwicGFzc3dvcmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1nYmxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVJbnZvaWNlR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVJbnZvaWNlR0JMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVJbnZvaWNlUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWludm9pY2UtcGtsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVJbnZvaWNlUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGlzcGF0Y2gtZ2JsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFRGlzcGF0Y2hHQkxhYmVsJyB8IGFicExvY2FsaXphdGlvbiB9fSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lZGlzcGF0Y2gtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVEaXNwYXRjaEdCTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCIyNTZcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLXBrbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RURpc3BhdGNoUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWRpc3BhdGNoLXBrbGFiZWxcIiBmb3JtQ29udHJvbE5hbWU9XCJlRGlzcGF0Y2hQS0xhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiMjU2XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVpbnZvaWNlLWFwaS11cmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdlRG9udXN1bTo6RUludm9pY2VBcGlVcmwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1laW52b2ljZS1hcGktdXJsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZUludm9pY2VBcGlVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBtYXhsZW5ndGg9XCI1MTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlSW52b2ljZUFwaVVybCcpPy5pbnZhbGlkICYmIChmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VJbnZvaWNlQXBpVXJsJyk/LnRvdWNoZWQgfHwgZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlSW52b2ljZUFwaVVybCcpPy5kaXJ0eSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7ICdlRG9udXN1bTo6SW52YWxpZFVybEZvcm1hdCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkZXNwYXRjaC1hcGktdXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVEZXNwYXRjaEFwaVVybCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInBhcmFtcy1pbnRlZ3JhdG9yLWVkZXNwYXRjaC1hcGktdXJsXCIgZm9ybUNvbnRyb2xOYW1lPVwiZURlc3BhdGNoQXBpVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZURlc3BhdGNoQXBpVXJsJyk/LmludmFsaWQgJiYgKGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZURlc3BhdGNoQXBpVXJsJyk/LnRvdWNoZWQgfHwgZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlRGVzcGF0Y2hBcGlVcmwnKT8uZGlydHkpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyAnZURvbnVzdW06OkludmFsaWRVcmxGb3JtYXQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1hcGktdXJsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVBcmNoaXZlQXBpVXJsJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtYXBpLXVybFwiIGZvcm1Db250cm9sTmFtZT1cImVBcmNoaXZlQXBpVXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbWF4bGVuZ3RoPVwiNTEyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZUFyY2hpdmVBcGlVcmwnKT8uaW52YWxpZCAmJiAoZm9ybVBhcmFtc0ludGVncmF0b3IuZ2V0KCdlQXJjaGl2ZUFwaVVybCcpPy50b3VjaGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZUFyY2hpdmVBcGlVcmwnKT8uZGlydHkpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyAnZURvbnVzdW06OkludmFsaWRVcmxGb3JtYXQnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lbW0tYXBpLXVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2VEb251c3VtOjpFbW1BcGlVcmwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJwYXJhbXMtaW50ZWdyYXRvci1lbW0tYXBpLXVybFwiIGZvcm1Db250cm9sTmFtZT1cImVtbUFwaVVybFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjUxMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VtbUFwaVVybCcpPy5pbnZhbGlkICYmIChmb3JtUGFyYW1zSW50ZWdyYXRvci5nZXQoJ2VtbUFwaVVybCcpPy50b3VjaGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmdldCgnZW1tQXBpVXJsJyk/LmRpcnR5KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sgJ2VEb251c3VtOjpJbnZhbGlkVXJsRm9ybWF0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1nYmxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVBcmNoaXZlR0JMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtZ2JsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVBcmNoaXZlR0JMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJwYXJhbXMtaW50ZWdyYXRvci1lYXJjaGl2ZS1wa2xhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnZURvbnVzdW06OkVBcmNoaXZlUEtMYWJlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX0gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwicGFyYW1zLWludGVncmF0b3ItZWFyY2hpdmUtcGtsYWJlbFwiIGZvcm1Db250cm9sTmFtZT1cImVBcmNoaXZlUEtMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIG1heGxlbmd0aD1cIjI1NlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgdGV4dC1sZy1lbmRcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWUtMlwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb25uZWN0aW9uVGVzdEJ1dHRvbkRpc2FibGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmludmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25uZWN0aW9uVGVzdCgpXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAnZURvbnVzdW06OkNvbm5lY3Rpb25UZXN0JyB8IGFicExvY2FsaXphdGlvbiB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwic3VibWl0XCIgZm9ybU5hbWU9XCJwYXJhbXMtaW50ZWdyYXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdEJ1dHRvbkRpc2FibGVkIHx8IGZvcm1QYXJhbXNJbnRlZ3JhdG9yLmludmFsaWRcIiBbaGlkZGVuXT1cIklzU3VibWl0QnV0dG9uSGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgICAgICAgICAgPC9hYnAtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -6877,25 +6877,53 @@ class HitParamsIntegratorComponent {
6877
6877
  this.valid.emit(false);
6878
6878
  return;
6879
6879
  }
6880
- this.formParamsIntegrator.controls.branchId.setValue(null);
6881
6880
  this.submitButtonDisabled = true;
6882
- const request = this.paramsIntegratorDtoWithNavigationPropertiesDto
6883
- ? this.service.update(this.paramsIntegratorDtoWithNavigationPropertiesDto.paramsIntegrator.id, Object.assign({}, this.formParamsIntegrator.value))
6884
- : this.service.create(this.formParamsIntegrator.value);
6885
- request
6886
- .pipe(finalize$1(() => {
6881
+ try {
6882
+ const saved = yield this.saveParamsIntegrator();
6883
+ if (!saved) {
6884
+ this.valid.emit(false);
6885
+ return;
6886
+ }
6887
+ const testResult = yield this.runConnectionTest();
6888
+ this.valid.emit(testResult);
6889
+ }
6890
+ finally {
6887
6891
  this.submitButtonDisabled = false;
6888
- }))
6889
- .subscribe(() => __awaiter(this, void 0, void 0, function* () {
6892
+ }
6893
+ });
6894
+ }
6895
+ saveParamsIntegrator() {
6896
+ this.formParamsIntegrator.controls.branchId.setValue(null);
6897
+ const request$ = this.paramsIntegratorDtoWithNavigationPropertiesDto
6898
+ ? this.service.update(this.paramsIntegratorDtoWithNavigationPropertiesDto.paramsIntegrator.id, Object.assign({}, this.formParamsIntegrator.value))
6899
+ : this.service.create(this.formParamsIntegrator.value);
6900
+ return new Promise((resolve) => {
6901
+ request$.subscribe(() => __awaiter(this, void 0, void 0, function* () {
6890
6902
  var _a;
6891
6903
  yield this.getParamsIntegrator(false, ((_a = this.paramsIntegratorDtoWithNavigationPropertiesDto) === null || _a === void 0 ? void 0 : _a.branch)
6892
6904
  ? this.paramsIntegratorDtoWithNavigationPropertiesDto.branch.id
6893
6905
  : '00000000-0000-0000-0000-000000000000');
6894
- const testResult = yield this.connectionTest();
6895
- this.valid.emit(testResult);
6896
- }), err => {
6906
+ resolve(true);
6907
+ }), () => {
6897
6908
  this.toasterService.error('eDonusum::TransactionUnsuccessful');
6898
- this.valid.emit(false);
6909
+ resolve(false);
6910
+ });
6911
+ });
6912
+ }
6913
+ runConnectionTest() {
6914
+ return __awaiter(this, void 0, void 0, function* () {
6915
+ const request = this.formParamsIntegrator.value;
6916
+ return yield this.hitEntegratorsService.connectionTest(request).then(data => {
6917
+ if (data) {
6918
+ this.toasterService.success('eDonusum::ConnectionSuccessful');
6919
+ return true;
6920
+ }
6921
+ else {
6922
+ this.toasterService.error(data === null || data === void 0 ? void 0 : data.message);
6923
+ return false;
6924
+ }
6925
+ }).catch(() => {
6926
+ return false;
6899
6927
  });
6900
6928
  });
6901
6929
  }
@@ -6929,31 +6957,22 @@ class HitParamsIntegratorComponent {
6929
6957
  // });
6930
6958
  // }
6931
6959
  connectionTest() {
6932
- var _a;
6933
6960
  return __awaiter(this, void 0, void 0, function* () {
6934
6961
  if (this.formParamsIntegrator.invalid) {
6935
6962
  this.toasterService.error('eDonusum::FillRequiredFields');
6936
6963
  return false;
6937
6964
  }
6938
6965
  this.connectionTestButtonDisabled = true;
6939
- if (((_a = this.formParamsIntegrator.controls.branchId) === null || _a === void 0 ? void 0 : _a.value) == '')
6940
- this.formParamsIntegrator.controls.branchId.setValue('00000000-0000-0000-0000-000000000000');
6941
- let request = this.formParamsIntegrator.value;
6942
- return yield this.hitEntegratorsService.connectionTest(request).then(data => {
6943
- this.connectionTestButtonDisabled = false;
6944
- this.submitButtonDisabled = false;
6945
- if (data) {
6946
- this.toasterService.success('eDonusum::ConnectionSuccessful');
6947
- return true;
6948
- }
6949
- else {
6950
- this.toasterService.error(data.message);
6966
+ try {
6967
+ const saved = yield this.saveParamsIntegrator();
6968
+ if (!saved)
6951
6969
  return false;
6952
- }
6953
- }).finally(() => {
6970
+ return yield this.runConnectionTest();
6971
+ }
6972
+ finally {
6954
6973
  this.connectionTestButtonDisabled = false;
6955
6974
  this.submitButtonDisabled = false;
6956
- });
6975
+ }
6957
6976
  });
6958
6977
  }
6959
6978
  }