@datorama/core 22.11.1 → 22.12.0

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.
@@ -30,6 +30,9 @@ let DatoTriggerSingle = class DatoTriggerSingle {
30
30
  get getLabel() {
31
31
  return this._model && this._model.$implicit && this._model.$implicit[this.labelKey];
32
32
  }
33
+ triggerChangeDetection() {
34
+ this.cdr.detectChanges();
35
+ }
33
36
  };
34
37
  DatoTriggerSingle.ctorParameters = () => [
35
38
  { type: ChangeDetectorRef }
@@ -66,4 +69,4 @@ DatoTriggerSingle = __decorate([
66
69
  __metadata("design:paramtypes", [ChangeDetectorRef])
67
70
  ], DatoTriggerSingle);
68
71
  export { DatoTriggerSingle };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1zaW5nbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvc2VsZWN0L3RyaWdnZXItc2luZ2xlL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7O0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVF2RSxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQTJCNUIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFIMUMsaUJBQVksR0FBRyxFQUFFLENBQUM7SUFHMkIsQ0FBQztJQXBCOUMsSUFBSSxXQUFXLENBQUMsS0FBSztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFLRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNoRCxDQUFDO0lBT0QsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEYsQ0FBQztDQUNGLENBQUE7O1lBVDBCLGlCQUFpQjs7QUF6QjFDO0lBREMsS0FBSyxFQUFFOzhCQUNTLFdBQVc7MERBQU07QUFFekI7SUFBUixLQUFLLEVBQUU7OEJBQVMseUJBQXlCO2lEQUFDO0FBRzNDO0lBREMsS0FBSyxFQUFFOzs7b0RBSVA7QUFFUTtJQUFSLEtBQUssRUFBRTs7bURBQWtCO0FBRzFCO0lBREMsS0FBSyxFQUFFOzs7Z0RBSVA7QUFsQlUsaUJBQWlCO0lBTjdCLFNBQVMsQ0FBQztRQUNULFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsNmhCQUE4QztRQUM5QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FFaEQsQ0FBQztxQ0E0QnlCLGlCQUFpQjtHQTNCL0IsaUJBQWlCLENBb0M3QjtTQXBDWSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgRGF0b3JhbWEuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gQXBhY2hlIExpY2Vuc2UgMi4wIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL2RhdG9yYW1hL2NsaWVudC1jb3JlL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi9zZWxlY3QtYWN0aXZlLmRpcmVjdGl2ZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RhdG8tdHJpZ2dlci1zaW5nbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJpZ2dlci1zaW5nbGUuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3R5bGVVcmxzOiBbYC4vdHJpZ2dlci1zaW5nbGUuY29tcG9uZW50LnNjc3NgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRvVHJpZ2dlclNpbmdsZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGxvYWRpbmdUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBhY3RpdmU6IERhdG9TZWxlY3RBY3RpdmVEaXJlY3RpdmU7XG5cbiAgQElucHV0KClcbiAgc2V0IHBsYWNlaG9sZGVyKHZhbHVlKSB7XG4gICAgdGhpcy5fcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBASW5wdXQoKSBsYWJlbEtleTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBjb250ZXh0KHZhbHVlKSB7XG4gICAgdGhpcy5fbW9kZWwgPSB7ICRpbXBsaWNpdDogdmFsdWUgfTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXQgaGlkZVBsYWNlaG9sZGVyKCkge1xuICAgIHJldHVybiAhdGhpcy5fbW9kZWwgfHwgIXRoaXMuX21vZGVsLiRpbXBsaWNpdDtcbiAgfVxuXG4gIF9wbGFjZWhvbGRlciA9ICcnO1xuICBfbW9kZWw6IHsgJGltcGxpY2l0PzogYW55IH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY2RyLmRldGFjaCgpO1xuICB9XG5cbiAgZ2V0IGdldExhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbCAmJiB0aGlzLl9tb2RlbC4kaW1wbGljaXQgJiYgdGhpcy5fbW9kZWwuJGltcGxpY2l0W3RoaXMubGFiZWxLZXldO1xuICB9XG59XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1zaW5nbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGRhdG9yYW1hL2NvcmUvIiwic291cmNlcyI6WyJsaWIvc2VsZWN0L3RyaWdnZXItc2luZ2xlL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7O0FBRUgsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQVF2RSxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQTJCNUIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFIMUMsaUJBQVksR0FBRyxFQUFFLENBQUM7SUFHMkIsQ0FBQztJQXBCOUMsSUFBSSxXQUFXLENBQUMsS0FBSztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFLRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUNoRCxDQUFDO0lBT0QsUUFBUTtRQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRixDQUFBOztZQWIwQixpQkFBaUI7O0FBekIxQztJQURDLEtBQUssRUFBRTs4QkFDUyxXQUFXOzBEQUFNO0FBRXpCO0lBQVIsS0FBSyxFQUFFOzhCQUFTLHlCQUF5QjtpREFBQztBQUczQztJQURDLEtBQUssRUFBRTs7O29EQUlQO0FBRVE7SUFBUixLQUFLLEVBQUU7O21EQUFrQjtBQUcxQjtJQURDLEtBQUssRUFBRTs7O2dEQUlQO0FBbEJVLGlCQUFpQjtJQU43QixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUscUJBQXFCO1FBQy9CLDZoQkFBOEM7UUFDOUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O0tBRWhELENBQUM7cUNBNEJ5QixpQkFBaUI7R0EzQi9CLGlCQUFpQixDQXdDN0I7U0F4Q1ksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IERhdG9yYW1hLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIEFwYWNoZSBMaWNlbnNlIDIuMCBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRvcmFtYS9jbGllbnQtY29yZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vc2VsZWN0LWFjdGl2ZS5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkYXRvLXRyaWdnZXItc2luZ2xlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0eWxlVXJsczogW2AuL3RyaWdnZXItc2luZ2xlLmNvbXBvbmVudC5zY3NzYF1cbn0pXG5leHBvcnQgY2xhc3MgRGF0b1RyaWdnZXJTaW5nbGUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBsb2FkaW5nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KCkgYWN0aXZlOiBEYXRvU2VsZWN0QWN0aXZlRGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwbGFjZWhvbGRlcih2YWx1ZSkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQElucHV0KCkgbGFiZWxLZXk6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZXQgY29udGV4dCh2YWx1ZSkge1xuICAgIHRoaXMuX21vZGVsID0geyAkaW1wbGljaXQ6IHZhbHVlIH07XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IGhpZGVQbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gIXRoaXMuX21vZGVsIHx8ICF0aGlzLl9tb2RlbC4kaW1wbGljaXQ7XG4gIH1cblxuICBfcGxhY2Vob2xkZXIgPSAnJztcbiAgX21vZGVsOiB7ICRpbXBsaWNpdD86IGFueSB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNkci5kZXRhY2goKTtcbiAgfVxuXG4gIGdldCBnZXRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwgJiYgdGhpcy5fbW9kZWwuJGltcGxpY2l0ICYmIHRoaXMuX21vZGVsLiRpbXBsaWNpdFt0aGlzLmxhYmVsS2V5XTtcbiAgfVxuXG4gIHB1YmxpYyB0cmlnZ2VyQ2hhbmdlRGV0ZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
- window.coreVersion = '22.11.1';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuMTEuMSc7XG4iXX0=
1
+ window.coreVersion = '22.12.0';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUMsTUFBYyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIod2luZG93IGFzIGFueSkuY29yZVZlcnNpb24gPSAnMjIuMTIuMCc7XG4iXX0=
@@ -18,6 +18,8 @@ var GridQuery = /** @class */ (function (_super) {
18
18
  //@internal
19
19
  _this._serverDataLoaded = new Subject();
20
20
  _this.serverDataLoaded$ = _this._serverDataLoaded.asObservable();
21
+ _this._rowActionVisibilityChanged = new Subject();
22
+ _this.rowActionVisibilityChanged$ = _this._rowActionVisibilityChanged.asObservable();
21
23
  _this.rowDataChanged$ = _this.waitForGrid(function () {
22
24
  return merge(_this.gridRef.rowDataChanged, _this.gridRef.rowDataUpdated, _this.gridRef.filterChanged, _this.serverDataLoaded$);
23
25
  });
@@ -244,4 +246,4 @@ var GridQuery = /** @class */ (function (_super) {
244
246
  return GridQuery;
245
247
  }(Query));
246
248
  export { GridQuery };
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUM7SUFBK0IsNkJBQXFCO0lBNkNsRCxtQkFBc0IsS0FBZ0I7UUFBdEMsWUFDRSxrQkFBTSxLQUFLLENBQUMsU0FDYjtRQUZxQixXQUFLLEdBQUwsS0FBSyxDQUFXO1FBMUN0QyxXQUFXO1FBQ1gsZ0JBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxnQkFBVSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFdBQVc7UUFDWCx1QkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUM1RCx1QkFBaUIsR0FBRyxLQUFJ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Q0ErUXJCO0lBQUQsZ0JBQUM7Q0FBQSxBQS9RRCxDQUErQixLQUFLLEdBK1FuQztTQS9RWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBRdWVyeSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncywgR3JpZFN0b3JlU3RhdGUsIFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IENvbHVtbiwgRXZlbnRzLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRvR3JpZEFsaWdubWVudCxcbiAgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50LFxuICBEYXRvR3JpZE9wdGlvbnMsXG4gIERhdG9HcmlkU29ydCxcbiAgR3JpZFJvd3NTZWxlY3Rpb25EYXRhXG59IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyBnZXRDb2xGaWVsZCwgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkUXVlcnkgZXh0ZW5kcyBRdWVyeTxHcmlkU3RvcmVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBhcGk6IERhdG9HcmlkQXBpO1xuICBncmlkUmVmOiBBZ0dyaWROZzI7XG4gIC8vQGludGVybmFsXG4gIF9ncmlkUmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgZ3JpZFJlYWR5JCA9IHRoaXMuX2dyaWRSZWFkeS5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcihyZWFkeSA9PiByZWFkeSkpO1xuICAvL0BpbnRlcm5hbFxuICBfc2VydmVyRGF0YUxvYWRlZCA9IG5ldyBTdWJqZWN0PERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudD4oKTtcbiAgc2VydmVyRGF0YUxvYWRlZCQgPSB0aGlzLl9zZXJ2ZXJEYXRhTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICByb3dEYXRhQ2hhbmdlZCQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMud2FpdEZvckdyaWQoKCkgPT5cbiAgICBtZXJnZSh0aGlzLmdyaWRSZWYucm93RGF0YUNoYW5nZWQsIHRoaXMuZ3JpZFJlZi5yb3dEYXRhVXBkYXRlZCwgdGhpcy5ncmlkUmVmLmZpbHRlckNoYW5nZWQsIHRoaXMuc2VydmVyRGF0YUxvYWRlZCQpXG4gICk7XG4gIHNlbGVjdGVkUm93c0NoYW5nZSQgPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+XG4gICAgZnJvbUV2ZW50KHRoaXMuYXBpLmdyaWQsIEV2ZW50cy5FVkVOVF9TRUxFQ1RJT05fQ0hBTkdFRCkucGlwZShtYXAoKHsgYXBpIH0pID0+IGFwaS5nZXRTZWxlY3RlZFJvd3MoKSkpXG4gICk7XG5cbiAgcm93c1NlbGVjdGlvbkRhdGEkOiBPYnNlcnZhYmxlPEdyaWRSb3dzU2VsZWN0aW9uRGF0YT4gPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+IHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICB0aGlzLnNlbGVjdGVkUm93c0NoYW5nZSQsXG4gICAgICB0aGlzLnJvd0RhdGFDaGFuZ2VkJCxcbiAgICAgIHRoaXMuc2VsZWN0U2VydmVyUGFnaW5hdGlvbkNvbmZpZygpLFxuICAgICAgdGhpcy53YWl0Rm9yR3JpZCgoKSA9PiBtZXJnZSh0aGlzLmdyaWRSZWYuc29ydENoYW5nZWQsIHRoaXMuZ3JpZFJlZi5wYWdpbmF0aW9uQ2hhbmdlZCkpXG4gICAgKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxSb3dzQ291bnQgPSB0aGlzLmlzU2VydmVyU2lkZVxuICAgICAgICAgID8gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLnRvdGFsUm93c1xuICAgICAgICAgIDogdGhpcy5hcGkuZ3JpZC5nZXREaXNwbGF5ZWRSb3dDb3VudCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFJvd3NDb3VudCA9IHRoaXMuZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50UGFnZVJvd3MgPSB0aGlzLmdldEN1cnJlbnRQYWdlUm93cygpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPSBzaXplKGN1cnJlbnRQYWdlUm93cy5maWx0ZXIoKG5vZGU6IFJvd05vZGUpID0+IG5vZGUuaXNTZWxlY3RlZCgpKSk7XG4gICAgICAgIGNvbnN0IGlzQWxsUGFnZVJvd3NTZWxlY3RlZCA9XG4gICAgICAgICAgKHNlbGVjdGVkUGFnZVJvd3NDb3VudCA+IDAgJiYgc2VsZWN0ZWRQYWdlUm93c0NvdW50ID09PSBzaXplKGN1cnJlbnRQYWdlUm93cykpIHx8XG4gICAgICAgICAgKHRoaXMuaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCAmJiBpc0VtcHR5KHRoaXMuc2VydmVyU2lkZUNvbmZpZy5leGNsdWRlZEZyb21TZWxlY3RBbGwpKTtcblxuICAgICAgICByZXR1cm4geyB0b3RhbFJvd3NDb3VudCwgc2VsZWN0ZWRSb3dzQ291bnQsIHNlbGVjdGVkUGFnZVJvd3NDb3VudCwgaXNBbGxQYWdlUm93c1NlbGVjdGVkIH07XG4gICAgICB9KVxuICAgICk7XG4gIH0pO1xuXG4gIGZpbHRlckFjdGl2ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncykucGlwZShcbiAgICBtYXAoKHsgZmlsdGVyLCBzZWFyY2hUZXJtIH06IERhdG9HcmlkU2V0dGluZ3MpID0+IHNpemUoZmlsdGVyKSA+IDAgfHwgISFzZWFyY2hUZXJtKVxuICApO1xuICBzZXJ2ZXJTaWRlRXJyb3IkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24uaGFzRXJyb3IpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzdG9yZTogR3JpZFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICB9XG5cbiAgZ2V0IHNlcnZlclNpZGVDb25maWcoKTogU2VydmVyU2lkZVBhZ2luYXRpb25Db25maWcge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2VydmVyU2lkZVBhZ2luYXRpb247XG4gIH1cblxuICBnZXQgaXNTZXJ2ZXJTaWRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBpc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZlclNpZGVDb25maWcuc2VsZWN0QWxsUm93c0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgZ3JpZEFsaWdubWVudCgpOiBEYXRvR3JpZEFsaWdubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5ncmlkQWxpZ25tZW50O1xuICB9XG5cbiAgZ2V0Q29sdW1uU2l6ZXMoKTogSGFzaE1hcDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmNvbHVtbnNTaXplcztcbiAgfVxuXG4gIGdldEN1cnJlbnRHcmlkU2V0dGluZ3MoKTogRGF0b0dyaWRTZXR0aW5ncyB7XG4gICAgY29uc3QgdG9Db2xJZCA9IGNvbHVtbiA9PiBjb2x1bW4uZ2V0Q29sSWQoKTtcbiAgICBjb25zdCB7IGNvbHVtbnMgfSA9IHRoaXMuYXBpO1xuICAgIGNvbnN0IGdyb3VwZWRDb2x1bW5zID0gY29sdW1ucy5nZXRSb3dHcm91cENvbHVtbnMoKTtcbiAgICBjb25zdCBjb2x1bW5zT3JkZXIgPSBjb2x1bW5zLmdldEFsbENvbHVtbnMoKTtcbiAgICBjb25zdCBhbGxHcmlkQ29sdW1ucyA9IGNvbHVtbnMuZ2V0QWxsR3JpZENvbHVtbnMoKTtcbiAgICBjb25zdCBoaWRkZW5Db2x1bW5zID0gY29sdW1uc09yZGVyXG4gICAgICAuZmlsdGVyKGNvbHVtbiA9PiAhY29sdW1uLmlzVmlzaWJsZSgpICYmICFncm91cGVkQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW4pKVxuICAgICAgLm1hcCh0b0NvbElkKTtcbiAgICBjb25zdCBzdG9yZVNldHRpbmdzID0gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzO1xuICAgIGNvbnN0IHNldHRpbmdzOiBEYXRvR3JpZFNldHRpbmdzID0ge1xuICAgICAgZ3JpZEFsaWdubWVudDogc3RvcmVTZXR0aW5ncy5ncmlkQWxpZ25tZW50LFxuICAgICAgc29ydDogdGhpcy5nZXRHcmlkT3B0aW9ucygpLnNvcnRCeVN0b3JlID8gdGhpcy5nZXRTYXZlZFNvcnQoKSA6IHRoaXMuZ2V0U29ydE1vZGVsKCksXG4gICAgICBoaWRkZW5Db2x1bW5zLFxuICAgICAgZ3JvdXBlZENvbHVtbnM6IGdyb3VwZWRDb2x1bW5zLm1hcCh0b0NvbElkKSxcbiAgICAgIGZpbHRlcjogdGhpcy5nZXRGaWx0ZXIoKSxcbiAgICAgIHBpbm5lZENvbHVtbnM6IGNvbHVtbnMuZ2V0RGlzcGxheWVkTGVmdENvbHVtbnMoKS5tYXAodG9Db2xJZCksXG4gICAgICBjb2x1bW5zT3JkZXI6IGFsbEdyaWRDb2x1bW5zLm1hcCh0b0NvbElkKSxcbiAgICAgIGNvbHVtbnNTaXplczogbnVsbCxcbiAgICAgIHNlYXJjaFRlcm06IG51bGxcbiAgICB9O1xuXG4gICAgaWYgKHN0b3JlU2V0dGluZ3MuZ3JpZEFsaWdubWVudCA9PT0gRGF0b0dyaWRBbGlnbm1lbnQuQ1VTVE9NKSB7XG4gICAgICBzZXR0aW5ncy5jb2x1bW5zU2l6ZXMgPSBnZXRDb2x1bW5zU2l6ZXMoYWxsR3JpZENvbHVtbnMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZXR0aW5ncztcbiAgfVxuXG4gIGdldFNvcnRNb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5hcGkuZ3JpZC5nZXRTb3J0TW9kZWwoKS5wb3AoKSBhcyBEYXRvR3JpZFNvcnQ7XG4gIH1cblxuICBnZXRTYXZlZFNvcnQoKTogRGF0b0dyaWRTb3J0IHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLnNvcnQgfHwgdGhpcy5nZXRTb3J0TW9kZWwoKTtcbiAgfVxuXG4gIGdldFNvcnQoc2F2ZWRTb3J0OiBEYXRvR3JpZFNvcnQgPSB0aGlzLmdldFNhdmVkU29ydCgpKTogRGF0b0dyaWRTb3J0IHtcbiAgICBpZiAoc2F2ZWRTb3J0KSB7XG4gICAgICBjb25zdCB7IGNvbElkLCBzb3J0LCBzb3J0SW5kZXggfSA9IHNhdmVkU29ydDtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuYXBpLmNvbHVtbnMuZ2V0Q29sdW1uKGNvbElkKTtcbiAgICAgIGNvbnN0IGFsbENvbHVtbnMgPSB0aGlzLmFwaS5jb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCk7XG5cbiAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSBnZXRDb2xGaWVsZChjb2x1bW4uZ2V0Q29sRGVmKCkpO1xuXG4gICAgICAgIHJldHVybiB7IGNvbElkLCBzb3J0LCBmaWVsZCB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc2Vjb25kYXJ5Q29sdW1uID0gdGhpcy5nZXRTZWNvbmRhcnlDb2x1bW4oY29sSWQpO1xuXG4gICAgICAgIGlmIChzZWNvbmRhcnlDb2x1bW4pIHtcbiAgICAgICAgICBjb25zdCBjb2x1bW5JbmRleCA9IHNvcnRJbmRleCB8fCBhbGxDb2x1bW5zLmluZGV4T2Yoc2Vjb25kYXJ5Q29sdW1uKTtcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IGdldENvbEZpZWxkKHNlY29uZGFyeUNvbHVtbi5nZXRDb2xEZWYoKSk7XG5cbiAgICAgICAgICByZXR1cm4geyBjb2xJZCwgc29ydCwgZmllbGQsIHNvcnRJbmRleDogY29sdW1uSW5kZXggfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGNvbElkOiBudWxsLCBzb3J0OiBudWxsIH07XG4gIH1cblxuICAvKiBAaW50ZXJuYWwgKi9cbiAgX3NldEFwaShhcGk6IERhdG9HcmlkQXBpLCBncmlkUmVmOiBBZ0dyaWROZzIpIHtcbiAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICB0aGlzLmdyaWRSZWYgPSBncmlkUmVmO1xuICB9XG5cbiAgLyoqIFJldHVybnMganVzdCB0aGUgcm93cyBkYXRhICovXG4gIGdldFNlbGVjdGVkUm93czxUPigpOiBUW107XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c6IHRydWUpOiBUIHwgdW5kZWZpbmVkO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93OiBmYWxzZSk6IFRbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdz86IGJvb2xlYW4pOiBUW10gfCBUIHtcbiAgICBjb25zdCByb3dzID0gdGhpcy5hcGkuZ3JpZC5nZXRTZWxlY3RlZFJvd3MoKTtcbiAgICByZXR1cm4gb25seUZpcnN0Um93ID8gcm93c1swXSA6IHJvd3M7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgZW50aXJlIHJvdyBub2RlICovXG4gIGdldFNlbGVjdGVkUm93Tm9kZXMoKTogUm93Tm9kZVtdO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdzogdHJ1ZSk6IFJvd05vZGUgfCB1bmRlZmluZWQ7XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93OiBmYWxzZSk6IFJvd05vZGVbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c/OiBib29sZWFuKTogUm93Tm9kZVtdIHwgUm93Tm9kZSB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYXBpLmdyaWQuZ2V0U2VsZWN0ZWROb2RlcygpO1xuICAgIHJldHVybiBvbmx5Rmlyc3RSb3cgPyByb3dzWzBdIDogcm93cztcbiAgfVxuXG4gIGdldEZpbHRlcigpOiBEYXRvR3JpZEZpbHRlcnNNYXAge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuZmlsdGVyO1xuICB9XG5cbiAgc2VsZWN0RmlsdGVyKCk6IE9ic2VydmFibGU8RGF0b0dyaWRGaWx0ZXJzTWFwPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNldHRpbmdzLmZpbHRlcik7XG4gIH1cblxuICBnZXRFeHRlcm5hbEZpbHRlcigpOiBEYXRvR3JpZEV4dGVybmFsRmlsdGVyW10ge1xuICAgIGNvbnN0IGdyaWRGaWx0ZXJzID0gdGhpcy5nZXRGaWx0ZXIoKTtcblxuICAgIGlmIChncmlkRmlsdGVycykge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGdyaWRGaWx0ZXJzKS5yZWR1Y2UoKGZpbHRlcnMsIGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IGdyaWRGaWx0ZXJzW2ZpZWxkXTtcblxuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgZmlsdGVycy5wdXNoKHsgZmllbGQsIGZpbHRlciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJzO1xuICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldFNlYXJjaFRlcm0oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLnNlYXJjaFRlcm07XG4gIH1cblxuICBzZWxlY3RTZWFyY2hUZXJtKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KChzdGF0ZTogR3JpZFN0b3JlU3RhdGUpID0+IHN0YXRlLnNldHRpbmdzLnNlYXJjaFRlcm0pO1xuICB9XG5cbiAgd2FpdEZvckdyaWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgd2FpdEZvckdyaWQ8VCA9IGFueT4oc291cmNlOiAoKSA9PiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPjtcbiAgd2FpdEZvckdyaWQ8VCA9IGFueT4oc291cmNlPzogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gc291cmNlID8gdGhpcy5ncmlkUmVhZHkkLnBpcGUoc3dpdGNoTWFwKHNvdXJjZSkpIDogdGhpcy5ncmlkUmVhZHkkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZ3JpZFJlYWR5LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc2VydmVyRGF0YUxvYWRlZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0R3JpZE9wdGlvbnMoKTogRGF0b0dyaWRPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkUmVmID8gKHRoaXMuZ3JpZFJlZi5ncmlkT3B0aW9ucyBhcyBEYXRvR3JpZE9wdGlvbnMpIDogbnVsbDtcbiAgfVxuXG4gIHNlbGVjdFNlcnZlclBhZ2luYXRpb25Db25maWcoKTogT2JzZXJ2YWJsZTxTZXJ2ZXJTaWRlUGFnaW5hdGlvbkNvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgoc3RhdGU6IEdyaWRTdG9yZVN0YXRlKSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbik7XG4gIH1cblxuICBnZXRTZWxlY3RlZFJvd3NDb3VudCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IHsgdG90YWxSb3dzLCBleGNsdWRlZEZyb21TZWxlY3RBbGwgfSA9IHRoaXMuc2VydmVyU2lkZUNvbmZpZztcbiAgICAgIHJldHVybiB0b3RhbFJvd3MgLSBzaXplKGV4Y2x1ZGVkRnJvbVNlbGVjdEFsbCk7XG4gICAgfVxuICAgIHJldHVybiBzaXplKHRoaXMuZ2V0U2VsZWN0ZWRSb3dzKCkpO1xuICB9XG5cbiAgZ2V0Q3VycmVudFBhZ2VSb3dzKCk6IFJvd05vZGVbXSB7XG4gICAgY29uc3QgcGFnZVJvd3M6IFJvd05vZGVbXSA9IFtdO1xuICAgIGNvbnN0IHB1c2hQYWdlUm93ID0gKG5vZGU6IFJvd05vZGUpID0+IHtcbiAgICAgIHBhZ2VSb3dzLnB1c2gobm9kZSk7XG4gICAgfTtcbiAgICBjb25zdCBncmlkID0gdGhpcy5hcGkuZ3JpZDtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IGdyaWQucGFnaW5hdGlvbkdldFBhZ2VTaXplKCk7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBncmlkLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpO1xuICAgIGNvbnN0IHRvdGFsUm93cyA9IGdyaWQucGFnaW5hdGlvbkdldFJvd0NvdW50KCk7XG4gICAgY29uc3QgZmlyc3RQYWdlSW5kZXggPSBjdXJyZW50UGFnZSAqIHBhZ2VTaXplO1xuICAgIGxldCBsYXN0UGFnZUluZGV4ID0gZmlyc3RQYWdlSW5kZXggKyBwYWdlU2l6ZTtcbiAgICBpZiAobGFzdFBhZ2VJbmRleCA+IHRvdGFsUm93cykge1xuICAgICAgbGFzdFBhZ2VJbmRleCA9IHRvdGFsUm93cztcbiAgICB9XG4gICAgY29uc3QgcGVyZm9ybUFjdGlvbiA9IChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5yb3dJbmRleCA8IGxhc3RQYWdlSW5kZXggJiYgbm9kZS5yb3dJbmRleCA+PSBmaXJzdFBhZ2VJbmRleCkge1xuICAgICAgICBwdXNoUGFnZVJvdyhub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuaXNTZXJ2ZXJTaWRlID8gZ3JpZC5mb3JFYWNoTm9kZShwZXJmb3JtQWN0aW9uKSA6IGdyaWQuZm9yRWFjaE5vZGVBZnRlckZpbHRlckFuZFNvcnQocGVyZm9ybUFjdGlvbik7XG4gICAgcmV0dXJuIHBhZ2VSb3dzO1xuICB9XG5cbiAgZ2V0QWxsQ29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4odGhpcy5hcGkuY29sdW1ucy5nZXRBbGxDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4odGhpcy5hcGkuY29sdW1ucy5nZXRBbGxEaXNwbGF5ZWRDb2x1bW5zKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGl2b3RDb2x1bW5zKCk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxDb2x1bW5zKCkuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uaXNQaXZvdEFjdGl2ZSgpKTtcbiAgfVxuXG4gIHNlbGVjdElzU2VsZWN0QWxsUm93c0VuYWJsZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uLnNlbGVjdEFsbFJvd3NFbmFibGVkKTtcbiAgfVxuXG4gIGdldFNlY29uZGFyeUNvbHVtbihjb2xJZDogc3RyaW5nKTogQ29sdW1uIHtcbiAgICAvKiogVXNlIGdldFBpdm90UmVzdWx0Q29sdW1ucyBmcm9tIHZlciAyOCAqL1xuICAgIGNvbnN0IHNlY29uZGFyeUNvbHVtbnMgPSB0aGlzLmFwaS5jb2x1bW5zLmdldFNlY29uZGFyeUNvbHVtbnMoKTtcblxuICAgIGlmIChzZWNvbmRhcnlDb2x1bW5zKSB7XG4gICAgICByZXR1cm4gc2Vjb25kYXJ5Q29sdW1ucy5maW5kKGNvbCA9PiBjb2wuZ2V0Q29sSWQoKSA9PT0gY29sSWQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJDaGVja2JveFNlbGVjdGlvbkNvbHVtbihjb2x1bW5zOiBDb2x1bW5bXSk6IENvbHVtbltdIHtcbiAgICByZXR1cm4gY29sdW1ucy5maWx0ZXIoXG4gICAgICAoY29sdW1uOiBDb2x1bW4pID0+ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkgfHwgIWNvbHVtbi5nZXRVc2VyUHJvdmlkZWRDb2xEZWYoKS5jaGVja2JveFNlbGVjdGlvblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BkYXRvcmFtYS9jb3JlLyIsInNvdXJjZXMiOlsibGliL2dyaWQtdjIvZ3JpZC1zdG9yZS9ncmlkLnF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQVUsTUFBTSxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFHNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUM7SUFBK0IsNkJBQXFCO0lBK0NsRCxtQkFBc0IsS0FBZ0I7UUFBdEMsWUFDRSxrQkFBTSxLQUFLLENBQUMsU0FDYjtRQUZxQixXQUFLLEdBQUwsS0FBSyxDQUFXO1FBNUN0QyxXQUFXO1FBQ1gsZ0JBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QyxnQkFBVSxHQUFHLEtBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFBLEtBQUssSUFBSSxPQUFBLEtBQUssRUFBTCxDQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLFdBQVc7UUFDWCx1QkFBaUIsR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztRQUM1RCx1QkFBaUIsR0FBRyxLQUFJ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QW9GLENBQ3pHLENBQUM7SUFDSixDQUFDOztnQkFqTzRCLFNBQVM7O0lBL0MzQixTQUFTO1FBRHJCLFVBQVUsRUFBRTt5Q0FnRGtCLFNBQVM7T0EvQzNCLFNBQVMsQ0FpUnJCO0lBQUQsZ0JBQUM7Q0FBQSxBQWpSRCxDQUErQixLQUFLLEdBaVJuQztTQWpSWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5LCBRdWVyeSB9IGZyb20gJ0BkYXRvcmFtYS9ha2l0YSc7XG5pbXBvcnQgeyBHcmlkU3RvcmUgfSBmcm9tICcuL2dyaWQuc3RvcmUnO1xuaW1wb3J0IHsgRGF0b0dyaWRTZXR0aW5ncywgR3JpZFN0b3JlU3RhdGUsIFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIH0gZnJvbSAnLi9ncmlkLnN0b3JlLnR5cGVzJztcbmltcG9ydCB7IENvbHVtbiwgRXZlbnRzLCBSb3dOb2RlIH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgRGF0b0dyaWRBcGkgfSBmcm9tICcuLi9ncmlkLWNvbnRyb2xsZXIvZ3JpZC1jb250cm9sbGVyLnR5cGVzJztcbmltcG9ydCB7IEFnR3JpZE5nMiB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRvR3JpZEFsaWdubWVudCxcbiAgRGF0b0dyaWREYXRhQ2hhbmdlZEV2ZW50LFxuICBEYXRvR3JpZE9wdGlvbnMsXG4gIERhdG9HcmlkU29ydCxcbiAgR3JpZFJvd3NTZWxlY3Rpb25EYXRhXG59IGZyb20gJy4uL2dyaWQvZ3JpZC12Mi50eXBlcyc7XG5pbXBvcnQgeyBEYXRvR3JpZEV4dGVybmFsRmlsdGVyLCBEYXRvR3JpZEZpbHRlcnNNYXAgfSBmcm9tICcuLi9ncmlkLWZpbHRlci9ncmlkLWZpbHRlci50eXBlcyc7XG5pbXBvcnQgeyBnZXRDb2xGaWVsZCwgZ2V0Q29sdW1uc1NpemVzIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IEhhc2hNYXAgfSBmcm9tICcuLi8uLi91dGlscy90eXBlcyc7XG5pbXBvcnQgeyBzaXplIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sbGVjdGlvbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHcmlkUXVlcnkgZXh0ZW5kcyBRdWVyeTxHcmlkU3RvcmVTdGF0ZT4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBhcGk6IERhdG9HcmlkQXBpO1xuICBncmlkUmVmOiBBZ0dyaWROZzI7XG4gIC8vQGludGVybmFsXG4gIF9ncmlkUmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgZ3JpZFJlYWR5JCA9IHRoaXMuX2dyaWRSZWFkeS5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcihyZWFkeSA9PiByZWFkeSkpO1xuICAvL0BpbnRlcm5hbFxuICBfc2VydmVyRGF0YUxvYWRlZCA9IG5ldyBTdWJqZWN0PERhdG9HcmlkRGF0YUNoYW5nZWRFdmVudD4oKTtcbiAgc2VydmVyRGF0YUxvYWRlZCQgPSB0aGlzLl9zZXJ2ZXJEYXRhTG9hZGVkLmFzT2JzZXJ2YWJsZSgpO1xuICBfcm93QWN0aW9uVmlzaWJpbGl0eUNoYW5nZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByb3dBY3Rpb25WaXNpYmlsaXR5Q2hhbmdlZCQgPSB0aGlzLl9yb3dBY3Rpb25WaXNpYmlsaXR5Q2hhbmdlZC5hc09ic2VydmFibGUoKTtcbiAgcm93RGF0YUNoYW5nZWQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLndhaXRGb3JHcmlkKCgpID0+XG4gICAgbWVyZ2UodGhpcy5ncmlkUmVmLnJvd0RhdGFDaGFuZ2VkLCB0aGlzLmdyaWRSZWYucm93RGF0YVVwZGF0ZWQsIHRoaXMuZ3JpZFJlZi5maWx0ZXJDaGFuZ2VkLCB0aGlzLnNlcnZlckRhdGFMb2FkZWQkKVxuICApO1xuICBzZWxlY3RlZFJvd3NDaGFuZ2UkID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PlxuICAgIGZyb21FdmVudCh0aGlzLmFwaS5ncmlkLCBFdmVudHMuRVZFTlRfU0VMRUNUSU9OX0NIQU5HRUQpLnBpcGUobWFwKCh7IGFwaSB9KSA9PiBhcGkuZ2V0U2VsZWN0ZWRSb3dzKCkpKVxuICApO1xuXG4gIHJvd3NTZWxlY3Rpb25EYXRhJDogT2JzZXJ2YWJsZTxHcmlkUm93c1NlbGVjdGlvbkRhdGE+ID0gdGhpcy53YWl0Rm9yR3JpZCgoKSA9PiB7XG4gICAgcmV0dXJuIG1lcmdlKFxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3NDaGFuZ2UkLFxuICAgICAgdGhpcy5yb3dEYXRhQ2hhbmdlZCQsXG4gICAgICB0aGlzLnNlbGVjdFNlcnZlclBhZ2luYXRpb25Db25maWcoKSxcbiAgICAgIHRoaXMud2FpdEZvckdyaWQoKCkgPT4gbWVyZ2UodGhpcy5ncmlkUmVmLnNvcnRDaGFuZ2VkLCB0aGlzLmdyaWRSZWYucGFnaW5hdGlvbkNoYW5nZWQpKVxuICAgICkucGlwZShcbiAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsUm93c0NvdW50ID0gdGhpcy5pc1NlcnZlclNpZGVcbiAgICAgICAgICA/IHRoaXMuc2VydmVyU2lkZUNvbmZpZy50b3RhbFJvd3NcbiAgICAgICAgICA6IHRoaXMuYXBpLmdyaWQuZ2V0RGlzcGxheWVkUm93Q291bnQoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzQ291bnQgPSB0aGlzLmdldFNlbGVjdGVkUm93c0NvdW50KCk7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VSb3dzID0gdGhpcy5nZXRDdXJyZW50UGFnZVJvd3MoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWdlUm93c0NvdW50ID0gc2l6ZShjdXJyZW50UGFnZVJvd3MuZmlsdGVyKChub2RlOiBSb3dOb2RlKSA9PiBub2RlLmlzU2VsZWN0ZWQoKSkpO1xuICAgICAgICBjb25zdCBpc0FsbFBhZ2VSb3dzU2VsZWN0ZWQgPVxuICAgICAgICAgIChzZWxlY3RlZFBhZ2VSb3dzQ291bnQgPiAwICYmIHNlbGVjdGVkUGFnZVJvd3NDb3VudCA9PT0gc2l6ZShjdXJyZW50UGFnZVJvd3MpKSB8fFxuICAgICAgICAgICh0aGlzLmlzU2VydmVyU2VsZWN0QWxsUm93c0VuYWJsZWQgJiYgaXNFbXB0eSh0aGlzLnNlcnZlclNpZGVDb25maWcuZXhjbHVkZWRGcm9tU2VsZWN0QWxsKSk7XG5cbiAgICAgICAgcmV0dXJuIHsgdG90YWxSb3dzQ291bnQsIHNlbGVjdGVkUm93c0NvdW50LCBzZWxlY3RlZFBhZ2VSb3dzQ291bnQsIGlzQWxsUGFnZVJvd3NTZWxlY3RlZCB9O1xuICAgICAgfSlcbiAgICApO1xuICB9KTtcblxuICBmaWx0ZXJBY3RpdmUkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc2V0dGluZ3MpLnBpcGUoXG4gICAgbWFwKCh7IGZpbHRlciwgc2VhcmNoVGVybSB9OiBEYXRvR3JpZFNldHRpbmdzKSA9PiBzaXplKGZpbHRlcikgPiAwIHx8ICEhc2VhcmNoVGVybSlcbiAgKTtcbiAgc2VydmVyU2lkZUVycm9yJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLnNlcnZlclNpZGVQYWdpbmF0aW9uLmhhc0Vycm9yKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc3RvcmU6IEdyaWRTdG9yZSkge1xuICAgIHN1cGVyKHN0b3JlKTtcbiAgfVxuXG4gIGdldCBzZXJ2ZXJTaWRlQ29uZmlnKCk6IFNlcnZlclNpZGVQYWdpbmF0aW9uQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNlcnZlclNpZGVQYWdpbmF0aW9uO1xuICB9XG5cbiAgZ2V0IGlzU2VydmVyU2lkZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLmVuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNTZXJ2ZXJTZWxlY3RBbGxSb3dzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2ZXJTaWRlQ29uZmlnLnNlbGVjdEFsbFJvd3NFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGdyaWRBbGlnbm1lbnQoKTogRGF0b0dyaWRBbGlnbm1lbnQge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlKCkuc2V0dGluZ3MuZ3JpZEFsaWdubWVudDtcbiAgfVxuXG4gIGdldENvbHVtblNpemVzKCk6IEhhc2hNYXA8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5jb2x1bW5zU2l6ZXM7XG4gIH1cblxuICBnZXRDdXJyZW50R3JpZFNldHRpbmdzKCk6IERhdG9HcmlkU2V0dGluZ3Mge1xuICAgIGNvbnN0IHRvQ29sSWQgPSBjb2x1bW4gPT4gY29sdW1uLmdldENvbElkKCk7XG4gICAgY29uc3QgeyBjb2x1bW5zIH0gPSB0aGlzLmFwaTtcbiAgICBjb25zdCBncm91cGVkQ29sdW1ucyA9IGNvbHVtbnMuZ2V0Um93R3JvdXBDb2x1bW5zKCk7XG4gICAgY29uc3QgY29sdW1uc09yZGVyID0gY29sdW1ucy5nZXRBbGxDb2x1bW5zKCk7XG4gICAgY29uc3QgYWxsR3JpZENvbHVtbnMgPSBjb2x1bW5zLmdldEFsbEdyaWRDb2x1bW5zKCk7XG4gICAgY29uc3QgaGlkZGVuQ29sdW1ucyA9IGNvbHVtbnNPcmRlclxuICAgICAgLmZpbHRlcihjb2x1bW4gPT4gIWNvbHVtbi5pc1Zpc2libGUoKSAmJiAhZ3JvdXBlZENvbHVtbnMuaW5jbHVkZXMoY29sdW1uKSlcbiAgICAgIC5tYXAodG9Db2xJZCk7XG4gICAgY29uc3Qgc3RvcmVTZXR0aW5ncyA9IHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncztcbiAgICBjb25zdCBzZXR0aW5nczogRGF0b0dyaWRTZXR0aW5ncyA9IHtcbiAgICAgIGdyaWRBbGlnbm1lbnQ6IHN0b3JlU2V0dGluZ3MuZ3JpZEFsaWdubWVudCxcbiAgICAgIHNvcnQ6IHRoaXMuZ2V0R3JpZE9wdGlvbnMoKS5zb3J0QnlTdG9yZSA/IHRoaXMuZ2V0U2F2ZWRTb3J0KCkgOiB0aGlzLmdldFNvcnRNb2RlbCgpLFxuICAgICAgaGlkZGVuQ29sdW1ucyxcbiAgICAgIGdyb3VwZWRDb2x1bW5zOiBncm91cGVkQ29sdW1ucy5tYXAodG9Db2xJZCksXG4gICAgICBmaWx0ZXI6IHRoaXMuZ2V0RmlsdGVyKCksXG4gICAgICBwaW5uZWRDb2x1bW5zOiBjb2x1bW5zLmdldERpc3BsYXllZExlZnRDb2x1bW5zKCkubWFwKHRvQ29sSWQpLFxuICAgICAgY29sdW1uc09yZGVyOiBhbGxHcmlkQ29sdW1ucy5tYXAodG9Db2xJZCksXG4gICAgICBjb2x1bW5zU2l6ZXM6IG51bGwsXG4gICAgICBzZWFyY2hUZXJtOiBudWxsXG4gICAgfTtcblxuICAgIGlmIChzdG9yZVNldHRpbmdzLmdyaWRBbGlnbm1lbnQgPT09IERhdG9HcmlkQWxpZ25tZW50LkNVU1RPTSkge1xuICAgICAgc2V0dGluZ3MuY29sdW1uc1NpemVzID0gZ2V0Q29sdW1uc1NpemVzKGFsbEdyaWRDb2x1bW5zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0dGluZ3M7XG4gIH1cblxuICBnZXRTb3J0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmdyaWQuZ2V0U29ydE1vZGVsKCkucG9wKCkgYXMgRGF0b0dyaWRTb3J0O1xuICB9XG5cbiAgZ2V0U2F2ZWRTb3J0KCk6IERhdG9HcmlkU29ydCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5zb3J0IHx8IHRoaXMuZ2V0U29ydE1vZGVsKCk7XG4gIH1cblxuICBnZXRTb3J0KHNhdmVkU29ydDogRGF0b0dyaWRTb3J0ID0gdGhpcy5nZXRTYXZlZFNvcnQoKSk6IERhdG9HcmlkU29ydCB7XG4gICAgaWYgKHNhdmVkU29ydCkge1xuICAgICAgY29uc3QgeyBjb2xJZCwgc29ydCwgc29ydEluZGV4IH0gPSBzYXZlZFNvcnQ7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmFwaS5jb2x1bW5zLmdldENvbHVtbihjb2xJZCk7XG4gICAgICBjb25zdCBhbGxDb2x1bW5zID0gdGhpcy5hcGkuY29sdW1ucy5nZXRBbGxHcmlkQ29sdW1ucygpO1xuXG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gZ2V0Q29sRmllbGQoY29sdW1uLmdldENvbERlZigpKTtcblxuICAgICAgICByZXR1cm4geyBjb2xJZCwgc29ydCwgZmllbGQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlY29uZGFyeUNvbHVtbiA9IHRoaXMuZ2V0U2Vjb25kYXJ5Q29sdW1uKGNvbElkKTtcblxuICAgICAgICBpZiAoc2Vjb25kYXJ5Q29sdW1uKSB7XG4gICAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBzb3J0SW5kZXggfHwgYWxsQ29sdW1ucy5pbmRleE9mKHNlY29uZGFyeUNvbHVtbik7XG4gICAgICAgICAgY29uc3QgZmllbGQgPSBnZXRDb2xGaWVsZChzZWNvbmRhcnlDb2x1bW4uZ2V0Q29sRGVmKCkpO1xuXG4gICAgICAgICAgcmV0dXJuIHsgY29sSWQsIHNvcnQsIGZpZWxkLCBzb3J0SW5kZXg6IGNvbHVtbkluZGV4IH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBjb2xJZDogbnVsbCwgc29ydDogbnVsbCB9O1xuICB9XG5cbiAgLyogQGludGVybmFsICovXG4gIF9zZXRBcGkoYXBpOiBEYXRvR3JpZEFwaSwgZ3JpZFJlZjogQWdHcmlkTmcyKSB7XG4gICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgdGhpcy5ncmlkUmVmID0gZ3JpZFJlZjtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGp1c3QgdGhlIHJvd3MgZGF0YSAqL1xuICBnZXRTZWxlY3RlZFJvd3M8VD4oKTogVFtdO1xuICBnZXRTZWxlY3RlZFJvd3M8VD4ob25seUZpcnN0Um93OiB0cnVlKTogVCB8IHVuZGVmaW5lZDtcbiAgZ2V0U2VsZWN0ZWRSb3dzPFQ+KG9ubHlGaXJzdFJvdzogZmFsc2UpOiBUW107XG4gIGdldFNlbGVjdGVkUm93czxUPihvbmx5Rmlyc3RSb3c/OiBib29sZWFuKTogVFtdIHwgVCB7XG4gICAgY29uc3Qgcm93cyA9IHRoaXMuYXBpLmdyaWQuZ2V0U2VsZWN0ZWRSb3dzKCk7XG4gICAgcmV0dXJuIG9ubHlGaXJzdFJvdyA/IHJvd3NbMF0gOiByb3dzO1xuICB9XG5cbiAgLyoqIFJldHVybnMgdGhlIGVudGlyZSByb3cgbm9kZSAqL1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKCk6IFJvd05vZGVbXTtcbiAgZ2V0U2VsZWN0ZWRSb3dOb2Rlcyhvbmx5Rmlyc3RSb3c6IHRydWUpOiBSb3dOb2RlIHwgdW5kZWZpbmVkO1xuICBnZXRTZWxlY3RlZFJvd05vZGVzKG9ubHlGaXJzdFJvdzogZmFsc2UpOiBSb3dOb2RlW107XG4gIGdldFNlbGVjdGVkUm93Tm9kZXMob25seUZpcnN0Um93PzogYm9vbGVhbik6IFJvd05vZGVbXSB8IFJvd05vZGUge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmFwaS5ncmlkLmdldFNlbGVjdGVkTm9kZXMoKTtcbiAgICByZXR1cm4gb25seUZpcnN0Um93ID8gcm93c1swXSA6IHJvd3M7XG4gIH1cblxuICBnZXRGaWx0ZXIoKTogRGF0b0dyaWRGaWx0ZXJzTWFwIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZSgpLnNldHRpbmdzLmZpbHRlcjtcbiAgfVxuXG4gIHNlbGVjdEZpbHRlcigpOiBPYnNlcnZhYmxlPERhdG9HcmlkRmlsdGVyc01hcD4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXR0aW5ncy5maWx0ZXIpO1xuICB9XG5cbiAgZ2V0RXh0ZXJuYWxGaWx0ZXIoKTogRGF0b0dyaWRFeHRlcm5hbEZpbHRlcltdIHtcbiAgICBjb25zdCBncmlkRmlsdGVycyA9IHRoaXMuZ2V0RmlsdGVyKCk7XG5cbiAgICBpZiAoZ3JpZEZpbHRlcnMpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhncmlkRmlsdGVycykucmVkdWNlKChmaWx0ZXJzLCBmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBncmlkRmlsdGVyc1tmaWVsZF07XG5cbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgIGZpbHRlcnMucHVzaCh7IGZpZWxkLCBmaWx0ZXIgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVycztcbiAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRTZWFyY2hUZXJtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKS5zZXR0aW5ncy5zZWFyY2hUZXJtO1xuICB9XG5cbiAgc2VsZWN0U2VhcmNoVGVybSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgoc3RhdGU6IEdyaWRTdG9yZVN0YXRlKSA9PiBzdGF0ZS5zZXR0aW5ncy5zZWFyY2hUZXJtKTtcbiAgfVxuXG4gIHdhaXRGb3JHcmlkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZTogKCkgPT4gT2JzZXJ2YWJsZTxUPik6IE9ic2VydmFibGU8VD47XG4gIHdhaXRGb3JHcmlkPFQgPSBhbnk+KHNvdXJjZT86ICgpID0+IE9ic2VydmFibGU8VD4pOiBPYnNlcnZhYmxlPFQ+IHwgT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHNvdXJjZSA/IHRoaXMuZ3JpZFJlYWR5JC5waXBlKHN3aXRjaE1hcChzb3VyY2UpKSA6IHRoaXMuZ3JpZFJlYWR5JDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2dyaWRSZWFkeS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3NlcnZlckRhdGFMb2FkZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldEdyaWRPcHRpb25zKCk6IERhdG9HcmlkT3B0aW9ucyB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZFJlZiA/ICh0aGlzLmdyaWRSZWYuZ3JpZE9wdGlvbnMgYXMgRGF0b0dyaWRPcHRpb25zKSA6IG51bGw7XG4gIH1cblxuICBzZWxlY3RTZXJ2ZXJQYWdpbmF0aW9uQ29uZmlnKCk6IE9ic2VydmFibGU8U2VydmVyU2lkZVBhZ2luYXRpb25Db25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKHN0YXRlOiBHcmlkU3RvcmVTdGF0ZSkgPT4gc3RhdGUuc2VydmVyU2lkZVBhZ2luYXRpb24pO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRSb3dzQ291bnQoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5pc1NlcnZlclNlbGVjdEFsbFJvd3NFbmFibGVkKSB7XG4gICAgICBjb25zdCB7IHRvdGFsUm93cywgZXhjbHVkZWRGcm9tU2VsZWN0QWxsIH0gPSB0aGlzLnNlcnZlclNpZGVDb25maWc7XG4gICAgICByZXR1cm4gdG90YWxSb3dzIC0gc2l6ZShleGNsdWRlZEZyb21TZWxlY3RBbGwpO1xuICAgIH1cbiAgICByZXR1cm4gc2l6ZSh0aGlzLmdldFNlbGVjdGVkUm93cygpKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRQYWdlUm93cygpOiBSb3dOb2RlW10ge1xuICAgIGNvbnN0IHBhZ2VSb3dzOiBSb3dOb2RlW10gPSBbXTtcbiAgICBjb25zdCBwdXNoUGFnZVJvdyA9IChub2RlOiBSb3dOb2RlKSA9PiB7XG4gICAgICBwYWdlUm93cy5wdXNoKG5vZGUpO1xuICAgIH07XG4gICAgY29uc3QgZ3JpZCA9IHRoaXMuYXBpLmdyaWQ7XG4gICAgY29uc3QgcGFnZVNpemUgPSBncmlkLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gZ3JpZC5wYWdpbmF0aW9uR2V0Q3VycmVudFBhZ2UoKTtcbiAgICBjb25zdCB0b3RhbFJvd3MgPSBncmlkLnBhZ2luYXRpb25HZXRSb3dDb3VudCgpO1xuICAgIGNvbnN0IGZpcnN0UGFnZUluZGV4ID0gY3VycmVudFBhZ2UgKiBwYWdlU2l6ZTtcbiAgICBsZXQgbGFzdFBhZ2VJbmRleCA9IGZpcnN0UGFnZUluZGV4ICsgcGFnZVNpemU7XG4gICAgaWYgKGxhc3RQYWdlSW5kZXggPiB0b3RhbFJvd3MpIHtcbiAgICAgIGxhc3RQYWdlSW5kZXggPSB0b3RhbFJvd3M7XG4gICAgfVxuICAgIGNvbnN0IHBlcmZvcm1BY3Rpb24gPSAobm9kZTogUm93Tm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUucm93SW5kZXggPCBsYXN0UGFnZUluZGV4ICYmIG5vZGUucm93SW5kZXggPj0gZmlyc3RQYWdlSW5kZXgpIHtcbiAgICAgICAgcHVzaFBhZ2VSb3cobm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmlzU2VydmVyU2lkZSA/IGdyaWQuZm9yRWFjaE5vZGUocGVyZm9ybUFjdGlvbikgOiBncmlkLmZvckVhY2hOb2RlQWZ0ZXJGaWx0ZXJBbmRTb3J0KHBlcmZvcm1BY3Rpb24pO1xuICAgIHJldHVybiBwYWdlUm93cztcbiAgfVxuXG4gIGdldEFsbENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbERpc3BsYXllZENvbHVtbnMoKTogQ29sdW1uW10ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckNoZWNrYm94U2VsZWN0aW9uQ29sdW1uKHRoaXMuYXBpLmNvbHVtbnMuZ2V0QWxsRGlzcGxheWVkQ29sdW1ucygpKTtcbiAgfVxuXG4gIGdldEFsbFBpdm90Q29sdW1ucygpOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsQ29sdW1ucygpLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmlzUGl2b3RBY3RpdmUoKSk7XG4gIH1cblxuICBzZWxlY3RJc1NlbGVjdEFsbFJvd3NFbmFibGVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5zZXJ2ZXJTaWRlUGFnaW5hdGlvbi5zZWxlY3RBbGxSb3dzRW5hYmxlZCk7XG4gIH1cblxuICBnZXRTZWNvbmRhcnlDb2x1bW4oY29sSWQ6IHN0cmluZyk6IENvbHVtbiB7XG4gICAgLyoqIFVzZSBnZXRQaXZvdFJlc3VsdENvbHVtbnMgZnJvbSB2ZXIgMjggKi9cbiAgICBjb25zdCBzZWNvbmRhcnlDb2x1bW5zID0gdGhpcy5hcGkuY29sdW1ucy5nZXRTZWNvbmRhcnlDb2x1bW5zKCk7XG5cbiAgICBpZiAoc2Vjb25kYXJ5Q29sdW1ucykge1xuICAgICAgcmV0dXJuIHNlY29uZGFyeUNvbHVtbnMuZmluZChjb2wgPT4gY29sLmdldENvbElkKCkgPT09IGNvbElkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQ2hlY2tib3hTZWxlY3Rpb25Db2x1bW4oY29sdW1uczogQ29sdW1uW10pOiBDb2x1bW5bXSB7XG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKFxuICAgICAgKGNvbHVtbjogQ29sdW1uKSA9PiAhY29sdW1uLmdldFVzZXJQcm92aWRlZENvbERlZigpIHx8ICFjb2x1bW4uZ2V0VXNlclByb3ZpZGVkQ29sRGVmKCkuY2hlY2tib3hTZWxlY3Rpb25cbiAgICApO1xuICB9XG59XG4iXX0=