info-library 2.14.49-beta.2 → 2.14.50

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.
@@ -100,7 +100,7 @@ export class InfoTopMenuComponent {
100
100
  this.loading = false;
101
101
  this.menu = [];
102
102
  this.openSubmenu = '';
103
- this.menuAtivo = 'Dashboard';
103
+ this.menuAtivo = 'Inicio';
104
104
  }
105
105
  ngOnInit() {
106
106
  if (!this._authentication.isLogged() || this.api == null)
@@ -162,4 +162,4 @@ export class InfoTopMenuComponent {
162
162
  }], onchangestate: [{
163
163
  type: Output
164
164
  }] }); })();
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2xheW91dHMvdG9wbWVudS90b3BtZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvbGF5b3V0cy90b3BtZW51L3RvcG1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztJQ0g3Qiw0QkFBNkU7SUFBM0IsZ05BQVMsZUFBQSx5QkFBZSxDQUFBLElBQUM7SUFBRSxZQUEwQjs7SUFBQSxpQkFBSTs7O0lBQWxGLHlDQUF3QjtJQUE0QixlQUEwQjtJQUExQixnRUFBMEI7Ozs7SUFPM0YsMEJBQTRCLFdBQUE7SUFDSSw0TkFBUyx1QkFBZSxTQUFDLGVBQUEsMEJBQWUsQ0FBQSxJQUFFO0lBQUUsWUFBeUI7O0lBQUEsaUJBQUksRUFBQTs7O0lBQWxHLGVBQXdCO0lBQXhCLDBDQUF3QjtJQUE2QyxlQUF5QjtJQUF6Qix1REFBeUI7Ozs7SUFOakgsNkJBQW9DO0lBQ2hDLDRC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LEtBQUssQ0FBQztRQUVwQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFJO1FBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOzsyR0FwRVEsb0JBQW9CO3NHQUFwQixvQkFBb0I7UUNiakMsMkJBQUs7UUFDRCxtRUFnQks7UUFDVCxpQkFBTTs7UUFqQkcsZUFBVTtRQUFWLCtCQUFVOzt1RkRZTixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDSSxjQUFjO2lSQU1mLEdBQUc7a0JBQVgsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNJLGFBQWE7a0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0xhc3RTZWFyY2hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL2xhc3Qtc2VhcmNoLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLXRvcG1lbnUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcG1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9wbWVudS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvVG9wTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBcclxuICAgIEBJbnB1dCgpIGFwaTogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZDogc3RyaW5nID0gJ0dldE1lbnUnO1xyXG4gICAgQE91dHB1dCgpIG9uY2hhbmdlc3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbWVudTogYW55ID0gW107XHJcbiAgICBvcGVuU3VibWVudTogc3RyaW5nID0gJyc7XHJcbiAgICBtZW51QXRpdm86IHN0cmluZyA9ICdEYXNoYm9hcmQnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RhdGFBY2Vzc1NlcnZpY2U6IEluZm9EYXRhU2VydmljZSwgcHJpdmF0ZSBfYXV0aGVudGljYXRpb246IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UsIFxyXG4gICAgICAgIHByaXZhdGUgX2xhc3RTZWFyY2g6IEluZm9MYXN0U2VhcmNoTW9kZWwsIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBcclxuICAgICAgICBwdWJsaWMgX3Nlc3Npb246IEluZm9TZXNzaW9uTW9kZWwsIHB1YmxpYyBfcGxhdGZvcm06IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYXV0aGVudGljYXRpb24uaXNMb2dnZWQoKSB8fCB0aGlzLmFwaSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3V4YycgKyB0aGlzLl9wbGF0Zm9ybS5Db25maWcudXgpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnUgPSByLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGxhdGZvcm0uTWVudSA9IHIuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbi5kZWZpbmVQYWdpbmFBdGl2YSh0aGlzLl9yb3V0ZXIudXJsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlKGU6IEV2ZW50LCBtZW51SXRlbTogYW55KSB7XHJcblxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgaWYgKCFtZW51SXRlbS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICghbWVudUl0ZW0uQWN0aXZlKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWVudS5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudVtpXS5BY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbWVudUl0ZW0uQWN0aXZlID0gIW1lbnVJdGVtLkFjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICBhY2Nlc3MobWVudTogc3RyaW5nKXtcclxuICAgICAgICB0aGlzLm1lbnVBdGl2byA9IG1lbnU7XHJcbiAgICAgICAgdGhpcy5vcGVuU3VibWVudSA9ICcnO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMucmVzZXRMYXN0U2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlU3VibWVudShtZW51KSB7XHJcbiAgICAgICAgdGhpcy5vcGVuU3VibWVudSA9IHRoaXMub3BlblN1Ym1lbnUgPT0gbWVudSA/ICcnIDogbWVudTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldExhc3RTZWFyY2goKXtcclxuICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLm1vZGVsID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLnVybCA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVNpZGViYXIoKSB7XHJcbiAgICAgICAgdGhpcy5vbmNoYW5nZXN0YXRlLmVtaXQoKTtcclxuICAgIH1cclxufSIsIjxuYXY+XHJcbiAgICA8dWwgKm5nSWY9XCJtZW51XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtIG9mIG1lbnVcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBtZW51QXRpdm8gPT0gbS5UaXRsZSwgJ2Rpc2FibGVkJzogIW0uRW5hYmxlZCwgJ29wZW5lZCc6IG9wZW5TdWJtZW51ID09IG0uVGl0bGUgfVwiPlxyXG4gICAgICAgICAgICA8YSAqbmdJZj1cIm0uU3ViID09IG51bGxcIiBbcm91dGVyTGlua109XCJtLlJvdXRpbmdcIiAoY2xpY2spPVwiYWNjZXNzKG0uVGl0bGUpXCIgPnt7IG0uVGl0bGUgfCB0cmFuc2xhdGUgfX0gPC9hPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm0uU3ViICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJ0b2dnbGVTdWJtZW51KG0uVGl0bGUpXCIgPnt7IG0uVGl0bGUgfCB0cmFuc2xhdGUgfX0gPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItbWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzIG9mIG0uU3ViXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJzLlJvdXRpbmdcIiAoY2xpY2spPVwiY2hhbmdlU2lkZWJhcigpO2FjY2VzcyhtLlRpdGxlKTtcIiA+e3sgcy5UaXRsZSB8IHRyYW5zbGF0ZSB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG48L25hdj4iXX0=
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wbWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2xheW91dHMvdG9wbWVudS90b3BtZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvbGF5b3V0cy90b3BtZW51L3RvcG1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7OztJQ0g3Qiw0QkFBNkU7SUFBM0IsZ05BQVMsZUFBQSx5QkFBZSxDQUFBLElBQUM7SUFBRSxZQUEwQjs7SUFBQSxpQkFBSTs7O0lBQWxGLHlDQUF3QjtJQUE0QixlQUEwQjtJQUExQixnRUFBMEI7Ozs7SUFPM0YsMEJBQTRCLFdBQUE7SUFDSSw0TkFBUyx1QkFBZSxTQUFDLGVBQUEsMEJBQWUsQ0FBQSxJQUFFO0lBQUUsWUFBeUI7O0lBQUEsaUJBQUksRUFBQTs7O0lBQWxHLGVBQXdCO0lBQXhCLDBDQUF3QjtJQUE2QyxlQUF5QjtJQUF6Qix1REFBeUI7Ozs7SUFOakgsNkJBQW9DO0lBQ2hDLDRC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LEtBQUssQ0FBQztRQUVwQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFJO1FBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOzsyR0FwRVEsb0JBQW9CO3NHQUFwQixvQkFBb0I7UUNiakMsMkJBQUs7UUFDRCxtRUFnQks7UUFDVCxpQkFBTTs7UUFqQkcsZUFBVTtRQUFWLCtCQUFVOzt1RkRZTixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDSSxjQUFjO2lSQU1mLEdBQUc7a0JBQVgsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNJLGFBQWE7a0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0xhc3RTZWFyY2hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL2xhc3Qtc2VhcmNoLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLXRvcG1lbnUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RvcG1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9wbWVudS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvVG9wTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBcclxuICAgIEBJbnB1dCgpIGFwaTogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZDogc3RyaW5nID0gJ0dldE1lbnUnO1xyXG4gICAgQE91dHB1dCgpIG9uY2hhbmdlc3RhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbWVudTogYW55ID0gW107XHJcbiAgICBvcGVuU3VibWVudTogc3RyaW5nID0gJyc7XHJcbiAgICBtZW51QXRpdm86IHN0cmluZyA9ICdJbmljaW8nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2RhdGFBY2Vzc1NlcnZpY2U6IEluZm9EYXRhU2VydmljZSwgcHJpdmF0ZSBfYXV0aGVudGljYXRpb246IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UsIFxyXG4gICAgICAgIHByaXZhdGUgX2xhc3RTZWFyY2g6IEluZm9MYXN0U2VhcmNoTW9kZWwsIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBcclxuICAgICAgICBwdWJsaWMgX3Nlc3Npb246IEluZm9TZXNzaW9uTW9kZWwsIHB1YmxpYyBfcGxhdGZvcm06IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG4gICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYXV0aGVudGljYXRpb24uaXNMb2dnZWQoKSB8fCB0aGlzLmFwaSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3V4YycgKyB0aGlzLl9wbGF0Zm9ybS5Db25maWcudXgpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFBY2Vzc1NlcnZpY2VcclxuICAgICAgICAgICAgLmdldCh0aGlzLmFwaSwgdGhpcy5tZXRob2QpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5zdWNjZXNzKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1lbnUgPSByLmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGxhdGZvcm0uTWVudSA9IHIuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvbi5kZWZpbmVQYWdpbmFBdGl2YSh0aGlzLl9yb3V0ZXIudXJsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlKGU6IEV2ZW50LCBtZW51SXRlbTogYW55KSB7XHJcblxyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgaWYgKCFtZW51SXRlbS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICghbWVudUl0ZW0uQWN0aXZlKVxyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWVudS5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgICAgIHRoaXMubWVudVtpXS5BY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgbWVudUl0ZW0uQWN0aXZlID0gIW1lbnVJdGVtLkFjdGl2ZTtcclxuICAgIH1cclxuXHJcbiAgICBhY2Nlc3MobWVudTogc3RyaW5nKXtcclxuICAgICAgICB0aGlzLm1lbnVBdGl2byA9IG1lbnU7XHJcbiAgICAgICAgdGhpcy5vcGVuU3VibWVudSA9ICcnO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMucmVzZXRMYXN0U2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlU3VibWVudShtZW51KSB7XHJcbiAgICAgICAgdGhpcy5vcGVuU3VibWVudSA9IHRoaXMub3BlblN1Ym1lbnUgPT0gbWVudSA/ICcnIDogbWVudTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldExhc3RTZWFyY2goKXtcclxuICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLm1vZGVsID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sYXN0U2VhcmNoLnVybCA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZVNpZGViYXIoKSB7XHJcbiAgICAgICAgdGhpcy5vbmNoYW5nZXN0YXRlLmVtaXQoKTtcclxuICAgIH1cclxufSIsIjxuYXY+XHJcbiAgICA8dWwgKm5nSWY9XCJtZW51XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtIG9mIG1lbnVcIiBbbmdDbGFzc109XCJ7ICdhY3RpdmUnOiBtZW51QXRpdm8gPT0gbS5UaXRsZSwgJ2Rpc2FibGVkJzogIW0uRW5hYmxlZCwgJ29wZW5lZCc6IG9wZW5TdWJtZW51ID09IG0uVGl0bGUgfVwiPlxyXG4gICAgICAgICAgICA8YSAqbmdJZj1cIm0uU3ViID09IG51bGxcIiBbcm91dGVyTGlua109XCJtLlJvdXRpbmdcIiAoY2xpY2spPVwiYWNjZXNzKG0uVGl0bGUpXCIgPnt7IG0uVGl0bGUgfCB0cmFuc2xhdGUgfX0gPC9hPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm0uU3ViICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJ0b2dnbGVTdWJtZW51KG0uVGl0bGUpXCIgPnt7IG0uVGl0bGUgfCB0cmFuc2xhdGUgfX0gPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItbWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzIG9mIG0uU3ViXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJzLlJvdXRpbmdcIiAoY2xpY2spPVwiY2hhbmdlU2lkZWJhcigpO2FjY2VzcyhtLlRpdGxlKTtcIiA+e3sgcy5UaXRsZSB8IHRyYW5zbGF0ZSB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG48L25hdj4iXX0=
@@ -89,13 +89,13 @@ export class InfoAuthenticationService {
89
89
  if (this._sessao.TempoInatividade == null || this._sessao.TempoInatividade <= 0)
90
90
  return;
91
91
  let tempoSessao = this._sessao.TempoInatividade;
92
- localStorage.setItem('ms', new Date().valueOf().toString());
92
+ this._utilities.setLocalStorage('ms', new Date().valueOf().toString());
93
93
  this._sessionTimeInterval = setInterval(() => {
94
94
  if (tempoSessao > 0) {
95
95
  tempoSessao--;
96
96
  return;
97
97
  }
98
- let tempoRestante = Math.round(this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(localStorage.getItem('ms'))) / 1000));
98
+ let tempoRestante = Math.round(this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(this._utilities.getLocalStorage('ms'))) / 1000));
99
99
  if (!isNaN(tempoRestante) && tempoRestante > 0) {
100
100
  tempoSessao = tempoRestante;
101
101
  return;
@@ -115,7 +115,7 @@ export class InfoAuthenticationService {
115
115
  width: '500px'
116
116
  });
117
117
  ref.afterClosed().subscribe((r) => {
118
- if (r != null && (r.modalAction == InfoModalAction.Yes || (this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(localStorage.getItem('ms'))) / 1000)) > 0)) {
118
+ if (r != null && (r.modalAction == InfoModalAction.Yes || (this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(this._utilities.getLocalStorage('ms'))) / 1000)) > 0)) {
119
119
  this._sessionActive = true;
120
120
  this.refreshSessionTime();
121
121
  }
@@ -277,8 +277,8 @@ export class InfoAuthenticationService {
277
277
  }
278
278
  removeSessao() {
279
279
  Object.keys(localStorage).forEach((key) => {
280
- if (!key.includes('Dashboard') && !key.includes('cols'))
281
- delete localStorage[key];
280
+ if (!key.includes('Dashboard') && !key.includes('cols') && !key.includes('_'))
281
+ localStorage.removeItem(key);
282
282
  });
283
283
  }
284
284
  definePaginaAtiva(url) {
@@ -289,8 +289,8 @@ export class InfoAuthenticationService {
289
289
  let aux = url.substring(1).replace(/-/g, '').toLowerCase().split('/');
290
290
  let tituloMenu = aux.length > 0 ? aux[0].toString() : url;
291
291
  let parametrosUrl = url.split('/').slice(2);
292
- if (tituloMenu.indexOf('ashboard') > -1)
293
- this._plataforma.PaginaAtiva = { Icone: 'widgets', Titulo: 'Dashboard' };
292
+ if (tituloMenu.indexOf('nicio') > -1)
293
+ this._plataforma.PaginaAtiva = { Icone: 'widgets', Titulo: 'Inicio' };
294
294
  else {
295
295
  let item = this._plataforma.Menu.filter(m => m.Title.toLowerCase().indexOf(tituloMenu) > -1);
296
296
  let subTitulo = "";
@@ -386,4 +386,4 @@ export class RefreshSessionTimeModalComponent {
386
386
  `
387
387
  }]
388
388
  }], function () { return [{ type: i6.MatDialogRef }]; }, null); })();
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBNEQsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUsvQyxNQUFNLE9BQU8seUJBQXlCO0lBSWxDLFlBQW9CLE9BQWUsRUFDZixLQUFpQixFQUNqQixPQUF5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IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb0xvZ2luTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9sb2dpbi5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0Zvcm1Qcm9wTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9mb3JtLXByb3AubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gJy4uL2VudW0nO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlscy91dGlsaXRpZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvblRpbWVJbnRlcnZhbDtcclxuICAgIHByaXZhdGUgX3Nlc3Npb25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfc2Vzc2FvOiBJbmZvU2Vzc2lvbk1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3BsYXRhZm9ybWE6IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZGF0YVNlcnZpY2U6IEluZm9EYXRhU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2csIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdXRpbGl0aWVzOiBVdGlsaXRpZXMsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBJbmZvVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90aXRsZTogVGl0bGUpIHsgfVxyXG5cclxuICAgIGdldFNlc3NhbygpOiBJbmZvU2Vzc2lvbk1vZGVse1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW87XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGxhdGZvcm0oKTogSW5mb1BsYXRmb3JtTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wbGF0YWZvcm1hO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHJvdXRlclN0YXRlU25hcHNob3Q6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0xvZ2dlZCgpIHx8ICF0aGlzLl9zZXNzaW9uQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXJsID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5kYXRhWydVUkwnXSB8fCByb3V0ZXJTdGF0ZVNuYXBzaG90LnVybDtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGVmaW5lUGFnaW5hQXRpdmEodXJsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbih1cmwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsID09ICcvJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbih1cmwpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCdub3ZvJykgPiAtMSAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHVybCwgJ25ldycpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCd2aXN1YWxpemFyJykgPCAtMSAmJiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSAhPSBudWxsICYmICF0aGlzLmhhc1Blcm1pc3Npb24odXJsLCAnZWRpdCcpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1pc3NhbyA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZGF0YVsnUGVybWlzc2FvJ107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzYW8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtcyA9IChwZXJtaXNzYW9bMl0gfHwgJycpLnJlcGxhY2UoUmVnRXhwKC9cXHsoLio/KVxcfS8sICdnJyksIChfLCBwKSA9PiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtc1twXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhd2FpdCB0aGlzLl9kYXRhU2VydmljZS5nZXQocGVybWlzc2FvWzBdLCBwZXJtaXNzYW9bMV0sIHBhcmFtcykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuc3VjY2VzcyB8fCByLmRhdGEgIT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNMb2dnZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLl91dGlsaXRpZXMuZ2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXkpICE9IG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHRyZWZyZXNoU2Vzc2lvblRpbWUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zZXNzaW9uQWN0aXZlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSA9PSBudWxsIHx8IHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIDw9IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgdGVtcG9TZXNzYW8gPSB0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbXMnLCBuZXcgRGF0ZSgpLnZhbHVlT2YoKS50b1N0cmluZygpKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLl9zZXNzaW9uVGltZUludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKHRlbXBvU2Vzc2FvID4gMCkgIHtcclxuICAgICAgICAgICAgICAgIHRlbXBvU2Vzc2FvLS07XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCB0ZW1wb1Jlc3RhbnRlID0gTWF0aC5yb3VuZCh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSAtICgobmV3IERhdGUoKS52YWx1ZU9mKCkgLSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbXMnKSkpIC8gMTAwMCkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFpc05hTih0ZW1wb1Jlc3RhbnRlKSAmJiB0ZW1wb1Jlc3RhbnRlID4gMCl7XHJcbiAgICAgICAgICAgICAgICB0ZW1wb1Nlc3NhbyA9IHRlbXBvUmVzdGFudGU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25BY3RpdmUgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc05hTih0ZW1wb1Jlc3RhbnRlKSlcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgZWxzZSB0aGlzLnNob3dNZXNzYWdlKCk7XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblx0fVxyXG5cclxuICAgIHNob3dNZXNzYWdlKCl7XHJcbiAgICAgICAgbGV0IHJlZiA9IHRoaXMuX21vZGFsLm9wZW4oUmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4J1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAociAhPSBudWxsICYmIChyLm1vZGFsQWN0aW9uID09IEluZm9Nb2RhbEFjdGlvbi5ZZXMgfHwgKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIC0gKChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAtIHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcycpKSkgLyAxMDAwKSkgPiAwKSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbih1c3VhcmlvOiBzdHJpbmcsIHNlbmhhOiBzdHJpbmcsIHJlQ2FwdGNoYVRva2VuOiBzdHJpbmcgPSBudWxsLCBjb2RpZ28yRkE6IHN0cmluZyA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9hdXRlbnRpY2FyJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQoeyBVc3VhcmlvOiB1c3VhcmlvLCBTZW5oYTogc2VuaGEsIFJlQ2FwdGNoYVRva2VuOiByZUNhcHRjaGFUb2tlbiwgQ29kaWdvMkZBOiBjb2RpZ28yRkEgfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyRGVmYXVsdCgpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuU3VjY2VzcyAmJiByLkRhdGEgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhLlRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRyb2NhckVtcHJlc2EodXN1YXJpbzogc3RyaW5nLCBlbXByZXNhSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL3Ryb2NhcmVtcHJlc2EnLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IEVtcHJlc2FJZDogZW1wcmVzYUlkIH0pLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRyb2NhclVuaWRhZGUodXN1YXJpbzogc3RyaW5nLCBlbXByZXNhSWQ6IG51bWJlciwgdW5pZGFkZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby90cm9jYXJ1bmlkYWRlJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQoeyBFbXByZXNhSWQ6IGVtcHJlc2FJZCwgVW5pZGFkZUlkOiB1bmlkYWRlSWQgfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsb25hcih1c3VhcmlvOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9jbG9uYXInLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IFVzdWFyaW86IHVzdWFyaW8gfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzTG9nZ2VkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5faHR0cC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL0xvZ291dCcsIG51bGwsIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2xvZ2luJykudGhlbihyID0+IHsgbG9jYXRpb24ucmVsb2FkKCk7IH0pOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdsb2dpbicpLnRoZW4ociA9PiB7IGxvY2F0aW9uLnJlbG9hZCgpOyB9KTsgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9ucyh1cmw6IHN0cmluZywgbG9nQXRpdmlkYWRlOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL2dldHBlcm1pc3Nhbz8nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KCd1cmw9JyArIHVybCArICcmbG9nYXRpdmlkYWRlPScgKyBsb2dBdGl2aWRhZGUudG9TdHJpbmcoKSkpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUcm9jYVNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9Ucm9jYXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVjdXBlcmFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1JlY3VwZXJhclNlbmhhJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQobW9kZWwpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXNldGFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Jlc2V0YXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2dpblJlc291cmNlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS9hcHAvR2V0TG9naW5SZXNvdXJjZXMnLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlckRlZmF1bHQoKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1Blcm1pc3Npb24odXJsOiBzdHJpbmcsIGtleUZ1bmN0aW9uOiBzdHJpbmcgPSAndmlldycpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKHVybCA9PSAnLycgJiYga2V5RnVuY3Rpb24gPT0gJ3ZpZXcnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHVybEdlbmVyaWNhID0gdGhpcy5nZXRVcmxHZW5lcmljYSh1cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGtleUZ1bmN0aW9uICYmIHMuQWNlc3NvKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9uKHVybDogc3RyaW5nLCBsb2dBdGl2aWRhZGU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG5cclxuICAgICAgICBsZXQgdXJsR2VuZXJpY2EgPSB0aGlzLmdldFVybEdlbmVyaWNhKHVybCk7XHJcbiAgICAgICAgbGV0IGNvbnRlbVVybCA9IHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSk7XHJcbiAgICAgICAgaWYgKGNvbnRlbVVybCkge1xyXG4gICAgICAgICAgICBpZiAobG9nQXRpdmlkYWRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGFTZXNzYW8odXJsKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmV0LnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9ucyh1cmxHZW5lcmljYSwgbG9nQXRpdmlkYWRlKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldC5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMuZmlsdGVyKHMgPT4gcy5VUkwgPT0gaXRlbS5VUkwgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGl0ZW0uQ2hhdmVGdW5jaW9uYWxpZGFkZSkubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5TZXNzaW9uS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzYW8pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYVNlc3Nhbyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby92YWxpZGFzZXNzYW8/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCgndXJsPScgKyB1cmwpKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwociA9PT0gdHJ1ZSwgJycsIHIpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVNlc3NhbygpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWtleS5pbmNsdWRlcygnRGFzaGJvYXJkJykgJiYgIWtleS5pbmNsdWRlcygnY29scycpKSBcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBsb2NhbFN0b3JhZ2Vba2V5XTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkZWZpbmVQYWdpbmFBdGl2YSh1cmwpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuX3BsYXRhZm9ybWEuTWVudSA9PSBudWxsIHx8IHVybCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgYXV4OiBzdHJpbmdbXSA9IHVybC5zdWJzdHJpbmcoMSkucmVwbGFjZSgvLS9nLCAnJykudG9Mb3dlckNhc2UoKS5zcGxpdCgnLycpO1xyXG4gICAgICAgIGxldCB0aXR1bG9NZW51OiBzdHJpbmcgPSBhdXgubGVuZ3RoID4gMCA/IGF1eFswXS50b1N0cmluZygpIDogdXJsO1xyXG4gICAgICAgIGxldCBwYXJhbWV0cm9zVXJsOiBzdHJpbmdbXSA9IHVybC5zcGxpdCgnLycpLnNsaWNlKDIpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aXR1bG9NZW51LmluZGV4T2YoJ2FzaGJvYXJkJykgPiAtMSlcclxuICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6ICd3aWRnZXRzJywgVGl0dWxvOiAnRGFzaGJvYXJkJyB9OyAgXHJcblxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgaXRlbTogYW55ID0gdGhpcy5fcGxhdGFmb3JtYS5NZW51LmZpbHRlcihtID0+IG0uVGl0bGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRpdHVsb01lbnUpID4gLTEpO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCBzdWJUaXR1bG8gPSBcIlwiO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtZXRyb3NVcmwubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0d1aWQocGFyYW1ldHJvc1VybFtpXSkgJiYgaXNOYU4ocGFyc2VGbG9hdChwYXJhbWV0cm9zVXJsW2ldKSkpXHJcbiAgICAgICAgICAgICAgICAgICAgc3ViVGl0dWxvICs9IFwiIC0gXCIgKyB0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMudG9QYXNjYWxDYXNlKHBhcmFtZXRyb3NVcmxbaV0pKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0gIT0gbnVsbCAmJiBpdGVtLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BsYXRhZm9ybWEuUGFnaW5hQXRpdmEgPSB7IEljb25lOiBpdGVtWzBdLkljb24sIFRpdHVsbzogaXRlbVswXS5UaXRsZSB9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGl0bGUuc2V0VGl0bGUoYCR7dGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy50aXRsZSB8fCBcIlBsYXRhZm9ybWFcIil9IC0gJHt0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKGl0ZW1bMF0uVGl0bGUpfWArIHN1YlRpdHVsbyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6ICdzZWN1cml0eScsIFRpdHVsbzogdGhpcy5fcGxhdGFmb3JtYS5Db25maWcudGl0bGUgfHwgJ1BsYXRhZm9ybWEnIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFVybEdlbmVyaWNhKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmV0b3JubyA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHVybFBhcnRzOiBzdHJpbmdbXSA9IHVybC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXJsUGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCFpc05hTihwYXJzZUZsb2F0KHVybFBhcnRzW2ldKSkgfHwgdGhpcy5pc0d1aWQodXJsUGFydHNbaV0pIHx8IHVybFBhcnRzW2ldLnRvTG93ZXJDYXNlKCkgPT0gJ25vdm8nKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldG9ybm8gKz0gJy8nICsgdXJsUGFydHNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXRvcm5vLnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVycm9ySGFuZGxpbmcoZTogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlSW5wdXQ8SW5mb0xvZ2luTW9kZWw+IHtcclxuICAgICAgICBpZiAoZS5zdGF0dXMgPT0gNDAxKSBcclxuICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAoZS5zdGF0dXMgPT0gNTAwKVxyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnNTAwJyk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGUuZXJyb3IgIT0gbnVsbCAmJiBlLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBvZihuZXcgSW5mb0xvZ2luTW9kZWwoZmFsc2UsIGUuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pKTtcclxuXHJcbiAgICAgICAgZWxzZSByZXR1cm4gb2YobmV3IEluZm9Mb2dpbk1vZGVsKGZhbHNlLCAnSG91dmUgdW0gcHJvYmxlbWEgZSBuw6NvIGZvaSBwb3Nzw612ZWwgY29uZWN0YXInKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0d1aWQodmFsdWUpIDogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh2YWx1ZSB8fCAnJykubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0b1Bhc2NhbENhc2UodmFsdWU6IHN0cmluZyk6IHN0cmluZ3tcclxuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvKF5cXHd8LVxcdykvZywgKHcxLCB3MiwgaSkgPT4gaSA9PSAwID8gdzEudG9VcHBlckNhc2UoKSA6IHcxWzFdLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGluZm8tbW9kYWwgbW9kYWx0aXRsZT1cIkluYXRpdmlkYWRlXCIgKG9uc2F2ZSk9XCJhdGl2byh0cnVlKVwiIGxhYmVsc3VibWl0PVwiU2ltXCIgbGFiZWxjYW5jZWw9XCIoe3sgdGltZSB9fSkge3sgJ05hbycgfCB0cmFuc2xhdGUgfX1cIj5cclxuICAgICAgICAgICAgPGxhYmVsIHN0eWxlPVwiZm9udC1zaXplOjEzMCVcIj57eyAnVm9jZUFpbmRhRXN0YVV0aWxpemFuZG9QbGF0YWZvcm1hJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcblx0XHQ8L2luZm8tbW9kYWw+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQge1xyXG4gICAgdGltZSA9IDE1O1xyXG4gICAgaW50ZXJ2YWw7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlZjogTWF0RGlhbG9nUmVmPFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50PikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50aW1lID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZS0tO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXRpdm8oZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBhdGl2byhhdGl2bzogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3JlZi5jbG9zZSh7IG1vZGFsQWN0aW9uOiBhdGl2byA/IEluZm9Nb2RhbEFjdGlvbi5ZZXMgOiBJbmZvTW9kYWxBY3Rpb24uTm8gfSk7XHJcbiAgICB9XHJcbn0iXX0=
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBNEQsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUsvQyxNQUFNLE9BQU8seUJBQXlCO0lBSWxDLFlBQW9CLE9BQWUsRUFDZixLQUFpQixFQUNqQixPQUF5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VixRQUFRLEVBQUU7Ozs7RUFJVDthQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb0xvZ2luTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9sb2dpbi5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0Zvcm1Qcm9wTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9mb3JtLXByb3AubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gJy4uL2VudW0nO1xyXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsaXRpZXMgfSBmcm9tICcuLi91dGlscy91dGlsaXRpZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvblRpbWVJbnRlcnZhbDtcclxuICAgIHByaXZhdGUgX3Nlc3Npb25BY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfc2Vzc2FvOiBJbmZvU2Vzc2lvbk1vZGVsLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3BsYXRhZm9ybWE6IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZGF0YVNlcnZpY2U6IEluZm9EYXRhU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2csIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdXRpbGl0aWVzOiBVdGlsaXRpZXMsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBJbmZvVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90aXRsZTogVGl0bGUpIHsgfVxyXG5cclxuICAgIGdldFNlc3NhbygpOiBJbmZvU2Vzc2lvbk1vZGVse1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW87XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGxhdGZvcm0oKTogSW5mb1BsYXRmb3JtTW9kZWwge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wbGF0YWZvcm1hO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHJvdXRlclN0YXRlU25hcHNob3Q6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0xvZ2dlZCgpIHx8ICF0aGlzLl9zZXNzaW9uQWN0aXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXJsID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5kYXRhWydVUkwnXSB8fCByb3V0ZXJTdGF0ZVNuYXBzaG90LnVybDtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgMTAwMCk7XHJcblxyXG4gICAgICAgIHRoaXMuZGVmaW5lUGFnaW5hQXRpdmEodXJsKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbih1cmwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsID09ICcvJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGFzUGVybWlzc2lvbih1cmwpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCdub3ZvJykgPiAtMSAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHVybCwgJ25ldycpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKCd2aXN1YWxpemFyJykgPCAtMSAmJiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSAhPSBudWxsICYmICF0aGlzLmhhc1Blcm1pc3Npb24odXJsLCAnZWRpdCcpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApKS5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoYXN5bmMgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBlcm1pc3NhbyA9IGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZGF0YVsnUGVybWlzc2FvJ107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwZXJtaXNzYW8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtcyA9IChwZXJtaXNzYW9bMl0gfHwgJycpLnJlcGxhY2UoUmVnRXhwKC9cXHsoLio/KVxcfS8sICdnJyksIChfLCBwKSA9PiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LnBhcmFtc1twXSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhd2FpdCB0aGlzLl9kYXRhU2VydmljZS5nZXQocGVybWlzc2FvWzBdLCBwZXJtaXNzYW9bMV0sIHBhcmFtcykudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuc3VjY2VzcyB8fCByLmRhdGEgIT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNMb2dnZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLl91dGlsaXRpZXMuZ2V0TG9jYWxTdG9yYWdlKHRoaXMuX3BsYXRhZm9ybWEuVG9rZW5LZXkpICE9IG51bGwpO1xyXG4gICAgfVxyXG5cclxuXHRyZWZyZXNoU2Vzc2lvblRpbWUoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9zZXNzaW9uQWN0aXZlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSA9PSBudWxsIHx8IHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIDw9IDApXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgdGVtcG9TZXNzYW8gPSB0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZTtcclxuICAgICAgICB0aGlzLl91dGlsaXRpZXMuc2V0TG9jYWxTdG9yYWdlKCdtcycsIG5ldyBEYXRlKCkudmFsdWVPZigpLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuX3Nlc3Npb25UaW1lSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGVtcG9TZXNzYW8gPiAwKSAge1xyXG4gICAgICAgICAgICAgICAgdGVtcG9TZXNzYW8tLTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHRlbXBvUmVzdGFudGUgPSBNYXRoLnJvdW5kKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIC0gKChuZXcgRGF0ZSgpLnZhbHVlT2YoKSAtIHBhcnNlSW50KHRoaXMuX3V0aWxpdGllcy5nZXRMb2NhbFN0b3JhZ2UoJ21zJykpKSAvIDEwMDApKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghaXNOYU4odGVtcG9SZXN0YW50ZSkgJiYgdGVtcG9SZXN0YW50ZSA+IDApe1xyXG4gICAgICAgICAgICAgICAgdGVtcG9TZXNzYW8gPSB0ZW1wb1Jlc3RhbnRlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX3Nlc3Npb25UaW1lSW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNOYU4odGVtcG9SZXN0YW50ZSkpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5zaG93TWVzc2FnZSgpO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cdH1cclxuXHJcbiAgICBzaG93TWVzc2FnZSgpe1xyXG4gICAgICAgIGxldCByZWYgPSB0aGlzLl9tb2RhbC5vcGVuKFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IG51bGwsXHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6ICc1MDBweCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyOiBJbmZvRm9ybVByb3BNb2RlbCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uWWVzIHx8ICh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSAtICgobmV3IERhdGUoKS52YWx1ZU9mKCkgLSBwYXJzZUludCh0aGlzLl91dGlsaXRpZXMuZ2V0TG9jYWxTdG9yYWdlKCdtcycpKSkgLyAxMDAwKSkgPiAwKSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbih1c3VhcmlvOiBzdHJpbmcsIHNlbmhhOiBzdHJpbmcsIHJlQ2FwdGNoYVRva2VuOiBzdHJpbmcgPSBudWxsLCBjb2RpZ28yRkE6IHN0cmluZyA9IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9hdXRlbnRpY2FyJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQoeyBVc3VhcmlvOiB1c3VhcmlvLCBTZW5oYTogc2VuaGEsIFJlQ2FwdGNoYVRva2VuOiByZUNhcHRjaGFUb2tlbiwgQ29kaWdvMkZBOiBjb2RpZ28yRkEgfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyRGVmYXVsdCgpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuU3VjY2VzcyAmJiByLkRhdGEgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhLlRva2VuKTtcclxuICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRyb2NhckVtcHJlc2EodXN1YXJpbzogc3RyaW5nLCBlbXByZXNhSWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL3Ryb2NhcmVtcHJlc2EnLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IEVtcHJlc2FJZDogZW1wcmVzYUlkIH0pLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5Ub2tlbktleSwgci5EYXRhKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRyb2NhclVuaWRhZGUodXN1YXJpbzogc3RyaW5nLCBlbXByZXNhSWQ6IG51bWJlciwgdW5pZGFkZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby90cm9jYXJ1bmlkYWRlJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQoeyBFbXByZXNhSWQ6IGVtcHJlc2FJZCwgVW5pZGFkZUlkOiB1bmlkYWRlSWQgfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsb25hcih1c3VhcmlvOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9jbG9uYXInLCB0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCh7IFVzdWFyaW86IHVzdWFyaW8gfSksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdXRpbGl0aWVzLnNldExvY2FsU3RvcmFnZSh0aGlzLl9wbGF0YWZvcm1hLlRva2VuS2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzTG9nZ2VkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5faHR0cC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL0xvZ291dCcsIG51bGwsIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2xvZ2luJykudGhlbihyID0+IHsgbG9jYXRpb24ucmVsb2FkKCk7IH0pOyAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdsb2dpbicpLnRoZW4ociA9PiB7IGxvY2F0aW9uLnJlbG9hZCgpOyB9KTsgICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9ucyh1cmw6IHN0cmluZywgbG9nQXRpdmlkYWRlOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL2dldHBlcm1pc3Nhbz8nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KCd1cmw9JyArIHVybCArICcmbG9nYXRpdmlkYWRlPScgKyBsb2dBdGl2aWRhZGUudG9TdHJpbmcoKSkpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUcm9jYVNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9Ucm9jYXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHIgOiBhbnkgPSB0aGlzLl91dGlsaXRpZXMuZGVjcnlwdFRvSnNvbihycyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVjdXBlcmFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1JlY3VwZXJhclNlbmhhJywgdGhpcy5fdXRpbGl0aWVzLmpzb25Ub0VuY3J5cHQobW9kZWwpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXNldGFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Jlc2V0YXJTZW5oYScsIHRoaXMuX3V0aWxpdGllcy5qc29uVG9FbmNyeXB0KG1vZGVsKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJEZWZhdWx0KCksIHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgciA6IGFueSA9IHRoaXMuX3V0aWxpdGllcy5kZWNyeXB0VG9Kc29uKHJzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2dpblJlc291cmNlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS9hcHAvR2V0TG9naW5SZXNvdXJjZXMnLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlckRlZmF1bHQoKSwgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHJzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1Blcm1pc3Npb24odXJsOiBzdHJpbmcsIGtleUZ1bmN0aW9uOiBzdHJpbmcgPSAndmlldycpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKHVybCA9PSAnLycgJiYga2V5RnVuY3Rpb24gPT0gJ3ZpZXcnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHVybEdlbmVyaWNhID0gdGhpcy5nZXRVcmxHZW5lcmljYSh1cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGtleUZ1bmN0aW9uICYmIHMuQWNlc3NvKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9uKHVybDogc3RyaW5nLCBsb2dBdGl2aWRhZGU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG5cclxuICAgICAgICBsZXQgdXJsR2VuZXJpY2EgPSB0aGlzLmdldFVybEdlbmVyaWNhKHVybCk7XHJcbiAgICAgICAgbGV0IGNvbnRlbVVybCA9IHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSk7XHJcbiAgICAgICAgaWYgKGNvbnRlbVVybCkge1xyXG4gICAgICAgICAgICBpZiAobG9nQXRpdmlkYWRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGFTZXNzYW8odXJsKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmV0LnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9ucyh1cmxHZW5lcmljYSwgbG9nQXRpdmlkYWRlKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJldC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJldC5kYXRhID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMuZmlsdGVyKHMgPT4gcy5VUkwgPT0gaXRlbS5VUkwgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGl0ZW0uQ2hhdmVGdW5jaW9uYWxpZGFkZSkubGVuZ3RoID09IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXQuZGF0YS5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3V0aWxpdGllcy5zZXRMb2NhbFN0b3JhZ2UodGhpcy5fcGxhdGFmb3JtYS5TZXNzaW9uS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzYW8pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYVNlc3Nhbyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby92YWxpZGFzZXNzYW8/JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLl91dGlsaXRpZXMuanNvblRvRW5jcnlwdCgndXJsPScgKyB1cmwpKSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpLCByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByIDogYW55ID0gdGhpcy5fdXRpbGl0aWVzLmRlY3J5cHRUb0pzb24ocnMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwociA9PT0gdHJ1ZSwgJycsIHIpO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVNlc3NhbygpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhsb2NhbFN0b3JhZ2UpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWtleS5pbmNsdWRlcygnRGFzaGJvYXJkJykgJiYgIWtleS5pbmNsdWRlcygnY29scycpICYmICFrZXkuaW5jbHVkZXMoJ18nKSkgXHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmluZVBhZ2luYUF0aXZhKHVybCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fcGxhdGFmb3JtYS5NZW51ID09IG51bGwgfHwgdXJsID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBhdXg6IHN0cmluZ1tdID0gdXJsLnN1YnN0cmluZygxKS5yZXBsYWNlKC8tL2csICcnKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgbGV0IHRpdHVsb01lbnU6IHN0cmluZyA9IGF1eC5sZW5ndGggPiAwID8gYXV4WzBdLnRvU3RyaW5nKCkgOiB1cmw7XHJcbiAgICAgICAgbGV0IHBhcmFtZXRyb3NVcmw6IHN0cmluZ1tdID0gdXJsLnNwbGl0KCcvJykuc2xpY2UoMik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRpdHVsb01lbnUuaW5kZXhPZignbmljaW8nKSA+IC0xKVxyXG4gICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogJ3dpZGdldHMnLCBUaXR1bG86ICdJbmljaW8nIH07ICBcclxuXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBhbnkgPSB0aGlzLl9wbGF0YWZvcm1hLk1lbnUuZmlsdGVyKG0gPT4gbS5UaXRsZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGl0dWxvTWVudSkgPiAtMSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHN1YlRpdHVsbyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYW1ldHJvc1VybC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzR3VpZChwYXJhbWV0cm9zVXJsW2ldKSAmJiBpc05hTihwYXJzZUZsb2F0KHBhcmFtZXRyb3NVcmxbaV0pKSlcclxuICAgICAgICAgICAgICAgICAgICBzdWJUaXR1bG8gKz0gXCIgLSBcIiArIHRoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUodGhpcy50b1Bhc2NhbENhc2UocGFyYW1ldHJvc1VybFtpXSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaXRlbSAhPSBudWxsICYmIGl0ZW0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6IGl0ZW1bMF0uSWNvbiwgVGl0dWxvOiBpdGVtWzBdLlRpdGxlIH07XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aXRsZS5zZXRUaXRsZShgJHt0aGlzLl90cmFuc2xhdGUudHJhbnNsYXRlKHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLnRpdGxlIHx8IFwiUGxhdGFmb3JtYVwiKX0gLSAke3RoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUoaXRlbVswXS5UaXRsZSl9YCsgc3ViVGl0dWxvKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgZWxzZSB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogJ3NlY3VyaXR5JywgVGl0dWxvOiB0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy50aXRsZSB8fCAnUGxhdGFmb3JtYScgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VXJsR2VuZXJpY2EodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCByZXRvcm5vID0gXCJcIjtcclxuICAgICAgICBsZXQgdXJsUGFydHM6IHN0cmluZ1tdID0gdXJsLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cmxQYXJ0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoIWlzTmFOKHBhcnNlRmxvYXQodXJsUGFydHNbaV0pKSB8fCB0aGlzLmlzR3VpZCh1cmxQYXJ0c1tpXSkgfHwgdXJsUGFydHNbaV0udG9Mb3dlckNhc2UoKSA9PSAnbm92bycpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmV0b3JubyArPSAnLycgKyB1cmxQYXJ0c1tpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldG9ybm8uc3Vic3RyaW5nKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGluZyhlOiBIdHRwRXJyb3JSZXNwb25zZSk6IE9ic2VydmFibGVJbnB1dDxJbmZvTG9naW5Nb2RlbD4ge1xyXG4gICAgICAgIGlmIChlLnN0YXR1cyA9PSA0MDEpIFxyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG5cclxuICAgICAgICBlbHNlIGlmIChlLnN0YXR1cyA9PSA1MDApXHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCc1MDAnKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAoZS5lcnJvciAhPSBudWxsICYmIGUuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24gIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG9mKG5ldyBJbmZvTG9naW5Nb2RlbChmYWxzZSwgZS5lcnJvci5lcnJvcl9kZXNjcmlwdGlvbikpO1xyXG5cclxuICAgICAgICBlbHNlIHJldHVybiBvZihuZXcgSW5mb0xvZ2luTW9kZWwoZmFsc2UsICdIb3V2ZSB1bSBwcm9ibGVtYSBlIG7Do28gZm9pIHBvc3PDrXZlbCBjb25lY3RhcicpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzR3VpZCh2YWx1ZSkgOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHZhbHVlIHx8ICcnKS5tYXRjaCgnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSAhPT0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHRvUGFzY2FsQ2FzZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5ne1xyXG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oXlxcd3wtXFx3KS9nLCAodzEsIHcyLCBpKSA9PiBpID09IDAgPyB3MS50b1VwcGVyQ2FzZSgpIDogdzFbMV0udG9VcHBlckNhc2UoKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8aW5mby1tb2RhbCBtb2RhbHRpdGxlPVwiSW5hdGl2aWRhZGVcIiAob25zYXZlKT1cImF0aXZvKHRydWUpXCIgbGFiZWxzdWJtaXQ9XCJTaW1cIiBsYWJlbGNhbmNlbD1cIih7eyB0aW1lIH19KSB7eyAnTmFvJyB8IHRyYW5zbGF0ZSB9fVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJmb250LXNpemU6MTMwJVwiPnt7ICdWb2NlQWluZGFFc3RhVXRpbGl6YW5kb1BsYXRhZm9ybWEnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuXHRcdDwvaW5mby1tb2RhbD5cclxuXHRgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWZyZXNoU2Vzc2lvblRpbWVNb2RhbENvbXBvbmVudCB7XHJcbiAgICB0aW1lID0gMTU7XHJcbiAgICBpbnRlcnZhbDtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfcmVmOiBNYXREaWFsb2dSZWY8UmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQ+KSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWUgPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lLS07XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdGl2byhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGF0aXZvKGF0aXZvOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHsgbW9kYWxBY3Rpb246IGF0aXZvID8gSW5mb01vZGFsQWN0aW9uLlllcyA6IEluZm9Nb2RhbEFjdGlvbi5ObyB9KTtcclxuICAgIH1cclxufSJdfQ==
@@ -1140,13 +1140,13 @@ class InfoAuthenticationService {
1140
1140
  if (this._sessao.TempoInatividade == null || this._sessao.TempoInatividade <= 0)
1141
1141
  return;
1142
1142
  let tempoSessao = this._sessao.TempoInatividade;
1143
- localStorage.setItem('ms', new Date().valueOf().toString());
1143
+ this._utilities.setLocalStorage('ms', new Date().valueOf().toString());
1144
1144
  this._sessionTimeInterval = setInterval(() => {
1145
1145
  if (tempoSessao > 0) {
1146
1146
  tempoSessao--;
1147
1147
  return;
1148
1148
  }
1149
- let tempoRestante = Math.round(this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(localStorage.getItem('ms'))) / 1000));
1149
+ let tempoRestante = Math.round(this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(this._utilities.getLocalStorage('ms'))) / 1000));
1150
1150
  if (!isNaN(tempoRestante) && tempoRestante > 0) {
1151
1151
  tempoSessao = tempoRestante;
1152
1152
  return;
@@ -1166,7 +1166,7 @@ class InfoAuthenticationService {
1166
1166
  width: '500px'
1167
1167
  });
1168
1168
  ref.afterClosed().subscribe((r) => {
1169
- if (r != null && (r.modalAction == InfoModalAction.Yes || (this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(localStorage.getItem('ms'))) / 1000)) > 0)) {
1169
+ if (r != null && (r.modalAction == InfoModalAction.Yes || (this._sessao.TempoInatividade - ((new Date().valueOf() - parseInt(this._utilities.getLocalStorage('ms'))) / 1000)) > 0)) {
1170
1170
  this._sessionActive = true;
1171
1171
  this.refreshSessionTime();
1172
1172
  }
@@ -1328,8 +1328,8 @@ class InfoAuthenticationService {
1328
1328
  }
1329
1329
  removeSessao() {
1330
1330
  Object.keys(localStorage).forEach((key) => {
1331
- if (!key.includes('Dashboard') && !key.includes('cols'))
1332
- delete localStorage[key];
1331
+ if (!key.includes('Dashboard') && !key.includes('cols') && !key.includes('_'))
1332
+ localStorage.removeItem(key);
1333
1333
  });
1334
1334
  }
1335
1335
  definePaginaAtiva(url) {
@@ -1340,8 +1340,8 @@ class InfoAuthenticationService {
1340
1340
  let aux = url.substring(1).replace(/-/g, '').toLowerCase().split('/');
1341
1341
  let tituloMenu = aux.length > 0 ? aux[0].toString() : url;
1342
1342
  let parametrosUrl = url.split('/').slice(2);
1343
- if (tituloMenu.indexOf('ashboard') > -1)
1344
- this._plataforma.PaginaAtiva = { Icone: 'widgets', Titulo: 'Dashboard' };
1343
+ if (tituloMenu.indexOf('nicio') > -1)
1344
+ this._plataforma.PaginaAtiva = { Icone: 'widgets', Titulo: 'Inicio' };
1345
1345
  else {
1346
1346
  let item = this._plataforma.Menu.filter(m => m.Title.toLowerCase().indexOf(tituloMenu) > -1);
1347
1347
  let subTitulo = "";
@@ -9199,7 +9199,7 @@ class InfoTopMenuComponent {
9199
9199
  this.loading = false;
9200
9200
  this.menu = [];
9201
9201
  this.openSubmenu = '';
9202
- this.menuAtivo = 'Dashboard';
9202
+ this.menuAtivo = 'Inicio';
9203
9203
  }
9204
9204
  ngOnInit() {
9205
9205
  if (!this._authentication.isLogged() || this.api == null)