@hitsoft/uretim-yonetimi 1.0.45 → 1.0.46

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.
@@ -33,6 +33,8 @@ export class HitIssuesForProductionsComponent {
33
33
  this.isEmriBarkoduGecerliMi = false;
34
34
  this.searcheBasildiMi = false;
35
35
  this.hammaddeQR = '';
36
+ this.scannedBarcodeKeys = new Set();
37
+ this.initialBatchNumbers = new Map();
36
38
  this.warehouses = [];
37
39
  this.HitHelper = HitHelper;
38
40
  }
@@ -57,17 +59,8 @@ export class HitIssuesForProductionsComponent {
57
59
  this.productionOrder = response.items;
58
60
  this.isEmriBarkoduGecerliMi = true;
59
61
  this.unitOfMeasure = response.items.unitOfMeasurement;
60
- const issueLines = this.productionOrder.getProductionOrderLine.map((issueLine) => {
61
- issueLine.quantity = 0;
62
- const newIssueLine = new IssueLine();
63
- newIssueLine.ItemCode = issueLine.itemCode;
64
- newIssueLine.BaseLine = issueLine.lineNum;
65
- newIssueLine.WarehouseCode = issueLine.warehouse;
66
- newIssueLine.BaseEntry = issueLine.absoluteEntry;
67
- newIssueLine.BatchNumbers = [new BatchNumber(issueLine.batchNumber, issueLine.plannedQty)];
68
- return newIssueLine;
69
- });
70
- this.issuesForProductionPost = new IssuesForProductionPostDto(issueLines);
62
+ this.initialBatchNumbers = new Map(this.productionOrder.getProductionOrderLine.map(line => [line.lineNum, line.batchNumber || '']));
63
+ this.resetIssueGrid();
71
64
  this.ngZone.run(() => {
72
65
  setTimeout(() => {
73
66
  this.nmbBoxHammaddeQR.instance.focus();
@@ -109,6 +102,21 @@ export class HitIssuesForProductionsComponent {
109
102
  });
110
103
  return;
111
104
  }
105
+ // Mükerrer barkod kontrolü: aynı iş emri + tartım sıra no kombinasyonu tekrar okutulamaz
106
+ if (parsed.workOrderNo && parsed.weighingSequenceNo) {
107
+ const barcodeKey = `${parsed.workOrderNo}_${parsed.weighingSequenceNo}`;
108
+ if (this.scannedBarcodeKeys.has(barcodeKey)) {
109
+ this.confirmation.error('', 'Aynı barkod tekrar okutulamaz!', this.options).subscribe({
110
+ next: () => {
111
+ this.hammaddeQR = '';
112
+ this.focusQRInput();
113
+ }
114
+ });
115
+ this.isLoading = false;
116
+ return;
117
+ }
118
+ this.scannedBarcodeKeys.add(barcodeKey);
119
+ }
112
120
  this.service.get(parsed.chemicalCode, this.productionOrder.absoluteEntry.toString()).subscribe({
113
121
  next: (response) => {
114
122
  if (response.isSuccessful) {
@@ -170,6 +178,7 @@ export class HitIssuesForProductionsComponent {
170
178
  });
171
179
  }
172
180
  else {
181
+ this.resetIssueGrid();
173
182
  this.confirmation.status$.subscribe({
174
183
  next: () => {
175
184
  this.focusQRInput();
@@ -178,9 +187,9 @@ export class HitIssuesForProductionsComponent {
178
187
  }
179
188
  },
180
189
  error: (e) => {
190
+ this.resetIssueGrid();
181
191
  this.confirmation.status$.subscribe({
182
192
  next: () => {
183
- this.clearAll();
184
193
  this.focusQRInput();
185
194
  }
186
195
  });
@@ -197,6 +206,31 @@ export class HitIssuesForProductionsComponent {
197
206
  this.productionOrder = null;
198
207
  this.focusBarkodInput();
199
208
  this.unitOfMeasure = null;
209
+ this.scannedBarcodeKeys.clear();
210
+ this.initialBatchNumbers.clear();
211
+ }
212
+ resetIssueGrid() {
213
+ if (!this.productionOrder?.getProductionOrderLine)
214
+ return;
215
+ this.productionOrder.getProductionOrderLine.forEach(line => {
216
+ line.quantity = 0;
217
+ line.batchNumber = this.initialBatchNumbers.get(line.lineNum) || '';
218
+ });
219
+ const issueLines = this.productionOrder.getProductionOrderLine.map(line => {
220
+ const issueLine = new IssueLine();
221
+ issueLine.ItemCode = line.itemCode;
222
+ issueLine.BaseLine = line.lineNum;
223
+ issueLine.WarehouseCode = line.warehouse;
224
+ issueLine.BaseEntry = line.absoluteEntry;
225
+ issueLine.BatchNumbers = [new BatchNumber(this.initialBatchNumbers.get(line.lineNum) || '', line.plannedQty)];
226
+ return issueLine;
227
+ });
228
+ this.issuesForProductionPost = new IssuesForProductionPostDto(issueLines);
229
+ this.scannedBarcodeKeys.clear();
230
+ this.hammaddeQR = '';
231
+ this.isEmriBarkoduGecerliMi = true;
232
+ this.searcheBasildiMi = true;
233
+ this.isLoading = false;
200
234
  }
201
235
  getWarehouses() {
202
236
  this.isLoading = true;
@@ -249,4 +283,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
249
283
  type: ViewChild,
250
284
  args: ['getProductionOrderLineGrid', { static: false }]
251
285
  }] } });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWlzc3Vlcy1mb3ItcHJvZHVjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1pc3N1ZXMtZm9yLXByb2R1Y3Rpb25zL2hpdC1pc3N1ZXMtZm9yLXByb2R1Y3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTSxXQUFXLEVBQWlDLE1BQU0sY0FBYyxDQUFDO0FBRTlFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQWdCLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFFM0csT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBSzFELE9BQU8sRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULDBCQUEwQixFQUMzQixNQUFNLG1EQUFtRCxDQUFDO0FBSTNELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU2pELE1BQU0sT0FBTyxnQ0FBZ0M7SUFXM0MsWUFDVSxNQUFjLEVBQ04sSUFBaUIsRUFDakIsS0FBcUIsRUFDckIsT0FBdUMsRUFDL0MsWUFBaUMsRUFDakMsRUFBZSxFQUNmLHVCQUFtRDtRQU5uRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ04sU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFn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QUFvQjtzQkFBcEUsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ0YsZ0JBQWdCO3NCQUE1RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ2UsUUFBUTtzQkFBakUsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FCUCwgTGlzdFNlcnZpY2UsIFBhZ2VkUmVzdWx0RHRvLCBUcmFja0J5U2VydmljZX0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHtDb25maXJtYXRpb24sIENvbmZpcm1hdGlvblNlcnZpY2V9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHtEYXRlQWRhcHRlcn0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQvZXh0ZW5zaW9ucyc7XHJcbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXJ9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtOZ2JEYXRlQWRhcHRlcn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQge1xyXG4gIEhpdElzc3Vlc0ZvclByb2R1Y3Rpb25zU2VydmljZVxyXG59IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LWlzc3Vlcy1mb3ItcHJvZHVjdGlvbnMvaGl0LWlzc3Vlcy1mb3ItcHJvZHVjdGlvbnMuc2VydmljZVwiO1xyXG5pbXBvcnQge0hpdFByb2R1Y3Rpb25PcmRlcnNTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vaGl0LXByb3h5L2hpdC1wcm9kdWN0aW9uLW9yZGVycy9oaXQtcHJvZHVjdGlvbi1vcmRlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQge1xyXG4gIEJhdGNoTnVtYmVyLFxyXG4gIElzc3VlTGluZSxcclxuICBJc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdER0b1xyXG59IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LWlzc3Vlcy1mb3ItcHJvZHVjdGlvbnMvbW9kZWxzXCI7XHJcbmltcG9ydCB7R2V0UHJvZHVjdGlvbk9yZGVyRHRvfSBmcm9tIFwiLi4vLi4vaGl0LXByb3h5L2hpdC1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbnMvbW9kZWxzXCI7XHJcbmltcG9ydCB7RHhEYXRhR3JpZENvbXBvbmVudCwgRHhUZXh0Qm94Q29tcG9uZW50fSBmcm9tIFwiZGV2ZXh0cmVtZS1hbmd1bGFyXCI7XHJcbmltcG9ydCB7V2FyZWhvdXNlfSBmcm9tIFwiLi4vLi4vaGl0LXByb3h5L2hpdC1wcm9kdWN0aW9uLW9yZGVycy9tb2RlbHNcIjtcclxuaW1wb3J0IHtIaXRIZWxwZXJ9IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvbW9kZWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG4gIHByb3ZpZGVyczogW0xpc3RTZXJ2aWNlLCB7cHJvdmlkZTogTmdiRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBEYXRlQWRhcHRlcn1dLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGl0LWlzc3Vlcy1mb3ItcHJvZHVjdGlvbnMuY29tcG9uZW5ldC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdElzc3Vlc0ZvclByb2R1Y3Rpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBAVmlld0NoaWxkKCdiYXJrb2ROdW1hcmFzaVJlZicsIHtzdGF0aWM6IGZhbHNlfSkgbm1iQm94QmFya29kTnVtYXJhc2k6IER4VGV4dEJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdoYW1tYWRkZVFSUmVmJywge3N0YXRpYzogZmFsc2V9KSBubWJCb3hIYW1tYWRkZVFSOiBEeFRleHRCb3hDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnZ2V0UHJvZHVjdGlvbk9yZGVyTGluZUdyaWQnLCB7c3RhdGljOiBmYWxzZX0pIGRhdGFHcmlkOiBEeERhdGFHcmlkQ29tcG9uZW50O1xyXG5cclxuICBvcHRpb25zOiBQYXJ0aWFsPENvbmZpcm1hdGlvbi5PcHRpb25zPiA9IHtcclxuICAgIGhpZGVZZXNCdG46IHRydWUsXHJcbiAgICBjYW5jZWxUZXh0OiAnS2FwYXQnLFxyXG4gICAgZGlzbWlzc2libGU6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBsaXN0OiBMaXN0U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSB0cmFjazogVHJhY2tCeVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogSGl0SXNzdWVzRm9yUHJvZHVjdGlvbnNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb246IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcHJvZHVjdGlvbk9yZGVyc1NlcnZpY2U6IEhpdFByb2R1Y3Rpb25PcmRlcnNTZXJ2aWNlLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5mb2N1c0JhcmtvZElucHV0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgIHRoaXMuZ2V0V2FyZWhvdXNlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNFbXJpQmFya29kdUdlY2VybGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlYXJjaGVCYXNpbGRpTWk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0VtcmlCYXJrb2R1OiBudW1iZXI7XHJcbiAgaGFtbWFkZGVRUjogc3RyaW5nID0gJyc7XHJcbiAgcHJvZHVjdGlvbk9yZGVyOiBHZXRQcm9kdWN0aW9uT3JkZXJEdG87XHJcbiAgaXNzdWVzRm9yUHJvZHVjdGlvblBvc3Q6IElzc3Vlc0ZvclByb2R1Y3Rpb25Qb3N0RHRvO1xyXG4gIHVuaXRPZk1lYXN1cmU6IHN0cmluZztcclxuXHJcbiAgYXN5bmMgZ2V0UHJvZHVjdGlvbk9yZGVyKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaUJhcmtvZHUpIHtcclxuICAgICAgdGhpcy5mb2N1c0JhcmtvZElucHV0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoZUJhc2lsZGlNaSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5wcm9kdWN0aW9uT3JkZXJzU2VydmljZS5nZXQodGhpcy5pc0VtcmlCYXJrb2R1KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2R1Y3Rpb25PcmRlciA9IHJlc3BvbnNlLml0ZW1zO1xyXG4gICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMudW5pdE9mTWVhc3VyZSA9IHJlc3BvbnNlLml0ZW1zLnVuaXRPZk1lYXN1cmVtZW50O1xyXG5cclxuICAgICAgICAgIGNvbnN0IGlzc3VlTGluZXM6IElzc3VlTGluZVtdID0gdGhpcy5wcm9kdWN0aW9uT3JkZXIuZ2V0UHJvZHVjdGlvbk9yZGVyTGluZS5tYXAoKGlzc3VlTGluZSkgPT4ge1xyXG4gICAgICAgICAgICBpc3N1ZUxpbmUucXVhbnRpdHkgPSAwO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdJc3N1ZUxpbmUgPSBuZXcgSXNzdWVMaW5lKCk7XHJcbiAgICAgICAgICAgIG5ld0lzc3VlTGluZS5JdGVtQ29kZSA9IGlzc3VlTGluZS5pdGVtQ29kZTtcclxuICAgICAgICAgICAgbmV3SXNzdWVMaW5lLkJhc2VMaW5lID0gaXNzdWVMaW5lLmxpbmVOdW07XHJcbiAgICAgICAgICAgIG5ld0lzc3VlTGluZS5XYXJlaG91c2VDb2RlID0gaXNzdWVMaW5lLndhcmVob3VzZTtcclxuICAgICAgICAgICAgbmV3SXNzdWVMaW5lLkJhc2VFbnRyeSA9IGlzc3VlTGluZS5hYnNvbHV0ZUVudHJ5O1xyXG4gICAgICAgICAgICBuZXdJc3N1ZUxpbmUuQmF0Y2hOdW1iZXJzID0gW25ldyBCYXRjaE51bWJlcihpc3N1ZUxpbmUuYmF0Y2hOdW1iZXIsIGlzc3VlTGluZS5wbGFubmVkUXR5KV07XHJcbiAgICAgICAgICAgIHJldHVybiBuZXdJc3N1ZUxpbmU7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuaXNzdWVzRm9yUHJvZHVjdGlvblBvc3QgPSBuZXcgSXNzdWVzRm9yUHJvZHVjdGlvblBvc3REdG8oaXNzdWVMaW5lcyk7XHJcblxyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ubWJCb3hIYW1tYWRkZVFSLmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hlQmFzaWxkaU1pID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoZUJhc2lsZGlNaSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZm9jdXNCYXJrb2RJbnB1dCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcGFyc2VBbmRBZGRRUigpIHtcclxuICAgIGlmICghdGhpcy5oYW1tYWRkZVFSKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBwYXJzZWQgPSBIaXRIZWxwZXIucGFyc2VRUih0aGlzLmhhbW1hZGRlUVIpO1xyXG4gICAgaWYgKCFwYXJzZWQpe1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ0dlw6dlcnNpeiBiYXJrb2QhJywgdGhpcy5vcHRpb25zKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFtbWFkZGVRUiA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLmdldChwYXJzZWQuY2hlbWljYWxDb2RlLCB0aGlzLnByb2R1Y3Rpb25PcmRlci5hYnNvbHV0ZUVudHJ5LnRvU3RyaW5nKCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3NmdWwpIHtcclxuICAgICAgICAgIGNvbnN0IGlzc3VlTGluZSA9IHRoaXMucHJvZHVjdGlvbk9yZGVyLmdldFByb2R1Y3Rpb25PcmRlckxpbmUuZmluZCgoeCkgPT4geC5pdGVtQ29kZSA9PT0gcGFyc2VkLmNoZW1pY2FsQ29kZSk7XHJcbiAgICAgICAgICBpZihpc3N1ZUxpbmUgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCBcIkJ1IGnFnyBlbXJpbmRlIFwiICsgcGFyc2VkLmNoZW1pY2FsQ29kZSArIFwiIGtvZGx1IHN0b2sgYnVsdW5tdXlvci4gXCIsIHRoaXMub3B0aW9ucyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpc3N1ZUxpbmVGb3JQb3N0ID0gdGhpcy5pc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdC5Eb2N1bWVudExpbmVzLmZpbmQoKHgpID0+IHguSXRlbUNvZGUgPT09IHBhcnNlZC5jaGVtaWNhbENvZGUpO1xyXG4gICAgICAgICAgaWYgKGlzc3VlTGluZSkge1xyXG4gICAgICAgICAgICBpZiAoaXNzdWVMaW5lLmlzc3VlZFF0eSArIGlzc3VlTGluZS5xdWFudGl0eSArIHBhcnNlZC53ZWlnaHRLZyA+IGlzc3VlTGluZS5wbGFubmVkUXR5ICsgKGlzc3VlTGluZS5wbGFubmVkUXR5ICogMC4wMikpIHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ1RvcGxhbmFuIG1pa3RhciBwbGFubGFuYW4gbWlrdGFyxLEgYcWfxLF5b3IhJywgdGhpcy5vcHRpb25zKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNzdWVMaW5lLnF1YW50aXR5ICs9IHBhcnNlZC53ZWlnaHRLZztcclxuICAgICAgICAgICAgaXNzdWVMaW5lLmJhdGNoTnVtYmVyID0gcGFyc2VkLmxvdE51bWJlcjtcclxuICAgICAgICAgICAgaXNzdWVMaW5lRm9yUG9zdC5RdWFudGl0eSArPSBwYXJzZWQud2VpZ2h0S2c7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNzdWVMaW5lRm9yUG9zdC5Jc1FSUmVhZHkpIHtcclxuICAgICAgICAgICAgICBpc3N1ZUxpbmVGb3JQb3N0LkJhdGNoTnVtYmVycy5wdXNoKG5ldyBCYXRjaE51bWJlcihwYXJzZWQubG90TnVtYmVyLCBwYXJzZWQud2VpZ2h0S2cpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgaXNzdWVMaW5lRm9yUG9zdC5CYXRjaE51bWJlcnMgPSBbbmV3IEJhdGNoTnVtYmVyKHBhcnNlZC5sb3ROdW1iZXIsIHBhcnNlZC53ZWlnaHRLZyldO1xyXG4gICAgICAgICAgICAgIGlzc3VlTGluZUZvclBvc3QuSXNRUlJlYWR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3RhdHVzJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgICAgICB0aGlzLmhhbW1hZGRlUVIgPSAnJztcclxuICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xyXG4gICAgICAgIHRoaXMuaGFtbWFkZGVRUiA9ICcnO1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcG9zdElzc3Vlc0ZvclByb2R1Y3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNzdWVzRm9yUHJvZHVjdGlvblBvc3QpIHtcclxuICAgICAgdGhpcy5mb2N1c0JhcmtvZElucHV0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdC5Eb2N1bWVudExpbmVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgeC5CYXNlRW50cnkgPSB0aGlzLnByb2R1Y3Rpb25PcmRlci5hYnNvbHV0ZUVudHJ5O1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmlzc3Vlc0ZvclByb2R1Y3Rpb25Qb3N0LkRvY3VtZW50TGluZXMgPSB0aGlzLmlzc3Vlc0ZvclByb2R1Y3Rpb25Qb3N0LkRvY3VtZW50TGluZXMuZmlsdGVyKCh4KSA9PiB4LklzUVJSZWFkeSk7XHJcblxyXG4gICAgdGhpcy5zZXJ2aWNlLnBvc3QodGhpcy5pc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmlzU3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3VjY2VzcygnJywgJ8SwxZ9sZW0gYmHFn2FyxLFsxLEhJywgdGhpcy5vcHRpb25zKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3RhdHVzJC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCkge1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaGVCYXNpbGRpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNzdWVzRm9yUHJvZHVjdGlvblBvc3QgPSBudWxsO1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1ID0gbnVsbDtcclxuICAgIHRoaXMuaGFtbWFkZGVRUiA9ICcnO1xyXG4gICAgdGhpcy5wcm9kdWN0aW9uT3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5mb2N1c0JhcmtvZElucHV0KCk7XHJcbiAgICB0aGlzLnVuaXRPZk1lYXN1cmUgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgd2FyZWhvdXNlczogV2FyZWhvdXNlW10gPSBbXTtcclxuXHJcbiAgZ2V0V2FyZWhvdXNlcygpIHtcclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMucHJvZHVjdGlvbk9yZGVyc1NlcnZpY2UuZ2V0V2FyZWhvdXNlcygpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0Lml0ZW1zKSB7XHJcbiAgICAgICAgICB0aGlzLndhcmVob3VzZXMgPSByZXN1bHQuaXRlbXMuc2xpY2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCByZWFkb25seSBIaXRIZWxwZXIgPSBIaXRIZWxwZXI7XHJcblxyXG4gIG9uUm93UHJlcGFyZWQoZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZS5yb3dUeXBlID09PSAnZGF0YScpIHtcclxuICAgICAgaWYgKGUuZGF0YS5wbGFubmVkUXR5IDw9IGUuZGF0YS5pc3N1ZWRRdHkpIHtcclxuICAgICAgICBlLnJvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaGl0LWdyZXktcm93Jyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLnF1YW50aXR5ID4gMCkge1xyXG4gICAgICAgIGUucm93RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaXQtZ3JlZW4tcm93Jyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvY3VzUVJJbnB1dCgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubm1iQm94SGFtbWFkZGVRUi5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZm9jdXNCYXJrb2RJbnB1dCgpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubm1iQm94QmFya29kTnVtYXJhc2kuaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgfSwgMCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFticmVhZGNydW1iXT1cImZhbHNlXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGVcIj5cclxuICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLlRpdGxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHRleHQtbGctZW5kIHB0LTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInBvc3RJc3N1ZXNGb3JQcm9kdWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuQ3JlYXRlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2FybmluZyBidG4tc21cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYnJvb20gbWUtMVwiPjwvaT5cclxuICAgICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuQ2xlYW4nIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9hYnAtcGFnZS10b29sYmFyLWNvbnRhaW5lcj5cclxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtdC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG4gICAgICAgIDxkeC1udW1iZXItYm94ICNiYXJrb2ROdW1hcmFzaVJlZiBjbGFzcz1cIm1lLTFcIiBzdHlsZT1cIndpZHRoOjEwMCU7XCJcclxuICAgICAgICAgIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLldvcmtPcmRlck5vJyB8IGFicExvY2FsaXphdGlvblwiIFsodmFsdWUpXT1cImlzRW1yaUJhcmtvZHVcIlxyXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCIgKG9uRW50ZXJLZXkpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIiBbZGlzYWJsZWRdPVwic2VhcmNoZUJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgIDxkeC1idXR0b24gc3R5bGU9XCJtYXJnaW4tdG9wOiA3LjVweDtcIiBpY29uPVwic2VhcmNoXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwic2VhcmNoZUJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwiaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDxkeC10ZXh0LWJveCBzdHlsZT1cIndpZHRoOjEwMCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuV29ya09yZGVyTmFtZScgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJwcm9kdWN0aW9uT3JkZXIucHJvZHVjdERlc2NyaXB0aW9uXCIgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgIDxkeC10ZXh0LWJveCBzdHlsZT1cIndpZHRoOjEwMCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuQm9pbGVyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInByb2R1Y3Rpb25PcmRlci51X0themFuXCIgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgIDxkeC1udW1iZXItYm94IHN0eWxlPVwid2lkdGg6MTAwJTtcIiBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5QbGFubmVkUXR5JyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicHJvZHVjdGlvbk9yZGVyLnBsYW5uZWRRdWFudGl0eVwiIFtkaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cIkhpdEhlbHBlci5nZXRNZWFzdXJlbWVudEZvcm1hdHRlZCh1bml0T2ZNZWFzdXJlKVwiPlxyXG4gICAgICAgIDwvZHgtbnVtYmVyLWJveD5cclxuXHJcbiAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICA8ZHgtdGV4dC1ib3ggI2hhbW1hZGRlUVJSZWYgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIGNsYXNzPVwibWUtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuSXNzdWVRUkNvZGUnIHwgYWJwTG9jYWxpemF0aW9uXCIgW21heExlbmd0aF09XCIyNTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImhhbW1hZGRlUVJcIiAob25FbnRlcktleSk9XCJwYXJzZUFuZEFkZFFSKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLklzc3VlUVJDb2RlLlBsYWNlaG9sZGVyJyB8IGFicExvY2FsaXphdGlvblwiPlxyXG4gICAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICAgIDxkeC1idXR0b24gc3R5bGU9XCJtYXJnaW4tdG9wOiA3LjVweDtcIiBpY29uPVwicGx1c1wiIHR5cGU9XCJkZWZhdWx0XCIgKG9uQ2xpY2spPVwicGFyc2VBbmRBZGRRUigpXCI+XHJcbiAgICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInByb2R1Y3Rpb25PcmRlci5nZXRQcm9kdWN0aW9uT3JkZXJMaW5lPy5sZW5ndGhcIiBjbGFzcz1cIm10LTNcIj5cclxuICAgICAgICAgIDxkeC1kYXRhLWdyaWQgI2dldFByb2R1Y3Rpb25PcmRlckxpbmVHcmlkIFtkYXRhU291cmNlXT1cInByb2R1Y3Rpb25PcmRlci5nZXRQcm9kdWN0aW9uT3JkZXJMaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbc29ydGluZ109XCJ7IG1vZGU6ICdub25lJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uUm93UHJlcGFyZWQpPVwib25Sb3dQcmVwYXJlZCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIml0ZW1OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj1cInt7J1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5JdGVtTmFtZScgfCBhYnBMb2NhbGl6YXRpb259fVwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgPGR4aS1jb2x1bW4gY2VsbFRlbXBsYXRlPVwidGVtcGxhdGVRdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3sgJ1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5RdWFudGl0eScgfCBhYnBMb2NhbGl6YXRpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZT1cIm51bWJlclwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgPGR4aS1jb2x1bW4gY2VsbFRlbXBsYXRlPVwidGVtcGxhdGVQbGFubmVkUXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj1cInt7J1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5QbGFubmVkUXR5JyB8IGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU9XCJudW1iZXJcIj48L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgIDxkeGktY29sdW1uIGNlbGxUZW1wbGF0ZT1cInRlbXBsYXRlSXNzdWVkUXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj1cInt7J1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5Db21wbGV0ZWRRdHknIHwgYWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZT1cIm51bWJlclwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLkl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1MFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYmF0Y2hOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLkJhdGNoTnVtYmVyJyB8IGFicExvY2FsaXphdGlvbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3dpZHRoXT1cIjEyMFwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwid2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbj1cInt7J1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5XYXJlaG91c2UnIHwgYWJwTG9jYWxpemF0aW9ufX1cIiBbd2lkdGhdPVwiMTIwXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxkeG8tbG9va3VwIFtkYXRhU291cmNlXT1cIndhcmVob3VzZXNcIiBkaXNwbGF5RXhwcj1cIndoc05hbWVcIiB2YWx1ZUV4cHI9XCJ3aHNDb2RlXCI+XHJcbiAgICAgICAgICAgICAgPC9keG8tbG9va3VwPlxyXG4gICAgICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAndGVtcGxhdGVRdHknXCI+XHJcbiAgICAgICAgICAgICAge3sgSGl0SGVscGVyLmdldE1lYXN1cmVtZW50Rm9ybWF0dGVkV2l0aExvY2FsaXphdGlvbihkYXRhLmtleS5xdWFudGl0eSwgZGF0YS5rZXkudW5pdE9mTWVhc3VyZW1lbnQpIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ3RlbXBsYXRlUGxhbm5lZFF0eSdcIj5cclxuICAgICAgICAgICAgICB7eyBIaXRIZWxwZXIuZ2V0TWVhc3VyZW1lbnRGb3JtYXR0ZWRXaXRoTG9jYWxpemF0aW9uKGRhdGEua2V5LnBsYW5uZWRRdHksIGRhdGEua2V5LnVuaXRPZk1lYXN1cmVtZW50KSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICd0ZW1wbGF0ZUlzc3VlZFF0eSdcIj5cclxuICAgICAgICAgICAgICB7eyBIaXRIZWxwZXIuZ2V0TWVhc3VyZW1lbnRGb3JtYXR0ZWRXaXRoTG9jYWxpemF0aW9uKGRhdGEua2V5Lmlzc3VlZFF0eSwgZGF0YS5rZXkudW5pdE9mTWVhc3VyZW1lbnQpIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9keC1kYXRhLWdyaWQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==
286
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWlzc3Vlcy1mb3ItcHJvZHVjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvY29tcG9uZW50cy9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1pc3N1ZXMtZm9yLXByb2R1Y3Rpb25zL2hpdC1pc3N1ZXMtZm9yLXByb2R1Y3Rpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTSxXQUFXLEVBQWlDLE1BQU0sY0FBYyxDQUFDO0FBRTlFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQWdCLHVCQUF1QixFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFFM0csT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBSzFELE9BQU8sRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULDBCQUEwQixFQUMzQixNQUFNLG1EQUFtRCxDQUFDO0FBSTNELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBU2pELE1BQU0sT0FBTyxnQ0FBZ0M7SUFXM0MsWUFDVSxNQUFjLEVBQ04sSUFBaUIsRUFDakIsS0FBcUIsRUFDckIsT0FBdUMsRUFDL0MsWUFBaUMsRUFDakMsRUFBZSxFQUNmLHVCQUFtRDtRQU5uRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ04sU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixZQUFPLEdBQVAsT0FBTyxDQUFn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QUMsQ0FBQyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzZIQTlSVSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyx5REFKaEMsQ0FBQyxXQUFXLEVBQUUsRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsQ0FBQyxrV0N2QjVFLDQ5TEFvR0E7MkZEekVhLGdDQUFnQztrQkFQNUMsU0FBUzsrQkFDRSxnQ0FBZ0MsbUJBQ3pCLHVCQUF1QixDQUFDLE9BQU8sYUFDckMsQ0FBQyxXQUFXLEVBQUUsRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUMsQ0FBQztzU0FLekIsb0JBQW9CO3NCQUFwRSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFDRixnQkFBZ0I7c0JBQTVELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFDZSxRQUFRO3NCQUFqRSxTQUFTO3VCQUFDLDRCQUE0QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QUJQLCBMaXN0U2VydmljZSwgUGFnZWRSZXN1bHREdG8sIFRyYWNrQnlTZXJ2aWNlfSBmcm9tICdAYWJwL25nLmNvcmUnO1xyXG5pbXBvcnQge0NvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZX0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQge0RhdGVBZGFwdGVyfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtQnVpbGRlcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge05nYkRhdGVBZGFwdGVyfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7XHJcbiAgSGl0SXNzdWVzRm9yUHJvZHVjdGlvbnNTZXJ2aWNlXHJcbn0gZnJvbSBcIi4uLy4uL2hpdC1wcm94eS9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7SGl0UHJvZHVjdGlvbk9yZGVyc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LXByb2R1Y3Rpb24tb3JkZXJzL2hpdC1wcm9kdWN0aW9uLW9yZGVycy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgQmF0Y2hOdW1iZXIsXHJcbiAgSXNzdWVMaW5lLFxyXG4gIElzc3Vlc0ZvclByb2R1Y3Rpb25Qb3N0RHRvXHJcbn0gZnJvbSBcIi4uLy4uL2hpdC1wcm94eS9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy9tb2RlbHNcIjtcclxuaW1wb3J0IHtHZXRQcm9kdWN0aW9uT3JkZXJEdG99IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9ucy9tb2RlbHNcIjtcclxuaW1wb3J0IHtEeERhdGFHcmlkQ29tcG9uZW50LCBEeFRleHRCb3hDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcclxuaW1wb3J0IHtXYXJlaG91c2V9IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LXByb2R1Y3Rpb24tb3JkZXJzL21vZGVsc1wiO1xyXG5pbXBvcnQge0hpdEhlbHBlcn0gZnJvbSBcIi4uLy4uL2hpdC1wcm94eS9tb2RlbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhpdC1pc3N1ZXMtZm9yLXByb2R1Y3Rpb25zJyxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXHJcbiAgcHJvdmlkZXJzOiBbTGlzdFNlcnZpY2UsIHtwcm92aWRlOiBOZ2JEYXRlQWRhcHRlciwgdXNlQ2xhc3M6IERhdGVBZGFwdGVyfV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1pc3N1ZXMtZm9yLXByb2R1Y3Rpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oaXQtaXNzdWVzLWZvci1wcm9kdWN0aW9ucy5jb21wb25lbmV0LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0SXNzdWVzRm9yUHJvZHVjdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2JhcmtvZE51bWFyYXNpUmVmJywge3N0YXRpYzogZmFsc2V9KSBubWJCb3hCYXJrb2ROdW1hcmFzaTogRHhUZXh0Qm94Q29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2hhbW1hZGRlUVJSZWYnLCB7c3RhdGljOiBmYWxzZX0pIG5tYkJveEhhbW1hZGRlUVI6IER4VGV4dEJveENvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdnZXRQcm9kdWN0aW9uT3JkZXJMaW5lR3JpZCcsIHtzdGF0aWM6IGZhbHNlfSkgZGF0YUdyaWQ6IER4RGF0YUdyaWRDb21wb25lbnQ7XHJcblxyXG4gIG9wdGlvbnM6IFBhcnRpYWw8Q29uZmlybWF0aW9uLk9wdGlvbnM+ID0ge1xyXG4gICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlYWRvbmx5IHRyYWNrOiBUcmFja0J5U2VydmljZSxcclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBIaXRJc3N1ZXNGb3JQcm9kdWN0aW9uc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBwcm9kdWN0aW9uT3JkZXJzU2VydmljZTogSGl0UHJvZHVjdGlvbk9yZGVyc1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmZvY3VzQmFya29kSW5wdXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgdGhpcy5nZXRXYXJlaG91c2VzKCk7XHJcbiAgfVxyXG5cclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoZUJhc2lsZGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRW1yaUJhcmtvZHU6IG51bWJlcjtcclxuICBoYW1tYWRkZVFSOiBzdHJpbmcgPSAnJztcclxuICBwcm9kdWN0aW9uT3JkZXI6IEdldFByb2R1Y3Rpb25PcmRlckR0bztcbiAgaXNzdWVzRm9yUHJvZHVjdGlvblBvc3Q6IElzc3Vlc0ZvclByb2R1Y3Rpb25Qb3N0RHRvO1xuICB1bml0T2ZNZWFzdXJlOiBzdHJpbmc7XG4gIHByaXZhdGUgc2Nhbm5lZEJhcmNvZGVLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgaW5pdGlhbEJhdGNoTnVtYmVycyA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG5cclxuICBhc3luYyBnZXRQcm9kdWN0aW9uT3JkZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNFbXJpQmFya29kdSkge1xyXG4gICAgICB0aGlzLmZvY3VzQmFya29kSW5wdXQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hlQmFzaWxkaU1pID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnByb2R1Y3Rpb25PcmRlcnNTZXJ2aWNlLmdldCh0aGlzLmlzRW1yaUJhcmtvZHUpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5pc1N1Y2Nlc3NmdWwpIHtcclxuICAgICAgICAgIHRoaXMucHJvZHVjdGlvbk9yZGVyID0gcmVzcG9uc2UuaXRlbXM7XG4gICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVuaXRPZk1lYXN1cmUgPSByZXNwb25zZS5pdGVtcy51bml0T2ZNZWFzdXJlbWVudDtcbiAgICAgICAgICB0aGlzLmluaXRpYWxCYXRjaE51bWJlcnMgPSBuZXcgTWFwKFxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0aW9uT3JkZXIuZ2V0UHJvZHVjdGlvbk9yZGVyTGluZS5tYXAobGluZSA9PiBbbGluZS5saW5lTnVtLCBsaW5lLmJhdGNoTnVtYmVyIHx8ICcnXSlcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMucmVzZXRJc3N1ZUdyaWQoKTtcblxyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ubWJCb3hIYW1tYWRkZVFSLmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hlQmFzaWxkaU1pID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGUpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoZUJhc2lsZGlNaSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZm9jdXNCYXJrb2RJbnB1dCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcGFyc2VBbmRBZGRRUigpIHtcclxuICAgIGlmICghdGhpcy5oYW1tYWRkZVFSKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdCBwYXJzZWQgPSBIaXRIZWxwZXIucGFyc2VRUih0aGlzLmhhbW1hZGRlUVIpO1xyXG4gICAgaWYgKCFwYXJzZWQpe1xyXG4gICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgJ0dlw6dlcnNpeiBiYXJrb2QhJywgdGhpcy5vcHRpb25zKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFtbWFkZGVRUiA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTcO8a2VycmVyIGJhcmtvZCBrb250cm9sw7w6IGF5bsSxIGnFnyBlbXJpICsgdGFydMSxbSBzxLFyYSBubyBrb21iaW5hc3lvbnUgdGVrcmFyIG9rdXR1bGFtYXpcclxuICAgIGlmIChwYXJzZWQud29ya09yZGVyTm8gJiYgcGFyc2VkLndlaWdoaW5nU2VxdWVuY2VObykge1xyXG4gICAgICBjb25zdCBiYXJjb2RlS2V5ID0gYCR7cGFyc2VkLndvcmtPcmRlck5vfV8ke3BhcnNlZC53ZWlnaGluZ1NlcXVlbmNlTm99YDtcclxuICAgICAgaWYgKHRoaXMuc2Nhbm5lZEJhcmNvZGVLZXlzLmhhcyhiYXJjb2RlS2V5KSkge1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnQXluxLEgYmFya29kIHRla3JhciBva3V0dWxhbWF6IScsIHRoaXMub3B0aW9ucykuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oYW1tYWRkZVFSID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zY2FubmVkQmFyY29kZUtleXMuYWRkKGJhcmNvZGVLZXkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VydmljZS5nZXQocGFyc2VkLmNoZW1pY2FsQ29kZSwgdGhpcy5wcm9kdWN0aW9uT3JkZXIuYWJzb2x1dGVFbnRyeS50b1N0cmluZygpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICBjb25zdCBpc3N1ZUxpbmUgPSB0aGlzLnByb2R1Y3Rpb25PcmRlci5nZXRQcm9kdWN0aW9uT3JkZXJMaW5lLmZpbmQoKHgpID0+IHguaXRlbUNvZGUgPT09IHBhcnNlZC5jaGVtaWNhbENvZGUpO1xyXG4gICAgICAgICAgaWYoaXNzdWVMaW5lID09IG51bGwpe1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5lcnJvcignJywgXCJCdSBpxZ8gZW1yaW5kZSBcIiArIHBhcnNlZC5jaGVtaWNhbENvZGUgKyBcIiBrb2RsdSBzdG9rIGJ1bHVubXV5b3IuIFwiLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaXNzdWVMaW5lRm9yUG9zdCA9IHRoaXMuaXNzdWVzRm9yUHJvZHVjdGlvblBvc3QuRG9jdW1lbnRMaW5lcy5maW5kKCh4KSA9PiB4Lkl0ZW1Db2RlID09PSBwYXJzZWQuY2hlbWljYWxDb2RlKTtcbiAgICAgICAgICBpZiAoaXNzdWVMaW5lKSB7XG4gICAgICAgICAgICBpZiAoaXNzdWVMaW5lLmlzc3VlZFF0eSArIGlzc3VlTGluZS5xdWFudGl0eSArIHBhcnNlZC53ZWlnaHRLZyA+IGlzc3VlTGluZS5wbGFubmVkUXR5ICsgKGlzc3VlTGluZS5wbGFubmVkUXR5ICogMC4wMikpIHtcbiAgICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoJycsICdUb3BsYW5hbiBtaWt0YXIgcGxhbmxhbmFuIG1pa3RhcsSxIGHFn8SxeW9yIScsIHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzc3VlTGluZS5xdWFudGl0eSArPSBwYXJzZWQud2VpZ2h0S2c7XHJcbiAgICAgICAgICAgIGlzc3VlTGluZS5iYXRjaE51bWJlciA9IHBhcnNlZC5sb3ROdW1iZXI7XHJcbiAgICAgICAgICAgIGlzc3VlTGluZUZvclBvc3QuUXVhbnRpdHkgKz0gcGFyc2VkLndlaWdodEtnO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzc3VlTGluZUZvclBvc3QuSXNRUlJlYWR5KSB7XHJcbiAgICAgICAgICAgICAgaXNzdWVMaW5lRm9yUG9zdC5CYXRjaE51bWJlcnMucHVzaChuZXcgQmF0Y2hOdW1iZXIocGFyc2VkLmxvdE51bWJlciwgcGFyc2VkLndlaWdodEtnKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgIGlzc3VlTGluZUZvclBvc3QuQmF0Y2hOdW1iZXJzID0gW25ldyBCYXRjaE51bWJlcihwYXJzZWQubG90TnVtYmVyLCBwYXJzZWQud2VpZ2h0S2cpXTtcclxuICAgICAgICAgICAgICBpc3N1ZUxpbmVGb3JQb3N0LklzUVJSZWFkeSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICAgICAgdGhpcy5oYW1tYWRkZVFSID0gJyc7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb2N1c1FSSW5wdXQoKTtcclxuICAgICAgICB0aGlzLmhhbW1hZGRlUVIgPSAnJztcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHBvc3RJc3N1ZXNGb3JQcm9kdWN0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzc3Vlc0ZvclByb2R1Y3Rpb25Qb3N0KSB7XHJcbiAgICAgIHRoaXMuZm9jdXNCYXJrb2RJbnB1dCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNzdWVzRm9yUHJvZHVjdGlvblBvc3QuRG9jdW1lbnRMaW5lcy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICB4LkJhc2VFbnRyeSA9IHRoaXMucHJvZHVjdGlvbk9yZGVyLmFic29sdXRlRW50cnk7XG4gICAgfSk7XG4gICAgdGhpcy5pc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdC5Eb2N1bWVudExpbmVzID0gdGhpcy5pc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdC5Eb2N1bWVudExpbmVzLmZpbHRlcigoeCkgPT4geC5Jc1FSUmVhZHkpO1xuXHJcbiAgICB0aGlzLnNlcnZpY2UucG9zdCh0aGlzLmlzc3Vlc0ZvclByb2R1Y3Rpb25Qb3N0KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UuaXNTdWNjZXNzZnVsKSB7XG4gICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uc3VjY2VzcygnJywgJ8SwxZ9sZW0gYmHFn2FyxLFsxLEhJywgdGhpcy5vcHRpb25zKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzZXRJc3N1ZUdyaWQoKTtcbiAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbi5zdGF0dXMkLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZm9jdXNRUklucHV0KCk7XG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZSkgPT4ge1xuICAgICAgICB0aGlzLnJlc2V0SXNzdWVHcmlkKCk7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uLnN0YXR1cyQuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvY3VzUVJJbnB1dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJBbGwoKSB7XG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlYXJjaGVCYXNpbGRpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNzdWVzRm9yUHJvZHVjdGlvblBvc3QgPSBudWxsO1xyXG4gICAgdGhpcy5pc0VtcmlCYXJrb2R1ID0gbnVsbDtcclxuICAgIHRoaXMuaGFtbWFkZGVRUiA9ICcnO1xyXG4gICAgdGhpcy5wcm9kdWN0aW9uT3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5mb2N1c0JhcmtvZElucHV0KCk7XHJcbiAgICB0aGlzLnVuaXRPZk1lYXN1cmUgPSBudWxsO1xyXG4gICAgdGhpcy5zY2FubmVkQmFyY29kZUtleXMuY2xlYXIoKTtcbiAgICB0aGlzLmluaXRpYWxCYXRjaE51bWJlcnMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRJc3N1ZUdyaWQoKSB7XG4gICAgaWYgKCF0aGlzLnByb2R1Y3Rpb25PcmRlcj8uZ2V0UHJvZHVjdGlvbk9yZGVyTGluZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5wcm9kdWN0aW9uT3JkZXIuZ2V0UHJvZHVjdGlvbk9yZGVyTGluZS5mb3JFYWNoKGxpbmUgPT4ge1xuICAgICAgbGluZS5xdWFudGl0eSA9IDA7XG4gICAgICBsaW5lLmJhdGNoTnVtYmVyID0gdGhpcy5pbml0aWFsQmF0Y2hOdW1iZXJzLmdldChsaW5lLmxpbmVOdW0pIHx8ICcnO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaXNzdWVMaW5lczogSXNzdWVMaW5lW10gPSB0aGlzLnByb2R1Y3Rpb25PcmRlci5nZXRQcm9kdWN0aW9uT3JkZXJMaW5lLm1hcChsaW5lID0+IHtcbiAgICAgIGNvbnN0IGlzc3VlTGluZSA9IG5ldyBJc3N1ZUxpbmUoKTtcbiAgICAgIGlzc3VlTGluZS5JdGVtQ29kZSA9IGxpbmUuaXRlbUNvZGU7XG4gICAgICBpc3N1ZUxpbmUuQmFzZUxpbmUgPSBsaW5lLmxpbmVOdW07XG4gICAgICBpc3N1ZUxpbmUuV2FyZWhvdXNlQ29kZSA9IGxpbmUud2FyZWhvdXNlO1xuICAgICAgaXNzdWVMaW5lLkJhc2VFbnRyeSA9IGxpbmUuYWJzb2x1dGVFbnRyeTtcbiAgICAgIGlzc3VlTGluZS5CYXRjaE51bWJlcnMgPSBbbmV3IEJhdGNoTnVtYmVyKHRoaXMuaW5pdGlhbEJhdGNoTnVtYmVycy5nZXQobGluZS5saW5lTnVtKSB8fCAnJywgbGluZS5wbGFubmVkUXR5KV07XG4gICAgICByZXR1cm4gaXNzdWVMaW5lO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdCA9IG5ldyBJc3N1ZXNGb3JQcm9kdWN0aW9uUG9zdER0byhpc3N1ZUxpbmVzKTtcbiAgICB0aGlzLnNjYW5uZWRCYXJjb2RlS2V5cy5jbGVhcigpO1xuICAgIHRoaXMuaGFtbWFkZGVRUiA9ICcnO1xuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IHRydWU7XG4gICAgdGhpcy5zZWFyY2hlQmFzaWxkaU1pID0gdHJ1ZTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICB9XG5cclxuICB3YXJlaG91c2VzOiBXYXJlaG91c2VbXSA9IFtdO1xyXG5cclxuICBnZXRXYXJlaG91c2VzKCkge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5wcm9kdWN0aW9uT3JkZXJzU2VydmljZS5nZXRXYXJlaG91c2VzKCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQuaXRlbXMpIHtcclxuICAgICAgICAgIHRoaXMud2FyZWhvdXNlcyA9IHJlc3VsdC5pdGVtcy5zbGljZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEhpdEhlbHBlciA9IEhpdEhlbHBlcjtcclxuXHJcbiAgb25Sb3dQcmVwYXJlZChlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZS5yb3dUeXBlID09PSAnZGF0YScpIHtcbiAgICAgIGlmIChlLmRhdGEucGxhbm5lZFF0eSA8PSBlLmRhdGEuaXNzdWVkUXR5KSB7XG4gICAgICAgIGUucm93RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaXQtZ3JleS1yb3cnKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLnF1YW50aXR5ID4gMCkge1xuICAgICAgICBlLnJvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaGl0LWdyZWVuLXJvdycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXHJcbiAgZm9jdXNRUklucHV0KCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ubWJCb3hIYW1tYWRkZVFSLmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0JhcmtvZElucHV0KCkge1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ubWJCb3hCYXJrb2ROdW1hcmFzaS5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8YWJwLXBhZ2UgW2JyZWFkY3J1bWJdPVwiZmFsc2VcIj5cclxuICA8YWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXIgY2xhc3M9XCJjb2xcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgPGgzIGNsYXNzPVwicGFnZS10aXRsZVwiPlxyXG4gICAgICAgIHt7ICdVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuVGl0bGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvaDM+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgdGV4dC1sZy1lbmQgcHQtMlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwicG9zdElzc3Vlc0ZvclByb2R1Y3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5DcmVhdGUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1icm9vbSBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAge3sgJ1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5DbGVhbicgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2FicC1wYWdlLXRvb2xiYXItY29udGFpbmVyPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIG10LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggI2JhcmtvZE51bWFyYXNpUmVmIGNsYXNzPVwibWUtMVwiIHN0eWxlPVwid2lkdGg6MTAwJTtcIlxyXG4gICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuV29ya09yZGVyTm8nIHwgYWJwTG9jYWxpemF0aW9uXCIgWyh2YWx1ZSldPVwiaXNFbXJpQmFya29kdVwiXHJcbiAgICAgICAgICAob25DaGFuZ2UpPVwiZ2V0UHJvZHVjdGlvbk9yZGVyKClcIiAob25FbnRlcktleSk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiIFtkaXNhYmxlZF09XCJzZWFyY2hlQmFzaWxkaU1pIHx8IGlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8L2R4LW51bWJlci1ib3g+XHJcbiAgICAgICAgPGR4LWJ1dHRvbiBzdHlsZT1cIm1hcmdpbi10b3A6IDcuNXB4O1wiIGljb249XCJzZWFyY2hcIiB0eXBlPVwiZGVmYXVsdFwiIChvbkNsaWNrKT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzZWFyY2hlQmFzaWxkaU1pIHx8IGlzRW1yaUJhcmtvZHVHZWNlcmxpTWlcIj5cclxuICAgICAgICA8L2R4LWJ1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCIgKm5nSWY9XCJpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPGR4LXRleHQtYm94IHN0eWxlPVwid2lkdGg6MTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5Xb3JrT3JkZXJOYW1lJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInByb2R1Y3Rpb25PcmRlci5wcm9kdWN0RGVzY3JpcHRpb25cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgPGR4LXRleHQtYm94IHN0eWxlPVwid2lkdGg6MTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5Cb2lsZXInIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicHJvZHVjdGlvbk9yZGVyLnVfS2F6YW5cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLlBsYW5uZWRRdHknIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJwcm9kdWN0aW9uT3JkZXIucGxhbm5lZFF1YW50aXR5XCIgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXRdPVwiSGl0SGVscGVyLmdldE1lYXN1cmVtZW50Rm9ybWF0dGVkKHVuaXRPZk1lYXN1cmUpXCI+XHJcbiAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcIj5cclxuICAgICAgICAgIDxkeC10ZXh0LWJveCAjaGFtbWFkZGVRUlJlZiBzdHlsZT1cIndpZHRoOjEwMCU7XCIgY2xhc3M9XCJtZS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpJc3N1ZXNGb3JQcm9kdWN0aW9ucy5Jc3N1ZVFSQ29kZScgfCBhYnBMb2NhbGl6YXRpb25cIiBbbWF4TGVuZ3RoXT1cIjI1NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiaGFtbWFkZGVRUlwiIChvbkVudGVyS2V5KT1cInBhcnNlQW5kQWRkUVIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuSXNzdWVRUkNvZGUuUGxhY2Vob2xkZXInIHwgYWJwTG9jYWxpemF0aW9uXCI+XHJcbiAgICAgICAgICA8L2R4LXRleHQtYm94PlxyXG4gICAgICAgICAgPGR4LWJ1dHRvbiBzdHlsZT1cIm1hcmdpbi10b3A6IDcuNXB4O1wiIGljb249XCJwbHVzXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJwYXJzZUFuZEFkZFFSKClcIj5cclxuICAgICAgICAgIDwvZHgtYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvZHVjdGlvbk9yZGVyLmdldFByb2R1Y3Rpb25PcmRlckxpbmU/Lmxlbmd0aFwiIGNsYXNzPVwibXQtM1wiPlxyXG4gICAgICAgICAgPGR4LWRhdGEtZ3JpZCAjZ2V0UHJvZHVjdGlvbk9yZGVyTGluZUdyaWQgW2RhdGFTb3VyY2VdPVwicHJvZHVjdGlvbk9yZGVyLmdldFByb2R1Y3Rpb25PcmRlckxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0JvcmRlcnNdPVwidHJ1ZVwiIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiIFtzb3J0aW5nXT1cInsgbW9kZTogJ25vbmUnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAob25Sb3dQcmVwYXJlZCk9XCJvblJvd1ByZXBhcmVkKCRldmVudClcIj5cclxuICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaXRlbU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLkl0ZW1OYW1lJyB8IGFicExvY2FsaXphdGlvbn19XCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICA8ZHhpLWNvbHVtbiBjZWxsVGVtcGxhdGU9XCJ0ZW1wbGF0ZVF0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eyAnVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLlF1YW50aXR5JyB8IGFicExvY2FsaXphdGlvbiB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlPVwibnVtYmVyXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICA8ZHhpLWNvbHVtbiBjZWxsVGVtcGxhdGU9XCJ0ZW1wbGF0ZVBsYW5uZWRRdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLlBsYW5uZWRRdHknIHwgYWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZT1cIm51bWJlclwiPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgPGR4aS1jb2x1bW4gY2VsbFRlbXBsYXRlPVwidGVtcGxhdGVJc3N1ZWRRdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLkNvbXBsZXRlZFF0eScgfCBhYnBMb2NhbGl6YXRpb259fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlPVwibnVtYmVyXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJpdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuSXRlbUNvZGUnIHwgYWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTUwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJiYXRjaE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcHRpb249XCJ7eydVcmV0aW1Zb25ldGltaTo6SXNzdWVzRm9yUHJvZHVjdGlvbnMuQmF0Y2hOdW1iZXInIHwgYWJwTG9jYWxpemF0aW9ufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTIwXCI+PC9keGktY29sdW1uPlxyXG4gICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJ3YXJlaG91c2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXB0aW9uPVwie3snVXJldGltWW9uZXRpbWk6Oklzc3Vlc0ZvclByb2R1Y3Rpb25zLldhcmVob3VzZScgfCBhYnBMb2NhbGl6YXRpb259fVwiIFt3aWR0aF09XCIxMjBcIj5cclxuXHJcbiAgICAgICAgICAgICAgPGR4by1sb29rdXAgW2RhdGFTb3VyY2VdPVwid2FyZWhvdXNlc1wiIGRpc3BsYXlFeHByPVwid2hzTmFtZVwiIHZhbHVlRXhwcj1cIndoc0NvZGVcIj5cclxuICAgICAgICAgICAgICA8L2R4by1sb29rdXA+XHJcbiAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICd0ZW1wbGF0ZVF0eSdcIj5cclxuICAgICAgICAgICAgICB7eyBIaXRIZWxwZXIuZ2V0TWVhc3VyZW1lbnRGb3JtYXR0ZWRXaXRoTG9jYWxpemF0aW9uKGRhdGEua2V5LnF1YW50aXR5LCBkYXRhLmtleS51bml0T2ZNZWFzdXJlbWVudCkgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAndGVtcGxhdGVQbGFubmVkUXR5J1wiPlxyXG4gICAgICAgICAgICAgIHt7IEhpdEhlbHBlci5nZXRNZWFzdXJlbWVudEZvcm1hdHRlZFdpdGhMb2NhbGl6YXRpb24oZGF0YS5rZXkucGxhbm5lZFF0eSwgZGF0YS5rZXkudW5pdE9mTWVhc3VyZW1lbnQpIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ3RlbXBsYXRlSXNzdWVkUXR5J1wiPlxyXG4gICAgICAgICAgICAgIHt7IEhpdEhlbHBlci5nZXRNZWFzdXJlbWVudEZvcm1hdHRlZFdpdGhMb2NhbGl6YXRpb24oZGF0YS5rZXkuaXNzdWVkUXR5LCBkYXRhLmtleS51bml0T2ZNZWFzdXJlbWVudCkgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9hYnAtcGFnZT5cclxuIl19
@@ -14,6 +14,10 @@ export class HitFillingReceiptFromProductionService {
14
14
  url: `${this.resourceEndpoint}/create-receipt`,
15
15
  body: input,
16
16
  }, { apiName: this.apiName });
17
+ this.getOperationStatus = (operationId) => this.restService.request({
18
+ method: 'GET',
19
+ url: `${this.resourceEndpoint}/operations/${operationId}`,
20
+ }, { apiName: this.apiName });
17
21
  this.resourceEndpoint = '/api/uretim-yonetimi/filling-receipt-from-production';
18
22
  }
19
23
  }
@@ -25,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
25
29
  providedIn: 'root',
26
30
  }]
27
31
  }], ctorParameters: function () { return [{ type: i1.RestService }]; } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VyZXRpbS15b25ldGltaS9zcmMvbGliL2hpdC1wcm94eS9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQThEM0MsTUFBTSxPQUFPLHNDQUFzQztJQUlqRCxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUg1QyxZQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFPM0IscUJBQWdCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQ3RCO1lBQ0UsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLGVBQWUsUUFBUSxFQUFFO1NBQ3ZELEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUMxQixDQUFDO1FBRUosa0JBQWEsR0FBRyxDQUFDLEtBQThCLEVBQUUsRUFBRSxDQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDdEI7WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsaUJBQWlCO1lBQzlDLElBQUksRUFBRSxLQUFLO1NBQ1osRUFDRCxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQzFCLENBQUM7UUFwQkYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHNEQUFzRCxDQUFDO0lBQ2pGLENBQUM7O21JQU5VLHNDQUFzQzt1SUFBdEMsc0NBQXNDLGNBRnJDLE1BQU07MkZBRVAsc0NBQXNDO2tCQUhsRCxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlc3VsdEJhc2UgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlY2VpcHRIaXN0b3J5SXRlbUR0byB7XG4gIGRvY051bTogbnVtYmVyO1xuICBiYXRjaE51bTogc3RyaW5nO1xuICBxdWFudGl0eTogbnVtYmVyO1xuICB3aHNOYW1lOiBzdHJpbmc7XG4gIGRvY1N0YXR1czogc3RyaW5nO1xuICB1c2VyQ29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFdvcmtPcmRlckluZm9EdG8ge1xuICBkb2NFbnRyeTogbnVtYmVyO1xuICBpdGVtQ29kZTogc3RyaW5nO1xuICBpdGVtTmFtZTogc3RyaW5nO1xuICBwbGFubmVkUXR5OiBudW1iZXI7XG4gIGNtcGx0UXR5OiBudW1iZXI7XG4gIG1heEFsbG93ZWRRdHk6IG51bWJlcjtcbiAgcmVtYWluaW5nQWxsb3dlZFF0eTogbnVtYmVyO1xuICB3YXJlaG91c2U6IHN0cmluZztcbiAgdV9LYWxpdGVEdXJ1bXU6IHN0cmluZztcbiAgdV9ES3BhbGV0eXVzZWtsaWs/OiBudW1iZXI7XG4gIHNhbFBhY2tVbj86IG51bWJlcjtcbiAgdV9UUktBTUJBTEFKTE9UOiBzdHJpbmc7XG4gIGxpbmVzOiBXb3JrT3JkZXJMaW5lRHRvW107XG4gIHJlY2VpcHRIaXN0b3J5OiBSZWNlaXB0SGlzdG9yeUl0ZW1EdG9bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3JrT3JkZXJMaW5lRHRvIHtcbiAgbGluZU51bTogbnVtYmVyO1xuICBpdGVtQ29kZTogc3RyaW5nO1xuICBpdGVtTmFtZTogc3RyaW5nO1xuICBwbGFubmVkUXR5OiBudW1iZXI7XG4gIGlzc3VlZFF0eTogbnVtYmVyO1xuICB3YXJlaG91c2U6IHN0cmluZztcbiAgaXRlbVR5cGU6IG51bWJlcjtcbiAgaXNDb250cm9sbGVkOiBib29sZWFuO1xuICBiYXRjaE51bWJlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUZpbGxpbmdSZWNlaXB0RHRvIHtcbiAgZG9jRW50cnk6IG51bWJlcjtcbiAgcGFsbGV0VHlwZTogc3RyaW5nO1xuICBrb2xpQ291bnQ/OiBudW1iZXI7XG4gIHRvdGFsUXVhbnRpdHk6IG51bWJlcjtcbiAgd2FyZWhvdXNlQ29kZTogc3RyaW5nO1xuICBiYXRjaE51bWJlcjogc3RyaW5nO1xuICBjb21wb25lbnRzVG9Db25zdW1lOiBDb21wb25lbnRDb25zdW1wdGlvbkR0b1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbnN1bXB0aW9uRHRvIHtcbiAgaXRlbUNvZGU6IHN0cmluZztcbiAgcXVhbnRpdHk6IG51bWJlcjtcbiAgd2FyZWhvdXNlQ29kZTogc3RyaW5nO1xuICBiYXRjaE51bWJlcjogc3RyaW5nO1xuICBiYXNlTGluZTogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSGl0RmlsbGluZ1JlY2VpcHRGcm9tUHJvZHVjdGlvblNlcnZpY2Uge1xuICBhcGlOYW1lID0gJ1VyZXRpbVlvbmV0aW1pJztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc291cmNlRW5kcG9pbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSkge1xuICAgIHRoaXMucmVzb3VyY2VFbmRwb2ludCA9ICcvYXBpL3VyZXRpbS15b25ldGltaS9maWxsaW5nLXJlY2VpcHQtZnJvbS1wcm9kdWN0aW9uJztcbiAgfVxuXG4gIGdldFdvcmtPcmRlckluZm8gPSAoZG9jRW50cnk6IG51bWJlcikgPT5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBSZXN1bHRCYXNlPEdldFdvcmtPcmRlckluZm9EdG8+PihcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiBgJHt0aGlzLnJlc291cmNlRW5kcG9pbnR9L3dvcmstb3JkZXIvJHtkb2NFbnRyeX1gLFxuICAgICAgfSxcbiAgICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH1cbiAgICApO1xuXG4gIGNyZWF0ZVJlY2VpcHQgPSAoaW5wdXQ6IENyZWF0ZUZpbGxpbmdSZWNlaXB0RHRvKSA9PlxuICAgIHRoaXMucmVzdFNlcnZpY2UucmVxdWVzdDxhbnksIFJlc3VsdEJhc2U8YW55Pj4oXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICB1cmw6IGAke3RoaXMucmVzb3VyY2VFbmRwb2ludH0vY3JlYXRlLXJlY2VpcHRgLFxuICAgICAgICBib2R5OiBpbnB1dCxcbiAgICAgIH0sXG4gICAgICB7IGFwaU5hbWU6IHRoaXMuYXBpTmFtZSB9XG4gICAgKTtcbn1cbiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VyZXRpbS15b25ldGltaS9zcmMvbGliL2hpdC1wcm94eS9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi9oaXQtZmlsbGluZy1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQXdFM0MsTUFBTSxPQUFPLHNDQUFzQztJQUlqRCxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUg1QyxZQUFPLEdBQUcsZ0JBQWdCLENBQUM7UUFPM0IscUJBQWdCLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQ3RCO1lBQ0UsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLGVBQWUsUUFBUSxFQUFFO1NBQ3ZELEVBQ0QsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUMxQixDQUFDO1FBRUosa0JBQWEsR0FBRyxDQUFDLEtBQThCLEVBQUUsRUFBRSxDQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDdEI7WUFDRSxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsaUJBQWlCO1lBQzlDLElBQUksRUFBRSxLQUFLO1NBQ1osRUFDRCxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQzFCLENBQUM7UUFFSix1QkFBa0IsR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FDdEI7WUFDRSxNQUFNLEVBQUUsS0FBSztZQUNiLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsZUFBZSxXQUFXLEVBQUU7U0FDMUQsRUFDRCxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQzFCLENBQUM7UUE3QkYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHNEQUFzRCxDQUFDO0lBQ2pGLENBQUM7O21JQU5VLHNDQUFzQzt1SUFBdEMsc0NBQXNDLGNBRnJDLE1BQU07MkZBRVAsc0NBQXNDO2tCQUhsRCxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZXN1bHRCYXNlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVjZWlwdEhpc3RvcnlJdGVtRHRvIHtcclxuICBkb2NOdW06IG51bWJlcjtcclxuICBiYXRjaE51bTogc3RyaW5nO1xyXG4gIHF1YW50aXR5OiBudW1iZXI7XHJcbiAgd2hzTmFtZTogc3RyaW5nO1xyXG4gIGRvY1N0YXR1czogc3RyaW5nO1xyXG4gIHVzZXJDb2RlOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0V29ya09yZGVySW5mb0R0byB7XHJcbiAgZG9jRW50cnk6IG51bWJlcjtcclxuICBpdGVtQ29kZTogc3RyaW5nO1xyXG4gIGl0ZW1OYW1lOiBzdHJpbmc7XHJcbiAgcGxhbm5lZFF0eTogbnVtYmVyO1xyXG4gIGNtcGx0UXR5OiBudW1iZXI7XHJcbiAgbWF4QWxsb3dlZFF0eTogbnVtYmVyO1xyXG4gIHJlbWFpbmluZ0FsbG93ZWRRdHk6IG51bWJlcjtcclxuICB3YXJlaG91c2U6IHN0cmluZztcclxuICB1X0thbGl0ZUR1cnVtdTogc3RyaW5nO1xyXG4gIHVfREtwYWxldHl1c2VrbGlrPzogbnVtYmVyO1xyXG4gIHNhbFBhY2tVbj86IG51bWJlcjtcclxuICB1X1RSS0FNQkFMQUpMT1Q6IHN0cmluZztcclxuICBsaW5lczogV29ya09yZGVyTGluZUR0b1tdO1xyXG4gIHJlY2VpcHRIaXN0b3J5OiBSZWNlaXB0SGlzdG9yeUl0ZW1EdG9bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3JrT3JkZXJMaW5lRHRvIHtcclxuICBsaW5lTnVtOiBudW1iZXI7XHJcbiAgaXRlbUNvZGU6IHN0cmluZztcclxuICBpdGVtTmFtZTogc3RyaW5nO1xyXG4gIHBsYW5uZWRRdHk6IG51bWJlcjtcclxuICBpc3N1ZWRRdHk6IG51bWJlcjtcclxuICB3YXJlaG91c2U6IHN0cmluZztcclxuICBpdGVtVHlwZTogbnVtYmVyO1xyXG4gIGlzQ29udHJvbGxlZDogYm9vbGVhbjtcclxuICBiYXRjaE51bWJlcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUZpbGxpbmdSZWNlaXB0RHRvIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZG9jRW50cnk6IG51bWJlcjtcbiAgcGFsbGV0VHlwZTogc3RyaW5nO1xuICBrb2xpQ291bnQ/OiBudW1iZXI7XG4gIHRvdGFsUXVhbnRpdHk/OiBudW1iZXI7XG4gIHdhcmVob3VzZUNvZGU/OiBzdHJpbmc7XG4gIGJhdGNoTnVtYmVyPzogc3RyaW5nO1xuICBjb21wb25lbnRzVG9Db25zdW1lPzogQ29tcG9uZW50Q29uc3VtcHRpb25EdG9bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNlaXB0T3BlcmF0aW9uU3RhdHVzRHRvIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3RhdGU6ICdQb3N0aW5nJyB8ICdDb21wbGV0ZWQnIHwgJ0ZhaWxlZCcgfCAnVW5rbm93bicgfCAnSW5jb25zaXN0ZW50JztcbiAgYmF0Y2hOdW1iZXI6IHN0cmluZztcbiAgaXNzdWVEb2NFbnRyeT86IG51bWJlcjtcbiAgcmVjZWlwdERvY0VudHJ5PzogbnVtYmVyO1xuICBlcnJvcj86IHN0cmluZztcbn1cblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudENvbnN1bXB0aW9uRHRvIHtcclxuICBpdGVtQ29kZTogc3RyaW5nO1xyXG4gIHF1YW50aXR5OiBudW1iZXI7XHJcbiAgd2FyZWhvdXNlQ29kZTogc3RyaW5nO1xyXG4gIGJhdGNoTnVtYmVyOiBzdHJpbmc7XHJcbiAgYmFzZUxpbmU6IG51bWJlcjtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdEZpbGxpbmdSZWNlaXB0RnJvbVByb2R1Y3Rpb25TZXJ2aWNlIHtcclxuICBhcGlOYW1lID0gJ1VyZXRpbVlvbmV0aW1pJztcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVzb3VyY2VFbmRwb2ludDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSkge1xyXG4gICAgdGhpcy5yZXNvdXJjZUVuZHBvaW50ID0gJy9hcGkvdXJldGltLXlvbmV0aW1pL2ZpbGxpbmctcmVjZWlwdC1mcm9tLXByb2R1Y3Rpb24nO1xyXG4gIH1cclxuXHJcbiAgZ2V0V29ya09yZGVySW5mbyA9IChkb2NFbnRyeTogbnVtYmVyKSA9PlxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgUmVzdWx0QmFzZTxHZXRXb3JrT3JkZXJJbmZvRHRvPj4oXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICAgIHVybDogYCR7dGhpcy5yZXNvdXJjZUVuZHBvaW50fS93b3JrLW9yZGVyLyR7ZG9jRW50cnl9YCxcclxuICAgICAgfSxcclxuICAgICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfVxyXG4gICAgKTtcclxuXHJcbiAgY3JlYXRlUmVjZWlwdCA9IChpbnB1dDogQ3JlYXRlRmlsbGluZ1JlY2VpcHREdG8pID0+XG4gICAgdGhpcy5yZXN0U2VydmljZS5yZXF1ZXN0PGFueSwgUmVzdWx0QmFzZTxSZWNlaXB0T3BlcmF0aW9uU3RhdHVzRHRvPj4oXG4gICAgICB7XHJcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgdXJsOiBgJHt0aGlzLnJlc291cmNlRW5kcG9pbnR9L2NyZWF0ZS1yZWNlaXB0YCxcclxuICAgICAgICBib2R5OiBpbnB1dCxcclxuICAgICAgfSxcclxuICAgICAgeyBhcGlOYW1lOiB0aGlzLmFwaU5hbWUgfVxyXG4gICAgKTtcblxuICBnZXRPcGVyYXRpb25TdGF0dXMgPSAob3BlcmF0aW9uSWQ6IHN0cmluZykgPT5cbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnJlcXVlc3Q8YW55LCBSZXN1bHRCYXNlPFJlY2VpcHRPcGVyYXRpb25TdGF0dXNEdG8+PihcbiAgICAgIHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiBgJHt0aGlzLnJlc291cmNlRW5kcG9pbnR9L29wZXJhdGlvbnMvJHtvcGVyYXRpb25JZH1gLFxuICAgICAgfSxcbiAgICAgIHsgYXBpTmFtZTogdGhpcy5hcGlOYW1lIH1cbiAgICApO1xufVxuIl19
@@ -5,13 +5,37 @@ export class HitHelper {
5
5
  return suffix ? '#,##0.0000 ' + suffix : '#,##0.0000';
6
6
  }
7
7
  static getMeasurementFormattedWithLocalization(value, unit) {
8
- const locale = navigator.language || 'tr-TR';
9
- const formatted = new Intl.NumberFormat(locale, {
8
+ const numericValue = HitHelper.toNumericValue(value);
9
+ const formatted = new Intl.NumberFormat('tr-TR', {
10
10
  minimumFractionDigits: 4,
11
11
  maximumFractionDigits: 4,
12
- }).format(value);
12
+ useGrouping: true,
13
+ }).format(numericValue);
13
14
  return unit ? `${formatted} ${unit}` : formatted;
14
15
  }
16
+ static toNumericValue(value) {
17
+ if (typeof value === 'number') {
18
+ return Number.isFinite(value) ? value : 0;
19
+ }
20
+ if (value == null || value === '') {
21
+ return 0;
22
+ }
23
+ const text = String(value).trim().replace(/\s/g, '');
24
+ const lastComma = text.lastIndexOf(',');
25
+ const lastDot = text.lastIndexOf('.');
26
+ let normalized = text;
27
+ if (lastComma >= 0 && lastDot >= 0) {
28
+ // Türkçe biçim: 10.000,2500 -> 10000.2500
29
+ normalized = lastComma > lastDot
30
+ ? text.replace(/\./g, '').replace(',', '.')
31
+ : text.replace(/,/g, '');
32
+ }
33
+ else if (lastComma >= 0) {
34
+ normalized = text.replace(',', '.');
35
+ }
36
+ const parsed = Number(normalized);
37
+ return Number.isFinite(parsed) ? parsed : 0;
38
+ }
15
39
  static getFormattedErrors(errors) {
16
40
  if (!errors?.length) {
17
41
  return '';
@@ -24,7 +48,7 @@ export class HitHelper {
24
48
  .join('\n');
25
49
  }
26
50
  static parseQR(barkod) {
27
- // Yeni barkod yapısı: (240)itemcode(10)partiNo(17)sonKullanmaTarihi(3103)miktar(21)elTerminalKodu
51
+ // Barkod yapısı: (240)itemcode(10)partiNo(17)sonKullanmaTarihi(3103)miktar(21)seriNo
28
52
  const marker240 = '(240)';
29
53
  const marker10 = '(10)';
30
54
  const marker17 = '(17)';
@@ -68,13 +92,15 @@ export class HitHelper {
68
92
  }
69
93
  }
70
94
  export class Hammadde {
71
- constructor(chemicalCode, lotNumber, expirationDate, weight, terminalCode) {
95
+ constructor(chemicalCode, lotNumber, expirationDate, weightGr, terminalCode, workOrderNo = '', weighingSequenceNo = '') {
72
96
  this.chemicalCode = chemicalCode;
73
97
  this.lotNumber = lotNumber;
74
98
  this.expirationDate = expirationDate;
75
- this.weightGr = weight; // Gram cinsinden
76
- this.weightKg = weight ? weight / 1000 : 0; // Kilogram cinsine dönüştürülmüş hali
99
+ this.weightGr = weightGr;
100
+ this.weightKg = weightGr ? weightGr / 1000 : 0;
77
101
  this.terminalCode = terminalCode;
102
+ this.workOrderNo = workOrderNo;
103
+ this.weighingSequenceNo = weighingSequenceNo;
78
104
  }
79
105
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvaGl0LXByb3h5L21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUVELE1BQU0sT0FBTyxTQUFTO0lBQ2IsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE1BQWM7UUFDbEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN4RCxDQUFDO0lBRU0sTUFBTSxDQUFDLHVDQUF1QyxDQUFDLEtBQWEsRUFBRSxJQUFZO1FBQy9FLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDO1FBRTdDLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7WUFDOUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixxQkFBcUIsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFnQjtRQUN4QyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRTtZQUNuQixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjtRQUVELE9BQU8sTUFBTTthQUNWLEdBQUcsQ0FBQyxDQUFDLEdBQVcsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxHQUFHLENB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QUFFRCxNQUFNLE9BQU8sUUFBUTtJQVFuQixZQUFZLFlBQW9CLEVBQUUsU0FBaUIsRUFBRSxjQUFzQixFQUFFLE1BQWMsRUFBRSxZQUFvQjtRQUMvRyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsc0NBQXNDO1FBQ2xGLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSZXN1bHRCYXNlPFQ+IHtcclxuICBpdGVtczogVDtcclxuICB0b3RhbENvdW50OiBudW1iZXI7XHJcbiAgaXNTdWNjZXNzZnVsOiBib29sZWFuO1xyXG4gIGVycm9yczogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBIaXRIZWxwZXIge1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TWVhc3VyZW1lbnRGb3JtYXR0ZWQoc3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1ZmZpeCA/ICcjLCMjMC4wMDAwICcgKyBzdWZmaXggOiAnIywjIzAuMDAwMCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldE1lYXN1cmVtZW50Rm9ybWF0dGVkV2l0aExvY2FsaXphdGlvbih2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbG9jYWxlID0gbmF2aWdhdG9yLmxhbmd1YWdlIHx8ICd0ci1UUic7XHJcblxyXG4gICAgY29uc3QgZm9ybWF0dGVkID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xyXG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsXHJcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogNCxcclxuICAgIH0pLmZvcm1hdCh2YWx1ZSk7XHJcblxyXG4gICAgcmV0dXJuIHVuaXQgPyBgJHtmb3JtYXR0ZWR9ICR7dW5pdH1gIDogZm9ybWF0dGVkO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldEZvcm1hdHRlZEVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGlmICghZXJyb3JzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHJldHVybiBlcnJvcnNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9yc1xyXG4gICAgICAubWFwKChlcnI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gYCR7aW5kZXggKyAxfS4gJHtlcnJ9YClcclxuICAgICAgLmpvaW4oJ1xcbicpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBhcnNlUVIoYmFya29kOiBzdHJpbmcpOiBIYW1tYWRkZSB8IG51bGwge1xyXG4gICAgLy8gWWVuaSBiYXJrb2QgeWFwxLFzxLE6ICgyNDApaXRlbWNvZGUoMTApcGFydGlObygxNylzb25LdWxsYW5tYVRhcmloaSgzMTAzKW1pa3RhcigyMSllbFRlcm1pbmFsS29kdVxyXG4gICAgY29uc3QgbWFya2VyMjQwID0gJygyNDApJztcclxuICAgIGNvbnN0IG1hcmtlcjEwID0gJygxMCknO1xyXG4gICAgY29uc3QgbWFya2VyMTcgPSAnKDE3KSc7XHJcbiAgICBjb25zdCBtYXJrZXIzMTAzID0gJygzMTAzKSc7XHJcbiAgICBjb25zdCBtYXJrZXIyMSA9ICcoMjEpJztcclxuXHJcbiAgICAvLyAyNDAgaWxlIGJhxZ9sxLF5b3JcclxuICAgIGlmICghYmFya29kLnN0YXJ0c1dpdGgobWFya2VyMjQwKSkgcmV0dXJuIG51bGw7XHJcbiAgICBsZXQgcG9zID0gbWFya2VyMjQwLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCBpZHgxMCA9IGJhcmtvZC5pbmRleE9mKG1hcmtlcjEwLCBwb3MpO1xyXG4gICAgaWYgKGlkeDEwID09PSAtMSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBpdGVtQ29kZSA9IGJhcmtvZC5zdWJzdHJpbmcocG9zLCBpZHgxMCk7XHJcbiAgICBwb3MgPSBpZHgxMCArIG1hcmtlcjEwLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCBpZHgxNyA9IGJhcmtvZC5pbmRleE9mKG1hcmtlcjE3LCBwb3MpO1xyXG4gICAgaWYgKGlkeDE3ID09PSAtMSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBsb3RObyA9IGJhcmtvZC5zdWJzdHJpbmcocG9zLCBpZHgxNyk7XHJcbiAgICBwb3MgPSBpZHgxNyArIG1hcmtlcjE3Lmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCBpZHgzMTAzID0gYmFya29kLmluZGV4T2YobWFya2VyMzEwMywgcG9zKTtcclxuICAgIGlmIChpZHgzMTAzID09PSAtMSkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBleHBEYXRlUmF3ID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDMxMDMpO1xyXG4gICAgcG9zID0gaWR4MzEwMyArIG1hcmtlcjMxMDMubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDIxID0gYmFya29kLmluZGV4T2YobWFya2VyMjEsIHBvcyk7XHJcbiAgICBpZiAoaWR4MjEgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IHdlaWdodFJhdyA9IGJhcmtvZC5zdWJzdHJpbmcocG9zLCBpZHgyMSk7XHJcbiAgICBwb3MgPSBpZHgyMSArIG1hcmtlcjIxLmxlbmd0aDtcclxuXHJcbiAgICBjb25zdCB0ZXJtaW5hbENvZGUgPSBiYXJrb2Quc3Vic3RyaW5nKHBvcyk7XHJcblxyXG4gICAgLy8gVGFyaWhpIGZvcm1hdGxhOiBZWU1NREQgLT4gWVlZWS1NTS1ERFxyXG4gICAgbGV0IGV4cGlyYXRpb25EYXRlID0gJyc7XHJcbiAgICBpZiAoL15cXGR7Nn0kLy50ZXN0KGV4cERhdGVSYXcpKSB7XHJcbiAgICAgIGV4cGlyYXRpb25EYXRlID0gYDIwJHtleHBEYXRlUmF3LnNsaWNlKDAsIDIpfS0ke2V4cERhdGVSYXcuc2xpY2UoMiwgNCl9LSR7ZXhwRGF0ZVJhdy5zbGljZSg0LCA2KX1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZXhwaXJhdGlvbkRhdGUgPSBleHBEYXRlUmF3O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHdlaWdodCA9IHBhcnNlSW50KHdlaWdodFJhdywgMTApO1xyXG4gICAgcmV0dXJuIG5ldyBIYW1tYWRkZShpdGVtQ29kZSwgbG90Tm8sIGV4cGlyYXRpb25EYXRlLCB3ZWlnaHQsIHRlcm1pbmFsQ29kZSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgSGFtbWFkZGUge1xyXG4gIGNoZW1pY2FsQ29kZTogc3RyaW5nO1xyXG4gIGxvdE51bWJlcjogc3RyaW5nO1xyXG4gIGV4cGlyYXRpb25EYXRlOiBzdHJpbmc7XHJcbiAgd2VpZ2h0R3I6IG51bWJlcjtcclxuICB3ZWlnaHRLZzogbnVtYmVyO1xyXG4gIHRlcm1pbmFsQ29kZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihjaGVtaWNhbENvZGU6IHN0cmluZywgbG90TnVtYmVyOiBzdHJpbmcsIGV4cGlyYXRpb25EYXRlOiBzdHJpbmcsIHdlaWdodDogbnVtYmVyLCB0ZXJtaW5hbENvZGU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jaGVtaWNhbENvZGUgPSBjaGVtaWNhbENvZGU7XHJcbiAgICB0aGlzLmxvdE51bWJlciA9IGxvdE51bWJlcjtcclxuICAgIHRoaXMuZXhwaXJhdGlvbkRhdGUgPSBleHBpcmF0aW9uRGF0ZTtcclxuICAgIHRoaXMud2VpZ2h0R3IgPSB3ZWlnaHQ7IC8vIEdyYW0gY2luc2luZGVuXHJcbiAgICB0aGlzLndlaWdodEtnID0gd2VpZ2h0ID8gd2VpZ2h0IC8gMTAwMCA6IDA7IC8vIEtpbG9ncmFtIGNpbnNpbmUgZMO2bsO8xZ90w7xyw7xsbcO8xZ8gaGFsaVxyXG4gICAgdGhpcy50ZXJtaW5hbENvZGUgPSB0ZXJtaW5hbENvZGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvaGl0LXByb3h5L21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtDQUt0QjtBQUVELE1BQU0sT0FBTyxTQUFTO0lBQ2IsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE1BQWM7UUFDbEQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN4RCxDQUFDO0lBRU0sTUFBTSxDQUFDLHVDQUF1QyxDQUFDLEtBQXlDLEVBQUUsSUFBWTtRQUMzRyxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUU7WUFDL0MscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixxQkFBcUIsRUFBRSxDQUFDO1lBQ3hCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFeEIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVPLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBeUM7UUFDckUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxDQUFDO1NB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dkMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDN0UsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFVbkIsWUFDRSxZQUFvQixFQUNwQixTQUFpQixFQUNqQixjQUFzQixFQUN0QixRQUFnQixFQUNoQixZQUFvQixFQUNwQixjQUFzQixFQUFFLEVBQ3hCLHFCQUE2QixFQUFFO1FBRS9CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBSZXN1bHRCYXNlPFQ+IHtcclxuICBpdGVtczogVDtcclxuICB0b3RhbENvdW50OiBudW1iZXI7XHJcbiAgaXNTdWNjZXNzZnVsOiBib29sZWFuO1xyXG4gIGVycm9yczogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBIaXRIZWxwZXIge1xyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0TWVhc3VyZW1lbnRGb3JtYXR0ZWQoc3VmZml4OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN1ZmZpeCA/ICcjLCMjMC4wMDAwICcgKyBzdWZmaXggOiAnIywjIzAuMDAwMCc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldE1lYXN1cmVtZW50Rm9ybWF0dGVkV2l0aExvY2FsaXphdGlvbih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgdW5pdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBudW1lcmljVmFsdWUgPSBIaXRIZWxwZXIudG9OdW1lcmljVmFsdWUodmFsdWUpO1xuICAgIGNvbnN0IGZvcm1hdHRlZCA9IG5ldyBJbnRsLk51bWJlckZvcm1hdCgndHItVFInLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDQsXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDQsXG4gICAgICB1c2VHcm91cGluZzogdHJ1ZSxcbiAgICB9KS5mb3JtYXQobnVtZXJpY1ZhbHVlKTtcblxuICAgIHJldHVybiB1bml0ID8gYCR7Zm9ybWF0dGVkfSAke3VuaXR9YCA6IGZvcm1hdHRlZDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHRvTnVtZXJpY1ZhbHVlKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IDA7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0ID0gU3RyaW5nKHZhbHVlKS50cmltKCkucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICBjb25zdCBsYXN0Q29tbWEgPSB0ZXh0Lmxhc3RJbmRleE9mKCcsJyk7XG4gICAgY29uc3QgbGFzdERvdCA9IHRleHQubGFzdEluZGV4T2YoJy4nKTtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHRleHQ7XG5cbiAgICBpZiAobGFzdENvbW1hID49IDAgJiYgbGFzdERvdCA+PSAwKSB7XG4gICAgICAvLyBUw7xya8OnZSBiacOnaW06IDEwLjAwMCwyNTAwIC0+IDEwMDAwLjI1MDBcbiAgICAgIG5vcm1hbGl6ZWQgPSBsYXN0Q29tbWEgPiBsYXN0RG90XG4gICAgICAgID8gdGV4dC5yZXBsYWNlKC9cXC4vZywgJycpLnJlcGxhY2UoJywnLCAnLicpXG4gICAgICAgIDogdGV4dC5yZXBsYWNlKC8sL2csICcnKTtcbiAgICB9IGVsc2UgaWYgKGxhc3RDb21tYSA+PSAwKSB7XG4gICAgICBub3JtYWxpemVkID0gdGV4dC5yZXBsYWNlKCcsJywgJy4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWQgPSBOdW1iZXIobm9ybWFsaXplZCk7XG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShwYXJzZWQpID8gcGFyc2VkIDogMDtcbiAgfVxuXHJcbiAgc3RhdGljIGdldEZvcm1hdHRlZEVycm9ycyhlcnJvcnM6IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGlmICghZXJyb3JzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgIHJldHVybiBlcnJvcnNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9yc1xyXG4gICAgICAubWFwKChlcnI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gYCR7aW5kZXggKyAxfS4gJHtlcnJ9YClcclxuICAgICAgLmpvaW4oJ1xcbicpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHBhcnNlUVIoYmFya29kOiBzdHJpbmcpOiBIYW1tYWRkZSB8IG51bGwge1xyXG4gICAgLy8gQmFya29kIHlhcMSxc8SxOiAoMjQwKWl0ZW1jb2RlKDEwKXBhcnRpTm8oMTcpc29uS3VsbGFubWFUYXJpaGkoMzEwMyltaWt0YXIoMjEpc2VyaU5vXHJcbiAgICBjb25zdCBtYXJrZXIyNDAgPSAnKDI0MCknO1xyXG4gICAgY29uc3QgbWFya2VyMTAgPSAnKDEwKSc7XHJcbiAgICBjb25zdCBtYXJrZXIxNyA9ICcoMTcpJztcclxuICAgIGNvbnN0IG1hcmtlcjMxMDMgPSAnKDMxMDMpJztcclxuICAgIGNvbnN0IG1hcmtlcjIxID0gJygyMSknO1xyXG5cclxuICAgIC8vIDI0MCBpbGUgYmHFn2zEsXlvclxyXG4gICAgaWYgKCFiYXJrb2Quc3RhcnRzV2l0aChtYXJrZXIyNDApKSByZXR1cm4gbnVsbDtcclxuICAgIGxldCBwb3MgPSBtYXJrZXIyNDAubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDEwID0gYmFya29kLmluZGV4T2YobWFya2VyMTAsIHBvcyk7XHJcbiAgICBpZiAoaWR4MTAgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGl0ZW1Db2RlID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDEwKTtcclxuICAgIHBvcyA9IGlkeDEwICsgbWFya2VyMTAubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDE3ID0gYmFya29kLmluZGV4T2YobWFya2VyMTcsIHBvcyk7XHJcbiAgICBpZiAoaWR4MTcgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGxvdE5vID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDE3KTtcclxuICAgIHBvcyA9IGlkeDE3ICsgbWFya2VyMTcubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGlkeDMxMDMgPSBiYXJrb2QuaW5kZXhPZihtYXJrZXIzMTAzLCBwb3MpO1xyXG4gICAgaWYgKGlkeDMxMDMgPT09IC0xKSByZXR1cm4gbnVsbDtcclxuICAgIGNvbnN0IGV4cERhdGVSYXcgPSBiYXJrb2Quc3Vic3RyaW5nKHBvcywgaWR4MzEwMyk7XHJcbiAgICBwb3MgPSBpZHgzMTAzICsgbWFya2VyMzEwMy5sZW5ndGg7XHJcblxyXG4gICAgY29uc3QgaWR4MjEgPSBiYXJrb2QuaW5kZXhPZihtYXJrZXIyMSwgcG9zKTtcclxuICAgIGlmIChpZHgyMSA9PT0gLTEpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3Qgd2VpZ2h0UmF3ID0gYmFya29kLnN1YnN0cmluZyhwb3MsIGlkeDIxKTtcclxuICAgIHBvcyA9IGlkeDIxICsgbWFya2VyMjEubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHRlcm1pbmFsQ29kZSA9IGJhcmtvZC5zdWJzdHJpbmcocG9zKTtcclxuXHJcbiAgICAvLyBUYXJpaGkgZm9ybWF0bGE6IFlZTU1ERCAtPiBZWVlZLU1NLUREXHJcbiAgICBsZXQgZXhwaXJhdGlvbkRhdGUgPSAnJztcclxuICAgIGlmICgvXlxcZHs2fSQvLnRlc3QoZXhwRGF0ZVJhdykpIHtcclxuICAgICAgZXhwaXJhdGlvbkRhdGUgPSBgMjAke2V4cERhdGVSYXcuc2xpY2UoMCwgMil9LSR7ZXhwRGF0ZVJhdy5zbGljZSgyLCA0KX0tJHtleHBEYXRlUmF3LnNsaWNlKDQsIDYpfWA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleHBpcmF0aW9uRGF0ZSA9IGV4cERhdGVSYXc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgd2VpZ2h0ID0gcGFyc2VJbnQod2VpZ2h0UmF3LCAxMCk7XHJcbiAgICByZXR1cm4gbmV3IEhhbW1hZGRlKGl0ZW1Db2RlLCBsb3RObywgZXhwaXJhdGlvbkRhdGUsIHdlaWdodCwgdGVybWluYWxDb2RlKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBIYW1tYWRkZSB7XHJcbiAgY2hlbWljYWxDb2RlOiBzdHJpbmc7XHJcbiAgbG90TnVtYmVyOiBzdHJpbmc7XHJcbiAgZXhwaXJhdGlvbkRhdGU6IHN0cmluZztcclxuICB3ZWlnaHRHcjogbnVtYmVyO1xyXG4gIHdlaWdodEtnOiBudW1iZXI7XHJcbiAgdGVybWluYWxDb2RlOiBzdHJpbmc7XHJcbiAgd29ya09yZGVyTm86IHN0cmluZztcclxuICB3ZWlnaGluZ1NlcXVlbmNlTm86IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBjaGVtaWNhbENvZGU6IHN0cmluZyxcclxuICAgIGxvdE51bWJlcjogc3RyaW5nLFxyXG4gICAgZXhwaXJhdGlvbkRhdGU6IHN0cmluZyxcclxuICAgIHdlaWdodEdyOiBudW1iZXIsXHJcbiAgICB0ZXJtaW5hbENvZGU6IHN0cmluZyxcclxuICAgIHdvcmtPcmRlck5vOiBzdHJpbmcgPSAnJyxcclxuICAgIHdlaWdoaW5nU2VxdWVuY2VObzogc3RyaW5nID0gJydcclxuICApIHtcclxuICAgIHRoaXMuY2hlbWljYWxDb2RlID0gY2hlbWljYWxDb2RlO1xyXG4gICAgdGhpcy5sb3ROdW1iZXIgPSBsb3ROdW1iZXI7XHJcbiAgICB0aGlzLmV4cGlyYXRpb25EYXRlID0gZXhwaXJhdGlvbkRhdGU7XHJcbiAgICB0aGlzLndlaWdodEdyID0gd2VpZ2h0R3I7XHJcbiAgICB0aGlzLndlaWdodEtnID0gd2VpZ2h0R3IgPyB3ZWlnaHRHciAvIDEwMDAgOiAwO1xyXG4gICAgdGhpcy50ZXJtaW5hbENvZGUgPSB0ZXJtaW5hbENvZGU7XHJcbiAgICB0aGlzLndvcmtPcmRlck5vID0gd29ya09yZGVyTm87XHJcbiAgICB0aGlzLndlaWdoaW5nU2VxdWVuY2VObyA9IHdlaWdoaW5nU2VxdWVuY2VObztcclxuICB9XHJcbn1cclxuIl19