@rivet-health/design-system 31.2.4 → 31.2.5

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.
@@ -225,7 +225,14 @@ export class CalendarComponent {
225
225
  }), shareReplay({ refCount: true, bufferSize: 1 }));
226
226
  this.activeYearMonthChange = new EventEmitter();
227
227
  this.dateSelect = new EventEmitter();
228
- this.trackByDate = (_, date) => date.date.valueOf();
228
+ this.trackByDate = (_, date) => JSON.stringify({
229
+ ...date,
230
+ date: [
231
+ date.date.getFullYear(),
232
+ date.date.getMonth() + 1,
233
+ date.date.getDate(),
234
+ ].join(':'),
235
+ });
229
236
  }
230
237
  set activeYearMonth(v) {
231
238
  this.activeYearMonth$.next(v);
@@ -308,4 +315,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
308
315
  CalendarComponent.defaultMin = timeYear.floor(timeYear.offset(new Date(), -7));
309
316
  CalendarComponent.defaultMax = timeDay.offset(timeYear.floor(timeYear.offset(new Date(), 5)), -1);
310
317
  })(CalendarComponent || (CalendarComponent = {}));
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRWQsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQXlCRCw2RUFBNkU7QUFDN0UsMkJBQTJCO0FBQzNCLG1HQUFtRztBQU9uRyxNQUFNLE9BQU8saUJBQWlCO0lBTjlC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QUFRLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDOUMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztBQUNKLENBQUMsRUFOZ0IsaUJBQWlCLEtBQWpCLGlCQUFpQixRQU1qQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVHJhY2tCeUZ1bmN0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHRpbWVEYXksXG4gIHRpbWVEYXlzLFxuICB0aW1lTW9udGgsXG4gIHRpbWVNb250aHMsXG4gIHRpbWVTdW5kYXksXG4gIHRpbWVZZWFyLFxuICB0aW1lWWVhcnMsXG59IGZyb20gJ2QzLXRpbWUnO1xuaW1wb3J0IHsgdGltZUZvcm1hdCB9IGZyb20gJ2QzLXRpbWUtZm9ybWF0JztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBzaGFyZVJlcGxheSxcbn0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IG1vbnRoRm9ybWF0dGVyID0gdGltZUZvcm1hdCgnJUInKTtcbmNvbnN0IHllYXJGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCclWScpO1xuY29uc3QgZGF5Rm9ybWF0dGVyID0gdGltZUZvcm1hdCgnJWUnKTtcbmNvbnN0IHdlZWtkYXlOdW1iZXJGb3JtYXR0ZXIgPSB0aW1lRm9ybWF0KCcldycpO1xuXG5mdW5jdGlvbiBnZXRXZWVrZGF5TnVtYmVyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICByZXR1cm4gcGFyc2VJbnQod2Vla2RheU51bWJlckZvcm1hdHRlcihkYXRlKSk7XG59XG5cbnR5cGUgRGF0ZU9wdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIGRhdGU6IERhdGU7XG59O1xuXG50eXBlIENhbGVuZGFyRGF0ZSA9IHtcbiAgZGF0ZTogRGF0ZTtcbiAgZGlzcGxheTogc3RyaW5nO1xuICBmYWRlSW46IGJvb2xlYW47XG4gIGZhZGVPdXQ6IGJvb2xlYW47XG4gIGhpZGRlbjogYm9vbGVhbjtcbiAgaW5DdXJyZW50TW9udGg6IGJvb2xlYW47XG4gIGluUmFuZ2U6IGJvb2xlYW47XG4gIHJvdW5kZWROZTogYm9vbGVhbjtcbiAgcm91bmRlZE53OiBib29sZWFuO1xuICByb3VuZGVkU2U6IGJvb2xlYW47XG4gIHJvdW5kZWRTdzogYm9vbGVhbjtcbiAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gIHRvZGF5OiBib29sZWFuO1xufTtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLlxuLy8gaHR0cHM6Ly93d3cubm90aW9uLnNvL3JpdmV0L1Jlc29sdmUtVE9ET3MtYWZ0ZXItQW5ndWxhci11cGdyYWRlLTFmMjY2N2ViMmEzMTgwYjc5ZjZhZDkyYTdlNTc2ZjA4XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYWxlbmRhci5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlWWVhck1vbnRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYWN0aXZlWWVhck1vbnRoKHY6IERhdGUpIHtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFjdGl2ZVllYXJNb250aCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5hY3RpdmVZZWFyTW9udGgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc3BsYXlNaW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihcbiAgICBDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWluLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlNaW4odjogRGF0ZSkge1xuICAgIHRoaXMuZGlzcGxheU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc3BsYXlNaW4oKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzcGxheU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KFxuICAgIENhbGVuZGFyQ29tcG9uZW50LmRlZmF1bHRNYXgsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGlzcGxheU1heCh2OiBEYXRlKSB7XG4gICAgdGhpcy5kaXNwbGF5TWF4JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzcGxheU1heCgpOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5TWF4JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3RhYmxlTWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGFibGVNaW4odjogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGFibGVNaW4oKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0YWJsZU1pbiQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0YWJsZU1heCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RhYmxlTWF4KHY6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RhYmxlTWF4KCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVNYXgkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IG9taXRSYW5nZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IG9taXRSYW5nZSh2OiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm9taXRSYW5nZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IG9taXRSYW5nZSgpOiBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9taXRSYW5nZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkVmFsdWUodjogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVmFsdWUoKTogRGF0ZSB8IFtEYXRlLCBEYXRlXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZSQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHllYXJPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgZGlzcGxheU1pbixcbiAgICAgICAgZGlzcGxheU1heCxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heDogRGF0ZSA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVZZWFycyh0aW1lWWVhci5mbG9vcihkaXNwbGF5TWluKSwgZGlzcGxheU1heClcbiAgICAgICAgICAucmV2ZXJzZSgpXG4gICAgICAgICAgLm1hcChmbG9vcmVkWWVhciA9PiB7XG4gICAgICAgICAgICBjb25zdCB5ZWFyID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgIGZsb29yZWRZZWFyLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgIGFjdGl2ZVllYXJNb250aC5nZXRNb250aCgpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGlkOiB5ZWFyLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgdGl0bGU6IHllYXJGb3JtYXR0ZXIoeWVhciksXG4gICAgICAgICAgICAgIGRpc2FibGVkOlxuICAgICAgICAgICAgICAgIHllYXIuZ2V0RnVsbFllYXIoKSA8IG1pbi5nZXRGdWxsWWVhcigpIHx8XG4gICAgICAgICAgICAgICAgeWVhci5nZXRGdWxsWWVhcigpID4gbWF4LmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICAgIGRhdGU6IHllYXIsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRZZWFyT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMueWVhck9wdGlvbnMkLFxuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW3llYXJPcHRpb25zLCBhY3RpdmVZZWFyTW9udGhdKSA9PlxuICAgICAgICB5ZWFyT3B0aW9ucy5maW5kKFxuICAgICAgICAgIHkgPT4geS5pZCA9PT0gYWN0aXZlWWVhck1vbnRoLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKSxcbiAgICAgICAgKSB8fCBudWxsLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBtb250aE9wdGlvbnMkOiBPYnNlcnZhYmxlPERhdGVPcHRpb25bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLmRpc3BsYXlNYXgkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW1xuICAgICAgICBhY3RpdmVZZWFyTW9udGgsXG4gICAgICAgIGRpc3BsYXlNaW4sXG4gICAgICAgIGRpc3BsYXlNYXgsXG4gICAgICAgIHNlbGVjdGFibGVNaW4sXG4gICAgICAgIHNlbGVjdGFibGVNYXgsXG4gICAgICBdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IHNlbGVjdGFibGVNaW4gPz8gZGlzcGxheU1pbjtcbiAgICAgICAgY29uc3QgbWF4ID0gc2VsZWN0YWJsZU1heCA/PyBkaXNwbGF5TWF4O1xuICAgICAgICByZXR1cm4gdGltZU1vbnRocyhcbiAgICAgICAgICB0aW1lWWVhci5mbG9vcihhY3RpdmVZZWFyTW9udGgpLFxuICAgICAgICAgIHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChhY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgKS5tYXAobW9udGggPT4ge1xuICAgICAgICAgIGNvbnN0IGFjdGl2ZVllYXIgPSBhY3RpdmVZZWFyTW9udGguZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICBjb25zdCBtaW5ZZWFyID0gbWluLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgY29uc3QgbWF4WWVhciA9IG1heC5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgIGNvbnN0IG1vbnRoTnVtYmVyID0gbW9udGguZ2V0TW9udGgoKTtcbiAgICAgICAgICBjb25zdCBtaW5Nb250aCA9IG1pbi5nZXRNb250aCgpO1xuICAgICAgICAgIGNvbnN0IG1heE1vbnRoID0gbWF4LmdldE1vbnRoKCk7XG5cbiAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9XG4gICAgICAgICAgICAoYWN0aXZlWWVhciA9PT0gbWluWWVhciAmJiBtb250aE51bWJlciA8IG1pbk1vbnRoKSB8fFxuICAgICAgICAgICAgKGFjdGl2ZVllYXIgPT09IG1heFllYXIgJiYgbW9udGhOdW1iZXIgPiBtYXhNb250aCkgfHxcbiAgICAgICAgICAgIGFjdGl2ZVllYXIgPCBtaW5ZZWFyIHx8XG4gICAgICAgICAgICBhY3RpdmVZZWFyID4gbWF4WWVhcjtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpZDogbW9udGhOdW1iZXIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRpdGxlOiBtb250aEZvcm1hdHRlcihtb250aCksXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGRhdGU6IG1vbnRoLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRNb250aE9wdGlvbiQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLm1vbnRoT3B0aW9ucyQsXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICBdKS5waXBlKFxuICAgIG1hcChcbiAgICAgIChbbW9udGhPcHRpb25zLCBhY3RpdmVZZWFyTW9udGhdKSA9PlxuICAgICAgICBtb250aE9wdGlvbnMuZmluZChcbiAgICAgICAgICBtID0+IG0uaWQgPT09IGFjdGl2ZVllYXJNb250aC5nZXRNb250aCgpLnRvU3RyaW5nKCksXG4gICAgICAgICkgfHwgbnVsbCxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgcHJldmlvdXNNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gICAgdGhpcy5kaXNwbGF5TWluJCxcbiAgICB0aGlzLnNlbGVjdGFibGVNaW4kLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3llYXJNb250aCwgZGlzcGxheU1pbiwgc2VsZWN0YWJsZU1pbl0pID0+IHtcbiAgICAgIGNvbnN0IG1pbjogRGF0ZSA9IHNlbGVjdGFibGVNaW4gPz8gZGlzcGxheU1pbjtcbiAgICAgIGNvbnN0IHByZXZpb3VzID0gdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQoeWVhck1vbnRoLCAtMSkpO1xuICAgICAgY29uc3QgbWluTW9udGggPSBtaW4uZ2V0TW9udGgoKTtcbiAgICAgIGNvbnN0IG1pblllYXIgPSBtaW4uZ2V0RnVsbFllYXIoKTtcbiAgICAgIGNvbnN0IHByZXZNb250aCA9IHByZXZpb3VzLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBwcmV2WWVhciA9IHByZXZpb3VzLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgIGNvbnN0IGRpc2FibGVkID1cbiAgICAgICAgKHByZXZZZWFyID09PSBtaW5ZZWFyICYmIHByZXZNb250aCA8IG1pbk1vbnRoKSB8fCBwcmV2WWVhciA8IG1pblllYXI7XG4gICAgICBpZiAoZGlzYWJsZWQpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHByZXZpb3VzO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IG5leHRNb250aCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gICAgdGhpcy5kaXNwbGF5TWF4JCxcbiAgICB0aGlzLnNlbGVjdGFibGVNYXgkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3llYXJNb250aCwgZGlzcGxheU1heCwgc2VsZWN0YWJsZU1heF0pID0+IHtcbiAgICAgIGNvbnN0IG1heDogRGF0ZSA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgIGNvbnN0IG5leHQgPSB0aW1lTW9udGguZmxvb3IodGltZU1vbnRoLm9mZnNldCh5ZWFyTW9udGgsIDEpKTtcbiAgICAgIGNvbnN0IG1heE1vbnRoID0gbWF4LmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBtYXhZZWFyID0gbWF4LmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBuZXh0TW9udGggPSBuZXh0LmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBuZXh0WWVhciA9IG5leHQuZ2V0RnVsbFllYXIoKTtcblxuICAgICAgY29uc3QgZGlzYWJsZWQgPVxuICAgICAgICAobmV4dFllYXIgPT09IG1heFllYXIgJiYgbmV4dE1vbnRoID4gbWF4TW9udGgpIHx8IG5leHRZZWFyID4gbWF4WWVhcjtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9KSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGVzSW5TZWxlY3RlZFJhbmdlJDogT2JzZXJ2YWJsZTxEYXRlW10+ID1cbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLnBpcGUoXG4gICAgICBtYXAoc2VsZWN0ZWRWYWx1ZSA9PiB7XG4gICAgICAgIGlmICghc2VsZWN0ZWRWYWx1ZSkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBbc2VsZWN0ZWRWYWx1ZV07XG4gICAgICAgIHJldHVybiB0aW1lRGF5cyhcbiAgICAgICAgICB0aW1lRGF5LmZsb29yKHNlbGVjdGVkVmFsdWVbMF0pLFxuICAgICAgICAgIHRpbWVEYXkuZmxvb3IodGltZURheS5vZmZzZXQoc2VsZWN0ZWRWYWx1ZVsxXSwgMSkpLFxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICAgICk7XG5cbiAgcmVhZG9ubHkgZGF0ZXMkOiBPYnNlcnZhYmxlPENhbGVuZGFyRGF0ZVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLFxuICAgIHRoaXMuZGF0ZXNJblNlbGVjdGVkUmFuZ2UkLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgICB0aGlzLm9taXRSYW5nZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgICBzZWxlY3RlZFZhbHVlLFxuICAgICAgICBkYXRlc0luU2VsZWN0ZWRSYW5nZSxcbiAgICAgICAgc2VsZWN0YWJsZU1pbixcbiAgICAgICAgc2VsZWN0YWJsZU1heCxcbiAgICAgICAgb21pdFJhbmdlLFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBjYWxlbmRhckRhdGVzID0gdGltZURheXMoXG4gICAgICAgICAgdGltZVN1bmRheS5mbG9vcihhY3RpdmVZZWFyTW9udGgpLFxuICAgICAgICAgIHRpbWVTdW5kYXkuY2VpbCh0aW1lTW9udGgub2Zmc2V0KGFjdGl2ZVllYXJNb250aCwgMSkpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBtaW5DYWxlbmRhckRhdGUgPSBjYWxlbmRhckRhdGVzWzBdO1xuICAgICAgICBjb25zdCBtYXhDYWxlbmRhckRhdGUgPSBjYWxlbmRhckRhdGVzW2NhbGVuZGFyRGF0ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzID0gbmV3IE1hcDxudW1iZXIsIFtudW1iZXIsIG51bWJlcl0+KCk7XG4gICAgICAgIGNvbnN0IHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZSA9IGRhdGVzSW5TZWxlY3RlZFJhbmdlLmZpbHRlcihcbiAgICAgICAgICBzZWxlY3RlZCA9PlxuICAgICAgICAgICAgc2VsZWN0ZWQudmFsdWVPZigpID49IG1pbkNhbGVuZGFyRGF0ZS52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgIHNlbGVjdGVkLnZhbHVlT2YoKSA8PSBtYXhDYWxlbmRhckRhdGUudmFsdWVPZigpICYmXG4gICAgICAgICAgICAoc2VsZWN0YWJsZU1pblxuICAgICAgICAgICAgICA/IHNlbGVjdGVkLnZhbHVlT2YoKSA+PSBzZWxlY3RhYmxlTWluLnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpICYmXG4gICAgICAgICAgICAoc2VsZWN0YWJsZU1heFxuICAgICAgICAgICAgICA/IHNlbGVjdGVkLnZhbHVlT2YoKSA8PSBzZWxlY3RhYmxlTWF4LnZhbHVlT2YoKVxuICAgICAgICAgICAgICA6IHRydWUpICYmXG4gICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgID8gc2VsZWN0ZWQudmFsdWVPZigpIDwgb21pdFJhbmdlWzBdLnZhbHVlT2YoKSB8fFxuICAgICAgICAgICAgICAgIHNlbGVjdGVkLnZhbHVlT2YoKSA+IG9taXRSYW5nZVsxXS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiB0cnVlKSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgZmlyc3RWaXNpYmxlU2VsZWN0ZWREYXRlT2Zmc2V0ID0gZ2V0V2Vla2RheU51bWJlcihcbiAgICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZVswXSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZS5mb3JFYWNoKChzZWxlY3RlZCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeCA9IGdldFdlZWtkYXlOdW1iZXIoc2VsZWN0ZWQpO1xuICAgICAgICAgICAgY29uc3QgeSA9IE1hdGguZmxvb3IoKGkgKyBmaXJzdFZpc2libGVTZWxlY3RlZERhdGVPZmZzZXQpIC8gNyk7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGVDb29yZGluYXRlcy5zZXQoc2VsZWN0ZWQudmFsdWVPZigpLCBbeCwgeV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZUNvb3JkaW5hdGVzKGNvb3JkaW5hdGVzOiBbbnVtYmVyLCBudW1iZXJdKTogc3RyaW5nIHtcbiAgICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXMuam9pbignOicpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMgPSBuZXcgU2V0KFxuICAgICAgICAgIFsuLi5zZWxlY3RlZERhdGVDb29yZGluYXRlcy52YWx1ZXMoKV0ubWFwKHNlcmlhbGl6ZUNvb3JkaW5hdGVzKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRSb3VuZGVkQ29ybmVycyhkYXRlOiBEYXRlKToge1xuICAgICAgICAgIG53OiBib29sZWFuO1xuICAgICAgICAgIG5lOiBib29sZWFuO1xuICAgICAgICAgIHNlOiBib29sZWFuO1xuICAgICAgICAgIHN3OiBib29sZWFuO1xuICAgICAgICB9IHtcbiAgICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IHNlbGVjdGVkRGF0ZUNvb3JkaW5hdGVzLmdldChkYXRlLnZhbHVlT2YoKSk7XG4gICAgICAgICAgaWYgKCFjb29yZGluYXRlcylcbiAgICAgICAgICAgIHJldHVybiB7IG53OiBmYWxzZSwgbmU6IGZhbHNlLCBzZTogZmFsc2UsIHN3OiBmYWxzZSB9O1xuICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGNvb3JkaW5hdGVzO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4LCB5IC0gMV0pLFxuICAgICAgICAgICAgcmlnaHQgPSBzZXJpYWxpemVDb29yZGluYXRlcyhbeCArIDEsIHldKSxcbiAgICAgICAgICAgIGJvdHRvbSA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4LCB5ICsgMV0pLFxuICAgICAgICAgICAgbGVmdCA9IHNlcmlhbGl6ZUNvb3JkaW5hdGVzKFt4IC0gMSwgeV0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBudzpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyh0b3ApICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMobGVmdCksXG4gICAgICAgICAgICBuZTpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyh0b3ApICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMocmlnaHQpLFxuICAgICAgICAgICAgc2U6XG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMocmlnaHQpICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMoYm90dG9tKSxcbiAgICAgICAgICAgIHN3OlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKGxlZnQpICYmXG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXMoYm90dG9tKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlVmFsdWVzID0gbmV3IFNldChcbiAgICAgICAgICB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2UubWFwKHNlbGVjdGVkID0+IHNlbGVjdGVkLnZhbHVlT2YoKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG9kYXkgPSB0aW1lRGF5LmZsb29yKG5ldyBEYXRlKCkpO1xuXG4gICAgICAgIHJldHVybiBjYWxlbmRhckRhdGVzLm1hcChkYXRlID0+IHtcbiAgICAgICAgICBjb25zdCB7IG53LCBuZSwgc2UsIHN3IH0gPSBnZXRSb3VuZGVkQ29ybmVycyhkYXRlKTtcbiAgICAgICAgICBjb25zdCBkYXRlVmFsdWUgPSBkYXRlLnZhbHVlT2YoKTtcbiAgICAgICAgICBjb25zdCBpblJhbmdlID0gdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlVmFsdWVzLmhhcyhkYXRlVmFsdWUpO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRWYWx1ZVxuICAgICAgICAgICAgPyBzZWxlY3RlZFZhbHVlIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgICA/IGRhdGVWYWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiBkYXRlVmFsdWUgPT09IHNlbGVjdGVkVmFsdWVbMF0udmFsdWVPZigpIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PSBzZWxlY3RlZFZhbHVlWzFdLnZhbHVlT2YoKVxuICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0ZSxcbiAgICAgICAgICAgIGRpc3BsYXk6IGRheUZvcm1hdHRlcihkYXRlKSxcbiAgICAgICAgICAgIGZhZGVJbjpcbiAgICAgICAgICAgICAgaW5SYW5nZSAmJlxuICAgICAgICAgICAgICAoZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgIE1hdGgubWF4KFxuICAgICAgICAgICAgICAgICAgbWluQ2FsZW5kYXJEYXRlLnZhbHVlT2YoKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVNaW4/LnZhbHVlT2YoKSA/PyAtSW5maW5pdHksXG4gICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9PT1cbiAgICAgICAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgPyB0aW1lRGF5Lm9mZnNldChvbWl0UmFuZ2VbMV0sIDEpLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICA6IC1JbmZpbml0eSkpLFxuICAgICAgICAgICAgZmFkZU91dDpcbiAgICAgICAgICAgICAgaW5SYW5nZSAmJlxuICAgICAgICAgICAgICAoZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgIE1hdGgubWluKFxuICAgICAgICAgICAgICAgICAgbWF4Q2FsZW5kYXJEYXRlLnZhbHVlT2YoKSxcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVNYXg/LnZhbHVlT2YoKSA/PyBJbmZpbml0eSxcbiAgICAgICAgICAgICAgICApIHx8XG4gICAgICAgICAgICAgICAgZGF0ZVZhbHVlID09PVxuICAgICAgICAgICAgICAgICAgKG9taXRSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IHRpbWVEYXkub2Zmc2V0KG9taXRSYW5nZVswXSwgLTEpLnZhbHVlT2YoKVxuICAgICAgICAgICAgICAgICAgICA6IEluZmluaXR5KSksXG4gICAgICAgICAgICBoaWRkZW46XG4gICAgICAgICAgICAgIGRhdGVWYWx1ZSA8IChzZWxlY3RhYmxlTWluPy52YWx1ZU9mKCkgPz8gLUluZmluaXR5KSB8fFxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPiAoc2VsZWN0YWJsZU1heD8udmFsdWVPZigpID8/IEluZmluaXR5KSB8fFxuICAgICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgICAgPyBvbWl0UmFuZ2VbMF0udmFsdWVPZigpIDw9IGRhdGVWYWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlIDw9IG9taXRSYW5nZVsxXS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICA6IGZhbHNlKSxcbiAgICAgICAgICAgIGluQ3VycmVudE1vbnRoOlxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPj0gYWN0aXZlWWVhck1vbnRoLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPCB0aW1lTW9udGgub2Zmc2V0KGFjdGl2ZVllYXJNb250aCwgMSkudmFsdWVPZigpLFxuICAgICAgICAgICAgaW5SYW5nZSxcbiAgICAgICAgICAgIHJvdW5kZWROZTogbmUsXG4gICAgICAgICAgICByb3VuZGVkTnc6IG53LFxuICAgICAgICAgICAgcm91bmRlZFNlOiBzZSxcbiAgICAgICAgICAgIHJvdW5kZWRTdzogc3csXG4gICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgIHRvZGF5OiBkYXRlVmFsdWUgPT09IHRvZGF5LnZhbHVlT2YoKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHNlbGVjdERheShkYXk6IENhbGVuZGFyRGF0ZSkge1xuICAgIGlmICghZGF5LmluQ3VycmVudE1vbnRoKSB7XG4gICAgICB0aGlzLmFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHRpbWVNb250aC5mbG9vcihkYXkuZGF0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmRhdGVTZWxlY3QuZW1pdChkYXkuZGF0ZSk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgYWN0aXZlWWVhck1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIGVtaXRBY3RpdmVZZWFyTW9udGgoeWVhck1vbnRoOiBEYXRlIHwgbnVsbCkge1xuICAgIGlmICh5ZWFyTW9udGgpIHRoaXMuYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQoeWVhck1vbnRoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBkYXRlU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xuXG4gIHRyYWNrQnlEYXRlOiBUcmFja0J5RnVuY3Rpb248Q2FsZW5kYXJEYXRlPiA9IChfLCBkYXRlKSA9PiBkYXRlLmRhdGUudmFsdWVPZigpO1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIENhbGVuZGFyQ29tcG9uZW50IHtcbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRNaW4gPSB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQobmV3IERhdGUoKSwgLTcpKTtcbiAgZXhwb3J0IGNvbnN0IGRlZmF1bHRNYXggPSB0aW1lRGF5Lm9mZnNldChcbiAgICB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQobmV3IERhdGUoKSwgNSkpLFxuICAgIC0xLFxuICApO1xufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRyb2xzXCI+XG4gIDxkaXY+XG4gICAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgICBbZmlsdGVyYWJpbGl0eU9wdGlvbnNdPVwieyBlbmFibGVkOiB0cnVlLCBwbGFjZWhvbGRlcjogJ01vbnRoJyB9XCJcbiAgICAgIFtvcmRlckJ5XT1cIidzb3VyY2UnXCJcbiAgICAgIFtvcHRpb25Hcm91cHNdPVwibW9udGhPcHRpb25zJCB8IGFzeW5jIHwgcml2T3B0aW9uR3JvdXBcIlxuICAgICAgW3NlbGVjdGVkT3B0aW9uXT1cInNlbGVjdGVkTW9udGhPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cImVtaXRBY3RpdmVZZWFyTW9udGgoJGV2ZW50Py5kYXRlID8/IG51bGwpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXIgbGV0LXN0YXRlPVwic3RhdGVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgIFtpY29uXT1cInN0YXRlLmRpc3BsYXkub3BlbiA/ICdDaGV2cm9uVXAnIDogJ0NoZXZyb25Eb3duJ1wiXG4gICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCInbGFzdCdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3RhdGUuZGlzcGxheS5mb3JtYXR0ZWRTZWxlY3RlZE9wdGlvbnMgfHwgJy4uLicgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcml2LXNpbXBsZS1zZWxlY3Q+XG4gICAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgICBbZmlsdGVyYWJpbGl0eU9wdGlvbnNdPVwieyBlbmFibGVkOiB0cnVlLCBwbGFjZWhvbGRlcjogJ1llYXInIH1cIlxuICAgICAgW29yZGVyQnldPVwiJ3NvdXJjZSdcIlxuICAgICAgW29wdGlvbkdyb3Vwc109XCJ5ZWFyT3B0aW9ucyQgfCBhc3luYyB8IHJpdk9wdGlvbkdyb3VwXCJcbiAgICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZFllYXJPcHRpb24kIHwgYXN5bmNcIlxuICAgICAgKHNlbGVjdGVkT3B0aW9uQ2hhbmdlKT1cImVtaXRBY3RpdmVZZWFyTW9udGgoJGV2ZW50Py5kYXRlID8/IG51bGwpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgI3RyaWdnZXIgbGV0LXN0YXRlPVwic3RhdGVcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHJpdkJ1dHRvblxuICAgICAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgICAgIFtpY29uXT1cInN0YXRlLmRpc3BsYXkub3BlbiA/ICdDaGV2cm9uVXAnIDogJ0NoZXZyb25Eb3duJ1wiXG4gICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCInbGFzdCdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgc3RhdGUuZGlzcGxheS5mb3JtYXR0ZWRTZWxlY3RlZE9wdGlvbnMgfHwgJy4uLicgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcml2LXNpbXBsZS1zZWxlY3Q+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJ7IHByZXY6IHByZXZpb3VzTW9udGgkIHwgYXN5bmMsIG5leHQ6IG5leHRNb250aCQgfCBhc3luYyB9OyBsZXQgdm1cIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgcml2QnV0dG9uXG4gICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgIFt2YXJpYW50XT1cIidnaG9zdCdcIlxuICAgICAgW2ljb25dPVwiJ0Fycm93TGVmdCdcIlxuICAgICAgW2Rpc2FibGVkXT1cIiF2bS5wcmV2XCJcbiAgICAgIChjbGljayk9XCJ2bS5wcmV2ID8gYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQodm0ucHJldikgOiBudWxsXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID48L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICByaXZCdXR0b25cbiAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICBbaWNvbl09XCInQXJyb3dSaWdodCdcIlxuICAgICAgW2Rpc2FibGVkXT1cIiF2bS5uZXh0XCJcbiAgICAgIChjbGljayk9XCJ2bS5uZXh0ID8gYWN0aXZlWWVhck1vbnRoQ2hhbmdlLmVtaXQodm0ubmV4dCkgOiBudWxsXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID48L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJjYWxlbmRhclwiPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+U3U8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5Nbzwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlR1PC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+V2U8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5UaDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkZyPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+U2E8L3NwYW4+XG4gIDxidXR0b25cbiAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRhdGVzJCB8IGFzeW5jOyB0cmFja0J5OiB0cmFja0J5RGF0ZVwiXG4gICAgY2xhc3M9XCJkYXlcIlxuICAgIFtkaXNhYmxlZF09XCJkYXkuaGlkZGVuXCJcbiAgICBbY2xhc3MuaGlkZGVuXT1cImRheS5oaWRkZW5cIlxuICAgIFtjbGFzcy5ibGVlZF09XCIhZGF5LmluQ3VycmVudE1vbnRoICYmICFkYXkuaGlkZGVuXCJcbiAgICBbY2xhc3MuZmFkZS1pbl09XCJkYXkuZmFkZUluXCJcbiAgICBbY2xhc3MuZmFkZS1vdXRdPVwiZGF5LmZhZGVPdXRcIlxuICAgIFtjbGFzcy5pbi1yYW5nZV09XCJkYXkuaW5SYW5nZVwiXG4gICAgW2NsYXNzLnJvdW5kZWQtbmVdPVwiZGF5LnJvdW5kZWROZVwiXG4gICAgW2NsYXNzLnJvdW5kZWQtbnddPVwiZGF5LnJvdW5kZWROd1wiXG4gICAgW2NsYXNzLnJvdW5kZWQtc2VdPVwiZGF5LnJvdW5kZWRTZVwiXG4gICAgW2NsYXNzLnJvdW5kZWQtc3ddPVwiZGF5LnJvdW5kZWRTd1wiXG4gICAgKGNsaWNrKT1cInNlbGVjdERheShkYXkpXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImRheS13cmFwcGVyXCJcbiAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuc2VsZWN0ZWRcIlxuICAgICAgW2NsYXNzLnRvZGF5XT1cImRheS50b2RheVwiXG4gICAgPlxuICAgICAge3sgZGF5LmRpc3BsYXkgfX1cbiAgICA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvaW5wdXQvY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsUUFBUSxFQUNSLFNBQVMsR0FDVixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRWQsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hDLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFaEQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQXlCRCw2RUFBNkU7QUFDN0UsMkJBQTJCO0FBQzNCLG1HQUFtRztBQU9uRyxNQUFNLE9BQU8saUJBQWlCO0lBTjlC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OztBQWNULFdBQWlCLGlCQUFpQjtJQUNuQiw0QkFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCw0QkFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ3RDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzlDLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDLEVBTmdCLGlCQUFpQixLQUFqQixpQkFBaUIsUUFNakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRyYWNrQnlGdW5jdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICB0aW1lRGF5LFxuICB0aW1lRGF5cyxcbiAgdGltZU1vbnRoLFxuICB0aW1lTW9udGhzLFxuICB0aW1lU3VuZGF5LFxuICB0aW1lWWVhcixcbiAgdGltZVllYXJzLFxufSBmcm9tICdkMy10aW1lJztcbmltcG9ydCB7IHRpbWVGb3JtYXQgfSBmcm9tICdkMy10aW1lLWZvcm1hdCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMnO1xuXG5jb25zdCBtb250aEZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyVCJyk7XG5jb25zdCB5ZWFyRm9ybWF0dGVyID0gdGltZUZvcm1hdCgnJVknKTtcbmNvbnN0IGRheUZvcm1hdHRlciA9IHRpbWVGb3JtYXQoJyVlJyk7XG5jb25zdCB3ZWVrZGF5TnVtYmVyRm9ybWF0dGVyID0gdGltZUZvcm1hdCgnJXcnKTtcblxuZnVuY3Rpb24gZ2V0V2Vla2RheU51bWJlcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcbiAgcmV0dXJuIHBhcnNlSW50KHdlZWtkYXlOdW1iZXJGb3JtYXR0ZXIoZGF0ZSkpO1xufVxuXG50eXBlIERhdGVPcHRpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBkYXRlOiBEYXRlO1xufTtcblxudHlwZSBDYWxlbmRhckRhdGUgPSB7XG4gIGRhdGU6IERhdGU7XG4gIGRpc3BsYXk6IHN0cmluZztcbiAgZmFkZUluOiBib29sZWFuO1xuICBmYWRlT3V0OiBib29sZWFuO1xuICBoaWRkZW46IGJvb2xlYW47XG4gIGluQ3VycmVudE1vbnRoOiBib29sZWFuO1xuICBpblJhbmdlOiBib29sZWFuO1xuICByb3VuZGVkTmU6IGJvb2xlYW47XG4gIHJvdW5kZWROdzogYm9vbGVhbjtcbiAgcm91bmRlZFNlOiBib29sZWFuO1xuICByb3VuZGVkU3c6IGJvb2xlYW47XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICB0b2RheTogYm9vbGVhbjtcbn07XG5cbi8vIFRPRE86IG9uY2Ugd2UgdXBncmFkZSB0byBBbmd1bGFyIDE2LCB0aGlzIGNvbXBvbmVudCBjYW4gYmUgY2xlYW5lZCB1cCB3aXRoXG4vLyBzaWduYWxzIGluc3RlYWQgb2YgUnhKUy5cbi8vIGh0dHBzOi8vd3d3Lm5vdGlvbi5zby9yaXZldC9SZXNvbHZlLVRPRE9zLWFmdGVyLUFuZ3VsYXItdXBncmFkZS0xZjI2NjdlYjJhMzE4MGI3OWY2YWQ5MmE3ZTU3NmYwOFxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2ZVllYXJNb250aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KG5ldyBEYXRlKCkpO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZVllYXJNb250aCh2OiBEYXRlKSB7XG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBhY3RpdmVZZWFyTW9udGgoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlWWVhck1vbnRoJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNwbGF5TWluJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4oXG4gICAgQ2FsZW5kYXJDb21wb25lbnQuZGVmYXVsdE1pbixcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNwbGF5TWluKHY6IERhdGUpIHtcbiAgICB0aGlzLmRpc3BsYXlNaW4kLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBkaXNwbGF5TWluKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLmRpc3BsYXlNaW4kLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRpc3BsYXlNYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlPihcbiAgICBDYWxlbmRhckNvbXBvbmVudC5kZWZhdWx0TWF4LFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRpc3BsYXlNYXgodjogRGF0ZSkge1xuICAgIHRoaXMuZGlzcGxheU1heCQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGRpc3BsYXlNYXgoKTogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGxheU1heCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0YWJsZU1pbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGUgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RhYmxlTWluKHY6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGFibGVNaW4kLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RhYmxlTWluKCk6IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGFibGVNaW4kLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGFibGVNYXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYXRlIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0YWJsZU1heCh2OiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgc2VsZWN0YWJsZU1heCgpOiBEYXRlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlTWF4JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvbWl0UmFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBvbWl0UmFuZ2UodjogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5vbWl0UmFuZ2UkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBvbWl0UmFuZ2UoKTogW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vbWl0UmFuZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBEYXRlIHwgW0RhdGUsIERhdGVdIHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RlZFZhbHVlKHY6IERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWUkLm5leHQodik7XG4gIH1cbiAgcHVibGljIGdldCBzZWxlY3RlZFZhbHVlKCk6IERhdGUgfCBbRGF0ZSwgRGF0ZV0gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWUkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSB5ZWFyT3B0aW9ucyQ6IE9ic2VydmFibGU8RGF0ZU9wdGlvbltdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZGlzcGxheU1pbiQsXG4gICAgdGhpcy5kaXNwbGF5TWF4JCxcbiAgICB0aGlzLnNlbGVjdGFibGVNaW4kLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1heCQsXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICBdKS5waXBlKFxuICAgIG1hcChcbiAgICAgIChbXG4gICAgICAgIGRpc3BsYXlNaW4sXG4gICAgICAgIGRpc3BsYXlNYXgsXG4gICAgICAgIHNlbGVjdGFibGVNaW4sXG4gICAgICAgIHNlbGVjdGFibGVNYXgsXG4gICAgICAgIGFjdGl2ZVllYXJNb250aCxcbiAgICAgIF0pID0+IHtcbiAgICAgICAgY29uc3QgbWluOiBEYXRlID0gc2VsZWN0YWJsZU1pbiA/PyBkaXNwbGF5TWluO1xuICAgICAgICBjb25zdCBtYXg6IERhdGUgPSBzZWxlY3RhYmxlTWF4ID8/IGRpc3BsYXlNYXg7XG4gICAgICAgIHJldHVybiB0aW1lWWVhcnModGltZVllYXIuZmxvb3IoZGlzcGxheU1pbiksIGRpc3BsYXlNYXgpXG4gICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgIC5tYXAoZmxvb3JlZFllYXIgPT4ge1xuICAgICAgICAgICAgY29uc3QgeWVhciA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICBmbG9vcmVkWWVhci5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgICBhY3RpdmVZZWFyTW9udGguZ2V0TW9udGgoKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBpZDogeWVhci5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgIHRpdGxlOiB5ZWFyRm9ybWF0dGVyKHllYXIpLFxuICAgICAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgICAgICB5ZWFyLmdldEZ1bGxZZWFyKCkgPCBtaW4uZ2V0RnVsbFllYXIoKSB8fFxuICAgICAgICAgICAgICAgIHllYXIuZ2V0RnVsbFllYXIoKSA+IG1heC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgICBkYXRlOiB5ZWFyLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkWWVhck9wdGlvbiQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnllYXJPcHRpb25zJCxcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFt5ZWFyT3B0aW9ucywgYWN0aXZlWWVhck1vbnRoXSkgPT5cbiAgICAgICAgeWVhck9wdGlvbnMuZmluZChcbiAgICAgICAgICB5ID0+IHkuaWQgPT09IGFjdGl2ZVllYXJNb250aC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCksXG4gICAgICAgICkgfHwgbnVsbCxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbW9udGhPcHRpb25zJDogT2JzZXJ2YWJsZTxEYXRlT3B0aW9uW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1pbiQsXG4gICAgdGhpcy5kaXNwbGF5TWF4JCxcbiAgICB0aGlzLnNlbGVjdGFibGVNaW4kLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1heCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtcbiAgICAgICAgYWN0aXZlWWVhck1vbnRoLFxuICAgICAgICBkaXNwbGF5TWluLFxuICAgICAgICBkaXNwbGF5TWF4LFxuICAgICAgICBzZWxlY3RhYmxlTWluLFxuICAgICAgICBzZWxlY3RhYmxlTWF4LFxuICAgICAgXSkgPT4ge1xuICAgICAgICBjb25zdCBtaW4gPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICAgIGNvbnN0IG1heCA9IHNlbGVjdGFibGVNYXggPz8gZGlzcGxheU1heDtcbiAgICAgICAgcmV0dXJuIHRpbWVNb250aHMoXG4gICAgICAgICAgdGltZVllYXIuZmxvb3IoYWN0aXZlWWVhck1vbnRoKSxcbiAgICAgICAgICB0aW1lWWVhci5mbG9vcih0aW1lWWVhci5vZmZzZXQoYWN0aXZlWWVhck1vbnRoLCAxKSksXG4gICAgICAgICkubWFwKG1vbnRoID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVZZWFyID0gYWN0aXZlWWVhck1vbnRoLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgY29uc3QgbWluWWVhciA9IG1pbi5nZXRGdWxsWWVhcigpO1xuICAgICAgICAgIGNvbnN0IG1heFllYXIgPSBtYXguZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICBjb25zdCBtb250aE51bWJlciA9IG1vbnRoLmdldE1vbnRoKCk7XG4gICAgICAgICAgY29uc3QgbWluTW9udGggPSBtaW4uZ2V0TW9udGgoKTtcbiAgICAgICAgICBjb25zdCBtYXhNb250aCA9IG1heC5nZXRNb250aCgpO1xuXG4gICAgICAgICAgY29uc3QgZGlzYWJsZWQgPVxuICAgICAgICAgICAgKGFjdGl2ZVllYXIgPT09IG1pblllYXIgJiYgbW9udGhOdW1iZXIgPCBtaW5Nb250aCkgfHxcbiAgICAgICAgICAgIChhY3RpdmVZZWFyID09PSBtYXhZZWFyICYmIG1vbnRoTnVtYmVyID4gbWF4TW9udGgpIHx8XG4gICAgICAgICAgICBhY3RpdmVZZWFyIDwgbWluWWVhciB8fFxuICAgICAgICAgICAgYWN0aXZlWWVhciA+IG1heFllYXI7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWQ6IG1vbnRoTnVtYmVyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0aXRsZTogbW9udGhGb3JtYXR0ZXIobW9udGgpLFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBkYXRlOiBtb250aCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkTW9udGhPcHRpb24kID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5tb250aE9wdGlvbnMkLFxuICAgIHRoaXMuYWN0aXZlWWVhck1vbnRoJCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW21vbnRoT3B0aW9ucywgYWN0aXZlWWVhck1vbnRoXSkgPT5cbiAgICAgICAgbW9udGhPcHRpb25zLmZpbmQoXG4gICAgICAgICAgbSA9PiBtLmlkID09PSBhY3RpdmVZZWFyTW9udGguZ2V0TW9udGgoKS50b1N0cmluZygpLFxuICAgICAgICApIHx8IG51bGwsXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHByZXZpb3VzTW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1pbiQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWluJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt5ZWFyTW9udGgsIGRpc3BsYXlNaW4sIHNlbGVjdGFibGVNaW5dKSA9PiB7XG4gICAgICBjb25zdCBtaW46IERhdGUgPSBzZWxlY3RhYmxlTWluID8/IGRpc3BsYXlNaW47XG4gICAgICBjb25zdCBwcmV2aW91cyA9IHRpbWVNb250aC5mbG9vcih0aW1lTW9udGgub2Zmc2V0KHllYXJNb250aCwgLTEpKTtcbiAgICAgIGNvbnN0IG1pbk1vbnRoID0gbWluLmdldE1vbnRoKCk7XG4gICAgICBjb25zdCBtaW5ZZWFyID0gbWluLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBwcmV2TW9udGggPSBwcmV2aW91cy5nZXRNb250aCgpO1xuICAgICAgY29uc3QgcHJldlllYXIgPSBwcmV2aW91cy5nZXRGdWxsWWVhcigpO1xuXG4gICAgICBjb25zdCBkaXNhYmxlZCA9XG4gICAgICAgIChwcmV2WWVhciA9PT0gbWluWWVhciAmJiBwcmV2TW9udGggPCBtaW5Nb250aCkgfHwgcHJldlllYXIgPCBtaW5ZZWFyO1xuICAgICAgaWYgKGRpc2FibGVkKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBwcmV2aW91cztcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBuZXh0TW9udGgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5hY3RpdmVZZWFyTW9udGgkLFxuICAgIHRoaXMuZGlzcGxheU1heCQsXG4gICAgdGhpcy5zZWxlY3RhYmxlTWF4JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFt5ZWFyTW9udGgsIGRpc3BsYXlNYXgsIHNlbGVjdGFibGVNYXhdKSA9PiB7XG4gICAgICBjb25zdCBtYXg6IERhdGUgPSBzZWxlY3RhYmxlTWF4ID8/IGRpc3BsYXlNYXg7XG4gICAgICBjb25zdCBuZXh0ID0gdGltZU1vbnRoLmZsb29yKHRpbWVNb250aC5vZmZzZXQoeWVhck1vbnRoLCAxKSk7XG4gICAgICBjb25zdCBtYXhNb250aCA9IG1heC5nZXRNb250aCgpO1xuICAgICAgY29uc3QgbWF4WWVhciA9IG1heC5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgbmV4dE1vbnRoID0gbmV4dC5nZXRNb250aCgpO1xuICAgICAgY29uc3QgbmV4dFllYXIgPSBuZXh0LmdldEZ1bGxZZWFyKCk7XG5cbiAgICAgIGNvbnN0IGRpc2FibGVkID1cbiAgICAgICAgKG5leHRZZWFyID09PSBtYXhZZWFyICYmIG5leHRNb250aCA+IG1heE1vbnRoKSB8fCBuZXh0WWVhciA+IG1heFllYXI7XG4gICAgICBpZiAoZGlzYWJsZWQpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkYXRlc0luU2VsZWN0ZWRSYW5nZSQ6IE9ic2VydmFibGU8RGF0ZVtdPiA9XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlJC5waXBlKFxuICAgICAgbWFwKHNlbGVjdGVkVmFsdWUgPT4ge1xuICAgICAgICBpZiAoIXNlbGVjdGVkVmFsdWUpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKHNlbGVjdGVkVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gW3NlbGVjdGVkVmFsdWVdO1xuICAgICAgICByZXR1cm4gdGltZURheXMoXG4gICAgICAgICAgdGltZURheS5mbG9vcihzZWxlY3RlZFZhbHVlWzBdKSxcbiAgICAgICAgICB0aW1lRGF5LmZsb29yKHRpbWVEYXkub2Zmc2V0KHNlbGVjdGVkVmFsdWVbMV0sIDEpKSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgICApO1xuXG4gIHJlYWRvbmx5IGRhdGVzJDogT2JzZXJ2YWJsZTxDYWxlbmRhckRhdGVbXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmFjdGl2ZVllYXJNb250aCQsXG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlJCxcbiAgICB0aGlzLmRhdGVzSW5TZWxlY3RlZFJhbmdlJCxcbiAgICB0aGlzLnNlbGVjdGFibGVNaW4kLFxuICAgIHRoaXMuc2VsZWN0YWJsZU1heCQsXG4gICAgdGhpcy5vbWl0UmFuZ2UkLFxuICBdKS5waXBlKFxuICAgIG1hcChcbiAgICAgIChbXG4gICAgICAgIGFjdGl2ZVllYXJNb250aCxcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZSxcbiAgICAgICAgZGF0ZXNJblNlbGVjdGVkUmFuZ2UsXG4gICAgICAgIHNlbGVjdGFibGVNaW4sXG4gICAgICAgIHNlbGVjdGFibGVNYXgsXG4gICAgICAgIG9taXRSYW5nZSxcbiAgICAgIF0pID0+IHtcbiAgICAgICAgY29uc3QgY2FsZW5kYXJEYXRlcyA9IHRpbWVEYXlzKFxuICAgICAgICAgIHRpbWVTdW5kYXkuZmxvb3IoYWN0aXZlWWVhck1vbnRoKSxcbiAgICAgICAgICB0aW1lU3VuZGF5LmNlaWwodGltZU1vbnRoLm9mZnNldChhY3RpdmVZZWFyTW9udGgsIDEpKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbWluQ2FsZW5kYXJEYXRlID0gY2FsZW5kYXJEYXRlc1swXTtcbiAgICAgICAgY29uc3QgbWF4Q2FsZW5kYXJEYXRlID0gY2FsZW5kYXJEYXRlc1tjYWxlbmRhckRhdGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCBzZWxlY3RlZERhdGVDb29yZGluYXRlcyA9IG5ldyBNYXA8bnVtYmVyLCBbbnVtYmVyLCBudW1iZXJdPigpO1xuICAgICAgICBjb25zdCB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2UgPSBkYXRlc0luU2VsZWN0ZWRSYW5nZS5maWx0ZXIoXG4gICAgICAgICAgc2VsZWN0ZWQgPT5cbiAgICAgICAgICAgIHNlbGVjdGVkLnZhbHVlT2YoKSA+PSBtaW5DYWxlbmRhckRhdGUudmFsdWVPZigpICYmXG4gICAgICAgICAgICBzZWxlY3RlZC52YWx1ZU9mKCkgPD0gbWF4Q2FsZW5kYXJEYXRlLnZhbHVlT2YoKSAmJlxuICAgICAgICAgICAgKHNlbGVjdGFibGVNaW5cbiAgICAgICAgICAgICAgPyBzZWxlY3RlZC52YWx1ZU9mKCkgPj0gc2VsZWN0YWJsZU1pbi52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiB0cnVlKSAmJlxuICAgICAgICAgICAgKHNlbGVjdGFibGVNYXhcbiAgICAgICAgICAgICAgPyBzZWxlY3RlZC52YWx1ZU9mKCkgPD0gc2VsZWN0YWJsZU1heC52YWx1ZU9mKClcbiAgICAgICAgICAgICAgOiB0cnVlKSAmJlxuICAgICAgICAgICAgKG9taXRSYW5nZVxuICAgICAgICAgICAgICA/IHNlbGVjdGVkLnZhbHVlT2YoKSA8IG9taXRSYW5nZVswXS52YWx1ZU9mKCkgfHxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZC52YWx1ZU9mKCkgPiBvbWl0UmFuZ2VbMV0udmFsdWVPZigpXG4gICAgICAgICAgICAgIDogdHJ1ZSksXG4gICAgICAgICk7XG4gICAgICAgIGlmICh2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGZpcnN0VmlzaWJsZVNlbGVjdGVkRGF0ZU9mZnNldCA9IGdldFdlZWtkYXlOdW1iZXIoXG4gICAgICAgICAgICB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VbMF0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICB2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2UuZm9yRWFjaCgoc2VsZWN0ZWQsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHggPSBnZXRXZWVrZGF5TnVtYmVyKHNlbGVjdGVkKTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSBNYXRoLmZsb29yKChpICsgZmlyc3RWaXNpYmxlU2VsZWN0ZWREYXRlT2Zmc2V0KSAvIDcpO1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRlQ29vcmRpbmF0ZXMuc2V0KHNlbGVjdGVkLnZhbHVlT2YoKSwgW3gsIHldKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBzZXJpYWxpemVDb29yZGluYXRlcyhjb29yZGluYXRlczogW251bWJlciwgbnVtYmVyXSk6IHN0cmluZyB7XG4gICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzLmpvaW4oJzonKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzID0gbmV3IFNldChcbiAgICAgICAgICBbLi4uc2VsZWN0ZWREYXRlQ29vcmRpbmF0ZXMudmFsdWVzKCldLm1hcChzZXJpYWxpemVDb29yZGluYXRlcyksXG4gICAgICAgICk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Um91bmRlZENvcm5lcnMoZGF0ZTogRGF0ZSk6IHtcbiAgICAgICAgICBudzogYm9vbGVhbjtcbiAgICAgICAgICBuZTogYm9vbGVhbjtcbiAgICAgICAgICBzZTogYm9vbGVhbjtcbiAgICAgICAgICBzdzogYm9vbGVhbjtcbiAgICAgICAgfSB7XG4gICAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBzZWxlY3RlZERhdGVDb29yZGluYXRlcy5nZXQoZGF0ZS52YWx1ZU9mKCkpO1xuICAgICAgICAgIGlmICghY29vcmRpbmF0ZXMpXG4gICAgICAgICAgICByZXR1cm4geyBudzogZmFsc2UsIG5lOiBmYWxzZSwgc2U6IGZhbHNlLCBzdzogZmFsc2UgfTtcbiAgICAgICAgICBjb25zdCBbeCwgeV0gPSBjb29yZGluYXRlcztcbiAgICAgICAgICBjb25zdCB0b3AgPSBzZXJpYWxpemVDb29yZGluYXRlcyhbeCwgeSAtIDFdKSxcbiAgICAgICAgICAgIHJpZ2h0ID0gc2VyaWFsaXplQ29vcmRpbmF0ZXMoW3ggKyAxLCB5XSksXG4gICAgICAgICAgICBib3R0b20gPSBzZXJpYWxpemVDb29yZGluYXRlcyhbeCwgeSArIDFdKSxcbiAgICAgICAgICAgIGxlZnQgPSBzZXJpYWxpemVDb29yZGluYXRlcyhbeCAtIDEsIHldKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbnc6XG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXModG9wKSAmJlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKGxlZnQpLFxuICAgICAgICAgICAgbmU6XG4gICAgICAgICAgICAgICF2aXNpYmxlRGF0ZXNJblNlbGVjdGVkUmFuZ2VDb29yZGluYXRlcy5oYXModG9wKSAmJlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKHJpZ2h0KSxcbiAgICAgICAgICAgIHNlOlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKHJpZ2h0KSAmJlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKGJvdHRvbSksXG4gICAgICAgICAgICBzdzpcbiAgICAgICAgICAgICAgIXZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZUNvb3JkaW5hdGVzLmhhcyhsZWZ0KSAmJlxuICAgICAgICAgICAgICAhdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlQ29vcmRpbmF0ZXMuaGFzKGJvdHRvbSksXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZVZhbHVlcyA9IG5ldyBTZXQoXG4gICAgICAgICAgdmlzaWJsZURhdGVzSW5TZWxlY3RlZFJhbmdlLm1hcChzZWxlY3RlZCA9PiBzZWxlY3RlZC52YWx1ZU9mKCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gdGltZURheS5mbG9vcihuZXcgRGF0ZSgpKTtcblxuICAgICAgICByZXR1cm4gY2FsZW5kYXJEYXRlcy5tYXAoZGF0ZSA9PiB7XG4gICAgICAgICAgY29uc3QgeyBudywgbmUsIHNlLCBzdyB9ID0gZ2V0Um91bmRlZENvcm5lcnMoZGF0ZSk7XG4gICAgICAgICAgY29uc3QgZGF0ZVZhbHVlID0gZGF0ZS52YWx1ZU9mKCk7XG4gICAgICAgICAgY29uc3QgaW5SYW5nZSA9IHZpc2libGVEYXRlc0luU2VsZWN0ZWRSYW5nZVZhbHVlcy5oYXMoZGF0ZVZhbHVlKTtcbiAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdGVkVmFsdWVcbiAgICAgICAgICAgID8gc2VsZWN0ZWRWYWx1ZSBpbnN0YW5jZW9mIERhdGVcbiAgICAgICAgICAgICAgPyBkYXRlVmFsdWUgPT09IHNlbGVjdGVkVmFsdWUudmFsdWVPZigpXG4gICAgICAgICAgICAgIDogZGF0ZVZhbHVlID09PSBzZWxlY3RlZFZhbHVlWzBdLnZhbHVlT2YoKSB8fFxuICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZVsxXS52YWx1ZU9mKClcbiAgICAgICAgICAgIDogZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGUsXG4gICAgICAgICAgICBkaXNwbGF5OiBkYXlGb3JtYXR0ZXIoZGF0ZSksXG4gICAgICAgICAgICBmYWRlSW46XG4gICAgICAgICAgICAgIGluUmFuZ2UgJiZcbiAgICAgICAgICAgICAgKGRhdGVWYWx1ZSA9PT1cbiAgICAgICAgICAgICAgICBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgIG1pbkNhbGVuZGFyRGF0ZS52YWx1ZU9mKCksXG4gICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlTWluPy52YWx1ZU9mKCkgPz8gLUluZmluaXR5LFxuICAgICAgICAgICAgICAgICkgfHxcbiAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPT09XG4gICAgICAgICAgICAgICAgICAob21pdFJhbmdlXG4gICAgICAgICAgICAgICAgICAgID8gdGltZURheS5vZmZzZXQob21pdFJhbmdlWzFdLCAxKS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICAgICAgOiAtSW5maW5pdHkpKSxcbiAgICAgICAgICAgIGZhZGVPdXQ6XG4gICAgICAgICAgICAgIGluUmFuZ2UgJiZcbiAgICAgICAgICAgICAgKGRhdGVWYWx1ZSA9PT1cbiAgICAgICAgICAgICAgICBNYXRoLm1pbihcbiAgICAgICAgICAgICAgICAgIG1heENhbGVuZGFyRGF0ZS52YWx1ZU9mKCksXG4gICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlTWF4Py52YWx1ZU9mKCkgPz8gSW5maW5pdHksXG4gICAgICAgICAgICAgICAgKSB8fFxuICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9PT1cbiAgICAgICAgICAgICAgICAgIChvbWl0UmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgPyB0aW1lRGF5Lm9mZnNldChvbWl0UmFuZ2VbMF0sIC0xKS52YWx1ZU9mKClcbiAgICAgICAgICAgICAgICAgICAgOiBJbmZpbml0eSkpLFxuICAgICAgICAgICAgaGlkZGVuOlxuICAgICAgICAgICAgICBkYXRlVmFsdWUgPCAoc2VsZWN0YWJsZU1pbj8udmFsdWVPZigpID8/IC1JbmZpbml0eSkgfHxcbiAgICAgICAgICAgICAgZGF0ZVZhbHVlID4gKHNlbGVjdGFibGVNYXg/LnZhbHVlT2YoKSA/PyBJbmZpbml0eSkgfHxcbiAgICAgICAgICAgICAgKG9taXRSYW5nZVxuICAgICAgICAgICAgICAgID8gb21pdFJhbmdlWzBdLnZhbHVlT2YoKSA8PSBkYXRlVmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA8PSBvbWl0UmFuZ2VbMV0udmFsdWVPZigpXG4gICAgICAgICAgICAgICAgOiBmYWxzZSksXG4gICAgICAgICAgICBpbkN1cnJlbnRNb250aDpcbiAgICAgICAgICAgICAgZGF0ZVZhbHVlID49IGFjdGl2ZVllYXJNb250aC52YWx1ZU9mKCkgJiZcbiAgICAgICAgICAgICAgZGF0ZVZhbHVlIDwgdGltZU1vbnRoLm9mZnNldChhY3RpdmVZZWFyTW9udGgsIDEpLnZhbHVlT2YoKSxcbiAgICAgICAgICAgIGluUmFuZ2UsXG4gICAgICAgICAgICByb3VuZGVkTmU6IG5lLFxuICAgICAgICAgICAgcm91bmRlZE53OiBudyxcbiAgICAgICAgICAgIHJvdW5kZWRTZTogc2UsXG4gICAgICAgICAgICByb3VuZGVkU3c6IHN3LFxuICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICB0b2RheTogZGF0ZVZhbHVlID09PSB0b2RheS52YWx1ZU9mKCksXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICBzZWxlY3REYXkoZGF5OiBDYWxlbmRhckRhdGUpIHtcbiAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkge1xuICAgICAgdGhpcy5hY3RpdmVZZWFyTW9udGhDaGFuZ2UuZW1pdCh0aW1lTW9udGguZmxvb3IoZGF5LmRhdGUpKTtcbiAgICB9XG4gICAgdGhpcy5kYXRlU2VsZWN0LmVtaXQoZGF5LmRhdGUpO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIGFjdGl2ZVllYXJNb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICBlbWl0QWN0aXZlWWVhck1vbnRoKHllYXJNb250aDogRGF0ZSB8IG51bGwpIHtcbiAgICBpZiAoeWVhck1vbnRoKSB0aGlzLmFjdGl2ZVllYXJNb250aENoYW5nZS5lbWl0KHllYXJNb250aCk7XG4gIH1cblxuICBAT3V0cHV0KClcbiAgZGF0ZVNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcblxuICB0cmFja0J5RGF0ZTogVHJhY2tCeUZ1bmN0aW9uPENhbGVuZGFyRGF0ZT4gPSAoXywgZGF0ZSkgPT5cbiAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAuLi5kYXRlLFxuICAgICAgZGF0ZTogW1xuICAgICAgICBkYXRlLmRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgZGF0ZS5kYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICBkYXRlLmRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgXS5qb2luKCc6JyksXG4gICAgfSk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgQ2FsZW5kYXJDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgZGVmYXVsdE1pbiA9IHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChuZXcgRGF0ZSgpLCAtNykpO1xuICBleHBvcnQgY29uc3QgZGVmYXVsdE1heCA9IHRpbWVEYXkub2Zmc2V0KFxuICAgIHRpbWVZZWFyLmZsb29yKHRpbWVZZWFyLm9mZnNldChuZXcgRGF0ZSgpLCA1KSksXG4gICAgLTEsXG4gICk7XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udHJvbHNcIj5cbiAgPGRpdj5cbiAgICA8cml2LXNpbXBsZS1zZWxlY3RcbiAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnTW9udGgnIH1cIlxuICAgICAgW29yZGVyQnldPVwiJ3NvdXJjZSdcIlxuICAgICAgW29wdGlvbkdyb3Vwc109XCJtb250aE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgICBbc2VsZWN0ZWRPcHRpb25dPVwic2VsZWN0ZWRNb250aE9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiZW1pdEFjdGl2ZVllYXJNb250aCgkZXZlbnQ/LmRhdGUgPz8gbnVsbClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdHJpZ2dlciBsZXQtc3RhdGU9XCJzdGF0ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgW2ljb25dPVwic3RhdGUuZGlzcGxheS5vcGVuID8gJ0NoZXZyb25VcCcgOiAnQ2hldnJvbkRvd24nXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidsYXN0J1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdGF0ZS5kaXNwbGF5LmZvcm1hdHRlZFNlbGVjdGVkT3B0aW9ucyB8fCAnLi4uJyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9yaXYtc2ltcGxlLXNlbGVjdD5cbiAgICA8cml2LXNpbXBsZS1zZWxlY3RcbiAgICAgIFtmaWx0ZXJhYmlsaXR5T3B0aW9uc109XCJ7IGVuYWJsZWQ6IHRydWUsIHBsYWNlaG9sZGVyOiAnWWVhcicgfVwiXG4gICAgICBbb3JkZXJCeV09XCInc291cmNlJ1wiXG4gICAgICBbb3B0aW9uR3JvdXBzXT1cInllYXJPcHRpb25zJCB8IGFzeW5jIHwgcml2T3B0aW9uR3JvdXBcIlxuICAgICAgW3NlbGVjdGVkT3B0aW9uXT1cInNlbGVjdGVkWWVhck9wdGlvbiQgfCBhc3luY1wiXG4gICAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwiZW1pdEFjdGl2ZVllYXJNb250aCgkZXZlbnQ/LmRhdGUgPz8gbnVsbClcIlxuICAgID5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdHJpZ2dlciBsZXQtc3RhdGU9XCJzdGF0ZVwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgcml2QnV0dG9uXG4gICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICAgICAgW2ljb25dPVwic3RhdGUuZGlzcGxheS5vcGVuID8gJ0NoZXZyb25VcCcgOiAnQ2hldnJvbkRvd24nXCJcbiAgICAgICAgICBbaWNvblBvc2l0aW9uXT1cIidsYXN0J1wiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBzdGF0ZS5kaXNwbGF5LmZvcm1hdHRlZFNlbGVjdGVkT3B0aW9ucyB8fCAnLi4uJyB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9yaXYtc2ltcGxlLXNlbGVjdD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cInsgcHJldjogcHJldmlvdXNNb250aCQgfCBhc3luYywgbmV4dDogbmV4dE1vbnRoJCB8IGFzeW5jIH07IGxldCB2bVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICByaXZCdXR0b25cbiAgICAgIFtzaXplXT1cIidzbWFsbCdcIlxuICAgICAgW3ZhcmlhbnRdPVwiJ2dob3N0J1wiXG4gICAgICBbaWNvbl09XCInQXJyb3dMZWZ0J1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIXZtLnByZXZcIlxuICAgICAgKGNsaWNrKT1cInZtLnByZXYgPyBhY3RpdmVZZWFyTW9udGhDaGFuZ2UuZW1pdCh2bS5wcmV2KSA6IG51bGxcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHJpdkJ1dHRvblxuICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbdmFyaWFudF09XCInZ2hvc3QnXCJcbiAgICAgIFtpY29uXT1cIidBcnJvd1JpZ2h0J1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIXZtLm5leHRcIlxuICAgICAgKGNsaWNrKT1cInZtLm5leHQgPyBhY3RpdmVZZWFyTW9udGhDaGFuZ2UuZW1pdCh2bS5uZXh0KSA6IG51bGxcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5TdTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPk1vPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+VHU8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5XZTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPlRoPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImxhYmVsXCI+RnI8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5TYTwvc3Bhbj5cbiAgPGJ1dHRvblxuICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF0ZXMkIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrQnlEYXRlXCJcbiAgICBjbGFzcz1cImRheVwiXG4gICAgW2Rpc2FibGVkXT1cImRheS5oaWRkZW5cIlxuICAgIFtjbGFzcy5oaWRkZW5dPVwiZGF5LmhpZGRlblwiXG4gICAgW2NsYXNzLmJsZWVkXT1cIiFkYXkuaW5DdXJyZW50TW9udGggJiYgIWRheS5oaWRkZW5cIlxuICAgIFtjbGFzcy5mYWRlLWluXT1cImRheS5mYWRlSW5cIlxuICAgIFtjbGFzcy5mYWRlLW91dF09XCJkYXkuZmFkZU91dFwiXG4gICAgW2NsYXNzLmluLXJhbmdlXT1cImRheS5pblJhbmdlXCJcbiAgICBbY2xhc3Mucm91bmRlZC1uZV09XCJkYXkucm91bmRlZE5lXCJcbiAgICBbY2xhc3Mucm91bmRlZC1ud109XCJkYXkucm91bmRlZE53XCJcbiAgICBbY2xhc3Mucm91bmRlZC1zZV09XCJkYXkucm91bmRlZFNlXCJcbiAgICBbY2xhc3Mucm91bmRlZC1zd109XCJkYXkucm91bmRlZFN3XCJcbiAgICAoY2xpY2spPVwic2VsZWN0RGF5KGRheSlcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICA+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZGF5LXdyYXBwZXJcIlxuICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImRheS5zZWxlY3RlZFwiXG4gICAgICBbY2xhc3MudG9kYXldPVwiZGF5LnRvZGF5XCJcbiAgICA+XG4gICAgICB7eyBkYXkuZGlzcGxheSB9fVxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -3257,7 +3257,11 @@ class CalendarComponent {
3257
3257
  }), shareReplay({ refCount: true, bufferSize: 1 }));
3258
3258
  this.activeYearMonthChange = new EventEmitter();
3259
3259
  this.dateSelect = new EventEmitter();
3260
- this.trackByDate = (_, date) => date.date.valueOf();
3260
+ this.trackByDate = (_, date) => JSON.stringify(Object.assign(Object.assign({}, date), { date: [
3261
+ date.date.getFullYear(),
3262
+ date.date.getMonth() + 1,
3263
+ date.date.getDate(),
3264
+ ].join(':') }));
3261
3265
  }
3262
3266
  set activeYearMonth(v) {
3263
3267
  this.activeYearMonth$.next(v);