@aggdirect/coolmap 2.1.0 → 2.3.0

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.
@@ -95,15 +95,17 @@ export class AddRouteComponent {
95
95
  if (!changes['prevent']) {
96
96
  this.preventSave = false;
97
97
  this.formControlValue();
98
- this.patchFormValue(changes);
99
- this.checkAndFetchRouteInformation(true);
98
+ this.patchFormValue(changes).then(() => {
99
+ this.checkAndFetchRouteInformation(true);
100
+ });
100
101
  }
101
102
  }
102
103
  if (!changes) {
103
104
  this.enableForm = true;
104
105
  this.preventSave = true;
105
- this.patchFormValue();
106
- this.checkAndFetchRouteInformation();
106
+ this.patchFormValue().then(() => {
107
+ this.checkAndFetchRouteInformation();
108
+ });
107
109
  }
108
110
  }
109
111
  ngOnInit() {
@@ -137,17 +139,13 @@ export class AddRouteComponent {
137
139
  formControlValue() {
138
140
  this.addRouteForm.controls['pickup_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
139
141
  if (this.addRouteForm.value.pickup_location && res !== this.addRouteForm.value.pickup_location) {
140
- this.addRouteForm.patchValue({
141
- pickup_lat_lng: '',
142
- });
142
+ this.addRouteForm.patchValue({ pickup_lat_lng: '' });
143
143
  this.addRouteForm.controls['pickup_lat_lng'].markAsTouched();
144
144
  }
145
145
  });
146
146
  this.addRouteForm.controls['delivery_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
147
147
  if (this.addRouteForm.value.delivery_location && res !== this.addRouteForm.value.delivery_location) {
148
- this.addRouteForm.patchValue({
149
- delivery_lat_lng: '',
150
- });
148
+ this.addRouteForm.patchValue({ delivery_lat_lng: '' });
151
149
  this.addRouteForm.controls['delivery_lat_lng'].markAsTouched();
152
150
  }
153
151
  });
@@ -169,7 +167,7 @@ export class AddRouteComponent {
169
167
  note: new FormControl('', [Validators.maxLength(2048)]),
170
168
  });
171
169
  }
172
- patchFormValue(data) {
170
+ async patchFormValue(data) {
173
171
  this.addRouteForm.reset();
174
172
  this.addRouteForm.patchValue(data);
175
173
  this.routeId = data?.route_id;
@@ -181,6 +179,7 @@ export class AddRouteComponent {
181
179
  }
182
180
  });
183
181
  this.filterCustomerList();
182
+ await true;
184
183
  }
185
184
  selectedLongLat(type, event) {
186
185
  if (type === 'pickup') {
@@ -314,4 +313,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
314
313
  }], customerRepoDetails: [{
315
314
  type: Input
316
315
  }] } });
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvYWRkLXJvdXRlL2FkZC1yb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2FkZC1yb3V0ZS9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVFwRSxNQUFNLE9BQU8saUJBQWlCO0lBeUI1QixZQUFtQixjQUE4QixFQUFTLEtBQW1CLEVBQVMsTUFBaUIsRUFDdkUsTUFBMEI7UUFEdkMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDdkUsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUF2QnpDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3ZDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvRCxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixvQkFBZSxHQUFRLEVBQUUsQ0FBQztR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QUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7UUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OzhHQWpRVSxpQkFBaUIscUdBMEJsQixZQUFZO2tHQTFCWCxpQkFBaUIsb2JDYjlCLCtsT0E0SUE7MkZEL0hhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxlQUFlOzswQkE4QnRCLE1BQU07MkJBQUMsWUFBWTs0Q0F6QlksWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjO2dCQUNXLGNBQWM7c0JBQWpELFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNWLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsZUFBZTtzQkFBL0IsTUFBTTtnQkFRUyxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzLCBPbkNoYW5nZXMsIElucHV0LCBPbkRlc3Ryb3ksIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZyb21FdmVudCwgbWFwLCBPYnNlcnZhYmxlLCBzdGFydFdpdGgsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgQ29vbG1hcFNlcnZpY2UsIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9zaGFyZWQvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hZGQtcm91dGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLXJvdXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkLXJvdXRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWRkUm91dGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZmlsdGVyUGlja3VwJykgcHVibGljIGZpbHRlclBpY2t1cCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlckRlbGl2ZXJ5JykgcHVibGljIGZpbHRlckRlbGl2ZXJ5ITogRWxlbWVudFJlZjtcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VOYXYgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyB1cGRhdGVSb3V0ZUxpc3QgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHBpY2t1cE9wdGlvbnM6IGFueSA9IFtdO1xuICBkZWxpdmVyeU9wdGlvbnM6IGFueSA9IFtdO1xuICByZXF1ZXN0UGFybXNGb3JSb3V0ZURldGFpbHMgPSB7IHBpY2t1cF9sYXRfbG5nOiAnJywgZGVsaXZlcnlfbGF0X2xuZzogJycgfVxuICBjdXN0b21lcnNMaXN0OiBhbnkgPSBbXTtcbiAgdW5pdHNMaXN0OiBhbnkgPSBbXTtcbiAgbWF0ZXJpYWxzTGlzdDogYW55ID0gW107XG4gIGFkZFJvdXRlRm9ybSE6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIHJvdXRlRGF0YSE6IFJvdXRlO1xuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tZXJSZXBvRGV0YWlscyE6IEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbDtcbiAgcm91dGVJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJldmVudFNhdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJldmVudEluaXRpYWxTYXZlOiBib29sZWFuID0gZmFsc2U7XG4gIGN1c3RvbWVyc0xpc3QkITogT2JzZXJ2YWJsZTxhbnk+O1xuICByb3V0ZURldGFpbHMhOiB7IHBpY2t1cF9sb2NhdGlvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDsgZGVsaXZlcnlfbG9jYXRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7IH0gfCBudWxsO1xuICBwdWJsaWMgZGVzdHJveWVyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHBvcHVwRGV0YWlsczogUm91dGU7XG4gIGVuYWJsZVBvcFVwOiBib29sZWFuID0gZmFsc2U7XG4gIHByZXZhbnRQb3B1cENsb3NlID0gZmFsc2U7XG4gIGVuYWJsZUZvcm06IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY29vbE1hcFNlcnZpY2U6IENvb2xtYXBTZXJ2aWNlLCBwdWJsaWMgdXRpbHM6IFV0aWxzU2VydmljZSwgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwcml2YXRlIGNvbmZpZzogQ29vbG1hcENvbmZpZ01vZGVsKSB7XG4gICAgdGhpcy51dGlscy5mZXRjaE1hdGVyaWFsc0xpc3QoKS50aGVuKChyZXMpPT57XG4gICAgICB0aGlzLm1hdGVyaWFsc0xpc3QgPSByZXM7XG4gICAgfSk7XG4gICAgdGhpcy51dGlscy5mZXRjaFVuaXRzTGlzdCgpLnRoZW4oKHJlcyk9PntcbiAgICAgIHRoaXMudW5pdHNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybUluaXQoKTtcbiAgICB0aGlzLnV0aWxzLmdldHJvdXRlRGV0YWlsc1V0aWxpdHkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIGlmIChyZXNbJ2V2ZW50J10gIT09ICdjbGljaycgJiYgIXRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHsgdGhpcy5lbmFibGVQb3BVcCA9IHJlc1snZXZlbnQnXSB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZW5hYmxlUG9wVXAgJiYgIXRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHsgdGhpcy5wcmV2YW50UG9wdXBDbG9zZSA9IHRydWU7IH1cbiAgICAgICAgaWYgKHJlc1snZXZlbnQnXSAhPT0gJ2NsaWNrJyAmJiAhcmVzWydldmVudCddICYmIHRoaXMucHJldmFudFBvcHVwQ2xvc2UpIHtcbiAgICAgICAgICB0aGlzLnBvcHVwRGV0YWlscyA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzdjInKTtcbiAgICAgICAgfSBlbHNlIHsgdGhpcy5wb3B1cERldGFpbHMgPSByZXNbJ3JvdXRlJ10gfVxuICAgICAgICBpZiAodGhpcy5lbmFibGVQb3BVcCkgdGhpcy5wb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXSA9IHRoaXMudXRpbHMuZ2V0RGF0ZUZvcm1hdChuZXcgRGF0ZSh0aGlzLnBvcHVwRGV0YWlsc1snY3JlYXRlZF9hdCddKSwgJy8nKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBmaWx0ZXJDdXN0b21lckxpc3QoKSB7XG4gICAgdGhpcy5jdXN0b21lcnNMaXN0JCA9IHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgoJycpLFxuICAgICAgbWFwKHZhbHVlID0+IHRoaXMuX2ZpbHRlcih2YWx1ZSB8fCAnJykpLFxuICAgICk7XG4gIH1cbiAgcHVibGljIF9maWx0ZXIodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tZXJzTGlzdC5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBvcHRpb25bJ2N1c3RvbWVyX25hbWUnXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydyb3V0ZURhdGEnXSAmJiAhY2hhbmdlc1sncm91dGVEYXRhJ11bJ2N1cnJlbnRWYWx1ZSddKSB0aGlzLmluSXQobnVsbCk7XG4gIH1cbiAgb3BlbkRpYWxvZygpOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgZGF0YTogeyBib2R5OiAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJvdXRlPycgfSxcbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHsgaWYgKHJlcykgeyB0aGlzLmRlbGV0ZVJvdXRlKCkgfSB9KTtcbiAgfVxuICBlZGl0RXZlbnQoKSB7XG4gICAgdGhpcy5wcmV2YW50UG9wdXBDbG9zZSA9IGZhbHNlO1xuICAgIHRoaXMuZW5hYmxlRm9ybSA9IHRydWU7IHRoaXMuZW5hYmxlUG9wVXAgPSBmYWxzZTtcbiAgICB0aGlzLnBvcHVwRGV0YWlsc1sncHJldmVudCddID0gZmFsc2U7XG4gICAgdGhpcy51dGlscy5yZW1vdmVNYXBFbnRpdHkubmV4dCh0aGlzLnBvcHVwRGV0YWlscyk7XG4gICAgdGhpcy5pbkl0KHRoaXMucG9wdXBEZXRhaWxzKTtcbiAgfVxuICBpbkl0KGNoYW5nZXM6IFJvdXRlKSB7XG4gICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgIGlmICghY2hhbmdlc1sncHJldmVudCddKSB7XG4gICAgICAgIHRoaXMucHJldmVudFNhdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgICAgIHRoaXMucGF0Y2hGb3JtVmFsdWUoY2hhbmdlcyk7IHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24odHJ1ZSlcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjaGFuZ2VzKSB7IHRoaXMuZW5hYmxlRm9ybSA9IHRydWU7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlOyB0aGlzLnBhdGNoRm9ybVZhbHVlKCk7IHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKSB9XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtQ29udHJvbFZhbHVlKCk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHsgICAgICBcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBjdXN0b21lcl9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLmlkLFxuICAgICAgICBjdXN0b21lcl9uYW1lOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIubmFtZSxcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hDdXN0b21lcnNMaXN0KCkudGhlbigocmVzKT0+e1xuICAgICAgICB0aGlzLmN1c3RvbWVyc0xpc3QgPSByZXM7IHRoaXMuZmlsdGVyQ3VzdG9tZXJMaXN0KCk7IHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10uZW5hYmxlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgZnJvbUV2ZW50KHRoaXMuZmlsdGVyUGlja3VwLm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMTUwKSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlscy5mZXRjaEF1dG9Db21wbGV0ZUxvY2F0aW9ucyh0aGlzLmZpbHRlclBpY2t1cC5uYXRpdmVFbGVtZW50LnZhbHVlKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5waWNrdXBPcHRpb25zID0gcmVzLmZlYXR1cmVzO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgZnJvbUV2ZW50KHRoaXMuZmlsdGVyRGVsaXZlcnkubmF0aXZlRWxlbWVudCwgJ2tleXVwJykucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIGRlYm91bmNlVGltZSgxNTApKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnV0aWxzLmZldGNoQXV0b0NvbXBsZXRlTG9jYXRpb25zKHRoaXMuZmlsdGVyRGVsaXZlcnkubmF0aXZlRWxlbWVudC52YWx1ZSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGVsaXZlcnlPcHRpb25zID0gcmVzLmZlYXR1cmVzO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZm9ybUNvbnRyb2xWYWx1ZSgpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xvY2F0aW9uJ10/LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAodGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUucGlja3VwX2xvY2F0aW9uICYmIHJlcyAhPT0gdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUucGlja3VwX2xvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHBpY2t1cF9sYXRfbG5nOiAnJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sb2NhdGlvbiddPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLmRlbGl2ZXJ5X2xvY2F0aW9uICYmIHJlcyAhPT0gdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUuZGVsaXZlcnlfbG9jYXRpb24pIHtcbiAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgZGVsaXZlcnlfbGF0X2xuZzogJycsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbGF0X2xuZyddLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZvcm1Jbml0KCkge1xuICAgIHRoaXMuYWRkUm91dGVGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICByb3V0ZV9uYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBjdXN0b21lcl9uYW1lOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH0sIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBjdXN0b21lcl9pZDogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICAgIG1hdGVyaWFsc19pZDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgdW5pdF9pZDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgcGF0aDogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgcGlja3VwX2xvY2F0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBwaWNrdXBfbGF0X2xuZzogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZGVsaXZlcnlfbG9jYXRpb246IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGRlbGl2ZXJ5X2xhdF9sbmc6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGVzdGltYXRlZF9kaXN0YW5jZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZXN0aW1hdGVkX3RpbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIG5vdGU6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDIwNDgpXSksXG4gICAgfSk7XG4gIH1cblxuICBwYXRjaEZvcm1WYWx1ZShkYXRhPzogUm91dGUpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5yZXNldCgpO1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoZGF0YSEpO1xuICAgIHRoaXMucm91dGVJZCA9IGRhdGE/LnJvdXRlX2lkO1xuICAgIHRoaXMucm91dGVEZXRhaWxzID0gZGF0YSA/IHsgcGlja3VwX2xvY2F0aW9uOiBkYXRhLnBpY2t1cF9sb2NhdGlvbiwgZGVsaXZlcnlfbG9jYXRpb246IGRhdGEuZGVsaXZlcnlfbG9jYXRpb24gfSA6IG51bGw7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykgeyBpZiAodGhpcy5wcmV2ZW50SW5pdGlhbFNhdmUpIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gZmFsc2UgfVxuICAgIH0pO1xuICAgIHRoaXMuZmlsdGVyQ3VzdG9tZXJMaXN0KCk7XG4gIH1cblxuICBzZWxlY3RlZExvbmdMYXQodHlwZTogc3RyaW5nLCBldmVudDogYW55KSB7XG4gICAgaWYgKHR5cGUgPT09ICdwaWNrdXAnKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgcGlja3VwX2xhdF9sbmc6IChldmVudC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSArICcsJyArIGV2ZW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKS50b1N0cmluZygpXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UuY2xlYXJCb3VuZFdpdGhDb3JkaW5hdGVzKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGVsaXZlcnknKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgZGVsaXZlcnlfbGF0X2xuZzogKGV2ZW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdICsgJywnICsgZXZlbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pLnRvU3RyaW5nKClcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKTtcbiAgfVxuXG4gIGNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKGlzaW5pdGlhbD86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5hZGRSb3V0ZUZvcm0udmFsdWU/LmRlbGl2ZXJ5X2xhdF9sbmc/Lmxlbmd0aCA+IDAgJiYgdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWU/LnBpY2t1cF9sYXRfbG5nPy5sZW5ndGggPiAwICYmIHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnVuaXRfaWQpIHtcbiAgICAgIGxldCB1bml0ID0gdGhpcy51bml0c0xpc3QuZmluZCgoeDogYW55KSA9PiB4LmlkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKTtcbiAgICAgIGNvbnN0IHBhcmFtID0ge1xuICAgICAgICBkZWxpdmVyeV9sYXRfbG5nOiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5kZWxpdmVyeV9sYXRfbG5nLFxuICAgICAgICBwaWNrdXBfbGF0X2xuZzogdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUucGlja3VwX2xhdF9sbmcsXG4gICAgICAgIHVuaXQ6IHVuaXQ/LnR5cGVcbiAgICAgIH07XG4gICAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdjYWxjdWxhdGUvcm91dGVzL2VzdGltYXRpb24nLCBwYXJhbSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzICYmIHJlc1sncGF0aCddKSB7XG4gICAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBlc3RpbWF0ZWRfZGlzdGFuY2U6IHJlcy5kaXN0LCBlc3RpbWF0ZWRfdGltZTogcmVzLnRpbWUsIHBhdGg6IHJlcy5wYXRoXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHBhdGggPSByZXNbJ3BhdGgnXS5zcGxpdCgnOycpO1xuICAgICAgICAgIHBhdGggPSBwYXRoLm1hcCgoZWxlOiBzdHJpbmcgfCBhbnkpID0+IHsgcmV0dXJuIGVsZSA9IHRoaXMuZm9ybWF0ZUxhdExvbmcoZWxlKSB9KTtcbiAgICAgICAgICByZXNbJ3BhdGgnXSA9IHBhdGg7XG4gICAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiBbeyB0eXBlOiAnRmVhdHVyZScsIHByb3BlcnRpZXM6IHt9LCBnZW9tZXRyeTogeyB0eXBlOiAnTGluZVN0cmluZycsIGNvb3JkaW5hdGVzOiByZXNbJ3BhdGgnXSB9IH1dXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy51bml0c0xpc3QuZmluZCgoeDogYW55KSA9PiB4LmlkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsRGV0YWlscyA9IHRoaXMubWF0ZXJpYWxzTGlzdC5maW5kKCh4OiBhbnkpID0+IHgubWF0ZXJpYWxfaWQgPT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLm1hdGVyaWFsc19pZCk7XG4gICAgICAgICAgICB0aGlzLmNvb2xNYXBTZXJ2aWNlLmxvYWRNYXBQcm9wZXJ0eShlbGVtZW50LCAxLCB1bml0Py50eXBlLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGlja3VwX2xvY2F0aW9uOiB0aGlzLmFkZFJvdXRlRm9ybS5nZXQoJ3BpY2t1cF9sb2NhdGlvbicpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICBkZWxpdmVyeV9sb2NhdGlvbjogdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0KCdkZWxpdmVyeV9sb2NhdGlvbicpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICByb3V0ZV9uYW1lOiB0aGlzLmFkZFJvdXRlRm9ybS5nZXQoJ3JvdXRlX25hbWUnKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWw6IG1hdGVyaWFsRGV0YWlscz8ubWF0ZXJpYWwsIHVuaXQ6IHVuaXQ/LnR5cGVcbiAgICAgICAgICAgICAgfSkudGhlbigocmVzKSA9PiB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzWydzdGF0dXMnXSwgJ2Vycm9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVJZCAmJiBpc2luaXRpYWwpIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7IHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSkgfVxuICB9XG5cbiAgZm9ybWF0ZUxhdExvbmcobGF0bG9uZzogc3RyaW5nKSB7IHJldHVybiBsYXRsb25nID8gbGF0bG9uZy5zcGxpdCgnLCcpLm1hcCh4ID0+ICt4KS5yZXZlcnNlKCkgOiBudWxsIH1cbiAgc2F2ZVJvdXRlKCkge1xuICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYWRkUm91dGVGb3JtLmdldFJhd1ZhbHVlKCk7ICAgICAgXG4gICAgICBkYXRhWyd0cnVja2VyX3BheV9lc3RpbWF0ZSddID0gbnVsbDtcbiAgICAgIGRhdGFbJ2N1c3RvbWVyX3ByaWNlX2VzdGltYXRlJ10gPSBudWxsO1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZUlkID8gdGhpcy51dGlscy5wb3N0ZGF0YSgndXBkYXRlL3JvdXRlcycsIGRhdGEpIDogdGhpcy51dGlscy5wb3N0ZGF0YSgnYWRkL3JvdXRlcycsIGRhdGEpXG4gICAgICBpZiAodGhpcy5yb3V0ZUlkKSBkYXRhWydpZCddID0gdGhpcy5yb3V0ZUlkO1xuICAgICAgdXJsLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVSb3V0ZUxpc3QuZW1pdCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXMubWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICAgICAgaWYgKCF0aGlzLnJvdXRlSWQpIHRoaXMuY2hhbmdlTmF2Lm5leHQoJ0FkZHJvdXRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzLm1lc3NhZ2UsICdlcnJvcicpO1xuICAgICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LCAoZXJyKSA9PiB7IGlmIChlcnIpIHsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7IH0gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB9XG4gIH1cbiAgZGVsZXRlUm91dGUoKSB7XG4gICAgdGhpcy5wcmV2ZW50U2F2ZSA9IGZhbHNlO1xuICAgIHRoaXMudXRpbHMucG9zdGRhdGEoJ2RlbGV0ZS9yb3V0ZXMnLCB7IHV1aWQ6IHRoaXMucm91dGVJZCB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXNbJ2RhdGEnXVsnc3VjY2VzcyddKSB7XG4gICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKHJlc1snZGF0YSddWydtZXNzYWdlJ10sICdzdWNjZXNzJyk7XG4gICAgICAgIHRoaXMudXBkYXRlUm91dGVMaXN0LmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2hhbmdlTmF2Lm5leHQoJ0FkZHJvdXRlJyk7XG4gICAgICAgIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcignU29tdGhpbmcgd2VudCB3cm9uZycsICdlcnJvcicpO1xuICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlIH0pXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZXIkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95ZXIkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGRyb3V0ZWJveFwiPlxuICA8ZGl2IGNsYXNzPVwicm91dGVkZXRhaWxib3hcIiAqbmdJZj1cImVuYWJsZVBvcFVwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlYnRucm91dGVkZXRhaWxcIj5cbiAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicHJldmFudFBvcHVwQ2xvc2UgPSBmYWxzZTsgZW5hYmxlUG9wVXAgPSBmYWxzZTtcIj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRlc3RpbmF0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHVyYXRpb25cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaWNrcHJ0XCI+PGI+UGlja3VwOjwvYj57e3BvcHVwRGV0YWlsc1sncGlja3VwX2xvY2F0aW9uJ119fTwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJkcm9wcHJ0XCI+PGI+RGVsaXZlcnk6PC9iPnt7cG9wdXBEZXRhaWxzWydkZWxpdmVyeV9sb2NhdGlvbiddfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuPjxiPk5hbWU6PC9iPiB7e3BvcHVwRGV0YWlsc1sncm91dGVfbmFtZSddfX08L3NwYW4+XG4gICAgICA8c3Bhbj48Yj5DdXN0b21lcjo8L2I+IHt7cG9wdXBEZXRhaWxzWydjdXN0b21lcl9uYW1lJ119fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPk1hdGVyaWFsOjwvYj4ge3twb3B1cERldGFpbHNbJ21hdGVyaWFsJ119fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPlR5cGU6PC9iPiB7e3BvcHVwRGV0YWlsc1sndW5pdCddfX08L3NwYW4+XG4gICAgICA8c3Bhbj48Yj5EaXN0YW5jZTo8L2I+IHt7cG9wdXBEZXRhaWxzWydlc3RpbWF0ZWRfZGlzdGFuY2UnXX19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+VHJhdmVsIFRpbWU6PC9iPiB7e3BvcHVwRGV0YWlsc1snZXN0aW1hdGVkX3RpbWUnXX19PC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cInJvdXRlbm90ZXNcIj48Yj5Ob3Rlczo8L2I+IHt7cG9wdXBEZXRhaWxzWydub3RlJ119fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlVHh0XCI+XG4gICAgICA8c21hbGw+XG4gICAgICAgIENyZWF0ZWQgYnkge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYnlfbmFtZSddfX0gb24ge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXX19XG4gICAgICA8L3NtYWxsPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRidG5cIiAoY2xpY2spPVwiZWRpdEV2ZW50KClcIj5FZGl0PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWRkX2FkZF9yb3V0ZV9ib3hcIiBjZGtEcmFnIFtzdHlsZS52aXNpYmlsaXR5XT1cIiFlbmFibGVGb3JtID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9waGVhZGluZ3BydFwiPlxuICAgICAgPGgyPiB7e3JvdXRlSWQ/ICdFRElUJyA6ICdBREQnfX0gUk9VVEUgPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25wcnRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJvdXRlSWRcIiBjbGFzcz1cImRlbGJ0blwiIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJjbG9zZWJ0blwiIChjbGljayk9XCJjaGFuZ2VOYXYubmV4dCgnQWRkcm91dGUnKVwiPkNsb3NlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFkZFJvdXRlRm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdXRlX2Zvcm1fYXJlYVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlJvdXRlIE5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyb3V0ZV9uYW1lXCIgYXV0b2NvbXBsZXRlPVwibm9wZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydyb3V0ZV9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgUm91dGUgTmFtZSBpcyByZXF1aXJlZFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiQ3VzdG9tZXIgTmFtZVwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImN1c3RvbWVyX25hbWVcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjdXN0b21lciBvZiBjdXN0b21lcnNMaXN0JCB8IGFzeW5jXCIgW3ZhbHVlXT1cImN1c3RvbWVyWydjdXN0b21lcl9uYW1lJ11cIj5cbiAgICAgICAgICAgICAgICB7e2N1c3RvbWVyWydjdXN0b21lcl9uYW1lJ119fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgQ3VzdG9tZXIgbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlBpY2t1cDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBtYXRJbnB1dCAjZmlsdGVyUGlja3VwIFttYXRBdXRvY29tcGxldGVdPVwicGlja3VwQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGlja3VwX2xvY2F0aW9uXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cblxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI3BpY2t1cEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2VsZWN0ZWRMb25nTGF0KCdwaWNrdXAnLCBvcHRpb24pXCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwaWNrdXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uPy5wbGFjZV9uYW1lXCI+XG4gICAgICAgICAgICAgICAge3tvcHRpb24/LnBsYWNlX25hbWV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLnRvdWNoZWQgJiYgYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHBpY2t1cCBsb2NhdGlvbiBmcm9tIHRoZSBsaXN0LlxuICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EZWxpdmVyeTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBtYXRJbnB1dCAjZmlsdGVyRGVsaXZlcnkgW21hdEF1dG9jb21wbGV0ZV09XCJkZWxpdmVyeUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlbGl2ZXJ5X2xvY2F0aW9uXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNkZWxpdmVyeUF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2VsZWN0ZWRMb25nTGF0KCdkZWxpdmVyeScsIG9wdGlvbilcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRlbGl2ZXJ5T3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbj8ucGxhY2VfbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5wbGFjZV9uYW1lfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbGF0X2xuZyddLnRvdWNoZWQgJiYgYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sYXRfbG5nJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgZGVsaXZlcnkgbG9jYXRpb24gZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Tm90ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBzdHlsZT1cImhlaWdodDogMThweDsgcmVzaXplOiBub25lO1wiIG1hdElucHV0IG5hbWU9XCJcIiBpZD1cIlwiIGNvbHM9XCIzMFwiIHJvd3M9XCIxMFwiIGZvcm1Db250cm9sTmFtZT1cIm5vdGVcIiBhdXRvY29tcGxldGU9XCJub3BlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snbm90ZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICAgICAgICBOb3RlcyBzaG91bGQgYmUgd2l0aGluIDIwNDggY2hhcmFjdGVycy5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBkLWZsZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+VW5pdCB0eXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInVuaXRfaWRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKClcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIHVuaXRzTGlzdFwiIFt2YWx1ZV09XCJ1bml0Py5pZFwiPiB7e3VuaXQ/LnR5cGV9fSA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1sndW5pdF9pZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgVW5pdCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+TWF0ZXJpYWw8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWF0ZXJpYWxzX2lkXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWF0ZXJpYWwgb2YgbWF0ZXJpYWxzTGlzdFwiIFt2YWx1ZV09XCJtYXRlcmlhbD8ubWF0ZXJpYWxfaWRcIj4ge3ttYXRlcmlhbD8ubWF0ZXJpYWx9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydtYXRlcmlhbHNfaWQnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgIE1ldGVyaWFsIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxhcHAtZXN0aW1hdGlvbi1kaXNwbGF5ICpuZ0lmPVwiYWRkUm91dGVGb3JtPy52YWx1ZT8ucGlja3VwX2xhdF9sbmcgJiYgYWRkUm91dGVGb3JtPy52YWx1ZT8uZGVsaXZlcnlfbGF0X2xuZ1wiIFt2YWx1ZV09XCJhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11cIj48L2FwcC1lc3RpbWF0aW9uLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic2F2ZVJvdXRlKClcIiAqbmdJZj1cInByZXZlbnRTYXZlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRkUm91dGVGb3JtLmludmFsaWQgJiYgcHJldmVudFNhdmUgfHwgcHJldmVudEluaXRpYWxTYXZlXCI+e3tyb3V0ZUlkPyAnVXBkYXRlJyA6ICdTYXZlJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+XG4gICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiIXByZXZlbnRTYXZlXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvYWRkLXJvdXRlL2FkZC1yb3V0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2FkZC1yb3V0ZS9hZGQtcm91dGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQTRCLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkosT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVFwRSxNQUFNLE9BQU8saUJBQWlCO0lBeUI1QixZQUFtQixjQUE4QixFQUFTLEtBQW1CLEVBQVMsTUFBaUIsRUFDdkUsTUFBMEI7UUFEdkMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUFTLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDdkUsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUF2QnpDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3ZDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUMvRCxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixvQkFBZSxHQUFRLEVBQUUsQ0FBQztR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QUFVLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzs4R0FyUVUsaUJBQWlCLHFHQTBCbEIsWUFBWTtrR0ExQlgsaUJBQWlCLG9iQ2I5QiwrbE9BNElBOzJGRC9IYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsZUFBZTs7MEJBOEJ0QixNQUFNOzJCQUFDLFlBQVk7NENBekJZLFlBQVk7c0JBQTdDLFNBQVM7dUJBQUMsY0FBYztnQkFDVyxjQUFjO3NCQUFqRCxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDVixTQUFTO3NCQUF6QixNQUFNO2dCQUNVLGVBQWU7c0JBQS9CLE1BQU07Z0JBUVMsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBJbnB1dCwgT25EZXN0cm95LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmcm9tRXZlbnQsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDb29sbWFwQ29uZmlnTW9kZWwsIENvb2xtYXBTZXJ2aWNlLCBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWwsIFJvdXRlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hhcmVkL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWRkLXJvdXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1yb3V0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1yb3V0ZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFkZFJvdXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2ZpbHRlclBpY2t1cCcpIHB1YmxpYyBmaWx0ZXJQaWNrdXAhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdmaWx0ZXJEZWxpdmVyeScpIHB1YmxpYyBmaWx0ZXJEZWxpdmVyeSE6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTmF2ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdXBkYXRlUm91dGVMaXN0ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBwaWNrdXBPcHRpb25zOiBhbnkgPSBbXTtcbiAgZGVsaXZlcnlPcHRpb25zOiBhbnkgPSBbXTtcbiAgcmVxdWVzdFBhcm1zRm9yUm91dGVEZXRhaWxzID0geyBwaWNrdXBfbGF0X2xuZzogJycsIGRlbGl2ZXJ5X2xhdF9sbmc6ICcnIH1cbiAgY3VzdG9tZXJzTGlzdDogYW55ID0gW107XG4gIHVuaXRzTGlzdDogYW55ID0gW107XG4gIG1hdGVyaWFsc0xpc3Q6IGFueSA9IFtdO1xuICBhZGRSb3V0ZUZvcm0hOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIHB1YmxpYyByb3V0ZURhdGEhOiBSb3V0ZTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyUmVwb0RldGFpbHMhOiBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWw7XG4gIHJvdXRlSWQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIHByZXZlbnRTYXZlOiBib29sZWFuID0gZmFsc2U7XG4gIHByZXZlbnRJbml0aWFsU2F2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXN0b21lcnNMaXN0JCE6IE9ic2VydmFibGU8YW55PjtcbiAgcm91dGVEZXRhaWxzITogeyBwaWNrdXBfbG9jYXRpb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7IGRlbGl2ZXJ5X2xvY2F0aW9uOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkOyB9IHwgbnVsbDtcbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwb3B1cERldGFpbHM6IFJvdXRlO1xuICBlbmFibGVQb3BVcDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcmV2YW50UG9wdXBDbG9zZSA9IGZhbHNlO1xuICBlbmFibGVGb3JtOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNvb2xNYXBTZXJ2aWNlOiBDb29sbWFwU2VydmljZSwgcHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBASW5qZWN0KCdtZW1iZXJEYXRhJykgcHJpdmF0ZSBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCkge1xuICAgIHRoaXMudXRpbHMuZmV0Y2hNYXRlcmlhbHNMaXN0KCkudGhlbigocmVzKT0+e1xuICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICAgIHRoaXMudXRpbHMuZmV0Y2hVbml0c0xpc3QoKS50aGVuKChyZXMpPT57XG4gICAgICB0aGlzLnVuaXRzTGlzdCA9IHJlcztcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1Jbml0KCk7XG4gICAgdGhpcy51dGlscy5nZXRyb3V0ZURldGFpbHNVdGlsaXR5LnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICBpZiAocmVzWydldmVudCddICE9PSAnY2xpY2snICYmICF0aGlzLnByZXZhbnRQb3B1cENsb3NlKSB7IHRoaXMuZW5hYmxlUG9wVXAgPSByZXNbJ2V2ZW50J10gfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmVuYWJsZVBvcFVwICYmICF0aGlzLnByZXZhbnRQb3B1cENsb3NlKSB7IHRoaXMucHJldmFudFBvcHVwQ2xvc2UgPSB0cnVlOyB9XG4gICAgICAgIGlmIChyZXNbJ2V2ZW50J10gIT09ICdjbGljaycgJiYgIXJlc1snZXZlbnQnXSAmJiB0aGlzLnByZXZhbnRQb3B1cENsb3NlKSB7XG4gICAgICAgICAgdGhpcy5wb3B1cERldGFpbHMgPSB0aGlzLnV0aWxzLmdldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlsc3YyJyk7XG4gICAgICAgIH0gZWxzZSB7IHRoaXMucG9wdXBEZXRhaWxzID0gcmVzWydyb3V0ZSddIH1cbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlUG9wVXApIHRoaXMucG9wdXBEZXRhaWxzWydjcmVhdGVkX2F0J10gPSB0aGlzLnV0aWxzLmdldERhdGVGb3JtYXQobmV3IERhdGUodGhpcy5wb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXSksICcvJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgZmlsdGVyQ3VzdG9tZXJMaXN0KCkge1xuICAgIHRoaXMuY3VzdG9tZXJzTGlzdCQgPSB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snY3VzdG9tZXJfbmFtZSddLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLl9maWx0ZXIodmFsdWUgfHwgJycpKSxcbiAgICApO1xuICB9XG4gIHB1YmxpYyBfZmlsdGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiB0aGlzLmN1c3RvbWVyc0xpc3QuZmlsdGVyKChvcHRpb246IGFueSkgPT4gb3B0aW9uWydjdXN0b21lcl9uYW1lJ10udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncm91dGVEYXRhJ10gJiYgIWNoYW5nZXNbJ3JvdXRlRGF0YSddWydjdXJyZW50VmFsdWUnXSkgdGhpcy5pbkl0KG51bGwpO1xuICB9XG4gIG9wZW5EaWFsb2coKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IHsgYm9keTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyByb3V0ZT8nIH0sXG4gICAgfSk7XG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7IGlmIChyZXMpIHsgdGhpcy5kZWxldGVSb3V0ZSgpIH0gfSk7XG4gIH1cbiAgZWRpdEV2ZW50KCkge1xuICAgIHRoaXMucHJldmFudFBvcHVwQ2xvc2UgPSBmYWxzZTtcbiAgICB0aGlzLmVuYWJsZUZvcm0gPSB0cnVlOyB0aGlzLmVuYWJsZVBvcFVwID0gZmFsc2U7XG4gICAgdGhpcy5wb3B1cERldGFpbHNbJ3ByZXZlbnQnXSA9IGZhbHNlO1xuICAgIHRoaXMudXRpbHMucmVtb3ZlTWFwRW50aXR5Lm5leHQodGhpcy5wb3B1cERldGFpbHMpO1xuICAgIHRoaXMuaW5JdCh0aGlzLnBvcHVwRGV0YWlscyk7XG4gIH1cbiAgaW5JdChjaGFuZ2VzOiBSb3V0ZSkge1xuICAgIGlmIChjaGFuZ2VzKSB7XG4gICAgICBpZiAoIWNoYW5nZXNbJ3ByZXZlbnQnXSkge1xuICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2xWYWx1ZSgpO1xuICAgICAgICB0aGlzLnBhdGNoRm9ybVZhbHVlKGNoYW5nZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24odHJ1ZSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghY2hhbmdlcykge1xuICAgICAgdGhpcy5lbmFibGVGb3JtID0gdHJ1ZTsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICB0aGlzLnBhdGNoRm9ybVZhbHVlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybUNvbnRyb2xWYWx1ZSgpO1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZCxcbiAgICAgICAgY3VzdG9tZXJfbmFtZTogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLm5hbWUsXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoQ3VzdG9tZXJzTGlzdCgpLnRoZW4oKHJlcyk9PntcbiAgICAgICAgdGhpcy5jdXN0b21lcnNMaXN0ID0gcmVzOyB0aGlzLmZpbHRlckN1c3RvbWVyTGlzdCgpOyB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snY3VzdG9tZXJfbmFtZSddLmVuYWJsZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGZyb21FdmVudCh0aGlzLmZpbHRlclBpY2t1cC5uYXRpdmVFbGVtZW50LCAna2V5dXAnKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDE1MCkpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXRpbHMuZmV0Y2hBdXRvQ29tcGxldGVMb2NhdGlvbnModGhpcy5maWx0ZXJQaWNrdXAubmF0aXZlRWxlbWVudC52YWx1ZSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucGlja3VwT3B0aW9ucyA9IHJlcy5mZWF0dXJlcztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGZyb21FdmVudCh0aGlzLmZpbHRlckRlbGl2ZXJ5Lm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBkZWJvdW5jZVRpbWUoMTUwKSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51dGlscy5mZXRjaEF1dG9Db21wbGV0ZUxvY2F0aW9ucyh0aGlzLmZpbHRlckRlbGl2ZXJ5Lm5hdGl2ZUVsZW1lbnQudmFsdWUpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmRlbGl2ZXJ5T3B0aW9ucyA9IHJlcy5mZWF0dXJlcztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZvcm1Db250cm9sVmFsdWUoKSB7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ3BpY2t1cF9sb2NhdGlvbiddPy52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnBpY2t1cF9sb2NhdGlvbiAmJiByZXMgIT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnBpY2t1cF9sb2NhdGlvbikge1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHsgcGlja3VwX2xhdF9sbmc6ICcnIH0pO1xuICAgICAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1sncGlja3VwX2xhdF9sbmcnXS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbG9jYXRpb24nXT8udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5kZWxpdmVyeV9sb2NhdGlvbiAmJiByZXMgIT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLmRlbGl2ZXJ5X2xvY2F0aW9uKSB7XG4gICAgICAgIHRoaXMuYWRkUm91dGVGb3JtLnBhdGNoVmFsdWUoeyBkZWxpdmVyeV9sYXRfbG5nOiAnJyB9KTtcbiAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0uY29udHJvbHNbJ2RlbGl2ZXJ5X2xhdF9sbmcnXS5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmb3JtSW5pdCgpIHtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgcm91dGVfbmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgY3VzdG9tZXJfbmFtZTogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9LCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgY3VzdG9tZXJfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgICBtYXRlcmlhbHNfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHVuaXRfaWQ6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHBhdGg6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHBpY2t1cF9sb2NhdGlvbjogbmV3IEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgcGlja3VwX2xhdF9sbmc6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGRlbGl2ZXJ5X2xvY2F0aW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBkZWxpdmVyeV9sYXRfbG5nOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBlc3RpbWF0ZWRfZGlzdGFuY2U6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGVzdGltYXRlZF90aW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBub3RlOiBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyMDQ4KV0pLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcGF0Y2hGb3JtVmFsdWUoZGF0YT86IFJvdXRlKSB7XG4gICAgdGhpcy5hZGRSb3V0ZUZvcm0ucmVzZXQoKTtcbiAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKGRhdGEhKTtcbiAgICB0aGlzLnJvdXRlSWQgPSBkYXRhPy5yb3V0ZV9pZDtcbiAgICB0aGlzLnJvdXRlRGV0YWlscyA9IGRhdGEgPyB7IHBpY2t1cF9sb2NhdGlvbjogZGF0YS5waWNrdXBfbG9jYXRpb24sIGRlbGl2ZXJ5X2xvY2F0aW9uOiBkYXRhLmRlbGl2ZXJ5X2xvY2F0aW9uIH0gOiBudWxsO1xuICAgIHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHsgaWYgKHRoaXMucHJldmVudEluaXRpYWxTYXZlKSB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IGZhbHNlIH1cbiAgICB9KTtcbiAgICB0aGlzLmZpbHRlckN1c3RvbWVyTGlzdCgpO1xuICAgIGF3YWl0IHRydWU7XG4gIH1cblxuICBzZWxlY3RlZExvbmdMYXQodHlwZTogc3RyaW5nLCBldmVudDogYW55KSB7XG4gICAgaWYgKHR5cGUgPT09ICdwaWNrdXAnKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgcGlja3VwX2xhdF9sbmc6IChldmVudC5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSArICcsJyArIGV2ZW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKS50b1N0cmluZygpXG4gICAgICB9KTtcbiAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UuY2xlYXJCb3VuZFdpdGhDb3JkaW5hdGVzKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZGVsaXZlcnknKSB7XG4gICAgICB0aGlzLmFkZFJvdXRlRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgZGVsaXZlcnlfbGF0X2xuZzogKGV2ZW50Lmdlb21ldHJ5LmNvb3JkaW5hdGVzWzFdICsgJywnICsgZXZlbnQuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pLnRvU3RyaW5nKClcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMuY2hlY2tBbmRGZXRjaFJvdXRlSW5mb3JtYXRpb24oKTtcbiAgfVxuXG4gIGNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKGlzaW5pdGlhbD86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5hZGRSb3V0ZUZvcm0udmFsdWU/LmRlbGl2ZXJ5X2xhdF9sbmc/Lmxlbmd0aCA+IDAgJiYgdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWU/LnBpY2t1cF9sYXRfbG5nPy5sZW5ndGggPiAwICYmIHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLnVuaXRfaWQpIHtcbiAgICAgIGxldCB1bml0ID0gdGhpcy51bml0c0xpc3QuZmluZCgoeDogYW55KSA9PiB4LmlkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKTtcbiAgICAgIGNvbnN0IHBhcmFtID0ge1xuICAgICAgICBkZWxpdmVyeV9sYXRfbG5nOiB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS5kZWxpdmVyeV9sYXRfbG5nLFxuICAgICAgICBwaWNrdXBfbGF0X2xuZzogdGhpcy5hZGRSb3V0ZUZvcm0udmFsdWUucGlja3VwX2xhdF9sbmcsXG4gICAgICAgIHVuaXQ6IHVuaXQ/LnR5cGVcbiAgICAgIH07XG4gICAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdjYWxjdWxhdGUvcm91dGVzL2VzdGltYXRpb24nLCBwYXJhbSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzICYmIHJlc1sncGF0aCddKSB7XG4gICAgICAgICAgdGhpcy5hZGRSb3V0ZUZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBlc3RpbWF0ZWRfZGlzdGFuY2U6IHJlcy5kaXN0LCBlc3RpbWF0ZWRfdGltZTogcmVzLnRpbWUsIHBhdGg6IHJlcy5wYXRoXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IHBhdGggPSByZXNbJ3BhdGgnXS5zcGxpdCgnOycpO1xuICAgICAgICAgIHBhdGggPSBwYXRoLm1hcCgoZWxlOiBzdHJpbmcgfCBhbnkpID0+IHsgcmV0dXJuIGVsZSA9IHRoaXMuZm9ybWF0ZUxhdExvbmcoZWxlKSB9KTtcbiAgICAgICAgICByZXNbJ3BhdGgnXSA9IHBhdGg7XG4gICAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiBbeyB0eXBlOiAnRmVhdHVyZScsIHByb3BlcnRpZXM6IHt9LCBnZW9tZXRyeTogeyB0eXBlOiAnTGluZVN0cmluZycsIGNvb3JkaW5hdGVzOiByZXNbJ3BhdGgnXSB9IH1dXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy51bml0c0xpc3QuZmluZCgoeDogYW55KSA9PiB4LmlkID09PSB0aGlzLmFkZFJvdXRlRm9ybS52YWx1ZS51bml0X2lkKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGVyaWFsRGV0YWlscyA9IHRoaXMubWF0ZXJpYWxzTGlzdC5maW5kKCh4OiBhbnkpID0+IHgubWF0ZXJpYWxfaWQgPT09IHRoaXMuYWRkUm91dGVGb3JtLnZhbHVlLm1hdGVyaWFsc19pZCk7XG4gICAgICAgICAgICB0aGlzLmNvb2xNYXBTZXJ2aWNlLmxvYWRNYXBQcm9wZXJ0eShlbGVtZW50LCAxLCB1bml0Py50eXBlLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGlja3VwX2xvY2F0aW9uOiB0aGlzLmFkZFJvdXRlRm9ybS5nZXQoJ3BpY2t1cF9sb2NhdGlvbicpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICBkZWxpdmVyeV9sb2NhdGlvbjogdGhpcy5hZGRSb3V0ZUZvcm0uZ2V0KCdkZWxpdmVyeV9sb2NhdGlvbicpPy52YWx1ZSxcbiAgICAgICAgICAgICAgICByb3V0ZV9uYW1lOiB0aGlzLmFkZFJvdXRlRm9ybS5nZXQoJ3JvdXRlX25hbWUnKT8udmFsdWUsXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWw6IG1hdGVyaWFsRGV0YWlscz8ubWF0ZXJpYWwsIHVuaXQ6IHVuaXQ/LnR5cGVcbiAgICAgICAgICAgICAgfSkudGhlbigocmVzKSA9PiB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzWydzdGF0dXMnXSwgJ2Vycm9yJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGVJZCAmJiBpc2luaXRpYWwpIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7IHRoaXMuY29vbE1hcFNlcnZpY2UucmVtb3ZlUm91dGVBbmRNYXJrZXIoMSkgfVxuICB9XG5cbiAgZm9ybWF0ZUxhdExvbmcobGF0bG9uZzogc3RyaW5nKSB7IHJldHVybiBsYXRsb25nID8gbGF0bG9uZy5zcGxpdCgnLCcpLm1hcCh4ID0+ICt4KS5yZXZlcnNlKCkgOiBudWxsIH1cbiAgc2F2ZVJvdXRlKCkge1xuICAgIGlmICh0aGlzLmFkZFJvdXRlRm9ybS52YWxpZCkge1xuICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYWRkUm91dGVGb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgICBkYXRhWyd0cnVja2VyX3BheV9lc3RpbWF0ZSddID0gbnVsbDtcbiAgICAgIGRhdGFbJ2N1c3RvbWVyX3ByaWNlX2VzdGltYXRlJ10gPSBudWxsO1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5yb3V0ZUlkID8gdGhpcy51dGlscy5wb3N0ZGF0YSgndXBkYXRlL3JvdXRlcycsIGRhdGEpIDogdGhpcy51dGlscy5wb3N0ZGF0YSgnYWRkL3JvdXRlcycsIGRhdGEpXG4gICAgICBpZiAodGhpcy5yb3V0ZUlkKSBkYXRhWydpZCddID0gdGhpcy5yb3V0ZUlkO1xuICAgICAgdXJsLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVSb3V0ZUxpc3QuZW1pdCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcihyZXMubWVzc2FnZSwgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB0aGlzLnByZXZlbnRJbml0aWFsU2F2ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICAgICAgaWYgKCF0aGlzLnJvdXRlSWQpIHRoaXMuY2hhbmdlTmF2Lm5leHQoJ0FkZHJvdXRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIocmVzLm1lc3NhZ2UsICdlcnJvcicpO1xuICAgICAgICAgIHRoaXMucHJldmVudFNhdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LCAoZXJyKSA9PiB7IGlmIChlcnIpIHsgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7IH0gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkUm91dGVGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB9XG4gIH1cbiAgZGVsZXRlUm91dGUoKSB7XG4gICAgdGhpcy5wcmV2ZW50U2F2ZSA9IGZhbHNlO1xuICAgIHRoaXMudXRpbHMucG9zdGRhdGEoJ2RlbGV0ZS9yb3V0ZXMnLCB7IHV1aWQ6IHRoaXMucm91dGVJZCB9KS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXNbJ2RhdGEnXVsnc3VjY2VzcyddKSB7XG4gICAgICAgIHRoaXMudXRpbHMub3BlblNuYWNrQmFyKHJlc1snZGF0YSddWydtZXNzYWdlJ10sICdzdWNjZXNzJyk7XG4gICAgICAgIHRoaXMudXBkYXRlUm91dGVMaXN0LmVtaXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuY2hhbmdlTmF2Lm5leHQoJ0FkZHJvdXRlJyk7XG4gICAgICAgIHRoaXMucHJldmVudEluaXRpYWxTYXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmV2ZW50U2F2ZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcignU29tdGhpbmcgd2VudCB3cm9uZycsICdlcnJvcicpO1xuICAgICAgICB0aGlzLnByZXZlbnRTYXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCAoZXJyKSA9PiB7IHRoaXMucHJldmVudFNhdmUgPSB0cnVlIH0pXG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZXIkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95ZXIkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGRyb3V0ZWJveFwiPlxuICA8ZGl2IGNsYXNzPVwicm91dGVkZXRhaWxib3hcIiAqbmdJZj1cImVuYWJsZVBvcFVwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlYnRucm91dGVkZXRhaWxcIj5cbiAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwicHJldmFudFBvcHVwQ2xvc2UgPSBmYWxzZTsgZW5hYmxlUG9wVXAgPSBmYWxzZTtcIj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImRlc3RpbmF0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHVyYXRpb25cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJwaWNrcHJ0XCI+PGI+UGlja3VwOjwvYj57e3BvcHVwRGV0YWlsc1sncGlja3VwX2xvY2F0aW9uJ119fTwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJkcm9wcHJ0XCI+PGI+RGVsaXZlcnk6PC9iPnt7cG9wdXBEZXRhaWxzWydkZWxpdmVyeV9sb2NhdGlvbiddfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuPjxiPk5hbWU6PC9iPiB7e3BvcHVwRGV0YWlsc1sncm91dGVfbmFtZSddfX08L3NwYW4+XG4gICAgICA8c3Bhbj48Yj5DdXN0b21lcjo8L2I+IHt7cG9wdXBEZXRhaWxzWydjdXN0b21lcl9uYW1lJ119fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPk1hdGVyaWFsOjwvYj4ge3twb3B1cERldGFpbHNbJ21hdGVyaWFsJ119fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPlR5cGU6PC9iPiB7e3BvcHVwRGV0YWlsc1sndW5pdCddfX08L3NwYW4+XG4gICAgICA8c3Bhbj48Yj5EaXN0YW5jZTo8L2I+IHt7cG9wdXBEZXRhaWxzWydlc3RpbWF0ZWRfZGlzdGFuY2UnXX19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+VHJhdmVsIFRpbWU6PC9iPiB7e3BvcHVwRGV0YWlsc1snZXN0aW1hdGVkX3RpbWUnXX19PC9zcGFuPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cInJvdXRlbm90ZXNcIj48Yj5Ob3Rlczo8L2I+IHt7cG9wdXBEZXRhaWxzWydub3RlJ119fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlVHh0XCI+XG4gICAgICA8c21hbGw+XG4gICAgICAgIENyZWF0ZWQgYnkge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYnlfbmFtZSddfX0gb24ge3twb3B1cERldGFpbHNbJ2NyZWF0ZWRfYXQnXX19XG4gICAgICA8L3NtYWxsPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImVkaXRidG5cIiAoY2xpY2spPVwiZWRpdEV2ZW50KClcIj5FZGl0PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiYWRkX2FkZF9yb3V0ZV9ib3hcIiBjZGtEcmFnIFtzdHlsZS52aXNpYmlsaXR5XT1cIiFlbmFibGVGb3JtID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICA8ZGl2IGNsYXNzPVwidG9waGVhZGluZ3BydFwiPlxuICAgICAgPGgyPiB7e3JvdXRlSWQ/ICdFRElUJyA6ICdBREQnfX0gUk9VVEUgPC9oMj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25wcnRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJvdXRlSWRcIiBjbGFzcz1cImRlbGJ0blwiIChjbGljayk9XCJvcGVuRGlhbG9nKClcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJjbG9zZWJ0blwiIChjbGljayk9XCJjaGFuZ2VOYXYubmV4dCgnQWRkcm91dGUnKVwiPkNsb3NlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImFkZFJvdXRlRm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdXRlX2Zvcm1fYXJlYVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlJvdXRlIE5hbWU8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyb3V0ZV9uYW1lXCIgYXV0b2NvbXBsZXRlPVwibm9wZVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydyb3V0ZV9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgUm91dGUgTmFtZSBpcyByZXF1aXJlZFxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiQ3VzdG9tZXIgTmFtZVwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImN1c3RvbWVyX25hbWVcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBjdXN0b21lciBvZiBjdXN0b21lcnNMaXN0JCB8IGFzeW5jXCIgW3ZhbHVlXT1cImN1c3RvbWVyWydjdXN0b21lcl9uYW1lJ11cIj5cbiAgICAgICAgICAgICAgICB7e2N1c3RvbWVyWydjdXN0b21lcl9uYW1lJ119fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydjdXN0b21lcl9uYW1lJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgQ3VzdG9tZXIgbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8bWF0LWxhYmVsPlBpY2t1cDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBtYXRJbnB1dCAjZmlsdGVyUGlja3VwIFttYXRBdXRvY29tcGxldGVdPVwicGlja3VwQXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGlja3VwX2xvY2F0aW9uXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cblxuICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI3BpY2t1cEF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2VsZWN0ZWRMb25nTGF0KCdwaWNrdXAnLCBvcHRpb24pXCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwaWNrdXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uPy5wbGFjZV9uYW1lXCI+XG4gICAgICAgICAgICAgICAge3tvcHRpb24/LnBsYWNlX25hbWV9fVxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLnRvdWNoZWQgJiYgYWRkUm91dGVGb3JtLmNvbnRyb2xzWydwaWNrdXBfbGF0X2xuZyddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHBpY2t1cCBsb2NhdGlvbiBmcm9tIHRoZSBsaXN0LlxuICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5EZWxpdmVyeTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBtYXRJbnB1dCAjZmlsdGVyRGVsaXZlcnkgW21hdEF1dG9jb21wbGV0ZV09XCJkZWxpdmVyeUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlbGl2ZXJ5X2xvY2F0aW9uXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNkZWxpdmVyeUF1dG9jb21wbGV0ZT1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwic2VsZWN0ZWRMb25nTGF0KCdkZWxpdmVyeScsIG9wdGlvbilcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGRlbGl2ZXJ5T3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbj8ucGxhY2VfbmFtZVwiPlxuICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5wbGFjZV9uYW1lfX1cbiAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snZGVsaXZlcnlfbGF0X2xuZyddLnRvdWNoZWQgJiYgYWRkUm91dGVGb3JtLmNvbnRyb2xzWydkZWxpdmVyeV9sYXRfbG5nJ10uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgZGVsaXZlcnkgbG9jYXRpb24gZnJvbSB0aGUgbGlzdC5cbiAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDxtYXQtbGFiZWw+Tm90ZXM8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBzdHlsZT1cImhlaWdodDogMThweDsgcmVzaXplOiBub25lO1wiIG1hdElucHV0IG5hbWU9XCJcIiBpZD1cIlwiIGNvbHM9XCIzMFwiIHJvd3M9XCIxMFwiIGZvcm1Db250cm9sTmFtZT1cIm5vdGVcIiBhdXRvY29tcGxldGU9XCJub3BlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1snbm90ZSddLmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiPlxuICAgICAgICAgICAgICBOb3RlcyBzaG91bGQgYmUgd2l0aGluIDIwNDggY2hhcmFjdGVycy5cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBkLWZsZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+VW5pdCB0eXBlPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInVuaXRfaWRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cImNoZWNrQW5kRmV0Y2hSb3V0ZUluZm9ybWF0aW9uKClcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB1bml0IG9mIHVuaXRzTGlzdFwiIFt2YWx1ZV09XCJ1bml0Py5pZFwiPiB7e3VuaXQ/LnR5cGV9fSA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImFkZFJvdXRlRm9ybS5jb250cm9sc1sndW5pdF9pZCddLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgVW5pdCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXRib3ggbS0wXCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgIDxtYXQtbGFiZWw+TWF0ZXJpYWw8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibWF0ZXJpYWxzX2lkXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWF0ZXJpYWwgb2YgbWF0ZXJpYWxzTGlzdFwiIFt2YWx1ZV09XCJtYXRlcmlhbD8ubWF0ZXJpYWxfaWRcIj4ge3ttYXRlcmlhbD8ubWF0ZXJpYWx9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwiYWRkUm91dGVGb3JtLmNvbnRyb2xzWydtYXRlcmlhbHNfaWQnXS5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgIE1ldGVyaWFsIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgIDxhcHAtZXN0aW1hdGlvbi1kaXNwbGF5ICpuZ0lmPVwiYWRkUm91dGVGb3JtPy52YWx1ZT8ucGlja3VwX2xhdF9sbmcgJiYgYWRkUm91dGVGb3JtPy52YWx1ZT8uZGVsaXZlcnlfbGF0X2xuZ1wiIFt2YWx1ZV09XCJhZGRSb3V0ZUZvcm1bJ3ZhbHVlJ11cIj48L2FwcC1lc3RpbWF0aW9uLWRpc3BsYXk+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoY2xpY2spPVwic2F2ZVJvdXRlKClcIiAqbmdJZj1cInByZXZlbnRTYXZlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiYWRkUm91dGVGb3JtLmludmFsaWQgJiYgcHJldmVudFNhdmUgfHwgcHJldmVudEluaXRpYWxTYXZlXCI+e3tyb3V0ZUlkPyAnVXBkYXRlJyA6ICdTYXZlJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+XG4gICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiIXByZXZlbnRTYXZlXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -157,10 +157,10 @@ export class JobCodeComponent {
157
157
  }
158
158
  }
159
159
  JobCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeComponent, deps: [{ token: i1.UtilsService }, { token: i1.CoolmapService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
160
- JobCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: JobCodeComponent, selector: "app-job-code", inputs: { jobdetail: "jobdetail", customerRepoDetails: "customerRepoDetails" }, outputs: { clearJobDetails: "clearJobDetails" }, ngImport: i0, template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <div class=\"topheadingprt\" *ngIf=\"jobdetail['order_number']\">\n <h2>{{jobdetail['order_number']}}</h2>\n </div>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <span> <b> {{jobdetail.customer_name}} </b> Customer </span>\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\n </div>\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\n </div>\n\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:10px 20px;border-radius:20px;width:calc(100% - 315px);z-index:999;box-shadow:0 0 5px #0000001a;height:250px;cursor:move}@media (min-width: 1600px){.jobcode_detailprt{left:307px;width:calc(100% - 325px)}}.jobcode_detailprt .topheadingprt .driver_list ul{display:flex;width:450px;justify-content:flex-end}.jobcode_detailprt .topheadingprt .driver_list ul li{position:relative;margin:0 -6px 2px 0;cursor:pointer}.jobcode_detailprt .topheadingprt .driver_list ul li img{width:30px;height:30px;border-radius:100%;border:1px solid #fff}.jobcode_detailprt .topheadingprt .driver_list ul li:hover .driver_detail{display:flex}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail{position:absolute;top:-70px;left:-50px;display:none;will-change:transform;pointer-events:none;border-radius:10px;box-shadow:0 4px 4px #00000024;width:133px;background:white;text-align:center;padding:10px;flex-direction:column;font-size:.8125rem}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:117px;display:block}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail:after{width:0;height:0;border-top:15px solid white;border-left:10px solid transparent;border-right:10px solid transparent;z-index:1;content:\"\";position:absolute;filter:drop-shadow(0px 3px 1px rgba(0,0,0,.2));bottom:-14px;left:50%;transform:translate(-50%)}.jobcode_detailprt .topheadingprt .driver_list ul li.extraicon{background:white;width:30px;height:30px;border-radius:100%;display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;border:1px solid #eee}.jobcode_detailprt .close{position:absolute;top:10px;right:20px;background:#e8e8e8;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.jobcode_detailprt .job_details_area{padding:15px 0}.jobcode_detailprt .job_details_area .detailnameprt{display:flex;justify-content:space-between}.jobcode_detailprt .job_details_area .detailnameprt span{display:flex;flex-direction:column;font-size:.875rem;color:#767676}.jobcode_detailprt .job_details_area .detailnameprt span b{font-size:.9375rem;font-weight:500;color:#000}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.overlap{z-index:9999}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { kind: "component", type: i6.JobRouteListComponent, selector: "app-job-route-list", inputs: ["routes", "selectedRoute", "masterRoutes"], outputs: ["changeNav", "changeRoutes", "changeSelectedRoute"] }, { kind: "component", type: i7.JobcodeStatusComponent, selector: "app-jobcode-status", inputs: ["jobValue"] }, { kind: "component", type: i8.JobcodeOverviewComponent, selector: "app-jobcode-overview", inputs: ["jobValue"] }] });
160
+ JobCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: JobCodeComponent, selector: "app-job-code", inputs: { jobdetail: "jobdetail", customerRepoDetails: "customerRepoDetails" }, outputs: { clearJobDetails: "clearJobDetails" }, ngImport: i0, template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\n </div>\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\n </div>\n\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:15px 20px;border-radius:20px;max-width:350px;z-index:999;box-shadow:0 0 5px #0000001a}.jobcode_detailprt .close{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { kind: "component", type: i6.JobRouteListComponent, selector: "app-job-route-list", inputs: ["routes", "selectedRoute", "masterRoutes"], outputs: ["changeNav", "changeRoutes", "changeSelectedRoute"] }, { kind: "component", type: i7.JobcodeStatusComponent, selector: "app-jobcode-status", inputs: ["jobValue"] }, { kind: "component", type: i8.JobcodeOverviewComponent, selector: "app-jobcode-overview", inputs: ["jobValue"] }] });
161
161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeComponent, decorators: [{
162
162
  type: Component,
163
- args: [{ selector: 'app-job-code', template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <div class=\"topheadingprt\" *ngIf=\"jobdetail['order_number']\">\n <h2>{{jobdetail['order_number']}}</h2>\n </div>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <span> <b> {{jobdetail.customer_name}} </b> Customer </span>\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\n </div>\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\n </div>\n\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:10px 20px;border-radius:20px;width:calc(100% - 315px);z-index:999;box-shadow:0 0 5px #0000001a;height:250px;cursor:move}@media (min-width: 1600px){.jobcode_detailprt{left:307px;width:calc(100% - 325px)}}.jobcode_detailprt .topheadingprt .driver_list ul{display:flex;width:450px;justify-content:flex-end}.jobcode_detailprt .topheadingprt .driver_list ul li{position:relative;margin:0 -6px 2px 0;cursor:pointer}.jobcode_detailprt .topheadingprt .driver_list ul li img{width:30px;height:30px;border-radius:100%;border:1px solid #fff}.jobcode_detailprt .topheadingprt .driver_list ul li:hover .driver_detail{display:flex}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail{position:absolute;top:-70px;left:-50px;display:none;will-change:transform;pointer-events:none;border-radius:10px;box-shadow:0 4px 4px #00000024;width:133px;background:white;text-align:center;padding:10px;flex-direction:column;font-size:.8125rem}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:117px;display:block}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail:after{width:0;height:0;border-top:15px solid white;border-left:10px solid transparent;border-right:10px solid transparent;z-index:1;content:\"\";position:absolute;filter:drop-shadow(0px 3px 1px rgba(0,0,0,.2));bottom:-14px;left:50%;transform:translate(-50%)}.jobcode_detailprt .topheadingprt .driver_list ul li.extraicon{background:white;width:30px;height:30px;border-radius:100%;display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;border:1px solid #eee}.jobcode_detailprt .close{position:absolute;top:10px;right:20px;background:#e8e8e8;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.jobcode_detailprt .job_details_area{padding:15px 0}.jobcode_detailprt .job_details_area .detailnameprt{display:flex;justify-content:space-between}.jobcode_detailprt .job_details_area .detailnameprt span{display:flex;flex-direction:column;font-size:.875rem;color:#767676}.jobcode_detailprt .job_details_area .detailnameprt span b{font-size:.9375rem;font-weight:500;color:#000}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.overlap{z-index:9999}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}\n"] }]
163
+ args: [{ selector: 'app-job-code', template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\n </div>\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\n </div>\n\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:15px 20px;border-radius:20px;max-width:350px;z-index:999;box-shadow:0 0 5px #0000001a}.jobcode_detailprt .close{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}\n"] }]
164
164
  }], ctorParameters: function () { return [{ type: i1.UtilsService }, { type: i1.CoolmapService }, { type: i1.CoolmapConfigModel, decorators: [{
165
165
  type: Inject,
166
166
  args: ['memberData']
@@ -171,4 +171,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
171
171
  }], clearJobDetails: [{
172
172
  type: Output
173
173
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9qb2ItY29kZS9qb2ItY29kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2pvYi1jb2RlL2pvYi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQVExQyxNQUFNLE9BQU8sZ0JBQWdCO0lBZ0IzQixZQUFtQixLQUFtQixFQUFTLE9BQXVCLEVBQ3RDLE1BQTBCO1FBRHZDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQWQxRCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFDZCxrQkFBYSxHQUFHLElBQUksY0FBYyxDQUFNLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFBQywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0Msb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFTL0IsSUFBSSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxV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QUFFO2dCQUN4QixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2FBQzlCO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO2FBQzdCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OzZHQTNJVSxnQkFBZ0IsNEVBaUJqQixZQUFZO2lHQWpCWCxnQkFBZ0IscUxDVjdCLGluSUE2RkE7MkZEbkZhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjOzswQkFxQnJCLE1BQU07MkJBQUMsWUFBWTs0Q0FoQk4sU0FBUztzQkFBeEIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBSVcsZUFBZTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgQ29vbG1hcFNlcnZpY2UsIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1qb2ItY29kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2pvYi1jb2RlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSm9iQ29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGpvYmRldGFpbCE6IGFueTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyUmVwb0RldGFpbHMhOiBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWw7XG4gIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICByb3V0ZXM6IFJvdXRlW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkUm91dGUgPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSlcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGVhckpvYkRldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IGlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgZGVzdHJveWVyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIGRldGFpbHNDYXJkRW5hYmxlOiBib29sZWFuIHwgc3RyaW5nO1xuICBwcmV2ZW50TW91c2VvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm91dGVDYXJkRGV0YWlsOiBSb3V0ZTtcbiAgcHJldmVudExpc3RVcGRhdGU6IGJvb2xlYW47XG4gIG1hc3RlclJvdXRlczogYW55O1xuICB1bml0TGlzdDogYW55O1xuICBtYXRlcmlhbHNMaXN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UsIHB1YmxpYyBjb29sTWFwOiBDb29sbWFwU2VydmljZSxcbiAgICBASW5qZWN0KCdtZW1iZXJEYXRhJykgcHJpdmF0ZSBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCkge1xuICAgIHRoaXMudXRpbHMuY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlT2JzZXJ2ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7IHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IHRoaXMuY2hlY2tBbmRDYWxsUm91dGVMaXN0KCkgfVxuICBjaGVja0FuZENhbGxSb3V0ZUxpc3QoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hVbml0c0xpc3QoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy51bml0TGlzdCA9IHJlcztcbiAgICAgICAgdGhpcy51dGlscy5mZXRjaE1hdGVyaWFsc0xpc3QoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLm1hdGVyaWFsc0xpc3QgPSByZXM7XG4gICAgICAgICAgdGhpcy5nZXRSb3V0ZUxpc3RGb3JDdXN0b21lcigpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldFJvdXRlTGlzdEZvckNvb2xNYXAoKVxuICAgIH1cbiAgfVxuICBnZXRVbml0TmFtZShkYXRhKTogc3RyaW5nIHtcbiAgICBsZXQgdW5pdE5hbWUgPSAnJztcbiAgICB0aGlzLnVuaXRMaXN0Lm1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLmlkID09PSBkYXRhLnVuaXRfaWQpIHtcbiAgICAgICAgdW5pdE5hbWUgPSByZXMudHlwZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVuaXROYW1lO1xuICB9XG5cbiAgZ2V0TWF0ZXJpYWxOYW1lKGRhdGEpOiBzdHJpbmcgeyAgICBcbiAgICBsZXQgbWF0ZXJpYWxOYW1lID0gJyc7XG4gICAgdGhpcy5tYXRlcmlhbHNMaXN0Lm1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLm1hdGVyaWFsX2lkID09PSBkYXRhLm1hdGVyaWFsX2lkKSB7XG4gICAgICAgIG1hdGVyaWFsTmFtZSA9IHJlcy5tYXRlcmlhbFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG1hdGVyaWFsTmFtZTtcbiAgfVxuICBnZXRSb3V0ZUxpc3RGb3JDb29sTWFwKCkge1xuICAgIHRoaXMudXRpbHMuZ2V0RGF0YSgncm91dGVzL2FsbCcpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXMgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5tYXN0ZXJSb3V0ZXMgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnV0aWxzLmNsZWFyT3B0aW9ucygpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgZ2V0Um91dGVMaXN0Rm9yQ3VzdG9tZXIoKSB7XG4gICAgY29uc3QgZGF0YXNldCA9IHtcbiAgICAgIGN1c3RvbWVyX2lkOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIuaWRcbiAgICB9XG4gICAgdGhpcy51dGlscy5wb3N0ZGF0YSgncm91dGVzL2FsbCcsIGRhdGFzZXQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXMgPSByZXMuZGF0YTtcbiAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnV0aWxzLmNsZWFyT3B0aW9ucygpO1xuICAgICAgICB0aGlzLnJvdXRlcy5tYXAoKGVsZTogUm91dGUpID0+IHtcbiAgICAgICAgICBlbGUudW5pdCA9IHRoaXMuZ2V0VW5pdE5hbWUoZWxlKTtcbiAgICAgICAgICBlbGUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsTmFtZShlbGUpO1xuICAgICAgICAgIHRoaXMudXRpbHMubWFrZU9wdGlvbnMoZWxlKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tYXN0ZXJSb3V0ZXMgPSB0aGlzLnJvdXRlcztcbiAgICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaCgoZWxlOiBSb3V0ZSkgPT4geyB0aGlzLnV0aWxzLm1ha2VPcHRpb25zKGVsZSkgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVTaWRlbWVudSgpIHtcbiAgICB0aGlzLmlzVmlzaWJsZSA9ICF0aGlzLmlzVmlzaWJsZTtcbiAgICB0aGlzLmRldGFpbHNDYXJkRW5hYmxlID0gZmFsc2U7XG4gICAgdGhpcy5wcmV2ZW50TW91c2VvdXQgPSBmYWxzZVxuICB9XG4gIGNsZWFySm9iKCkgeyB0aGlzLmNsZWFySm9iRGV0YWlscy5lbWl0KHRydWUpOyB0aGlzLnV0aWxzLnByZVZlbnRKb2JkZXRhaWxjbG9zZS5uZXh0KGZhbHNlKSB9XG4gIHNlbGVjdFJvdXRlKGV2ZW50OiBSb3V0ZSkge1xuICAgIGNvbnN0IGkgPSB0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQuZmluZEluZGV4KGVsZSA9PiBlbGVbJ29yZGVyX251bWJlciddID09PSBldmVudFsnb3JkZXJfbnVtYmVyJ10pO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS50b2dnbGUoZXZlbnQpO1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJvdXRlLmlzU2VsZWN0ZWQoZXZlbnQpICYmIGV2ZW50Wydyb3V0ZV9pZCddKSB7XG4gICAgICB0aGlzLmNvb2xNYXAucmVtb3ZlUm91dGVBbmRNYXJrZXIoZXZlbnRbJ3JvdXRlX2lkJ10pLnRoZW4oKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY29vbE1hcC5leHRlbmRSZUJvdW5kKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShldmVudCwgZXZlbnRbJ3JvdXRlX2lkJ10sICdqb2Jyb3V0ZUxpc3QnLCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuICB9XG4gIG1hc3RlclRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXMubGVuZ3RoID09PSB0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm91dGUuY2xlYXIoKTtcbiAgICAgIHRoaXMucm91dGVzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZVJvdXRlQW5kTWFya2VyKHJvd1sncm91dGVfaWQnXSkudGhlbigocmVzOiBhbnkpID0+IHsgdGhpcy5jb29sTWFwLmV4dGVuZFJlQm91bmQoKSB9KVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdChyb3cpO1xuICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKHJvdywgcm93Wydyb3V0ZV9pZCddLCAnam9icm91dGVMaXN0JywgZmFsc2UsIHRydWUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHRvZ2dsZXJvdXRlRGV0YWlscyhldmVudFR5cGU6IHN0cmluZyB8IGJvb2xlYW4sIHJvdXRlOiBSb3V0ZSwgbW91c2VPdXQ/OiBib29sZWFuKSB7XG4gICAgaWYgKHR5cGVvZiAoZXZlbnRUeXBlKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMucHJldmVudE1vdXNlb3V0ID0gdHJ1ZTsgdGhpcy51dGlscy5zZXRkaWN0VmFsdWUoJ3JvdXRlLWRldGFpbHMnLCBKU09OLnN0cmluZ2lmeShyb3V0ZSkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIChldmVudFR5cGUpID09PSAnYm9vbGVhbicgJiYgZXZlbnRUeXBlICYmICF0aGlzLnByZXZlbnRNb3VzZW91dCkgeyB0aGlzLmRldGFpbHNDYXJkRW5hYmxlID0gZXZlbnRUeXBlIH07XG4gICAgaWYgKHR5cGVvZiAoZXZlbnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmICFldmVudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuZGV0YWlsc0NhcmRFbmFibGUgPSBldmVudFR5cGUgfTtcbiAgICBpZiAodGhpcy5wcmV2ZW50TW91c2VvdXQgJiYgIXRoaXMuZGV0YWlsc0NhcmRFbmFibGUpIHRoaXMucHJldmVudE1vdXNlb3V0ID0gZmFsc2U7XG4gICAgaWYgKG1vdXNlT3V0KSB7XG4gICAgICBpZiAodGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcbiAgICAgICAgcm91dGUgPSB0aGlzLnV0aWxzLmdldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlscycpO1xuICAgICAgICB0aGlzLnJvdXRlQ2FyZERldGFpbCA9IHJvdXRlO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnByZXZlbnRNb3VzZW91dCkge1xuICAgICAgICB0aGlzLnJvdXRlQ2FyZERldGFpbCA9IHJvdXRlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm91dGVDYXJkRGV0YWlsID0gcm91dGVcbiAgICB9XG4gICAgdGhpcy5yb3V0ZUNhcmREZXRhaWxbJ2NyZWF0ZWRfYXQnXSA9IHRoaXMudXRpbHMuZ2V0RGF0ZUZvcm1hdChuZXcgRGF0ZSh0aGlzLnJvdXRlQ2FyZERldGFpbFsnY3JlYXRlZF9hdCddKSwgJy8nKTtcbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llciQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3llciQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImpvYmNvZGVfZGV0YWlscHJ0XCIgKGNsaWNrKT1cImlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IGZhbHNlXCIgICpuZ0lmPVwiam9iZGV0YWlsXCIgW25nQ2xhc3NdPVwieydvdmVybGFwJzogIWlzT3ZlcmxhcFJvdXRlU2VjdGlvbn1cIiBjZGtEcmFnPlxuICA8ZGl2IGNsYXNzPVwidG9waGVhZGluZ3BydFwiICpuZ0lmPVwiam9iZGV0YWlsWydvcmRlcl9udW1iZXInXVwiPlxuICAgIDxoMj57e2pvYmRldGFpbFsnb3JkZXJfbnVtYmVyJ119fTwvaDI+XG4gIDwvZGl2PlxuICA8c3BhbiBjbGFzcz1cImNsb3NlXCI+PG1hdC1pY29uIChjbGljayk9XCJjbGVhckpvYigpXCI+Y2xlYXI8L21hdC1pY29uPjwvc3Bhbj5cbiAgPGRpdiBjbGFzcz1cImpvYl9kZXRhaWxzX2FyZWFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsbmFtZXBydFwiPlxuICAgICAgPHNwYW4+IDxiPiB7e2pvYmRldGFpbC5jdXN0b21lcl9uYW1lfX0gPC9iPiBDdXN0b21lciA8L3NwYW4+XG4gICAgICA8YXBwLWpvYmNvZGUtc3RhdHVzIFtqb2JWYWx1ZV09XCJqb2JkZXRhaWxcIj48L2FwcC1qb2Jjb2RlLXN0YXR1cz5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWpvYmNvZGUtb3ZlcnZpZXcgW2pvYlZhbHVlXT1cImpvYmRldGFpbFwiPjwvYXBwLWpvYmNvZGUtb3ZlcnZpZXc+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJyb3V0ZV9saXN0cHJ0XCIgKGNsaWNrKT1cImlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IHRydWVcIiBbbmdDbGFzc109XCJ7ICdzaG93JzogaXNWaXNpYmxlLCAnb3ZlcmxhcCc6IGlzT3ZlcmxhcFJvdXRlU2VjdGlvbn1cIj5cbiAgPGRpdiBjbGFzcz1cImxpc3RpbmdfdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVtZW51KClcIj5cbiAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvcm91dGUuc3ZnXCIgYWx0PVwiXCIgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImxpc3RpbmdfYm94XCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlYnRuXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVtZW51KClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnRucHJ0XCI+XG4gICAgICA8aDI+IExpc3Qgb2YgUm91dGVzIDwvaDI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJtYXN0ZXJUb2dnbGUoKVwiPnt7cm91dGVzICYmIHJvdXRlcy5sZW5ndGggPiAwICYmIHJvdXRlcy5sZW5ndGggPT09IHNlbGVjdGVkUm91dGUuc2VsZWN0ZWQubGVuZ3RoID8gJ1VuY2hlY2snIDogJ0NoZWNrJ319IEFsbDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGFwcC1qb2Itcm91dGUtbGlzdCBbcm91dGVzXT1cInJvdXRlc1wiIFttYXN0ZXJSb3V0ZXNdPVwibWFzdGVyUm91dGVzXCIgW3NlbGVjdGVkUm91dGVdPVwic2VsZWN0ZWRSb3V0ZVwiIChjaGFuZ2VSb3V0ZXMpPVwicm91dGVzID0gJGV2ZW50XCIgKGNoYW5nZVNlbGVjdGVkUm91dGUpPVwic2VsZWN0ZWRSb3V0ZSA9ICRldmVudFwiPjwvYXBwLWpvYi1yb3V0ZS1saXN0PlxuXG4gICAgPHBlcmZlY3Qtc2Nyb2xsYmFyPlxuICAgICAgPHVsICpuZ0lmPVwicm91dGVzWydsZW5ndGgnXSA+IDBcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBsaXN0IG9mIHJvdXRlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29ucHJ0XCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cInNlbGVjdGVkUm91dGUuaXNTZWxlY3RlZChsaXN0KVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3RSb3V0ZShsaXN0KSA6IG51bGxcIiAvPjxsYWJlbD4mbmJzcDs8L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzdW5pdFwiIFtuZ0NsYXNzXT1cImxpc3RbJ3VuaXQnXVwiPnt7bGlzdFsndW5pdCddfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIChtb3VzZWVudGVyKT1cInRvZ2dsZXJvdXRlRGV0YWlscyh0cnVlLCBsaXN0KVwiIChtb3VzZW91dCk9XCJ0b2dnbGVyb3V0ZURldGFpbHMoZmFsc2UsIGxpc3QsIHRydWUpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZXJvdXRlRGV0YWlscygnY2xpY2snLCBsaXN0KVwiIHNyYz1cImFzc2V0cy9pbWFnZXMvaW5mb19pY29uLnBuZ1wiIFthbHRdPVwiXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrcHJ0Ym94XCI+XG4gICAgICAgICAgICA8aDI+IHt7bGlzdFsncm91dGVfbmFtZSddfX0gPC9oMj5cbiAgICAgICAgICAgIDxoMz57e2xpc3RbJ2N1c3RvbWVyX25hbWUnXX19IHwge3tsaXN0WydtYXRlcmlhbCddfX08L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tkcm9wcHJ0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrcHJ0XCI+XG4gICAgICAgICAgICAgICAgPGI+XG4gICAgICAgICAgICAgICAgICA8aDQ+e3tsaXN0WydwaWNrdXBfbG9jYXRpb24nXX19PC9oND5cbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBydFwiPlxuICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgPGg0Pnt7bGlzdFsnZGVsaXZlcnlfbG9jYXRpb24nXX19PC9oND5cbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPHAgc3R5bGU9XCJjb2xvcjogI2ZmZjtcIiAqbmdJZj1cInJvdXRlcy5sZW5ndGggPT09IDBcIj5ObyBSb3V0ZSBmb3VuZDwvcD5cbiAgICA8L3BlcmZlY3Qtc2Nyb2xsYmFyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm91dGVfZGV0YWlsXCIgKm5nSWY9XCJkZXRhaWxzQ2FyZEVuYWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0bnJvdXRlZGV0YWlsXCIgKGNsaWNrKT1cImRldGFpbHNDYXJkRW5hYmxlID0gZmFsc2U7IHByZXZlbnRNb3VzZW91dCA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkZXN0aW5hdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImR1cmF0aW9uXCI+XG4gICAgICAgIDxwIGNsYXNzPVwicGlja3BydFwiPjxiPlBpY2t1cDo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy5waWNrdXBfbG9jYXRpb259fTwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJkcm9wcHJ0XCI+PGI+RGVsaXZlcnk6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8uZGVsaXZlcnlfbG9jYXRpb259fSA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuPjxiPk5hbWU6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8ucm91dGVfbmFtZX19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+Q3VzdG9tZXI6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8uY3VzdG9tZXJfbmFtZX19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+TWF0ZXJpYWw6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8ubWF0ZXJpYWx9fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPlR5cGU6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8udW5pdH19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+RGlzdGFuY2U6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8uZXN0aW1hdGVkX2Rpc3RhbmNlfX08L3NwYW4+XG4gICAgICA8c3Bhbj48Yj5UcmF2ZWwgVGltZTo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy5lc3RpbWF0ZWRfdGltZX19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJub3Rlc1wiPjxiPk5vdGVzOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/Lm5vdGV9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcmVhdGVUeHRcIj5cbiAgICAgIDxzbWFsbD5cbiAgICAgICAgQ3JlYXRlZCBieSB7e3JvdXRlQ2FyZERldGFpbD8uY3JlYXRlZF9ieV9uYW1lfX0gb24ge3tyb3V0ZUNhcmREZXRhaWw/LmNyZWF0ZWRfYXR9fVxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9qb2ItY29kZS9qb2ItY29kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2pvYi1jb2RlL2pvYi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQVExQyxNQUFNLE9BQU8sZ0JBQWdCO0lBZ0IzQixZQUFtQixLQUFtQixFQUFTLE9BQXVCLEVBQ3RDLE1BQTBCO1FBRHZDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN0QyxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQWQxRCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFDZCxrQkFBYSxHQUFHLElBQUksY0FBYyxDQUFNLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFBQywwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0Msb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFTL0IsSUFBSSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMxRixJQUFJLEdBQUc7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLEtBQVcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQ2pELHFCQUFxQjtRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztvQkFDekIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUE7U0FDOUI7SUFDSCxDQUFDO0lBQ0QsV0FBVyxDQUFDLElBQUk7UUFDZCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN4QixJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDM0IsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBSTtRQUNsQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM3QixJQUFJLEdBQUcsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDeEMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUE7YUFDNUI7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUN2RixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNELHVCQUF1QjtRQUNyQixNQUFNLE9BQU8sR0FBRztZQUNkLFdBQVcsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDbEQsQ0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2pHLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztnQkFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFVLEVBQUUsRUFBRTtvQkFDN0IsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNqQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUM3QixDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7SUFDOUIsQ0FBQztJQUNELFFBQVEsS0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUM1RixXQUFXLENBQUMsS0FBWTtRQUN0QixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM5RCxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNyRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7SUFDRCxZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN6RyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RSxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUNELGtCQUFrQixDQUFDLFNBQTJCLEVBQUUsS0FBWSxFQUFFLFFBQWtCO1FBQzlFLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDOUY7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUFFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUE7U0FBRTtRQUFBLENBQUM7UUFDbkgsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUFFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUE7U0FBRTtRQUFBLENBQUM7UUFDcEgsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ2xGLElBQUksUUFBUSxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUN4QixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2FBQzlCO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO2FBQzdCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFBO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkgsQ0FBQztJQUNELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OzZHQTNJVSxnQkFBZ0IsNEVBaUJqQixZQUFZO2lHQWpCWCxnQkFBZ0IscUxDVjdCLGs3SEF5RkE7MkZEL0VhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxjQUFjOzswQkFxQnJCLE1BQU07MkJBQUMsWUFBWTs0Q0FoQk4sU0FBUztzQkFBeEIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUs7Z0JBSVcsZUFBZTtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgQ29vbG1hcFNlcnZpY2UsIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1qb2ItY29kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItY29kZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2pvYi1jb2RlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSm9iQ29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIGpvYmRldGFpbCE6IGFueTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyUmVwb0RldGFpbHMhOiBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWw7XG4gIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICByb3V0ZXM6IFJvdXRlW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkUm91dGUgPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSlcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGVhckpvYkRldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IGlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgZGVzdHJveWVyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIGRldGFpbHNDYXJkRW5hYmxlOiBib29sZWFuIHwgc3RyaW5nO1xuICBwcmV2ZW50TW91c2VvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm91dGVDYXJkRGV0YWlsOiBSb3V0ZTtcbiAgcHJldmVudExpc3RVcGRhdGU6IGJvb2xlYW47XG4gIG1hc3RlclJvdXRlczogYW55O1xuICB1bml0TGlzdDogYW55O1xuICBtYXRlcmlhbHNMaXN0OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UsIHB1YmxpYyBjb29sTWFwOiBDb29sbWFwU2VydmljZSxcbiAgICBASW5qZWN0KCdtZW1iZXJEYXRhJykgcHJpdmF0ZSBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCkge1xuICAgIHRoaXMudXRpbHMuY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlT2JzZXJ2ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGlmIChyZXMpIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7IHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7IHRoaXMuY2hlY2tBbmRDYWxsUm91dGVMaXN0KCkgfVxuICBjaGVja0FuZENhbGxSb3V0ZUxpc3QoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlcG9zaXRvcnkgPT09ICdjdXN0b21lcicpIHtcbiAgICAgIHRoaXMudXRpbHMuZmV0Y2hVbml0c0xpc3QoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy51bml0TGlzdCA9IHJlcztcbiAgICAgICAgdGhpcy51dGlscy5mZXRjaE1hdGVyaWFsc0xpc3QoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICB0aGlzLm1hdGVyaWFsc0xpc3QgPSByZXM7XG4gICAgICAgICAgdGhpcy5nZXRSb3V0ZUxpc3RGb3JDdXN0b21lcigpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldFJvdXRlTGlzdEZvckNvb2xNYXAoKVxuICAgIH1cbiAgfVxuICBnZXRVbml0TmFtZShkYXRhKTogc3RyaW5nIHtcbiAgICBsZXQgdW5pdE5hbWUgPSAnJztcbiAgICB0aGlzLnVuaXRMaXN0Lm1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLmlkID09PSBkYXRhLnVuaXRfaWQpIHtcbiAgICAgICAgdW5pdE5hbWUgPSByZXMudHlwZVxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIHVuaXROYW1lO1xuICB9XG5cbiAgZ2V0TWF0ZXJpYWxOYW1lKGRhdGEpOiBzdHJpbmcge1xuICAgIGxldCBtYXRlcmlhbE5hbWUgPSAnJztcbiAgICB0aGlzLm1hdGVyaWFsc0xpc3QubWFwKChyZXMpID0+IHtcbiAgICAgIGlmIChyZXMubWF0ZXJpYWxfaWQgPT09IGRhdGEubWF0ZXJpYWxfaWQpIHtcbiAgICAgICAgbWF0ZXJpYWxOYW1lID0gcmVzLm1hdGVyaWFsXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gbWF0ZXJpYWxOYW1lO1xuICB9XG4gIGdldFJvdXRlTGlzdEZvckNvb2xNYXAoKSB7XG4gICAgdGhpcy51dGlscy5nZXREYXRhKCdyb3V0ZXMvYWxsJykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnJvdXRlcyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLm1hc3RlclJvdXRlcyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLnByZXZlbnRMaXN0VXBkYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXRpbHMuY2xlYXJPcHRpb25zKCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBnZXRSb3V0ZUxpc3RGb3JDdXN0b21lcigpIHtcbiAgICBjb25zdCBkYXRhc2V0ID0ge1xuICAgICAgY3VzdG9tZXJfaWQ6IHRoaXMuY3VzdG9tZXJSZXBvRGV0YWlscy5jdXN0b21lci5pZFxuICAgIH1cbiAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdyb3V0ZXMvYWxsJywgZGF0YXNldCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnJvdXRlcyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLnByZXZlbnRMaXN0VXBkYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXRpbHMuY2xlYXJPcHRpb25zKCk7XG4gICAgICAgIHRoaXMucm91dGVzLm1hcCgoZWxlOiBSb3V0ZSkgPT4ge1xuICAgICAgICAgIGVsZS51bml0ID0gdGhpcy5nZXRVbml0TmFtZShlbGUpO1xuICAgICAgICAgIGVsZS5tYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWxOYW1lKGVsZSk7XG4gICAgICAgICAgdGhpcy51dGlscy5tYWtlT3B0aW9ucyhlbGUpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm1hc3RlclJvdXRlcyA9IHRoaXMucm91dGVzO1xuICAgICAgICB0aGlzLnJvdXRlcy5mb3JFYWNoKChlbGU6IFJvdXRlKSA9PiB7IHRoaXMudXRpbHMubWFrZU9wdGlvbnMoZWxlKSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVtZW51KCkge1xuICAgIHRoaXMuaXNWaXNpYmxlID0gIXRoaXMuaXNWaXNpYmxlO1xuICAgIHRoaXMuZGV0YWlsc0NhcmRFbmFibGUgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlXG4gIH1cbiAgY2xlYXJKb2IoKSB7IHRoaXMuY2xlYXJKb2JEZXRhaWxzLmVtaXQodHJ1ZSk7IHRoaXMudXRpbHMucHJlVmVudEpvYmRldGFpbGNsb3NlLm5leHQoZmFsc2UpIH1cbiAgc2VsZWN0Um91dGUoZXZlbnQ6IFJvdXRlKSB7XG4gICAgY29uc3QgaSA9IHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5maW5kSW5kZXgoZWxlID0+IGVsZVsnb3JkZXJfbnVtYmVyJ10gPT09IGV2ZW50WydvcmRlcl9udW1iZXInXSk7XG4gICAgdGhpcy5zZWxlY3RlZFJvdXRlLnRvZ2dsZShldmVudCk7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUm91dGUuaXNTZWxlY3RlZChldmVudCkgJiYgZXZlbnRbJ3JvdXRlX2lkJ10pIHtcbiAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcihldmVudFsncm91dGVfaWQnXSkudGhlbigocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb29sTWFwLmV4dGVuZFJlQm91bmQoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGV2ZW50LCBldmVudFsncm91dGVfaWQnXSwgJ2pvYnJvdXRlTGlzdCcsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIGlmICh0aGlzLnJvdXRlcy5sZW5ndGggPT09IHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLmNvb2xNYXAucmVtb3ZlUm91dGVBbmRNYXJrZXIocm93Wydyb3V0ZV9pZCddKS50aGVuKChyZXM6IGFueSkgPT4geyB0aGlzLmNvb2xNYXAuZXh0ZW5kUmVCb3VuZCgpIH0pXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0KHJvdyk7XG4gICAgICAgIHRoaXMuY29vbE1hcC5wbG90Um91dGUocm93LCByb3dbJ3JvdXRlX2lkJ10sICdqb2Jyb3V0ZUxpc3QnLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlcm91dGVEZXRhaWxzKGV2ZW50VHlwZTogc3RyaW5nIHwgYm9vbGVhbiwgcm91dGU6IFJvdXRlLCBtb3VzZU91dD86IGJvb2xlYW4pIHtcbiAgICBpZiAodHlwZW9mIChldmVudFR5cGUpID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5wcmV2ZW50TW91c2VvdXQgPSB0cnVlOyB0aGlzLnV0aWxzLnNldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlscycsIEpTT04uc3RyaW5naWZ5KHJvdXRlKSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgKGV2ZW50VHlwZSkgPT09ICdib29sZWFuJyAmJiBldmVudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuZGV0YWlsc0NhcmRFbmFibGUgPSBldmVudFR5cGUgfTtcbiAgICBpZiAodHlwZW9mIChldmVudFR5cGUpID09PSAnYm9vbGVhbicgJiYgIWV2ZW50VHlwZSAmJiAhdGhpcy5wcmV2ZW50TW91c2VvdXQpIHsgdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSA9IGV2ZW50VHlwZSB9O1xuICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCAmJiAhdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSkgdGhpcy5wcmV2ZW50TW91c2VvdXQgPSBmYWxzZTtcbiAgICBpZiAobW91c2VPdXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCkge1xuICAgICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzJyk7XG4gICAgICAgIHRoaXMucm91dGVDYXJkRGV0YWlsID0gcm91dGU7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMucHJldmVudE1vdXNlb3V0KSB7XG4gICAgICAgIHRoaXMucm91dGVDYXJkRGV0YWlsID0gcm91dGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZVxuICAgIH1cbiAgICB0aGlzLnJvdXRlQ2FyZERldGFpbFsnY3JlYXRlZF9hdCddID0gdGhpcy51dGlscy5nZXREYXRlRm9ybWF0KG5ldyBEYXRlKHRoaXMucm91dGVDYXJkRGV0YWlsWydjcmVhdGVkX2F0J10pLCAnLycpO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVyJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveWVyJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiam9iY29kZV9kZXRhaWxwcnRcIiAoY2xpY2spPVwiaXNPdmVybGFwUm91dGVTZWN0aW9uID0gZmFsc2VcIiAgKm5nSWY9XCJqb2JkZXRhaWxcIiBbbmdDbGFzc109XCJ7J292ZXJsYXAnOiAhaXNPdmVybGFwUm91dGVTZWN0aW9ufVwiIGNka0RyYWc+XG4gIDxzcGFuIGNsYXNzPVwiY2xvc2VcIj48bWF0LWljb24gKGNsaWNrKT1cImNsZWFySm9iKClcIj5jbGVhcjwvbWF0LWljb24+PC9zcGFuPlxuICA8ZGl2IGNsYXNzPVwiam9iX2RldGFpbHNfYXJlYVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxuYW1lcHJ0XCI+XG4gICAgICA8YXBwLWpvYmNvZGUtc3RhdHVzIFtqb2JWYWx1ZV09XCJqb2JkZXRhaWxcIj48L2FwcC1qb2Jjb2RlLXN0YXR1cz5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWpvYmNvZGUtb3ZlcnZpZXcgW2pvYlZhbHVlXT1cImpvYmRldGFpbFwiPjwvYXBwLWpvYmNvZGUtb3ZlcnZpZXc+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJyb3V0ZV9saXN0cHJ0XCIgKGNsaWNrKT1cImlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IHRydWVcIiBbbmdDbGFzc109XCJ7ICdzaG93JzogaXNWaXNpYmxlLCAnb3ZlcmxhcCc6IGlzT3ZlcmxhcFJvdXRlU2VjdGlvbn1cIj5cbiAgPGRpdiBjbGFzcz1cImxpc3RpbmdfdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVtZW51KClcIj5cbiAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvcm91dGUuc3ZnXCIgYWx0PVwiXCIgLz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImxpc3RpbmdfYm94XCI+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlYnRuXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVtZW51KClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYnRucHJ0XCI+XG4gICAgICA8aDI+IExpc3Qgb2YgUm91dGVzIDwvaDI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJtYXN0ZXJUb2dnbGUoKVwiPnt7cm91dGVzICYmIHJvdXRlcy5sZW5ndGggPiAwICYmIHJvdXRlcy5sZW5ndGggPT09IHNlbGVjdGVkUm91dGUuc2VsZWN0ZWQubGVuZ3RoID8gJ1VuY2hlY2snIDogJ0NoZWNrJ319IEFsbDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGFwcC1qb2Itcm91dGUtbGlzdCBbcm91dGVzXT1cInJvdXRlc1wiIFttYXN0ZXJSb3V0ZXNdPVwibWFzdGVyUm91dGVzXCIgW3NlbGVjdGVkUm91dGVdPVwic2VsZWN0ZWRSb3V0ZVwiIChjaGFuZ2VSb3V0ZXMpPVwicm91dGVzID0gJGV2ZW50XCIgKGNoYW5nZVNlbGVjdGVkUm91dGUpPVwic2VsZWN0ZWRSb3V0ZSA9ICRldmVudFwiPjwvYXBwLWpvYi1yb3V0ZS1saXN0PlxuXG4gICAgPHBlcmZlY3Qtc2Nyb2xsYmFyPlxuICAgICAgPHVsICpuZ0lmPVwicm91dGVzWydsZW5ndGgnXSA+IDBcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBsaXN0IG9mIHJvdXRlc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29ucHJ0XCI+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cInNlbGVjdGVkUm91dGUuaXNTZWxlY3RlZChsaXN0KVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3RSb3V0ZShsaXN0KSA6IG51bGxcIiAvPjxsYWJlbD4mbmJzcDs8L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzdW5pdFwiIFtuZ0NsYXNzXT1cImxpc3RbJ3VuaXQnXVwiPnt7bGlzdFsndW5pdCddfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIChtb3VzZWVudGVyKT1cInRvZ2dsZXJvdXRlRGV0YWlscyh0cnVlLCBsaXN0KVwiIChtb3VzZW91dCk9XCJ0b2dnbGVyb3V0ZURldGFpbHMoZmFsc2UsIGxpc3QsIHRydWUpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZXJvdXRlRGV0YWlscygnY2xpY2snLCBsaXN0KVwiIHNyYz1cImFzc2V0cy9pbWFnZXMvaW5mb19pY29uLnBuZ1wiIFthbHRdPVwiXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrcHJ0Ym94XCI+XG4gICAgICAgICAgICA8aDI+IHt7bGlzdFsncm91dGVfbmFtZSddfX0gPC9oMj5cbiAgICAgICAgICAgIDxoMz57e2xpc3RbJ2N1c3RvbWVyX25hbWUnXX19IHwge3tsaXN0WydtYXRlcmlhbCddfX08L2gzPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tkcm9wcHJ0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrcHJ0XCI+XG4gICAgICAgICAgICAgICAgPGI+XG4gICAgICAgICAgICAgICAgICA8aDQ+e3tsaXN0WydwaWNrdXBfbG9jYXRpb24nXX19PC9oND5cbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBydFwiPlxuICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgPGg0Pnt7bGlzdFsnZGVsaXZlcnlfbG9jYXRpb24nXX19PC9oND5cbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgICAgPHAgc3R5bGU9XCJjb2xvcjogI2ZmZjtcIiAqbmdJZj1cInJvdXRlcy5sZW5ndGggPT09IDBcIj5ObyBSb3V0ZSBmb3VuZDwvcD5cbiAgICA8L3BlcmZlY3Qtc2Nyb2xsYmFyPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicm91dGVfZGV0YWlsXCIgKm5nSWY9XCJkZXRhaWxzQ2FyZEVuYWJsZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0bnJvdXRlZGV0YWlsXCIgKGNsaWNrKT1cImRldGFpbHNDYXJkRW5hYmxlID0gZmFsc2U7IHByZXZlbnRNb3VzZW91dCA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkZXN0aW5hdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cImR1cmF0aW9uXCI+XG4gICAgICAgIDxwIGNsYXNzPVwicGlja3BydFwiPjxiPlBpY2t1cDo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy5waWNrdXBfbG9jYXRpb259fTwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJkcm9wcHJ0XCI+PGI+RGVsaXZlcnk6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8uZGVsaXZlcnlfbG9jYXRpb259fSA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuPjxiPk5hbWU6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8ucm91dGVfbmFtZX19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+Q3VzdG9tZXI6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8uY3VzdG9tZXJfbmFtZX19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+TWF0ZXJpYWw6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8ubWF0ZXJpYWx9fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPlR5cGU6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8udW5pdH19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+RGlzdGFuY2U6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8uZXN0aW1hdGVkX2Rpc3RhbmNlfX08L3NwYW4+XG4gICAgICA8c3Bhbj48Yj5UcmF2ZWwgVGltZTo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy5lc3RpbWF0ZWRfdGltZX19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJub3Rlc1wiPjxiPk5vdGVzOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/Lm5vdGV9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjcmVhdGVUeHRcIj5cbiAgICAgIDxzbWFsbD5cbiAgICAgICAgQ3JlYXRlZCBieSB7e3JvdXRlQ2FyZERldGFpbD8uY3JlYXRlZF9ieV9uYW1lfX0gb24ge3tyb3V0ZUNhcmREZXRhaWw/LmNyZWF0ZWRfYXR9fVxuICAgICAgPC9zbWFsbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -142,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
142
142
  }], customerRepoDetails: [{
143
143
  type: Input
144
144
  }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L25hdi9sYXlvdXQvYWRkLXJvdXRlLW5hdi9hZGQtcm91dGUtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9hZGQtcm91dGUtbmF2L2FkZC1yb3V0ZS1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBNEIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRMUMsTUFBTSxPQUFPLG9CQUFvQjtJQWdCL0IsWUFBbUIsS0FBbUIsRUFDTixNQUEwQjtRQUR2QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ04sV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFoQjFELGVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUxRCxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNKLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUM5QyxhQUFRLEdBQVcsRUFBRSxDQUFDO1FB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RyxDQUFDLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUM3QixDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNqRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDOztpSEE5R1Usb0JBQW9CLDhDQWlCckIsWUFBWTtxR0FqQlgsb0JBQW9CLHlQQ2xCakMsa2lFQTRDQTsyRkQxQmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLG1CQUFtQjs7MEJBc0IxQixNQUFNOzJCQUFDLFlBQVk7NENBWEwsU0FBUztzQkFBekIsTUFBTTtnQkFDUyxRQUFRO3NCQUF2QixLQUFLO2dCQUNXLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1MsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb29sbWFwQ29uZmlnTW9kZWwsIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW50ZXJmYWNlIEZpbHRlciB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1yb3V0ZS1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLXJvdXRlLW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1yb3V0ZS1uYXYuY29tcG9uZW50LnNjc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIEFkZFJvdXRlTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoeyBzZWFyY2g6IG5ldyBGb3JtQ29udHJvbCgpIH0pO1xuICBmaWx0ZXJlZE9wdGlvbnMhOiBPYnNlcnZhYmxlPGFueVtdPiB8IHVuZGVmaW5lZDtcbiAgZmlsdGVyczogRmlsdGVyW10gPSBbXTtcbiAgbG9hZGVyVmFsID0gZmFsc2U7XG4gIHJvdXRlczogUm91dGVbXSA9IFtdO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU5hdiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PigpO1xuICBASW5wdXQoKSBwdWJsaWMgbmF2VmFsdWU6IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgcHVibGljIGFkZGVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyB1cGRhdGVSb3V0ZUxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyUmVwb0RldGFpbHMhOiBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWw7XG5cbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcmV2ZW50TGlzdFVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB1bml0TGlzdDogYW55O1xuICBtYXRlcmlhbHNMaXN0OiBhbnk7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwcml2YXRlIGNvbmZpZzogQ29vbG1hcENvbmZpZ01vZGVsKSB7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLnV0aWxzLmZpbHRlcih2YWx1ZSwgdGhpcy5maWx0ZXJzKSkpO1xuICB9XG5cbiAgc2hvd0FkZEZvcm0oKSB7IHRoaXMuY2hhbmdlTmF2LmVtaXQoJ2FkZEZvcm0nKTsgdGhpcy5hZGRlbWl0LmVtaXQoJycpIH1cbiAgZmlsdGVyU2VhcmNoKGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlTmF2LmVtaXQoeyB0eXBlOiAnQWRkcm91dGUnIH0pO1xuICAgIHRoaXMucHJldmVudExpc3RVcGRhdGUgPSB0cnVlO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2guc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5maWx0ZXJzID0gW3sgbmFtZTogZS5zb3VyY2UudmFsdWUubGFiZWwsIHR5cGU6IGUuc291cmNlLnZhbHVlLnR5cGUsIHZhbHVlOiBlLnNvdXJjZS52YWx1ZSB9XVxuICB9XG4gIHJlbW92ZUZyb21GaWx0ZXIoZmlsdGVyOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZU5hdi5lbWl0KHsgdHlwZTogJ0FkZHJvdXRlJyB9KTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVycy5pbmRleE9mKGZpbHRlcik7XG4gICAgaWYgKGluZGV4ID49IDApIHsgdGhpcy5maWx0ZXJzID0gW10gfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrQW5kQ2FsbFJvdXRlTGlzdCgpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sndXBkYXRlUm91dGVMaXN0J10gJiYgY2hhbmdlc1sndXBkYXRlUm91dGVMaXN0J11bJ2N1cnJlbnRWYWx1ZSddKSB0aGlzLmNoZWNrQW5kQ2FsbFJvdXRlTGlzdCgpO1xuICAgIGlmIChjaGFuZ2VzWyduYXZWYWx1ZSddICYmIChjaGFuZ2VzWyduYXZWYWx1ZSddWydwcmV2aW91c1ZhbHVlJ10gPT09ICdhZGRGb3JtJykgJiYgIXRoaXMucHJldmVudExpc3RVcGRhdGUpIHRoaXMuY2hlY2tBbmRDYWxsUm91dGVMaXN0KCk7XG4gIH1cbiAgZ2V0Um91dGUoZXZlbnQ6IFJvdXRlKSB7IGlmIChldmVudFsndHlwZSddID09PSAnZWRpdHJvdXRlJykgeyB0aGlzLmFkZGVtaXQuZW1pdChldmVudCkgfSB9XG5cbiAgY2hlY2tBbmRDYWxsUm91dGVMaXN0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoVW5pdHNMaXN0KCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgIHRoaXMudW5pdExpc3QgPSByZXM7XG4gICAgICAgIHRoaXMudXRpbHMuZmV0Y2hNYXRlcmlhbHNMaXN0KCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gcmVzO1xuICAgICAgICAgIHRoaXMuZ2V0Um91dGVMaXN0Rm9yQ3VzdG9tZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRSb3V0ZUxpc3RGb3JDb29sTWFwKClcbiAgICB9XG4gIH1cbiAgZ2V0VW5pdE5hbWUoZGF0YSk6IHN0cmluZyB7XG4gICAgbGV0IHVuaXROYW1lID0gJyc7XG4gICAgdGhpcy51bml0TGlzdC5tYXAoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcy5pZCA9PT0gZGF0YS51bml0X2lkKSB7XG4gICAgICAgIHVuaXROYW1lID0gcmVzLnR5cGVcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB1bml0TmFtZTtcbiAgfVxuXG4gIGdldE1hdGVyaWFsTmFtZShkYXRhKTogc3RyaW5nIHsgICAgXG4gICAgbGV0IG1hdGVyaWFsTmFtZSA9ICcnO1xuICAgIHRoaXMubWF0ZXJpYWxzTGlzdC5tYXAoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcy5tYXRlcmlhbF9pZCA9PT0gZGF0YS5tYXRlcmlhbF9pZCkge1xuICAgICAgICBtYXRlcmlhbE5hbWUgPSByZXMubWF0ZXJpYWxcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiBtYXRlcmlhbE5hbWU7XG4gIH1cblxuICBnZXRSb3V0ZUxpc3RGb3JDb29sTWFwKCkge1xuICAgIHRoaXMudXRpbHMuZ2V0RGF0YSgncm91dGVzL2FsbCcpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMucm91dGVzID0gcmVzWydkYXRhJ11cbiAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnV0aWxzLmNsZWFyT3B0aW9ucygpO1xuICAgICAgICB0aGlzLnJvdXRlcy5mb3JFYWNoKChlbGU6IFJvdXRlKSA9PiB7IHRoaXMudXRpbHMubWFrZU9wdGlvbnMoZWxlKSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFJvdXRlTGlzdEZvckN1c3RvbWVyKCkge1xuICAgIGNvbnN0IGRhdGFzZXQgPSB7XG4gICAgICBjdXN0b21lcl9pZDogdGhpcy5jdXN0b21lclJlcG9EZXRhaWxzLmN1c3RvbWVyLmlkXG4gICAgfVxuICAgIHRoaXMudXRpbHMucG9zdGRhdGEoJ3JvdXRlcy9hbGwnLCBkYXRhc2V0KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgICB0aGlzLnJvdXRlcyA9IHJlc1snZGF0YSddXG4gICAgICAgIHRoaXMucHJldmVudExpc3RVcGRhdGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy51dGlscy5jbGVhck9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXMubWFwKChlbGU6IFJvdXRlKSA9PiB7XG4gICAgICAgICAgZWxlLnVuaXQgPSB0aGlzLmdldFVuaXROYW1lKGVsZSk7XG4gICAgICAgICAgZWxlLm1hdGVyaWFsID0gdGhpcy5nZXRNYXRlcmlhbE5hbWUoZWxlKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm1ha2VPcHRpb25zKGVsZSlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmVzZXRTZWFyY2goKSB7IHRoaXMuY2hhbmdlTmF2LmVtaXQoJ0FkZHJvdXRlJykgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llciQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3llciQudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5hdl9ib2R5XCI+XG4gIDxkaXYgY2xhc3M9XCJsb2dvXCI+XG4gICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2xvZ28ucG5nXCIgYWx0PVwibG9nb1wiIC8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaGVhZGluZyBtLTIwXCI+XG4gICAgPGgxPlZpZXcgUm91dGU8L2gxPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInNob3dBZGRGb3JtKClcIj5cbiAgICAgIDxtYXQtaWNvbj5hZGRfY2lyY2xlX291dGxpbmU8L21hdC1pY29uPiBBZGQgcm91dGVcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1wYW5lbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZ1bGwtd2lkdGhcIiBbY2xhc3MuZGlzYWJsZWRdPVwibG9hZGVyVmFsXCI+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWFyY2hcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRlclZhbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCI+XG4gICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeCAqbmdJZj1cIiF1dGlscy5jb252ZXlTZWFyY2hJY29uKGZpbHRlckZvcm0udmFsdWUuc2VhcmNoKVwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCIgKm5nSWY9XCJ1dGlscy5jb252ZXlTZWFyY2hJY29uKGZpbHRlckZvcm0udmFsdWUuc2VhcmNoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZmlsdGVyRm9ybS5yZXNldCgpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luY1wiIChvblNlbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAge3tvcHRpb24udHlwZSB8IHRpdGxlY2FzZSB9fToge3tvcHRpb25bJ2xhYmVsJ119fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZm9ybT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWxpc3RcIj5cbiAgICAgICAgPG1hdC1jaGlwLWxpc3QgI2NoaXBMaXN0IGFyaWEtbGFiZWw9XCJGaWx0ZXIgc2VsZWN0aW9uXCI+XG4gICAgICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyc1wiIChyZW1vdmVkKT1cInJlbW92ZUZyb21GaWx0ZXIoZmlsdGVyKVwiPlxuICAgICAgICAgICAge3tmaWx0ZXIudHlwZSB8IHRpdGxlY2FzZSB9fToge3tmaWx0ZXIubmFtZX19XG4gICAgICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmU+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9tYXQtY2hpcD5cbiAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8YXBwLXJvdXRlLWpvYmNvZGUtbGlzdCBbdHlwZV09XCInYWRkcm91dGUnXCIgW2N1cnJlbnROYXZdPVwibmF2VmFsdWVcIiBbc2VhcmNoVGVybV09XCJmaWx0ZXJzXCIgW2RhdGFdPVwicm91dGVzXCIgW2xvYWRlcl09XCJsb2FkZXJWYWxcIiAoZW1pdHJvdXRlKT1cImdldFJvdXRlKCRldmVudClcIj48L2FwcC1yb3V0ZS1qb2Jjb2RlLWxpc3Q+XG48L2Rpdj5cbiJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXJvdXRlLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L25hdi9sYXlvdXQvYWRkLXJvdXRlLW5hdi9hZGQtcm91dGUtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L2xheW91dC9hZGQtcm91dGUtbmF2L2FkZC1yb3V0ZS1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBNEIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFPbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFRMUMsTUFBTSxPQUFPLG9CQUFvQjtJQWdCL0IsWUFBbUIsS0FBbUIsRUFDTixNQUEwQjtRQUR2QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ04sV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFoQjFELGVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUUxRCxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNKLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUM5QyxhQUFRLEdBQVcsRUFBRSxDQUFDO1FB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RyxDQUFDLENBQUM7b0JBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUM3QixDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUNqRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDOztpSEE5R1Usb0JBQW9CLDhDQWlCckIsWUFBWTtxR0FqQlgsb0JBQW9CLHlQQ2xCakMsa2lFQTRDQTsyRkQxQmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLG1CQUFtQjs7MEJBc0IxQixNQUFNOzJCQUFDLFlBQVk7NENBWEwsU0FBUztzQkFBekIsTUFBTTtnQkFDUyxRQUFRO3NCQUF2QixLQUFLO2dCQUNXLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1MsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb29sbWFwQ29uZmlnTW9kZWwsIEN1c3RvbWVyUmVwb0RldGFpbHNNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW50ZXJmYWNlIEZpbHRlciB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgdmFsdWU6IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkZC1yb3V0ZS1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLXJvdXRlLW5hdi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FkZC1yb3V0ZS1uYXYuY29tcG9uZW50LnNjc3MnXVxufSlcblxuZXhwb3J0IGNsYXNzIEFkZFJvdXRlTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoeyBzZWFyY2g6IG5ldyBGb3JtQ29udHJvbCgpIH0pO1xuICBmaWx0ZXJlZE9wdGlvbnMhOiBPYnNlcnZhYmxlPGFueVtdPiB8IHVuZGVmaW5lZDtcbiAgZmlsdGVyczogRmlsdGVyW10gPSBbXTtcbiAgbG9hZGVyVmFsID0gZmFsc2U7XG4gIHJvdXRlczogUm91dGVbXSA9IFtdO1xuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZU5hdiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgYW55PigpO1xuICBASW5wdXQoKSBwdWJsaWMgbmF2VmFsdWU6IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgcHVibGljIGFkZGVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHB1YmxpYyB1cGRhdGVSb3V0ZUxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyUmVwb0RldGFpbHMhOiBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWw7XG5cbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICBwcmV2ZW50TGlzdFVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICB1bml0TGlzdDogYW55O1xuICBtYXRlcmlhbHNMaXN0OiBhbnk7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwcml2YXRlIGNvbmZpZzogQ29vbG1hcENvbmZpZ01vZGVsKSB7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKCcnKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB0aGlzLnV0aWxzLmZpbHRlcih2YWx1ZSwgdGhpcy5maWx0ZXJzKSkpO1xuICB9XG5cbiAgc2hvd0FkZEZvcm0oKSB7IHRoaXMuY2hhbmdlTmF2LmVtaXQoJ2FkZEZvcm0nKTsgdGhpcy5hZGRlbWl0LmVtaXQoJycpIH1cbiAgZmlsdGVyU2VhcmNoKGU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlTmF2LmVtaXQoeyB0eXBlOiAnQWRkcm91dGUnIH0pO1xuICAgIHRoaXMucHJldmVudExpc3RVcGRhdGUgPSB0cnVlO1xuICAgIHRoaXMuZmlsdGVyRm9ybS5jb250cm9scy5zZWFyY2guc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5maWx0ZXJzID0gW3sgbmFtZTogZS5zb3VyY2UudmFsdWUubGFiZWwsIHR5cGU6IGUuc291cmNlLnZhbHVlLnR5cGUsIHZhbHVlOiBlLnNvdXJjZS52YWx1ZSB9XVxuICB9XG4gIHJlbW92ZUZyb21GaWx0ZXIoZmlsdGVyOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZU5hdi5lbWl0KHsgdHlwZTogJ0FkZHJvdXRlJyB9KTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVycy5pbmRleE9mKGZpbHRlcik7XG4gICAgaWYgKGluZGV4ID49IDApIHsgdGhpcy5maWx0ZXJzID0gW10gfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrQW5kQ2FsbFJvdXRlTGlzdCgpO1xuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sndXBkYXRlUm91dGVMaXN0J10gJiYgY2hhbmdlc1sndXBkYXRlUm91dGVMaXN0J11bJ2N1cnJlbnRWYWx1ZSddKSB0aGlzLmNoZWNrQW5kQ2FsbFJvdXRlTGlzdCgpO1xuICAgIGlmIChjaGFuZ2VzWyduYXZWYWx1ZSddICYmIChjaGFuZ2VzWyduYXZWYWx1ZSddWydwcmV2aW91c1ZhbHVlJ10gPT09ICdhZGRGb3JtJykgJiYgIXRoaXMucHJldmVudExpc3RVcGRhdGUpIHRoaXMuY2hlY2tBbmRDYWxsUm91dGVMaXN0KCk7XG4gIH1cbiAgZ2V0Um91dGUoZXZlbnQ6IFJvdXRlKSB7IGlmIChldmVudFsndHlwZSddID09PSAnZWRpdHJvdXRlJykgeyB0aGlzLmFkZGVtaXQuZW1pdChldmVudCkgfSB9XG5cbiAgY2hlY2tBbmRDYWxsUm91dGVMaXN0KCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZXBvc2l0b3J5ID09PSAnY3VzdG9tZXInKSB7XG4gICAgICB0aGlzLnV0aWxzLmZldGNoVW5pdHNMaXN0KCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgIHRoaXMudW5pdExpc3QgPSByZXM7XG4gICAgICAgIHRoaXMudXRpbHMuZmV0Y2hNYXRlcmlhbHNMaXN0KCkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXRlcmlhbHNMaXN0ID0gcmVzO1xuICAgICAgICAgIHRoaXMuZ2V0Um91dGVMaXN0Rm9yQ3VzdG9tZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nZXRSb3V0ZUxpc3RGb3JDb29sTWFwKClcbiAgICB9XG4gIH1cbiAgZ2V0VW5pdE5hbWUoZGF0YSk6IHN0cmluZyB7XG4gICAgbGV0IHVuaXROYW1lID0gJyc7XG4gICAgdGhpcy51bml0TGlzdC5tYXAoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcy5pZCA9PT0gZGF0YS51bml0X2lkKSB7XG4gICAgICAgIHVuaXROYW1lID0gcmVzLnR5cGVcbiAgICAgIH1cbiAgICB9KVxuICAgIHJldHVybiB1bml0TmFtZTtcbiAgfVxuXG4gIGdldE1hdGVyaWFsTmFtZShkYXRhKTogc3RyaW5nIHtcbiAgICBsZXQgbWF0ZXJpYWxOYW1lID0gJyc7XG4gICAgdGhpcy5tYXRlcmlhbHNMaXN0Lm1hcCgocmVzKSA9PiB7XG4gICAgICBpZiAocmVzLm1hdGVyaWFsX2lkID09PSBkYXRhLm1hdGVyaWFsX2lkKSB7XG4gICAgICAgIG1hdGVyaWFsTmFtZSA9IHJlcy5tYXRlcmlhbFxuICAgICAgfVxuICAgIH0pXG4gICAgcmV0dXJuIG1hdGVyaWFsTmFtZTtcbiAgfVxuXG4gIGdldFJvdXRlTGlzdEZvckNvb2xNYXAoKSB7XG4gICAgdGhpcy51dGlscy5nZXREYXRhKCdyb3V0ZXMvYWxsJykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLmZpbHRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5yb3V0ZXMgPSByZXNbJ2RhdGEnXVxuICAgICAgICB0aGlzLnByZXZlbnRMaXN0VXBkYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXRpbHMuY2xlYXJPcHRpb25zKCk7XG4gICAgICAgIHRoaXMucm91dGVzLmZvckVhY2goKGVsZTogUm91dGUpID0+IHsgdGhpcy51dGlscy5tYWtlT3B0aW9ucyhlbGUpIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0Um91dGVMaXN0Rm9yQ3VzdG9tZXIoKSB7XG4gICAgY29uc3QgZGF0YXNldCA9IHtcbiAgICAgIGN1c3RvbWVyX2lkOiB0aGlzLmN1c3RvbWVyUmVwb0RldGFpbHMuY3VzdG9tZXIuaWRcbiAgICB9XG4gICAgdGhpcy51dGlscy5wb3N0ZGF0YSgncm91dGVzL2FsbCcsIGRhdGFzZXQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVyJCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMucm91dGVzID0gcmVzWydkYXRhJ11cbiAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnV0aWxzLmNsZWFyT3B0aW9ucygpO1xuICAgICAgICB0aGlzLnJvdXRlcy5tYXAoKGVsZTogUm91dGUpID0+IHtcbiAgICAgICAgICBlbGUudW5pdCA9IHRoaXMuZ2V0VW5pdE5hbWUoZWxlKTtcbiAgICAgICAgICBlbGUubWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsTmFtZShlbGUpO1xuICAgICAgICAgIHRoaXMudXRpbHMubWFrZU9wdGlvbnMoZWxlKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXNldFNlYXJjaCgpIHsgdGhpcy5jaGFuZ2VOYXYuZW1pdCgnQWRkcm91dGUnKSB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVyJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveWVyJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibmF2X2JvZHlcIj5cbiAgPGRpdiBjbGFzcz1cImxvZ29cIj5cbiAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvbG9nby5wbmdcIiBhbHQ9XCJsb2dvXCIgLz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJoZWFkaW5nIG0tMjBcIj5cbiAgICA8aDE+VmlldyBSb3V0ZTwvaDE+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2hvd0FkZEZvcm0oKVwiPlxuICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGVfb3V0bGluZTwvbWF0LWljb24+IEFkZCByb3V0ZVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLXBhbmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cInctMTAwXCI+XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aFwiIFtjbGFzcy5kaXNhYmxlZF09XCJsb2FkZXJWYWxcIj5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwTGlzdFwiIGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGVyVmFsXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0U3VmZml4ICpuZ0lmPVwiIXV0aWxzLmNvbnZleVNlYXJjaEljb24oZmlsdGVyRm9ybS52YWx1ZS5zZWFyY2gpXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xlYXJcIiAqbmdJZj1cInV0aWxzLmNvbnZleVNlYXJjaEljb24oZmlsdGVyRm9ybS52YWx1ZS5zZWFyY2gpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJGb3JtLnJlc2V0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCIgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICB7e29wdGlvbi50eXBlIHwgdGl0bGVjYXNlIH19OiB7e29wdGlvblsnbGFiZWwnXX19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPC9mb3JtPlxuICAgICAgPGRpdiBjbGFzcz1cImNoaXAtbGlzdFwiPlxuICAgICAgICA8bWF0LWNoaXAtbGlzdCAjY2hpcExpc3QgYXJpYS1sYWJlbD1cIkZpbHRlciBzZWxlY3Rpb25cIj5cbiAgICAgICAgICA8bWF0LWNoaXAgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJzXCIgKHJlbW92ZWQpPVwicmVtb3ZlRnJvbUZpbHRlcihmaWx0ZXIpXCI+XG4gICAgICAgICAgICB7e2ZpbHRlci50eXBlIHwgdGl0bGVjYXNlIH19OiB7e2ZpbHRlci5uYW1lfX1cbiAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L21hdC1jaGlwPlxuICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxhcHAtcm91dGUtam9iY29kZS1saXN0IFt0eXBlXT1cIidhZGRyb3V0ZSdcIiBbY3VycmVudE5hdl09XCJuYXZWYWx1ZVwiIFtzZWFyY2hUZXJtXT1cImZpbHRlcnNcIiBbZGF0YV09XCJyb3V0ZXNcIiBbbG9hZGVyXT1cImxvYWRlclZhbFwiIChlbWl0cm91dGUpPVwiZ2V0Um91dGUoJGV2ZW50KVwiPjwvYXBwLXJvdXRlLWpvYmNvZGUtbGlzdD5cbjwvZGl2PlxuIl19