ngx-beacon-notify 1.3.6 → 1.3.8

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.
@@ -29,7 +29,7 @@ export class BeaconNotifyComponent {
29
29
  }
30
30
  ngAfterViewInit() {
31
31
  // Get beacon
32
- const beacon = this.beaconDOM = this.beaconService.getBeaconContainer.nativeElement.querySelector(`#bc_${this.beacon.bid}`);
32
+ const beacon = this.beaconDOM = (this.beaconService.getBeaconContainer.nativeElement || document).querySelector(`#bc_${this.beacon.bid}`);
33
33
  // Resolve font weight for title and body
34
34
  this.resolveFontWeightForComponents(beacon);
35
35
  // Resolve possible focus for beacon
@@ -149,4 +149,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
149
149
  }], ctorParameters: () => [{ type: i1.BeaconNotifyService }, { type: i2.DomSanitizer }], propDecorators: { beacon: [{
150
150
  type: Input
151
151
  }] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYmVhY29uL2JlYWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2JlYWNvbi9iZWFjb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVVoRSxNQUFNLE9BQU8scUJBQXFCO0lBS1o7SUFDVjtJQUxELE1BQU0sQ0FBZ0I7SUFDdkIsU0FBUyxDQUFjO0lBQ3hCLHFCQUFxQixDQUFXO0lBRXZDLFlBQW9CLGFBQWtDLEVBQzVDLFNBQXVCO1FBRGIsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQzVDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUE7SUFDMUUsQ0FBQztJQUVELFFBQVE7UUFDTixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDNUMsS0FBSyxFQUFFLElBQUk7WUFDWCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsYUFBYTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1FBQzNILHlDQUF5QztRQUN6QyxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDM0Msb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyw2QkFBNkIsQ0FB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QVM7K0JBQ0UsWUFBWTttSEFLYixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWFjb25Ob3RpZnlTZXJ2aWNlIH0gZnJvbSAnLi4vYmVhY29uLW5vdGlmeS5zZXJ2aWNlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IElCZWFjb25Db25maWcsIElCZWFjb25FdmVudE1lc3NhZ2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1iZWFjb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYmVhY29uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmVhY29uLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCZWFjb25Ob3RpZnlDb21wb25lbnQge1xuICBASW5wdXQoKSBiZWFjb24hOiBJQmVhY29uQ29uZmlnXG4gIHByaXZhdGUgYmVhY29uRE9NITogSFRNTEVsZW1lbnRcbiAgcHVibGljIGJlYWNvbkRlZmF1bHRJY29uS2V5cyE6IHN0cmluZ1tdXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiZWFjb25TZXJ2aWNlOiBCZWFjb25Ob3RpZnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpe1xuICAgIHRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzID0gdGhpcy5iZWFjb25TZXJ2aWNlLmdldEJlYWNvbkRlZmF1bHRJY29uS2V5c1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyZSBtb3VudCBldmVudFxuICAgIHRoaXMuYmVhY29uU2VydmljZS5iZWFjb25FdmVudFRhc2tNYXN0ZXIuZW1pdCh7XG4gICAgICBtb3VudDogdHJ1ZSxcbiAgICAgIGlkOiB0aGlzLmJlYWNvbi5iaWRcbiAgICB9KVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIEdldCBiZWFjb25cbiAgICBjb25zdCBiZWFjb24gPSB0aGlzLmJlYWNvbkRPTSA9IHRoaXMuYmVhY29uU2VydmljZS5nZXRCZWFjb25Db250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGAjYmNfJHt0aGlzLmJlYWNvbi5iaWR9YClcbiAgICAvLyBSZXNvbHZlIGZvbnQgd2VpZ2h0IGZvciB0aXRsZSBhbmQgYm9keVxuICAgIHRoaXMucmVzb2x2ZUZvbnRXZWlnaHRGb3JDb21wb25lbnRzKGJlYWNvbilcbiAgICAvLyBSZXNvbHZlIHBvc3NpYmxlIGZvY3VzIGZvciBiZWFjb25cbiAgICB0aGlzLnJlc29sdmVQb3NzaWJsZUZvY3VzRm9yQmVhY29uKGJlYWNvbilcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIFJlc29sdmUgZGVsYXkgc2V0dGluZ1xuICAgICAgdGhpcy5yZXNvbHZlRGVsYXlGb3JCZWFjb24oYmVhY29uLCB0cnVlKVxuICAgICAgLy8gU2V0IGJlYWNvbiBsaXN0ZW5lclxuICAgICAgdGhpcy5zZXRMaXN0ZW5lckZvckJlYWNvbihiZWFjb24sIHRoaXMuYmVhY29uKVxuXG4gICAgICAvLyBTYW5pdGl6ZSBzdmcgY29udGVudCBpZiBub3QgZm9udCBpY29uXG4gICAgICBpZiAodGhpcy5iZWFjb24uc3ZnSWNvbikge1xuICAgICAgICBjb25zdCBiZWFjb25TdmdJY29uID0gYmVhY29uLnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYmVhY29uLW1lc3NhZ2Utc3ZnLWNvbnRyb2wgc3ZnJylcbiAgICAgICAgYmVhY29uU3ZnSWNvbi5zdHlsZS53aWR0aCA9ICcyMHB4J1xuICAgICAgICBiZWFjb25TdmdJY29uLnN0eWxlLmhlaWdodCA9ICcyMHB4J1xuICAgICAgICBiZWFjb25TdmdJY29uLnN0eWxlLm1hcmdpblJpZ2h0ID0gJzdweCdcbiAgICAgICAgYmVhY29uU3ZnSWNvbi5zdHlsZS5tYXJnaW5Ub3AgPSAnLTJweCdcbiAgICAgIH1cbiAgICB9LCAwKVxuXG4gICAgLy8gTGlzdGVuIGZvciBldmVudFxuICAgIHRoaXMuYmVhY29uU2VydmljZS5iZWFjb25FdmVudFRhc2tNYXN0ZXIuc3Vic2NyaWJlKChtZXNzYWdlOiBJQmVhY29uRXZlbnRNZXNzYWdlKSA9PiB7XG4gICAgICAvLyBDaGVjayBmb3IgbmV4dCBmb3IgZm9jdXMgZXZlbnRcbiAgICAgIGlmIChtZXNzYWdlLmF1dG9EZXRlY3ROZXh0Rm9jdXNCZWFjb24pXG4gICAgICAgIHRoaXMucmVzb2x2ZVBvc3NpYmxlRm9jdXNGb3JCZWFjb24odGhpcy5iZWFjb25ET00sIGZhbHNlKVxuICAgIH0pXG4gIH1cblxuICAvLyBXaGVuIGJlYWNvbiBidXR0b24gaXMgY2xpY2tlZFxuICBiZWFjb25CdXR0b25DbGljayhlOiBFdmVudCwgbm86IG51bWJlcik6IHZvaWQge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBzd2l0Y2ggKG5vKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIC8vIENoZWNrIGZvciBjYWxsYmFja1xuICAgICAgICBpZiAodGhpcy5iZWFjb24/LmJ1dHRvbnM/Lm9uZT8uY2FsbGJhY2spXG4gICAgICAgICAgdGhpcy5iZWFjb24/LmJ1dHRvbnM/Lm9uZT8uY2FsbGJhY2soLi4uKHRoaXMuYmVhY29uPy5idXR0b25zPy5vbmU/LmNhbGxiYWNrQXJncyB8fCBbXSkpXG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBpZiBjYW4gZGlzbWlzc1xuICAgICAgICBpZiAodGhpcy5iZWFjb24/LmJ1dHRvbnM/Lm9uZT8uY2FuRGlzbWlzcylcbiAgICAgICAgICB0aGlzLmNsb3NlQmVhY29uKHRoaXMuYmVhY29uRE9NLCB0aGlzLmJlYWNvbilcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGNhbGxiYWNrXG4gICAgICAgIGlmICh0aGlzLmJlYWNvbj8uYnV0dG9ucz8udHdvPy5jYWxsYmFjaylcbiAgICAgICAgICB0aGlzLmJlYWNvbj8uYnV0dG9ucz8udHdvPy5jYWxsYmFjayguLi4odGhpcy5iZWFjb24/LmJ1dHRvbnM/LnR3bz8uY2FsbGJhY2tBcmdzIHx8IFtdKSlcblxuICAgICAgICAvLyBDaGVjayBpZiBjYW4gZGlzbWlzc1xuICAgICAgICBpZiAodGhpcy5iZWFjb24/LmJ1dHRvbnM/LnR3bz8uY2FuRGlzbWlzcylcbiAgICAgICAgICB0aGlzLmNsb3NlQmVhY29uKHRoaXMuYmVhY29uRE9NLCB0aGlzLmJlYWNvbilcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgbGlzdGVuZXIgZm9yIGJlYWNvbiBjaGFuZ2VzXG4gIHNldExpc3RlbmVyRm9yQmVhY29uKGJlYWNvbjogRWxlbWVudCwgYmVhY29uRGF0YTogSUJlYWNvbkNvbmZpZyk6IHZvaWQge1xuICAgICgoYiwgZCkgPT4ge1xuICAgICAgYmVhY29uPy5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCAoZSkgPT4gdGhpcy5jbG9zZUJlYWNvbihiLCBkKSlcbiAgICAgIGJlYWNvbj8uYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0QW5pbWF0aW9uRW5kJywgKGUpID0+IHRoaXMuY2xvc2VCZWFjb24oYiwgZCkpXG4gICAgICBiZWFjb24/LmFkZEV2ZW50TGlzdGVuZXIoJ29BbmltYXRpb25FbmQnLCAoZSkgPT4gdGhpcy5jbG9zZUJlYWNvbihiLCBkKSlcbiAgICB9KShiZWFjb24sIGJlYWNvbkRhdGEpXG4gIH1cblxuICAvLyBUb2dnbGUgYXV0by1jbG9zZVxuICBhdXRvQ2xvc2Uoc3RhdHVzOiBib29sZWFuLCBjb250cm9sOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIHN0YXR1c1xuICAgICAgPyAoY29udHJvbC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYmVhY29uLXN0YXRpYycpICE9ICd0cnVlJyAmJiB0aGlzLnJlc29sdmVEZWxheUZvckJlYWNvbihjb250cm9sLCBmYWxzZSkpXG4gICAgICA6IGNvbnRyb2wuY2xhc3NMaXN0LnJlbW92ZShTdHJpbmcodGhpcy5iZWFjb24uYW5pbWF0aW9uQ2xhc3MpKVxuICB9XG5cbiAgLy8gUmVzb2x2ZSBkZWxheSBmb3IgYmVhY29uXG4gIHJlc29sdmVEZWxheUZvckJlYWNvbihiZWFjb246IEhUTUxFbGVtZW50LCBvbkxvYWQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgaWYgZGVsYXkgc2V0XG4gICAgaWYgKHRoaXMuYmVhY29uLnN0YXRpYyAmJiB0eXBlb2YgdGhpcy5iZWFjb24uc3RhdGljID09ICdudW1iZXInKSB7XG4gICAgICBiZWFjb24gJiYgKGJlYWNvbi5zdHlsZS5hbmltYXRpb25EZWxheSA9IHRoaXMuYmVhY29uLnN0YXRpYyArICdzJylcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9uTG9hZCA9PSAhMSAmJiB0aGlzLmJlYWNvbj8uZml4ZWQgIT0gdHJ1ZSlcbiAgICAgICAgYmVhY29uLmNsYXNzTGlzdC5hZGQoU3RyaW5nKHRoaXMuYmVhY29uLmFuaW1hdGlvbkNsYXNzKSlcbiAgICB9XG4gIH1cblxuICAvLyBSZXNvbHZlIGZvbnQgd2VpZ2h0IGZvciB0aXRsZSBhbmQgYm9keVxuICByZXNvbHZlRm9udFdlaWdodEZvckNvbXBvbmVudHMoYmVhY29uOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRpdGxlOiBIVE1MRWxlbWVudCA9IGJlYWNvbi5xdWVyeVNlbGVjdG9yKCdkaXYuYmVhY29uLW1lc3NhZ2UtaGVhZGVyJylcbiAgICBjb25zdCBib2R5OiBIVE1MRWxlbWVudCA9IGJlYWNvbi5xdWVyeVNlbGVjdG9yKCdkaXYuYmVhY29uLW1lc3NhZ2UtYm9keScpXG4gICAgdGl0bGUgJiYgKHRpdGxlLnN0eWxlLmZvbnRXZWlnaHQgPSB0aGlzLmJlYWNvbi5mb250V2VpZ2h0VGl0bGUgfHwgJ2JvbGQnKVxuICAgIGJvZHkgJiYgKGJvZHkuc3R5bGUuZm9udFdlaWdodCA9IHRoaXMuYmVhY29uLmZvbnRXZWlnaHRCb2R5IHx8ICdib2xkJylcbiAgfVxuXG4gIC8vIFJlc29sdmUgZm9jdXMgYmVhY29uXG4gIHJlc29sdmVQb3NzaWJsZUZvY3VzRm9yQmVhY29uKGJlYWNvbjogSFRNTEVsZW1lbnQsIGNyZWF0ZU92ZXJsYXk6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlRm9jdXNCZWFjb25JZCA9IHRoaXMuYmVhY29uU2VydmljZS5nZXRBY3RpdmVGb2N1c0JlYWNvbklkXG4gICAgaWYgKGFjdGl2ZUZvY3VzQmVhY29uSWQgPT0gdGhpcy5iZWFjb24uYmlkKSB7XG4gICAgICBiZWFjb24uc3R5bGUuekluZGV4ID0gJzkwMDMnXG4gICAgICBcbiAgICAgIC8vIENoZWNrIGlmIGJlYWNvbiBzaG91bGQgYmUgY2VudGVyZWRcbiAgICAgIGlmICh0aGlzLmJlYWNvbi5zaGluZSkge1xuICAgICAgICBjb25zdCBzY2FsZSA9IHRoaXMuYmVhY29uLnNoaW5lU2NhbGUgJiYgU3RyaW5nKHRoaXMuYmVhY29uLnNoaW5lU2NhbGUpLm1hdGNoKC8oXFxkKylcXC4oXFxkKykvKSA/IHRoaXMuYmVhY29uLnNoaW5lU2NhbGUgOiAnMS41J1xuICAgICAgICBiZWFjb24uc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gICAgICAgIGJlYWNvbi5zdHlsZS5yaWdodCA9ICcwJ1xuICAgICAgICBiZWFjb24uc3R5bGUubGVmdCA9ICcwJ1xuICAgICAgICBiZWFjb24uc3R5bGUuYm90dG9tID0gJzUwJSdcbiAgICAgICAgYmVhY29uLnN0eWxlLm1hcmdpbiA9ICdhdXRvJ1xuICAgICAgICBiZWFjb24uc3R5bGUudHJhbnNmb3JtID0gJ3NjYWxlKCcgKyBzY2FsZSArICcpJ1xuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgb3ZlcmxheVxuICAgICAgaWYgKGNyZWF0ZU92ZXJsYXkpXG4gICAgICAgIHRoaXMuYmVhY29uU2VydmljZS5jcmVhdGVCZWFjb25Gb2N1c092ZXJsYXkodGhpcy5iZWFjb24ub3ZlcmxheUNvbG9yKVxuICAgICAgZWxzZSB0aGlzLmJlYWNvblNlcnZpY2UucmVwYWludEJlYWNvbkZvY3VzT3ZlcmxheSh0aGlzLmJlYWNvbi5vdmVybGF5Q29sb3IpXG4gICAgfVxuICB9XG5cbiAgLy8gVHJpZ2dlciBjbG9zZSBiZWFjb25cbiAgY2xvc2VCZWFjb24oYmVhY29uQ29udHJvbDogYW55LCBiZWFjb25EYXRhOiBJQmVhY29uQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJlYWNvbj8uZml4ZWQpIHtcbiAgICAgIHRoaXMuYmVhY29uU2VydmljZS5iZWFjb25FdmVudFRhc2tNYXN0ZXIuZW1pdCh7XG4gICAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgaWQ6IGJlYWNvbkNvbnRyb2wuZ2V0QXR0cmlidXRlKCdpZCcpLnJlcGxhY2UoL2JjXy8sICcnKVxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgI2JlYWNvbkNvbnRyb2wgXG5cdFx0W2lkXT1cIidiY18nICsgYmVhY29uLmJpZFwiXG5cdFx0KG1vdXNlZW50ZXIpPVwiYXV0b0Nsb3NlKGZhbHNlLCBiZWFjb25Db250cm9sKVwiIFxuXHRcdChtb3VzZWxlYXZlKT1cImF1dG9DbG9zZSh0cnVlLCBiZWFjb25Db250cm9sKVwiXG5cdFx0KGNsaWNrKT1cImJlYWNvbi5wcmV2ZW50Q2xpY2tDbG9zZSA/IG51bGwgOiBjbG9zZUJlYWNvbihiZWFjb25Db250cm9sLCBiZWFjb24pXCJcblx0XHRbYXR0ci5kYXRhLWJlYWNvbi1zdGF0aWNdPVwiYmVhY29uLnN0YXRpY1wiXG5cdFx0Y2xhc3M9XCJiZWFjb24tbWVzc2FnZS1jb250cm9sIHt7IChiZWFjb24uc3RhdGljICE9PSB0cnVlICYmIGJlYWNvbi5maXhlZCAhPT0gdHJ1ZSkgPyBiZWFjb24uYW5pbWF0aW9uQ2xhc3MgOiAnJyB9fSB7eyBiZWFjb24ucmVwbGFjZW1lbnRDbGFzcyB8fCBiZWFjb24udHlwZSB9fSB7eyBiZWFjb24uc3R5bGVDbGFzcyB9fVwiXG5cdFx0W2NsYXNzLmJlYWNvbi1tZXNzYWdlLWNvbnRyb2wtbm8taG92ZXItZWZmZWN0XT1cImJlYWNvbi5ub0hvdmVyRWZmZWN0XCI+XG5cdDxkaXYgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1oZWFkZXJcIj5cblx0XHQ8ZGl2PlxuXHRcdFx0PHNwYW4gKm5nSWY9XCJiZWFjb24uZm9udEljb25cIj48aSBbY2xhc3NdPVwiYmVhY29uLmljb25cIj48L2k+PC9zcGFuPlxuXHRcdFx0PHNwYW4gKm5nSWY9XCIhYmVhY29uLmZvbnRJY29uICYmIGJlYWNvbkRlZmF1bHRJY29uS2V5cy5pbmNsdWRlcyhiZWFjb24uaWNvbilcIiBjbGFzcz1cImJlYWNvbi1tZXNzYWdlLXN2Zy1jb250cm9sXCI+XG5cdFx0XHRcdDxhcHAtYmVhY29uLWljb24tYWxlcnQgKm5nSWY9XCJiZWFjb24uaWNvbiB8IGJlYWNvblR5cGVSZXNvbHZlOidhbGVydCdcIj48L2FwcC1iZWFjb24taWNvbi1hbGVydD5cblx0XHRcdFx0PGFwcC1iZWFjb24taWNvbi1lcnJvciAqbmdJZj1cImJlYWNvbi5pY29uIHwgYmVhY29uVHlwZVJlc29sdmU6J2Vycm9yJ1wiPjwvYXBwLWJlYWNvbi1pY29uLWVycm9yPlxuXHRcdFx0XHQ8YXBwLWJlYWNvbi1pY29uLWluZm8gKm5nSWY9XCJiZWFjb24uaWNvbiB8IGJlYWNvblR5cGVSZXNvbHZlOidpbmZvJ1wiPjwvYXBwLWJlYWNvbi1pY29uLWluZm8+XG5cdFx0XHRcdDxhcHAtYmVhY29uLWljb24tc3VjY2VzcyAqbmdJZj1cImJlYWNvbi5pY29uIHwgYmVhY29uVHlwZVJlc29sdmU6J3N1Y2Nlc3MnXCI+PC9hcHAtYmVhY29uLWljb24tc3VjY2Vzcz5cblx0XHRcdFx0PGFwcC1iZWFjb24taWNvbi13YXJuaW5nICpuZ0lmPVwiYmVhY29uLmljb24gfCBiZWFjb25UeXBlUmVzb2x2ZTond2FybmluZydcIj48L2FwcC1iZWFjb24taWNvbi13YXJuaW5nPlxuXHRcdFx0PC9zcGFuPlxuXHRcdFx0PHNwYW4gKm5nSWY9XCIhYmVhY29uLmZvbnRJY29uICYmIGJlYWNvbi5pY29uICYmICFiZWFjb25EZWZhdWx0SWNvbktleXMuaW5jbHVkZXMoYmVhY29uLmljb24pXCIgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1zdmctY29udHJvbFwiIFtpbm5lckhUTUxdPVwiYmVhY29uLnN2Z0ljb25cIj48L3NwYW4+XG5cdFx0XHQ8c3BhbiBjbGFzcz1cImJlYWNvbi1tZXNzYWdlLXRpdGxlXCI+e3sgYmVhY29uLnRpdGxlIH19PC9zcGFuPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXY+XG5cdFx0XHQ8ZGl2ICpuZ0lmPVwiIWJlYWNvbi5maXhlZFwiIGNsYXNzPVwiYmVhY29uLW1lc3NhZ2UtY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VCZWFjb24oYmVhY29uQ29udHJvbCwgYmVhY29uKVwiPlxuXHRcdFx0XHQ8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgNzggNzhcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cblx0XHRcdCAgICA8cmVjdCB5PVwiNy4wNzEwNFwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMDBcIiByeD1cIjVcIiB0cmFuc2Zvcm09XCJyb3RhdGUoLTQ1IDAgNy4wNzEwNClcIiAvPlxuXHRcdFx0ICAgIDxyZWN0IHg9XCI3MC43MTA5XCIgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjEwMFwiIHJ4PVwiNVwiIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSA3MC43MTA5IDApXCIgLz5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1kaXZpZGVyXCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1ib2R5XCIgW2lubmVySFRNTF09XCJiZWFjb24uYm9keUh0bWxcIj48L2Rpdj5cblx0PGRpdiBjbGFzcz1cImJlYWNvbi1tZXNzYWdlLWRpdmlkZXJcIiAqbmdJZj1cImJlYWNvbi5idXR0b25zPy5vbmUgfHwgYmVhY29uLmJ1dHRvbnM/LnR3b1wiPjwvZGl2PlxuXG5cdDxkaXYgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1mb290ZXJcIiAqbmdJZj1cImJlYWNvbi5idXR0b25zICYmIGJlYWNvbi5idXR0b25zPy5vbmUgJiYgYmVhY29uLmJ1dHRvbnM/LnR3b1wiPlxuXHRcdDxkaXY+PGJ1dHRvbiAoY2xpY2spPVwiYmVhY29uQnV0dG9uQ2xpY2soJGV2ZW50LCAxKVwiPnt7IGJlYWNvbi5idXR0b25zPy5vbmU/LnRleHQgfX08L2J1dHRvbj48L2Rpdj5cblx0XHQ8ZGl2PjxidXR0b24gKGNsaWNrKT1cImJlYWNvbkJ1dHRvbkNsaWNrKCRldmVudCwgMilcIj57eyBiZWFjb24uYnV0dG9ucz8udHdvPy50ZXh0IH19PC9idXR0b24+PC9kaXY+XG5cdDwvZGl2PlxuXG5cdDxkaXYgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1mb290ZXJcIiAqbmdJZj1cImJlYWNvbi5idXR0b25zICYmIGJlYWNvbi5idXR0b25zPy5vbmUgJiYgIWJlYWNvbj8uYnV0dG9ucz8udHdvXCI+XG5cdFx0PGRpdiBbY2xhc3NdPVwiYmVhY29uLmJ1dHRvbnM/Lm9uZT8ucG9zaXRpb24gPyAoJ2JlYWNvbi1tZXNzYWdlLWJ1dHRvbi1jb250YWluZXItJyArIGJlYWNvbj8uYnV0dG9ucz8ub25lPy5wb3NpdGlvbikgOiAnJ1wiPlxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiYmVhY29uQnV0dG9uQ2xpY2soJGV2ZW50LCAxKVwiPnt7IGJlYWNvbi5idXR0b25zPy5vbmU/LnRleHQgfX08L2J1dHRvbj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cbjwvZGl2PiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhY29uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYmVhY29uL2JlYWNvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvbGliL2JlYWNvbi9iZWFjb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7OztBQVVoRSxNQUFNLE9BQU8scUJBQXFCO0lBS1o7SUFDVjtJQUxELE1BQU0sQ0FBZ0I7SUFDdkIsU0FBUyxDQUFjO0lBQ3hCLHFCQUFxQixDQUFXO0lBRXZDLFlBQW9CLGFBQWtDLEVBQzVDLFNBQXVCO1FBRGIsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQzVDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDL0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUE7SUFDMUUsQ0FBQztJQUVELFFBQVE7UUFDTixtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUM7WUFDNUMsS0FBSyxFQUFFLElBQUk7WUFDWCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsYUFBYTtRQUNiLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDekkseUNBQXlDO1FBQ3pDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMzQyxvQ0FBb0M7UUFDcEMs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bkNPLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxZQUFZO21IQUtiLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlYWNvbk5vdGlmeVNlcnZpY2UgfSBmcm9tICcuLi9iZWFjb24tbm90aWZ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgSUJlYWNvbkNvbmZpZywgSUJlYWNvbkV2ZW50TWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlYWNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9iZWFjb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iZWFjb24uY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJlYWNvbk5vdGlmeUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGJlYWNvbiE6IElCZWFjb25Db25maWdcbiAgcHJpdmF0ZSBiZWFjb25ET00hOiBIVE1MRWxlbWVudFxuICBwdWJsaWMgYmVhY29uRGVmYXVsdEljb25LZXlzITogc3RyaW5nW11cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJlYWNvblNlcnZpY2U6IEJlYWNvbk5vdGlmeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcil7XG4gICAgdGhpcy5iZWFjb25EZWZhdWx0SWNvbktleXMgPSB0aGlzLmJlYWNvblNlcnZpY2UuZ2V0QmVhY29uRGVmYXVsdEljb25LZXlzXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJlIG1vdW50IGV2ZW50XG4gICAgdGhpcy5iZWFjb25TZXJ2aWNlLmJlYWNvbkV2ZW50VGFza01hc3Rlci5lbWl0KHtcbiAgICAgIG1vdW50OiB0cnVlLFxuICAgICAgaWQ6IHRoaXMuYmVhY29uLmJpZFxuICAgIH0pXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gR2V0IGJlYWNvblxuICAgIGNvbnN0IGJlYWNvbiA9IHRoaXMuYmVhY29uRE9NID0gKHRoaXMuYmVhY29uU2VydmljZS5nZXRCZWFjb25Db250YWluZXIubmF0aXZlRWxlbWVudCB8fCBkb2N1bWVudCkucXVlcnlTZWxlY3RvcihgI2JjXyR7dGhpcy5iZWFjb24uYmlkfWApXG4gICAgLy8gUmVzb2x2ZSBmb250IHdlaWdodCBmb3IgdGl0bGUgYW5kIGJvZHlcbiAgICB0aGlzLnJlc29sdmVGb250V2VpZ2h0Rm9yQ29tcG9uZW50cyhiZWFjb24pXG4gICAgLy8gUmVzb2x2ZSBwb3NzaWJsZSBmb2N1cyBmb3IgYmVhY29uXG4gICAgdGhpcy5yZXNvbHZlUG9zc2libGVGb2N1c0ZvckJlYWNvbihiZWFjb24pXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBSZXNvbHZlIGRlbGF5IHNldHRpbmdcbiAgICAgIHRoaXMucmVzb2x2ZURlbGF5Rm9yQmVhY29uKGJlYWNvbiwgdHJ1ZSlcbiAgICAgIC8vIFNldCBiZWFjb24gbGlzdGVuZXJcbiAgICAgIHRoaXMuc2V0TGlzdGVuZXJGb3JCZWFjb24oYmVhY29uLCB0aGlzLmJlYWNvbilcblxuICAgICAgLy8gU2FuaXRpemUgc3ZnIGNvbnRlbnQgaWYgbm90IGZvbnQgaWNvblxuICAgICAgaWYgKHRoaXMuYmVhY29uLnN2Z0ljb24pIHtcbiAgICAgICAgY29uc3QgYmVhY29uU3ZnSWNvbiA9IGJlYWNvbi5xdWVyeVNlbGVjdG9yKCdzcGFuLmJlYWNvbi1tZXNzYWdlLXN2Zy1jb250cm9sIHN2ZycpXG4gICAgICAgIGJlYWNvblN2Z0ljb24uc3R5bGUud2lkdGggPSAnMjBweCdcbiAgICAgICAgYmVhY29uU3ZnSWNvbi5zdHlsZS5oZWlnaHQgPSAnMjBweCdcbiAgICAgICAgYmVhY29uU3ZnSWNvbi5zdHlsZS5tYXJnaW5SaWdodCA9ICc3cHgnXG4gICAgICAgIGJlYWNvblN2Z0ljb24uc3R5bGUubWFyZ2luVG9wID0gJy0ycHgnXG4gICAgICB9XG4gICAgfSwgMClcblxuICAgIC8vIExpc3RlbiBmb3IgZXZlbnRcbiAgICB0aGlzLmJlYWNvblNlcnZpY2UuYmVhY29uRXZlbnRUYXNrTWFzdGVyLnN1YnNjcmliZSgobWVzc2FnZTogSUJlYWNvbkV2ZW50TWVzc2FnZSkgPT4ge1xuICAgICAgLy8gQ2hlY2sgZm9yIG5leHQgZm9yIGZvY3VzIGV2ZW50XG4gICAgICBpZiAobWVzc2FnZS5hdXRvRGV0ZWN0TmV4dEZvY3VzQmVhY29uKVxuICAgICAgICB0aGlzLnJlc29sdmVQb3NzaWJsZUZvY3VzRm9yQmVhY29uKHRoaXMuYmVhY29uRE9NLCBmYWxzZSlcbiAgICB9KVxuICB9XG5cbiAgLy8gV2hlbiBiZWFjb24gYnV0dG9uIGlzIGNsaWNrZWRcbiAgYmVhY29uQnV0dG9uQ2xpY2soZTogRXZlbnQsIG5vOiBudW1iZXIpOiB2b2lkIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgc3dpdGNoIChubykge1xuICAgICAgY2FzZSAxOlxuICAgICAgICAvLyBDaGVjayBmb3IgY2FsbGJhY2tcbiAgICAgICAgaWYgKHRoaXMuYmVhY29uPy5idXR0b25zPy5vbmU/LmNhbGxiYWNrKVxuICAgICAgICAgIHRoaXMuYmVhY29uPy5idXR0b25zPy5vbmU/LmNhbGxiYWNrKC4uLih0aGlzLmJlYWNvbj8uYnV0dG9ucz8ub25lPy5jYWxsYmFja0FyZ3MgfHwgW10pKVxuICAgICAgICBcbiAgICAgICAgLy8gQ2hlY2sgaWYgY2FuIGRpc21pc3NcbiAgICAgICAgaWYgKHRoaXMuYmVhY29uPy5idXR0b25zPy5vbmU/LmNhbkRpc21pc3MpXG4gICAgICAgICAgdGhpcy5jbG9zZUJlYWNvbih0aGlzLmJlYWNvbkRPTSwgdGhpcy5iZWFjb24pXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI6XG4gICAgICAgIC8vIENoZWNrIGZvciBjYWxsYmFja1xuICAgICAgICBpZiAodGhpcy5iZWFjb24/LmJ1dHRvbnM/LnR3bz8uY2FsbGJhY2spXG4gICAgICAgICAgdGhpcy5iZWFjb24/LmJ1dHRvbnM/LnR3bz8uY2FsbGJhY2soLi4uKHRoaXMuYmVhY29uPy5idXR0b25zPy50d28/LmNhbGxiYWNrQXJncyB8fCBbXSkpXG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgY2FuIGRpc21pc3NcbiAgICAgICAgaWYgKHRoaXMuYmVhY29uPy5idXR0b25zPy50d28/LmNhbkRpc21pc3MpXG4gICAgICAgICAgdGhpcy5jbG9zZUJlYWNvbih0aGlzLmJlYWNvbkRPTSwgdGhpcy5iZWFjb24pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IGxpc3RlbmVyIGZvciBiZWFjb24gY2hhbmdlc1xuICBzZXRMaXN0ZW5lckZvckJlYWNvbihiZWFjb246IEVsZW1lbnQsIGJlYWNvbkRhdGE6IElCZWFjb25Db25maWcpOiB2b2lkIHtcbiAgICAoKGIsIGQpID0+IHtcbiAgICAgIGJlYWNvbj8uYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgKGUpID0+IHRoaXMuY2xvc2VCZWFjb24oYiwgZCkpXG4gICAgICBiZWFjb24/LmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdEFuaW1hdGlvbkVuZCcsIChlKSA9PiB0aGlzLmNsb3NlQmVhY29uKGIsIGQpKVxuICAgICAgYmVhY29uPy5hZGRFdmVudExpc3RlbmVyKCdvQW5pbWF0aW9uRW5kJywgKGUpID0+IHRoaXMuY2xvc2VCZWFjb24oYiwgZCkpXG4gICAgfSkoYmVhY29uLCBiZWFjb25EYXRhKVxuICB9XG5cbiAgLy8gVG9nZ2xlIGF1dG8tY2xvc2VcbiAgYXV0b0Nsb3NlKHN0YXR1czogYm9vbGVhbiwgY29udHJvbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBzdGF0dXNcbiAgICAgID8gKGNvbnRyb2wuZ2V0QXR0cmlidXRlKCdkYXRhLWJlYWNvbi1zdGF0aWMnKSAhPSAndHJ1ZScgJiYgdGhpcy5yZXNvbHZlRGVsYXlGb3JCZWFjb24oY29udHJvbCwgZmFsc2UpKVxuICAgICAgOiBjb250cm9sLmNsYXNzTGlzdC5yZW1vdmUoU3RyaW5nKHRoaXMuYmVhY29uLmFuaW1hdGlvbkNsYXNzKSlcbiAgfVxuXG4gIC8vIFJlc29sdmUgZGVsYXkgZm9yIGJlYWNvblxuICByZXNvbHZlRGVsYXlGb3JCZWFjb24oYmVhY29uOiBIVE1MRWxlbWVudCwgb25Mb2FkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIGRlbGF5IHNldFxuICAgIGlmICh0aGlzLmJlYWNvbi5zdGF0aWMgJiYgdHlwZW9mIHRoaXMuYmVhY29uLnN0YXRpYyA9PSAnbnVtYmVyJykge1xuICAgICAgYmVhY29uICYmIChiZWFjb24uc3R5bGUuYW5pbWF0aW9uRGVsYXkgPSB0aGlzLmJlYWNvbi5zdGF0aWMgKyAncycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvbkxvYWQgPT0gITEgJiYgdGhpcy5iZWFjb24/LmZpeGVkICE9IHRydWUpXG4gICAgICAgIGJlYWNvbi5jbGFzc0xpc3QuYWRkKFN0cmluZyh0aGlzLmJlYWNvbi5hbmltYXRpb25DbGFzcykpXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzb2x2ZSBmb250IHdlaWdodCBmb3IgdGl0bGUgYW5kIGJvZHlcbiAgcmVzb2x2ZUZvbnRXZWlnaHRGb3JDb21wb25lbnRzKGJlYWNvbjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0aXRsZTogSFRNTEVsZW1lbnQgPSBiZWFjb24ucXVlcnlTZWxlY3RvcignZGl2LmJlYWNvbi1tZXNzYWdlLWhlYWRlcicpXG4gICAgY29uc3QgYm9keTogSFRNTEVsZW1lbnQgPSBiZWFjb24ucXVlcnlTZWxlY3RvcignZGl2LmJlYWNvbi1tZXNzYWdlLWJvZHknKVxuICAgIHRpdGxlICYmICh0aXRsZS5zdHlsZS5mb250V2VpZ2h0ID0gdGhpcy5iZWFjb24uZm9udFdlaWdodFRpdGxlIHx8ICdib2xkJylcbiAgICBib2R5ICYmIChib2R5LnN0eWxlLmZvbnRXZWlnaHQgPSB0aGlzLmJlYWNvbi5mb250V2VpZ2h0Qm9keSB8fCAnYm9sZCcpXG4gIH1cblxuICAvLyBSZXNvbHZlIGZvY3VzIGJlYWNvblxuICByZXNvbHZlUG9zc2libGVGb2N1c0ZvckJlYWNvbihiZWFjb246IEhUTUxFbGVtZW50LCBjcmVhdGVPdmVybGF5OiBib29sZWFuID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZUZvY3VzQmVhY29uSWQgPSB0aGlzLmJlYWNvblNlcnZpY2UuZ2V0QWN0aXZlRm9jdXNCZWFjb25JZFxuICAgIGlmIChhY3RpdmVGb2N1c0JlYWNvbklkID09IHRoaXMuYmVhY29uLmJpZCkge1xuICAgICAgYmVhY29uLnN0eWxlLnpJbmRleCA9ICc5MDAzJ1xuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiBiZWFjb24gc2hvdWxkIGJlIGNlbnRlcmVkXG4gICAgICBpZiAodGhpcy5iZWFjb24uc2hpbmUpIHtcbiAgICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLmJlYWNvbi5zaGluZVNjYWxlICYmIFN0cmluZyh0aGlzLmJlYWNvbi5zaGluZVNjYWxlKS5tYXRjaCgvKFxcZCspXFwuKFxcZCspLykgPyB0aGlzLmJlYWNvbi5zaGluZVNjYWxlIDogJzEuNSdcbiAgICAgICAgYmVhY29uLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgICAgICBiZWFjb24uc3R5bGUucmlnaHQgPSAnMCdcbiAgICAgICAgYmVhY29uLnN0eWxlLmxlZnQgPSAnMCdcbiAgICAgICAgYmVhY29uLnN0eWxlLmJvdHRvbSA9ICc1MCUnXG4gICAgICAgIGJlYWNvbi5zdHlsZS5tYXJnaW4gPSAnYXV0bydcbiAgICAgICAgYmVhY29uLnN0eWxlLnRyYW5zZm9ybSA9ICdzY2FsZSgnICsgc2NhbGUgKyAnKSdcbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIG92ZXJsYXlcbiAgICAgIGlmIChjcmVhdGVPdmVybGF5KVxuICAgICAgICB0aGlzLmJlYWNvblNlcnZpY2UuY3JlYXRlQmVhY29uRm9jdXNPdmVybGF5KHRoaXMuYmVhY29uLm92ZXJsYXlDb2xvcilcbiAgICAgIGVsc2UgdGhpcy5iZWFjb25TZXJ2aWNlLnJlcGFpbnRCZWFjb25Gb2N1c092ZXJsYXkodGhpcy5iZWFjb24ub3ZlcmxheUNvbG9yKVxuICAgIH1cbiAgfVxuXG4gIC8vIFRyaWdnZXIgY2xvc2UgYmVhY29uXG4gIGNsb3NlQmVhY29uKGJlYWNvbkNvbnRyb2w6IGFueSwgYmVhY29uRGF0YTogSUJlYWNvbkNvbmZpZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5iZWFjb24/LmZpeGVkKSB7XG4gICAgICB0aGlzLmJlYWNvblNlcnZpY2UuYmVhY29uRXZlbnRUYXNrTWFzdGVyLmVtaXQoe1xuICAgICAgICBkZWxldGU6IHRydWUsXG4gICAgICAgIGlkOiBiZWFjb25Db250cm9sLmdldEF0dHJpYnV0ZSgnaWQnKS5yZXBsYWNlKC9iY18vLCAnJylcbiAgICAgIH0pXG4gICAgfVxuICB9XG59XG4iLCI8ZGl2ICNiZWFjb25Db250cm9sIFxuXHRcdFtpZF09XCInYmNfJyArIGJlYWNvbi5iaWRcIlxuXHRcdChtb3VzZWVudGVyKT1cImF1dG9DbG9zZShmYWxzZSwgYmVhY29uQ29udHJvbClcIiBcblx0XHQobW91c2VsZWF2ZSk9XCJhdXRvQ2xvc2UodHJ1ZSwgYmVhY29uQ29udHJvbClcIlxuXHRcdChjbGljayk9XCJiZWFjb24ucHJldmVudENsaWNrQ2xvc2UgPyBudWxsIDogY2xvc2VCZWFjb24oYmVhY29uQ29udHJvbCwgYmVhY29uKVwiXG5cdFx0W2F0dHIuZGF0YS1iZWFjb24tc3RhdGljXT1cImJlYWNvbi5zdGF0aWNcIlxuXHRcdGNsYXNzPVwiYmVhY29uLW1lc3NhZ2UtY29udHJvbCB7eyAoYmVhY29uLnN0YXRpYyAhPT0gdHJ1ZSAmJiBiZWFjb24uZml4ZWQgIT09IHRydWUpID8gYmVhY29uLmFuaW1hdGlvbkNsYXNzIDogJycgfX0ge3sgYmVhY29uLnJlcGxhY2VtZW50Q2xhc3MgfHwgYmVhY29uLnR5cGUgfX0ge3sgYmVhY29uLnN0eWxlQ2xhc3MgfX1cIlxuXHRcdFtjbGFzcy5iZWFjb24tbWVzc2FnZS1jb250cm9sLW5vLWhvdmVyLWVmZmVjdF09XCJiZWFjb24ubm9Ib3ZlckVmZmVjdFwiPlxuXHQ8ZGl2IGNsYXNzPVwiYmVhY29uLW1lc3NhZ2UtaGVhZGVyXCI+XG5cdFx0PGRpdj5cblx0XHRcdDxzcGFuICpuZ0lmPVwiYmVhY29uLmZvbnRJY29uXCI+PGkgW2NsYXNzXT1cImJlYWNvbi5pY29uXCI+PC9pPjwvc3Bhbj5cblx0XHRcdDxzcGFuICpuZ0lmPVwiIWJlYWNvbi5mb250SWNvbiAmJiBiZWFjb25EZWZhdWx0SWNvbktleXMuaW5jbHVkZXMoYmVhY29uLmljb24pXCIgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1zdmctY29udHJvbFwiPlxuXHRcdFx0XHQ8YXBwLWJlYWNvbi1pY29uLWFsZXJ0ICpuZ0lmPVwiYmVhY29uLmljb24gfCBiZWFjb25UeXBlUmVzb2x2ZTonYWxlcnQnXCI+PC9hcHAtYmVhY29uLWljb24tYWxlcnQ+XG5cdFx0XHRcdDxhcHAtYmVhY29uLWljb24tZXJyb3IgKm5nSWY9XCJiZWFjb24uaWNvbiB8IGJlYWNvblR5cGVSZXNvbHZlOidlcnJvcidcIj48L2FwcC1iZWFjb24taWNvbi1lcnJvcj5cblx0XHRcdFx0PGFwcC1iZWFjb24taWNvbi1pbmZvICpuZ0lmPVwiYmVhY29uLmljb24gfCBiZWFjb25UeXBlUmVzb2x2ZTonaW5mbydcIj48L2FwcC1iZWFjb24taWNvbi1pbmZvPlxuXHRcdFx0XHQ8YXBwLWJlYWNvbi1pY29uLXN1Y2Nlc3MgKm5nSWY9XCJiZWFjb24uaWNvbiB8IGJlYWNvblR5cGVSZXNvbHZlOidzdWNjZXNzJ1wiPjwvYXBwLWJlYWNvbi1pY29uLXN1Y2Nlc3M+XG5cdFx0XHRcdDxhcHAtYmVhY29uLWljb24td2FybmluZyAqbmdJZj1cImJlYWNvbi5pY29uIHwgYmVhY29uVHlwZVJlc29sdmU6J3dhcm5pbmcnXCI+PC9hcHAtYmVhY29uLWljb24td2FybmluZz5cblx0XHRcdDwvc3Bhbj5cblx0XHRcdDxzcGFuICpuZ0lmPVwiIWJlYWNvbi5mb250SWNvbiAmJiBiZWFjb24uaWNvbiAmJiAhYmVhY29uRGVmYXVsdEljb25LZXlzLmluY2x1ZGVzKGJlYWNvbi5pY29uKVwiIGNsYXNzPVwiYmVhY29uLW1lc3NhZ2Utc3ZnLWNvbnRyb2xcIiBbaW5uZXJIVE1MXT1cImJlYWNvbi5zdmdJY29uXCI+PC9zcGFuPlxuXHRcdFx0PHNwYW4gY2xhc3M9XCJiZWFjb24tbWVzc2FnZS10aXRsZVwiPnt7IGJlYWNvbi50aXRsZSB9fTwvc3Bhbj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2PlxuXHRcdFx0PGRpdiAqbmdJZj1cIiFiZWFjb24uZml4ZWRcIiBjbGFzcz1cImJlYWNvbi1tZXNzYWdlLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlQmVhY29uKGJlYWNvbkNvbnRyb2wsIGJlYWNvbilcIj5cblx0XHRcdFx0PHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDc4IDc4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG5cdFx0XHQgICAgPHJlY3QgeT1cIjcuMDcxMDRcIiB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTAwXCIgcng9XCI1XCIgdHJhbnNmb3JtPVwicm90YXRlKC00NSAwIDcuMDcxMDQpXCIgLz5cblx0XHRcdCAgICA8cmVjdCB4PVwiNzAuNzEwOVwiIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMDBcIiByeD1cIjVcIiB0cmFuc2Zvcm09XCJyb3RhdGUoNDUgNzAuNzEwOSAwKVwiIC8+XG5cdFx0XHRcdDwvc3ZnPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiYmVhY29uLW1lc3NhZ2UtZGl2aWRlclwiPjwvZGl2PlxuXHQ8ZGl2IGNsYXNzPVwiYmVhY29uLW1lc3NhZ2UtYm9keVwiIFtpbm5lckhUTUxdPVwiYmVhY29uLmJvZHlIdG1sXCI+PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJiZWFjb24tbWVzc2FnZS1kaXZpZGVyXCIgKm5nSWY9XCJiZWFjb24uYnV0dG9ucz8ub25lIHx8IGJlYWNvbi5idXR0b25zPy50d29cIj48L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiYmVhY29uLW1lc3NhZ2UtZm9vdGVyXCIgKm5nSWY9XCJiZWFjb24uYnV0dG9ucyAmJiBiZWFjb24uYnV0dG9ucz8ub25lICYmIGJlYWNvbi5idXR0b25zPy50d29cIj5cblx0XHQ8ZGl2PjxidXR0b24gKGNsaWNrKT1cImJlYWNvbkJ1dHRvbkNsaWNrKCRldmVudCwgMSlcIj57eyBiZWFjb24uYnV0dG9ucz8ub25lPy50ZXh0IH19PC9idXR0b24+PC9kaXY+XG5cdFx0PGRpdj48YnV0dG9uIChjbGljayk9XCJiZWFjb25CdXR0b25DbGljaygkZXZlbnQsIDIpXCI+e3sgYmVhY29uLmJ1dHRvbnM/LnR3bz8udGV4dCB9fTwvYnV0dG9uPjwvZGl2PlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiYmVhY29uLW1lc3NhZ2UtZm9vdGVyXCIgKm5nSWY9XCJiZWFjb24uYnV0dG9ucyAmJiBiZWFjb24uYnV0dG9ucz8ub25lICYmICFiZWFjb24/LmJ1dHRvbnM/LnR3b1wiPlxuXHRcdDxkaXYgW2NsYXNzXT1cImJlYWNvbi5idXR0b25zPy5vbmU/LnBvc2l0aW9uID8gKCdiZWFjb24tbWVzc2FnZS1idXR0b24tY29udGFpbmVyLScgKyBiZWFjb24/LmJ1dHRvbnM/Lm9uZT8ucG9zaXRpb24pIDogJydcIj5cblx0XHRcdDxidXR0b24gKGNsaWNrKT1cImJlYWNvbkJ1dHRvbkNsaWNrKCRldmVudCwgMSlcIj57eyBiZWFjb24uYnV0dG9ucz8ub25lPy50ZXh0IH19PC9idXR0b24+XG5cdFx0PC9kaXY+XG5cdDwvZGl2PlxuXG48L2Rpdj4iXX0=
@@ -10,7 +10,6 @@ import { BeaconIconErrorComponent } from './icons/beacon-icon-error/beacon-icon-
10
10
  import { BeaconIconInfoComponent } from './icons/beacon-icon-info/beacon-icon-info.component';
11
11
  import { BeaconIconWarningComponent } from './icons/beacon-icon-warning/beacon-icon-warning.component';
12
12
  import { BeaconTypeResolvePipe } from './pipes/beacon-type-resolve.pipe';
13
- import { WINDOW_PROVIDERS } from './types/constants/window';
14
13
  import * as i0 from "@angular/core";
15
14
  export class BeaconNotifyModule {
16
15
  static forRoot(config) {
@@ -18,8 +17,7 @@ export class BeaconNotifyModule {
18
17
  ngModule: BeaconNotifyModule,
19
18
  providers: [
20
19
  { provide: BEACON_GLOBAL_CONFIG, useValue: config },
21
- BeaconNotifyService,
22
- WINDOW_PROVIDERS
20
+ BeaconNotifyService
23
21
  ]
24
22
  };
25
23
  }
@@ -57,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
57
55
  ]
58
56
  }]
59
57
  }] });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhY29uLW5vdGlmeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2JlYWNvbi1ub3RpZnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQXVCLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQXFCNUQsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTRCO1FBQ3pDLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUNuRCxtQkFBbUI7Z0JBQ25CLGdCQUFnQjthQUNqQjtTQUNGLENBQUE7SUFDSCxDQUFDO3VHQVZVLGtCQUFrQjt3R0FBbEIsa0JBQWtCLGlCQWpCM0IscUJBQXFCO1lBQ3JCLDhCQUE4QjtZQUM5Qix3QkFBd0I7WUFDeEIsd0JBQXdCO1lBQ3hCLHVCQUF1QjtZQUN2QiwwQkFBMEI7WUFDMUIsMEJBQTBCO1lBQzFCLHFCQUFxQixhQUdyQixZQUFZLGFBR1oscUJBQXFCO1lBQ3JCLDhCQUE4Qjt3R0FHckIsa0JBQWtCLFlBUDNCLFlBQVk7OzJGQU9ILGtCQUFrQjtrQkFuQjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLHFCQUFxQjt3QkFDckIsOEJBQThCO3dCQUM5Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AscUJBQXFCO3dCQUNyQiw4QkFBOEI7cUJBQy9CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIE1vZHVsZVdpdGhQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQmVhY29uTm90aWZ5Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb250YWluZXIvY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlYWNvbk5vdGlmeUNvbXBvbmVudCB9IGZyb20gJy4vYmVhY29uL2JlYWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQmVhY29uR2xvYmFsQ29uZmlnLCBCRUFDT05fR0xPQkFMX0NPTkZJRyB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBCZWFjb25Ob3RpZnlTZXJ2aWNlIH0gZnJvbSAnLi9iZWFjb24tbm90aWZ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWFjb25JY29uU3VjY2Vzc0NvbXBvbmVudCB9IGZyb20gJy4vaWNvbnMvYmVhY29uLWljb24tc3VjY2Vzcy9iZWFjb24taWNvbi1zdWNjZXNzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlYWNvbkljb25BbGVydENvbXBvbmVudCB9IGZyb20gJy4vaWNvbnMvYmVhY29uLWljb24tYWxlcnQvYmVhY29uLWljb24tYWxlcnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVhY29uSWNvbkVycm9yQ29tcG9uZW50IH0gZnJvbSAnLi9pY29ucy9iZWFjb24taWNvbi1lcnJvci9iZWFjb24taWNvbi1lcnJvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWFjb25JY29uSW5mb0NvbXBvbmVudCB9IGZyb20gJy4vaWNvbnMvYmVhY29uLWljb24taW5mby9iZWFjb24taWNvbi1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlYWNvbkljb25XYXJuaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9pY29ucy9iZWFjb24taWNvbi13YXJuaW5nL2JlYWNvbi1pY29uLXdhcm5pbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVhY29uVHlwZVJlc29sdmVQaXBlIH0gZnJvbSAnLi9waXBlcy9iZWFjb24tdHlwZS1yZXNvbHZlLnBpcGUnO1xyXG5pbXBvcnQgeyBXSU5ET1dfUFJPVklERVJTIH0gZnJvbSAnLi90eXBlcy9jb25zdGFudHMvd2luZG93JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBCZWFjb25Ob3RpZnlDb21wb25lbnQsXHJcbiAgICBCZWFjb25Ob3RpZnlDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBCZWFjb25JY29uQWxlcnRDb21wb25lbnQsXHJcbiAgICBCZWFjb25JY29uRXJyb3JDb21wb25lbnQsXHJcbiAgICBCZWFjb25JY29uSW5mb0NvbXBvbmVudCxcclxuICAgIEJlYWNvbkljb25TdWNjZXNzQ29tcG9uZW50LFxyXG4gICAgQmVhY29uSWNvbldhcm5pbmdDb21wb25lbnQsXHJcbiAgICBCZWFjb25UeXBlUmVzb2x2ZVBpcGVcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQmVhY29uTm90aWZ5Q29tcG9uZW50LFxyXG4gICAgQmVhY29uTm90aWZ5Q29udGFpbmVyQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmVhY29uTm90aWZ5TW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBJQmVhY29uR2xvYmFsQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxCZWFjb25Ob3RpZnlNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBCZWFjb25Ob3RpZnlNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogQkVBQ09OX0dMT0JBTF9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSxcclxuICAgICAgICBCZWFjb25Ob3RpZnlTZXJ2aWNlLFxyXG4gICAgICAgIFdJTkRPV19QUk9WSURFUlNcclxuICAgICAgXVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhY29uLW5vdGlmeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2JlYWNvbi1ub3RpZnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQXVCLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQXFCekUsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTRCO1FBQ3pDLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUNuRCxtQkFBbUI7YUFDcEI7U0FDRixDQUFBO0lBQ0gsQ0FBQzt1R0FUVSxrQkFBa0I7d0dBQWxCLGtCQUFrQixpQkFqQjNCLHFCQUFxQjtZQUNyQiw4QkFBOEI7WUFDOUIsd0JBQXdCO1lBQ3hCLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsMEJBQTBCO1lBQzFCLDBCQUEwQjtZQUMxQixxQkFBcUIsYUFHckIsWUFBWSxhQUdaLHFCQUFxQjtZQUNyQiw4QkFBOEI7d0dBR3JCLGtCQUFrQixZQVAzQixZQUFZOzsyRkFPSCxrQkFBa0I7a0JBbkI5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixxQkFBcUI7d0JBQ3JCLDhCQUE4Qjt3QkFDOUIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQiwwQkFBMEI7d0JBQzFCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHFCQUFxQjt3QkFDckIsOEJBQThCO3FCQUMvQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEJlYWNvbk5vdGlmeUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWFjb25Ob3RpZnlDb21wb25lbnQgfSBmcm9tICcuL2JlYWNvbi9iZWFjb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUJlYWNvbkdsb2JhbENvbmZpZywgQkVBQ09OX0dMT0JBTF9DT05GSUcgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVhY29uTm90aWZ5U2VydmljZSB9IGZyb20gJy4vYmVhY29uLW5vdGlmeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVhY29uSWNvblN1Y2Nlc3NDb21wb25lbnQgfSBmcm9tICcuL2ljb25zL2JlYWNvbi1pY29uLXN1Y2Nlc3MvYmVhY29uLWljb24tc3VjY2Vzcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWFjb25JY29uQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2ljb25zL2JlYWNvbi1pY29uLWFsZXJ0L2JlYWNvbi1pY29uLWFsZXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlYWNvbkljb25FcnJvckNvbXBvbmVudCB9IGZyb20gJy4vaWNvbnMvYmVhY29uLWljb24tZXJyb3IvYmVhY29uLWljb24tZXJyb3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmVhY29uSWNvbkluZm9Db21wb25lbnQgfSBmcm9tICcuL2ljb25zL2JlYWNvbi1pY29uLWluZm8vYmVhY29uLWljb24taW5mby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCZWFjb25JY29uV2FybmluZ0NvbXBvbmVudCB9IGZyb20gJy4vaWNvbnMvYmVhY29uLWljb24td2FybmluZy9iZWFjb24taWNvbi13YXJuaW5nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEJlYWNvblR5cGVSZXNvbHZlUGlwZSB9IGZyb20gJy4vcGlwZXMvYmVhY29uLXR5cGUtcmVzb2x2ZS5waXBlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBCZWFjb25Ob3RpZnlDb21wb25lbnQsXHJcbiAgICBCZWFjb25Ob3RpZnlDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBCZWFjb25JY29uQWxlcnRDb21wb25lbnQsXHJcbiAgICBCZWFjb25JY29uRXJyb3JDb21wb25lbnQsXHJcbiAgICBCZWFjb25JY29uSW5mb0NvbXBvbmVudCxcclxuICAgIEJlYWNvbkljb25TdWNjZXNzQ29tcG9uZW50LFxyXG4gICAgQmVhY29uSWNvbldhcm5pbmdDb21wb25lbnQsXHJcbiAgICBCZWFjb25UeXBlUmVzb2x2ZVBpcGVcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgQmVhY29uTm90aWZ5Q29tcG9uZW50LFxyXG4gICAgQmVhY29uTm90aWZ5Q29udGFpbmVyQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmVhY29uTm90aWZ5TW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBJQmVhY29uR2xvYmFsQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxCZWFjb25Ob3RpZnlNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBCZWFjb25Ob3RpZnlNb2R1bGUsXHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogQkVBQ09OX0dMT0JBTF9DT05GSUcsIHVzZVZhbHVlOiBjb25maWcgfSxcclxuICAgICAgICBCZWFjb25Ob3RpZnlTZXJ2aWNlXHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -1,11 +1,10 @@
1
1
  import { Injectable, Inject, EventEmitter } from '@angular/core';
2
2
  import { BEACON_GLOBAL_CONFIG, BEACON_OVERLAY_COLOR, BEACON_OVERLAY_ID, BEACON_TYPE_KEYS } from './types';
3
- import { WINDOW } from './types/constants/window';
3
+ import { Buffer } from 'buffer';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/platform-browser";
6
6
  export class BeaconNotifyService {
7
7
  sanitizer;
8
- window;
9
8
  globalConfig;
10
9
  beaconDefaultIconKeys = BEACON_TYPE_KEYS;
11
10
  beaconConfigMap = {
@@ -64,9 +63,8 @@ export class BeaconNotifyService {
64
63
  beaconEventTaskMaster = new EventEmitter();
65
64
  beaconLibrary = [];
66
65
  beaconLibraryQueue = [];
67
- constructor(sanitizer, window, globalConfig) {
66
+ constructor(sanitizer, globalConfig) {
68
67
  this.sanitizer = sanitizer;
69
- this.window = window;
70
68
  this.globalConfig = globalConfig;
71
69
  this.globalConfig && this.resolveGlobalConfig(this.globalConfig);
72
70
  // Resolve events
@@ -442,7 +440,7 @@ export class BeaconNotifyService {
442
440
  // create notification beacon
443
441
  beacon(message, type) {
444
442
  // Get signature
445
- const signature = this.window?.btoa((this.beaconTitle || this.beaconConfigMap[type].title) + '.' + message);
443
+ const signature = Buffer.from((this.beaconTitle || this.beaconConfigMap[type].title) + '.' + message).toString('base64');
446
444
  // Generate beacon id
447
445
  const beaconId = this.getId;
448
446
  // Register beacon in event library
@@ -606,10 +604,9 @@ export class BeaconNotifyService {
606
604
  // Check for possible duplicate
607
605
  isNewBeaconADuplicate(signature) {
608
606
  const duplicate = this.beaconLibrary.find(x => x.signature == signature);
609
- const beacon = this.beaconContainer.nativeElement.querySelector(`div#bc_${duplicate?.bid}`);
610
- return Boolean(beacon && this.window?.getComputedStyle(beacon).opacity == '1');
607
+ return Boolean(duplicate);
611
608
  }
612
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BeaconNotifyService, deps: [{ token: i1.DomSanitizer }, { token: WINDOW }, { token: BEACON_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
609
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BeaconNotifyService, deps: [{ token: i1.DomSanitizer }, { token: BEACON_GLOBAL_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
613
610
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BeaconNotifyService, providedIn: 'root' });
614
611
  }
615
612
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: BeaconNotifyService, decorators: [{
@@ -618,10 +615,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
618
615
  providedIn: 'root'
619
616
  }]
620
617
  }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: undefined, decorators: [{
621
- type: Inject,
622
- args: [WINDOW]
623
- }] }, { type: undefined, decorators: [{
624
618
  type: Inject,
625
619
  args: [BEACON_GLOBAL_CONFIG]
626
620
  }] }] });
627
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhY29uLW5vdGlmeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9iZWFjb24tbm90aWZ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBR3hGLE9BQU8sRUFXTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDakIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFLbEQsTUFBTSxPQUFPLG1CQUFtQjtJQTJEVjtJQUNNO0lBQ2M7SUE1RGhDLHFCQUFxQixHQUFHLGdCQUFnQixDQUFBO0lBQ3hDLGVBQWUsR0FBaUQ7UUFDdEUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1FBQ3pKLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtRQUN6SixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHFCQUFx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OUIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHO2FBQ1YsQ0FBQyxDQUFBO1lBRUYsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ2pCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELCtCQUErQjtJQUN2QixxQkFBcUIsQ0FBQyxTQUFpQjtRQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLENBQUE7UUFDeEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7UUFDM0YsT0FBTyxPQUFPLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFBO0lBQ2hGLENBQUM7dUdBcHBCVSxtQkFBbUIsOENBNERwQixNQUFNLGFBQ04sb0JBQW9COzJHQTdEbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQTZESSxNQUFNOzJCQUFDLE1BQU07OzBCQUNiLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQmVhY29uTm90aWZ5Q29tcG9uZW50IH0gZnJvbSAnLi9iZWFjb24vYmVhY29uLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBJQmVhY29uQ29uZmlnLFxuICBJQmVhY29uSW5saW5lQ29uZmlnLFxuICBJQmVhY29uR2xvYmFsQ29uZmlnLFxuICBJQmVhY29uVHlwZSxcbiAgSUJlYWNvblBvc2l0aW9uQ29uZmlnLFxuICBJQmVhY29uRXZlbnQsXG4gIElCZWFjb25XYXRjaGVkRXZlbnQsXG4gIElCZWFjb25FdmVudE1lc3NhZ2UsXG4gIElCZWFjb25UeXBlSWNvbixcbiAgSUJlYWNvbkJ1dHRvblR5cGUsXG4gIEJFQUNPTl9HTE9CQUxfQ09ORklHLFxuICBCRUFDT05fT1ZFUkxBWV9DT0xPUixcbiAgQkVBQ09OX09WRVJMQVlfSUQsXG4gIEJFQUNPTl9UWVBFX0tFWVNcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICcuL3R5cGVzL2NvbnN0YW50cy93aW5kb3cnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBiZWFjb25EZWZhdWx0SWNvbktleXMgPSBCRUFDT05fVFlQRV9LRVlTXG4gIHByaXZhdGUgYmVhY29uQ29uZmlnTWFwOiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfSA9IHtcbiAgICBhbGVydDogeyBpY29uOiB0aGlzLmJlYWNvbkRlZmF1bHRJY29uS2V5c1swXSwgZm9udEljb246ICdmYWxzZScsIGNsYXNzOiAnYmVhY29uLW1lc3NhZ2UtYWxlcnQnLCB0aXRsZTogJ0FsZXJ0Jywgc3R5bGU6ICcnLCBhbmltYXRpb246ICcnLCB0eXBlOiAnYWxlcnQnIH0sXG4gICAgZXJyb3I6IHsgaWNvbjogdGhpcy5iZWFjb25EZWZhdWx0SWNvbktleXNbMV0sIGZvbnRJY29uOiAnZmFsc2UnLCBjbGFzczogJ2JlYWNvbi1tZXNzYWdlLWVycm9yJywgdGl0bGU6ICdFcnJvcicsIHN0eWxlOiAnJywgYW5pbWF0aW9uOiAnJywgdHlwZTogJ2Vycm9yJyB9LFxuICAgIGluZm86IHsgaWNvbjogdGhpcy5iZWFjb25EZWZhdWx0SWNvbktleXNbMl0sIGZvbnRJY29uOiAnZmFsc2UnLCBjbGFzczogJ2JlYWNvbi1tZXNzYWdlLWluZm8nLCB0aXRsZTogJ0luZm9ybWF0aW9uJywgc3R5bGU6ICcnLCBhbmltYXRpb246ICcnLCB0eXBlOiAnaW5mbycgfSxcbiAgICBzdWNjZXNzOiB7IGljb246IHRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzWzNdLCBmb250SWNvbjogJ2ZhbHNlJywgY2xhc3M6ICdiZWFjb24tbWVzc2FnZS1zdWNjZXNzJywgdGl0bGU6ICdTdWNjZXNzJywgc3R5bGU6ICcnLCBhbmltYXRpb246ICcnLCB0eXBlOiAnc3VjY2VzcycgfSxcbiAgICB3YXJuaW5nOiB7IGljb246IHRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzWzRdLCBmb250SWNvbjogJ2ZhbHNlJywgY2xhc3M6ICdiZWFjb24tbWVzc2FnZS13YXJuaW5nJywgdGl0bGU6ICdXYXJuaW5nJywgc3R5bGU6ICcnLCBhbmltYXRpb246ICcnLCB0eXBlOiAnd2FybmluZycgfVxuICB9XG4gIHByaXZhdGUgYmVhY29uVHlwZU1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICBhOiAnc3VjY2VzcycsIGI6ICdlcnJvcicsIGM6ICd3YXJuaW5nJywgZDogJ2luZm8nLCBlOiAnYWxlcnQnXG4gIH1cbiAgcHJpdmF0ZSBiZWFjb25UaXRsZT86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvbk1lc3NhZ2U/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25JY29uPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uTWFudWFsSWQ/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25TZWxlY3RlZE1hbnVhbElkPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uSWNvbkZyb21Gb250PzogdHJ1ZVxuICBwcml2YXRlIGJlYWNvblN0YXRpYz86IHRydWUgfCBudW1iZXJcbiAgcHJpdmF0ZSBiZWFjb25GaXhlZD86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25CbG9ja090aGVycz86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25QcmV2ZW50Q2xpY2tDbG9zZT86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25BbGxvd0R1cGxpY2F0ZT86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25Gb2N1cz86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25Gb2N1c1NoaW5lPzogdHJ1ZVxuICBwcml2YXRlIGJlYWNvbkZvY3VzU2hpbmVTY2FsZT86IG51bWJlclxuICBwcml2YXRlIGJlYWNvbk92ZXJsYXlDb2xvcj86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvblN0eWxlQ2xhc3M/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25SZXBsYWNlbWVudENsYXNzPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uQW5pbWF0aW9uQ2xhc3M/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25Ob0hvdmVyRWZmZWN0PzogdHJ1ZVxuICBwcml2YXRlIGJlYWNvbkZvbnRXZWlnaHRUaXRsZT86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvbkZvbnRXZWlnaHRCb2R5Pzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uR2xvYmFsU3RhdGljPzogdHJ1ZSB8IG51bWJlclxuICBwcml2YXRlIGJlYWNvbkdsb2JhbEZpeGVkPzogdHJ1ZVxuICBwcml2YXRlIGJlYWNvbkdsb2JhbEJsb2NrT3RoZXJzPzogdHJ1ZVxuICBwcml2YXRlIGJlYWNvbkdsb2JhbFByZXZlbnRDbGlja0Nsb3NlPzogdHJ1ZVxuICBwcml2YXRlIGJlYWNvbkdsb2JhbER1cGxpY2F0ZT86IGJvb2xlYW5cbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxOb0hvdmVyRWZmZWN0PzogdHJ1ZVxuICBwcml2YXRlIGJlYWNvbkdsb2JhbEZvY3VzU2hpbmVTY2FsZT86IG51bWJlclxuICBwcml2YXRlIGJlYWNvbkdsb2JhbFBvc2l0aW9uaW5nPzogSUJlYWNvblBvc2l0aW9uQ29uZmlnXG4gIHByaXZhdGUgYmVhY29uR2xvYmFsRm9jdXNPdmVybGF5Q29sb3I/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxGb250V2VpZ2h0VGl0bGU/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxGb250V2VpZ2h0Qm9keT86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvbkNvbnRhaW5lciE6IEVsZW1lbnRSZWZcbiAgcHJpdmF0ZSBiZWFjb25EZWZhdWx0QW5pbWF0aW9uQ2xhc3NOYW1lOiBzdHJpbmcgPSAnYmVhY29uLW1lc3NhZ2UtY29udHJvbC1hbmltYXRlJ1xuICBwcml2YXRlIGJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQ/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25XaXRoQWN0aXZlRm9jdXNBdXRvSWQ/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25CdXR0b25zOiBJQmVhY29uQnV0dG9uVHlwZSA9IHt9XG4gIHByaXZhdGUgYmVhY29uRm9jdXNPcmRlckxpYnJhcnk6IEFycmF5PHN0cmluZz4gPSBbXVxuICBwcml2YXRlIGJlYWNvblN1YnNjcmliZWRFdmVudExpYnJhcnk6IHsgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBFdmVudEVtaXR0ZXI8SUJlYWNvbkV2ZW50PiB9IH0gPSB7fVxuICBwcml2YXRlIGJlYWNvbldhdGNoZWRFdmVudExpYnJhcnk6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXSlcbiAgcHJpdmF0ZSBiZWFjb25XYXRjaGVkRXZlbnRUYXNrTWFzdGVyOiBFdmVudEVtaXR0ZXI8SUJlYWNvbldhdGNoZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElCZWFjb25XYXRjaGVkRXZlbnQ+KClcbiAgcHJpdmF0ZSBiZWFjb25BbGxFdmVudFRhc2tNYXN0ZXI6IEV2ZW50RW1pdHRlcjxJQmVhY29uV2F0Y2hlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SUJlYWNvbldhdGNoZWRFdmVudD4oKVxuICBwcml2YXRlIGJlYWNvbkZvY3VzT3ZlcmxheURPTT86IEhUTUxFbGVtZW50XG4gIHB1YmxpYyBiZWFjb25FdmVudFRhc2tNYXN0ZXI6IEV2ZW50RW1pdHRlcjx7IFtrZXk6IHN0cmluZ106IGJvb2xlYW58IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBib29sZWFuIHwgc3RyaW5nIH0+KClcbiAgcHVibGljIGJlYWNvbkxpYnJhcnk6IEFycmF5PElCZWFjb25Db25maWc+ID0gW11cbiAgcHVibGljIGJlYWNvbkxpYnJhcnlRdWV1ZTogQXJyYXk8SUJlYWNvbkNvbmZpZz4gPSBbXVxuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBASW5qZWN0KFdJTkRPVykgcHJpdmF0ZSB3aW5kb3csXG4gICAgQEluamVjdChCRUFDT05fR0xPQkFMX0NPTkZJRykgcHJpdmF0ZSBnbG9iYWxDb25maWc/OiBJQmVhY29uR2xvYmFsQ29uZmlnKSB7XG4gICAgdGhpcy5nbG9iYWxDb25maWcgJiYgdGhpcy5yZXNvbHZlR2xvYmFsQ29uZmlnKHRoaXMuZ2xvYmFsQ29uZmlnKVxuICAgIC8vIFJlc29sdmUgZXZlbnRzXG4gICAgdGhpcy5yZXNvbHZlQmVhY29uRXZlbnRzKClcbiAgfVxuXG4gIC8vIFJlc29sdmUgZ2xvYmFsIGNvbmZpZ1xuICBwcml2YXRlIHJlc29sdmVHbG9iYWxDb25maWcoZ2xvYmFsQ29uZmlnOiBJQmVhY29uR2xvYmFsQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKGdsb2JhbENvbmZpZy5zdGF0aWMpIHtcbiAgICAgIGlmICh0eXBlb2YgZ2xvYmFsQ29uZmlnLnN0YXRpYyA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5iZWFjb25HbG9iYWxGaXhlZCA9IHVuZGVmaW5lZFxuICAgICAgICB0aGlzLmJlYWNvbkdsb2JhbFN0YXRpYyA9IHRydWVcbiAgICAgIH0gZWxzZSB0aGlzLmJlYWNvbkdsb2JhbFN0YXRpYyA9IGdsb2JhbENvbmZpZy5zdGF0aWNcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsQ29uZmlnLmZpeGVkKSB7XG4gICAgICB0aGlzLmJlYWNvbkdsb2JhbFN0YXRpYyA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy5iZWFjb25HbG9iYWxGaXhlZCA9IHRydWVcbiAgICB9XG5cbiAgICBnbG9iYWxDb25maWcucHJldmVudENsaWNrQ2xvc2UgJiYgKHRoaXMuYmVhY29uR2xvYmFsUHJldmVudENsaWNrQ2xvc2UgPSBnbG9iYWxDb25maWcucHJldmVudENsaWNrQ2xvc2UpXG4gICAgZ2xvYmFsQ29uZmlnLmJsb2NrT3RoZXJzICYmICh0aGlzLmJlYWNvbkdsb2JhbEJsb2NrT3RoZXJzID0gZ2xvYmFsQ29uZmlnLmJsb2NrT3RoZXJzKVxuICAgIGdsb2JhbENvbmZpZy5vdmVybGF5Q29sb3IgJiYgKHRoaXMuYmVhY29uR2xvYmFsRm9jdXNPdmVybGF5Q29sb3IgPSBnbG9iYWxDb25maWcub3ZlcmxheUNvbG9yKVxuICAgIGdsb2JhbENvbmZpZy5kdXBsaWNhdGUgJiYgKHRoaXMuYmVhY29uR2xvYmFsRHVwbGljYXRlID0gZ2xvYmFsQ29uZmlnLmR1cGxpY2F0ZSlcbiAgICBnbG9iYWxDb25maWcuaWNvbiAmJiB0aGlzLnJlc29sdmVHbG9iYWxJY29uQ29uZmlnKGdsb2JhbENvbmZpZy5pY29uKVxuICAgIGdsb2JhbENvbmZpZy5zdHlsZUNsYXNzICYmIHRoaXMucmVzb2x2ZUdsb2JhbFByb3BlcnR5Q29uZmlnKGdsb2JhbENvbmZpZy5zdHlsZUNsYXNzLCAnc3R5bGUnKVxuICAgIGdsb2JhbENvbmZpZy5yZXBsYWNlbWVudENsYXNzICYmIHRoaXMucmVzb2x2ZUdsb2JhbFByb3BlcnR5Q29uZmlnKGdsb2JhbENvbmZpZy5yZXBsYWNlbWVudENsYXNzLCAnY2xhc3MnKVxuICAgIGdsb2JhbENvbmZpZy5hbmltYXRpb25DbGFzcyAmJiB0aGlzLnJlc29sdmVHbG9iYWxQcm9wZXJ0eUNvbmZpZyhnbG9iYWxDb25maWcuYW5pbWF0aW9uQ2xhc3MsICdhbmltYXRpb24nKVxuICAgIGdsb2JhbENvbmZpZy5wb3NpdGlvbiAmJiAodGhpcy5iZWFjb25HbG9iYWxQb3NpdGlvbmluZyA9IGdsb2JhbENvbmZpZy5wb3NpdGlvbilcbiAgICBnbG9iYWxDb25maWcubm9Ib3ZlckVmZmVjdCAmJiAodGhpcy5iZWFjb25HbG9iYWxOb0hvdmVyRWZmZWN0ID0gZ2xvYmFsQ29uZmlnLm5vSG92ZXJFZmZlY3QpXG4gICAgZ2xvYmFsQ29uZmlnLnNoaW5lU2NhbGUgJiYgKHRoaXMuYmVhY29uR2xvYmFsRm9jdXNTaGluZVNjYWxlID0gZ2xvYmFsQ29uZmlnLnNoaW5lU2NhbGUpXG4gICAgZ2xvYmFsQ29uZmlnLmZvbnRXZWlnaHRUaXRsZSAmJiAodGhpcy5iZWFjb25HbG9iYWxGb250V2VpZ2h0VGl0bGUgPSBnbG9iYWxDb25maWcuZm9udFdlaWdodFRpdGxlKVxuICAgIGdsb2JhbENvbmZpZy5mb250V2VpZ2h0Qm9keSAmJiAodGhpcy5iZWFjb25HbG9iYWxGb250V2VpZ2h0Qm9keSA9IGdsb2JhbENvbmZpZy5mb250V2VpZ2h0Qm9keSlcbiAgfVxuXG4gIC8vIFJlc29sdmUgZ2xvYmFsIGNvbmZpZyAvIGZvciBwcm9wZXJ0eVxuICBwcml2YXRlIHJlc29sdmVHbG9iYWxQcm9wZXJ0eUNvbmZpZyhjb25maWc6IElCZWFjb25UeXBlLCBwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uZmlnLmFsZXJ0ICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC5hbGVydFtwcm9wZXJ0eV0gPSBjb25maWcuYWxlcnQpXG4gICAgY29uZmlnLmVycm9yICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC5lcnJvcltwcm9wZXJ0eV0gPSBjb25maWcuZXJyb3IpXG4gICAgY29uZmlnLmluZm8gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmluZm9bcHJvcGVydHldID0gY29uZmlnLmluZm8pXG4gICAgY29uZmlnLnN1Y2Nlc3MgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLnN1Y2Nlc3NbcHJvcGVydHldID0gY29uZmlnLnN1Y2Nlc3MpXG4gICAgY29uZmlnLndhcm5pbmcgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLndhcm5pbmdbcHJvcGVydHldID0gY29uZmlnLndhcm5pbmcpXG4gIH1cblxuICAvLyBSZXNvbHZlIGdsb2JhbCBjb25maWcgLyBmb3IgaWNvbnNcbiAgcHJpdmF0ZSByZXNvbHZlR2xvYmFsSWNvbkNvbmZpZyhjb25maWc6IElCZWFjb25UeXBlSWNvbik6IHZvaWQge1xuICAgIGNvbmZpZz8uYWxlcnQ/Lmljb24gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmFsZXJ0Lmljb24gPSBjb25maWcuYWxlcnQuaWNvbikgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmFsZXJ0LmZvbnRJY29uID0gU3RyaW5nKChjb25maWc/LmFsZXJ0Py5mb250SWNvbiB8fCBmYWxzZSkpKVxuICAgIGNvbmZpZz8uZXJyb3I/Lmljb24gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmVycm9yLmljb24gPSBjb25maWcuZXJyb3IuaWNvbikgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmVycm9yLmZvbnRJY29uID0gU3RyaW5nKChjb25maWc/LmVycm9yPy5mb250SWNvbiB8fCBmYWxzZSkpKVxuICAgIGNvbmZpZz8uaW5mbz8uaWNvbiAmJiAodGhpcy5iZWFjb25Db25maWdNYXAuaW5mby5pY29uID0gY29uZmlnLmluZm8uaWNvbikgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmluZm8uZm9udEljb24gPSBTdHJpbmcoKGNvbmZpZy5pbmZvLmZvbnRJY29uIHx8IGZhbHNlKSkpXG4gICAgY29uZmlnPy5zdWNjZXNzPy5pY29uICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC5zdWNjZXNzLmljb24gPSBjb25maWcuc3VjY2Vzcy5pY29uKSAmJiAodGhpcy5iZWFjb25Db25maWdNYXAuc3VjY2Vzcy5mb250SWNvbiA9IFN0cmluZygoY29uZmlnLnN1Y2Nlc3MuZm9udEljb24gfHwgZmFsc2UpKSlcbiAgICBjb25maWc/Lndhcm5pbmc/Lmljb24gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLndhcm5pbmcuaWNvbiA9IGNvbmZpZy53YXJuaW5nLmljb24pICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC53YXJuaW5nLmZvbnRJY29uID0gU3RyaW5nKChjb25maWcud2FybmluZy5mb250SWNvbiB8fCBmYWxzZSkpKVxuICB9XG5cbiAgLy8gUmVzb2x2ZSBiZWFjb24gZXZlbnRzXG4gIHByaXZhdGUgcmVzb2x2ZUJlYWNvbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmJlYWNvbkV2ZW50VGFza01hc3Rlci5zdWJzY3JpYmUoKG1lc3NhZ2U6IElCZWFjb25FdmVudE1lc3NhZ2UpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKG1lc3NhZ2UuaWQpXG4gICAgICBpZiAobWVzc2FnZS5kZWxldGUpIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlUG9zc2libGVCbG9ja2VkQmVhY29ucyhpZClcbiAgICAgICAgdGhpcy5yZXNvbHZlUG9zc2libGVRdWV1ZWRGb2N1cyhpZClcbiAgICAgICAgdGhpcy5wZXJmb3JtRXZlbnRUYXNrKGlkLCB7IG9uOiBmYWxzZSwgb2ZmOiB0cnVlIH0pXG4gICAgICAgIGRlbGV0ZSB0aGlzLmJlYWNvblN1YnNjcmliZWRFdmVudExpYnJhcnlbaWRdXG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubW91bnQpIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtRXZlbnRUYXNrKGlkLCB7IG9uOiB0cnVlLCBvZmY6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8vIFBlcmZvcm0gZXZlbnQgdGFza1xuICBwcml2YXRlIHBlcmZvcm1FdmVudFRhc2soaWQ6IHN0cmluZywgZXZlbnRPYmplY3Q6IElCZWFjb25FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YW1wID0gdGhpcy5iZWFjb25TdWJzY3JpYmVkRXZlbnRMaWJyYXJ5W2lkXVxuICAgIGNvbnN0IGV2ZW50ID0gPEV2ZW50RW1pdHRlcjxJQmVhY29uRXZlbnQ+PnN0YW1wLmV2ZW50XG4gICAgY29uc3QgbWFudWFsSWQgPSBzdGFtcD8ubWFudWFsSWQ/LnRvU3RyaW5nKCkucmVwbGFjZSgvdW5kZWZpbmVkLywgJycpXG4gICAgZXZlbnQuZW1pdChldmVudE9iamVjdClcbiAgICB0aGlzLmJlYWNvbkFsbEV2ZW50VGFza01hc3Rlci5lbWl0KHsgaWQ6IG1hbnVhbElkIHx8IG51bGwsIHR5cGU6IFN0cmluZyhzdGFtcC50eXBlKSwgLi4uZXZlbnRPYmplY3QgfSlcblxuICAgIC8vIENoZWNrIGlmIHRoaXMgbWFudWFsIGlkIGlzIHdhdGNoZWRcbiAgICBpZiAobWFudWFsSWQgJiYgdGhpcy5iZWFjb25XYXRjaGVkRXZlbnRMaWJyYXJ5LmhhcyhtYW51YWxJZCkpIHtcbiAgICAgIHRoaXMuYmVhY29uV2F0Y2hlZEV2ZW50VGFza01hc3Rlci5lbWl0KHsgaWQ6IG1hbnVhbElkLCB0eXBlOiBTdHJpbmcoc3RhbXAudHlwZSksIC4uLmV2ZW50T2JqZWN0IH0pXG4gICAgICAvLyBDaGVjayBpZiBiZWFjb24gaXMgb2ZmXG4gICAgICBpZiAoZXZlbnRPYmplY3Qub2ZmKSBcbiAgICAgICAgdGhpcy5iZWFjb25XYXRjaGVkRXZlbnRMaWJyYXJ5LmRlbGV0ZShtYW51YWxJZClcbiAgICB9XG4gIH1cblxuICAvLyBSZXNvbHZlIHBvc3NpYmxlIGJsb2NrZWQgYmVhY29uc1xuICBwcml2YXRlIHJlc29sdmVQb3NzaWJsZUJsb2NrZWRCZWFjb25zKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBpZiB0aGlzIGlkIGlzIGJsb2NraW5nIG90aGVyc1xuICAgIGlmIChpZCA9PSB0aGlzLmJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQpIHtcbiAgICAgIGlmICh0aGlzLmJlYWNvbkxpYnJhcnlRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcXVldWVMZW5ndGggPSB0aGlzLmJlYWNvbkxpYnJhcnlRdWV1ZS5sZW5ndGhcbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHF1ZXVlXG4gICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgcXVldWVMZW5ndGg7IHgrKykge1xuICAgICAgICAgIGNvbnN0IG5leHRJbkxpbmUgPSA8SUJlYWNvbkNvbmZpZz50aGlzLmJlYWNvbkxpYnJhcnlRdWV1ZS5zaGlmdCgpXG5cbiAgICAgICAgICAvLyBBZGQgbWVzc2FnZSB0byBsaWJyYXJ5XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0QmVhY29uR2xvYmFsUG9zaXRpb25Db25maWc/LnRvcEJvdHRvbSA9PSAndG9wJylcbiAgICAgICAgICAgIHRoaXMuYmVhY29uTGlicmFyeS51bnNoaWZ0KG5leHRJbkxpbmUpXG4gICAgICAgICAgZWxzZSB0aGlzLmJlYWNvbkxpYnJhcnkucHVzaChuZXh0SW5MaW5lKSAgICBcblxuICAgICAgICAgIC8vIENoZWNrIGlmIHNldCB0byBibG9ja1xuICAgICAgICAgIGlmIChuZXh0SW5MaW5lLmJsb2NrT3RoZXJzKSB7XG4gICAgICAgICAgICB0aGlzLmJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQgPSBuZXh0SW5MaW5lLmJpZFxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBubyBuZXcgYmVhY29uIGlzIHNldCBhcyBibG9ja2VyIGFuZCB1bnNldCBwcmV2aW91cyB2YWx1ZVxuICAgICAgICBpZiAoaWQgPT0gdGhpcy5iZWFjb25TdWNjZXNzb3JCbG9ja2VyQXV0b0lkKSBcbiAgICAgICAgICB0aGlzLmJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGVsc2UgdGhpcy5iZWFjb25TdWNjZXNzb3JCbG9ja2VyQXV0b0lkID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzb2x2ZSBxdWV1ZWQgYmVhY29uIGZvY3VzXG4gIHByaXZhdGUgcmVzb2x2ZVBvc3NpYmxlUXVldWVkRm9jdXMoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgaWQgaXMgYWN0aXZlIGZvY3VzIGJlYWNvblxuICAgIGlmIChpZCA9PSB0aGlzLmJlYWNvbldpdGhBY3RpdmVGb2N1c0F1dG9JZCkge1xuICAgICAgaWYgKHRoaXMuYmVhY29uRm9jdXNPcmRlckxpYnJhcnkubGVuZ3RoKSB7XG4gICAgICAgIC8vIFBhc3MgdGhlIG5leHQgZm9jdXNcbiAgICAgICAgdGhpcy5iZWFjb25XaXRoQWN0aXZlRm9jdXNBdXRvSWQgPSB0aGlzLmJlYWNvbkZvY3VzT3JkZXJMaWJyYXJ5LnNoaWZ0KClcbiAgICAgICAgdGhpcy5iZWFjb25FdmVudFRhc2tNYXN0ZXIuZW1pdCh7IGF1dG9EZXRlY3ROZXh0Rm9jdXNCZWFjb246IHRydWUgfSlcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmJlYWNvbldpdGhBY3RpdmVGb2N1c0F1dG9JZCA9IHVuZGVmaW5lZFxuICAgICAgICB0aGlzLmRlc3Ryb3lCZWFjb25Gb2N1c092ZXJsYXkoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlIHVuaXF1ZSBpZCBmb3IgaXRlbVxuICBwcml2YXRlIGdldCBnZXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSkudG9TdHJpbmcoKS5zcGxpdCgnLCcpLmpvaW4oJycpXG4gIH1cblxuICAvLyBTZXQgYmVhY29uIGNvbnRhaW5lclxuICBwdWJsaWMgc2V0QmVhY29uQ29udGFpbmVyKGNvbnRhaW5lcjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIHRoaXMuYmVhY29uQ29udGFpbmVyID0gY29udGFpbmVyXG4gIH1cblxuICAvLyBHZXQgYmVhY29uIGNvbnRhaW5lclxuICBwdWJsaWMgZ2V0IGdldEJlYWNvbkNvbnRhaW5lcigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5iZWFjb25Db250YWluZXJcbiAgfVxuXG4gIC8vIEdldCBiZWFjb24gZ2xvYmFsIHBvc2l0aW9uIGNvbmZpZ1xuICBwdWJsaWMgZ2V0IGdldEJlYWNvbkdsb2JhbFBvc2l0aW9uQ29uZmlnKCk6IElCZWFjb25Qb3NpdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uR2xvYmFsUG9zaXRpb25pbmdcbiAgfVxuXG4gIC8vIEdldCBkZWZhdWx0IGljb24ga2V5c1xuICBwdWJsaWMgZ2V0IGdldEJlYWNvbkRlZmF1bHRJY29uS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzXG4gIH1cblxuICAvLyBHZXQgYWN0aXZlIGZvY3VzIGJlYWNvbiBpZFxuICBwdWJsaWMgZ2V0IGdldEFjdGl2ZUZvY3VzQmVhY29uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5iZWFjb25XaXRoQWN0aXZlRm9jdXNBdXRvSWRcbiAgfVxuXG4gIC8vIENyZWF0ZSBvdmVybGF5IGZvciBmb2N1c2VkIGJlYWNvblxuICBwdWJsaWMgY3JlYXRlQmVhY29uRm9jdXNPdmVybGF5KG92ZXJsYXlDb2xvcj86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIG92ZXJsYXkuc2V0QXR0cmlidXRlKCdpZCcsIEJFQUNPTl9PVkVSTEFZX0lEKVxuICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gICAgb3ZlcmxheS5zdHlsZS50b3AgPSAnMCdcbiAgICBvdmVybGF5LnN0eWxlLmJvdHRvbSA9ICcwJ1xuICAgIG92ZXJsYXkuc3R5bGUucmlnaHQgPSAnMCdcbiAgICBvdmVybGF5LnN0eWxlLmxlZnQgPSAnMCdcbiAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9ICc5MDAyJ1xuICAgIG92ZXJsYXkuc3R5bGUuYmFja2dyb3VuZCA9IG92ZXJsYXlDb2xvciB8fCB0aGlzLmJlYWNvbkdsb2JhbEZvY3VzT3ZlcmxheUNvbG9yIHx8IEJFQUNPTl9PVkVSTEFZX0NPTE9SXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nXG5cbiAgICAvLyBQYXNzIG92ZXJsYXkgZWxlbWVudFxuICAgIHRoaXMuYmVhY29uRm9jdXNPdmVybGF5RE9NID0gb3ZlcmxheVxuXG4gICAgdGhpcy5iZWFjb25Db250YWluZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChvdmVybGF5KVxuICB9XG5cbiAgLy8gUmVwYWludCBvdmVybGF5IGZvciBmb2N1c2VkIGJlYWNvblxuICBwdWJsaWMgcmVwYWludEJlYWNvbkZvY3VzT3ZlcmxheShvdmVybGF5Q29sb3I/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5iZWFjb25Gb2N1c092ZXJsYXlET00pXG4gICAgICB0aGlzLmJlYWNvbkZvY3VzT3ZlcmxheURPTS5zdHlsZS5iYWNrZ3JvdW5kID0gb3ZlcmxheUNvbG9yIHx8IHRoaXMuYmVhY29uR2xvYmFsRm9jdXNPdmVybGF5Q29sb3IgfHwgQkVBQ09OX09WRVJMQVlfQ09MT1JcbiAgfVxuXG4gIC8vIERlc3Ryb3kgb3ZlcmxheSBmb3IgZm9jdXNlZCBiZWFjb25cbiAgcHVibGljIGRlc3Ryb3lCZWFjb25Gb2N1c092ZXJsYXkoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJ1xuICAgIHRoaXMuYmVhY29uQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2IycgKyBCRUFDT05fT1ZFUkxBWV9JRCkucmVtb3ZlKClcbiAgICB0aGlzLmJlYWNvbkZvY3VzT3ZlcmxheURPTSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gU2V0IGlkIGZvciBiZWFjb25cbiAgcHVibGljIGlkKGlkOiBzdHJpbmcpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICBpZCAmJiAodGhpcy5iZWFjb25NYW51YWxJZCA9IGlkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBTZXQgbm90aWZpY2F0aW9uIHRpdGxlXG4gIHB1YmxpYyB0aXRsZSh0aXRsZTogc3RyaW5nKTogQmVhY29uTm90aWZ5U2VydmljZSB7XG4gICAgdGl0bGUgJiYgKHRoaXMuYmVhY29uVGl0bGUgPSB0aXRsZSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gU2V0IG5vdGlmaWNhdGlvbiBtZXNzYWdlXG4gIHB1YmxpYyBtZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIG1lc3NhZ2UgJiYgKHRoaXMuYmVhY29uTWVzc2FnZSA9IG1lc3NhZ2UpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIEhpZ2hsaWdodCBpZCBvZiBiZWFjb24gdG8gdXBkYXRlXG4gIHB1YmxpYyBzZWxlY3QoaWQ6IHN0cmluZyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIGlkICYmICh0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQgPSBpZClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gQ2hhbmdlIG5vdGlmaWNhdGlvbiB0aXRsZVxuICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgbWFudWFsIGlkIC8gYW5kIGlmIGEgYmVhY29uIGlzIHRpZWQgdG8gaXRcbiAgICBpZiAodGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKSB7XG4gICAgICBjb25zdCBiZWFjb25JbmRleCA9IHRoaXMuYmVhY29uTGlicmFyeS5maW5kSW5kZXgoeCA9PiB4Lm1pZCA9PSB0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpXG4gICAgICBpZiAoYmVhY29uSW5kZXggPj0gMClcbiAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS50aXRsZSA9IHRpdGxlXG4gICAgfVxuICB9XG5cbiAgLy8gQ2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlXG4gIHB1YmxpYyBzZXRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgbWFudWFsIGlkIC8gYW5kIGlmIGEgYmVhY29uIGlzIHRpZWQgdG8gaXRcbiAgICBpZiAodGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKSB7XG4gICAgICBjb25zdCBiZWFjb25JbmRleCA9IHRoaXMuYmVhY29uTGlicmFyeS5maW5kSW5kZXgoeCA9PiB4Lm1pZCA9PSB0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpXG4gICAgICBpZiAoYmVhY29uSW5kZXggPj0gMClcbiAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS5ib2R5ID0gbWVzc2FnZVxuICAgIH1cbiAgfVxuXG4gIC8vIENoYW5nZSBub3RpZmljYXRpb24gdGl0bGUgJiBtZXNzYWdlXG4gIHB1YmxpYyBzZXRDb250ZW50KHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgbWFudWFsIGlkIC8gYW5kIGlmIGEgYmVhY29uIGlzIHRpZWQgdG8gaXRcbiAgICBpZiAodGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKSB7XG4gICAgICBjb25zdCBiZWFjb25JbmRleCA9IHRoaXMuYmVhY29uTGlicmFyeS5maW5kSW5kZXgoeCA9PiB4Lm1pZCA9PSB0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpXG4gICAgICBpZiAoYmVhY29uSW5kZXggPj0gMClcbiAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMuYmVhY29uTGlicmFyeVtiZWFjb25JbmRleF0uYm9keSA9IG1lc3NhZ2VcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgYmVhY29uIGJ1dHRvbiAxXG4gIHB1YmxpYyBzZXRCdXR0b25PbmUodGV4dDogc3RyaW5nLCBjYW5EaXNtaXNzPzogYm9vbGVhbiB8IG51bGwsIGNhbGxiYWNrPzogYW55LCBjYWxsYmFja0FyZ3M/OiBhbnlbXSB8IG51bGwsIHBvc2l0aW9uPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgZm9yIGFjdGl2ZSBtYW51YWwgaWQgLyBhbmQgaWYgYSBiZWFjb24gaXMgdGllZCB0byBpdFxuICAgIGlmICh0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpIHtcbiAgICAgIGNvbnN0IGJlYWNvbkluZGV4ID0gdGhpcy5iZWFjb25MaWJyYXJ5LmZpbmRJbmRleCh4ID0+IHgubWlkID09IHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZClcbiAgICAgIGlmIChiZWFjb25JbmRleCA+PSAwKSB7XG4gICAgICAgICg8SUJlYWNvbkJ1dHRvblR5cGU+dGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS5idXR0b25zKS5vbmUgPSB7XG4gICAgICAgICAgdGV4dDogdGV4dC5zdWJzdHJpbmcoMCwgMTUpLFxuICAgICAgICAgIGNhbkRpc21pc3MsXG4gICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgY2FsbGJhY2tBcmdzLFxuICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgYmVhY29uIGJ1dHRvbiAyXG4gIHB1YmxpYyBzZXRCdXR0b25Ud28odGV4dDogc3RyaW5nLCBjYW5EaXNtaXNzPzogYm9vbGVhbiB8IG51bGwsIGNhbGxiYWNrPzogYW55LCBjYWxsYmFja0FyZ3M/OiBhbnlbXSB8IG51bGwsIHBvc2l0aW9uPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgZm9yIGFjdGl2ZSBtYW51YWwgaWQgLyBhbmQgaWYgYSBiZWFjb24gaXMgdGllZCB0byBpdFxuICAgIGlmICh0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpIHtcbiAgICAgIGNvbnN0IGJlYWNvbkluZGV4ID0gdGhpcy5iZWFjb25MaWJyYXJ5LmZpbmRJbmRleCh4ID0+IHgubWlkID09IHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZClcbiAgICAgIGlmIChiZWFjb25JbmRleCA+PSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnM/Lm9uZSkge1xuICAgICAgICAgICg8SUJlYWNvbkJ1dHRvblR5cGU+dGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS5idXR0b25zKS50d28gPSB7XG4gICAgICAgICAgICB0ZXh0OiB0ZXh0LnN1YnN0cmluZygwLCAxNSksXG4gICAgICAgICAgICBjYW5EaXNtaXNzLFxuICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICBjYWxsYmFja0FyZ3MsXG4gICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHRoaXMuc2V0QnV0dG9uT25lKHRleHQsIGNhbkRpc21pc3MsIGNhbGxiYWNrLCBjYWxsYmFja0FyZ3MsIHBvc2l0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBiZWFjb24gYnV0dG9uIDFcbiAgcHVibGljIHJlbW92ZUJ1dHRvbk9uZSgpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIG1hbnVhbCBpZCAvIGFuZCBpZiBhIGJlYWNvbiBpcyB0aWVkIHRvIGl0XG4gICAgaWYgKHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZCkge1xuICAgICAgY29uc3QgYmVhY29uSW5kZXggPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmluZEluZGV4KHggPT4geC5taWQgPT0gdGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKVxuICAgICAgaWYgKGJlYWNvbkluZGV4ID49IDApIHtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLm9uZSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBiZWFjb24gYnV0dG9uIDJcbiAgcHVibGljIHJlbW92ZUJ1dHRvblR3bygpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIG1hbnVhbCBpZCAvIGFuZCBpZiBhIGJlYWNvbiBpcyB0aWVkIHRvIGl0XG4gICAgaWYgKHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZCkge1xuICAgICAgY29uc3QgYmVhY29uSW5kZXggPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmluZEluZGV4KHggPT4geC5taWQgPT0gdGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKVxuICAgICAgaWYgKGJlYWNvbkluZGV4ID49IDApIHtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLnR3byA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBiZWFjb24gYnV0dG9uc1xuICBwdWJsaWMgcmVtb3ZlQnV0dG9ucygpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIG1hbnVhbCBpZCAvIGFuZCBpZiBhIGJlYWNvbiBpcyB0aWVkIHRvIGl0XG4gICAgaWYgKHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZCkge1xuICAgICAgY29uc3QgYmVhY29uSW5kZXggPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmluZEluZGV4KHggPT4geC5taWQgPT0gdGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKVxuICAgICAgaWYgKGJlYWNvbkluZGV4ID49IDApIHtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLm9uZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLnR3byA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBiZWFjb24gYXMgc3RhdGljIG9yIHdpdGggZGVsYXlcbiAgcHVibGljIHN0YXRpYyhkZWxheT86IG51bWJlcik6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIHRoaXMuYmVhY29uU3RhdGljID0gZGVsYXkgfHwgdHJ1ZVxuICAgIHRoaXMuYmVhY29uRml4ZWQgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gU2V0IGJlYWNvbiBhcyBmaXhlZCB3aGljaCByZW1vdmVzIHRoZSBjbG9zZSBidXR0b24gYW5kIGRpc2FsbG93cyBjbG9zZSBvbiBjbGlja1xuICBwdWJsaWMgZml4ZWQoKTogQmVhY29uTm90aWZ5U2VydmljZSB7XG4gICAgdGhpcy5iZWFjb25TdGF0aWMgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkZpeGVkID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBBbGxvdyBiZWFjb24gdG8gYmxvY2sgb3RoZXJzXG4gIHB1YmxpYyBibG9jaygpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICB0aGlzLmJlYWNvbkJsb2NrT3RoZXJzID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBGb2N1cyBvbiBiZWFjb25cbiAgcHVibGljIGZvY3VzKG92ZXJsYXlDb2xvcj86IHN0cmluZyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIG92ZXJsYXlDb2xvciAmJiAodGhpcy5iZWFjb25PdmVybGF5Q29sb3IgPSBvdmVybGF5Q29sb3IpXG4gICAgdGhpcy5iZWFjb25Gb2N1cyA9IHRydWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gRm9jdXMgYmVhY29uIG9uIGNlbnRlciBzY3JlZW5cbiAgcHVibGljIHNoaW5lKHNjYWxlPzogbnVtYmVyLCBvdmVybGF5Q29sb3I/OiBzdHJpbmcpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICBvdmVybGF5Q29sb3IgJiYgKHRoaXMuYmVhY29uT3ZlcmxheUNvbG9yID0gb3ZlcmxheUNvbG9yKVxuICAgIHRoaXMuYmVhY29uRm9jdXNTaGluZSA9IHRoaXMuYmVhY29uRm9jdXMgPSB0cnVlXG4gICAgc2NhbGUgJiYgKHRoaXMuYmVhY29uRm9jdXNTaGluZVNjYWxlID0gc2NhbGUpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIEFkZCBidXR0b24gZm9yIGJlYWNvblxuICBwdWJsaWMgYnV0dG9uKHRleHQ6IHN0cmluZywgY2FuRGlzbWlzcz86IGJvb2xlYW4gfCBudWxsLCBjYWxsYmFjaz86IGFueSwgY2FsbGJhY2tBcmdzPzogYW55W10gfCBudWxsLCBwb3NpdGlvbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIGlmICghdGhpcy5iZWFjb25CdXR0b25zPy5vbmUpIHtcbiAgICAgIHRoaXMuYmVhY29uQnV0dG9ucy5vbmUgPSB7XG4gICAgICAgIHRleHQ6IHRleHQuc3Vic3RyaW5nKDAsIDE1KSxcbiAgICAgICAgY2FuRGlzbWlzcyxcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrQXJncyxcbiAgICAgICAgcG9zaXRpb25cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYmVhY29uQnV0dG9ucy5vbmUgJiYgIXRoaXMuYmVhY29uQnV0dG9ucy50d28pIHtcbiAgICAgIHRoaXMuYmVhY29uQnV0dG9ucy50d28gPSB7XG4gICAgICAgIHRleHQ6IHRleHQuc3Vic3RyaW5nKDAsIDE1KSxcbiAgICAgICAgY2FuRGlzbWlzcyxcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrQXJncyxcbiAgICAgICAgcG9zaXRpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gQWxsb3cgZHVwbGljYXRlIGZvciBiZWFjb25cbiAgcHVibGljIGR1cGxpY2F0ZSgpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICB0aGlzLmJlYWNvbkFsbG93RHVwbGljYXRlID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBTZXQgY29uZmlnIHZhbHVlcyBmb3IgYmVhY29uXG4gIHB1YmxpYyBidWlsZChjb25maWc6IElCZWFjb25JbmxpbmVDb25maWcpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICBpZiAoY29uZmlnLnN0YXRpYykge1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcuc3RhdGljID09ICdib29sZWFuJylcbiAgICAgICAgdGhpcy5zdGF0aWMoKVxuICAgICAgZWxzZSB0aGlzLnN0YXRpYyhOdW1iZXIoY29uZmlnLnN0YXRpYykpXG4gICAgfVxuXG4gICAgY29uZmlnLmZpeGVkICYmIHRoaXMuZml4ZWQoKVxuICAgIGNvbmZpZy5kdXBsaWNhdGUgJiYgdGhpcy5kdXBsaWNhdGUoKVxuICAgIGNvbmZpZy5wcmV2ZW50Q2xpY2tDbG9zZSAmJiAodGhpcy5iZWFjb25QcmV2ZW50Q2xpY2tDbG9zZSA9IGNvbmZpZy5wcmV2ZW50Q2xpY2tDbG9zZSlcbiAgICBjb25maWcuYmxvY2tPdGhlcnMgJiYgKHRoaXMuYmVhY29uQmxvY2tPdGhlcnMgPSBjb25maWcuYmxvY2tPdGhlcnMpXG4gICAgY29uZmlnLmZvY3VzICYmICh0aGlzLmJlYWNvbkZvY3VzID0gY29uZmlnLmZvY3VzKVxuICAgIGNvbmZpZy5zaGluZSAmJiAodGhpcy5iZWFjb25Gb2N1c1NoaW5lID0gdGhpcy5iZWFjb25Gb2N1cyA9IGNvbmZpZy5zaGluZSlcbiAgICBjb25maWcuaWNvbiAmJiAodGhpcy5iZWFjb25JY29uID0gY29uZmlnLmljb24pXG4gICAgY29uZmlnLmZvbnRJY29uICYmICh0aGlzLmJlYWNvbkljb25Gcm9tRm9udCA9IGNvbmZpZy5mb250SWNvbilcbiAgICBjb25maWcuc3R5bGVDbGFzcyAmJiAodGhpcy5iZWFjb25TdHlsZUNsYXNzID0gY29uZmlnLnN0eWxlQ2xhc3MpXG4gICAgY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MgJiYgKHRoaXMuYmVhY29uUmVwbGFjZW1lbnRDbGFzcyA9IGNvbmZpZy5yZXBsYWNlbWVudENsYXNzKVxuICAgIGNvbmZpZy5hbmltYXRpb25DbGFzcyAmJiAodGhpcy5iZWFjb25BbmltYXRpb25DbGFzcyA9IGNvbmZpZy5hbmltYXRpb25DbGFzcylcbiAgICBjb25maWcuYW5pbWF0aW9uQ2xhc3MgJiYgKHRoaXMuYmVhY29uQW5pbWF0aW9uQ2xhc3MgPSBjb25maWcuYW5pbWF0aW9uQ2xhc3MpXG4gICAgY29uZmlnLm92ZXJsYXlDb2xvciAmJiAodGhpcy5iZWFjb25PdmVybGF5Q29sb3IgPSBjb25maWcub3ZlcmxheUNvbG9yKVxuICAgIGNvbmZpZy5ub0hvdmVyRWZmZWN0ICYmICh0aGlzLmJlYWNvbk5vSG92ZXJFZmZlY3QgPSBjb25maWcubm9Ib3ZlckVmZmVjdClcbiAgICBjb25maWcuc2hpbmVTY2FsZSAmJiAodGhpcy5iZWFjb25Gb2N1c1NoaW5lU2NhbGUgPSBjb25maWcuc2hpbmVTY2FsZSlcbiAgICBjb25maWcuZm9udFdlaWdodFRpdGxlICYmICh0aGlzLmJlYWNvbkZvbnRXZWlnaHRUaXRsZSA9IGNvbmZpZy5mb250V2VpZ2h0VGl0bGUpXG4gICAgY29uZmlnLmZvbnRXZWlnaHRCb2R5ICYmICh0aGlzLmJlYWNvbkZvbnRXZWlnaHRCb2R5ID0gY29uZmlnLmZvbnRXZWlnaHRCb2R5KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBjcmVhdGUgbm90aWZpY2F0aW9uIGJlYWNvblxuICBwcml2YXRlIGJlYWNvbihtZXNzYWdlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IEV2ZW50RW1pdHRlcjxJQmVhY29uRXZlbnQ+IHtcbiAgICAvLyBHZXQgc2lnbmF0dXJlXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy53aW5kb3c/LmJ0b2EoKHRoaXMuYmVhY29uVGl0bGUgfHwgdGhpcy5iZWFjb25Db25maWdNYXBbdHlwZV0udGl0bGUpICsgJy4nICsgbWVzc2FnZSlcbiAgICAvLyBHZW5lcmF0ZSBiZWFjb24gaWRcbiAgICBjb25zdCBiZWFjb25JZCA9IHRoaXMuZ2V0SWRcbiAgICAvLyBSZWdpc3RlciBiZWFjb24gaW4gZXZlbnQgbGlicmFyeVxuICAgIHRoaXMuYmVhY29uU3Vic2NyaWJlZEV2ZW50TGlicmFyeVtiZWFjb25JZF0gPSBPYmplY3QuY3JlYXRlKHt9KVxuICAgIC8vIENoZWNrIGZvciBkdXBsaWNhdGUgaWYgc2V0IHRvIHByZXZlbnQgb3IgcHJvY2VlZCBpZiB0dXJuZWQgb2ZmXG4gICAgaWYgKHRoaXMuYmVhY29uQWxsb3dEdXBsaWNhdGUgfHwgKChbdW5kZWZpbmVkLCBmYWxzZV0uaW5jbHVkZXModGhpcy5iZWFjb25HbG9iYWxEdXBsaWNhdGUpICYmIHRoaXMuaXNOZXdCZWFjb25BRHVwbGljYXRlKHNpZ25hdHVyZSkgPT0gITEpIHx8IHRoaXMuYmVhY29uR2xvYmFsRHVwbGljYXRlKSkge1xuICAgICAgY29uc3QgYmVhY29uT2JqZWN0OiBJQmVhY29uQ29uZmlnID0ge1xuICAgICAgICBiaWQ6IGJlYWNvbklkLFxuICAgICAgICBtaWQ6IHRoaXMuYmVhY29uTWFudWFsSWQsXG4gICAgICAgIHR5cGU6IHRoaXMuYmVhY29uQ29uZmlnTWFwW3R5cGVdLmNsYXNzLFxuICAgICAgICBpY29uOiB0aGlzLmJlYWNvbkljb24gfHwgdGhpcy5iZWFjb25Db25maWdNYXBbdHlwZV0uaWNvbixcbiAgICAgICAgZm9udEljb246IHRoaXMuYmVhY29uSWNvbkZyb21Gb250IHx8ICh0aGlzLmJlYWNvbkNvbmZpZ01hcFt0eXBlXS5mb250SWNvbiA9PSAndHJ1ZScgPyB0cnVlIDogdW5kZWZpbmVkKSxcbiAgICAgICAgdGl0bGU6IHRoaXMuYmVhY29uVGl0bGUgfHwgdGhpcy5iZWFjb25Db25maWdNYXBbdHlwZV0udGl0bGUsXG4gICAgICAgIHN0YXRpYzogdGhpcy5iZWFjb25TdGF0aWMgfHwgdGhpcy5iZWFjb25HbG9iYWxTdGF0aWMsXG4gICAgICAgIGZpeGVkOiB0aGlzLmJlYWNvbkZpeGVkIHx8IHRoaXMuYmVhY29uR2xvYmFsRml4ZWQsXG4gICAgICAgIHByZXZlbnRDbGlja0Nsb3NlOiB0aGlzLmJlYWNvblByZXZlbnRDbGlja0Nsb3NlIHx8IHRoaXMuYmVhY29uR2xvYmFsUHJldmVudENsaWNrQ2xvc2UsXG4gICAgICAgIHN0eWxlQ2xhc3M6IHRoaXMuYmVhY29uU3R5bGVDbGFzcyB8fCB0aGlzLmJlYWNvbkNvbmZpZ01hcFt0eXBlXS5zdHlsZSxcbiAgICAgICAgcmVwbGFjZW1lbnRDbGFzczogdGhpcy5iZWFjb25SZXBsYWNlbWVudENsYXNzLFxuICAgICAgICBhbmltYXRpb25DbGFzczogdGhpcy5iZWFjb25BbmltYXRpb25DbGFzcyB8fCB0aGlzLmJlYWNvbkNvbmZpZ01hcFt0eXBlXS5hbmltYXRpb24gfHwgdGhpcy5iZWFjb25EZWZhdWx0QW5pbWF0aW9uQ2xhc3NOYW1lLFxuICAgICAgICBibG9ja090aGVyczogdGhpcy5iZWFjb25CbG9ja090aGVycyB8fCB0aGlzLmJlYWNvbkdsb2JhbEJsb2NrT3RoZXJzLFxuICAgICAgICBidXR0b25zOiB0aGlzLmJlYWNvbkJ1dHRvbnMsXG4gICAgICAgIG92ZXJsYXlDb2xvcjogdGhpcy5iZWFjb25PdmVybGF5Q29sb3IsXG4gICAgICAgIGJvZHlIdG1sOiA8U2FmZUh0bWw+dGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobWVzc2FnZSksXG4gICAgICAgIGJvZHk6IG1lc3NhZ2UsXG4gICAgICAgIGZvY3VzOiB0aGlzLmJlYWNvbkZvY3VzLFxuICAgICAgICBzaGluZTogdGhpcy5iZWFjb25Gb2N1c1NoaW5lLFxuICAgICAgICBub0hvdmVyRWZmZWN0OiB0aGlzLmJlYWNvbk5vSG92ZXJFZmZlY3QgfHwgdGhpcy5iZWFjb25HbG9iYWxOb0hvdmVyRWZmZWN0LFxuICAgICAgICBzaGluZVNjYWxlOiB0aGlzLmJlYWNvbkZvY3VzU2hpbmVTY2FsZSB8fCB0aGlzLmJlYWNvbkdsb2JhbEZvY3VzU2hpbmVTY2FsZSxcbiAgICAgICAgZm9udFdlaWdodFRpdGxlOiB0aGlzLmJlYWNvbkZvbnRXZWlnaHRUaXRsZSB8fCB0aGlzLmJlYWNvbkdsb2JhbEZvbnRXZWlnaHRUaXRsZSxcbiAgICAgICAgZm9udFdlaWdodEJvZHk6IHRoaXMuYmVhY29uRm9udFdlaWdodEJvZHkgfHwgdGhpcy5iZWFjb25HbG9iYWxGb250V2VpZ2h0Qm9keSxcbiAgICAgICAgc2lnbmF0dXJlXG4gICAgICB9XG5cbiAgICAgIC8vIFNhbml0aXplIGljb24gaWYgcGFzc2VkXG4gICAgICBpZiAoIWJlYWNvbk9iamVjdC5mb250SWNvbiAmJiBiZWFjb25PYmplY3QuaWNvbiAmJiAhdGhpcy5iZWFjb25EZWZhdWx0SWNvbktleXMuaW5jbHVkZXMoYmVhY29uT2JqZWN0Lmljb24pKSB7XG4gICAgICAgIGJlYWNvbk9iamVjdC5zdmdJY29uID0gPFNhZmVIdG1sPnRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGJlYWNvbk9iamVjdC5pY29uKVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbiBhY3RpdmUgYmVhY29uIGJsb2NraW5nIG90aGVycyBhbmQgYWRkIGJ1aWxkIGJlYWNvbiB0byBxdWV1ZVxuICAgICAgaWYgKHRoaXMuYmVhY29uU3VjY2Vzc29yQmxvY2tlckF1dG9JZCkge1xuICAgICAgICB0aGlzLmJlYWNvbkxpYnJhcnlRdWV1ZS5wdXNoKGJlYWNvbk9iamVjdClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGJlYWNvbiBjYW4gYmxvY2sgYW5kIHJlZ2lzdGVyIGlkXG4gICAgICAgIGlmIChiZWFjb25PYmplY3QuYmxvY2tPdGhlcnMpXG4gICAgICAgICAgdGhpcy5iZWFjb25TdWNjZXNzb3JCbG9ja2VyQXV0b0lkID0gYmVhY29uT2JqZWN0LmJpZFxuXG4gICAgICAgIC8vIEFkZCBtZXNzYWdlIHRvIGxpYnJhcnlcbiAgICAgICAgaWYgKHRoaXMuZ2V0QmVhY29uR2xvYmFsUG9zaXRpb25Db25maWc/LnRvcEJvdHRvbSA9PSAndG9wJylcbiAgICAgICAgICB0aGlzLmJlYWNvbkxpYnJhcnkudW5zaGlmdChiZWFjb25PYmplY3QpXG4gICAgICAgIGVsc2UgdGhpcy5iZWFjb25MaWJyYXJ5LnB1c2goYmVhY29uT2JqZWN0KVxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBpZiBiZWFjb24gaGFzIGZvY3VzXG4gICAgICBpZiAodGhpcy5iZWFjb25Gb2N1cykge1xuICAgICAgICBpZiAodGhpcy5iZWFjb25XaXRoQWN0aXZlRm9jdXNBdXRvSWQpXG4gICAgICAgICAgdGhpcy5iZWFjb25Gb2N1c09yZGVyTGlicmFyeS5wdXNoKGJlYWNvbk9iamVjdC5iaWQpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aGlzLmJlYWNvbldpdGhBY3RpdmVGb2N1c0F1dG9JZCA9IGJlYWNvbk9iamVjdC5iaWRcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgaWQgaXMgc2V0IGFuZCByZWdpc3RlciBpdFxuICAgICAgaWYgKHRoaXMuYmVhY29uTWFudWFsSWQpIHtcbiAgICAgICAgdGhpcy5iZWFjb25TdWJzY3JpYmVkRXZlbnRMaWJyYXJ5W2JlYWNvbklkXS5tYW51YWxJZCA9IHRoaXMuYmVhY29uTWFudWFsSWRcbiAgICAgICAgLy8gTWFwIHRoZSBkZWZpbmVkIGlkIHRvIHRoZSBhdXRvLWdlbiBpZFxuICAgICAgICB0aGlzLmJlYWNvbldhdGNoZWRFdmVudExpYnJhcnkuc2V0KHRoaXMuYmVhY29uTWFudWFsSWQsIGJlYWNvbklkKVxuICAgICAgfVxuXG4gICAgICAvLyBSZWdpc3RlciBiZWFjb24gdHlwZSBcbiAgICAgIHRoaXMuYmVhY29uU3Vic2NyaWJlZEV2ZW50TGlicmFyeVtiZWFjb25JZF0udHlwZSA9IHRoaXMuYmVhY29uQ29uZmlnTWFwW3R5cGVdLnR5cGVcbiAgICB9XG5cbiAgICAvLyBSZWdpc3RlciBldmVudCBmb3IgYmVhY29uXG4gICAgdGhpcy5iZWFjb25TdWJzY3JpYmVkRXZlbnRMaWJyYXJ5W2JlYWNvbklkXS5ldmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8SUJlYWNvbkV2ZW50PigpXG5cbiAgICAvLyBSZXNldFxuICAgIHRoaXMuYmVhY29uVGl0bGUgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbk1lc3NhZ2UgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvblN0YXRpYyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmVhY29uRml4ZWQgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkJsb2NrT3RoZXJzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25NYW51YWxJZCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmVhY29uRm9jdXMgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkZvY3VzU2hpbmUgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbk92ZXJsYXlDb2xvciA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmVhY29uQWxsb3dEdXBsaWNhdGUgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbk5vSG92ZXJFZmZlY3QgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkljb24gPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkljb25Gcm9tRm9udCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmVhY29uU3R5bGVDbGFzcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmVhY29uUmVwbGFjZW1lbnRDbGFzcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmVhY29uQW5pbWF0aW9uQ2xhc3MgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkJ1dHRvbnMgPSB7fVxuXG4gICAgcmV0dXJuIDxFdmVudEVtaXR0ZXI8SUJlYWNvbkV2ZW50Pj50aGlzLmJlYWNvblN1YnNjcmliZWRFdmVudExpYnJhcnlbYmVhY29uSWRdLmV2ZW50XG4gIH1cblxuICAvLyBTZXQgbm90aWZpY2F0aW9uIG1lc3NhZ2UgLyBzdWNjZXNzXG4gIHB1YmxpYyBzdWNjZXNzKC4uLm1lc3NhZ2U6IHN0cmluZ1tdKTogRXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4ge1xuICAgIC8vIFNldCB0aXRsZVxuICAgIChtZXNzYWdlLmxlbmd0aCA+IDEpICYmIG1lc3NhZ2VbMF0gJiYgdGhpcy50aXRsZShtZXNzYWdlWzBdKVxuICAgIC8vIFNldCBib2R5XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uKG1lc3NhZ2VbMV0gfHwgbWVzc2FnZVswXSB8fCB0aGlzLmJlYWNvbk1lc3NhZ2UgfHwgdGhpcy5iZWFjb25Db25maWdNYXAuc3VjY2Vzcy50aXRsZSwgdGhpcy5iZWFjb25UeXBlTWFwLmEpXG4gIH1cblxuICAvLyBTZXQgbm90aWZpY2F0aW9uIG1lc3NhZ2UgLyBlcnJvclxuICBwdWJsaWMgZXJyb3IoLi4ubWVzc2FnZTogc3RyaW5nW10pOiBFdmVudEVtaXR0ZXI8SUJlYWNvbkV2ZW50PiB7XG4gICAgLy8gU2V0IHRpdGxlXG4gICAgKG1lc3NhZ2UubGVuZ3RoID4gMSkgJiYgbWVzc2FnZVswXSAmJiB0aGlzLnRpdGxlKG1lc3NhZ2VbMF0pXG4gICAgLy8gU2V0IGJvZHlcbiAgICByZXR1cm4gdGhpcy5iZWFjb24obWVzc2FnZVsxXSB8fCBtZXNzYWdlWzBdIHx8IHRoaXMuYmVhY29uTWVzc2FnZSB8fCB0aGlzLmJlYWNvbkNvbmZpZ01hcC5lcnJvci50aXRsZSwgdGhpcy5iZWFjb25UeXBlTWFwLmIpXG4gIH1cblxuICAvLyBTZXQgbm90aWZpY2F0aW9uIG1lc3NhZ2UgLyB3YXJuaW5nXG4gIHB1YmxpYyB3YXJuaW5nKC4uLm1lc3NhZ2U6IHN0cmluZ1tdKTogRXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4ge1xuICAgIC8vIFNldCB0aXRsZVxuICAgIChtZXNzYWdlLmxlbmd0aCA+IDEpICYmIG1lc3NhZ2VbMF0gJiYgdGhpcy50aXRsZShtZXNzYWdlWzBdKVxuICAgIC8vIFNldCBib2R5XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uKG1lc3NhZ2VbMV0gfHwgbWVzc2FnZVswXSB8fCB0aGlzLmJlYWNvbk1lc3NhZ2UgfHwgdGhpcy5iZWFjb25Db25maWdNYXAud2FybmluZy50aXRsZSwgdGhpcy5iZWFjb25UeXBlTWFwLmMpXG4gIH1cblxuICAvLyBTZXQgbm90aWZpY2F0aW9uIG1lc3NhZ2UgLyBpbmZvXG4gIHB1YmxpYyBpbmZvKC4uLm1lc3NhZ2U6IHN0cmluZ1tdKTogRXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4ge1xuICAgIC8vIFNldCB0aXRsZVxuICAgIChtZXNzYWdlLmxlbmd0aCA+IDEpICYmIG1lc3NhZ2VbMF0gJiYgdGhpcy50aXRsZShtZXNzYWdlWzBdKVxuICAgIC8vIFNldCBib2R5XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uKG1lc3NhZ2VbMV0gfHwgbWVzc2FnZVswXSB8fCB0aGlzLmJlYWNvbk1lc3NhZ2UgfHwgdGhpcy5iZWFjb25Db25maWdNYXAuaW5mby50aXRsZSwgdGhpcy5iZWFjb25UeXBlTWFwLmQpXG4gIH1cblxuICAvLyBTZXQgbm90aWZpY2F0aW9uIG1lc3NhZ2UgLyBhbGVydFxuICBwdWJsaWMgYWxlcnQoLi4ubWVzc2FnZTogc3RyaW5nW10pOiBFdmVudEVtaXR0ZXI8SUJlYWNvbkV2ZW50PiB7XG4gICAgLy8gU2V0IHRpdGxlXG4gICAgKG1lc3NhZ2UubGVuZ3RoID4gMSkgJiYgbWVzc2FnZVswXSAmJiB0aGlzLnRpdGxlKG1lc3NhZ2VbMF0pXG4gICAgLy8gU2V0IGJvZHlcbiAgICByZXR1cm4gdGhpcy5iZWFjb24obWVzc2FnZVsxXSB8fCBtZXNzYWdlWzBdIHx8IHRoaXMuYmVhY29uTWVzc2FnZSB8fCB0aGlzLmJlYWNvbkNvbmZpZ01hcC5hbGVydC50aXRsZSwgdGhpcy5iZWFjb25UeXBlTWFwLmUpXG4gIH1cblxuICAvLyBXYXRjaCBldmVudHMgZm9yIGJlYWNvbiB3aXRoIHNwZWNpZmllZCBpZFxuICBwdWJsaWMgd2F0Y2goaWQ6IHN0cmluZyB8IHN0cmluZ1tdKTogRXZlbnRFbWl0dGVyPElCZWFjb25XYXRjaGVkRXZlbnQ+IHtcbiAgICAvLyBSZWdpc3RlciB3YXRjaGVkIGlkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaWQpKVxuICAgICAgaWQuZm9yRWFjaChrID0+IHRoaXMuYmVhY29uV2F0Y2hlZEV2ZW50TGlicmFyeS5zZXQoaywgU3RyaW5nKCkpKVxuICAgIGVsc2UgdGhpcy5iZWFjb25XYXRjaGVkRXZlbnRMaWJyYXJ5LnNldChpZCwgU3RyaW5nKCkpXG5cbiAgICByZXR1cm4gdGhpcy5iZWFjb25XYXRjaGVkRXZlbnRUYXNrTWFzdGVyXG4gIH1cblxuICAvLyBXYXRjaCBldmVudHMgZm9yIGFsbCBiZWFjb25zXG4gIHB1YmxpYyBldmVudHMoKTogRXZlbnRFbWl0dGVyPElCZWFjb25XYXRjaGVkRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5iZWFjb25BbGxFdmVudFRhc2tNYXN0ZXJcbiAgfVxuXG4gIC8vIENsb3NlIGJlYWNvbiB3aXRoIGlkXG4gIHB1YmxpYyBjbG9zZU9uZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmVhY29uV2F0Y2hlZEV2ZW50TGlicmFyeS5oYXMoaWQpKSB7XG4gICAgICBjb25zdCBhdXRvSWQgPSA8c3RyaW5nPnRoaXMuYmVhY29uV2F0Y2hlZEV2ZW50TGlicmFyeS5nZXQoaWQpXG5cbiAgICAgIC8vIFJlbW92ZSB0aGUgYmVhY29uXG4gICAgICB0aGlzLmJlYWNvbkxpYnJhcnkgPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmlsdGVyKHggPT4ge1xuICAgICAgICByZXR1cm4gKHguYmlkICE9IGF1dG9JZClcbiAgICAgIH0pXG5cbiAgICAgIHRoaXMuYmVhY29uRXZlbnRUYXNrTWFzdGVyLmVtaXQoe1xuICAgICAgICBkZWxldGU6IHRydWUsXG4gICAgICAgIGlkOiBhdXRvSWRcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLy8gQ2xvc2UgYWxsIGJlYWNvbnNcbiAgcHVibGljIGNsb3NlQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuYmVhY29uTGlicmFyeSA9IHRoaXMuYmVhY29uTGlicmFyeS5maWx0ZXIoeCA9PiB7XG4gICAgICB0aGlzLmJlYWNvbkV2ZW50VGFza01hc3Rlci5lbWl0KHtcbiAgICAgICAgZGVsZXRlOiB0cnVlLFxuICAgICAgICBpZDogeC5iaWRcbiAgICAgIH0pXG5cbiAgICAgIHJldHVybiAhKHguYmlkKVxuICAgIH0pXG4gIH1cblxuICAvLyBDaGVjayBmb3IgcG9zc2libGUgZHVwbGljYXRlXG4gIHByaXZhdGUgaXNOZXdCZWFjb25BRHVwbGljYXRlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZHVwbGljYXRlID0gdGhpcy5iZWFjb25MaWJyYXJ5LmZpbmQoeCA9PiB4LnNpZ25hdHVyZSA9PSBzaWduYXR1cmUpXG4gICAgY29uc3QgYmVhY29uID0gdGhpcy5iZWFjb25Db250YWluZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBkaXYjYmNfJHtkdXBsaWNhdGU/LmJpZH1gKVxuICAgIHJldHVybiBCb29sZWFuKGJlYWNvbiAmJiB0aGlzLndpbmRvdz8uZ2V0Q29tcHV0ZWRTdHlsZShiZWFjb24pLm9wYWNpdHkgPT0gJzEnKVxuICB9XG59Il19
621
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVhY29uLW5vdGlmeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9iZWFjb24tbm90aWZ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBR3hGLE9BQU8sRUFXTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDakIsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQzs7O0FBS2hDLE1BQU0sT0FBTyxtQkFBbUI7SUEyRFY7SUFDb0I7SUEzRGhDLHFCQUFxQixHQUFHLGdCQUFnQixDQUFBO0lBQ3hDLGVBQWUsR0FBaUQ7UUFDdEUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1FBQ3pKLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRTtRQUN6SixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFF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QUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzRSxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdFLENBQUM7SUFFRCxvQ0FBb0M7SUFDNUIsdUJBQXVCLENBQUMsTUFBdUI7UUFDckQsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEssTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEssTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMs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LEVBQUUsQ0FBQyxDQUFDLEdBQUc7YUFDVixDQUFDLENBQUE7WUFFRixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsK0JBQStCO0lBQ3ZCLHFCQUFxQixDQUFDLFNBQWlCO1FBQzdDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsQ0FBQTtRQUN4RSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUMzQixDQUFDO3VHQWxwQlUsbUJBQW1CLDhDQTREcEIsb0JBQW9COzJHQTVEbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQTZESSxNQUFNOzJCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEJlYWNvbk5vdGlmeUNvbXBvbmVudCB9IGZyb20gJy4vYmVhY29uL2JlYWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgSUJlYWNvbkNvbmZpZyxcbiAgSUJlYWNvbklubGluZUNvbmZpZyxcbiAgSUJlYWNvbkdsb2JhbENvbmZpZyxcbiAgSUJlYWNvblR5cGUsXG4gIElCZWFjb25Qb3NpdGlvbkNvbmZpZyxcbiAgSUJlYWNvbkV2ZW50LFxuICBJQmVhY29uV2F0Y2hlZEV2ZW50LFxuICBJQmVhY29uRXZlbnRNZXNzYWdlLFxuICBJQmVhY29uVHlwZUljb24sXG4gIElCZWFjb25CdXR0b25UeXBlLFxuICBCRUFDT05fR0xPQkFMX0NPTkZJRyxcbiAgQkVBQ09OX09WRVJMQVlfQ09MT1IsXG4gIEJFQUNPTl9PVkVSTEFZX0lELFxuICBCRUFDT05fVFlQRV9LRVlTXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQmVhY29uTm90aWZ5U2VydmljZSB7XG4gIHByaXZhdGUgYmVhY29uRGVmYXVsdEljb25LZXlzID0gQkVBQ09OX1RZUEVfS0VZU1xuICBwcml2YXRlIGJlYWNvbkNvbmZpZ01hcDogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IH0gPSB7XG4gICAgYWxlcnQ6IHsgaWNvbjogdGhpcy5iZWFjb25EZWZhdWx0SWNvbktleXNbMF0sIGZvbnRJY29uOiAnZmFsc2UnLCBjbGFzczogJ2JlYWNvbi1tZXNzYWdlLWFsZXJ0JywgdGl0bGU6ICdBbGVydCcsIHN0eWxlOiAnJywgYW5pbWF0aW9uOiAnJywgdHlwZTogJ2FsZXJ0JyB9LFxuICAgIGVycm9yOiB7IGljb246IHRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzWzFdLCBmb250SWNvbjogJ2ZhbHNlJywgY2xhc3M6ICdiZWFjb24tbWVzc2FnZS1lcnJvcicsIHRpdGxlOiAnRXJyb3InLCBzdHlsZTogJycsIGFuaW1hdGlvbjogJycsIHR5cGU6ICdlcnJvcicgfSxcbiAgICBpbmZvOiB7IGljb246IHRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzWzJdLCBmb250SWNvbjogJ2ZhbHNlJywgY2xhc3M6ICdiZWFjb24tbWVzc2FnZS1pbmZvJywgdGl0bGU6ICdJbmZvcm1hdGlvbicsIHN0eWxlOiAnJywgYW5pbWF0aW9uOiAnJywgdHlwZTogJ2luZm8nIH0sXG4gICAgc3VjY2VzczogeyBpY29uOiB0aGlzLmJlYWNvbkRlZmF1bHRJY29uS2V5c1szXSwgZm9udEljb246ICdmYWxzZScsIGNsYXNzOiAnYmVhY29uLW1lc3NhZ2Utc3VjY2VzcycsIHRpdGxlOiAnU3VjY2VzcycsIHN0eWxlOiAnJywgYW5pbWF0aW9uOiAnJywgdHlwZTogJ3N1Y2Nlc3MnIH0sXG4gICAgd2FybmluZzogeyBpY29uOiB0aGlzLmJlYWNvbkRlZmF1bHRJY29uS2V5c1s0XSwgZm9udEljb246ICdmYWxzZScsIGNsYXNzOiAnYmVhY29uLW1lc3NhZ2Utd2FybmluZycsIHRpdGxlOiAnV2FybmluZycsIHN0eWxlOiAnJywgYW5pbWF0aW9uOiAnJywgdHlwZTogJ3dhcm5pbmcnIH1cbiAgfVxuICBwcml2YXRlIGJlYWNvblR5cGVNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgYTogJ3N1Y2Nlc3MnLCBiOiAnZXJyb3InLCBjOiAnd2FybmluZycsIGQ6ICdpbmZvJywgZTogJ2FsZXJ0J1xuICB9XG4gIHByaXZhdGUgYmVhY29uVGl0bGU/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25NZXNzYWdlPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uSWNvbj86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvbk1hbnVhbElkPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uU2VsZWN0ZWRNYW51YWxJZD86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvbkljb25Gcm9tRm9udD86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25TdGF0aWM/OiB0cnVlIHwgbnVtYmVyXG4gIHByaXZhdGUgYmVhY29uRml4ZWQ/OiB0cnVlXG4gIHByaXZhdGUgYmVhY29uQmxvY2tPdGhlcnM/OiB0cnVlXG4gIHByaXZhdGUgYmVhY29uUHJldmVudENsaWNrQ2xvc2U/OiB0cnVlXG4gIHByaXZhdGUgYmVhY29uQWxsb3dEdXBsaWNhdGU/OiB0cnVlXG4gIHByaXZhdGUgYmVhY29uRm9jdXM/OiB0cnVlXG4gIHByaXZhdGUgYmVhY29uRm9jdXNTaGluZT86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25Gb2N1c1NoaW5lU2NhbGU/OiBudW1iZXJcbiAgcHJpdmF0ZSBiZWFjb25PdmVybGF5Q29sb3I/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25TdHlsZUNsYXNzPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uUmVwbGFjZW1lbnRDbGFzcz86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvbkFuaW1hdGlvbkNsYXNzPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uTm9Ib3ZlckVmZmVjdD86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25Gb250V2VpZ2h0VGl0bGU/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25Gb250V2VpZ2h0Qm9keT86IHN0cmluZ1xuICBwcml2YXRlIGJlYWNvbkdsb2JhbFN0YXRpYz86IHRydWUgfCBudW1iZXJcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxGaXhlZD86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxCbG9ja090aGVycz86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxQcmV2ZW50Q2xpY2tDbG9zZT86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxEdXBsaWNhdGU/OiBib29sZWFuXG4gIHByaXZhdGUgYmVhY29uR2xvYmFsTm9Ib3ZlckVmZmVjdD86IHRydWVcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxGb2N1c1NoaW5lU2NhbGU/OiBudW1iZXJcbiAgcHJpdmF0ZSBiZWFjb25HbG9iYWxQb3NpdGlvbmluZz86IElCZWFjb25Qb3NpdGlvbkNvbmZpZ1xuICBwcml2YXRlIGJlYWNvbkdsb2JhbEZvY3VzT3ZlcmxheUNvbG9yPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uR2xvYmFsRm9udFdlaWdodFRpdGxlPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uR2xvYmFsRm9udFdlaWdodEJvZHk/OiBzdHJpbmdcbiAgcHJpdmF0ZSBiZWFjb25Db250YWluZXIhOiBFbGVtZW50UmVmXG4gIHByaXZhdGUgYmVhY29uRGVmYXVsdEFuaW1hdGlvbkNsYXNzTmFtZTogc3RyaW5nID0gJ2JlYWNvbi1tZXNzYWdlLWNvbnRyb2wtYW5pbWF0ZSdcbiAgcHJpdmF0ZSBiZWFjb25TdWNjZXNzb3JCbG9ja2VyQXV0b0lkPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uV2l0aEFjdGl2ZUZvY3VzQXV0b0lkPzogc3RyaW5nXG4gIHByaXZhdGUgYmVhY29uQnV0dG9uczogSUJlYWNvbkJ1dHRvblR5cGUgPSB7fVxuICBwcml2YXRlIGJlYWNvbkZvY3VzT3JkZXJMaWJyYXJ5OiBBcnJheTxzdHJpbmc+ID0gW11cbiAgcHJpdmF0ZSBiZWFjb25TdWJzY3JpYmVkRXZlbnRMaWJyYXJ5OiB7IFtrZXk6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgRXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4gfSB9ID0ge31cbiAgcHJpdmF0ZSBiZWFjb25XYXRjaGVkRXZlbnRMaWJyYXJ5OiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oW10pXG4gIHByaXZhdGUgYmVhY29uV2F0Y2hlZEV2ZW50VGFza01hc3RlcjogRXZlbnRFbWl0dGVyPElCZWFjb25XYXRjaGVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJQmVhY29uV2F0Y2hlZEV2ZW50PigpXG4gIHByaXZhdGUgYmVhY29uQWxsRXZlbnRUYXNrTWFzdGVyOiBFdmVudEVtaXR0ZXI8SUJlYWNvbldhdGNoZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPElCZWFjb25XYXRjaGVkRXZlbnQ+KClcbiAgcHJpdmF0ZSBiZWFjb25Gb2N1c092ZXJsYXlET00/OiBIVE1MRWxlbWVudFxuICBwdWJsaWMgYmVhY29uRXZlbnRUYXNrTWFzdGVyOiBFdmVudEVtaXR0ZXI8eyBba2V5OiBzdHJpbmddOiBib29sZWFufCBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB8IHN0cmluZyB9PigpXG4gIHB1YmxpYyBiZWFjb25MaWJyYXJ5OiBBcnJheTxJQmVhY29uQ29uZmlnPiA9IFtdXG4gIHB1YmxpYyBiZWFjb25MaWJyYXJ5UXVldWU6IEFycmF5PElCZWFjb25Db25maWc+ID0gW11cbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgQEluamVjdChCRUFDT05fR0xPQkFMX0NPTkZJRykgcHJpdmF0ZSBnbG9iYWxDb25maWc/OiBJQmVhY29uR2xvYmFsQ29uZmlnKSB7XG4gICAgdGhpcy5nbG9iYWxDb25maWcgJiYgdGhpcy5yZXNvbHZlR2xvYmFsQ29uZmlnKHRoaXMuZ2xvYmFsQ29uZmlnKVxuICAgIC8vIFJlc29sdmUgZXZlbnRzXG4gICAgdGhpcy5yZXNvbHZlQmVhY29uRXZlbnRzKClcbiAgfVxuXG4gIC8vIFJlc29sdmUgZ2xvYmFsIGNvbmZpZ1xuICBwcml2YXRlIHJlc29sdmVHbG9iYWxDb25maWcoZ2xvYmFsQ29uZmlnOiBJQmVhY29uR2xvYmFsQ29uZmlnKTogdm9pZCB7XG4gICAgaWYgKGdsb2JhbENvbmZpZy5zdGF0aWMpIHtcbiAgICAgIGlmICh0eXBlb2YgZ2xvYmFsQ29uZmlnLnN0YXRpYyA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5iZWFjb25HbG9iYWxGaXhlZCA9IHVuZGVmaW5lZFxuICAgICAgICB0aGlzLmJlYWNvbkdsb2JhbFN0YXRpYyA9IHRydWVcbiAgICAgIH0gZWxzZSB0aGlzLmJlYWNvbkdsb2JhbFN0YXRpYyA9IGdsb2JhbENvbmZpZy5zdGF0aWNcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsQ29uZmlnLmZpeGVkKSB7XG4gICAgICB0aGlzLmJlYWNvbkdsb2JhbFN0YXRpYyA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy5iZWFjb25HbG9iYWxGaXhlZCA9IHRydWVcbiAgICB9XG5cbiAgICBnbG9iYWxDb25maWcucHJldmVudENsaWNrQ2xvc2UgJiYgKHRoaXMuYmVhY29uR2xvYmFsUHJldmVudENsaWNrQ2xvc2UgPSBnbG9iYWxDb25maWcucHJldmVudENsaWNrQ2xvc2UpXG4gICAgZ2xvYmFsQ29uZmlnLmJsb2NrT3RoZXJzICYmICh0aGlzLmJlYWNvbkdsb2JhbEJsb2NrT3RoZXJzID0gZ2xvYmFsQ29uZmlnLmJsb2NrT3RoZXJzKVxuICAgIGdsb2JhbENvbmZpZy5vdmVybGF5Q29sb3IgJiYgKHRoaXMuYmVhY29uR2xvYmFsRm9jdXNPdmVybGF5Q29sb3IgPSBnbG9iYWxDb25maWcub3ZlcmxheUNvbG9yKVxuICAgIGdsb2JhbENvbmZpZy5kdXBsaWNhdGUgJiYgKHRoaXMuYmVhY29uR2xvYmFsRHVwbGljYXRlID0gZ2xvYmFsQ29uZmlnLmR1cGxpY2F0ZSlcbiAgICBnbG9iYWxDb25maWcuaWNvbiAmJiB0aGlzLnJlc29sdmVHbG9iYWxJY29uQ29uZmlnKGdsb2JhbENvbmZpZy5pY29uKVxuICAgIGdsb2JhbENvbmZpZy5zdHlsZUNsYXNzICYmIHRoaXMucmVzb2x2ZUdsb2JhbFByb3BlcnR5Q29uZmlnKGdsb2JhbENvbmZpZy5zdHlsZUNsYXNzLCAnc3R5bGUnKVxuICAgIGdsb2JhbENvbmZpZy5yZXBsYWNlbWVudENsYXNzICYmIHRoaXMucmVzb2x2ZUdsb2JhbFByb3BlcnR5Q29uZmlnKGdsb2JhbENvbmZpZy5yZXBsYWNlbWVudENsYXNzLCAnY2xhc3MnKVxuICAgIGdsb2JhbENvbmZpZy5hbmltYXRpb25DbGFzcyAmJiB0aGlzLnJlc29sdmVHbG9iYWxQcm9wZXJ0eUNvbmZpZyhnbG9iYWxDb25maWcuYW5pbWF0aW9uQ2xhc3MsICdhbmltYXRpb24nKVxuICAgIGdsb2JhbENvbmZpZy5wb3NpdGlvbiAmJiAodGhpcy5iZWFjb25HbG9iYWxQb3NpdGlvbmluZyA9IGdsb2JhbENvbmZpZy5wb3NpdGlvbilcbiAgICBnbG9iYWxDb25maWcubm9Ib3ZlckVmZmVjdCAmJiAodGhpcy5iZWFjb25HbG9iYWxOb0hvdmVyRWZmZWN0ID0gZ2xvYmFsQ29uZmlnLm5vSG92ZXJFZmZlY3QpXG4gICAgZ2xvYmFsQ29uZmlnLnNoaW5lU2NhbGUgJiYgKHRoaXMuYmVhY29uR2xvYmFsRm9jdXNTaGluZVNjYWxlID0gZ2xvYmFsQ29uZmlnLnNoaW5lU2NhbGUpXG4gICAgZ2xvYmFsQ29uZmlnLmZvbnRXZWlnaHRUaXRsZSAmJiAodGhpcy5iZWFjb25HbG9iYWxGb250V2VpZ2h0VGl0bGUgPSBnbG9iYWxDb25maWcuZm9udFdlaWdodFRpdGxlKVxuICAgIGdsb2JhbENvbmZpZy5mb250V2VpZ2h0Qm9keSAmJiAodGhpcy5iZWFjb25HbG9iYWxGb250V2VpZ2h0Qm9keSA9IGdsb2JhbENvbmZpZy5mb250V2VpZ2h0Qm9keSlcbiAgfVxuXG4gIC8vIFJlc29sdmUgZ2xvYmFsIGNvbmZpZyAvIGZvciBwcm9wZXJ0eVxuICBwcml2YXRlIHJlc29sdmVHbG9iYWxQcm9wZXJ0eUNvbmZpZyhjb25maWc6IElCZWFjb25UeXBlLCBwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uZmlnLmFsZXJ0ICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC5hbGVydFtwcm9wZXJ0eV0gPSBjb25maWcuYWxlcnQpXG4gICAgY29uZmlnLmVycm9yICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC5lcnJvcltwcm9wZXJ0eV0gPSBjb25maWcuZXJyb3IpXG4gICAgY29uZmlnLmluZm8gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmluZm9bcHJvcGVydHldID0gY29uZmlnLmluZm8pXG4gICAgY29uZmlnLnN1Y2Nlc3MgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLnN1Y2Nlc3NbcHJvcGVydHldID0gY29uZmlnLnN1Y2Nlc3MpXG4gICAgY29uZmlnLndhcm5pbmcgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLndhcm5pbmdbcHJvcGVydHldID0gY29uZmlnLndhcm5pbmcpXG4gIH1cblxuICAvLyBSZXNvbHZlIGdsb2JhbCBjb25maWcgLyBmb3IgaWNvbnNcbiAgcHJpdmF0ZSByZXNvbHZlR2xvYmFsSWNvbkNvbmZpZyhjb25maWc6IElCZWFjb25UeXBlSWNvbik6IHZvaWQge1xuICAgIGNvbmZpZz8uYWxlcnQ/Lmljb24gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmFsZXJ0Lmljb24gPSBjb25maWcuYWxlcnQuaWNvbikgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmFsZXJ0LmZvbnRJY29uID0gU3RyaW5nKChjb25maWc/LmFsZXJ0Py5mb250SWNvbiB8fCBmYWxzZSkpKVxuICAgIGNvbmZpZz8uZXJyb3I/Lmljb24gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmVycm9yLmljb24gPSBjb25maWcuZXJyb3IuaWNvbikgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmVycm9yLmZvbnRJY29uID0gU3RyaW5nKChjb25maWc/LmVycm9yPy5mb250SWNvbiB8fCBmYWxzZSkpKVxuICAgIGNvbmZpZz8uaW5mbz8uaWNvbiAmJiAodGhpcy5iZWFjb25Db25maWdNYXAuaW5mby5pY29uID0gY29uZmlnLmluZm8uaWNvbikgJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLmluZm8uZm9udEljb24gPSBTdHJpbmcoKGNvbmZpZy5pbmZvLmZvbnRJY29uIHx8IGZhbHNlKSkpXG4gICAgY29uZmlnPy5zdWNjZXNzPy5pY29uICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC5zdWNjZXNzLmljb24gPSBjb25maWcuc3VjY2Vzcy5pY29uKSAmJiAodGhpcy5iZWFjb25Db25maWdNYXAuc3VjY2Vzcy5mb250SWNvbiA9IFN0cmluZygoY29uZmlnLnN1Y2Nlc3MuZm9udEljb24gfHwgZmFsc2UpKSlcbiAgICBjb25maWc/Lndhcm5pbmc/Lmljb24gJiYgKHRoaXMuYmVhY29uQ29uZmlnTWFwLndhcm5pbmcuaWNvbiA9IGNvbmZpZy53YXJuaW5nLmljb24pICYmICh0aGlzLmJlYWNvbkNvbmZpZ01hcC53YXJuaW5nLmZvbnRJY29uID0gU3RyaW5nKChjb25maWcud2FybmluZy5mb250SWNvbiB8fCBmYWxzZSkpKVxuICB9XG5cbiAgLy8gUmVzb2x2ZSBiZWFjb24gZXZlbnRzXG4gIHByaXZhdGUgcmVzb2x2ZUJlYWNvbkV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmJlYWNvbkV2ZW50VGFza01hc3Rlci5zdWJzY3JpYmUoKG1lc3NhZ2U6IElCZWFjb25FdmVudE1lc3NhZ2UpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKG1lc3NhZ2UuaWQpXG4gICAgICBpZiAobWVzc2FnZS5kZWxldGUpIHtcbiAgICAgICAgdGhpcy5yZXNvbHZlUG9zc2libGVCbG9ja2VkQmVhY29ucyhpZClcbiAgICAgICAgdGhpcy5yZXNvbHZlUG9zc2libGVRdWV1ZWRGb2N1cyhpZClcbiAgICAgICAgdGhpcy5wZXJmb3JtRXZlbnRUYXNrKGlkLCB7IG9uOiBmYWxzZSwgb2ZmOiB0cnVlIH0pXG4gICAgICAgIGRlbGV0ZSB0aGlzLmJlYWNvblN1YnNjcmliZWRFdmVudExpYnJhcnlbaWRdXG4gICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UubW91bnQpIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtRXZlbnRUYXNrKGlkLCB7IG9uOiB0cnVlLCBvZmY6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8vIFBlcmZvcm0gZXZlbnQgdGFza1xuICBwcml2YXRlIHBlcmZvcm1FdmVudFRhc2soaWQ6IHN0cmluZywgZXZlbnRPYmplY3Q6IElCZWFjb25FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YW1wID0gdGhpcy5iZWFjb25TdWJzY3JpYmVkRXZlbnRMaWJyYXJ5W2lkXVxuICAgIGNvbnN0IGV2ZW50ID0gPEV2ZW50RW1pdHRlcjxJQmVhY29uRXZlbnQ+PnN0YW1wLmV2ZW50XG4gICAgY29uc3QgbWFudWFsSWQgPSBzdGFtcD8ubWFudWFsSWQ/LnRvU3RyaW5nKCkucmVwbGFjZSgvdW5kZWZpbmVkLywgJycpXG4gICAgZXZlbnQuZW1pdChldmVudE9iamVjdClcbiAgICB0aGlzLmJlYWNvbkFsbEV2ZW50VGFza01hc3Rlci5lbWl0KHsgaWQ6IG1hbnVhbElkIHx8IG51bGwsIHR5cGU6IFN0cmluZyhzdGFtcC50eXBlKSwgLi4uZXZlbnRPYmplY3QgfSlcblxuICAgIC8vIENoZWNrIGlmIHRoaXMgbWFudWFsIGlkIGlzIHdhdGNoZWRcbiAgICBpZiAobWFudWFsSWQgJiYgdGhpcy5iZWFjb25XYXRjaGVkRXZlbnRMaWJyYXJ5LmhhcyhtYW51YWxJZCkpIHtcbiAgICAgIHRoaXMuYmVhY29uV2F0Y2hlZEV2ZW50VGFza01hc3Rlci5lbWl0KHsgaWQ6IG1hbnVhbElkLCB0eXBlOiBTdHJpbmcoc3RhbXAudHlwZSksIC4uLmV2ZW50T2JqZWN0IH0pXG4gICAgICAvLyBDaGVjayBpZiBiZWFjb24gaXMgb2ZmXG4gICAgICBpZiAoZXZlbnRPYmplY3Qub2ZmKSBcbiAgICAgICAgdGhpcy5iZWFjb25XYXRjaGVkRXZlbnRMaWJyYXJ5LmRlbGV0ZShtYW51YWxJZClcbiAgICB9XG4gIH1cblxuICAvLyBSZXNvbHZlIHBvc3NpYmxlIGJsb2NrZWQgYmVhY29uc1xuICBwcml2YXRlIHJlc29sdmVQb3NzaWJsZUJsb2NrZWRCZWFjb25zKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBpZiB0aGlzIGlkIGlzIGJsb2NraW5nIG90aGVyc1xuICAgIGlmIChpZCA9PSB0aGlzLmJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQpIHtcbiAgICAgIGlmICh0aGlzLmJlYWNvbkxpYnJhcnlRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcXVldWVMZW5ndGggPSB0aGlzLmJlYWNvbkxpYnJhcnlRdWV1ZS5sZW5ndGhcbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHF1ZXVlXG4gICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgcXVldWVMZW5ndGg7IHgrKykge1xuICAgICAgICAgIGNvbnN0IG5leHRJbkxpbmUgPSA8SUJlYWNvbkNvbmZpZz50aGlzLmJlYWNvbkxpYnJhcnlRdWV1ZS5zaGlmdCgpXG5cbiAgICAgICAgICAvLyBBZGQgbWVzc2FnZSB0byBsaWJyYXJ5XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0QmVhY29uR2xvYmFsUG9zaXRpb25Db25maWc/LnRvcEJvdHRvbSA9PSAndG9wJylcbiAgICAgICAgICAgIHRoaXMuYmVhY29uTGlicmFyeS51bnNoaWZ0KG5leHRJbkxpbmUpXG4gICAgICAgICAgZWxzZSB0aGlzLmJlYWNvbkxpYnJhcnkucHVzaChuZXh0SW5MaW5lKSAgICBcblxuICAgICAgICAgIC8vIENoZWNrIGlmIHNldCB0byBibG9ja1xuICAgICAgICAgIGlmIChuZXh0SW5MaW5lLmJsb2NrT3RoZXJzKSB7XG4gICAgICAgICAgICB0aGlzLmJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQgPSBuZXh0SW5MaW5lLmJpZFxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiBubyBuZXcgYmVhY29uIGlzIHNldCBhcyBibG9ja2VyIGFuZCB1bnNldCBwcmV2aW91cyB2YWx1ZVxuICAgICAgICBpZiAoaWQgPT0gdGhpcy5iZWFjb25TdWNjZXNzb3JCbG9ja2VyQXV0b0lkKSBcbiAgICAgICAgICB0aGlzLmJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGVsc2UgdGhpcy5iZWFjb25TdWNjZXNzb3JCbG9ja2VyQXV0b0lkID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzb2x2ZSBxdWV1ZWQgYmVhY29uIGZvY3VzXG4gIHByaXZhdGUgcmVzb2x2ZVBvc3NpYmxlUXVldWVkRm9jdXMoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGlmIHRoaXMgaWQgaXMgYWN0aXZlIGZvY3VzIGJlYWNvblxuICAgIGlmIChpZCA9PSB0aGlzLmJlYWNvbldpdGhBY3RpdmVGb2N1c0F1dG9JZCkge1xuICAgICAgaWYgKHRoaXMuYmVhY29uRm9jdXNPcmRlckxpYnJhcnkubGVuZ3RoKSB7XG4gICAgICAgIC8vIFBhc3MgdGhlIG5leHQgZm9jdXNcbiAgICAgICAgdGhpcy5iZWFjb25XaXRoQWN0aXZlRm9jdXNBdXRvSWQgPSB0aGlzLmJlYWNvbkZvY3VzT3JkZXJMaWJyYXJ5LnNoaWZ0KClcbiAgICAgICAgdGhpcy5iZWFjb25FdmVudFRhc2tNYXN0ZXIuZW1pdCh7IGF1dG9EZXRlY3ROZXh0Rm9jdXNCZWFjb246IHRydWUgfSlcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmJlYWNvbldpdGhBY3RpdmVGb2N1c0F1dG9JZCA9IHVuZGVmaW5lZFxuICAgICAgICB0aGlzLmRlc3Ryb3lCZWFjb25Gb2N1c092ZXJsYXkoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEdlbmVyYXRlIHVuaXF1ZSBpZCBmb3IgaXRlbVxuICBwcml2YXRlIGdldCBnZXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSkudG9TdHJpbmcoKS5zcGxpdCgnLCcpLmpvaW4oJycpXG4gIH1cblxuICAvLyBTZXQgYmVhY29uIGNvbnRhaW5lclxuICBwdWJsaWMgc2V0QmVhY29uQ29udGFpbmVyKGNvbnRhaW5lcjogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIHRoaXMuYmVhY29uQ29udGFpbmVyID0gY29udGFpbmVyXG4gIH1cblxuICAvLyBHZXQgYmVhY29uIGNvbnRhaW5lclxuICBwdWJsaWMgZ2V0IGdldEJlYWNvbkNvbnRhaW5lcigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5iZWFjb25Db250YWluZXJcbiAgfVxuXG4gIC8vIEdldCBiZWFjb24gZ2xvYmFsIHBvc2l0aW9uIGNvbmZpZ1xuICBwdWJsaWMgZ2V0IGdldEJlYWNvbkdsb2JhbFBvc2l0aW9uQ29uZmlnKCk6IElCZWFjb25Qb3NpdGlvbkNvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uR2xvYmFsUG9zaXRpb25pbmdcbiAgfVxuXG4gIC8vIEdldCBkZWZhdWx0IGljb24ga2V5c1xuICBwdWJsaWMgZ2V0IGdldEJlYWNvbkRlZmF1bHRJY29uS2V5cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzXG4gIH1cblxuICAvLyBHZXQgYWN0aXZlIGZvY3VzIGJlYWNvbiBpZFxuICBwdWJsaWMgZ2V0IGdldEFjdGl2ZUZvY3VzQmVhY29uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5iZWFjb25XaXRoQWN0aXZlRm9jdXNBdXRvSWRcbiAgfVxuXG4gIC8vIENyZWF0ZSBvdmVybGF5IGZvciBmb2N1c2VkIGJlYWNvblxuICBwdWJsaWMgY3JlYXRlQmVhY29uRm9jdXNPdmVybGF5KG92ZXJsYXlDb2xvcj86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgIG92ZXJsYXkuc2V0QXR0cmlidXRlKCdpZCcsIEJFQUNPTl9PVkVSTEFZX0lEKVxuICAgIG92ZXJsYXkuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gICAgb3ZlcmxheS5zdHlsZS50b3AgPSAnMCdcbiAgICBvdmVybGF5LnN0eWxlLmJvdHRvbSA9ICcwJ1xuICAgIG92ZXJsYXkuc3R5bGUucmlnaHQgPSAnMCdcbiAgICBvdmVybGF5LnN0eWxlLmxlZnQgPSAnMCdcbiAgICBvdmVybGF5LnN0eWxlLnpJbmRleCA9ICc5MDAyJ1xuICAgIG92ZXJsYXkuc3R5bGUuYmFja2dyb3VuZCA9IG92ZXJsYXlDb2xvciB8fCB0aGlzLmJlYWNvbkdsb2JhbEZvY3VzT3ZlcmxheUNvbG9yIHx8IEJFQUNPTl9PVkVSTEFZX0NPTE9SXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nXG5cbiAgICAvLyBQYXNzIG92ZXJsYXkgZWxlbWVudFxuICAgIHRoaXMuYmVhY29uRm9jdXNPdmVybGF5RE9NID0gb3ZlcmxheVxuXG4gICAgdGhpcy5iZWFjb25Db250YWluZXIubmF0aXZlRWxlbWVudC5hcHBlbmRDaGlsZChvdmVybGF5KVxuICB9XG5cbiAgLy8gUmVwYWludCBvdmVybGF5IGZvciBmb2N1c2VkIGJlYWNvblxuICBwdWJsaWMgcmVwYWludEJlYWNvbkZvY3VzT3ZlcmxheShvdmVybGF5Q29sb3I/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5iZWFjb25Gb2N1c092ZXJsYXlET00pXG4gICAgICB0aGlzLmJlYWNvbkZvY3VzT3ZlcmxheURPTS5zdHlsZS5iYWNrZ3JvdW5kID0gb3ZlcmxheUNvbG9yIHx8IHRoaXMuYmVhY29uR2xvYmFsRm9jdXNPdmVybGF5Q29sb3IgfHwgQkVBQ09OX09WRVJMQVlfQ09MT1JcbiAgfVxuXG4gIC8vIERlc3Ryb3kgb3ZlcmxheSBmb3IgZm9jdXNlZCBiZWFjb25cbiAgcHVibGljIGRlc3Ryb3lCZWFjb25Gb2N1c092ZXJsYXkoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJ1xuICAgIHRoaXMuYmVhY29uQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2IycgKyBCRUFDT05fT1ZFUkxBWV9JRCkucmVtb3ZlKClcbiAgICB0aGlzLmJlYWNvbkZvY3VzT3ZlcmxheURPTSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gU2V0IGlkIGZvciBiZWFjb25cbiAgcHVibGljIGlkKGlkOiBzdHJpbmcpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICBpZCAmJiAodGhpcy5iZWFjb25NYW51YWxJZCA9IGlkKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBTZXQgbm90aWZpY2F0aW9uIHRpdGxlXG4gIHB1YmxpYyB0aXRsZSh0aXRsZTogc3RyaW5nKTogQmVhY29uTm90aWZ5U2VydmljZSB7XG4gICAgdGl0bGUgJiYgKHRoaXMuYmVhY29uVGl0bGUgPSB0aXRsZSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gU2V0IG5vdGlmaWNhdGlvbiBtZXNzYWdlXG4gIHB1YmxpYyBtZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIG1lc3NhZ2UgJiYgKHRoaXMuYmVhY29uTWVzc2FnZSA9IG1lc3NhZ2UpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIEhpZ2hsaWdodCBpZCBvZiBiZWFjb24gdG8gdXBkYXRlXG4gIHB1YmxpYyBzZWxlY3QoaWQ6IHN0cmluZyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIGlkICYmICh0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQgPSBpZClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gQ2hhbmdlIG5vdGlmaWNhdGlvbiB0aXRsZVxuICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgbWFudWFsIGlkIC8gYW5kIGlmIGEgYmVhY29uIGlzIHRpZWQgdG8gaXRcbiAgICBpZiAodGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKSB7XG4gICAgICBjb25zdCBiZWFjb25JbmRleCA9IHRoaXMuYmVhY29uTGlicmFyeS5maW5kSW5kZXgoeCA9PiB4Lm1pZCA9PSB0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpXG4gICAgICBpZiAoYmVhY29uSW5kZXggPj0gMClcbiAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS50aXRsZSA9IHRpdGxlXG4gICAgfVxuICB9XG5cbiAgLy8gQ2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlXG4gIHB1YmxpYyBzZXRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgbWFudWFsIGlkIC8gYW5kIGlmIGEgYmVhY29uIGlzIHRpZWQgdG8gaXRcbiAgICBpZiAodGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKSB7XG4gICAgICBjb25zdCBiZWFjb25JbmRleCA9IHRoaXMuYmVhY29uTGlicmFyeS5maW5kSW5kZXgoeCA9PiB4Lm1pZCA9PSB0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpXG4gICAgICBpZiAoYmVhY29uSW5kZXggPj0gMClcbiAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS5ib2R5ID0gbWVzc2FnZVxuICAgIH1cbiAgfVxuXG4gIC8vIENoYW5nZSBub3RpZmljYXRpb24gdGl0bGUgJiBtZXNzYWdlXG4gIHB1YmxpYyBzZXRDb250ZW50KHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIENoZWNrIGZvciBhY3RpdmUgbWFudWFsIGlkIC8gYW5kIGlmIGEgYmVhY29uIGlzIHRpZWQgdG8gaXRcbiAgICBpZiAodGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKSB7XG4gICAgICBjb25zdCBiZWFjb25JbmRleCA9IHRoaXMuYmVhY29uTGlicmFyeS5maW5kSW5kZXgoeCA9PiB4Lm1pZCA9PSB0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpXG4gICAgICBpZiAoYmVhY29uSW5kZXggPj0gMClcbiAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS50aXRsZSA9IHRpdGxlXG4gICAgICAgIHRoaXMuYmVhY29uTGlicmFyeVtiZWFjb25JbmRleF0uYm9keSA9IG1lc3NhZ2VcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgYmVhY29uIGJ1dHRvbiAxXG4gIHB1YmxpYyBzZXRCdXR0b25PbmUodGV4dDogc3RyaW5nLCBjYW5EaXNtaXNzPzogYm9vbGVhbiB8IG51bGwsIGNhbGxiYWNrPzogYW55LCBjYWxsYmFja0FyZ3M/OiBhbnlbXSB8IG51bGwsIHBvc2l0aW9uPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgZm9yIGFjdGl2ZSBtYW51YWwgaWQgLyBhbmQgaWYgYSBiZWFjb24gaXMgdGllZCB0byBpdFxuICAgIGlmICh0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpIHtcbiAgICAgIGNvbnN0IGJlYWNvbkluZGV4ID0gdGhpcy5iZWFjb25MaWJyYXJ5LmZpbmRJbmRleCh4ID0+IHgubWlkID09IHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZClcbiAgICAgIGlmIChiZWFjb25JbmRleCA+PSAwKSB7XG4gICAgICAgICg8SUJlYWNvbkJ1dHRvblR5cGU+dGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS5idXR0b25zKS5vbmUgPSB7XG4gICAgICAgICAgdGV4dDogdGV4dC5zdWJzdHJpbmcoMCwgMTUpLFxuICAgICAgICAgIGNhbkRpc21pc3MsXG4gICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgY2FsbGJhY2tBcmdzLFxuICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgYmVhY29uIGJ1dHRvbiAyXG4gIHB1YmxpYyBzZXRCdXR0b25Ud28odGV4dDogc3RyaW5nLCBjYW5EaXNtaXNzPzogYm9vbGVhbiB8IG51bGwsIGNhbGxiYWNrPzogYW55LCBjYWxsYmFja0FyZ3M/OiBhbnlbXSB8IG51bGwsIHBvc2l0aW9uPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKTogdm9pZCB7XG4gICAgLy8gQ2hlY2sgZm9yIGFjdGl2ZSBtYW51YWwgaWQgLyBhbmQgaWYgYSBiZWFjb24gaXMgdGllZCB0byBpdFxuICAgIGlmICh0aGlzLmJlYWNvblNlbGVjdGVkTWFudWFsSWQpIHtcbiAgICAgIGNvbnN0IGJlYWNvbkluZGV4ID0gdGhpcy5iZWFjb25MaWJyYXJ5LmZpbmRJbmRleCh4ID0+IHgubWlkID09IHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZClcbiAgICAgIGlmIChiZWFjb25JbmRleCA+PSAwKSB7XG4gICAgICAgIGlmICh0aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnM/Lm9uZSkge1xuICAgICAgICAgICg8SUJlYWNvbkJ1dHRvblR5cGU+dGhpcy5iZWFjb25MaWJyYXJ5W2JlYWNvbkluZGV4XS5idXR0b25zKS50d28gPSB7XG4gICAgICAgICAgICB0ZXh0OiB0ZXh0LnN1YnN0cmluZygwLCAxNSksXG4gICAgICAgICAgICBjYW5EaXNtaXNzLFxuICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICBjYWxsYmFja0FyZ3MsXG4gICAgICAgICAgICBwb3NpdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHRoaXMuc2V0QnV0dG9uT25lKHRleHQsIGNhbkRpc21pc3MsIGNhbGxiYWNrLCBjYWxsYmFja0FyZ3MsIHBvc2l0aW9uKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBiZWFjb24gYnV0dG9uIDFcbiAgcHVibGljIHJlbW92ZUJ1dHRvbk9uZSgpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIG1hbnVhbCBpZCAvIGFuZCBpZiBhIGJlYWNvbiBpcyB0aWVkIHRvIGl0XG4gICAgaWYgKHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZCkge1xuICAgICAgY29uc3QgYmVhY29uSW5kZXggPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmluZEluZGV4KHggPT4geC5taWQgPT0gdGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKVxuICAgICAgaWYgKGJlYWNvbkluZGV4ID49IDApIHtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLm9uZSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBiZWFjb24gYnV0dG9uIDJcbiAgcHVibGljIHJlbW92ZUJ1dHRvblR3bygpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIG1hbnVhbCBpZCAvIGFuZCBpZiBhIGJlYWNvbiBpcyB0aWVkIHRvIGl0XG4gICAgaWYgKHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZCkge1xuICAgICAgY29uc3QgYmVhY29uSW5kZXggPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmluZEluZGV4KHggPT4geC5taWQgPT0gdGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKVxuICAgICAgaWYgKGJlYWNvbkluZGV4ID49IDApIHtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLnR3byA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBiZWFjb24gYnV0dG9uc1xuICBwdWJsaWMgcmVtb3ZlQnV0dG9ucygpOiB2b2lkIHtcbiAgICAvLyBDaGVjayBmb3IgYWN0aXZlIG1hbnVhbCBpZCAvIGFuZCBpZiBhIGJlYWNvbiBpcyB0aWVkIHRvIGl0XG4gICAgaWYgKHRoaXMuYmVhY29uU2VsZWN0ZWRNYW51YWxJZCkge1xuICAgICAgY29uc3QgYmVhY29uSW5kZXggPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmluZEluZGV4KHggPT4geC5taWQgPT0gdGhpcy5iZWFjb25TZWxlY3RlZE1hbnVhbElkKVxuICAgICAgaWYgKGJlYWNvbkluZGV4ID49IDApIHtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLm9uZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgKDxJQmVhY29uQnV0dG9uVHlwZT50aGlzLmJlYWNvbkxpYnJhcnlbYmVhY29uSW5kZXhdLmJ1dHRvbnMpLnR3byA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNldCBiZWFjb24gYXMgc3RhdGljIG9yIHdpdGggZGVsYXlcbiAgcHVibGljIHN0YXRpYyhkZWxheT86IG51bWJlcik6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIHRoaXMuYmVhY29uU3RhdGljID0gZGVsYXkgfHwgdHJ1ZVxuICAgIHRoaXMuYmVhY29uRml4ZWQgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gU2V0IGJlYWNvbiBhcyBmaXhlZCB3aGljaCByZW1vdmVzIHRoZSBjbG9zZSBidXR0b24gYW5kIGRpc2FsbG93cyBjbG9zZSBvbiBjbGlja1xuICBwdWJsaWMgZml4ZWQoKTogQmVhY29uTm90aWZ5U2VydmljZSB7XG4gICAgdGhpcy5iZWFjb25TdGF0aWMgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkZpeGVkID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBBbGxvdyBiZWFjb24gdG8gYmxvY2sgb3RoZXJzXG4gIHB1YmxpYyBibG9jaygpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICB0aGlzLmJlYWNvbkJsb2NrT3RoZXJzID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBGb2N1cyBvbiBiZWFjb25cbiAgcHVibGljIGZvY3VzKG92ZXJsYXlDb2xvcj86IHN0cmluZyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIG92ZXJsYXlDb2xvciAmJiAodGhpcy5iZWFjb25PdmVybGF5Q29sb3IgPSBvdmVybGF5Q29sb3IpXG4gICAgdGhpcy5iZWFjb25Gb2N1cyA9IHRydWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gRm9jdXMgYmVhY29uIG9uIGNlbnRlciBzY3JlZW5cbiAgcHVibGljIHNoaW5lKHNjYWxlPzogbnVtYmVyLCBvdmVybGF5Q29sb3I/OiBzdHJpbmcpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICBvdmVybGF5Q29sb3IgJiYgKHRoaXMuYmVhY29uT3ZlcmxheUNvbG9yID0gb3ZlcmxheUNvbG9yKVxuICAgIHRoaXMuYmVhY29uRm9jdXNTaGluZSA9IHRoaXMuYmVhY29uRm9jdXMgPSB0cnVlXG4gICAgc2NhbGUgJiYgKHRoaXMuYmVhY29uRm9jdXNTaGluZVNjYWxlID0gc2NhbGUpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8vIEFkZCBidXR0b24gZm9yIGJlYWNvblxuICBwdWJsaWMgYnV0dG9uKHRleHQ6IHN0cmluZywgY2FuRGlzbWlzcz86IGJvb2xlYW4gfCBudWxsLCBjYWxsYmFjaz86IGFueSwgY2FsbGJhY2tBcmdzPzogYW55W10gfCBudWxsLCBwb3NpdGlvbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0Jyk6IEJlYWNvbk5vdGlmeVNlcnZpY2Uge1xuICAgIGlmICghdGhpcy5iZWFjb25CdXR0b25zPy5vbmUpIHtcbiAgICAgIHRoaXMuYmVhY29uQnV0dG9ucy5vbmUgPSB7XG4gICAgICAgIHRleHQ6IHRleHQuc3Vic3RyaW5nKDAsIDE1KSxcbiAgICAgICAgY2FuRGlzbWlzcyxcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrQXJncyxcbiAgICAgICAgcG9zaXRpb25cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuYmVhY29uQnV0dG9ucy5vbmUgJiYgIXRoaXMuYmVhY29uQnV0dG9ucy50d28pIHtcbiAgICAgIHRoaXMuYmVhY29uQnV0dG9ucy50d28gPSB7XG4gICAgICAgIHRleHQ6IHRleHQuc3Vic3RyaW5nKDAsIDE1KSxcbiAgICAgICAgY2FuRGlzbWlzcyxcbiAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgIGNhbGxiYWNrQXJncyxcbiAgICAgICAgcG9zaXRpb25cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gQWxsb3cgZHVwbGljYXRlIGZvciBiZWFjb25cbiAgcHVibGljIGR1cGxpY2F0ZSgpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICB0aGlzLmJlYWNvbkFsbG93RHVwbGljYXRlID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBTZXQgY29uZmlnIHZhbHVlcyBmb3IgYmVhY29uXG4gIHB1YmxpYyBidWlsZChjb25maWc6IElCZWFjb25JbmxpbmVDb25maWcpOiBCZWFjb25Ob3RpZnlTZXJ2aWNlIHtcbiAgICBpZiAoY29uZmlnLnN0YXRpYykge1xuICAgICAgaWYgKHR5cGVvZiBjb25maWcuc3RhdGljID09ICdib29sZWFuJylcbiAgICAgICAgdGhpcy5zdGF0aWMoKVxuICAgICAgZWxzZSB0aGlzLnN0YXRpYyhOdW1iZXIoY29uZmlnLnN0YXRpYykpXG4gICAgfVxuXG4gICAgY29uZmlnLmZpeGVkICYmIHRoaXMuZml4ZWQoKVxuICAgIGNvbmZpZy5kdXBsaWNhdGUgJiYgdGhpcy5kdXBsaWNhdGUoKVxuICAgIGNvbmZpZy5wcmV2ZW50Q2xpY2tDbG9zZSAmJiAodGhpcy5iZWFjb25QcmV2ZW50Q2xpY2tDbG9zZSA9IGNvbmZpZy5wcmV2ZW50Q2xpY2tDbG9zZSlcbiAgICBjb25maWcuYmxvY2tPdGhlcnMgJiYgKHRoaXMuYmVhY29uQmxvY2tPdGhlcnMgPSBjb25maWcuYmxvY2tPdGhlcnMpXG4gICAgY29uZmlnLmZvY3VzICYmICh0aGlzLmJlYWNvbkZvY3VzID0gY29uZmlnLmZvY3VzKVxuICAgIGNvbmZpZy5zaGluZSAmJiAodGhpcy5iZWFjb25Gb2N1c1NoaW5lID0gdGhpcy5iZWFjb25Gb2N1cyA9IGNvbmZpZy5zaGluZSlcbiAgICBjb25maWcuaWNvbiAmJiAodGhpcy5iZWFjb25JY29uID0gY29uZmlnLmljb24pXG4gICAgY29uZmlnLmZvbnRJY29uICYmICh0aGlzLmJlYWNvbkljb25Gcm9tRm9udCA9IGNvbmZpZy5mb250SWNvbilcbiAgICBjb25maWcuc3R5bGVDbGFzcyAmJiAodGhpcy5iZWFjb25TdHlsZUNsYXNzID0gY29uZmlnLnN0eWxlQ2xhc3MpXG4gICAgY29uZmlnLnJlcGxhY2VtZW50Q2xhc3MgJiYgKHRoaXMuYmVhY29uUmVwbGFjZW1lbnRDbGFzcyA9IGNvbmZpZy5yZXBsYWNlbWVudENsYXNzKVxuICAgIGNvbmZpZy5hbmltYXRpb25DbGFzcyAmJiAodGhpcy5iZWFjb25BbmltYXRpb25DbGFzcyA9IGNvbmZpZy5hbmltYXRpb25DbGFzcylcbiAgICBjb25maWcuYW5pbWF0aW9uQ2xhc3MgJiYgKHRoaXMuYmVhY29uQW5pbWF0aW9uQ2xhc3MgPSBjb25maWcuYW5pbWF0aW9uQ2xhc3MpXG4gICAgY29uZmlnLm92ZXJsYXlDb2xvciAmJiAodGhpcy5iZWFjb25PdmVybGF5Q29sb3IgPSBjb25maWcub3ZlcmxheUNvbG9yKVxuICAgIGNvbmZpZy5ub0hvdmVyRWZmZWN0ICYmICh0aGlzLmJlYWNvbk5vSG92ZXJFZmZlY3QgPSBjb25maWcubm9Ib3ZlckVmZmVjdClcbiAgICBjb25maWcuc2hpbmVTY2FsZSAmJiAodGhpcy5iZWFjb25Gb2N1c1NoaW5lU2NhbGUgPSBjb25maWcuc2hpbmVTY2FsZSlcbiAgICBjb25maWcuZm9udFdlaWdodFRpdGxlICYmICh0aGlzLmJlYWNvbkZvbnRXZWlnaHRUaXRsZSA9IGNvbmZpZy5mb250V2VpZ2h0VGl0bGUpXG4gICAgY29uZmlnLmZvbnRXZWlnaHRCb2R5ICYmICh0aGlzLmJlYWNvbkZvbnRXZWlnaHRCb2R5ID0gY29uZmlnLmZvbnRXZWlnaHRCb2R5KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBjcmVhdGUgbm90aWZpY2F0aW9uIGJlYWNvblxuICBwcml2YXRlIGJlYWNvbihtZXNzYWdlOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IEV2ZW50RW1pdHRlcjxJQmVhY29uRXZlbnQ+IHtcbiAgICAvLyBHZXQgc2lnbmF0dXJlXG4gICAgY29uc3Qgc2lnbmF0dXJlID0gQnVmZmVyLmZyb20oKHRoaXMuYmVhY29uVGl0bGUgfHwgdGhpcy5iZWFjb25Db25maWdNYXBbdHlwZV0udGl0bGUpICsgJy4nICsgbWVzc2FnZSkudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgLy8gR2VuZXJhdGUgYmVhY29uIGlkXG4gICAgY29uc3QgYmVhY29uSWQgPSB0aGlzLmdldElkXG4gICAgLy8gUmVnaXN0ZXIgYmVhY29uIGluIGV2ZW50IGxpYnJhcnlcbiAgICB0aGlzLmJlYWNvblN1YnNjcmliZWRFdmVudExpYnJhcnlbYmVhY29uSWRdID0gT2JqZWN0LmNyZWF0ZSh7fSlcbiAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIGlmIHNldCB0byBwcmV2ZW50IG9yIHByb2NlZWQgaWYgdHVybmVkIG9mZlxuICAgIGlmICh0aGlzLmJlYWNvbkFsbG93RHVwbGljYXRlIHx8ICgoW3VuZGVmaW5lZCwgZmFsc2VdLmluY2x1ZGVzKHRoaXMuYmVhY29uR2xvYmFsRHVwbGljYXRlKSAmJiB0aGlzLmlzTmV3QmVhY29uQUR1cGxpY2F0ZShzaWduYXR1cmUpID09ICExKSB8fCB0aGlzLmJlYWNvbkdsb2JhbER1cGxpY2F0ZSkpIHtcbiAgICAgIGNvbnN0IGJlYWNvbk9iamVjdDogSUJlYWNvbkNvbmZpZyA9IHtcbiAgICAgICAgYmlkOiBiZWFjb25JZCxcbiAgICAgICAgbWlkOiB0aGlzLmJlYWNvbk1hbnVhbElkLFxuICAgICAgICB0eXBlOiB0aGlzLmJlYWNvbkNvbmZpZ01hcFt0eXBlXS5jbGFzcyxcbiAgICAgICAgaWNvbjogdGhpcy5iZWFjb25JY29uIHx8IHRoaXMuYmVhY29uQ29uZmlnTWFwW3R5cGVdLmljb24sXG4gICAgICAgIGZvbnRJY29uOiB0aGlzLmJlYWNvbkljb25Gcm9tRm9udCB8fCAodGhpcy5iZWFjb25Db25maWdNYXBbdHlwZV0uZm9udEljb24gPT0gJ3RydWUnID8gdHJ1ZSA6IHVuZGVmaW5lZCksXG4gICAgICAgIHRpdGxlOiB0aGlzLmJlYWNvblRpdGxlIHx8IHRoaXMuYmVhY29uQ29uZmlnTWFwW3R5cGVdLnRpdGxlLFxuICAgICAgICBzdGF0aWM6IHRoaXMuYmVhY29uU3RhdGljIHx8IHRoaXMuYmVhY29uR2xvYmFsU3RhdGljLFxuICAgICAgICBmaXhlZDogdGhpcy5iZWFjb25GaXhlZCB8fCB0aGlzLmJlYWNvbkdsb2JhbEZpeGVkLFxuICAgICAgICBwcmV2ZW50Q2xpY2tDbG9zZTogdGhpcy5iZWFjb25QcmV2ZW50Q2xpY2tDbG9zZSB8fCB0aGlzLmJlYWNvbkdsb2JhbFByZXZlbnRDbGlja0Nsb3NlLFxuICAgICAgICBzdHlsZUNsYXNzOiB0aGlzLmJlYWNvblN0eWxlQ2xhc3MgfHwgdGhpcy5iZWFjb25Db25maWdNYXBbdHlwZV0uc3R5bGUsXG4gICAgICAgIHJlcGxhY2VtZW50Q2xhc3M6IHRoaXMuYmVhY29uUmVwbGFjZW1lbnRDbGFzcyxcbiAgICAgICAgYW5pbWF0aW9uQ2xhc3M6IHRoaXMuYmVhY29uQW5pbWF0aW9uQ2xhc3MgfHwgdGhpcy5iZWFjb25Db25maWdNYXBbdHlwZV0uYW5pbWF0aW9uIHx8IHRoaXMuYmVhY29uRGVmYXVsdEFuaW1hdGlvbkNsYXNzTmFtZSxcbiAgICAgICAgYmxvY2tPdGhlcnM6IHRoaXMuYmVhY29uQmxvY2tPdGhlcnMgfHwgdGhpcy5iZWFjb25HbG9iYWxCbG9ja090aGVycyxcbiAgICAgICAgYnV0dG9uczogdGhpcy5iZWFjb25CdXR0b25zLFxuICAgICAgICBvdmVybGF5Q29sb3I6IHRoaXMuYmVhY29uT3ZlcmxheUNvbG9yLFxuICAgICAgICBib2R5SHRtbDogPFNhZmVIdG1sPnRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKG1lc3NhZ2UpLFxuICAgICAgICBib2R5OiBtZXNzYWdlLFxuICAgICAgICBmb2N1czogdGhpcy5iZWFjb25Gb2N1cyxcbiAgICAgICAgc2hpbmU6IHRoaXMuYmVhY29uRm9jdXNTaGluZSxcbiAgICAgICAgbm9Ib3ZlckVmZmVjdDogdGhpcy5iZWFjb25Ob0hvdmVyRWZmZWN0IHx8IHRoaXMuYmVhY29uR2xvYmFsTm9Ib3ZlckVmZmVjdCxcbiAgICAgICAgc2hpbmVTY2FsZTogdGhpcy5iZWFjb25Gb2N1c1NoaW5lU2NhbGUgfHwgdGhpcy5iZWFjb25HbG9iYWxGb2N1c1NoaW5lU2NhbGUsXG4gICAgICAgIGZvbnRXZWlnaHRUaXRsZTogdGhpcy5iZWFjb25Gb250V2VpZ2h0VGl0bGUgfHwgdGhpcy5iZWFjb25HbG9iYWxGb250V2VpZ2h0VGl0bGUsXG4gICAgICAgIGZvbnRXZWlnaHRCb2R5OiB0aGlzLmJlYWNvbkZvbnRXZWlnaHRCb2R5IHx8IHRoaXMuYmVhY29uR2xvYmFsRm9udFdlaWdodEJvZHksXG4gICAgICAgIHNpZ25hdHVyZVxuICAgICAgfVxuXG4gICAgICAvLyBTYW5pdGl6ZSBpY29uIGlmIHBhc3NlZFxuICAgICAgaWYgKCFiZWFjb25PYmplY3QuZm9udEljb24gJiYgYmVhY29uT2JqZWN0Lmljb24gJiYgIXRoaXMuYmVhY29uRGVmYXVsdEljb25LZXlzLmluY2x1ZGVzKGJlYWNvbk9iamVjdC5pY29uKSkge1xuICAgICAgICBiZWFjb25PYmplY3Quc3ZnSWNvbiA9IDxTYWZlSHRtbD50aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChiZWFjb25PYmplY3QuaWNvbilcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIGJlYWNvbiBibG9ja2luZyBvdGhlcnMgYW5kIGFkZCBidWlsZCBiZWFjb24gdG8gcXVldWVcbiAgICAgIGlmICh0aGlzLmJlYWNvblN1Y2Nlc3NvckJsb2NrZXJBdXRvSWQpIHtcbiAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5UXVldWUucHVzaChiZWFjb25PYmplY3QpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDaGVjayBpZiBiZWFjb24gY2FuIGJsb2NrIGFuZCByZWdpc3RlciBpZFxuICAgICAgICBpZiAoYmVhY29uT2JqZWN0LmJsb2NrT3RoZXJzKVxuICAgICAgICAgIHRoaXMuYmVhY29uU3VjY2Vzc29yQmxvY2tlckF1dG9JZCA9IGJlYWNvbk9iamVjdC5iaWRcblxuICAgICAgICAvLyBBZGQgbWVzc2FnZSB0byBsaWJyYXJ5XG4gICAgICAgIGlmICh0aGlzLmdldEJlYWNvbkdsb2JhbFBvc2l0aW9uQ29uZmlnPy50b3BCb3R0b20gPT0gJ3RvcCcpXG4gICAgICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5LnVuc2hpZnQoYmVhY29uT2JqZWN0KVxuICAgICAgICBlbHNlIHRoaXMuYmVhY29uTGlicmFyeS5wdXNoKGJlYWNvbk9iamVjdClcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgYmVhY29uIGhhcyBmb2N1c1xuICAgICAgaWYgKHRoaXMuYmVhY29uRm9jdXMpIHtcbiAgICAgICAgaWYgKHRoaXMuYmVhY29uV2l0aEFjdGl2ZUZvY3VzQXV0b0lkKVxuICAgICAgICAgIHRoaXMuYmVhY29uRm9jdXNPcmRlckxpYnJhcnkucHVzaChiZWFjb25PYmplY3QuYmlkKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhpcy5iZWFjb25XaXRoQWN0aXZlRm9jdXNBdXRvSWQgPSBiZWFjb25PYmplY3QuYmlkXG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIGlkIGlzIHNldCBhbmQgcmVnaXN0ZXIgaXRcbiAgICAgIGlmICh0aGlzLmJlYWNvbk1hbnVhbElkKSB7XG4gICAgICAgIHRoaXMuYmVhY29uU3Vic2NyaWJlZEV2ZW50TGlicmFyeVtiZWFjb25JZF0ubWFudWFsSWQgPSB0aGlzLmJlYWNvbk1hbnVhbElkXG4gICAgICAgIC8vIE1hcCB0aGUgZGVmaW5lZCBpZCB0byB0aGUgYXV0by1nZW4gaWRcbiAgICAgICAgdGhpcy5iZWFjb25XYXRjaGVkRXZlbnRMaWJyYXJ5LnNldCh0aGlzLmJlYWNvbk1hbnVhbElkLCBiZWFjb25JZClcbiAgICAgIH1cblxuICAgICAgLy8gUmVnaXN0ZXIgYmVhY29uIHR5cGUgXG4gICAgICB0aGlzLmJlYWNvblN1YnNjcmliZWRFdmVudExpYnJhcnlbYmVhY29uSWRdLnR5cGUgPSB0aGlzLmJlYWNvbkNvbmZpZ01hcFt0eXBlXS50eXBlXG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXIgZXZlbnQgZm9yIGJlYWNvblxuICAgIHRoaXMuYmVhY29uU3Vic2NyaWJlZEV2ZW50TGlicmFyeVtiZWFjb25JZF0uZXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4oKVxuXG4gICAgLy8gUmVzZXRcbiAgICB0aGlzLmJlYWNvblRpdGxlID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25NZXNzYWdlID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25TdGF0aWMgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkZpeGVkID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25CbG9ja090aGVycyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmVhY29uTWFudWFsSWQgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkZvY3VzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25Gb2N1c1NoaW5lID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25PdmVybGF5Q29sb3IgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkFsbG93RHVwbGljYXRlID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25Ob0hvdmVyRWZmZWN0ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25JY29uID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25JY29uRnJvbUZvbnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvblN0eWxlQ2xhc3MgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvblJlcGxhY2VtZW50Q2xhc3MgPSB1bmRlZmluZWRcbiAgICB0aGlzLmJlYWNvbkFuaW1hdGlvbkNsYXNzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5iZWFjb25CdXR0b25zID0ge31cblxuICAgIHJldHVybiA8RXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4+dGhpcy5iZWFjb25TdWJzY3JpYmVkRXZlbnRMaWJyYXJ5W2JlYWNvbklkXS5ldmVudFxuICB9XG5cbiAgLy8gU2V0IG5vdGlmaWNhdGlvbiBtZXNzYWdlIC8gc3VjY2Vzc1xuICBwdWJsaWMgc3VjY2VzcyguLi5tZXNzYWdlOiBzdHJpbmdbXSk6IEV2ZW50RW1pdHRlcjxJQmVhY29uRXZlbnQ+IHtcbiAgICAvLyBTZXQgdGl0bGVcbiAgICAobWVzc2FnZS5sZW5ndGggPiAxKSAmJiBtZXNzYWdlWzBdICYmIHRoaXMudGl0bGUobWVzc2FnZVswXSlcbiAgICAvLyBTZXQgYm9keVxuICAgIHJldHVybiB0aGlzLmJlYWNvbihtZXNzYWdlWzFdIHx8IG1lc3NhZ2VbMF0gfHwgdGhpcy5iZWFjb25NZXNzYWdlIHx8IHRoaXMuYmVhY29uQ29uZmlnTWFwLnN1Y2Nlc3MudGl0bGUsIHRoaXMuYmVhY29uVHlwZU1hcC5hKVxuICB9XG5cbiAgLy8gU2V0IG5vdGlmaWNhdGlvbiBtZXNzYWdlIC8gZXJyb3JcbiAgcHVibGljIGVycm9yKC4uLm1lc3NhZ2U6IHN0cmluZ1tdKTogRXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4ge1xuICAgIC8vIFNldCB0aXRsZVxuICAgIChtZXNzYWdlLmxlbmd0aCA+IDEpICYmIG1lc3NhZ2VbMF0gJiYgdGhpcy50aXRsZShtZXNzYWdlWzBdKVxuICAgIC8vIFNldCBib2R5XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uKG1lc3NhZ2VbMV0gfHwgbWVzc2FnZVswXSB8fCB0aGlzLmJlYWNvbk1lc3NhZ2UgfHwgdGhpcy5iZWFjb25Db25maWdNYXAuZXJyb3IudGl0bGUsIHRoaXMuYmVhY29uVHlwZU1hcC5iKVxuICB9XG5cbiAgLy8gU2V0IG5vdGlmaWNhdGlvbiBtZXNzYWdlIC8gd2FybmluZ1xuICBwdWJsaWMgd2FybmluZyguLi5tZXNzYWdlOiBzdHJpbmdbXSk6IEV2ZW50RW1pdHRlcjxJQmVhY29uRXZlbnQ+IHtcbiAgICAvLyBTZXQgdGl0bGVcbiAgICAobWVzc2FnZS5sZW5ndGggPiAxKSAmJiBtZXNzYWdlWzBdICYmIHRoaXMudGl0bGUobWVzc2FnZVswXSlcbiAgICAvLyBTZXQgYm9keVxuICAgIHJldHVybiB0aGlzLmJlYWNvbihtZXNzYWdlWzFdIHx8IG1lc3NhZ2VbMF0gfHwgdGhpcy5iZWFjb25NZXNzYWdlIHx8IHRoaXMuYmVhY29uQ29uZmlnTWFwLndhcm5pbmcudGl0bGUsIHRoaXMuYmVhY29uVHlwZU1hcC5jKVxuICB9XG5cbiAgLy8gU2V0IG5vdGlmaWNhdGlvbiBtZXNzYWdlIC8gaW5mb1xuICBwdWJsaWMgaW5mbyguLi5tZXNzYWdlOiBzdHJpbmdbXSk6IEV2ZW50RW1pdHRlcjxJQmVhY29uRXZlbnQ+IHtcbiAgICAvLyBTZXQgdGl0bGVcbiAgICAobWVzc2FnZS5sZW5ndGggPiAxKSAmJiBtZXNzYWdlWzBdICYmIHRoaXMudGl0bGUobWVzc2FnZVswXSlcbiAgICAvLyBTZXQgYm9keVxuICAgIHJldHVybiB0aGlzLmJlYWNvbihtZXNzYWdlWzFdIHx8IG1lc3NhZ2VbMF0gfHwgdGhpcy5iZWFjb25NZXNzYWdlIHx8IHRoaXMuYmVhY29uQ29uZmlnTWFwLmluZm8udGl0bGUsIHRoaXMuYmVhY29uVHlwZU1hcC5kKVxuICB9XG5cbiAgLy8gU2V0IG5vdGlmaWNhdGlvbiBtZXNzYWdlIC8gYWxlcnRcbiAgcHVibGljIGFsZXJ0KC4uLm1lc3NhZ2U6IHN0cmluZ1tdKTogRXZlbnRFbWl0dGVyPElCZWFjb25FdmVudD4ge1xuICAgIC8vIFNldCB0aXRsZVxuICAgIChtZXNzYWdlLmxlbmd0aCA+IDEpICYmIG1lc3NhZ2VbMF0gJiYgdGhpcy50aXRsZShtZXNzYWdlWzBdKVxuICAgIC8vIFNldCBib2R5XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uKG1lc3NhZ2VbMV0gfHwgbWVzc2FnZVswXSB8fCB0aGlzLmJlYWNvbk1lc3NhZ2UgfHwgdGhpcy5iZWFjb25Db25maWdNYXAuYWxlcnQudGl0bGUsIHRoaXMuYmVhY29uVHlwZU1hcC5lKVxuICB9XG5cbiAgLy8gV2F0Y2ggZXZlbnRzIGZvciBiZWFjb24gd2l0aCBzcGVjaWZpZWQgaWRcbiAgcHVibGljIHdhdGNoKGlkOiBzdHJpbmcgfCBzdHJpbmdbXSk6IEV2ZW50RW1pdHRlcjxJQmVhY29uV2F0Y2hlZEV2ZW50PiB7XG4gICAgLy8gUmVnaXN0ZXIgd2F0Y2hlZCBpZFxuICAgIGlmIChBcnJheS5pc0FycmF5KGlkKSlcbiAgICAgIGlkLmZvckVhY2goayA9PiB0aGlzLmJlYWNvbldhdGNoZWRFdmVudExpYnJhcnkuc2V0KGssIFN0cmluZygpKSlcbiAgICBlbHNlIHRoaXMuYmVhY29uV2F0Y2hlZEV2ZW50TGlicmFyeS5zZXQoaWQsIFN0cmluZygpKVxuXG4gICAgcmV0dXJuIHRoaXMuYmVhY29uV2F0Y2hlZEV2ZW50VGFza01hc3RlclxuICB9XG5cbiAgLy8gV2F0Y2ggZXZlbnRzIGZvciBhbGwgYmVhY29uc1xuICBwdWJsaWMgZXZlbnRzKCk6IEV2ZW50RW1pdHRlcjxJQmVhY29uV2F0Y2hlZEV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuYmVhY29uQWxsRXZlbnRUYXNrTWFzdGVyXG4gIH1cblxuICAvLyBDbG9zZSBiZWFjb24gd2l0aCBpZFxuICBwdWJsaWMgY2xvc2VPbmUoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmJlYWNvbldhdGNoZWRFdmVudExpYnJhcnkuaGFzKGlkKSkge1xuICAgICAgY29uc3QgYXV0b0lkID0gPHN0cmluZz50aGlzLmJlYWNvbldhdGNoZWRFdmVudExpYnJhcnkuZ2V0KGlkKVxuXG4gICAgICAvLyBSZW1vdmUgdGhlIGJlYWNvblxuICAgICAgdGhpcy5iZWFjb25MaWJyYXJ5ID0gdGhpcy5iZWFjb25MaWJyYXJ5LmZpbHRlcih4ID0+IHtcbiAgICAgICAgcmV0dXJuICh4LmJpZCAhPSBhdXRvSWQpXG4gICAgICB9KVxuXG4gICAgICB0aGlzLmJlYWNvbkV2ZW50VGFza01hc3Rlci5lbWl0KHtcbiAgICAgICAgZGVsZXRlOiB0cnVlLFxuICAgICAgICBpZDogYXV0b0lkXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIENsb3NlIGFsbCBiZWFjb25zXG4gIHB1YmxpYyBjbG9zZUFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLmJlYWNvbkxpYnJhcnkgPSB0aGlzLmJlYWNvbkxpYnJhcnkuZmlsdGVyKHggPT4ge1xuICAgICAgdGhpcy5iZWFjb25FdmVudFRhc2tNYXN0ZXIuZW1pdCh7XG4gICAgICAgIGRlbGV0ZTogdHJ1ZSxcbiAgICAgICAgaWQ6IHguYmlkXG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gISh4LmJpZClcbiAgICB9KVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIHBvc3NpYmxlIGR1cGxpY2F0ZVxuICBwcml2YXRlIGlzTmV3QmVhY29uQUR1cGxpY2F0ZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHRoaXMuYmVhY29uTGlicmFyeS5maW5kKHggPT4geC5zaWduYXR1cmUgPT0gc2lnbmF0dXJlKVxuICAgIHJldHVybiBCb29sZWFuKGR1cGxpY2F0ZSlcbiAgfVxufSJdfQ==