verben-ng-ui 0.7.2 → 0.7.4

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.
@@ -315,7 +315,9 @@ export class DropDownComponent {
315
315
  item.isLoading = true;
316
316
  var result = await item.loadMore(item.loadTimes);
317
317
  item.isLoading = false;
318
- item.loadTimes.increaseLoadTime();
318
+ if (result.length > 0) {
319
+ item.loadTimes.increaseLoadTime();
320
+ }
319
321
  item.items = this.convertToExpandable(result);
320
322
  if (this.filter) {
321
323
  item.copy = cloneDeep(item.items);
@@ -358,7 +360,9 @@ export class DropDownComponent {
358
360
  ? await item.search(searchContext, item.loadTimes)
359
361
  : await item.loadMore(item.loadTimes);
360
362
  item.isLoading = false;
361
- item.loadTimes.increaseLoadTime();
363
+ if (result.length > 0) {
364
+ item.loadTimes.increaseLoadTime();
365
+ }
362
366
  const converted = this.convertToExpandable(result);
363
367
  for (let res of converted) {
364
368
  item.items.push(res);
@@ -392,7 +396,9 @@ export class DropDownComponent {
392
396
  if (this.group) {
393
397
  result = this.convertToExpandable(result);
394
398
  }
395
- this.loadTimes.increaseLoadTime();
399
+ if (result.length > 0) {
400
+ this.loadTimes.increaseLoadTime();
401
+ }
396
402
  for (let item of result) {
397
403
  this.options.push(item);
398
404
  }
@@ -565,7 +571,8 @@ export class DropDownComponent {
565
571
  : isEqual(this.getValue(option), obj);
566
572
  if (equalityCheck) {
567
573
  this.selectedOption = this.getValue(option);
568
- this.selectedOptionLabel = this.getOptionLabel(option);
574
+ this.selectedOptionLabel = this.asyncLabel
575
+ ? await this.asyncLabel(option) : this.getOptionLabel(option);
569
576
  break;
570
577
  }
571
578
  }
@@ -596,7 +603,8 @@ export class DropDownComponent {
596
603
  : isEqual(this.getValue(option), object);
597
604
  if (equalityCheck) {
598
605
  this.selectedOptions.push(this.getValue(option));
599
- this.selectedOptionLabels.push(this.getOptionLabel(option));
606
+ this.selectedOptionLabels.push(this.asyncLabel
607
+ ? await this.asyncLabel(object) : this.getOptionLabel(option));
600
608
  break;
601
609
  }
602
610
  }
@@ -773,4 +781,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
773
781
  type: HostListener,
774
782
  args: ['document:click', ['$event']]
775
783
  }] } });
776
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJ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Vzt1QkFBQyxlQUFlO2dCQTRHTCxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBSUMsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNO2dCQThnQnBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVJdGVtIH0gZnJvbSAnLi9Ecm9wZG93bk1lbnVJdGVtJztcbmltcG9ydCB7IERyb3Bkb3duTG9hZEV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkxvYWRFdmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL1RlbXBsYXRlRGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkNoYW5nZUV2ZW50JztcbmltcG9ydCB7IERyb3BEb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGlzRXF1YWwsIGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyIGV4dGVuZHMgRHJvcGRvd25NZW51SXRlbSB7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpdGVtcz86IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW107XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgY29weTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgbG9hZFRpbWVzPzogRHJvcGRvd25Mb2FkRXZlbnQ7XG4gIGxvYWRUaW1lc0NvcHk/OiBEcm9wZG93bkxvYWRFdmVudDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRyb3AtZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJvcERvd25JdGVtQ29tcG9uZW50LFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTdmdNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICAvLyBJTlRFUk5BTFxuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXSA9IFtdOyAvLyBJbnRlcm5hbCB2YXJpYWJsZSBmb3Igb3B0aW9uc1xuXG4gIC8vIElOUFVUU1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogYW55W10pIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlKSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHZhbHVlKTsgLy8gU2V0IHRoZSBpbnRlcm5hbCBvcHRpb25zIHZhcmlhYmxlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7IC8vIFJldHVybiB0aGUgaW50ZXJuYWwgb3B0aW9ucyB2YXJpYWJsZVxuICB9XG5cbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcxMnJlbSc7XG4gIEBJbnB1dCgpIHNob3dIb3Jpem9udGFsTGluZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhvcml6b250YWxMaW5lQ29sb3I6IHN0cmluZyA9ICdyZ2JhKDI1NSwgMjMwLCAxMjksIDEpJztcbiAgQElucHV0KCkgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvblN1YkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGludmFsaWRNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbG9hZE1vcmVDYXB0aW9uOiBzdHJpbmcgPSAnU2VlIG1vcmUnO1xuICBASW5wdXQoKSBkaXNwbGF5OiAnZGVmYXVsdCcgfCAnY2hpcCcgPSAnY2hpcCc7XG4gIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXp5TG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZ3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF2b2lkRHVwbGljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZTogbnVtYmVyID0gNTAwO1xuICBASW5wdXQoKSBtaW5DaGFyOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkPzogKGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcbiAgQElucHV0KCkgYXN5bmNMYWJlbD86IChjb250ZXh0OiBhbnkpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIEBJbnB1dCgpIHNlYXJjaD86IChkYXRhOiBhbnksIGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcblxuICAvLyBPVVRQVVRTXG4gIEBPdXRwdXQoKSBvcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxEcm9wZG93bkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG9uSXRlbUNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vVEVNUExBVElOR1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FeHBhbnNpb24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZHJvcGRvd25FeHBhbnNpb24hOiBFbGVtZW50UmVmO1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsOyAvLyBBbGxvdyBudWxsIGZvciBjdXN0b20gaXRlbSB0ZW1wbGF0ZVxuICBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy9WQVJJQUJMRVNcbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkVGltZXM6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIGluaXRpYWxJbmNyZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uTGFiZWxzOiBhbnlbXSA9IFtdO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3B0aW9uc0NvcHk6IGFueVtdID0gW107XG4gIGxvYWRUaW1lc0NvcHk6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIHNlbGVjdGVkQ29udGV4dHM6IGFueVtdID0gW107XG4gIHNlYXJjaEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBzZWFyY2hDb250ZXh0OiBzdHJpbmcgPSAnJztcbiAgYWxsb3dTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzOyAvLyBBc3NpZ24gdGhpcyBjb21wb25lbnQgYXMgdGhlIHZhbHVlIGFjY2Vzc29yXG4gICAgICB0aGlzLm5nQ29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgPyBzdGF0dXMgPT09ICdJTlZBTElEJyAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKCF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBpc0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICAgICAgICBpc0FsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSBpc0FsbG93ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpKSAvLyBBZGp1c3QgZGVib3VuY2UgdGltZSBoZXJlIChpbiBtcylcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAoc2VhcmNoVGVybSkgPT4ge1xuICAgICAgICAgIGlmIChzZWFyY2hUZXJtLmxlbmd0aCA8IHRoaXMubWluQ2hhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VhcmNoICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoVGVybSwgaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2ggJiYgdGhpcy5sb2FkVGltZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaChzZWFyY2hUZXJtLCB0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaENvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvblNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGl0ZW0uaXRlbXMgPSBjbG9uZURlZXAoaXRlbS5jb3B5KTtcbiAgICAgICAgaXRlbS5sb2FkVGltZXMgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpdGVtLmZpbHRlckJ5KSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0gPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLmNvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4LnZhbHVlID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnNDb3B5KTtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHhbdGhpcy5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHhbdGhpcy5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+IHR5cGVvZiB4ID09ICdzdHJpbmcnICYmIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cblxuICBoYXNTaWJsaW5nKHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihzaWJsaW5nc1tpXSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZXhwYW5kTWVudShcbiAgICBpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcixcbiAgICBzaWJsaW5nczogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXVxuICApIHtcbiAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGZvciAobGV0IGl0IG9mIHNpYmxpbmdzLmZpbHRlcigoeCkgPT4geCAhPT0gaXRlbSkpIHtcbiAgICAgICAgICBpZiAoaXQuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGl0LmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5sb2FkVGltZXMgJiYgaXQubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWQ7XG4gICAgICBpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzaWJsaW5nQ2hlY2sgPSB0aGlzLmhhc1NpYmxpbmcoc2libGluZ3MpO1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoID4gMCAmJiBzaWJsaW5nQ2hlY2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoXG4gICAgICAgICAgICAgIHNpYmxpbmdDaGVjayxcbiAgICAgICAgICAgICAgY29udGV4dHNMZW5ndGggLSBzaWJsaW5nQ2hlY2tcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGlmIChzaWJsaW5nQ2hlY2sgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5LnB1c2godGhpcy5zZWFyY2hDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQgJiYgaXRlbS5sb2FkTW9yZSAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaXRlbS5sb2FkTW9yZShpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXNDb3B5ID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5pbmRleE9mKGl0ZW0pO1xuICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbnRleHRzLnNwbGljZShpbmRleCwgY29udGV4dHNMZW5ndGggLSBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udGV4dCA9XG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoSGlzdG9yeVt0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3Rvcnkuc3BsaWNlKHRoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggLSAxLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTW9yZU1lbnVJdGVtcyhpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcikge1xuICAgIGlmIChpdGVtLmxvYWRNb3JlICYmIGl0ZW0ubG9hZFRpbWVzICYmIGl0ZW0uaXRlbXMpIHtcbiAgICAgIGNvbnN0IHNlYXJjaENvbnRleHQgPSB0aGlzLnNlYXJjaENvbnRleHQudHJpbSgpO1xuICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgdmFyIHJlc3VsdCA9XG4gICAgICAgIHNlYXJjaENvbnRleHQubGVuZ3RoID4gMCAmJiBpdGVtLnNlYXJjaFxuICAgICAgICAgID8gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoQ29udGV4dCwgaXRlbS5sb2FkVGltZXMpXG4gICAgICAgICAgOiBhd2FpdCBpdGVtLmxvYWRNb3JlKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgIGl0ZW0uaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZFRpbWVzLmluY3JlYXNlTG9hZFRpbWUoKTtcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgcmVzdWx0KSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGlmIChzZWFyY2hDb250ZXh0Lmxlbmd0aCA9PSAwIHx8ICF0aGlzLnNlYXJjaCkge1xuICAgICAgICAgIHRoaXMub3B0aW9uc0NvcHkgPSBjbG9uZURlZXAodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmdyb3VwXG4gICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRUb0V4cGFuZGFibGUoaXRlbXM6IERyb3Bkb3duTWVudUl0ZW1bXSk6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10ge1xuICAgIGNvbnN0IHdyYXBwZXI6IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRJdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlciA9IHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZXhwYW5kZWQ6IGZhbHNlLFxuICAgICAgICBsb2FkVGltZXM6IGl0ZW0uaXRlbXMgPyBuZXcgRHJvcGRvd25Mb2FkRXZlbnQoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgbG9hZFRpbWVzQ29weTogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBpdGVtczogaXRlbS5pdGVtcyA/IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY29weTogaXRlbS5pdGVtcyA/IGNsb25lRGVlcCh0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUoaXRlbS5pdGVtcykpIDogW10sXG4gICAgICB9O1xuICAgICAgd3JhcHBlci5wdXNoKGNvbnZlcnRlZEl0ZW0pO1xuICAgIH1cbiAgICByZXR1cm4gd3JhcHBlcjtcbiAgfVxuXG4gIG9uU2VsZWN0QWxsKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShvcHRpb24pO1xuICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG9wdGlvbi5pdGVtcykge1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5jaGVja011bHRpc2VsZWN0VmFsdWUoaXRlbSk7XG4gICAgICAgICAgaWYgKGluZGV4ID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShpdGVtKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5nZXRPcHRpb25MYWJlbChpdGVtKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMgfSk7XG4gIH1cblxuICBjbGVhclNlbGVjdGlvbihldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gbnVsbDtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlKG51bGwpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogbnVsbCB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlKFtdKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IFtdIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgdGhpcy5pc0ludmFsaWQgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQWxsID0gZmFsc2U7XG4gICAgdGhpcy5vbkNsZWFyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25TZWxlY3QodmFsdWU6IGFueSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5nZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSB0aGlzLmdldE9wdGlvbkxhYmVsKHZhbHVlKTtcbiAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuZ2V0VmFsdWUodmFsdWUpKTtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuZ2V0VmFsdWUodmFsdWUpIH0pO1xuICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBleGlzdHMgPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZSh2YWx1ZSk7XG4gICAgICBpZiAoZXhpc3RzID09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zLFxuICAgICAgICAgIHRoaXMuZ2V0VmFsdWUodmFsdWUpLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtcbiAgICAgICAgICAuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLFxuICAgICAgICAgIHRoaXMuZ2V0T3B0aW9uTGFiZWwodmFsdWUpLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IG5ld1NlbGVjdGVkT3B0aW9ucztcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzO1xuICAgICAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICAgICAgbmV3U2VsZWN0ZWRPcHRpb25zLnNwbGljZShleGlzdHMsIDEpO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICAgICAgbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGluZGV4OiBudW1iZXIsIGV2ZW50OiBFdmVudCkge1xuICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9ucyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uc107XG4gICAgbmV3U2VsZWN0ZWRPcHRpb25zLnNwbGljZShpbmRleCwgMSk7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsc107XG4gICAgbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IG5ld1NlbGVjdGVkT3B0aW9ucztcbiAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgfVxuXG4gIGNoZWNrTXVsdGlzZWxlY3RWYWx1ZSh2YWx1ZTogYW55KTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGlzRXF1YWwodGhpcy5zZWxlY3RlZE9wdGlvbnNbaV0sIHRoaXMuZ2V0VmFsdWUodmFsdWUpKSkge1xuICAgICAgICByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBhc3luYyB3cml0ZVZhbHVlKG9iajogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAob2JqID09IG51bGwgfHwgb2JqID09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb2JqO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBvYmo7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBudWxsO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gbnVsbDtcbiAgICAgIGlmICghdGhpcy5ncm91cCAmJiAhdGhpcy5sYXp5TG9hZCkge1xuICAgICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZXF1YWxpdHlDaGVjayA9IHRoaXMuc2VsZWN0S2V5XG4gICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRWYWx1ZShvcHRpb24pW3RoaXMuc2VsZWN0S2V5XSxcbiAgICAgICAgICAgICAgICAob2JqICYmIG9ialt0aGlzLnNlbGVjdEtleV0pIHx8IG51bGxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqKTtcbiAgICAgICAgICBpZiAoZXF1YWxpdHlDaGVjaykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IHRoaXMuZ2V0VmFsdWUob3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbiB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG9iajtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuYXN5bmNMYWJlbFxuICAgICAgICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmopXG4gICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmopO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBpZiAoIXRoaXMuZ3JvdXAgJiYgIXRoaXMubGF6eUxvYWQpIHtcbiAgICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICAgIGZvciAobGV0IG9iamVjdCBvZiBvYmopIHtcbiAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5Q2hlY2sgPSB0aGlzLnNlbGVjdEtleVxuICAgICAgICAgICAgICA/IGlzRXF1YWwoXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgICAgb2JqZWN0W3RoaXMuc2VsZWN0S2V5XVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBpc0VxdWFsKHRoaXMuZ2V0VmFsdWUob3B0aW9uKSwgb2JqZWN0KTtcbiAgICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2godGhpcy5nZXRWYWx1ZShvcHRpb24pKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscy5wdXNoKHRoaXMuZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gb2JqO1xuICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iaikge1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2goXG4gICAgICAgICAgdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvYmplY3QpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0T3B0aW9uTGFiZWwob2JqZWN0KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRPcHRpb25Gcm9tVmFsdWUodmFsdWU6IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IHZhbHVlLnZhbHVlIDogdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cFxuICAgICAgPyB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gJiYgeC52YWx1ZVt0aGlzLm9wdGlvblZhbHVlIV0gPT0gdmFsdWVcbiAgICAgICAgKVxuICAgICAgOiB0aGlzLm9wdGlvbnMuZmluZEluZGV4KFxuICAgICAgICAgICh4KSA9PiB4W3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4W3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1tpbmRleF07XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSA9IGZuO1xuICB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIGdldFZhbHVlKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWUgOiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5ncm91cCA/IGl0ZW0udmFsdWVbdGhpcy5vcHRpb25WYWx1ZV0gOiBpdGVtW3RoaXMub3B0aW9uVmFsdWVdO1xuICB9XG4gIGdldE9wdGlvbkxhYmVsKGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0aW9uTGFiZWwpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IGl0ZW1bdGhpcy5vcHRpb25MYWJlbF07XG4gIH1cblxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXJBcnJheSh2YWx1ZTogYW55W10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiZcbiAgICAgIHZhbHVlLmV2ZXJ5KChpdGVtKSA9PiB0aGlzLmlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbSkpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFR5cGUgZ3VhcmQgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIG9mIHR5cGUgRHJvcGRvd25NZW51SXRlbVxuICBwcml2YXRlIGlzRHJvcGRvd25NZW51SXRlbVdyYXBwZXIoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICdleHBhbmRlZCcgaW4gaXRlbTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXhwYW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIXRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICB0aGlzLmlzRXhwYW5kZWQgJiZcbiAgICAgIHRoaXMuZHJvcGRvd25FeHBhbnNpb24gJiZcbiAgICAgICF0aGlzLmRyb3Bkb3duRXhwYW5zaW9uLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNkcm9wZG93bkNvbnRhaW5lciBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCIgW3N0eWxlLndpZHRoXT1cIndpZHRoXCIgY2xhc3M9XCJkcm9wLWRvd25cIj5cbiAgPGRpdlxuICAgIFtuZ0NsYXNzXT1cInsncmlnaHQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdyaWdodCcsICdsZWZ0LWVycm9yJzogZXJyb3JQb3NpdGlvbiA9PSAnbGVmdCcsICd0b3AtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICd0b3AnfVwiXG4gICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQtd3JhcHBlclwiPlxuICAgIDxkaXYgKGNsaWNrKT1cIm9uRHJvcGRvd25DbGljaygkZXZlbnQpXCIgY2RrT3ZlcmxheU9yaWdpbiAjdHJpZ2dlcj1cImNka092ZXJsYXlPcmlnaW5cIiBbY2xhc3MuZm9jdXNlZF09XCJpc0ZvY3VzZWRcIlxuICAgICAgW25nQ2xhc3NdPVwieyduZy1pbnZhbGlkJzogaXNJbnZhbGlkLCAnZGlzYWJsZWQnOiBkaXNhYmxlZH1cIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIiB0YWJpbmRleD1cIjBcIlxuICAgICAgY2xhc3M9XCJkcm9wLWRvd24taW5wdXQgdmVyYmVuLWlucHV0IGZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWFpbi1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cIihzZWxlY3RlZEl0ZW1UZW1wbGF0ZSAmJiBzZWxlY3RlZE9wdGlvbikgfHwgKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwKTsgZWxzZSBkZWZhdWx0SXRlbVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCIhbXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9uIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHNlbGVjdGVkT3B0aW9ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiIGNsYXNzPVwiZGVmYXVsdC1pdGVtIGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cIiF0aGlzLnNlbGVjdGVkT3B0aW9uXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvblwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICB7e3RoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1sYWJlbCBwbGFjZS1ob2xkZXJcIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA9PSAwXCI+e3twbGFjZWhvbGRlcn19PC9kaXY+XG4gICAgICAgICAgICA8dmVyYmVuLXRvb2x0aXAgY3VzdG9tQ2xhc3M9XCJjdXN0b20tdG9vbHRpcC13aWR0aFwiIGJvcmRlcj1cIjFweCBzb2xpZCAjMzM0MTU1XCIgYmFja2dyb3VuZENvbG9yPVwid2hpdGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcENvbnRlbnRdPVwibXVsdGlzZWxlY3RUb29sdGlwXCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvIGNoaXBcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSAhPSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdmVyYmVuLXRvb2x0aXA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI211bHRpc2VsZWN0VG9vbHRpcD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXNlbGVjdC1mdWxsLXZpZXdcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiaXRlbS1sYWJlbCBkcm9wZG93bi1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAgY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgbXVsdGktc2VsZWN0IGZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiY2xvc2UtY2lyY2xlLWZ1bGxcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjE1XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjI1IDMuOTE3OTdMMy43NSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3by10b29sdGlwLW5vcm1hbFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbkxhYmVsczsgaW5kZXggYXMgaVwiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uICYmICFtdWx0aXNlbGVjdCkgfHwgKHNob3dDbGVhciAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwICYmIG11bHRpc2VsZWN0KVwiXG4gICAgICAgIChjbGljayk9XCJ0aGlzLmNsZWFyU2VsZWN0aW9uKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tY2xlYXItYnV0dG9uXCI+XG4gICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJjbG9zZS1uby1jaXJjbGVcIiBzdHJva2U9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjEzXCIgW2hlaWdodF09XCIxM1wiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPCEtLSA8c3ZnIHdpZHRoPVwiOVwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDkgOVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSAwLjg0Mzc1TDguMTU2MjUgOC4xNTYyNVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgIDxwYXRoIGQ9XCJNMC44NDM3NSA4LjE1NjI1TDguMTU2MjUgMC44NDM3NVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImRyb3AtZG93bi1pY29uLWl0ZW0gZHJvcC1kb3duLWV4cGFuZC1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNoZXZyb24tZG93blwiIGZpbGw9XCIjOTRhM2I4XCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCI4XCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjdcIiB2aWV3Qm94PVwiMCAwIDEyIDdcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk02LjAwNTA3IDQuODgwMjdDNi4yMDIwNSA0LjYyNzc1IDYuMzA2ODMgNC40NjIyIDYuNDQwOTUgNC4zMjcwNEM3Ljc0MzM0IDMuMDE3MzEgOS4wNTIwMiAxLjcxMzg3IDEwLjM1NzYgMC40MDYyNDJDMTAuNTcxMyAwLjE5MjQ5NSAxMC43ODgyIDAuMDA5MTMzNjcgMTEuMTE5MyAwLjAxMDE4MTRDMTEuNDY5MiAwLjAxMTIyOTIgMTEuNzIyOCAwLjE1NzkyIDExLjg4ODQgMC40NTY1MzdDMTIuMDU3IDAuNzYwMzk0IDEyLjAzMDkgMS4wNjExMSAxMS44MzQ5IDEuMzQyOTZDMTEuNzY1OCAxLjQ0MjUgMTEuNjc2NyAxLjUyNzM3IDExLjU5MDggMS42MTQzM0M5Ljk4ODczIDMuMjE2MzkgOC4zNzMwNSA0LjgwNDgzIDYuNzkzIDYuNDI3ODRDNi4yOTExMSA2Ljk0MzM1IDUuNjg3NTkgNi45MjM0NCA1LjIxMzk5IDYuNDM4MzJDMy42MzE4NCA0LjgxNzQgMi4wMTgyNiAzLjIyNjg3IDAuNDE0MTA5IDEuNjI2OTFDMC4xMTY1MzkgMS4zMjkzNCAtMC4xMTYwNjcgMS4wMTkyIDAuMDYyMDU2MSAwLjU2NTUwN0MwLjI3MTYxMiAwLjAzMTEzOSAwLjg4MzUxOSAtMC4xNjc5NDEgMS4zNTUwMiAwLjE1NzkxOUMxLjQ5NjQ3IDAuMjU1MzYzIDEuNjE1OTIgMC4zODczODUgMS43Mzk1NSAwLjUwOTk3NUMzLjAyMjA0IDEuNzkwMzYgNC4zMDQ1MiAzLjA3MDc1IDUuNTgzODYgNC4zNTUzM0M1LjcwNjQ1IDQuNDc3OTIgNS44MDI4NCA0LjYyNjcxIDYuMDA2MTEgNC44ODEzMkw2LjAwNTA3IDQuODgwMjdaXCJcbiAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInRoaXMuaXNJbnZhbGlkICYmIHRoaXMuaW52YWxpZE1lc3NhZ2VcIiBjbGFzcz1cInZlcmJlbi1lcnJvci1tZXNzYWdlIGVycm9yLW1lc3NhZ2VcIj57e2ludmFsaWRNZXNzYWdlfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSBjZGtDb25uZWN0ZWRPdmVybGF5IFtjZGtDb25uZWN0ZWRPdmVybGF5V2lkdGhdPVwiZHJvcGRvd25Db250YWluZXIub2Zmc2V0V2lkdGhcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5TG9ja1Bvc2l0aW9uXT1cImZhbHNlXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwidHJpZ2dlclwiIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cIltcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgIH0sXG4gICAge1xuICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICB9XG4gIF1cIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiaXNFeHBhbmRlZFwiIChkZXRhY2gpPVwiaXNFeHBhbmRlZCA9IGZhbHNlXCI+XG4gICAgPGRpdiAjZHJvcGRvd25FeHBhbnNpb24gY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdCAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ID09ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIGNoaXAgZmxleFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNoaXAgZmxleFwiPlxuICAgICAgICAgICAgPHNwYW4+e3tpdGVtfX08L3NwYW4+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudClcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDEwIDEwXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgZD1cIk01LjAwMDY1IDkuMzMzMzNDNy4zMDE4NCA5LjMzMzMzIDkuMTY3MzIgNy40Njc4NSA5LjE2NzMyIDUuMTY2NjdDOS4xNjczMiAyLjg2NTQ4IDcuMzAxODQgMSA1LjAwMDY1IDFDMi42OTk0NiAxIDAuODMzOTg0IDIuODY1NDggMC44MzM5ODQgNS4xNjY2N0MwLjgzMzk4NCA3LjQ2Nzg1IDIuNjk5NDYgOS4zMzMzMyA1LjAwMDY1IDkuMzMzMzNaXCJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyIG5vcm1hbFwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICB7e2kgIT09IHNlbGVjdGVkT3B0aW9uTGFiZWxzLmxlbmd0aCAtIDE/IGl0ZW0gKyAnLCAnOml0ZW19fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCB8fCBmaWx0ZXJcIiBjbGFzcz1cImFjdGlvbnMtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgIDxpbnB1dCAqbmdJZj1cImFsbG93U2VsZWN0QWxsXCIgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKCRldmVudClcIiB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkQWxsXCJcbiAgICAgICAgICBjbGFzcz1cImN1c3RvbS1jaGVja2JveFwiIC8+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0LWFsbC1jYXB0aW9uXCIgKm5nSWY9XCJhbGxvd1NlbGVjdEFsbCAmJiAhZmlsdGVyXCI+U2VsZWN0IEFsbDwvc3Bhbj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclwiIFtuZ0NsYXNzXT1cInsnZm9jdXNlZCc6IGlzSW5wdXRGb2N1c2VkfVwiIHRhYmluZGV4PVwiMFwiIChmb2N1cyk9XCJvblNlYXJjaEZvY3VzKClcIlxuICAgICAgICAgIChibHVyKT1cIm9uU2VhcmNoQmx1cigpXCIgY2xhc3M9XCJzZWFyY2gtc2VjdGlvbiBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWFyY2gtaWNvbiBmbGV4XCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwic2VhcmNoXCIgc3Ryb2tlPVwiIzY0NzQ4YlwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICA8IS0tIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOVwiIGN5PVwiOVwiIHI9XCI4XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCI+PC9jaXJjbGU+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTRcIiB5MT1cIjE0XCIgeDI9XCIxOVwiIHkyPVwiMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PC9saW5lPlxuICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRDb250ZXh0c1t0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoIC0gMV1cIiBjbGFzcz1cInNlYXJjaC1jb250ZXh0XCI+XG4gICAgICAgICAgICB7e3RoaXMuZ2V0T3B0aW9uTGFiZWwodGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXSl9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGlucHV0IChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hDb250ZXh0XCIgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cInNob3dIb3Jpem9udGFsTGluZVwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmUtc2VjdGlvblwiPlxuICAgICAgICA8aHIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiaG9yaXpvbnRhbExpbmVDb2xvclwiIGNsYXNzPVwiY29sb3JlZC11bmRlcmxpbmVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcC1kb3duLW1lbnUtaXRlbVwiPlxuICAgICAgICA8ZHJvcC1kb3duLWl0ZW0gW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIiBbZ3JvdXBUZW1wbGF0ZV09XCJncm91cFRlbXBsYXRlXCIgW2FjdGl2ZUl0ZW1dPVwic2VsZWN0ZWRPcHRpb25cIlxuICAgICAgICAgIFthY3RpdmVJdGVtc109XCJzZWxlY3RlZE9wdGlvbnNcIiBbbXVsdGlzZWxlY3RdPVwibXVsdGlzZWxlY3RcIiBbb3B0aW9uVmFsdWVdPVwib3B0aW9uVmFsdWVcIlxuICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJvcHRpb25MYWJlbFwiIFtvcHRpb25TdWJMYWJlbF09XCJvcHRpb25TdWJMYWJlbFwiIFtzZWxlY3RLZXldPVwic2VsZWN0S2V5XCJcbiAgICAgICAgICBbbG9hZE1vcmVDYXB0aW9uXT1cImxvYWRNb3JlQ2FwdGlvblwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZ3JvdXBdPVwiZ3JvdXBcIiBbb25FeHBhbmRdPVwiZXhwYW5kTWVudS5iaW5kKHRoaXMpXCJcbiAgICAgICAgICBbb25Mb2FkTW9yZV09XCJsb2FkTW9yZU1lbnVJdGVtcy5iaW5kKHRoaXMpXCIgW29uU2VsZWN0XT1cIm9uU2VsZWN0LmJpbmQodGhpcylcIj48L2Ryb3AtZG93bi1pdGVtPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibGF6eUxvYWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VlLW1vcmUtY29udGFpbmVyIGZsZXgganVzdGlmeS1lbmRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VlLW1vcmUtY2FwdGlvblwiIChjbGljayk9XCJsb2FkTW9yZSgpXCI+e3tsb2FkTW9yZUNhcHRpb259fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctb3ZlcmxheVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
784
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcC1kb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBRU4sSUFBSSxFQUVKLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixXQUFXLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQXlCMUQsTUFBTSxPQUFPLGlCQUFpQjtJ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S0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQVFQLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2hELGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRWIsU0FBUztzQkFBNUMsZUFBZTt1QkFBQyxpQkFBaUI7Z0JBRUosU0FBUztzQkFBdEMsV0FBVzt1QkFBQyxlQUFlO2dCQTRHTCxPQUFPO3NCQUE3QixZQUFZO3VCQUFDLE9BQU87Z0JBSUMsTUFBTTtzQkFBM0IsWUFBWTt1QkFBQyxNQUFNO2dCQXNoQnBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEcm9wZG93bk1lbnVJdGVtIH0gZnJvbSAnLi9Ecm9wZG93bk1lbnVJdGVtJztcbmltcG9ydCB7IERyb3Bkb3duTG9hZEV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkxvYWRFdmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4uL1RlbXBsYXRlRGlyZWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEcm9wZG93bkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9Ecm9wZG93bkNoYW5nZUV2ZW50JztcbmltcG9ydCB7IERyb3BEb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZHJvcC1kb3duLWl0ZW0vZHJvcC1kb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IGlzRXF1YWwsIGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC5tb2R1bGUnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJy4uL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyIGV4dGVuZHMgRHJvcGRvd25NZW51SXRlbSB7XG4gIGV4cGFuZGVkOiBib29sZWFuO1xuICBpdGVtcz86IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyW107XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgY29weTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXTtcbiAgbG9hZFRpbWVzPzogRHJvcGRvd25Mb2FkRXZlbnQ7XG4gIGxvYWRUaW1lc0NvcHk/OiBEcm9wZG93bkxvYWRFdmVudDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLWRyb3AtZG93bicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJvcERvd25JdGVtQ29tcG9uZW50LFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBTdmdNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Ryb3AtZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kcm9wLWRvd24uY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duQ29tcG9uZW50XG4gIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdFxue1xuICAvLyBJTlRFUk5BTFxuICBwcml2YXRlIF9vcHRpb25zOiBhbnlbXSA9IFtdOyAvLyBJbnRlcm5hbCB2YXJpYWJsZSBmb3Igb3B0aW9uc1xuXG4gIC8vIElOUFVUU1xuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogYW55W10pIHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlKSkge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKHZhbHVlKTsgLy8gU2V0IHRoZSBpbnRlcm5hbCBvcHRpb25zIHZhcmlhYmxlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7IC8vIFJldHVybiB0aGUgaW50ZXJuYWwgb3B0aW9ucyB2YXJpYWJsZVxuICB9XG5cbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcxMnJlbSc7XG4gIEBJbnB1dCgpIHNob3dIb3Jpem9udGFsTGluZTogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGhvcml6b250YWxMaW5lQ29sb3I6IHN0cmluZyA9ICdyZ2JhKDI1NSwgMjMwLCAxMjksIDEpJztcbiAgQElucHV0KCkgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG9wdGlvblN1YkxhYmVsPzogc3RyaW5nO1xuICBASW5wdXQoKSBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGludmFsaWRNZXNzYWdlPzogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvclBvc2l0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbG9hZE1vcmVDYXB0aW9uOiBzdHJpbmcgPSAnU2VlIG1vcmUnO1xuICBASW5wdXQoKSBkaXNwbGF5OiAnZGVmYXVsdCcgfCAnY2hpcCcgPSAnY2hpcCc7XG4gIEBJbnB1dCgpIHNob3dDbGVhcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYXp5TG9hZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3RLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZ3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbXVsdGlzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF2b2lkRHVwbGljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZmlsdGVyQnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlYm91bmNlVGltZTogbnVtYmVyID0gNTAwO1xuICBASW5wdXQoKSBtaW5DaGFyOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsb2FkPzogKGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcbiAgQElucHV0KCkgYXN5bmNMYWJlbD86IChjb250ZXh0OiBhbnkpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIEBJbnB1dCgpIHNlYXJjaD86IChkYXRhOiBhbnksIGNvbnRleHQ6IERyb3Bkb3duTG9hZEV2ZW50KSA9PiBQcm9taXNlPGFueVtdPjtcblxuICAvLyBPVVRQVVRTXG4gIEBPdXRwdXQoKSBvcHRpb25zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxEcm9wZG93bkNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsZWFyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG9uSXRlbUNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG4gIGlzSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vVEVNUExBVElOR1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGRyb3Bkb3duQ29udGFpbmVyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25FeHBhbnNpb24nLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgZHJvcGRvd25FeHBhbnNpb24hOiBFbGVtZW50UmVmO1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZm9jdXNlZCcpIGlzRm9jdXNlZCA9IGZhbHNlO1xuICBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkSXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsOyAvLyBBbGxvdyBudWxsIGZvciBjdXN0b20gaXRlbSB0ZW1wbGF0ZVxuICBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgLy9WQVJJQUJMRVNcbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBsb2FkVGltZXM6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIGluaXRpYWxJbmNyZW1lbnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRPcHRpb246IGFueTtcbiAgc2VsZWN0ZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZE9wdGlvbkxhYmVsOiBhbnk7XG4gIHNlbGVjdGVkT3B0aW9uTGFiZWxzOiBhbnlbXSA9IFtdO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3B0aW9uc0NvcHk6IGFueVtdID0gW107XG4gIGxvYWRUaW1lc0NvcHk6IERyb3Bkb3duTG9hZEV2ZW50ID0gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCk7XG4gIHNlbGVjdGVkQ29udGV4dHM6IGFueVtdID0gW107XG4gIHNlYXJjaEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG4gIHNlYXJjaFRlcm0kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBzZWFyY2hDb250ZXh0OiBzdHJpbmcgPSAnJztcbiAgYWxsb3dTZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRBbGw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzOyAvLyBBc3NpZ24gdGhpcyBjb21wb25lbnQgYXMgdGhlIHZhbHVlIGFjY2Vzc29yXG4gICAgICB0aGlzLm5nQ29udHJvbD8uc3RhdHVzQ2hhbmdlcz8uc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgICAgdGhpcy5pc0ludmFsaWQgPSB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgPyBzdGF0dXMgPT09ICdJTlZBTElEJyAmJiB0aGlzLm5nQ29udHJvbC50b3VjaGVkXG4gICAgICAgICAgOiBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgaWYgKCF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGlmICghdGhpcy5ncm91cCkge1xuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBpc0FsbG93ZWQgPSB0cnVlO1xuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5sYXp5TG9hZCkge1xuICAgICAgICAgICAgICBpc0FsbG93ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWxsb3dTZWxlY3RBbGwgPSBpc0FsbG93ZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICB0aGlzLm9wdGlvbnNDb3B5ID0gY2xvbmVEZWVwKHRoaXMuX29wdGlvbnMpO1xuICAgICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpKSAvLyBBZGp1c3QgZGVib3VuY2UgdGltZSBoZXJlIChpbiBtcylcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAoc2VhcmNoVGVybSkgPT4ge1xuICAgICAgICAgIGlmIChzZWFyY2hUZXJtLmxlbmd0aCA8IHRoaXMubWluQ2hhcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2VhcmNoICYmIGl0ZW0ubG9hZFRpbWVzKSB7XG4gICAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaXRlbS5zZWFyY2goc2VhcmNoVGVybSwgaXRlbS5sb2FkVGltZXMpO1xuICAgICAgICAgICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgICAgICAgaXRlbS5pdGVtcyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2ggJiYgdGhpcy5sb2FkVGltZXMpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlYXJjaChzZWFyY2hUZXJtLCB0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaENvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZURpcmVjdGl2ZSkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlRGlyZWN0aXZlLnZUZW1wbGF0ZSA9PT0gJ3NlbGVjdGVkJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVEaXJlY3RpdmUudlRlbXBsYXRlID09PSAnaXRlbScpIHtcbiAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZURpcmVjdGl2ZS50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0ZW1wbGF0ZURpcmVjdGl2ZS52VGVtcGxhdGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgdGhpcy5ncm91cFRlbXBsYXRlID0gdGVtcGxhdGVEaXJlY3RpdmUudGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdmb2N1cycpIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpIG9uQmx1cigpIHtcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25TZWFyY2hGb2N1cygpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIG9uU2VhcmNoQmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvbklucHV0Rm9jdXMoKSB7XG4gICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRydWU7XG4gIH1cblxuICBvbklucHV0Qmx1cigpIHtcbiAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBvblNlYXJjaChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoVGVybSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkQ29udGV4dHNbXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXG4gICAgICBdIGFzIERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyO1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGl0ZW0uaXRlbXMgPSBjbG9uZURlZXAoaXRlbS5jb3B5KTtcbiAgICAgICAgaXRlbS5sb2FkVGltZXMgPSBjbG9uZURlZXAoaXRlbS5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpdGVtLmZpbHRlckJ5KSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICB0eXBlb2YgeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0gPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgbmV3IFJlZ0V4cChzZWFyY2hUZXJtLCAnaScpLnRlc3QoeC52YWx1ZVtpdGVtLmZpbHRlckJ5IV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFpdGVtLml0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSBpdGVtLmNvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICAgIHR5cGVvZiB4LnZhbHVlID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgudmFsdWUpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHNlYXJjaFRlcm0udHJpbSgpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnNDb3B5KTtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXNDb3B5KTtcbiAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSQubmV4dChzZWFyY2hUZXJtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zQ29weS5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgdHlwZW9mIHhbdGhpcy5maWx0ZXJCeSFdID09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHhbdGhpcy5maWx0ZXJCeSFdKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5ncm91cFxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICAgICAgOiB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9uc0NvcHkuZmlsdGVyKFxuICAgICAgICAgICAgKHgpID0+IHR5cGVvZiB4ID09ICdzdHJpbmcnICYmIG5ldyBSZWdFeHAoc2VhcmNoVGVybSwgJ2knKS50ZXN0KHgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmdyb3VwXG4gICAgICAgICAgICA/IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyBhcyBEcm9wZG93bk1lbnVJdGVtW10pXG4gICAgICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHRvZ2dsZURyb3Bkb3duKCkge1xuICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzRXhwYW5kZWQ7XG4gIH1cblxuICBoYXNTaWJsaW5nKHNpYmxpbmdzOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcltdKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaWJsaW5ncy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihzaWJsaW5nc1tpXSk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgZXhwYW5kTWVudShcbiAgICBpdGVtOiBEcm9wZG93bk1lbnVJdGVtV3JhcHBlcixcbiAgICBzaWJsaW5nczogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXVxuICApIHtcbiAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgIGZvciAobGV0IGl0IG9mIHNpYmxpbmdzLmZpbHRlcigoeCkgPT4geCAhPT0gaXRlbSkpIHtcbiAgICAgICAgICBpZiAoaXQuZXhwYW5kZWQpIHtcbiAgICAgICAgICAgIGl0LmV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpdC5sb2FkVGltZXMgJiYgaXQubG9hZFRpbWVzLnJlc2V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpdGVtLmV4cGFuZGVkID0gIWl0ZW0uZXhwYW5kZWQ7XG4gICAgICBpZiAoaXRlbS5leHBhbmRlZCkge1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICBjb25zdCBzaWJsaW5nQ2hlY2sgPSB0aGlzLmhhc1NpYmxpbmcoc2libGluZ3MpO1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29udGV4dHMubGVuZ3RoID4gMCAmJiBzaWJsaW5nQ2hlY2sgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRzTGVuZ3RoID0gdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoXG4gICAgICAgICAgICAgIHNpYmxpbmdDaGVjayxcbiAgICAgICAgICAgICAgY29udGV4dHNMZW5ndGggLSBzaWJsaW5nQ2hlY2tcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGlmIChzaWJsaW5nQ2hlY2sgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5LnB1c2godGhpcy5zZWFyY2hDb250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hDb250ZXh0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0ubGF6eUxvYWQgJiYgaXRlbS5sb2FkTW9yZSAmJiBpdGVtLmxvYWRUaW1lcykge1xuICAgICAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaXRlbS5sb2FkTW9yZShpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICBpZihyZXN1bHQubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZW0uaXRlbXMgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICAgIGl0ZW0uY29weSA9IGNsb25lRGVlcChpdGVtLml0ZW1zKTtcbiAgICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgICAgID8gdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zIGFzIERyb3Bkb3duTWVudUl0ZW1bXSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ29udGV4dHMuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgICBjb25zdCBjb250ZXh0c0xlbmd0aCA9IHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGg7XG4gICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb250ZXh0cy5zcGxpY2UoaW5kZXgsIGNvbnRleHRzTGVuZ3RoIC0gaW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5sb2FkVGltZXMpIHtcbiAgICAgICAgICBpdGVtLmxvYWRUaW1lcy5yZXNldCgpO1xuICAgICAgICAgIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgICAgICAgaXRlbS5sb2FkVGltZXNDb3B5ID0gY2xvbmVEZWVwKGl0ZW0ubG9hZFRpbWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSGlzdG9yeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRleHQgPVxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaEhpc3RvcnlbdGhpcy5zZWFyY2hIaXN0b3J5Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hIaXN0b3J5LnNwbGljZSh0aGlzLnNlYXJjaEhpc3RvcnkubGVuZ3RoIC0gMSwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmVNZW51SXRlbXMoaXRlbTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXIpIHtcbiAgICBpZiAoaXRlbS5sb2FkTW9yZSAmJiBpdGVtLmxvYWRUaW1lcyAmJiBpdGVtLml0ZW1zKSB7XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIGl0ZW0uaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgaXRlbS5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IGl0ZW0uc2VhcmNoKHNlYXJjaENvbnRleHQsIGl0ZW0ubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgaXRlbS5sb2FkTW9yZShpdGVtLmxvYWRUaW1lcyk7XG4gICAgICBpdGVtLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgaWYocmVzdWx0Lmxlbmd0aCA+IDApe1xuICAgICAgICBpdGVtLmxvYWRUaW1lcy5pbmNyZWFzZUxvYWRUaW1lKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb252ZXJ0ZWQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIGZvciAobGV0IHJlcyBvZiBjb252ZXJ0ZWQpIHtcbiAgICAgICAgaXRlbS5pdGVtcy5wdXNoKHJlcyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIWl0ZW0uc2VhcmNoKSB7XG4gICAgICAgICAgaXRlbS5jb3B5ID0gY2xvbmVEZWVwKGl0ZW0uaXRlbXMpO1xuICAgICAgICAgIGl0ZW0ubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcChpdGVtLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmUoKSB7XG4gICAgaWYgKHRoaXMubG9hZCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwICYmICF0aGlzLmluaXRpYWxJbmNyZW1lbnQpIHtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgICB0aGlzLmxvYWRUaW1lc0NvcHkgPSBjbG9uZURlZXAodGhpcy5sb2FkVGltZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbEluY3JlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBzZWFyY2hDb250ZXh0ID0gdGhpcy5zZWFyY2hDb250ZXh0LnRyaW0oKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHZhciByZXN1bHQgPVxuICAgICAgICBzZWFyY2hDb250ZXh0Lmxlbmd0aCA+IDAgJiYgdGhpcy5zZWFyY2hcbiAgICAgICAgICA/IGF3YWl0IHRoaXMuc2VhcmNoKHNlYXJjaENvbnRleHQsIHRoaXMubG9hZFRpbWVzKVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5sb2FkKHRoaXMubG9hZFRpbWVzKTtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNvbnZlcnRUb0V4cGFuZGFibGUocmVzdWx0KTtcbiAgICAgIH1cbiAgICAgIGlmKHJlc3VsdC5sZW5ndGggPiAwKXtcbiAgICAgICAgdGhpcy5sb2FkVGltZXMuaW5jcmVhc2VMb2FkVGltZSgpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgaXRlbSBvZiByZXN1bHQpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5maWx0ZXIpIHtcbiAgICAgICAgaWYgKHNlYXJjaENvbnRleHQubGVuZ3RoID09IDAgfHwgIXRoaXMuc2VhcmNoKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zQ29weSA9IGNsb25lRGVlcCh0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgIHRoaXMubG9hZFRpbWVzQ29weSA9IGNsb25lRGVlcCh0aGlzLmxvYWRUaW1lcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZ3JvdXBcbiAgICAgICAgPyB0aGlzLm9wdGlvbnNDaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMgYXMgRHJvcGRvd25NZW51SXRlbVtdKVxuICAgICAgICA6IHRoaXMub3B0aW9uc0NoYW5nZS5lbWl0KHRoaXMub3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY29udmVydFRvRXhwYW5kYWJsZShpdGVtczogRHJvcGRvd25NZW51SXRlbVtdKTogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSB7XG4gICAgY29uc3Qgd3JhcHBlcjogRHJvcGRvd25NZW51SXRlbVdyYXBwZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZEl0ZW06IERyb3Bkb3duTWVudUl0ZW1XcmFwcGVyID0ge1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogZmFsc2UsXG4gICAgICAgIGxvYWRUaW1lczogaXRlbS5pdGVtcyA/IG5ldyBEcm9wZG93bkxvYWRFdmVudCgpIDogdW5kZWZpbmVkLFxuICAgICAgICBsb2FkVGltZXNDb3B5OiBpdGVtLml0ZW1zID8gbmV3IERyb3Bkb3duTG9hZEV2ZW50KCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGl0ZW1zOiBpdGVtLml0ZW1zID8gdGhpcy5jb252ZXJ0VG9FeHBhbmRhYmxlKGl0ZW0uaXRlbXMpIDogdW5kZWZpbmVkLFxuICAgICAgICBjb3B5OiBpdGVtLml0ZW1zID8gY2xvbmVEZWVwKHRoaXMuY29udmVydFRvRXhwYW5kYWJsZShpdGVtLml0ZW1zKSkgOiBbXSxcbiAgICAgIH07XG4gICAgICB3cmFwcGVyLnB1c2goY29udmVydGVkSXRlbSk7XG4gICAgfVxuICAgIHJldHVybiB3cmFwcGVyO1xuICB9XG5cbiAgb25TZWxlY3RBbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRBbGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICB0aGlzLm9uSXRlbUNoYW5nZShbXSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBbXSB9KTtcbiAgICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmdyb3VwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgZm9yIChsZXQgb3B0aW9uIG9mIHRoaXMub3B0aW9ucykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKG9wdGlvbik7XG4gICAgICAgIGlmIChpbmRleCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKG9wdGlvbikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gW107XG4gICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2Ygb3B0aW9uLml0ZW1zKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNoZWNrTXVsdGlzZWxlY3RWYWx1ZShpdGVtKTtcbiAgICAgICAgICBpZiAoaW5kZXggPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKGl0ZW0pKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaCh0aGlzLmdldE9wdGlvbkxhYmVsKGl0ZW0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgfVxuXG4gIGNsZWFyU2VsZWN0aW9uKGV2ZW50OiBFdmVudCkge1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UobnVsbCk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHZhbHVlOiBudWxsIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVscyA9IFtdO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UoW10pO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogW10gfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XG4gICAgICB0aGlzLmlzSW52YWxpZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgICB0aGlzLm9uQ2xlYXIuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlbGVjdCh2YWx1ZTogYW55LCBldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSB0aGlzLmdldFZhbHVlKHZhbHVlKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IHRoaXMuZ2V0T3B0aW9uTGFiZWwodmFsdWUpO1xuICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5nZXRWYWx1ZSh2YWx1ZSkpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCB2YWx1ZTogdGhpcy5nZXRWYWx1ZSh2YWx1ZSkgfSk7XG4gICAgICB0aGlzLnRvZ2dsZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlKTtcbiAgICAgIGlmIChleGlzdHMgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbXG4gICAgICAgICAgLi4udGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgICAgdGhpcy5nZXRWYWx1ZSh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gW1xuICAgICAgICAgIC4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMsXG4gICAgICAgICAgdGhpcy5nZXRPcHRpb25MYWJlbCh2YWx1ZSksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzID0gbmV3U2VsZWN0ZWRPcHRpb25MYWJlbHM7XG4gICAgICAgIHRoaXMub25JdGVtQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudCxcbiAgICAgICAgICB2YWx1ZTogdGhpcy5zZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGV4aXN0cywgMSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkT3B0aW9uTGFiZWxzID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHNdO1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoZXhpc3RzLCAxKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdTZWxlY3RlZE9wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50LFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscyA9IFsuLi50aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzXTtcbiAgICBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBuZXdTZWxlY3RlZE9wdGlvbkxhYmVscztcbiAgICB0aGlzLm9uSXRlbUNoYW5nZSh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICB9XG5cbiAgY2hlY2tNdWx0aXNlbGVjdFZhbHVlKHZhbHVlOiBhbnkpOiBudW1iZXIgfCBudWxsIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaXNFcXVhbCh0aGlzLnNlbGVjdGVkT3B0aW9uc1tpXSwgdGhpcy5nZXRWYWx1ZSh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHdyaXRlVmFsdWUob2JqOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBvYmogPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb24gPSBvYmo7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbCA9IG9iajtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWwgPSBudWxsO1xuICAgICAgaWYgKCF0aGlzLmdyb3VwICYmICF0aGlzLmxhenlMb2FkKSB7XG4gICAgICAgIGZvciAobGV0IG9wdGlvbiBvZiB0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBlcXVhbGl0eUNoZWNrID0gdGhpcy5zZWxlY3RLZXlcbiAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFZhbHVlKG9wdGlvbilbdGhpcy5zZWxlY3RLZXldLFxuICAgICAgICAgICAgICAgIChvYmogJiYgb2JqW3RoaXMuc2VsZWN0S2V5XSkgfHwgbnVsbFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IGlzRXF1YWwodGhpcy5nZXRWYWx1ZShvcHRpb24pLCBvYmopO1xuICAgICAgICAgIGlmIChlcXVhbGl0eUNoZWNrKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gdGhpcy5nZXRWYWx1ZShvcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICA/IGF3YWl0IHRoaXMuYXN5bmNMYWJlbChvcHRpb24pIDogdGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9uIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uID0gb2JqO1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsID0gdGhpcy5hc3luY0xhYmVsXG4gICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iailcbiAgICAgICAgOiB0aGlzLmdldE9wdGlvbkxhYmVsKG9iaik7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb24gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMgPSBbXTtcbiAgICAgIGlmICghdGhpcy5ncm91cCAmJiAhdGhpcy5sYXp5TG9hZCkge1xuICAgICAgICBmb3IgKGxldCBvcHRpb24gb2YgdGhpcy5vcHRpb25zKSB7XG4gICAgICAgICAgZm9yIChsZXQgb2JqZWN0IG9mIG9iaikge1xuICAgICAgICAgICAgY29uc3QgZXF1YWxpdHlDaGVjayA9IHRoaXMuc2VsZWN0S2V5XG4gICAgICAgICAgICAgID8gaXNFcXVhbChcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VmFsdWUob3B0aW9uKVt0aGlzLnNlbGVjdEtleV0sXG4gICAgICAgICAgICAgICAgICBvYmplY3RbdGhpcy5zZWxlY3RLZXldXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IGlzRXF1YWwodGhpcy5nZXRWYWx1ZShvcHRpb24pLCBvYmplY3QpO1xuICAgICAgICAgICAgaWYgKGVxdWFsaXR5Q2hlY2spIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaCh0aGlzLmdldFZhbHVlKG9wdGlvbikpO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uTGFiZWxzLnB1c2godGhpcy5hc3luY0xhYmVsXG4gICAgICAgICAgICAgICAgPyBhd2FpdCB0aGlzLmFzeW5jTGFiZWwob2JqZWN0KSA6dGhpcy5nZXRPcHRpb25MYWJlbChvcHRpb24pKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IHZhbHVlOiB0aGlzLnNlbGVjdGVkT3B0aW9ucyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBvYmo7XG4gICAgICBmb3IgKGxldCBvYmplY3Qgb2Ygb2JqKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25MYWJlbHMucHVzaChcbiAgICAgICAgICB0aGlzLmFzeW5jTGFiZWxcbiAgICAgICAgICAgID8gYXdhaXQgdGhpcy5hc3luY0xhYmVsKG9iamVjdClcbiAgICAgICAgICAgIDogdGhpcy5nZXRPcHRpb25MYWJlbChvYmplY3QpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHsgdmFsdWU6IHRoaXMuc2VsZWN0ZWRPcHRpb25zIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldE9wdGlvbkZyb21WYWx1ZSh2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gdmFsdWUudmFsdWUgOiB2YWx1ZTtcbiAgICB9XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdyb3VwXG4gICAgICA/IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+XG4gICAgICAgICAgICB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSAmJiB4LnZhbHVlW3RoaXMub3B0aW9uVmFsdWUhXSA9PSB2YWx1ZVxuICAgICAgICApXG4gICAgICA6IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKHgpID0+IHhbdGhpcy5vcHRpb25WYWx1ZSFdICYmIHhbdGhpcy5vcHRpb25WYWx1ZSFdID09IHZhbHVlXG4gICAgICAgICk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ3JvdXAgPyB2YWx1ZS52YWx1ZSA6IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25JdGVtQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgZ2V0VmFsdWUoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAoIXRoaXMub3B0aW9uVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZSA6IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyb3VwID8gaXRlbS52YWx1ZVt0aGlzLm9wdGlvblZhbHVlXSA6IGl0ZW1bdGhpcy5vcHRpb25WYWx1ZV07XG4gIH1cbiAgZ2V0T3B0aW9uTGFiZWwoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcHRpb25MYWJlbCkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogaXRlbVt0aGlzLm9wdGlvbkxhYmVsXTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlckFycmF5KHZhbHVlOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBBcnJheS5pc0FycmF5KHZhbHVlKSAmJlxuICAgICAgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHRoaXMuaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtKSlcbiAgICApO1xuICB9XG5cbiAgLy8gVHlwZSBndWFyZCBmdW5jdGlvbiB0byBjaGVjayBpZiBhbiBvYmplY3QgaXMgb2YgdHlwZSBEcm9wZG93bk1lbnVJdGVtXG4gIHByaXZhdGUgaXNEcm9wZG93bk1lbnVJdGVtV3JhcHBlcihpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJ2V4cGFuZGVkJyBpbiBpdGVtO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrT3V0c2lkZShldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgIHRoaXMuaXNFeHBhbmRlZCAmJlxuICAgICAgdGhpcy5kcm9wZG93bkV4cGFuc2lvbiAmJlxuICAgICAgIXRoaXMuZHJvcGRvd25FeHBhbnNpb24ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI2Ryb3Bkb3duQ29udGFpbmVyIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiBjbGFzcz1cImRyb3AtZG93blwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwieydyaWdodC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3JpZ2h0JywgJ2xlZnQtZXJyb3InOiBlcnJvclBvc2l0aW9uID09ICdsZWZ0JywgJ3RvcC1lcnJvcic6IGVycm9yUG9zaXRpb24gPT0gJ3RvcCd9XCJcbiAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dC13cmFwcGVyXCI+XG4gICAgPGRpdiAoY2xpY2spPVwib25Ecm9wZG93bkNsaWNrKCRldmVudClcIiBjZGtPdmVybGF5T3JpZ2luICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiIFtjbGFzcy5mb2N1c2VkXT1cImlzRm9jdXNlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7J25nLWludmFsaWQnOiBpc0ludmFsaWQsICdkaXNhYmxlZCc6IGRpc2FibGVkfVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIHRhYmluZGV4PVwiMFwiXG4gICAgICBjbGFzcz1cImRyb3AtZG93bi1pbnB1dCB2ZXJiZW4taW5wdXQgZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImRyb3AtZG93bi1tYWluLWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0lmPVwiKHNlbGVjdGVkSXRlbVRlbXBsYXRlICYmIHNlbGVjdGVkT3B0aW9uKSB8fCAoc2VsZWN0ZWRJdGVtVGVtcGxhdGUgJiYgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDApOyBlbHNlIGRlZmF1bHRJdGVtXCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJtdWx0aXNlbGVjdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInNlbGVjdGVkSXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogc2VsZWN0ZWRPcHRpb25zIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW11bHRpc2VsZWN0XCIgY2xhc3M9XCJkZWZhdWx0LWl0ZW0gZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwiIXRoaXMuc2VsZWN0ZWRPcHRpb25cIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9uXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgIHt7dGhpcy5zZWxlY3RlZE9wdGlvbkxhYmVsfX08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwibXVsdGlzZWxlY3RcIiBjbGFzcz1cImRlZmF1bHQtaXRlbSBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsIHBsYWNlLWhvbGRlclwiICpuZ0lmPVwidGhpcy5zZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09IDBcIj57e3BsYWNlaG9sZGVyfX08L2Rpdj5cbiAgICAgICAgICAgIDx2ZXJiZW4tdG9vbHRpcCBjdXN0b21DbGFzcz1cImN1c3RvbS10b29sdGlwLXdpZHRoXCIgYm9yZGVyPVwiMXB4IHNvbGlkICMzMzQxNTVcIiBiYWNrZ3JvdW5kQ29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwQ29udGVudF09XCJtdWx0aXNlbGVjdFRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIiBjbGFzcz1cIml0ZW0tbGFiZWwgZHJvcGRvd24tbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28gY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHZlcmJlbi1zdmcgKGNsaWNrKT1cIm9uTXVsdGlzZWxlY3RJdGVtQ2xvc2VkKGksICRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIlxuICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMCAxMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzUgMy45MTc5N0w2LjI1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+IC0tPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJkaXNwbGF5ICE9ICdjaGlwJ1wiIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyLXR3byBub3JtYWxcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC92ZXJiZW4tdG9vbHRpcD5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbXVsdGlzZWxlY3RUb29sdGlwPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWZ1bGwtdmlld1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpdGVtLWxhYmVsIGRyb3Bkb3duLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGlzcGxheSA9PSAnY2hpcCdcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1zLWNvbnRhaW5lci10d28tdG9vbHRpcCBjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBtdWx0aS1zZWxlY3QgZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjbG9zZS1jaXJjbGUtZnVsbFwiIFt3aWR0aF09XCIxNVwiIFtoZWlnaHRdPVwiMTVcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8c3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNS4wMDA2NSA5LjMzMzMzQzcuMzAxODQgOS4zMzMzMyA5LjE2NzMyIDcuNDY3ODUgOS4xNjczMiA1LjE2NjY3QzkuMTY3MzIgMi44NjU0OCA3LjMwMTg0IDEgNS4wMDA2NSAxQzIuNjk5NDYgMSAwLjgzMzk4NCAyLjg2NTQ4IDAuODMzOTg0IDUuMTY2NjdDMC44MzM5ODQgNy40Njc4NSAyLjY5OTQ2IDkuMzMzMzMgNS4wMDA2NSA5LjMzMzMzWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMjUgMy45MTc5N0wzLjc1IDYuNDE3OTdcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjc1IDMuOTE3OTdMNi4yNSA2LjQxNzk3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXItdHdvLXRvb2x0aXAtbm9ybWFsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkT3B0aW9uTGFiZWxzOyBpbmRleCBhcyBpXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3tpICE9PSBzZWxlY3RlZE9wdGlvbkxhYmVscy5sZW5ndGggLSAxPyBpdGVtICsgJywgJzppdGVtfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCIoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb24gJiYgIW11bHRpc2VsZWN0KSB8fCAoc2hvd0NsZWFyICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDAgJiYgbXVsdGlzZWxlY3QpXCJcbiAgICAgICAgKGNsaWNrKT1cInRoaXMuY2xlYXJTZWxlY3Rpb24oJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgY2xhc3M9XCJkcm9wLWRvd24taWNvbi1pdGVtIGRyb3AtZG93bi1jbGVhci1idXR0b25cIj5cbiAgICAgICAgPHZlcmJlbi1zdmcgaWNvbj1cImNsb3NlLW5vLWNpcmNsZVwiIHN0cm9rZT1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTNcIiBbaGVpZ2h0XT1cIjEzXCI+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8IS0tIDxzdmcgd2lkdGg9XCI5XCIgaGVpZ2h0PVwiOVwiIHZpZXdCb3g9XCIwIDAgOSA5XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDAuODQzNzVMOC4xNTYyNSA4LjE1NjI1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgPHBhdGggZD1cIk0wLjg0Mzc1IDguMTU2MjVMOC4xNTYyNSAwLjg0Mzc1XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1kb3duLWljb24taXRlbSBkcm9wLWRvd24tZXhwYW5kLWJ1dHRvblwiPlxuICAgICAgICA8dmVyYmVuLXN2ZyBpY29uPVwiY2hldnJvbi1kb3duXCIgZmlsbD1cIiM5NGEzYjhcIiBbd2lkdGhdPVwiMTVcIiBbaGVpZ2h0XT1cIjhcIj48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwhLS0gPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiN1wiIHZpZXdCb3g9XCIwIDAgMTIgN1wiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTYuMDA1MDcgNC44ODAyN0M2LjIwMjA1IDQuNjI3NzUgNi4zMDY4MyA0LjQ2MjIgNi40NDA5NSA0LjMyNzA0QzcuNzQzMzQgMy4wMTczMSA5LjA1MjAyIDEuNzEzODcgMTAuMzU3NiAwLjQwNjI0MkMxMC41NzEzIDAuMTkyNDk1IDEwLjc4ODIgMC4wMDkxMzM2NyAxMS4xMTkzIDAuMDEwMTgxNEMxMS40NjkyIDAuMDExMjI5MiAxMS43MjI4IDAuMTU3OTIgMTEuODg4NCAwLjQ1NjUzN0MxMi4wNTcgMC43NjAzOTQgMTIuMDMwOSAxLjA2MTExIDExLjgzNDkgMS4zNDI5NkMxMS43NjU4IDEuNDQyNSAxMS42NzY3IDEuNTI3MzcgMTEuNTkwOCAxLjYxNDMzQzkuOTg4NzMgMy4yMTYzOSA4LjM3MzA1IDQuODA0ODMgNi43OTMgNi40Mjc4NEM2LjI5MTExIDYuOTQzMzUgNS42ODc1OSA2LjkyMzQ0IDUuMjEzOTkgNi40MzgzMkMzLjYzMTg0IDQuODE3NCAyLjAxODI2IDMuMjI2ODcgMC40MTQxMDkgMS42MjY5MUMwLjExNjUzOSAxLjMyOTM0IC0wLjExNjA2NyAxLjAxOTIgMC4wNjIwNTYxIDAuNTY1NTA3QzAuMjcxNjEyIDAuMDMxMTM5IDAuODgzNTE5IC0wLjE2Nzk0MSAxLjM1NTAyIDAuMTU3OTE5QzEuNDk2NDcgMC4yNTUzNjMgMS42MTU5MiAwLjM4NzM4NSAxLjczOTU1IDAuNTA5OTc1QzMuMDIyMDQgMS43OTAzNiA0LjMwNDUyIDMuMDcwNzUgNS41ODM4NiA0LjM1NTMzQzUuNzA2NDUgNC40Nzc5MiA1LjgwMjg0IDQuNjI2NzEgNi4wMDYxMSA0Ljg4MTMyTDYuMDA1MDcgNC44ODAyN1pcIlxuICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiIC8+XG4gICAgICAgIDwvc3ZnPiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGhpcy5pc0ludmFsaWQgJiYgdGhpcy5pbnZhbGlkTWVzc2FnZVwiIGNsYXNzPVwidmVyYmVuLWVycm9yLW1lc3NhZ2UgZXJyb3ItbWVzc2FnZVwiPnt7aW52YWxpZE1lc3NhZ2V9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlIGNka0Nvbm5lY3RlZE92ZXJsYXkgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJkcm9wZG93bkNvbnRhaW5lci5vZmZzZXRXaWR0aFwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlMb2NrUG9zaXRpb25dPVwiZmFsc2VcIiBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJ0cmlnZ2VyXCIgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwiW1xuICAgIHtcbiAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgfSxcbiAgICB7XG4gICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgIH1cbiAgXVwiIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0V4cGFuZGVkXCIgKGRldGFjaCk9XCJpc0V4cGFuZGVkID0gZmFsc2VcIj5cbiAgICA8ZGl2ICNkcm9wZG93bkV4cGFuc2lvbiBjbGFzcz1cImRyb3AtZG93bi1tZW51LWl0ZW0td3JhcHBlclwiPlxuICAgICAgPGRpdiAqbmdJZj1cIm11bHRpc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgPT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgY2hpcCBmbGV4XCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW0tY2hpcCBmbGV4XCI+XG4gICAgICAgICAgICA8c3Bhbj57e2l0ZW19fTwvc3Bhbj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIChjbGljayk9XCJvbk11bHRpc2VsZWN0SXRlbUNsb3NlZChpLCAkZXZlbnQpXCIgaWNvbj1cImNsb3NlLWNpcmNsZS1mdWxsXCIgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyAoY2xpY2spPVwib25NdWx0aXNlbGVjdEl0ZW1DbG9zZWQoaSwgJGV2ZW50KVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMTAgMTBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICBkPVwiTTUuMDAwNjUgOS4zMzMzM0M3LjMwMTg0IDkuMzMzMzMgOS4xNjczMiA3LjQ2Nzg1IDkuMTY3MzIgNS4xNjY2N0M5LjE2NzMyIDIuODY1NDggNy4zMDE4NCAxIDUuMDAwNjUgMUMyLjY5OTQ2IDEgMC44MzM5ODQgMi44NjU0OCAwLjgzMzk4NCA1LjE2NjY3QzAuODMzOTg0IDcuNDY3ODUgMi42OTk0NiA5LjMzMzMzIDUuMDAwNjUgOS4zMzMzM1pcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4yNSAzLjkxNzk3TDMuNzUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy43NSAzLjkxNzk3TDYuMjUgNi40MTc5N1wiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImRpc3BsYXkgIT0gJ2NoaXAnXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXIgbm9ybWFsXCI+XG4gICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcHRpb25MYWJlbHM7IGluZGV4IGFzIGlcIiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgIHt7aSAhPT0gc2VsZWN0ZWRPcHRpb25MYWJlbHMubGVuZ3RoIC0gMT8gaXRlbSArICcsICc6aXRlbX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImFsbG93U2VsZWN0QWxsIHx8IGZpbHRlclwiIGNsYXNzPVwiYWN0aW9ucy1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgPGlucHV0ICpuZ0lmPVwiYWxsb3dTZWxlY3RBbGxcIiAoY2xpY2spPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRBbGxcIlxuICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWNoZWNrYm94XCIgLz5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3QtYWxsLWNhcHRpb25cIiAqbmdJZj1cImFsbG93U2VsZWN0QWxsICYmICFmaWx0ZXJcIj5TZWxlY3QgQWxsPC9zcGFuPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiZmlsdGVyXCIgW25nQ2xhc3NdPVwieydmb2N1c2VkJzogaXNJbnB1dEZvY3VzZWR9XCIgdGFiaW5kZXg9XCIwXCIgKGZvY3VzKT1cIm9uU2VhcmNoRm9jdXMoKVwiXG4gICAgICAgICAgKGJsdXIpPVwib25TZWFyY2hCbHVyKClcIiBjbGFzcz1cInNlYXJjaC1zZWN0aW9uIGZsZXhcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlYXJjaC1pY29uIGZsZXhcIj5cbiAgICAgICAgICAgIDx2ZXJiZW4tc3ZnIGljb249XCJzZWFyY2hcIiBzdHJva2U9XCIjNjQ3NDhiXCIgW3dpZHRoXT1cIjE1XCIgW2hlaWdodF09XCIxNVwiPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICAgIDwhLS0gPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI5XCIgY3k9XCI5XCIgcj1cIjhcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIj48L2NpcmNsZT5cbiAgICAgICAgICAgICAgPGxpbmUgeDE9XCIxNFwiIHkxPVwiMTRcIiB4Mj1cIjE5XCIgeTI9XCIxOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48L2xpbmU+XG4gICAgICAgICAgICA8L3N2Zz4gLS0+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGhpcy5zZWxlY3RlZENvbnRleHRzW3RoaXMuc2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggLSAxXVwiIGNsYXNzPVwic2VhcmNoLWNvbnRleHRcIj5cbiAgICAgICAgICAgIHt7dGhpcy5nZXRPcHRpb25MYWJlbCh0aGlzLnNlbGVjdGVkQ29udGV4dHNbdGhpcy5zZWxlY3RlZENvbnRleHRzLmxlbmd0aCAtIDFdKX19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgKGlucHV0KT1cIm9uU2VhcmNoKCRldmVudClcIiBbKG5nTW9kZWwpXT1cInNlYXJjaENvbnRleHRcIiAoZm9jdXMpPVwib25JbnB1dEZvY3VzKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbklucHV0Qmx1cigpXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hvcml6b250YWxMaW5lXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZS1zZWN0aW9uXCI+XG4gICAgICAgIDxociBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJob3Jpem9udGFsTGluZUNvbG9yXCIgY2xhc3M9XCJjb2xvcmVkLXVuZGVybGluZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tbWVudS1pdGVtXCI+XG4gICAgICAgIDxkcm9wLWRvd24taXRlbSBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIFtncm91cFRlbXBsYXRlXT1cImdyb3VwVGVtcGxhdGVcIiBbYWN0aXZlSXRlbV09XCJzZWxlY3RlZE9wdGlvblwiXG4gICAgICAgICAgW2FjdGl2ZUl0ZW1zXT1cInNlbGVjdGVkT3B0aW9uc1wiIFttdWx0aXNlbGVjdF09XCJtdWx0aXNlbGVjdFwiIFtvcHRpb25WYWx1ZV09XCJvcHRpb25WYWx1ZVwiXG4gICAgICAgICAgW29wdGlvbkxhYmVsXT1cIm9wdGlvbkxhYmVsXCIgW29wdGlvblN1YkxhYmVsXT1cIm9wdGlvblN1YkxhYmVsXCIgW3NlbGVjdEtleV09XCJzZWxlY3RLZXlcIlxuICAgICAgICAgIFtsb2FkTW9yZUNhcHRpb25dPVwibG9hZE1vcmVDYXB0aW9uXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFtncm91cF09XCJncm91cFwiIFtvbkV4cGFuZF09XCJleHBhbmRNZW51LmJpbmQodGhpcylcIlxuICAgICAgICAgIFtvbkxvYWRNb3JlXT1cImxvYWRNb3JlTWVudUl0ZW1zLmJpbmQodGhpcylcIiBbb25TZWxlY3RdPVwib25TZWxlY3QuYmluZCh0aGlzKVwiPjwvZHJvcC1kb3duLWl0ZW0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJsYXp5TG9hZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWUtbW9yZS1jb250YWluZXIgZmxleCBqdXN0aWZ5LWVuZFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWUtbW9yZS1jYXB0aW9uXCIgKGNsaWNrKT1cImxvYWRNb3JlKClcIj57e2xvYWRNb3JlQ2FwdGlvbn19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1vdmVybGF5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -13,6 +13,7 @@ export class NumberInputComponent {
13
13
  max;
14
14
  step = 1;
15
15
  value = 0;
16
+ label = '';
16
17
  controlButton = false;
17
18
  valueChange = new EventEmitter();
18
19
  onChange = (value) => { };
@@ -76,11 +77,11 @@ export class NumberInputComponent {
76
77
  // Optional: Implement if you want to disable the input field
77
78
  }
78
79
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
79
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: NumberInputComponent, selector: "verben-number-input", inputs: { min: "min", max: "max", step: "step", value: "value", controlButton: "controlButton" }, outputs: { valueChange: "valueChange" }, providers: [NUMBER_INPUT_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"input-container {{ inputContainerClass }}\">\n <input\n type=\"number\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (blur)=\"validateValue()\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n\n </div>\n <p class=\"error-message\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n ", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{width:100%}.verben-input{width:100%;background-color:#f9f9f9;border-radius:5px;color:#333;font-size:14px;padding:8px}.number-input{display:flex;align-items:center;border:1px solid #ccc;border-radius:4px;overflow:hidden;width:max-content}.number-input button{background-color:#f0f0f0;border:none;padding:5px 10px;cursor:pointer;font-size:16px}.number-input input{width:50px;text-align:center;border:none;outline:none;font-size:16px}.number-input button:disabled{opacity:.5;cursor:not-allowed}.error-message{color:red;font-size:12px;margin-top:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
80
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.10", type: NumberInputComponent, selector: "verben-number-input", inputs: { min: "min", max: "max", step: "step", value: "value", label: "label", controlButton: "controlButton" }, outputs: { valueChange: "valueChange" }, providers: [NUMBER_INPUT_VALUE_ACCESSOR], ngImport: i0, template: "<div class=\"input-container {{ inputContainerClass }}\"\n[ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n <input\n type=\"number\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (blur)=\"validateValue()\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n\n </div>\n <p class=\"error-message\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n ", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{width:100%}.verben-input{width:100%;background-color:#f9f9f9;border-radius:5px;color:#333;font-size:14px;padding:8px}.number-input{display:flex;align-items:center;border:1px solid #ccc;border-radius:4px;overflow:hidden;width:max-content}.number-input button{background-color:#f0f0f0;border:none;padding:5px 10px;cursor:pointer;font-size:16px}.number-input input{width:50px;text-align:center;border:none;outline:none;font-size:16px}.number-input button:disabled{opacity:.5;cursor:not-allowed}.error-message{color:red;font-size:12px;margin-top:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
80
81
  }
81
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: NumberInputComponent, decorators: [{
82
83
  type: Component,
83
- args: [{ selector: 'verben-number-input', providers: [NUMBER_INPUT_VALUE_ACCESSOR], template: "<div class=\"input-container {{ inputContainerClass }}\">\n <input\n type=\"number\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (blur)=\"validateValue()\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n\n </div>\n <p class=\"error-message\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n ", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{width:100%}.verben-input{width:100%;background-color:#f9f9f9;border-radius:5px;color:#333;font-size:14px;padding:8px}.number-input{display:flex;align-items:center;border:1px solid #ccc;border-radius:4px;overflow:hidden;width:max-content}.number-input button{background-color:#f0f0f0;border:none;padding:5px 10px;cursor:pointer;font-size:16px}.number-input input{width:50px;text-align:center;border:none;outline:none;font-size:16px}.number-input button:disabled{opacity:.5;cursor:not-allowed}.error-message{color:red;font-size:12px;margin-top:5px}\n"] }]
84
+ args: [{ selector: 'verben-number-input', providers: [NUMBER_INPUT_VALUE_ACCESSOR], template: "<div class=\"input-container {{ inputContainerClass }}\"\n[ngStyle]=\"{\n 'display': 'flex',\n 'flex-direction': 'column'\n }\"\n>\n <div [ngStyle]=\"{\n 'width': '100%',\n 'display': 'flex',\n 'justify-content':'space-between'\n\n }\">\n <label [for]=\"label\">{{ label }}</label>\n <!-- incase i need it back -->\n <!-- <div *ngIf=\" passwordToggle === true\" [ngStyle]=\"{\n\n 'display': 'flex',\n 'align-item':'center',\n 'gap':'4px',\n 'color':'grey',\n 'cursor':'pointer'\n\n }\"\n (click)=\"toggleIcon()\"\n >\n <verben-svg\n [icon]=\"icon\"\n [width]=\"20\"\n [height]=\"20\"\n color=\"black\"\n ></verben-svg>\n <p>{{ textPass }}</p>\n </div> -->\n </div>\n <input\n type=\"number\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (blur)=\"validateValue()\"\n class=\"input-field verben-input {{ inputWrapperClass }}\"\n />\n\n </div>\n <p class=\"error-message\" *ngIf=\"errorMessage\">{{ errorMessage }}</p>\n ", styles: ["*{font-family:sans-serif;font-size:.9rem}.w-100{width:100%}.h-100{height:100%}.flex{display:flex}.flex-col{flex-direction:column}.font-bold{font-weight:700}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-items-center{align-items:center}.grid{display:grid}.verben-error-message{font-size:.8rem;color:red}.verben-input{border:1px solid #cbd5e1;outline:none;border-radius:5px;color:#334155;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,outline-color .2s}.verben-input::placeholder{color:#64748b}.verben-input:hover{border:1px solid #697e97}.verben-input.disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input:disabled{opacity:1;background-color:light-dark(rgba(239,239,239,.3),rgba(59,59,59,.3));pointer-events:none;color:#64748b}.verben-input.focused{border-color:#3b82f6;outline:none}.verben-input:focus{border-color:#3b82f6;outline:none}.verben-input.ng-invalid{border-color:red}.verben-button{padding:8px 15px;border-radius:4px;border:none;text-align:center}.verben-button.primary{background-color:#ffe681}.verben-button.secondary{background-color:#d9d9d940}.input-container{width:100%}.verben-input{width:100%;background-color:#f9f9f9;border-radius:5px;color:#333;font-size:14px;padding:8px}.number-input{display:flex;align-items:center;border:1px solid #ccc;border-radius:4px;overflow:hidden;width:max-content}.number-input button{background-color:#f0f0f0;border:none;padding:5px 10px;cursor:pointer;font-size:16px}.number-input input{width:50px;text-align:center;border:none;outline:none;font-size:16px}.number-input button:disabled{opacity:.5;cursor:not-allowed}.error-message{color:red;font-size:12px;margin-top:5px}\n"] }]
84
85
  }], propDecorators: { min: [{
85
86
  type: Input
86
87
  }], max: [{
@@ -89,9 +90,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
89
90
  type: Input
90
91
  }], value: [{
91
92
  type: Input
93
+ }], label: [{
94
+ type: Input
92
95
  }], controlButton: [{
93
96
  type: Input
94
97
  }], valueChange: [{
95
98
  type: Output
96
99
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNsQixNQUFNLGdCQUFnQixDQUFDOzs7QUFFeEIsd0RBQXdEO0FBQ3hELE1BQU0sMkJBQTJCLEdBQUc7SUFDbEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0lBQ25ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQVFGLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsR0FBRyxDQUFVO0lBQ2IsR0FBRyxDQUFVO0lBQ2IsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUNqQixLQUFLLEdBQVcsQ0FBQyxDQUFDO0lBQ2xCLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFFOUIsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFM0MsUUFBUSxHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUU3QixZQUFZLEdBQVcsRUFBRSxDQUFDO0lBQzFCLG1CQUFtQixDQUFNO0lBQ3pCLGlCQUFpQixDQUFNO0lBRXZCLFFB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QUFwQixvQkFBb0IseUxBRnBCLENBQUMsMkJBQTJCLENBQUMsMEJDdkIxQyxtYUFjRTs7NEZEV1csb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNFLHFCQUFxQixhQUdwQixDQUFDLDJCQUEyQixDQUFDOzhCQUcvQixHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyDinIUgRklYOiBEZWZpbmUgcHJvdmlkZXIgY29uc3RhbnQgb3V0c2lkZSB0aGUgY29tcG9uZW50XG5jb25zdCBOVU1CRVJfSU5QVVRfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9udW1iZXItaW5wdXQuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFtOVU1CRVJfSU5QVVRfVkFMVUVfQUNDRVNTT1JdLFxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbWluPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBjb250cm9sQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBpbnB1dENvbnRhaW5lckNsYXNzOiBhbnk7XG4gIGlucHV0V3JhcHBlckNsYXNzOiBhbnk7XG5cbiAgaW5jcmVhc2UoKSB7XG4gICAgaWYgKHRoaXMubWF4ID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZSArIHRoaXMuc3RlcCA8PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy52YWx1ZSArPSB0aGlzLnN0ZXA7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMubm90aWZ5VmFsdWVDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBkZWNyZWFzZSgpIHtcbiAgICBpZiAodGhpcy5taW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzLnZhbHVlIC0gdGhpcy5zdGVwID49IHRoaXMubWluKSB7XG4gICAgICB0aGlzLnZhbHVlIC09IHRoaXMuc3RlcDtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5ub3RpZnlWYWx1ZUNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgbGV0IG5ld1ZhbHVlID0gTnVtYmVyKGlucHV0VmFsdWUpO1xuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUoKTtcbiAgICB0aGlzLm5vdGlmeVZhbHVlQ2hhbmdlKCk7XG4gIH1cblxuICB2YWxpZGF0ZVZhbHVlKCkge1xuICAgIGlmICh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBgVmFsdWUgbXVzdCBiZSBhdCBsZWFzdCAke3RoaXMubWlufWA7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmFsdWUgPiB0aGlzLm1heCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBgVmFsdWUgY2Fubm90IGV4Y2VlZCAke3RoaXMubWF4fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgbm90aWZ5VmFsdWVDaGFuZ2UoKSB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgLy8gQ29udHJvbCBWYWx1ZSBBY2Nlc3NvciBtZXRob2RzXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/PyAwO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gT3B0aW9uYWw6IEltcGxlbWVudCBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoZSBpbnB1dCBmaWVsZFxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIHt7IGlucHV0Q29udGFpbmVyQ2xhc3MgfX1cIj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgW21heF09XCJtYXhcIlxuICAgICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgICAoYmx1cik9XCJ2YWxpZGF0ZVZhbHVlKClcIlxuICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCB2ZXJiZW4taW5wdXQge3sgaW5wdXRXcmFwcGVyQ2xhc3MgfX1cIlxuICAgIC8+XG5cbiAgPC9kaXY+XG4gIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3sgZXJyb3JNZXNzYWdlIH19PC9wPlxuICAiXX0=
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL251bWJlci1pbnB1dC9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixFQUNsQixNQUFNLGdCQUFnQixDQUFDOzs7QUFFeEIsd0RBQXdEO0FBQ3hELE1BQU0sMkJBQTJCLEdBQUc7SUFDbEMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO0lBQ25ELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQVFGLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsR0FBRyxDQUFVO0lBQ2IsR0FBRyxDQUFVO0lBQ2IsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUNqQixLQUFLLEdBQVcsQ0FBQyxDQUFDO0lBQ2xCLEtBQUssR0FBWSxFQUFFLENBQUM7SUFDcEIsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUU5QixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUUzQyxRQUFRLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUNqQyxTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBRTdCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsbUJBQW1CLENBQU07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QUMvRCxDQUFDO3dHQTlFVSxvQkFBb0I7NEZBQXBCLG9CQUFvQix5TUFGcEIsQ0FBQywyQkFBMkIsQ0FBQywwQkN2QjFDLDhvQ0ErQ0U7OzRGRHRCVyxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UscUJBQXFCLGFBR3BCLENBQUMsMkJBQTJCLENBQUM7OEJBRy9CLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMVUVfQUNDRVNTT1Jcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyDinIUgRklYOiBEZWZpbmUgcHJvdmlkZXIgY29uc3RhbnQgb3V0c2lkZSB0aGUgY29tcG9uZW50XG5jb25zdCBOVU1CRVJfSU5QVVRfVkFMVUVfQUNDRVNTT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOdW1iZXJJbnB1dENvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVyYmVuLW51bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9udW1iZXItaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9udW1iZXItaW5wdXQuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFtOVU1CRVJfSU5QVVRfVkFMVUVfQUNDRVNTT1JdLFxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbWluPzogbnVtYmVyO1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXI7XG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIHZhbHVlOiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjb250cm9sQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBpbnB1dENvbnRhaW5lckNsYXNzOiBhbnk7XG4gIGlucHV0V3JhcHBlckNsYXNzOiBhbnk7XG5cbiAgaW5jcmVhc2UoKSB7XG4gICAgaWYgKHRoaXMubWF4ID09PSB1bmRlZmluZWQgfHwgdGhpcy52YWx1ZSArIHRoaXMuc3RlcCA8PSB0aGlzLm1heCkge1xuICAgICAgdGhpcy52YWx1ZSArPSB0aGlzLnN0ZXA7XG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUoKTtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMubm90aWZ5VmFsdWVDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBkZWNyZWFzZSgpIHtcbiAgICBpZiAodGhpcy5taW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzLnZhbHVlIC0gdGhpcy5zdGVwID49IHRoaXMubWluKSB7XG4gICAgICB0aGlzLnZhbHVlIC09IHRoaXMuc3RlcDtcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5ub3RpZnlWYWx1ZUNoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgbGV0IG5ld1ZhbHVlID0gTnVtYmVyKGlucHV0VmFsdWUpO1xuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUoKTtcbiAgICB0aGlzLm5vdGlmeVZhbHVlQ2hhbmdlKCk7XG4gIH1cblxuICB2YWxpZGF0ZVZhbHVlKCkge1xuICAgIGlmICh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmFsdWUgPCB0aGlzLm1pbikge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBgVmFsdWUgbXVzdCBiZSBhdCBsZWFzdCAke3RoaXMubWlufWA7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkICYmIHRoaXMudmFsdWUgPiB0aGlzLm1heCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBgVmFsdWUgY2Fubm90IGV4Y2VlZCAke3RoaXMubWF4fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xuICB9XG5cbiAgbm90aWZ5VmFsdWVDaGFuZ2UoKSB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgLy8gQ29udHJvbCBWYWx1ZSBBY2Nlc3NvciBtZXRob2RzXG4gIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA/PyAwO1xuICAgIHRoaXMudmFsaWRhdGVWYWx1ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gT3B0aW9uYWw6IEltcGxlbWVudCBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoZSBpbnB1dCBmaWVsZFxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIHt7IGlucHV0Q29udGFpbmVyQ2xhc3MgfX1cIlxuW25nU3R5bGVdPVwie1xuICAnZGlzcGxheSc6ICdmbGV4JyxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogJ2NvbHVtbidcbiB9XCJcbj5cbiAgICA8ZGl2IFtuZ1N0eWxlXT1cIntcbiAgICAgICd3aWR0aCc6ICcxMDAlJyxcbiAgICAgICdkaXNwbGF5JzogJ2ZsZXgnLFxuICAgICAgJ2p1c3RpZnktY29udGVudCc6J3NwYWNlLWJldHdlZW4nXG5cbiAgICB9XCI+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgICAgIDwhLS0gaW5jYXNlIGkgbmVlZCBpdCBiYWNrICAtLT5cbiAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIiBwYXNzd29yZFRvZ2dsZSA9PT0gdHJ1ZVwiIFtuZ1N0eWxlXT1cIntcblxuICAgICAgICAnZGlzcGxheSc6ICdmbGV4JyxcbiAgICAgICAgJ2FsaWduLWl0ZW0nOidjZW50ZXInLFxuICAgICAgICAnZ2FwJzonNHB4JyxcbiAgICAgICAgJ2NvbG9yJzonZ3JleScsXG4gICAgICAgICdjdXJzb3InOidwb2ludGVyJ1xuXG4gICAgICB9XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVJY29uKClcIlxuICAgICAgPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICBbaWNvbl09XCJpY29uXCJcbiAgICAgICAgW3dpZHRoXT1cIjIwXCJcbiAgICAgICAgW2hlaWdodF09XCIyMFwiXG4gICAgICAgIGNvbG9yPVwiYmxhY2tcIlxuICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDxwPnt7IHRleHRQYXNzIH19PC9wPlxuICAgIDwvZGl2PiAtLT5cbiAgICA8L2Rpdj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgW21heF09XCJtYXhcIlxuICAgICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgICAoYmx1cik9XCJ2YWxpZGF0ZVZhbHVlKClcIlxuICAgICAgY2xhc3M9XCJpbnB1dC1maWVsZCB2ZXJiZW4taW5wdXQge3sgaW5wdXRXcmFwcGVyQ2xhc3MgfX1cIlxuICAgIC8+XG5cbiAgPC9kaXY+XG4gIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3sgZXJyb3JNZXNzYWdlIH19PC9wPlxuICAiXX0=