raain-app 1.6.21 → 1.6.22

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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.6.21] - 2025-12-15
11
+
10
12
  ## [1.6.20] - 2025-12-14
11
13
 
12
14
  ### Added
@@ -464,6 +464,8 @@ export class RaainDetailsComponent {
464
464
  const center = this.rainNode.getCenter();
465
465
  this.coordinates = new MapLatLng(center.lat, center.lng);
466
466
  this.teamNode = await this.profileService.getTeam(this.rainNode.getLink(TeamNode.TYPE).getId());
467
+ // Load all gauges linked to the rainNode on map
468
+ await this.compareManager.setGaugesInMap();
467
469
  if (this.periodBegin && this.periodEnd) {
468
470
  this.updateRefreshManagerPeriod();
469
471
  await this.refreshManager.refresh(false, this.toggleAdmin);
@@ -518,4 +520,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
518
520
  }], radarService: [{
519
521
  type: Input
520
522
  }] } });
521
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tZGV0YWlscy9yYWFpbi1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1kZXRhaWxzL3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxHQUlSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxxQkFBcUIsRUFBOEIsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25FLE9BQU8sRUFBMkIsb0JBQW9CLEVBQWlCLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7O0FBS3hGLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQVF2QixNQUFNLE9BQU8scUJBQXFCO0lBMEU5QixZQUNjLE9BQWdCLEVBQ1QsR0FBc0I7UUFEN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNULFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBM0RwQyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBMENsQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFJbEMsc0JBQWlCLEdBQXVCLEVBQUUsQ0FBQztRQUMzQyw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFFakQsOERBQThEO1FBQ3ZELDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUNsQyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQ0FBMkIsR0FBVyxFQUFFLENBQUM7UUFDN0IsY0FBUyxHQUFHLFNBQVMsQ0FBQztR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QyxRQUFRO3NCQURkLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2ZpbGVTZXJ2aWNlfSBmcm9tICcuLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHtDYXJ0ZXNpYW5NZWFzdXJlVmFsdWUsIFF1YWxpdHlJbmRpY2F0b3IsIFJhaW5Ob2RlLCBUZWFtTm9kZX0gZnJvbSAncmFhaW4tbW9kZWwnO1xuaW1wb3J0IHtEYXRlUmFuZ2UsIE1hcExhdExuZywgVGltZWZyYW1lQ29udGFpbmVyc30gZnJvbSAncmFhaW4tdWknO1xuaW1wb3J0IHtDb21wYXJlTWFuYWdlciwgRnJhbWVTZXQsIG1hcERhdGVSYW5nZVRvU3RyaW5nLCBSZWZyZXNoTWFuYWdlcn0gZnJvbSAnLi4vdG9vbHMnO1xuaW1wb3J0IHtYWVR5cGV9IGZyb20gJy4uL3h5dHlwZSc7XG5pbXBvcnQge1JhZGFyU2VydmljZX0gZnJvbSAnLi4vcmFkYXIuc2VydmljZSc7XG5pbXBvcnQge1N0b3JhZ2V9IGZyb20gJy4uL3N0b3JhZ2Uuc2VydmljZSc7XG5cbmxldCBURVNUX0RFVEVDVElPTiA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncmFhaW4tZGV0YWlscycsXG4gICAgdGVtcGxhdGVVcmw6ICdyYWFpbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsncmFhaW4tZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSYWFpbkRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSE9VUl9NUyA9IDYwICogNjAwMDA7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREFZX01TID0gMjQgKiA2MCAqIDYwICogMTAwMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvZ2dsZUFkbWluOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJhaW5Ob2RlOiBSYWluTm9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb21wYXJlTWFuYWdlcjogQ29tcGFyZU1hbmFnZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVmcmVzaE1hbmFnZXI6IFJlZnJlc2hNYW5hZ2VyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHByb2ZpbGVTZXJ2aWNlOiBQcm9maWxlU2VydmljZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByYWRhclNlcnZpY2U6IFJhZGFyU2VydmljZTtcblxuICAgIHB1YmxpYyBhdmFpbGFibGVQcm92aWRlcnM6IHN0cmluZ1tdID0gW107XG4gICAgcHVibGljIGF2YWlsYWJsZVRpbWVTdGVwczogbnVtYmVyW10gPSBbXTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRQcm92aWRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBzZWxlY3RlZFRpbWVTdGVwOiBudW1iZXI7XG5cbiAgICBwdWJsaWMgcGVyaW9kQmVnaW46IERhdGU7XG4gICAgcHVibGljIHBlcmlvZEVuZDogRGF0ZTtcblxuICAgIC8vIHB1YmxpYyBVSSB2YXJpYWJsZXNcbiAgICBwdWJsaWMgdGVhbU5vZGU6IFRlYW1Ob2RlO1xuICAgIHB1YmxpYyBwZXJpb2RCZWdpbkFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZEVuZEFzU3RyaW5nOiBzdHJpbmc7XG4gICAgcHVibGljIHBlcmlvZER1cmF0aW9uQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgZGF0ZVNob3duOiBEYXRlO1xuICAgIHB1YmxpYyBjb29yZGluYXRlczogTWFwTGF0TG5nO1xuICAgIHB1YmxpYyBib3JkZXJzOiBNYXBMYXRMbmdbXTtcbiAgICBwdWJsaWMgdGltZWZyYW1lQ29udGFpbmVyczogVGltZWZyYW1lQ29udGFpbmVycztcbiAgICBwdWJsaWMgY3VycmVudFRpbWVmcmFtZVRhcmdldDogRnJhbWVTZXQ7XG4gICAgcHVibGljIHRpbWVmcmFtZURhdGVzOiBEYXRlW107XG4gICAgcHVibGljIGNvdW50UG9pbnRzOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIHN0eWxlOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlczoge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9W107XG4gICAgfVtdO1xuICAgIHB1YmxpYyBjb3VudHNQZXJpb2Q6IHtcbiAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgIHByb2dyZXNzPzogbnVtYmVyO1xuICAgIH07XG5cbiAgICBwdWJsaWMgZ2F1Z2VTZWxlY3RlZFBvaW50czoge1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBzdHlsZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdO1xuICAgIH1bXTtcbiAgICBwdWJsaWMgdG9nZ2xlSGlzdG9yeTogYm9vbGVhbjtcbiAgICBwdWJsaWMgdG9nZ2xlTWFwOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVDb21wYXJlOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVHYXVnZU1lYXN1cmVzOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVSZW1vdmVDb21wYXJlRHVwbGljYXRlOiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVDdW11bGF0aXZlOiBib29sZWFuO1xuICAgIHB1YmxpYyByZWZyZXNoSW5Qcm9ncmVzczogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3VtRGV0YWlsczogc3RyaW5nO1xuICAgIHB1YmxpYyBzaG93UGl4ZWxNYXJrZXJzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzQWRtaW46IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dGdWxsRXJyb3I6IGJvb2xlYW47XG4gICAgcHVibGljIHNob3dRdWFsaXR5TW9kYWw6IGJvb2xlYW47XG4gICAgcHVibGljIHF1YWxpdHlJbmRpY2F0b3JzOiBRdWFsaXR5SW5kaWNhdG9yW10gPSBbXTtcbiAgICBwdWJsaWMgcXVhbGl0eUluZGljYXRvcnNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBDYWNoZWQgY29tcHV0ZWQgdmFsdWVzICh0byBhdm9pZCBtZXRob2QgY2FsbHMgaW4gdGVtcGxhdGVzKVxuICAgIHB1YmxpYyBwZXJjZW50T2ZDb21wdXRhdGlvbnM6IG51bWJlciA9IDA7XG4gICAgcHVibGljIHBlcmNlbnRPZkltYWdlczogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgdHJ1bmNhdGVkRXJyb3I6IHN0cmluZyA9ICcnO1xuICAgIHB1YmxpYyBjdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXM6IG51bWJlciA9IDEwO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBEYXRlUmFuZ2UgPSBEYXRlUmFuZ2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHN0b3JhZ2U6IFN0b3JhZ2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIHByaXZhdGUgc3RhdGljIFBlcmlvZERpc3BsYXkoZGF0ZTogRGF0ZSB8IHN0cmluZykge1xuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICBkID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgICAgICAgICBjb25zdCB1c2VyVGltZXpvbmVPZmZzZXQgPSBkLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDtcbiAgICAgICAgICAgIGQgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSAtIHVzZXJUaW1lem9uZU9mZnNldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhhbXBsZUZvcm1hdHRlZERhdGUgPSAnMjAxNy0wNi0wMVQwODozMCc7XG4gICAgICAgIHJldHVybiBkLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIGV4YW1wbGVGb3JtYXR0ZWREYXRlLmxlbmd0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgRGF0ZVVUQyhkYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaGFzSVNPRm9ybWF0ID0gZGF0ZS5tYXRjaCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9XFwuXFxkezN9WiQvKTtcbiAgICAgICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgaWYgKCFoYXNJU09Gb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJUaW1lem9uZU9mZnNldCA9IGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgICAgICAgZCA9IG5ldyBEYXRlKGQuZ2V0VGltZSgpIC0gdXNlclRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBNYXBDb3VudFRvRGF0ZVZhbHVlKGM6IFhZVHlwZSk6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlOiBSYWFpbkRldGFpbHNDb21wb25lbnQuRGF0ZVVUQyhjLm5hbWUpLFxuICAgICAgICAgICAgdmFsdWU6IE1hdGgubWluKDEwMCwgYy54KSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBvcGVuUXVhbGl0eU1vZGFsKCkge1xuICAgICAgICB0aGlzLnNob3dRdWFsaXR5TW9kYWwgPSB0cnVlO1xuICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucmFpbk5vZGU/LmlkKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldEluZGljYXRvcnModGhpcy5yYWluTm9kZS5pZCk7XG4gICAgICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzID0gcmVzdWx0LmluZGljYXRvcnM7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBjbG9zZVF1YWxpdHlNb2RhbCgpIHtcbiAgICAgICAgdGhpcy5zaG93UXVhbGl0eU1vZGFsID0gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9ybWF0RGF0ZShkYXRlU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpICtcbiAgICAgICAgICAgICcgJyArXG4gICAgICAgICAgICBkYXRlLnRvTG9jYWxlVGltZVN0cmluZyhbXSwge2hvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCd9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBmZXRjaERhdGEoZm9jdXNEYXRlOiBEYXRlLCBmb2N1c1JhbmdlOiBEYXRlUmFuZ2UpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuICAgICAgICAgICAgdmFsdWVzLnB1c2goe2RhdGU6IG5ldyBEYXRlKDIwMjAgKyBpLCAwKSwgdmFsdWU6IDEwfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmFrZURhdGEgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFiZWw6ICclIFJhaW55JyxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJyUgSW1hZ2VzJyxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vICB7XG4gICAgICAgICAgICAvLyAgICAgIGxhYmVsOiAnJSBRdWFsaXR5JyxcbiAgICAgICAgICAgIC8vICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgIC8vICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgLy8gIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgcmFuZ2UgPSBtYXBEYXRlUmFuZ2VUb1N0cmluZyhmb2N1c1JhbmdlKTtcbiAgICAgICAgbGV0IGRhdGEgPSBmYWtlRGF0YTtcbiAgICAgICAgaWYgKCF0aGlzLnJhaW5Ob2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb2N1c1JhbmdlID09PSBEYXRlUmFuZ2UuQ0VOVFVSWSkge1xuICAgICAgICAgICAgLy8gZmFrZVxuICAgICAgICB9IGVsc2UgaWYgKGZvY3VzUmFuZ2UgPT09IERhdGVSYW5nZS5IT1VSKSB7XG4gICAgICAgICAgICBjb25zdCBob3VyQ291bnRzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRDb3VudHNIb3VyKHRoaXMucmFpbk5vZGUuaWQsIHtcbiAgICAgICAgICAgICAgICBwZXJpb2RCZWdpbjogZm9jdXNEYXRlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRhdGEgPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1JhaW55IENvdW50JyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdsaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBob3VyQ291bnRzLnJhaW55Q291bnQubWFwKFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICclIEltYWdlcycsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBob3VyQ291bnRzLnBlcmNlbnRJbWFnZXMubWFwKFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdSYWlueSBTdW0nLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2xpbmUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGhvdXJDb3VudHMucmFpbnlTdW0ubWFwKFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50cyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0Q291bnRzKHRoaXMucmFpbk5vZGUuaWQsIHtcbiAgICAgICAgICAgICAgICByYW5nZSxcbiAgICAgICAgICAgICAgICBwZXJpb2RCZWdpbjogZm9jdXNEYXRlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRhdGEgPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJyUgUmFpbnknLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogY291bnRzLnBlcmNlbnRSYWlueS5tYXAoUmFhaW5EZXRhaWxzQ29tcG9uZW50Lk1hcENvdW50VG9EYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJyUgSW1hZ2VzJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGNvdW50cy5wZXJjZW50SW1hZ2VzLm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgZmV0Y2hEYXRhIERPTkUgJHtyYW5nZX1gLCBkYXRhKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0aGF0IHByZXNlcnZlcyB0aGUgYXN5bmMgbmF0dXJlIG9mIGZldGNoRGF0YVxuICAgIHB1YmxpYyBmZXRjaERhdGFXcmFwcGVyID0gYXN5bmMgKGZvY3VzRGF0ZTogRGF0ZSwgZm9jdXNSYW5nZTogRGF0ZVJhbmdlKSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZldGNoRGF0YShmb2N1c0RhdGUsIGZvY3VzUmFuZ2UpO1xuICAgIH07XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoYW5nZShjaGFuZ2VzKS50aGVuKChpZ25vcmVkKSA9PiB7fSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuY2xlYW5BbGwoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkVuYWJsZUNvdW50SGlzdG9yeVRhYihyYWluOiBSYWluTm9kZSkge1xuICAgICAgICBpZiAoIXRoaXMudG9nZ2xlSGlzdG9yeSkge1xuICAgICAgICAgICAgdGhpcy5jb3VudFBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25QZXJpb2RCZWdpbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgPz8gdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcblxuICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoZXZlbnQpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUGVyaW9kRW5kQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZSA/PyB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZCA9IG5ldyBEYXRlKG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuXG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW4gPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMuZ2V0RHVyYXRpb25JbkhvdXJzKCkgKiBSYWFpbkRldGFpbHNDb21wb25lbnQuSE9VUl9NU1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kQmVnaW4nLCB0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy51cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoX2V2ZW50OiBvYmplY3QpIHtcbiAgICAgICAgY29uc3QgZHVyYXRpb25JbkhvdXJzID0gdGhpcy5nZXREdXJhdGlvbkluSG91cnMoKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmQgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpICsgZHVyYXRpb25JbkhvdXJzICogUmFhaW5EZXRhaWxzQ29tcG9uZW50LkhPVVJfTVNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tcGVyaW9kRW5kJywgdGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2REdXJhdGlvbkluSG91cnMnLCBkdXJhdGlvbkluSG91cnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlZnJlc2hNYW5hZ2VyUGVyaW9kKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5Db3VudChkYXRlQ2hhbmdlZDogRGF0ZSkge1xuICAgICAgICBjb25zdCBkYXRlU3RyaW5nID1cbiAgICAgICAgICAgIGRhdGVDaGFuZ2VkLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDExKSArXG4gICAgICAgICAgICBkYXRlQ2hhbmdlZC50b0xvY2FsZVRpbWVTdHJpbmcoKS5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICAgIHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyA9ICcxJztcblxuICAgICAgICBpZiAodGhpcy50b2dnbGVDdW11bGF0aXZlKSB7XG4gICAgICAgICAgICAvLyBDdW11bGF0aXZlOiBzZWxlY3QgcGVyaW9kRW5kXG4gICAgICAgICAgICB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nID0gZGF0ZVN0cmluZztcbiAgICAgICAgICAgIGF3YWl0IHRoaXMub25QZXJpb2RFbmRDaGFuZ2UobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBHcmFudWxhcjogc2VsZWN0IHBlcmlvZEJlZ2luXG4gICAgICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBkYXRlU3RyaW5nO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5vblBlcmlvZEJlZ2luQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgfVxuXG4gICAgYXN5bmMgb25EYXRlQ2hhbmdlSW5NYXAoZGF0ZVNob3duOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuZGF0ZVNob3duID0gZGF0ZVNob3duO1xuICAgICAgICBhd2FpdCB0aGlzLmZldGNoQW5kVXBkYXRlTWFwKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIuc2V0UmVwb3J0UGVyaW9kKHRoaXMuZGF0ZVNob3duKTtcbiAgICB9XG5cbiAgICBhc3luYyBvblN1bUNoYW5nZUluTWFwKHN1bTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc3VtRGV0YWlscyA9IHN1bTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkdhdWdlU2VsZWN0SW5NYXAobWFwTGF0TG5nOiBNYXBMYXRMbmcpIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VzRmlsdGVyZWQgPSB0aGlzLmNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luTWFwLmZpbHRlcihcbiAgICAgICAgICAgIChnKSA9PiBnLmxhdCA9PT0gbWFwTGF0TG5nLmxhdCAmJiBnLmxuZyA9PT0gbWFwTGF0TG5nLmxuZ1xuICAgICAgICApO1xuICAgICAgICBpZiAoZ2F1Z2VzRmlsdGVyZWQubGVuZ3RoICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ2F1Z2VTZWxlY3RlZCA9IGdhdWdlc0ZpbHRlcmVkWzBdO1xuXG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdhdWdlVmFsdWVzKHtpZDogZ2F1Z2VTZWxlY3RlZC5pZCwgbmFtZTogZ2F1Z2VTZWxlY3RlZC5uYW1lfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZWxlY3RHYXVnZShnYXVnZVNlbGVjdGVkLmlkLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoR2F1Z2VWYWx1ZXMoZ2F1Z2VTZWxlY3RlZDoge2lkOiBzdHJpbmc7IG5hbWU6IHN0cmluZ30pIHtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZVNob3dCZWdpbiA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkgLSBSYWFpbkRldGFpbHNDb21wb25lbnQuREFZX01TXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGdhdWdlVmFsdWVTaG93RW5kID0gbmV3IERhdGUodGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpICsgUmFhaW5EZXRhaWxzQ29tcG9uZW50LkRBWV9NUyk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93QmVnaW4uc2V0SG91cnMoMCwgMCk7XG4gICAgICAgIGdhdWdlVmFsdWVTaG93RW5kLnNldEhvdXJzKDIzLCA1OSk7XG5cbiAgICAgICAgY29uc3QgZ2F1Z2VNZWFzdXJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0R2F1Z2VNZWFzdXJlcyhcbiAgICAgICAgICAgIGdhdWdlU2VsZWN0ZWQuaWQsXG4gICAgICAgICAgICBnYXVnZVZhbHVlU2hvd0JlZ2luLFxuICAgICAgICAgICAgZ2F1Z2VWYWx1ZVNob3dFbmRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZXM6IHtkYXRlOiBEYXRlOyB2YWx1ZTogbnVtYmVyfVtdID0gZ2F1Z2VNZWFzdXJlcy5tYXAoKGdtKSA9PiB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgY29uc3QgY2FydGVzaWFuTWVhc3VyZVZhbHVlID0gbmV3IENhcnRlc2lhbk1lYXN1cmVWYWx1ZShnbS52YWx1ZXNbMF0gYXMgYW55KTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGF0ZTogZ20uZGF0ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY2FydGVzaWFuTWVhc3VyZVZhbHVlLmdldENhcnRlc2lhblZhbHVlcygpWzBdLnZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50cyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogZ2F1Z2VTZWxlY3RlZC5uYW1lLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGdhdWdlVmFsdWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25HYXVnZVNlbGVjdEluQ29tcGFyZShlOiB7cG9pbnQ6IFhZVHlwZTsgY29tcGFyZUluZGV4OiBudW1iZXJ9KSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEdhdWdlVmFsdWVzKHtpZDogZS5wb2ludC5pZCwgbmFtZTogZS5wb2ludC5uYW1lfSk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21wYXJlTWFuYWdlci5zZWxlY3RHYXVnZShlLnBvaW50LmlkLCBlLmNvbXBhcmVJbmRleCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25Ub2dnbGVNYXAoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICAvLyBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgLy8gICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFwKCk7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBvblRvZ2dsZVBpeGVsTWFya2VycygpIHtcbiAgICAgICAgLy8gVG9nZ2xlIGlzIGJvdW5kIHRvIHNob3dQaXhlbE1hcmtlcnMsIHJhYWluLW1hcCBoYW5kbGVzIG1hcmtlciBkaXNwbGF5XG4gICAgfVxuXG4gICAgYXN5bmMgdG9nZ2xlQ3VtdWxhdGl2ZUNoYW5nZWQoXyRldmVudDogRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tdG9nZ2xlQ3VtdWxhdGl2ZScsIHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSk7XG4gICAgICAgIHRoaXMuZGF0ZVNob3duID0gdGhpcy5nZXREYXRlQmFzZWRPbkN1bXVsYXRpdmVNb2RlKHRoaXMudGltZWZyYW1lRGF0ZXMpO1xuICAgICAgICB0aGlzLnVwZGF0ZUN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlcygpO1xuICAgICAgICBpZiAodGhpcy50b2dnbGVNYXApIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVmcmVzaE1hbmFnZXJQZXJpb2QoKTsgLy8gVXBkYXRlIGN1bXVsYXRpdmUgZmxhZyBiZWZvcmUgcmVmcmVzaFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZUN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlcygpIHtcbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSkge1xuICAgICAgICAgICAgLy8gQ3VtdWxhdGl2ZSBtb2RlOiB1c2UgcGVyaW9kIGR1cmF0aW9uXG4gICAgICAgICAgICB0aGlzLmN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlcyA9IHBhcnNlRmxvYXQodGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nKSAqIDYwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gR3JhbnVsYXIgbW9kZTogdXNlIHNlbGVjdGVkVGltZVN0ZXBcbiAgICAgICAgICAgIHRoaXMuY3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzID0gdGhpcy5zZWxlY3RlZFRpbWVTdGVwIHx8IDEwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgb25Qcm92aWRlckNoYW5nZWQoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdmlkZXIgPSAoJGV2ZW50IGFzIEN1c3RvbUV2ZW50KT8uZGV0YWlsPy52YWx1ZTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tc2VsZWN0ZWRQcm92aWRlcicsIHRoaXMuc2VsZWN0ZWRQcm92aWRlcik7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwbHlSZWZyZXNoTWFuYWdlclNldHRpbmdzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25UaW1lU3RlcENoYW5nZWQoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVN0ZXAgPSAoJGV2ZW50IGFzIEN1c3RvbUV2ZW50KT8uZGV0YWlsPy52YWx1ZTtcbiAgICAgICAgdGhpcy5zdG9yYWdlLnNldCgncmFhaW4tc2VsZWN0ZWRUaW1lU3RlcCcsIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBwbHlSZWZyZXNoTWFuYWdlclNldHRpbmdzKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgbG9hZFByb3ZpZGVycygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhaW5Ob2RlPy5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0UHJvdmlkZXJzKHRoaXMucmFpbk5vZGUuaWQpO1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVQcm92aWRlcnMgPSByZXN1bHQucHJvdmlkZXJzO1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVUaW1lU3RlcHMgPSByZXN1bHQudGltZVN0ZXBJbk1pbnV0ZXM7XG5cbiAgICAgICAgICAgIC8vIExvYWQgc2F2ZWQgc2VsZWN0aW9ucyBvciB1c2UgZGVmYXVsdHNcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlciA9XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlLmdldCgncmFhaW4tc2VsZWN0ZWRQcm92aWRlcicpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuYXZhaWxhYmxlUHJvdmlkZXJzLmxlbmd0aCA+IDAgPyB0aGlzLmF2YWlsYWJsZVByb3ZpZGVyc1swXSA6ICdSYWFpbicpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVTdGVwID1cbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2UuZ2V0KCdyYWFpbi1zZWxlY3RlZFRpbWVTdGVwJykgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5hdmFpbGFibGVUaW1lU3RlcHMubGVuZ3RoID4gMCA/IHRoaXMuYXZhaWxhYmxlVGltZVN0ZXBzWzBdIDogMTApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTZXQgZmFsbGJhY2sgdmFsdWVzXG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVByb3ZpZGVycyA9IFsnUmFhaW4nXTtcbiAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlVGltZVN0ZXBzID0gWzUsIDEwLCAxNSwgMzAsIDYwXTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlciA9ICdSYWFpbic7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVN0ZXAgPSAxMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBwcm92aWRlciBhbmQgdGltZVN0ZXAgb24gcmVmcmVzaE1hbmFnZXJcbiAgICAgICAgaWYgKHRoaXMucmVmcmVzaE1hbmFnZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXIucHJvdmlkZXIgPSB0aGlzLnNlbGVjdGVkUHJvdmlkZXI7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnRpbWVTdGVwSW5NaW51dGVzID0gdGhpcy5zZWxlY3RlZFRpbWVTdGVwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uQ2hhbmdlRGV0ZWN0aW9uVGVzdChyYWluTm9kZTogUmFpbk5vZGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coVEVTVF9ERVRFQ1RJT04rKywgJ29uQ2hhbmdlRGV0ZWN0aW9uVGVzdCcpO1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgdXBkYXRlVHJ1bmNhdGVkRXJyb3IoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5yZWZyZXNoTWFuYWdlcj8ubGFzdEVycm9yIHx8ICcnO1xuICAgICAgICBpZiAoZXJyb3IubGVuZ3RoIDw9IDgwKSB7XG4gICAgICAgICAgICB0aGlzLnRydW5jYXRlZEVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cnVuY2F0ZWRFcnJvciA9IGVycm9yLnN1YnN0cmluZygwLCA4MCkgKyAnLi4uJztcbiAgICB9XG5cbiAgICB1cGRhdGVDYWNoZWRWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGVyY2VudE9mSW1hZ2VzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlUGVyY2VudE9mQ29tcHV0YXRpb25zKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVHJ1bmNhdGVkRXJyb3IoKTtcbiAgICAgICAgdGhpcy51cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoTWFwKCkge1xuICAgICAgICB0aGlzLmdhdWdlU2VsZWN0ZWRQb2ludHMgPSBbXTtcbiAgICAgICAgdGhpcy5kYXRlU2hvd24gPSB0aGlzLmdldERhdGVCYXNlZE9uQ3VtdWxhdGl2ZU1vZGUoKTtcbiAgICAgICAgdGhpcy5ib3JkZXJzID0gW107XG5cbiAgICAgICAgdGhpcy5jb21wYXJlTWFuYWdlci5jbGVhbkFsbCgpO1xuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNldEdhdWdlc0luTWFwKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGFzeW5jIHNldFBlcmlvZE9mTm93KCkge1xuICAgICAgICBjb25zdCBsYXN0MzBtbiA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGxhc3QzMG1uLnNldE1pbnV0ZXMobGFzdDMwbW4uZ2V0TWludXRlcygpIC0gMzApO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPVxuICAgICAgICAgICAgbGFzdDMwbW4udG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTEpICsgbGFzdDMwbW4udG9Mb2NhbGVUaW1lU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDUpO1xuICAgICAgICB0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcgPSAnMSc7XG4gICAgICAgIGF3YWl0IHRoaXMub25QZXJpb2RCZWdpbkNoYW5nZShudWxsKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICB9XG5cbiAgICB1cGRhdGVQZXJjZW50T2ZJbWFnZXMoKSB7XG4gICAgICAgIGlmICghdGhpcy5jb3VudHNQZXJpb2Q/LnBlcmNlbnRJbWFnZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wZXJjZW50T2ZJbWFnZXMgPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZHVyaW5nUGVyaW9kID0gdGhpcy5jb3VudHNQZXJpb2QucGVyY2VudEltYWdlcy5maWx0ZXIoXG4gICAgICAgICAgICAoYSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmlvZEJlZ2luLmdldFRpbWUoKSA8PSBuZXcgRGF0ZShhLm5hbWUpLmdldFRpbWUoKSAmJlxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKGEubmFtZSkuZ2V0VGltZSgpIDw9IHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdW1tZWQgPSBkdXJpbmdQZXJpb2QucmVkdWNlKChhLCBiKSA9PiBhICsgKGIueCA/PyAwKSwgMCk7XG4gICAgICAgIHRoaXMucGVyY2VudE9mSW1hZ2VzID0gTWF0aC5yb3VuZChzdW1tZWQgLyBkdXJpbmdQZXJpb2QubGVuZ3RoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVQZXJjZW50T2ZDb21wdXRhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHRpbWVsaW5lID0gdGhpcy5yZWZyZXNoTWFuYWdlcj8uZ2V0VGltZWxpbmVGcmFtZVNldCgpO1xuICAgICAgICBpZiAoIXRpbWVsaW5lPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMucGVyY2VudE9mQ29tcHV0YXRpb25zID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVsaW5lV2l0aENvbXB1dGF0aW9uID0gdGltZWxpbmUuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+ICEhYS5yYWluQ29tcHV0YXRpb25DdW11bGF0aXZlSWQgfHwgISFhLnJhaW5Db21wdXRhdGlvbklkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHJhdGlvID0gdGltZWxpbmVXaXRoQ29tcHV0YXRpb24ubGVuZ3RoIC8gdGltZWxpbmUubGVuZ3RoO1xuICAgICAgICB0aGlzLnBlcmNlbnRPZkNvbXB1dGF0aW9ucyA9IE1hdGgucm91bmQocmF0aW8gKiAxMDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZShmYWxsYmFja0RhdGVzPzogRGF0ZVtdKTogRGF0ZSB7XG4gICAgICAgIGlmIChmYWxsYmFja0RhdGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlRXhpc3RzID0gZmFsbGJhY2tEYXRlcy5zb21lKChkKSA9PiBkLmdldFRpbWUoKSA9PT0gdGhpcy5kYXRlU2hvd24/LmdldFRpbWUoKSk7XG4gICAgICAgICAgICBpZiAoIWRhdGVFeGlzdHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVDdW11bGF0aXZlXG4gICAgICAgICAgICAgICAgICAgID8gZmFsbGJhY2tEYXRlc1tmYWxsYmFja0RhdGVzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgICAgIDogZmFsbGJhY2tEYXRlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVDdW11bGF0aXZlID8gdGhpcy5wZXJpb2RFbmQgOiB0aGlzLnBlcmlvZEJlZ2luO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q3VtdWxhdGl2ZUhvdXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPyBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZykgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RHVyYXRpb25JbkhvdXJzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5jdW11bGF0aXZlID0gdGhpcy50b2dnbGVDdW11bGF0aXZlO1xuXG4gICAgICAgIC8vIEFsaWduIGRhdGVzIHRvIDUtbWludXRlIGJvdW5kYXJpZXMgKGZsb29yKSBmb3IgY29uc2lzdGVuY3kgd2l0aCByYWFpbi1ncm91bmRcbiAgICAgICAgY29uc3QgYWxpZ25UbzVtaW5GbG9vciA9IChkYXRlOiBEYXRlKTogRGF0ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgICAgICBjb25zdCBhbGlnbmVkTWludXRlcyA9IE1hdGguZmxvb3IobWludXRlcyAvIDUpICogNTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgICBhbGlnbmVkTWludXRlcyxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wZXJpb2QgPSB7XG4gICAgICAgICAgICBiZWdpbjogYWxpZ25UbzVtaW5GbG9vcih0aGlzLnBlcmlvZEJlZ2luKSxcbiAgICAgICAgICAgIGVuZDogYWxpZ25UbzVtaW5GbG9vcih0aGlzLnBlcmlvZEVuZCksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmZXRjaEFuZFVwZGF0ZU1hcCgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5mZXRjaChcbiAgICAgICAgICAgIHRoaXMuZGF0ZVNob3duLFxuICAgICAgICAgICAgdGhpcy50b2dnbGVHYXVnZU1lYXN1cmVzLFxuICAgICAgICAgICAgdGhpcy5nZXRDdW11bGF0aXZlSG91cnMoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lZnJhbWVUYXJnZXQgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyLmdldFRpbWVsaW5lU2VsZWN0ZWRGcmFtZVNldCgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGFwcGx5UmVmcmVzaE1hbmFnZXJTZXR0aW5ncygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlZnJlc2hNYW5hZ2VyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wcm92aWRlciA9IHRoaXMuc2VsZWN0ZWRQcm92aWRlcjtcbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci50aW1lU3RlcEluTWludXRlcyA9IHRoaXMuc2VsZWN0ZWRUaW1lU3RlcDtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFuQWxsKCkge1xuICAgICAgICB0aGlzLmJvcmRlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5pc0FkbWluID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGltZWZyYW1lQ29udGFpbmVycyA9IG5ldyBUaW1lZnJhbWVDb250YWluZXJzKFtdKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGltZWZyYW1lVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IFtdO1xuICAgICAgICB0aGlzLmNvdW50UG9pbnRzID0gW107XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0ge3Byb2dyZXNzOiAwLCBxdWV1ZVJ1bm5pbmc6IDAsIHBlcmNlbnRJbWFnZXM6IFtdfTtcbiAgICAgICAgdGhpcy5nYXVnZVNlbGVjdGVkUG9pbnRzID0gW107XG5cbiAgICAgICAgdGhpcy50b2dnbGVIaXN0b3J5ID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlTWFwID0gdHJ1ZTtcbiAgICAgICAgdGhpcy50b2dnbGVDb21wYXJlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlR2F1Z2VNZWFzdXJlcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnRvZ2dsZVJlbW92ZUNvbXBhcmVEdXBsaWNhdGUgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPSB0aGlzLnN0b3JhZ2UuZ2V0KCdyYWFpbi10b2dnbGVDdW11bGF0aXZlJyk7XG5cbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbiA9IG5ldyBEYXRlKHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXBlcmlvZEJlZ2luJykpO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZCA9IG5ldyBEYXRlKHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXBlcmlvZEVuZCcpKTtcbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbkFzU3RyaW5nID0gUmFhaW5EZXRhaWxzQ29tcG9uZW50LlBlcmlvZERpc3BsYXkodGhpcy5wZXJpb2RCZWdpbik7XG4gICAgICAgIHRoaXMucGVyaW9kRW5kQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEVuZCk7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSB0aGlzLnBlcmlvZEVuZC5nZXRUaW1lKCkgLSB0aGlzLnBlcmlvZEJlZ2luLmdldFRpbWUoKTtcbiAgICAgICAgdGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nID0gJycgKyBkdXJhdGlvbk1zIC8gUmFhaW5EZXRhaWxzQ29tcG9uZW50LkhPVVJfTVM7XG5cbiAgICAgICAgdGhpcy5kYXRlU2hvd24gPSB0aGlzLmdldERhdGVCYXNlZE9uQ3VtdWxhdGl2ZU1vZGUoKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dGdWxsRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93UXVhbGl0eU1vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnMgPSBbXTtcbiAgICAgICAgdGhpcy5xdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNvbXBhcmVNYW5hZ2VyPy5jbGVhbkFsbCgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyPy5jbGVhbkFsbCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5jbGVhbkFsbCgpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlZFZhbHVlcygpO1xuICAgICAgICBhd2FpdCB0aGlzLmluaXRSYWluKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgaW5pdFJhaW4oKSB7XG4gICAgICAgIGlmICghdGhpcy5yYWluTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0FkbWluID0gdGhpcy5wcm9maWxlU2VydmljZS5pc0FkbWluKCk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5yYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXIucmFpbk5vZGUgPSB0aGlzLnJhaW5Ob2RlO1xuXG4gICAgICAgIC8vIExvYWQgcHJvdmlkZXJzIGFuZCBzZXQgb24gcmVmcmVzaE1hbmFnZXJcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkUHJvdmlkZXJzKCk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5zZXRNZXRob2RzKFxuICAgICAgICAgICAgdGhpcy5vblJlZnJlc2hJblByb2dyZXNzLmJpbmQodGhpcyksXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaERvbmUuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHRoaXMub25GZXRjaERvbmUuYmluZCh0aGlzKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMucmFpbk5vZGUuZ2V0Q2VudGVyKCk7XG4gICAgICAgIHRoaXMuY29vcmRpbmF0ZXMgPSBuZXcgTWFwTGF0TG5nKGNlbnRlci5sYXQsIGNlbnRlci5sbmcpO1xuICAgICAgICB0aGlzLnRlYW1Ob2RlID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRUZWFtKFxuICAgICAgICAgICAgdGhpcy5yYWluTm9kZS5nZXRMaW5rKFRlYW1Ob2RlLlRZUEUpLmdldElkKClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5wZXJpb2RCZWdpbiAmJiB0aGlzLnBlcmlvZEVuZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgb25SZWZyZXNoSW5Qcm9ncmVzcyhcbiAgICAgICAgY291bnRQZXJpb2RzOiB7XG4gICAgICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgICAgICBxdWV1ZVJ1bm5pbmc/OiBudW1iZXI7XG4gICAgICAgICAgICBwcm9ncmVzcz86IG51bWJlcjtcbiAgICAgICAgfSxcbiAgICAgICAgdGltZWZyYW1lRGF0ZXM6IERhdGVbXVxuICAgICkge1xuICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jb3VudHNQZXJpb2QgPSBjb3VudFBlcmlvZHM7XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aW1lZnJhbWVEYXRlcztcbiAgICAgICAgdGhpcy51cGRhdGVDYWNoZWRWYWx1ZXMoKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBvblJlZnJlc2hEb25lKHRpbWVmcmFtZURhdGVzOiBEYXRlW10pIHtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVEYXRlcyA9IHRpbWVmcmFtZURhdGVzO1xuICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZU1hcCAmJiB0aW1lZnJhbWVEYXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSh0aW1lZnJhbWVEYXRlcyk7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlU2hvd24pIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZldGNoQW5kVXBkYXRlTWFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uRmV0Y2hEb25lKHRpbWVmcmFtZUNvbnRhaW5lcnM/OiBUaW1lZnJhbWVDb250YWluZXJzKSB7XG4gICAgICAgIGlmICh0aW1lZnJhbWVDb250YWluZXJzKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWVmcmFtZUNvbnRhaW5lcnMgPSB0aW1lZnJhbWVDb250YWluZXJzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hhbmdlKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdCgpO1xuICAgIH1cbn1cbiIsIjwhLS0gTWFpbiBjb250ZW50IGNvbnRhaW5lciAtLT5cbjxkaXYgKm5nSWY9XCJyYWluTm9kZVwiIGNsYXNzPVwicmFhaW4tZGV0YWlscy1jb250YWluZXJcIj5cblxuICAgIDwhLS0gUGVyaW9kIHNlbGVjdGlvbiBzZWN0aW9uIC0tPlxuICAgIDxpb24tY2FyZCBjbGFzcz1cInBlcmlvZC1jYXJkXCI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2Qtcm93XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZUhpc3RvcnkgPSAhdG9nZ2xlSGlzdG9yeTsgb25FbmFibGVDb3VudEhpc3RvcnlUYWIocmFpbk5vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2FsZW5kYXItY2xlYXItb3V0bGluZVwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwidG9nZ2xlSGlzdG9yeSA/ICdjaGV2cm9uLWRvd24nIDogJ2NoZXZyb24tZm9yd2FyZCdcIiBzbG90PVwiZW5kXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2Qtc3RhcnQgaW9uLWhpZGUtbWQtZG93blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwib25QZXJpb2RCZWdpbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBlcmlvZEJlZ2luQXNTdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXRpbWUtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLWR1cmF0aW9uIGlvbi1oaWRlLW1kLWRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25EaXNtaXNzKT1cIm9uUGVyaW9kRHVyYXRpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBlcmlvZER1cmF0aW9uQXNTdHJpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkdXJhdGlvbi1zZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJwZXJpb2REdXJhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiMC4yNVwiPjE1IG1pbnV0ZXM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjAuNVwiPjMwIG1pbnV0ZXM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjFcIj4xIGhvdXI8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjJcIj4yIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIzXCI+MyBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiNFwiPjQgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjVcIj41IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCI2XCI+NiBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiOFwiPjggaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjEwXCI+MTAgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjEyXCI+MTIgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdJZj1cImlzQWRtaW5cIiB2YWx1ZT1cIjI0XCI+MjQgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXN0YXJ0IGlvbi1oaWRlLW1kLWRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uUGVyaW9kRW5kQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdG9nZ2xlQ3VtdWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInBlcmlvZEVuZEFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS1jdW11bGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIFtjbGFzcy50ZXh0LXByaW1hcnldPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRvZ2dsZUN1bXVsYXRpdmUgPyAnQ3VtdWxhdGl2ZScgOiAnR3JhbnVsYXInIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlIChpb25DaGFuZ2UpPVwidG9nZ2xlQ3VtdWxhdGl2ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gSGlkZGVuIGxhYmVsIGZvciBjaGFuZ2UgZGV0ZWN0aW9uICh1bmNvbW1lbnQgdG8gZGVidWcpXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbi1sYWJlbFwiPnt7IG9uQ2hhbmdlRGV0ZWN0aW9uVGVzdChyYWluTm9kZSkgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEhpc3RvcmljYWwgbWFwIHNlY3Rpb24gLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidG9nZ2xlSGlzdG9yeVwiIGNsYXNzPVwicGVyaW9kLWNvbnRyb2xzXCI+XG4gICAgICAgICAgICAgICAgPHJhYWluLWRhdGUtZHluYW1pYyAoY2hhbmdlZERhdGUpPVwib25EYXRlQ2hhbmdlSW5Db3VudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SGVpZ2h0XT1cIjMwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmV0Y2hEYXRhXT1cImZldGNoRGF0YVdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BvaW50c109XCJjb3VudFBvaW50c1wiPlxuICAgICAgICAgICAgICAgIDwvcmFhaW4tZGF0ZS1keW5hbWljPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPCEtLSBNYXAgcGVyZm9ybWFuY2UgLS0+XG4gICAgPGlvbi1ncmlkIGNsYXNzPVwibWFwLXBlcmZvcm1hbmNlXCI+XG4gICAgICAgIDxpb24tcm93IGlkPVwicHJvZ3Jlc3NBbmRSZWZyZXNoXCI+XG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cInByb3ZpZGVyLXNlbGVjdGlvblwiIHNpemU9XCIxMlwiIHNpemUtbWQ9XCI2XCI+XG4gICAgICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9wZW5RdWFsaXR5TW9kYWwoKVwiIGNsYXNzPVwicXVhbGl0eS1pbmZvLWJ1dHRvblwiIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICB7eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBWZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiaGVscC1jaXJjbGUtb3V0bGluZVwiIHNsb3Q9XCJlbmRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXZhaWxhYmxlUHJvdmlkZXJzLmxlbmd0aCA+IDAgfHwgYXZhaWxhYmxlVGltZVN0ZXBzLmxlbmd0aCA+IDBcIiBjbGFzcz1cInNlbGVjdGlvbi1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3QgKGlvbkNoYW5nZSk9XCJvblByb3ZpZGVyQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkUHJvdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJQcm92aWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IFByb3ZpZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gKm5nRm9yPVwibGV0IHByb3ZpZGVyIG9mIGF2YWlsYWJsZVByb3ZpZGVyc1wiIFt2YWx1ZV09XCJwcm92aWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHByb3ZpZGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Q+XG5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3QgKGlvbkNoYW5nZSk9XCJvblRpbWVTdGVwQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdGVkVGltZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJUaW1lIFN0ZXBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBUaW1lIFN0ZXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBhdmFpbGFibGVUaW1lU3RlcHNcIiBbdmFsdWVdPVwic3RlcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0ZXAgfX0gbWluXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgc2l6ZT1cIjEyXCIgc2l6ZS1tZD1cIjZcIj5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLW1hcmdpbi1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBlcmNlbnRPZkNvbXB1dGF0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwZXJjZW50T2ZDb21wdXRhdGlvbnMgfX0lIEltYWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImNvdW50c1BlcmlvZC5wcm9ncmVzc1wiIGNsYXNzPVwicHJvZ3Jlc3MtaW5kaWNhdG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBQcm9ncmVzczoge3sgY291bnRzUGVyaW9kLnByb2dyZXNzIH19Li4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIXBlcmNlbnRPZkNvbXB1dGF0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBpbWFnZSBhdmFpbGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJyZWZyZXNoTWFwKClcIiBbZGlzYWJsZWRdPVwicmVmcmVzaEluUHJvZ3Jlc3NcIiBjbGFzcz1cInJlZnJlc2gtYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIFJlZnJlc2ggTWFwXG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICA8L2lvbi1yb3c+XG5cbiAgICAgICAgPCEtLSBzdGF0dXMgdXBkYXRlIHJvdyAtLT5cbiAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICA8IS0tIFByb2dyZXNzIGNvbCAtLT5cbiAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyXG4gICAgICAgICAgICAgICAgICAgIFtidWZmZXJdPVwiKGNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpKSswLjAxXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwicmVmcmVzaEluUHJvZ3Jlc3MgPyAndmlzaWJsZScgOiAnaGlkZGVuJ1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgPC9pb24tcHJvZ3Jlc3MtYmFyPlxuXG4gICAgICAgICAgICA8IS0tIEVycm9yIGNvbCAtLT5cbiAgICAgICAgICAgIDxpb24tY29sIChjbGljayk9XCJzaG93RnVsbEVycm9yID0gIXNob3dGdWxsRXJyb3JcIiAqbmdJZj1cInJlZnJlc2hNYW5hZ2VyLmxhc3RFcnJvclwiIGNsYXNzPVwiZXJyb3Itcm93XCJcbiAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIxMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcnJvci1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBjbGFzcz1cImVycm9yLWljb25cIiBuYW1lPVwid2FybmluZy1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmV4cGFuZGVkXT1cInNob3dGdWxsRXJyb3JcIiBjbGFzcz1cImVycm9yLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHNob3dGdWxsRXJyb3IgPyByZWZyZXNoTWFuYWdlci5sYXN0RXJyb3IgOiB0cnVuY2F0ZWRFcnJvciB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzaG93RnVsbEVycm9yID8gJ2NoZXZyb24tdXAnIDogJ2NoZXZyb24tZG93bidcIiBjbGFzcz1cImVycm9yLWNhcmV0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuICAgIDwvaW9uLWdyaWQ+XG5cbiAgICA8IS0tIE1hcCBzZWN0aW9uIC0tPlxuICAgIDxpb24tY2FyZCBjbGFzcz1cIm1hcC1jYXJkXCI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50IGNsYXNzPVwibWFwLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxpb24tZ3JpZD5cbiAgICAgICAgICAgICAgICA8aW9uLXJvdyAqbmdJZj1cInRvZ2dsZU1hcCAmJiBwZXJjZW50T2ZJbWFnZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNYXAgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWNvbCBjbGFzcz1cIm1hcC1jb2x1bW5cIiBzaXplLWxnPVwiN1wiIHNpemUtbWQ9XCIxMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmFhaW4tbWFwICNyYWFpbk1hcFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWREYXRlKT1cIm9uRGF0ZUNoYW5nZUluTWFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZWRTdW0pPVwib25TdW1DaGFuZ2VJbk1hcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZE1hcmtlcik9XCJvbkdhdWdlU2VsZWN0SW5NYXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29vcmRpbmF0ZXNdPVwiY29vcmRpbmF0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlc109XCJjdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0RGF0ZV09XCJkYXRlU2hvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hcmtlcnNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2F1Z2VzOiBjb21wYXJlTWFuYWdlci5nYXVnZXNJbk1hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXVnZXNJbkNvbXBhcmU6IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luQ29tcGFyZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEdhdWdlczogY29tcGFyZU1hbmFnZXIuc2VsZWN0ZWRHYXVnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzOiBjb21wYXJlTWFuYWdlci5zZWxlY3RlZFBpeGVscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHNTb2x1dGlvbjogY29tcGFyZU1hbmFnZXIucGl4ZWxzU29sdXRpb25zPy5sZW5ndGggPyBjb21wYXJlTWFuYWdlci5waXhlbHNTb2x1dGlvbnNbMF0gOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZHM6IGNvbXBhcmVNYW5hZ2VyLnNwZWVkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0N1bXVsYXRpdmVdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1Zpc2libGVQaXhlbE1hcmtlcnNdPVwic2hvd1BpeGVsTWFya2Vyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VtRm5dPVwicmVmcmVzaE1hbmFnZXIuc3VtRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1bVZhbHVlc109XCJyZWZyZXNoTWFuYWdlci5zdW1WYWx1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbWVmcmFtZUNvbnRhaW5lcnNdPVwidGltZWZyYW1lQ29udGFpbmVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGltZWZyYW1lRGF0ZXNdPVwidGltZWZyYW1lRGF0ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JhYWluLW1hcD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlY2huaWNhbCBkZXRhaWxzIChjb2xsYXBzaWJsZSBmb3IgY2xlYW5lciBVSSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJ0ZWNobmljYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5JbWFnZSBEZXRhaWxzPC9zdW1tYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+Q29tcHV0ZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGUgfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlZlcnNpb246PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkxhdW5jaGVkIGJ5Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcExhdW5jaGVkQnkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5UaW1lIHNwZW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcFRpbWVTcGVudEluTXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5EYXRlOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERhdGU/LnRvSVNPU3RyaW5nKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBEYXRlIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5XYXRlciBpbiB0aGUgbWFwOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHN1bURldGFpbHMgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi10b2dnbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpb25DaGFuZ2UpPVwib25Ub2dnbGVQaXhlbE1hcmtlcnMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dQaXhlbE1hcmtlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogOHB4OyB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+U291cmNlIERCWiBtaW46PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNaW4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Tb3VyY2UgREJaIG1heDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBPcmlnaW5hbE1heCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tY29sPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGF0YSBwYW5lbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgKm5nSWY9XCIhIWNvbXBhcmVNYW5hZ2VyLmNvbXBhcmVWZXJzaW9uXCIgY2xhc3M9XCJkYXRhLWNvbHVtblwiIHNpemUtbGc9XCI1XCIgc2l6ZS1tZD1cIjEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1wYW5lbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29tcGFyZSBzdGFjayBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBhcmUtc3RhY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJhYWluLWNvbXBhcmUtc3RhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRQb2ludCk9XCJvbkdhdWdlU2VsZWN0SW5Db21wYXJlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb21wYXJlTWFuYWdlcl09XCJjb21wYXJlTWFuYWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1bXVsYXRpdmVdPVwidG9nZ2xlQ3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3JhYWluLWNvbXBhcmUtc3RhY2s+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRlY2huaWNhbCBkZXRhaWxzIChjb2xsYXBzaWJsZSBmb3IgY2xlYW5lciBVSSkgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9XCJ0ZWNobmljYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3VtbWFyeT5Db21wYXJlIERldGFpbHM8L3N1bW1hcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyd3YXJuaW5nJzogcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRG9uZURhdGU/LmdldFRpbWUoKSA+IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5RG9uZURhdGU/LmdldFRpbWUoKSArIDYwMDAwfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+Q29tcHV0ZWQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlEb25lRGF0ZSB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+VmVyc2lvbjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5jb21wYXJlVmVyc2lvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkxhdW5jaGVkIGJ5Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5TGF1bmNoZWRCeSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlRpbWUgc3BlbnQ6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY3VycmVudFF1YWxpdHlUaW1lU3BlbnRJbk1zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+R2F1Z2VzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmdhdWdlc0luQ29tcGFyZS5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5Qb2ludHM6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuZ2xvYmFsQ29tcGFyZVBvaW50cy5sZW5ndGggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICAgICAgPGlvbi1yb3c+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQm90dG9tIHByb2dyZXNzIGJhciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1wcm9ncmVzcy1iYXIgKm5nSWY9XCJyZWZyZXNoSW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWZmZXJdPVwiKGNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpKSswLjAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvdW50c1BlcmlvZC5wcm9ncmVzcyAvICgodGltZWZyYW1lRGF0ZXM/Lmxlbmd0aCB8fCAxMCkgKzMpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLXByb2dyZXNzLWJhcj5cbiAgICAgICAgICAgICAgICA8L2lvbi1yb3c+XG4gICAgICAgICAgICA8L2lvbi1ncmlkPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gR2F1Z2UgdmFsdWVzIHNlY3Rpb24gLS0+XG4gICAgPGlvbi1jYXJkICpuZ0lmPVwiZ2F1Z2VTZWxlY3RlZFBvaW50cy5sZW5ndGggJiYgZ2F1Z2VTZWxlY3RlZFBvaW50c1swXS52YWx1ZXMubGVuZ3RoXCIgY2xhc3M9XCJnYXVnZS1jYXJkXCI+XG4gICAgICAgIDxpb24tY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8aW9uLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJhbmFseXRpY3Mtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgU2VsZWN0ZWQgR2F1Z2UgRGF0YVxuICAgICAgICAgICAgPC9pb24tY2FyZC10aXRsZT5cbiAgICAgICAgPC9pb24tY2FyZC1oZWFkZXI+XG4gICAgICAgIDxpb24tY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPHJhYWluLWRhdGUtZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgW2N1cnJlbnRIZWlnaHRdPVwiMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZvY3VzRGF0ZV09XCJwZXJpb2RCZWdpblwiXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c1JhbmdlXT1cIkRhdGVSYW5nZS5EQVlcIlxuICAgICAgICAgICAgICAgICAgICBbcG9pbnRzXT1cImdhdWdlU2VsZWN0ZWRQb2ludHNcIlxuICAgICAgICAgICAgICAgICAgICBbd2l0aG91dEFsbF09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8L3JhYWluLWRhdGUtZm9jdXM+XG4gICAgICAgIDwvaW9uLWNhcmQtY29udGVudD5cbiAgICA8L2lvbi1jYXJkPlxuXG4gICAgPCEtLSBRdWFsaXR5IFBlcmZvcm1hbmNlIE1vZGFsIC0tPlxuICAgIDxkaXYgKGNsaWNrKT1cImNsb3NlUXVhbGl0eU1vZGFsKClcIiAqbmdJZj1cInNob3dRdWFsaXR5TW9kYWxcIiBjbGFzcz1cInF1YWxpdHktbW9kYWwtb3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiBjbGFzcz1cInF1YWxpdHktbW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWxpdHktbW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGgyPk1vZGVsIFF1YWxpdHkgUGVyZm9ybWFuY2U8L2gyPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZVF1YWxpdHlNb2RhbCgpXCIgZmlsbD1cImNsZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2Utb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVhbGl0eS1tb2RhbC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZ1wiIGNsYXNzPVwicXVhbGl0eS1sb2FkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Mb2FkaW5nIGluZGljYXRvcnMuLi48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmcgJiYgcXVhbGl0eUluZGljYXRvcnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJxdWFsaXR5LWVtcHR5XCI+XG4gICAgICAgICAgICAgICAgICAgIE5vIHF1YWxpdHkgaW5kaWNhdG9ycyBhdmFpbGFibGUgZm9yIHRoaXMgeWVhci5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dGFibGUgKm5nSWY9XCIhcXVhbGl0eUluZGljYXRvcnNMb2FkaW5nICYmIHF1YWxpdHlJbmRpY2F0b3JzLmxlbmd0aCA+IDBcIiBjbGFzcz1cInF1YWxpdHktdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TW9kZWw8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkNvbXBhcmU8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkdhdWdlczwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVyaW9kPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5BdmcgUXVhbGl0eTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+VXBkYXRlZDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBpbmRpY2F0b3Igb2YgcXVhbGl0eUluZGljYXRvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpbmRpY2F0b3IuY29tcHV0aW5nVmVyc2lvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaW5kaWNhdG9yLnF1YWxpdHlWZXJzaW9uIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpbmRpY2F0b3IucHJvdmlkZXIgfX08YnI+e3sgaW5kaWNhdG9yLnRpbWVTdGVwSW5NaW51dGVzIH19IG1pbjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgZm9ybWF0RGF0ZShpbmRpY2F0b3Iuc3RhcnREYXRlKSB9fTxicj57eyBmb3JtYXREYXRlKGluZGljYXRvci5lbmREYXRlKSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaW5kaWNhdG9yLmF2ZXJhZ2VRdWFsaXR5IHwgbnVtYmVyOicxLjItMicgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZvcm1hdERhdGUoaW5kaWNhdG9yLmxhc3RVcGRhdGVkQXQpIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG48L2Rpdj5cbiJdfQ==
523
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFhaW4tZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9zaGFyZWQvcmFhaW4tZGV0YWlscy9yYWFpbi1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9jb3JlL3NoYXJlZC9yYWFpbi1kZXRhaWxzL3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxHQUlSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxxQkFBcUIsRUFBOEIsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ25FLE9BQU8sRUFBMkIsb0JBQW9CLEVBQWlCLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7O0FBS3hGLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztBQVF2QixNQUFNLE9BQU8scUJBQXFCO0lBMEU5QixZQUNjLE9BQWdCLEVBQ1QsR0FBc0I7UUFEN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNULFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBM0RwQyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBMENsQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFJbEMsc0JBQWlCLEdBQXVCLEVBQUUsQ0FBQztRQUMzQyw2QkFBd0IsR0FBWSxLQUFLLENBQUM7UUFFakQsOERBQThEO1FBQ3ZELDBCQUFxQixHQUFXLENBQUMsQ0FBQztRQUNsQyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixtQkFBYyxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQ0FBMkIsR0FBVyxFQUFFLENBQUM7UUFDN0IsY0FBUyxHQUFHLFNBQVMsQ0FBQztR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Q0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNOzhIQU94QyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvZmlsZVNlcnZpY2V9IGZyb20gJy4uL3Byb2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge0NhcnRlc2lhbk1lYXN1cmVWYWx1ZSwgUXVhbGl0eUluZGljYXRvciwgUmFpbk5vZGUsIFRlYW1Ob2RlfSBmcm9tICdyYWFpbi1tb2RlbCc7XG5pbXBvcnQge0RhdGVSYW5nZSwgTWFwTGF0TG5nLCBUaW1lZnJhbWVDb250YWluZXJzfSBmcm9tICdyYWFpbi11aSc7XG5pbXBvcnQge0NvbXBhcmVNYW5hZ2VyLCBGcmFtZVNldCwgbWFwRGF0ZVJhbmdlVG9TdHJpbmcsIFJlZnJlc2hNYW5hZ2VyfSBmcm9tICcuLi90b29scyc7XG5pbXBvcnQge1hZVHlwZX0gZnJvbSAnLi4veHl0eXBlJztcbmltcG9ydCB7UmFkYXJTZXJ2aWNlfSBmcm9tICcuLi9yYWRhci5zZXJ2aWNlJztcbmltcG9ydCB7U3RvcmFnZX0gZnJvbSAnLi4vc3RvcmFnZS5zZXJ2aWNlJztcblxubGV0IFRFU1RfREVURUNUSU9OID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdyYWFpbi1kZXRhaWxzJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3JhYWluLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydyYWFpbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFJhYWluRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBIT1VSX01TID0gNjAgKiA2MDAwMDtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBEQVlfTVMgPSAyNCAqIDYwICogNjAgKiAxMDAwO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdG9nZ2xlQWRtaW46IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmFpbk5vZGU6IFJhaW5Ob2RlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbXBhcmVNYW5hZ2VyOiBDb21wYXJlTWFuYWdlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByZWZyZXNoTWFuYWdlcjogUmVmcmVzaE1hbmFnZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJvZmlsZVNlcnZpY2U6IFByb2ZpbGVTZXJ2aWNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJhZGFyU2VydmljZTogUmFkYXJTZXJ2aWNlO1xuXG4gICAgcHVibGljIGF2YWlsYWJsZVByb3ZpZGVyczogc3RyaW5nW10gPSBbXTtcbiAgICBwdWJsaWMgYXZhaWxhYmxlVGltZVN0ZXBzOiBudW1iZXJbXSA9IFtdO1xuICAgIHB1YmxpYyBzZWxlY3RlZFByb3ZpZGVyOiBzdHJpbmc7XG4gICAgcHVibGljIHNlbGVjdGVkVGltZVN0ZXA6IG51bWJlcjtcblxuICAgIHB1YmxpYyBwZXJpb2RCZWdpbjogRGF0ZTtcbiAgICBwdWJsaWMgcGVyaW9kRW5kOiBEYXRlO1xuXG4gICAgLy8gcHVibGljIFVJIHZhcmlhYmxlc1xuICAgIHB1YmxpYyB0ZWFtTm9kZTogVGVhbU5vZGU7XG4gICAgcHVibGljIHBlcmlvZEJlZ2luQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgcGVyaW9kRW5kQXNTdHJpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgcGVyaW9kRHVyYXRpb25Bc1N0cmluZzogc3RyaW5nO1xuICAgIHB1YmxpYyBkYXRlU2hvd246IERhdGU7XG4gICAgcHVibGljIGNvb3JkaW5hdGVzOiBNYXBMYXRMbmc7XG4gICAgcHVibGljIGJvcmRlcnM6IE1hcExhdExuZ1tdO1xuICAgIHB1YmxpYyB0aW1lZnJhbWVDb250YWluZXJzOiBUaW1lZnJhbWVDb250YWluZXJzO1xuICAgIHB1YmxpYyBjdXJyZW50VGltZWZyYW1lVGFyZ2V0OiBGcmFtZVNldDtcbiAgICBwdWJsaWMgdGltZWZyYW1lRGF0ZXM6IERhdGVbXTtcbiAgICBwdWJsaWMgY291bnRQb2ludHM6IHtcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgc3R5bGU6IHN0cmluZztcbiAgICAgICAgdmFsdWVzOiB7ZGF0ZTogRGF0ZTsgdmFsdWU6IG51bWJlcn1bXTtcbiAgICB9W107XG4gICAgcHVibGljIGNvdW50c1BlcmlvZDoge1xuICAgICAgICBwZXJjZW50SW1hZ2VzPzogWFlUeXBlW107XG4gICAgICAgIHF1ZXVlUnVubmluZz86IG51bWJlcjtcbiAgICAgICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gICAgfTtcblxuICAgIHB1YmxpYyBnYXVnZVNlbGVjdGVkUG9pbnRzOiB7XG4gICAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICAgIHN0eWxlOiBzdHJpbmc7XG4gICAgICAgIHZhbHVlczoge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9W107XG4gICAgfVtdO1xuICAgIHB1YmxpYyB0b2dnbGVIaXN0b3J5OiBib29sZWFuO1xuICAgIHB1YmxpYyB0b2dnbGVNYXA6IGJvb2xlYW47XG4gICAgcHVibGljIHRvZ2dsZUNvbXBhcmU6IGJvb2xlYW47XG4gICAgcHVibGljIHRvZ2dsZUdhdWdlTWVhc3VyZXM6IGJvb2xlYW47XG4gICAgcHVibGljIHRvZ2dsZVJlbW92ZUNvbXBhcmVEdXBsaWNhdGU6IGJvb2xlYW47XG4gICAgcHVibGljIHRvZ2dsZUN1bXVsYXRpdmU6IGJvb2xlYW47XG4gICAgcHVibGljIHJlZnJlc2hJblByb2dyZXNzOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdW1EZXRhaWxzOiBzdHJpbmc7XG4gICAgcHVibGljIHNob3dQaXhlbE1hcmtlcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNBZG1pbjogYm9vbGVhbjtcbiAgICBwdWJsaWMgc2hvd0Z1bGxFcnJvcjogYm9vbGVhbjtcbiAgICBwdWJsaWMgc2hvd1F1YWxpdHlNb2RhbDogYm9vbGVhbjtcbiAgICBwdWJsaWMgcXVhbGl0eUluZGljYXRvcnM6IFF1YWxpdHlJbmRpY2F0b3JbXSA9IFtdO1xuICAgIHB1YmxpYyBxdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIENhY2hlZCBjb21wdXRlZCB2YWx1ZXMgKHRvIGF2b2lkIG1ldGhvZCBjYWxscyBpbiB0ZW1wbGF0ZXMpXG4gICAgcHVibGljIHBlcmNlbnRPZkNvbXB1dGF0aW9uczogbnVtYmVyID0gMDtcbiAgICBwdWJsaWMgcGVyY2VudE9mSW1hZ2VzOiBudW1iZXIgPSAwO1xuICAgIHB1YmxpYyB0cnVuY2F0ZWRFcnJvcjogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlczogbnVtYmVyID0gMTA7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IERhdGVSYW5nZSA9IERhdGVSYW5nZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgUGVyaW9kRGlzcGxheShkYXRlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgICAgIGxldCBkID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgIGQgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJUaW1lem9uZU9mZnNldCA9IGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuICAgICAgICAgICAgZCA9IG5ldyBEYXRlKGQuZ2V0VGltZSgpIC0gdXNlclRpbWV6b25lT2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBleGFtcGxlRm9ybWF0dGVkRGF0ZSA9ICcyMDE3LTA2LTAxVDA4OjMwJztcbiAgICAgICAgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgZXhhbXBsZUZvcm1hdHRlZERhdGUubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBEYXRlVVRDKGRhdGU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBoYXNJU09Gb3JtYXQgPSBkYXRlLm1hdGNoKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn1UXFxkezJ9OlxcZHsyfTpcXGR7Mn1cXC5cXGR7M31aJC8pO1xuICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICBpZiAoIWhhc0lTT0Zvcm1hdCkge1xuICAgICAgICAgICAgY29uc3QgdXNlclRpbWV6b25lT2Zmc2V0ID0gZC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XG4gICAgICAgICAgICBkID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgLSB1c2VyVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIE1hcENvdW50VG9EYXRlVmFsdWUoYzogWFlUeXBlKToge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGU6IFJhYWluRGV0YWlsc0NvbXBvbmVudC5EYXRlVVRDKGMubmFtZSksXG4gICAgICAgICAgICB2YWx1ZTogTWF0aC5taW4oMTAwLCBjLngpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFzeW5jIG9wZW5RdWFsaXR5TW9kYWwoKSB7XG4gICAgICAgIHRoaXMuc2hvd1F1YWxpdHlNb2RhbCA9IHRydWU7XG4gICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5xdWFsaXR5SW5kaWNhdG9ycyA9IFtdO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy5yYWluTm9kZT8uaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZmlsZVNlcnZpY2UuZ2V0SW5kaWNhdG9ycyh0aGlzLnJhaW5Ob2RlLmlkKTtcbiAgICAgICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnMgPSByZXN1bHQuaW5kaWNhdG9ycztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucXVhbGl0eUluZGljYXRvcnNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIGNsb3NlUXVhbGl0eU1vZGFsKCkge1xuICAgICAgICB0aGlzLnNob3dRdWFsaXR5TW9kYWwgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlKGRhdGVTdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKCkgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKFtdLCB7aG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0J30pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZldGNoRGF0YShmb2N1c0RhdGU6IERhdGUsIGZvY3VzUmFuZ2U6IERhdGVSYW5nZSkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh7ZGF0ZTogbmV3IERhdGUoMjAyMCArIGksIDApLCB2YWx1ZTogMTB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmYWtlRGF0YSA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJyUgUmFpbnknLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBJbWFnZXMnLFxuICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICB2YWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8gIHtcbiAgICAgICAgICAgIC8vICAgICAgbGFiZWw6ICclIFF1YWxpdHknLFxuICAgICAgICAgICAgLy8gICAgICBzdHlsZTogJ2xpbmUnLFxuICAgICAgICAgICAgLy8gICAgICB2YWx1ZXMsXG4gICAgICAgICAgICAvLyAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCByYW5nZSA9IG1hcERhdGVSYW5nZVRvU3RyaW5nKGZvY3VzUmFuZ2UpO1xuICAgICAgICBsZXQgZGF0YSA9IGZha2VEYXRhO1xuICAgICAgICBpZiAoIXRoaXMucmFpbk5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZvY3VzUmFuZ2UgPT09IERhdGVSYW5nZS5DRU5UVVJZKSB7XG4gICAgICAgICAgICAvLyBmYWtlXG4gICAgICAgIH0gZWxzZSBpZiAoZm9jdXNSYW5nZSA9PT0gRGF0ZVJhbmdlLkhPVVIpIHtcbiAgICAgICAgICAgIGNvbnN0IGhvdXJDb3VudHMgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldENvdW50c0hvdXIodGhpcy5yYWluTm9kZS5pZCwge1xuICAgICAgICAgICAgICAgIHBlcmlvZEJlZ2luOiBmb2N1c0RhdGUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGF0YSA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnUmFpbnkgQ291bnQnLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2xpbmUnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGhvdXJDb3VudHMucmFpbnlDb3VudC5tYXAoUmFhaW5EZXRhaWxzQ29tcG9uZW50Lk1hcENvdW50VG9EYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJyUgSW1hZ2VzJyxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6IGhvdXJDb3VudHMucGVyY2VudEltYWdlcy5tYXAoUmFhaW5EZXRhaWxzQ29tcG9uZW50Lk1hcENvdW50VG9EYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ1JhaW55IFN1bScsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnbGluZScsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogaG91ckNvdW50cy5yYWlueVN1bS5tYXAoUmFhaW5EZXRhaWxzQ29tcG9uZW50Lk1hcENvdW50VG9EYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY291bnRzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRDb3VudHModGhpcy5yYWluTm9kZS5pZCwge1xuICAgICAgICAgICAgICAgIHJhbmdlLFxuICAgICAgICAgICAgICAgIHBlcmlvZEJlZ2luOiBmb2N1c0RhdGUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGF0YSA9IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBSYWlueScsXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFyJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBjb3VudHMucGVyY2VudFJhaW55Lm1hcChSYWFpbkRldGFpbHNDb21wb25lbnQuTWFwQ291bnRUb0RhdGVWYWx1ZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnJSBJbWFnZXMnLFxuICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlczogY291bnRzLnBlcmNlbnRJbWFnZXMubWFwKFJhYWluRGV0YWlsc0NvbXBvbmVudC5NYXBDb3VudFRvRGF0ZVZhbHVlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBmZXRjaERhdGEgRE9ORSAke3JhbmdlfWAsIGRhdGEpO1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRoYXQgcHJlc2VydmVzIHRoZSBhc3luYyBuYXR1cmUgb2YgZmV0Y2hEYXRhXG4gICAgcHVibGljIGZldGNoRGF0YVdyYXBwZXIgPSBhc3luYyAoZm9jdXNEYXRlOiBEYXRlLCBmb2N1c1JhbmdlOiBEYXRlUmFuZ2UpID0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmV0Y2hEYXRhKGZvY3VzRGF0ZSwgZm9jdXNSYW5nZSk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hhbmdlKGNoYW5nZXMpLnRoZW4oKGlnbm9yZWQpID0+IHt9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jbGVhbkFsbCgpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uRW5hYmxlQ291bnRIaXN0b3J5VGFiKHJhaW46IFJhaW5Ob2RlKSB7XG4gICAgICAgIGlmICghdGhpcy50b2dnbGVIaXN0b3J5KSB7XG4gICAgICAgICAgICB0aGlzLmNvdW50UG9pbnRzID0gW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBvblBlcmlvZEJlZ2luQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBldmVudD8udGFyZ2V0Py52YWx1ZSA/PyB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmc7XG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW4gPSBuZXcgRGF0ZShuZXdWYWx1ZSk7XG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW5Bc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kQmVnaW4pO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2RCZWdpbicsIHRoaXMucGVyaW9kQmVnaW4pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMub25QZXJpb2REdXJhdGlvbkNoYW5nZShldmVudCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25QZXJpb2RFbmRDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlID8/IHRoaXMucGVyaW9kRW5kQXNTdHJpbmc7XG4gICAgICAgIHRoaXMucGVyaW9kRW5kID0gbmV3IERhdGUobmV3VmFsdWUpO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nID0gUmFhaW5EZXRhaWxzQ29tcG9uZW50LlBlcmlvZERpc3BsYXkodGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2RFbmQnLCB0aGlzLnBlcmlvZEVuZCk7XG5cbiAgICAgICAgdGhpcy5wZXJpb2RCZWdpbiA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpIC0gdGhpcy5nZXREdXJhdGlvbkluSG91cnMoKSAqIFJhYWluRGV0YWlsc0NvbXBvbmVudC5IT1VSX01TXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW5Bc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kQmVnaW4pO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2RCZWdpbicsIHRoaXMucGVyaW9kQmVnaW4pO1xuICAgICAgICB0aGlzLnVwZGF0ZVJlZnJlc2hNYW5hZ2VyUGVyaW9kKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25QZXJpb2REdXJhdGlvbkNoYW5nZShfZXZlbnQ6IG9iamVjdCkge1xuICAgICAgICBjb25zdCBkdXJhdGlvbkluSG91cnMgPSB0aGlzLmdldER1cmF0aW9uSW5Ib3VycygpO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZCA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5wZXJpb2RCZWdpbi5nZXRUaW1lKCkgKyBkdXJhdGlvbkluSG91cnMgKiBSYWFpbkRldGFpbHNDb21wb25lbnQuSE9VUl9NU1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnBlcmlvZEVuZEFzU3RyaW5nID0gUmFhaW5EZXRhaWxzQ29tcG9uZW50LlBlcmlvZERpc3BsYXkodGhpcy5wZXJpb2RFbmQpO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1wZXJpb2RFbmQnLCB0aGlzLnBlcmlvZEVuZCk7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoJ3JhYWluLXBlcmlvZER1cmF0aW9uSW5Ib3VycycsIGR1cmF0aW9uSW5Ib3Vycyk7XG4gICAgICAgIHRoaXMudXBkYXRlUmVmcmVzaE1hbmFnZXJQZXJpb2QoKTtcbiAgICAgICAgdGhpcy51cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkRhdGVDaGFuZ2VJbkNvdW50KGRhdGVDaGFuZ2VkOiBEYXRlKSB7XG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPVxuICAgICAgICAgICAgZGF0ZUNoYW5nZWQudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMTEpICtcbiAgICAgICAgICAgIGRhdGVDaGFuZ2VkLnRvTG9jYWxlVGltZVN0cmluZygpLnN1YnN0cmluZygwLCA1KTtcbiAgICAgICAgdGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nID0gJzEnO1xuXG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZUN1bXVsYXRpdmUpIHtcbiAgICAgICAgICAgIC8vIEN1bXVsYXRpdmU6IHNlbGVjdCBwZXJpb2RFbmRcbiAgICAgICAgICAgIHRoaXMucGVyaW9kRW5kQXNTdHJpbmcgPSBkYXRlU3RyaW5nO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5vblBlcmlvZEVuZENoYW5nZShudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEdyYW51bGFyOiBzZWxlY3QgcGVyaW9kQmVnaW5cbiAgICAgICAgICAgIHRoaXMucGVyaW9kQmVnaW5Bc1N0cmluZyA9IGRhdGVTdHJpbmc7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm9uUGVyaW9kQmVnaW5DaGFuZ2UobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkRhdGVDaGFuZ2VJbk1hcChkYXRlU2hvd246IERhdGUpIHtcbiAgICAgICAgdGhpcy5kYXRlU2hvd24gPSBkYXRlU2hvd247XG4gICAgICAgIGF3YWl0IHRoaXMuZmV0Y2hBbmRVcGRhdGVNYXAoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5zZXRSZXBvcnRQZXJpb2QodGhpcy5kYXRlU2hvd24pO1xuICAgIH1cblxuICAgIGFzeW5jIG9uU3VtQ2hhbmdlSW5NYXAoc3VtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zdW1EZXRhaWxzID0gc3VtO1xuICAgIH1cblxuICAgIGFzeW5jIG9uR2F1Z2VTZWxlY3RJbk1hcChtYXBMYXRMbmc6IE1hcExhdExuZykge1xuICAgICAgICBjb25zdCBnYXVnZXNGaWx0ZXJlZCA9IHRoaXMuY29tcGFyZU1hbmFnZXIuZ2F1Z2VzSW5NYXAuZmlsdGVyKFxuICAgICAgICAgICAgKGcpID0+IGcubGF0ID09PSBtYXBMYXRMbmcubGF0ICYmIGcubG5nID09PSBtYXBMYXRMbmcubG5nXG4gICAgICAgICk7XG4gICAgICAgIGlmIChnYXVnZXNGaWx0ZXJlZC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBnYXVnZVNlbGVjdGVkID0gZ2F1Z2VzRmlsdGVyZWRbMF07XG5cbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoR2F1Z2VWYWx1ZXMoe2lkOiBnYXVnZVNlbGVjdGVkLmlkLCBuYW1lOiBnYXVnZVNlbGVjdGVkLm5hbWV9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNlbGVjdEdhdWdlKGdhdWdlU2VsZWN0ZWQuaWQsIDApO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hHYXVnZVZhbHVlcyhnYXVnZVNlbGVjdGVkOiB7aWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nfSkge1xuICAgICAgICBjb25zdCBnYXVnZVZhbHVlU2hvd0JlZ2luID0gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnBlcmlvZEJlZ2luLmdldFRpbWUoKSAtIFJhYWluRGV0YWlsc0NvbXBvbmVudC5EQVlfTVNcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZ2F1Z2VWYWx1ZVNob3dFbmQgPSBuZXcgRGF0ZSh0aGlzLnBlcmlvZEVuZC5nZXRUaW1lKCkgKyBSYWFpbkRldGFpbHNDb21wb25lbnQuREFZX01TKTtcbiAgICAgICAgZ2F1Z2VWYWx1ZVNob3dCZWdpbi5zZXRIb3VycygwLCAwKTtcbiAgICAgICAgZ2F1Z2VWYWx1ZVNob3dFbmQuc2V0SG91cnMoMjMsIDU5KTtcblxuICAgICAgICBjb25zdCBnYXVnZU1lYXN1cmVzID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRHYXVnZU1lYXN1cmVzKFxuICAgICAgICAgICAgZ2F1Z2VTZWxlY3RlZC5pZCxcbiAgICAgICAgICAgIGdhdWdlVmFsdWVTaG93QmVnaW4sXG4gICAgICAgICAgICBnYXVnZVZhbHVlU2hvd0VuZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBnYXVnZVZhbHVlczoge2RhdGU6IERhdGU7IHZhbHVlOiBudW1iZXJ9W10gPSBnYXVnZU1lYXN1cmVzLm1hcCgoZ20pID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBjb25zdCBjYXJ0ZXNpYW5NZWFzdXJlVmFsdWUgPSBuZXcgQ2FydGVzaWFuTWVhc3VyZVZhbHVlKGdtLnZhbHVlc1swXSBhcyBhbnkpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRlOiBnbS5kYXRlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjYXJ0ZXNpYW5NZWFzdXJlVmFsdWUuZ2V0Q2FydGVzaWFuVmFsdWVzKClbMF0udmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5nYXVnZVNlbGVjdGVkUG9pbnRzID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBnYXVnZVNlbGVjdGVkLm5hbWUsXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdiYXInLFxuICAgICAgICAgICAgICAgIHZhbHVlczogZ2F1Z2VWYWx1ZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBhc3luYyBvbkdhdWdlU2VsZWN0SW5Db21wYXJlKGU6IHtwb2ludDogWFlUeXBlOyBjb21wYXJlSW5kZXg6IG51bWJlcn0pIHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoR2F1Z2VWYWx1ZXMoe2lkOiBlLnBvaW50LmlkLCBuYW1lOiBlLnBvaW50Lm5hbWV9KTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNlbGVjdEdhdWdlKGUucG9pbnQuaWQsIGUuY29tcGFyZUluZGV4KTtcbiAgICB9XG5cbiAgICBhc3luYyBvblRvZ2dsZU1hcCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIGlmICh0aGlzLnRvZ2dsZU1hcCkge1xuICAgICAgICAvLyAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYXAoKTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uVG9nZ2xlUGl4ZWxNYXJrZXJzKCkge1xuICAgICAgICAvLyBUb2dnbGUgaXMgYm91bmQgdG8gc2hvd1BpeGVsTWFya2VycywgcmFhaW4tbWFwIGhhbmRsZXMgbWFya2VyIGRpc3BsYXlcbiAgICB9XG5cbiAgICBhc3luYyB0b2dnbGVDdW11bGF0aXZlQ2hhbmdlZChfJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi10b2dnbGVDdW11bGF0aXZlJywgdGhpcy50b2dnbGVDdW11bGF0aXZlKTtcbiAgICAgICAgdGhpcy5kYXRlU2hvd24gPSB0aGlzLmdldERhdGVCYXNlZE9uQ3VtdWxhdGl2ZU1vZGUodGhpcy50aW1lZnJhbWVEYXRlcyk7XG4gICAgICAgIHRoaXMudXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCk7XG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZU1hcCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVSZWZyZXNoTWFuYWdlclBlcmlvZCgpOyAvLyBVcGRhdGUgY3VtdWxhdGl2ZSBmbGFnIGJlZm9yZSByZWZyZXNoXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRoaXMudG9nZ2xlQWRtaW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQ3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzKCkge1xuICAgICAgICBpZiAodGhpcy50b2dnbGVDdW11bGF0aXZlKSB7XG4gICAgICAgICAgICAvLyBDdW11bGF0aXZlIG1vZGU6IHVzZSBwZXJpb2QgZHVyYXRpb25cbiAgICAgICAgICAgIHRoaXMuY3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzID0gcGFyc2VGbG9hdCh0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcpICogNjA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBHcmFudWxhciBtb2RlOiB1c2Ugc2VsZWN0ZWRUaW1lU3RlcFxuICAgICAgICAgICAgdGhpcy5jdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMgPSB0aGlzLnNlbGVjdGVkVGltZVN0ZXAgfHwgMTA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBvblByb3ZpZGVyQ2hhbmdlZCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRQcm92aWRlciA9ICgkZXZlbnQgYXMgQ3VzdG9tRXZlbnQpPy5kZXRhaWw/LnZhbHVlO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1zZWxlY3RlZFByb3ZpZGVyJywgdGhpcy5zZWxlY3RlZFByb3ZpZGVyKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBseVJlZnJlc2hNYW5hZ2VyU2V0dGluZ3MoKTtcbiAgICB9XG5cbiAgICBhc3luYyBvblRpbWVTdGVwQ2hhbmdlZCgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9ICgkZXZlbnQgYXMgQ3VzdG9tRXZlbnQpPy5kZXRhaWw/LnZhbHVlO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc2V0KCdyYWFpbi1zZWxlY3RlZFRpbWVTdGVwJywgdGhpcy5zZWxlY3RlZFRpbWVTdGVwKTtcbiAgICAgICAgdGhpcy51cGRhdGVDdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXMoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHBseVJlZnJlc2hNYW5hZ2VyU2V0dGluZ3MoKTtcbiAgICB9XG5cbiAgICBhc3luYyBsb2FkUHJvdmlkZXJzKCkge1xuICAgICAgICBpZiAoIXRoaXMucmFpbk5vZGU/LmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9maWxlU2VydmljZS5nZXRQcm92aWRlcnModGhpcy5yYWluTm9kZS5pZCk7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVByb3ZpZGVycyA9IHJlc3VsdC5wcm92aWRlcnM7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJsZVRpbWVTdGVwcyA9IHJlc3VsdC50aW1lU3RlcEluTWludXRlcztcblxuICAgICAgICAgICAgLy8gTG9hZCBzYXZlZCBzZWxlY3Rpb25zIG9yIHVzZSBkZWZhdWx0c1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyID1cbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2UuZ2V0KCdyYWFpbi1zZWxlY3RlZFByb3ZpZGVyJykgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5hdmFpbGFibGVQcm92aWRlcnMubGVuZ3RoID4gMCA/IHRoaXMuYXZhaWxhYmxlUHJvdmlkZXJzWzBdIDogJ1JhYWluJyk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVN0ZXAgPVxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXNlbGVjdGVkVGltZVN0ZXAnKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLmF2YWlsYWJsZVRpbWVTdGVwcy5sZW5ndGggPiAwID8gdGhpcy5hdmFpbGFibGVUaW1lU3RlcHNbMF0gOiAxMCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFNldCBmYWxsYmFjayB2YWx1ZXNcbiAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlUHJvdmlkZXJzID0gWydSYWFpbiddO1xuICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVUaW1lU3RlcHMgPSBbNSwgMTAsIDE1LCAzMCwgNjBdO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFByb3ZpZGVyID0gJ1JhYWluJztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU3RlcCA9IDEwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IHByb3ZpZGVyIGFuZCB0aW1lU3RlcCBvbiByZWZyZXNoTWFuYWdlclxuICAgICAgICBpZiAodGhpcy5yZWZyZXNoTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoTWFuYWdlci5wcm92aWRlciA9IHRoaXMuc2VsZWN0ZWRQcm92aWRlcjtcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXIudGltZVN0ZXBJbk1pbnV0ZXMgPSB0aGlzLnNlbGVjdGVkVGltZVN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgb25DaGFuZ2VEZXRlY3Rpb25UZXN0KHJhaW5Ob2RlOiBSYWluTm9kZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhURVNUX0RFVEVDVElPTisrLCAnb25DaGFuZ2VEZXRlY3Rpb25UZXN0Jyk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICB1cGRhdGVUcnVuY2F0ZWRFcnJvcigpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyPy5sYXN0RXJyb3IgfHwgJyc7XG4gICAgICAgIGlmIChlcnJvci5sZW5ndGggPD0gODApIHtcbiAgICAgICAgICAgIHRoaXMudHJ1bmNhdGVkRXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRydW5jYXRlZEVycm9yID0gZXJyb3Iuc3Vic3RyaW5nKDAsIDgwKSArICcuLi4nO1xuICAgIH1cblxuICAgIHVwZGF0ZUNhY2hlZFZhbHVlcygpIHtcbiAgICAgICAgdGhpcy51cGRhdGVQZXJjZW50T2ZJbWFnZXMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVQZXJjZW50T2ZDb21wdXRhdGlvbnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVUcnVuY2F0ZWRFcnJvcigpO1xuICAgICAgICB0aGlzLnVwZGF0ZUN1bXVsYXRpdmVEdXJhdGlvbkluTWludXRlcygpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlZnJlc2hNYXAoKSB7XG4gICAgICAgIHRoaXMuZ2F1Z2VTZWxlY3RlZFBvaW50cyA9IFtdO1xuICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSgpO1xuICAgICAgICB0aGlzLmJvcmRlcnMgPSBbXTtcblxuICAgICAgICB0aGlzLmNvbXBhcmVNYW5hZ2VyLmNsZWFuQWxsKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY29tcGFyZU1hbmFnZXIuc2V0R2F1Z2VzSW5NYXAoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoTWFuYWdlci5yZWZyZXNoKGZhbHNlLCB0aGlzLnRvZ2dsZUFkbWluKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0UGVyaW9kT2ZOb3coKSB7XG4gICAgICAgIGNvbnN0IGxhc3QzMG1uID0gbmV3IERhdGUoKTtcbiAgICAgICAgbGFzdDMwbW4uc2V0TWludXRlcyhsYXN0MzBtbi5nZXRNaW51dGVzKCkgLSAzMCk7XG4gICAgICAgIHRoaXMucGVyaW9kQmVnaW5Bc1N0cmluZyA9XG4gICAgICAgICAgICBsYXN0MzBtbi50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxMSkgKyBsYXN0MzBtbi50b0xvY2FsZVRpbWVTdHJpbmcoKS5zdWJzdHJpbmcoMCwgNSk7XG4gICAgICAgIHRoaXMucGVyaW9kRHVyYXRpb25Bc1N0cmluZyA9ICcxJztcbiAgICAgICAgYXdhaXQgdGhpcy5vblBlcmlvZEJlZ2luQ2hhbmdlKG51bGwpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRoaXMudG9nZ2xlQWRtaW4pO1xuICAgIH1cblxuICAgIHVwZGF0ZVBlcmNlbnRPZkltYWdlcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvdW50c1BlcmlvZD8ucGVyY2VudEltYWdlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBlcmNlbnRPZkltYWdlcyA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkdXJpbmdQZXJpb2QgPSB0aGlzLmNvdW50c1BlcmlvZC5wZXJjZW50SW1hZ2VzLmZpbHRlcihcbiAgICAgICAgICAgIChhKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpIDw9IG5ldyBEYXRlKGEubmFtZSkuZ2V0VGltZSgpICYmXG4gICAgICAgICAgICAgICAgbmV3IERhdGUoYS5uYW1lKS5nZXRUaW1lKCkgPD0gdGhpcy5wZXJpb2RFbmQuZ2V0VGltZSgpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1bW1lZCA9IGR1cmluZ1BlcmlvZC5yZWR1Y2UoKGEsIGIpID0+IGEgKyAoYi54ID8/IDApLCAwKTtcbiAgICAgICAgdGhpcy5wZXJjZW50T2ZJbWFnZXMgPSBNYXRoLnJvdW5kKHN1bW1lZCAvIGR1cmluZ1BlcmlvZC5sZW5ndGgpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBlcmNlbnRPZkNvbXB1dGF0aW9ucygpIHtcbiAgICAgICAgY29uc3QgdGltZWxpbmUgPSB0aGlzLnJlZnJlc2hNYW5hZ2VyPy5nZXRUaW1lbGluZUZyYW1lU2V0KCk7XG4gICAgICAgIGlmICghdGltZWxpbmU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5wZXJjZW50T2ZDb21wdXRhdGlvbnMgPSAwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZWxpbmVXaXRoQ29tcHV0YXRpb24gPSB0aW1lbGluZS5maWx0ZXIoXG4gICAgICAgICAgICAoYSkgPT4gISFhLnJhaW5Db21wdXRhdGlvbkN1bXVsYXRpdmVJZCB8fCAhIWEucmFpbkNvbXB1dGF0aW9uSWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcmF0aW8gPSB0aW1lbGluZVdpdGhDb21wdXRhdGlvbi5sZW5ndGggLyB0aW1lbGluZS5sZW5ndGg7XG4gICAgICAgIHRoaXMucGVyY2VudE9mQ29tcHV0YXRpb25zID0gTWF0aC5yb3VuZChyYXRpbyAqIDEwMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREYXRlQmFzZWRPbkN1bXVsYXRpdmVNb2RlKGZhbGxiYWNrRGF0ZXM/OiBEYXRlW10pOiBEYXRlIHtcbiAgICAgICAgaWYgKGZhbGxiYWNrRGF0ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVFeGlzdHMgPSBmYWxsYmFja0RhdGVzLnNvbWUoKGQpID0+IGQuZ2V0VGltZSgpID09PSB0aGlzLmRhdGVTaG93bj8uZ2V0VGltZSgpKTtcbiAgICAgICAgICAgIGlmICghZGF0ZUV4aXN0cykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUN1bXVsYXRpdmVcbiAgICAgICAgICAgICAgICAgICAgPyBmYWxsYmFja0RhdGVzW2ZhbGxiYWNrRGF0ZXMubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICAgICAgOiBmYWxsYmFja0RhdGVzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZUN1bXVsYXRpdmUgPyB0aGlzLnBlcmlvZEVuZCA6IHRoaXMucGVyaW9kQmVnaW47XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDdW11bGF0aXZlSG91cnMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSA/IHBhcnNlRmxvYXQodGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nKSA6IDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREdXJhdGlvbkluSG91cnMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodGhpcy5wZXJpb2REdXJhdGlvbkFzU3RyaW5nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVJlZnJlc2hNYW5hZ2VyUGVyaW9kKCkge1xuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLmN1bXVsYXRpdmUgPSB0aGlzLnRvZ2dsZUN1bXVsYXRpdmU7XG5cbiAgICAgICAgLy8gQWxpZ24gZGF0ZXMgdG8gNS1taW51dGUgYm91bmRhcmllcyAoZmxvb3IpIGZvciBjb25zaXN0ZW5jeSB3aXRoIHJhYWluLWdyb3VuZFxuICAgICAgICBjb25zdCBhbGlnblRvNW1pbkZsb29yID0gKGRhdGU6IERhdGUpOiBEYXRlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGFsaWduZWRNaW51dGVzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gNSkgKiA1O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICAgICAgZGF0ZS5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgIGFsaWduZWRNaW51dGVzLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnBlcmlvZCA9IHtcbiAgICAgICAgICAgIGJlZ2luOiBhbGlnblRvNW1pbkZsb29yKHRoaXMucGVyaW9kQmVnaW4pLFxuICAgICAgICAgICAgZW5kOiBhbGlnblRvNW1pbkZsb29yKHRoaXMucGVyaW9kRW5kKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGZldGNoQW5kVXBkYXRlTWFwKCkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLmZldGNoKFxuICAgICAgICAgICAgdGhpcy5kYXRlU2hvd24sXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUdhdWdlTWVhc3VyZXMsXG4gICAgICAgICAgICB0aGlzLmdldEN1bXVsYXRpdmVIb3VycygpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWVmcmFtZVRhcmdldCA9IHRoaXMucmVmcmVzaE1hbmFnZXIuZ2V0VGltZWxpbmVTZWxlY3RlZEZyYW1lU2V0KCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgYXBwbHlSZWZyZXNoTWFuYWdlclNldHRpbmdzKCkge1xuICAgICAgICBpZiAoIXRoaXMucmVmcmVzaE1hbmFnZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnByb3ZpZGVyID0gdGhpcy5zZWxlY3RlZFByb3ZpZGVyO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnRpbWVTdGVwSW5NaW51dGVzID0gdGhpcy5zZWxlY3RlZFRpbWVTdGVwO1xuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJlZnJlc2goZmFsc2UsIHRoaXMudG9nZ2xlQWRtaW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYW5BbGwoKSB7XG4gICAgICAgIHRoaXMuYm9yZGVycyA9IFtdO1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWVDb250YWluZXJzID0gbmV3IFRpbWVmcmFtZUNvbnRhaW5lcnMoW10pO1xuICAgICAgICB0aGlzLmN1cnJlbnRUaW1lZnJhbWVUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gW107XG4gICAgICAgIHRoaXMuY291bnRQb2ludHMgPSBbXTtcbiAgICAgICAgdGhpcy5jb3VudHNQZXJpb2QgPSB7cHJvZ3Jlc3M6IDAsIHF1ZXVlUnVubmluZzogMCwgcGVyY2VudEltYWdlczogW119O1xuICAgICAgICB0aGlzLmdhdWdlU2VsZWN0ZWRQb2ludHMgPSBbXTtcblxuICAgICAgICB0aGlzLnRvZ2dsZUhpc3RvcnkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2dnbGVNYXAgPSB0cnVlO1xuICAgICAgICB0aGlzLnRvZ2dsZUNvbXBhcmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50b2dnbGVHYXVnZU1lYXN1cmVzID0gZmFsc2U7XG4gICAgICAgIHRoaXMudG9nZ2xlUmVtb3ZlQ29tcGFyZUR1cGxpY2F0ZSA9IHRydWU7XG4gICAgICAgIHRoaXMudG9nZ2xlQ3VtdWxhdGl2ZSA9IHRoaXMuc3RvcmFnZS5nZXQoJ3JhYWluLXRvZ2dsZUN1bXVsYXRpdmUnKTtcblxuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kQmVnaW4nKSk7XG4gICAgICAgIHRoaXMucGVyaW9kRW5kID0gbmV3IERhdGUodGhpcy5zdG9yYWdlLmdldCgncmFhaW4tcGVyaW9kRW5kJykpO1xuICAgICAgICB0aGlzLnBlcmlvZEJlZ2luQXNTdHJpbmcgPSBSYWFpbkRldGFpbHNDb21wb25lbnQuUGVyaW9kRGlzcGxheSh0aGlzLnBlcmlvZEJlZ2luKTtcbiAgICAgICAgdGhpcy5wZXJpb2RFbmRBc1N0cmluZyA9IFJhYWluRGV0YWlsc0NvbXBvbmVudC5QZXJpb2REaXNwbGF5KHRoaXMucGVyaW9kRW5kKTtcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHRoaXMucGVyaW9kRW5kLmdldFRpbWUoKSAtIHRoaXMucGVyaW9kQmVnaW4uZ2V0VGltZSgpO1xuICAgICAgICB0aGlzLnBlcmlvZER1cmF0aW9uQXNTdHJpbmcgPSAnJyArIGR1cmF0aW9uTXMgLyBSYWFpbkRldGFpbHNDb21wb25lbnQuSE9VUl9NUztcblxuICAgICAgICB0aGlzLmRhdGVTaG93biA9IHRoaXMuZ2V0RGF0ZUJhc2VkT25DdW11bGF0aXZlTW9kZSgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Z1bGxFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dRdWFsaXR5TW9kYWwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5xdWFsaXR5SW5kaWNhdG9ycyA9IFtdO1xuICAgICAgICB0aGlzLnF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY29tcGFyZU1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaE1hbmFnZXI/LmNsZWFuQWxsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0KCkge1xuICAgICAgICB0aGlzLmNsZWFuQWxsKCk7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVmFsdWVzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJhaW4oKTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0UmFpbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhaW5Ob2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzQWRtaW4gPSB0aGlzLnByb2ZpbGVTZXJ2aWNlLmlzQWRtaW4oKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnJhaW5Ob2RlID0gdGhpcy5yYWluTm9kZTtcbiAgICAgICAgdGhpcy5jb21wYXJlTWFuYWdlci5yYWluTm9kZSA9IHRoaXMucmFpbk5vZGU7XG5cbiAgICAgICAgLy8gTG9hZCBwcm92aWRlcnMgYW5kIHNldCBvbiByZWZyZXNoTWFuYWdlclxuICAgICAgICBhd2FpdCB0aGlzLmxvYWRQcm92aWRlcnMoKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hNYW5hZ2VyLnNldE1ldGhvZHMoXG4gICAgICAgICAgICB0aGlzLm9uUmVmcmVzaEluUHJvZ3Jlc3MuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHRoaXMub25SZWZyZXNoRG9uZS5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdGhpcy5vbkZldGNoRG9uZS5iaW5kKHRoaXMpXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY2VudGVyID0gdGhpcy5yYWluTm9kZS5nZXRDZW50ZXIoKTtcbiAgICAgICAgdGhpcy5jb29yZGluYXRlcyA9IG5ldyBNYXBMYXRMbmcoY2VudGVyLmxhdCwgY2VudGVyLmxuZyk7XG4gICAgICAgIHRoaXMudGVhbU5vZGUgPSBhd2FpdCB0aGlzLnByb2ZpbGVTZXJ2aWNlLmdldFRlYW0oXG4gICAgICAgICAgICB0aGlzLnJhaW5Ob2RlLmdldExpbmsoVGVhbU5vZGUuVFlQRSkuZ2V0SWQoKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIExvYWQgYWxsIGdhdWdlcyBsaW5rZWQgdG8gdGhlIHJhaW5Ob2RlIG9uIG1hcFxuICAgICAgICBhd2FpdCB0aGlzLmNvbXBhcmVNYW5hZ2VyLnNldEdhdWdlc0luTWFwKCk7XG5cbiAgICAgICAgaWYgKHRoaXMucGVyaW9kQmVnaW4gJiYgdGhpcy5wZXJpb2RFbmQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUmVmcmVzaE1hbmFnZXJQZXJpb2QoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaE1hbmFnZXIucmVmcmVzaChmYWxzZSwgdGhpcy50b2dnbGVBZG1pbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIG9uUmVmcmVzaEluUHJvZ3Jlc3MoXG4gICAgICAgIGNvdW50UGVyaW9kczoge1xuICAgICAgICAgICAgcGVyY2VudEltYWdlcz86IFhZVHlwZVtdO1xuICAgICAgICAgICAgcXVldWVSdW5uaW5nPzogbnVtYmVyO1xuICAgICAgICAgICAgcHJvZ3Jlc3M/OiBudW1iZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHRpbWVmcmFtZURhdGVzOiBEYXRlW11cbiAgICApIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgIHRoaXMuY291bnRzUGVyaW9kID0gY291bnRQZXJpb2RzO1xuICAgICAgICB0aGlzLnRpbWVmcmFtZURhdGVzID0gdGltZWZyYW1lRGF0ZXM7XG4gICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVmFsdWVzKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgb25SZWZyZXNoRG9uZSh0aW1lZnJhbWVEYXRlczogRGF0ZVtdKSB7XG4gICAgICAgIHRoaXMudGltZWZyYW1lRGF0ZXMgPSB0aW1lZnJhbWVEYXRlcztcbiAgICAgICAgdGhpcy5yZWZyZXNoSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlZFZhbHVlcygpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy50b2dnbGVNYXAgJiYgdGltZWZyYW1lRGF0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlU2hvd24gPSB0aGlzLmdldERhdGVCYXNlZE9uQ3VtdWxhdGl2ZU1vZGUodGltZWZyYW1lRGF0ZXMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVNob3duKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mZXRjaEFuZFVwZGF0ZU1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBvbkZldGNoRG9uZSh0aW1lZnJhbWVDb250YWluZXJzPzogVGltZWZyYW1lQ29udGFpbmVycykge1xuICAgICAgICBpZiAodGltZWZyYW1lQ29udGFpbmVycykge1xuICAgICAgICAgICAgdGhpcy50aW1lZnJhbWVDb250YWluZXJzID0gdGltZWZyYW1lQ29udGFpbmVycztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNoYW5nZShfY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBhd2FpdCB0aGlzLmluaXQoKTtcbiAgICB9XG59XG4iLCI8IS0tIE1haW4gY29udGVudCBjb250YWluZXIgLS0+XG48ZGl2ICpuZ0lmPVwicmFpbk5vZGVcIiBjbGFzcz1cInJhYWluLWRldGFpbHMtY29udGFpbmVyXCI+XG5cbiAgICA8IS0tIFBlcmlvZCBzZWxlY3Rpb24gc2VjdGlvbiAtLT5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJwZXJpb2QtY2FyZFwiPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJpb2QtY29udHJvbHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXJvd1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVIaXN0b3J5ID0gIXRvZ2dsZUhpc3Rvcnk7IG9uRW5hYmxlQ291bnRIaXN0b3J5VGFiKHJhaW5Ob2RlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNhbGVuZGFyLWNsZWFyLW91dGxpbmVcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInRvZ2dsZUhpc3RvcnkgPyAnY2hldnJvbi1kb3duJyA6ICdjaGV2cm9uLWZvcndhcmQnXCIgc2xvdD1cImVuZFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVyaW9kLXN0YXJ0IGlvbi1oaWRlLW1kLWRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cIm9uUGVyaW9kQmVnaW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwZXJpb2RCZWdpbkFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGV0aW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1kdXJhdGlvbiBpb24taGlkZS1tZC1kb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdCAoaW9uRGlzbWlzcyk9XCJvblBlcmlvZER1cmF0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwZXJpb2REdXJhdGlvbkFzU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHVyYXRpb24tc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwicGVyaW9kRHVyYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjAuMjVcIj4xNSBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIwLjVcIj4zMCBtaW51dGVzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxXCI+MSBob3VyPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIyXCI+MiBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiM1wiPjMgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjRcIj40IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCI1XCI+NSBob3VyczwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uIHZhbHVlPVwiNlwiPjYgaG91cnM8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIjhcIj44IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxMFwiPjEwIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCIxMlwiPjEyIGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gKm5nSWY9XCJpc0FkbWluXCIgdmFsdWU9XCIyNFwiPjI0IGhvdXJzPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmlvZC1zdGFydCBpb24taGlkZS1tZC1kb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGNoYW5nZSk9XCJvblBlcmlvZEVuZENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJwZXJpb2RFbmRBc1N0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRldGltZS1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGUtY3VtdWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBbY2xhc3MudGV4dC1wcmltYXJ5XT1cInRvZ2dsZUN1bXVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0b2dnbGVDdW11bGF0aXZlID8gJ0N1bXVsYXRpdmUnIDogJ0dyYW51bGFyJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXRvZ2dsZSAoaW9uQ2hhbmdlKT1cInRvZ2dsZUN1bXVsYXRpdmVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b2dnbGVDdW11bGF0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInRvZ2dsZUN1bXVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEhpZGRlbiBsYWJlbCBmb3IgY2hhbmdlIGRldGVjdGlvbiAodW5jb21tZW50IHRvIGRlYnVnKVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaWRkZW4tbGFiZWxcIj57eyBvbkNoYW5nZURldGVjdGlvblRlc3QocmFpbk5vZGUpIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgLS0+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBIaXN0b3JpY2FsIG1hcCBzZWN0aW9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRvZ2dsZUhpc3RvcnlcIiBjbGFzcz1cInBlcmlvZC1jb250cm9sc1wiPlxuICAgICAgICAgICAgICAgIDxyYWFpbi1kYXRlLWR5bmFtaWMgKGNoYW5nZWREYXRlKT1cIm9uRGF0ZUNoYW5nZUluQ291bnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudEhlaWdodF09XCIzMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZldGNoRGF0YV09XCJmZXRjaERhdGFXcmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwb2ludHNdPVwiY291bnRQb2ludHNcIj5cbiAgICAgICAgICAgICAgICA8L3JhYWluLWRhdGUtZHluYW1pYz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gTWFwIHBlcmZvcm1hbmNlIC0tPlxuICAgIDxpb24tZ3JpZCBjbGFzcz1cIm1hcC1wZXJmb3JtYW5jZVwiPlxuICAgICAgICA8aW9uLXJvdyBpZD1cInByb2dyZXNzQW5kUmVmcmVzaFwiPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJwcm92aWRlci1zZWxlY3Rpb25cIiBzaXplPVwiMTJcIiBzaXplLW1kPVwiNlwiPlxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJvcGVuUXVhbGl0eU1vZGFsKClcIiBjbGFzcz1cInF1YWxpdHktaW5mby1idXR0b25cIiBmaWxsPVwiY2xlYXJcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwVmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImhlbHAtY2lyY2xlLW91dGxpbmVcIiBzbG90PVwiZW5kXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImF2YWlsYWJsZVByb3ZpZGVycy5sZW5ndGggPiAwIHx8IGF2YWlsYWJsZVRpbWVTdGVwcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJzZWxlY3Rpb24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25DaGFuZ2UpPVwib25Qcm92aWRlckNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFByb3ZpZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiUHJvdmlkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBQcm92aWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1zZWxlY3Qtb3B0aW9uICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBhdmFpbGFibGVQcm92aWRlcnNcIiBbdmFsdWVdPVwicHJvdmlkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBwcm92aWRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuXG4gICAgICAgICAgICAgICAgICAgIDxpb24tc2VsZWN0IChpb25DaGFuZ2UpPVwib25UaW1lU3RlcENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3RlZFRpbWVTdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlPVwicG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiVGltZSBTdGVwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVGltZSBTdGVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gKm5nRm9yPVwibGV0IHN0ZXAgb2YgYXZhaWxhYmxlVGltZVN0ZXBzXCIgW3ZhbHVlXT1cInN0ZXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdGVwIH19IG1pblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9pb24tc2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pb24tY29sPlxuICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIHNpemU9XCIxMlwiIHNpemUtbWQ9XCI2XCI+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi1tYXJnaW4tZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwZXJjZW50T2ZDb21wdXRhdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcGVyY2VudE9mQ29tcHV0YXRpb25zIH19JSBJbWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb3VudHNQZXJpb2QucHJvZ3Jlc3NcIiBjbGFzcz1cInByb2dyZXNzLWluZGljYXRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gUHJvZ3Jlc3M6IHt7IGNvdW50c1BlcmlvZC5wcm9ncmVzcyB9fS4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFwZXJjZW50T2ZDb21wdXRhdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gaW1hZ2UgYXZhaWxhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicmVmcmVzaE1hcCgpXCIgW2Rpc2FibGVkXT1cInJlZnJlc2hJblByb2dyZXNzXCIgY2xhc3M9XCJyZWZyZXNoLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICBSZWZyZXNoIE1hcFxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvaW9uLWNvbD5cbiAgICAgICAgPC9pb24tcm93PlxuXG4gICAgICAgIDwhLS0gc3RhdHVzIHVwZGF0ZSByb3cgLS0+XG4gICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgPCEtLSBQcm9ncmVzcyBjb2wgLS0+XG4gICAgICAgICAgICA8aW9uLXByb2dyZXNzLWJhclxuICAgICAgICAgICAgICAgICAgICBbYnVmZmVyXT1cIihjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKSkrMC4wMVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cInJlZnJlc2hJblByb2dyZXNzID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY291bnRzUGVyaW9kLnByb2dyZXNzIC8gKCh0aW1lZnJhbWVEYXRlcz8ubGVuZ3RoIHx8IDEwKSArMylcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICAgIDwvaW9uLXByb2dyZXNzLWJhcj5cblxuICAgICAgICAgICAgPCEtLSBFcnJvciBjb2wgLS0+XG4gICAgICAgICAgICA8aW9uLWNvbCAoY2xpY2spPVwic2hvd0Z1bGxFcnJvciA9ICFzaG93RnVsbEVycm9yXCIgKm5nSWY9XCJyZWZyZXNoTWFuYWdlci5sYXN0RXJyb3JcIiBjbGFzcz1cImVycm9yLXJvd1wiXG4gICAgICAgICAgICAgICAgICAgICBzaXplPVwiMTJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJlcnJvci1pY29uXCIgbmFtZT1cIndhcm5pbmctb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5leHBhbmRlZF09XCJzaG93RnVsbEVycm9yXCIgY2xhc3M9XCJlcnJvci10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBzaG93RnVsbEVycm9yID8gcmVmcmVzaE1hbmFnZXIubGFzdEVycm9yIDogdHJ1bmNhdGVkRXJyb3IgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwic2hvd0Z1bGxFcnJvciA/ICdjaGV2cm9uLXVwJyA6ICdjaGV2cm9uLWRvd24nXCIgY2xhc3M9XCJlcnJvci1jYXJldFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgIDwvaW9uLXJvdz5cbiAgICA8L2lvbi1ncmlkPlxuXG4gICAgPCEtLSBNYXAgc2VjdGlvbiAtLT5cbiAgICA8aW9uLWNhcmQgY2xhc3M9XCJtYXAtY2FyZFwiPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudCBjbGFzcz1cIm1hcC1jb250ZW50XCI+XG4gICAgICAgICAgICA8aW9uLWdyaWQ+XG4gICAgICAgICAgICAgICAgPGlvbi1yb3cgKm5nSWY9XCJ0b2dnbGVNYXAgJiYgcGVyY2VudE9mSW1hZ2VzXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTWFwIGNvbXBvbmVudCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1jb2wgY2xhc3M9XCJtYXAtY29sdW1uXCIgc2l6ZS1sZz1cIjdcIiBzaXplLW1kPVwiMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJhYWluLW1hcCAjcmFhaW5NYXBSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkRGF0ZSk9XCJvbkRhdGVDaGFuZ2VJbk1hcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2VkU3VtKT1cIm9uU3VtQ2hhbmdlSW5NYXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRNYXJrZXIpPVwib25HYXVnZVNlbGVjdEluTWFwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nvb3JkaW5hdGVzXT1cImNvb3JkaW5hdGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdW11bGF0aXZlRHVyYXRpb25Jbk1pbnV0ZXNdPVwiY3VtdWxhdGl2ZUR1cmF0aW9uSW5NaW51dGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SGVpZ2h0XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdERhdGVdPVwiZGF0ZVNob3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXJrZXJzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhdWdlczogY29tcGFyZU1hbmFnZXIuZ2F1Z2VzSW5NYXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2F1Z2VzSW5Db21wYXJlOiBjb21wYXJlTWFuYWdlci5nYXVnZXNJbkNvbXBhcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHYXVnZXM6IGNvbXBhcmVNYW5hZ2VyLnNlbGVjdGVkR2F1Z2VzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsczogY29tcGFyZU1hbmFnZXIuc2VsZWN0ZWRQaXhlbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzU29sdXRpb246IGNvbXBhcmVNYW5hZ2VyLnBpeGVsc1NvbHV0aW9ucz8ubGVuZ3RoID8gY29tcGFyZU1hbmFnZXIucGl4ZWxzU29sdXRpb25zWzBdIDogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWRzOiBjb21wYXJlTWFuYWdlci5zcGVlZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDdW11bGF0aXZlXT1cInRvZ2dsZUN1bXVsYXRpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dWaXNpYmxlUGl4ZWxNYXJrZXJzXT1cInNob3dQaXhlbE1hcmtlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1bUZuXT1cInJlZnJlc2hNYW5hZ2VyLnN1bUZuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdW1WYWx1ZXNdPVwicmVmcmVzaE1hbmFnZXIuc3VtVmFsdWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lZnJhbWVDb250YWluZXJzXT1cInRpbWVmcmFtZUNvbnRhaW5lcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpbWVmcmFtZURhdGVzXT1cInRpbWVmcmFtZURhdGVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yYWFpbi1tYXA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUZWNobmljYWwgZGV0YWlscyAoY29sbGFwc2libGUgZm9yIGNsZWFuZXIgVUkpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPVwidGVjaG5pY2FsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+SW1hZ2UgRGV0YWlsczwvc3VtbWFyeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHMtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkNvbXB1dGVkOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERvbmVEYXRlIHwgZGF0ZToneXl5eS1NTS1kZCBISDptbScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5WZXJzaW9uOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcFZlcnNpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5MYXVuY2hlZCBieTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBMYXVuY2hlZEJ5IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+VGltZSBzcGVudDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBUaW1lU3BlbnRJbk1zIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+RGF0ZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyByZWZyZXNoTWFuYWdlci5yYWluQ29tcHV0YXRpb25NYXBEYXRlPy50b0lTT1N0cmluZygpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwge3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwRGF0ZSB8IGRhdGU6J3l5eXktTU0tZGQgSEg6bW0nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+V2F0ZXIgaW4gdGhlIG1hcDo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBzdW1EZXRhaWxzIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24tdG9nZ2xlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW9uQ2hhbmdlKT1cIm9uVG9nZ2xlUGl4ZWxNYXJrZXJzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzaG93UGl4ZWxNYXJrZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDhweDsgdHJhbnNmb3JtOiBzY2FsZSgwLjcpO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaW9uLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlNvdXJjZSBEQlogbWluOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcE9yaWdpbmFsTWluIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+U291cmNlIERCWiBtYXg6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgcmVmcmVzaE1hbmFnZXIucmFpbkNvbXB1dGF0aW9uTWFwT3JpZ2luYWxNYXggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZXRhaWxzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvaW9uLWNvbD5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIERhdGEgcGFuZWwgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tY29sICpuZ0lmPVwiISFjb21wYXJlTWFuYWdlci5jb21wYXJlVmVyc2lvblwiIGNsYXNzPVwiZGF0YS1jb2x1bW5cIiBzaXplLWxnPVwiNVwiIHNpemUtbWQ9XCIxMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGEtcGFuZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBhcmUgc3RhY2sgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wYXJlLXN0YWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyYWFpbi1jb21wYXJlLXN0YWNrXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkUG9pbnQpPVwib25HYXVnZVNlbGVjdEluQ29tcGFyZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFyZU1hbmFnZXJdPVwiY29tcGFyZU1hbmFnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdW11bGF0aXZlXT1cInRvZ2dsZUN1bXVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yYWFpbi1jb21wYXJlLXN0YWNrPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBUZWNobmljYWwgZGV0YWlscyAoY29sbGFwc2libGUgZm9yIGNsZWFuZXIgVUkpIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPVwidGVjaG5pY2FsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN1bW1hcnk+Q29tcGFyZSBEZXRhaWxzPC9zdW1tYXJ5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscy1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnd2FybmluZyc6IHJlZnJlc2hNYW5hZ2VyLnJhaW5Db21wdXRhdGlvbk1hcERvbmVEYXRlPy5nZXRUaW1lKCkgPiBjb21wYXJlTWFuYWdlci5jdXJyZW50UXVhbGl0eURvbmVEYXRlPy5nZXRUaW1lKCkgKyA2MDAwMH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkNvbXB1dGVkOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5RG9uZURhdGUgfCBkYXRlOid5eXl5LU1NLWRkIEhIOm1tJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPlZlcnNpb246PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLXZhbHVlXCI+e3sgY29tcGFyZU1hbmFnZXIuY29tcGFyZVZlcnNpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5MYXVuY2hlZCBieTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5jdXJyZW50UXVhbGl0eUxhdW5jaGVkQnkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtbGFiZWxcIj5UaW1lIHNwZW50Ojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmN1cnJlbnRRdWFsaXR5VGltZVNwZW50SW5NcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC1sYWJlbFwiPkdhdWdlczo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXRhaWwtdmFsdWVcIj57eyBjb21wYXJlTWFuYWdlci5nYXVnZXNJbkNvbXBhcmUubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGV0YWlsLWxhYmVsXCI+UG9pbnRzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRldGFpbC12YWx1ZVwiPnt7IGNvbXBhcmVNYW5hZ2VyLmdsb2JhbENvbXBhcmVQb2ludHMubGVuZ3RoIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGV0YWlscz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1jb2w+XG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgICAgIDxpb24tcm93PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEJvdHRvbSBwcm9ncmVzcyBiYXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxpb24tcHJvZ3Jlc3MtYmFyICpuZ0lmPVwicmVmcmVzaEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmZmVyXT1cIihjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKSkrMC4wMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb3VudHNQZXJpb2QucHJvZ3Jlc3MgLyAoKHRpbWVmcmFtZURhdGVzPy5sZW5ndGggfHwgMTApICszKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgICAgICAgPC9pb24tcm93PlxuICAgICAgICAgICAgPC9pb24tZ3JpZD5cbiAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxuICAgIDwvaW9uLWNhcmQ+XG5cbiAgICA8IS0tIEdhdWdlIHZhbHVlcyBzZWN0aW9uIC0tPlxuICAgIDxpb24tY2FyZCAqbmdJZj1cImdhdWdlU2VsZWN0ZWRQb2ludHMubGVuZ3RoICYmIGdhdWdlU2VsZWN0ZWRQb2ludHNbMF0udmFsdWVzLmxlbmd0aFwiIGNsYXNzPVwiZ2F1Z2UtY2FyZFwiPlxuICAgICAgICA8aW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGlvbi1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiYW5hbHl0aWNzLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIFNlbGVjdGVkIEdhdWdlIERhdGFcbiAgICAgICAgICAgIDwvaW9uLWNhcmQtdGl0bGU+XG4gICAgICAgIDwvaW9uLWNhcmQtaGVhZGVyPlxuICAgICAgICA8aW9uLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxyYWFpbi1kYXRlLWZvY3VzXG4gICAgICAgICAgICAgICAgICAgIFtjdXJyZW50SGVpZ2h0XT1cIjMwMFwiXG4gICAgICAgICAgICAgICAgICAgIFtmb2N1c0RhdGVdPVwicGVyaW9kQmVnaW5cIlxuICAgICAgICAgICAgICAgICAgICBbZm9jdXNSYW5nZV09XCJEYXRlUmFuZ2UuREFZXCJcbiAgICAgICAgICAgICAgICAgICAgW3BvaW50c109XCJnYXVnZVNlbGVjdGVkUG9pbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgW3dpdGhvdXRBbGxdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPC9yYWFpbi1kYXRlLWZvY3VzPlxuICAgICAgICA8L2lvbi1jYXJkLWNvbnRlbnQ+XG4gICAgPC9pb24tY2FyZD5cblxuICAgIDwhLS0gUXVhbGl0eSBQZXJmb3JtYW5jZSBNb2RhbCAtLT5cbiAgICA8ZGl2IChjbGljayk9XCJjbG9zZVF1YWxpdHlNb2RhbCgpXCIgKm5nSWY9XCJzaG93UXVhbGl0eU1vZGFsXCIgY2xhc3M9XCJxdWFsaXR5LW1vZGFsLW92ZXJsYXlcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgY2xhc3M9XCJxdWFsaXR5LW1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWFsaXR5LW1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxoMj5Nb2RlbCBRdWFsaXR5IFBlcmZvcm1hbmNlPC9oMj5cbiAgICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2VRdWFsaXR5TW9kYWwoKVwiIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInF1YWxpdHktbW9kYWwtYm9keVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWFsaXR5SW5kaWNhdG9yc0xvYWRpbmdcIiBjbGFzcz1cInF1YWxpdHktbG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+TG9hZGluZyBpbmRpY2F0b3JzLi4uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcXVhbGl0eUluZGljYXRvcnNMb2FkaW5nICYmIHF1YWxpdHlJbmRpY2F0b3JzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwicXVhbGl0eS1lbXB0eVwiPlxuICAgICAgICAgICAgICAgICAgICBObyBxdWFsaXR5IGluZGljYXRvcnMgYXZhaWxhYmxlIGZvciB0aGlzIHllYXIuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwiIXF1YWxpdHlJbmRpY2F0b3JzTG9hZGluZyAmJiBxdWFsaXR5SW5kaWNhdG9ycy5sZW5ndGggPiAwXCIgY2xhc3M9XCJxdWFsaXR5LXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk1vZGVsPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Db21wYXJlPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5HYXVnZXM8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlcmlvZDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QXZnIFF1YWxpdHk8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlVwZGF0ZWQ8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaW5kaWNhdG9yIG9mIHF1YWxpdHlJbmRpY2F0b3JzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaW5kaWNhdG9yLmNvbXB1dGluZ1ZlcnNpb24gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5xdWFsaXR5VmVyc2lvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgaW5kaWNhdG9yLnByb3ZpZGVyIH19PGJyPnt7IGluZGljYXRvci50aW1lU3RlcEluTWludXRlcyB9fSBtaW48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGZvcm1hdERhdGUoaW5kaWNhdG9yLnN0YXJ0RGF0ZSkgfX08YnI+e3sgZm9ybWF0RGF0ZShpbmRpY2F0b3IuZW5kRGF0ZSkgfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGluZGljYXRvci5hdmVyYWdlUXVhbGl0eSB8IG51bWJlcjonMS4yLTInIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyBmb3JtYXREYXRlKGluZGljYXRvci5sYXN0VXBkYXRlZEF0KSB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG4iXX0=