@datarailsshared/datarailsshared 1.6.71 → 1.6.73

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.
@@ -344,6 +344,7 @@ export class DrDatePickerComponent {
344
344
  timeframe = this.datePickerService.getTimeframe(format);
345
345
  }
346
346
  this.datePickerService.timeframe = timeframe;
347
+ this.datePickerService.format$.next(format);
347
348
  }
348
349
  onOpen() {
349
350
  this.opened$.next(true);
@@ -427,4 +428,4 @@ export class DrDatePickerComponent {
427
428
  type: HostBinding,
428
429
  args: ['class.active']
429
430
  }] }); })();
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNwQyxNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7SUMzQjVFLDZCQUF3RTtJQUNwRSxnQ0FPbUI7SUFMZixzS0FBUyxlQUFBLFVBQWlCLENBQUEsSUFBQztJQUYvQixpQkFPbUI7SUFFbkIsK0NBQXVILGtCQUFBO0lBTS9HLG9MQUFjLGVBQUEsMkRBQTZDLENBQUEsSUFBQzs7SUFMaEUsaUJBS21FO0lBQ25FLDJCQUFtRzs7SUFDdkcsaUJBQXVCO0lBRXZCLG1EQVF5QjtJQUhyQiw2T0FBZ0IsZUFBQSxvRUFBNkQsQ0FBQSxJQUFDLGtPQUM3RCxlQUFBLHFFQUE4RCxDQUFBLElBREQsK0tBRXBFLGVBQUEsZUFBUSxDQUFBLElBRjRELGdMQUdwRSxlQUFBLGlCQUFTLENBQUEsSUFIMkQ7SUFJbEYsaUJBQXdCO0lBQzVCLDBCQUFlOzs7OztJQTVCUCxlQUF1QjtJQUF2QixtQ0FBdUIsNkJBQUEsbUNBQUEsNkJBQUEsb0JBQUEsb0JBQUE7SUFRTCxlQUF1QjtJQUF2Qiw0Q0FBdUIsb0JBQUEsaUNBQUE7SUFJckMsZUFBd0Q7SUFBeEQsNEZBQXdEO0lBRzFDLGVBQXdEO0lBQXhELDRGQUF3RDtJQUsxRSxlQUFvQjtJQUFwQix5Q0FBb0Isb0NBQUEsZ0RBQUE7Ozs7SUFVNUIsNkJBQXdFO0lBQ3BFLGdDQVdtQjtJQVRmLGtNQUFpQixlQUFBLHNDQUE4QixDQUFBLElBQUMsMkpBQ3ZDLGVBQUEsV0FBaUIsQ0FBQSxJQURzQjs7O0lBRnBELGlCQVdtQjtJQUVuQiw2Q0FPeUI7SUFIckIseU9BQWdCLGVBQUEsdUVBQTZELENBQUEsSUFBQyw4TkFDN0QsZUFBQSx3RUFBOEQsQ0FBQSxJQURELDBLQUVwRSxlQUFBLGdCQUFRLENBQUEsSUFGNEQsMEtBR3BFLGVBQUEsaUJBQVMsQ0FBQSxJQUgyRDtJQUlsRixpQkFBaUI7SUFDckIsMEJBQWU7Ozs7SUFyQlAsZUFBaUM7SUFBakMscUVBQWlDLHVCQUFBLDBDQUFBLDZCQUFBLG1DQUFBLCtFQUFBLDZCQUFBLG9CQUFBLG9CQUFBO0lBY2pDLGVBQW9CO0lBQXBCLHlDQUFvQixnREFBQTs7QURuQjVCLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztBQUV0QixNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBQ3BELGlCQUFpQjtRQUNiLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNKO0FBY0QsTUFBTSxPQUFPLHFCQUFxQjtJQU85QixJQUNJLEdBQUcsQ0FBQyxPQUFlO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQ0ksR0FBRyxDQUFDLE9BQWU7UUFDbkIsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUM7SUFDbkQsQ0FBQztJQUdELGtEQUFrRDtJQUNsRCxJQUNJLE9BQU8sQ0FBQyxLQUFnQztRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVELENBQUM7SUFxQkQsSUFDVyxVQUFVLENBQUMsS0FBbUQ7UUFDckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFDRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUNJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQWtCRCxJQUFjLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDO0lBQzdDLENBQUM7SUFDRCxJQUFjLFVBQVUsQ0FBQyxLQUFhO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUEyQkQsWUFDYyxHQUFzQixFQUN0QixXQUE2QixFQUNoQyxpQkFBc0M7UUFGbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQ2hDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7UUE1RmpELGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBTy9COztXQUVHO1FBQ00sbUJBQWMsR0FBNkIsd0JBQXdCLENBQUMsT0FBTyxDQUFDO1FBRTVFLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBSTFCLDZCQUF3QixHQUFHLENBQUMsQ0FBQztRQUU3QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUloQyw0SEFBNEg7UUFDbkgscUNBQWdDLEdBQUcsS0FBSyxDQUFDO1FBa0IvQixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqQyxrQ0FBNkIsR0FBUTtZQUNwRCxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsTUFBTTtZQUNiLE9BQU8sRUFBRSxNQUFNO1lBQ2YsR0FBRyxFQUFFLE9BQU87WUFDWixJQUFJLEVBQUUsT0FBTztTQUNQLENBQUM7UUFFSyxpQkFBWSxHQUFHLGlDQUFpQyxDQUFDO1FBQzFELGFBQVEsR0FBRyxJQUFJLENBQUM7UUFHUCxvQkFBZSxHQUFHLGVBQWUsQ0FBQztRQVMzQyxrQkFBYSxHQUFHLGFBQWEsQ0FBQztZQUNqQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDakUsQ0FBQyxDQUFDLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDdkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUE0QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQ3RHLEdBQUcsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ2xCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7Z0JBQzNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQzVEO1FBQ0wsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFDMUIsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNqQixDQUFDO1FBRWUsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBRTlDLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFakMsY0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQy9CLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBZ0IsSUFBSSxDQUFDO1lBQzNDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBZ0IsSUFBSSxDQUFDO1NBQzVDLENBQUMsQ0FBQztRQTRJSSxzQkFBaUIsR0FBZSxJQUFJLENBQUM7UUFDckMscUJBQWdCLEdBQXFCLElBQUksQ0FBQztRQWVqRCxrREFBa0Q7UUFDM0MsZUFBVSxHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksTUFBTSxFQUFFO2dCQUNqQyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN4QztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQTVKRSxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuRixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7WUFDakcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3JHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFZLEVBQUUsYUFBcUIsRUFBRSxFQUFFO1lBQzlELElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ25GLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0NBQWdDLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDeEY7WUFDRCxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDNUUsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ2hGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUM5RCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDOUYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxPQUFPLENBQUMsd0JBQXdCLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztTQUNuRjtRQUVELElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDL0Q7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUJBQXVCO1FBQ25CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7UUFDbkQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QyxNQUFNLElBQUksR0FBRyxTQUFTLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDeEUsUUFBUSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3pCLEtBQUssd0JBQXdCLENBQUMsZUFBZTtnQkFDekMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxPQUFPLEVBQUU7b0JBQzlELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztpQkFDcEU7cUJBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxJQUFJLEVBQUU7b0JBQ2xFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ2hFO3FCQUFNO29CQUNILGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2pDO2dCQUNELE1BQU07WUFDVixLQUFLLHdCQUF3QixDQUFDLGFBQWE7Z0JBQ3ZDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsT0FBTyxFQUFFO29CQUM5RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLENBQUMsZUFBZSxDQUFDLENBQUM7aUJBQ2xFO3FCQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsSUFBSSxFQUFFO29CQUNsRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDOUQ7cUJBQU07b0JBQ0gsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0I7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssd0JBQXdCLENBQUMsZ0JBQWdCO2dCQUMxQyxJQUFJLFdBQW1CLENBQUM7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxlQUFlLENBQUMsT0FBTyxFQUFFO29CQUM5RCxXQUFXLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ2pFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDOUQ7cUJBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxJQUFJLEVBQUU7b0JBQ2xFLFdBQVcsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQzdELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUMxRDtxQkFBTTtvQkFDSCxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM5QixXQUFXLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDckQ7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzFELGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzdDLE1BQU07WUFDVjtnQkFDSSxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9DLE1BQU07U0FDYjtRQUNELElBQUksSUFBSSxDQUFDLGdDQUFnQyxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFNBQTBCLEVBQUUsTUFBMEI7UUFDakcsSUFBSSxTQUFTLEtBQUssZUFBZSxDQUFDLElBQUksRUFBRTtZQUNwQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzdFO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLGVBQWUsQ0FBQyxPQUFPLElBQUksU0FBUyxLQUFLLGVBQWUsQ0FBQyxJQUFJLEVBQUU7WUFDcEcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsWUFBK0IsQ0FBQztZQUNuRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztZQUNoRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzVCO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUN2RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLEtBQWE7UUFDM0I7OztXQUdHO1FBQ0gsTUFBTSxjQUFjLEdBQUksUUFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDckcsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUtNLGdCQUFnQixDQUFDLEVBQU87UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBTztRQUM1QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFXTSxzQkFBc0IsQ0FBQyxHQUFXO1FBQ3JDLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDekIsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2hDLElBQUksVUFBVSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2pHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw4QkFBOEIsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNyRTtZQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sa0JBQWtCLENBQUMsVUFBa0I7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLFFBQVEsQ0FBQyxTQUFpQjtRQUNoQyw4RkFBOEY7UUFDOUYseUdBQXlHO1FBQ3pHLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLHVCQUF1QixDQUFDLEtBQWEsRUFBRSxTQUEwQjtRQUN2RSxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDckMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNuRTtRQUNELE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxZQUFZO1FBQ2xCLElBQUksU0FBUyxDQUFDO1FBQ2QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUF5QixDQUFDLENBQUM7UUFDeEYsSUFBSSxNQUFNLEVBQUU7WUFDUixTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQXlCLENBQUM7U0FDOUM7YUFBTTtZQUNILE1BQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RCxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzRDtRQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDakIsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RELElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUN4QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQy9DLElBQUksZUFBZSxLQUFLLHNCQUFzQixFQUFFO2dCQUM1QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDMUM7U0FDSjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7eUdBclZRLHFCQUFxQjttR0FBckIscUJBQXFCOzs7Ozs7O2daQVBuQjtnQkFDUCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDL0UsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTtnQkFDckQsRUFBRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO2dCQUMvRSxtQkFBbUI7YUFDdEI7WUNqREwsNEJBQW9EO1lBQTVCLDZGQUFTLHFCQUFpQixJQUFDO1lBQUMsaUJBQUk7WUFFeEQsMEZBOEJlOztZQUVmLHlGQXVCZTs7O1lBdkRBLGVBQXVEO1lBQXZELHdGQUF1RDtZQWdDdkQsZUFBdUQ7WUFBdkQsd0ZBQXVEOzs7dUZEaUJ6RCxxQkFBcUI7Y0FaakMsU0FBUzsyQkFDSSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxhQUNwQztvQkFDUCxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLHVCQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7b0JBQy9FLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7b0JBQ3JELEVBQUUsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRTtvQkFDL0UsbUJBQW1CO2lCQUN0QjtnSUFPRCxNQUFNO2tCQURMLEtBQUs7WUFJRixHQUFHO2tCQUROLEtBQUs7WUFNRixHQUFHO2tCQUROLEtBQUs7WUFVRixPQUFPO2tCQURWLEtBQUs7WUFRRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsV0FBVztrQkFBbkIsS0FBSztZQUVrQyxRQUFRO2tCQUEvQyxLQUFLOztrQkFBSSxXQUFXO21CQUFDLGdCQUFnQjtZQUU3Qix3QkFBd0I7a0JBQWhDLEtBQUs7WUFFRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsZ0JBQWdCO2tCQUF4QixLQUFLO1lBR0csZ0NBQWdDO2tCQUF4QyxLQUFLO1lBSUssVUFBVTtrQkFEcEIsU0FBUzttQkFBQyxZQUFZO1lBV25CLE1BQU07a0JBRFQsV0FBVzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJWaWV3LCBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24sIFRpbWVmcmFtZU9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RyLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyQ3VzdG9tSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIE1hdENhbGVuZGFyVmlldyxcbiAgICBNYXREYXRlcGlja2VyLFxuICAgIE1hdERhdGVSYW5nZVBpY2tlcixcbiAgICBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWVrLXNlbGVjdGlvbi1zdHJhdGVneSc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVBZGFwdGVyIGV4dGVuZHMgTW9tZW50RGF0ZUFkYXB0ZXIge1xuICAgIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksIHVzZUNsYXNzOiBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSxcbiAgICAgICAgRHJEYXRlUGlja2VyU2VydmljZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyBkYXRlIHBpY2tlciBmb3JtYXQgaW5wdXQgbGFiZWwsIGNhbGVuZGFyIHN0YXJ0IHZpZXcgYW5kIHRpbWVmcmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybWF0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4obWluRGF0ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21pbiA9IG1pbkRhdGUgPyBtb21lbnQudW5peChtaW5EYXRlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KG1heERhdGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtYXhEYXRlTW9tZW50ID0gbWF4RGF0ZSA/IG1vbWVudC51bml4KG1heERhdGUpLnV0YygpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fbWF4ID0gbWF4RGF0ZU1vbWVudDtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5tYXhEYXRlID0gbWF4RGF0ZU1vbWVudDtcbiAgICB9XG5cbiAgICBfc3RhcnRBdDogTW9tZW50IHwgbnVsbCA9IG51bGw7XG4gICAgLyoqIFRoZSBkYXRlIHRvIG9wZW4gdGhlIGNhbGVuZGFyIHRvIGluaXRpYWxseS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGFydEF0KHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3N0YXJ0QXQgPSB2YWx1ZSA/IG1vbWVudC51bml4KHZhbHVlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGRhdGUsIHRha2luZyBlbmQsIHN0YXJ0LCBtaWRkbGUgb2YgcGVyaW9kIChpLmUuIHNldCBtaWRkbGUgb2YgbW9udGggaWYgdGltZWZyYW1lPSdtb250aCcpXG4gICAgICovXG4gICAgQElucHV0KCkgcGVyaW9kUG9zaXRpb246IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiA9IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5ERUZBVUxUO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0Li4uJztcblxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyQmFjayA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckZpbHRlcjogKG1vbWVudDogTW9tZW50KSA9PiBib29sZWFuO1xuXG4gICAgLy8gVE9ETzogQWRkZWQgYXMgdGVtcCBzb2x1dGlvbiBpbnN0ZWFkIG9mIEZGLCB3aWxsIHJlbW92ZSBvbmNlIHN0YWJsZSAtIGh0dHBzOi8vZGF0YXJhaWxzdGVhbS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9EUi0zNTM5NFxuICAgIEBJbnB1dCgpIGZpeEZvck5vcm1hbGl6ZWRWYWx1ZVdpdGhNYXhEYXRlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9kYXRlUGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PjtcbiAgICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJylcbiAgICBwdWJsaWMgc2V0IGRhdGVQaWNrZXIodmFsdWU6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlUGlja2VySW5zdGFuY2UgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlci5zdGFydFZpZXcgPSB0aGlzLmNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nW3RoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lXTtcbiAgICB9XG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyKCk6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXI7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICAgIGdldCBhY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJWaWV3c1RpbWVmcmFtZU1hcHBpbmc6IGFueSA9IHtcbiAgICAgICAgeWVhcjogJ211bHRpLXllYXInLFxuICAgICAgICBtb250aDogJ3llYXInLFxuICAgICAgICBxdWFydGVyOiAnbm9uZScsXG4gICAgICAgIGRheTogJ21vbnRoJyxcbiAgICAgICAgd2VlazogJ21vbnRoJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGN1c3RvbUhlYWRlciA9IERyRGF0ZVBpY2tlckN1c3RvbUhlYWRlckNvbXBvbmVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgPSB0cnVlO1xuICAgIHB1YmxpYyBfbWluOiBNb21lbnQ7XG4gICAgcHVibGljIF9tYXg6IE1vbWVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZWZyYW1lT3B0aW9uID0gVGltZWZyYW1lT3B0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpbm5lclZhbHVlKCk6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWU7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXQgaW5uZXJWYWx1ZSh2YWx1ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWUkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgXSkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKFtudWxsLCBudWxsXSksXG4gICAgICAgIG1hcCgoW3ZhbHVlLCB0aW1lZnJhbWVdOiBbTW9tZW50LCBUaW1lZnJhbWVPcHRpb25dKSA9PiB0aGlzLnRyYW5zZm9ybURpc3BsYXllZFZhbHVlKHZhbHVlLCB0aW1lZnJhbWUpKSxcbiAgICAgICAgdGFwKCh2YWx1ZTogTW9tZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmFjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2Uuc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVuZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICAgIHJlYWRvbmx5IHJhbmdlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBzdGFydDogdGhpcy5mYi5jb250cm9sPE1vbWVudCB8IG51bGw+KG51bGwpLFxuICAgICAgICBlbmQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxhbnk+LFxuICAgICAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IERyRGF0ZVBpY2tlclNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLnVwZGF0ZWRRdWFydGVyJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgZGF0ZVBpY2tlclNlcnZpY2Uud2Vla1NlbGVjdGlvbkNoYW5nZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh7IHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoc3RhcnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0OiB2YWx1ZS5jbG9uZSgpLnN0YXJ0T2YoJ2lzb1dlZWsnKSwgZW5kOiB2YWx1ZS5jbG9uZSgpLmVuZE9mKCdpc29XZWVrJykgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRhdGVGb3JtYXRGbiA9IHRoaXMuZGF0ZUFkYXB0ZXIuZm9ybWF0O1xuICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdCA9IChkYXRlOiBNb21lbnQsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGVUb0Zvcm1hdCA9IGRhdGUuY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVGltZWZyYW1lRGVwZW5kaW5nT25GWSh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlVG9Gb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnN1YnRyYWN0RmlzY2FsWWVhck1vbnRoc0Zyb21EYXRlKGRhdGVUb0Zvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0ZUZvcm1hdEZuLmNhbGwodGhpcy5kYXRlQWRhcHRlciwgZGF0ZVRvRm9ybWF0LCBkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyID0gdGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXI7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmRhdGVwaWNrZXJGaWx0ZXIgPSB0aGlzLmRhdGVGaWx0ZXI7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuZm9ybWF0Py5jdXJyZW50VmFsdWUgJiYgY2hhbmdlcy5mb3JtYXQuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmZvcm1hdC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhckJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRpbmcgY29tcG9uZW50IGlubmVyIHZhbHVlIGFjY29yZGluZyB0byBkYXRlcGlja2VyIHRpbWVmcmFtZSAoZGF5LCBtb250aCBldGMuKVxuICAgICAqIGFuZCBkYXRlIHBvc2l0aW9uIGluIHBlcmlvZCAoc3RhcnQsIGVuZCwgbWlkZGxlKVxuICAgICAqL1xuICAgIHRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5jbG9uZSgpO1xuICAgICAgICBjb25zdCB1bml0ID0gdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uV0VFSyA/ICdpc29XZWVrJyA6IHRpbWVmcmFtZTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnBlcmlvZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5TVEFSVF9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuc3RhcnRPZih1bml0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5FTkRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCA0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uTUlERExFX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBsZXQgZW5kT2ZQZXJpb2Q6IE1vbWVudDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihlbmRPZlBlcmlvZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kT2ZQZXJpb2QgPSBub3JtYWxpemVkVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mUXVhcnRlcihub3JtYWxpemVkVmFsdWUsIDEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mUXVhcnRlcihlbmRPZlBlcmlvZCwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCkuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBlbmRPZlBlcmlvZC5kaWZmKG5vcm1hbGl6ZWRWYWx1ZSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuYWRkKGRpZmYgLyAyICsgMSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCkuc2V0KCdob3VycycsIDEyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgbWluVW5peCA9IE1hdGgubWluKG5vcm1hbGl6ZWRWYWx1ZS51bml4KCksIHRoaXMuX21heC51bml4KCkpO1xuICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gbW9tZW50LnVuaXgobWluVW5peCkudXRjKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaG9zZW5QZXJpb2RIYW5kbGVyKGNob3NlbkRhdGU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24sIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+KSB7XG4gICAgICAgIGlmICh0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICBjaG9zZW5EYXRlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyTW9udGhzVG9EYXRlKGNob3NlbkRhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUiAmJiB0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuY3VycmVudFZpZXcgPSBDYWxlbmRhclZpZXcuRk9SX1FVQVJURVJTIGFzIE1hdENhbGVuZGFyVmlldztcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gY2hvc2VuRGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gdGltZWZyYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoY2hvc2VuRGF0ZSk7XG4gICAgICAgICAgICBwaWNrZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRpbmcgdmFsdWUgZnJvbSBvdXRzaWRlIG9mIGNvbXBvbmVudCB2aWEgbmdNb2RlbCBvciBmb3JtQ29udHJvbCB1cGRhdGVzXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvKlxuICAgICAgICAgKiBXZSBuZWVkIGtlZXAgbG9jYWwgdGltZXN0YW1wIGZvciBFbGVjdHJvbiBBcHBsaWNhdGlvblxuICAgICAgICAgKiBJc3N1ZSBpbiBlbGVjdHJvbjogd2hlbiB3ZSBzZWxlY3QgZGF0ZSwgZGF0ZSBzZWxlY3Qgd2l0aCAtMSAoaWYgd2UncmUgY2hvb3NpbmcgMjAyMywgb3V0cHV0IHdpbGwgYmUgMjAyMilcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gKGRvY3VtZW50IGFzIGFueSkuaXNfZWxlY3Ryb24gPyBtb21lbnQudW5peCh2YWx1ZSkgOiBtb21lbnQudW5peCh2YWx1ZSkudXRjKCk7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlID8gY29udmVydGVkVmFsdWUgOiBudWxsO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBwdWJsaWMgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBTaG91bGQgYmUgYXMgYXJyb3cgZnVuY3Rpb24gdG8gYXZvaWQgbG9zZSBzY29wZVxuICAgIHB1YmxpYyBkYXRlRmlsdGVyID0gKG1vbWVudDogTW9tZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVwaWNrZXJGaWx0ZXIgJiYgbW9tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyRmlsdGVyKG1vbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsOiBNb21lbnQpIHtcbiAgICAgICAgaWYgKHZhbCAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZVRvU2V0ID0gdmFsPy5jbG9uZSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlVG9TZXQgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJTaGlmdEZvclllYXIodmFsdWVUb1NldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbU1vbWVudCh2YWx1ZVRvU2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIE1vbWVudCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9tZW50RGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZUZyb21Nb21lbnQobW9tZW50RGF0ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUobW9tZW50RGF0ZS51bml4KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIHRpbWVzdGFtcCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZXN0YW1wXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHRpbWVzdGFtcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIGlzVmFsdWVVcGRhdGluZyBpcyByZXF1aXJlZCBmb3IgbWFuYWdlIGNsaWNrcyBvbiBzYW1lIGRhdGVzOiBpZiBpc1ZhbHVlVXBkYXRpbmcgLSB0cnVlIHRoZW5cbiAgICAgICAgLy8gZGF5cyBhcmUgZGlmZmVyZW50IGFuZCBzdWJzY3JpcHRpb24gb24gY2FsZW5kYXIgZGF5IGNsaWNrIGFjdGlvbiB3b24ndCB0cmlnZ2VyIEFjY2Vzc29yIG5nTW9kZWwgdXBkYXRlXG4gICAgICAgIC8vIG9uZSBtb3JlIHRpbWVcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbHVlVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGltZXN0YW1wKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuaW5uZXJWYWx1ZS51bml4KCkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZTogTW9tZW50LCB0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbik6IE1vbWVudCB7XG4gICAgICAgIGNvbnN0IHZhbHVlVG9SZXR1cm4gPSB2YWx1ZT8uY2xvbmUoKTtcbiAgICAgICAgaWYgKHZhbHVlVG9SZXR1cm4gJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGltZWZyYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9SZXR1cm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZVRvUmV0dXJuO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIGxldCB0aW1lZnJhbWU7XG4gICAgICAgIGxldCBmb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uKTtcbiAgICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5ub3JtYWxpemVWYWx1ZSh0aGlzLmZvcm1hdCk7XG4gICAgICAgICAgICB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFRpbWVmcmFtZShmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID0gdGltZWZyYW1lO1xuICAgIH1cblxuICAgIG9uT3BlbigpIHtcbiAgICAgICAgdGhpcy5vcGVuZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25DTG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9uTm9ybWFsaXplZFRpbWVzdGFtcCA9IHRoaXMuaW5uZXJWYWx1ZS51bml4KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobm9uTm9ybWFsaXplZFRpbWVzdGFtcCk7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gbm9uTm9ybWFsaXplZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayhub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KGZhbHNlKTtcbiAgICB9XG59XG4iLCI8aSBjbGFzcz1cImRyLWljb24tZGF0ZVwiIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiPjwvaT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkIHwgYXN5bmMpID09PSAnd2VlaydcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtmb3JtR3JvdXBdPVwicmFuZ2VGb3JtXCIgW3JhbmdlUGlja2VyXT1cImRhdGVQaWNrZXJcIiBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyXCIgY2xhc3M9XCJyYW5nZS1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHJhbmdlRm9ybS52YWx1ZS5zdGFydClcIiAvPlxuICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3N0YXJ0QXRdPVwiX3N0YXJ0QXRcIlxuICAgICAgICBbcGFuZWxDbGFzc109XCInZHItd2Vlay1kYXRlcGlja2VyJ1wiXG4gICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJjdXN0b21IZWFkZXJcIlxuICAgICAgICAoeWVhclNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uWUVBUiwgZGF0ZVBpY2tlcilcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJjaG9zZW5QZXJpb2RIYW5kbGVyKCRldmVudCwgdGltZWZyYW1lT3B0aW9uLk1PTlRILCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAgICAgICAoY2xvc2VkKT1cIm9uQ0xvc2UoKVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSAhPT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFtuZ01vZGVsXT1cImRpc3BsYXlWYWx1ZSQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiXG4gICAgICAgIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIlxuICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgIFtzdGFydEF0XT1cIl9zdGFydEF0XCJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YXJhaWxzc2hhcmVkL3NyYy9saWIvZHItaW5wdXRzL2RhdGUtcGlja2Vycy9kci1kYXRlLXBpY2tlci9kci1kYXRlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1pbnB1dHMvZGF0ZS1waWNrZXJzL2RyLWRhdGUtcGlja2VyL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFJTCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXJHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDM0gsT0FBTyxFQUlILGlDQUFpQyxHQUNw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WUFVRixPQUFPO2tCQURWLEtBQUs7WUFRRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsV0FBVztrQkFBbkIsS0FBSztZQUVrQyxRQUFRO2tCQUEvQyxLQUFLOztrQkFBSSxXQUFXO21CQUFDLGdCQUFnQjtZQUU3Qix3QkFBd0I7a0JBQWhDLEtBQUs7WUFFRyxjQUFjO2tCQUF0QixLQUFLO1lBRUcsZ0JBQWdCO2tCQUF4QixLQUFLO1lBR0csZ0NBQWdDO2tCQUF4QyxLQUFLO1lBSUssVUFBVTtrQkFEcEIsU0FBUzttQkFBQyxZQUFZO1lBV25CLE1BQU07a0JBRFQsV0FBVzttQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBIb3N0QmluZGluZyxcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJWaWV3LCBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24sIFRpbWVmcmFtZU9wdGlvbiB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlUGlja2VyJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RyLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJEYXRlUGlja2VyQ3VzdG9tSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZHItZGF0ZS1waWNrZXJfY3VzdG9tLWhlYWRlci9kci1kYXRlLXBpY2tlcl9jdXN0b20taGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICAgIE1hdENhbGVuZGFyVmlldyxcbiAgICBNYXREYXRlcGlja2VyLFxuICAgIE1hdERhdGVSYW5nZVBpY2tlcixcbiAgICBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICcuLi9zZXJ2aWNlcy93ZWVrLXNlbGVjdGlvbi1zdHJhdGVneSc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuZXhwb3J0IGNsYXNzIEN1c3RvbURhdGVBZGFwdGVyIGV4dGVuZHMgTW9tZW50RGF0ZUFkYXB0ZXIge1xuICAgIGdldEZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1kYXRlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLWRhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kci1kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogRHJEYXRlUGlja2VyQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogQ3VzdG9tRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9SQU5HRV9TRUxFQ1RJT05fU1RSQVRFR1ksIHVzZUNsYXNzOiBXZWVrU2VsZWN0aW9uU3RyYXRlZ3kgfSxcbiAgICAgICAgRHJEYXRlUGlja2VyU2VydmljZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb250cm9scyBkYXRlIHBpY2tlciBmb3JtYXQgaW5wdXQgbGFiZWwsIGNhbGVuZGFyIHN0YXJ0IHZpZXcgYW5kIHRpbWVmcmFtZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybWF0OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBtaW4obWluRGF0ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21pbiA9IG1pbkRhdGUgPyBtb21lbnQudW5peChtaW5EYXRlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KG1heERhdGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtYXhEYXRlTW9tZW50ID0gbWF4RGF0ZSA/IG1vbWVudC51bml4KG1heERhdGUpLnV0YygpIDogbnVsbDtcbiAgICAgICAgdGhpcy5fbWF4ID0gbWF4RGF0ZU1vbWVudDtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5tYXhEYXRlID0gbWF4RGF0ZU1vbWVudDtcbiAgICB9XG5cbiAgICBfc3RhcnRBdDogTW9tZW50IHwgbnVsbCA9IG51bGw7XG4gICAgLyoqIFRoZSBkYXRlIHRvIG9wZW4gdGhlIGNhbGVuZGFyIHRvIGluaXRpYWxseS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGFydEF0KHZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX3N0YXJ0QXQgPSB2YWx1ZSA/IG1vbWVudC51bml4KHZhbHVlKS51dGMoKSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdG8gdHJhbnNmb3JtIGRhdGUsIHRha2luZyBlbmQsIHN0YXJ0LCBtaWRkbGUgb2YgcGVyaW9kIChpLmUuIHNldCBtaWRkbGUgb2YgbW9udGggaWYgdGltZWZyYW1lPSdtb250aCcpXG4gICAgICovXG4gICAgQElucHV0KCkgcGVyaW9kUG9zaXRpb246IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiA9IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5ERUZBVUxUO1xuXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VsZWN0Li4uJztcblxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKSBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG5cbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyQmFjayA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZGF0ZXBpY2tlckZpbHRlcjogKG1vbWVudDogTW9tZW50KSA9PiBib29sZWFuO1xuXG4gICAgLy8gVE9ETzogQWRkZWQgYXMgdGVtcCBzb2x1dGlvbiBpbnN0ZWFkIG9mIEZGLCB3aWxsIHJlbW92ZSBvbmNlIHN0YWJsZSAtIGh0dHBzOi8vZGF0YXJhaWxzdGVhbS5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9EUi0zNTM5NFxuICAgIEBJbnB1dCgpIGZpeEZvck5vcm1hbGl6ZWRWYWx1ZVdpdGhNYXhEYXRlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9kYXRlUGlja2VyOiBNYXREYXRlcGlja2VyPGFueT4gfCBNYXREYXRlUmFuZ2VQaWNrZXI8YW55PjtcbiAgICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJylcbiAgICBwdWJsaWMgc2V0IGRhdGVQaWNrZXIodmFsdWU6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+KSB7XG4gICAgICAgIHRoaXMuX2RhdGVQaWNrZXIgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5kYXRlUGlja2VySW5zdGFuY2UgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fZGF0ZVBpY2tlci5zdGFydFZpZXcgPSB0aGlzLmNhbGVuZGFyVmlld3NUaW1lZnJhbWVNYXBwaW5nW3RoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lXTtcbiAgICB9XG4gICAgcHVibGljIGdldCBkYXRlUGlja2VyKCk6IE1hdERhdGVwaWNrZXI8YW55PiB8IE1hdERhdGVSYW5nZVBpY2tlcjxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXI7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICAgIGdldCBhY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZW5lZCQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FsZW5kYXJWaWV3c1RpbWVmcmFtZU1hcHBpbmc6IGFueSA9IHtcbiAgICAgICAgeWVhcjogJ211bHRpLXllYXInLFxuICAgICAgICBtb250aDogJ3llYXInLFxuICAgICAgICBxdWFydGVyOiAnbm9uZScsXG4gICAgICAgIGRheTogJ21vbnRoJyxcbiAgICAgICAgd2VlazogJ21vbnRoJyxcbiAgICB9IGFzIGNvbnN0O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGN1c3RvbUhlYWRlciA9IERyRGF0ZVBpY2tlckN1c3RvbUhlYWRlckNvbXBvbmVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgPSB0cnVlO1xuICAgIHB1YmxpYyBfbWluOiBNb21lbnQ7XG4gICAgcHVibGljIF9tYXg6IE1vbWVudDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZWZyYW1lT3B0aW9uID0gVGltZWZyYW1lT3B0aW9uO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpbm5lclZhbHVlKCk6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWU7XG4gICAgfVxuICAgIHByb3RlY3RlZCBzZXQgaW5uZXJWYWx1ZSh2YWx1ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWUkID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaW5uZXJWYWx1ZSQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKSxcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgXSkucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKFtudWxsLCBudWxsXSksXG4gICAgICAgIG1hcCgoW3ZhbHVlLCB0aW1lZnJhbWVdOiBbTW9tZW50LCBUaW1lZnJhbWVPcHRpb25dKSA9PiB0aGlzLnRyYW5zZm9ybURpc3BsYXllZFZhbHVlKHZhbHVlLCB0aW1lZnJhbWUpKSxcbiAgICAgICAgdGFwKCh2YWx1ZTogTW9tZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5jYWxlbmRhckluc3RhbmNlLmFjdGl2ZURhdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2Uuc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcGVuZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICAgIHJlYWRvbmx5IHJhbmdlRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICBzdGFydDogdGhpcy5mYi5jb250cm9sPE1vbWVudCB8IG51bGw+KG51bGwpLFxuICAgICAgICBlbmQ6IHRoaXMuZmIuY29udHJvbDxNb21lbnQgfCBudWxsPihudWxsKSxcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJvdGVjdGVkIGRhdGVBZGFwdGVyOiBEYXRlQWRhcHRlcjxhbnk+LFxuICAgICAgICBwdWJsaWMgZGF0ZVBpY2tlclNlcnZpY2U6IERyRGF0ZVBpY2tlclNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIGRhdGVQaWNrZXJTZXJ2aWNlLnVwZGF0ZWRRdWFydGVyJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgZGF0ZVBpY2tlclNlcnZpY2Uud2Vla1NlbGVjdGlvbkNoYW5nZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh7IHN0YXJ0LCBlbmQgfSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoc3RhcnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlubmVyVmFsdWUkLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYW5nZUZvcm0ucGF0Y2hWYWx1ZSh7IHN0YXJ0OiB2YWx1ZS5jbG9uZSgpLnN0YXJ0T2YoJ2lzb1dlZWsnKSwgZW5kOiB2YWx1ZS5jbG9uZSgpLmVuZE9mKCdpc29XZWVrJykgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGRhdGVGb3JtYXRGbiA9IHRoaXMuZGF0ZUFkYXB0ZXIuZm9ybWF0O1xuICAgICAgICB0aGlzLmRhdGVBZGFwdGVyLmZvcm1hdCA9IChkYXRlOiBNb21lbnQsIGRpc3BsYXlGb3JtYXQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGVUb0Zvcm1hdCA9IGRhdGUuY2xvbmUoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmlzVGltZWZyYW1lRGVwZW5kaW5nT25GWSh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSkpIHtcbiAgICAgICAgICAgICAgICBkYXRlVG9Gb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnN1YnRyYWN0RmlzY2FsWWVhck1vbnRoc0Zyb21EYXRlKGRhdGVUb0Zvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0ZUZvcm1hdEZuLmNhbGwodGhpcy5kYXRlQWRhcHRlciwgZGF0ZVRvRm9ybWF0LCBkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyID0gdGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXI7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmRhdGVwaWNrZXJGaWx0ZXIgPSB0aGlzLmRhdGVGaWx0ZXI7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuZm9ybWF0Py5jdXJyZW50VmFsdWUgJiYgY2hhbmdlcy5mb3JtYXQuY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmZvcm1hdC5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1hdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZXMuZmlzY2FsWWVhckJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZmlzY2FsWWVhckJhY2sgPSB0aGlzLmZpc2NhbFllYXJCYWNrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRpbmcgY29tcG9uZW50IGlubmVyIHZhbHVlIGFjY29yZGluZyB0byBkYXRlcGlja2VyIHRpbWVmcmFtZSAoZGF5LCBtb250aCBldGMuKVxuICAgICAqIGFuZCBkYXRlIHBvc2l0aW9uIGluIHBlcmlvZCAoc3RhcnQsIGVuZCwgbWlkZGxlKVxuICAgICAqL1xuICAgIHRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWRWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5jbG9uZSgpO1xuICAgICAgICBjb25zdCB1bml0ID0gdGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uV0VFSyA/ICdpc29XZWVrJyA6IHRpbWVmcmFtZTtcbiAgICAgICAgc3dpdGNoICh0aGlzLnBlcmlvZFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5TVEFSVF9PRl9QRVJJT0Q6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCAxKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuc3RhcnRPZih1bml0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5FTkRfT0ZfUEVSSU9EOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLlFVQVJURVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRFbmRPZlF1YXJ0ZXIobm9ybWFsaXplZFZhbHVlLCA0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24uTUlERExFX09GX1BFUklPRDpcbiAgICAgICAgICAgICAgICBsZXQgZW5kT2ZQZXJpb2Q6IE1vbWVudDtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0U3RhcnRPZkN1cnJlbnRRdWFydGVyKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2Uuc2V0RW5kT2ZDdXJyZW50UXVhcnRlcihlbmRPZlBlcmlvZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gVGltZWZyYW1lT3B0aW9uLllFQVIpIHtcbiAgICAgICAgICAgICAgICAgICAgZW5kT2ZQZXJpb2QgPSBub3JtYWxpemVkVmFsdWUuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zZXRTdGFydE9mUXVhcnRlcihub3JtYWxpemVkVmFsdWUsIDEpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnNldEVuZE9mUXVhcnRlcihlbmRPZlBlcmlvZCwgNCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCk7XG4gICAgICAgICAgICAgICAgICAgIGVuZE9mUGVyaW9kID0gbm9ybWFsaXplZFZhbHVlLmNsb25lKCkuZW5kT2YodW5pdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBlbmRPZlBlcmlvZC5kaWZmKG5vcm1hbGl6ZWRWYWx1ZSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkVmFsdWUuYWRkKGRpZmYgLyAyICsgMSwgJ3NlY29uZHMnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlLnN0YXJ0T2YodW5pdCkuc2V0KCdob3VycycsIDEyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maXhGb3JOb3JtYWxpemVkVmFsdWVXaXRoTWF4RGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgbWluVW5peCA9IE1hdGgubWluKG5vcm1hbGl6ZWRWYWx1ZS51bml4KCksIHRoaXMuX21heC51bml4KCkpO1xuICAgICAgICAgICAgbm9ybWFsaXplZFZhbHVlID0gbW9tZW50LnVuaXgobWluVW5peCkudXRjKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pbm5lclZhbHVlID0gbm9ybWFsaXplZFZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjaG9zZW5QZXJpb2RIYW5kbGVyKGNob3NlbkRhdGU6IE1vbWVudCwgdGltZWZyYW1lOiBUaW1lZnJhbWVPcHRpb24sIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+KSB7XG4gICAgICAgIGlmICh0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICBjaG9zZW5EYXRlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyTW9udGhzVG9EYXRlKGNob3NlbkRhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID09PSBUaW1lZnJhbWVPcHRpb24uUVVBUlRFUiAmJiB0aW1lZnJhbWUgPT09IFRpbWVmcmFtZU9wdGlvbi5ZRUFSKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmNhbGVuZGFySW5zdGFuY2UuY3VycmVudFZpZXcgPSBDYWxlbmRhclZpZXcuRk9SX1FVQVJURVJTIGFzIE1hdENhbGVuZGFyVmlldztcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuY2FsZW5kYXJJbnN0YW5jZS5hY3RpdmVEYXRlID0gY2hvc2VuRGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLnRpbWVmcmFtZSA9PT0gdGltZWZyYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoY2hvc2VuRGF0ZSk7XG4gICAgICAgICAgICBwaWNrZXIuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRpbmcgdmFsdWUgZnJvbSBvdXRzaWRlIG9mIGNvbXBvbmVudCB2aWEgbmdNb2RlbCBvciBmb3JtQ29udHJvbCB1cGRhdGVzXG4gICAgICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICAvKlxuICAgICAgICAgKiBXZSBuZWVkIGtlZXAgbG9jYWwgdGltZXN0YW1wIGZvciBFbGVjdHJvbiBBcHBsaWNhdGlvblxuICAgICAgICAgKiBJc3N1ZSBpbiBlbGVjdHJvbjogd2hlbiB3ZSBzZWxlY3QgZGF0ZSwgZGF0ZSBzZWxlY3Qgd2l0aCAtMSAoaWYgd2UncmUgY2hvb3NpbmcgMjAyMywgb3V0cHV0IHdpbGwgYmUgMjAyMilcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbHVlID0gKGRvY3VtZW50IGFzIGFueSkuaXNfZWxlY3Ryb24gPyBtb21lbnQudW5peCh2YWx1ZSkgOiBtb21lbnQudW5peCh2YWx1ZSkudXRjKCk7XG4gICAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlID8gY29udmVydGVkVmFsdWUgOiBudWxsO1xuICAgICAgICBpZiAodGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnRyeVRvTm9ybWFsaXplVGltZWZyYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBwdWJsaWMgb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBTaG91bGQgYmUgYXMgYXJyb3cgZnVuY3Rpb24gdG8gYXZvaWQgbG9zZSBzY29wZVxuICAgIHB1YmxpYyBkYXRlRmlsdGVyID0gKG1vbWVudDogTW9tZW50KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVwaWNrZXJGaWx0ZXIgJiYgbW9tZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlcGlja2VyRmlsdGVyKG1vbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIodmFsOiBNb21lbnQpIHtcbiAgICAgICAgaWYgKHZhbCAhPT0gdGhpcy5pbm5lclZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZVRvU2V0ID0gdmFsPy5jbG9uZSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlVG9TZXQgJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGhpcy5kYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5zdWJ0cmFjdEZpc2NhbFllYXJTaGlmdEZvclllYXIodmFsdWVUb1NldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFZhbHVlRnJvbU1vbWVudCh2YWx1ZVRvU2V0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIE1vbWVudCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbW9tZW50RGF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZXRWYWx1ZUZyb21Nb21lbnQobW9tZW50RGF0ZTogTW9tZW50KSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUobW9tZW50RGF0ZS51bml4KCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBpbm5lciB2YWx1ZSBmcm9tIHRpbWVzdGFtcCBhbmQgcHJvcGFnYXRlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZXN0YW1wXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldFZhbHVlKHRpbWVzdGFtcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIGlzVmFsdWVVcGRhdGluZyBpcyByZXF1aXJlZCBmb3IgbWFuYWdlIGNsaWNrcyBvbiBzYW1lIGRhdGVzOiBpZiBpc1ZhbHVlVXBkYXRpbmcgLSB0cnVlIHRoZW5cbiAgICAgICAgLy8gZGF5cyBhcmUgZGlmZmVyZW50IGFuZCBzdWJzY3JpcHRpb24gb24gY2FsZW5kYXIgZGF5IGNsaWNrIGFjdGlvbiB3b24ndCB0cmlnZ2VyIEFjY2Vzc29yIG5nTW9kZWwgdXBkYXRlXG4gICAgICAgIC8vIG9uZSBtb3JlIHRpbWVcbiAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbHVlVXBkYXRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWUodGltZXN0YW1wKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMuaW5uZXJWYWx1ZS51bml4KCkpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuaXNWYWx1ZVVwZGF0aW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB0cmFuc2Zvcm1EaXNwbGF5ZWRWYWx1ZSh2YWx1ZTogTW9tZW50LCB0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbik6IE1vbWVudCB7XG4gICAgICAgIGNvbnN0IHZhbHVlVG9SZXR1cm4gPSB2YWx1ZT8uY2xvbmUoKTtcbiAgICAgICAgaWYgKHZhbHVlVG9SZXR1cm4gJiYgdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1RpbWVmcmFtZURlcGVuZGluZ09uRlkodGltZWZyYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5hZGRGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKHZhbHVlVG9SZXR1cm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZVRvUmV0dXJuO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVGb3JtYXQoKTogdm9pZCB7XG4gICAgICAgIGxldCB0aW1lZnJhbWU7XG4gICAgICAgIGxldCBmb3JtYXQgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uKTtcbiAgICAgICAgaWYgKGZvcm1hdCkge1xuICAgICAgICAgICAgdGltZWZyYW1lID0gdGhpcy5mb3JtYXQgYXMgVGltZWZyYW1lT3B0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybWF0ID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5ub3JtYWxpemVWYWx1ZSh0aGlzLmZvcm1hdCk7XG4gICAgICAgICAgICB0aW1lZnJhbWUgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFRpbWVmcmFtZShmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lID0gdGltZWZyYW1lO1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQubmV4dChmb3JtYXQpO1xuICAgIH1cblxuICAgIG9uT3BlbigpIHtcbiAgICAgICAgdGhpcy5vcGVuZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgb25DTG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9uTm9ybWFsaXplZFRpbWVzdGFtcCA9IHRoaXMuaW5uZXJWYWx1ZS51bml4KCk7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWUobm9uTm9ybWFsaXplZFRpbWVzdGFtcCk7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLmlubmVyVmFsdWUudW5peCgpO1xuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZSAhPT0gbm9uTm9ybWFsaXplZFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayhub3JtYWxpemVkVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkJC5uZXh0KGZhbHNlKTtcbiAgICB9XG59XG4iLCI8aSBjbGFzcz1cImRyLWljb24tZGF0ZVwiIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiPjwvaT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIihkYXRlUGlja2VyU2VydmljZS50aW1lZnJhbWUkIHwgYXN5bmMpID09PSAnd2VlaydcIj5cbiAgICA8aW5wdXRcbiAgICAgICAgW25nTW9kZWxdPVwiaW5wdXQudmFsdWVcIlxuICAgICAgICAoY2xpY2spPVwiZGF0ZVBpY2tlci5vcGVuKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlLXJhbmdlLWlucHV0IFtmb3JtR3JvdXBdPVwicmFuZ2VGb3JtXCIgW3JhbmdlUGlja2VyXT1cImRhdGVQaWNrZXJcIiBbZGF0ZUZpbHRlcl09XCJkYXRlRmlsdGVyXCIgY2xhc3M9XCJyYW5nZS1pbnB1dFwiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdFN0YXJ0RGF0ZVxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydFwiXG4gICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJ2YWx1ZUNoYW5nZWRJbkNhbGVuZGFyKHJhbmdlRm9ybS52YWx1ZS5zdGFydClcIiAvPlxuICAgICAgICA8aW5wdXQgbWF0RW5kRGF0ZSBbZHJEYXRlUGlja2VyRm9ybWF0XT1cImRhdGVQaWNrZXJTZXJ2aWNlLmZvcm1hdCQgfCBhc3luY1wiIGZvcm1Db250cm9sTmFtZT1cImVuZFwiIC8+XG4gICAgPC9tYXQtZGF0ZS1yYW5nZS1pbnB1dD5cblxuICAgIDxtYXQtZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgI2RhdGVQaWNrZXJcbiAgICAgICAgW3N0YXJ0QXRdPVwiX3N0YXJ0QXRcIlxuICAgICAgICBbcGFuZWxDbGFzc109XCInZHItd2Vlay1kYXRlcGlja2VyJ1wiXG4gICAgICAgIFtjYWxlbmRhckhlYWRlckNvbXBvbmVudF09XCJjdXN0b21IZWFkZXJcIlxuICAgICAgICAoeWVhclNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uWUVBUiwgZGF0ZVBpY2tlcilcIlxuICAgICAgICAobW9udGhTZWxlY3RlZCk9XCJjaG9zZW5QZXJpb2RIYW5kbGVyKCRldmVudCwgdGltZWZyYW1lT3B0aW9uLk1PTlRILCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAgICAgICAoY2xvc2VkKT1cIm9uQ0xvc2UoKVwiPlxuICAgIDwvbWF0LWRhdGUtcmFuZ2UtcGlja2VyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIoZGF0ZVBpY2tlclNlcnZpY2UudGltZWZyYW1lJCB8IGFzeW5jKSAhPT0gJ3dlZWsnXCI+XG4gICAgPGlucHV0XG4gICAgICAgIFtuZ01vZGVsXT1cImRpc3BsYXlWYWx1ZSQgfCBhc3luY1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlZEluQ2FsZW5kYXIoJGV2ZW50KVwiXG4gICAgICAgIChjbGljayk9XCJkYXRlUGlja2VyLm9wZW4oKVwiXG4gICAgICAgIFttYXREYXRlcGlja2VyXT1cImRhdGVQaWNrZXJcIlxuICAgICAgICBbbWF0RGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2RyRGF0ZVBpY2tlckZvcm1hdF09XCJkYXRlUGlja2VyU2VydmljZS5mb3JtYXQkIHwgYXN5bmNcIlxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICAgICAgICBbbWluXT1cIl9taW5cIlxuICAgICAgICBbbWF4XT1cIl9tYXhcIiAvPlxuXG4gICAgPG1hdC1kYXRlcGlja2VyXG4gICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgIFtzdGFydEF0XT1cIl9zdGFydEF0XCJcbiAgICAgICAgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImN1c3RvbUhlYWRlclwiXG4gICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwiY2hvc2VuUGVyaW9kSGFuZGxlcigkZXZlbnQsIHRpbWVmcmFtZU9wdGlvbi5ZRUFSLCBkYXRlUGlja2VyKVwiXG4gICAgICAgIChtb250aFNlbGVjdGVkKT1cImNob3NlblBlcmlvZEhhbmRsZXIoJGV2ZW50LCB0aW1lZnJhbWVPcHRpb24uTU9OVEgsIGRhdGVQaWNrZXIpXCJcbiAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgIChjbG9zZWQpPVwib25DTG9zZSgpXCI+XG4gICAgPC9tYXQtZGF0ZXBpY2tlcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { BehaviorSubject, distinctUntilChanged, map, Subject } from 'rxjs';
2
+ import { BehaviorSubject, distinctUntilChanged, Subject } from 'rxjs';
3
3
  import { DateFromats, DateTags, TimeframeOption } from '../../../models/datePicker';
4
4
  import { DrSharedUtils } from '../../../utils/dr-shared-utils';
5
5
  import * as _ from 'lodash';
@@ -9,7 +9,10 @@ export class DrDatePickerService {
9
9
  this.isTimeframeSelectionEnabled = false;
10
10
  this._timeframe$ = new BehaviorSubject(TimeframeOption.DAY);
11
11
  this.timeframe$ = this._timeframe$.asObservable().pipe(distinctUntilChanged());
12
- this.format$ = this.timeframe$.pipe(map((timeframe) => this.getConfiguredFormat(timeframe)), distinctUntilChanged());
12
+ // TODO: here we can have inconsistency between format and timeframe
13
+ // we need to get rid of a separate subject and use pipe from timeframe$ for it
14
+ // making @Input() format in component just setting the timeframe
15
+ this.format$ = new BehaviorSubject(DateFromats.MAT_DEFAULT_DATE_FORMAT);
13
16
  this.updatedQuarter$ = new Subject();
14
17
  this.weekSelectionChange$ = new Subject();
15
18
  this.updatedDateAndClose$ = new Subject();
@@ -66,8 +69,9 @@ export class DrDatePickerService {
66
69
  return this.formatConfig[timeframe];
67
70
  }
68
71
  updateTimeframeAndFormat(format) {
69
- const normalizedFormat = this.normalizeValue(format);
72
+ const normalizedFormat = this.normalizeValue(format || this.format$.getValue());
70
73
  this.timeframe = this.getTimeframe(normalizedFormat);
74
+ this.format$.next(this.getConfiguredFormat(this.timeframe));
71
75
  }
72
76
  normalizeValue(value) {
73
77
  return value.replace(/d/g, 'D');
@@ -217,4 +221,4 @@ export class DrDatePickerService {
217
221
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrDatePickerService, [{
218
222
  type: Injectable
219
223
  }], null, null); })();
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBMkIsZUFBZSxFQUFvQixNQUFNLDRCQUE0QixDQUFDO0FBQy9ILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7QUFJNUIsTUFBTSxPQUFPLG1CQUFtQjtJQURoQztRQUVJLGdDQUEyQixHQUFHLEtBQUssQ0FBQztRQUNuQixnQkFBVyxHQUFzQyxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0YsZUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQVVqRixZQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ3ZELG9CQUFvQixFQUFFLENBQ3pCLENBQUM7UUFFRixvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUN4RCx5QkFB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QU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFnQixDQUFDO1lBQzVDLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDM0IsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3JCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUI7SUFDTCxDQUFDO3VHQTdPUSxtQkFBbUI7c0dBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7O3VGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRlRnJvbWF0cywgRGF0ZVRhZ3MsIElEYXRlUGlja2VyRm9ybWF0Q29uZmlnLCBUaW1lZnJhbWVPcHRpb24sIFRUaW1lZnJhbWVPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZGF0ZVBpY2tlcic7XG5pbXBvcnQgeyBEclNoYXJlZFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZHItc2hhcmVkLXV0aWxzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IFdlZWtJbmZvIH0gZnJvbSAnLi4vd2Vlay1zZWxlY3Rvci93ZWVrLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEckRhdGVQaWNrZXJTZXJ2aWNlIHtcbiAgICBpc1RpbWVmcmFtZVNlbGVjdGlvbkVuYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90aW1lZnJhbWUkOiBCZWhhdmlvclN1YmplY3Q8VFRpbWVmcmFtZU9wdGlvbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFRpbWVmcmFtZU9wdGlvbi5EQVkpO1xuICAgIHB1YmxpYyByZWFkb25seSB0aW1lZnJhbWUkID0gdGhpcy5fdGltZWZyYW1lJC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgcHVibGljIGdldCB0aW1lZnJhbWUoKTogVFRpbWVmcmFtZU9wdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aW1lZnJhbWUkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB0aW1lZnJhbWUodmFsdWU6IFRUaW1lZnJhbWVPcHRpb24pIHtcbiAgICAgICAgdGhpcy5fdGltZWZyYW1lJC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICByZWFkb25seSBmb3JtYXQkID0gdGhpcy50aW1lZnJhbWUkLnBpcGUoXG4gICAgICAgIG1hcCgodGltZWZyYW1lKSA9PiB0aGlzLmdldENvbmZpZ3VyZWRGb3JtYXQodGltZWZyYW1lKSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgKTtcblxuICAgIHVwZGF0ZWRRdWFydGVyJCA9IG5ldyBTdWJqZWN0PE1vbWVudD4oKTtcbiAgICByZWFkb25seSB3ZWVrU2VsZWN0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFdlZWtJbmZvPigpO1xuICAgIHVwZGF0ZWREYXRlQW5kQ2xvc2UkID0gbmV3IFN1YmplY3Q8TW9tZW50PigpO1xuICAgIGRhdGVQaWNrZXJJbnN0YW5jZTogTWF0RGF0ZXBpY2tlcjxhbnk+O1xuICAgIGlzVXNpbmdEYXRlVGFnUHJlc2V0czogYm9vbGVhbjtcbiAgICBwcmVzZXRUYWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlVGFncz4oJycgYXMgRGF0ZVRhZ3MpO1xuICAgIG9uU2FtZURheVNlbGVjdGVkSW5DYWxlbmRhciQgPSBuZXcgU3ViamVjdDxNb21lbnQ+KCk7XG4gICAga2VlcFByZXNldFRhZyA9IGZhbHNlO1xuICAgIGlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgIGF2YWlsYWJsZVRpbWVmcmFtZXMgPSBbXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5EQVksXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5XRUVLLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uTU9OVEgsXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uWUVBUixcbiAgICBdO1xuXG4gICAgcHVibGljIGZvcm1hdENvbmZpZzogSURhdGVQaWNrZXJGb3JtYXRDb25maWcgPSB7XG4gICAgICAgIGRheTogRGF0ZUZyb21hdHMuTUFUX0RFRkFVTFRfREFURV9GT1JNQVQsXG4gICAgICAgIG1vbnRoOiBEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCxcbiAgICAgICAgeWVhcjogRGF0ZUZyb21hdHMuWUVBUl9GT1JNQVQsXG4gICAgICAgIHF1YXJ0ZXI6IERhdGVGcm9tYXRzLlFVQVJURVJfRk9STUFULFxuICAgICAgICB3ZWVrOiBEYXRlRnJvbWF0cy5XRUVLX0ZPUk1BVCxcbiAgICB9O1xuICAgIHB1YmxpYyBjYWxlbmRhckluc3RhbmNlOiBNYXRDYWxlbmRhcjxhbnk+O1xuICAgIHB1YmxpYyBtYXhEYXRlOiBNb21lbnQ7XG4gICAgcHVibGljIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG4gICAgcHVibGljIGZpc2NhbFllYXJCYWNrID0gZmFsc2U7XG4gICAgcHVibGljIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lubmVyVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb21lbnQ+KG51bGwpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbm5lclZhbHVlJCA9IHRoaXMuX2lubmVyVmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIHNldCBpbm5lclZhbHVlKHZhbHVlOiBNb21lbnQpIHtcbiAgICAgICAgdGhpcy5faW5uZXJWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5UHJlZml4KCkge1xuICAgICAgICBjb25zdCBmb3JtYXRDYWNoZWQgPSB0aGlzLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy50aW1lZnJhbWUpO1xuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgZm9ybWF0Q2FjaGVkPy5pbmNsdWRlcygnUScpOlxuICAgICAgICAgICAgICAgIHJldHVybiAnUSc7XG4gICAgICAgICAgICBjYXNlIGZvcm1hdENhY2hlZD8uaW5jbHVkZXMoJ1cnKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1cnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRUaW1lZnJhbWUoZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIERyU2hhcmVkVXRpbHMuZ2V0VGltZWZyYW1lQnlEYXRlRm9ybWF0KGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZ2V0Q29uZmlndXJlZEZvcm1hdCh0aW1lZnJhbWU6IFRUaW1lZnJhbWVPcHRpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDb25maWdbdGltZWZyYW1lXTtcbiAgICB9XG5cbiAgICB1cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZvcm1hdCA9IHRoaXMubm9ybWFsaXplVmFsdWUoZm9ybWF0KTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWUgPSB0aGlzLmdldFRpbWVmcmFtZShub3JtYWxpemVkRm9ybWF0KTtcbiAgICB9XG5cbiAgICBub3JtYWxpemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL2QvZywgJ0QnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgcXVhcnRlciBudW1iZXIgZm9yIGRhdGUgYWNjb3JkaW5nIHRvIGZpc2NhbCB5ZWFyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRRdWFydGVyQWNjb3JkaW5nVG9GaXNjYWxZZWFyKGRhdGU6IE1vbWVudCk6IG51bWJlciB7XG4gICAgICAgIGxldCBmaXNjYWxNb250aCA9IHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyO1xuICAgICAgICBjb25zdCBkYXRlTW9udGggPSBkYXRlLm1vbnRoKCk7XG4gICAgICAgIGlmIChkYXRlTW9udGggPCBmaXNjYWxNb250aCkge1xuICAgICAgICAgICAgZmlzY2FsTW9udGggLT0gMTI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGgudHJ1bmMoKGRhdGUubW9udGgoKSAtIGZpc2NhbE1vbnRoKSAvIDMpICsgMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGRhdGUgdG8gZW5kIG9mIHF1YXJ0ZXIgaW4gRlkgYnkgcGFzc2VkIHF1YXJ0ZXIgbnVtYmVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqIEBwYXJhbSBxdWFydGVyTnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIHNldEVuZE9mUXVhcnRlcihkYXRlOiBNb21lbnQsIHF1YXJ0ZXJOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkYXRlLnN1YnRyYWN0KHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyLCAnTScpXG4gICAgICAgICAgICAuc3RhcnRPZigneWVhcicpXG4gICAgICAgICAgICAuYWRkKHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyICsgcXVhcnRlck51bWJlciAqIDMgLSAxLCAnTScpXG4gICAgICAgICAgICAuZW5kT2YoJ21vbnRoJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIHN0YXJ0IG9mIHF1YXJ0ZXIgaW4gRlkgYnkgcGFzc2VkIHF1YXJ0ZXIgbnVtYmVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqIEBwYXJhbSBxdWFydGVyTnVtYmVyXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXJ0T2ZRdWFydGVyKGRhdGU6IE1vbWVudCwgcXVhcnRlck51bWJlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGRhdGUuc3VidHJhY3QodGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIsICdNJylcbiAgICAgICAgICAgIC5zdGFydE9mKCd5ZWFyJylcbiAgICAgICAgICAgIC5hZGQodGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIgKyAocXVhcnRlck51bWJlciAtIDEpICogMywgJ00nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGRhdGUgdG8gZW5kIG9mIGN1cnJlbnQgcXVhcnRlciAoaW4gd2hpY2ggZGF0ZSBpcyBsb2NhdGVkKSBhY2NvcmRpbmcgdG8gRllcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIHNldEVuZE9mQ3VycmVudFF1YXJ0ZXIoZGF0ZTogTW9tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0RW5kT2ZRdWFydGVyKGRhdGUsIHRoaXMuZ2V0UXVhcnRlckFjY29yZGluZ1RvRmlzY2FsWWVhcihkYXRlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIHN0YXJ0IG9mIGN1cnJlbnQgcXVhcnRlciAoaW4gd2hpY2ggZGF0ZSBpcyBsb2NhdGVkKSBhY2NvcmRpbmcgdG8gRllcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIHNldFN0YXJ0T2ZDdXJyZW50UXVhcnRlcihkYXRlOiBNb21lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRTdGFydE9mUXVhcnRlcihkYXRlLCB0aGlzLmdldFF1YXJ0ZXJBY2NvcmRpbmdUb0Zpc2NhbFllYXIoZGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIGRhdGUgc2VsZWN0aW9uIG9uIHRoaXMgdGltZWZyYW1lIGRlcGVuZHMgb24gRmlzY2FsIFllYXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0aW1lZnJhbWVcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNUaW1lZnJhbWVEZXBlbmRpbmdPbkZZKHRpbWVmcmFtZTogVGltZWZyYW1lT3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBfLmluY2x1ZGVzKFtUaW1lZnJhbWVPcHRpb24uUVVBUlRFUiwgVGltZWZyYW1lT3B0aW9uLllFQVJdLCB0aW1lZnJhbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN1YnRyYWN0IGZyb20gZGF0ZSBmaXNjYWwgeWVhciBzaGlmdCBtb250aHMgY291bnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIHN1YnRyYWN0RmlzY2FsWWVhck1vbnRoc0Zyb21EYXRlKGRhdGU6IE1vbWVudCk6IE1vbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldERhdGVNb2RpZmllZEJ5RmlzY2FsTW9udGhzKGRhdGUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCB0byBkYXRlIGZpc2NhbCB5ZWFyIHNoaWZ0IG1vbnRocyBjb3VudFxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRmlzY2FsWWVhck1vbnRoc1RvRGF0ZShkYXRlOiBNb21lbnQpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlTW9kaWZpZWRCeUZpc2NhbE1vbnRocyhkYXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQsIGlzU3VidHJhY3Q6IGJvb2xlYW4gPSBmYWxzZSk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLmZpc2NhbFllYXJCYWNrIHx8ICF0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcikgcmV0dXJuO1xuICAgICAgICByZXR1cm4gbW9tZW50RGF0ZVtpc1N1YnRyYWN0ID8gJ3N1YnRyYWN0JyA6ICdhZGQnXSgxLCAneWVhcicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKG1vbWVudERhdGU6IE1vbWVudCk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3VidHJhY3RGaXNjYWxZZWFyU2hpZnRGb3JZZWFyKG1vbWVudERhdGU6IE1vbWVudCk6IE1vbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgb3Igc3VidHJhY3QgZGVwZW5kaW5nIG9uIGlzUmV2ZXJ0IHBhcmVtZXRlciBGaXNjYWwgeWVhciBtb250aCBzaGlmdFxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gaXNTdWJ0cmFjdFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RGF0ZU1vZGlmaWVkQnlGaXNjYWxNb250aHMoZGF0ZTogTW9tZW50LCBpc1N1YnRyYWN0ID0gZmFsc2UpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gZGF0ZSA/IF8uY2xvbmVEZWVwKGRhdGUpW2lzU3VidHJhY3QgPyAnc3VidHJhY3QnIDogJ2FkZCddKHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyLCAnbW9udGgnKSA6IGRhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZURhdGVQaWNrZXJCeVByZXNldCh0YWc6IERhdGVUYWdzLCBjYWxlbmRlcjogYW55KSB7XG4gICAgICAgIHRoaXMua2VlcFByZXNldFRhZyA9IHRydWU7XG4gICAgICAgIGxldCBkYXRlID0gbnVsbDtcbiAgICAgICAgaWYgKHRhZykge1xuICAgICAgICAgICAgZGF0ZSA9IERyU2hhcmVkVXRpbHMuZ2V0RGF0ZUJ5VGFnKHRhZyk7XG4gICAgICAgICAgICBzd2l0Y2ggKHRhZykge1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuVE9EQVk6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZWZyYW1lQW5kRm9ybWF0KERhdGVGcm9tYXRzLk1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRlVGFncy5ZRVNURVJEQVk6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZWZyYW1lQW5kRm9ybWF0KERhdGVGcm9tYXRzLk1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRlVGFncy5USElTX01PTlRIOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZUluQ2FsZW5kYXJNb250aFZpZXcoZGF0ZSwgY2FsZW5kZXIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIERhdGVUYWdzLlBSRVZfTU9OVEg6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZWZyYW1lQW5kRm9ybWF0KERhdGVGcm9tYXRzLk1PTlRIX1lFQVJfRk9STUFUKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REYXRlSW5DYWxlbmRhck1vbnRoVmlldyhkYXRlLCBjYWxlbmRlcik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJlc2V0VGFnJC5uZXh0KHRhZyk7XG4gICAgICAgIHRoaXMudXBkYXRlZERhdGVBbmRDbG9zZSQubmV4dChkYXRlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0RGF0ZUluQ2FsZW5kYXJNb250aFZpZXcoZGF0ZTogTW9tZW50LCBjYWxlbmRlcjogYW55KTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9udGhWaWV3ID0gY2FsZW5kZXIubW9udGhWaWV3IGFzIGFueTtcbiAgICAgICAgICAgIGlmIChtb250aFZpZXcpIHtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX2FjdGl2ZURhdGUgPSBkYXRlO1xuICAgICAgICAgICAgICAgIG1vbnRoVmlldy5fc2VsZWN0ZWQgPSBkYXRlO1xuICAgICAgICAgICAgICAgIG1vbnRoVmlldy5faW5pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRQcmVzZXRUYWcoKSB7XG4gICAgICAgIGlmICghdGhpcy5rZWVwUHJlc2V0VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnByZXNldFRhZyQubmV4dChudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMua2VlcFByZXNldFRhZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItZGF0ZS1waWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLWlucHV0cy9kYXRlLXBpY2tlcnMvc2VydmljZXMvZHItZGF0ZS1waWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUEyQixlQUFlLEVBQW9CLE1BQU0sNEJBQTRCLENBQUM7QUFDL0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUk1QixNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRUksZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdCQUFXLEdBQXNDLElBQUksZUFBZSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRixlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBVTFGLG9FQUFvRTtRQUNwRSwrRUFBK0U7UUFDL0UsaUVBQWlFO1FBQ2pFLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBUyxXQUFXLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUUzRSxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDL0IseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQVksQ0FBQztRQUN4RCx5QkFBb0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRzdDLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVyxF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RU0sNkJBQTZCLENBQUMsSUFBWSxFQUFFLFFBQWE7UUFDNUQsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFnQixDQUFDO1lBQzVDLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUM3QixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDM0IsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3JCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7U0FDOUI7SUFDTCxDQUFDO3VHQTlPUSxtQkFBbUI7c0dBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7O3VGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGF0ZUZyb21hdHMsIERhdGVUYWdzLCBJRGF0ZVBpY2tlckZvcm1hdENvbmZpZywgVGltZWZyYW1lT3B0aW9uLCBUVGltZWZyYW1lT3B0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2RhdGVQaWNrZXInO1xuaW1wb3J0IHsgRHJTaGFyZWRVdGlscyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2RyLXNoYXJlZC11dGlscyc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBXZWVrSW5mbyB9IGZyb20gJy4uL3dlZWstc2VsZWN0b3Ivd2Vlay1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJEYXRlUGlja2VyU2VydmljZSB7XG4gICAgaXNUaW1lZnJhbWVTZWxlY3Rpb25FbmFibGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGltZWZyYW1lJDogQmVoYXZpb3JTdWJqZWN0PFRUaW1lZnJhbWVPcHRpb24+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChUaW1lZnJhbWVPcHRpb24uREFZKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGltZWZyYW1lJCA9IHRoaXMuX3RpbWVmcmFtZSQuYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcblxuICAgIHB1YmxpYyBnZXQgdGltZWZyYW1lKCk6IFRUaW1lZnJhbWVPcHRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGltZWZyYW1lJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdGltZWZyYW1lKHZhbHVlOiBUVGltZWZyYW1lT3B0aW9uKSB7XG4gICAgICAgIHRoaXMuX3RpbWVmcmFtZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogaGVyZSB3ZSBjYW4gaGF2ZSBpbmNvbnNpc3RlbmN5IGJldHdlZW4gZm9ybWF0IGFuZCB0aW1lZnJhbWVcbiAgICAvLyB3ZSBuZWVkIHRvIGdldCByaWQgb2YgYSBzZXBhcmF0ZSBzdWJqZWN0IGFuZCB1c2UgcGlwZSBmcm9tIHRpbWVmcmFtZSQgZm9yIGl0XG4gICAgLy8gbWFraW5nIEBJbnB1dCgpIGZvcm1hdCBpbiBjb21wb25lbnQganVzdCBzZXR0aW5nIHRoZSB0aW1lZnJhbWVcbiAgICBmb3JtYXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KERhdGVGcm9tYXRzLk1BVF9ERUZBVUxUX0RBVEVfRk9STUFUKTtcblxuICAgIHVwZGF0ZWRRdWFydGVyJCA9IG5ldyBTdWJqZWN0PE1vbWVudD4oKTtcbiAgICByZWFkb25seSB3ZWVrU2VsZWN0aW9uQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFdlZWtJbmZvPigpO1xuICAgIHVwZGF0ZWREYXRlQW5kQ2xvc2UkID0gbmV3IFN1YmplY3Q8TW9tZW50PigpO1xuICAgIGRhdGVQaWNrZXJJbnN0YW5jZTogTWF0RGF0ZXBpY2tlcjxhbnk+O1xuICAgIGlzVXNpbmdEYXRlVGFnUHJlc2V0czogYm9vbGVhbjtcbiAgICBwcmVzZXRUYWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlVGFncz4oJycgYXMgRGF0ZVRhZ3MpO1xuICAgIG9uU2FtZURheVNlbGVjdGVkSW5DYWxlbmRhciQgPSBuZXcgU3ViamVjdDxNb21lbnQ+KCk7XG4gICAga2VlcFByZXNldFRhZyA9IGZhbHNlO1xuICAgIGlzVmFsdWVVcGRhdGluZyA9IGZhbHNlO1xuICAgIGF2YWlsYWJsZVRpbWVmcmFtZXMgPSBbXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5EQVksXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5XRUVLLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uTU9OVEgsXG4gICAgICAgIFRpbWVmcmFtZU9wdGlvbi5RVUFSVEVSLFxuICAgICAgICBUaW1lZnJhbWVPcHRpb24uWUVBUixcbiAgICBdO1xuXG4gICAgcHVibGljIGZvcm1hdENvbmZpZzogSURhdGVQaWNrZXJGb3JtYXRDb25maWcgPSB7XG4gICAgICAgIGRheTogRGF0ZUZyb21hdHMuTUFUX0RFRkFVTFRfREFURV9GT1JNQVQsXG4gICAgICAgIG1vbnRoOiBEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCxcbiAgICAgICAgeWVhcjogRGF0ZUZyb21hdHMuWUVBUl9GT1JNQVQsXG4gICAgICAgIHF1YXJ0ZXI6IERhdGVGcm9tYXRzLlFVQVJURVJfRk9STUFULFxuICAgICAgICB3ZWVrOiBEYXRlRnJvbWF0cy5XRUVLX0ZPUk1BVCxcbiAgICB9O1xuICAgIHB1YmxpYyBjYWxlbmRhckluc3RhbmNlOiBNYXRDYWxlbmRhcjxhbnk+O1xuICAgIHB1YmxpYyBtYXhEYXRlOiBNb21lbnQ7XG4gICAgcHVibGljIGZpc2NhbFllYXJNb250aHNNb2RpZmllciA9IDA7XG4gICAgcHVibGljIGZpc2NhbFllYXJCYWNrID0gZmFsc2U7XG4gICAgcHVibGljIGRhdGVwaWNrZXJGaWx0ZXI6IChtb21lbnQ6IE1vbWVudCkgPT4gYm9vbGVhbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lubmVyVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNb21lbnQ+KG51bGwpO1xuICAgIHB1YmxpYyByZWFkb25seSBpbm5lclZhbHVlJCA9IHRoaXMuX2lubmVyVmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHVibGljIHNldCBpbm5lclZhbHVlKHZhbHVlOiBNb21lbnQpIHtcbiAgICAgICAgdGhpcy5faW5uZXJWYWx1ZSQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgaW5uZXJWYWx1ZSgpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBnZXREaXNwbGF5UHJlZml4KCkge1xuICAgICAgICBjb25zdCBmb3JtYXRDYWNoZWQgPSB0aGlzLmdldENvbmZpZ3VyZWRGb3JtYXQodGhpcy50aW1lZnJhbWUpO1xuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgIGNhc2UgZm9ybWF0Q2FjaGVkPy5pbmNsdWRlcygnUScpOlxuICAgICAgICAgICAgICAgIHJldHVybiAnUSc7XG4gICAgICAgICAgICBjYXNlIGZvcm1hdENhY2hlZD8uaW5jbHVkZXMoJ1cnKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1cnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRUaW1lZnJhbWUoZm9ybWF0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIERyU2hhcmVkVXRpbHMuZ2V0VGltZWZyYW1lQnlEYXRlRm9ybWF0KGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZ2V0Q29uZmlndXJlZEZvcm1hdCh0aW1lZnJhbWU6IFRUaW1lZnJhbWVPcHRpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDb25maWdbdGltZWZyYW1lXTtcbiAgICB9XG5cbiAgICB1cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoZm9ybWF0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZEZvcm1hdCA9IHRoaXMubm9ybWFsaXplVmFsdWUoZm9ybWF0IHx8IHRoaXMuZm9ybWF0JC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgdGhpcy50aW1lZnJhbWUgPSB0aGlzLmdldFRpbWVmcmFtZShub3JtYWxpemVkRm9ybWF0KTtcbiAgICAgICAgdGhpcy5mb3JtYXQkLm5leHQodGhpcy5nZXRDb25maWd1cmVkRm9ybWF0KHRoaXMudGltZWZyYW1lKSk7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9kL2csICdEJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHF1YXJ0ZXIgbnVtYmVyIGZvciBkYXRlIGFjY29yZGluZyB0byBmaXNjYWwgeWVhclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UXVhcnRlckFjY29yZGluZ1RvRmlzY2FsWWVhcihkYXRlOiBNb21lbnQpOiBudW1iZXIge1xuICAgICAgICBsZXQgZmlzY2FsTW9udGggPSB0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllcjtcbiAgICAgICAgY29uc3QgZGF0ZU1vbnRoID0gZGF0ZS5tb250aCgpO1xuICAgICAgICBpZiAoZGF0ZU1vbnRoIDwgZmlzY2FsTW9udGgpIHtcbiAgICAgICAgICAgIGZpc2NhbE1vbnRoIC09IDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBNYXRoLnRydW5jKChkYXRlLm1vbnRoKCkgLSBmaXNjYWxNb250aCkgLyAzKSArIDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIGVuZCBvZiBxdWFydGVyIGluIEZZIGJ5IHBhc3NlZCBxdWFydGVyIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gcXVhcnRlck51bWJlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRFbmRPZlF1YXJ0ZXIoZGF0ZTogTW9tZW50LCBxdWFydGVyTnVtYmVyOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZGF0ZS5zdWJ0cmFjdCh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciwgJ00nKVxuICAgICAgICAgICAgLnN0YXJ0T2YoJ3llYXInKVxuICAgICAgICAgICAgLmFkZCh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciArIHF1YXJ0ZXJOdW1iZXIgKiAzIC0gMSwgJ00nKVxuICAgICAgICAgICAgLmVuZE9mKCdtb250aCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGF0ZSB0byBzdGFydCBvZiBxdWFydGVyIGluIEZZIGJ5IHBhc3NlZCBxdWFydGVyIG51bWJlclxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVcbiAgICAgKiBAcGFyYW0gcXVhcnRlck51bWJlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGFydE9mUXVhcnRlcihkYXRlOiBNb21lbnQsIHF1YXJ0ZXJOdW1iZXI6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkYXRlLnN1YnRyYWN0KHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyLCAnTScpXG4gICAgICAgICAgICAuc3RhcnRPZigneWVhcicpXG4gICAgICAgICAgICAuYWRkKHRoaXMuZmlzY2FsWWVhck1vbnRoc01vZGlmaWVyICsgKHF1YXJ0ZXJOdW1iZXIgLSAxKSAqIDMsICdNJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBkYXRlIHRvIGVuZCBvZiBjdXJyZW50IHF1YXJ0ZXIgKGluIHdoaWNoIGRhdGUgaXMgbG9jYXRlZCkgYWNjb3JkaW5nIHRvIEZZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRFbmRPZkN1cnJlbnRRdWFydGVyKGRhdGU6IE1vbWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldEVuZE9mUXVhcnRlcihkYXRlLCB0aGlzLmdldFF1YXJ0ZXJBY2NvcmRpbmdUb0Zpc2NhbFllYXIoZGF0ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZGF0ZSB0byBzdGFydCBvZiBjdXJyZW50IHF1YXJ0ZXIgKGluIHdoaWNoIGRhdGUgaXMgbG9jYXRlZCkgYWNjb3JkaW5nIHRvIEZZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTdGFydE9mQ3VycmVudFF1YXJ0ZXIoZGF0ZTogTW9tZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U3RhcnRPZlF1YXJ0ZXIoZGF0ZSwgdGhpcy5nZXRRdWFydGVyQWNjb3JkaW5nVG9GaXNjYWxZZWFyKGRhdGUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiBkYXRlIHNlbGVjdGlvbiBvbiB0aGlzIHRpbWVmcmFtZSBkZXBlbmRzIG9uIEZpc2NhbCBZZWFyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdGltZWZyYW1lXG4gICAgICovXG4gICAgcHVibGljIGlzVGltZWZyYW1lRGVwZW5kaW5nT25GWSh0aW1lZnJhbWU6IFRpbWVmcmFtZU9wdGlvbikge1xuICAgICAgICByZXR1cm4gXy5pbmNsdWRlcyhbVGltZWZyYW1lT3B0aW9uLlFVQVJURVIsIFRpbWVmcmFtZU9wdGlvbi5ZRUFSXSwgdGltZWZyYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdWJ0cmFjdCBmcm9tIGRhdGUgZmlzY2FsIHllYXIgc2hpZnQgbW9udGhzIGNvdW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdWJ0cmFjdEZpc2NhbFllYXJNb250aHNGcm9tRGF0ZShkYXRlOiBNb21lbnQpOiBNb21lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXREYXRlTW9kaWZpZWRCeUZpc2NhbE1vbnRocyhkYXRlLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgdG8gZGF0ZSBmaXNjYWwgeWVhciBzaGlmdCBtb250aHMgY291bnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICovXG4gICAgcHVibGljIGFkZEZpc2NhbFllYXJNb250aHNUb0RhdGUoZGF0ZTogTW9tZW50KTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZU1vZGlmaWVkQnlGaXNjYWxNb250aHMoZGF0ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZTogTW9tZW50LCBpc1N1YnRyYWN0OiBib29sZWFuID0gZmFsc2UpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5maXNjYWxZZWFyQmFjayB8fCAhdGhpcy5maXNjYWxZZWFyTW9udGhzTW9kaWZpZXIpIHJldHVybjtcbiAgICAgICAgcmV0dXJuIG1vbWVudERhdGVbaXNTdWJ0cmFjdCA/ICdzdWJ0cmFjdCcgOiAnYWRkJ10oMSwgJ3llYXInKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN1YnRyYWN0RmlzY2FsWWVhclNoaWZ0Rm9yWWVhcihtb21lbnREYXRlOiBNb21lbnQpOiBNb21lbnQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseUZpc2NhbFllYXJTaGlmdEZvclllYXIobW9tZW50RGF0ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIG9yIHN1YnRyYWN0IGRlcGVuZGluZyBvbiBpc1JldmVydCBwYXJlbWV0ZXIgRmlzY2FsIHllYXIgbW9udGggc2hpZnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlXG4gICAgICogQHBhcmFtIGlzU3VidHJhY3RcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldERhdGVNb2RpZmllZEJ5RmlzY2FsTW9udGhzKGRhdGU6IE1vbWVudCwgaXNTdWJ0cmFjdCA9IGZhbHNlKTogTW9tZW50IHtcbiAgICAgICAgcmV0dXJuIGRhdGUgPyBfLmNsb25lRGVlcChkYXRlKVtpc1N1YnRyYWN0ID8gJ3N1YnRyYWN0JyA6ICdhZGQnXSh0aGlzLmZpc2NhbFllYXJNb250aHNNb2RpZmllciwgJ21vbnRoJykgOiBkYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVEYXRlUGlja2VyQnlQcmVzZXQodGFnOiBEYXRlVGFncywgY2FsZW5kZXI6IGFueSkge1xuICAgICAgICB0aGlzLmtlZXBQcmVzZXRUYWcgPSB0cnVlO1xuICAgICAgICBsZXQgZGF0ZSA9IG51bGw7XG4gICAgICAgIGlmICh0YWcpIHtcbiAgICAgICAgICAgIGRhdGUgPSBEclNoYXJlZFV0aWxzLmdldERhdGVCeVRhZyh0YWcpO1xuICAgICAgICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIERhdGVUYWdzLlRPREFZOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuWUVTVEVSREFZOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NQVRfREVGQVVMVF9EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgRGF0ZVRhZ3MuVEhJU19NT05USDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lZnJhbWVBbmRGb3JtYXQoRGF0ZUZyb21hdHMuTU9OVEhfWUVBUl9GT1JNQVQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdERhdGVJbkNhbGVuZGFyTW9udGhWaWV3KGRhdGUsIGNhbGVuZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBEYXRlVGFncy5QUkVWX01PTlRIOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpbWVmcmFtZUFuZEZvcm1hdChEYXRlRnJvbWF0cy5NT05USF9ZRUFSX0ZPUk1BVCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZUluQ2FsZW5kYXJNb250aFZpZXcoZGF0ZSwgY2FsZW5kZXIpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXNldFRhZyQubmV4dCh0YWcpO1xuICAgICAgICB0aGlzLnVwZGF0ZWREYXRlQW5kQ2xvc2UkLm5leHQoZGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdERhdGVJbkNhbGVuZGFyTW9udGhWaWV3KGRhdGU6IE1vbWVudCwgY2FsZW5kZXI6IGFueSk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vbnRoVmlldyA9IGNhbGVuZGVyLm1vbnRoVmlldyBhcyBhbnk7XG4gICAgICAgICAgICBpZiAobW9udGhWaWV3KSB7XG4gICAgICAgICAgICAgICAgbW9udGhWaWV3Ll9hY3RpdmVEYXRlID0gZGF0ZTtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX3NlbGVjdGVkID0gZGF0ZTtcbiAgICAgICAgICAgICAgICBtb250aFZpZXcuX2luaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0UHJlc2V0VGFnKCkge1xuICAgICAgICBpZiAoIXRoaXMua2VlcFByZXNldFRhZykge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXRUYWckLm5leHQobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmtlZXBQcmVzZXRUYWcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -9,10 +9,10 @@ import * as moment from 'moment';
9
9
  import moment__default from 'moment';
10
10
  import * as i1$2 from '@angular/forms';
11
11
  import { NG_VALUE_ACCESSOR, FormBuilder, FormGroup, FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
12
- import { Observable, BehaviorSubject, distinctUntilChanged, map, Subject, startWith, takeUntil, noop as noop$3, combineLatest, from, merge as merge$1, fromEvent, filter as filter$1, switchMap as switchMap$1, observeOn, asyncScheduler, withLatestFrom, first as first$1, interval, throwError, finalize as finalize$1, tap as tap$1, defer } from 'rxjs';
12
+ import { Observable, BehaviorSubject, distinctUntilChanged, Subject, startWith, takeUntil, noop as noop$3, combineLatest, from, merge as merge$1, fromEvent, filter as filter$1, switchMap as switchMap$1, map as map$2, observeOn, asyncScheduler, withLatestFrom, first as first$1, interval, throwError, finalize as finalize$1, tap as tap$1, defer } from 'rxjs';
13
13
  import * as _ from 'lodash';
14
- import { isNil, isObject, cloneDeep, find, indexOf, reduce, map as map$2, isNumber, merge, forEach, some, orderBy, filter as filter$2, includes, pull, concat, isString, isBoolean, takeRight, take } from 'lodash';
15
- import { skip, debounceTime, filter, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, startWith as startWith$1, map as map$1, tap, shareReplay, switchMap, first, catchError, finalize, take as take$1 } from 'rxjs/operators';
14
+ import { isNil, isObject, cloneDeep, find, indexOf, reduce, map as map$1, isNumber, merge, forEach, some, orderBy, filter as filter$2, includes, pull, concat, isString, isBoolean, takeRight, take } from 'lodash';
15
+ import { skip, debounceTime, filter, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, startWith as startWith$1, map, tap, shareReplay, switchMap, first, catchError, finalize, take as take$1 } from 'rxjs/operators';
16
16
  import * as i5 from '@angular/material/datepicker';
17
17
  import { MatCalendar, DateRange, MAT_DATE_RANGE_SELECTION_STRATEGY, MatDatepickerModule } from '@angular/material/datepicker';
18
18
  import { transition, style, animate, trigger, state } from '@angular/animations';
@@ -241,7 +241,10 @@ class DrDatePickerService {
241
241
  this.isTimeframeSelectionEnabled = false;
242
242
  this._timeframe$ = new BehaviorSubject(TimeframeOption.DAY);
243
243
  this.timeframe$ = this._timeframe$.asObservable().pipe(distinctUntilChanged());
244
- this.format$ = this.timeframe$.pipe(map((timeframe) => this.getConfiguredFormat(timeframe)), distinctUntilChanged());
244
+ // TODO: here we can have inconsistency between format and timeframe
245
+ // we need to get rid of a separate subject and use pipe from timeframe$ for it
246
+ // making @Input() format in component just setting the timeframe
247
+ this.format$ = new BehaviorSubject(DateFromats.MAT_DEFAULT_DATE_FORMAT);
245
248
  this.updatedQuarter$ = new Subject();
246
249
  this.weekSelectionChange$ = new Subject();
247
250
  this.updatedDateAndClose$ = new Subject();
@@ -298,8 +301,9 @@ class DrDatePickerService {
298
301
  return this.formatConfig[timeframe];
299
302
  }
300
303
  updateTimeframeAndFormat(format) {
301
- const normalizedFormat = this.normalizeValue(format);
304
+ const normalizedFormat = this.normalizeValue(format || this.format$.getValue());
302
305
  this.timeframe = this.getTimeframe(normalizedFormat);
306
+ this.format$.next(this.getConfiguredFormat(this.timeframe));
303
307
  }
304
308
  normalizeValue(value) {
305
309
  return value.replace(/d/g, 'D');
@@ -2310,7 +2314,7 @@ class DrDatePickerComponent {
2310
2314
  this.displayValue$ = combineLatest([
2311
2315
  this.datePickerService.innerValue$.pipe(distinctUntilChanged$1()),
2312
2316
  this.datePickerService.timeframe$.pipe(distinctUntilChanged$1()),
2313
- ]).pipe(startWith$1([null, null]), map$1(([value, timeframe]) => this.transformDisplayedValue(value, timeframe)), tap((value) => {
2317
+ ]).pipe(startWith$1([null, null]), map(([value, timeframe]) => this.transformDisplayedValue(value, timeframe)), tap((value) => {
2314
2318
  if (value && this.datePickerService.calendarInstance) {
2315
2319
  this.datePickerService.calendarInstance.activeDate = value;
2316
2320
  this.datePickerService.calendarInstance.selected = value;
@@ -2520,6 +2524,7 @@ class DrDatePickerComponent {
2520
2524
  timeframe = this.datePickerService.getTimeframe(format);
2521
2525
  }
2522
2526
  this.datePickerService.timeframe = timeframe;
2527
+ this.datePickerService.format$.next(format);
2523
2528
  }
2524
2529
  onOpen() {
2525
2530
  this.opened$.next(true);
@@ -4060,7 +4065,7 @@ class DrDynamicTagComponent {
4060
4065
  return (valueFromConfig || currentValues[0]);
4061
4066
  }
4062
4067
  getParentValueKey() {
4063
- return map$2(this.connectedTags, (connectedTag) => {
4068
+ return map$1(this.connectedTags, (connectedTag) => {
4064
4069
  if (isNumber(connectedTag.value)) {
4065
4070
  const momentData = moment__default.unix(connectedTag.value);
4066
4071
  const convertedParentKey = this.parentKeyFormatterFn
@@ -4248,7 +4253,7 @@ class DrTagComponent {
4248
4253
  }
4249
4254
  onDynamicHandler(event) {
4250
4255
  const connectedDateTagConfig = find(this.tagsConfig, (tagConfig) => tagConfig.name === event.name);
4251
- this.connectedTags = map$2(this.connectedTags, (tag) => {
4256
+ this.connectedTags = map$1(this.connectedTags, (tag) => {
4252
4257
  if (tag.id === connectedDateTagConfig.id) {
4253
4258
  tag.value = event.value;
4254
4259
  tag.locked = event.locked;
@@ -5119,7 +5124,7 @@ class DrDatePickerWithTimeframeComponent extends DrDatePickerComponent {
5119
5124
  this.isNextDateDisabled = false;
5120
5125
  this.isPrevDateDisabled = false;
5121
5126
  this.onChangeDebounced$ = new Subject();
5122
- this.displayedFormattedValue$ = this.displayValue$.pipe(takeUntil$1(this.destroyed$), map$1((value) => {
5127
+ this.displayedFormattedValue$ = this.displayValue$.pipe(takeUntil$1(this.destroyed$), map((value) => {
5123
5128
  if (!value)
5124
5129
  return this.placeholder;
5125
5130
  return (this.datePickerService.getDisplayPrefix() +
@@ -7859,9 +7864,9 @@ class DrErrorComponent {
7859
7864
  this.displayAsLabel = false;
7860
7865
  this.noIcon = false;
7861
7866
  this.controlChange$ = new BehaviorSubject(null);
7862
- this.controlErrorStatus$ = this.controlChange$.pipe(filter$1(Boolean), switchMap$1((control) => control.statusChanges.pipe().pipe(map(() => control))), map((control) => control.status === 'INVALID' && !control.pristine));
7863
- this.error$ = this.controlErrorStatus$.pipe(observeOn(asyncScheduler), withLatestFrom(this.controlChange$), map(([show, control]) => [show, this.displayAsLabel ? this.errorString(control) : this.label]), map(([show, label]) => (show ? label : null)));
7864
- this.warning$ = this.controlChange$.pipe(map((control) => !!control.errors?.isWarning));
7867
+ this.controlErrorStatus$ = this.controlChange$.pipe(filter$1(Boolean), switchMap$1((control) => control.statusChanges.pipe().pipe(map$2(() => control))), map$2((control) => control.status === 'INVALID' && !control.pristine));
7868
+ this.error$ = this.controlErrorStatus$.pipe(observeOn(asyncScheduler), withLatestFrom(this.controlChange$), map$2(([show, control]) => [show, this.displayAsLabel ? this.errorString(control) : this.label]), map$2(([show, label]) => (show ? label : null)));
7869
+ this.warning$ = this.controlChange$.pipe(map$2((control) => !!control.errors?.isWarning));
7865
7870
  }
7866
7871
  set control(value) {
7867
7872
  if (value) {
@@ -8484,7 +8489,7 @@ class ScenarioService {
8484
8489
  return;
8485
8490
  if (!dateTag)
8486
8491
  return;
8487
- dateTag.subTags = map$2(dateTag.subTags, (subTag) => {
8492
+ dateTag.subTags = map$1(dateTag.subTags, (subTag) => {
8488
8493
  subTag.hidden = tag.toggle && !includes(tag.acceptableSubTags, subTag.subType);
8489
8494
  return subTag;
8490
8495
  });
@@ -9660,7 +9665,7 @@ class DropdownInstanceService {
9660
9665
  return this.instances.slice(this.instances.indexOf(ref));
9661
9666
  }
9662
9667
  inactive(ref) {
9663
- return this.instances$.pipe(map(() => this.getSequence(ref)), filter$1((value) => !!value.length), switchMap$1((value) => interval(200).pipe(map(() => value))), filter$1((emissions) => emissions.every((value) => !value.active())), takeUntil(this.destroy$));
9668
+ return this.instances$.pipe(map$2(() => this.getSequence(ref)), filter$1((value) => !!value.length), switchMap$1((value) => interval(200).pipe(map$2(() => value))), filter$1((emissions) => emissions.every((value) => !value.active())), takeUntil(this.destroy$));
9664
9669
  }
9665
9670
  }
9666
9671
 
@@ -13911,7 +13916,7 @@ class DrawerContainer extends CdkDialogContainer {
13911
13916
  }
13912
13917
  container.style.transition = 'transform 0.5s cubic-bezier(0.32, 0.72, 0, 1)';
13913
13918
  container.style.transform = `translate3d(0px, 0px, 0px)`;
13914
- }), takeUntil(mouseup$))), map((event) => this.positionStrategy.extractMousePosition(event)), distinctUntilChanged(), tap$1((position) => {
13919
+ }), takeUntil(mouseup$))), map$2((event) => this.positionStrategy.extractMousePosition(event)), distinctUntilChanged(), tap$1((position) => {
13915
13920
  let containerPosition = this.getContainerPosition(container);
13916
13921
  containerPosition = Math.min(containerPosition, lastPosition);
13917
13922
  lastPosition = Math.min(containerPosition, lastPosition);