@skyux/ag-grid 4.12.0 → 4.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,7 +42,7 @@ let SkyAgGridCellValidatorTooltipComponent = class SkyAgGridCellValidatorTooltip
42
42
  hideIndicator() {
43
43
  this.zone.run(() => {
44
44
  this.indicatorShouldShow = false;
45
- this.changeDetector.markForCheck();
45
+ this.changeDetector.detectChanges();
46
46
  });
47
47
  }
48
48
  hidePopover() {
@@ -51,7 +51,7 @@ let SkyAgGridCellValidatorTooltipComponent = class SkyAgGridCellValidatorTooltip
51
51
  showIndicator() {
52
52
  this.zone.run(() => {
53
53
  this.indicatorShouldShow = true;
54
- this.changeDetector.markForCheck();
54
+ this.changeDetector.detectChanges();
55
55
  });
56
56
  }
57
57
  showPopover() {
@@ -74,4 +74,4 @@ SkyAgGridCellValidatorTooltipComponent = __decorate([
74
74
  })
75
75
  ], SkyAgGridCellValidatorTooltipComponent);
76
76
  export { SkyAgGridCellValidatorTooltipComponent };
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1jZWxsLXZhbGlkYXRvci10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9hZy1ncmlkLyIsInNvdXJjZXMiOlsibW9kdWxlcy9hZy1ncmlkL2NlbGwtdmFsaWRhdG9yL2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CLElBQWEsc0NBQXNDLEdBQW5ELE1BQWEsc0NBQXNDO0lBNkNqRCxZQUNVLGNBQWlDLEVBQ2pDLElBQVk7UUFEWixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVJmLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztJQVEzRCxDQUFDO0lBOUNMLElBQVcsTUFBTSxDQUFDLEtBQXFDOztRQUNyRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLHdCQUF3QjtRQUN4QixNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLDBDQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFdBQTZCLEVBQUUsRUFBRTtZQUN6RyxpSUFBaUk7WUFDakksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUM3RSxXQUFXLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsRUFBRTtRQUVILHdCQUF3QjtRQUN4QixNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLDBDQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLEVBQUU7UUFFSCx3QkFBd0I7UUFDeEIsTUFBQSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRywwQ0FBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1lBQ3BGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLEVBQUU7UUFFSCxJQUFJLGNBQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQiwwQ0FBRSxnQkFBZ0IsQ0FBQSxLQUFLLFVBQVUsRUFBRTtZQUMxRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUNyRixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUNqQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsU0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLDBDQUFFLGdCQUFnQixDQUFDO1NBQzFGO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBYU0sYUFBYTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGLENBQUE7O1lBekIyQixpQkFBaUI7WUFDM0IsTUFBTTs7QUE3Q3RCO0lBREMsS0FBSyxFQUFFO29FQW9DUDtBQXJDVSxzQ0FBc0M7SUFObEQsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLG9DQUFvQztRQUU5QywwaEJBQTREO1FBQzVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztLQUNoRCxDQUFDO0dBQ1csc0NBQXNDLENBdUVsRDtTQXZFWSxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5UG9wb3Zlck1lc3NhZ2UsIFNreVBvcG92ZXJNZXNzYWdlVHlwZSB9IGZyb20gJ0Bza3l1eC9wb3BvdmVycyc7XG5pbXBvcnQgeyBDZWxsRm9jdXNlZEV2ZW50LCBFdmVudHMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTa3lDZWxsUmVuZGVyZXJWYWxpZGF0b3JQYXJhbXMgfSBmcm9tICcuLi90eXBlcy9jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci1wYXJhbXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktYWctZ3JpZC1jZWxsLXZhbGlkYXRvci10b29sdGlwJyxcbiAgc3R5bGVVcmxzOiBbJ2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJ2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZENlbGxWYWxpZGF0b3JUb29sdGlwQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwYXJhbXModmFsdWU6IFNreUNlbGxSZW5kZXJlclZhbGlkYXRvclBhcmFtcykge1xuICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zID0gdmFsdWU7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5hcGk/LmFkZEV2ZW50TGlzdGVuZXIoRXZlbnRzLkVWRU5UX0NFTExfRk9DVVNFRCwgKGV2ZW50UGFyYW1zOiBDZWxsRm9jdXNlZEV2ZW50KSA9PiB7XG4gICAgICAvLyBXZSB3YW50IHRvIGNsb3NlIGFueSBwb3BvdmVycyB0aGF0IGFyZSBvcGVuZWQgd2hlbiBvdGhlciBjZWxscyBhcmUgZm9jdXNlZCwgYnV0IG9wZW4gYSBwb3BvdmVyIGlmIHRoZSBjdXJyZW50IGNlbGwgaXMgZm9jdXNlZC5cbiAgICAgIGlmIChldmVudFBhcmFtcy5jb2x1bW4uZ2V0Q29sSWQoKSAhPT0gdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuY29sdW1uLmdldENvbElkKCkgfHxcbiAgICAgICAgZXZlbnRQYXJhbXMucm93SW5kZXggIT09IHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnJvd0luZGV4KSB7XG4gICAgICAgIHRoaXMuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLmVHcmlkQ2VsbD8uYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChbJ0Fycm93RG93bicsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICB0aGlzLnNob3dQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5hcGk/LmFkZEV2ZW50TGlzdGVuZXIoRXZlbnRzLkVWRU5UX0NFTExfRURJVElOR19TVEFSVEVELCAoKSA9PiB7XG4gICAgICB0aGlzLmhpZGVQb3BvdmVyKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXM/LnZhbGlkYXRvck1lc3NhZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yTWVzc2FnZSA9IHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMudmFsaWRhdG9yTWVzc2FnZShcbiAgICAgICAgdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMudmFsdWUsXG4gICAgICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLmRhdGEsXG4gICAgICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnJvd0luZGV4XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzPy52YWxpZGF0b3JNZXNzYWdlO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaW5kaWNhdG9yU2hvdWxkU2hvdyA9IHRydWU7XG4gIHB1YmxpYyBwb3BvdmVyTWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreVBvcG92ZXJNZXNzYWdlPigpO1xuICBwdWJsaWMgdmFsaWRhdG9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjZWxsUmVuZGVyZXJQYXJhbXM6IFNreUNlbGxSZW5kZXJlclZhbGlkYXRvclBhcmFtcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHsgfVxuXG4gIHB1YmxpYyBoaWRlSW5kaWNhdG9yKCk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbmRpY2F0b3JTaG91bGRTaG93ID0gZmFsc2U7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhpZGVQb3BvdmVyKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlck1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGU6IFNreVBvcG92ZXJNZXNzYWdlVHlwZS5DbG9zZSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93SW5kaWNhdG9yKCk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbmRpY2F0b3JTaG91bGRTaG93ID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd1BvcG92ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyTWVzc2FnZVN0cmVhbS5uZXh0KHsgdHlwZTogU2t5UG9wb3Zlck1lc3NhZ2VUeXBlLk9wZW4gfSk7XG4gIH1cbn1cbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1jZWxsLXZhbGlkYXRvci10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9hZy1ncmlkLyIsInNvdXJjZXMiOlsibW9kdWxlcy9hZy1ncmlkL2NlbGwtdmFsaWRhdG9yL2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CLElBQWEsc0NBQXNDLEdBQW5ELE1BQWEsc0NBQXNDO0lBNkNqRCxZQUNVLGNBQWlDLEVBQ2pDLElBQVk7UUFEWixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVJmLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztJQVEzRCxDQUFDO0lBOUNMLElBQVcsTUFBTSxDQUFDLEtBQXFDOztRQUNyRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLHdCQUF3QjtRQUN4QixNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLDBDQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFdBQTZCLEVBQUUsRUFBRTtZQUN6RyxpSUFBaUk7WUFDakksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUM3RSxXQUFXLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNwQjtRQUNILENBQUMsRUFBRTtRQUVILHdCQUF3QjtRQUN4QixNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLDBDQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUMzRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7UUFDSCxDQUFDLEVBQUU7UUFFSCx3QkFBd0I7UUFDeEIsTUFBQSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRywwQ0FBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1lBQ3BGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLEVBQUU7UUFFSCxJQUFJLGNBQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQiwwQ0FBRSxnQkFBZ0IsQ0FBQSxLQUFLLFVBQVUsRUFBRTtZQUMxRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUNyRixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUM3QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUM1QixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUNqQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsU0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLDBDQUFFLGdCQUFnQixDQUFDO1NBQzFGO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBYU0sYUFBYTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGLENBQUE7O1lBekIyQixpQkFBaUI7WUFDM0IsTUFBTTs7QUE3Q3RCO0lBREMsS0FBSyxFQUFFO29FQW9DUDtBQXJDVSxzQ0FBc0M7SUFObEQsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLG9DQUFvQztRQUU5QywwaEJBQTREO1FBQzVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztLQUNoRCxDQUFDO0dBQ1csc0NBQXNDLENBdUVsRDtTQXZFWSxzQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5UG9wb3Zlck1lc3NhZ2UsIFNreVBvcG92ZXJNZXNzYWdlVHlwZSB9IGZyb20gJ0Bza3l1eC9wb3BvdmVycyc7XG5pbXBvcnQgeyBDZWxsRm9jdXNlZEV2ZW50LCBFdmVudHMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTa3lDZWxsUmVuZGVyZXJWYWxpZGF0b3JQYXJhbXMgfSBmcm9tICcuLi90eXBlcy9jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci1wYXJhbXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktYWctZ3JpZC1jZWxsLXZhbGlkYXRvci10b29sdGlwJyxcbiAgc3R5bGVVcmxzOiBbJ2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJ2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZENlbGxWYWxpZGF0b3JUb29sdGlwQ29tcG9uZW50IHtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBwYXJhbXModmFsdWU6IFNreUNlbGxSZW5kZXJlclZhbGlkYXRvclBhcmFtcykge1xuICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zID0gdmFsdWU7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5hcGk/LmFkZEV2ZW50TGlzdGVuZXIoRXZlbnRzLkVWRU5UX0NFTExfRk9DVVNFRCwgKGV2ZW50UGFyYW1zOiBDZWxsRm9jdXNlZEV2ZW50KSA9PiB7XG4gICAgICAvLyBXZSB3YW50IHRvIGNsb3NlIGFueSBwb3BvdmVycyB0aGF0IGFyZSBvcGVuZWQgd2hlbiBvdGhlciBjZWxscyBhcmUgZm9jdXNlZCwgYnV0IG9wZW4gYSBwb3BvdmVyIGlmIHRoZSBjdXJyZW50IGNlbGwgaXMgZm9jdXNlZC5cbiAgICAgIGlmIChldmVudFBhcmFtcy5jb2x1bW4uZ2V0Q29sSWQoKSAhPT0gdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuY29sdW1uLmdldENvbElkKCkgfHxcbiAgICAgICAgZXZlbnRQYXJhbXMucm93SW5kZXggIT09IHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnJvd0luZGV4KSB7XG4gICAgICAgIHRoaXMuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qaXN0YW5idWwgaWdub3JlIG5leHQqL1xuICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLmVHcmlkQ2VsbD8uYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChbJ0Fycm93RG93bicsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICB0aGlzLnNob3dQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5hcGk/LmFkZEV2ZW50TGlzdGVuZXIoRXZlbnRzLkVWRU5UX0NFTExfRURJVElOR19TVEFSVEVELCAoKSA9PiB7XG4gICAgICB0aGlzLmhpZGVQb3BvdmVyKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXM/LnZhbGlkYXRvck1lc3NhZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yTWVzc2FnZSA9IHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMudmFsaWRhdG9yTWVzc2FnZShcbiAgICAgICAgdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMudmFsdWUsXG4gICAgICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLmRhdGEsXG4gICAgICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnJvd0luZGV4XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzPy52YWxpZGF0b3JNZXNzYWdlO1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaW5kaWNhdG9yU2hvdWxkU2hvdyA9IHRydWU7XG4gIHB1YmxpYyBwb3BvdmVyTWVzc2FnZVN0cmVhbSA9IG5ldyBTdWJqZWN0PFNreVBvcG92ZXJNZXNzYWdlPigpO1xuICBwdWJsaWMgdmFsaWRhdG9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjZWxsUmVuZGVyZXJQYXJhbXM6IFNreUNlbGxSZW5kZXJlclZhbGlkYXRvclBhcmFtcztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHsgfVxuXG4gIHB1YmxpYyBoaWRlSW5kaWNhdG9yKCk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5pbmRpY2F0b3JTaG91bGRTaG93ID0gZmFsc2U7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXJNZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lQb3BvdmVyTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0luZGljYXRvcigpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdG9yU2hvdWxkU2hvdyA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93UG9wb3ZlcigpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXJNZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lQb3BvdmVyTWVzc2FnZVR5cGUuT3BlbiB9KTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __values } from "tslib";
2
2
  import { AfterContentInit, ChangeDetectorRef, ContentChildren, Directive, Input, OnDestroy, QueryList } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
4
+ import { filter, takeUntil } from 'rxjs/operators';
5
5
  import { AgGridAngular } from 'ag-grid-angular';
6
6
  import { SkyDataManagerService, SkyDataManagerSortOption, SkyDataManagerState, SkyDataViewConfig } from '@skyux/data-manager';
7
7
  import { SkyAgGridWrapperComponent } from './ag-grid-wrapper.component';
@@ -94,13 +94,30 @@ var SkyAgGridDataManagerAdapterDirective = /** @class */ (function () {
94
94
  agGrid.api.sizeColumnsToFit();
95
95
  });
96
96
  agGrid.columnMoved
97
+ .pipe(takeUntil(this.ngUnsubscribe), filter(function (event) {
98
+ return ![
99
+ 'gridInitializing',
100
+ 'uiColumnResized',
101
+ 'uiColumnDragged',
102
+ 'api'
103
+ ].includes(event.source);
104
+ }))
105
+ .subscribe(function (value) {
106
+ _this.updateColumnsInCurrentDataState(value.columnApi);
107
+ });
108
+ var currentColumns;
109
+ agGrid.dragStarted
97
110
  .pipe(takeUntil(this.ngUnsubscribe))
98
- .subscribe(function (event) {
99
- var columnOrder = agGrid.columnApi.getAllDisplayedVirtualColumns().map(function (col) { return col.getColDef().colId; });
100
- if (event.source !== 'api') {
101
- var viewState = _this.currentDataState.getViewStateById(_this.viewConfig.id);
102
- viewState.displayedColumnIds = columnOrder;
103
- _this.dataManagerSvc.updateDataState(_this.currentDataState.addOrUpdateView(_this.viewConfig.id, viewState), _this.viewConfig.id);
111
+ .subscribe(function (value) {
112
+ currentColumns = _this.getColumnOrder(value.columnApi);
113
+ });
114
+ agGrid.dragStopped
115
+ .pipe(takeUntil(this.ngUnsubscribe))
116
+ .subscribe(function (value) {
117
+ var newColumns = _this.getColumnOrder(value.columnApi);
118
+ var hasChanged = currentColumns.findIndex(function (colId, i) { return colId !== newColumns[i]; });
119
+ if (hasChanged > -1) {
120
+ _this.updateColumnsInCurrentDataState(value.columnApi);
104
121
  }
105
122
  });
106
123
  agGrid.rowSelected
@@ -144,6 +161,17 @@ var SkyAgGridDataManagerAdapterDirective = /** @class */ (function () {
144
161
  _this.dataManagerSvc.updateDataState(_this.currentDataState, _this.viewConfig.id);
145
162
  });
146
163
  };
164
+ SkyAgGridDataManagerAdapterDirective.prototype.updateColumnsInCurrentDataState = function (columnApi) {
165
+ var columnOrder = this.getColumnOrder(columnApi);
166
+ var viewState = this.currentDataState.getViewStateById(this.viewConfig.id);
167
+ viewState.displayedColumnIds = columnOrder;
168
+ this.dataManagerSvc.updateDataState(this.currentDataState.addOrUpdateView(this.viewConfig.id, viewState), this.viewConfig.id);
169
+ };
170
+ SkyAgGridDataManagerAdapterDirective.prototype.getColumnOrder = function (columnApi) {
171
+ return columnApi
172
+ .getAllDisplayedVirtualColumns()
173
+ .map(function (col) { return col.getColDef().colId; });
174
+ };
147
175
  SkyAgGridDataManagerAdapterDirective.prototype.displayColumns = function (dataState) {
148
176
  var e_1, _a;
149
177
  var agGrid = this.currentAgGrid;
@@ -200,4 +228,4 @@ var SkyAgGridDataManagerAdapterDirective = /** @class */ (function () {
200
228
  return SkyAgGridDataManagerAdapterDirective;
201
229
  }());
202
230
  export { SkyAgGridDataManagerAdapterDirective };
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvYWctZ3JpZC8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUVSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEVBQ2QsTUFBTSxpQkFBaUIsQ0FBQztBQU96QixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLHlCQUF5QixFQUMxQixNQUFNLDZCQUE2QixDQUFDO0FBS3JDO0lBa0JFLDhDQUNVLGNBQWlDLEVBQ2pDLGNBQXFDO1FBRHJDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFKdkMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSWEsQ0FBQztJQUU3QyxpRUFBa0IsR0FBekI7UUFBQSxpQkFjQztRQWJDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBRWhDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTzthQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxjQUFjLEVBQUUsRUFBckIsQ0FBcUIsQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPO2FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25DLFNBQVMsQ0FBQyxjQUFNLE9BQUEsS0FBSSxDQUFDLHdCQUF3QixFQUFFLEVBQS9CLENBQStCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sMERBQVcsR0FBbEI7UUFDRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLDZEQUFjLEdBQXRCO1FBQ0UsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFFM0MsMEJBQTBCO1FBQzFCLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7UUFFRCxJQUFJLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxDQUFDLElBQUksQ0FDViwyRUFBMkUsQ0FDNUUsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVPLHVFQUF3QixHQUFoQztRQUNFLElBQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQUUvRCwwQkFBMEI7UUFDMUIsSUFBSSxxQkFBcUIsS0FBSyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7U0FDbkM7YUFBTSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzNFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxxQkFBcUIsR0FBRyxDQUFDLEVBQUU7WUFDN0IsT0FBTyxDQUFDLElBQUksQ0FDViwyRUFBMkUsQ0FDNUUsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVPLCtEQUFnQixHQUF4QjtRQUNFLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1FBRS9CLHdCQUF3QjtRQUN4QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNqQztJQUNILENBQUM7SUFFTyx5RUFBMEIsR0FBbEM7UUFDRSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsU0FBUyxDQUFDO0lBQzNDLENBQUM7SUFFTyx1RUFBd0IsR0FBaEM7UUFBQSxpQkFVQztRQVRDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDO1FBRS9ELFVBQVUsQ0FBQztZQUNULElBQUksS0FBSSxDQUFDLHVCQUF1QixFQUFFO2dCQUNoQyxLQUFJLENBQUMsdUJBQXVCLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO2FBQ3JEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sNkRBQWMsR0FBdEI7UUFBQSxpQkFzRkM7UUFyRkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFFckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFFNUIsTUFBTSxDQUFDLFNBQVM7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUM7WUFDVCxLQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixHQUFHLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxDQUFDO1lBQzdELEtBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxDQUFDO1lBRTNELEtBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXRELEtBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztpQkFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQ25DLFNBQVMsQ0FBQyxVQUFDLFNBQThCO2dCQUN4QyxLQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO2dCQUNsQyxLQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBRUwsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUwsTUFBTSxDQUFDLFdBQVc7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUNuQyxTQUFTLENBQUMsVUFBQyxLQUF1QjtZQUNqQyxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLDZCQUE2QixFQUFFLENBQUMsR0FBRyxDQUNwRSxVQUFBLEdBQUcsSUFBSSxPQUFBLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQXJCLENBQXFCLENBQzdCLENBQUM7WUFFRixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFO2dCQUMxQixJQUFNLFNBQVMsR0FBRyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDN0UsU0FBUyxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztnQkFFM0MsS0FBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQ2pDLEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQ3BFLEtBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUNuQixDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLE1BQU0sQ0FBQyxXQUFXO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLFVBQUMsS0FBdUI7WUFDakMsSUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUN2QixJQUFJLFdBQVcsR0FBRyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztZQUMxRCxJQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbEQsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksUUFBUSxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUN2QyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDL0I7aUJBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQy9DLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsS0FBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDaEQsS0FBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0UsS0FBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVMLE1BQU0sQ0FBQyxXQUFXO2FBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDO1lBQ1QsSUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoRCxJQUFJLFVBQW9DLENBQUM7WUFFekMsMEJBQTBCO1lBQzFCLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRTtnQkFDeEIsSUFBTSxpQkFBZSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekMsSUFBTSxrQkFBZ0IsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxpQkFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzRSxJQUFNLGlCQUFpQixHQUFHLEtBQUksQ0FBQyxjQUFjLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztnQkFFNUUsMEJBQTBCO2dCQUMxQixJQUFJLGlCQUFpQixDQUFDLFdBQVcsRUFBRTtvQkFDakMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBQyxNQUFnQzt3QkFDL0UsT0FBTyxNQUFNLENBQUMsWUFBWSxLQUFLLGtCQUFnQixDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUs7NEJBQy9ELE1BQU0sQ0FBQyxVQUFVLEtBQUssQ0FBQyxpQkFBZSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztvQkFDNUQsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsVUFBVSxHQUFHLFNBQVMsQ0FBQztpQkFDeEI7YUFDRjtZQUNELEtBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsR0FBRyxVQUFVLENBQUM7WUFDcEQsS0FBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsS0FBSSxDQUFDLGdCQUFnQixFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sNkRBQWMsR0FBdEIsVUFBdUIsU0FBOEI7O1FBQ25ELElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbEMsSUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxrQkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDdEMsd0JBQXdCO1FBQ3hCLElBQUksU0FBUyxDQUFDLGtCQUFrQixFQUFFO1lBQ2hDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQztTQUNuRDtRQUNELElBQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7O1lBRWpELEtBQXFCLElBQUEsWUFBQSxTQUFBLE9BQU8sQ0FBQSxnQ0FBQSxxREFBRTtnQkFBekIsSUFBTSxNQUFNLG9CQUFBO2dCQUNmLElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsSUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUVuRCxNQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzlDOzs7Ozs7Ozs7SUFDSCxDQUFDO0lBRU8sd0RBQVMsR0FBakI7UUFDRSxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyx1REFBUSxHQUFoQjtRQUNFLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0JBdE15QixpQkFBaUI7Z0JBQ2pCLHFCQUFxQjs7SUFqQi9DO1FBREMsS0FBSyxFQUFFO3dFQUNjO0lBR3RCO1FBREMsZUFBZSxDQUFDLGFBQWEsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQzs0RUFDVjtJQUc1QztRQURDLGVBQWUsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQztzRkFDQTtJQVR2RCxvQ0FBb0M7UUFIaEQsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLCtCQUErQjtTQUMxQyxDQUFDO09BQ1csb0NBQW9DLENBME5oRDtJQUFELDJDQUFDO0NBQUEsQUExTkQsSUEwTkM7U0ExTlksb0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQWdHcmlkQW5ndWxhclxufSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuXG5pbXBvcnQge1xuICBDb2x1bW5Nb3ZlZEV2ZW50LFxuICBSb3dTZWxlY3RlZEV2ZW50XG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcblxuaW1wb3J0IHtcbiAgU2t5RGF0YU1hbmFnZXJTZXJ2aWNlLFxuICBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24sXG4gIFNreURhdGFNYW5hZ2VyU3RhdGUsXG4gIFNreURhdGFWaWV3Q29uZmlnXG59IGZyb20gJ0Bza3l1eC9kYXRhLW1hbmFnZXInO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50XG59IGZyb20gJy4vYWctZ3JpZC13cmFwcGVyLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWREYXRhTWFuYWdlckFkYXB0ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB2aWV3SWQ6IHN0cmluZztcblxuICBAQ29udGVudENoaWxkcmVuKEFnR3JpZEFuZ3VsYXIsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIGFnR3JpZExpc3Q6IFF1ZXJ5TGlzdDxBZ0dyaWRBbmd1bGFyPjtcblxuICBAQ29udGVudENoaWxkcmVuKFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgcHVibGljIHNreUFnR3JpZFdyYXBwZXJMaXN0OiBRdWVyeUxpc3Q8U2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBjdXJyZW50QWdHcmlkOiBBZ0dyaWRBbmd1bGFyO1xuICBwcml2YXRlIGN1cnJlbnREYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGU7XG4gIHByaXZhdGUgY3VycmVudFNreUFnR3JpZFdyYXBwZXI6IFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnQ7XG4gIHByaXZhdGUgZGF0YVN0YXRlU3ViOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgdmlld0NvbmZpZzogU2t5RGF0YVZpZXdDb25maWc7XG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBkYXRhTWFuYWdlclN2YzogU2t5RGF0YU1hbmFnZXJTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMuc2V0Vmlld2tlZXBlckNsYXNzZXModGhpcy52aWV3SWQsIFsnLmFnLWhlYWRlciddKTtcblxuICAgIHRoaXMudmlld0NvbmZpZyA9IHRoaXMuZGF0YU1hbmFnZXJTdmMuZ2V0Vmlld0J5SWQodGhpcy52aWV3SWQpO1xuICAgIHRoaXMuY2hlY2tGb3JBZ0dyaWQoKTtcbiAgICB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpO1xuXG4gICAgdGhpcy5hZ0dyaWRMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yQWdHcmlkKCkpO1xuXG4gICAgdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5jaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jaGVja0ZvclNreUFnR3JpZFdyYXBwZXIoKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JBZ0dyaWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkQ291bnQgPSB0aGlzLmFnR3JpZExpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoYWdHcmlkQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMudW5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hZ0dyaWRMaXN0LmZpcnN0ICE9PSB0aGlzLmN1cnJlbnRBZ0dyaWQpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJBZ0dyaWQoKTtcbiAgICB9XG5cbiAgICBpZiAoYWdHcmlkQ291bnQgPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdNb3JlIHRoYW4gb25lIGFnLWdyaWQgY2hpbGQgY29tcG9uZW50IHdhcyBmb3VuZC4gVXNpbmcgdGhlIGZpcnN0IGFnLUdyaWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICBjb25zdCBza3lBZ0dyaWRXcmFwcGVyQ291bnQgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0Lmxlbmd0aDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHNreUFnR3JpZFdyYXBwZXJDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5maXJzdCAhPT0gdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlcikge1xuICAgICAgdGhpcy5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcbiAgICB9XG5cbiAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID4gMSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnTW9yZSB0aGFuIG9uZSBhZy1ncmlkIGNoaWxkIGNvbXBvbmVudCB3YXMgZm91bmQuIFVzaW5nIHRoZSBmaXJzdCBhZy1HcmlkLidcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEFnR3JpZCA9IHVuZGVmaW5lZDtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0aGlzLmRhdGFTdGF0ZVN1Yikge1xuICAgICAgdGhpcy5kYXRhU3RhdGVTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpOiB2b2lkIHtcbiAgICB0aGlzLnVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyID0gdGhpcy5za3lBZ0dyaWRXcmFwcGVyTGlzdC5maXJzdDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlci52aWV3a2VlcGVyQ2xhc3NlcyA9IFtdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWdpc3RlckFnR3JpZCgpOiB2b2lkIHtcbiAgICB0aGlzLnVucmVnaXN0ZXJBZ0dyaWQoKTtcblxuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcblxuICAgIHRoaXMuY3VycmVudEFnR3JpZCA9IGFnR3JpZDtcblxuICAgIGFnR3JpZC5ncmlkUmVhZHlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudmlld0NvbmZpZy5vblNlbGVjdEFsbENsaWNrID0gdGhpcy5zZWxlY3RBbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy52aWV3Q29uZmlnLm9uQ2xlYXJBbGxDbGljayA9IHRoaXMuY2xlYXJBbGwuYmluZCh0aGlzKTtcblxuICAgICAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZVZpZXdDb25maWcodGhpcy52aWV3Q29uZmlnKTtcblxuICAgICAgICB0aGlzLmRhdGFTdGF0ZVN1YiA9IHRoaXMuZGF0YU1hbmFnZXJTdmMuZ2V0RGF0YVN0YXRlVXBkYXRlcyh0aGlzLnZpZXdDb25maWcuaWQpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUgPSBkYXRhU3RhdGU7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgYWdHcmlkLmFwaS5zaXplQ29sdW1uc1RvRml0KCk7XG4gICAgICB9KTtcblxuICAgIGFnR3JpZC5jb2x1bW5Nb3ZlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogQ29sdW1uTW92ZWRFdmVudCkgPT4ge1xuICAgICAgICBsZXQgY29sdW1uT3JkZXIgPSBhZ0dyaWQuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZFZpcnR1YWxDb2x1bW5zKCkubWFwKFxuICAgICAgICAgIGNvbCA9PiBjb2wuZ2V0Q29sRGVmKCkuY29sSWRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZXZlbnQuc291cmNlICE9PSAnYXBpJykge1xuICAgICAgICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKHRoaXMudmlld0NvbmZpZy5pZCk7XG4gICAgICAgICAgdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcyA9IGNvbHVtbk9yZGVyO1xuXG4gICAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUoXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnREYXRhU3RhdGUuYWRkT3JVcGRhdGVWaWV3KHRoaXMudmlld0NvbmZpZy5pZCwgdmlld1N0YXRlKSxcbiAgICAgICAgICAgIHRoaXMudmlld0NvbmZpZy5pZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnJvd1NlbGVjdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3dTZWxlY3RlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IGV2ZW50Lm5vZGU7XG4gICAgICAgIGxldCBzZWxlY3RlZElkcyA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyB8fCBbXTtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSBzZWxlY3RlZElkcy5pbmRleE9mKHJvdy5kYXRhLmlkKTtcblxuICAgICAgICBpZiAocm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5wdXNoKHJvdy5kYXRhLmlkKTtcbiAgICAgICAgfSBlbHNlIGlmICghcm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzID0gc2VsZWN0ZWRJZHM7XG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKHRoaXMuY3VycmVudERhdGFTdGF0ZSwgdGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnNvcnRDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBncmlkU29ydE1vZGVsID0gYWdHcmlkLmFwaS5nZXRTb3J0TW9kZWwoKTtcbiAgICAgICAgbGV0IHNvcnRPcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbjtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZ3JpZFNvcnRNb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVTb3J0TW9kZWwgPSBncmlkU29ydE1vZGVsWzBdO1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRDb2x1bW4gPSBhZ0dyaWQuY29sdW1uQXBpLmdldENvbHVtbihhY3RpdmVTb3J0TW9kZWwuY29sSWQpO1xuICAgICAgICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRDdXJyZW50RGF0YU1hbmFnZXJDb25maWcoKTtcblxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zKSB7XG4gICAgICAgICAgICBzb3J0T3B0aW9uID0gZGF0YU1hbmFnZXJDb25maWcuc29ydE9wdGlvbnMuZmluZCgob3B0aW9uOiBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5wcm9wZXJ0eU5hbWUgPT09IGFjdGl2ZVNvcnRDb2x1bW4uZ2V0Q29sRGVmKCkuZmllbGQgJiZcbiAgICAgICAgICAgICAgICBvcHRpb24uZGVzY2VuZGluZyA9PT0gKGFjdGl2ZVNvcnRNb2RlbC5zb3J0ID09PSAnZGVzYycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gc29ydE9wdGlvbjtcbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUodGhpcy5jdXJyZW50RGF0YVN0YXRlLCB0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc3BsYXlDb2x1bW5zKGRhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuY3VycmVudEFnR3JpZDtcbiAgICBjb25zdCB2aWV3U3RhdGUgPSBkYXRhU3RhdGUuZ2V0Vmlld1N0YXRlQnlJZCh0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgIGxldCBkaXNwbGF5ZWRDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHMpIHtcbiAgICAgIGRpc3BsYXllZENvbHVtbklkcyA9IHZpZXdTdGF0ZS5kaXNwbGF5ZWRDb2x1bW5JZHM7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbnMgPSBhZ0dyaWQuY29sdW1uQXBpLmdldEFsbENvbHVtbnMoKTtcblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IGNvbElkID0gY29sdW1uLmdldENvbElkKCk7XG4gICAgICBjb25zdCBjb2xJbmRleCA9IGRpc3BsYXllZENvbHVtbklkcy5pbmRleE9mKGNvbElkKTtcblxuICAgICAgYWdHcmlkLmNvbHVtbkFwaS5zZXRDb2x1bW5WaXNpYmxlKGNvbElkLCBjb2xJbmRleCAhPT0gLTEpO1xuICAgICAgYWdHcmlkLmNvbHVtbkFwaS5tb3ZlQ29sdW1uKGNvbElkLCBjb2xJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuICAgIGFnR3JpZC5hcGkuc2VsZWN0QWxsKCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFnR3JpZCA9IHRoaXMuYWdHcmlkTGlzdC5maXJzdDtcbiAgICBhZ0dyaWQuYXBpLmRlc2VsZWN0QWxsKCk7XG4gIH1cbn1cbiJdfQ==
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1kYXRhLW1hbmFnZXItYWRhcHRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvYWctZ3JpZC8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvYWctZ3JpZC9hZy1ncmlkLWRhdGEtbWFuYWdlci1hZGFwdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUVSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsYUFBYSxFQUNkLE1BQU0saUJBQWlCLENBQUM7QUFVekIsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNsQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFDTCx5QkFBeUIsRUFDMUIsTUFBTSw2QkFBNkIsQ0FBQztBQUtyQztJQWtCRSw4Q0FDVSxjQUFpQyxFQUNqQyxjQUFxQztRQURyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSnZDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUlhLENBQUM7SUFFN0MsaUVBQWtCLEdBQXpCO1FBQUEsaUJBY0M7UUFiQyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBRXRFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFD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Q0FBQztJQUN6QixDQUFDO0lBRU8sdURBQVEsR0FBaEI7UUFDRSxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7O2dCQTFPeUIsaUJBQWlCO2dCQUNqQixxQkFBcUI7O0lBakIvQztRQURDLEtBQUssRUFBRTt3RUFDYztJQUd0QjtRQURDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7NEVBQ1Y7SUFHNUM7UUFEQyxlQUFlLENBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUM7c0ZBQ0E7SUFUdkQsb0NBQW9DO1FBSGhELFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSwrQkFBK0I7U0FDMUMsQ0FBQztPQUNXLG9DQUFvQyxDQThQaEQ7SUFBRCwyQ0FBQztDQUFBLEFBOVBELElBOFBDO1NBOVBZLG9DQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb25cbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQWdHcmlkQW5ndWxhclxufSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuXG5pbXBvcnQge1xuICBDb2x1bW5BcGksXG4gIENvbHVtbk1vdmVkRXZlbnQsXG4gIERyYWdTdGFydGVkRXZlbnQsXG4gIERyYWdTdG9wcGVkRXZlbnQsXG4gIFJvd1NlbGVjdGVkRXZlbnRcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuXG5pbXBvcnQge1xuICBTa3lEYXRhTWFuYWdlclNlcnZpY2UsXG4gIFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbixcbiAgU2t5RGF0YU1hbmFnZXJTdGF0ZSxcbiAgU2t5RGF0YVZpZXdDb25maWdcbn0gZnJvbSAnQHNreXV4L2RhdGEtbWFuYWdlcic7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZFdyYXBwZXJDb21wb25lbnRcbn0gZnJvbSAnLi9hZy1ncmlkLXdyYXBwZXIuY29tcG9uZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlcl0nXG59KVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZERhdGFNYW5hZ2VyQWRhcHRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHZpZXdJZDogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oQWdHcmlkQW5ndWxhciwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgYWdHcmlkTGlzdDogUXVlcnlMaXN0PEFnR3JpZEFuZ3VsYXI+O1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgc2t5QWdHcmlkV3JhcHBlckxpc3Q6IFF1ZXJ5TGlzdDxTa3lBZ0dyaWRXcmFwcGVyQ29tcG9uZW50PjtcblxuICBwcml2YXRlIGN1cnJlbnRBZ0dyaWQ6IEFnR3JpZEFuZ3VsYXI7XG4gIHByaXZhdGUgY3VycmVudERhdGFTdGF0ZTogU2t5RGF0YU1hbmFnZXJTdGF0ZTtcbiAgcHJpdmF0ZSBjdXJyZW50U2t5QWdHcmlkV3JhcHBlcjogU2t5QWdHcmlkV3JhcHBlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBkYXRhU3RhdGVTdWI6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aWV3Q29uZmlnOiBTa3lEYXRhVmlld0NvbmZpZztcbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGRhdGFNYW5hZ2VyU3ZjOiBTa3lEYXRhTWFuYWdlclNlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhTWFuYWdlclN2Yy5zZXRWaWV3a2VlcGVyQ2xhc3Nlcyh0aGlzLnZpZXdJZCwgWycuYWctaGVhZGVyJ10pO1xuXG4gICAgdGhpcy52aWV3Q29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRWaWV3QnlJZCh0aGlzLnZpZXdJZCk7XG4gICAgdGhpcy5jaGVja0ZvckFnR3JpZCgpO1xuICAgIHRoaXMuY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk7XG5cbiAgICB0aGlzLmFnR3JpZExpc3QuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hlY2tGb3JBZ0dyaWQoKSk7XG5cbiAgICB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNoZWNrRm9yU2t5QWdHcmlkV3JhcHBlcigpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckFnR3JpZCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWRDb3VudCA9IHRoaXMuYWdHcmlkTGlzdC5sZW5ndGg7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChhZ0dyaWRDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyQWdHcmlkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFnR3JpZExpc3QuZmlyc3QgIT09IHRoaXMuY3VycmVudEFnR3JpZCkge1xuICAgICAgdGhpcy5yZWdpc3RlckFnR3JpZCgpO1xuICAgIH1cblxuICAgIGlmIChhZ0dyaWRDb3VudCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ01vcmUgdGhhbiBvbmUgYWctZ3JpZCBjaGlsZCBjb21wb25lbnQgd2FzIGZvdW5kLiBVc2luZyB0aGUgZmlyc3QgYWctR3JpZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IHNreUFnR3JpZFdyYXBwZXJDb3VudCA9IHRoaXMuc2t5QWdHcmlkV3JhcHBlckxpc3QubGVuZ3RoO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoc2t5QWdHcmlkV3JhcHBlckNvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLnVucmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmZpcnN0ICE9PSB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyU2t5QWdHcmlkV3JhcHBlcigpO1xuICAgIH1cblxuICAgIGlmIChza3lBZ0dyaWRXcmFwcGVyQ291bnQgPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdNb3JlIHRoYW4gb25lIGFnLWdyaWQgY2hpbGQgY29tcG9uZW50IHdhcyBmb3VuZC4gVXNpbmcgdGhlIGZpcnN0IGFnLUdyaWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVucmVnaXN0ZXJBZ0dyaWQoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50QWdHcmlkID0gdW5kZWZpbmVkO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMuZGF0YVN0YXRlU3ViKSB7XG4gICAgICB0aGlzLmRhdGFTdGF0ZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTa3lBZ0dyaWRXcmFwcGVyKCk6IHZvaWQge1xuICAgIHRoaXMudW5yZWdpc3RlclNreUFnR3JpZFdyYXBwZXIoKTtcblxuICAgIHRoaXMuY3VycmVudFNreUFnR3JpZFdyYXBwZXIgPSB0aGlzLnNreUFnR3JpZFdyYXBwZXJMaXN0LmZpcnN0O1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50U2t5QWdHcmlkV3JhcHBlcikge1xuICAgICAgICB0aGlzLmN1cnJlbnRTa3lBZ0dyaWRXcmFwcGVyLnZpZXdrZWVwZXJDbGFzc2VzID0gW107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyQWdHcmlkKCk6IHZvaWQge1xuICAgIHRoaXMudW5yZWdpc3RlckFnR3JpZCgpO1xuXG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuXG4gICAgdGhpcy5jdXJyZW50QWdHcmlkID0gYWdHcmlkO1xuXG4gICAgYWdHcmlkLmdyaWRSZWFkeVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy52aWV3Q29uZmlnLm9uU2VsZWN0QWxsQ2xpY2sgPSB0aGlzLnNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnZpZXdDb25maWcub25DbGVhckFsbENsaWNrID0gdGhpcy5jbGVhckFsbC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlVmlld0NvbmZpZyh0aGlzLnZpZXdDb25maWcpO1xuXG4gICAgICAgIHRoaXMuZGF0YVN0YXRlU3ViID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXREYXRhU3RhdGVVcGRhdGVzKHRoaXMudmlld0NvbmZpZy5pZClcbiAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhU3RhdGU6IFNreURhdGFNYW5hZ2VyU3RhdGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZSA9IGRhdGFTdGF0ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMoZGF0YVN0YXRlKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBhZ0dyaWQuYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLmNvbHVtbk1vdmVkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSksXG4gICAgICAgIGZpbHRlcihcbiAgICAgICAgICAoZXZlbnQ6IENvbHVtbk1vdmVkRXZlbnQpID0+XG4gICAgICAgICAgICAhW1xuICAgICAgICAgICAgICAnZ3JpZEluaXRpYWxpemluZycsXG4gICAgICAgICAgICAgICd1aUNvbHVtblJlc2l6ZWQnLFxuICAgICAgICAgICAgICAndWlDb2x1bW5EcmFnZ2VkJyxcbiAgICAgICAgICAgICAgJ2FwaSdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQuc291cmNlKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogQ29sdW1uTW92ZWRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUodmFsdWUuY29sdW1uQXBpKTtcbiAgICAgIH0pO1xuICAgIGxldCBjdXJyZW50Q29sdW1uczogc3RyaW5nW107XG4gICAgYWdHcmlkLmRyYWdTdGFydGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEcmFnU3RhcnRlZEV2ZW50KSA9PiB7XG4gICAgICAgIGN1cnJlbnRDb2x1bW5zID0gdGhpcy5nZXRDb2x1bW5PcmRlcih2YWx1ZS5jb2x1bW5BcGkpO1xuICAgICAgfSk7XG4gICAgYWdHcmlkLmRyYWdTdG9wcGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEcmFnU3RvcHBlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0NvbHVtbnMgPSB0aGlzLmdldENvbHVtbk9yZGVyKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSBjdXJyZW50Q29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAgICAgKGNvbElkLCBpKSA9PiBjb2xJZCAhPT0gbmV3Q29sdW1uc1tpXVxuICAgICAgICApO1xuICAgICAgICBpZiAoaGFzQ2hhbmdlZCA+IC0xKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5zSW5DdXJyZW50RGF0YVN0YXRlKHZhbHVlLmNvbHVtbkFwaSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnJvd1NlbGVjdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3dTZWxlY3RlZEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IGV2ZW50Lm5vZGU7XG4gICAgICAgIGxldCBzZWxlY3RlZElkcyA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5zZWxlY3RlZElkcyB8fCBbXTtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSBzZWxlY3RlZElkcy5pbmRleE9mKHJvdy5kYXRhLmlkKTtcblxuICAgICAgICBpZiAocm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5wdXNoKHJvdy5kYXRhLmlkKTtcbiAgICAgICAgfSBlbHNlIGlmICghcm93LmlzU2VsZWN0ZWQoKSAmJiByb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBzZWxlY3RlZElkcy5zcGxpY2Uocm93SW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50RGF0YVN0YXRlLnNlbGVjdGVkSWRzID0gc2VsZWN0ZWRJZHM7XG4gICAgICAgIHRoaXMuZGF0YU1hbmFnZXJTdmMudXBkYXRlRGF0YVN0YXRlKHRoaXMuY3VycmVudERhdGFTdGF0ZSwgdGhpcy52aWV3Q29uZmlnLmlkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgYWdHcmlkLnNvcnRDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBncmlkU29ydE1vZGVsID0gYWdHcmlkLmFwaS5nZXRTb3J0TW9kZWwoKTtcbiAgICAgICAgbGV0IHNvcnRPcHRpb246IFNreURhdGFNYW5hZ2VyU29ydE9wdGlvbjtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoZ3JpZFNvcnRNb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVTb3J0TW9kZWwgPSBncmlkU29ydE1vZGVsWzBdO1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVNvcnRDb2x1bW4gPSBhZ0dyaWQuY29sdW1uQXBpLmdldENvbHVtbihhY3RpdmVTb3J0TW9kZWwuY29sSWQpO1xuICAgICAgICAgIGNvbnN0IGRhdGFNYW5hZ2VyQ29uZmlnID0gdGhpcy5kYXRhTWFuYWdlclN2Yy5nZXRDdXJyZW50RGF0YU1hbmFnZXJDb25maWcoKTtcblxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRhdGFNYW5hZ2VyQ29uZmlnLnNvcnRPcHRpb25zKSB7XG4gICAgICAgICAgICBzb3J0T3B0aW9uID0gZGF0YU1hbmFnZXJDb25maWcuc29ydE9wdGlvbnMuZmluZCgob3B0aW9uOiBTa3lEYXRhTWFuYWdlclNvcnRPcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5wcm9wZXJ0eU5hbWUgPT09IGFjdGl2ZVNvcnRDb2x1bW4uZ2V0Q29sRGVmKCkuZmllbGQgJiZcbiAgICAgICAgICAgICAgICBvcHRpb24uZGVzY2VuZGluZyA9PT0gKGFjdGl2ZVNvcnRNb2RlbC5zb3J0ID09PSAnZGVzYycpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNvcnRPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hY3RpdmVTb3J0T3B0aW9uID0gc29ydE9wdGlvbjtcbiAgICAgICAgdGhpcy5kYXRhTWFuYWdlclN2Yy51cGRhdGVEYXRhU3RhdGUodGhpcy5jdXJyZW50RGF0YVN0YXRlLCB0aGlzLnZpZXdDb25maWcuaWQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbHVtbnNJbkN1cnJlbnREYXRhU3RhdGUoY29sdW1uQXBpOiBDb2x1bW5BcGkpIHtcbiAgICBjb25zdCBjb2x1bW5PcmRlciA9IHRoaXMuZ2V0Q29sdW1uT3JkZXIoY29sdW1uQXBpKTtcblxuICAgIGNvbnN0IHZpZXdTdGF0ZSA9IHRoaXMuY3VycmVudERhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKFxuICAgICAgdGhpcy52aWV3Q29uZmlnLmlkXG4gICAgKTtcbiAgICB2aWV3U3RhdGUuZGlzcGxheWVkQ29sdW1uSWRzID0gY29sdW1uT3JkZXI7XG5cbiAgICB0aGlzLmRhdGFNYW5hZ2VyU3ZjLnVwZGF0ZURhdGFTdGF0ZShcbiAgICAgIHRoaXMuY3VycmVudERhdGFTdGF0ZS5hZGRPclVwZGF0ZVZpZXcodGhpcy52aWV3Q29uZmlnLmlkLCB2aWV3U3RhdGUpLFxuICAgICAgdGhpcy52aWV3Q29uZmlnLmlkXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sdW1uT3JkZXIoY29sdW1uQXBpOiBDb2x1bW5BcGkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGNvbHVtbkFwaVxuICAgICAgLmdldEFsbERpc3BsYXllZFZpcnR1YWxDb2x1bW5zKClcbiAgICAgIC5tYXAoKGNvbCkgPT4gY29sLmdldENvbERlZigpLmNvbElkKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGxheUNvbHVtbnMoZGF0YVN0YXRlOiBTa3lEYXRhTWFuYWdlclN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5jdXJyZW50QWdHcmlkO1xuICAgIGNvbnN0IHZpZXdTdGF0ZSA9IGRhdGFTdGF0ZS5nZXRWaWV3U3RhdGVCeUlkKHRoaXMudmlld0NvbmZpZy5pZCk7XG4gICAgbGV0IGRpc3BsYXllZENvbHVtbklkczogc3RyaW5nW10gPSBbXTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcykge1xuICAgICAgZGlzcGxheWVkQ29sdW1uSWRzID0gdmlld1N0YXRlLmRpc3BsYXllZENvbHVtbklkcztcbiAgICB9XG4gICAgY29uc3QgY29sdW1ucyA9IGFnR3JpZC5jb2x1bW5BcGkuZ2V0QWxsQ29sdW1ucygpO1xuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgY29uc3QgY29sSWQgPSBjb2x1bW4uZ2V0Q29sSWQoKTtcbiAgICAgIGNvbnN0IGNvbEluZGV4ID0gZGlzcGxheWVkQ29sdW1uSWRzLmluZGV4T2YoY29sSWQpO1xuXG4gICAgICBhZ0dyaWQuY29sdW1uQXBpLnNldENvbHVtblZpc2libGUoY29sSWQsIGNvbEluZGV4ICE9PSAtMSk7XG4gICAgICBhZ0dyaWQuY29sdW1uQXBpLm1vdmVDb2x1bW4oY29sSWQsIGNvbEluZGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZ0dyaWQgPSB0aGlzLmFnR3JpZExpc3QuZmlyc3Q7XG4gICAgYWdHcmlkLmFwaS5zZWxlY3RBbGwoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJBbGwoKTogdm9pZCB7XG4gICAgY29uc3QgYWdHcmlkID0gdGhpcy5hZ0dyaWRMaXN0LmZpcnN0O1xuICAgIGFnR3JpZC5hcGkuZGVzZWxlY3RBbGwoKTtcbiAgfVxufVxuIl19
@@ -193,7 +193,7 @@ var SkyAgGridRowDeleteDirective = /** @class */ (function () {
193
193
  return this.rowDeleteConfigs.find(function (rowDelete) { return rowDelete.id === row.id; });
194
194
  };
195
195
  SkyAgGridRowDeleteDirective.prototype.affixToRow = function (affixer, id) {
196
- var rowElement = this.elementRef.nativeElement.querySelector('[row-id="' + id + '"] div[aria-colindex="1"]');
196
+ var rowElement = this.elementRef.nativeElement.querySelector("\n [row-id=\"" + id + "\"] div[aria-colindex=\"1\"],\n .ag-row.sky-ag-grid-row-" + id + " div[aria-colindex=\"1\"]\n ");
197
197
  // This covers cases where AG Grid places the column index on an inner element (such as with the `enableCellTextSelection` option)
198
198
  // This appears to have been fixed by AG Grid in version 24 and so it is not testable after that version.
199
199
  /* istanbul ignore if */
@@ -274,4 +274,4 @@ var SkyAgGridRowDeleteDirective = /** @class */ (function () {
274
274
  return SkyAgGridRowDeleteDirective;
275
275
  }());
276
276
  export { SkyAgGridRowDeleteDirective };
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yb3ctZGVsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9hZy1ncmlkLyIsInNvdXJjZXMiOlsibW9kdWxlcy9hZy1ncmlkL2FnLWdyaWQtcm93LWRlbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLGVBQWUsRUFDZixpQkFBaUIsRUFDbEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGFBQWEsRUFDZCxNQUFNLGlCQUFpQixDQUFDO0FBTXpCLE9BQU8sRUFDTCxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLDJCQUEyQixFQUM1QixNQUFNLGdDQUFnQyxDQUFDO0FBcUJ4QztJQXNIRSxxQ0FDVSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxVQUFzQixFQUN0QixRQUFrQyxFQUNsQyxjQUFpQyxFQUNqQyxnQkFBa0M7UUFMbEMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBdkM1Qzs7V0FFRztRQUVJLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWdDLENBQUM7UUFFMUU7O1dBRUc7UUFFSSxx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QUFFO3lFQUNtRTtJQU01RTtRQURDLE1BQU0sRUFBRTsyRUFDZ0Q7SUFTekQ7UUFEQyxZQUFZLENBQUMsYUFBYSxDQUFDOytEQUNDO0lBOUdsQiwyQkFBMkI7UUFIdkMsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLHNCQUFzQjtTQUNqQyxDQUFDO09BQ1csMkJBQTJCLENBK092QztJQUFELGtDQUFDO0NBQUEsQUEvT0QsSUErT0M7U0EvT1ksMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LFxuICBTa3lBZmZpeGVyLFxuICBTa3lBZmZpeFNlcnZpY2UsXG4gIFNreU92ZXJsYXlTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHtcbiAgQWdHcmlkQW5ndWxhclxufSBmcm9tICdhZy1ncmlkLWFuZ3VsYXInO1xuXG5pbXBvcnQge1xuICBSb3dOb2RlXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcblxuaW1wb3J0IHtcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkUm93RGVsZXRlQ29tcG9uZW50XG59IGZyb20gJy4vYWctZ3JpZC1yb3ctZGVsZXRlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3Ncbn0gZnJvbSAnLi90eXBlcy9hZy1ncmlkLXJvdy1kZWxldGUtY2FuY2VsLWFyZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRSb3dEZWxldGVDb25maWdcbn0gZnJvbSAnLi90eXBlcy9hZy1naXJkLXJvdy1kZWxldGUtY29uZmlnJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3Ncbn0gZnJvbSAnLi90eXBlcy9hZy1ncmlkLXJvdy1kZWxldGUtY29uZmlybS1hcmdzJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkUm93RGVsZXRlQ29udGVudHNcbn0gZnJvbSAnLi90eXBlcy9hZy1ncmlkLXJvdy1kZWxldGUtY29udGVudHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5QWdHcmlkUm93RGVsZXRlXSdcbn0pXG5leHBvcnQgY2xhc3MgU2t5QWdHcmlkUm93RGVsZXRlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBpZHMgb2YgdGhlIGRhdGEgaW4gdGhlIHJvd3Mgb24gd2hpY2ggaW5saW5lIGRlbGV0ZSdzIHNob3VsZCBiZSBzaG93bi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCByb3dEZWxldGVJZHModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5fcm93RGVsZXRlSWRzID0gdmFsdWU7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICBmb3IgKGxldCBjb25maWcgb2YgdGhpcy5yb3dEZWxldGVDb25maWdzKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShjb25maWcuaWQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaWQgb2YgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmlnID0gdGhpcy5yb3dEZWxldGVDb25maWdzXG4gICAgICAgIC5maW5kKGNvbmZpZyA9PiBjb25maWcuaWQgPT09IGlkKTtcbiAgICAgIGlmIChleGlzdGluZ0NvbmZpZykge1xuICAgICAgICBleGlzdGluZ0NvbmZpZy5wZW5kaW5nID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MucHVzaCh7XG4gICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgIHBlbmRpbmc6IGZhbHNlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBvdmVybGF5ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoe1xuICAgICAgICAgIGVuYWJsZVNjcm9sbDogdHJ1ZSxcbiAgICAgICAgICBzaG93QmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgIGNsb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgICAgIGVuYWJsZUNsb3NlOiBmYWxzZSxcbiAgICAgICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG92ZXJsYXkuYXR0YWNoVGVtcGxhdGUodGhpcy5yb3dEZWxldGVDb21wb25lbnQuaW5saW5lRGVsZXRlVGVtcGxhdGVSZWYsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJGltcGxpY2l0OiB0aGlzLmFnR3JpZC5hcGkuZ2V0Um93Tm9kZShpZCksXG4gICAgICAgICAgICB0YWJsZVdpZHRoOiAoKSA9PiB7IHJldHVybiB0aGlzLnRhYmxlV2lkdGg7IH0sXG4gICAgICAgICAgICBnZXRSb3dEZWxldGVJdGVtOiAocm93OiBSb3dOb2RlKSA9PiB0aGlzLmdldFJvd0RlbGV0ZUl0ZW0ocm93KSxcbiAgICAgICAgICAgIGNhbmNlbFJvd0RlbGV0ZTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5jYW5jZWxSb3dEZWxldGUocm93KSxcbiAgICAgICAgICAgIGNvbmZpcm1Sb3dEZWxldGU6IChyb3c6IFJvd05vZGUpID0+IHRoaXMuY29uZmlybVJvd0RlbGV0ZShyb3cpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIGFyZSBtYW51YWxseSBzZXR0aW5nIHRoZSB6LWluZGV4IGhlcmUgYmVjYXVzZSBvdmVybGF5cyB3aWxsIGFsd2F5cyBiZSBvbiB0b3Agb2ZcbiAgICAgICAgICogdGhlIG9tbmliYXIuIFRoaXMgbWFudWFsIHNldHRpbmcgaXMgMiBsZXNzIHRoYW4gdGhlIG9tbmliYXIncyB6LWluZGV4IG9mIDEwMDAgYW5kIG9uZSBsZXNzIHRoYW5cbiAgICAgICAgICogdGhlIGhlYWRlciByb3cncyB2aWV3a2VlcGVyIHdoaWNoIGlzIDk5OS4gV2UgZGlzY3Vzc2VkIGNoYW5naW5nIHRoZSBvdmVybGF5IHNlcnZpY2UgdG8gYWxsb3cgZm9yIHRoaXNcbiAgICAgICAgICogYnV0IGRlY2lkZWQgYWdhaW5zdCB0aGF0IGNoYW5nZSBhdCB0aGlzIHRpbWUgZHVlIHRvIGl0cyBuaWNoZSBuYXR1cmUuXG4gICAgICAgICAqL1xuICAgICAgICBvdmVybGF5LmNvbXBvbmVudFJlZi5pbnN0YW5jZS56SW5kZXggPSAnOTk4JztcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBpbmxpbmVEZWxldGVSZWYgPSB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudC5pbmxpbmVEZWxldGVSZWZzLnRvQXJyYXkoKVxuICAgICAgICAgICAgLmZpbmQoZWxSZWYgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gZWxSZWYubmF0aXZlRWxlbWVudC5pZCA9PT0gJ3Jvdy1kZWxldGUtcmVmLScgKyBpZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGxldCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcihpbmxpbmVEZWxldGVSZWYpO1xuXG4gICAgICAgICAgdGhpcy5hZmZpeFRvUm93KGFmZml4ZXIsIGlkKTtcblxuICAgICAgICAgIHRoaXMucm93RGVsZXRlQ29udGVudHNbaWRdID0ge1xuICAgICAgICAgICAgYWZmaXhlcjogYWZmaXhlcixcbiAgICAgICAgICAgIG92ZXJsYXk6IG92ZXJsYXlcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGxldCBjb25maWcgb2YgdGhpcy5yb3dEZWxldGVDb25maWdzKSB7XG4gICAgICBpZiAodmFsdWUuaW5kZXhPZihjb25maWcuaWQpIDwgMCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lSb3dEZWxldGUoY29uZmlnLmlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IHJvd0RlbGV0ZUlkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd0RlbGV0ZUlkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIGBTa3lBZ0dyaWRSb3dEZWxldGVDYW5jZWxBcmdzYCBvYmplY3Qgd2hlbiBhIHJvdydzIGlubGluZSBkZWxldGUgaXMgY2FuY2VsbGVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByb3dEZWxldGVDYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3M+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzYCBvYmplY3Qgd2hlbiBhIHJvdydzIGlubGluZSBkZWxldGUgaXMgY29uZmlybWVkLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByb3dEZWxldGVDb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBZ0dyaWRSb3dEZWxldGVDb25maXJtQXJncz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgbGlzdCBvZiBpZHMgb2YgdGhlIGRhdGEgaW4gdGhlIHJvd3Mgd2hlcmUgaW5saW5lIGRlbGV0ZXMgYXJlIHNob3duIGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUlkc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgcHVibGljIHJvd0RlbGV0ZUNvbmZpZ3M6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZ1tdID0gW107XG5cbiAgcHVibGljIGdldCB0YWJsZVdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuc2t5LWFnLWdyaWQnKVswXS5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoQWdHcmlkQW5ndWxhcilcbiAgcHVibGljIGFnR3JpZDogQWdHcmlkQW5ndWxhcjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHJvd0RlbGV0ZUNvbXBvbmVudDogU2t5QWdHcmlkUm93RGVsZXRlQ29tcG9uZW50O1xuICBwcml2YXRlIHJvd0RlbGV0ZUNvbnRlbnRzOiB7IFtpZDogc3RyaW5nXTogU2t5QWdHcmlkUm93RGVsZXRlQ29udGVudHMgfSA9IHt9O1xuXG4gIHByaXZhdGUgX3Jvd0RlbGV0ZUlkczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhZmZpeFNlcnZpY2U6IFNreUFmZml4U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoU2t5QWdHcmlkUm93RGVsZXRlQ29tcG9uZW50KTtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSkuaW5zdGFuY2U7XG4gICAgdGhpcy5hZ0dyaWQucm93RGF0YUNoYW5nZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUm93RGVsZXRlU3RhdGVzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWdHcmlkLnJvd0RhdGFVcGRhdGVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd0RlbGV0ZVN0YXRlcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFnR3JpZC5zb3J0Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZ0dyaWQuZmlsdGVyQ2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZ0dyaWQuZ2V0Um93Tm9kZUlkID0gKGRhdGE6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIGRhdGEuaWQudG9TdHJpbmcoKTtcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzKS5mb3JFYWNoKGlkID0+IHtcbiAgICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShpZCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsUm93RGVsZXRlKHJvdzogUm93Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMucm93RGVsZXRlQ29uZmlncyA9IHRoaXMucm93RGVsZXRlQ29uZmlncy5maWx0ZXIoY29uZmlnID0+IGNvbmZpZy5pZCAhPT0gcm93LmlkKTtcbiAgICB0aGlzLnJvd0RlbGV0ZUNhbmNlbC5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcblxuICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShyb3cuaWQpO1xuICB9XG5cbiAgcHVibGljIGNvbmZpcm1Sb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbmQoY29uZmlnID0+IGNvbmZpZy5pZCA9PT0gcm93LmlkKS5wZW5kaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbmZpcm0uZW1pdCh7IGlkOiByb3cuaWQgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RGVsZXRlSXRlbShyb3c6IFJvd05vZGUpOiBTa3lBZ0dyaWRSb3dEZWxldGVDb25maWcge1xuICAgIHJldHVybiB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MuZmluZChyb3dEZWxldGUgPT4gcm93RGVsZXRlLmlkID09PSByb3cuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZmZpeFRvUm93KGFmZml4ZXI6IFNreUFmZml4ZXIsIGlkOiBzdHJpbmcpIHtcbiAgICBsZXQgcm93RWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbcm93LWlkPVwiJyArIGlkICsgJ1wiXSBkaXZbYXJpYS1jb2xpbmRleD1cIjFcIl0nKTtcblxuICAgIC8vIFRoaXMgY292ZXJzIGNhc2VzIHdoZXJlIEFHIEdyaWQgcGxhY2VzIHRoZSBjb2x1bW4gaW5kZXggb24gYW4gaW5uZXIgZWxlbWVudCAoc3VjaCBhcyB3aXRoIHRoZSBgZW5hYmxlQ2VsbFRleHRTZWxlY3Rpb25gIG9wdGlvbilcbiAgICAvLyBUaGlzIGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGZpeGVkIGJ5IEFHIEdyaWQgaW4gdmVyc2lvbiAyNCBhbmQgc28gaXQgaXMgbm90IHRlc3RhYmxlIGFmdGVyIHRoYXQgdmVyc2lvbi5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXJvd0VsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcm93LWlkPVwiJyArIGlkICsgJ1wiXSA+IGRpdicpO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGNvbHVtbnNbaV0ucXVlcnlTZWxlY3RvcignW2FyaWEtY29saW5kZXg9XCIxXCJdJykpIHtcbiAgICAgICAgICByb3dFbGVtZW50ID0gY29sdW1uc1tpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGFmZml4ZXIuYWZmaXhUbyhyb3dFbGVtZW50LCB7XG4gICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgcGxhY2VtZW50OiAnYWJvdmUnLFxuICAgICAgdmVydGljYWxBbGlnbm1lbnQ6ICd0b3AnLFxuICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2xlZnQnLFxuICAgICAgZW5hYmxlQXV0b0ZpdDogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveVJvd0RlbGV0ZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgcm93RGVsZXRlQ29udGVudHMgPSB0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzW2lkXTtcblxuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHJvd0RlbGV0ZUNvbnRlbnRzKSB7XG4gICAgICByb3dEZWxldGVDb250ZW50cy5hZmZpeGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2Uocm93RGVsZXRlQ29udGVudHMub3ZlcmxheSk7XG4gICAgICBkZWxldGUgdGhpcy5yb3dEZWxldGVDb250ZW50c1tpZF07XG4gICAgICB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MgPSB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MuZmlsdGVyKGNvbmZpZyA9PiBjb25maWcuaWQgIT09IGlkKTtcbiAgICAgIHRoaXMuX3Jvd0RlbGV0ZUlkcyA9IHRoaXMucm93RGVsZXRlSWRzPy5maWx0ZXIoYXJyYXlJZCA9PiBhcnJheUlkICE9PSBpZCk7XG4gICAgICB0aGlzLnJvd0RlbGV0ZUlkc0NoYW5nZS5lbWl0KHRoaXMuX3Jvd0RlbGV0ZUlkcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzLmZvckVhY2goKGNvbmZpZzogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGNvbmZpZy5pZCkpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGNvbmZpZy5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSBtdXN0IHJlYWZmaXggdGhpbmdzIHdoZW4gdGhlIGRhdGEgY2hhbmdlcyBiZWNhdXNlIHRoZSByb3dzIHJlcmVuZGVyIGFuZCB0aGUgcHJldmlvdXMgZWxlbWVudCB0aGF0IHRoZSBkZWxldGUgd2FzIGFmZml4ZWRcbiAgICAgICAgLy8gdG8gaXMgZGVzdHJveWVkLlxuICAgICAgICB0aGlzLmFmZml4VG9Sb3codGhpcy5yb3dEZWxldGVDb250ZW50c1tjb25maWcuaWRdLmFmZml4ZXIsIGNvbmZpZy5pZCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG59XG4iXX0=
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1yb3ctZGVsZXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9hZy1ncmlkLyIsInNvdXJjZXMiOlsibW9kdWxlcy9hZy1ncmlkL2FnLWdyaWQtcm93LWRlbGV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHdCQUF3QixFQUN4QixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsVUFBVSxFQUNWLGVBQWUsRUFDZixpQkFBaUIsRUFDbEIsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGFBQWEsRUFDZCxNQUFNLGlCQUFpQixDQUFDO0FBTXpCLE9BQU8sRUFDTCxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLDJCQUEyQixFQUM1QixNQUFNLGdDQUFnQyxDQUFDO0FBcUJ4QztJQXNIRSxxQ0FDVSxZQUE2QixFQUM3QixjQUFpQyxFQUNqQyxVQUFzQixFQUN0QixRQUFrQyxFQUNsQyxjQUFpQyxFQUNqQyxnQkFBa0M7UUFMbEMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBdkM1Qzs7V0FFRztRQUVJLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWdDLENBQUM7UUFFMUU7O1dBRUc7UUFFSSxx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LEVBQUU7eUVBQ21FO0lBTTVFO1FBREMsTUFBTSxFQUFFOzJFQUNnRDtJQVN6RDtRQURDLFlBQVksQ0FBQyxhQUFhLENBQUM7K0RBQ0M7SUE5R2xCLDJCQUEyQjtRQUh2QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsc0JBQXNCO1NBQ2pDLENBQUM7T0FDVywyQkFBMkIsQ0FrUHZDO0lBQUQsa0NBQUM7Q0FBQSxBQWxQRCxJQWtQQztTQWxQWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4ZXIsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5T3ZlcmxheVNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQge1xuICBBZ0dyaWRBbmd1bGFyXG59IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5cbmltcG9ydCB7XG4gIFJvd05vZGVcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRSb3dEZWxldGVDb21wb25lbnRcbn0gZnJvbSAnLi9hZy1ncmlkLXJvdy1kZWxldGUuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkUm93RGVsZXRlQ2FuY2VsQXJnc1xufSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jYW5jZWwtYXJncyc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZ1xufSBmcm9tICcuL3R5cGVzL2FnLWdpcmQtcm93LWRlbGV0ZS1jb25maWcnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRSb3dEZWxldGVDb25maXJtQXJnc1xufSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb25maXJtLWFyZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRSb3dEZWxldGVDb250ZW50c1xufSBmcm9tICcuL3R5cGVzL2FnLWdyaWQtcm93LWRlbGV0ZS1jb250ZW50cyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tza3lBZ0dyaWRSb3dEZWxldGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWRSb3dEZWxldGVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyBvbiB3aGljaCBpbmxpbmUgZGVsZXRlJ3Mgc2hvdWxkIGJlIHNob3duLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHJvd0RlbGV0ZUlkcyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9yb3dEZWxldGVJZHMgPSB2YWx1ZTtcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIGZvciAobGV0IGNvbmZpZyBvZiB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGNvbmZpZy5pZCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpZCBvZiB2YWx1ZSkge1xuICAgICAgY29uc3QgZXhpc3RpbmdDb25maWcgPSB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3NcbiAgICAgICAgLmZpbmQoY29uZmlnID0+IGNvbmZpZy5pZCA9PT0gaWQpO1xuICAgICAgaWYgKGV4aXN0aW5nQ29uZmlnKSB7XG4gICAgICAgIGV4aXN0aW5nQ29uZmlnLnBlbmRpbmcgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucm93RGVsZXRlQ29uZmlncy5wdXNoKHtcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgcGVuZGluZzogZmFsc2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IG92ZXJsYXkgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgICAgZW5hYmxlU2Nyb2xsOiB0cnVlLFxuICAgICAgICAgIHNob3dCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLnJvd0RlbGV0ZUNvbXBvbmVudC5pbmxpbmVEZWxldGVUZW1wbGF0ZVJlZixcbiAgICAgICAgICB7XG4gICAgICAgICAgICAkaW1wbGljaXQ6IHRoaXMuYWdHcmlkLmFwaS5nZXRSb3dOb2RlKGlkKSxcbiAgICAgICAgICAgIHRhYmxlV2lkdGg6ICgpID0+IHsgcmV0dXJuIHRoaXMudGFibGVXaWR0aDsgfSxcbiAgICAgICAgICAgIGdldFJvd0RlbGV0ZUl0ZW06IChyb3c6IFJvd05vZGUpID0+IHRoaXMuZ2V0Um93RGVsZXRlSXRlbShyb3cpLFxuICAgICAgICAgICAgY2FuY2VsUm93RGVsZXRlOiAocm93OiBSb3dOb2RlKSA9PiB0aGlzLmNhbmNlbFJvd0RlbGV0ZShyb3cpLFxuICAgICAgICAgICAgY29uZmlybVJvd0RlbGV0ZTogKHJvdzogUm93Tm9kZSkgPT4gdGhpcy5jb25maXJtUm93RGVsZXRlKHJvdylcbiAgICAgICAgICB9KTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2UgYXJlIG1hbnVhbGx5IHNldHRpbmcgdGhlIHotaW5kZXggaGVyZSBiZWNhdXNlIG92ZXJsYXlzIHdpbGwgYWx3YXlzIGJlIG9uIHRvcCBvZlxuICAgICAgICAgKiB0aGUgb21uaWJhci4gVGhpcyBtYW51YWwgc2V0dGluZyBpcyAyIGxlc3MgdGhhbiB0aGUgb21uaWJhcidzIHotaW5kZXggb2YgMTAwMCBhbmQgb25lIGxlc3MgdGhhblxuICAgICAgICAgKiB0aGUgaGVhZGVyIHJvdydzIHZpZXdrZWVwZXIgd2hpY2ggaXMgOTk5LiBXZSBkaXNjdXNzZWQgY2hhbmdpbmcgdGhlIG92ZXJsYXkgc2VydmljZSB0byBhbGxvdyBmb3IgdGhpc1xuICAgICAgICAgKiBidXQgZGVjaWRlZCBhZ2FpbnN0IHRoYXQgY2hhbmdlIGF0IHRoaXMgdGltZSBkdWUgdG8gaXRzIG5pY2hlIG5hdHVyZS5cbiAgICAgICAgICovXG4gICAgICAgIG92ZXJsYXkuY29tcG9uZW50UmVmLmluc3RhbmNlLnpJbmRleCA9ICc5OTgnO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlubGluZURlbGV0ZVJlZiA9IHRoaXMucm93RGVsZXRlQ29tcG9uZW50LmlubGluZURlbGV0ZVJlZnMudG9BcnJheSgpXG4gICAgICAgICAgICAuZmluZChlbFJlZiA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBlbFJlZi5uYXRpdmVFbGVtZW50LmlkID09PSAncm93LWRlbGV0ZS1yZWYtJyArIGlkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgbGV0IGFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKGlubGluZURlbGV0ZVJlZik7XG5cbiAgICAgICAgICB0aGlzLmFmZml4VG9Sb3coYWZmaXhlciwgaWQpO1xuXG4gICAgICAgICAgdGhpcy5yb3dEZWxldGVDb250ZW50c1tpZF0gPSB7XG4gICAgICAgICAgICBhZmZpeGVyOiBhZmZpeGVyLFxuICAgICAgICAgICAgb3ZlcmxheTogb3ZlcmxheVxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGNvbmZpZyBvZiB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MpIHtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKGNvbmZpZy5pZCkgPCAwKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveVJvd0RlbGV0ZShjb25maWcuaWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgcm93RGVsZXRlSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcm93RGVsZXRlSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGEgYFNreUFnR3JpZFJvd0RlbGV0ZUNhbmNlbEFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjYW5jZWxsZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QWdHcmlkUm93RGVsZXRlQ2FuY2VsQXJncz4oKTtcblxuICAvKipcbiAgICogRW1pdHMgYSBgU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlybUFyZ3NgIG9iamVjdCB3aGVuIGEgcm93J3MgaW5saW5lIGRlbGV0ZSBpcyBjb25maXJtZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJvd0RlbGV0ZUNvbmZpcm0gPSBuZXcgRXZlbnRFbWl0dGVyPFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpcm1BcmdzPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIHRoZSBsaXN0IG9mIGlkcyBvZiB0aGUgZGF0YSBpbiB0aGUgcm93cyB3aGVyZSBpbmxpbmUgZGVsZXRlcyBhcmUgc2hvd24gY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcm93RGVsZXRlSWRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBwdWJsaWMgcm93RGVsZXRlQ29uZmlnczogU2t5QWdHcmlkUm93RGVsZXRlQ29uZmlnW10gPSBbXTtcblxuICBwdWJsaWMgZ2V0IHRhYmxlV2lkdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5za3ktYWctZ3JpZCcpWzBdLm9mZnNldFdpZHRoO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZChBZ0dyaWRBbmd1bGFyKVxuICBwdWJsaWMgYWdHcmlkOiBBZ0dyaWRBbmd1bGFyO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcm93RGVsZXRlQ29tcG9uZW50OiBTa3lBZ0dyaWRSb3dEZWxldGVDb21wb25lbnQ7XG4gIHByaXZhdGUgcm93RGVsZXRlQ29udGVudHM6IHsgW2lkOiBzdHJpbmddOiBTa3lBZ0dyaWRSb3dEZWxldGVDb250ZW50cyB9ID0ge307XG5cbiAgcHJpdmF0ZSBfcm93RGVsZXRlSWRzOiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShTa3lBZ0dyaWRSb3dEZWxldGVDb21wb25lbnQpO1xuICAgIHRoaXMucm93RGVsZXRlQ29tcG9uZW50ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KS5pbnN0YW5jZTtcbiAgICB0aGlzLmFnR3JpZC5yb3dEYXRhQ2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVSb3dEZWxldGVTdGF0ZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5hZ0dyaWQucm93RGF0YVVwZGF0ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlUm93RGVsZXRlU3RhdGVzKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuYWdHcmlkLnNvcnRDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd0RlbGV0ZVN0YXRlcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFnR3JpZC5maWx0ZXJDaGFuZ2VkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVJvd0RlbGV0ZVN0YXRlcygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFnR3JpZC5nZXRSb3dOb2RlSWQgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICByZXR1cm4gZGF0YS5pZC50b1N0cmluZygpO1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMucm93RGVsZXRlQ29udGVudHMpLmZvckVhY2goaWQgPT4ge1xuICAgICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKGlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxSb3dEZWxldGUocm93OiBSb3dOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5yb3dEZWxldGVDb25maWdzID0gdGhpcy5yb3dEZWxldGVDb25maWdzLmZpbHRlcihjb25maWcgPT4gY29uZmlnLmlkICE9PSByb3cuaWQpO1xuICAgIHRoaXMucm93RGVsZXRlQ2FuY2VsLmVtaXQoeyBpZDogcm93LmlkIH0pO1xuXG4gICAgdGhpcy5kZXN0cm95Um93RGVsZXRlKHJvdy5pZCk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlybVJvd0RlbGV0ZShyb3c6IFJvd05vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MuZmluZChjb25maWcgPT4gY29uZmlnLmlkID09PSByb3cuaWQpLnBlbmRpbmcgPSB0cnVlO1xuICAgIHRoaXMucm93RGVsZXRlQ29uZmlybS5lbWl0KHsgaWQ6IHJvdy5pZCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEZWxldGVJdGVtKHJvdzogUm93Tm9kZSk6IFNreUFnR3JpZFJvd0RlbGV0ZUNvbmZpZyB7XG4gICAgcmV0dXJuIHRoaXMucm93RGVsZXRlQ29uZmlncy5maW5kKHJvd0RlbGV0ZSA9PiByb3dEZWxldGUuaWQgPT09IHJvdy5pZCk7XG4gIH1cblxuICBwcml2YXRlIGFmZml4VG9Sb3coYWZmaXhlcjogU2t5QWZmaXhlciwgaWQ6IHN0cmluZykge1xuICAgIGxldCByb3dFbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFxuICAgICAgW3Jvdy1pZD1cIiR7aWR9XCJdIGRpdlthcmlhLWNvbGluZGV4PVwiMVwiXSxcbiAgICAgIC5hZy1yb3cuc2t5LWFnLWdyaWQtcm93LSR7aWR9IGRpdlthcmlhLWNvbGluZGV4PVwiMVwiXVxuICAgIGApO1xuXG4gICAgLy8gVGhpcyBjb3ZlcnMgY2FzZXMgd2hlcmUgQUcgR3JpZCBwbGFjZXMgdGhlIGNvbHVtbiBpbmRleCBvbiBhbiBpbm5lciBlbGVtZW50IChzdWNoIGFzIHdpdGggdGhlIGBlbmFibGVDZWxsVGV4dFNlbGVjdGlvbmAgb3B0aW9uKVxuICAgIC8vIFRoaXMgYXBwZWFycyB0byBoYXZlIGJlZW4gZml4ZWQgYnkgQUcgR3JpZCBpbiB2ZXJzaW9uIDI0IGFuZCBzbyBpdCBpcyBub3QgdGVzdGFibGUgYWZ0ZXIgdGhhdCB2ZXJzaW9uLlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghcm93RWxlbWVudCkge1xuICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb3ctaWQ9XCInICsgaWQgKyAnXCJdID4gZGl2Jyk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoY29sdW1uc1tpXS5xdWVyeVNlbGVjdG9yKCdbYXJpYS1jb2xpbmRleD1cIjFcIl0nKSkge1xuICAgICAgICAgIHJvd0VsZW1lbnQgPSBjb2x1bW5zW2ldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgYWZmaXhlci5hZmZpeFRvKHJvd0VsZW1lbnQsIHtcbiAgICAgIGF1dG9GaXRDb250ZXh0OiBTa3lBZmZpeEF1dG9GaXRDb250ZXh0LlZpZXdwb3J0LFxuICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICBwbGFjZW1lbnQ6ICdhYm92ZScsXG4gICAgICB2ZXJ0aWNhbEFsaWdubWVudDogJ3RvcCcsXG4gICAgICBob3Jpem9udGFsQWxpZ25tZW50OiAnbGVmdCcsXG4gICAgICBlbmFibGVBdXRvRml0OiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95Um93RGVsZXRlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByb3dEZWxldGVDb250ZW50cyA9IHRoaXMucm93RGVsZXRlQ29udGVudHNbaWRdO1xuXG4gICAgLyogc2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocm93RGVsZXRlQ29udGVudHMpIHtcbiAgICAgIHJvd0RlbGV0ZUNvbnRlbnRzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5jbG9zZShyb3dEZWxldGVDb250ZW50cy5vdmVybGF5KTtcbiAgICAgIGRlbGV0ZSB0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzW2lkXTtcbiAgICAgIHRoaXMucm93RGVsZXRlQ29uZmlncyA9IHRoaXMucm93RGVsZXRlQ29uZmlncy5maWx0ZXIoY29uZmlnID0+IGNvbmZpZy5pZCAhPT0gaWQpO1xuICAgICAgdGhpcy5fcm93RGVsZXRlSWRzID0gdGhpcy5yb3dEZWxldGVJZHM/LmZpbHRlcihhcnJheUlkID0+IGFycmF5SWQgIT09IGlkKTtcbiAgICAgIHRoaXMucm93RGVsZXRlSWRzQ2hhbmdlLmVtaXQodGhpcy5fcm93RGVsZXRlSWRzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJvd0RlbGV0ZVN0YXRlcygpOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RlbGV0ZUNvbmZpZ3MuZm9yRWFjaCgoY29uZmlnOiBTa3lBZ0dyaWRSb3dEZWxldGVDb25maWcpID0+IHtcbiAgICAgIGlmICghdGhpcy5hZ0dyaWQuYXBpLmdldFJvd05vZGUoY29uZmlnLmlkKSkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lSb3dEZWxldGUoY29uZmlnLmlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdlIG11c3QgcmVhZmZpeCB0aGluZ3Mgd2hlbiB0aGUgZGF0YSBjaGFuZ2VzIGJlY2F1c2UgdGhlIHJvd3MgcmVyZW5kZXIgYW5kIHRoZSBwcmV2aW91cyBlbGVtZW50IHRoYXQgdGhlIGRlbGV0ZSB3YXMgYWZmaXhlZFxuICAgICAgICAvLyB0byBpcyBkZXN0cm95ZWQuXG4gICAgICAgIHRoaXMuYWZmaXhUb1Jvdyh0aGlzLnJvd0RlbGV0ZUNvbnRlbnRzW2NvbmZpZy5pZF0uYWZmaXhlciwgY29uZmlnLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbn1cbiJdfQ==
@@ -69,6 +69,7 @@ function getValidatorCellRendererSelector(component, fallback) {
69
69
  return fallback;
70
70
  };
71
71
  }
72
+ var rowNodeId = -1;
72
73
  /**
73
74
  * A service that provides default styling and behavior for agGrids in SKY UX SPAs.
74
75
  */
@@ -220,6 +221,20 @@ var SkyAgGridService = /** @class */ (function () {
220
221
  'sky-ag-grid-cell-renderer-currency-validator': SkyAgGridCellRendererCurrencyValidatorComponent,
221
222
  'sky-ag-grid-cell-renderer-validator-tooltip': SkyAgGridCellRendererValidatorTooltipComponent
222
223
  },
224
+ getRowNodeId: function (data) {
225
+ if ('id' in data && data.id !== undefined) {
226
+ return "" + data.id;
227
+ }
228
+ return "" + rowNodeId--;
229
+ },
230
+ getRowClass: function (params) {
231
+ if (params.node.id) {
232
+ return "sky-ag-grid-row-" + params.node.id;
233
+ }
234
+ else {
235
+ return undefined;
236
+ }
237
+ },
223
238
  headerHeight: ((_p = (_o = this.currentTheme) === null || _o === void 0 ? void 0 : _o.theme) === null || _p === void 0 ? void 0 : _p.name) === 'modern' ? 60 : 37,
224
239
  icons: {
225
240
  sortDescending: this.getIconTemplate('caret-down'),
@@ -324,4 +339,4 @@ var SkyAgGridService = /** @class */ (function () {
324
339
  return SkyAgGridService;
325
340
  }());
326
341
  export { SkyAgGridService };
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2FnLWdyaWQvIiwic291cmNlcyI6WyJtb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sYUFBYSxDQUFDO0FBVXJCLE9BQU8sRUFDTCxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDakIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLHdDQUF3QyxFQUN6QyxNQUFNLDRFQUE0RSxDQUFDO0FBRXBGLE9BQU8sRUFDTCxzQ0FBc0MsRUFDdkMsTUFBTSx3RUFBd0UsQ0FBQztBQUVoRixPQUFPLEVBQ0wsa0NBQWtDLEVBQ25DLE1BQU0sZ0VBQWdFLENBQUM7QUFFeEUsT0FBTyxFQUNMLGtDQUFrQyxFQUNuQyxNQUFNLGdFQUFnRSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSw0REFBNEQsQ0FBQztBQUVwRSxPQUFPLEVBQ0wsK0NBQStDLEVBQ2hELE1BQU0sb0ZBQW9GLENBQUM7QUFFNUYsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLHNFQUFzRSxDQUFDO0FBRTlFLE9BQU8sRUFDTCx5Q0FBeUMsRUFDMUMsTUFBTSxrRkFBa0YsQ0FBQztBQUUxRixPQUFPLEVBQ0wsOENBQThDLEVBQy9DLE1BQU0sNEZBQTRGLENBQUM7QUFFcEcsT0FBTyxFQUNMLFlBQVksRUFDYixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFDTCxXQUFXLEVBQ1osTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0wsY0FB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SyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RyxPQUFPLENBQUMsQ0FBQywwQkFBMEIsQ0FBQzthQUNyQztZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O2dCQXpUK0IsdUJBQXVCO2dCQUN0QixlQUFlLHVCQUE3QyxRQUFRO2dCQUN1QixzQkFBc0IsdUJBQXJELFFBQVE7O0lBUEEsZ0JBQWdCO1FBRDVCLFVBQVUsRUFBRTtRQU9SLFdBQUEsUUFBUSxFQUFFLENBQUE7UUFDVixXQUFBLFFBQVEsRUFBRSxDQUFBO09BUEYsZ0JBQWdCLENBK1Q1QjtJQUFELHVCQUFDO0NBQUEsQUEvVEQsSUErVEM7U0EvVFksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5TGliUmVzb3VyY2VzU2VydmljZVxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7XG4gIENlbGxDbGFzc1BhcmFtcyxcbiAgR3JpZE9wdGlvbnMsXG4gIElDZWxsUmVuZGVyZXJQYXJhbXMsXG4gIFN1cHByZXNzS2V5Ym9hcmRFdmVudFBhcmFtcyxcbiAgVmFsdWVGb3JtYXR0ZXJQYXJhbXNcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lUaGVtZVNlcnZpY2UsXG4gIFNreVRoZW1lU2V0dGluZ3Ncbn0gZnJvbSAnQHNreXV4L3RoZW1lJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbEVkaXRvckF1dG9jb21wbGV0ZUNvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1hdXRvY29tcGxldGUvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxFZGl0b3JEYXRlcGlja2VyQ29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWRhdGVwaWNrZXIvY2VsbC1lZGl0b3ItZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRDZWxsRWRpdG9yTG9va3VwQ29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWxvb2t1cC9jZWxsLWVkaXRvci1sb29rdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbEVkaXRvck51bWJlckNvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1udW1iZXIvY2VsbC1lZGl0b3ItbnVtYmVyLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxFZGl0b3JUZXh0Q29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLXRleHQvY2VsbC1lZGl0b3ItdGV4dC5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeVZhbGlkYXRvckNvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItY3VycmVuY3kvY2VsbC1yZW5kZXJlci1jdXJyZW5jeS12YWxpZGF0b3IuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyTG9va3VwQ29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1sb29rdXAvY2VsbC1yZW5kZXJlci1sb29rdXAuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyUm93U2VsZWN0b3JDb21wb25lbnRcbn0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLXJvdy1zZWxlY3Rvci9jZWxsLXJlbmRlcmVyLXJvdy1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJWYWxpZGF0b3JUb29sdGlwQ29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcC9jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUNlbGxDbGFzc1xufSBmcm9tICcuL3R5cGVzL2NlbGwtY2xhc3MnO1xuXG5pbXBvcnQge1xuICBTa3lDZWxsVHlwZVxufSBmcm9tICcuL3R5cGVzL2NlbGwtdHlwZSc7XG5cbmltcG9ydCB7XG4gIFNreUhlYWRlckNsYXNzXG59IGZyb20gJy4vdHlwZXMvaGVhZGVyLWNsYXNzJztcbmltcG9ydCB7IGFwcGx5U2t5TG9va3VwUHJvcGVydGllc0RlZmF1bHRzIH0gZnJvbSAnLi90eXBlcy9sb29rdXAtcHJvcGVydGllcyc7XG5cbmltcG9ydCB7XG4gIFNreUdldEdyaWRPcHRpb25zQXJnc1xufSBmcm9tICcuL3R5cGVzL3NreS1ncmlkLW9wdGlvbnMnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRBZGFwdGVyU2VydmljZVxufSBmcm9tICcuL2FnLWdyaWQtYWRhcHRlci5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyQ3VycmVuY3lDb21wb25lbnRcbn0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5L2NlbGwtcmVuZGVyZXItY3VycmVuY3kuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbEVkaXRvckN1cnJlbmN5Q29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1lZGl0b3JzL2NlbGwtZWRpdG9yLWN1cnJlbmN5L2NlbGwtZWRpdG9yLWN1cnJlbmN5LmNvbXBvbmVudCc7XG5cbmZ1bmN0aW9uIGF1dG9jb21wbGV0ZUNvbXBhcmF0b3IodmFsdWUxOiB7IG5hbWU6IHN0cmluZyB9LCB2YWx1ZTI6IHsgbmFtZTogc3RyaW5nIH0pOiBudW1iZXIge1xuICBpZiAodmFsdWUxICYmIHZhbHVlMikge1xuICAgIGlmICh2YWx1ZTEubmFtZSA+IHZhbHVlMi5uYW1lKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUxLm5hbWUgPCB2YWx1ZTIubmFtZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlMSA/IDEgOiAtMTtcbn1cblxuZnVuY3Rpb24gYXV0b2NvbXBsZXRlRm9ybWF0dGVyKHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gcGFyYW1zLnZhbHVlICYmIHBhcmFtcy52YWx1ZS5uYW1lO1xufVxuXG5mdW5jdGlvbiBkYXRlQ29tcGFyYXRvcihkYXRlMTogYW55LCBkYXRlMjogYW55KTogbnVtYmVyIHtcbiAgbGV0IGRhdGUxdmFsdWUgPSBkYXRlMTtcbiAgbGV0IGRhdGUydmFsdWUgPSBkYXRlMjtcblxuICBpZiAodHlwZW9mIGRhdGUxdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0ZTF2YWx1ZSA9IG5ldyBEYXRlKGRhdGUxKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0ZTJ2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRlMnZhbHVlID0gbmV3IERhdGUoZGF0ZTIpO1xuICB9XG5cbiAgaWYgKGRhdGUxdmFsdWUgJiYgZGF0ZTJ2YWx1ZSkge1xuICAgIGlmIChkYXRlMXZhbHVlID4gZGF0ZTJ2YWx1ZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUxdmFsdWUgPCBkYXRlMnZhbHVlKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gZGF0ZTF2YWx1ZSA/IDEgOiAtMTtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoY29tcG9uZW50OiBzdHJpbmcsIGZhbGxiYWNrPzogYW55KSB7XG4gIHJldHVybiAocGFyYW1zOiBJQ2VsbFJlbmRlcmVyUGFyYW1zKSA9PiB7XG4gICAgaWYgKHBhcmFtcy5jb2xEZWYgJiYgdHlwZW9mIHBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zPy5za3lDb21wb25lbnRQcm9wZXJ0aWVzPy52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmICghcGFyYW1zLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3IocGFyYW1zLnZhbHVlLCBwYXJhbXMuZGF0YSwgcGFyYW1zLnJvd0luZGV4KSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIC4uLnBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsbGJhY2s7XG4gIH07XG59XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRoYXQgcHJvdmlkZXMgZGVmYXVsdCBzdHlsaW5nIGFuZCBiZWhhdmlvciBmb3IgYWdHcmlkcyBpbiBTS1kgVVggU1BBcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgY3VycmVudFRoZW1lOiBTa3lUaGVtZVNldHRpbmdzO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWdHcmlkQWRhcHRlclNlcnZpY2U6IFNreUFnR3JpZEFkYXB0ZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZXNvdXJjZXM/OiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlXG4gICkge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnRoZW1lU3ZjKSB7XG4gICAgICB0aGlzLnRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoc2V0dGluZ3NDaGFuZ2UgPT4gdGhpcy5jdXJyZW50VGhlbWUgPSBzZXR0aW5nc0NoYW5nZS5jdXJyZW50U2V0dGluZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBTS1kgVVggZ3JpZE9wdGlvbnMgdG8gY3JlYXRlIHlvdXIgYWdHcmlkIHdpdGggZGVmYXVsdCBTS1kgc3R5bGluZyBhbmQgYmVoYXZpb3IuXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZGVmYXVsdCBTS1kgVVggYWdHcmlkIGdyaWRPcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGdldEdyaWRPcHRpb25zKGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJncyk6IEdyaWRPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRHcmlkT3B0aW9ucyhhcmdzKTtcbiAgICBjb25zdCBtZXJnZWRHcmlkT3B0aW9ucyA9IHRoaXMubWVyZ2VHcmlkT3B0aW9ucyhkZWZhdWx0R3JpZE9wdGlvbnMsIGFyZ3MuZ3JpZE9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGdldEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRHcmlkT3B0aW9ucyA9IHRoaXMuZ2V0RGVmYXVsdEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJncyk7XG4gICAgY29uc3QgbWVyZ2VkR3JpZE9wdGlvbnMgPSB0aGlzLm1lcmdlR3JpZE9wdGlvbnMoZGVmYXVsdEdyaWRPcHRpb25zLCBhcmdzLmdyaWRPcHRpb25zKTtcblxuICAgIHJldHVybiBtZXJnZWRHcmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VHcmlkT3B0aW9ucyhkZWZhdWx0R3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zLCBwcm92aWRlZEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyk6IEdyaWRPcHRpb25zIHtcbiAgICBsZXQgbWVyZ2VkR3JpZE9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMsXG4gICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLFxuICAgICAgY29sdW1uVHlwZXM6IHtcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5jb2x1bW5UeXBlcyxcbiAgICAgICAgLy8gYXBwbHkgZGVmYXVsdCBzZWNvbmQgdG8gcHJldmVudCBjb25zdW1lcnMgZnJvbSBvdmVyd3JpdGluZyBvdXIgZGVmYXVsdCBjb2x1bW4gdHlwZXNcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmNvbHVtblR5cGVzXG4gICAgICB9LFxuICAgICAgZGVmYXVsdENvbERlZjoge1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuZGVmYXVsdENvbERlZixcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmLFxuICAgICAgICAvLyBhbGxvdyBjb25zdW1lcnMgdG8gb3ZlcnJpZGUgYWxsIGRlZmF1bHRDb2xEZWYgcHJvcGVydGllcyBleGNlcHQgY2VsbENsYXNzUnVsZXMsIHdoaWNoIHdlIHJlc2VydmUgZm9yIHN0eWxpbmdcbiAgICAgICAgY2VsbENsYXNzUnVsZXM6IGRlZmF1bHRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmLmNlbGxDbGFzc1J1bGVzXG4gICAgICB9LFxuICAgICAgaWNvbnM6IHtcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmljb25zLFxuICAgICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLmljb25zXG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBtZXJnZWRHcmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEdyaWRPcHRpb25zKGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJncyk6IEdyaWRPcHRpb25zIHtcbiAgICAvLyBjZWxsQ2xhc3NSdWxlcyBjYW4gYmUgZnVuY3Rpb25zIG9yIHN0cmluZyBleHByZXNzaW9uc1xuICAgIGNvbnN0IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbiA9ICd0cnVlJztcblxuICAgIGZ1bmN0aW9uIGdldEVkaXRhYmxlRm4oaXNVbmVkaXRhYmxlPzogYm9vbGVhbik6ICgocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpID0+IGJvb2xlYW4pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzRWRpdGFibGUgPSBwYXJhbXMuY29sRGVmLmVkaXRhYmxlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgaXNFZGl0YWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHBhcmFtcy5jb2x1bW5BcGkuZ2V0Q29sdW1uKHBhcmFtcy5jb2xEZWYuZmllbGQpO1xuICAgICAgICAgIGlzRWRpdGFibGUgPSBpc0VkaXRhYmxlKHsgLi4ucGFyYW1zLCBjb2x1bW4gfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNVbmVkaXRhYmxlID8gIWlzRWRpdGFibGUgOiBpc0VkaXRhYmxlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0YWJsZUNlbGxDbGFzc1J1bGVzID0ge1xuICAgICAgW1NreUNlbGxDbGFzcy5FZGl0YWJsZV06IGdldEVkaXRhYmxlRm4oKSxcbiAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGdldEVkaXRhYmxlRm4odHJ1ZSlcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRm4oKTogKChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcykgPT4gYm9vbGVhbikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbTogQ2VsbENsYXNzUGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbS5jb2xEZWYgJiYgdHlwZW9mIHBhcmFtLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXM/LnNreUNvbXBvbmVudFByb3BlcnRpZXM/LnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiAhcGFyYW0uY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzLnZhbGlkYXRvcihwYXJhbS52YWx1ZSwgcGFyYW0uZGF0YSwgcGFyYW0ucm93SW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMgPSB7XG4gICAgICBbU2t5Q2VsbENsYXNzLkludmFsaWRdOiBnZXRWYWxpZGF0b3JGbigpXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRTa3lHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb2x1bW5UeXBlczoge1xuICAgICAgICBbU2t5Q2VsbFR5cGUuQXV0b2NvbXBsZXRlXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkF1dG9jb21wbGV0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3JGcmFtZXdvcms6IFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IGF1dG9jb21wbGV0ZUZvcm1hdHRlcixcbiAgICAgICAgICBjb21wYXJhdG9yOiBhdXRvY29tcGxldGVDb21wYXJhdG9yLFxuICAgICAgICAgIG1pbldpZHRoOiAxODVcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLkN1cnJlbmN5XToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkN1cnJlbmN5XTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4udmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci1jdXJyZW5jeS12YWxpZGF0b3InLFxuICAgICAgICAgICAgeyBjb21wb25lbnQ6ICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5JyB9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1XG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5EYXRlXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkRhdGVdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsRWRpdG9yRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgICBjb21wYXJhdG9yOiBkYXRlQ29tcGFyYXRvcixcbiAgICAgICAgICBtaW5XaWR0aDogdGhpcy5jdXJyZW50VGhlbWU/LnRoZW1lPy5uYW1lID09PSAnbW9kZXJuJyA/IDE4MCA6IDE2MCxcbiAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogKHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXMpID0+IHRoaXMuZGF0ZUZvcm1hdHRlcihwYXJhbXMsIGFyZ3MubG9jYWxlKVxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuTG9va3VwXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkxvb2t1cF06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3JGcmFtZXdvcms6IFNreUFnR3JpZENlbGxFZGl0b3JMb29rdXBDb21wb25lbnQsXG4gICAgICAgICAgY2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJMb29rdXBDb21wb25lbnQsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvb2t1cFByb3BlcnRpZXMgPSBhcHBseVNreUxvb2t1cFByb3BlcnRpZXNEZWZhdWx0cyhwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIChwYXJhbXMudmFsdWUgfHwgW10pXG4gICAgICAgICAgICAgIC5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbbG9va3VwUHJvcGVydGllcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgLmpvaW4oJzsgJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1XG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5OdW1iZXJdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuTnVtYmVyXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogU2t5QWdHcmlkQ2VsbEVkaXRvck51bWJlckNvbXBvbmVudCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogU2t5SGVhZGVyQ2xhc3MuUmlnaHRBbGlnbmVkXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5Sb3dTZWxlY3Rvcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5Sb3dTZWxlY3Rvcl06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJSb3dTZWxlY3RvckNvbXBvbmVudCxcbiAgICAgICAgICBoZWFkZXJOYW1lOiAnJyxcbiAgICAgICAgICBtaW5XaWR0aDogNTUsXG4gICAgICAgICAgbWF4V2lkdGg6IDU1LFxuICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3aWR0aDogNTVcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLlRleHRdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuVGV4dF06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3JGcmFtZXdvcms6IFNreUFnR3JpZENlbGxFZGl0b3JUZXh0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5WYWxpZGF0b3JdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIC4uLnZhbGlkYXRvckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyU2VsZWN0b3I6IGdldFZhbGlkYXRvckNlbGxSZW5kZXJlclNlbGVjdG9yKCdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwJylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRDb2xEZWY6IHtcbiAgICAgICAgY2VsbENsYXNzUnVsZXM6IGVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgIG1pbldpZHRoOiAxMDAsXG4gICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIHN1cHByZXNzS2V5Ym9hcmRFdmVudDogKGtleXByZXNzOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpID0+IHRoaXMuc3VwcHJlc3NUYWIoa2V5cHJlc3MpXG4gICAgICB9LFxuICAgICAgZG9tTGF5b3V0OiAnYXV0b0hlaWdodCcsXG4gICAgICBlbnRlck1vdmVzRG93bkFmdGVyRWRpdDogdHJ1ZSxcbiAgICAgIGZyYW1ld29ya0NvbXBvbmVudHM6IHtcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3knOiBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeUNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yJzogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyQ3VycmVuY3lWYWxpZGF0b3JDb21wb25lbnQsXG4gICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwJzogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVmFsaWRhdG9yVG9vbHRpcENvbXBvbmVudFxuICAgICAgfSxcbiAgICAgIGhlYWRlckhlaWdodDogdGhpcy5jdXJyZW50VGhlbWU/LnRoZW1lPy5uYW1lID09PSAnbW9kZXJuJyA/IDYwIDogMzcsXG4gICAgICBpY29uczoge1xuICAgICAgICBzb3J0RGVzY2VuZGluZzogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2NhcmV0LWRvd24nKSxcbiAgICAgICAgc29ydEFzY2VuZGluZzogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2NhcmV0LXVwJyksXG4gICAgICAgIGNvbHVtbk1vdmVNb3ZlOiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJyksXG4gICAgICAgIGNvbHVtbk1vdmVIaWRlOiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJyksXG4gICAgICAgIGNvbHVtbk1vdmVMZWZ0OiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJyksXG4gICAgICAgIGNvbHVtbk1vdmVSaWdodDogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlUGluOiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJylcbiAgICAgIH0sXG4gICAgICBvbkNlbGxGb2N1c2VkOiAoKSA9PiB0aGlzLm9uQ2VsbEZvY3VzZWQoKSxcbiAgICAgIHJvd0hlaWdodDogdGhpcy5jdXJyZW50VGhlbWU/LnRoZW1lPy5uYW1lID09PSAnbW9kZXJuJyA/IDYwIDogMzgsXG4gICAgICByb3dNdWx0aVNlbGVjdFdpdGhDbGljazogdHJ1ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcbiAgICAgIHNpbmdsZUNsaWNrRWRpdDogdHJ1ZSxcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbnVsbC1rZXl3b3JkXG4gICAgICBzb3J0aW5nT3JkZXI6IFsnZGVzYycsICdhc2MnLCBudWxsXSxcbiAgICAgIHN0b3BFZGl0aW5nV2hlbkdyaWRMb3Nlc0ZvY3VzOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IHRydWUsXG4gICAgICBzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uczogdHJ1ZVxuICAgIH07XG5cbiAgICBkZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3lWYWxpZGF0b3JdID0ge1xuICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLkN1cnJlbmN5XSxcbiAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgICBza3lDb21wb25lbnRQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6IGFueSwgZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISFgJHt2YWx1ZSB8fCAnJ31gLm1hdGNoKC9eW14wLTldKihcXGQrWywuXT8pK1xcZCpbXjAtOV0qJC8pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGN1cnJlbmN5J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5yZXNvdXJjZXMpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZygnc2t5X2FnX2dyaWRfY2VsbF9yZW5kZXJlcl9jdXJyZW5jeV92YWxpZGF0b3JfbWVzc2FnZScpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLkN1cnJlbmN5VmFsaWRhdG9yXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuTnVtYmVyVmFsaWRhdG9yXSA9IHtcbiAgICAgIC4uLmRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5WYWxpZGF0b3JdLFxuICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlcl0sXG4gICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAuLi5kZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuVmFsaWRhdG9yXS5jZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlcl0uY2VsbENsYXNzUnVsZXNcbiAgICAgIH0sXG4gICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgc2t5Q29tcG9uZW50UHJvcGVydGllczoge1xuICAgICAgICAgIHZhbGlkYXRvcjogKHZhbHVlOiBhbnksIGRhdGE6IGFueSwgcm93SW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICEhdmFsdWUgJiYgIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZhbGlkYXRvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXInXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnJlc291cmNlcykge1xuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKCdza3lfYWdfZ3JpZF9jZWxsX3JlbmRlcmVyX251bWJlcl92YWxpZGF0b3JfbWVzc2FnZScpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlclZhbGlkYXRvcl0uY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMudmFsaWRhdG9yTWVzc2FnZSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRTa3lHcmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgb25DZWxsRm9jdXNlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNlZEVsZW1lbnQoKTtcblxuICAgIHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZm9jdXNPbkZvY3VzYWJsZUNoaWxkcmVuKGN1cnJlbnRFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIGxldCBkZWZhdWx0R3JpZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRHcmlkT3B0aW9ucyhhcmdzKTtcblxuICAgIGRlZmF1bHRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSAnbm9uZSc7XG5cbiAgICByZXR1cm4gZGVmYXVsdEdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRlRm9ybWF0dGVyKHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXMsIGxvY2FsZTogc3RyaW5nID0gJ2VuLXVzJyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZGF0ZUNvbmZpZyA9IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyB9O1xuICAgIGxldCBkYXRlOiBEYXRlID0gcGFyYW1zLnZhbHVlO1xuXG4gICAgaWYgKGRhdGUgJiYgdHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUocGFyYW1zLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSBkYXRlICYmIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nICYmIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgZGF0ZUNvbmZpZyk7XG5cbiAgICBpZiAoZGF0ZSAmJiBkYXRlLmdldFRpbWUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJY29uVGVtcGxhdGUoaWNvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGA8aSBjbGFzcz1cImZhIGZhLSR7aWNvbk5hbWV9XCI+PC9pPmA7XG4gIH1cblxuICBwcml2YXRlIHN1cHByZXNzVGFiKHBhcmFtczogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgaWYgKHBhcmFtcy5ldmVudC5jb2RlID09PSAnVGFiJykge1xuICAgICAgaWYgKHBhcmFtcy5lZGl0aW5nKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRseUZvY3VzZWRFbCA9IHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNlZEVsZW1lbnQoKTtcbiAgICAgICAgLy8gaW5saW5lIGNlbGwgZWRpdG9ycyBoYXZlIHRoZSAnYWctY2VsbCcgY2xhc3MsIHdoaWxlIHBvcHVwIGVkaXRvcnMgaGF2ZSB0aGUgJ2FnLXBvcHVwLWVkaXRvcicgY2xhc3NcbiAgICAgICAgY29uc3QgY2VsbEVsID0gdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRFbGVtZW50T3JQYXJlbnRXaXRoQ2xhc3MoY3VycmVudGx5Rm9jdXNlZEVsLCAnYWctY2VsbCcpO1xuICAgICAgICBjb25zdCBwb3B1cEVsID0gdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRFbGVtZW50T3JQYXJlbnRXaXRoQ2xhc3MoY3VycmVudGx5Rm9jdXNlZEVsLCAnYWctcG9wdXAtZWRpdG9yJyk7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gY2VsbEVsIHx8IHBvcHVwRWw7XG5cbiAgICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGwgPVxuICAgICAgICAgIHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0TmV4dEZvY3VzYWJsZUVsZW1lbnQoY3VycmVudGx5Rm9jdXNlZEVsLCBwYXJlbnRFbCwgcGFyYW1zLmV2ZW50LnNoaWZ0S2V5KTtcbiAgICAgICAgcmV0dXJuICEhbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
342
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNreXV4L2FnLWdyaWQvIiwic291cmNlcyI6WyJtb2R1bGVzL2FnLWdyaWQvYWctZ3JpZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sYUFBYSxDQUFDO0FBVXJCLE9BQU8sRUFDTCxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDakIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLHdDQUF3QyxFQUN6QyxNQUFNLDRFQUE0RSxDQUFDO0FBRXBGLE9BQU8sRUFDTCxzQ0FBc0MsRUFDdkMsTUFBTSx3RUFBd0UsQ0FBQztBQUVoRixPQUFPLEVBQ0wsa0NBQWtDLEVBQ25DLE1BQU0sZ0VBQWdFLENBQUM7QUFFeEUsT0FBTyxFQUNMLGtDQUFrQyxFQUNuQyxNQUFNLGdFQUFnRSxDQUFDO0FBRXhFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDakMsTUFBTSw0REFBNEQsQ0FBQztBQUVwRSxPQUFPLEVBQ0wsK0NBQStDLEVBQ2hELE1BQU0sb0ZBQW9GLENBQUM7QUFFNUYsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLHNFQUFzRSxDQUFDO0FBRTlFLE9BQU8sRUFDTCx5Q0FBeUMsRUFDMUMsTUFBTSxrRkFBa0YsQ0FBQztBQUUxRixPQUFPLEVBQ0wsOENBQThDLEVBQy9DLE1BQU0sNEZBQTRGLENBQUM7QUFFcEcsT0FBTyxFQUNMLFlBQVksRUFDYixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFDTCxXQUFXLEVBQ1osTUFBTSxtQkFBbUIsQ0FBQztBQUUzQixPQUFPLEVBQ0wsY0FB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QixJQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6RSxxR0FBcUc7Z0JBQ3JHLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEcsSUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDJCQUEyQixDQUFDLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLENBQUM7Z0JBQzdHLElBQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxPQUFPLENBQUM7Z0JBRW5DLElBQU0sMEJBQTBCLEdBQzlCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekcsT0FBTyxDQUFDLENBQUMsMEJBQTBCLENBQUM7YUFDckM7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOztnQkF0VStCLHVCQUF1QjtnQkFDdEIsZUFBZSx1QkFBN0MsUUFBUTtnQkFDdUIsc0JBQXNCLHVCQUFyRCxRQUFROztJQVBBLGdCQUFnQjtRQUQ1QixVQUFVLEVBQUU7UUFPUixXQUFBLFFBQVEsRUFBRSxDQUFBO1FBQ1YsV0FBQSxRQUFRLEVBQUUsQ0FBQTtPQVBGLGdCQUFnQixDQTRVNUI7SUFBRCx1QkFBQztDQUFBLEFBNVVELElBNFVDO1NBNVVZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUxpYlJlc291cmNlc1NlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQge1xuICBDZWxsQ2xhc3NQYXJhbXMsXG4gIEdyaWRPcHRpb25zLFxuICBJQ2VsbFJlbmRlcmVyUGFyYW1zLFxuICBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMsXG4gIFZhbHVlRm9ybWF0dGVyUGFyYW1zXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcblxuaW1wb3J0IHtcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU2t5VGhlbWVTZXJ2aWNlLFxuICBTa3lUaGVtZVNldHRpbmdzXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnRcbn0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItYXV0b2NvbXBsZXRlL2NlbGwtZWRpdG9yLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRDZWxsRWRpdG9yRGF0ZXBpY2tlckNvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1kYXRlcGlja2VyL2NlbGwtZWRpdG9yLWRhdGVwaWNrZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbEVkaXRvckxvb2t1cENvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1sb29rdXAvY2VsbC1lZGl0b3ItbG9va3VwLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxFZGl0b3JOdW1iZXJDb21wb25lbnRcbn0gZnJvbSAnLi9jZWxsLWVkaXRvcnMvY2VsbC1lZGl0b3ItbnVtYmVyL2NlbGwtZWRpdG9yLW51bWJlci5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lBZ0dyaWRDZWxsRWRpdG9yVGV4dENvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci10ZXh0L2NlbGwtZWRpdG9yLXRleHQuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyQ3VycmVuY3lWYWxpZGF0b3JDb21wb25lbnRcbn0gZnJvbSAnLi9jZWxsLXJlbmRlcmVycy9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5L2NlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxSZW5kZXJlckxvb2t1cENvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItbG9va3VwL2NlbGwtcmVuZGVyZXItbG9va3VwLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxSZW5kZXJlclJvd1NlbGVjdG9yQ29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1yb3ctc2VsZWN0b3IvY2VsbC1yZW5kZXJlci1yb3ctc2VsZWN0b3IuY29tcG9uZW50JztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVmFsaWRhdG9yVG9vbHRpcENvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtcmVuZGVyZXJzL2NlbGwtcmVuZGVyZXItdmFsaWRhdG9yLXRvb2x0aXAvY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lDZWxsQ2xhc3Ncbn0gZnJvbSAnLi90eXBlcy9jZWxsLWNsYXNzJztcblxuaW1wb3J0IHtcbiAgU2t5Q2VsbFR5cGVcbn0gZnJvbSAnLi90eXBlcy9jZWxsLXR5cGUnO1xuXG5pbXBvcnQge1xuICBTa3lIZWFkZXJDbGFzc1xufSBmcm9tICcuL3R5cGVzL2hlYWRlci1jbGFzcyc7XG5pbXBvcnQgeyBhcHBseVNreUxvb2t1cFByb3BlcnRpZXNEZWZhdWx0cyB9IGZyb20gJy4vdHlwZXMvbG9va3VwLXByb3BlcnRpZXMnO1xuXG5pbXBvcnQge1xuICBTa3lHZXRHcmlkT3B0aW9uc0FyZ3Ncbn0gZnJvbSAnLi90eXBlcy9za3ktZ3JpZC1vcHRpb25zJztcblxuaW1wb3J0IHtcbiAgU2t5QWdHcmlkQWRhcHRlclNlcnZpY2Vcbn0gZnJvbSAnLi9hZy1ncmlkLWFkYXB0ZXIuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxSZW5kZXJlckN1cnJlbmN5Q29tcG9uZW50XG59IGZyb20gJy4vY2VsbC1yZW5kZXJlcnMvY2VsbC1yZW5kZXJlci1jdXJyZW5jeS9jZWxsLXJlbmRlcmVyLWN1cnJlbmN5LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUFnR3JpZENlbGxFZGl0b3JDdXJyZW5jeUNvbXBvbmVudFxufSBmcm9tICcuL2NlbGwtZWRpdG9ycy9jZWxsLWVkaXRvci1jdXJyZW5jeS9jZWxsLWVkaXRvci1jdXJyZW5jeS5jb21wb25lbnQnO1xuXG5mdW5jdGlvbiBhdXRvY29tcGxldGVDb21wYXJhdG9yKHZhbHVlMTogeyBuYW1lOiBzdHJpbmcgfSwgdmFsdWUyOiB7IG5hbWU6IHN0cmluZyB9KTogbnVtYmVyIHtcbiAgaWYgKHZhbHVlMSAmJiB2YWx1ZTIpIHtcbiAgICBpZiAodmFsdWUxLm5hbWUgPiB2YWx1ZTIubmFtZSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlMS5uYW1lIDwgdmFsdWUyLm5hbWUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTEgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIGF1dG9jb21wbGV0ZUZvcm1hdHRlcihwYXJhbXM6IFZhbHVlRm9ybWF0dGVyUGFyYW1zKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHBhcmFtcy52YWx1ZSAmJiBwYXJhbXMudmFsdWUubmFtZTtcbn1cblxuZnVuY3Rpb24gZGF0ZUNvbXBhcmF0b3IoZGF0ZTE6IGFueSwgZGF0ZTI6IGFueSk6IG51bWJlciB7XG4gIGxldCBkYXRlMXZhbHVlID0gZGF0ZTE7XG4gIGxldCBkYXRlMnZhbHVlID0gZGF0ZTI7XG5cbiAgaWYgKHR5cGVvZiBkYXRlMXZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIGRhdGUxdmFsdWUgPSBuZXcgRGF0ZShkYXRlMSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGUydmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0ZTJ2YWx1ZSA9IG5ldyBEYXRlKGRhdGUyKTtcbiAgfVxuXG4gIGlmIChkYXRlMXZhbHVlICYmIGRhdGUydmFsdWUpIHtcbiAgICBpZiAoZGF0ZTF2YWx1ZSA+IGRhdGUydmFsdWUpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmIChkYXRlMXZhbHVlIDwgZGF0ZTJ2YWx1ZSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIGRhdGUxdmFsdWUgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIGdldFZhbGlkYXRvckNlbGxSZW5kZXJlclNlbGVjdG9yKGNvbXBvbmVudDogc3RyaW5nLCBmYWxsYmFjaz86IGFueSkge1xuICByZXR1cm4gKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcykgPT4ge1xuICAgIGlmIChwYXJhbXMuY29sRGVmICYmIHR5cGVvZiBwYXJhbXMuY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtcz8uc2t5Q29tcG9uZW50UHJvcGVydGllcz8udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoIXBhcmFtcy5jb2xEZWYuY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMudmFsaWRhdG9yKHBhcmFtcy52YWx1ZSwgcGFyYW1zLmRhdGEsIHBhcmFtcy5yb3dJbmRleCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb21wb25lbnQsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAuLi5wYXJhbXMuY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbGxiYWNrO1xuICB9O1xufVxuXG5sZXQgcm93Tm9kZUlkID0gLTE7XG5cbi8qKlxuICogQSBzZXJ2aWNlIHRoYXQgcHJvdmlkZXMgZGVmYXVsdCBzdHlsaW5nIGFuZCBiZWhhdmlvciBmb3IgYWdHcmlkcyBpbiBTS1kgVVggU1BBcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreUFnR3JpZFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgY3VycmVudFRoZW1lOiBTa3lUaGVtZVNldHRpbmdzO1xuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWdHcmlkQWRhcHRlclNlcnZpY2U6IFNreUFnR3JpZEFkYXB0ZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZXNvdXJjZXM/OiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlXG4gICkge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnRoZW1lU3ZjKSB7XG4gICAgICB0aGlzLnRoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoc2V0dGluZ3NDaGFuZ2UgPT4gdGhpcy5jdXJyZW50VGhlbWUgPSBzZXR0aW5nc0NoYW5nZS5jdXJyZW50U2V0dGluZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBTS1kgVVggZ3JpZE9wdGlvbnMgdG8gY3JlYXRlIHlvdXIgYWdHcmlkIHdpdGggZGVmYXVsdCBTS1kgc3R5bGluZyBhbmQgYmVoYXZpb3IuXG4gICAqIEBwYXJhbSBhcmdzIG9wdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZGVmYXVsdCBTS1kgVVggYWdHcmlkIGdyaWRPcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGdldEdyaWRPcHRpb25zKGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJncyk6IEdyaWRPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0R3JpZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRHcmlkT3B0aW9ucyhhcmdzKTtcbiAgICBjb25zdCBtZXJnZWRHcmlkT3B0aW9ucyA9IHRoaXMubWVyZ2VHcmlkT3B0aW9ucyhkZWZhdWx0R3JpZE9wdGlvbnMsIGFyZ3MuZ3JpZE9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIG1lcmdlZEdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGdldEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRHcmlkT3B0aW9ucyA9IHRoaXMuZ2V0RGVmYXVsdEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJncyk7XG4gICAgY29uc3QgbWVyZ2VkR3JpZE9wdGlvbnMgPSB0aGlzLm1lcmdlR3JpZE9wdGlvbnMoZGVmYXVsdEdyaWRPcHRpb25zLCBhcmdzLmdyaWRPcHRpb25zKTtcblxuICAgIHJldHVybiBtZXJnZWRHcmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VHcmlkT3B0aW9ucyhkZWZhdWx0R3JpZE9wdGlvbnM6IEdyaWRPcHRpb25zLCBwcm92aWRlZEdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucyk6IEdyaWRPcHRpb25zIHtcbiAgICBsZXQgbWVyZ2VkR3JpZE9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMsXG4gICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLFxuICAgICAgY29sdW1uVHlwZXM6IHtcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5jb2x1bW5UeXBlcyxcbiAgICAgICAgLy8gYXBwbHkgZGVmYXVsdCBzZWNvbmQgdG8gcHJldmVudCBjb25zdW1lcnMgZnJvbSBvdmVyd3JpdGluZyBvdXIgZGVmYXVsdCBjb2x1bW4gdHlwZXNcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmNvbHVtblR5cGVzXG4gICAgICB9LFxuICAgICAgZGVmYXVsdENvbERlZjoge1xuICAgICAgICAuLi5kZWZhdWx0R3JpZE9wdGlvbnMuZGVmYXVsdENvbERlZixcbiAgICAgICAgLi4ucHJvdmlkZWRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmLFxuICAgICAgICAvLyBhbGxvdyBjb25zdW1lcnMgdG8gb3ZlcnJpZGUgYWxsIGRlZmF1bHRDb2xEZWYgcHJvcGVydGllcyBleGNlcHQgY2VsbENsYXNzUnVsZXMsIHdoaWNoIHdlIHJlc2VydmUgZm9yIHN0eWxpbmdcbiAgICAgICAgY2VsbENsYXNzUnVsZXM6IGRlZmF1bHRHcmlkT3B0aW9ucy5kZWZhdWx0Q29sRGVmLmNlbGxDbGFzc1J1bGVzXG4gICAgICB9LFxuICAgICAgaWNvbnM6IHtcbiAgICAgICAgLi4uZGVmYXVsdEdyaWRPcHRpb25zLmljb25zLFxuICAgICAgICAuLi5wcm92aWRlZEdyaWRPcHRpb25zLmljb25zXG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBtZXJnZWRHcmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEdyaWRPcHRpb25zKGFyZ3M6IFNreUdldEdyaWRPcHRpb25zQXJncyk6IEdyaWRPcHRpb25zIHtcbiAgICAvLyBjZWxsQ2xhc3NSdWxlcyBjYW4gYmUgZnVuY3Rpb25zIG9yIHN0cmluZyBleHByZXNzaW9uc1xuICAgIGNvbnN0IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbiA9ICd0cnVlJztcblxuICAgIGZ1bmN0aW9uIGdldEVkaXRhYmxlRm4oaXNVbmVkaXRhYmxlPzogYm9vbGVhbik6ICgocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpID0+IGJvb2xlYW4pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW1zOiBDZWxsQ2xhc3NQYXJhbXMpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IGlzRWRpdGFibGUgPSBwYXJhbXMuY29sRGVmLmVkaXRhYmxlO1xuXG4gICAgICAgIGlmICh0eXBlb2YgaXNFZGl0YWJsZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHBhcmFtcy5jb2x1bW5BcGkuZ2V0Q29sdW1uKHBhcmFtcy5jb2xEZWYuZmllbGQpO1xuICAgICAgICAgIGlzRWRpdGFibGUgPSBpc0VkaXRhYmxlKHsgLi4ucGFyYW1zLCBjb2x1bW4gfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNVbmVkaXRhYmxlID8gIWlzRWRpdGFibGUgOiBpc0VkaXRhYmxlO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlZGl0YWJsZUNlbGxDbGFzc1J1bGVzID0ge1xuICAgICAgW1NreUNlbGxDbGFzcy5FZGl0YWJsZV06IGdldEVkaXRhYmxlRm4oKSxcbiAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGdldEVkaXRhYmxlRm4odHJ1ZSlcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gZ2V0VmFsaWRhdG9yRm4oKTogKChwYXJhbXM6IENlbGxDbGFzc1BhcmFtcykgPT4gYm9vbGVhbikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbTogQ2VsbENsYXNzUGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbS5jb2xEZWYgJiYgdHlwZW9mIHBhcmFtLmNvbERlZi5jZWxsUmVuZGVyZXJQYXJhbXM/LnNreUNvbXBvbmVudFByb3BlcnRpZXM/LnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiAhcGFyYW0uY29sRGVmLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzLnZhbGlkYXRvcihwYXJhbS52YWx1ZSwgcGFyYW0uZGF0YSwgcGFyYW0ucm93SW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMgPSB7XG4gICAgICBbU2t5Q2VsbENsYXNzLkludmFsaWRdOiBnZXRWYWxpZGF0b3JGbigpXG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRTa3lHcmlkT3B0aW9uczogR3JpZE9wdGlvbnMgPSB7XG4gICAgICBjb2x1bW5UeXBlczoge1xuICAgICAgICBbU2t5Q2VsbFR5cGUuQXV0b2NvbXBsZXRlXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkF1dG9jb21wbGV0ZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3JGcmFtZXdvcms6IFNreUFnR3JpZENlbGxFZGl0b3JBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IGF1dG9jb21wbGV0ZUZvcm1hdHRlcixcbiAgICAgICAgICBjb21wYXJhdG9yOiBhdXRvY29tcGxldGVDb21wYXJhdG9yLFxuICAgICAgICAgIG1pbldpZHRoOiAxODVcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLkN1cnJlbmN5XToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkN1cnJlbmN5XTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4udmFsaWRhdG9yQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJTZWxlY3RvcjogZ2V0VmFsaWRhdG9yQ2VsbFJlbmRlcmVyU2VsZWN0b3IoXG4gICAgICAgICAgICAnc2t5LWFnLWdyaWQtY2VsbC1yZW5kZXJlci1jdXJyZW5jeS12YWxpZGF0b3InLFxuICAgICAgICAgICAgeyBjb21wb25lbnQ6ICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLWN1cnJlbmN5JyB9XG4gICAgICAgICAgKSxcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsRWRpdG9yQ3VycmVuY3lDb21wb25lbnQsXG4gICAgICAgICAgaGVhZGVyQ2xhc3M6IFNreUhlYWRlckNsYXNzLlJpZ2h0QWxpZ25lZCxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1XG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5EYXRlXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkRhdGVdOiBjZWxsQ2xhc3NSdWxlVHJ1ZUV4cHJlc3Npb24sXG4gICAgICAgICAgICAuLi5lZGl0YWJsZUNlbGxDbGFzc1J1bGVzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjZWxsRWRpdG9yRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsRWRpdG9yRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgICBjb21wYXJhdG9yOiBkYXRlQ29tcGFyYXRvcixcbiAgICAgICAgICBtaW5XaWR0aDogdGhpcy5jdXJyZW50VGhlbWU/LnRoZW1lPy5uYW1lID09PSAnbW9kZXJuJyA/IDE4MCA6IDE2MCxcbiAgICAgICAgICB2YWx1ZUZvcm1hdHRlcjogKHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXMpID0+IHRoaXMuZGF0ZUZvcm1hdHRlcihwYXJhbXMsIGFyZ3MubG9jYWxlKVxuICAgICAgICB9LFxuICAgICAgICBbU2t5Q2VsbFR5cGUuTG9va3VwXToge1xuICAgICAgICAgIGNlbGxDbGFzc1J1bGVzOiB7XG4gICAgICAgICAgICBbU2t5Q2VsbENsYXNzLkxvb2t1cF06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3JGcmFtZXdvcms6IFNreUFnR3JpZENlbGxFZGl0b3JMb29rdXBDb21wb25lbnQsXG4gICAgICAgICAgY2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJMb29rdXBDb21wb25lbnQsXG4gICAgICAgICAgdmFsdWVGb3JtYXR0ZXI6IChwYXJhbXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvb2t1cFByb3BlcnRpZXMgPSBhcHBseVNreUxvb2t1cFByb3BlcnRpZXNEZWZhdWx0cyhwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIChwYXJhbXMudmFsdWUgfHwgW10pXG4gICAgICAgICAgICAgIC5tYXAoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVbbG9va3VwUHJvcGVydGllcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgLmpvaW4oJzsgJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBtaW5XaWR0aDogMTg1XG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5OdW1iZXJdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuTnVtYmVyXTogY2VsbENsYXNzUnVsZVRydWVFeHByZXNzaW9uLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbEVkaXRvckZyYW1ld29yazogU2t5QWdHcmlkQ2VsbEVkaXRvck51bWJlckNvbXBvbmVudCxcbiAgICAgICAgICBoZWFkZXJDbGFzczogU2t5SGVhZGVyQ2xhc3MuUmlnaHRBbGlnbmVkXG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5Sb3dTZWxlY3Rvcl06IHtcbiAgICAgICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAgICAgW1NreUNlbGxDbGFzcy5Sb3dTZWxlY3Rvcl06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuVW5lZGl0YWJsZV06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvblxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJSb3dTZWxlY3RvckNvbXBvbmVudCxcbiAgICAgICAgICBoZWFkZXJOYW1lOiAnJyxcbiAgICAgICAgICBtaW5XaWR0aDogNTUsXG4gICAgICAgICAgbWF4V2lkdGg6IDU1LFxuICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3aWR0aDogNTVcbiAgICAgICAgfSxcbiAgICAgICAgW1NreUNlbGxUeXBlLlRleHRdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIFtTa3lDZWxsQ2xhc3MuVGV4dF06IGNlbGxDbGFzc1J1bGVUcnVlRXhwcmVzc2lvbixcbiAgICAgICAgICAgIC4uLmVkaXRhYmxlQ2VsbENsYXNzUnVsZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNlbGxFZGl0b3JGcmFtZXdvcms6IFNreUFnR3JpZENlbGxFZGl0b3JUZXh0Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIFtTa3lDZWxsVHlwZS5WYWxpZGF0b3JdOiB7XG4gICAgICAgICAgY2VsbENsYXNzUnVsZXM6IHtcbiAgICAgICAgICAgIC4uLnZhbGlkYXRvckNlbGxDbGFzc1J1bGVzLFxuICAgICAgICAgICAgLi4uZWRpdGFibGVDZWxsQ2xhc3NSdWxlc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2VsbFJlbmRlcmVyU2VsZWN0b3I6IGdldFZhbGlkYXRvckNlbGxSZW5kZXJlclNlbGVjdG9yKCdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwJylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRDb2xEZWY6IHtcbiAgICAgICAgY2VsbENsYXNzUnVsZXM6IGVkaXRhYmxlQ2VsbENsYXNzUnVsZXMsXG4gICAgICAgIG1pbldpZHRoOiAxMDAsXG4gICAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgIHN1cHByZXNzS2V5Ym9hcmRFdmVudDogKGtleXByZXNzOiBTdXBwcmVzc0tleWJvYXJkRXZlbnRQYXJhbXMpID0+IHRoaXMuc3VwcHJlc3NUYWIoa2V5cHJlc3MpXG4gICAgICB9LFxuICAgICAgZG9tTGF5b3V0OiAnYXV0b0hlaWdodCcsXG4gICAgICBlbnRlck1vdmVzRG93bkFmdGVyRWRpdDogdHJ1ZSxcbiAgICAgIGZyYW1ld29ya0NvbXBvbmVudHM6IHtcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3knOiBTa3lBZ0dyaWRDZWxsUmVuZGVyZXJDdXJyZW5jeUNvbXBvbmVudCxcbiAgICAgICAgJ3NreS1hZy1ncmlkLWNlbGwtcmVuZGVyZXItY3VycmVuY3ktdmFsaWRhdG9yJzogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyQ3VycmVuY3lWYWxpZGF0b3JDb21wb25lbnQsXG4gICAgICAgICdza3ktYWctZ3JpZC1jZWxsLXJlbmRlcmVyLXZhbGlkYXRvci10b29sdGlwJzogU2t5QWdHcmlkQ2VsbFJlbmRlcmVyVmFsaWRhdG9yVG9vbHRpcENvbXBvbmVudFxuICAgICAgfSxcbiAgICAgIGdldFJvd05vZGVJZChkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoJ2lkJyBpbiBkYXRhICYmIGRhdGEuaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBgJHtkYXRhLmlkfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3Jvd05vZGVJZC0tfWA7XG4gICAgICB9LFxuICAgICAgZ2V0Um93Q2xhc3M6IChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocGFyYW1zLm5vZGUuaWQpIHtcbiAgICAgICAgICByZXR1cm4gYHNreS1hZy1ncmlkLXJvdy0ke3BhcmFtcy5ub2RlLmlkfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGhlYWRlckhlaWdodDogdGhpcy5jdXJyZW50VGhlbWU/LnRoZW1lPy5uYW1lID09PSAnbW9kZXJuJyA/IDYwIDogMzcsXG4gICAgICBpY29uczoge1xuICAgICAgICBzb3J0RGVzY2VuZGluZzogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2NhcmV0LWRvd24nKSxcbiAgICAgICAgc29ydEFzY2VuZGluZzogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2NhcmV0LXVwJyksXG4gICAgICAgIGNvbHVtbk1vdmVNb3ZlOiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJyksXG4gICAgICAgIGNvbHVtbk1vdmVIaWRlOiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJyksXG4gICAgICAgIGNvbHVtbk1vdmVMZWZ0OiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJyksXG4gICAgICAgIGNvbHVtbk1vdmVSaWdodDogdGhpcy5nZXRJY29uVGVtcGxhdGUoJ2Fycm93cycpLFxuICAgICAgICBjb2x1bW5Nb3ZlUGluOiB0aGlzLmdldEljb25UZW1wbGF0ZSgnYXJyb3dzJylcbiAgICAgIH0sXG4gICAgICBvbkNlbGxGb2N1c2VkOiAoKSA9PiB0aGlzLm9uQ2VsbEZvY3VzZWQoKSxcbiAgICAgIHJvd0hlaWdodDogdGhpcy5jdXJyZW50VGhlbWU/LnRoZW1lPy5uYW1lID09PSAnbW9kZXJuJyA/IDYwIDogMzgsXG4gICAgICByb3dNdWx0aVNlbGVjdFdpdGhDbGljazogdHJ1ZSxcbiAgICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcbiAgICAgIHNpbmdsZUNsaWNrRWRpdDogdHJ1ZSxcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbnVsbC1rZXl3b3JkXG4gICAgICBzb3J0aW5nT3JkZXI6IFsnZGVzYycsICdhc2MnLCBudWxsXSxcbiAgICAgIHN0b3BFZGl0aW5nV2hlbkdyaWRMb3Nlc0ZvY3VzOiBmYWxzZSxcbiAgICAgIHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IHRydWUsXG4gICAgICBzdXBwcmVzc0RyYWdMZWF2ZUhpZGVzQ29sdW1uczogdHJ1ZVxuICAgIH07XG5cbiAgICBkZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuQ3VycmVuY3lWYWxpZGF0b3JdID0ge1xuICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLkN1cnJlbmN5XSxcbiAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgICBza3lDb21wb25lbnRQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgdmFsaWRhdG9yOiAodmFsdWU6IGFueSwgZGF0YTogYW55LCByb3dJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gISFgJHt2YWx1ZSB8fCAnJ31gLm1hdGNoKC9eW14wLTldKihcXGQrWywuXT8pK1xcZCpbXjAtOV0qJC8pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdG9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGN1cnJlbmN5J1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICBpZiAodGhpcy5yZXNvdXJjZXMpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzLmdldFN0cmluZygnc2t5X2FnX2dyaWRfY2VsbF9yZW5kZXJlcl9jdXJyZW5jeV92YWxpZGF0b3JfbWVzc2FnZScpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLkN1cnJlbmN5VmFsaWRhdG9yXS5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcy52YWxpZGF0b3JNZXNzYWdlID0gdmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuTnVtYmVyVmFsaWRhdG9yXSA9IHtcbiAgICAgIC4uLmRlZmF1bHRTa3lHcmlkT3B0aW9ucy5jb2x1bW5UeXBlc1tTa3lDZWxsVHlwZS5WYWxpZGF0b3JdLFxuICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlcl0sXG4gICAgICBjZWxsQ2xhc3NSdWxlczoge1xuICAgICAgICAuLi5kZWZhdWx0U2t5R3JpZE9wdGlvbnMuY29sdW1uVHlwZXNbU2t5Q2VsbFR5cGUuVmFsaWRhdG9yXS5jZWxsQ2xhc3NSdWxlcyxcbiAgICAgICAgLi4uZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlcl0uY2VsbENsYXNzUnVsZXNcbiAgICAgIH0sXG4gICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgICAgc2t5Q29tcG9uZW50UHJvcGVydGllczoge1xuICAgICAgICAgIHZhbGlkYXRvcjogKHZhbHVlOiBhbnksIGRhdGE6IGFueSwgcm93SW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICEhdmFsdWUgJiYgIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZhbGlkYXRvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBudW1iZXInXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgIGlmICh0aGlzLnJlc291cmNlcykge1xuICAgICAgdGhpcy5yZXNvdXJjZXMuZ2V0U3RyaW5nKCdza3lfYWdfZ3JpZF9jZWxsX3JlbmRlcmVyX251bWJlcl92YWxpZGF0b3JfbWVzc2FnZScpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgZGVmYXVsdFNreUdyaWRPcHRpb25zLmNvbHVtblR5cGVzW1NreUNlbGxUeXBlLk51bWJlclZhbGlkYXRvcl0uY2VsbFJlbmRlcmVyUGFyYW1zLnNreUNvbXBvbmVudFByb3BlcnRpZXMudmFsaWRhdG9yTWVzc2FnZSA9IHZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRTa3lHcmlkT3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgb25DZWxsRm9jdXNlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RWxlbWVudCA9IHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNlZEVsZW1lbnQoKTtcblxuICAgIHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZm9jdXNPbkZvY3VzYWJsZUNoaWxkcmVuKGN1cnJlbnRFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEVkaXRhYmxlR3JpZE9wdGlvbnMoYXJnczogU2t5R2V0R3JpZE9wdGlvbnNBcmdzKTogR3JpZE9wdGlvbnMge1xuICAgIGxldCBkZWZhdWx0R3JpZE9wdGlvbnMgPSB0aGlzLmdldERlZmF1bHRHcmlkT3B0aW9ucyhhcmdzKTtcblxuICAgIGRlZmF1bHRHcmlkT3B0aW9ucy5yb3dTZWxlY3Rpb24gPSAnbm9uZSc7XG5cbiAgICByZXR1cm4gZGVmYXVsdEdyaWRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRlRm9ybWF0dGVyKHBhcmFtczogVmFsdWVGb3JtYXR0ZXJQYXJhbXMsIGxvY2FsZTogc3RyaW5nID0gJ2VuLXVzJyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZGF0ZUNvbmZpZyA9IHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJzItZGlnaXQnLCBkYXk6ICcyLWRpZ2l0JyB9O1xuICAgIGxldCBkYXRlOiBEYXRlID0gcGFyYW1zLnZhbHVlO1xuXG4gICAgaWYgKGRhdGUgJiYgdHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUocGFyYW1zLnZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSBkYXRlICYmIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nICYmIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgZGF0ZUNvbmZpZyk7XG5cbiAgICBpZiAoZGF0ZSAmJiBkYXRlLmdldFRpbWUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJY29uVGVtcGxhdGUoaWNvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGA8aSBjbGFzcz1cImZhIGZhLSR7aWNvbk5hbWV9XCI+PC9pPmA7XG4gIH1cblxuICBwcml2YXRlIHN1cHByZXNzVGFiKHBhcmFtczogU3VwcHJlc3NLZXlib2FyZEV2ZW50UGFyYW1zKTogYm9vbGVhbiB7XG4gICAgaWYgKHBhcmFtcy5ldmVudC5jb2RlID09PSAnVGFiJykge1xuICAgICAgaWYgKHBhcmFtcy5lZGl0aW5nKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRseUZvY3VzZWRFbCA9IHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0Rm9jdXNlZEVsZW1lbnQoKTtcbiAgICAgICAgLy8gaW5saW5lIGNlbGwgZWRpdG9ycyBoYXZlIHRoZSAnYWctY2VsbCcgY2xhc3MsIHdoaWxlIHBvcHVwIGVkaXRvcnMgaGF2ZSB0aGUgJ2FnLXBvcHVwLWVkaXRvcicgY2xhc3NcbiAgICAgICAgY29uc3QgY2VsbEVsID0gdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRFbGVtZW50T3JQYXJlbnRXaXRoQ2xhc3MoY3VycmVudGx5Rm9jdXNlZEVsLCAnYWctY2VsbCcpO1xuICAgICAgICBjb25zdCBwb3B1cEVsID0gdGhpcy5hZ0dyaWRBZGFwdGVyU2VydmljZS5nZXRFbGVtZW50T3JQYXJlbnRXaXRoQ2xhc3MoY3VycmVudGx5Rm9jdXNlZEVsLCAnYWctcG9wdXAtZWRpdG9yJyk7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsID0gY2VsbEVsIHx8IHBvcHVwRWw7XG5cbiAgICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGwgPVxuICAgICAgICAgIHRoaXMuYWdHcmlkQWRhcHRlclNlcnZpY2UuZ2V0TmV4dEZvY3VzYWJsZUVsZW1lbnQoY3VycmVudGx5Rm9jdXNlZEVsLCBwYXJlbnRFbCwgcGFyYW1zLmV2ZW50LnNoaWZ0S2V5KTtcbiAgICAgICAgcmV0dXJuICEhbmV4dEZvY3VzYWJsZUVsZW1lbnRJbkNlbGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -48,7 +48,7 @@ var SkyAgGridCellValidatorTooltipComponent = /** @class */ (function () {
48
48
  var _this = this;
49
49
  this.zone.run(function () {
50
50
  _this.indicatorShouldShow = false;
51
- _this.changeDetector.markForCheck();
51
+ _this.changeDetector.detectChanges();
52
52
  });
53
53
  };
54
54
  SkyAgGridCellValidatorTooltipComponent.prototype.hidePopover = function () {
@@ -58,7 +58,7 @@ var SkyAgGridCellValidatorTooltipComponent = /** @class */ (function () {
58
58
  var _this = this;
59
59
  this.zone.run(function () {
60
60
  _this.indicatorShouldShow = true;
61
- _this.changeDetector.markForCheck();
61
+ _this.changeDetector.detectChanges();
62
62
  });
63
63
  };
64
64
  SkyAgGridCellValidatorTooltipComponent.prototype.showPopover = function () {
@@ -82,4 +82,4 @@ var SkyAgGridCellValidatorTooltipComponent = /** @class */ (function () {
82
82
  return SkyAgGridCellValidatorTooltipComponent;
83
83
  }());
84
84
  export { SkyAgGridCellValidatorTooltipComponent };
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1jZWxsLXZhbGlkYXRvci10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9hZy1ncmlkLyIsInNvdXJjZXMiOlsibW9kdWxlcy9hZy1ncmlkL2NlbGwtdmFsaWRhdG9yL2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CO0lBNkNFLGdEQUNVLGNBQWlDLEVBQ2pDLElBQVk7UUFEWixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVJmLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztJQVEzRCxDQUFDO0lBOUNMLHNCQUFXLDBEQUFNO2FBQWpCLFVBQWtCLEtBQXFDO1lBRHZELGlCQW9DQzs7WUFsQ0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUVoQyx3QkFBd0I7WUFDeEIsTUFBQSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRywwQ0FBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsVUFBQyxXQUE2QjtnQkFDckcsaUlBQWlJO2dCQUNqSSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQzdFLFdBQVcsQ0FBQyxRQUFRLEtBQUssS0FBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtvQkFDM0QsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUNwQjtZQUNILENBQUMsRUFBRTtZQUVILHdCQUF3QjtZQUN4QixNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLDBDQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxVQUFDLEtBQUs7Z0JBQ2pFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMzRSxLQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxFQUFFO1lBRUgsd0JBQXdCO1lBQ3hCLE1BQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsMENBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFO2dCQUMvRSxLQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQyxFQUFFO1lBRUgsSUFBSSxjQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsMENBQUUsZ0JBQWdCLENBQUEsS0FBSyxVQUFVLEVBQUU7Z0JBQzFGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQ3JGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQ2pDLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZ0JBQWdCLFNBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQiwwQ0FBRSxnQkFBZ0IsQ0FBQzthQUMxRjtZQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsQ0FBQzs7O09BQUE7SUFhTSw4REFBYSxHQUFwQjtRQUFBLGlCQUtDO1FBSkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDWixLQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLEtBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sNERBQVcsR0FBbEI7UUFDRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLDhEQUFhLEdBQXBCO1FBQUEsaUJBS0M7UUFKQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNaLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsS0FBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSw0REFBVyxHQUFsQjtRQUNFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDOztnQkF4QnlCLGlCQUFpQjtnQkFDM0IsTUFBTTs7SUE3Q3RCO1FBREMsS0FBSyxFQUFFO3dFQW9DUDtJQXJDVSxzQ0FBc0M7UUFObEQsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG9DQUFvQztZQUU5QywwaEJBQTREO1lBQzVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO09BQ1csc0NBQXNDLENBdUVsRDtJQUFELDZDQUFDO0NBQUEsQUF2RUQsSUF1RUM7U0F2RVksc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreVBvcG92ZXJNZXNzYWdlLCBTa3lQb3BvdmVyTWVzc2FnZVR5cGUgfSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuaW1wb3J0IHsgQ2VsbEZvY3VzZWRFdmVudCwgRXZlbnRzIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2t5Q2VsbFJlbmRlcmVyVmFsaWRhdG9yUGFyYW1zIH0gZnJvbSAnLi4vdHlwZXMvY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItcGFyYW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWFnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcCcsXG4gIHN0eWxlVXJsczogWydhZy1ncmlkLWNlbGwtdmFsaWRhdG9yLXRvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdhZy1ncmlkLWNlbGwtdmFsaWRhdG9yLXRvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWRDZWxsVmFsaWRhdG9yVG9vbHRpcENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFyYW1zKHZhbHVlOiBTa3lDZWxsUmVuZGVyZXJWYWxpZGF0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcyA9IHZhbHVlO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuYXBpPy5hZGRFdmVudExpc3RlbmVyKEV2ZW50cy5FVkVOVF9DRUxMX0ZPQ1VTRUQsIChldmVudFBhcmFtczogQ2VsbEZvY3VzZWRFdmVudCkgPT4ge1xuICAgICAgLy8gV2Ugd2FudCB0byBjbG9zZSBhbnkgcG9wb3ZlcnMgdGhhdCBhcmUgb3BlbmVkIHdoZW4gb3RoZXIgY2VsbHMgYXJlIGZvY3VzZWQsIGJ1dCBvcGVuIGEgcG9wb3ZlciBpZiB0aGUgY3VycmVudCBjZWxsIGlzIGZvY3VzZWQuXG4gICAgICBpZiAoZXZlbnRQYXJhbXMuY29sdW1uLmdldENvbElkKCkgIT09IHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLmNvbHVtbi5nZXRDb2xJZCgpIHx8XG4gICAgICAgIGV2ZW50UGFyYW1zLnJvd0luZGV4ICE9PSB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5yb3dJbmRleCkge1xuICAgICAgICB0aGlzLmhpZGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5lR3JpZENlbGw/LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnLCAnQXJyb3dVcCddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgdGhpcy5zaG93UG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuYXBpPy5hZGRFdmVudExpc3RlbmVyKEV2ZW50cy5FVkVOVF9DRUxMX0VESVRJTkdfU1RBUlRFRCwgKCkgPT4ge1xuICAgICAgdGhpcy5oaWRlUG9wb3ZlcigpO1xuICAgIH0pO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzPy52YWxpZGF0b3JNZXNzYWdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzLnZhbGlkYXRvck1lc3NhZ2UoXG4gICAgICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnZhbHVlLFxuICAgICAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5kYXRhLFxuICAgICAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5yb3dJbmRleFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZGF0b3JNZXNzYWdlID0gdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcz8udmFsaWRhdG9yTWVzc2FnZTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGluZGljYXRvclNob3VsZFNob3cgPSB0cnVlO1xuICBwdWJsaWMgcG9wb3Zlck1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lQb3BvdmVyTWVzc2FnZT4oKTtcbiAgcHVibGljIHZhbGlkYXRvck1lc3NhZ2U6IHN0cmluZztcblxuICBwdWJsaWMgY2VsbFJlbmRlcmVyUGFyYW1zOiBTa3lDZWxsUmVuZGVyZXJWYWxpZGF0b3JQYXJhbXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7IH1cblxuICBwdWJsaWMgaGlkZUluZGljYXRvcigpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdG9yU2hvdWxkU2hvdyA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlUG9wb3ZlcigpOiB2b2lkIHtcbiAgICB0aGlzLnBvcG92ZXJNZXNzYWdlU3RyZWFtLm5leHQoeyB0eXBlOiBTa3lQb3BvdmVyTWVzc2FnZVR5cGUuQ2xvc2UgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0luZGljYXRvcigpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdG9yU2hvdWxkU2hvdyA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dQb3BvdmVyKCk6IHZvaWQge1xuICAgIHRoaXMucG9wb3Zlck1lc3NhZ2VTdHJlYW0ubmV4dCh7IHR5cGU6IFNreVBvcG92ZXJNZXNzYWdlVHlwZS5PcGVuIH0pO1xuICB9XG59XG4iXX0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWctZ3JpZC1jZWxsLXZhbGlkYXRvci10b29sdGlwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9hZy1ncmlkLyIsInNvdXJjZXMiOlsibW9kdWxlcy9hZy1ncmlkL2NlbGwtdmFsaWRhdG9yL2FnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUy9CO0lBNkNFLGdEQUNVLGNBQWlDLEVBQ2pDLElBQVk7UUFEWixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBUTtRQVJmLHdCQUFtQixHQUFHLElBQUksQ0FBQztRQUMzQix5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztJQVEzRCxDQUFDO0lBOUNMLHNCQUFXLDBEQUFNO2FBQWpCLFVBQWtCLEtBQXFDO1lBRHZELGlCQW9DQzs7WUFsQ0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUVoQyx3QkFBd0I7WUFDeEIsTUFBQSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRywwQ0FBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsVUFBQyxXQUE2QjtnQkFDckcsaUlBQWlJO2dCQUNqSSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQzdFLFdBQVcsQ0FBQyxRQUFRLEtBQUssS0FBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRTtvQkFDM0QsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2lCQUNwQjtZQUNILENBQUMsRUFBRTtZQUVILHdCQUF3QjtZQUN4QixNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLDBDQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxVQUFDLEtBQUs7Z0JBQ2pFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMzRSxLQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7aUJBQ3BCO1lBQ0gsQ0FBQyxFQUFFO1lBRUgsd0JBQXdCO1lBQ3hCLE1BQUEsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsMENBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLDBCQUEwQixFQUFFO2dCQUMvRSxLQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQyxFQUFFO1lBRUgsSUFBSSxjQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsMENBQUUsZ0JBQWdCLENBQUEsS0FBSyxVQUFVLEVBQUU7Z0JBQzFGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQ3JGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQ2pDLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsZ0JBQWdCLFNBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQiwwQ0FBRSxnQkFBZ0IsQ0FBQzthQUMxRjtZQUVELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsQ0FBQzs7O09BQUE7SUFhTSw4REFBYSxHQUFwQjtRQUFBLGlCQUtDO1FBSkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDWixLQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO1lBQ2pDLEtBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sNERBQVcsR0FBbEI7UUFDRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLDhEQUFhLEdBQXBCO1FBQUEsaUJBS0M7UUFKQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNaLEtBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsS0FBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSw0REFBVyxHQUFsQjtRQUNFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDOztnQkF4QnlCLGlCQUFpQjtnQkFDM0IsTUFBTTs7SUE3Q3RCO1FBREMsS0FBSyxFQUFFO3dFQW9DUDtJQXJDVSxzQ0FBc0M7UUFObEQsU0FBUyxDQUFDO1lBQ1QsUUFBUSxFQUFFLG9DQUFvQztZQUU5QywwaEJBQTREO1lBQzVELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztTQUNoRCxDQUFDO09BQ1csc0NBQXNDLENBdUVsRDtJQUFELDZDQUFDO0NBQUEsQUF2RUQsSUF1RUM7U0F2RVksc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreVBvcG92ZXJNZXNzYWdlLCBTa3lQb3BvdmVyTWVzc2FnZVR5cGUgfSBmcm9tICdAc2t5dXgvcG9wb3ZlcnMnO1xuaW1wb3J0IHsgQ2VsbEZvY3VzZWRFdmVudCwgRXZlbnRzIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2t5Q2VsbFJlbmRlcmVyVmFsaWRhdG9yUGFyYW1zIH0gZnJvbSAnLi4vdHlwZXMvY2VsbC1yZW5kZXJlci12YWxpZGF0b3ItcGFyYW1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWFnLWdyaWQtY2VsbC12YWxpZGF0b3ItdG9vbHRpcCcsXG4gIHN0eWxlVXJsczogWydhZy1ncmlkLWNlbGwtdmFsaWRhdG9yLXRvb2x0aXAuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICdhZy1ncmlkLWNlbGwtdmFsaWRhdG9yLXRvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBZ0dyaWRDZWxsVmFsaWRhdG9yVG9vbHRpcENvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcGFyYW1zKHZhbHVlOiBTa3lDZWxsUmVuZGVyZXJWYWxpZGF0b3JQYXJhbXMpIHtcbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcyA9IHZhbHVlO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuYXBpPy5hZGRFdmVudExpc3RlbmVyKEV2ZW50cy5FVkVOVF9DRUxMX0ZPQ1VTRUQsIChldmVudFBhcmFtczogQ2VsbEZvY3VzZWRFdmVudCkgPT4ge1xuICAgICAgLy8gV2Ugd2FudCB0byBjbG9zZSBhbnkgcG9wb3ZlcnMgdGhhdCBhcmUgb3BlbmVkIHdoZW4gb3RoZXIgY2VsbHMgYXJlIGZvY3VzZWQsIGJ1dCBvcGVuIGEgcG9wb3ZlciBpZiB0aGUgY3VycmVudCBjZWxsIGlzIGZvY3VzZWQuXG4gICAgICBpZiAoZXZlbnRQYXJhbXMuY29sdW1uLmdldENvbElkKCkgIT09IHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLmNvbHVtbi5nZXRDb2xJZCgpIHx8XG4gICAgICAgIGV2ZW50UGFyYW1zLnJvd0luZGV4ICE9PSB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5yb3dJbmRleCkge1xuICAgICAgICB0aGlzLmhpZGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5lR3JpZENlbGw/LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoWydBcnJvd0Rvd24nLCAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnLCAnQXJyb3dVcCddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgICAgdGhpcy5zaG93UG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgbmV4dCovXG4gICAgdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuYXBpPy5hZGRFdmVudExpc3RlbmVyKEV2ZW50cy5FVkVOVF9DRUxMX0VESVRJTkdfU1RBUlRFRCwgKCkgPT4ge1xuICAgICAgdGhpcy5oaWRlUG9wb3ZlcigpO1xuICAgIH0pO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzPy52YWxpZGF0b3JNZXNzYWdlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLnZhbGlkYXRvck1lc3NhZ2UgPSB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5za3lDb21wb25lbnRQcm9wZXJ0aWVzLnZhbGlkYXRvck1lc3NhZ2UoXG4gICAgICAgIHRoaXMuY2VsbFJlbmRlcmVyUGFyYW1zLnZhbHVlLFxuICAgICAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5kYXRhLFxuICAgICAgICB0aGlzLmNlbGxSZW5kZXJlclBhcmFtcy5yb3dJbmRleFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZGF0b3JNZXNzYWdlID0gdGhpcy5jZWxsUmVuZGVyZXJQYXJhbXMuc2t5Q29tcG9uZW50UHJvcGVydGllcz8udmFsaWRhdG9yTWVzc2FnZTtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGluZGljYXRvclNob3VsZFNob3cgPSB0cnVlO1xuICBwdWJsaWMgcG9wb3Zlck1lc3NhZ2VTdHJlYW0gPSBuZXcgU3ViamVjdDxTa3lQb3BvdmVyTWVzc2FnZT4oKTtcbiAgcHVibGljIHZhbGlkYXRvck1lc3NhZ2U6IHN0cmluZztcblxuICBwdWJsaWMgY2VsbFJlbmRlcmVyUGFyYW1zOiBTa3lDZWxsUmVuZGVyZXJWYWxpZGF0b3JQYXJhbXM7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7IH1cblxuICBwdWJsaWMgaGlkZUluZGljYXRvcigpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW5kaWNhdG9yU2hvdWxkU2hvdyA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGlkZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyTWVzc2FnZVN0cmVhbS5uZXh0KHsgdHlwZTogU2t5UG9wb3Zlck1lc3NhZ2VUeXBlLkNsb3NlIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmluZGljYXRvclNob3VsZFNob3cgPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2hvd1BvcG92ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5wb3BvdmVyTWVzc2FnZVN0cmVhbS5uZXh0KHsgdHlwZTogU2t5UG9wb3Zlck1lc3NhZ2VUeXBlLk9wZW4gfSk7XG4gIH1cbn1cbiJdfQ==