@trudb/tru-common-lib 0.0.418 → 0.0.420

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.
@@ -35,6 +35,7 @@ export class TruSearchViewBase {
35
35
  truWindowAddViewEventArgs.entityIndex = gridConfig.rowIndex;
36
36
  truWindowAddViewEventArgs.componentName = this.tableName + 'DetailView';
37
37
  this.truWindowEventHandler.addView(truWindowAddViewEventArgs);
38
+ this.view.active(false);
38
39
  }
39
40
  else {
40
41
  alert(this.tablePluralLabel + ' does not have a detail view.');
@@ -64,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
64
65
  }], ctorParameters: function () { return [{ type: i1.TruDesktopManager }, { type: i2.TruWindowEventHandler }]; }, propDecorators: { view: [{
65
66
  type: Input
66
67
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXNlYXJjaC12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2Jhc2Utdmlld3Mvc2VhcmNoL3RydS1zZWFyY2gtdmlldy1iYXNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL3NlYXJjaC90cnUtc2VhcmNoLXZpZXctYmFzZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7O0FBUTdHLE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCLFlBQ1UsY0FBaUMsRUFDakMscUJBQTRDO1FBRDVDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBeEI1QyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQzdCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFFeEMsc0JBQWlCLEdBQUc7WUFDbEIsSUFBSSxFQUFFLE9BQU87WUFDYixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUsR0FBRztZQUNULE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQTtRQVdELG1CQUFjLEdBQUcsR0FBRyxFQUFFO1FBR3RCLENBQUMsQ0FBQTtRQWNELDRCQUF1QixHQUFHLENBQUMsVUFBZSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLHlCQUF5QixHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztnQkFDaEUseUJBQXlCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDeEMseUJBQXlCLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25ILHlCQUF5QixDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUM1RCx5QkFBeUIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQzthQUMvRDtpQkFBTTtnQkFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLCtCQUErQixDQUFDLENBQUM7YUFDaEU7UUFDSCxDQUFDLENBQUE7UUFsQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUNqRCxJQUFJLE1BQU07Z0JBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDeEYsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBT0QsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ3hELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUUvQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7OEdBakRVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHNGQ1g5QixFQUFBOzJGRFdhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxzQkFBc0I7NElBS2IsSUFBSTtzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVEZXNrdG9wTWFuYWdlciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtZGVza3RvcC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydVdpbmRvd0FkZFZpZXdFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Rlc2t0b3Avc2VydmljZXMvdHJ1LXdpbmRvdy1hZGQtdmlldy1ldmVudC1hcmdzJztcclxuaW1wb3J0IHsgVmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtZGVza3RvcC1zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LXNlYXJjaC12aWV3LWJhc2UnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtc2VhcmNoLXZpZXctYmFzZS5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cnUtc2VhcmNoLXZpZXctYmFzZS5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1U2VhcmNoVmlld0Jhc2UgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIHByb3RlY3RlZCB2aWV3ITogVmlld0NvbmZpZztcclxuXHJcbiAgcHJvdGVjdGVkIHRhYmxlTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIHRhYmxlUGx1cmFsTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIHRhYmxlUGx1cmFsTGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gIHByb3RlY3RlZCBwa2V5TmFtZTogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIHdpbmRvd1RpdGxlOiBzdHJpbmcgPSAnJztcclxuICBwcm90ZWN0ZWQgd2luZG93Q29uZmlnOiBhbnk7XHJcbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlcyA9IFtdO1xyXG4gIHByb3RlY3RlZCBleHBhbmRzID0gW107XHJcbiAgcHJvdGVjdGVkIGNvbnRleHRGaWx0ZXJzOiBhbnk7XHJcbiAgcHJvdGVjdGVkIGlzU2VhcmNoaW5nID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIGVudGl0aWVzID0gW107XHJcbiAgcHJvdGVjdGVkIGhhc0RldGFpbFZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzZWFyY2hQYW5lbENvbmZpZyA9IHtcclxuICAgIHNpZGU6ICdyaWdodCcsXHJcbiAgICBhY3RpdmU6IHRydWUsXHJcbiAgICBvcGVuOiB0cnVlLFxyXG4gICAgbW9kS2V5TGFiZWw6ICcnLFxyXG4gICAgc2l6ZTogNTAwLFxyXG4gICAgcGlubmVkOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRlc2t0b3BNYW5hZ2VyOiBUcnVEZXNrdG9wTWFuYWdlcixcclxuICAgIHByaXZhdGUgdHJ1V2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIpIHtcclxuICAgIHRoaXMudmlldy5vbkFjdGl2ZSgpLnN1YnNjcmliZSgoYWN0aXZlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmIChhY3RpdmUpXHJcbiAgICAgICAgdGhpcy53aW5kb3dDb25maWcudGl0bGUgPSB0aGlzLmRlc2t0b3BNYW5hZ2VyLmdldFVuaXF1ZVRpdGxlKHRoaXMudGFibGVQbHVyYWxMYWJlbCk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2V0V2luZG93VGl0bGUgPSAoKSA9PiB7XHJcbiAgICBcclxuICAgICAgXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVOYW1lID0gdGhpcy52aWV3LndpbmRvdy50YWJsZU5hbWU7XHJcbiAgICB0aGlzLnRhYmxlUGx1cmFsTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVQbHVyYWxOYW1lO1xyXG4gICAgdGhpcy50YWJsZVBsdXJhbExhYmVsID0gdGhpcy52aWV3LndpbmRvdy50YWJsZVBsdXJhbExhYmVsO1xyXG4gICAgdGhpcy5wa2V5TmFtZSA9IHRoaXMudGFibGVOYW1lICsgJ1JlZic7XHJcbiAgICB0aGlzLndpbmRvd1RpdGxlID0gdGhpcy5kZXNrdG9wTWFuYWdlci5nZXRVbmlxdWVUaXRsZSh0aGlzLnRhYmxlUGx1cmFsTGFiZWwpO1xyXG4gICAgdGhpcy53aW5kb3dDb25maWcgPSB0aGlzLnZpZXcud2luZG93O1xyXG4gICAgdGhpcy5jb250ZXh0RmlsdGVycyA9IHRoaXMudmlldy53aW5kb3cuZ2xvYmFscztcclxuXHJcbiAgICB0aGlzLnNldFdpbmRvd1RpdGxlKCk7XHJcbiAgfVxyXG5cclxuICBvblBrZXlDZWxsRG91YmxlQ2xpY2tlZCA9IChncmlkQ29uZmlnOiBhbnkpID0+IHtcclxuICAgIGlmICh0aGlzLmhhc0RldGFpbFZpZXcpIHtcclxuICAgICAgdmFyIHRydVdpbmRvd0FkZFZpZXdFdmVudEFyZ3MgPSBuZXcgVHJ1V2luZG93QWRkVmlld0V2ZW50QXJncygpO1xyXG4gICAgICB0cnVXaW5kb3dBZGRWaWV3RXZlbnRBcmdzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgIHRydVdpbmRvd0FkZFZpZXdFdmVudEFyZ3MuZW50aXRpZXMgPSBncmlkQ29uZmlnLmFwaS5nZXRSZW5kZXJlZE5vZGVzKCkubWFwKChyb3dOb2RlOiBhbnkpID0+IHJvd05vZGUuZGF0YS4kZW50aXR5KTtcclxuICAgICAgdHJ1V2luZG93QWRkVmlld0V2ZW50QXJncy5lbnRpdHlJbmRleCA9IGdyaWRDb25maWcucm93SW5kZXg7XHJcbiAgICAgIHRydVdpbmRvd0FkZFZpZXdFdmVudEFyZ3MuY29tcG9uZW50TmFtZSA9IHRoaXMudGFibGVOYW1lICsgJ0RldGFpbFZpZXcnO1xyXG4gICAgICB0aGlzLnRydVdpbmRvd0V2ZW50SGFuZGxlci5hZGRWaWV3KHRydVdpbmRvd0FkZFZpZXdFdmVudEFyZ3MpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYWxlcnQodGhpcy50YWJsZVBsdXJhbExhYmVsICsgJyBkb2VzIG5vdCBoYXZlIGEgZGV0YWlsIHZpZXcuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXNlYXJjaC12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2Jhc2Utdmlld3Mvc2VhcmNoL3RydS1zZWFyY2gtdmlldy1iYXNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL3NlYXJjaC90cnUtc2VhcmNoLXZpZXctYmFzZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBR3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDOzs7O0FBUTdHLE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCLFlBQ1UsY0FBaUMsRUFDakMscUJBQTRDO1FBRDVDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBeEI1QyxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBQzdCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXpCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFFeEMsc0JBQWlCLEdBQUc7WUFDbEIsSUFBSSxFQUFFLE9BQU87WUFDYixNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJO1lBQ1YsV0FBVyxFQUFFLEVBQUU7WUFDZixJQUFJLEVBQUUsR0FBRztZQUNULE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQTtRQVdELG1CQUFjLEdBQUcsR0FBRyxFQUFFO1FBR3RCLENBQUMsQ0FBQTtRQWNELDRCQUF1QixHQUFHLENBQUMsVUFBZSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QixJQUFJLHlCQUF5QixHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztnQkFDaEUseUJBQXlCLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDeEMseUJBQXlCLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25ILHlCQUF5QixDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUM1RCx5QkFBeUIsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO2FBQ2hFO1FBQ0gsQ0FBQyxDQUFBO1FBbkNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDakQsSUFBSSxNQUFNO2dCQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hGLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQU9ELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUN4RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFFL0MsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OzhHQWpEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixzRkNYOUIsRUFBQTsyRkRXYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0Usc0JBQXNCOzRJQUtiLElBQUk7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcE1hbmFnZXIgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Rlc2t0b3Avc2VydmljZXMvdHJ1LWRlc2t0b3AtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydVdpbmRvd0V2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWhhbmRsZXInO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dBZGRWaWV3RXZlbnRBcmdzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctYWRkLXZpZXctZXZlbnQtYXJncyc7XHJcbmltcG9ydCB7IFZpZXdDb25maWcgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2Rlc2t0b3Avc2VydmljZXMvdHJ1LWRlc2t0b3Atc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1zZWFyY2gtdmlldy1iYXNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LXNlYXJjaC12aWV3LWJhc2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LXNlYXJjaC12aWV3LWJhc2UuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydVNlYXJjaFZpZXdCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBwcm90ZWN0ZWQgdmlldyE6IFZpZXdDb25maWc7XHJcblxyXG4gIHByb3RlY3RlZCB0YWJsZU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHByb3RlY3RlZCB0YWJsZVBsdXJhbE5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHByb3RlY3RlZCB0YWJsZVBsdXJhbExhYmVsOiBzdHJpbmcgPSAnJztcclxuICBwcm90ZWN0ZWQgcGtleU5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHByb3RlY3RlZCB3aW5kb3dUaXRsZTogc3RyaW5nID0gJyc7XHJcbiAgcHJvdGVjdGVkIHdpbmRvd0NvbmZpZzogYW55O1xyXG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZXMgPSBbXTtcclxuICBwcm90ZWN0ZWQgZXhwYW5kcyA9IFtdO1xyXG4gIHByb3RlY3RlZCBjb250ZXh0RmlsdGVyczogYW55O1xyXG4gIHByb3RlY3RlZCBpc1NlYXJjaGluZyA9IGZhbHNlO1xyXG4gIHByb3RlY3RlZCBlbnRpdGllcyA9IFtdO1xyXG4gIHByb3RlY3RlZCBoYXNEZXRhaWxWaWV3OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgc2VhcmNoUGFuZWxDb25maWcgPSB7XHJcbiAgICBzaWRlOiAncmlnaHQnLFxyXG4gICAgYWN0aXZlOiB0cnVlLFxyXG4gICAgb3BlbjogdHJ1ZSxcclxuICAgIG1vZEtleUxhYmVsOiAnJyxcclxuICAgIHNpemU6IDUwMCxcclxuICAgIHBpbm5lZDogZmFsc2VcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkZXNrdG9wTWFuYWdlcjogVHJ1RGVza3RvcE1hbmFnZXIsXHJcbiAgICBwcml2YXRlIHRydVdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyKSB7XHJcbiAgICB0aGlzLnZpZXcub25BY3RpdmUoKS5zdWJzY3JpYmUoKGFjdGl2ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoYWN0aXZlKVxyXG4gICAgICAgIHRoaXMud2luZG93Q29uZmlnLnRpdGxlID0gdGhpcy5kZXNrdG9wTWFuYWdlci5nZXRVbmlxdWVUaXRsZSh0aGlzLnRhYmxlUGx1cmFsTGFiZWwpO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHNldFdpbmRvd1RpdGxlID0gKCkgPT4ge1xyXG4gICAgXHJcbiAgICAgIFxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lO1xyXG4gICAgdGhpcy50YWJsZVBsdXJhbE5hbWUgPSB0aGlzLnZpZXcud2luZG93LnRhYmxlUGx1cmFsTmFtZTtcclxuICAgIHRoaXMudGFibGVQbHVyYWxMYWJlbCA9IHRoaXMudmlldy53aW5kb3cudGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMucGtleU5hbWUgPSB0aGlzLnRhYmxlTmFtZSArICdSZWYnO1xyXG4gICAgdGhpcy53aW5kb3dUaXRsZSA9IHRoaXMuZGVza3RvcE1hbmFnZXIuZ2V0VW5pcXVlVGl0bGUodGhpcy50YWJsZVBsdXJhbExhYmVsKTtcclxuICAgIHRoaXMud2luZG93Q29uZmlnID0gdGhpcy52aWV3LndpbmRvdztcclxuICAgIHRoaXMuY29udGV4dEZpbHRlcnMgPSB0aGlzLnZpZXcud2luZG93Lmdsb2JhbHM7XHJcblxyXG4gICAgdGhpcy5zZXRXaW5kb3dUaXRsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25Qa2V5Q2VsbERvdWJsZUNsaWNrZWQgPSAoZ3JpZENvbmZpZzogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5oYXNEZXRhaWxWaWV3KSB7XHJcbiAgICAgIHZhciB0cnVXaW5kb3dBZGRWaWV3RXZlbnRBcmdzID0gbmV3IFRydVdpbmRvd0FkZFZpZXdFdmVudEFyZ3MoKTtcclxuICAgICAgdHJ1V2luZG93QWRkVmlld0V2ZW50QXJncy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICB0cnVXaW5kb3dBZGRWaWV3RXZlbnRBcmdzLmVudGl0aWVzID0gZ3JpZENvbmZpZy5hcGkuZ2V0UmVuZGVyZWROb2RlcygpLm1hcCgocm93Tm9kZTogYW55KSA9PiByb3dOb2RlLmRhdGEuJGVudGl0eSk7XHJcbiAgICAgIHRydVdpbmRvd0FkZFZpZXdFdmVudEFyZ3MuZW50aXR5SW5kZXggPSBncmlkQ29uZmlnLnJvd0luZGV4O1xyXG4gICAgICB0cnVXaW5kb3dBZGRWaWV3RXZlbnRBcmdzLmNvbXBvbmVudE5hbWUgPSB0aGlzLnRhYmxlTmFtZSArICdEZXRhaWxWaWV3JztcclxuICAgICAgdGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIuYWRkVmlldyh0cnVXaW5kb3dBZGRWaWV3RXZlbnRBcmdzKTtcclxuICAgICAgdGhpcy52aWV3LmFjdGl2ZShmYWxzZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhbGVydCh0aGlzLnRhYmxlUGx1cmFsTGFiZWwgKyAnIGRvZXMgbm90IGhhdmUgYSBkZXRhaWwgdmlldy4nKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiIl19
@@ -128,7 +128,7 @@ export class TruDesktop {
128
128
  this.getActiveView = (wdw) => {
129
129
  var activeView = null;
130
130
  wdw.views.forEach((view) => {
131
- if (view.active === true) {
131
+ if (view.active$.getValue() === true) {
132
132
  activeView = view;
133
133
  }
134
134
  });
@@ -700,4 +700,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
700
700
  }], ctorParameters: function () { return [{ type: i1.TruDesktopService }, { type: i2.TruWindowEventHandler }]; }, propDecorators: { options: [{
701
701
  type: Input
702
702
  }] } });
703
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZGVza3RvcC90cnUtZGVza3RvcC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3RydS1kZXNrdG9wLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBUW5FLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1UsY0FBaUMsRUFDakMscUJBQTRDO1FBRDVDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBR3RELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUM5Qiw2QkFBd0IsR0FBRyxHQUFHLENBQUM7UUFDL0IsOEJBQXlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN4RyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFP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bXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRBcmdzIH0gZnJvbSAnLi9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWFyZ3MnO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XG5pbXBvcnQgeyBUcnVEZXNrdG9wU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdHJ1LWRlc2t0b3Atc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RydS1kZXNrdG9wJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kZXNrdG9wLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cnUtZGVza3RvcC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbVHJ1RGVza3RvcFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFRydURlc2t0b3AgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBvcHRpb25zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXNrdG9wU2VydmljZTogVHJ1RGVza3RvcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cnVXaW5kb3dFdmVudEhhbmRsZXI6IFRydVdpbmRvd0V2ZW50SGFuZGxlcikge1xuICB9XHJcblxuICBtaW5pbWl6ZUFsbCA9IGZhbHNlO1xuICBkZXNrdG9wID0gdGhpcy5kZXNrdG9wU2VydmljZS5jcmVhdGVEZXNrdG9wKCk7XG4gIG1pbldpbmRvd0Nhc2NhZGVQb3NpdGlvbiA9IDQwO1xuICBtYXhXaW5kb3dDYXNjYWRlUG9zaXRpb24gPSAxMDA7XG4gIGxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24gPSB7IHRvcDogdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb24sIGxlZnQ6IHRoaXMubWluV2luZG93Q2FzY2FkZVBvc2l0aW9uIH07XG4gIHNoaWZ0UHJlc3NlZCA9IGZhbHNlO1xuICBhbHRQcmVzc2VkID0gZmFsc2U7XG4gIHhQcmVzc2VkID0gZmFsc2U7XG4gIGtleWJvYXJkTWFwID0gW1wiXCIsIFwiXCIsIFwiXCIsIFwiQ0FOQ0VMXCIsIFwiXCIsIFwiXCIsIFwiSEVMUFwiLCBcIlwiLCBcIkJBQ0tfU1BBQ0VcIiwgXCJUQUJcIiwgXCJcIiwgXCJcIiwgXCJDTEVBUlwiLCBcIkVOVEVSXCIsIFwiUkVUVVJOXCIsIFwiXCIsIFwiU0hJRlRcIiwgXCJDT05UUk9MXCIsIFwiQUxUXCIsIFwiUEFVU0VcIiwgXCJDQVBTX0xPQ0tcIiwgXCJLQU5BXCIsIFwiRUlTVVwiLCBcIkpVTkpBXCIsIFwiRklOQUxcIiwgXCJIQU5KQVwiLCBcIlwiLCBcIkVTQ0FQRVwiLCBcIkNPTlZFUlRcIiwgXCJOT05DT05WRVJUXCIsIFwiQUNDRVBUXCIsIFwiTU9ERUNIQU5HRVwiLCBcIlNQQUNFXCIsIFwiUEFHRV9VUFwiLCBcIlBBR0VfRE9XTlwiLCBcIkVORFwiLCBcIkhPTUVcIiwgXCJMRUZUXCIsIFwiVVBcIiwgXCJSSUdIVFwiLCBcIkRPV05cIiwgXCJTRUxFQ1RcIiwgXCJQUklOVFwiLCBcIkVYRUNVVEVcIiwgXCJQUklOVFNDUkVFTlwiLCBcIklOU0VSVFwiLCBcIkRFTEVURVwiLCBcIlwiLCBcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCJDT0xPTlwiLCBcIlNFTUlDT0xPTlwiLCBcIkxFU1NfVEhBTlwiLCBcIkVRVUFMU1wiLCBcIkdSRUFURVJfVEhBTlwiLCBcIlFVRVNUSU9OX01BUktcIiwgXCJBVFwiLCBcIkFcIiwgXCJCXCIsIFwiQ1wiLCBcIkRcIiwgXCJFXCIsIFwiRlwiLCBcIkdcIiwgXCJIXCIsIFwiSVwiLCBcIkpcIiwgXCJLXCIsIFwiTFwiLCBcIk1cIiwgXCJOXCIsIFwiT1wiLCBcIlBcIiwgXCJRXCIsIFwiUlwiLCBcIlNcIiwgXCJUXCIsIFwiVVwiLCBcIlZcIiwgXCJXXCIsIFwiWFwiLCBcIllcIiwgXCJaXCIsIFwiV0lOXCIsIFwiXCIsIFwiQ09OVEVYVF9NRU5VXCIsIFwiXCIsIFwiU0xFRVBcIiwgXCJOVU1QQUQwXCIsIFwiTlVNUEFEMVwiLCBcIk5VTVBBRDJcIiwgXCJOVU1QQUQzXCIsIFwiTlVNUEFENFwiLCBcIk5VTVBBRDVcIiwgXCJOVU1QQUQ2XCIsIFwiTlVNUEFEN1wiLCBcIk5VTVBBRDhcIiwgXCJOVU1QQUQ5XCIsIFwiTVVMVElQTFlcIiwgXCJBRERcIiwgXCJTRVBBUkFUT1JcIiwgXCJTVUJUUkFDVFwiLCBcIkRFQ0lNQUxcIiwgXCJESVZJREVcIiwgXCJGMVwiLCBcIkYyXCIsIFwiRjNcIiwgXCJGNFwiLCBcIkY1XCIsIFwiRjZcIiwgXCJGN1wiLCBcIkY4XCIsIFwiRjlcIiwgXCJGMTBcIiwgXCJGMTFcIiwgXCJGMTJcIiwgXCJGMTNcIiwgXCJGMTRcIiwgXCJGMTVcIiwgXCJGMTZcIiwgXCJGMTdcIiwgXCJGMThcIiwgXCJGMTlcIiwgXCJGMjBcIiwgXCJGMjFcIiwgXCJGMjJcIiwgXCJGMjNcIiwgXCJGMjRcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJOVU1fTE9DS1wiLCBcIlNDUk9MTF9MT0NLXCIsIFwiV0lOX09FTV9GSl9KSVNIT1wiLCBcIldJTl9PRU1fRkpfTUFTU0hPVVwiLCBcIldJTl9PRU1fRkpfVE9VUk9LVVwiLCBcIldJTl9PRU1fRkpfTE9ZQVwiLCBcIldJTl9PRU1fRkpfUk9ZQVwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIkNJUkNVTUZMRVhcIiwgXCJFWENMQU1BVElPTlwiLCBcIkRPVUJMRV9RVU9URVwiLCBcIkhBU0hcIiwgXCJET0xMQVJcIiwgXCJQRVJDRU5UXCIsIFwiQU1QRVJTQU5EXCIsIFwiVU5ERVJTQ09SRVwiLCBcIk9QRU5fUEFSRU5cIiwgXCJDTE9TRV9QQVJFTlwiLCBcIkFTVEVSSVNLXCIsIFwiUExVU1wiLCBcIlBJUEVcIiwgXCJIWVBIRU5fTUlOVVNcIiwgXCJPUEVOX0NVUkxZX0JSQUNLRVRcIiwgXCJDTE9TRV9DVVJMWV9CUkFDS0VUXCIsIFwiVElMREVcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJWT0xVTUVfTVVURVwiLCBcIlZPTFVNRV9ET1dOXCIsIFwiVk9MVU1FX1VQXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiQ09NTUFcIiwgXCJcIiwgXCJQRVJJT0RcIiwgXCJTTEFTSFwiLCBcIkJBQ0tfUVVPVEVcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJPUEVOX0JSQUNLRVRcIiwgXCJCQUNLX1NMQVNIXCIsIFwiQ0xPU0VfQlJBQ0tFVFwiLCBcIlFVT1RFXCIsIFwiXCIsIFwiTUVUQVwiLCBcIkFMVEdSXCIsIFwiXCIsIFwiV0lOX0lDT19IRUxQXCIsIFwiV0lOX0lDT18wMFwiLCBcIlwiLCBcIldJTl9JQ09fQ0xFQVJcIiwgXCJcIiwgXCJcIiwgXCJXSU5fT0VNX1JFU0VUXCIsIFwiV0lOX09FTV9KVU1QXCIsIFwiV0lOX09FTV9QQTFcIiwgXCJXSU5fT0VNX1BBMlwiLCBcIldJTl9PRU1fUEEzXCIsIFwiV0lOX09FTV9XU0NUUkxcIiwgXCJXSU5fT0VNX0NVU0VMXCIsIFwiV0lOX09FTV9BVFROXCIsIFwiV0lOX09FTV9GSU5JU0hcIiwgXCJXSU5fT0VNX0NPUFlcIiwgXCJXSU5fT0VNX0FVVE9cIiwgXCJXSU5fT0VNX0VOTFdcIiwgXCJXSU5fT0VNX0JBQ0tUQUJcIiwgXCJBVFROXCIsIFwiQ1JTRUxcIiwgXCJFWFNFTFwiLCBcIkVSRU9GXCIsIFwiUExBWVwiLCBcIlpPT01cIiwgXCJcIiwgXCJQQTFcIiwgXCJXSU5fT0VNX0NMRUFSXCIsIFwiXCJdO1xuICBsb2dvVXJsID0gbnVsbDtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXREZXNrdG9wXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJldHVybiBhbiBvYmplY3Qgb2YgZGVza3RvcC5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gZGVza3RvcC5cbiAgICovXG4gIGdldERlc2t0b3AgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVza3RvcDtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXRPcHRpb25zXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJldHVybiBhbiBvYmplY3Qgb2YgZGVza3RvcCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBvcHRpb25zLlxuICAgKi9cbiAgZ2V0T3B0aW9ucyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldFdpbmRvd3NcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIHdpbmRvd3MuXG4gICAqXG4gICAqIEByZXR1cm5zIHthcnJheX0gd2luZG93cy5cbiAgICovXG4gIGdldFdpbmRvd3MgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMud2luZG93cztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXROZXh0TWF4WkluZGV4XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIHdpbmRvdyBvYmplY3RzIGluIHRoZSB3aW5kb3dzIGFycmF5IHRvIGZpbmQgdGhlIG1heCB6LWluZGV4XG4gICAqIGFuZCBpbmNyZWFzZXMgdGhlIHZhbHVlIGZvdW5kIGJ5IDEuXG4gICAqXG4gICAqIEByZXR1cm5zIHtpbnR9XG4gICAqL1xuICBnZXROZXh0TWF4WkluZGV4ID0gKCkgPT4ge1xuICAgIHZhciBtYXggPSAwO1xuICAgIHZhciB0bXA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMud2luZG93cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdG1wID0gdGhpcy53aW5kb3dzW2ldLnpJbmRleDtcbiAgICAgIGlmICh0bXAgPiBtYXgpIG1heCA9IHRtcDtcbiAgICB9XG4gICAgcmV0dXJuICsrbWF4O1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmNsZWFyQWN0aXZlXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIHdpbmRvdyBvYmplY3RzIGluIHRoZSB3aW5kb3dzXG4gICAqIGFuZCBzZXRzIHRoZSBhY3RpdmUgcHJvcGVydHkgdG8gZmFsc2UuXG4gICAqXG4gICAqL1xuICBjbGVhckFjdGl2ZSA9ICgpID0+IHtcbiAgICB0aGlzLndpbmRvd3MuZm9yRWFjaCgod2luZG93OiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXRBY3RpdmVXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyB0aGUgYWN0aXZlIHdpbmRvdy5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gdmlldyBvYmplY3QuXG4gICAqL1xuICBnZXRBY3RpdmVXaW5kb3cgPSAoKTogYW55ID0+IHtcbiAgICB2YXIgYWN0aXZlV2luZG93ID0gbnVsbDtcbiAgICB0aGlzLndpbmRvd3MuZm9yRWFjaCgod2R3OiBhbnkpID0+IHtcbiAgICAgIGlmICh3ZHcuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICAgIGFjdGl2ZVdpbmRvdyA9IHdkdztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlV2luZG93O1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldEFjdGl2ZVZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyB0aGUgYWN0aXZlIHZpZXcuXG4gICAqXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IHZpZXcgb2JqZWN0LlxuICAgKi9cbiAgZ2V0QWN0aXZlVmlldyA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIHZhciBhY3RpdmVWaWV3ID0gbnVsbDtcbiAgICB3ZHcudmlld3MuZm9yRWFjaCgodmlldzogYW55KSA9PiB7XG4gICAgICBpZiAodmlldy5hY3RpdmUgPT09IHRydWUpIHtcbiAgICAgICAgYWN0aXZlVmlldyA9IHZpZXc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2ZVZpZXc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYWxsV2luZG93c0FyZU1pbmltaXplZFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJdGVyYXRlcyB0aHJvdWdoIHdpbmRvd3MgdG8gZGV0ZXJtaW5lIGlmIGFsbCBhcmUgbWluaW1pemVkLlxuICAgKlxuICAgKi9cbiAgYWxsV2luZG93c0FyZU1pbmltaXplZCA9ICgpID0+IHtcbiAgICB2YXIgYWxsTWluaW1pemVkID0gdHJ1ZTtcbiAgICB0aGlzLndpbmRvd3MuZm9yRWFjaCgod2luZG93OiBhbnkpID0+IHtcbiAgICAgIGlmICghd2luZG93Lm1pbmltaXplZCkge1xuICAgICAgICBhbGxNaW5pbWl6ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWxsTWluaW1pemVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmhpZGVTaG93QWxsXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEhpZGVzL3Nob3dzIGFsbCB3aW5kb3dzXG4gICAqXG4gICAqL1xuICBoaWRlU2hvd0FsbCA9ICgpID0+IHtcbiAgICB0aGlzLm1pbmltaXplQWxsID0gdGhpcy5hbGxXaW5kb3dzQXJlTWluaW1pemVkKCkgPyBmYWxzZSA6ICF0aGlzLm1pbmltaXplQWxsO1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3ZHc6IGFueSkgPT4ge1xuICAgICAgaWYgKHdkdy5vdXRPZkJvdW5kcykgdGhpcy5yZWNvdmVyKHdkdyk7XG4gICAgICB3ZHcuYWN0aXZlID0gZmFsc2U7XG4gICAgICB3ZHcubWluaW1pemVkID0gdGhpcy5taW5pbWl6ZUFsbDtcbiAgICB9KTtcbiAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgICByZXR1cm4gdGhpcy5taW5pbWl6ZUFsbDtcbiAgfTtcblxuICAvKipcclxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxyXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZmluZFdpbmRvd1ZpZXdEaXJlY3RpdmVcclxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBMb29rcyBmb3IgcHJldmlvdXNseSBvcGVuIHdpbmRvdyB3aXRoIGEgdmlldyBkaXJlY3RpdmVcclxuICAgKlxyXG4gICAqL1xyXG4gIGZpbmRXaW5kb3dWaWV3RGlyZWN0aXZlID0gKHdpbmRvd1ZpZXdEaXJlY3RpdmU6IGFueSkgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndpbmRvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLndpbmRvd3NbaV0udmlld3MubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAodGhpcy53aW5kb3dzW2ldLnZpZXdzWzBdLnZpZXdEaXJlY3RpdmUgPT09IHdpbmRvd1ZpZXdEaXJlY3RpdmUpXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy53aW5kb3dzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50Lm9wZW5XaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzcGxheXMgYSBuZXcgd2luZG93LiBBbGwgd2luZG93IHByb3BlcnRpZXMgZGVmaW5lZCBieSB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyIHdpbGwgYmVcbiAgICogb3ZlcmxhaWQgaGVyZSBiZWZvcmUgZGlzcGxheWluZyB0aGUgd2luZG93XG4gICAqXG4gICAqL1xuICBvcGVuV2luZG93ID0gKHdpbmRvd0NvbmZpZ092ZXJsYXlzOiBhbnksIHNpbmdsZUluc3RhbmNlOiBhbnkpID0+IHtcbiAgICBsZXQgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcclxuICAgIGlmIChhY3RpdmVXaW5kb3cgJiYgYWN0aXZlV2luZG93LmlzTW9kYWwpIHtcclxuICAgICAgYWN0aXZlV2luZG93LmludmFsaWRPcGVyYXRpb24gPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNpbmdsZUluc3RhbmNlKSB7XHJcbiAgICAgIGxldCB3aW5kb3cgPSB0aGlzLmZpbmRXaW5kb3dWaWV3RGlyZWN0aXZlKHdpbmRvd0NvbmZpZ092ZXJsYXlzLnZpZXdzWzBdLnZpZXdEaXJlY3RpdmUpO1xyXG4gICAgICBpZiAod2luZG93KSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVXaW5kb3dTdGF0ZSh3aW5kb3cpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3dDb25maWdPdmVybGF5cy5pc01vZGFsKSB7XHJcbiAgICAgIGxldCBoZWlnaHRPZmZzZXQgPSAocGFyc2VJbnQod2luZG93Q29uZmlnT3ZlcmxheXMuaGVpZ2h0LCAxMCkgLyAyKSArIDMwO1xyXG4gICAgICBsZXQgd2lkdGhPZmZzZXQgPSAocGFyc2VJbnQod2luZG93Q29uZmlnT3ZlcmxheXMud2lkdGgsIDEwKSAvIDIpO1xyXG4gICAgICB3aW5kb3dDb25maWdPdmVybGF5cy50b3AgPSAnY2FsYyg1MCUgLSAnICsgaGVpZ2h0T2Zmc2V0ICsgJ3B4ICknO1xyXG4gICAgICB3aW5kb3dDb25maWdPdmVybGF5cy5sZWZ0ID0gJ2NhbGMoNTAlIC0gJyArIHdpZHRoT2Zmc2V0ICsgJ3B4ICknO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcclxuICAgIGxldCBjb25maWd1cmVkV2luZG93ID0gdGhpcy5jb25maWd1cmVXaW5kb3cod2luZG93Q29uZmlnT3ZlcmxheXMpO1xyXG4gICAgY29uZmlndXJlZFdpbmRvdy52aWV3cyA9IHRoaXMuY29uZmlndXJlVmlld3Mod2luZG93Q29uZmlnT3ZlcmxheXMsIGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgaWYgKCFjb25maWd1cmVkV2luZG93LmlzTW9kYWwpIHtcclxuICAgICAgY29uZmlndXJlZFdpbmRvdy5jYXNjYWRlV2luZG93ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2F2ZVBvc2l0aW9uKGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgICB0aGlzLm1heGltaXplKGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgICB0aGlzLndpbmRvd3MucHVzaChjb25maWd1cmVkV2luZG93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud2luZG93cy5wdXNoKGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmNvbmZpZ3VyZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDcmVhdGVzIGEgbmV3IHdpbmRvdyBpbnN0YW5jZS5cbiAgICpcbiAgICovXG4gIGNvbmZpZ3VyZVdpbmRvdyA9ICh3aW5kb3dDb25maWdPdmVybGF5czogYW55KSA9PiB7XG4gICAgdmFyIHdpbmRvd0NvbmZpZ0luc3RhbmNlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZXNrdG9wLndpbmRvd0NvbmZpZyk7XG4gICAgd2luZG93Q29uZmlnSW5zdGFuY2Uuc2F2ZWRQb3NpdGlvbiA9IE9iamVjdC5jcmVhdGUoeyB0b3A6IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwLCBib3R0b206IDAsIGhlaWdodDogMCwgd2lkdGg6IDAgfSk7XG4gICAgd2luZG93Q29uZmlnSW5zdGFuY2UuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XG4gICAgLy93aW5kb3dDb25maWdJbnN0YW5jZS5nbG9iYWxzID0gT2JqZWN0LmFzc2lnbih7fSwgJHJvb3RTY29wZS4kZXZhbCh0aGlzLm9wdGlvbnMuZ2xvYmFscykpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHdpbmRvd0NvbmZpZ0luc3RhbmNlLCB3aW5kb3dDb25maWdPdmVybGF5cyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY29uZmlndXJlVmlld3NcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSB2aWV3IGluc3RhbmNlc1xuICAgKlxuICAgKi9cbiAgY29uZmlndXJlVmlld3MgPSAod2luZG93Q29uZmlnT3ZlcmxheXM6IGFueSwgY29uZmlndXJlZFdpbmRvdzogYW55KTogQXJyYXk8YW55PiA9PiB7XG4gICAgbGV0IGNvbmZpZ3VyZWRWaWV3czogQXJyYXk8YW55PiA9IFtdO1xuICAgIHdpbmRvd0NvbmZpZ092ZXJsYXlzLnZpZXdzLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgbGV0IHZpZXdDb25maWdJbnN0YW5jZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVza3RvcC52aWV3Q29uZmlnKTtcbiAgICAgIC8vdmlld0NvbmZpZ0luc3RhbmNlLmdsb2JhbHMgPSB0aGlzLm9wdGlvbnMuZ2xvYmFscztcbiAgICAgIGxldCBjb25maWd1cmVkVmlldyA9IE9iamVjdC5hc3NpZ24odmlld0NvbmZpZ0luc3RhbmNlLCB2aWV3KTtcbiAgICAgIGNvbmZpZ3VyZWRWaWV3LndpbmRvdyA9IGNvbmZpZ3VyZWRXaW5kb3c7XG4gICAgICBjb25maWd1cmVkVmlld3MucHVzaChjb25maWd1cmVkVmlldyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRWaWV3cztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5jbG9zZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBSZW1vdmUgYSB3aW5kb3cge29iamVjdH0gZnJvbSB0aGUgd2luZG93cyBhcnJheS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHJldHVybnMgdHJ1ZSBpZiB3aW5kb3cgd2FzIGNsb3NlZCwgZmFsc2UgaWYgbm90IGNsb3NlZC5cbiAgICovXG4gIGNsb3NlV2luZG93ID0gKHdkdzogYW55KSA9PiB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuYWxsb3dEaXJ0eUNsb3NlICYmIHdkdy5pc0RpcnR5KSB7XG4gICAgICBhbGVydChcIlVuc2F2ZWQgQ2hhbmdlcy4gU2F2ZSBjaGFuZ2VzIGJlZm9yZSBjbG9zaW5nIHdpbmRvdy5cIik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuYWxsb3dJbnZhbGlkQ2xvc2UgJiYgd2R3LmlzSW52YWxpZCkge1xuICAgICAgYWxlcnQoXCJEYXRhIGlzIGludmFsaWQuIENvcnJlY3QgSW52YWxpZCBkYXRhIGJlZm9yZSBjbG9zaW5nIHdpbmRvdy5cIik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jYW5DbG9zZUZuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FuQ2xvc2VGbih3ZHcpKSB7XG4gICAgICAgIHRoaXMud2luZG93cy5zcGxpY2UodGhpcy53aW5kb3dzLmluZGV4T2Yod2R3KSwgMSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVGb3JlbW9zdFdpbmRvdygpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2luZG93cy5zcGxpY2UodGhpcy53aW5kb3dzLmluZGV4T2Yod2R3KSwgMSk7XG4gICAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYWN0aXZhdGVGb3JlbW9zdFdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgdGhlIGZvcmVtb3N0IHdpbmRvdyB0byBhbiBhY3RpdmUgc3RhdGVcbiAgICpcbiAgICovXG4gIGFjdGl2YXRlRm9yZW1vc3RXaW5kb3cgPSAoKSA9PiB7XG4gICAgdmFyIGZvcmVtb3N0ID0gdW5kZWZpbmVkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy53aW5kb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoKGZvcmVtb3N0ID09PSB1bmRlZmluZWQgfHwgdGhpcy53aW5kb3dzW2ldLnpJbmRleCA+IGZvcmVtb3N0LnpJbmRleCkgJiYgIXRoaXMud2luZG93c1tpXS5taW5pbWl6ZWQgJiYgIXRoaXMud2luZG93c1tpXS5vdXRPZkJvdW5kcylcbiAgICAgICAgZm9yZW1vc3QgPSB0aGlzLndpbmRvd3NbaV07XG4gICAgfVxuICAgIGlmIChmb3JlbW9zdClcbiAgICAgIGZvcmVtb3N0LmFjdGl2ZSA9IHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYWN0aXZhdGVOZXh0V2luZG93XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldCB0aGUgbmV4dCB3aW5kb3cgdG8gYW4gYWN0aXZlIHN0YXRlXG4gICAqXG4gICAqL1xuICBhY3RpdmF0ZU5leHRXaW5kb3cgPSAoYWN0aXZlV2luZG93TG9jYXRpb246IGFueSkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvd3MubGVuZ3RoIDw9IDEpIHJldHVybjtcbiAgICB2YXIgYmFja2VuZCA9IHRoaXMud2luZG93cy5zbGljZShhY3RpdmVXaW5kb3dMb2NhdGlvbik7XG4gICAgdmFyIGZyb250ZW5kID0gdGhpcy53aW5kb3dzLnNsaWNlKDAsIGFjdGl2ZVdpbmRvd0xvY2F0aW9uIC0gMSk7XG4gICAgdmFyIHNvcnRlZCA9IGJhY2tlbmQuY29uY2F0KGZyb250ZW5kKTtcbiAgICB2YXIgbmV4dFdpbmRvdyA9IHVuZGVmaW5lZDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFzb3J0ZWRbaV0ubWluaW1pemVkICYmICFzb3J0ZWRbaV0ub3V0T2ZCb3VuZHMgJiYgIW5leHRXaW5kb3cpXG4gICAgICAgIG5leHRXaW5kb3cgPSBzb3J0ZWRbaV07XG4gICAgfVxuXG4gICAgaWYgKG5leHRXaW5kb3cpIHtcbiAgICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcbiAgICAgIG5leHRXaW5kb3cuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XG4gICAgICBuZXh0V2luZG93LmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmFjdGl2YXRlUHJldmlvdXNXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0IHRoZSBwcmV2aW91cyB3aW5kb3cgdG8gYW4gYWN0aXZlIHN0YXRlXG4gICAqXG4gICAqL1xuICBhY3RpdmF0ZVByZXZpb3VzV2luZG93ID0gKGFjdGl2ZVdpbmRvd0xvY2F0aW9uOiBhbnkpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3dzLmxlbmd0aCA8PSAxKSByZXR1cm47XG4gICAgdmFyIGJhY2tlbmQgPSB0aGlzLndpbmRvd3Muc2xpY2UoYWN0aXZlV2luZG93TG9jYXRpb24pO1xuICAgIHZhciBmcm9udGVuZCA9IHRoaXMud2luZG93cy5zbGljZSgwLCBhY3RpdmVXaW5kb3dMb2NhdGlvbiAtIDEpO1xuICAgIHZhciBzb3J0ZWQgPSBiYWNrZW5kLmNvbmNhdChmcm9udGVuZCk7XG4gICAgdmFyIG5leHRXaW5kb3cgPSB1bmRlZmluZWQ7XG4gICAgZm9yICh2YXIgaSA9IHNvcnRlZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKCFzb3J0ZWRbaV0ubWluaW1pemVkICYmICFzb3J0ZWRbaV0ub3V0T2ZCb3VuZHMgJiYgIW5leHRXaW5kb3cpXG4gICAgICAgIG5leHRXaW5kb3cgPSBzb3J0ZWRbaV07XG4gICAgfVxuXG4gICAgaWYgKG5leHRXaW5kb3cpIHtcbiAgICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcbiAgICAgIG5leHRXaW5kb3cuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XG4gICAgICBuZXh0V2luZG93LmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50Lm1pbmltaXplXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFZpc3VhbGx5IHJlbW92ZXMgd2luZG93IGZyb20gdGhlIHZpZXdwb3J0LlxuICAgKlxuICAgKi9cbiAgbWluaW1pemUgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB0aGlzLnNhdmVQb3NpdGlvbih3aW5kb3cpO1xuXG4gICAgd2luZG93LmFjdGl2ZSA9IGZhbHNlO1xuICAgIHdpbmRvdy5taW5pbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZhdGVGb3JlbW9zdFdpbmRvdygpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50Lm1heGltaXplXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFBvc2l0aW9ucyB3aW5kb3cgc3VjaCB0aGF0IGl0IGZpbGxzIHRoZSB3aG9sZSB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1heGltaXplID0gKHdpbmRvdzogYW55KSA9PiB7XG4gICAgd2luZG93LnRvcCA9IDA7XG4gICAgd2luZG93LmxlZnQgPSAwO1xuICAgIHdpbmRvdy5yaWdodCA9IDA7XG4gICAgd2luZG93LmJvdHRvbSA9IDA7XG4gICAgd2luZG93LmhlaWdodCA9ICdhdXRvJztcbiAgICB3aW5kb3cud2lkdGggPSAnMTAwJSc7XG4gICAgd2luZG93Lm1heGltaXplZCA9ICdmaWxsJztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5tYXhpbWl6ZUxlZnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUG9zaXRpb25zIHdpbmRvdyBzdWNoIHRoYXQgaXQgZmlsbHMgdGhlIGxlZnQgcG9ydGlvbiB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1heGltaXplTGVmdCA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIHdpbmRvdy5zcGxpdCA9IHRydWU7XG4gICAgd2luZG93LnRvcCA9IDA7XG4gICAgd2luZG93LmxlZnQgPSAwO1xuICAgIHdpbmRvdy5ib3R0b20gPSAwO1xuICAgIHdpbmRvdy53aWR0aCA9ICc1MCUnO1xuICAgIHdpbmRvdy5oZWlnaHQgPSAnYXV0byc7XG4gICAgd2luZG93Lm1heGltaXplZCA9ICdsZWZ0JztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5tYXhpbWl6ZVJpZ2h0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFBvc2l0aW9ucyB3aW5kb3cgc3VjaCB0aGF0IGl0IGZpbGxzIHRoZSByaWdodCBwb3J0aW9uIHZpZXdwb3J0LlxuICAgKlxuICAgKi9cbiAgbWF4aW1pemVSaWdodCA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIHdpbmRvdy50b3AgPSAwO1xuICAgIHdpbmRvdy5sZWZ0ID0gJzUwJSc7XG4gICAgd2luZG93LnJpZ2h0ID0gMDtcbiAgICB3aW5kb3cuYm90dG9tID0gMDtcbiAgICB3aW5kb3cud2lkdGggPSAnNTAlJztcbiAgICB3aW5kb3cuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgIHdpbmRvdy5tYXhpbWl6ZWQgPSAncmlnaHQnO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LnJlY292ZXJcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQnJpbmdzIHdpbmRvdyBiYWNrIGludG8gdmlldyB3aGVuIGl0IGhhcyBlc2NhcGVkIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIHJlY292ZXIgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB3aW5kb3cuYWN0aXZlID0gdHJ1ZTtcbiAgICB3aW5kb3cub3V0T2ZCb3VuZHMgPSBmYWxzZTtcbiAgICB3aW5kb3cubWluaW1pemVkID0gZmFsc2U7XG4gICAgd2luZG93LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICAgIHRoaXMuY2FzY2FkZVdpbmRvdyh3aW5kb3cpO1xuICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcbiAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5yZXN0b3JlXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICByZXN0b3JlID0gKHdkdzogYW55KSA9PiB7XG4gICAgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdmaWxsJykge1xuICAgICAgdGhpcy5tYXhpbWl6ZSh3ZHcpO1xuICAgIH0gZWxzZSBpZiAod2R3Lm1heGltaXplZCA9PT0gJ2xlZnQnKSB7XG4gICAgICB0aGlzLm1heGltaXplTGVmdCh3ZHcpO1xuICAgIH0gZWxzZSBpZiAod2R3Lm1heGltaXplZCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgdGhpcy5tYXhpbWl6ZVJpZ2h0KHdkdyk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlV2luZG93U3RhdGUod2R3KTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5icmluZ1RvRnJvbnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICovXG4gIHVwZGF0ZVdpbmRvd1N0YXRlID0gKHdkdzogYW55KSA9PiB7XHJcbiAgICBpZiAod2R3Lm91dE9mQm91bmRzKSB7XHJcbiAgICAgIHRoaXMucmVjb3Zlcih3ZHcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdmaWxsJykge1xyXG4gICAgICB0aGlzLm1heGltaXplKHdkdyk7XHJcbiAgICB9IGVsc2UgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdsZWZ0Jykge1xyXG4gICAgICB0aGlzLm1heGltaXplTGVmdCh3ZHcpO1xyXG4gICAgfSBlbHNlIGlmICh3ZHcubWF4aW1pemVkID09PSAncmlnaHQnKSB7XHJcbiAgICAgIHRoaXMubWF4aW1pemVSaWdodCh3ZHcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgd2R3LmFjdGl2ZSA9IHRydWU7XHJcbiAgICB3ZHcubWluaW1pemVkID0gZmFsc2U7XHJcbiAgICB3ZHcuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XHJcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5yZXN0b3JlU2F2ZWRQb3NpdGlvblxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgdGhlIHdpbmRvd3MgbGFzdCBrbm93IHBvc2l0aW9uIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uLlxuICAgKlxuICAgKi9cbiAgcmVzdG9yZVNhdmVkUG9zaXRpb24gPSAod2R3OiBhbnkpID0+IHtcbiAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgd2R3LnRvcCA9IHdkdy5zYXZlZFBvc2l0aW9uLnRvcDtcbiAgICB3ZHcubGVmdCA9IHdkdy5zYXZlZFBvc2l0aW9uLmxlZnQ7XG4gICAgd2R3LnJpZ2h0ID0gd2R3LnNhdmVkUG9zaXRpb24ucmlnaHQ7XG4gICAgd2R3LmJvdHRvbSA9IHdkdy5zYXZlZFBvc2l0aW9uLmJvdHRvbTtcbiAgICB3ZHcuaGVpZ2h0ID0gd2R3LnNhdmVkUG9zaXRpb24uaGVpZ2h0O1xuICAgIHdkdy53aWR0aCA9IHdkdy5zYXZlZFBvc2l0aW9uLndpZHRoO1xuICAgIHdkdy5tYXhpbWl6ZWQgPSB1bmRlZmluZWQ7XG4gICAgd2R3Lm1pbmltaXplZCA9IHVuZGVmaW5lZDtcbiAgICB3ZHcuYWN0aXZlID0gdHJ1ZTtcbiAgICB3ZHcubWluaW1pemVkID0gZmFsc2U7XG4gICAgd2R3LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LnNhdmVQb3NpdGlvblxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTYXZlIHRoZSB3aW5kb3dzIGxhc3Qga25vdyBwb3NpdGlvbi5cbiAgICpcbiAgICovXG4gIHNhdmVQb3NpdGlvbiA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLnRvcCA9IHdkdy50b3A7XG4gICAgd2R3LnNhdmVkUG9zaXRpb24ubGVmdCA9IHdkdy5sZWZ0O1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLnJpZ2h0ID0gd2R3LnJpZ2h0O1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLmJvdHRvbSA9IHdkdy5ib3R0b207XG4gICAgd2R3LnNhdmVkUG9zaXRpb24uaGVpZ2h0ID0gd2R3LmhlaWdodDtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi53aWR0aCA9IHdkdy53aWR0aDtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5jbG9zZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb3ZlcyBhIHdpbmRvdyB0byB0aGUgbmV4dCBjYXNjYWRlIHBvc2l0aW9uLlxuICAgKlxuICAgKi9cbiAgY2FzY2FkZVdpbmRvdyA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmVuYWJsZVdpbmRvd0Nhc2NhZGluZyB8fCB3aW5kb3cuaXNNb2RhbCkgcmV0dXJuO1xuICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgKz0gMTA7XG4gICAgdGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLmxlZnQgKz0gMTA7XG4gICAgaWYgKHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgPiB0aGlzLm1heFdpbmRvd0Nhc2NhZGVQb3NpdGlvbilcbiAgICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgPSB0aGlzLm1pbldpbmRvd0Nhc2NhZGVQb3NpdGlvbjtcbiAgICBpZiAodGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLmxlZnQgPiB0aGlzLm1heFdpbmRvd0Nhc2NhZGVQb3NpdGlvbilcbiAgICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi5sZWZ0ID0gdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb247XG5cbiAgICB3aW5kb3cudG9wID0gdGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLnRvcCArICdweCc7XG4gICAgd2luZG93LmxlZnQgPSB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24ubGVmdCArICdweCc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZ2V0S2V5Q29kZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgZ2V0S2V5U2VxdWVuY2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSBrZXlzLnB1c2goJ3NoaWZ0Jyk7XG4gICAgaWYgKGV2ZW50LmN0cmxLZXkpIGtleXMucHVzaCgnY3RybCcpO1xuICAgIGlmIChldmVudC5hbHRLZXkpIGtleXMucHVzaCgnYWx0Jyk7XG4gICAgaWYgKGV2ZW50Lm1ldGFLZXkpIGtleXMucHVzaCgnbWV0YScpO1xuXG4gICAgdmFyIGtleUNvZGUgPSBldmVudC5rZXlDb2RlIHx8IGV2ZW50LndoaWNoO1xuICAgIGlmIChrZXlDb2RlKSBrZXlzLnB1c2godGhpcy5rZXlib2FyZE1hcFtrZXlDb2RlXS50b0xvd2VyQ2FzZSgpKTtcblxuICAgIHJldHVybiBrZXlzLmpvaW4oJysnKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZXZlbnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICovXG4gIG9uS2V5RG93biA9IChldmVudDogYW55KSA9PiB7XG4gICAgdmFyIGtleVNlcXVlbmNlID0gdGhpcy5nZXRLZXlTZXF1ZW5jZShldmVudCk7XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K20nKSB7IC8vTWF4aW1pemVcbiAgICAgIHZhciBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xuICAgICAgaWYgKGFjdGl2ZVdpbmRvdyA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmVXaW5kb3cubWF4aW1pemVkKSB7XG4gICAgICAgIHRoaXMuc2F2ZVBvc2l0aW9uKGFjdGl2ZVdpbmRvdyk7XG4gICAgICAgIHRoaXMubWF4aW1pemUoYWN0aXZlV2luZG93KTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aXZlV2luZG93Lm1heGltaXplZCA9PT0gJ3JpZ2h0JyB8fCBhY3RpdmVXaW5kb3cubWF4aW1pemVkID09PSAnbGVmdCcpXG4gICAgICAgIHRoaXMubWF4aW1pemUoYWN0aXZlV2luZG93KTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5yZXN0b3JlU2F2ZWRQb3NpdGlvbihhY3RpdmVXaW5kb3cpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K24nKSB7IC8vTWluaW1pemVcbiAgICAgIHZhciBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xuICAgICAgaWYgKGFjdGl2ZVdpbmRvdyA9PT0gbnVsbCB8fCBhY3RpdmVXaW5kb3cubWluaW1pemVkKSByZXR1cm47XG4gICAgICB0aGlzLm1pbmltaXplKGFjdGl2ZVdpbmRvdyk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrdycpIHsgLy9DeWNsZXMgRm9yd2FyZFxuICAgICAgdmFyIGluZGV4ID0gdGhpcy53aW5kb3dzLmluZGV4T2YodGhpcy5nZXRBY3RpdmVXaW5kb3coKSk7XG4gICAgICB0aGlzLmFjdGl2YXRlTmV4dFdpbmRvdyhpbmRleCArIDEpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnc2hpZnQrYWx0K3cnKSB7IC8vQ3ljbGVzIEJhY2t3YXJkXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLndpbmRvd3MuaW5kZXhPZih0aGlzLmdldEFjdGl2ZVdpbmRvdygpKTtcbiAgICAgIHRoaXMuYWN0aXZhdGVQcmV2aW91c1dpbmRvdyhpbmRleCArIDEpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnc2hpZnQrYWx0K3gnICYmICEodGhpcy5zaGlmdFByZXNzZWQgJiYgdGhpcy5hbHRQcmVzc2VkICYmIHRoaXMueFByZXNzZWQpKSB7IC8vQ2xvc2VcbiAgICAgIHZhciBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xuICAgICAgaWYgKCFhY3RpdmVXaW5kb3cpIHJldHVybjtcbiAgICAgIHRoaXMuY2xvc2VXaW5kb3coYWN0aXZlV2luZG93KTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtkJykgeyAvL1RvZ2dsZSBEZXNrdG9wXG4gICAgICAvL3RoaXMuZGVza3RvcFNob3duID0gdGhpcy5oaWRlU2hvd0FsbCgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpXG4gICAgICB0aGlzLnNoaWZ0UHJlc3NlZCA9IHRydWU7XG4gICAgaWYgKGV2ZW50LmFsdEtleSlcbiAgICAgIHRoaXMuYWx0UHJlc3NlZCA9IHRydWU7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDg4KVxuICAgICAgdGhpcy54UHJlc3NlZCA9IHRydWU7XG4gIH1cblxuICBvbktleVVwID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpXG4gICAgICB0aGlzLnNoaWZ0UHJlc3NlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudC5hbHRLZXkpXG4gICAgICB0aGlzLmFsdFByZXNzZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gODgpXG4gICAgICB0aGlzLnhQcmVzc2VkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5oYW5kbGVTZWxlY3RBdHRlbXB0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFByZXZlbnRzIHRoZSB1c2VyIGZyb20gaGlnaGxpZ2h0IGRlc2t0b3AgZWxlbWVudHMuXG4gICAqXG4gICAqL1xuICBoYW5kbGVTZWxlY3RBdHRlbXB0ID0gKGU6IGFueSkgPT4ge1xuICAgIHZhciBub2RlTmFtZSA9IGUudGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG5vZGVOYW1lID09PSAnaW5wdXQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEnIHx8IG5vZGVOYW1lID09PSAnc2VsZWN0JykgcmV0dXJuIHRydWU7XG4gICAgaWYgKHdpbmRvdy5ldmVudCkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHdpbmRvd3M6IEFycmF5PGFueT4gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nb1VybCA9IHRoaXMub3B0aW9ucy5sb2dvVXJsO1xyXG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih0aGlzLmRlc2t0b3Aub3B0aW9ucywgdGhpcy5vcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy52aWV3cG9ydFRvcCA9IHRoaXMub3B0aW9ucy5tZW51YmFyQ29uZmlnICE9PSB1bmRlZmluZWQgPyB0aGlzLm9wdGlvbnMubWVudWJhckhlaWdodCArIDEgOiAwO1xyXG4gICAgdGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIub25PcGVuKCkuc3Vic2NyaWJlKCh3aW5kaW93RXZlbnQ6IFRydVdpbmRvd0V2ZW50QXJncykgPT4ge1xyXG4gICAgICB0aGlzLm9wZW5XaW5kb3cod2luZGlvd0V2ZW50LCBmYWxzZSk7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQgPSB0aGlzLmhhbmRsZVNlbGVjdEF0dGVtcHQ7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMub25LZXlEb3duKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25LZXlVcCk7XHJcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vbktleURvd24pO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25LZXlVcCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkZXNrdG9wLXdyYXBwZXJcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRlc2t0b3AtbWVudWJhci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2hlaWdodCc6IG9wdGlvbnMubWVudWJhckhlaWdodCArICdweCd9XCI+XHJcbiAgICA8dHJ1LWRlc2t0b3AtbWVudWJhciBbZGVza3RvcEN0cmxdPVwidGhpc1wiPjwvdHJ1LWRlc2t0b3AtbWVudWJhcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHRydS1kZXNrdG9wLXZpZXdwb3J0IFt3aW5kb3dzXT1cIndpbmRvd3NcIiBbZGVza3RvcEN0cmxdPVwidGhpc1wiPjwvdHJ1LWRlc2t0b3Atdmlld3BvcnQ+XHJcblxyXG4gIDx0cnUtZGVza3RvcC10YXNrYmFyIFt3aW5kb3dzXT1cIndpbmRvd3NcIiBbZGVza3RvcEN0cmxdPVwidGhpc1wiPjwvdHJ1LWRlc2t0b3AtdGFza2Jhcj5cclxuXHJcbiAgPGltZyBjbGFzcz1cImRlc2t0b3Atdmlld3BvcnQtbG9nb1wiIGRhdGEtbmctc2hvdz1cImxvZ29VcmxcIiBhbHQ9XCJcIj5cclxuPC9kaXY+XHJcbiJdfQ==
703
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3AuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZGVza3RvcC90cnUtZGVza3RvcC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3RydS1kZXNrdG9wLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7O0FBUW5FLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1UsY0FBaUMsRUFDakMscUJBQTRDO1FBRDVDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBR3RELGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLFlBQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUM5Qiw2QkFBd0IsR0FBRyxHQUFHLENBQUM7UUFDL0IsOEJBQXlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN4RyxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFP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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRBcmdzIH0gZnJvbSAnLi9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWFyZ3MnO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XG5pbXBvcnQgeyBUcnVEZXNrdG9wU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdHJ1LWRlc2t0b3Atc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RydS1kZXNrdG9wJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kZXNrdG9wLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cnUtZGVza3RvcC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbVHJ1RGVza3RvcFNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFRydURlc2t0b3AgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBvcHRpb25zOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXNrdG9wU2VydmljZTogVHJ1RGVza3RvcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cnVXaW5kb3dFdmVudEhhbmRsZXI6IFRydVdpbmRvd0V2ZW50SGFuZGxlcikge1xuICB9XHJcblxuICBtaW5pbWl6ZUFsbCA9IGZhbHNlO1xuICBkZXNrdG9wID0gdGhpcy5kZXNrdG9wU2VydmljZS5jcmVhdGVEZXNrdG9wKCk7XG4gIG1pbldpbmRvd0Nhc2NhZGVQb3NpdGlvbiA9IDQwO1xuICBtYXhXaW5kb3dDYXNjYWRlUG9zaXRpb24gPSAxMDA7XG4gIGxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24gPSB7IHRvcDogdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb24sIGxlZnQ6IHRoaXMubWluV2luZG93Q2FzY2FkZVBvc2l0aW9uIH07XG4gIHNoaWZ0UHJlc3NlZCA9IGZhbHNlO1xuICBhbHRQcmVzc2VkID0gZmFsc2U7XG4gIHhQcmVzc2VkID0gZmFsc2U7XG4gIGtleWJvYXJkTWFwID0gW1wiXCIsIFwiXCIsIFwiXCIsIFwiQ0FOQ0VMXCIsIFwiXCIsIFwiXCIsIFwiSEVMUFwiLCBcIlwiLCBcIkJBQ0tfU1BBQ0VcIiwgXCJUQUJcIiwgXCJcIiwgXCJcIiwgXCJDTEVBUlwiLCBcIkVOVEVSXCIsIFwiUkVUVVJOXCIsIFwiXCIsIFwiU0hJRlRcIiwgXCJDT05UUk9MXCIsIFwiQUxUXCIsIFwiUEFVU0VcIiwgXCJDQVBTX0xPQ0tcIiwgXCJLQU5BXCIsIFwiRUlTVVwiLCBcIkpVTkpBXCIsIFwiRklOQUxcIiwgXCJIQU5KQVwiLCBcIlwiLCBcIkVTQ0FQRVwiLCBcIkNPTlZFUlRcIiwgXCJOT05DT05WRVJUXCIsIFwiQUNDRVBUXCIsIFwiTU9ERUNIQU5HRVwiLCBcIlNQQUNFXCIsIFwiUEFHRV9VUFwiLCBcIlBBR0VfRE9XTlwiLCBcIkVORFwiLCBcIkhPTUVcIiwgXCJMRUZUXCIsIFwiVVBcIiwgXCJSSUdIVFwiLCBcIkRPV05cIiwgXCJTRUxFQ1RcIiwgXCJQUklOVFwiLCBcIkVYRUNVVEVcIiwgXCJQUklOVFNDUkVFTlwiLCBcIklOU0VSVFwiLCBcIkRFTEVURVwiLCBcIlwiLCBcIjBcIiwgXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCIsIFwiNVwiLCBcIjZcIiwgXCI3XCIsIFwiOFwiLCBcIjlcIiwgXCJDT0xPTlwiLCBcIlNFTUlDT0xPTlwiLCBcIkxFU1NfVEhBTlwiLCBcIkVRVUFMU1wiLCBcIkdSRUFURVJfVEhBTlwiLCBcIlFVRVNUSU9OX01BUktcIiwgXCJBVFwiLCBcIkFcIiwgXCJCXCIsIFwiQ1wiLCBcIkRcIiwgXCJFXCIsIFwiRlwiLCBcIkdcIiwgXCJIXCIsIFwiSVwiLCBcIkpcIiwgXCJLXCIsIFwiTFwiLCBcIk1cIiwgXCJOXCIsIFwiT1wiLCBcIlBcIiwgXCJRXCIsIFwiUlwiLCBcIlNcIiwgXCJUXCIsIFwiVVwiLCBcIlZcIiwgXCJXXCIsIFwiWFwiLCBcIllcIiwgXCJaXCIsIFwiV0lOXCIsIFwiXCIsIFwiQ09OVEVYVF9NRU5VXCIsIFwiXCIsIFwiU0xFRVBcIiwgXCJOVU1QQUQwXCIsIFwiTlVNUEFEMVwiLCBcIk5VTVBBRDJcIiwgXCJOVU1QQUQzXCIsIFwiTlVNUEFENFwiLCBcIk5VTVBBRDVcIiwgXCJOVU1QQUQ2XCIsIFwiTlVNUEFEN1wiLCBcIk5VTVBBRDhcIiwgXCJOVU1QQUQ5XCIsIFwiTVVMVElQTFlcIiwgXCJBRERcIiwgXCJTRVBBUkFUT1JcIiwgXCJTVUJUUkFDVFwiLCBcIkRFQ0lNQUxcIiwgXCJESVZJREVcIiwgXCJGMVwiLCBcIkYyXCIsIFwiRjNcIiwgXCJGNFwiLCBcIkY1XCIsIFwiRjZcIiwgXCJGN1wiLCBcIkY4XCIsIFwiRjlcIiwgXCJGMTBcIiwgXCJGMTFcIiwgXCJGMTJcIiwgXCJGMTNcIiwgXCJGMTRcIiwgXCJGMTVcIiwgXCJGMTZcIiwgXCJGMTdcIiwgXCJGMThcIiwgXCJGMTlcIiwgXCJGMjBcIiwgXCJGMjFcIiwgXCJGMjJcIiwgXCJGMjNcIiwgXCJGMjRcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJOVU1fTE9DS1wiLCBcIlNDUk9MTF9MT0NLXCIsIFwiV0lOX09FTV9GSl9KSVNIT1wiLCBcIldJTl9PRU1fRkpfTUFTU0hPVVwiLCBcIldJTl9PRU1fRkpfVE9VUk9LVVwiLCBcIldJTl9PRU1fRkpfTE9ZQVwiLCBcIldJTl9PRU1fRkpfUk9ZQVwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIlwiLCBcIkNJUkNVTUZMRVhcIiwgXCJFWENMQU1BVElPTlwiLCBcIkRPVUJMRV9RVU9URVwiLCBcIkhBU0hcIiwgXCJET0xMQVJcIiwgXCJQRVJDRU5UXCIsIFwiQU1QRVJTQU5EXCIsIFwiVU5ERVJTQ09SRVwiLCBcIk9QRU5fUEFSRU5cIiwgXCJDTE9TRV9QQVJFTlwiLCBcIkFTVEVSSVNLXCIsIFwiUExVU1wiLCBcIlBJUEVcIiwgXCJIWVBIRU5fTUlOVVNcIiwgXCJPUEVOX0NVUkxZX0JSQUNLRVRcIiwgXCJDTE9TRV9DVVJMWV9CUkFDS0VUXCIsIFwiVElMREVcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJWT0xVTUVfTVVURVwiLCBcIlZPTFVNRV9ET1dOXCIsIFwiVk9MVU1FX1VQXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiXCIsIFwiQ09NTUFcIiwgXCJcIiwgXCJQRVJJT0RcIiwgXCJTTEFTSFwiLCBcIkJBQ0tfUVVPVEVcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJcIiwgXCJPUEVOX0JSQUNLRVRcIiwgXCJCQUNLX1NMQVNIXCIsIFwiQ0xPU0VfQlJBQ0tFVFwiLCBcIlFVT1RFXCIsIFwiXCIsIFwiTUVUQVwiLCBcIkFMVEdSXCIsIFwiXCIsIFwiV0lOX0lDT19IRUxQXCIsIFwiV0lOX0lDT18wMFwiLCBcIlwiLCBcIldJTl9JQ09fQ0xFQVJcIiwgXCJcIiwgXCJcIiwgXCJXSU5fT0VNX1JFU0VUXCIsIFwiV0lOX09FTV9KVU1QXCIsIFwiV0lOX09FTV9QQTFcIiwgXCJXSU5fT0VNX1BBMlwiLCBcIldJTl9PRU1fUEEzXCIsIFwiV0lOX09FTV9XU0NUUkxcIiwgXCJXSU5fT0VNX0NVU0VMXCIsIFwiV0lOX09FTV9BVFROXCIsIFwiV0lOX09FTV9GSU5JU0hcIiwgXCJXSU5fT0VNX0NPUFlcIiwgXCJXSU5fT0VNX0FVVE9cIiwgXCJXSU5fT0VNX0VOTFdcIiwgXCJXSU5fT0VNX0JBQ0tUQUJcIiwgXCJBVFROXCIsIFwiQ1JTRUxcIiwgXCJFWFNFTFwiLCBcIkVSRU9GXCIsIFwiUExBWVwiLCBcIlpPT01cIiwgXCJcIiwgXCJQQTFcIiwgXCJXSU5fT0VNX0NMRUFSXCIsIFwiXCJdO1xuICBsb2dvVXJsID0gbnVsbDtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXREZXNrdG9wXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJldHVybiBhbiBvYmplY3Qgb2YgZGVza3RvcC5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gZGVza3RvcC5cbiAgICovXG4gIGdldERlc2t0b3AgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGVza3RvcDtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXRPcHRpb25zXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJldHVybiBhbiBvYmplY3Qgb2YgZGVza3RvcCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBvcHRpb25zLlxuICAgKi9cbiAgZ2V0T3B0aW9ucyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldFdpbmRvd3NcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJuIGFuIGFycmF5IG9mIHdpbmRvd3MuXG4gICAqXG4gICAqIEByZXR1cm5zIHthcnJheX0gd2luZG93cy5cbiAgICovXG4gIGdldFdpbmRvd3MgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMud2luZG93cztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXROZXh0TWF4WkluZGV4XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIHdpbmRvdyBvYmplY3RzIGluIHRoZSB3aW5kb3dzIGFycmF5IHRvIGZpbmQgdGhlIG1heCB6LWluZGV4XG4gICAqIGFuZCBpbmNyZWFzZXMgdGhlIHZhbHVlIGZvdW5kIGJ5IDEuXG4gICAqXG4gICAqIEByZXR1cm5zIHtpbnR9XG4gICAqL1xuICBnZXROZXh0TWF4WkluZGV4ID0gKCkgPT4ge1xuICAgIHZhciBtYXggPSAwO1xuICAgIHZhciB0bXA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMud2luZG93cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdG1wID0gdGhpcy53aW5kb3dzW2ldLnpJbmRleDtcbiAgICAgIGlmICh0bXAgPiBtYXgpIG1heCA9IHRtcDtcbiAgICB9XG4gICAgcmV0dXJuICsrbWF4O1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmNsZWFyQWN0aXZlXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIHdpbmRvdyBvYmplY3RzIGluIHRoZSB3aW5kb3dzXG4gICAqIGFuZCBzZXRzIHRoZSBhY3RpdmUgcHJvcGVydHkgdG8gZmFsc2UuXG4gICAqXG4gICAqL1xuICBjbGVhckFjdGl2ZSA9ICgpID0+IHtcbiAgICB0aGlzLndpbmRvd3MuZm9yRWFjaCgod2luZG93OiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5nZXRBY3RpdmVXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyB0aGUgYWN0aXZlIHdpbmRvdy5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gdmlldyBvYmplY3QuXG4gICAqL1xuICBnZXRBY3RpdmVXaW5kb3cgPSAoKTogYW55ID0+IHtcbiAgICB2YXIgYWN0aXZlV2luZG93ID0gbnVsbDtcbiAgICB0aGlzLndpbmRvd3MuZm9yRWFjaCgod2R3OiBhbnkpID0+IHtcbiAgICAgIGlmICh3ZHcuYWN0aXZlID09PSB0cnVlKSB7XG4gICAgICAgIGFjdGl2ZVdpbmRvdyA9IHdkdztcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZlV2luZG93O1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmdldEFjdGl2ZVZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyB0aGUgYWN0aXZlIHZpZXcuXG4gICAqXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IHZpZXcgb2JqZWN0LlxuICAgKi9cbiAgZ2V0QWN0aXZlVmlldyA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIHZhciBhY3RpdmVWaWV3ID0gbnVsbDtcbiAgICB3ZHcudmlld3MuZm9yRWFjaCgodmlldzogYW55KSA9PiB7XG4gICAgICBpZiAodmlldy5hY3RpdmUkLmdldFZhbHVlKCkgPT09IHRydWUpIHtcbiAgICAgICAgYWN0aXZlVmlldyA9IHZpZXc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2ZVZpZXc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYWxsV2luZG93c0FyZU1pbmltaXplZFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJdGVyYXRlcyB0aHJvdWdoIHdpbmRvd3MgdG8gZGV0ZXJtaW5lIGlmIGFsbCBhcmUgbWluaW1pemVkLlxuICAgKlxuICAgKi9cbiAgYWxsV2luZG93c0FyZU1pbmltaXplZCA9ICgpID0+IHtcbiAgICB2YXIgYWxsTWluaW1pemVkID0gdHJ1ZTtcbiAgICB0aGlzLndpbmRvd3MuZm9yRWFjaCgod2luZG93OiBhbnkpID0+IHtcbiAgICAgIGlmICghd2luZG93Lm1pbmltaXplZCkge1xuICAgICAgICBhbGxNaW5pbWl6ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWxsTWluaW1pemVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmhpZGVTaG93QWxsXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEhpZGVzL3Nob3dzIGFsbCB3aW5kb3dzXG4gICAqXG4gICAqL1xuICBoaWRlU2hvd0FsbCA9ICgpID0+IHtcbiAgICB0aGlzLm1pbmltaXplQWxsID0gdGhpcy5hbGxXaW5kb3dzQXJlTWluaW1pemVkKCkgPyBmYWxzZSA6ICF0aGlzLm1pbmltaXplQWxsO1xuICAgIHRoaXMud2luZG93cy5mb3JFYWNoKCh3ZHc6IGFueSkgPT4ge1xuICAgICAgaWYgKHdkdy5vdXRPZkJvdW5kcykgdGhpcy5yZWNvdmVyKHdkdyk7XG4gICAgICB3ZHcuYWN0aXZlID0gZmFsc2U7XG4gICAgICB3ZHcubWluaW1pemVkID0gdGhpcy5taW5pbWl6ZUFsbDtcbiAgICB9KTtcbiAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgICByZXR1cm4gdGhpcy5taW5pbWl6ZUFsbDtcbiAgfTtcblxuICAvKipcclxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxyXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZmluZFdpbmRvd1ZpZXdEaXJlY3RpdmVcclxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXHJcbiAgICpcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBMb29rcyBmb3IgcHJldmlvdXNseSBvcGVuIHdpbmRvdyB3aXRoIGEgdmlldyBkaXJlY3RpdmVcclxuICAgKlxyXG4gICAqL1xyXG4gIGZpbmRXaW5kb3dWaWV3RGlyZWN0aXZlID0gKHdpbmRvd1ZpZXdEaXJlY3RpdmU6IGFueSkgPT4ge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndpbmRvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLndpbmRvd3NbaV0udmlld3MubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICBpZiAodGhpcy53aW5kb3dzW2ldLnZpZXdzWzBdLnZpZXdEaXJlY3RpdmUgPT09IHdpbmRvd1ZpZXdEaXJlY3RpdmUpXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy53aW5kb3dzW2ldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50Lm9wZW5XaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzcGxheXMgYSBuZXcgd2luZG93LiBBbGwgd2luZG93IHByb3BlcnRpZXMgZGVmaW5lZCBieSB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVyIHdpbGwgYmVcbiAgICogb3ZlcmxhaWQgaGVyZSBiZWZvcmUgZGlzcGxheWluZyB0aGUgd2luZG93XG4gICAqXG4gICAqL1xuICBvcGVuV2luZG93ID0gKHdpbmRvd0NvbmZpZ092ZXJsYXlzOiBhbnksIHNpbmdsZUluc3RhbmNlOiBhbnkpID0+IHtcbiAgICBsZXQgYWN0aXZlV2luZG93ID0gdGhpcy5nZXRBY3RpdmVXaW5kb3coKTtcclxuICAgIGlmIChhY3RpdmVXaW5kb3cgJiYgYWN0aXZlV2luZG93LmlzTW9kYWwpIHtcclxuICAgICAgYWN0aXZlV2luZG93LmludmFsaWRPcGVyYXRpb24gPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNpbmdsZUluc3RhbmNlKSB7XHJcbiAgICAgIGxldCB3aW5kb3cgPSB0aGlzLmZpbmRXaW5kb3dWaWV3RGlyZWN0aXZlKHdpbmRvd0NvbmZpZ092ZXJsYXlzLnZpZXdzWzBdLnZpZXdEaXJlY3RpdmUpO1xyXG4gICAgICBpZiAod2luZG93KSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVXaW5kb3dTdGF0ZSh3aW5kb3cpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh3aW5kb3dDb25maWdPdmVybGF5cy5pc01vZGFsKSB7XHJcbiAgICAgIGxldCBoZWlnaHRPZmZzZXQgPSAocGFyc2VJbnQod2luZG93Q29uZmlnT3ZlcmxheXMuaGVpZ2h0LCAxMCkgLyAyKSArIDMwO1xyXG4gICAgICBsZXQgd2lkdGhPZmZzZXQgPSAocGFyc2VJbnQod2luZG93Q29uZmlnT3ZlcmxheXMud2lkdGgsIDEwKSAvIDIpO1xyXG4gICAgICB3aW5kb3dDb25maWdPdmVybGF5cy50b3AgPSAnY2FsYyg1MCUgLSAnICsgaGVpZ2h0T2Zmc2V0ICsgJ3B4ICknO1xyXG4gICAgICB3aW5kb3dDb25maWdPdmVybGF5cy5sZWZ0ID0gJ2NhbGMoNTAlIC0gJyArIHdpZHRoT2Zmc2V0ICsgJ3B4ICknO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcclxuICAgIGxldCBjb25maWd1cmVkV2luZG93ID0gdGhpcy5jb25maWd1cmVXaW5kb3cod2luZG93Q29uZmlnT3ZlcmxheXMpO1xyXG4gICAgY29uZmlndXJlZFdpbmRvdy52aWV3cyA9IHRoaXMuY29uZmlndXJlVmlld3Mod2luZG93Q29uZmlnT3ZlcmxheXMsIGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgaWYgKCFjb25maWd1cmVkV2luZG93LmlzTW9kYWwpIHtcclxuICAgICAgY29uZmlndXJlZFdpbmRvdy5jYXNjYWRlV2luZG93ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuc2F2ZVBvc2l0aW9uKGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgICB0aGlzLm1heGltaXplKGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgICB0aGlzLndpbmRvd3MucHVzaChjb25maWd1cmVkV2luZG93KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud2luZG93cy5wdXNoKGNvbmZpZ3VyZWRXaW5kb3cpO1xyXG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmNvbmZpZ3VyZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDcmVhdGVzIGEgbmV3IHdpbmRvdyBpbnN0YW5jZS5cbiAgICpcbiAgICovXG4gIGNvbmZpZ3VyZVdpbmRvdyA9ICh3aW5kb3dDb25maWdPdmVybGF5czogYW55KSA9PiB7XG4gICAgdmFyIHdpbmRvd0NvbmZpZ0luc3RhbmNlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZXNrdG9wLndpbmRvd0NvbmZpZyk7XG4gICAgd2luZG93Q29uZmlnSW5zdGFuY2Uuc2F2ZWRQb3NpdGlvbiA9IE9iamVjdC5jcmVhdGUoeyB0b3A6IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwLCBib3R0b206IDAsIGhlaWdodDogMCwgd2lkdGg6IDAgfSk7XG4gICAgd2luZG93Q29uZmlnSW5zdGFuY2UuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XG4gICAgLy93aW5kb3dDb25maWdJbnN0YW5jZS5nbG9iYWxzID0gT2JqZWN0LmFzc2lnbih7fSwgJHJvb3RTY29wZS4kZXZhbCh0aGlzLm9wdGlvbnMuZ2xvYmFscykpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHdpbmRvd0NvbmZpZ0luc3RhbmNlLCB3aW5kb3dDb25maWdPdmVybGF5cyk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuY29uZmlndXJlVmlld3NcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ3JlYXRlcyBvbmUgb3IgbW9yZSB2aWV3IGluc3RhbmNlc1xuICAgKlxuICAgKi9cbiAgY29uZmlndXJlVmlld3MgPSAod2luZG93Q29uZmlnT3ZlcmxheXM6IGFueSwgY29uZmlndXJlZFdpbmRvdzogYW55KTogQXJyYXk8YW55PiA9PiB7XG4gICAgbGV0IGNvbmZpZ3VyZWRWaWV3czogQXJyYXk8YW55PiA9IFtdO1xuICAgIHdpbmRvd0NvbmZpZ092ZXJsYXlzLnZpZXdzLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgbGV0IHZpZXdDb25maWdJbnN0YW5jZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGVza3RvcC52aWV3Q29uZmlnKTtcbiAgICAgIC8vdmlld0NvbmZpZ0luc3RhbmNlLmdsb2JhbHMgPSB0aGlzLm9wdGlvbnMuZ2xvYmFscztcbiAgICAgIGxldCBjb25maWd1cmVkVmlldyA9IE9iamVjdC5hc3NpZ24odmlld0NvbmZpZ0luc3RhbmNlLCB2aWV3KTtcbiAgICAgIGNvbmZpZ3VyZWRWaWV3LndpbmRvdyA9IGNvbmZpZ3VyZWRXaW5kb3c7XG4gICAgICBjb25maWd1cmVkVmlld3MucHVzaChjb25maWd1cmVkVmlldyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRWaWV3cztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5jbG9zZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBSZW1vdmUgYSB3aW5kb3cge29iamVjdH0gZnJvbSB0aGUgd2luZG93cyBhcnJheS5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHJldHVybnMgdHJ1ZSBpZiB3aW5kb3cgd2FzIGNsb3NlZCwgZmFsc2UgaWYgbm90IGNsb3NlZC5cbiAgICovXG4gIGNsb3NlV2luZG93ID0gKHdkdzogYW55KSA9PiB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuYWxsb3dEaXJ0eUNsb3NlICYmIHdkdy5pc0RpcnR5KSB7XG4gICAgICBhbGVydChcIlVuc2F2ZWQgQ2hhbmdlcy4gU2F2ZSBjaGFuZ2VzIGJlZm9yZSBjbG9zaW5nIHdpbmRvdy5cIik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuYWxsb3dJbnZhbGlkQ2xvc2UgJiYgd2R3LmlzSW52YWxpZCkge1xuICAgICAgYWxlcnQoXCJEYXRhIGlzIGludmFsaWQuIENvcnJlY3QgSW52YWxpZCBkYXRhIGJlZm9yZSBjbG9zaW5nIHdpbmRvdy5cIik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5jYW5DbG9zZUZuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FuQ2xvc2VGbih3ZHcpKSB7XG4gICAgICAgIHRoaXMud2luZG93cy5zcGxpY2UodGhpcy53aW5kb3dzLmluZGV4T2Yod2R3KSwgMSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVGb3JlbW9zdFdpbmRvdygpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2luZG93cy5zcGxpY2UodGhpcy53aW5kb3dzLmluZGV4T2Yod2R3KSwgMSk7XG4gICAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYWN0aXZhdGVGb3JlbW9zdFdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgdGhlIGZvcmVtb3N0IHdpbmRvdyB0byBhbiBhY3RpdmUgc3RhdGVcbiAgICpcbiAgICovXG4gIGFjdGl2YXRlRm9yZW1vc3RXaW5kb3cgPSAoKSA9PiB7XG4gICAgdmFyIGZvcmVtb3N0ID0gdW5kZWZpbmVkO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy53aW5kb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoKGZvcmVtb3N0ID09PSB1bmRlZmluZWQgfHwgdGhpcy53aW5kb3dzW2ldLnpJbmRleCA+IGZvcmVtb3N0LnpJbmRleCkgJiYgIXRoaXMud2luZG93c1tpXS5taW5pbWl6ZWQgJiYgIXRoaXMud2luZG93c1tpXS5vdXRPZkJvdW5kcylcbiAgICAgICAgZm9yZW1vc3QgPSB0aGlzLndpbmRvd3NbaV07XG4gICAgfVxuICAgIGlmIChmb3JlbW9zdClcbiAgICAgIGZvcmVtb3N0LmFjdGl2ZSA9IHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuYWN0aXZhdGVOZXh0V2luZG93XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldCB0aGUgbmV4dCB3aW5kb3cgdG8gYW4gYWN0aXZlIHN0YXRlXG4gICAqXG4gICAqL1xuICBhY3RpdmF0ZU5leHRXaW5kb3cgPSAoYWN0aXZlV2luZG93TG9jYXRpb246IGFueSkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvd3MubGVuZ3RoIDw9IDEpIHJldHVybjtcbiAgICB2YXIgYmFja2VuZCA9IHRoaXMud2luZG93cy5zbGljZShhY3RpdmVXaW5kb3dMb2NhdGlvbik7XG4gICAgdmFyIGZyb250ZW5kID0gdGhpcy53aW5kb3dzLnNsaWNlKDAsIGFjdGl2ZVdpbmRvd0xvY2F0aW9uIC0gMSk7XG4gICAgdmFyIHNvcnRlZCA9IGJhY2tlbmQuY29uY2F0KGZyb250ZW5kKTtcbiAgICB2YXIgbmV4dFdpbmRvdyA9IHVuZGVmaW5lZDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFzb3J0ZWRbaV0ubWluaW1pemVkICYmICFzb3J0ZWRbaV0ub3V0T2ZCb3VuZHMgJiYgIW5leHRXaW5kb3cpXG4gICAgICAgIG5leHRXaW5kb3cgPSBzb3J0ZWRbaV07XG4gICAgfVxuXG4gICAgaWYgKG5leHRXaW5kb3cpIHtcbiAgICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcbiAgICAgIG5leHRXaW5kb3cuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XG4gICAgICBuZXh0V2luZG93LmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LmFjdGl2YXRlUHJldmlvdXNXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0IHRoZSBwcmV2aW91cyB3aW5kb3cgdG8gYW4gYWN0aXZlIHN0YXRlXG4gICAqXG4gICAqL1xuICBhY3RpdmF0ZVByZXZpb3VzV2luZG93ID0gKGFjdGl2ZVdpbmRvd0xvY2F0aW9uOiBhbnkpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3dzLmxlbmd0aCA8PSAxKSByZXR1cm47XG4gICAgdmFyIGJhY2tlbmQgPSB0aGlzLndpbmRvd3Muc2xpY2UoYWN0aXZlV2luZG93TG9jYXRpb24pO1xuICAgIHZhciBmcm9udGVuZCA9IHRoaXMud2luZG93cy5zbGljZSgwLCBhY3RpdmVXaW5kb3dMb2NhdGlvbiAtIDEpO1xuICAgIHZhciBzb3J0ZWQgPSBiYWNrZW5kLmNvbmNhdChmcm9udGVuZCk7XG4gICAgdmFyIG5leHRXaW5kb3cgPSB1bmRlZmluZWQ7XG4gICAgZm9yICh2YXIgaSA9IHNvcnRlZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgaWYgKCFzb3J0ZWRbaV0ubWluaW1pemVkICYmICFzb3J0ZWRbaV0ub3V0T2ZCb3VuZHMgJiYgIW5leHRXaW5kb3cpXG4gICAgICAgIG5leHRXaW5kb3cgPSBzb3J0ZWRbaV07XG4gICAgfVxuXG4gICAgaWYgKG5leHRXaW5kb3cpIHtcbiAgICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcbiAgICAgIG5leHRXaW5kb3cuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XG4gICAgICBuZXh0V2luZG93LmFjdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50Lm1pbmltaXplXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFZpc3VhbGx5IHJlbW92ZXMgd2luZG93IGZyb20gdGhlIHZpZXdwb3J0LlxuICAgKlxuICAgKi9cbiAgbWluaW1pemUgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB0aGlzLnNhdmVQb3NpdGlvbih3aW5kb3cpO1xuXG4gICAgd2luZG93LmFjdGl2ZSA9IGZhbHNlO1xuICAgIHdpbmRvdy5taW5pbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZhdGVGb3JlbW9zdFdpbmRvdygpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50Lm1heGltaXplXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFBvc2l0aW9ucyB3aW5kb3cgc3VjaCB0aGF0IGl0IGZpbGxzIHRoZSB3aG9sZSB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1heGltaXplID0gKHdpbmRvdzogYW55KSA9PiB7XG4gICAgd2luZG93LnRvcCA9IDA7XG4gICAgd2luZG93LmxlZnQgPSAwO1xuICAgIHdpbmRvdy5yaWdodCA9IDA7XG4gICAgd2luZG93LmJvdHRvbSA9IDA7XG4gICAgd2luZG93LmhlaWdodCA9ICdhdXRvJztcbiAgICB3aW5kb3cud2lkdGggPSAnMTAwJSc7XG4gICAgd2luZG93Lm1heGltaXplZCA9ICdmaWxsJztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5tYXhpbWl6ZUxlZnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUG9zaXRpb25zIHdpbmRvdyBzdWNoIHRoYXQgaXQgZmlsbHMgdGhlIGxlZnQgcG9ydGlvbiB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIG1heGltaXplTGVmdCA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIHdpbmRvdy5zcGxpdCA9IHRydWU7XG4gICAgd2luZG93LnRvcCA9IDA7XG4gICAgd2luZG93LmxlZnQgPSAwO1xuICAgIHdpbmRvdy5ib3R0b20gPSAwO1xuICAgIHdpbmRvdy53aWR0aCA9ICc1MCUnO1xuICAgIHdpbmRvdy5oZWlnaHQgPSAnYXV0byc7XG4gICAgd2luZG93Lm1heGltaXplZCA9ICdsZWZ0JztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5tYXhpbWl6ZVJpZ2h0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFBvc2l0aW9ucyB3aW5kb3cgc3VjaCB0aGF0IGl0IGZpbGxzIHRoZSByaWdodCBwb3J0aW9uIHZpZXdwb3J0LlxuICAgKlxuICAgKi9cbiAgbWF4aW1pemVSaWdodCA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIHdpbmRvdy50b3AgPSAwO1xuICAgIHdpbmRvdy5sZWZ0ID0gJzUwJSc7XG4gICAgd2luZG93LnJpZ2h0ID0gMDtcbiAgICB3aW5kb3cuYm90dG9tID0gMDtcbiAgICB3aW5kb3cud2lkdGggPSAnNTAlJztcbiAgICB3aW5kb3cuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgIHdpbmRvdy5tYXhpbWl6ZWQgPSAncmlnaHQnO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LnJlY292ZXJcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQnJpbmdzIHdpbmRvdyBiYWNrIGludG8gdmlldyB3aGVuIGl0IGhhcyBlc2NhcGVkIHRoZSB2aWV3cG9ydC5cbiAgICpcbiAgICovXG4gIHJlY292ZXIgPSAod2luZG93OiBhbnkpID0+IHtcbiAgICB3aW5kb3cuYWN0aXZlID0gdHJ1ZTtcbiAgICB3aW5kb3cub3V0T2ZCb3VuZHMgPSBmYWxzZTtcbiAgICB3aW5kb3cubWluaW1pemVkID0gZmFsc2U7XG4gICAgd2luZG93LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICAgIHRoaXMuY2FzY2FkZVdpbmRvdyh3aW5kb3cpO1xuICAgIHRoaXMuY2xlYXJBY3RpdmUoKTtcbiAgICB0aGlzLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5yZXN0b3JlXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICByZXN0b3JlID0gKHdkdzogYW55KSA9PiB7XG4gICAgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdmaWxsJykge1xuICAgICAgdGhpcy5tYXhpbWl6ZSh3ZHcpO1xuICAgIH0gZWxzZSBpZiAod2R3Lm1heGltaXplZCA9PT0gJ2xlZnQnKSB7XG4gICAgICB0aGlzLm1heGltaXplTGVmdCh3ZHcpO1xuICAgIH0gZWxzZSBpZiAod2R3Lm1heGltaXplZCA9PT0gJ3JpZ2h0Jykge1xuICAgICAgdGhpcy5tYXhpbWl6ZVJpZ2h0KHdkdyk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlV2luZG93U3RhdGUod2R3KTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5icmluZ1RvRnJvbnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICovXG4gIHVwZGF0ZVdpbmRvd1N0YXRlID0gKHdkdzogYW55KSA9PiB7XHJcbiAgICBpZiAod2R3Lm91dE9mQm91bmRzKSB7XHJcbiAgICAgIHRoaXMucmVjb3Zlcih3ZHcpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdmaWxsJykge1xyXG4gICAgICB0aGlzLm1heGltaXplKHdkdyk7XHJcbiAgICB9IGVsc2UgaWYgKHdkdy5tYXhpbWl6ZWQgPT09ICdsZWZ0Jykge1xyXG4gICAgICB0aGlzLm1heGltaXplTGVmdCh3ZHcpO1xyXG4gICAgfSBlbHNlIGlmICh3ZHcubWF4aW1pemVkID09PSAncmlnaHQnKSB7XHJcbiAgICAgIHRoaXMubWF4aW1pemVSaWdodCh3ZHcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbGVhckFjdGl2ZSgpO1xyXG4gICAgd2R3LmFjdGl2ZSA9IHRydWU7XHJcbiAgICB3ZHcubWluaW1pemVkID0gZmFsc2U7XHJcbiAgICB3ZHcuekluZGV4ID0gdGhpcy5nZXROZXh0TWF4WkluZGV4KCk7XHJcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5yZXN0b3JlU2F2ZWRQb3NpdGlvblxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgdGhlIHdpbmRvd3MgbGFzdCBrbm93IHBvc2l0aW9uIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uLlxuICAgKlxuICAgKi9cbiAgcmVzdG9yZVNhdmVkUG9zaXRpb24gPSAod2R3OiBhbnkpID0+IHtcbiAgICB0aGlzLmNsZWFyQWN0aXZlKCk7XG4gICAgd2R3LnRvcCA9IHdkdy5zYXZlZFBvc2l0aW9uLnRvcDtcbiAgICB3ZHcubGVmdCA9IHdkdy5zYXZlZFBvc2l0aW9uLmxlZnQ7XG4gICAgd2R3LnJpZ2h0ID0gd2R3LnNhdmVkUG9zaXRpb24ucmlnaHQ7XG4gICAgd2R3LmJvdHRvbSA9IHdkdy5zYXZlZFBvc2l0aW9uLmJvdHRvbTtcbiAgICB3ZHcuaGVpZ2h0ID0gd2R3LnNhdmVkUG9zaXRpb24uaGVpZ2h0O1xuICAgIHdkdy53aWR0aCA9IHdkdy5zYXZlZFBvc2l0aW9uLndpZHRoO1xuICAgIHdkdy5tYXhpbWl6ZWQgPSB1bmRlZmluZWQ7XG4gICAgd2R3Lm1pbmltaXplZCA9IHVuZGVmaW5lZDtcbiAgICB3ZHcuYWN0aXZlID0gdHJ1ZTtcbiAgICB3ZHcubWluaW1pemVkID0gZmFsc2U7XG4gICAgd2R3LnpJbmRleCA9IHRoaXMuZ2V0TmV4dE1heFpJbmRleCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wQ29tcG9uZW50LnNhdmVQb3NpdGlvblxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTYXZlIHRoZSB3aW5kb3dzIGxhc3Qga25vdyBwb3NpdGlvbi5cbiAgICpcbiAgICovXG4gIHNhdmVQb3NpdGlvbiA9ICh3ZHc6IGFueSkgPT4ge1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLnRvcCA9IHdkdy50b3A7XG4gICAgd2R3LnNhdmVkUG9zaXRpb24ubGVmdCA9IHdkdy5sZWZ0O1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLnJpZ2h0ID0gd2R3LnJpZ2h0O1xuICAgIHdkdy5zYXZlZFBvc2l0aW9uLmJvdHRvbSA9IHdkdy5ib3R0b207XG4gICAgd2R3LnNhdmVkUG9zaXRpb24uaGVpZ2h0ID0gd2R3LmhlaWdodDtcbiAgICB3ZHcuc2F2ZWRQb3NpdGlvbi53aWR0aCA9IHdkdy53aWR0aDtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5jbG9zZVdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb3ZlcyBhIHdpbmRvdyB0byB0aGUgbmV4dCBjYXNjYWRlIHBvc2l0aW9uLlxuICAgKlxuICAgKi9cbiAgY2FzY2FkZVdpbmRvdyA9ICh3aW5kb3c6IGFueSkgPT4ge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmVuYWJsZVdpbmRvd0Nhc2NhZGluZyB8fCB3aW5kb3cuaXNNb2RhbCkgcmV0dXJuO1xuICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgKz0gMTA7XG4gICAgdGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLmxlZnQgKz0gMTA7XG4gICAgaWYgKHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgPiB0aGlzLm1heFdpbmRvd0Nhc2NhZGVQb3NpdGlvbilcbiAgICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi50b3AgPSB0aGlzLm1pbldpbmRvd0Nhc2NhZGVQb3NpdGlvbjtcbiAgICBpZiAodGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLmxlZnQgPiB0aGlzLm1heFdpbmRvd0Nhc2NhZGVQb3NpdGlvbilcbiAgICAgIHRoaXMubGFzdFdpbmRvd0Nhc2NhZGVQb3NpdGlvbi5sZWZ0ID0gdGhpcy5taW5XaW5kb3dDYXNjYWRlUG9zaXRpb247XG5cbiAgICB3aW5kb3cudG9wID0gdGhpcy5sYXN0V2luZG93Q2FzY2FkZVBvc2l0aW9uLnRvcCArICdweCc7XG4gICAgd2luZG93LmxlZnQgPSB0aGlzLmxhc3RXaW5kb3dDYXNjYWRlUG9zaXRpb24ubGVmdCArICdweCc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BDb21wb25lbnQuZ2V0S2V5Q29kZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgZ2V0S2V5U2VxdWVuY2UgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSBrZXlzLnB1c2goJ3NoaWZ0Jyk7XG4gICAgaWYgKGV2ZW50LmN0cmxLZXkpIGtleXMucHVzaCgnY3RybCcpO1xuICAgIGlmIChldmVudC5hbHRLZXkpIGtleXMucHVzaCgnYWx0Jyk7XG4gICAgaWYgKGV2ZW50Lm1ldGFLZXkpIGtleXMucHVzaCgnbWV0YScpO1xuXG4gICAgdmFyIGtleUNvZGUgPSBldmVudC5rZXlDb2RlIHx8IGV2ZW50LndoaWNoO1xuICAgIGlmIChrZXlDb2RlKSBrZXlzLnB1c2godGhpcy5rZXlib2FyZE1hcFtrZXlDb2RlXS50b0xvd2VyQ2FzZSgpKTtcblxuICAgIHJldHVybiBrZXlzLmpvaW4oJysnKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZXZlbnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICovXG4gIG9uS2V5RG93biA9IChldmVudDogYW55KSA9PiB7XG4gICAgdmFyIGtleVNlcXVlbmNlID0gdGhpcy5nZXRLZXlTZXF1ZW5jZShldmVudCk7XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K20nKSB7IC8vTWF4aW1pemVcbiAgICAgIHZhciBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xuICAgICAgaWYgKGFjdGl2ZVdpbmRvdyA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgaWYgKCFhY3RpdmVXaW5kb3cubWF4aW1pemVkKSB7XG4gICAgICAgIHRoaXMuc2F2ZVBvc2l0aW9uKGFjdGl2ZVdpbmRvdyk7XG4gICAgICAgIHRoaXMubWF4aW1pemUoYWN0aXZlV2luZG93KTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aXZlV2luZG93Lm1heGltaXplZCA9PT0gJ3JpZ2h0JyB8fCBhY3RpdmVXaW5kb3cubWF4aW1pemVkID09PSAnbGVmdCcpXG4gICAgICAgIHRoaXMubWF4aW1pemUoYWN0aXZlV2luZG93KTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5yZXN0b3JlU2F2ZWRQb3NpdGlvbihhY3RpdmVXaW5kb3cpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K24nKSB7IC8vTWluaW1pemVcbiAgICAgIHZhciBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xuICAgICAgaWYgKGFjdGl2ZVdpbmRvdyA9PT0gbnVsbCB8fCBhY3RpdmVXaW5kb3cubWluaW1pemVkKSByZXR1cm47XG4gICAgICB0aGlzLm1pbmltaXplKGFjdGl2ZVdpbmRvdyk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrdycpIHsgLy9DeWNsZXMgRm9yd2FyZFxuICAgICAgdmFyIGluZGV4ID0gdGhpcy53aW5kb3dzLmluZGV4T2YodGhpcy5nZXRBY3RpdmVXaW5kb3coKSk7XG4gICAgICB0aGlzLmFjdGl2YXRlTmV4dFdpbmRvdyhpbmRleCArIDEpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnc2hpZnQrYWx0K3cnKSB7IC8vQ3ljbGVzIEJhY2t3YXJkXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLndpbmRvd3MuaW5kZXhPZih0aGlzLmdldEFjdGl2ZVdpbmRvdygpKTtcbiAgICAgIHRoaXMuYWN0aXZhdGVQcmV2aW91c1dpbmRvdyhpbmRleCArIDEpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnc2hpZnQrYWx0K3gnICYmICEodGhpcy5zaGlmdFByZXNzZWQgJiYgdGhpcy5hbHRQcmVzc2VkICYmIHRoaXMueFByZXNzZWQpKSB7IC8vQ2xvc2VcbiAgICAgIHZhciBhY3RpdmVXaW5kb3cgPSB0aGlzLmdldEFjdGl2ZVdpbmRvdygpO1xuICAgICAgaWYgKCFhY3RpdmVXaW5kb3cpIHJldHVybjtcbiAgICAgIHRoaXMuY2xvc2VXaW5kb3coYWN0aXZlV2luZG93KTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtkJykgeyAvL1RvZ2dsZSBEZXNrdG9wXG4gICAgICAvL3RoaXMuZGVza3RvcFNob3duID0gdGhpcy5oaWRlU2hvd0FsbCgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpXG4gICAgICB0aGlzLnNoaWZ0UHJlc3NlZCA9IHRydWU7XG4gICAgaWYgKGV2ZW50LmFsdEtleSlcbiAgICAgIHRoaXMuYWx0UHJlc3NlZCA9IHRydWU7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDg4KVxuICAgICAgdGhpcy54UHJlc3NlZCA9IHRydWU7XG4gIH1cblxuICBvbktleVVwID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpXG4gICAgICB0aGlzLnNoaWZ0UHJlc3NlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudC5hbHRLZXkpXG4gICAgICB0aGlzLmFsdFByZXNzZWQgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gODgpXG4gICAgICB0aGlzLnhQcmVzc2VkID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcENvbXBvbmVudC5oYW5kbGVTZWxlY3RBdHRlbXB0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3BcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFByZXZlbnRzIHRoZSB1c2VyIGZyb20gaGlnaGxpZ2h0IGRlc2t0b3AgZWxlbWVudHMuXG4gICAqXG4gICAqL1xuICBoYW5kbGVTZWxlY3RBdHRlbXB0ID0gKGU6IGFueSkgPT4ge1xuICAgIHZhciBub2RlTmFtZSA9IGUudGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG5vZGVOYW1lID09PSAnaW5wdXQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEnIHx8IG5vZGVOYW1lID09PSAnc2VsZWN0JykgcmV0dXJuIHRydWU7XG4gICAgaWYgKHdpbmRvdy5ldmVudCkgeyBlLnByZXZlbnREZWZhdWx0KCk7IH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHdpbmRvd3M6IEFycmF5PGFueT4gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9nb1VybCA9IHRoaXMub3B0aW9ucy5sb2dvVXJsO1xyXG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih0aGlzLmRlc2t0b3Aub3B0aW9ucywgdGhpcy5vcHRpb25zKTtcclxuICAgIHRoaXMub3B0aW9ucy52aWV3cG9ydFRvcCA9IHRoaXMub3B0aW9ucy5tZW51YmFyQ29uZmlnICE9PSB1bmRlZmluZWQgPyB0aGlzLm9wdGlvbnMubWVudWJhckhlaWdodCArIDEgOiAwO1xyXG4gICAgdGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIub25PcGVuKCkuc3Vic2NyaWJlKCh3aW5kaW93RXZlbnQ6IFRydVdpbmRvd0V2ZW50QXJncykgPT4ge1xyXG4gICAgICB0aGlzLm9wZW5XaW5kb3cod2luZGlvd0V2ZW50LCBmYWxzZSk7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQgPSB0aGlzLmhhbmRsZVNlbGVjdEF0dGVtcHQ7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMub25LZXlEb3duKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25LZXlVcCk7XHJcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vbktleURvd24pO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMub25LZXlVcCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkZXNrdG9wLXdyYXBwZXJcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRlc2t0b3AtbWVudWJhci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2hlaWdodCc6IG9wdGlvbnMubWVudWJhckhlaWdodCArICdweCd9XCI+XHJcbiAgICA8dHJ1LWRlc2t0b3AtbWVudWJhciBbZGVza3RvcEN0cmxdPVwidGhpc1wiPjwvdHJ1LWRlc2t0b3AtbWVudWJhcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHRydS1kZXNrdG9wLXZpZXdwb3J0IFt3aW5kb3dzXT1cIndpbmRvd3NcIiBbZGVza3RvcEN0cmxdPVwidGhpc1wiPjwvdHJ1LWRlc2t0b3Atdmlld3BvcnQ+XHJcblxyXG4gIDx0cnUtZGVza3RvcC10YXNrYmFyIFt3aW5kb3dzXT1cIndpbmRvd3NcIiBbZGVza3RvcEN0cmxdPVwidGhpc1wiPjwvdHJ1LWRlc2t0b3AtdGFza2Jhcj5cclxuXHJcbiAgPGltZyBjbGFzcz1cImRlc2t0b3Atdmlld3BvcnQtbG9nb1wiIGRhdGEtbmctc2hvdz1cImxvZ29VcmxcIiBhbHQ9XCJcIj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -81,8 +81,8 @@ export class TruDesktopWindow {
81
81
  if (this.window.views === undefined)
82
82
  return;
83
83
  var length = this.window.views.length;
84
- this.disablePrevious = !!(this.window.views[0].active || length === 1);
85
- this.disableNext = !!(this.window.views[length - 1].active || length === 1);
84
+ this.disablePrevious = !!(this.window.views[0].active$.getValue() || length === 1);
85
+ this.disableNext = !!(this.window.views[length - 1].onActive.getValue() || length === 1);
86
86
  };
87
87
  /**
88
88
  * @tru.doc function
@@ -222,7 +222,7 @@ export class TruDesktopWindow {
222
222
  this.addView = (viewConfigOverlay) => {
223
223
  this.removeForwardViews();
224
224
  var activeView = this.desktopCtrl.getActiveView(this.window);
225
- activeView.active = false;
225
+ activeView.active(false);
226
226
  var viewConfig = this.desktopCtrl.getDesktop().viewConfig;
227
227
  var viewConfigInstance = Object.assign({}, viewConfig);
228
228
  var extended = Object.assign(viewConfigInstance, viewConfigOverlay);
@@ -256,8 +256,8 @@ export class TruDesktopWindow {
256
256
  if (this.cancelEditingOnNavigation)
257
257
  this.desktopCtrl.getActiveView(this.window).isEditing = false;
258
258
  let activeView = this.desktopCtrl.getActiveView(this.window);
259
- activeView.active = false;
260
- this.window.views[0].active = true;
259
+ activeView.active(false);
260
+ this.window.views[0].active(true);
261
261
  this.updateNavigationState();
262
262
  };
263
263
  /**
@@ -274,8 +274,8 @@ export class TruDesktopWindow {
274
274
  if (this.cancelEditingOnNavigation)
275
275
  this.desktopCtrl.getActiveView(this.window).isEditing = false;
276
276
  let activeView = this.desktopCtrl.getActiveView(this.window);
277
- activeView.active = false;
278
- this.window.views[this.window.views.length - 1].active = true;
277
+ activeView.active(false);
278
+ this.window.views[this.window.views.length - 1].active(true);
279
279
  this.updateNavigationState();
280
280
  };
281
281
  this.resizeEventHandler = () => {
@@ -342,8 +342,8 @@ export class TruDesktopWindow {
342
342
  var activeViewIndex = this.window.views.indexOf(activeView);
343
343
  if (this.cancelEditingOnNavigation)
344
344
  activeView.isEditing = false;
345
- activeView.active = false;
346
- this.window.views[activeViewIndex - 1].active = true;
345
+ activeView.active(false);
346
+ this.window.views[activeViewIndex - 1].active(true);
347
347
  this.updateNavigationState();
348
348
  };
349
349
  this.nextView = () => {
@@ -353,8 +353,8 @@ export class TruDesktopWindow {
353
353
  var activeViewIndex = this.window.views.indexOf(activeView);
354
354
  if (this.cancelEditingOnNavigation)
355
355
  activeView.isEditing = false;
356
- activeView.active = false;
357
- this.window.views[activeViewIndex + 1].active = true;
356
+ activeView.active(false);
357
+ this.window.views[activeViewIndex + 1].active(true);
358
358
  this.updateNavigationState();
359
359
  };
360
360
  this.save = () => {
@@ -446,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
446
446
  }], desktopCtrl: [{
447
447
  type: Input
448
448
  }] } });
449
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atd2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2t0b3Avd2luZG93L3RydS1kZXNrdG9wLXdpbmRvdy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3dpbmRvdy90cnUtZGVza3RvcC13aW5kb3cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFRN0UsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUNVLFdBQTJCLEVBQzNCLHFCQUE0QyxFQUM1QyxVQUFzQixFQUN0QixFQUFxQjtRQUhyQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRy9CLE1BQUMsR0FBRyxDQUFDLENBQUM7UUFDTixNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGFBQVEsR0FBdUIsSUFBSSxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFFdkIsOEJB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RyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIElucHV0LCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJ1V2luZG93QWRkVmlld0V2ZW50QXJncyB9IGZyb20gJy4uL3NlcnZpY2VzL3RydS13aW5kb3ctYWRkLXZpZXctZXZlbnQtYXJncyc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XG5pbXBvcnQgeyBUcnVFbnRpdHlBY2Nlc3NvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RydS1lbnRpdHktYWNjZXNzb3InO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWhhbmRsZXInO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RydS1kZXNrdG9wLXdpbmRvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtZGVza3RvcC13aW5kb3cuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi90cnUtZGVza3RvcC5jc3MnLCAnLi90cnUtZGVza3RvcC13aW5kb3cuY3NzJ10sXG4gIHByb3ZpZGVyczogW1RydURhdGFDb250ZXh0LCBUcnVFbnRpdHlBY2Nlc3NvciwgVHJ1V2luZG93RXZlbnRIYW5kbGVyXVxufSlcbmV4cG9ydCBjbGFzcyBUcnVEZXNrdG9wV2luZG93IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgd2luZG93OiBhbnk7XG4gIEBJbnB1dCgpIHZpZXdwb3J0Q3RybDogYW55O1xuICBASW5wdXQoKSBkZXNrdG9wQ3RybDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxuICAgIHByaXZhdGUgdHJ1V2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICB4ID0gMDtcbiAgeSA9IDA7XG4gIGxhc3RYID0gMDtcbiAgbGFzdFkgPSAwO1xuICBzdGFydFggPSAwO1xuICBzdGFydFkgPSAwO1xuICB0aXRsZUJhcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgY2FuQ2xvc2VGbiA9IHVuZGVmaW5lZDtcbiAgY2FuTmF2aWdhdGVGbiE6ICgpID0+IGJvb2xlYW47XG4gIGNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgdmlld3BvcnREaW1lbnNpb25zOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgaGFzQ2hhbmdlcyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dC5oYXNDaGFuZ2VzKCkubGVuZ3RoO1xyXG4gIH1cblxuICBtb3VzZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcblxuICAgIHRoaXMudmlld3BvcnREaW1lbnNpb25zID0gdGhpcy52aWV3cG9ydEN0cmwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7XG4gICAgaWYgKGV2ZW50LnBhZ2VYIDw9IDAgfHxcbiAgICAgIGV2ZW50LnBhZ2VYID49IHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRoIHx8XG4gICAgICB0aGlzLndpbmRvdy5tYXhpbWl6ZWQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLnRpdGxlQmFyID09IG51bGwpIHJldHVybjtcblxuICAgIC8vdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdvcGFjaXR5OiAwLjU7Jyk7XG4gICAgdGhpcy54ID0gZXZlbnQuc2NyZWVuWCAtIHRoaXMuc3RhcnRYO1xuICAgIHRoaXMueSA9IGV2ZW50LnNjcmVlblkgLSB0aGlzLnN0YXJ0WTtcblxuICAgIC8vVG9wIENvbnRhaW5tZW50XG4gICAgdGhpcy55ID0gdGhpcy55ID49IDAgPyB0aGlzLnkgOiAwO1xuICAgIC8vQm90dG9tIENvbnRhaW5tZW50XG4gICAgdGhpcy55ID0gdGhpcy55IDw9IHRoaXMudmlld3BvcnREaW1lbnNpb25zLmhlaWdodCAtIHRoaXMudGl0bGVCYXIub2Zmc2V0SGVpZ2h0ID8gdGhpcy55IDogdGhpcy52aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0IC0gdGhpcy50aXRsZUJhci5vZmZzZXRIZWlnaHQ7XG5cbiAgICAvL0xlZnQgQ29udGFpbm1lbnRcbiAgICB0aGlzLnggPSB0aGlzLnggPj0gLSh0aGlzLnRpdGxlQmFyLm9mZnNldFdpZHRoICsgdGhpcy50aXRsZUJhci5vZmZzZXRMZWZ0KSA/IHRoaXMueCA6IC0odGhpcy50aXRsZUJhci5vZmZzZXRXaWR0aCArIHRoaXMudGl0bGVCYXIub2Zmc2V0TGVmdCk7XG4gICAgLy9SaWdodCBDb250YWlubWVudFxuICAgIHRoaXMueCA9IHRoaXMueCA8PSB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucy53aWR0aCAtIHRoaXMudGl0bGVCYXIub2Zmc2V0TGVmdCA/IHRoaXMueCA6IHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRoIC0gdGhpcy50aXRsZUJhci5vZmZzZXRMZWZ0O1xuXG4gICAgdGhpcy53aW5kb3cudG9wID0gdGhpcy55ICsgJ3B4JztcbiAgICB0aGlzLndpbmRvdy5sZWZ0ID0gdGhpcy54ICsgJ3B4JztcbiAgfTtcblxuICBtb3VzZVVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnBhZ2VZIDw9IHRoaXMuZGVza3RvcEN0cmwub3B0aW9ucy52aWV3cG9ydFRvcCkge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZSh0aGlzLndpbmRvdyk7XG4gICAgfVxuICAgIGlmIChldmVudC5wYWdlWCA8PSAwKSB7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplTGVmdCh0aGlzLndpbmRvdyk7XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnREaW1lbnNpb25zID0gdGhpcy52aWV3cG9ydEN0cmwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7XG4gICAgaWYgKGV2ZW50LnBhZ2VYID49IHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRoIC0gMSkge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZVJpZ2h0KHRoaXMud2luZG93KTtcbiAgICB9XG5cbiAgICAvL3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMS4wOycpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5tb3VzZVVwKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC51cGRhdGVOYXZpZ2F0aW9uU3RhdGVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFVwZGF0ZXMgd2luZG93IG5hdmlnYXRpb24gYnV0dG9ucyBiYXNlZCBsb2NhdGlvbiBvZiB0aGUgYWN0aXZlIHZpZXcgaW4gdGhlIHZpZXdzIGFycmF5LlxuICAgKlxuICAgKi9cbiAgdXBkYXRlTmF2aWdhdGlvblN0YXRlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvdy52aWV3cyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgdmFyIGxlbmd0aCA9IHRoaXMud2luZG93LnZpZXdzLmxlbmd0aDtcbiAgICB0aGlzLmRpc2FibGVQcmV2aW91cyA9ICEhKHRoaXMud2luZG93LnZpZXdzWzBdLmFjdGl2ZSB8fCBsZW5ndGggPT09IDEpO1xuICAgIHRoaXMuZGlzYWJsZU5leHQgPSAhISh0aGlzLndpbmRvdy52aWV3c1tsZW5ndGggLSAxXS5hY3RpdmUgfHwgbGVuZ3RoID09PSAxKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5pc1dpbmRvd0luVmlld3BvcnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERldGVybWluZXMgaWYgdGhlIHdpbmRvdyBpcyB3aXRoaW4gdGhlIHZpZXdwb3J0IGJvdW5kYXJpZXMuXG4gICAqXG4gICAqL1xuICBpc1dpbmRvd0luVmlld3BvcnQgPSAoKSA9PiB7XG4gICAgdmFyIHdpbmRvd1RvcCA9IDA7XG4gICAgdmFyIHdpbmRvd0xlZnQgPSAwO1xuICAgIGlmICghdGhpcy53aW5kb3cubWluaW1pemVkKSB7XG4gICAgICB3aW5kb3dUb3AgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICB3aW5kb3dMZWZ0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93VG9wID0gcGFyc2VJbnQodGhpcy53aW5kb3cuc2F2ZWRQb3NpdGlvbi50b3AsIDEwKTtcbiAgICAgIHdpbmRvd0xlZnQgPSBwYXJzZUludCh0aGlzLndpbmRvdy5zYXZlZFBvc2l0aW9uLmxlZnQsIDEwKTtcbiAgICB9XG4gICAgaWYgKCh3aW5kb3dUb3AgKyAxMCkgPj0gdGhpcy52aWV3cG9ydEN0cmwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkuaGVpZ2h0IHx8XG4gICAgICAod2luZG93TGVmdCArIDYwKSA+PSB0aGlzLnZpZXdwb3J0Q3RybC5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKS53aWR0aCkge1xuICAgICAgdGhpcy53aW5kb3cub3V0T2ZCb3VuZHMgPSB0cnVlO1xuICAgICAgdGhpcy53aW5kb3cuYWN0aXZlID0gZmFsc2U7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLmFjdGl2YXRlRm9yZW1vc3RXaW5kb3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53aW5kb3cub3V0T2ZCb3VuZHMgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuZ2V0V2luZG93XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBHZXRzIHRoZSB3aW5kb3cgb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSB3aW5kb3cgb2JqZWN0LlxuICAgKi9cbiAgZ2V0V2luZG93ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLndpbmRvdztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5zZXRXaW5kb3dUaXRsZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyB0aGUgd2luZG93IHRpdGxlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgd2luZG93IHRpdGxlIGJhci5cbiAgICovXG4gIHNldFdpbmRvd1RpdGxlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLndpbmRvdy50aXRsZSA9IHZhbHVlO1xuICB9O1xuXG4gIGdldFdpbmRvd1RpdGxlID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLndpbmRvdy50aXRsZTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5nb1RvUHJldmlvdXNWaWV3XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBQdWJsaWMgbWV0aG9kIGZvciBuYXZpZ2F0aW5nIHRvIHRoZSBwcmV2aW91cyB2aWV3LlxuICAgKlxuICAgKi9cbiAgZ29Ub1ByZXZpb3VzVmlldyA9ICgpID0+IHtcbiAgICB0aGlzLnByZXZpb3VzVmlldygpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LnZpZXdJc0VkaXRpbmdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENoZWNrcyB3aGV0aGVyIHZpZXcgaXMgZWRpdGluZy5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59LlxuICAgKi9cbiAgdmlld0lzRWRpdGluZyA9ICgpID0+IHtcbiAgICB2YXIgaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgdGhpcy53aW5kb3cudmlld3MuZm9yRWFjaCgodmlldzogYW55KSA9PiB7XG4gICAgICBpZiAodmlldy5pc0VkaXRpbmcgPT09IHRydWUpIHtcbiAgICAgICAgaXNFZGl0aW5nID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBudWxsKTtcbiAgICByZXR1cm4gaXNFZGl0aW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LmNhbk5hdmlnYXRlXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDaGVja3Mgd2hldGhlciBuYXZpZ2F0aW9uIGNhbiBvY2N1ci4uXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufS5cbiAgICovXG4gIGNhbk5hdmlnYXRlID0gKCkgPT4ge1xuICAgIHZhciBjYW5OYXZpZ2F0ZSA9IHRydWU7XG4gICAgaWYgKHRoaXMuY2FuTmF2aWdhdGVGbiAhPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMudmlld0lzRWRpdGluZygpKSB7XG4gICAgICAgIGNhbk5hdmlnYXRlID0gdGhpcyEuY2FuTmF2aWdhdGVGbigpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2FuTmF2aWdhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQucmVtb3ZlRm9yd2FyZFZpZXdzXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBSZW1vdmVzIGFsbCB2aWV3KHMpIGZvcndhcmQgb2YgdGhlIGFjdGl2ZSB2aWV3LlxuICAgKlxuICAgKi9cbiAgcmVtb3ZlRm9yd2FyZFZpZXdzID0gKCkgPT4ge1xuICAgIHZhciBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICB2YXIgYWN0aXZlVmlld0luZGV4ID0gdGhpcy53aW5kb3cudmlld3MuaW5kZXhPZihhY3RpdmVWaWV3KTtcbiAgICBmb3IgKHZhciBpID0gdGhpcy53aW5kb3cudmlld3MubGVuZ3RoOyBpID4gYWN0aXZlVmlld0luZGV4OyBpLS0pIHtcbiAgICAgIHRoaXMud2luZG93LnZpZXdzLnNwbGljZShpLCAxKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5hZGRWaWV3XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBSZW1vdmVzIGFsbCBpbmFjdGl2ZSB2aWV3KHMpIGZvbGxvd2luZyB0aGUgYWN0aXZlIHZpZXcgYW5kIGluc2VydHMgYSBuZXcgdmlldy5cbiAgICpcbiAgICovXG4gIGFkZFZpZXcgPSAodmlld0NvbmZpZ092ZXJsYXk6IGFueSkgPT4ge1xuICAgIHRoaXMucmVtb3ZlRm9yd2FyZFZpZXdzKCk7XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIGFjdGl2ZVZpZXcuYWN0aXZlID0gZmFsc2U7XG4gICAgdmFyIHZpZXdDb25maWcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldERlc2t0b3AoKS52aWV3Q29uZmlnO1xuICAgIHZhciB2aWV3Q29uZmlnSW5zdGFuY2UgPSBPYmplY3QuYXNzaWduKHt9LCB2aWV3Q29uZmlnKTtcbiAgICB2YXIgZXh0ZW5kZWQgPSBPYmplY3QuYXNzaWduKHZpZXdDb25maWdJbnN0YW5jZSwgdmlld0NvbmZpZ092ZXJsYXkpO1xuICAgIGV4dGVuZGVkLndpbmRvdyA9IHRoaXM7XG4gICAgdGhpcy53aW5kb3cudmlld3MucHVzaChleHRlbmRlZCk7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5nZXRHbG9iYWxzXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiByZXR1cm5zIHRoZSBnbG9iYWwgdmFsdWVzLlxuICAgKlxuICAgKi9cbiAgZ2V0R2xvYmFscyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3cuZ2xvYmFscztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5maXJzdFZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBmaXJzdFZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlUHJldmlvdXMpIHJldHVybjtcbiAgICBpZiAodGhpcy5jYW5jZWxFZGl0aW5nT25OYXZpZ2F0aW9uKSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIGxldCBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICBhY3RpdmVWaWV3LmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMud2luZG93LnZpZXdzWzBdLmFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5maXJzdFZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBsYXN0VmlldyA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuY2FuTmF2aWdhdGUoKSB8fCB0aGlzLmRpc2FibGVOZXh0KSByZXR1cm47XG4gICAgaWYgKHRoaXMuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbikgdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICBsZXQgYWN0aXZlVmlldyA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdyk7XG4gICAgYWN0aXZlVmlldy5hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1t0aGlzLndpbmRvdy52aWV3cy5sZW5ndGggLSAxXS5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07O1xuXG4gIHJlc2l6ZUV2ZW50SGFuZGxlciA9ICgpID0+IHtcbiAgICB0aGlzLmlzV2luZG93SW5WaWV3cG9ydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGV2ZW50XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgb25LZXlkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5hY3RpdmUpIHJldHVybjtcbiAgICB2YXIga2V5U2VxdWVuY2UgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEtleVNlcXVlbmNlKGV2ZW50KTtcbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrbGVmdCcpIHsgLy9QcmV2aW91cyBWaWV3XG4gICAgICB0aGlzLnByZXZpb3VzVmlldygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K3JpZ2h0JykgeyAvL05leHQgVmlld1xuICAgICAgdGhpcy5uZXh0VmlldygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K3VwJykgeyAvL0ZpcnN0IFZpZXdcbiAgICAgIHRoaXMuZmlyc3RWaWV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrZG93bicpIHsgLy9MYXN0IFZpZXdcbiAgICAgIHRoaXMubGFzdFZpZXcoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtsJykgeyAvL01heGltaXplIGxlZnRcbiAgICAgIGlmICghdGhpcy53aW5kb3cubWF4aW1pemVkKSB7XG4gICAgICAgIHRoaXMuZGVza3RvcEN0cmwuc2F2ZVBvc2l0aW9uKHRoaXMud2luZG93KTtcbiAgICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZUxlZnQodGhpcy53aW5kb3cpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLndpbmRvdy5tYXhpbWl6ZWQgPT09ICdyaWdodCcgfHwgdGhpcy53aW5kb3cubWF4aW1pemVkID09PSAnZmlsbCcpXG4gICAgICAgIHRoaXMuZGVza3RvcEN0cmwubWF4aW1pemVMZWZ0KHRoaXMud2luZG93KTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5kZXNrdG9wQ3RybC5yZXN0b3JlU2F2ZWRQb3NpdGlvbih0aGlzLndpbmRvdyk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrcicpIHsgLy9NYXhpbWl6ZSByaWdodFxuICAgICAgaWYgKCF0aGlzLndpbmRvdy5tYXhpbWl6ZWQpIHtcbiAgICAgICAgdGhpcy5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24odGhpcy53aW5kb3cpO1xuICAgICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplUmlnaHQodGhpcy53aW5kb3cpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLndpbmRvdy5tYXhpbWl6ZWQgPT09ICdsZWZ0JyB8fCB0aGlzLndpbmRvdy5tYXhpbWl6ZWQgPT09ICdmaWxsJylcbiAgICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZVJpZ2h0KHRoaXMud2luZG93KTtcbiAgICAgIGVsc2VcbiAgICAgICAgdGhpcy5kZXNrdG9wQ3RybC5yZXN0b3JlU2F2ZWRQb3NpdGlvbih0aGlzLndpbmRvdyk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2Mgd2F0Y2hcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE1vbml0b3JzIHRoZSB3aW5kb3cncyBtaW5pbWl6ZWQgc3RhdGVcbiAgICpcbiAgICovXG4gIC8vJHNjb3BlLiR3YXRjaCgnd2luZG93Lm1pbmltaXplZCcsXG4gIC8vICAgICAgICAgICAgICBmdW5jdGlvbih2YWx1ZSkge1xuICAvLyAgaWYgKHZhbHVlICYmICEkc2NvcGUud2luZG93Lm1heGltaXplZCkge1xuICAvLyAgICAkc2NvcGUuZGVza3RvcEN0cmwuc2F2ZVBvc2l0aW9uKCRzY29wZS53aW5kb3cpO1xuICAvLyAgfVxuICAvL31cbiAgLy8gICAgICAgICAgKTtcblxuICBkaXNhYmxlUHJldmlvdXMgPSB0cnVlO1xuICBkaXNhYmxlTmV4dCA9IHRydWU7XG5cbiAgYWN0aXZhdGUgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMud2luZG93Lm91dE9mQm91bmRzKSByZXR1cm47XG4gICAgdGhpcy5kZXNrdG9wQ3RybC5jbGVhckFjdGl2ZSgpO1xuICAgIHRoaXMud2luZG93LmFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy53aW5kb3cuekluZGV4ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXROZXh0TWF4WkluZGV4KCk7XG4gIH07XG5cbiAgbWluaW1pemUgPSAoKSA9PiB7XG4gICAgdGhpcy5kZXNrdG9wQ3RybC5taW5pbWl6ZSh0aGlzLndpbmRvdyk7XG4gIH07XG5cbiAgbWF4aW1pemUgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMud2luZG93Lm1heGltaXplZCkge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5yZXN0b3JlU2F2ZWRQb3NpdGlvbih0aGlzLndpbmRvdyk7XG4gICAgICB0aGlzLndpbmRvdy5tYXhpbWl6ZWQgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVza3RvcEN0cmwuc2F2ZVBvc2l0aW9uKHRoaXMud2luZG93KTtcbiAgICAgIHRoaXMuZGVza3RvcEN0cmwubWF4aW1pemUodGhpcy53aW5kb3cpO1xuICAgIH1cbiAgfTtcblxuICBjbG9zZSA9ICgpID0+IHtcbiAgICB0aGlzLmRlc2t0b3BDdHJsLmNsb3NlV2luZG93KHRoaXMud2luZG93KTtcbiAgfTtcblxuICB3aW5kb3dUaXRsZU1vdXNlRG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvdy5tYXhpbWl6ZWQpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudGl0bGVCYXIgPSBldmVudC5zcmNFbGVtZW50IGFzIEhUTUxFbGVtZW50IHx8IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRMZWZ0O1xuICAgIHRoaXMueSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldFRvcDtcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnNjcmVlblggLSB0aGlzLng7XG4gICAgdGhpcy5zdGFydFkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy55O1xuXG4gICAgdGhpcy5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24odGhpcy53aW5kb3cpO1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm1vdXNlVXApO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRXZlbnRIYW5kbGVyKTtcbiAgfTtcblxuICBwcmV2aW91c1ZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlUHJldmlvdXMpIHJldHVybjtcbiAgICB2YXIgYWN0aXZlVmlldyA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdyk7XG4gICAgdmFyIGFjdGl2ZVZpZXdJbmRleCA9IHRoaXMud2luZG93LnZpZXdzLmluZGV4T2YoYWN0aXZlVmlldyk7XG4gICAgaWYgKHRoaXMuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbikgYWN0aXZlVmlldy5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICBhY3RpdmVWaWV3LmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMud2luZG93LnZpZXdzW2FjdGl2ZVZpZXdJbmRleCAtIDFdLmFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICBuZXh0VmlldyA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuY2FuTmF2aWdhdGUoKSB8fCB0aGlzLmRpc2FibGVOZXh0KSByZXR1cm47XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIHZhciBhY3RpdmVWaWV3SW5kZXggPSB0aGlzLndpbmRvdy52aWV3cy5pbmRleE9mKGFjdGl2ZVZpZXcpO1xuICAgIGlmICh0aGlzLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24pIGFjdGl2ZVZpZXcuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgYWN0aXZlVmlldy5hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1thY3RpdmVWaWV3SW5kZXggKyAxXS5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgc2F2ZSA9ICgpID0+IHtcbiAgICB0aGlzLmRhdGFDb250ZXh0LnNhdmUoKTtcbiAgfTtcblxuICByZXZlcnQgPSAoKSA9PiB7XG4gICAgdGhpcy5kYXRhQ29udGV4dC5yZXZlcnQoKTtcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbkNsb3NlRm4gPSB0aGlzLmRlc2t0b3BDdHJsLmdldE9wdGlvbnMoKS5jYW5DbG9zZUZuO1xuICAgIHRoaXMuY2FuTmF2aWdhdGVGbiA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0T3B0aW9ucygpLmNhbk5hdmlnYXRlRm47XG4gICAgdGhpcy5jYW5jZWxFZGl0aW5nT25OYXZpZ2F0aW9uID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRPcHRpb25zKCkuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbjtcbiAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpO1xuXG4gICAgdGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIub25BZGRWaWV3KCkuc3Vic2NyaWJlKCh3aW5kaW93QWRkVmlld0V2ZW50OiBUcnVXaW5kb3dBZGRWaWV3RXZlbnRBcmdzKSA9PiB7XHJcbiAgICAgIHRoaXMuYWRkVmlldyh3aW5kaW93QWRkVmlld0V2ZW50KTtcclxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5tb3VzZVVwKTtcblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUV2ZW50SGFuZGxlcik7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1jb250YWluZXJcIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsnZGVza3RvcC13aW5kb3ctYWN0aXZlJzogd2luZG93LmFjdGl2ZSwgJ2Rlc2t0b3Atd2luZG93LW1heGltaXplZCc6IHdpbmRvdy5tYXhpbWl6ZWR9XCJcclxuICAgICBbbmdTdHlsZV09XCJ7J3otaW5kZXgnOiB3aW5kb3cuekluZGV4LCAndG9wJzogd2luZG93LnRvcCwgJ2xlZnQnOiB3aW5kb3cubGVmdCwgJ3JpZ2h0Jzogd2luZG93LnJpZ2h0LCAnYm90dG9tJzogd2luZG93LmJvdHRvbSwgJ2hlaWdodCc6IHdpbmRvdy5oZWlnaHQsICd3aWR0aCc6IHdpbmRvdy53aWR0aCwgJ21pbi1oZWlnaHQnOiB3aW5kb3cubWluSGVpZ2h0LCAnbWluV2lkdGgnOiB3aW5kb3cubWluV2lkdGh9XCJcclxuICAgICBbc3R5bGUub2Zmc2V0TGVmdC5weF09XCJ4XCJcclxuICAgICBbc3R5bGUub2Zmc2V0VG9wLnB4XT1cInlcIlxyXG4gICAgIChtb3VzZWRvd24pPVwiYWN0aXZhdGUoKVwiXHJcbiAgICAgW2hpZGRlbl09XCJ3aW5kb3cubWluaW1pemVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImRlc2t0b3Atd2luZG93LWhlYWRlclwiIFtuZ0NsYXNzXT1cInsnZGVza3RvcC13aW5kb3ctbWF4aW1pemVkJzogd2luZG93Lm1heGltaXplZCwgJ2Rlc2t0b3Atd2luZG93LW9wYWNpdHknOiAhd2luZG93LmFjdGl2ZX1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXdpbmRvdy1uYXZpZ2F0aW9uXCI+XHJcbiAgICAgIDx0cnUtdG9vbGJhcj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1wcmV2aW91cy1pY29uJ1wiIFt0b29sdGlwXT1cIidHbyBCYWNrIE9uZSBWaWV3IC0gW0FsdCArIExlZnRdJ1wiIChjbGljayk9XCJwcmV2aW91c1ZpZXcoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLW5leHQtaWNvbidcIiBbdG9vbHRpcF09XCInR28gRm9yd2FyZCBPbmUgVmlldyAtIFtBbHQgKyBSaWdodF0nXCIgKGNsaWNrKT1cIm5leHRWaWV3KClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1zYXZlLWljb24nXCIgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1zYXZlLWljb25cIiBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LXNhdmUtaWNvbi1oYXMtY2hhbmdlcyc6IGhhc0NoYW5nZXMoKX1cIiBbdG9vbHRpcF09XCInU2F2ZSAtIFtDdHJsICsgU10nXCIgKGNsaWNrKT1cInNhdmUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLXJldmVydC1pY29uJ1wiIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmV2ZXJ0LWljb25cIiBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LXJldmVydC1pY29uLWhhcy1jaGFuZ2VzJzogaGFzQ2hhbmdlcygpfVwiIFt0b29sdGlwXT1cIidSZXZlcnQgLSBbQ3RybCArIFNoaWZ0ICsgUl0nXCIgKGNsaWNrKT1cInJldmVydCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLXNlcGFyYXRvcj48L3RydS10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgICAgPC90cnUtdG9vbGJhcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXRpdGxlXCIgKGRibGNsaWNrKT1cIm1heGltaXplKClcIiAobW91c2Vkb3duKT1cIndpbmRvd1RpdGxlTW91c2VEb3duKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRlc2t0b3AtY2xpY2stdGhyb3VnaFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXRleHRcIj57e3dpbmRvdy50aXRsZX19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVza3RvcC13aW5kb3ctYWN0aW9uXCI+XHJcbiAgICAgIDx0cnUtdG9vbGJhcj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1taW5pbWl6ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidNaW5pbWl6ZSAtIFtBbHQgKyBOXSdcIiAoY2xpY2spPVwibWluaW1pemUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtpY29uXT1cIid0cnUtdG9vbGJhci1tYXhpbWl6ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidHbyBGb3J3YXJkIE9uZSBWaWV3IC0gW0FsdCArIFJpZ2h0XSdcIiAoY2xpY2spPVwibWF4aW1pemUoKVwiIGNsYXNzPVwibWF4aW1pemVcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uICpuZ0lmPVwid2luZG93Lm1heGltaXplZFwiIFtpY29uXT1cIid0cnUtdG9vbGJhci1yZXN0b3JlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0dvIEZvcndhcmQgT25lIFZpZXcgLSBbQWx0ICsgUmlnaHRdJ1wiIChjbGljayk9XCJtYXhpbWl6ZSgpXCIgY2xhc3M9XCJtYXhpbWl6ZVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWNsb3NlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0Nsb3NlIFdpbmRvdyAtIFtBbHQgKyBTSElGVCArIFhdJ1wiIChjbGljayk9XCJjbG9zZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZmllbGRzZXQgbmctZGlzYWJsZWQ9XCIhd2luZG93LmFjdGl2ZVwiIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctZmllbGRzZXRcIiBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LW9wYWNpdHknOiAhd2luZG93LmFjdGl2ZX1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZpZXcgb2Ygd2luZG93LnZpZXdzXCI+XHJcbiAgICAgICAgPHRydS1kZXNrdG9wLXZpZXcgW3ZpZXddPVwidmlld1wiIFtoaWRkZW5dPVwiIXZpZXcuYWN0aXZlXCI+PG5nLXRlbXBsYXRlPjwvbmctdGVtcGxhdGU+PC90cnUtZGVza3RvcC12aWV3PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZmllbGRzZXQ+XHJcbiAgPHRydS1kZXNrdG9wLXN0YXR1c2Jhcj48L3RydS1kZXNrdG9wLXN0YXR1c2Jhcj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLW53XCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ253J1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLW5lXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ25lJ1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLXN3XCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ3N3J1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLXNlXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ3NlJ1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLW5cIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInbidcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1zXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ3MnXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtd1wiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIid3J1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWVcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInZSdcIj48L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atd2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2t0b3Avd2luZG93L3RydS1kZXNrdG9wLXdpbmRvdy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3dpbmRvdy90cnUtZGVza3RvcC13aW5kb3cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7QUFRN0UsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUNVLFdBQTJCLEVBQzNCLHFCQUE0QyxFQUM1QyxVQUFzQixFQUN0QixFQUFxQjtRQUhyQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBRy9CLE1BQUMsR0FBRyxDQUFDLENBQUM7UUFDTixNQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ04sVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUNYLGFBQVEsR0FBdUIsSUFBSSxDQUFDO1FBQ3BDLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFFdkIsOEJB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LGlCQUFpQixFQUFFLHFCQUFxQixDQUFDO2tNQUc1RCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIElucHV0LCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJ1V2luZG93QWRkVmlld0V2ZW50QXJncyB9IGZyb20gJy4uL3NlcnZpY2VzL3RydS13aW5kb3ctYWRkLXZpZXctZXZlbnQtYXJncyc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XG5pbXBvcnQgeyBUcnVFbnRpdHlBY2Nlc3NvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RydS1lbnRpdHktYWNjZXNzb3InO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWhhbmRsZXInO1xyXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RydS1kZXNrdG9wLXdpbmRvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtZGVza3RvcC13aW5kb3cuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi90cnUtZGVza3RvcC5jc3MnLCAnLi90cnUtZGVza3RvcC13aW5kb3cuY3NzJ10sXG4gIHByb3ZpZGVyczogW1RydURhdGFDb250ZXh0LCBUcnVFbnRpdHlBY2Nlc3NvciwgVHJ1V2luZG93RXZlbnRIYW5kbGVyXVxufSlcbmV4cG9ydCBjbGFzcyBUcnVEZXNrdG9wV2luZG93IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgd2luZG93OiBhbnk7XG4gIEBJbnB1dCgpIHZpZXdwb3J0Q3RybDogYW55O1xuICBASW5wdXQoKSBkZXNrdG9wQ3RybDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxuICAgIHByaXZhdGUgdHJ1V2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICB4ID0gMDtcbiAgeSA9IDA7XG4gIGxhc3RYID0gMDtcbiAgbGFzdFkgPSAwO1xuICBzdGFydFggPSAwO1xuICBzdGFydFkgPSAwO1xuICB0aXRsZUJhcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgY2FuQ2xvc2VGbiA9IHVuZGVmaW5lZDtcbiAgY2FuTmF2aWdhdGVGbiE6ICgpID0+IGJvb2xlYW47XG4gIGNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgdmlld3BvcnREaW1lbnNpb25zOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgaGFzQ2hhbmdlcyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dC5oYXNDaGFuZ2VzKCkubGVuZ3RoO1xyXG4gIH1cblxuICBtb3VzZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcblxuICAgIHRoaXMudmlld3BvcnREaW1lbnNpb25zID0gdGhpcy52aWV3cG9ydEN0cmwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7XG4gICAgaWYgKGV2ZW50LnBhZ2VYIDw9IDAgfHxcbiAgICAgIGV2ZW50LnBhZ2VYID49IHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRoIHx8XG4gICAgICB0aGlzLndpbmRvdy5tYXhpbWl6ZWQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLnRpdGxlQmFyID09IG51bGwpIHJldHVybjtcblxuICAgIC8vdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdvcGFjaXR5OiAwLjU7Jyk7XG4gICAgdGhpcy54ID0gZXZlbnQuc2NyZWVuWCAtIHRoaXMuc3RhcnRYO1xuICAgIHRoaXMueSA9IGV2ZW50LnNjcmVlblkgLSB0aGlzLnN0YXJ0WTtcblxuICAgIC8vVG9wIENvbnRhaW5tZW50XG4gICAgdGhpcy55ID0gdGhpcy55ID49IDAgPyB0aGlzLnkgOiAwO1xuICAgIC8vQm90dG9tIENvbnRhaW5tZW50XG4gICAgdGhpcy55ID0gdGhpcy55IDw9IHRoaXMudmlld3BvcnREaW1lbnNpb25zLmhlaWdodCAtIHRoaXMudGl0bGVCYXIub2Zmc2V0SGVpZ2h0ID8gdGhpcy55IDogdGhpcy52aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0IC0gdGhpcy50aXRsZUJhci5vZmZzZXRIZWlnaHQ7XG5cbiAgICAvL0xlZnQgQ29udGFpbm1lbnRcbiAgICB0aGlzLnggPSB0aGlzLnggPj0gLSh0aGlzLnRpdGxlQmFyLm9mZnNldFdpZHRoICsgdGhpcy50aXRsZUJhci5vZmZzZXRMZWZ0KSA/IHRoaXMueCA6IC0odGhpcy50aXRsZUJhci5vZmZzZXRXaWR0aCArIHRoaXMudGl0bGVCYXIub2Zmc2V0TGVmdCk7XG4gICAgLy9SaWdodCBDb250YWlubWVudFxuICAgIHRoaXMueCA9IHRoaXMueCA8PSB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucy53aWR0aCAtIHRoaXMudGl0bGVCYXIub2Zmc2V0TGVmdCA/IHRoaXMueCA6IHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRoIC0gdGhpcy50aXRsZUJhci5vZmZzZXRMZWZ0O1xuXG4gICAgdGhpcy53aW5kb3cudG9wID0gdGhpcy55ICsgJ3B4JztcbiAgICB0aGlzLndpbmRvdy5sZWZ0ID0gdGhpcy54ICsgJ3B4JztcbiAgfTtcblxuICBtb3VzZVVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnBhZ2VZIDw9IHRoaXMuZGVza3RvcEN0cmwub3B0aW9ucy52aWV3cG9ydFRvcCkge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZSh0aGlzLndpbmRvdyk7XG4gICAgfVxuICAgIGlmIChldmVudC5wYWdlWCA8PSAwKSB7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplTGVmdCh0aGlzLndpbmRvdyk7XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnREaW1lbnNpb25zID0gdGhpcy52aWV3cG9ydEN0cmwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCk7XG4gICAgaWYgKGV2ZW50LnBhZ2VYID49IHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRoIC0gMSkge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZVJpZ2h0KHRoaXMud2luZG93KTtcbiAgICB9XG5cbiAgICAvL3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMS4wOycpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5tb3VzZVVwKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC51cGRhdGVOYXZpZ2F0aW9uU3RhdGVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFVwZGF0ZXMgd2luZG93IG5hdmlnYXRpb24gYnV0dG9ucyBiYXNlZCBsb2NhdGlvbiBvZiB0aGUgYWN0aXZlIHZpZXcgaW4gdGhlIHZpZXdzIGFycmF5LlxuICAgKlxuICAgKi9cbiAgdXBkYXRlTmF2aWdhdGlvblN0YXRlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvdy52aWV3cyA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgdmFyIGxlbmd0aCA9IHRoaXMud2luZG93LnZpZXdzLmxlbmd0aDtcbiAgICB0aGlzLmRpc2FibGVQcmV2aW91cyA9ICEhKHRoaXMud2luZG93LnZpZXdzWzBdLmFjdGl2ZSQuZ2V0VmFsdWUoKSB8fCBsZW5ndGggPT09IDEpO1xuICAgIHRoaXMuZGlzYWJsZU5leHQgPSAhISh0aGlzLndpbmRvdy52aWV3c1tsZW5ndGggLSAxXS5vbkFjdGl2ZS5nZXRWYWx1ZSgpIHx8IGxlbmd0aCA9PT0gMSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuaXNXaW5kb3dJblZpZXdwb3J0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB3aW5kb3cgaXMgd2l0aGluIHRoZSB2aWV3cG9ydCBib3VuZGFyaWVzLlxuICAgKlxuICAgKi9cbiAgaXNXaW5kb3dJblZpZXdwb3J0ID0gKCkgPT4ge1xuICAgIHZhciB3aW5kb3dUb3AgPSAwO1xuICAgIHZhciB3aW5kb3dMZWZ0ID0gMDtcbiAgICBpZiAoIXRoaXMud2luZG93Lm1pbmltaXplZCkge1xuICAgICAgd2luZG93VG9wID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgd2luZG93TGVmdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvd1RvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LnNhdmVkUG9zaXRpb24udG9wLCAxMCk7XG4gICAgICB3aW5kb3dMZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuc2F2ZWRQb3NpdGlvbi5sZWZ0LCAxMCk7XG4gICAgfVxuICAgIGlmICgod2luZG93VG9wICsgMTApID49IHRoaXMudmlld3BvcnRDdHJsLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLmhlaWdodCB8fFxuICAgICAgKHdpbmRvd0xlZnQgKyA2MCkgPj0gdGhpcy52aWV3cG9ydEN0cmwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkud2lkdGgpIHtcbiAgICAgIHRoaXMud2luZG93Lm91dE9mQm91bmRzID0gdHJ1ZTtcbiAgICAgIHRoaXMud2luZG93LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5hY3RpdmF0ZUZvcmVtb3N0V2luZG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2luZG93Lm91dE9mQm91bmRzID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LmdldFdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyB0aGUgd2luZG93IG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gd2luZG93IG9iamVjdC5cbiAgICovXG4gIGdldFdpbmRvdyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3c7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuc2V0V2luZG93VGl0bGVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIHdpbmRvdyB0aXRsZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIHdpbmRvdyB0aXRsZSBiYXIuXG4gICAqL1xuICBzZXRXaW5kb3dUaXRsZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy53aW5kb3cudGl0bGUgPSB2YWx1ZTtcbiAgfTtcblxuICBnZXRXaW5kb3dUaXRsZSA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3cudGl0bGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuZ29Ub1ByZXZpb3VzVmlld1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUHVibGljIG1ldGhvZCBmb3IgbmF2aWdhdGluZyB0byB0aGUgcHJldmlvdXMgdmlldy5cbiAgICpcbiAgICovXG4gIGdvVG9QcmV2aW91c1ZpZXcgPSAoKSA9PiB7XG4gICAgdGhpcy5wcmV2aW91c1ZpZXcoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC52aWV3SXNFZGl0aW5nXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDaGVja3Mgd2hldGhlciB2aWV3IGlzIGVkaXRpbmcuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufS5cbiAgICovXG4gIHZpZXdJc0VkaXRpbmcgPSAoKSA9PiB7XG4gICAgdmFyIGlzRWRpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMud2luZG93LnZpZXdzLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgaWYgKHZpZXcuaXNFZGl0aW5nID09PSB0cnVlKSB7XG4gICAgICAgIGlzRWRpdGluZyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgbnVsbCk7XG4gICAgcmV0dXJuIGlzRWRpdGluZztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5jYW5OYXZpZ2F0ZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ2hlY2tzIHdoZXRoZXIgbmF2aWdhdGlvbiBjYW4gb2NjdXIuLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0uXG4gICAqL1xuICBjYW5OYXZpZ2F0ZSA9ICgpID0+IHtcbiAgICB2YXIgY2FuTmF2aWdhdGUgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNhbk5hdmlnYXRlRm4gIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLnZpZXdJc0VkaXRpbmcoKSkge1xuICAgICAgICBjYW5OYXZpZ2F0ZSA9IHRoaXMhLmNhbk5hdmlnYXRlRm4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbk5hdmlnYXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LnJlbW92ZUZvcndhcmRWaWV3c1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVtb3ZlcyBhbGwgdmlldyhzKSBmb3J3YXJkIG9mIHRoZSBhY3RpdmUgdmlldy5cbiAgICpcbiAgICovXG4gIHJlbW92ZUZvcndhcmRWaWV3cyA9ICgpID0+IHtcbiAgICB2YXIgYWN0aXZlVmlldyA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdyk7XG4gICAgdmFyIGFjdGl2ZVZpZXdJbmRleCA9IHRoaXMud2luZG93LnZpZXdzLmluZGV4T2YoYWN0aXZlVmlldyk7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMud2luZG93LnZpZXdzLmxlbmd0aDsgaSA+IGFjdGl2ZVZpZXdJbmRleDsgaS0tKSB7XG4gICAgICB0aGlzLndpbmRvdy52aWV3cy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuYWRkVmlld1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVtb3ZlcyBhbGwgaW5hY3RpdmUgdmlldyhzKSBmb2xsb3dpbmcgdGhlIGFjdGl2ZSB2aWV3IGFuZCBpbnNlcnRzIGEgbmV3IHZpZXcuXG4gICAqXG4gICAqL1xuICBhZGRWaWV3ID0gKHZpZXdDb25maWdPdmVybGF5OiBhbnkpID0+IHtcbiAgICB0aGlzLnJlbW92ZUZvcndhcmRWaWV3cygpO1xuICAgIHZhciBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICBhY3RpdmVWaWV3LmFjdGl2ZShmYWxzZSk7XG4gICAgdmFyIHZpZXdDb25maWcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldERlc2t0b3AoKS52aWV3Q29uZmlnO1xuICAgIHZhciB2aWV3Q29uZmlnSW5zdGFuY2UgPSBPYmplY3QuYXNzaWduKHt9LCB2aWV3Q29uZmlnKTtcbiAgICB2YXIgZXh0ZW5kZWQgPSBPYmplY3QuYXNzaWduKHZpZXdDb25maWdJbnN0YW5jZSwgdmlld0NvbmZpZ092ZXJsYXkpO1xuICAgIGV4dGVuZGVkLndpbmRvdyA9IHRoaXM7XG4gICAgdGhpcy53aW5kb3cudmlld3MucHVzaChleHRlbmRlZCk7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5nZXRHbG9iYWxzXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiByZXR1cm5zIHRoZSBnbG9iYWwgdmFsdWVzLlxuICAgKlxuICAgKi9cbiAgZ2V0R2xvYmFscyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3cuZ2xvYmFscztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5maXJzdFZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBmaXJzdFZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlUHJldmlvdXMpIHJldHVybjtcbiAgICBpZiAodGhpcy5jYW5jZWxFZGl0aW5nT25OYXZpZ2F0aW9uKSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIGxldCBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICBhY3RpdmVWaWV3LmFjdGl2ZShmYWxzZSk7XG4gICAgdGhpcy53aW5kb3cudmlld3NbMF0uYWN0aXZlKHRydWUpO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuZmlyc3RWaWV3XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgbGFzdFZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlTmV4dCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24pIHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdykuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgbGV0IGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIGFjdGl2ZVZpZXcuYWN0aXZlKGZhbHNlKTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1t0aGlzLndpbmRvdy52aWV3cy5sZW5ndGggLSAxXS5hY3RpdmUodHJ1ZSk7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTs7XG5cbiAgcmVzaXplRXZlbnRIYW5kbGVyID0gKCkgPT4ge1xuICAgIHRoaXMuaXNXaW5kb3dJblZpZXdwb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogQHRydS5kb2MgZXZlbnRcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBvbktleWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMud2luZG93LmFjdGl2ZSkgcmV0dXJuO1xuICAgIHZhciBrZXlTZXF1ZW5jZSA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0S2V5U2VxdWVuY2UoZXZlbnQpO1xuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtsZWZ0JykgeyAvL1ByZXZpb3VzIFZpZXdcbiAgICAgIHRoaXMucHJldmlvdXNWaWV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrcmlnaHQnKSB7IC8vTmV4dCBWaWV3XG4gICAgICB0aGlzLm5leHRWaWV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrdXAnKSB7IC8vRmlyc3QgVmlld1xuICAgICAgdGhpcy5maXJzdFZpZXcoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtkb3duJykgeyAvL0xhc3QgVmlld1xuICAgICAgdGhpcy5sYXN0VmlldygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K2wnKSB7IC8vTWF4aW1pemUgbGVmdFxuICAgICAgaWYgKCF0aGlzLndpbmRvdy5tYXhpbWl6ZWQpIHtcbiAgICAgICAgdGhpcy5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24odGhpcy53aW5kb3cpO1xuICAgICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplTGVmdCh0aGlzLndpbmRvdyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMud2luZG93Lm1heGltaXplZCA9PT0gJ3JpZ2h0JyB8fCB0aGlzLndpbmRvdy5tYXhpbWl6ZWQgPT09ICdmaWxsJylcbiAgICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZUxlZnQodGhpcy53aW5kb3cpO1xuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmRlc2t0b3BDdHJsLnJlc3RvcmVTYXZlZFBvc2l0aW9uKHRoaXMud2luZG93KTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtyJykgeyAvL01heGltaXplIHJpZ2h0XG4gICAgICBpZiAoIXRoaXMud2luZG93Lm1heGltaXplZCkge1xuICAgICAgICB0aGlzLmRlc2t0b3BDdHJsLnNhdmVQb3NpdGlvbih0aGlzLndpbmRvdyk7XG4gICAgICAgIHRoaXMuZGVza3RvcEN0cmwubWF4aW1pemVSaWdodCh0aGlzLndpbmRvdyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMud2luZG93Lm1heGltaXplZCA9PT0gJ2xlZnQnIHx8IHRoaXMud2luZG93Lm1heGltaXplZCA9PT0gJ2ZpbGwnKVxuICAgICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplUmlnaHQodGhpcy53aW5kb3cpO1xuICAgICAgZWxzZVxuICAgICAgICB0aGlzLmRlc2t0b3BDdHJsLnJlc3RvcmVTYXZlZFBvc2l0aW9uKHRoaXMud2luZG93KTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyB3YXRjaFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW9uaXRvcnMgdGhlIHdpbmRvdydzIG1pbmltaXplZCBzdGF0ZVxuICAgKlxuICAgKi9cbiAgLy8kc2NvcGUuJHdhdGNoKCd3aW5kb3cubWluaW1pemVkJyxcbiAgLy8gICAgICAgICAgICAgIGZ1bmN0aW9uKHZhbHVlKSB7XG4gIC8vICBpZiAodmFsdWUgJiYgISRzY29wZS53aW5kb3cubWF4aW1pemVkKSB7XG4gIC8vICAgICRzY29wZS5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24oJHNjb3BlLndpbmRvdyk7XG4gIC8vICB9XG4gIC8vfVxuICAvLyAgICAgICAgICApO1xuXG4gIGRpc2FibGVQcmV2aW91cyA9IHRydWU7XG4gIGRpc2FibGVOZXh0ID0gdHJ1ZTtcblxuICBhY3RpdmF0ZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3cub3V0T2ZCb3VuZHMpIHJldHVybjtcbiAgICB0aGlzLmRlc2t0b3BDdHJsLmNsZWFyQWN0aXZlKCk7XG4gICAgdGhpcy53aW5kb3cuYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLndpbmRvdy56SW5kZXggPSB0aGlzLmRlc2t0b3BDdHJsLmdldE5leHRNYXhaSW5kZXgoKTtcbiAgfTtcblxuICBtaW5pbWl6ZSA9ICgpID0+IHtcbiAgICB0aGlzLmRlc2t0b3BDdHJsLm1pbmltaXplKHRoaXMud2luZG93KTtcbiAgfTtcblxuICBtYXhpbWl6ZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3cubWF4aW1pemVkKSB7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLnJlc3RvcmVTYXZlZFBvc2l0aW9uKHRoaXMud2luZG93KTtcbiAgICAgIHRoaXMud2luZG93Lm1heGltaXplZCA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24odGhpcy53aW5kb3cpO1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZSh0aGlzLndpbmRvdyk7XG4gICAgfVxuICB9O1xuXG4gIGNsb3NlID0gKCkgPT4ge1xuICAgIHRoaXMuZGVza3RvcEN0cmwuY2xvc2VXaW5kb3codGhpcy53aW5kb3cpO1xuICB9O1xuXG4gIHdpbmRvd1RpdGxlTW91c2VEb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKHRoaXMud2luZG93Lm1heGltaXplZCkgcmV0dXJuO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy50aXRsZUJhciA9IGV2ZW50LnNyY0VsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfHwgZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMueCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldExlZnQ7XG4gICAgdGhpcy55ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0ub2Zmc2V0VG9wO1xuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuc2NyZWVuWCAtIHRoaXMueDtcbiAgICB0aGlzLnN0YXJ0WSA9IGV2ZW50LnNjcmVlblkgLSB0aGlzLnk7XG5cbiAgICB0aGlzLmRlc2t0b3BDdHJsLnNhdmVQb3NpdGlvbih0aGlzLndpbmRvdyk7XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlTW92ZSk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMubW91c2VVcCk7XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVFdmVudEhhbmRsZXIpO1xuICB9O1xuXG4gIHByZXZpb3VzVmlldyA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuY2FuTmF2aWdhdGUoKSB8fCB0aGlzLmRpc2FibGVQcmV2aW91cykgcmV0dXJuO1xuICAgIHZhciBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICB2YXIgYWN0aXZlVmlld0luZGV4ID0gdGhpcy53aW5kb3cudmlld3MuaW5kZXhPZihhY3RpdmVWaWV3KTtcbiAgICBpZiAodGhpcy5jYW5jZWxFZGl0aW5nT25OYXZpZ2F0aW9uKSBhY3RpdmVWaWV3LmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIGFjdGl2ZVZpZXcuYWN0aXZlKGZhbHNlKTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1thY3RpdmVWaWV3SW5kZXggLSAxXS5hY3RpdmUodHJ1ZSk7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICBuZXh0VmlldyA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuY2FuTmF2aWdhdGUoKSB8fCB0aGlzLmRpc2FibGVOZXh0KSByZXR1cm47XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIHZhciBhY3RpdmVWaWV3SW5kZXggPSB0aGlzLndpbmRvdy52aWV3cy5pbmRleE9mKGFjdGl2ZVZpZXcpO1xuICAgIGlmICh0aGlzLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24pIGFjdGl2ZVZpZXcuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgYWN0aXZlVmlldy5hY3RpdmUoZmFsc2UpO1xuICAgIHRoaXMud2luZG93LnZpZXdzW2FjdGl2ZVZpZXdJbmRleCArIDFdLmFjdGl2ZSh0cnVlKTtcbiAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpO1xuICB9O1xuXG4gIHNhdmUgPSAoKSA9PiB7XG4gICAgdGhpcy5kYXRhQ29udGV4dC5zYXZlKCk7XG4gIH07XG5cbiAgcmV2ZXJ0ID0gKCkgPT4ge1xuICAgIHRoaXMuZGF0YUNvbnRleHQucmV2ZXJ0KCk7XG4gIH07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5DbG9zZUZuID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRPcHRpb25zKCkuY2FuQ2xvc2VGbjtcbiAgICB0aGlzLmNhbk5hdmlnYXRlRm4gPSB0aGlzLmRlc2t0b3BDdHJsLmdldE9wdGlvbnMoKS5jYW5OYXZpZ2F0ZUZuO1xuICAgIHRoaXMuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbiA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0T3B0aW9ucygpLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb247XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcblxuICAgIHRoaXMudHJ1V2luZG93RXZlbnRIYW5kbGVyLm9uQWRkVmlldygpLnN1YnNjcmliZSgod2luZGlvd0FkZFZpZXdFdmVudDogVHJ1V2luZG93QWRkVmlld0V2ZW50QXJncykgPT4ge1xyXG4gICAgICB0aGlzLmFkZFZpZXcod2luZGlvd0FkZFZpZXdFdmVudCk7XHJcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlTW92ZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMubW91c2VVcCk7XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVFdmVudEhhbmRsZXIpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGVza3RvcC13aW5kb3ctY29udGFpbmVyXCJcclxuICAgICBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LWFjdGl2ZSc6IHdpbmRvdy5hY3RpdmUsICdkZXNrdG9wLXdpbmRvdy1tYXhpbWl6ZWQnOiB3aW5kb3cubWF4aW1pemVkfVwiXHJcbiAgICAgW25nU3R5bGVdPVwieyd6LWluZGV4Jzogd2luZG93LnpJbmRleCwgJ3RvcCc6IHdpbmRvdy50b3AsICdsZWZ0Jzogd2luZG93LmxlZnQsICdyaWdodCc6IHdpbmRvdy5yaWdodCwgJ2JvdHRvbSc6IHdpbmRvdy5ib3R0b20sICdoZWlnaHQnOiB3aW5kb3cuaGVpZ2h0LCAnd2lkdGgnOiB3aW5kb3cud2lkdGgsICdtaW4taGVpZ2h0Jzogd2luZG93Lm1pbkhlaWdodCwgJ21pbldpZHRoJzogd2luZG93Lm1pbldpZHRofVwiXHJcbiAgICAgW3N0eWxlLm9mZnNldExlZnQucHhdPVwieFwiXHJcbiAgICAgW3N0eWxlLm9mZnNldFRvcC5weF09XCJ5XCJcclxuICAgICAobW91c2Vkb3duKT1cImFjdGl2YXRlKClcIlxyXG4gICAgIFtoaWRkZW5dPVwid2luZG93Lm1pbmltaXplZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1oZWFkZXJcIiBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LW1heGltaXplZCc6IHdpbmRvdy5tYXhpbWl6ZWQsICdkZXNrdG9wLXdpbmRvdy1vcGFjaXR5JzogIXdpbmRvdy5hY3RpdmV9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci13aW5kb3ctbmF2aWdhdGlvblwiPlxyXG4gICAgICA8dHJ1LXRvb2xiYXI+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcHJldmlvdXMtaWNvbidcIiBbdG9vbHRpcF09XCInR28gQmFjayBPbmUgVmlldyAtIFtBbHQgKyBMZWZ0XSdcIiAoY2xpY2spPVwicHJldmlvdXNWaWV3KClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1uZXh0LWljb24nXCIgW3Rvb2x0aXBdPVwiJ0dvIEZvcndhcmQgT25lIFZpZXcgLSBbQWx0ICsgUmlnaHRdJ1wiIChjbGljayk9XCJuZXh0VmlldygpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItc2F2ZS1pY29uJ1wiIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctc2F2ZS1pY29uXCIgW25nQ2xhc3NdPVwieydkZXNrdG9wLXdpbmRvdy1zYXZlLWljb24taGFzLWNoYW5nZXMnOiBoYXNDaGFuZ2VzKCl9XCIgW3Rvb2x0aXBdPVwiJ1NhdmUgLSBbQ3RybCArIFNdJ1wiIChjbGljayk9XCJzYXZlKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1yZXZlcnQtaWNvbidcIiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJldmVydC1pY29uXCIgW25nQ2xhc3NdPVwieydkZXNrdG9wLXdpbmRvdy1yZXZlcnQtaWNvbi1oYXMtY2hhbmdlcyc6IGhhc0NoYW5nZXMoKX1cIiBbdG9vbHRpcF09XCInUmV2ZXJ0IC0gW0N0cmwgKyBTaGlmdCArIFJdJ1wiIChjbGljayk9XCJyZXZlcnQoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1zZXBhcmF0b3I+PC90cnUtdG9vbGJhci1zZXBhcmF0b3I+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy10aXRsZVwiIChkYmxjbGljayk9XCJtYXhpbWl6ZSgpXCIgKG1vdXNlZG93bik9XCJ3aW5kb3dUaXRsZU1vdXNlRG93bigkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkZXNrdG9wLWNsaWNrLXRocm91Z2hcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVza3RvcC10ZXh0XCI+e3t3aW5kb3cudGl0bGV9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRlc2t0b3Atd2luZG93LWFjdGlvblwiPlxyXG4gICAgICA8dHJ1LXRvb2xiYXI+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItbWluaW1pemUtaWNvbidcIiBbdG9vbHRpcF09XCInTWluaW1pemUgLSBbQWx0ICsgTl0nXCIgKGNsaWNrKT1cIm1pbmltaXplKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbaWNvbl09XCIndHJ1LXRvb2xiYXItbWF4aW1pemUtaWNvbidcIiBbdG9vbHRpcF09XCInR28gRm9yd2FyZCBPbmUgVmlldyAtIFtBbHQgKyBSaWdodF0nXCIgKGNsaWNrKT1cIm1heGltaXplKClcIiBjbGFzcz1cIm1heGltaXplXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiAqbmdJZj1cIndpbmRvdy5tYXhpbWl6ZWRcIiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmVzdG9yZS1pY29uJ1wiIFt0b29sdGlwXT1cIidHbyBGb3J3YXJkIE9uZSBWaWV3IC0gW0FsdCArIFJpZ2h0XSdcIiAoY2xpY2spPVwibWF4aW1pemUoKVwiIGNsYXNzPVwibWF4aW1pemVcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1jbG9zZS1pY29uJ1wiIFt0b29sdGlwXT1cIidDbG9zZSBXaW5kb3cgLSBbQWx0ICsgU0hJRlQgKyBYXSdcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8L3RydS10b29sYmFyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGZpZWxkc2V0IG5nLWRpc2FibGVkPVwiIXdpbmRvdy5hY3RpdmVcIiBjbGFzcz1cImRlc2t0b3Atd2luZG93LWZpZWxkc2V0XCIgW25nQ2xhc3NdPVwieydkZXNrdG9wLXdpbmRvdy1vcGFjaXR5JzogIXdpbmRvdy5hY3RpdmV9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVza3RvcC13aW5kb3ctY29udGVudFwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2aWV3IG9mIHdpbmRvdy52aWV3c1wiPlxyXG4gICAgICAgIDx0cnUtZGVza3RvcC12aWV3IFt2aWV3XT1cInZpZXdcIiBbaGlkZGVuXT1cIiF2aWV3LmFjdGl2ZVwiPjxuZy10ZW1wbGF0ZT48L25nLXRlbXBsYXRlPjwvdHJ1LWRlc2t0b3Atdmlldz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2ZpZWxkc2V0PlxyXG4gIDx0cnUtZGVza3RvcC1zdGF0dXNiYXI+PC90cnUtZGVza3RvcC1zdGF0dXNiYXI+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1ud1wiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIidudydcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1uZVwiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIiduZSdcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1zd1wiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIidzdydcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1zZVwiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIidzZSdcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1uXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ24nXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtc1wiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIidzJ1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLXdcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCIndydcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1lXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ2UnXCI+PC9zcGFuPlxyXG48L2Rpdj5cclxuIl19