ng-inail-common 2.0.21 → 2.0.25

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.
@@ -53,6 +53,7 @@ export class FormElementComponent extends ResponsiveElementComponent {
53
53
  this.error = undefined;
54
54
  this.errorChange.emit(undefined);
55
55
  }
56
+ this.formElementCdr.detectChanges();
56
57
  });
57
58
  }
58
59
  registerOnChange(fn) {
@@ -111,4 +112,4 @@ FormElementComponent.propDecorators = {
111
112
  popoverHeader: [{ type: Input }],
112
113
  popoverContent: [{ type: Input }]
113
114
  };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9mb3JtL2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTdJLE9BQU8sRUFBQywwQkFBMEIsRUFBb0MsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQWdCLHlCQUF5QixFQUFpQyxNQUFNLG1CQUFtQixDQUFDO0FBUzNHLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSwwQkFBMEI7SUFpRWxFLFlBQW9CLGNBQWlDO1FBQ25ELEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQURKLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQS9DckQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixtQkFBYyxHQUFXLEdBQUcsQ0FBQztRQUU3QiwyQkFBc0IsR0FBcUIsTUFBTSxDQUFDO1FBRWxELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU3QyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJN0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQVV6QixhQUFRLEdBQUcsR0FBRyxFQUFFLENB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SSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFFdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUVuQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7O1lBL0lGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QixRQUFRLEVBQUUsRUFBRTtnQkFFWixlQUFlLEVBQUUseUJBQXlCO2dCQUMxQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBWk8saUJBQWlCOzs7b0JBa0J0QixLQUFLO29CQUVMLEtBQUs7bUJBRUwsS0FBSzt5QkFFTCxLQUFLO3lCQUVMLEtBQUs7eUJBRUwsS0FBSzt1QkFFTCxLQUFLOzZCQUVMLEtBQUs7cUNBRUwsS0FBSzt1QkFFTCxLQUFLO3VCQUVMLEtBQUs7dUJBRUwsS0FBSzs2QkFFTCxNQUFNOzBCQUVOLEtBQUs7b0JBRUwsS0FBSzswQkFFTCxLQUFLOzBCQUVMLE1BQU07c0JBRU4sTUFBTTtvQkFFTixLQUFLO3NCQUVMLEtBQUs7Z0NBRUwsS0FBSztpQ0FFTCxLQUFLOzRCQUVMLEtBQUs7NkJBRUwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHtSZXNwb25zaXZlRWxlbWVudENvbXBvbmVudCwgUmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnRDaGFuZ2VzfSBmcm9tIFwiLi4vcmVzcG9uc2l2ZS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtpc05vdEJsYW5rT3JOdWxsfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY29tbW9uLm9wZXJhdG9yc1wiO1xuaW1wb3J0IHtCb29sZWFuQ2hhbmdlLCBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLCBPYnNlcnZhYmxlQ2hhbmdlLCBTdHJpbmdDaGFuZ2V9IGZyb20gXCIuLi9iYXNlLmNvbXBvbmVudFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC1mb3JtLWVsZW1lbnQnLFxuICB0ZW1wbGF0ZTogJycsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtRWxlbWVudENvbXBvbmVudCBleHRlbmRzIFJlc3BvbnNpdmVFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQge1xuXG4gIG9uQ2hhbmdlOiAodmFsOiBhbnkpID0+IHZvaWRcbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkO1xuXG4gIEBJbnB1dCgpXG4gIGxhYmVsOiBOb25OdWxsYWJsZTxzdHJpbmc+O1xuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGxhYmVsVGl0bGU6IHN0cmluZztcbiAgQElucHV0KClcbiAgbGFiZWxDbGFzczogc3RyaW5nO1xuICBASW5wdXQoKVxuICBpbnB1dENsYXNzOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkU2ltYm9sOiBzdHJpbmcgPSAnKic7XG4gIEBJbnB1dCgpXG4gIHJlcXVpcmVkU2ltYm9sUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGhhc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKVxuICBoYXNFcnJvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQElucHV0KClcbiAgaGlkZGVuTGFiZWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgZXJyb3I6IHN0cmluZztcbiAgQElucHV0KClcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgQE91dHB1dCgpXG4gIGVycm9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKVxuICBlbnRlclVwID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKVxuICBmb2N1czogT2JzZXJ2YWJsZTxib29sZWFuIHwgdm9pZD47XG4gIEBJbnB1dCgpXG4gIHBvcG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcG9wb3ZlckJ1dHRvbkljb246IHN0cmluZztcbiAgQElucHV0KClcbiAgcG9wb3ZlckJ1dHRvblRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHBvcG92ZXJIZWFkZXI6IHN0cmluZztcbiAgQElucHV0KClcbiAgcG9wb3ZlckNvbnRlbnQ6IHN0cmluZztcblxuICBnZXRMYWJlbCA9ICgpID0+IGAkeyh0aGlzLnJlcXVpcmVkICYmIHRoaXMucmVxdWlyZWRTaW1ib2xQb3NpdGlvbiA9PT0gJ2xlZnQnKSA/IGAke3RoaXMucmVxdWlyZWRTaW1ib2x9IGAgOiAnJ30ke3RoaXMubGFiZWx9JHsodGhpcy5yZXF1aXJlZCAmJiB0aGlzLnJlcXVpcmVkU2ltYm9sUG9zaXRpb24gPT09ICdyaWdodCcpID8gYCAke3RoaXMucmVxdWlyZWRTaW1ib2x9YCA6ICcnfWBcblxuICBpc1RoZXJlRXJyb3IgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmhhc0Vycm9yIHx8IGlzTm90QmxhbmtPck51bGwodGhpcy5lcnJvcik7XG5cbiAgc2hvd0Vycm9yID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5pc1RoZXJlRXJyb3IoKSAmJiBpc05vdEJsYW5rT3JOdWxsKHRoaXMuZXJyb3IpO1xuXG4gIGdldEFyaWFEZXNjcmliZWRCeSA9ICgpOiBzdHJpbmcgPT4gdGhpcy5zaG93RXJyb3IoKSB8fCBpc05vdEJsYW5rT3JOdWxsKHRoaXMuZGVzY3JpcHRpb24pID8gYCR7dGhpcy5pZH0tZGVzY3JpcHRpb25gIDogdW5kZWZpbmVkO1xuXG4gIC8vIHNob3dQb3BvdmVyID0gKCk6IGJvb2xlYW4gPT4gaXNOb3RCbGFua09yTnVsbCh0aGlzLnBvcG92ZXJIZWFkZXIpIHx8IGlzTm90QmxhbmtPck51bGwodGhpcy5wb3BvdmVyQ29udGVudCk7XG4gIHNob3dQb3BvdmVyID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5wb3BvdmVyID09PSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUVsZW1lbnRDZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoZm9ybUVsZW1lbnRDZHIpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZ2V0Tm90QmxhbmtWYWx1ZSh0aGlzLnRpdGxlKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmdldE5vdEJsYW5rVmFsdWUodGhpcy5uYW1lKTtcbiAgICB0aGlzLmxhYmVsVGl0bGUgPSB0aGlzLmdldE5vdEJsYW5rVmFsdWUodGhpcy5sYWJlbFRpdGxlKTtcbiAgICB0aGlzLnBvcG92ZXJCdXR0b25UaXRsZSA9IHRoaXMuZ2V0Tm90QmxhbmtWYWx1ZSh0aGlzLnBvcG92ZXJCdXR0b25UaXRsZSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMubG9nUHJlZml4ID0gYCR7dGhpcy5sb2dQcmVmaXh9WyR7dGhpcy5sYWJlbH1dYDtcbiAgfVxuXG4gIHNldERlc2NFcnJvcihzOiBzdHJpbmcpIHtcblxuICAgIHRoaXMuZXJyb3IgPSBzO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRDZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgc2V0SGFzRXJyb3IoYjogYm9vbGVhbikge1xuXG4gICAgdGhpcy5oYXNFcnJvciA9IGI7XG4gICAgdGhpcy5mb3JtRWxlbWVudENkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjbGVhbkVycm9yKCkge1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgIGlmICh0aGlzLmhhc0Vycm9yKSB7XG5cbiAgICAgICAgdGhpcy5oYXNFcnJvciA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhhc0Vycm9yQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5lcnJvcikge1xuXG4gICAgICAgIHRoaXMuZXJyb3IgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZXJyb3JDaGFuZ2UuZW1pdCh1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG5cbiAgICB0aGlzLmVtaXREZWJ1ZyhgcmVnaXN0ZXJPbkNoYW5nZWApO1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKGByZWdpc3Rlck9uVG91Y2hlZGApO1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG5cbiAgICB0aGlzLmVtaXREZWJ1Zyhgc2V0RGlzYWJsZWRTdGF0ZTogJHtpc0Rpc2FibGVkfWApO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRDZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRWxlbWVudENvbXBvbmVudENoYW5nZXMgZXh0ZW5kcyBSZXNwb25zaXZlRWxlbWVudENvbXBvbmVudENoYW5nZXMge1xuXG4gIGxhYmVsOiBTdHJpbmdDaGFuZ2UsXG4gIHRpdGxlOiBTdHJpbmdDaGFuZ2UsXG4gIG5hbWU6IFN0cmluZ0NoYW5nZSxcbiAgbGFiZWxUaXRsZTogU3RyaW5nQ2hhbmdlLFxuICBsYWJlbENsYXNzOiBTdHJpbmdDaGFuZ2UsXG4gIGlucHV0Q2xhc3M6IFN0cmluZ0NoYW5nZSxcbiAgcmVxdWlyZWQ6IEJvb2xlYW5DaGFuZ2UsXG4gIHJlcXVpcmVkU2ltYm9sOiBTdHJpbmdDaGFuZ2UsXG4gIHJlcXVpcmVkU2ltYm9sUG9zaXRpb246IFN0cmluZ0NoYW5nZSxcbiAgZGlzYWJsZWQ6IEJvb2xlYW5DaGFuZ2UsXG4gIHJlYWRvbmx5OiBCb29sZWFuQ2hhbmdlLFxuICBoYXNFcnJvcjogQm9vbGVhbkNoYW5nZSxcbiAgaGlkZGVuTGFiZWw6IEJvb2xlYW5DaGFuZ2UsXG4gIGVycm9yOiBTdHJpbmdDaGFuZ2UsXG4gIGZvY3VzOiBPYnNlcnZhYmxlQ2hhbmdlXG59XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9mb3JtL2Zvcm0tZWxlbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTdJLE9BQU8sRUFBQywwQkFBMEIsRUFBb0MsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQWdCLHlCQUF5QixFQUFpQyxNQUFNLG1CQUFtQixDQUFDO0FBUzNHLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSwwQkFBMEI7SUFpRWxFLFlBQW9CLGNBQWlDO1FBQ25ELEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQURKLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQS9DckQsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixtQkFBYyxHQUFXLEdBQUcsQ0FBQztRQUU3QiwyQkFBc0IsR0FBcUIsTUFBTSxDQUFDO1FBRWxELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUU3QyxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJN0IsWUFBTyxHQUFZLEtBQUssQ0FBQztRQVV6QixhQUFRLEdBQUcsR0FBRyxFQUFFLENB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cG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1Jlc3BvbnNpdmVFbGVtZW50Q29tcG9uZW50LCBSZXNwb25zaXZlRWxlbWVudENvbXBvbmVudENoYW5nZXN9IGZyb20gXCIuLi9yZXNwb25zaXZlLWVsZW1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge2lzTm90QmxhbmtPck51bGx9IGZyb20gXCIuLi8uLi8uLi91dGlscy9jb21tb24ub3BlcmF0b3JzXCI7XG5pbXBvcnQge0Jvb2xlYW5DaGFuZ2UsIENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksIE9ic2VydmFibGVDaGFuZ2UsIFN0cmluZ0NoYW5nZX0gZnJvbSBcIi4uL2Jhc2UuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luYWlsLWZvcm0tZWxlbWVudCcsXG4gIHRlbXBsYXRlOiAnJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1FbGVtZW50Q29tcG9uZW50IGV4dGVuZHMgUmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG5cbiAgb25DaGFuZ2U6ICh2YWw6IGFueSkgPT4gdm9pZFxuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQ7XG5cbiAgQElucHV0KClcbiAgbGFiZWw6IE5vbk51bGxhYmxlPHN0cmluZz47XG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG5hbWU6IHN0cmluZztcbiAgQElucHV0KClcbiAgbGFiZWxUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBsYWJlbENsYXNzOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGlucHV0Q2xhc3M6IHN0cmluZztcbiAgQElucHV0KClcbiAgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcmVxdWlyZWRTaW1ib2w6IHN0cmluZyA9ICcqJztcbiAgQElucHV0KClcbiAgcmVxdWlyZWRTaW1ib2xQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KClcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgaGFzRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIGhhc0Vycm9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBASW5wdXQoKVxuICBoaWRkZW5MYWJlbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBlcnJvcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBAT3V0cHV0KClcbiAgZXJyb3JDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpXG4gIGVudGVyVXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpXG4gIGZvY3VzOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCB2b2lkPjtcbiAgQElucHV0KClcbiAgcG9wb3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKVxuICBwb3BvdmVyQnV0dG9uSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwb3BvdmVyQnV0dG9uVGl0bGU6IHN0cmluZztcbiAgQElucHV0KClcbiAgcG9wb3ZlckhlYWRlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwb3BvdmVyQ29udGVudDogc3RyaW5nO1xuXG4gIGdldExhYmVsID0gKCkgPT4gYCR7KHRoaXMucmVxdWlyZWQgJiYgdGhpcy5yZXF1aXJlZFNpbWJvbFBvc2l0aW9uID09PSAnbGVmdCcpID8gYCR7dGhpcy5yZXF1aXJlZFNpbWJvbH0gYCA6ICcnfSR7dGhpcy5sYWJlbH0keyh0aGlzLnJlcXVpcmVkICYmIHRoaXMucmVxdWlyZWRTaW1ib2xQb3NpdGlvbiA9PT0gJ3JpZ2h0JykgPyBgICR7dGhpcy5yZXF1aXJlZFNpbWJvbH1gIDogJyd9YFxuXG4gIGlzVGhlcmVFcnJvciA9ICgpOiBib29sZWFuID0+IHRoaXMuaGFzRXJyb3IgfHwgaXNOb3RCbGFua09yTnVsbCh0aGlzLmVycm9yKTtcblxuICBzaG93RXJyb3IgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmlzVGhlcmVFcnJvcigpICYmIGlzTm90QmxhbmtPck51bGwodGhpcy5lcnJvcik7XG5cbiAgZ2V0QXJpYURlc2NyaWJlZEJ5ID0gKCk6IHN0cmluZyA9PiB0aGlzLnNob3dFcnJvcigpIHx8IGlzTm90QmxhbmtPck51bGwodGhpcy5kZXNjcmlwdGlvbikgPyBgJHt0aGlzLmlkfS1kZXNjcmlwdGlvbmAgOiB1bmRlZmluZWQ7XG5cbiAgLy8gc2hvd1BvcG92ZXIgPSAoKTogYm9vbGVhbiA9PiBpc05vdEJsYW5rT3JOdWxsKHRoaXMucG9wb3ZlckhlYWRlcikgfHwgaXNOb3RCbGFua09yTnVsbCh0aGlzLnBvcG92ZXJDb250ZW50KTtcbiAgc2hvd1BvcG92ZXIgPSAoKTogYm9vbGVhbiA9PiB0aGlzLnBvcG92ZXIgPT09IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtRWxlbWVudENkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcihmb3JtRWxlbWVudENkcik7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5nZXROb3RCbGFua1ZhbHVlKHRoaXMudGl0bGUpO1xuICAgIHRoaXMubmFtZSA9IHRoaXMuZ2V0Tm90QmxhbmtWYWx1ZSh0aGlzLm5hbWUpO1xuICAgIHRoaXMubGFiZWxUaXRsZSA9IHRoaXMuZ2V0Tm90QmxhbmtWYWx1ZSh0aGlzLmxhYmVsVGl0bGUpO1xuICAgIHRoaXMucG9wb3ZlckJ1dHRvblRpdGxlID0gdGhpcy5nZXROb3RCbGFua1ZhbHVlKHRoaXMucG9wb3ZlckJ1dHRvblRpdGxlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5sb2dQcmVmaXggPSBgJHt0aGlzLmxvZ1ByZWZpeH1bJHt0aGlzLmxhYmVsfV1gO1xuICB9XG5cbiAgc2V0RGVzY0Vycm9yKHM6IHN0cmluZykge1xuXG4gICAgdGhpcy5lcnJvciA9IHM7XG4gICAgdGhpcy5mb3JtRWxlbWVudENkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzZXRIYXNFcnJvcihiOiBib29sZWFuKSB7XG5cbiAgICB0aGlzLmhhc0Vycm9yID0gYjtcbiAgICB0aGlzLmZvcm1FbGVtZW50Q2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNsZWFuRXJyb3IoKSB7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgaWYgKHRoaXMuaGFzRXJyb3IpIHtcblxuICAgICAgICB0aGlzLmhhc0Vycm9yID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGFzRXJyb3JDaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmVycm9yKSB7XG5cbiAgICAgICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5lcnJvckNoYW5nZS5lbWl0KHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRDZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG5cbiAgICB0aGlzLmVtaXREZWJ1ZyhgcmVnaXN0ZXJPbkNoYW5nZWApO1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcblxuICAgIHRoaXMuZW1pdERlYnVnKGByZWdpc3Rlck9uVG91Y2hlZGApO1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG5cbiAgICB0aGlzLmVtaXREZWJ1Zyhgc2V0RGlzYWJsZWRTdGF0ZTogJHtpc0Rpc2FibGVkfWApO1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuZm9ybUVsZW1lbnRDZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtRWxlbWVudENvbXBvbmVudENoYW5nZXMgZXh0ZW5kcyBSZXNwb25zaXZlRWxlbWVudENvbXBvbmVudENoYW5nZXMge1xuXG4gIGxhYmVsOiBTdHJpbmdDaGFuZ2UsXG4gIHRpdGxlOiBTdHJpbmdDaGFuZ2UsXG4gIG5hbWU6IFN0cmluZ0NoYW5nZSxcbiAgbGFiZWxUaXRsZTogU3RyaW5nQ2hhbmdlLFxuICBsYWJlbENsYXNzOiBTdHJpbmdDaGFuZ2UsXG4gIGlucHV0Q2xhc3M6IFN0cmluZ0NoYW5nZSxcbiAgcmVxdWlyZWQ6IEJvb2xlYW5DaGFuZ2UsXG4gIHJlcXVpcmVkU2ltYm9sOiBTdHJpbmdDaGFuZ2UsXG4gIHJlcXVpcmVkU2ltYm9sUG9zaXRpb246IFN0cmluZ0NoYW5nZSxcbiAgZGlzYWJsZWQ6IEJvb2xlYW5DaGFuZ2UsXG4gIHJlYWRvbmx5OiBCb29sZWFuQ2hhbmdlLFxuICBoYXNFcnJvcjogQm9vbGVhbkNoYW5nZSxcbiAgaGlkZGVuTGFiZWw6IEJvb2xlYW5DaGFuZ2UsXG4gIGVycm9yOiBTdHJpbmdDaGFuZ2UsXG4gIGZvY3VzOiBPYnNlcnZhYmxlQ2hhbmdlXG59XG4iXX0=
@@ -43,11 +43,13 @@ export class InputFileComponent extends FormElementComponent {
43
43
  if (!this.addButton) {
44
44
  this.fileChange.emit(this.fileModel);
45
45
  }
46
+ this.cleanError();
46
47
  this.cdr.detectChanges();
47
48
  }
48
49
  reset() {
49
50
  this.fileModel = undefined;
50
51
  this.fileChange.emit(undefined);
52
+ this.cleanError();
51
53
  this.cdr.detectChanges();
52
54
  }
53
55
  }
@@ -71,4 +73,4 @@ InputFileComponent.propDecorators = {
71
73
  fileChange: [{ type: Output }],
72
74
  inputText: [{ type: ViewChild, args: ['inputText', { static: true },] }]
73
75
  };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvZm9ybS9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNLLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQU81RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsb0JBQW9CO0lBc0IxRCxZQUFvQixHQUFzQjtRQUN4QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFETyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWpCMUMscUJBQWdCLEdBQVcsZ0JBQWdCLENBQUM7UUFFNUMsa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFFbkMsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFN0IsY0FBUyxHQUFZLElBQUksQ0FBQztRQUsxQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVFwQyxJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFFTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUVkLElBQUksQ0FBQyxJQUFJLENBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtnQkFFdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxlQUFlO0lBRWYsQ0FBQztJQUVELFdBQVc7UUFFVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWE7UUFFdkIsYUFBYTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0QsSUFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7O1lBM0ZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsa0JBQWtCO2dCQUM1QiwyL0dBQTBDOzthQUUzQzs7O1lBUnNCLGlCQUFpQjs7OzBCQVdyQyxLQUFLOytCQUVMLEtBQUs7NEJBRUwsS0FBSzsyQkFFTCxLQUFLO3dCQUVMLEtBQUs7cUJBR0wsS0FBSzt5QkFFTCxNQUFNO3dCQUlOLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vZm9ybS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtzZXRGb2N1c30gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2NvbW1vbi5vcGVyYXRvcnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW5haWwtaW5wdXQtZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQtZmlsZS5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW5wdXRGaWxlQ29tcG9uZW50IGV4dGVuZHMgRm9ybUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKVxuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBjaG9vc2VCdXR0b25UZXh0OiBzdHJpbmcgPSAnU2NlZ2xpIGlsIGZpbGUnO1xuICBASW5wdXQoKVxuICBhZGRCdXR0b25UZXh0OiBzdHJpbmcgPSAnQWdnaXVuZ2knO1xuICBASW5wdXQoKVxuICBjaG9vc2VCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKVxuICBhZGRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICAvKiogRXN0ZW5zaW9uaSBhY2NldHRhdGUgc2VwYXJhdGUgZGEgdmlyZ29sYSAoZXNlbXBpbzogXCIucGRmLCAudHh0LCAuZG9jXCIpICovXG4gIEBJbnB1dCgpXG4gIGFjY2VwdDogc3RyaW5nO1xuICBAT3V0cHV0KClcbiAgZmlsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsZT4oKTtcbiAgZmlsZU1vZGVsOiBGaWxlO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGV4dCcsIHtzdGF0aWM6IHRydWV9KVxuICBpbnB1dFRleHQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKGNkcik7XG4gICAgdGhpcy5sb2dQcmVmaXggPSBgW2luYWlsLWlucHV0LWZpbGVdYDtcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG5cbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5nZXROb3RCbGFua1ZhbHVlKHRoaXMucGxhY2Vob2xkZXIpO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5lbWl0RGVidWcoYEBWaWV3Q2hpbGQoJ2Zvcm1Db250cm9sJylgKTtcbiAgICB0aGlzLmVtaXREZWJ1Zyh0aGlzLmlucHV0VGV4dCk7XG5cbiAgICBpZiAodGhpcy5mb2N1cykge1xuXG4gICAgICB0aGlzLnB1c2goXG4gICAgICAgIHRoaXMuZm9jdXMuc3Vic2NyaWJlKChzY3JvbGw6IGJvb2xlYW4pID0+IHtcblxuICAgICAgICAgIHRoaXMuZW1pdERlYnVnKGBDYXRjaCBmb2N1cyFgKTtcbiAgICAgICAgICBzZXRGb2N1cyh0aGlzLmlucHV0VGV4dC5uYXRpdmVFbGVtZW50LCBzY3JvbGwpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIHByb21wdFVwbG9hZCgpIHtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKS5jbGljaygpO1xuICB9XG5cbiAgY2hhbmdlTW9kZWwoJGV2ZW50OiBFdmVudCkge1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMuZmlsZU1vZGVsID0gJGV2ZW50LnRhcmdldC5maWxlcyAmJiAkZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuXG4gICAgaWYoIXRoaXMuYWRkQnV0dG9uKSB7XG4gICAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdCh0aGlzLmZpbGVNb2RlbCk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG5cbiAgICB0aGlzLmZpbGVNb2RlbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdCh1bmRlZmluZWQpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1pbmFpbC1jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvZm9ybS9pbnB1dC1maWxlL2lucHV0LWZpbGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNLLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQU81RCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsb0JBQW9CO0lBc0IxRCxZQUFvQixHQUFzQjtRQUN4QyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFETyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWpCMUMscUJBQWdCLEdBQVcsZ0JBQWdCLENBQUM7UUFFNUMsa0JBQWEsR0FBVyxVQUFVLENBQUM7UUFFbkMsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFN0IsY0FBUyxHQUFZLElBQUksQ0FBQztRQUsxQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVFwQyxJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBRWhDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFFBQVE7UUFFTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUVkLElBQUksQ0FBQyxJQUFJLENBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtnQkFFdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUNILENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxlQUFlO0lBRWYsQ0FBQztJQUVELFdBQVc7UUFFVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWE7UUFFdkIsYUFBYTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0QsSUFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELEtBQUs7UUFFSCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDOzs7WUE3RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLDIvR0FBMEM7O2FBRTNDOzs7WUFSc0IsaUJBQWlCOzs7MEJBV3JDLEtBQUs7K0JBRUwsS0FBSzs0QkFFTCxLQUFLOzJCQUVMLEtBQUs7d0JBRUwsS0FBSztxQkFHTCxLQUFLO3lCQUVMLE1BQU07d0JBSU4sU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge3NldEZvY3VzfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY29tbW9uLm9wZXJhdG9yc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC1pbnB1dC1maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LWZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1maWxlLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJbnB1dEZpbGVDb21wb25lbnQgZXh0ZW5kcyBGb3JtRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIGNob29zZUJ1dHRvblRleHQ6IHN0cmluZyA9ICdTY2VnbGkgaWwgZmlsZSc7XG4gIEBJbnB1dCgpXG4gIGFkZEJ1dHRvblRleHQ6IHN0cmluZyA9ICdBZ2dpdW5naSc7XG4gIEBJbnB1dCgpXG4gIGNob29zZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpXG4gIGFkZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIC8qKiBFc3RlbnNpb25pIGFjY2V0dGF0ZSBzZXBhcmF0ZSBkYSB2aXJnb2xhIChlc2VtcGlvOiBcIi5wZGYsIC50eHQsIC5kb2NcIikgKi9cbiAgQElucHV0KClcbiAgYWNjZXB0OiBzdHJpbmc7XG4gIEBPdXRwdXQoKVxuICBmaWxlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlPigpO1xuICBmaWxlTW9kZWw6IEZpbGU7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZXh0Jywge3N0YXRpYzogdHJ1ZX0pXG4gIGlucHV0VGV4dDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoY2RyKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9IGBbaW5haWwtaW5wdXQtZmlsZV1gO1xuICAgIHRoaXMuZGV0YWNoKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmdldE5vdEJsYW5rVmFsdWUodGhpcy5wbGFjZWhvbGRlcik7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICB0aGlzLmVtaXREZWJ1ZyhgQFZpZXdDaGlsZCgnZm9ybUNvbnRyb2wnKWApO1xuICAgIHRoaXMuZW1pdERlYnVnKHRoaXMuaW5wdXRUZXh0KTtcblxuICAgIGlmICh0aGlzLmZvY3VzKSB7XG5cbiAgICAgIHRoaXMucHVzaChcbiAgICAgICAgdGhpcy5mb2N1cy5zdWJzY3JpYmUoKHNjcm9sbDogYm9vbGVhbikgPT4ge1xuXG4gICAgICAgICAgdGhpcy5lbWl0RGVidWcoYENhdGNoIGZvY3VzIWApO1xuICAgICAgICAgIHNldEZvY3VzKHRoaXMuaW5wdXRUZXh0Lm5hdGl2ZUVsZW1lbnQsIHNjcm9sbCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJvbXB0VXBsb2FkKCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpLmNsaWNrKCk7XG4gIH1cblxuICBjaGFuZ2VNb2RlbCgkZXZlbnQ6IEV2ZW50KSB7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy5maWxlTW9kZWwgPSAkZXZlbnQudGFyZ2V0LmZpbGVzICYmICRldmVudC50YXJnZXQuZmlsZXNbMF07XG5cbiAgICBpZighdGhpcy5hZGRCdXR0b24pIHtcbiAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHRoaXMuZmlsZU1vZGVsKTtcbiAgICB9XG5cbiAgICB0aGlzLmNsZWFuRXJyb3IoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICByZXNldCgpIHtcblxuICAgIHRoaXMuZmlsZU1vZGVsID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jbGVhbkVycm9yKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,121 @@
1
+ import { ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
+ import { FormElementComponent } from "../form-element.component";
3
+ import { CHANGE_DETECTION_STRATEGY } from "../../base.component";
4
+ import { setFocus } from "../../../../utils/common.operators";
5
+ export class MultiSelectComponent extends FormElementComponent {
6
+ constructor(cdr) {
7
+ super(cdr);
8
+ this.cdr = cdr;
9
+ this.options = [];
10
+ this.values = [];
11
+ this.valuesChange = new EventEmitter();
12
+ this.placeholder = '- seleziona opzioni -';
13
+ this.toggle = () => window['$'](this.formControlElement.nativeElement).dropdown('toggle');
14
+ this.isExpanded = () => this.formControlElement.nativeElement.getAttribute('aria-expanded') === 'true';
15
+ this.hasFormControlFocus = () => this.formControlElement.nativeElement.matches(':focus');
16
+ this.hasDropdownMenuFocus = () => this.dropdownMenu.nativeElement.matches(':focus-within');
17
+ this.isChecked = (value) => this.values.some(v => v === value);
18
+ this.getInputTextValue = () => this.options.filter(opt => this.isChecked(opt.value)).map(opt => opt.label).join(', ');
19
+ this.pushValue = (value) => this.values = this.options.filter(opt => opt.value === value || this.isChecked(opt.value)).map(opt => opt.value);
20
+ this.isFocusOut = () => window['$'](this.multiSelect.nativeElement).find(document.activeElement).length == 0;
21
+ this.logPrefix = `[inail-multi-select]`;
22
+ this.detach();
23
+ }
24
+ ngOnChanges(changes) {
25
+ var _a, _b, _c;
26
+ super.ngOnChanges(changes);
27
+ if ((((_a = changes === null || changes === void 0 ? void 0 : changes.options) === null || _a === void 0 ? void 0 : _a.currentValue) || ((_b = changes === null || changes === void 0 ? void 0 : changes.sort) === null || _b === void 0 ? void 0 : _b.currentValue)) && this.sort) {
28
+ let direction = "ASC" == this.sort.toUpperCase() ? 1 : "DESC" == this.sort.toUpperCase() ? -1 : 0;
29
+ if (direction != 0 && this.options != undefined) {
30
+ this.options.sort((a, b) => a.label < b.label ? -direction : a.label > b.label ? direction : 0);
31
+ }
32
+ }
33
+ if ((_c = changes === null || changes === void 0 ? void 0 : changes.options) === null || _c === void 0 ? void 0 : _c.currentValue) {
34
+ this.inputTextValue = this.getInputTextValue();
35
+ }
36
+ this.cdr.detectChanges();
37
+ }
38
+ ngOnInit() {
39
+ super.ngOnInit();
40
+ this.emitDebug(`@ViewChild('formControl')`);
41
+ this.emitDebug(this.formControlElement);
42
+ if (this.focus) {
43
+ this.push(this.focus.subscribe((scroll) => {
44
+ this.emitDebug(`Catch focus!`);
45
+ setFocus(this.formControlElement.nativeElement, scroll);
46
+ }));
47
+ }
48
+ }
49
+ ngAfterViewInit() {
50
+ }
51
+ ngOnDestroy() {
52
+ super.ngOnDestroy();
53
+ }
54
+ onKeypress($event) {
55
+ $event.preventDefault();
56
+ }
57
+ onFocusIn() {
58
+ setTimeout(() => {
59
+ this.showDropdownMenu();
60
+ }, 250);
61
+ }
62
+ onFocusOut() {
63
+ setTimeout(() => {
64
+ if (this.isFocusOut()) {
65
+ this.closeDropdownMenu();
66
+ }
67
+ }, 150);
68
+ }
69
+ showDropdownMenu() {
70
+ setTimeout(() => {
71
+ if (!this.isExpanded()) {
72
+ this.toggle();
73
+ }
74
+ });
75
+ }
76
+ closeDropdownMenu() {
77
+ setTimeout(() => {
78
+ if (this.isExpanded()) {
79
+ this.toggle();
80
+ }
81
+ });
82
+ }
83
+ onCheck(cb) {
84
+ if (!cb.firstChange) {
85
+ if (cb.checked && !this.isChecked(cb.value)) {
86
+ this.pushValue(cb.value);
87
+ this.cleanError();
88
+ }
89
+ else if (!cb.checked && this.isChecked(cb.value)) {
90
+ this.values = this.values.filter(value => value != cb.value);
91
+ this.cleanError();
92
+ }
93
+ this.valuesChange.emit(this.values);
94
+ this.inputTextValue = this.getInputTextValue();
95
+ this.cdr.detectChanges();
96
+ }
97
+ }
98
+ }
99
+ MultiSelectComponent.decorators = [
100
+ { type: Component, args: [{
101
+ selector: 'inail-multi-select',
102
+ template: "<div #multiSelect\n class=\"form-group {{getResponsiveClass()}} noPaddingLeft {{class}} inail-multi-select\"\n [ngClass]=\"{'has-error': isThereError()}\">\n <label *ngIf=\"label\"\n class=\"control-label {{labelClass}}\"\n [ngClass]=\"{'sr-only': hiddenLabel}\"\n [attr.title]=\"labelTitle\"\n [for]=\"id\"\n [innerHTML]=\"getLabel()\"></label>\n <span *ngIf=\"showPopover()\"\n [style.padding-left.px]=\"5\">\n <inail-popover [iconClass]=\"popoverButtonIcon\"\n [buttonTitle]=\"popoverButtonTitle\"\n [header]=\"popoverHeader\"\n [content]=\"popoverContent\">\n </inail-popover>\n </span>\n <div class=\"form-control-wrapper\"\n [ngClass]=\"{'no-label' : hiddenLabel || !label}\">\n <input #formControl\n type=\"text\"\n [id]=\"id\"\n class=\"form-control dropdown-toggle {{inputClass}}\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n [ngClass]=\"{'disabled': disabled}\"\n [attr.name]=\"name\"\n [attr.title]=\"title\"\n [disabled]=\"disabled\"\n [readonly]=\"true\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-required]=\"required === true ? true : undefined\"\n [attr.aria-invalid]=\"isThereError() === true ? true : undefined\"\n [attr.aria-describedBy]=\"getAriaDescribedBy()\"\n (blur)=\"onBlur()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (keypress)=\"onKeypress($event)\"\n (keyup.enter)=\"enterUp.emit()\"\n [ngModel]=\"inputTextValue\">\n <div #dropdownMenu\n class=\"dropdown-menu\"\n (focusout)=\"onFocusOut()\"\n [attr.aria-labelledby]=\"id\">\n <ng-container *ngFor=\"let opt of options\">\n <div *ngIf=\"opt.beforeDivider\" class=\"divider\"></div>\n <div class=\"row\" [attr.tabIndex]=\"opt.disabled ? 0 : undefined\">\n <inail-checkbox [label]=\"opt.label\"\n [value]=\"opt.value\"\n [title]=\"opt.title\"\n [checked]=\"isChecked(opt.value)\"\n [disabled]=\"opt.disabled\"\n (stateChange)=\"onCheck($event)\">\n </inail-checkbox>\n </div>\n <div *ngIf=\"opt.afterDivider\" class=\"divider\"></div>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"showError()\" [id]=\"id+'-description'\">\n <div class=\"msg msg-errore\">\n <strong [innerHTML]=\"'ERRORE: '+this.error\"></strong>\n </div>\n <div *ngIf=\"description\" [innerHTML]=\"this.description\"></div>\n </div>\n <div *ngIf=\"description && !showError()\"\n [id]=\"id+'-description'\"\n [innerHTML]=\"this.description\">\n </div>\n</div>\n",
103
+ changeDetection: CHANGE_DETECTION_STRATEGY,
104
+ encapsulation: ViewEncapsulation.None,
105
+ styles: [".inail-multi-select .form-control-wrapper:after{font-family:FontAwesome;content:\"\\f078\";right:31px;position:absolute;top:35px;font-size:10px;color:#0083f5}.inail-multi-select .form-control-wrapper.no-label:after{top:11px}.inail-multi-select .form-control[readonly]:not([disabled]){background-color:#fff}.inail-multi-select .form-control:not([disabled]){cursor:pointer}.inail-multi-select .dropdown-menu .form-group{margin:0!important;padding-left:20px!important}.inail-multi-select .dropdown-menu .form-group:hover{background-color:#eaedf2}.inail-multi-select .dropdown-menu .form-group .checkbox{margin:0!important}.inail-multi-select .dropdown-menu .form-group .checkbox label{margin-top:5px!important;margin-bottom:5px!important;display:block!important}"]
106
+ },] }
107
+ ];
108
+ MultiSelectComponent.ctorParameters = () => [
109
+ { type: ChangeDetectorRef }
110
+ ];
111
+ MultiSelectComponent.propDecorators = {
112
+ multiSelect: [{ type: ViewChild, args: ['multiSelect', { static: true },] }],
113
+ formControlElement: [{ type: ViewChild, args: ['formControl', { static: true },] }],
114
+ dropdownMenu: [{ type: ViewChild, args: ['dropdownMenu', { static: true },] }],
115
+ options: [{ type: Input }],
116
+ values: [{ type: Input }],
117
+ valuesChange: [{ type: Output }],
118
+ placeholder: [{ type: Input }],
119
+ sort: [{ type: Input }]
120
+ };
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS9mb3JtL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUVULFlBQVksRUFFWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFtQixRQUFRLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQWtCOUUsTUFBTSxPQUFPLG9CQUFxQixTQUFRLG9CQUFvQjtJQXFDNUQsWUFBb0IsR0FBc0I7UUFDeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRE8sUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUF6QjFDLFlBQU8sR0FBd0IsRUFBRSxDQUFDO1FBR2xDLFdBQU0sR0FBYSxFQUFFLENBQUM7UUFHdEIsaUJBQVksR0FBMkIsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUdwRSxnQkFBVyxHQUFXLHVCQUF1QixDQUFDO1FBTzlDLFdBQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRixlQUFVLEdBQUcsR0FBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUssTUFB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QjtnQkFDOUIsdTVGQUE0QztnQkFFNUMsZUFBZSxFQUFFLHlCQUF5QjtnQkFDMUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2FBQ3RDOzs7WUFqQ0MsaUJBQWlCOzs7MEJBb0NoQixTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztpQ0FHdkMsU0FBUyxTQUFDLGFBQWEsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7MkJBR3ZDLFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO3NCQUd4QyxLQUFLO3FCQUdMLEtBQUs7MkJBR0wsTUFBTTswQkFHTixLQUFLO21CQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi9mb3JtLWVsZW1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge0NIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1l9IGZyb20gXCIuLi8uLi9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtpc05vdEJsYW5rT3JOdWxsLCBzZXRGb2N1c30gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2NvbW1vbi5vcGVyYXRvcnNcIjtcbmltcG9ydCB7U2VsZWN0T3B0aW9ufSBmcm9tIFwiLi4vc2VsZWN0L3NlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q2hlY2tib3hTdGF0ZX0gZnJvbSBcIi4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpU2VsZWN0T3B0aW9uIGV4dGVuZHMgU2VsZWN0T3B0aW9uIHtcblxuICB0aXRsZT86IHN0cmluZztcbiAgYmVmb3JlRGl2aWRlcj86IGJvb2xlYW47XG4gIGFmdGVyRGl2aWRlcj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luYWlsLW11bHRpLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tdWx0aS1zZWxlY3QuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgTXVsdGlTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBGb3JtRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBWaWV3Q2hpbGQoJ211bHRpU2VsZWN0Jywge3N0YXRpYzogdHJ1ZX0pXG4gIG11bHRpU2VsZWN0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdmb3JtQ29udHJvbCcsIHtzdGF0aWM6IHRydWV9KVxuICBmb3JtQ29udHJvbEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duTWVudScsIHtzdGF0aWM6IHRydWV9KVxuICBkcm9wZG93bk1lbnU6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpXG4gIG9wdGlvbnM6IE11bHRpU2VsZWN0T3B0aW9uW10gPSBbXTtcblxuICBASW5wdXQoKVxuICB2YWx1ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHZhbHVlc0NoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZ1tdPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgQElucHV0KClcbiAgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICctIHNlbGV6aW9uYSBvcHppb25pIC0nO1xuXG4gIEBJbnB1dCgpXG4gIHNvcnQ6ICdhc2MnIHwgJ2Rlc2MnO1xuXG4gIGlucHV0VGV4dFZhbHVlOiBzdHJpbmc7XG5cbiAgdG9nZ2xlID0gKCkgPT4gd2luZG93WyckJ10odGhpcy5mb3JtQ29udHJvbEVsZW1lbnQubmF0aXZlRWxlbWVudCkuZHJvcGRvd24oJ3RvZ2dsZScpO1xuICBpc0V4cGFuZGVkID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5mb3JtQ29udHJvbEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ3RydWUnO1xuICBoYXNGb3JtQ29udHJvbEZvY3VzID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5mb3JtQ29udHJvbEVsZW1lbnQubmF0aXZlRWxlbWVudC5tYXRjaGVzKCc6Zm9jdXMnKTtcbiAgaGFzRHJvcGRvd25NZW51Rm9jdXMgPSAoKTogYm9vbGVhbiA9PiB0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50Lm1hdGNoZXMoJzpmb2N1cy13aXRoaW4nKTtcbiAgaXNDaGVja2VkID0gKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHRoaXMudmFsdWVzLnNvbWUodiA9PiB2ID09PSB2YWx1ZSk7XG4gIGdldElucHV0VGV4dFZhbHVlID0gKCk6IHN0cmluZyA9PiB0aGlzLm9wdGlvbnMuZmlsdGVyKG9wdCA9PiB0aGlzLmlzQ2hlY2tlZChvcHQudmFsdWUpKS5tYXAob3B0ID0+IG9wdC5sYWJlbCkuam9pbignLCAnKTtcbiAgcHVzaFZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+IHRoaXMudmFsdWVzID0gdGhpcy5vcHRpb25zLmZpbHRlcihvcHQgPT4gb3B0LnZhbHVlID09PSB2YWx1ZSB8fCB0aGlzLmlzQ2hlY2tlZChvcHQudmFsdWUpKS5tYXAob3B0ID0+IG9wdC52YWx1ZSk7XG4gIGlzRm9jdXNPdXQgPSAoKSA9PiB3aW5kb3dbJyQnXSh0aGlzLm11bHRpU2VsZWN0Lm5hdGl2ZUVsZW1lbnQpLmZpbmQoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkubGVuZ3RoID09IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoY2RyKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9IGBbaW5haWwtbXVsdGktc2VsZWN0XWA7XG4gICAgdGhpcy5kZXRhY2goKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuXG4gICAgaWYgKChjaGFuZ2VzPy5vcHRpb25zPy5jdXJyZW50VmFsdWUgfHwgY2hhbmdlcz8uc29ydD8uY3VycmVudFZhbHVlKSAmJiB0aGlzLnNvcnQpIHtcblxuICAgICAgbGV0IGRpcmVjdGlvbjogbnVtYmVyID0gXCJBU0NcIiA9PSB0aGlzLnNvcnQudG9VcHBlckNhc2UoKSA/IDEgOiBcIkRFU0NcIiA9PSB0aGlzLnNvcnQudG9VcHBlckNhc2UoKSA/IC0xIDogMDtcblxuICAgICAgaWYgKGRpcmVjdGlvbiAhPSAwICYmIHRoaXMub3B0aW9ucyAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgICB0aGlzLm9wdGlvbnMuc29ydCgoYTogTXVsdGlTZWxlY3RPcHRpb24sIGI6IE11bHRpU2VsZWN0T3B0aW9uKSA9PiBhLmxhYmVsIDwgYi5sYWJlbCA/IC1kaXJlY3Rpb24gOiBhLmxhYmVsID4gYi5sYWJlbCA/IGRpcmVjdGlvbiA6IDApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmKGNoYW5nZXM/Lm9wdGlvbnM/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLmlucHV0VGV4dFZhbHVlID0gdGhpcy5nZXRJbnB1dFRleHRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMuZW1pdERlYnVnKGBAVmlld0NoaWxkKCdmb3JtQ29udHJvbCcpYCk7XG4gICAgdGhpcy5lbWl0RGVidWcodGhpcy5mb3JtQ29udHJvbEVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuZm9jdXMpIHtcblxuICAgICAgdGhpcy5wdXNoKFxuICAgICAgICB0aGlzLmZvY3VzLnN1YnNjcmliZSgoc2Nyb2xsOiBib29sZWFuKSA9PiB7XG5cbiAgICAgICAgICB0aGlzLmVtaXREZWJ1ZyhgQ2F0Y2ggZm9jdXMhYCk7XG4gICAgICAgICAgc2V0Rm9jdXModGhpcy5mb3JtQ29udHJvbEVsZW1lbnQubmF0aXZlRWxlbWVudCwgc2Nyb2xsKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgb25LZXlwcmVzcygkZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblxuICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgb25Gb2N1c0luKCkge1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgIHRoaXMuc2hvd0Ryb3Bkb3duTWVudSgpO1xuXG4gICAgfSwgMjUwKVxuICB9XG5cbiAgb25Gb2N1c091dCgpIHtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuXG4gICAgICBpZiAodGhpcy5pc0ZvY3VzT3V0KCkpIHtcblxuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25NZW51KCk7XG4gICAgICB9XG4gICAgfSwgMTUwKTtcbiAgfVxuXG4gIHNob3dEcm9wZG93bk1lbnUoKSB7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcblxuICAgICAgaWYoIXRoaXMuaXNFeHBhbmRlZCgpKSB7XG5cbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlRHJvcGRvd25NZW51KCkge1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG5cbiAgICAgIGlmKHRoaXMuaXNFeHBhbmRlZCgpKSB7XG5cbiAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2hlY2soY2I6IENoZWNrYm94U3RhdGUpIHtcblxuICAgIGlmICghY2IuZmlyc3RDaGFuZ2UpIHtcblxuICAgICAgaWYgKGNiLmNoZWNrZWQgJiYgIXRoaXMuaXNDaGVja2VkKGNiLnZhbHVlKSkge1xuXG4gICAgICAgIHRoaXMucHVzaFZhbHVlKGNiLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jbGVhbkVycm9yKCk7XG5cbiAgICAgIH0gZWxzZSBpZiAoIWNiLmNoZWNrZWQgJiYgdGhpcy5pc0NoZWNrZWQoY2IudmFsdWUpKSB7XG5cbiAgICAgICAgdGhpcy52YWx1ZXMgPSB0aGlzLnZhbHVlcy5maWx0ZXIodmFsdWUgPT4gdmFsdWUgIT0gY2IudmFsdWUpO1xuICAgICAgICB0aGlzLmNsZWFuRXJyb3IoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XG4gICAgICB0aGlzLmlucHV0VGV4dFZhbHVlID0gdGhpcy5nZXRJbnB1dFRleHRWYWx1ZSgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -7,8 +7,6 @@ import { TrCheckboxComponent } from "../tr-checkbox/tr-checkbox.component";
7
7
  const DEFAULT_TABLE_LENGTH = 10;
8
8
  const ASC = 'asc';
9
9
  const DESC = 'desc';
10
- export class PaginationState {
11
- }
12
10
  export class TableComponent extends ResponsiveElementComponent {
13
11
  constructor(cdr, renderer) {
14
12
  super(cdr);
@@ -51,7 +49,7 @@ export class TableComponent extends ResponsiveElementComponent {
51
49
  this.detach();
52
50
  }
53
51
  ngOnChanges(changes) {
54
- var _a, _b, _c, _d, _e, _f;
52
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
55
53
  super.ngOnChanges(changes);
56
54
  // Controllo se la paginazione richiesta e' interna o esterna
57
55
  if (!this.externalPaginationSorting
@@ -59,6 +57,16 @@ export class TableComponent extends ResponsiveElementComponent {
59
57
  && ((_b = changes.paginationState) === null || _b === void 0 ? void 0 : _b.currentValue) != undefined) {
60
58
  this.externalPaginationSorting = true;
61
59
  }
60
+ // Se per la paginazione esterna viene specificata una proprieta di sorting
61
+ // attivo il componente thLabel associato
62
+ if ((_d = (_c = changes.paginationState) === null || _c === void 0 ? void 0 : _c.currentValue) === null || _d === void 0 ? void 0 : _d.sortProperty) {
63
+ this.attivaThLabelOrdinamentoSpecificato();
64
+ }
65
+ // Se per la paginazione interna viene specificato un ordinamento iniziale
66
+ // attivo il componente thLabel associato
67
+ if ((_f = (_e = changes.initialSort) === null || _e === void 0 ? void 0 : _e.currentValue) === null || _f === void 0 ? void 0 : _f.sortProperty) {
68
+ this.attivaThLabelOrdinamentoSpecificato();
69
+ }
62
70
  // Verifico se e' cambiata la lista degli elementi in input.
63
71
  // Nel caso in cui si stia effettuando una paginazione interna
64
72
  // emetto il sottoinsieme inerente la prima pagina
@@ -72,7 +80,7 @@ export class TableComponent extends ResponsiveElementComponent {
72
80
  }
73
81
  // Richiesta di paginazione
74
82
  if (!this.externalPaginationSorting
75
- && ((_c = changes.doPagination) === null || _c === void 0 ? void 0 : _c.currentValue)) {
83
+ && ((_g = changes.doPagination) === null || _g === void 0 ? void 0 : _g.currentValue)) {
76
84
  this.push(changes.doPagination.currentValue.subscribe((info) => {
77
85
  this.lengthOnChange(info.pageSize);
78
86
  setTimeout(() => this.doSorting(info.sortProperty, info.sortDirection), 100);
@@ -86,12 +94,12 @@ export class TableComponent extends ResponsiveElementComponent {
86
94
  this.lengthOnChange(this.elementsPerPage);
87
95
  }
88
96
  // Calcolo il numero di colonne visibili
89
- if (((_d = changes.noDataFound) === null || _d === void 0 ? void 0 : _d.currentValue) === true) {
97
+ if (((_h = changes.noDataFound) === null || _h === void 0 ? void 0 : _h.currentValue) === true) {
90
98
  // setTimeout(() => this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length);
91
99
  this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length;
92
100
  }
93
- if ((_e = changes.selectableRowValues) === null || _e === void 0 ? void 0 : _e.currentValue) {
94
- this.righeSelezionabili = [...(_f = changes.selectableRowValues) === null || _f === void 0 ? void 0 : _f.currentValue];
101
+ if ((_j = changes.selectableRowValues) === null || _j === void 0 ? void 0 : _j.currentValue) {
102
+ this.righeSelezionabili = [...(_k = changes.selectableRowValues) === null || _k === void 0 ? void 0 : _k.currentValue];
95
103
  }
96
104
  this.cdr.detectChanges();
97
105
  }
@@ -108,6 +116,7 @@ export class TableComponent extends ResponsiveElementComponent {
108
116
  ngAfterViewInit() {
109
117
  this.inizializzaTabella(this.thLabelComponents);
110
118
  this.lookAtThLabel(this.thLabelComponents);
119
+ this.attivaThLabelOrdinamentoSpecificato();
111
120
  setTimeout(() => { var _a; return this.visualizzaBaseFooter = ((_a = this.baseFooter) === null || _a === void 0 ? void 0 : _a.nativeElement.childElementCount) > 0; });
112
121
  this.cdr.detectChanges();
113
122
  }
@@ -418,6 +427,42 @@ export class TableComponent extends ResponsiveElementComponent {
418
427
  return !this.disablePagination
419
428
  && (this.dataSource != undefined || (this.externalPaginationSorting != undefined && this.paginationState != undefined));
420
429
  }
430
+ /**
431
+ * Attiva il th label inerente l'ordinamento specificato
432
+ */
433
+ attivaThLabelOrdinamentoSpecificato() {
434
+ if (this.thLabelComponents) {
435
+ // Paginazione esterna
436
+ if (this.externalPaginationSorting && this.paginationState) {
437
+ let thLabel = this.thLabelComponents.find(item => item.property == this.paginationState.sortProperty);
438
+ this.setSortDirection(thLabel, this.paginationState.sortDirection);
439
+ }
440
+ // Ordinamento iniziale paginazione interna
441
+ else if (this.initialSort) {
442
+ this.thLabelComponents.forEach(thLabel => {
443
+ thLabel.property == this.initialSort.sortProperty
444
+ ? this.setSortDirection(thLabel, this.initialSort.sortDirection)
445
+ : this.setSortDirection(thLabel, undefined);
446
+ });
447
+ }
448
+ }
449
+ }
450
+ setSortDirection(thLabel, direction) {
451
+ if (thLabel) {
452
+ switch (direction) {
453
+ case "asc":
454
+ thLabel.direction = ThLabelComponent.ASC;
455
+ break;
456
+ case "desc":
457
+ thLabel.direction = ThLabelComponent.DESC;
458
+ break;
459
+ default:
460
+ thLabel.direction = ThLabelComponent.UNSORTED;
461
+ break;
462
+ }
463
+ this.modificaTh(thLabel);
464
+ }
465
+ }
421
466
  }
422
467
  TableComponent.decorators = [
423
468
  { type: Component, args: [{
@@ -438,6 +483,7 @@ TableComponent.propDecorators = {
438
483
  displayedDataChange: [{ type: Output }],
439
484
  doPagination: [{ type: Input }],
440
485
  elementsPerPage: [{ type: Input }],
486
+ initialSort: [{ type: Input }],
441
487
  paginationState: [{ type: Input }],
442
488
  elementsPerPageOptions: [{ type: Input }],
443
489
  noDataFound: [{ type: Input }],
@@ -461,4 +507,4 @@ TableComponent.propDecorators = {
461
507
  tablePageSelectorComponent: [{ type: ViewChild, args: [InailTablePageSelectorComponent,] }],
462
508
  baseFooter: [{ type: ViewChild, args: ['baseFooter',] }]
463
509
  };
464
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5haWwtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUdULFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFOUUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDakgsT0FBTyxFQUFjLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsTUFBTSxvQkFBb0IsR0FBVyxFQUFFLENBQUM7QUFJeEMsTUFBTSxHQUFHLEdBQWtCLEtBQUssQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBa0IsTUFBTSxDQUFDO0FBRW5DLE1BQU0sT0FBTyxlQUFlO0NBTzNCO0FBa0JELE1BQU0sT0FBTyxjQUFlLFNBQVEsMEJBQTBCO0lBK0g1RCxZQUFvQixHQUFzQixFQUFVLFFBQW1CO1FBQ3JFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQURPLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTNIdkUsOEJBQXlCLEdBQVksS0FBSyxDQUFDO1FBYTNDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFNaEQsb0JBQWUsR0FB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SUFBSSxDQUFDLGlCQUFpQjtlQUN6QixDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDNUgsQ0FBQzs7O1lBbHBCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLHNxRkFBcUM7Z0JBRXJDLGVBQWUsRUFBRSx5QkFBeUI7Z0JBQzFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOzthQUN0Qzs7O1lBdkRDLGlCQUFpQjtZQVdqQixTQUFTOzs7eUJBc0RSLEtBQUs7NEJBSUwsS0FBSztrQ0FHTCxNQUFNOzJCQUdOLEtBQUs7OEJBR0wsS0FBSzs4QkFNTCxLQUFLO3FDQUtMLEtBQUs7MEJBU0wsS0FBSzs4QkFHTCxLQUFLO2dDQUdMLEtBQUs7eUJBR0wsTUFBTTt1QkFHTixLQUFLO3NCQU1MLEtBQUs7NEJBR0wsS0FBSztzQkFHTCxLQUFLOzBCQUdMLEtBQUs7eUJBR0wsS0FBSztvQkFHTCxLQUFLO3lCQUdMLEtBQUs7MEJBR0wsS0FBSztrQ0FHTCxLQUFLOzJCQUdMLE1BQU07Z0NBR04sTUFBTTtnQ0FHTixlQUFlLFNBQUMsZ0JBQWdCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO21DQUdyRCxlQUFlLFNBQUMsbUJBQW1CLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO3lDQUd4RCxTQUFTLFNBQUMsK0JBQStCO3lCQUd6QyxTQUFTLFNBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZfSBmcm9tIFwiLi4vLi4vYmFzZS5jb21wb25lbnRcIjtcbmltcG9ydCB7UmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi8uLi9yZXNwb25zaXZlLWVsZW1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7SW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudH0gZnJvbSBcIi4uL2luYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IvaW5haWwtdGFibGUtcGFnZS1zZWxlY3Rvci5jb21wb25lbnRcIjtcbmltcG9ydCB7U29ydGluZ0luZm8sIFRoTGFiZWxDb21wb25lbnR9IGZyb20gXCIuLi90aC1sYWJlbC90aC1sYWJlbC5jb21wb25lbnRcIjtcbmltcG9ydCB7VHJDaGVja2JveENvbXBvbmVudH0gZnJvbSBcIi4uL3RyLWNoZWNrYm94L3RyLWNoZWNrYm94LmNvbXBvbmVudFwiO1xuXG5jb25zdCBERUZBVUxUX1RBQkxFX0xFTkdUSDogbnVtYmVyID0gMTA7XG5cbnR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuXG5jb25zdCBBU0M6IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcbmNvbnN0IERFU0M6IFNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG5cbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uU3RhdGUge1xuXG4gIGZ1bGxMaXN0U2l6ZT86IG51bWJlcjtcbiAgcGFnZU51bWJlcj86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIHNvcnRQcm9wZXJ0eT86IHN0cmluZztcbiAgc29ydERpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xufVxuXG5pbnRlcmZhY2UgVGFibGVDaGFuZ2VzIGV4dGVuZHMgU2ltcGxlQ2hhbmdlcyB7XG5cbiAgZGF0YVNvdXJjZT86IFNpbXBsZUNoYW5nZSxcbiAgcGFnaW5hdGlvblN0YXRlPzogU2ltcGxlQ2hhbmdlLFxuICBkb1BhZ2luYXRpb24/OiBTaW1wbGVDaGFuZ2UsXG4gIG5vRGF0YUZvdW5kPzogU2ltcGxlQ2hhbmdlXG4gIGVsZW1lbnRzUGVyUGFnZT86IFNpbXBsZUNoYW5nZVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgUmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcblxuICB0YWJsZUxlbmd0aDogbnVtYmVyO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICBleHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gLS0tIFBhZ2luYXppb25lIElOVEVSTkEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBPYmJsaWdhdG9yaW9cbiAgQElucHV0KClcbiAgZGF0YVNvdXJjZTogYW55W107XG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXllZERhdGE6IGFueVtdO1xuXG4gIEBPdXRwdXQoKVxuICBkaXNwbGF5ZWREYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICBASW5wdXQoKVxuICBkb1BhZ2luYXRpb246IE9ic2VydmFibGU8UGFnaW5hdGlvblN0YXRlPjtcblxuICBASW5wdXQoKVxuICBlbGVtZW50c1BlclBhZ2U6IG51bWJlciA9IERFRkFVTFRfVEFCTEVfTEVOR1RIO1xuXG4gIC8vIC0tLSBQYWdpbmF6aW9uZSBJTlRFUk5BIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgQElucHV0KClcbiAgZWxlbWVudHNQZXJQYWdlT3B0aW9uczogbnVtYmVyW10gPSBbMTAsIDI1LCA1MCwgMTAwXTtcblxuICAvLyBASW5wdXQoKVxuICAvLyB3YWl0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gd2FpdGluZ1RleHQ6IHN0cmluZyA9ICdSZWN1cGVybyBpbiBjb3Jzby4uLic7XG5cbiAgQElucHV0KClcbiAgbm9EYXRhRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBub0RhdGFGb3VuZFRleHQ6IHN0cmluZyA9ICdOZXNzdW4gZWxlbWVudG8gdHJvdmF0byc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZVBhZ2luYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcGFnaW5hdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvblN0YXRlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHRhbGxSb3dzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gYWx0ZXJuYXRpdmVUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNhcHRpb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBjYXB0aW9uSGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYmdXaGl0ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZGVzY3JpcHRpb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0YWJsZUNsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0aXRsZUNsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGV0YWlsc0xpbms6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZWxlY3RhYmxlUm93VmFsdWVzOiBzdHJpbmdbXTtcblxuICBAT3V0cHV0KClcbiAgZGV0YWlsc0NsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNoZWNrZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRoTGFiZWxDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gIHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUckNoZWNrYm94Q29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICB0ckNoZWNrYm94Q29tcG9uZW50czogUXVlcnlMaXN0PFRyQ2hlY2tib3hDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudClcbiAgdGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ6IEluYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYmFzZUZvb3RlcicpXG4gIGJhc2VGb290ZXI6IEVsZW1lbnRSZWY7XG5cbiAgdmlzdWFsaXp6YUJhc2VGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIG51bWVyb0NvbG9ubmU6IG51bWJlcjtcblxuICAvLyBJbnNpZW1pIGRlbGxlIFN1YnNjcmlwdGlvbiBhZ2xpIGV2ZW50aSBkZWkgVHJDaGVja2JveENvbXBvbmVudFxuICB0cmNiSW5pdFN1YnNjcmlwdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuICB0cmNiQ2xpY2tTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgdHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcblxuICByaWdoZVNlbGV6aW9uYXRlOiBzdHJpbmdbXSA9IFtdO1xuICByaWdoZVNlbGV6aW9uYWJpbGk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0UGFnZVNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy50YWJsZUxlbmd0aDtcbiAgZ2V0TGlzdFNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLmZ1bGxMaXN0U2l6ZSA6IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7XG4gIGdldEN1cnJlbnRQYWdlID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyIDogdGhpcy5jdXJyZW50UGFnZTtcblxuICAvLyBPcGVyYXRvcmkgcGVyIGdlc3Rpb25lIHNlbGV6aW9uZSByaWdoZVxuICBpc0NoZWNrZWQgPSAodHJjYlZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHRoaXMucmlnaGVTZWxlemlvbmF0ZS5zb21lKHZhbHVlID0+IHZhbHVlID09IHRyY2JWYWx1ZSk7XG4gIGlzQWxsQ2hlY2tlZCA9ICgpOiBib29sZWFuID0+IHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmxlbmd0aCA+IDAgJiYgdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkuZXZlcnkodGhpcy5pc0NoZWNrZWQpO1xuICBpc1RoQ2hlY2tib3ggPSAodHJjYjogVHJDaGVja2JveENvbXBvbmVudCk6IGJvb2xlYW4gPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgdGggIyR7dHJjYi5pZH1gKS5sZW5ndGggPiAwO1xuICBpc1NlbGV6aW9uYWJpbGUgPSAodmFsdWU6IHN0cmluZykgPT4gdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkuc29tZSh2YWxvcmVTZWxlemlvbmFiaWxlID0+IHZhbG9yZVNlbGV6aW9uYWJpbGUgPT0gdmFsdWUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgc3VwZXIoY2RyKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtdGFibGVdJztcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogVGFibGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICAgIC8vIENvbnRyb2xsbyBzZSBsYSBwYWdpbmF6aW9uZSByaWNoaWVzdGEgZScgaW50ZXJuYSBvIGVzdGVybmFcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5wYWdpbmF0aW9uU3RhdGU/LmZpcnN0Q2hhbmdlID09PSB0cnVlXG4gICAgICAmJiBjaGFuZ2VzLnBhZ2luYXRpb25TdGF0ZT8uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIFZlcmlmaWNvIHNlIGUnIGNhbWJpYXRhIGxhIGxpc3RhIGRlZ2xpIGVsZW1lbnRpIGluIGlucHV0LlxuICAgIC8vIE5lbCBjYXNvIGluIGN1aSBzaSBzdGlhIGVmZmV0dHVhbmRvIHVuYSBwYWdpbmF6aW9uZSBpbnRlcm5hXG4gICAgLy8gZW1ldHRvIGlsIHNvdHRvaW5zaWVtZSBpbmVyZW50ZSBsYSBwcmltYSBwYWdpbmFcbiAgICBpZiAoY2hhbmdlcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgJiYgIWNoYW5nZXMuZGF0YVNvdXJjZS5maXJzdENoYW5nZVxuICAgICAgJiYgIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICBpZiAodGhpcy50YWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudCkge1xuXG4gICAgICAgIHRoaXMudGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRTdWJzZXQoMSk7XG4gICAgfVxuXG4gICAgLy8gUmljaGllc3RhIGRpIHBhZ2luYXppb25lXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmdcbiAgICAgICYmIGNoYW5nZXMuZG9QYWdpbmF0aW9uPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5wdXNoKFxuICAgICAgICBjaGFuZ2VzLmRvUGFnaW5hdGlvbi5jdXJyZW50VmFsdWUuc3Vic2NyaWJlKChpbmZvOiBQYWdpbmF0aW9uU3RhdGUpID0+IHtcblxuICAgICAgICAgIHRoaXMubGVuZ3RoT25DaGFuZ2UoaW5mby5wYWdlU2l6ZSk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmRvU29ydGluZyhpbmZvLnNvcnRQcm9wZXJ0eSwgaW5mby5zb3J0RGlyZWN0aW9uKSwgMTAwKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucGFnZU9uQ2hhbmdlKGluZm8ucGFnZU51bWJlciksIDIwMCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEVsZW1lbnRpIHBlciBwYWdpbmFcbiAgICBpZiAoY2hhbmdlcy5lbGVtZW50c1BlclBhZ2UgIT0gdW5kZWZpbmVkXG4gICAgICAmJiAhY2hhbmdlcy5lbGVtZW50c1BlclBhZ2UuZmlyc3RDaGFuZ2VcbiAgICAgICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcpIHtcblxuICAgICAgdGhpcy5sZW5ndGhPbkNoYW5nZSh0aGlzLmVsZW1lbnRzUGVyUGFnZSk7XG4gICAgfVxuXG4gICAgLy8gQ2FsY29sbyBpbCBudW1lcm8gZGkgY29sb25uZSB2aXNpYmlsaVxuICAgIGlmIChjaGFuZ2VzLm5vRGF0YUZvdW5kPy5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcblxuICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB0aGlzLm51bWVyb0NvbG9ubmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt0aGlzLmlkfSB0aGApLmxlbmd0aCk7XG4gICAgICB0aGlzLm51bWVyb0NvbG9ubmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt0aGlzLmlkfSB0aGApLmxlbmd0aDtcbiAgICB9XG5cbiAgICBpZihjaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaSA9IFsuLi5jaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy50YWJsZUxlbmd0aCA9IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy5lbGVtZW50c1BlclBhZ2U7XG5cbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5pbmZvKCduZ09uSW5pdC0tLScsIHRoaXMuY3VycmVudFBhZ2UpXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCh0aGlzLmN1cnJlbnRQYWdlIHx8IDEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5pbml6aWFsaXp6YVRhYmVsbGEodGhpcy50aExhYmVsQ29tcG9uZW50cyk7XG4gICAgdGhpcy5sb29rQXRUaExhYmVsKHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnZpc3VhbGl6emFCYXNlRm9vdGVyID0gdGhpcy5iYXNlRm9vdGVyPy5uYXRpdmVFbGVtZW50LmNoaWxkRWxlbWVudENvdW50ID4gMCk7XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG5cbiAgICB0aGlzLmdlc3Rpc2NpVHJDaGVja2JveCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlc3Rpb25lIGRlaSBjaGVja2JveCBwZXIgbGEgc2VsZXppb25lIGRlbGxlIHJpZ2hlXG4gICAqL1xuICBwdWJsaWMgZ2VzdGlzY2lUckNoZWNrYm94KCkge1xuXG4gICAgaWYgKHRoaXMudHJDaGVja2JveENvbXBvbmVudHM/Lmxlbmd0aCA+IDApIHtcblxuICAgICAgdGhpcy50ckNoZWNrYm94Q29tcG9uZW50cy5mb3JFYWNoKCh0cmNiOiBUckNoZWNrYm94Q29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgLy8gR2VzdGlvbmUgZXZlbnRvIGluaXRDb21wbGV0ZVxuICAgICAgICAvLyBFZmZldHR1byBsYSBzdWJzY3JpYmUgc2Ugbm9uIG5lIGUnIGdpYSBwcmVzZW50ZVxuICAgICAgICAvLyB1bmEgU3Vic2NyaXB0aW9uIHBlciBxdWVsIHRyY2JcbiAgICAgICAgaWYgKHRoaXMudHJjYkluaXRTdWJzY3JpcHRpb25zW3RyY2IuaWRdID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgdGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPSB0cmNiLmluaXRDb21wbGV0ZS5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAgICAgICAvLyBTZSBsJ2luc2llbWUgZGkgdHV0dGkgaSB2YWxvcmkgc2VsZXppb25hYmlsaVxuICAgICAgICAgICAgLy8gbm9uIGUnIHN0YXRvIHBhc3NhdG8gZGFsbCdlc3Rlcm5vXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RhYmxlUm93VmFsdWVzID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgICAgIC8vIFJpY2FsY29sbyBpIHZhbG9yaSBzZWxlemlvbmFiaWxpXG4gICAgICAgICAgICAgIHRoaXMucmlnaGVTZWxlemlvbmFiaWxpID0gdGhpcy50ckNoZWNrYm94Q29tcG9uZW50cy5maWx0ZXIodHJjYiA9PiAhdGhpcy5pc1RoQ2hlY2tib3godHJjYikpLm1hcCh0cmNiID0+IHRyY2IudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2VzdGlvbmUgZXZlbnRvIGNsaWNrXG4gICAgICAgIGlmICh0aGlzLnRyY2JDbGlja1N1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICB0aGlzLnRyY2JDbGlja1N1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPSB0cmNiLm9uY2xpY2suc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgICAgICAgaWYodGhpcy5pc1RoQ2hlY2tib3godHJjYikpIHtcblxuICAgICAgICAgICAgICB0aGlzLmNoZWNrQWxsT25DbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tPbkNsaWNrKHRyY2IudmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWRSb3dzQ2hhbmdlLmVtaXQodGhpcy5yaWdoZVNlbGV6aW9uYXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdlc3Rpb25lIGV2ZW50byBvbkRlc3Ryb3lcbiAgICAgICAgLy8gUXVhbmRvIHVuIHRjcmIgZW1ldHRlIGwnZXZlbnRvIG9uRGVzdHJveVxuICAgICAgICAvLyBlZmZldHR1byBsJ3Vuc3Vic2NyaWJlIGEgdHV0dGkgZ2xpIGV2ZW50aSBhZCBlc3NvIGNvbGxlZ2F0b1xuICAgICAgICBpZiAodGhpcy50cmNiRGVzdHJveVN1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2Iub25EZXN0cm95LnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgIHRoaXMudHJjYkluaXRTdWJzY3JpcHRpb25zW3RyY2IuaWRdPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy50cmNiQ2xpY2tTdWJzY3JpcHRpb25zW3RyY2IuaWRdPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy50cmNiRGVzdHJveVN1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgIC8vIEluIHF1ZXN0byBtb2RvIGV2aXRvIGNoZSBnbGkgb2dnZXR0aSBjcmVzY2FubyBpbiBtYW5pZXJhIGluY29udHJvbGxhdGFcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyY2JJbml0U3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyY2JDbGlja1N1YnNjcmlwdGlvbnNbdHJjYi5pZF07XG4gICAgICAgICAgICBkZWxldGUgdGhpcy50cmNiRGVzdHJveVN1YnNjcmlwdGlvbnNbdHJjYi5pZF07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBJbmRpY28gYWQgdW4gdHJjYiBzZSBlJyBzZWxlemlvbmF0by5cbiAgICAgIHRoaXMudHJDaGVja2JveENvbXBvbmVudHMuZm9yRWFjaCgodHJjYjogVHJDaGVja2JveENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgIGlmICh0cmNiKSB7XG5cbiAgICAgICAgICBpZih0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkge1xuXG4gICAgICAgICAgICB0cmNiLnNldENoZWNrZWQodGhpcy5pc0FsbENoZWNrZWQoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHJjYi5zZXRDaGVja2VkKHRoaXMuaXNDaGVja2VkKHRyY2IudmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGljayBkaSB1biB0cmNiXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZUNiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrT25DbGljayh2YWx1ZUNiOiBzdHJpbmcpIHtcblxuICAgIGlmICh0aGlzLmlzQ2hlY2tlZCh2YWx1ZUNiKSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9IHZhbHVlQ2IpO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIHRoaXMucmlnaGVTZWxlemlvbmF0ZS5wdXNoKHZhbHVlQ2IpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQWxsT25DbGljaygpIHtcblxuICAgIGlmICh0aGlzLmlzQWxsQ2hlY2tlZCgpKSB7XG5cbiAgICAgIHRoaXMucmlnaGVTZWxlemlvbmF0ZSA9IHRoaXMucmlnaGVTZWxlemlvbmF0ZS5maWx0ZXIodmFsdWUgPT4gIXRoaXMuaXNTZWxlemlvbmFiaWxlKHZhbHVlKSk7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuY29uY2F0KHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmZpbHRlcih2YWx1ZSA9PiAhdGhpcy5pc0NoZWNrZWQodmFsdWUpKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmV0dHVhIHZhcmllIG9wZXJhemlvbmkgZGkgaW5pemlhbGl6emF6aW9uZSBkZWxsYSB0YWJlbGxhXG4gICAqL1xuICBwdWJsaWMgaW5pemlhbGl6emFUYWJlbGxhKHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD4pIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50cykge1xuXG4gICAgICAvLyBJbml6aWFsaXp6byB0dXR0aSBpIHRoIGRlbGxhIHRhYmVsbGFcbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goXG4gICAgICAgICh0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgICB0aGlzLm1vZGlmaWNhVGgodGhMYWJlbCk7XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpIG1ldHRlIGluIGFzY29sdG8gc3VnbGkgZXZlbnRpIGVtZXNzaSBkYWkgdGhMYWJlbENvbXBvbmVudHMgZGF0aSBpbiBpbnB1dFxuICAgKiBwZXIgcG90ZXIgZXNlZ3VpcmUgbGUgb3Bwb3J0dW5lIGF6aW9uaVxuICAgKlxuICAgKiBAcGFyYW0gdGhMYWJlbENvbXBvbmVudHNcbiAgICovXG4gIHB1YmxpYyBsb29rQXRUaExhYmVsKHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD4pIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50cykge1xuXG4gICAgICB0aGlzLnRoTGFiZWxDb21wb25lbnRzID0gdGhMYWJlbENvbXBvbmVudHM7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goXG4gICAgICAgICh0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgICBpZiAodGhMYWJlbCkge1xuXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgYWwgY2xpY2sgZGVsIHRoIGxhYmVsXG4gICAgICAgICAgICB0aGlzLnB1c2goXG4gICAgICAgICAgICAgIHRoTGFiZWwuY2xpY2suc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChpbmZvOiBTb3J0aW5nSW5mbykgPT4ge1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLnBlcmZvcm1Tb3J0aW5nKGluZm8sIHRoTGFiZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHNvcnRQcm9wZXJ0eVxuICAgKiBAcGFyYW0gc29ydERpcmVjdGlvblxuICAgKi9cbiAgcHVibGljIGRvU29ydGluZyhzb3J0UHJvcGVydHk6IHN0cmluZywgc29ydERpcmVjdGlvbjogc3RyaW5nKSB7XG5cbiAgICBsZXQgaW5mbzogU29ydGluZ0luZm8gPSB7XG4gICAgICBwcm9wZXJ0eTogc29ydFByb3BlcnR5LFxuICAgICAgZGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uID09IEFTQyA/IFRoTGFiZWxDb21wb25lbnQuQVNDIDogc29ydERpcmVjdGlvbiA9PSBERVNDID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgbGV0IHRoTGFiZWw6IFRoTGFiZWxDb21wb25lbnQgPSB0aGlzLnRoTGFiZWxDb21wb25lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLnByb3BlcnR5ID09IHNvcnRQcm9wZXJ0eSk7XG5cbiAgICB0aGlzLnBlcmZvcm1Tb3J0aW5nKGluZm8sIHRoTGFiZWwpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGluZm9cbiAgICogQHBhcmFtIHRoTGFiZWxcbiAgICovXG4gIHBlcmZvcm1Tb3J0aW5nKGluZm86IFNvcnRpbmdJbmZvLCB0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50KSB7XG5cbiAgICBpZiAodGhMYWJlbCAhPSB1bmRlZmluZWQgJiYgaW5mbyAhPSB1bmRlZmluZWQgJiYgaW5mby5wcm9wZXJ0eSAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUuc29ydFByb3BlcnR5ID0gaW5mby5wcm9wZXJ0eTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnNvcnREaXJlY3Rpb24gPSBpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LkFTQyA/IEFTQyA6IGluZm8uZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuREVTQyA/IERFU0MgOiB1bmRlZmluZWQ7XG4gICAgICBldmVudG9QYWdpbmF6aW9uZS5wYWdlTnVtYmVyID0gMTtcblxuICAgICAgdGhpcy5yZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbCwgdGhpcy50aExhYmVsQ29tcG9uZW50cyk7XG4gICAgICB0aGlzLm1vZGlmaWNhVGgodGhMYWJlbCk7XG5cbiAgICAgIGlmICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcpIHtcblxuICAgICAgICBldmVudG9QYWdpbmF6aW9uZS5mdWxsTGlzdFNpemUgPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5mdWxsTGlzdFNpemU7XG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUucGFnZVNpemU7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHRoaXMub3JkaW5hKGluZm8pO1xuICAgICAgICB0aGlzLmVtaXRTdWJzZXQoMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucGFnaW5hdGlvbi5lbWl0KGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVpbXBvc3RhIGFkIHVuc29ydGVkIHR1dHRpIGkgdGggbGFiZWwgYWQgZWNjZXppb25lXG4gICAqIGRpIHF1ZWxsaSBkYXRvIGluIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqIEBwYXJhbSB0aExhYmVsQ29tcG9uZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgdGhMYWJlbENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUaExhYmVsQ29tcG9uZW50Pikge1xuXG4gICAgaWYgKHRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goKGl0ZW06IFRoTGFiZWxDb21wb25lbnQpID0+IHtcblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnByb3BlcnR5ICE9IHRoTGFiZWwucHJvcGVydHkpIHtcblxuICAgICAgICAgIGl0ZW0uc2V0QXNVbnNvcnRlZCgpO1xuICAgICAgICAgIHRoaXMubW9kaWZpY2FUaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW9kaWZpY2EgbCdlbGVtZW50byB0aCBjaGUgY29udGllbmUgaWwgVGhMYWJlbENvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZmljYVRoKHRoTGFiZWxDb21wb25lbnQ6IFRoTGFiZWxDb21wb25lbnQpIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50ICYmIHRoTGFiZWxDb21wb25lbnQuc29ydGFibGUgPT09IHRydWUpIHtcblxuICAgICAgbGV0IHRoOiBIVE1MRWxlbWVudCA9IHRoTGFiZWxDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgIGlmICh0aCkge1xuXG4gICAgICAgIHRoaXMucmVtb3ZlU29ydENsYXNzKHRoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aCwgdGhpcy5nZXRUaFNvcnRDbGFzcyh0aExhYmVsQ29tcG9uZW50LmRpcmVjdGlvbikpO1xuXG4gICAgICAgIHRoLnNldEF0dHJpYnV0ZSgnYXJpYS1zb3J0JywgdGhpcy5nZXRBcmlhU29ydFZhbHVlKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uKSk7XG5cbiAgICAgICAgaWYgKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQpIHtcblxuICAgICAgICAgIHRoLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1zb3J0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlU29ydENsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdzb3J0aW5nX2FzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmdfZGVzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldFRoU29ydENsYXNzKGRpcmVjdGlvbjogbnVtYmVyKSB7XG5cbiAgICBsZXQgdmFsdWU6IHN0cmluZ1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcblxuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkFTQzpcbiAgICAgICAgdmFsdWUgPSAnc29ydGluZ19hc2MnO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkRFU0M6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmdfZGVzYyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmcnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldEFyaWFTb3J0VmFsdWUoZGlyZWN0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgbGV0IHZhbHVlOiBzdHJpbmdcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG5cbiAgICAgIGNhc2UgVGhMYWJlbENvbXBvbmVudC5BU0M6XG4gICAgICAgIHZhbHVlID0gJ2FzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuREVTQzpcbiAgICAgICAgdmFsdWUgPSAnZGVzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ25vbmUnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb3JkaW5hKGluZm86IFNvcnRpbmdJbmZvKSB7XG5cbiAgICBpZiAoaW5mbyAmJiB0aGlzLmRhdGFTb3VyY2UgJiYgaW5mby5wcm9wZXJ0eSkge1xuXG4gICAgICBpbmZvLmRpcmVjdGlvbiA9IGluZm8uZGlyZWN0aW9uICogLTE7XG5cbiAgICAgIGlmIChpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEKSB7XG5cbiAgICAgICAgaW5mby5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQodGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3IoaW5mby5wcm9wZXJ0eSwgaW5mby5kaXJlY3Rpb24pKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdLmNvbmNhdCh0aGlzLmRhdGFTb3VyY2UpO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wZXJ0eUNvbXBhcmF0b3IocHJvcGVydHk6IHN0cmluZywgZGlyZWN0aW9uOiBudW1iZXIpIHtcblxuICAgIGxldCBwTGlzdCA9IHByb3BlcnR5ID8gcHJvcGVydHkuc3BsaXQoJy4nKSA6IHVuZGVmaW5lZDtcblxuICAgIGZ1bmN0aW9uIGVzdHJhaVZhbG9yZShlOiBhbnksIHBMaXN0OiBzdHJpbmdbXSk6IGFueSB7XG5cbiAgICAgIGlmIChlICYmIHBMaXN0KSB7XG5cbiAgICAgICAgaWYgKHBMaXN0Lmxlbmd0aCA+IDEpIHtcblxuICAgICAgICAgIHJldHVybiBlc3RyYWlWYWxvcmUoZVtwTGlzdFswXV0sIHBMaXN0LnNsaWNlKDEsIHBMaXN0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgcmV0dXJuIGVbcExpc3RbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlMSwgZTIpIHtcblxuICAgICAgcmV0dXJuIChlc3RyYWlWYWxvcmUoZTEsIHBMaXN0KSA+IGVzdHJhaVZhbG9yZShlMiwgcExpc3QpID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogVGhMYWJlbENvbXBvbmVudC5BU0MpICogZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGxlbmd0aE9uQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcblxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQgJiYgKCF0aGlzLnBhZ2luYXRpb25TdGF0ZSB8fCB2YWx1ZSAhPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSkpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlTGVuZ3RoICE9IHZhbHVlKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aCA9IHZhbHVlO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZVNpemUgPSB2YWx1ZTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSAxO1xuXG4gICAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuICB9XG5cbiAgcGFnZU9uQ2hhbmdlKHBhZ2U6IG51bWJlcikge1xuXG4gICAgaWYgKHBhZ2UgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIGxldCBldmVudG9QYWdpbmF6aW9uZTogUGFnaW5hdGlvblN0YXRlO1xuXG4gICAgICBpZiAodGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgICAgZXZlbnRvUGFnaW5hemlvbmUgPSB7Li4udGhpcy5wYWdpbmF0aW9uU3RhdGV9O1xuXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0ge307XG4gICAgICAgIHRoaXMuZW1pdFN1YnNldChwYWdlKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZU51bWJlciA9IHBhZ2U7XG4gICAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZW1pdFN1YnNldChwYWdlOiBudW1iZXIpIHtcblxuICAgIGlmIChwYWdlICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZmlyc3RFbGVtZW50SW5kZXggPSB0aGlzLnRhYmxlTGVuZ3RoICogKHBhZ2UgLSAxKTtcblxuICAgICAgbGV0IGxhc3RJbmRleDogbnVtYmVyID0gTnVtYmVyKGZpcnN0RWxlbWVudEluZGV4KSArIE51bWJlcih0aGlzLnRhYmxlTGVuZ3RoKTtcblxuICAgICAgbGV0IGE6IGFueVtdID0gdGhpcy5kYXRhU291cmNlLnNsaWNlKGZpcnN0RWxlbWVudEluZGV4LCBsYXN0SW5kZXgpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YUNoYW5nZS5lbWl0KGEpO1xuICAgIH1cbiAgfVxuXG4gIHZpc3VhbGl6emFQYWdpbmF6aW9uZSgpOiBib29sZWFuIHtcblxuICAgIHJldHVybiAhdGhpcy5kaXNhYmxlUGFnaW5hdGlvblxuICAgICAgJiYgKHRoaXMuZGF0YVNvdXJjZSAhPSB1bmRlZmluZWQgfHwgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyAhPSB1bmRlZmluZWQgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUgIT0gdW5kZWZpbmVkKSk7XG4gIH1cbn1cbiJdfQ==
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5haWwtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUdULFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFOUUsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDakgsT0FBTyxFQUFjLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFekUsTUFBTSxvQkFBb0IsR0FBVyxFQUFFLENBQUM7QUFJeEMsTUFBTSxHQUFHLEdBQWtCLEtBQUssQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBa0IsTUFBTSxDQUFDO0FBZ0NuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLDBCQUEwQjtJQWtJNUQsWUFBb0IsR0FBc0IsRUFBVSxRQUFtQjtRQUNyRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFETyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUE5SHZFLDhCQUF5QixHQUFZLEtBQUssQ0FBQztRQWEzQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBTWhELG9CQUFlLEdBQVcsb0JBQW9CLENBQUM7UUFXL0MsMEVBQTBF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SzsyQkFHTCxNQUFNO2dDQUdOLE1BQU07Z0NBR04sZUFBZSxTQUFDLGdCQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQzttQ0FHckQsZUFBZSxTQUFDLG1CQUFtQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQzt5Q0FHeEQsU0FBUyxTQUFDLCtCQUErQjt5QkFHekMsU0FBUyxTQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWX0gZnJvbSBcIi4uLy4uL2Jhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQge1Jlc3BvbnNpdmVFbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vcmVzcG9uc2l2ZS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0luYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnR9IGZyb20gXCIuLi9pbmFpbC10YWJsZS1wYWdlLXNlbGVjdG9yL2luYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge1NvcnRpbmdJbmZvLCBUaExhYmVsQ29tcG9uZW50fSBmcm9tIFwiLi4vdGgtbGFiZWwvdGgtbGFiZWwuY29tcG9uZW50XCI7XG5pbXBvcnQge1RyQ2hlY2tib3hDb21wb25lbnR9IGZyb20gXCIuLi90ci1jaGVja2JveC90ci1jaGVja2JveC5jb21wb25lbnRcIjtcblxuY29uc3QgREVGQVVMVF9UQUJMRV9MRU5HVEg6IG51bWJlciA9IDEwO1xuXG50eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcblxuY29uc3QgQVNDOiBTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG5jb25zdCBERVNDOiBTb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7XG5cbiAgc29ydFByb3BlcnR5Pzogc3RyaW5nO1xuICBzb3J0RGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvblN0YXRlIGV4dGVuZHMgU29ydFN0YXRlIHtcblxuICBmdWxsTGlzdFNpemU/OiBudW1iZXI7XG4gIHBhZ2VOdW1iZXI/OiBudW1iZXI7XG4gIHBhZ2VTaXplPzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgVGFibGVDaGFuZ2VzIGV4dGVuZHMgU2ltcGxlQ2hhbmdlcyB7XG5cbiAgZGF0YVNvdXJjZT86IFNpbXBsZUNoYW5nZSxcbiAgcGFnaW5hdGlvblN0YXRlPzogU2ltcGxlQ2hhbmdlLFxuICBpbml0aWFsU29ydD86IFNpbXBsZUNoYW5nZSxcbiAgZG9QYWdpbmF0aW9uPzogU2ltcGxlQ2hhbmdlLFxuICBub0RhdGFGb3VuZD86IFNpbXBsZUNoYW5nZVxuICBlbGVtZW50c1BlclBhZ2U/OiBTaW1wbGVDaGFuZ2Vcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaW5haWwtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ0hBTkdFX0RFVEVDVElPTl9TVFJBVEVHWSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBleHRlbmRzIFJlc3BvbnNpdmVFbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG5cbiAgdGFibGVMZW5ndGg6IG51bWJlcjtcbiAgY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIC0tLSBQYWdpbmF6aW9uZSBJTlRFUk5BIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIGRhdGFTb3VyY2U6IGFueVtdO1xuXG4gIC8vIE9iYmxpZ2F0b3Jpb1xuICBASW5wdXQoKVxuICBkaXNwbGF5ZWREYXRhOiBhbnlbXTtcblxuICBAT3V0cHV0KClcbiAgZGlzcGxheWVkRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgQElucHV0KClcbiAgZG9QYWdpbmF0aW9uOiBPYnNlcnZhYmxlPFBhZ2luYXRpb25TdGF0ZT47XG5cbiAgQElucHV0KClcbiAgZWxlbWVudHNQZXJQYWdlOiBudW1iZXIgPSBERUZBVUxUX1RBQkxFX0xFTkdUSDtcblxuICBASW5wdXQoKVxuICBpbml0aWFsU29ydDogU29ydFN0YXRlO1xuXG4gIC8vIC0tLSBQYWdpbmF6aW9uZSBFU1RFUk5BIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgQElucHV0KClcbiAgZWxlbWVudHNQZXJQYWdlT3B0aW9uczogbnVtYmVyW10gPSBbMTAsIDI1LCA1MCwgMTAwXTtcblxuICAvLyBASW5wdXQoKVxuICAvLyB3YWl0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gd2FpdGluZ1RleHQ6IHN0cmluZyA9ICdSZWN1cGVybyBpbiBjb3Jzby4uLic7XG5cbiAgQElucHV0KClcbiAgbm9EYXRhRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBub0RhdGFGb3VuZFRleHQ6IHN0cmluZyA9ICdOZXNzdW4gZWxlbWVudG8gdHJvdmF0byc7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZVBhZ2luYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcGFnaW5hdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvblN0YXRlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHRhbGxSb3dzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gYWx0ZXJuYXRpdmVUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGNhcHRpb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBjYXB0aW9uSGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYmdXaGl0ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZGVzY3JpcHRpb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0YWJsZUNsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0aXRsZUNsYXNzOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZGV0YWlsc0xpbms6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBzZWxlY3RhYmxlUm93VmFsdWVzOiBzdHJpbmdbXTtcblxuICBAT3V0cHV0KClcbiAgZGV0YWlsc0NsaWNrOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNoZWNrZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRoTGFiZWxDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gIHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUckNoZWNrYm94Q29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICB0ckNoZWNrYm94Q29tcG9uZW50czogUXVlcnlMaXN0PFRyQ2hlY2tib3hDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudClcbiAgdGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ6IEluYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYmFzZUZvb3RlcicpXG4gIGJhc2VGb290ZXI6IEVsZW1lbnRSZWY7XG5cbiAgdmlzdWFsaXp6YUJhc2VGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIG51bWVyb0NvbG9ubmU6IG51bWJlcjtcblxuICAvLyBJbnNpZW1pIGRlbGxlIFN1YnNjcmlwdGlvbiBhZ2xpIGV2ZW50aSBkZWkgVHJDaGVja2JveENvbXBvbmVudFxuICB0cmNiSW5pdFN1YnNjcmlwdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuICB0cmNiQ2xpY2tTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgdHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcblxuICByaWdoZVNlbGV6aW9uYXRlOiBzdHJpbmdbXSA9IFtdO1xuICByaWdoZVNlbGV6aW9uYWJpbGk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0UGFnZVNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy50YWJsZUxlbmd0aDtcbiAgZ2V0TGlzdFNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLmZ1bGxMaXN0U2l6ZSA6IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7XG4gIGdldEN1cnJlbnRQYWdlID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyIDogdGhpcy5jdXJyZW50UGFnZTtcblxuICAvLyBPcGVyYXRvcmkgcGVyIGdlc3Rpb25lIHNlbGV6aW9uZSByaWdoZVxuICBpc0NoZWNrZWQgPSAodHJjYlZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHRoaXMucmlnaGVTZWxlemlvbmF0ZS5zb21lKHZhbHVlID0+IHZhbHVlID09IHRyY2JWYWx1ZSk7XG4gIGlzQWxsQ2hlY2tlZCA9ICgpOiBib29sZWFuID0+IHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmxlbmd0aCA+IDAgJiYgdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkuZXZlcnkodGhpcy5pc0NoZWNrZWQpO1xuICBpc1RoQ2hlY2tib3ggPSAodHJjYjogVHJDaGVja2JveENvbXBvbmVudCk6IGJvb2xlYW4gPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgdGggIyR7dHJjYi5pZH1gKS5sZW5ndGggPiAwO1xuICBpc1NlbGV6aW9uYWJpbGUgPSAodmFsdWU6IHN0cmluZykgPT4gdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkuc29tZSh2YWxvcmVTZWxlemlvbmFiaWxlID0+IHZhbG9yZVNlbGV6aW9uYWJpbGUgPT0gdmFsdWUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7XG4gICAgc3VwZXIoY2RyKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtdGFibGVdJztcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogVGFibGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICAgIC8vIENvbnRyb2xsbyBzZSBsYSBwYWdpbmF6aW9uZSByaWNoaWVzdGEgZScgaW50ZXJuYSBvIGVzdGVybmFcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5wYWdpbmF0aW9uU3RhdGU/LmZpcnN0Q2hhbmdlID09PSB0cnVlXG4gICAgICAmJiBjaGFuZ2VzLnBhZ2luYXRpb25TdGF0ZT8uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNlIHBlciBsYSBwYWdpbmF6aW9uZSBlc3Rlcm5hIHZpZW5lIHNwZWNpZmljYXRhIHVuYSBwcm9wcmlldGEgZGkgc29ydGluZ1xuICAgIC8vIGF0dGl2byBpbCBjb21wb25lbnRlIHRoTGFiZWwgYXNzb2NpYXRvXG4gICAgaWYgKGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gU2UgcGVyIGxhIHBhZ2luYXppb25lIGludGVybmEgdmllbmUgc3BlY2lmaWNhdG8gdW4gb3JkaW5hbWVudG8gaW5pemlhbGVcbiAgICAvLyBhdHRpdm8gaWwgY29tcG9uZW50ZSB0aExhYmVsIGFzc29jaWF0b1xuICAgIGlmIChjaGFuZ2VzLmluaXRpYWxTb3J0Py5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZpY28gc2UgZScgY2FtYmlhdGEgbGEgbGlzdGEgZGVnbGkgZWxlbWVudGkgaW4gaW5wdXQuXG4gICAgLy8gTmVsIGNhc28gaW4gY3VpIHNpIHN0aWEgZWZmZXR0dWFuZG8gdW5hIHBhZ2luYXppb25lIGludGVybmFcbiAgICAvLyBlbWV0dG8gaWwgc290dG9pbnNpZW1lIGluZXJlbnRlIGxhIHByaW1hIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkXG4gICAgICAmJiAhY2hhbmdlcy5kYXRhU291cmNlLmZpcnN0Q2hhbmdlXG4gICAgICAmJiAhdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgIGlmICh0aGlzLnRhYmxlUGFnZVNlbGVjdG9yQ29tcG9uZW50KSB7XG5cbiAgICAgICAgdGhpcy50YWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudC5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICB9XG5cbiAgICAvLyBSaWNoaWVzdGEgZGkgcGFnaW5hemlvbmVcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5kb1BhZ2luYXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnB1c2goXG4gICAgICAgIGNoYW5nZXMuZG9QYWdpbmF0aW9uLmN1cnJlbnRWYWx1ZS5zdWJzY3JpYmUoKGluZm86IFBhZ2luYXRpb25TdGF0ZSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5sZW5ndGhPbkNoYW5nZShpbmZvLnBhZ2VTaXplKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZG9Tb3J0aW5nKGluZm8uc29ydFByb3BlcnR5LCBpbmZvLnNvcnREaXJlY3Rpb24pLCAxMDApO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYWdlT25DaGFuZ2UoaW5mby5wYWdlTnVtYmVyKSwgMjAwKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRWxlbWVudGkgcGVyIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZSAhPSB1bmRlZmluZWRcbiAgICAgICYmICFjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZS5maXJzdENoYW5nZVxuICAgICAgJiYgIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICB0aGlzLmxlbmd0aE9uQ2hhbmdlKHRoaXMuZWxlbWVudHNQZXJQYWdlKTtcbiAgICB9XG5cbiAgICAvLyBDYWxjb2xvIGlsIG51bWVybyBkaSBjb2xvbm5lIHZpc2liaWxpXG4gICAgaWYgKGNoYW5nZXMubm9EYXRhRm91bmQ/LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoKTtcbiAgICAgIHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaSA9IFsuLi5jaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy50YWJsZUxlbmd0aCA9IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy5lbGVtZW50c1BlclBhZ2U7XG5cbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5pbmZvKCduZ09uSW5pdC0tLScsIHRoaXMuY3VycmVudFBhZ2UpXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCh0aGlzLmN1cnJlbnRQYWdlIHx8IDEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5pbml6aWFsaXp6YVRhYmVsbGEodGhpcy50aExhYmVsQ29tcG9uZW50cyk7XG4gICAgdGhpcy5sb29rQXRUaExhYmVsKHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgIHRoaXMuYXR0aXZhVGhMYWJlbE9yZGluYW1lbnRvU3BlY2lmaWNhdG8oKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy52aXN1YWxpenphQmFzZUZvb3RlciA9IHRoaXMuYmFzZUZvb3Rlcj8ubmF0aXZlRWxlbWVudC5jaGlsZEVsZW1lbnRDb3VudCA+IDApO1xuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuXG4gICAgdGhpcy5nZXN0aXNjaVRyQ2hlY2tib3goKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXN0aW9uZSBkZWkgY2hlY2tib3ggcGVyIGxhIHNlbGV6aW9uZSBkZWxsZSByaWdoZVxuICAgKi9cbiAgcHVibGljIGdlc3Rpc2NpVHJDaGVja2JveCgpIHtcblxuICAgIGlmICh0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzPy5sZW5ndGggPiAwKSB7XG5cbiAgICAgIHRoaXMudHJDaGVja2JveENvbXBvbmVudHMuZm9yRWFjaCgodHJjYjogVHJDaGVja2JveENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgIC8vIEdlc3Rpb25lIGV2ZW50byBpbml0Q29tcGxldGVcbiAgICAgICAgLy8gRWZmZXR0dW8gbGEgc3Vic2NyaWJlIHNlIG5vbiBuZSBlJyBnaWEgcHJlc2VudGVcbiAgICAgICAgLy8gdW5hIFN1YnNjcmlwdGlvbiBwZXIgcXVlbCB0cmNiXG4gICAgICAgIGlmICh0aGlzLnRyY2JJbml0U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkluaXRTdWJzY3JpcHRpb25zW3RyY2IuaWRdID0gdHJjYi5pbml0Q29tcGxldGUuc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgICAgICAgLy8gU2UgbCdpbnNpZW1lIGRpIHR1dHRpIGkgdmFsb3JpIHNlbGV6aW9uYWJpbGlcbiAgICAgICAgICAgIC8vIG5vbiBlJyBzdGF0byBwYXNzYXRvIGRhbGwnZXN0ZXJub1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0YWJsZVJvd1ZhbHVlcyA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgICAgICAvLyBSaWNhbGNvbG8gaSB2YWxvcmkgc2VsZXppb25hYmlsaVxuICAgICAgICAgICAgICB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaSA9IHRoaXMudHJDaGVja2JveENvbXBvbmVudHMuZmlsdGVyKHRyY2IgPT4gIXRoaXMuaXNUaENoZWNrYm94KHRyY2IpKS5tYXAodHJjYiA9PiB0cmNiLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdlc3Rpb25lIGV2ZW50byBjbGlja1xuICAgICAgICBpZiAodGhpcy50cmNiQ2xpY2tTdWJzY3JpcHRpb25zW3RyY2IuaWRdID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgdGhpcy50cmNiQ2xpY2tTdWJzY3JpcHRpb25zW3RyY2IuaWRdID0gdHJjYi5vbmNsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkge1xuXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tBbGxPbkNsaWNrKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrT25DbGljayh0cmNiLnZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jaGVja2VkUm93c0NoYW5nZS5lbWl0KHRoaXMucmlnaGVTZWxlemlvbmF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gb25EZXN0cm95XG4gICAgICAgIC8vIFF1YW5kbyB1biB0Y3JiIGVtZXR0ZSBsJ2V2ZW50byBvbkRlc3Ryb3lcbiAgICAgICAgLy8gZWZmZXR0dW8gbCd1bnN1YnNjcmliZSBhIHR1dHRpIGdsaSBldmVudGkgYWQgZXNzbyBjb2xsZWdhdG9cbiAgICAgICAgaWYgKHRoaXMudHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zW3RyY2IuaWRdID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgdGhpcy50cmNiRGVzdHJveVN1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPSB0cmNiLm9uRGVzdHJveS5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAgICAgICB0aGlzLnRyY2JJbml0U3Vic2NyaXB0aW9uc1t0cmNiLmlkXT8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXT8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIHRoaXMudHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zW3RyY2IuaWRdPy51bnN1YnNjcmliZSgpO1xuXG4gICAgICAgICAgICAvLyBJbiBxdWVzdG8gbW9kbyBldml0byBjaGUgZ2xpIG9nZ2V0dGkgY3Jlc2Nhbm8gaW4gbWFuaWVyYSBpbmNvbnRyb2xsYXRhXG4gICAgICAgICAgICBkZWxldGUgdGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF07XG4gICAgICAgICAgICBkZWxldGUgdGhpcy50cmNiQ2xpY2tTdWJzY3JpcHRpb25zW3RyY2IuaWRdO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zW3RyY2IuaWRdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gSW5kaWNvIGFkIHVuIHRyY2Igc2UgZScgc2VsZXppb25hdG8uXG4gICAgICB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZvckVhY2goKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpID0+IHtcblxuICAgICAgICBpZiAodHJjYikge1xuXG4gICAgICAgICAgaWYgKHRoaXMuaXNUaENoZWNrYm94KHRyY2IpKSB7XG5cbiAgICAgICAgICAgIHRyY2Iuc2V0Q2hlY2tlZCh0aGlzLmlzQWxsQ2hlY2tlZCgpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJjYi5zZXRDaGVja2VkKHRoaXMuaXNDaGVja2VkKHRyY2IudmFsdWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGljayBkaSB1biB0cmNiXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZUNiXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrT25DbGljayh2YWx1ZUNiOiBzdHJpbmcpIHtcblxuICAgIGlmICh0aGlzLmlzQ2hlY2tlZCh2YWx1ZUNiKSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9IHZhbHVlQ2IpO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIHRoaXMucmlnaGVTZWxlemlvbmF0ZS5wdXNoKHZhbHVlQ2IpO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrQWxsT25DbGljaygpIHtcblxuICAgIGlmICh0aGlzLmlzQWxsQ2hlY2tlZCgpKSB7XG5cbiAgICAgIHRoaXMucmlnaGVTZWxlemlvbmF0ZSA9IHRoaXMucmlnaGVTZWxlemlvbmF0ZS5maWx0ZXIodmFsdWUgPT4gIXRoaXMuaXNTZWxlemlvbmFiaWxlKHZhbHVlKSk7XG5cbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuY29uY2F0KHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmZpbHRlcih2YWx1ZSA9PiAhdGhpcy5pc0NoZWNrZWQodmFsdWUpKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmV0dHVhIHZhcmllIG9wZXJhemlvbmkgZGkgaW5pemlhbGl6emF6aW9uZSBkZWxsYSB0YWJlbGxhXG4gICAqL1xuICBwdWJsaWMgaW5pemlhbGl6emFUYWJlbGxhKHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD4pIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50cykge1xuXG4gICAgICAvLyBJbml6aWFsaXp6byB0dXR0aSBpIHRoIGRlbGxhIHRhYmVsbGFcbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goXG4gICAgICAgICh0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgICB0aGlzLm1vZGlmaWNhVGgodGhMYWJlbCk7XG4gICAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNpIG1ldHRlIGluIGFzY29sdG8gc3VnbGkgZXZlbnRpIGVtZXNzaSBkYWkgdGhMYWJlbENvbXBvbmVudHMgZGF0aSBpbiBpbnB1dFxuICAgKiBwZXIgcG90ZXIgZXNlZ3VpcmUgbGUgb3Bwb3J0dW5lIGF6aW9uaVxuICAgKlxuICAgKiBAcGFyYW0gdGhMYWJlbENvbXBvbmVudHNcbiAgICovXG4gIHB1YmxpYyBsb29rQXRUaExhYmVsKHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD4pIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50cykge1xuXG4gICAgICB0aGlzLnRoTGFiZWxDb21wb25lbnRzID0gdGhMYWJlbENvbXBvbmVudHM7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goXG4gICAgICAgICh0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgICBpZiAodGhMYWJlbCkge1xuXG4gICAgICAgICAgICAvLyBTdWJzY3JpYmUgYWwgY2xpY2sgZGVsIHRoIGxhYmVsXG4gICAgICAgICAgICB0aGlzLnB1c2goXG4gICAgICAgICAgICAgIHRoTGFiZWwuY2xpY2suc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChpbmZvOiBTb3J0aW5nSW5mbykgPT4ge1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLnBlcmZvcm1Tb3J0aW5nKGluZm8sIHRoTGFiZWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHNvcnRQcm9wZXJ0eVxuICAgKiBAcGFyYW0gc29ydERpcmVjdGlvblxuICAgKi9cbiAgcHVibGljIGRvU29ydGluZyhzb3J0UHJvcGVydHk6IHN0cmluZywgc29ydERpcmVjdGlvbjogc3RyaW5nKSB7XG5cbiAgICBsZXQgaW5mbzogU29ydGluZ0luZm8gPSB7XG4gICAgICBwcm9wZXJ0eTogc29ydFByb3BlcnR5LFxuICAgICAgZGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uID09IEFTQyA/IFRoTGFiZWxDb21wb25lbnQuQVNDIDogc29ydERpcmVjdGlvbiA9PSBERVNDID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgbGV0IHRoTGFiZWw6IFRoTGFiZWxDb21wb25lbnQgPSB0aGlzLnRoTGFiZWxDb21wb25lbnRzLmZpbmQoaXRlbSA9PiBpdGVtLnByb3BlcnR5ID09IHNvcnRQcm9wZXJ0eSk7XG5cbiAgICB0aGlzLnBlcmZvcm1Tb3J0aW5nKGluZm8sIHRoTGFiZWwpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGluZm9cbiAgICogQHBhcmFtIHRoTGFiZWxcbiAgICovXG4gIHBlcmZvcm1Tb3J0aW5nKGluZm86IFNvcnRpbmdJbmZvLCB0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50KSB7XG5cbiAgICBpZiAodGhMYWJlbCAhPSB1bmRlZmluZWQgJiYgaW5mbyAhPSB1bmRlZmluZWQgJiYgaW5mby5wcm9wZXJ0eSAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUuc29ydFByb3BlcnR5ID0gaW5mby5wcm9wZXJ0eTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnNvcnREaXJlY3Rpb24gPSBpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LkFTQyA/IEFTQyA6IGluZm8uZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuREVTQyA/IERFU0MgOiB1bmRlZmluZWQ7XG4gICAgICBldmVudG9QYWdpbmF6aW9uZS5wYWdlTnVtYmVyID0gMTtcblxuICAgICAgdGhpcy5yZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbCwgdGhpcy50aExhYmVsQ29tcG9uZW50cyk7XG4gICAgICB0aGlzLm1vZGlmaWNhVGgodGhMYWJlbCk7XG5cbiAgICAgIGlmICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcpIHtcblxuICAgICAgICBldmVudG9QYWdpbmF6aW9uZS5mdWxsTGlzdFNpemUgPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5mdWxsTGlzdFNpemU7XG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUucGFnZVNpemU7XG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIHRoaXMub3JkaW5hKGluZm8pO1xuICAgICAgICB0aGlzLmVtaXRTdWJzZXQoMSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucGFnaW5hdGlvbi5lbWl0KGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVpbXBvc3RhIGFkIHVuc29ydGVkIHR1dHRpIGkgdGggbGFiZWwgYWQgZWNjZXppb25lXG4gICAqIGRpIHF1ZWxsaSBkYXRvIGluIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqIEBwYXJhbSB0aExhYmVsQ29tcG9uZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgdGhMYWJlbENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUaExhYmVsQ29tcG9uZW50Pikge1xuXG4gICAgaWYgKHRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goKGl0ZW06IFRoTGFiZWxDb21wb25lbnQpID0+IHtcblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnByb3BlcnR5ICE9IHRoTGFiZWwucHJvcGVydHkpIHtcblxuICAgICAgICAgIGl0ZW0uc2V0QXNVbnNvcnRlZCgpO1xuICAgICAgICAgIHRoaXMubW9kaWZpY2FUaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW9kaWZpY2EgbCdlbGVtZW50byB0aCBjaGUgY29udGllbmUgaWwgVGhMYWJlbENvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZmljYVRoKHRoTGFiZWxDb21wb25lbnQ6IFRoTGFiZWxDb21wb25lbnQpIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50ICYmIHRoTGFiZWxDb21wb25lbnQuc29ydGFibGUgPT09IHRydWUpIHtcblxuICAgICAgbGV0IHRoOiBIVE1MRWxlbWVudCA9IHRoTGFiZWxDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgIGlmICh0aCkge1xuXG4gICAgICAgIHRoaXMucmVtb3ZlU29ydENsYXNzKHRoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aCwgdGhpcy5nZXRUaFNvcnRDbGFzcyh0aExhYmVsQ29tcG9uZW50LmRpcmVjdGlvbikpO1xuXG4gICAgICAgIHRoLnNldEF0dHJpYnV0ZSgnYXJpYS1zb3J0JywgdGhpcy5nZXRBcmlhU29ydFZhbHVlKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uKSk7XG5cbiAgICAgICAgaWYgKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQpIHtcblxuICAgICAgICAgIHRoLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1zb3J0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlU29ydENsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdzb3J0aW5nX2FzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmdfZGVzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldFRoU29ydENsYXNzKGRpcmVjdGlvbjogbnVtYmVyKSB7XG5cbiAgICBsZXQgdmFsdWU6IHN0cmluZ1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcblxuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkFTQzpcbiAgICAgICAgdmFsdWUgPSAnc29ydGluZ19hc2MnO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkRFU0M6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmdfZGVzYyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmcnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldEFyaWFTb3J0VmFsdWUoZGlyZWN0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgbGV0IHZhbHVlOiBzdHJpbmdcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG5cbiAgICAgIGNhc2UgVGhMYWJlbENvbXBvbmVudC5BU0M6XG4gICAgICAgIHZhbHVlID0gJ2FzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuREVTQzpcbiAgICAgICAgdmFsdWUgPSAnZGVzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ25vbmUnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb3JkaW5hKGluZm86IFNvcnRpbmdJbmZvKSB7XG5cbiAgICBpZiAoaW5mbyAmJiB0aGlzLmRhdGFTb3VyY2UgJiYgaW5mby5wcm9wZXJ0eSkge1xuXG4gICAgICBpbmZvLmRpcmVjdGlvbiA9IGluZm8uZGlyZWN0aW9uICogLTE7XG5cbiAgICAgIGlmIChpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEKSB7XG5cbiAgICAgICAgaW5mby5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQodGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3IoaW5mby5wcm9wZXJ0eSwgaW5mby5kaXJlY3Rpb24pKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdLmNvbmNhdCh0aGlzLmRhdGFTb3VyY2UpO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wZXJ0eUNvbXBhcmF0b3IocHJvcGVydHk6IHN0cmluZywgZGlyZWN0aW9uOiBudW1iZXIpIHtcblxuICAgIGxldCBwTGlzdCA9IHByb3BlcnR5ID8gcHJvcGVydHkuc3BsaXQoJy4nKSA6IHVuZGVmaW5lZDtcblxuICAgIGZ1bmN0aW9uIGVzdHJhaVZhbG9yZShlOiBhbnksIHBMaXN0OiBzdHJpbmdbXSk6IGFueSB7XG5cbiAgICAgIGlmIChlICYmIHBMaXN0KSB7XG5cbiAgICAgICAgaWYgKHBMaXN0Lmxlbmd0aCA+IDEpIHtcblxuICAgICAgICAgIHJldHVybiBlc3RyYWlWYWxvcmUoZVtwTGlzdFswXV0sIHBMaXN0LnNsaWNlKDEsIHBMaXN0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgcmV0dXJuIGVbcExpc3RbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlMSwgZTIpIHtcblxuICAgICAgcmV0dXJuIChlc3RyYWlWYWxvcmUoZTEsIHBMaXN0KSA+IGVzdHJhaVZhbG9yZShlMiwgcExpc3QpID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogVGhMYWJlbENvbXBvbmVudC5BU0MpICogZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGxlbmd0aE9uQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcblxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQgJiYgKCF0aGlzLnBhZ2luYXRpb25TdGF0ZSB8fCB2YWx1ZSAhPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSkpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlTGVuZ3RoICE9IHZhbHVlKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aCA9IHZhbHVlO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZVNpemUgPSB2YWx1ZTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSAxO1xuXG4gICAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuICB9XG5cbiAgcGFnZU9uQ2hhbmdlKHBhZ2U6IG51bWJlcikge1xuXG4gICAgaWYgKHBhZ2UgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIGxldCBldmVudG9QYWdpbmF6aW9uZTogUGFnaW5hdGlvblN0YXRlO1xuXG4gICAgICBpZiAodGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgICAgZXZlbnRvUGFnaW5hemlvbmUgPSB7Li4udGhpcy5wYWdpbmF0aW9uU3RhdGV9O1xuXG4gICAgICB9IGVsc2Uge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0ge307XG4gICAgICAgIHRoaXMuZW1pdFN1YnNldChwYWdlKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZU51bWJlciA9IHBhZ2U7XG4gICAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZW1pdFN1YnNldChwYWdlOiBudW1iZXIpIHtcblxuICAgIGlmIChwYWdlICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZmlyc3RFbGVtZW50SW5kZXggPSB0aGlzLnRhYmxlTGVuZ3RoICogKHBhZ2UgLSAxKTtcblxuICAgICAgbGV0IGxhc3RJbmRleDogbnVtYmVyID0gTnVtYmVyKGZpcnN0RWxlbWVudEluZGV4KSArIE51bWJlcih0aGlzLnRhYmxlTGVuZ3RoKTtcblxuICAgICAgbGV0IGE6IGFueVtdID0gdGhpcy5kYXRhU291cmNlLnNsaWNlKGZpcnN0RWxlbWVudEluZGV4LCBsYXN0SW5kZXgpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YUNoYW5nZS5lbWl0KGEpO1xuICAgIH1cbiAgfVxuXG4gIHZpc3VhbGl6emFQYWdpbmF6aW9uZSgpOiBib29sZWFuIHtcblxuICAgIHJldHVybiAhdGhpcy5kaXNhYmxlUGFnaW5hdGlvblxuICAgICAgJiYgKHRoaXMuZGF0YVNvdXJjZSAhPSB1bmRlZmluZWQgfHwgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyAhPSB1bmRlZmluZWQgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUgIT0gdW5kZWZpbmVkKSk7XG4gIH1cblxuICAvKipcbiAgICogQXR0aXZhIGlsIHRoIGxhYmVsIGluZXJlbnRlIGwnb3JkaW5hbWVudG8gc3BlY2lmaWNhdG9cbiAgICovXG4gIGF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCkge1xuXG4gICAgaWYgKHRoaXMudGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgLy8gUGFnaW5hemlvbmUgZXN0ZXJuYVxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyAmJiB0aGlzLnBhZ2luYXRpb25TdGF0ZSkge1xuXG4gICAgICAgIGxldCB0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50ID0gdGhpcy50aExhYmVsQ29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSA9PSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5zb3J0UHJvcGVydHkpO1xuICAgICAgICB0aGlzLnNldFNvcnREaXJlY3Rpb24odGhMYWJlbCwgdGhpcy5wYWdpbmF0aW9uU3RhdGUuc29ydERpcmVjdGlvbik7XG4gICAgICB9XG4gICAgICAvLyBPcmRpbmFtZW50byBpbml6aWFsZSBwYWdpbmF6aW9uZSBpbnRlcm5hXG4gICAgICBlbHNlIGlmICh0aGlzLmluaXRpYWxTb3J0KSB7XG5cbiAgICAgICAgdGhpcy50aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKHRoTGFiZWwgPT4ge1xuXG4gICAgICAgICAgdGhMYWJlbC5wcm9wZXJ0eSA9PSB0aGlzLmluaXRpYWxTb3J0LnNvcnRQcm9wZXJ0eVxuICAgICAgICAgICAgPyB0aGlzLnNldFNvcnREaXJlY3Rpb24odGhMYWJlbCwgdGhpcy5pbml0aWFsU29ydC5zb3J0RGlyZWN0aW9uKVxuICAgICAgICAgICAgOiB0aGlzLnNldFNvcnREaXJlY3Rpb24odGhMYWJlbCwgdW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0U29ydERpcmVjdGlvbih0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50LCBkaXJlY3Rpb246IFNvcnREaXJlY3Rpb24pIHtcblxuICAgIGlmICh0aExhYmVsKSB7XG5cbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG5cbiAgICAgICAgY2FzZSBcImFzY1wiOlxuICAgICAgICAgIHRoTGFiZWwuZGlyZWN0aW9uID0gVGhMYWJlbENvbXBvbmVudC5BU0M7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBcImRlc2NcIjpcbiAgICAgICAgICB0aExhYmVsLmRpcmVjdGlvbiA9IFRoTGFiZWxDb21wb25lbnQuREVTQztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRoTGFiZWwuZGlyZWN0aW9uID0gVGhMYWJlbENvbXBvbmVudC5VTlNPUlRFRDtcbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICB0aGlzLm1vZGlmaWNhVGgodGhMYWJlbCk7XG4gICAgfVxuICB9XG59XG4iXX0=