@c8y/ngx-components 1021.22.52 → 1021.22.53

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.
@@ -66,11 +66,11 @@ export class TimeIntervalComponent {
66
66
  }
67
67
  }
68
68
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TimeIntervalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TimeIntervalComponent, isStandalone: true, selector: "c8y-time-interval", inputs: { minCustomDate: "minCustomDate", maxCustomDate: "maxCustomDate", dateRangePickerConfig: "dateRangePickerConfig", selectedInterval: "selectedInterval" }, outputs: { interval: "interval" }, ngImport: i0, template: "<form class=\"form-inline\">\n <div class=\"form-group\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Time interval' | translate\"\n name=\"interval\"\n [(ngModel)]=\"selectedInterval\"\n (ngModelChange)=\"changeInterval($event)\"\n >\n <option\n *ngFor=\"let interval of intvervals\"\n [ngValue]=\"interval\"\n >\n {{ interval.label | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div\n class=\"form-group datepicker\"\n *ngIf=\"selectedInterval === CUSTOM\"\n >\n <input\n class=\"form-control\"\n [placeholder]=\"'Select date range' | translate\"\n bsDaterangepicker\n [bsConfig]=\"dateRangePickerConfig\"\n [minDate]=\"minCustomDate\"\n [maxDate]=\"maxCustomDate\"\n [(bsValue)]=\"customRange\"\n (bsValueChange)=\"changeCustomRange($event)\"\n />\n </div>\n\n <button\n class=\"btn btn-link\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n [disabled]=\"selectedInterval === CUSTOM && (!customRange || customRange.length === 0)\"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i5.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i5.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }] }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TimeIntervalComponent, isStandalone: true, selector: "c8y-time-interval", inputs: { minCustomDate: "minCustomDate", maxCustomDate: "maxCustomDate", dateRangePickerConfig: "dateRangePickerConfig", selectedInterval: "selectedInterval" }, outputs: { interval: "interval" }, ngImport: i0, template: "<form class=\"form-inline\">\n <div class=\"form-group\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Time interval' | translate\"\n name=\"interval\"\n [(ngModel)]=\"selectedInterval\"\n (ngModelChange)=\"changeInterval($event)\"\n data-cy=\"c8y-time-interval--select\"\n >\n <option\n *ngFor=\"let interval of intvervals\"\n [ngValue]=\"interval\"\n >\n {{ interval.label | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div\n class=\"form-group datepicker\"\n *ngIf=\"selectedInterval === CUSTOM\"\n >\n <input\n class=\"form-control\"\n [placeholder]=\"'Select date range' | translate\"\n bsDaterangepicker\n [bsConfig]=\"dateRangePickerConfig\"\n [minDate]=\"minCustomDate\"\n [maxDate]=\"maxCustomDate\"\n [(bsValue)]=\"customRange\"\n (bsValueChange)=\"changeCustomRange($event)\"\n />\n </div>\n\n <button\n class=\"btn btn-link\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n [disabled]=\"selectedInterval === CUSTOM && (!customRange || customRange.length === 0)\"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</form>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i5.BsDaterangepickerDirective, selector: "[bsDaterangepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isOpen", "bsValue", "bsConfig", "isDisabled", "minDate", "maxDate", "dateCustomClasses", "daysDisabled", "datesDisabled", "datesEnabled"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDaterangepicker"] }, { kind: "directive", type: i5.BsDaterangepickerInputDirective, selector: "input[bsDaterangepicker]" }] }); }
70
70
  }
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TimeIntervalComponent, decorators: [{
72
72
  type: Component,
73
- args: [{ standalone: true, selector: 'c8y-time-interval', imports: [CommonModule, FormsModule, BsDatepickerModule], template: "<form class=\"form-inline\">\n <div class=\"form-group\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Time interval' | translate\"\n name=\"interval\"\n [(ngModel)]=\"selectedInterval\"\n (ngModelChange)=\"changeInterval($event)\"\n >\n <option\n *ngFor=\"let interval of intvervals\"\n [ngValue]=\"interval\"\n >\n {{ interval.label | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div\n class=\"form-group datepicker\"\n *ngIf=\"selectedInterval === CUSTOM\"\n >\n <input\n class=\"form-control\"\n [placeholder]=\"'Select date range' | translate\"\n bsDaterangepicker\n [bsConfig]=\"dateRangePickerConfig\"\n [minDate]=\"minCustomDate\"\n [maxDate]=\"maxCustomDate\"\n [(bsValue)]=\"customRange\"\n (bsValueChange)=\"changeCustomRange($event)\"\n />\n </div>\n\n <button\n class=\"btn btn-link\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n [disabled]=\"selectedInterval === CUSTOM && (!customRange || customRange.length === 0)\"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</form>\n" }]
73
+ args: [{ standalone: true, selector: 'c8y-time-interval', imports: [CommonModule, FormsModule, BsDatepickerModule], template: "<form class=\"form-inline\">\n <div class=\"form-group\">\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Time interval' | translate\"\n name=\"interval\"\n [(ngModel)]=\"selectedInterval\"\n (ngModelChange)=\"changeInterval($event)\"\n data-cy=\"c8y-time-interval--select\"\n >\n <option\n *ngFor=\"let interval of intvervals\"\n [ngValue]=\"interval\"\n >\n {{ interval.label | translate }}\n </option>\n </select>\n </div>\n </div>\n\n <div\n class=\"form-group datepicker\"\n *ngIf=\"selectedInterval === CUSTOM\"\n >\n <input\n class=\"form-control\"\n [placeholder]=\"'Select date range' | translate\"\n bsDaterangepicker\n [bsConfig]=\"dateRangePickerConfig\"\n [minDate]=\"minCustomDate\"\n [maxDate]=\"maxCustomDate\"\n [(bsValue)]=\"customRange\"\n (bsValueChange)=\"changeCustomRange($event)\"\n />\n </div>\n\n <button\n class=\"btn btn-link\"\n [title]=\"'Reload' | translate\"\n type=\"button\"\n [disabled]=\"selectedInterval === CUSTOM && (!customRange || customRange.length === 0)\"\n (click)=\"reload()\"\n >\n <i c8yIcon=\"refresh\"></i>\n {{ 'Reload' | translate }}\n </button>\n</form>\n" }]
74
74
  }], propDecorators: { minCustomDate: [{
75
75
  type: Input
76
76
  }], maxCustomDate: [{
@@ -82,4 +82,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
82
82
  }], interval: [{
83
83
  type: Output
84
84
  }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnRlcnZhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RpbWUtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3RpbWUtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxNQUFNLEVBRU4sZ0JBQWdCLEVBQ2hCLFNBQVMsRUFHVixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUS9CLE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFPRSxlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFDOUIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQVloQixxQkFBZ0IsR0FBdUIsU0FBUyxDQUFDO1FBR2pELGFBQVEsR0FBK0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQStEM0Q7SUEzREMsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxjQUFrQztRQUMvQyxJQUFJLGNBQWMsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBaUI7Z0JBQzdCLFFBQVEsRUFBRSxjQUFjLENBQUMsWUFBWSxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUMxQixDQUFDO1lBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBVTtRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FDTCxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFzQjtRQUN6Qyw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDakYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7OEdBL0VVLHFCQUFxQjtrR0FBckIscUJBQXFCLGtSQ25CbEMsc3hDQStDQSwyQ0Q5QlksWUFBWSwwWkFBRSxXQUFXLGtyQ0FBRSxrQkFBa0I7OzJGQUU1QyxxQkFBcUI7a0JBTmpDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG1CQUFtQixXQUVwQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLENBQUM7OEJBT3hELGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQge1xuICBDVVNUT00sXG4gIERhdGVSYW5nZVBpY2tlckNvbmZpZyxcbiAgSU5URVJWQUxfT1BUSU9OUyxcbiAgTEFTVF9IT1VSLFxuICBUaW1lSW50ZXJ2YWwsXG4gIFRpbWVJbnRlcnZhbE9wdGlvblxufSBmcm9tICcuL3RpbWUtaW50ZXJ2YWwubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdjOHktdGltZS1pbnRlcnZhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLWludGVydmFsLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEJzRGF0ZXBpY2tlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGltZUludGVydmFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGludHZlcnZhbHMgPSBJTlRFUlZBTF9PUFRJT05TO1xuICBDVVNUT00gPSBDVVNUT007XG5cbiAgQElucHV0KClcbiAgbWluQ3VzdG9tRGF0ZTogRGF0ZTtcblxuICBASW5wdXQoKVxuICBtYXhDdXN0b21EYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIGRhdGVSYW5nZVBpY2tlckNvbmZpZzogRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkSW50ZXJ2YWw6IFRpbWVJbnRlcnZhbE9wdGlvbiA9IExBU1RfSE9VUjtcblxuICBAT3V0cHV0KClcbiAgaW50ZXJ2YWw6IEV2ZW50RW1pdHRlcjxUaW1lSW50ZXJ2YWw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGN1c3RvbVJhbmdlOiBEYXRlW107XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlSW50ZXJ2YWwodGhpcy5zZWxlY3RlZEludGVydmFsKTtcbiAgfVxuXG4gIGNoYW5nZUludGVydmFsKGludGVydmFsT3B0aW9uOiBUaW1lSW50ZXJ2YWxPcHRpb24pIHtcbiAgICBpZiAoaW50ZXJ2YWxPcHRpb24gIT09IENVU1RPTSkge1xuICAgICAgY29uc3QgaW50ZXJ2YWw6IFRpbWVJbnRlcnZhbCA9IHtcbiAgICAgICAgZGF0ZUZyb206IGludGVydmFsT3B0aW9uLmdldFN0YXJ0RGF0ZSgpLFxuICAgICAgICBkYXRlVG86IHRoaXMuZ2V0RW5kRGF0ZSgpXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmVtaXRJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ3VzdG9tUmFuZ2UocmFuZ2U6IERhdGVbXSkge1xuICAgIHRoaXMuZW1pdEludGVydmFsKHRoaXMucmFuZ2VUb0ludGVydmFsKHJhbmdlKSk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCA9PT0gQ1VTVE9NKSB7XG4gICAgICB0aGlzLmVtaXRJbnRlcnZhbCh0aGlzLnJhbmdlVG9JbnRlcnZhbCh0aGlzLmN1c3RvbVJhbmdlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hhbmdlSW50ZXJ2YWwodGhpcy5zZWxlY3RlZEludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVuZERhdGUoKTogRGF0ZSB7XG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUoKTtcbiAgICBlbmQuc2V0U2Vjb25kcyhlbmQuZ2V0U2Vjb25kcygpICsgMSk7XG4gICAgcmV0dXJuIGVuZDtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VUb0ludGVydmFsKHJhbmdlOiBEYXRlW10pOiBUaW1lSW50ZXJ2YWwge1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUocmFuZ2VbMF0pO1xuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKHJhbmdlWzFdKTtcblxuICAgIGRhdGVGcm9tLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIGlmICghdGhpcy5pc1RvZGF5KGRhdGVUbykpIHtcbiAgICAgIGRhdGVUby5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgIH1cbiAgICByZXR1cm4geyBkYXRlRnJvbSwgZGF0ZVRvIH07XG4gIH1cblxuICBwcml2YXRlIGlzVG9kYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4gKFxuICAgICAgZGF0ZT8uZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKCkgJiZcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJlxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpID09PSB0b2RheS5nZXRGdWxsWWVhcigpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEludGVydmFsKGludGVydmFsOiBUaW1lSW50ZXJ2YWwpIHtcbiAgICAvLyBvbmx5IGVtaXQgdmFsaWQgaW50ZXJ2YWxzXG4gICAgaWYgKCFpc05hTihpbnRlcnZhbD8uZGF0ZUZyb20/LmdldFRpbWUoKSkgJiYgIWlzTmFOKGludGVydmFsPy5kYXRlVG8/LmdldFRpbWUoKSkpIHtcbiAgICAgIHRoaXMuaW50ZXJ2YWwuZW1pdChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RpbWUgaW50ZXJ2YWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbmFtZT1cImludGVydmFsXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEludGVydmFsXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlSW50ZXJ2YWwoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaW50ZXJ2YWwgb2YgaW50dmVydmFsc1wiXG4gICAgICAgICAgW25nVmFsdWVdPVwiaW50ZXJ2YWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaW50ZXJ2YWwubGFiZWwgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZm9ybS1ncm91cCBkYXRlcGlja2VyXCJcbiAgICAqbmdJZj1cInNlbGVjdGVkSW50ZXJ2YWwgPT09IENVU1RPTVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGRhdGUgcmFuZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgIGJzRGF0ZXJhbmdlcGlja2VyXG4gICAgICBbYnNDb25maWddPVwiZGF0ZVJhbmdlUGlja2VyQ29uZmlnXCJcbiAgICAgIFttaW5EYXRlXT1cIm1pbkN1c3RvbURhdGVcIlxuICAgICAgW21heERhdGVdPVwibWF4Q3VzdG9tRGF0ZVwiXG4gICAgICBbKGJzVmFsdWUpXT1cImN1c3RvbVJhbmdlXCJcbiAgICAgIChic1ZhbHVlQ2hhbmdlKT1cImNoYW5nZUN1c3RvbVJhbmdlKCRldmVudClcIlxuICAgIC8+XG4gIDwvZGl2PlxuXG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgW3RpdGxlXT1cIidSZWxvYWQnIHwgdHJhbnNsYXRlXCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRJbnRlcnZhbCA9PT0gQ1VTVE9NICYmICghY3VzdG9tUmFuZ2UgfHwgY3VzdG9tUmFuZ2UubGVuZ3RoID09PSAwKVwiXG4gICAgKGNsaWNrKT1cInJlbG9hZCgpXCJcbiAgPlxuICAgIDxpIGM4eUljb249XCJyZWZyZXNoXCI+PC9pPlxuICAgIHt7ICdSZWxvYWQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9mb3JtPlxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1pbnRlcnZhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RpbWUtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL3RpbWUtaW50ZXJ2YWwvdGltZS1pbnRlcnZhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxNQUFNLEVBRU4sZ0JBQWdCLEVBQ2hCLFNBQVMsRUFHVixNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBUS9CLE1BQU0sT0FBTyxxQkFBcUI7SUFObEM7UUFPRSxlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFDOUIsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQVloQixxQkFBZ0IsR0FBdUIsU0FBUyxDQUFDO1FBR2pELGFBQVEsR0FBK0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQStEM0Q7SUEzREMsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxjQUFrQztRQUMvQyxJQUFJLGNBQWMsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBaUI7Z0JBQzdCLFFBQVEsRUFBRSxjQUFjLENBQUMsWUFBWSxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUMxQixDQUFDO1lBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVTtRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhO1FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxPQUFPLENBQUMsSUFBVTtRQUN4QixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FDTCxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUMzQyxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFzQjtRQUN6Qyw0QkFBNEI7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDakYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7OEdBL0VVLHFCQUFxQjtrR0FBckIscUJBQXFCLGtSQ25CbEMscTBDQWdEQSwyQ0QvQlksWUFBWSwwWkFBRSxXQUFXLGtyQ0FBRSxrQkFBa0I7OzJGQUU1QyxxQkFBcUI7a0JBTmpDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG1CQUFtQixXQUVwQixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsa0JBQWtCLENBQUM7OEJBT3hELGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4scUJBQXFCO3NCQURwQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJzRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQge1xuICBDVVNUT00sXG4gIERhdGVSYW5nZVBpY2tlckNvbmZpZyxcbiAgSU5URVJWQUxfT1BUSU9OUyxcbiAgTEFTVF9IT1VSLFxuICBUaW1lSW50ZXJ2YWwsXG4gIFRpbWVJbnRlcnZhbE9wdGlvblxufSBmcm9tICcuL3RpbWUtaW50ZXJ2YWwubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdjOHktdGltZS1pbnRlcnZhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLWludGVydmFsLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEJzRGF0ZXBpY2tlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGltZUludGVydmFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIGludHZlcnZhbHMgPSBJTlRFUlZBTF9PUFRJT05TO1xuICBDVVNUT00gPSBDVVNUT007XG5cbiAgQElucHV0KClcbiAgbWluQ3VzdG9tRGF0ZTogRGF0ZTtcblxuICBASW5wdXQoKVxuICBtYXhDdXN0b21EYXRlOiBEYXRlO1xuXG4gIEBJbnB1dCgpXG4gIGRhdGVSYW5nZVBpY2tlckNvbmZpZzogRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkSW50ZXJ2YWw6IFRpbWVJbnRlcnZhbE9wdGlvbiA9IExBU1RfSE9VUjtcblxuICBAT3V0cHV0KClcbiAgaW50ZXJ2YWw6IEV2ZW50RW1pdHRlcjxUaW1lSW50ZXJ2YWw+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGN1c3RvbVJhbmdlOiBEYXRlW107XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlSW50ZXJ2YWwodGhpcy5zZWxlY3RlZEludGVydmFsKTtcbiAgfVxuXG4gIGNoYW5nZUludGVydmFsKGludGVydmFsT3B0aW9uOiBUaW1lSW50ZXJ2YWxPcHRpb24pIHtcbiAgICBpZiAoaW50ZXJ2YWxPcHRpb24gIT09IENVU1RPTSkge1xuICAgICAgY29uc3QgaW50ZXJ2YWw6IFRpbWVJbnRlcnZhbCA9IHtcbiAgICAgICAgZGF0ZUZyb206IGludGVydmFsT3B0aW9uLmdldFN0YXJ0RGF0ZSgpLFxuICAgICAgICBkYXRlVG86IHRoaXMuZ2V0RW5kRGF0ZSgpXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmVtaXRJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ3VzdG9tUmFuZ2UocmFuZ2U6IERhdGVbXSkge1xuICAgIHRoaXMuZW1pdEludGVydmFsKHRoaXMucmFuZ2VUb0ludGVydmFsKHJhbmdlKSk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCA9PT0gQ1VTVE9NKSB7XG4gICAgICB0aGlzLmVtaXRJbnRlcnZhbCh0aGlzLnJhbmdlVG9JbnRlcnZhbCh0aGlzLmN1c3RvbVJhbmdlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2hhbmdlSW50ZXJ2YWwodGhpcy5zZWxlY3RlZEludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVuZERhdGUoKTogRGF0ZSB7XG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUoKTtcbiAgICBlbmQuc2V0U2Vjb25kcyhlbmQuZ2V0U2Vjb25kcygpICsgMSk7XG4gICAgcmV0dXJuIGVuZDtcbiAgfVxuXG4gIHByaXZhdGUgcmFuZ2VUb0ludGVydmFsKHJhbmdlOiBEYXRlW10pOiBUaW1lSW50ZXJ2YWwge1xuICAgIGNvbnN0IGRhdGVGcm9tID0gbmV3IERhdGUocmFuZ2VbMF0pO1xuICAgIGNvbnN0IGRhdGVUbyA9IG5ldyBEYXRlKHJhbmdlWzFdKTtcblxuICAgIGRhdGVGcm9tLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIGlmICghdGhpcy5pc1RvZGF5KGRhdGVUbykpIHtcbiAgICAgIGRhdGVUby5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgIH1cbiAgICByZXR1cm4geyBkYXRlRnJvbSwgZGF0ZVRvIH07XG4gIH1cblxuICBwcml2YXRlIGlzVG9kYXkoZGF0ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4gKFxuICAgICAgZGF0ZT8uZ2V0RGF0ZSgpID09PSB0b2RheS5nZXREYXRlKCkgJiZcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSA9PT0gdG9kYXkuZ2V0TW9udGgoKSAmJlxuICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpID09PSB0b2RheS5nZXRGdWxsWWVhcigpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdEludGVydmFsKGludGVydmFsOiBUaW1lSW50ZXJ2YWwpIHtcbiAgICAvLyBvbmx5IGVtaXQgdmFsaWQgaW50ZXJ2YWxzXG4gICAgaWYgKCFpc05hTihpbnRlcnZhbD8uZGF0ZUZyb20/LmdldFRpbWUoKSkgJiYgIWlzTmFOKGludGVydmFsPy5kYXRlVG8/LmdldFRpbWUoKSkpIHtcbiAgICAgIHRoaXMuaW50ZXJ2YWwuZW1pdChpbnRlcnZhbCk7XG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1RpbWUgaW50ZXJ2YWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbmFtZT1cImludGVydmFsXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEludGVydmFsXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlSW50ZXJ2YWwoJGV2ZW50KVwiXG4gICAgICAgIGRhdGEtY3k9XCJjOHktdGltZS1pbnRlcnZhbC0tc2VsZWN0XCJcbiAgICAgID5cbiAgICAgICAgPG9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpbnRlcnZhbCBvZiBpbnR2ZXJ2YWxzXCJcbiAgICAgICAgICBbbmdWYWx1ZV09XCJpbnRlcnZhbFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBpbnRlcnZhbC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJmb3JtLWdyb3VwIGRhdGVwaWNrZXJcIlxuICAgICpuZ0lmPVwic2VsZWN0ZWRJbnRlcnZhbCA9PT0gQ1VTVE9NXCJcbiAgPlxuICAgIDxpbnB1dFxuICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QgZGF0ZSByYW5nZScgfCB0cmFuc2xhdGVcIlxuICAgICAgYnNEYXRlcmFuZ2VwaWNrZXJcbiAgICAgIFtic0NvbmZpZ109XCJkYXRlUmFuZ2VQaWNrZXJDb25maWdcIlxuICAgICAgW21pbkRhdGVdPVwibWluQ3VzdG9tRGF0ZVwiXG4gICAgICBbbWF4RGF0ZV09XCJtYXhDdXN0b21EYXRlXCJcbiAgICAgIFsoYnNWYWx1ZSldPVwiY3VzdG9tUmFuZ2VcIlxuICAgICAgKGJzVmFsdWVDaGFuZ2UpPVwiY2hhbmdlQ3VzdG9tUmFuZ2UoJGV2ZW50KVwiXG4gICAgLz5cbiAgPC9kaXY+XG5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICBbdGl0bGVdPVwiJ1JlbG9hZCcgfCB0cmFuc2xhdGVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZEludGVydmFsID09PSBDVVNUT00gJiYgKCFjdXN0b21SYW5nZSB8fCBjdXN0b21SYW5nZS5sZW5ndGggPT09IDApXCJcbiAgICAoY2xpY2spPVwicmVsb2FkKClcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInJlZnJlc2hcIj48L2k+XG4gICAge3sgJ1JlbG9hZCcgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
@@ -227,6 +227,9 @@ export class MapComponent {
227
227
  this.addLayers(layers);
228
228
  this.handleMobile();
229
229
  this.onMap.next(this.map);
230
+ if (this.config.realtime) {
231
+ this.startRealtime();
232
+ }
230
233
  this.isInit = true;
231
234
  this.onInit.emit(this.leaflet);
232
235
  }
@@ -431,4 +434,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
431
434
  }], onInit: [{
432
435
  type: Output
433
436
  }] } });
434
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21hcC9tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbWFwL21hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZCw4QkFBOEIsRUFDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFHTCxZQUFZLEVBRVosa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRC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QUFNO3FCQUNILFdBQVcsRUFBRTtxQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtvQkFDOUQsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLFFBQVEsRUFBRSxHQUFHO29CQUNiLE9BQU8sRUFBRSxJQUFJO29CQUNiLFdBQVcsRUFBRSxLQUFLO2lCQUNuQixDQUFDO3FCQUNELFNBQVMsRUFBRSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBbmZVLFlBQVksd0ZBZ0ViLGNBQWMsYUFDZCxrQkFBa0I7a0dBakVqQixZQUFZLGlVQUZaLENBQUMsNEJBQTRCLENBQUMsNkRBdUIzQixpQkFBaUIsd0tDM0VqQyxrRkFJQTs7MkZEa0RhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsU0FBUyxhQUVSLENBQUMsNEJBQTRCLENBQUM7OzBCQWtFdEMsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxrQkFBa0I7cUtBOUM1QixVQUFVO3NCQURULFNBQVM7dUJBQUMsS0FBSztnQkFJaEIsS0FBSztzQkFESixZQUFZO3VCQUFDLGlCQUFpQjtnQkFJL0IsTUFBTTtzQkFETCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixNQUFNO2dCQUlQLE1BQU07c0JBREwsTUFBTTtnQkFJUCxTQUFTO3NCQURSLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlIHsgTWFwRGVmYXVsdENvbmZpZywgTWFwVGlsZUxheWVyIH0gZnJvbSAnQGM4eS9vcHRpb25zJztcbmltcG9ydCB7XG4gIERhdGVQaXBlLFxuICBHZW9TZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlLFxuICBzb3J0QnlQcmlvcml0eSxcbiAgV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgZmxhdHRlbiwgaXNFbXB0eSwgaXNVbmRlZmluZWQsIHJlbW92ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb21FdmVudCxcbiAgTkVWRVIsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1hcCwgc2Nhbiwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXBQb3B1cERpcmVjdGl2ZSB9IGZyb20gJy4vbWFwLXBvcHVwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBDOHlNYXJrZXIsXG4gIEM4eU1hcmtlckF0dHJpYnV0ZXMsXG4gIGdldEM4eU1hcmtlcixcbiAgTWFwQ29uZmlnLFxuICBNQVBfREVGQVVMVF9DT05GSUcsXG4gIE1BUF9USUxFX0xBWUVSLFxuICBQb3NpdGlvbk1hbmFnZWRPYmplY3Rcbn0gZnJvbSAnLi9tYXAubW9kZWwnO1xuaW1wb3J0IHsgTWFwU2VydmljZSB9IGZyb20gJy4vbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNOdWxsLCBldmVyeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWFwQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IG1hcCBvYmplY3QuXG4gICAqL1xuICBtYXA6IEwuTWFwO1xuICAvKipcbiAgICogVGhlIG1hcmtlcnMgcGxhY2VkIG9uIHRoZSBtYXAuXG4gICAqL1xuICBtYXJrZXJzOiBBcnJheTxDOHlNYXJrZXIgfCBMLk1hcmtlcj4gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IHJlcHJlc2VudGF0aW9uIHVzZWQuXG4gICAqL1xuICBsZWFmbGV0OiB0eXBlb2YgTDtcbiAgLyoqXG4gICAqIFRlbGxzIGlmIHRoZSBtYXAgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBpc0luaXQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdtYXAnKVxuICBtYXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGQoTWFwUG9wdXBEaXJlY3RpdmUpXG4gIHBvcHVwOiBNYXBQb3B1cERpcmVjdGl2ZTtcblxuICBASW5wdXQoKVxuICBjb25maWc6IE1hcENvbmZpZyA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0IHwgUG9zaXRpb25NYW5hZ2VkT2JqZWN0W107XG5cbiAgQElucHV0KClcbiAgcG9seWxpbmUkOiBPYnNlcnZhYmxlPEwuTGF0TG5nRXhwcmVzc2lvbltdIHwgTC5MYXRMbmdFeHByZXNzaW9uW11bXT4gPSBORVZFUjtcblxuICBASW5wdXQoKVxuICBwb2x5bGluZU9wdGlvbnM6IEwuUG9seWxpbmVPcHRpb25zO1xuXG4gIEBPdXRwdXQoKVxuICBvblJlYWx0aW1lVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZTogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZUVuZDogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uWm9vbVN0YXJ0OiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25ab29tRW5kOiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25NYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEwuTWFwIHwgbnVsbD4obnVsbCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8dHlwZW9mIEw+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWx0aW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZVRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbW9SZWFsdGltZVNlcnZpY2U6IE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UsXG4gICAgQEluamVjdChNQVBfVElMRV9MQVlFUikgcHJvdGVjdGVkIGxheWVycyQ6IE9ic2VydmFibGU8TWFwVGlsZUxheWVyW10+LFxuICAgIEBJbmplY3QoTUFQX0RFRkFVTFRfQ09ORklHKVxuICAgIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnJDogT2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZ2VvOiBHZW9TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJvdGVjdGVkIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZTogV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdE91dHB1dHMoKTtcbiAgfVxuXG4gIHN0YXJ0UmVhbHRpbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0cyB8fCAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykgJiYgdGhpcy5hc3NldHMubGVuZ3RoID4gMSkpIHtcbiAgICAgIHRoaXMuY29uZmlnLnJlYWx0aW1lID0gZmFsc2U7XG4gICAgICB0aGlzLnN0b3BSZWFsdGltZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhc3NldCA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHNbMF0gOiB0aGlzLmFzc2V0cztcbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uID0gdGhpcy5tb1JlYWx0aW1lU2VydmljZVxuICAgICAgLm9uVXBkYXRlJChhc3NldClcbiAgICAgIC5zdWJzY3JpYmUoKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpID0+IHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5maW5kTWFya2VyKGFzc2V0LmlkKTtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMuZ2V0QXNzZXRJY29uKGFzc2V0KTtcbiAgICAgICAgbWFya2VyLnNldEljb24oaWNvbik7XG4gICAgICAgIG1hcmtlci5zZXRMYXRMbmcodGhpcy5nZW8uZ2V0TGF0TG9uZyhhc3NldCkpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1swXSA9IGFzc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXNzZXRzID0gYXNzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8oYXNzZXQpO1xuICAgICAgICB0aGlzLm9uUmVhbHRpbWVVcGRhdGUuZW1pdChhc3NldCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG1vdmVUb1Bvc2l0aW9uT2ZNbyhwb3NpdGlvbnM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBBcnJheS5pc0FycmF5KHBvc2l0aW9ucykgPyBwb3NpdGlvbnNbMF0gOiBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZvbGxvdykge1xuICAgICAgdGhpcy5tYXAuc2V0VmlldyhbcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxhdCwgcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxuZ10pO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BSZWFsdGltZSgpIHtcbiAgICBpZiAodGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmRNYXJrZXIobW9PcklkOiBzdHJpbmcgfCBJRXZlbnQgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBnZXRJZCA9IG1vT3JJZCA9PiAodHlwZW9mIG1vT3JJZCA9PT0gJ3N0cmluZycgPyBtb09ySWQgOiBtb09ySWQ/LmlkKTtcbiAgICByZXR1cm4gdGhpcy5tYXJrZXJzLmZpbmQoXG4gICAgICAobWFya2VyOiBDOHlNYXJrZXIpID0+XG4gICAgICAgIG1hcmtlci5hc3NldD8uaWQgPT09IGdldElkKG1vT3JJZCkgfHwgbWFya2VyLmV2ZW50Py5pZCA9PT0gZ2V0SWQobW9PcklkKVxuICAgICk7XG4gIH1cblxuICBhZGRNYXJrZXJUb01hcChtYXJrZXI6IEM4eU1hcmtlciB8IEwuTWFya2VyKSB7XG4gICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICBtYXJrZXIuYWRkVG8odGhpcy5tYXApO1xuICB9XG5cbiAgZ2V0QXNzZXRNYXJrZXIoYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpY29uID0gdGhpcy5nZXRBc3NldEljb24oYXNzZXQpO1xuICAgIGNvbnN0IGxlYWZsZXRNYXJrZXIgPSB0aGlzLmxlYWZsZXQubWFya2VyKHRoaXMuZ2VvLmdldExhdExvbmcoYXNzZXQpLCB7XG4gICAgICBpY29uXG4gICAgfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIGFzc2V0KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGFzc2V0KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRUcmFja2luZ01hcmtlcihldmVudDogSUV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGljb24gPSB0aGlzLmdldFRyYWNraW5nSWNvbigpO1xuICAgIGNvbnN0IGxlYWZsZXRNYXJrZXIgPSB0aGlzLmxlYWZsZXQubWFya2VyKHRoaXMuZ2VvLmdldExhdExvbmcoZXZlbnQpLCB7IGljb24gfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIG51bGwsIGV2ZW50KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGV2ZW50KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRBc3NldEljb24oYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGFzc2V0VHlwZUljb24gPSB0aGlzLmNvbmZpZy5pY29uIHx8IGFzc2V0Lmljb24/Lm5hbWU7XG4gICAgY29uc3Qgc3RhdHVzID0gTWFwU2VydmljZS5nZXRTdGF0dXMoYXNzZXQpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb25maWcuY29sb3IgPyBgc3R5bGU9J2NvbG9yOiAke3RoaXMuY29uZmlnLmNvbG9yfTsnYCA6ICcnO1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCAke3N0YXR1c31cIiAke2NvbG9yfT48aSBjbGFzcz1cImRsdC1jOHktaWNvbi0ke1xuICAgICAgICBhc3NldFR5cGVJY29uIHx8ICdkYXRhLXRyYW5zZmVyJ1xuICAgICAgfVwiIC8+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgZ2V0VHJhY2tpbmdJY29uKCkge1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCB0ZXh0LW11dGVkXCI+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgcmVtb3ZlTWFya2VyKG1hcmtlcjogQzh5TWFya2VyIHwgTC5NYXJrZXIpIHtcbiAgICBpZiAobWFya2VyKSB7XG4gICAgICBtYXJrZXIucmVtb3ZlKCk7XG4gICAgICByZW1vdmUodGhpcy5tYXJrZXJzLCBtID0+IG0gPT09IG1hcmtlcik7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJNYXJrZXJzKGZyYWdtZW50PzogQzh5TWFya2VyQXR0cmlidXRlcykge1xuICAgIGNvbnN0IG1hdGNoaW5nTWFya2VycyA9IG1hcmtlciA9PiAhZnJhZ21lbnQgfHwgISFtYXJrZXJbZnJhZ21lbnRdO1xuICAgIHRoaXMubWFya2Vycy5maWx0ZXIobWF0Y2hpbmdNYXJrZXJzKS5mb3JFYWNoKG1hcmtlciA9PiBtYXJrZXIucmVtb3ZlKCkpO1xuICAgIHRoaXMubWFya2VycyA9IHRoaXMubWFya2Vycy5maWx0ZXIobWFya2VyID0+ICFtYXRjaGluZ01hcmtlcnMobWFya2VyKSk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIGxldCBhc3NldHM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdID0gW107XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLmFzc2V0cykpIHtcbiAgICAgIGFzc2V0cyA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHMgOiBbdGhpcy5hc3NldHNdO1xuICAgIH1cbiAgICBhc3NldHMuZm9yRWFjaChhc3NldCA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KTtcbiAgICAgIHRoaXMuYWRkTWFya2VyVG9NYXAobWFya2VyKTtcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmNlbnRlcikge1xuICAgICAgdGhpcy56b29tVG9Cb3VuZChhc3NldHMpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gIH1cblxuICBjZW50ZXIoKSB7XG4gICAgdGhpcy5tYXA/LnNldFZpZXcodGhpcy5jb25maWcuY2VudGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0KSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIGNvbnN0IGluaXRpYWxpemVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubGF5ZXJzJCwgdGhpcy5kZWZhdWx0Q29uZmlnJF0pLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgaW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoW2xheWVycywgZGVmYXVsdENvbmZpZ10pID0+IHtcbiAgICAgIHRoaXMuaW5pdE1hcChsYXllcnMsIGRlZmF1bHRDb25maWcpO1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5wb2x5bGluZSQsIGluaXRpYWxpemVkJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChbZXhwcmVzc2lvbnNdKSA9PiB0aGlzLmxlYWZsZXQucG9seWxpbmUoZXhwcmVzc2lvbnMsIHRoaXMucG9seWxpbmVPcHRpb25zKSksXG4gICAgICAgIHNjYW4oKG9sZFBvbHlsaW5lLCBuZXdQb2x5bGluZSkgPT4ge1xuICAgICAgICAgIGlmICghIW9sZFBvbHlsaW5lKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihvbGRQb2x5bGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghIW5ld1BvbHlsaW5lKSB7XG4gICAgICAgICAgICBuZXdQb2x5bGluZS5hZGRUbyh0aGlzLm1hcCk7XG4gICAgICAgICAgICB0aGlzLmZpdEJvdW5kcyhuZXdQb2x5bGluZS5nZXRCb3VuZHMoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5ld1BvbHlsaW5lO1xuICAgICAgICB9LCBudWxsKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1hcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hc3NldHM/LmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlcy5hc3NldHM/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2VDb25maWcoY2hhbmdlcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJC5uZXh0KCk7XG4gICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0T3V0cHV0cygpIHtcbiAgICBjb25zdCBnZXRNYXBFdmVudE9ic2VydmFibGUgPSBldmVudE5hbWUgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMub25NYXAucGlwZShcbiAgICAgICAgZmlsdGVyKG1hcCA9PiAhIW1hcCksXG4gICAgICAgIHN3aXRjaE1hcChtYXAgPT4gZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50PihtYXAsIGV2ZW50TmFtZSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgKTtcbiAgICB9O1xuICAgIGNvbnN0IGRyYWdTdGFydCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdzdGFydCcpO1xuICAgIGNvbnN0IG1vdmUkID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCdtb3ZlJyk7XG4gICAgY29uc3QgZHJhZ0VuZCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdlbmQnKTtcblxuICAgIHRoaXMub25Nb3ZlID0gZHJhZ1N0YXJ0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IG1vdmUkLnBpcGUodGFrZVVudGlsKGRyYWdFbmQkKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgdGhpcy5vbk1vdmVFbmQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ21vdmVlbmQnKTtcblxuICAgIHRoaXMub25ab29tRW5kID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tZW5kJyk7XG5cbiAgICB0aGlzLm9uWm9vbVN0YXJ0ID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tc3RhcnQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TWFwKGxheWVyczogTWFwVGlsZUxheWVyW10sIGRlZmF1bHRDb25maWc6IE1hcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgY2VudGVyOiB0aGlzLmNvbmZpZy5jZW50ZXIgfHwgZGVmYXVsdENvbmZpZy5jZW50ZXIsXG4gICAgICB6b29tU25hcDogMCxcbiAgICAgIHpvb206IHRoaXMuY29uZmlnLnpvb21MZXZlbCB8fCBkZWZhdWx0Q29uZmlnLnpvb21MZXZlbFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLm1hcCA9IHRoaXMubGVhZmxldC5tYXAodGhpcy5tYXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGRlZmF1bHRPcHRpb25zKTtcblxuICAgIHRoaXMubWFwLmF0dHJpYnV0aW9uQ29udHJvbC5zZXRQcmVmaXgoJycpO1xuXG4gICAgdGhpcy5hZGRMYXllcnMobGF5ZXJzKTtcblxuICAgIHRoaXMuaGFuZGxlTW9iaWxlKCk7XG5cbiAgICB0aGlzLm9uTWFwLm5leHQodGhpcy5tYXApO1xuXG4gICAgdGhpcy5pc0luaXQgPSB0cnVlO1xuICAgIHRoaXMub25Jbml0LmVtaXQodGhpcy5sZWFmbGV0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVNb2JpbGUoKSB7XG4gICAgLy8gYWRkaW5nIGV2ZW50IGxpc3RlbmVyIHRvIGRvIG1vYmlsZSAyIGZpbmdlciBzY3JvbGxpbmdcbiAgICBpZiAodGhpcy5sZWFmbGV0LkJyb3dzZXIubW9iaWxlKSB7XG4gICAgICBjb25zdCB0b3VjaE1zZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1VzZSB0d28gZmluZ2VycyB0byBtb3ZlIHRoZSBtYXAuJykpO1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYXAuZ2V0Q29udGFpbmVyKCk7XG4gICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdkYXRhLXRvdWNoLXdhcm5pbmctY29udGVudCcsIHRvdWNoTXNnKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkTGF5ZXJzKGxheWVyczogTWFwVGlsZUxheWVyW10pIHtcbiAgICBjb25zdCBmbGF0dGVuTGF5ZXJzOiBNYXBUaWxlTGF5ZXJbXSA9IGZsYXR0ZW4obGF5ZXJzKTtcbiAgICBjb25zdCBiYXNlTGF5ZXJzOiBMLkNvbnRyb2wuTGF5ZXJzT2JqZWN0ID0ge307XG4gICAgY29uc3Qgb3ZlcmxheXM6IEwuQ29udHJvbC5MYXllcnNPYmplY3QgPSB7fTtcbiAgICBsZXQgZmlyc3RMYXllciA9IHRydWU7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBzb3J0QnlQcmlvcml0eShmbGF0dGVuTGF5ZXJzKSkge1xuICAgICAgY29uc3Qgb2JqZWN0VG9BZGRUbyA9IGxheWVyLmlzT3ZlcmxheSA/IG92ZXJsYXlzIDogYmFzZUxheWVycztcbiAgICAgIGlmIChvYmplY3RUb0FkZFRvW2xheWVyLmxhYmVsXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGlsZXMgPSB0aGlzLmxlYWZsZXQudGlsZUxheWVyKGxheWVyLmxheWVyVXJsLCBsYXllci5vcHRpb25zKTtcbiAgICAgIGlmICghbGF5ZXIuaXNPdmVybGF5ICYmIGZpcnN0TGF5ZXIpIHtcbiAgICAgICAgZmlyc3RMYXllciA9IGZhbHNlO1xuICAgICAgICB0aWxlcy5hZGRUbyh0aGlzLm1hcCk7XG4gICAgICB9XG4gICAgICBvYmplY3RUb0FkZFRvW2xheWVyLmxhYmVsXSA9IHRpbGVzO1xuICAgIH1cbiAgICBpZiAoZmxhdHRlbkxheWVycy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuY29udHJvbC5sYXllcnMoYmFzZUxheWVycywgb3ZlcmxheXMsIHsgcG9zaXRpb246ICdib3R0b21sZWZ0JyB9KS5hZGRUbyh0aGlzLm1hcCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZUNvbmZpZyhjaGFuZ2U6IFNpbXBsZUNoYW5nZSkge1xuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnem9vbUxldmVsJykpIHtcbiAgICAgIHRoaXMubWFwLnNldFpvb20odGhpcy5jb25maWcuem9vbUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2NlbnRlcicpICYmIGV2ZXJ5KGNoYW5nZS5jdXJyZW50VmFsdWUuY2VudGVyLCBwID0+ICFpc051bGwocCkpKSB7XG4gICAgICB0aGlzLm1hcC5zZXRWaWV3KGNoYW5nZS5jdXJyZW50VmFsdWUuY2VudGVyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2ljb24nKSB8fCB0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnY29sb3InKSkge1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAncmVhbHRpbWUnKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLnN0YXJ0UmVhbHRpbWUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlLmN1cnJlbnRWYWx1ZS5yZWFsdGltZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RvcFJlYWx0aW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdmb2xsb3cnKSkge1xuICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8odGhpcy5hc3NldHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnZGlzYWJsZVBhbicpIHx8IHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdkaXNhYmxlWm9vbScpKSB7XG4gICAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhc0NoYW5nZWQoY2hhbmdlOiBTaW1wbGVDaGFuZ2UsIHByb3A6IGtleW9mIE1hcENvbmZpZykge1xuICAgIHJldHVybiBjaGFuZ2UuY3VycmVudFZhbHVlW3Byb3BdICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZVtwcm9wXTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVDb250cm9scygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZVpvb20pIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZUNvbnRyb2wodGhpcy5tYXAuem9vbUNvbnRyb2wpO1xuICAgICAgdGhpcy5tYXAuc2Nyb2xsV2hlZWxab29tLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXAuYWRkQ29udHJvbCh0aGlzLm1hcC56b29tQ29udHJvbCk7XG4gICAgICB0aGlzLm1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlUGFuKSB7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVG91Y2goZTogRXZlbnQpIHtcbiAgICAvLyBEaXNyZWdhcmQgdG91Y2ggZXZlbnRzIG9uIHRoZSBtaW5pbWFwIGlmIHByZXNlbnRcbiAgICBjb25zdCBpZ25vcmVMaXN0ID0gW1xuICAgICAgJ2xlYWZsZXQtY29udHJvbC1taW5pbWFwJyxcbiAgICAgICdsZWFmbGV0LWludGVyYWN0aXZlJyxcbiAgICAgICdsZWFmbGV0LXBvcHVwLWNvbnRlbnQnLFxuICAgICAgJ2xlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyJyxcbiAgICAgICdsZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbicsXG4gICAgICAnbGVhZmxldC1jb250cm9sLXpvb20taW4nLFxuICAgICAgJ2xlYWZsZXQtY29udHJvbC16b29tLW91dCdcbiAgICBdO1xuXG4gICAgbGV0IGlnbm9yZUVsZW1lbnQgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlnbm9yZUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxlYWZsZXQuRG9tVXRpbC5oYXNDbGFzcyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudCwgaWdub3JlTGlzdFtpXSkpIHtcbiAgICAgICAgaWdub3JlRWxlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYXAuZ2V0Q29udGFpbmVyKCk7XG4gICAgaWYgKGlnbm9yZUVsZW1lbnQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuaGFzQ2xhc3MoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQsICdsZWFmbGV0LWludGVyYWN0aXZlJykgJiZcbiAgICAgICAgZS50eXBlID09PSAndG91Y2htb3ZlJyAmJlxuICAgICAgICAoZSBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLmFkZENsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlLnR5cGUgIT09ICd0b3VjaG1vdmUnICYmIGUudHlwZSAhPT0gJ3RvdWNoc3RhcnQnKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZSBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuYWRkQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5lbmFibGUoKTtcbiAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHpvb21Ub0JvdW5kKGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0W10pIHtcbiAgICBpZiAoaXNFbXB0eShhc3NldHMpKSByZXR1cm47XG5cbiAgICBjb25zdCBib3VuZHM6IFtudW1iZXIsIG51bWJlcl1bXSA9IGFzc2V0cy5tYXAoYXNzZXQgPT4gW1xuICAgICAgYXNzZXQuYzh5X1Bvc2l0aW9uLmxhdCxcbiAgICAgIGFzc2V0LmM4eV9Qb3NpdGlvbi5sbmdcbiAgICBdKTtcbiAgICBpZiAoYXNzZXRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubWFwLmZseVRvQm91bmRzKGJvdW5kcywgeyBhbmltYXRlOiBmYWxzZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tYXAuZmx5VG8oXG4gICAgICBbYXNzZXRzWzBdLmM4eV9Qb3NpdGlvbi5sYXQsIGFzc2V0c1swXS5jOHlfUG9zaXRpb24ubG5nXSxcbiAgICAgIHRoaXMubWFwLm9wdGlvbnMuem9vbSxcbiAgICAgIHtcbiAgICAgICAgYW5pbWF0ZTogZmFsc2VcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXRCb3VuZHMoYm91bmRzOiBMLkxhdExuZ0JvdW5kcykge1xuICAgIGlmIChib3VuZHM/LmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGJvdW5kcywgdGhpcy5jb25maWcuZml0Qm91bmRzT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBiaW5kUG9wdXAobWFya2VyOiBDOHlNYXJrZXIsIGNvbnRleHQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IElFdmVudCkge1xuICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICBtYXJrZXIub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnBvcHVwLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgdmlldyA9IHRoaXMucG9wdXAudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5wb3B1cC50ZW1wbGF0ZSwge1xuICAgICAgICAgICRpbXBsaWNpdDogY29udGV4dFxuICAgICAgICB9KTtcbiAgICAgICAgdmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIG1hcmtlclxuICAgICAgICAgIC51bmJpbmRQb3B1cCgpXG4gICAgICAgICAgLmJpbmRQb3B1cCh0aGlzLnBvcHVwLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wcmV2aW91c1NpYmxpbmcsIHtcbiAgICAgICAgICAgIG9mZnNldDogWy0zLCAtNDBdLFxuICAgICAgICAgICAgbWF4V2lkdGg6IDE0MCxcbiAgICAgICAgICAgIGF1dG9QYW46IHRydWUsXG4gICAgICAgICAgICBjbG9zZUJ1dHRvbjogZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vcGVuUG9wdXAoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImM4eS1tYXBcIj5cbiAgPGRpdiAjbWFwPjwvZGl2PlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21hcC9tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbWFwL21hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZCw4QkFBOEIsRUFDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFHTCxZQUFZLEVBRVosa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRC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bnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlIHsgTWFwRGVmYXVsdENvbmZpZywgTWFwVGlsZUxheWVyIH0gZnJvbSAnQGM4eS9vcHRpb25zJztcbmltcG9ydCB7XG4gIERhdGVQaXBlLFxuICBHZW9TZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlLFxuICBzb3J0QnlQcmlvcml0eSxcbiAgV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgZmxhdHRlbiwgaXNFbXB0eSwgaXNVbmRlZmluZWQsIHJlbW92ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb21FdmVudCxcbiAgTkVWRVIsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1hcCwgc2Nhbiwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXBQb3B1cERpcmVjdGl2ZSB9IGZyb20gJy4vbWFwLXBvcHVwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBDOHlNYXJrZXIsXG4gIEM4eU1hcmtlckF0dHJpYnV0ZXMsXG4gIGdldEM4eU1hcmtlcixcbiAgTWFwQ29uZmlnLFxuICBNQVBfREVGQVVMVF9DT05GSUcsXG4gIE1BUF9USUxFX0xBWUVSLFxuICBQb3NpdGlvbk1hbmFnZWRPYmplY3Rcbn0gZnJvbSAnLi9tYXAubW9kZWwnO1xuaW1wb3J0IHsgTWFwU2VydmljZSB9IGZyb20gJy4vbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNOdWxsLCBldmVyeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWFwQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IG1hcCBvYmplY3QuXG4gICAqL1xuICBtYXA6IEwuTWFwO1xuICAvKipcbiAgICogVGhlIG1hcmtlcnMgcGxhY2VkIG9uIHRoZSBtYXAuXG4gICAqL1xuICBtYXJrZXJzOiBBcnJheTxDOHlNYXJrZXIgfCBMLk1hcmtlcj4gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IHJlcHJlc2VudGF0aW9uIHVzZWQuXG4gICAqL1xuICBsZWFmbGV0OiB0eXBlb2YgTDtcbiAgLyoqXG4gICAqIFRlbGxzIGlmIHRoZSBtYXAgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBpc0luaXQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdtYXAnKVxuICBtYXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGQoTWFwUG9wdXBEaXJlY3RpdmUpXG4gIHBvcHVwOiBNYXBQb3B1cERpcmVjdGl2ZTtcblxuICBASW5wdXQoKVxuICBjb25maWc6IE1hcENvbmZpZyA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0IHwgUG9zaXRpb25NYW5hZ2VkT2JqZWN0W107XG5cbiAgQElucHV0KClcbiAgcG9seWxpbmUkOiBPYnNlcnZhYmxlPEwuTGF0TG5nRXhwcmVzc2lvbltdIHwgTC5MYXRMbmdFeHByZXNzaW9uW11bXT4gPSBORVZFUjtcblxuICBASW5wdXQoKVxuICBwb2x5bGluZU9wdGlvbnM6IEwuUG9seWxpbmVPcHRpb25zO1xuXG4gIEBPdXRwdXQoKVxuICBvblJlYWx0aW1lVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZTogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZUVuZDogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uWm9vbVN0YXJ0OiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25ab29tRW5kOiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25NYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEwuTWFwIHwgbnVsbD4obnVsbCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8dHlwZW9mIEw+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWx0aW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZVRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbW9SZWFsdGltZVNlcnZpY2U6IE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UsXG4gICAgQEluamVjdChNQVBfVElMRV9MQVlFUikgcHJvdGVjdGVkIGxheWVycyQ6IE9ic2VydmFibGU8TWFwVGlsZUxheWVyW10+LFxuICAgIEBJbmplY3QoTUFQX0RFRkFVTFRfQ09ORklHKVxuICAgIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnJDogT2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZ2VvOiBHZW9TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJvdGVjdGVkIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZTogV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdE91dHB1dHMoKTtcbiAgfVxuXG4gIHN0YXJ0UmVhbHRpbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0cyB8fCAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykgJiYgdGhpcy5hc3NldHMubGVuZ3RoID4gMSkpIHtcbiAgICAgIHRoaXMuY29uZmlnLnJlYWx0aW1lID0gZmFsc2U7XG4gICAgICB0aGlzLnN0b3BSZWFsdGltZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhc3NldCA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHNbMF0gOiB0aGlzLmFzc2V0cztcbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uID0gdGhpcy5tb1JlYWx0aW1lU2VydmljZVxuICAgICAgLm9uVXBkYXRlJChhc3NldClcbiAgICAgIC5zdWJzY3JpYmUoKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpID0+IHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5maW5kTWFya2VyKGFzc2V0LmlkKTtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMuZ2V0QXNzZXRJY29uKGFzc2V0KTtcbiAgICAgICAgbWFya2VyLnNldEljb24oaWNvbik7XG4gICAgICAgIG1hcmtlci5zZXRMYXRMbmcodGhpcy5nZW8uZ2V0TGF0TG9uZyhhc3NldCkpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1swXSA9IGFzc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXNzZXRzID0gYXNzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8oYXNzZXQpO1xuICAgICAgICB0aGlzLm9uUmVhbHRpbWVVcGRhdGUuZW1pdChhc3NldCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG1vdmVUb1Bvc2l0aW9uT2ZNbyhwb3NpdGlvbnM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBBcnJheS5pc0FycmF5KHBvc2l0aW9ucykgPyBwb3NpdGlvbnNbMF0gOiBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZvbGxvdykge1xuICAgICAgdGhpcy5tYXAuc2V0VmlldyhbcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxhdCwgcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxuZ10pO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BSZWFsdGltZSgpIHtcbiAgICBpZiAodGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmRNYXJrZXIobW9PcklkOiBzdHJpbmcgfCBJRXZlbnQgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBnZXRJZCA9IG1vT3JJZCA9PiAodHlwZW9mIG1vT3JJZCA9PT0gJ3N0cmluZycgPyBtb09ySWQgOiBtb09ySWQ/LmlkKTtcbiAgICByZXR1cm4gdGhpcy5tYXJrZXJzLmZpbmQoXG4gICAgICAobWFya2VyOiBDOHlNYXJrZXIpID0+XG4gICAgICAgIG1hcmtlci5hc3NldD8uaWQgPT09IGdldElkKG1vT3JJZCkgfHwgbWFya2VyLmV2ZW50Py5pZCA9PT0gZ2V0SWQobW9PcklkKVxuICAgICk7XG4gIH1cblxuICBhZGRNYXJrZXJUb01hcChtYXJrZXI6IEM4eU1hcmtlciB8IEwuTWFya2VyKSB7XG4gICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICBtYXJrZXIuYWRkVG8odGhpcy5tYXApO1xuICB9XG5cbiAgZ2V0QXNzZXRNYXJrZXIoYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpY29uID0gdGhpcy5nZXRBc3NldEljb24oYXNzZXQpO1xuICAgIGNvbnN0IGxlYWZsZXRNYXJrZXIgPSB0aGlzLmxlYWZsZXQubWFya2VyKHRoaXMuZ2VvLmdldExhdExvbmcoYXNzZXQpLCB7XG4gICAgICBpY29uXG4gICAgfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIGFzc2V0KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGFzc2V0KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRUcmFja2luZ01hcmtlcihldmVudDogSUV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGljb24gPSB0aGlzLmdldFRyYWNraW5nSWNvbigpO1xuICAgIGNvbnN0IGxlYWZsZXRNYXJrZXIgPSB0aGlzLmxlYWZsZXQubWFya2VyKHRoaXMuZ2VvLmdldExhdExvbmcoZXZlbnQpLCB7IGljb24gfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIG51bGwsIGV2ZW50KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGV2ZW50KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRBc3NldEljb24oYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGFzc2V0VHlwZUljb24gPSB0aGlzLmNvbmZpZy5pY29uIHx8IGFzc2V0Lmljb24/Lm5hbWU7XG4gICAgY29uc3Qgc3RhdHVzID0gTWFwU2VydmljZS5nZXRTdGF0dXMoYXNzZXQpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb25maWcuY29sb3IgPyBgc3R5bGU9J2NvbG9yOiAke3RoaXMuY29uZmlnLmNvbG9yfTsnYCA6ICcnO1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCAke3N0YXR1c31cIiAke2NvbG9yfT48aSBjbGFzcz1cImRsdC1jOHktaWNvbi0ke1xuICAgICAgICBhc3NldFR5cGVJY29uIHx8ICdkYXRhLXRyYW5zZmVyJ1xuICAgICAgfVwiIC8+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgZ2V0VHJhY2tpbmdJY29uKCkge1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCB0ZXh0LW11dGVkXCI+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgcmVtb3ZlTWFya2VyKG1hcmtlcjogQzh5TWFya2VyIHwgTC5NYXJrZXIpIHtcbiAgICBpZiAobWFya2VyKSB7XG4gICAgICBtYXJrZXIucmVtb3ZlKCk7XG4gICAgICByZW1vdmUodGhpcy5tYXJrZXJzLCBtID0+IG0gPT09IG1hcmtlcik7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJNYXJrZXJzKGZyYWdtZW50PzogQzh5TWFya2VyQXR0cmlidXRlcykge1xuICAgIGNvbnN0IG1hdGNoaW5nTWFya2VycyA9IG1hcmtlciA9PiAhZnJhZ21lbnQgfHwgISFtYXJrZXJbZnJhZ21lbnRdO1xuICAgIHRoaXMubWFya2Vycy5maWx0ZXIobWF0Y2hpbmdNYXJrZXJzKS5mb3JFYWNoKG1hcmtlciA9PiBtYXJrZXIucmVtb3ZlKCkpO1xuICAgIHRoaXMubWFya2VycyA9IHRoaXMubWFya2Vycy5maWx0ZXIobWFya2VyID0+ICFtYXRjaGluZ01hcmtlcnMobWFya2VyKSk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIGxldCBhc3NldHM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdID0gW107XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLmFzc2V0cykpIHtcbiAgICAgIGFzc2V0cyA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHMgOiBbdGhpcy5hc3NldHNdO1xuICAgIH1cbiAgICBhc3NldHMuZm9yRWFjaChhc3NldCA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KTtcbiAgICAgIHRoaXMuYWRkTWFya2VyVG9NYXAobWFya2VyKTtcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmNlbnRlcikge1xuICAgICAgdGhpcy56b29tVG9Cb3VuZChhc3NldHMpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gIH1cblxuICBjZW50ZXIoKSB7XG4gICAgdGhpcy5tYXA/LnNldFZpZXcodGhpcy5jb25maWcuY2VudGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0KSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIGNvbnN0IGluaXRpYWxpemVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubGF5ZXJzJCwgdGhpcy5kZWZhdWx0Q29uZmlnJF0pLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgaW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoW2xheWVycywgZGVmYXVsdENvbmZpZ10pID0+IHtcbiAgICAgIHRoaXMuaW5pdE1hcChsYXllcnMsIGRlZmF1bHRDb25maWcpO1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5wb2x5bGluZSQsIGluaXRpYWxpemVkJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChbZXhwcmVzc2lvbnNdKSA9PiB0aGlzLmxlYWZsZXQucG9seWxpbmUoZXhwcmVzc2lvbnMsIHRoaXMucG9seWxpbmVPcHRpb25zKSksXG4gICAgICAgIHNjYW4oKG9sZFBvbHlsaW5lLCBuZXdQb2x5bGluZSkgPT4ge1xuICAgICAgICAgIGlmICghIW9sZFBvbHlsaW5lKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihvbGRQb2x5bGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghIW5ld1BvbHlsaW5lKSB7XG4gICAgICAgICAgICBuZXdQb2x5bGluZS5hZGRUbyh0aGlzLm1hcCk7XG4gICAgICAgICAgICB0aGlzLmZpdEJvdW5kcyhuZXdQb2x5bGluZS5nZXRCb3VuZHMoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5ld1BvbHlsaW5lO1xuICAgICAgICB9LCBudWxsKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1hcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hc3NldHM/LmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlcy5hc3NldHM/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2VDb25maWcoY2hhbmdlcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJC5uZXh0KCk7XG4gICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0T3V0cHV0cygpIHtcbiAgICBjb25zdCBnZXRNYXBFdmVudE9ic2VydmFibGUgPSBldmVudE5hbWUgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMub25NYXAucGlwZShcbiAgICAgICAgZmlsdGVyKG1hcCA9PiAhIW1hcCksXG4gICAgICAgIHN3aXRjaE1hcChtYXAgPT4gZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50PihtYXAsIGV2ZW50TmFtZSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgKTtcbiAgICB9O1xuICAgIGNvbnN0IGRyYWdTdGFydCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdzdGFydCcpO1xuICAgIGNvbnN0IG1vdmUkID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCdtb3ZlJyk7XG4gICAgY29uc3QgZHJhZ0VuZCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdlbmQnKTtcblxuICAgIHRoaXMub25Nb3ZlID0gZHJhZ1N0YXJ0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IG1vdmUkLnBpcGUodGFrZVVudGlsKGRyYWdFbmQkKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgdGhpcy5vbk1vdmVFbmQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ21vdmVlbmQnKTtcblxuICAgIHRoaXMub25ab29tRW5kID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tZW5kJyk7XG5cbiAgICB0aGlzLm9uWm9vbVN0YXJ0ID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tc3RhcnQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TWFwKGxheWVyczogTWFwVGlsZUxheWVyW10sIGRlZmF1bHRDb25maWc6IE1hcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgY2VudGVyOiB0aGlzLmNvbmZpZy5jZW50ZXIgfHwgZGVmYXVsdENvbmZpZy5jZW50ZXIsXG4gICAgICB6b29tU25hcDogMCxcbiAgICAgIHpvb206IHRoaXMuY29uZmlnLnpvb21MZXZlbCB8fCBkZWZhdWx0Q29uZmlnLnpvb21MZXZlbFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLm1hcCA9IHRoaXMubGVhZmxldC5tYXAodGhpcy5tYXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGRlZmF1bHRPcHRpb25zKTtcblxuICAgIHRoaXMubWFwLmF0dHJpYnV0aW9uQ29udHJvbC5zZXRQcmVmaXgoJycpO1xuXG4gICAgdGhpcy5hZGRMYXllcnMobGF5ZXJzKTtcblxuICAgIHRoaXMuaGFuZGxlTW9iaWxlKCk7XG5cbiAgICB0aGlzLm9uTWFwLm5leHQodGhpcy5tYXApO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLnN0YXJ0UmVhbHRpbWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzLmxlYWZsZXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU1vYmlsZSgpIHtcbiAgICAvLyBhZGRpbmcgZXZlbnQgbGlzdGVuZXIgdG8gZG8gbW9iaWxlIDIgZmluZ2VyIHNjcm9sbGluZ1xuICAgIGlmICh0aGlzLmxlYWZsZXQuQnJvd3Nlci5tb2JpbGUpIHtcbiAgICAgIGNvbnN0IHRvdWNoTXNnID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnVXNlIHR3byBmaW5nZXJzIHRvIG1vdmUgdGhlIG1hcC4nKSk7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm1hcC5nZXRDb250YWluZXIoKTtcbiAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2RhdGEtdG91Y2gtd2FybmluZy1jb250ZW50JywgdG91Y2hNc2cpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBldmVudCA9PiB0aGlzLmhhbmRsZVRvdWNoKGV2ZW50KSk7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRMYXllcnMobGF5ZXJzOiBNYXBUaWxlTGF5ZXJbXSkge1xuICAgIGNvbnN0IGZsYXR0ZW5MYXllcnM6IE1hcFRpbGVMYXllcltdID0gZmxhdHRlbihsYXllcnMpO1xuICAgIGNvbnN0IGJhc2VMYXllcnM6IEwuQ29udHJvbC5MYXllcnNPYmplY3QgPSB7fTtcbiAgICBjb25zdCBvdmVybGF5czogTC5Db250cm9sLkxheWVyc09iamVjdCA9IHt9O1xuICAgIGxldCBmaXJzdExheWVyID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHNvcnRCeVByaW9yaXR5KGZsYXR0ZW5MYXllcnMpKSB7XG4gICAgICBjb25zdCBvYmplY3RUb0FkZFRvID0gbGF5ZXIuaXNPdmVybGF5ID8gb3ZlcmxheXMgOiBiYXNlTGF5ZXJzO1xuICAgICAgaWYgKG9iamVjdFRvQWRkVG9bbGF5ZXIubGFiZWxdKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aWxlcyA9IHRoaXMubGVhZmxldC50aWxlTGF5ZXIobGF5ZXIubGF5ZXJVcmwsIGxheWVyLm9wdGlvbnMpO1xuICAgICAgaWYgKCFsYXllci5pc092ZXJsYXkgJiYgZmlyc3RMYXllcikge1xuICAgICAgICBmaXJzdExheWVyID0gZmFsc2U7XG4gICAgICAgIHRpbGVzLmFkZFRvKHRoaXMubWFwKTtcbiAgICAgIH1cbiAgICAgIG9iamVjdFRvQWRkVG9bbGF5ZXIubGFiZWxdID0gdGlsZXM7XG4gICAgfVxuICAgIGlmIChmbGF0dGVuTGF5ZXJzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubGVhZmxldC5jb250cm9sLmxheWVycyhiYXNlTGF5ZXJzLCBvdmVybGF5cywgeyBwb3NpdGlvbjogJ2JvdHRvbWxlZnQnIH0pLmFkZFRvKHRoaXMubWFwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhbmdlQ29uZmlnKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICd6b29tTGV2ZWwnKSkge1xuICAgICAgdGhpcy5tYXAuc2V0Wm9vbSh0aGlzLmNvbmZpZy56b29tTGV2ZWwpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnY2VudGVyJykgJiYgZXZlcnkoY2hhbmdlLmN1cnJlbnRWYWx1ZS5jZW50ZXIsIHAgPT4gIWlzTnVsbChwKSkpIHtcbiAgICAgIHRoaXMubWFwLnNldFZpZXcoY2hhbmdlLmN1cnJlbnRWYWx1ZS5jZW50ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnaWNvbicpIHx8IHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdjb2xvcicpKSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdyZWFsdGltZScpICYmIGNoYW5nZS5jdXJyZW50VmFsdWUucmVhbHRpbWUpIHtcbiAgICAgIHRoaXMuc3RhcnRSZWFsdGltZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2UuY3VycmVudFZhbHVlLnJlYWx0aW1lID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2ZvbGxvdycpKSB7XG4gICAgICB0aGlzLm1vdmVUb1Bvc2l0aW9uT2ZNbyh0aGlzLmFzc2V0cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdkaXNhYmxlUGFuJykgfHwgdGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2Rpc2FibGVab29tJykpIHtcbiAgICAgIHRoaXMudG9nZ2xlQ29udHJvbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFzQ2hhbmdlZChjaGFuZ2U6IFNpbXBsZUNoYW5nZSwgcHJvcDoga2V5b2YgTWFwQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNoYW5nZS5jdXJyZW50VmFsdWVbcHJvcF0gIT09IGNoYW5nZS5wcmV2aW91c1ZhbHVlW3Byb3BdO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUNvbnRyb2xzKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlWm9vbSkge1xuICAgICAgdGhpcy5tYXAucmVtb3ZlQ29udHJvbCh0aGlzLm1hcC56b29tQ29udHJvbCk7XG4gICAgICB0aGlzLm1hcC5zY3JvbGxXaGVlbFpvb20uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcC5hZGRDb250cm9sKHRoaXMubWFwLnpvb21Db250cm9sKTtcbiAgICAgIHRoaXMubWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGVQYW4pIHtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUb3VjaChlOiBFdmVudCkge1xuICAgIC8vIERpc3JlZ2FyZCB0b3VjaCBldmVudHMgb24gdGhlIG1pbmltYXAgaWYgcHJlc2VudFxuICAgIGNvbnN0IGlnbm9yZUxpc3QgPSBbXG4gICAgICAnbGVhZmxldC1jb250cm9sLW1pbmltYXAnLFxuICAgICAgJ2xlYWZsZXQtaW50ZXJhY3RpdmUnLFxuICAgICAgJ2xlYWZsZXQtcG9wdXAtY29udGVudCcsXG4gICAgICAnbGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXInLFxuICAgICAgJ2xlYWZsZXQtcG9wdXAtY2xvc2UtYnV0dG9uJyxcbiAgICAgICdsZWFmbGV0LWNvbnRyb2wtem9vbS1pbicsXG4gICAgICAnbGVhZmxldC1jb250cm9sLXpvb20tb3V0J1xuICAgIF07XG5cbiAgICBsZXQgaWdub3JlRWxlbWVudCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWdub3JlTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMubGVhZmxldC5Eb21VdGlsLmhhc0NsYXNzKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBpZ25vcmVMaXN0W2ldKSkge1xuICAgICAgICBpZ25vcmVFbGVtZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm1hcC5nZXRDb250YWluZXIoKTtcbiAgICBpZiAoaWdub3JlRWxlbWVudCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5oYXNDbGFzcyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudCwgJ2xlYWZsZXQtaW50ZXJhY3RpdmUnKSAmJlxuICAgICAgICBlLnR5cGUgPT09ICd0b3VjaG1vdmUnICYmXG4gICAgICAgIChlIGFzIFRvdWNoRXZlbnQpLnRvdWNoZXMubGVuZ3RoID09PSAxXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuYWRkQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGUudHlwZSAhPT0gJ3RvdWNobW92ZScgJiYgZS50eXBlICE9PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChlIGFzIFRvdWNoRXZlbnQpLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5hZGRDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmVuYWJsZSgpO1xuICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgem9vbVRvQm91bmQoYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXSkge1xuICAgIGlmIChpc0VtcHR5KGFzc2V0cykpIHJldHVybjtcblxuICAgIGNvbnN0IGJvdW5kczogW251bWJlciwgbnVtYmVyXVtdID0gYXNzZXRzLm1hcChhc3NldCA9PiBbXG4gICAgICBhc3NldC5jOHlfUG9zaXRpb24ubGF0LFxuICAgICAgYXNzZXQuYzh5X1Bvc2l0aW9uLmxuZ1xuICAgIF0pO1xuICAgIGlmIChhc3NldHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5tYXAuZmx5VG9Cb3VuZHMoYm91bmRzLCB7IGFuaW1hdGU6IGZhbHNlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1hcC5mbHlUbyhcbiAgICAgIFthc3NldHNbMF0uYzh5X1Bvc2l0aW9uLmxhdCwgYXNzZXRzWzBdLmM4eV9Qb3NpdGlvbi5sbmddLFxuICAgICAgdGhpcy5tYXAub3B0aW9ucy56b29tLFxuICAgICAge1xuICAgICAgICBhbmltYXRlOiBmYWxzZVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpdEJvdW5kcyhib3VuZHM6IEwuTGF0TG5nQm91bmRzKSB7XG4gICAgaWYgKGJvdW5kcz8uaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLm1hcC5maXRCb3VuZHMoYm91bmRzLCB0aGlzLmNvbmZpZy5maXRCb3VuZHNPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJpbmRQb3B1cChtYXJrZXI6IEM4eU1hcmtlciwgY29udGV4dDogUG9zaXRpb25NYW5hZ2VkT2JqZWN0IHwgSUV2ZW50KSB7XG4gICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgIG1hcmtlci5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucG9wdXAudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5wb3B1cC52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnBvcHVwLnRlbXBsYXRlLCB7XG4gICAgICAgICAgJGltcGxpY2l0OiBjb250ZXh0XG4gICAgICAgIH0pO1xuICAgICAgICB2aWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgbWFya2VyXG4gICAgICAgICAgLnVuYmluZFBvcHVwKClcbiAgICAgICAgICAuYmluZFBvcHVwKHRoaXMucG9wdXAuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnByZXZpb3VzU2libGluZywge1xuICAgICAgICAgICAgb2Zmc2V0OiBbLTMsIC00MF0sXG4gICAgICAgICAgICBtYXhXaWR0aDogMTQwLFxuICAgICAgICAgICAgYXV0b1BhbjogdHJ1ZSxcbiAgICAgICAgICAgIGNsb3NlQnV0dG9uOiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9wZW5Qb3B1cCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYzh5LW1hcFwiPlxuICA8ZGl2ICNtYXA+PC9kaXY+XG48L2Rpdj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
@@ -1,4 +1,3 @@
1
- import { AsyncPipe } from '@angular/common';
2
1
  import { Component, ViewChild } from '@angular/core';
3
2
  import { FormsModule } from '@angular/forms';
4
3
  import { ActivatedRoute } from '@angular/router';
@@ -24,7 +23,7 @@ export class TrackingComponent {
24
23
  preventChangeToNextMonth: true
25
24
  };
26
25
  this.config = {
27
- realtime: false,
26
+ realtime: true,
28
27
  follow: false,
29
28
  zoomLevel: 12,
30
29
  fitBoundsOptions: {
@@ -70,21 +69,20 @@ export class TrackingComponent {
70
69
  }
71
70
  }
72
71
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TrackingComponent, deps: [{ token: i1.TrackingService }, { token: i2.EventRealtimeService }, { token: i2.ContextRouteService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TrackingComponent, isStandalone: true, selector: "c8y-tracking", providers: [TrackingService, EventRealtimeService], viewQueries: [{ propertyName: "map", first: true, predicate: MapComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n>\n <c8y-realtime-btn\n [service]=\"realtime\"\n [disabled]=\"realtimeDisabled\"\n (onToggle)=\"togglePositionRealtime($event)\"\n ></c8y-realtime-btn>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"60\"\n>\n <c8y-time-interval\n [maxCustomDate]=\"maxDate\"\n [dateRangePickerConfig]=\"dateRangePickerConfig\"\n (interval)=\"service.setInterval($event); toggleRealtime($event)\"\n ></c8y-time-interval>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n <div class=\"bg-white p-relative\">\n <c8y-map\n [config]=\"config\"\n [assets]=\"device\"\n [polyline$]=\"service.polyline$\"\n [polylineOptions]=\"{ color: 'darkblue' }\"\n >\n <div *c8yMapPopup=\"let context\">\n <c8y-tracking-marker-popup [context]=\"context\"></c8y-tracking-marker-popup>\n </div>\n </c8y-map>\n </div>\n\n <div class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\">\n <div class=\"card-header large-padding separator sticky-top\">\n <span\n class=\"card-title\"\n translate\n >\n Tracking events\n </span>\n </div>\n <div class=\"inner-scroll\">\n <c8y-list-group class=\"c8y-list__group--strip\">\n <ng-template\n c8yFor\n let-event\n [c8yForOf]=\"service.events$\"\n [c8yForPipe]=\"service.pipe\"\n [c8yForRealtime]=\"realtime\"\n [c8yForRealtimeOptions]=\"{ entityOrId: device }\"\n [c8yForLoadMore]=\"'hidden'\"\n [c8yForNotFound]=\"empty\"\n (c8yForLoadMoreComponent)=\"\n loadMoreComponent = $event; loadMoreComponent.useIntersection = false\n \"\n >\n <c8y-li\n class=\"pointer\"\n [ngClass]=\"{ 'text-primary text-bold': activeMarkers['p' + event?.id] }\"\n (click)=\"toggleMarker(event)\"\n >\n <c8y-li-icon [ngClass]=\"{ 'text-primary': activeMarkers['p' + event?.id] }\">\n <i c8yIcon=\"c8y-location\"></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex\">\n <span>\n {{ event.time | date: 'mediumDate' }}\n </span>\n <span class=\"m-l-auto\">\n {{ event.time | date: 'mediumTime' }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n\n <!-- empty state -->\n <ng-template #empty>\n <c8y-ui-empty-state\n icon=\"c8y-location\"\n [title]=\"'No tracking events found.' | translate\"\n [subtitle]=\"'Select another time range.' | translate\"\n *ngIf=\"!service.hasEvents\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n\n <div *ngIf=\"loadMoreComponent?.hasMore\">\n <button\n class=\"btn btn-link fit-w sticky-bottom separator-top\"\n [title]=\"'Load more' | translate\"\n type=\"button\"\n [disabled]=\"loadMoreComponent?.isLoading\"\n (click)=\"loadMoreComponent.loadMore()\"\n >\n {{ 'Load more' | translate }}\n </button>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n [title]=\"'Deselect all markers' | translate\"\n type=\"button\"\n [disabled]=\"(activeMarkers | json) === '{}'\"\n (click)=\"map.clearMarkers('event'); activeMarkers = {}\"\n >\n {{ 'Deselect all markers' | translate }}\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: MapModule }, { kind: "component", type: i4.MapComponent, selector: "c8y-map", inputs: ["config", "assets", "polyline$", "polylineOptions"], outputs: ["onRealtimeUpdate", "onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onMap", "onInit"] }, { kind: "directive", type: i4.MapPopupDirective, selector: "[c8yMapPopup]" }, { kind: "ngmodule", type: ActionBarModule }, { kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.JsonPipe, name: "json" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "directive", type: i2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i2.TimeIntervalComponent, selector: "c8y-time-interval", inputs: ["minCustomDate", "maxCustomDate", "dateRangePickerConfig", "selectedInterval"], outputs: ["interval"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: TrackingMarkerPopupComponent, selector: "c8y-tracking-marker-popup", inputs: ["context"] }] }); }
72
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TrackingComponent, isStandalone: true, selector: "c8y-tracking", providers: [TrackingService, EventRealtimeService], viewQueries: [{ propertyName: "map", first: true, predicate: MapComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n>\n <c8y-realtime-btn\n [service]=\"realtime\"\n [disabled]=\"realtimeDisabled\"\n (onToggle)=\"togglePositionRealtime($event)\"\n ></c8y-realtime-btn>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"60\"\n>\n <c8y-time-interval\n [maxCustomDate]=\"maxDate\"\n [dateRangePickerConfig]=\"dateRangePickerConfig\"\n (interval)=\"service.setInterval($event); toggleRealtime($event)\"\n ></c8y-time-interval>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n <div class=\"bg-white p-relative\">\n <c8y-map\n [config]=\"config\"\n [assets]=\"device\"\n [polyline$]=\"service.polyline$\"\n [polylineOptions]=\"{ color: 'darkblue' }\"\n >\n <div *c8yMapPopup=\"let context\">\n <c8y-tracking-marker-popup [context]=\"context\"></c8y-tracking-marker-popup>\n </div>\n </c8y-map>\n </div>\n\n <div class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\">\n <div class=\"card-header large-padding separator sticky-top\">\n <span\n class=\"card-title\"\n translate\n >\n Tracking events\n </span>\n </div>\n <div class=\"inner-scroll\">\n <c8y-list-group class=\"c8y-list__group--strip\">\n <ng-template\n c8yFor\n let-event\n [c8yForOf]=\"service.events$\"\n [c8yForPipe]=\"service.pipe\"\n [c8yForRealtime]=\"realtime\"\n [c8yForRealtimeOptions]=\"{ entityOrId: device }\"\n [c8yForLoadMore]=\"'hidden'\"\n [c8yForNotFound]=\"empty\"\n (c8yForLoadMoreComponent)=\"\n loadMoreComponent = $event; loadMoreComponent.useIntersection = false\n \"\n >\n <c8y-li\n class=\"pointer\"\n [ngClass]=\"{ 'text-primary text-bold': activeMarkers['p' + event?.id] }\"\n (click)=\"toggleMarker(event)\"\n [attr.data-cy]=\"'c8y-tracking--tracking-event-item-' + event?.id\"\n >\n <c8y-li-icon [ngClass]=\"{ 'text-primary': activeMarkers['p' + event?.id] }\">\n <i c8yIcon=\"c8y-location\"></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex\">\n <span>\n {{ event.time | date: 'mediumDate' }}\n </span>\n <span class=\"m-l-auto\">\n {{ event.time | date: 'mediumTime' }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n\n <!-- empty state -->\n <ng-template #empty>\n <c8y-ui-empty-state\n icon=\"c8y-location\"\n [title]=\"'No tracking events found.' | translate\"\n [subtitle]=\"'Select another time range.' | translate\"\n *ngIf=\"!service.hasEvents\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n\n <div *ngIf=\"loadMoreComponent?.hasMore\">\n <button\n class=\"btn btn-link fit-w sticky-bottom separator-top\"\n [title]=\"'Load more' | translate\"\n type=\"button\"\n [disabled]=\"loadMoreComponent?.isLoading\"\n (click)=\"loadMoreComponent.loadMore()\"\n data-cy=\"c8y-tracking--load-more\"\n >\n {{ 'Load more' | translate }}\n </button>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n [title]=\"'Deselect all markers' | translate\"\n type=\"button\"\n [disabled]=\"(activeMarkers | json) === '{}'\"\n (click)=\"map.clearMarkers('event'); activeMarkers = {}\"\n >\n {{ 'Deselect all markers' | translate }}\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: MapModule }, { kind: "component", type: i4.MapComponent, selector: "c8y-map", inputs: ["config", "assets", "polyline$", "polylineOptions"], outputs: ["onRealtimeUpdate", "onMove", "onMoveEnd", "onZoomStart", "onZoomEnd", "onMap", "onInit"] }, { kind: "directive", type: i4.MapPopupDirective, selector: "[c8yMapPopup]" }, { kind: "ngmodule", type: ActionBarModule }, { kind: "component", type: i2.ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.JsonPipe, name: "json" }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "directive", type: i2.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i2.RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: ["service", "label", "title", "disabled"], outputs: ["onToggle"] }, { kind: "component", type: i2.TimeIntervalComponent, selector: "c8y-time-interval", inputs: ["minCustomDate", "maxCustomDate", "dateRangePickerConfig", "selectedInterval"], outputs: ["interval"] }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: TrackingMarkerPopupComponent, selector: "c8y-tracking-marker-popup", inputs: ["context"] }] }); }
74
73
  }
75
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TrackingComponent, decorators: [{
76
75
  type: Component,
77
76
  args: [{ standalone: true, imports: [
78
77
  MapModule,
79
- AsyncPipe,
80
78
  ActionBarModule,
81
79
  CoreModule,
82
80
  TimeIntervalComponent,
83
81
  FormsModule,
84
82
  TrackingMarkerPopupComponent
85
- ], providers: [TrackingService, EventRealtimeService], selector: 'c8y-tracking', template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n>\n <c8y-realtime-btn\n [service]=\"realtime\"\n [disabled]=\"realtimeDisabled\"\n (onToggle)=\"togglePositionRealtime($event)\"\n ></c8y-realtime-btn>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"60\"\n>\n <c8y-time-interval\n [maxCustomDate]=\"maxDate\"\n [dateRangePickerConfig]=\"dateRangePickerConfig\"\n (interval)=\"service.setInterval($event); toggleRealtime($event)\"\n ></c8y-time-interval>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n <div class=\"bg-white p-relative\">\n <c8y-map\n [config]=\"config\"\n [assets]=\"device\"\n [polyline$]=\"service.polyline$\"\n [polylineOptions]=\"{ color: 'darkblue' }\"\n >\n <div *c8yMapPopup=\"let context\">\n <c8y-tracking-marker-popup [context]=\"context\"></c8y-tracking-marker-popup>\n </div>\n </c8y-map>\n </div>\n\n <div class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\">\n <div class=\"card-header large-padding separator sticky-top\">\n <span\n class=\"card-title\"\n translate\n >\n Tracking events\n </span>\n </div>\n <div class=\"inner-scroll\">\n <c8y-list-group class=\"c8y-list__group--strip\">\n <ng-template\n c8yFor\n let-event\n [c8yForOf]=\"service.events$\"\n [c8yForPipe]=\"service.pipe\"\n [c8yForRealtime]=\"realtime\"\n [c8yForRealtimeOptions]=\"{ entityOrId: device }\"\n [c8yForLoadMore]=\"'hidden'\"\n [c8yForNotFound]=\"empty\"\n (c8yForLoadMoreComponent)=\"\n loadMoreComponent = $event; loadMoreComponent.useIntersection = false\n \"\n >\n <c8y-li\n class=\"pointer\"\n [ngClass]=\"{ 'text-primary text-bold': activeMarkers['p' + event?.id] }\"\n (click)=\"toggleMarker(event)\"\n >\n <c8y-li-icon [ngClass]=\"{ 'text-primary': activeMarkers['p' + event?.id] }\">\n <i c8yIcon=\"c8y-location\"></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex\">\n <span>\n {{ event.time | date: 'mediumDate' }}\n </span>\n <span class=\"m-l-auto\">\n {{ event.time | date: 'mediumTime' }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n\n <!-- empty state -->\n <ng-template #empty>\n <c8y-ui-empty-state\n icon=\"c8y-location\"\n [title]=\"'No tracking events found.' | translate\"\n [subtitle]=\"'Select another time range.' | translate\"\n *ngIf=\"!service.hasEvents\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n\n <div *ngIf=\"loadMoreComponent?.hasMore\">\n <button\n class=\"btn btn-link fit-w sticky-bottom separator-top\"\n [title]=\"'Load more' | translate\"\n type=\"button\"\n [disabled]=\"loadMoreComponent?.isLoading\"\n (click)=\"loadMoreComponent.loadMore()\"\n >\n {{ 'Load more' | translate }}\n </button>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n [title]=\"'Deselect all markers' | translate\"\n type=\"button\"\n [disabled]=\"(activeMarkers | json) === '{}'\"\n (click)=\"map.clearMarkers('event'); activeMarkers = {}\"\n >\n {{ 'Deselect all markers' | translate }}\n </button>\n </div>\n </div>\n</div>\n" }]
83
+ ], providers: [TrackingService, EventRealtimeService], selector: 'c8y-tracking', template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"100\"\n>\n <c8y-realtime-btn\n [service]=\"realtime\"\n [disabled]=\"realtimeDisabled\"\n (onToggle)=\"togglePositionRealtime($event)\"\n ></c8y-realtime-btn>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"60\"\n>\n <c8y-time-interval\n [maxCustomDate]=\"maxDate\"\n [dateRangePickerConfig]=\"dateRangePickerConfig\"\n (interval)=\"service.setInterval($event); toggleRealtime($event)\"\n ></c8y-time-interval>\n</c8y-action-bar-item>\n\n<div class=\"card card--grid content-fullpage d-grid grid__col--8-4--md\">\n <div class=\"bg-white p-relative\">\n <c8y-map\n [config]=\"config\"\n [assets]=\"device\"\n [polyline$]=\"service.polyline$\"\n [polylineOptions]=\"{ color: 'darkblue' }\"\n >\n <div *c8yMapPopup=\"let context\">\n <c8y-tracking-marker-popup [context]=\"context\"></c8y-tracking-marker-popup>\n </div>\n </c8y-map>\n </div>\n\n <div class=\"d-flex d-col bg-inherit content-fullpage bg-gray-white\">\n <div class=\"card-header large-padding separator sticky-top\">\n <span\n class=\"card-title\"\n translate\n >\n Tracking events\n </span>\n </div>\n <div class=\"inner-scroll\">\n <c8y-list-group class=\"c8y-list__group--strip\">\n <ng-template\n c8yFor\n let-event\n [c8yForOf]=\"service.events$\"\n [c8yForPipe]=\"service.pipe\"\n [c8yForRealtime]=\"realtime\"\n [c8yForRealtimeOptions]=\"{ entityOrId: device }\"\n [c8yForLoadMore]=\"'hidden'\"\n [c8yForNotFound]=\"empty\"\n (c8yForLoadMoreComponent)=\"\n loadMoreComponent = $event; loadMoreComponent.useIntersection = false\n \"\n >\n <c8y-li\n class=\"pointer\"\n [ngClass]=\"{ 'text-primary text-bold': activeMarkers['p' + event?.id] }\"\n (click)=\"toggleMarker(event)\"\n [attr.data-cy]=\"'c8y-tracking--tracking-event-item-' + event?.id\"\n >\n <c8y-li-icon [ngClass]=\"{ 'text-primary': activeMarkers['p' + event?.id] }\">\n <i c8yIcon=\"c8y-location\"></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex\">\n <span>\n {{ event.time | date: 'mediumDate' }}\n </span>\n <span class=\"m-l-auto\">\n {{ event.time | date: 'mediumTime' }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </ng-template>\n </c8y-list-group>\n </div>\n\n <!-- empty state -->\n <ng-template #empty>\n <c8y-ui-empty-state\n icon=\"c8y-location\"\n [title]=\"'No tracking events found.' | translate\"\n [subtitle]=\"'Select another time range.' | translate\"\n *ngIf=\"!service.hasEvents\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n </ng-template>\n\n <div *ngIf=\"loadMoreComponent?.hasMore\">\n <button\n class=\"btn btn-link fit-w sticky-bottom separator-top\"\n [title]=\"'Load more' | translate\"\n type=\"button\"\n [disabled]=\"loadMoreComponent?.isLoading\"\n (click)=\"loadMoreComponent.loadMore()\"\n data-cy=\"c8y-tracking--load-more\"\n >\n {{ 'Load more' | translate }}\n </button>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-default\"\n [title]=\"'Deselect all markers' | translate\"\n type=\"button\"\n [disabled]=\"(activeMarkers | json) === '{}'\"\n (click)=\"map.clearMarkers('event'); activeMarkers = {}\"\n >\n {{ 'Deselect all markers' | translate }}\n </button>\n </div>\n </div>\n</div>\n" }]
86
84
  }], ctorParameters: () => [{ type: i1.TrackingService }, { type: i2.EventRealtimeService }, { type: i2.ContextRouteService }, { type: i3.ActivatedRoute }], propDecorators: { map: [{
87
85
  type: ViewChild,
88
86
  args: [MapComponent]
89
87
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHJhY2tpbmcvdHJhY2tpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vdHJhY2tpbmcvdHJhY2tpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBaUIsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFDTCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLFVBQVUsRUFFVixvQkFBb0IsRUFHcEIscUJBQXFCLEVBQ3RCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFlBQVksRUFBYSxTQUFTLEVBQXlCLE1BQU0seUJBQXlCLENBQUM7QUFDcEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7O0FBaUJyRCxNQUFNLE9BQU8saUJBQWlCO0lBeUI1QixZQUNTLE9BQXdCLEVBQ3hCLFFBQThCLEVBQzdCLG1CQUF3QyxFQUN4QyxjQUE4QjtRQUgvQixZQUFPLEdBQVAsT0FBTyxDQUFpQjtRQUN4QixhQUFRLEdBQVIsUUFBUSxDQUFzQjtRQUM3Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXpCeEMsMEJBQXFCLEdBQTBCO1lBQzdDLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsaUJBQWlCLEVBQUUsSUFBSTtZQUN2Qix3QkFBd0IsRUFBRSxJQUFJO1NBQy9CLENBQUM7UUFFRixX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QUFjO3NMQUl4QixHQUFHO3NCQURGLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFjdGlvbkJhck1vZHVsZSxcbiAgQ29udGV4dFJvdXRlU2VydmljZSxcbiAgQ29yZU1vZHVsZSxcbiAgRGF0ZVJhbmdlUGlja2VyQ29uZmlnLFxuICBFdmVudFJlYWx0aW1lU2VydmljZSxcbiAgTG9hZE1vcmVDb21wb25lbnQsXG4gIFRpbWVJbnRlcnZhbCxcbiAgVGltZUludGVydmFsQ29tcG9uZW50XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTWFwQ29tcG9uZW50LCBNYXBDb25maWcsIE1hcE1vZHVsZSwgUG9zaXRpb25NYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9tYXAnO1xuaW1wb3J0IHsgVHJhY2tpbmdNYXJrZXJQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vdHJhY2tpbmctbWFya2VyLXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmFja2luZ1NlcnZpY2UgfSBmcm9tICcuL3RyYWNraW5nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyYWNraW5nLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIE1hcE1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgQWN0aW9uQmFyTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVGltZUludGVydmFsQ29tcG9uZW50LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYWNraW5nTWFya2VyUG9wdXBDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbVHJhY2tpbmdTZXJ2aWNlLCBFdmVudFJlYWx0aW1lU2VydmljZV0sXG4gIHNlbGVjdG9yOiAnYzh5LXRyYWNraW5nJ1xufSlcbmV4cG9ydCBjbGFzcyBUcmFja2luZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoTWFwQ29tcG9uZW50KVxuICBtYXA6IE1hcENvbXBvbmVudDtcblxuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc6IERhdGVSYW5nZVBpY2tlckNvbmZpZyA9IHtcbiAgICBhZGFwdGl2ZVBvc2l0aW9uOiB0cnVlLFxuICAgIHNob3dQcmV2aW91c01vbnRoOiB0cnVlLFxuICAgIHByZXZlbnRDaGFuZ2VUb05leHRNb250aDogdHJ1ZVxuICB9O1xuXG4gIGNvbmZpZzogTWFwQ29uZmlnID0ge1xuICAgIHJlYWx0aW1lOiBmYWxzZSxcbiAgICBmb2xsb3c6IGZhbHNlLFxuICAgIHpvb21MZXZlbDogMTIsXG4gICAgZml0Qm91bmRzT3B0aW9uczoge1xuICAgICAgcGFkZGluZzogWzUwLCA1MF1cbiAgICB9XG4gIH07XG5cbiAgbWF4RGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGFjdGl2ZU1hcmtlcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gIHJlYWx0aW1lRGlzYWJsZWQgPSBmYWxzZTtcbiAgZGV2aWNlOiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gIGxvYWRNb3JlQ29tcG9uZW50OiBMb2FkTW9yZUNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmljZTogVHJhY2tpbmdTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFsdGltZTogRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB7IGNvbnRleHREYXRhIH0gPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgdGhpcy5kZXZpY2UgPSBjb250ZXh0RGF0YSBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gIH1cblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLnNldERldmljZUlkKHRoaXMuZGV2aWNlLmlkKTtcbiAgICB0aGlzLnRvZ2dsZVBvc2l0aW9uUmVhbHRpbWUodGhpcy5yZWFsdGltZS5hY3RpdmUpO1xuICB9XG5cbiAgdG9nZ2xlTWFya2VyKGV2ZW50OiBJRXZlbnQpIHtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5tYXAuZmluZE1hcmtlcihldmVudCk7XG5cbiAgICBpZiAobWFya2VyKSB7XG4gICAgICB0aGlzLm1hcC5yZW1vdmVNYXJrZXIobWFya2VyKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZU1hcmtlcnNbYHAke2V2ZW50LmlkfWBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXJrZXIgPSB0aGlzLm1hcC5nZXRUcmFja2luZ01hcmtlcihldmVudCk7XG4gICAgICB0aGlzLm1hcC5hZGRNYXJrZXJUb01hcChtYXJrZXIpO1xuICAgICAgdGhpcy5hY3RpdmVNYXJrZXJzW2BwJHtldmVudC5pZH1gXSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlUG9zaXRpb25SZWFsdGltZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWcsIHJlYWx0aW1lOiBhY3RpdmUgfTtcbiAgfVxuXG4gIHRvZ2dsZVJlYWx0aW1lKGludGVydmFsOiBUaW1lSW50ZXJ2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50VGltZUluUmFuZ2UgPSBEYXRlLm5vdygpIDw9IGludGVydmFsPy5kYXRlVG8/LmdldFRpbWUoKTtcbiAgICB0aGlzLnRvZ2dsZVBvc2l0aW9uUmVhbHRpbWUoY3VycmVudFRpbWVJblJhbmdlKTtcbiAgICB0aGlzLnJlYWx0aW1lRGlzYWJsZWQgPSAhY3VycmVudFRpbWVJblJhbmdlO1xuXG4gICAgaWYgKGN1cnJlbnRUaW1lSW5SYW5nZSkge1xuICAgICAgdGhpcy5yZWFsdGltZS5zdGFydCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlYWx0aW1lLnN0b3AoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIFtwcmlvcml0eV09XCIxMDBcIlxuPlxuICA8Yzh5LXJlYWx0aW1lLWJ0blxuICAgIFtzZXJ2aWNlXT1cInJlYWx0aW1lXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhbHRpbWVEaXNhYmxlZFwiXG4gICAgKG9uVG9nZ2xlKT1cInRvZ2dsZVBvc2l0aW9uUmVhbHRpbWUoJGV2ZW50KVwiXG4gID48L2M4eS1yZWFsdGltZS1idG4+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICBbcHJpb3JpdHldPVwiNjBcIlxuPlxuICA8Yzh5LXRpbWUtaW50ZXJ2YWxcbiAgICBbbWF4Q3VzdG9tRGF0ZV09XCJtYXhEYXRlXCJcbiAgICBbZGF0ZVJhbmdlUGlja2VyQ29uZmlnXT1cImRhdGVSYW5nZVBpY2tlckNvbmZpZ1wiXG4gICAgKGludGVydmFsKT1cInNlcnZpY2Uuc2V0SW50ZXJ2YWwoJGV2ZW50KTsgdG9nZ2xlUmVhbHRpbWUoJGV2ZW50KVwiXG4gID48L2M4eS10aW1lLWludGVydmFsPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLS1ncmlkIGNvbnRlbnQtZnVsbHBhZ2UgZC1ncmlkIGdyaWRfX2NvbC0tOC00LS1tZFwiPlxuICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcC1yZWxhdGl2ZVwiPlxuICAgIDxjOHktbWFwXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICBbYXNzZXRzXT1cImRldmljZVwiXG4gICAgICBbcG9seWxpbmUkXT1cInNlcnZpY2UucG9seWxpbmUkXCJcbiAgICAgIFtwb2x5bGluZU9wdGlvbnNdPVwieyBjb2xvcjogJ2RhcmtibHVlJyB9XCJcbiAgICA+XG4gICAgICA8ZGl2ICpjOHlNYXBQb3B1cD1cImxldCBjb250ZXh0XCI+XG4gICAgICAgIDxjOHktdHJhY2tpbmctbWFya2VyLXBvcHVwIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2M4eS10cmFja2luZy1tYXJrZXItcG9wdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1tYXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1jb2wgYmctaW5oZXJpdCBjb250ZW50LWZ1bGxwYWdlIGJnLWdyYXktd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbGFyZ2UtcGFkZGluZyBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjYXJkLXRpdGxlXCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIFRyYWNraW5nIGV2ZW50c1xuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgIDxjOHktbGlzdC1ncm91cCBjbGFzcz1cImM4eS1saXN0X19ncm91cC0tc3RyaXBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgYzh5Rm9yXG4gICAgICAgICAgbGV0LWV2ZW50XG4gICAgICAgICAgW2M4eUZvck9mXT1cInNlcnZpY2UuZXZlbnRzJFwiXG4gICAgICAgICAgW2M4eUZvclBpcGVdPVwic2VydmljZS5waXBlXCJcbiAgICAgICAgICBbYzh5Rm9yUmVhbHRpbWVdPVwicmVhbHRpbWVcIlxuICAgICAgICAgIFtjOHlGb3JSZWFsdGltZU9wdGlvbnNdPVwieyBlbnRpdHlPcklkOiBkZXZpY2UgfVwiXG4gICAgICAgICAgW2M4eUZvckxvYWRNb3JlXT1cIidoaWRkZW4nXCJcbiAgICAgICAgICBbYzh5Rm9yTm90Rm91bmRdPVwiZW1wdHlcIlxuICAgICAgICAgIChjOHlGb3JMb2FkTW9yZUNvbXBvbmVudCk9XCJcbiAgICAgICAgICAgIGxvYWRNb3JlQ29tcG9uZW50ID0gJGV2ZW50OyBsb2FkTW9yZUNvbXBvbmVudC51c2VJbnRlcnNlY3Rpb24gPSBmYWxzZVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWxpXG4gICAgICAgICAgICBjbGFzcz1cInBvaW50ZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndGV4dC1wcmltYXJ5IHRleHQtYm9sZCc6IGFjdGl2ZU1hcmtlcnNbJ3AnICsgZXZlbnQ/LmlkXSB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNYXJrZXIoZXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Yzh5LWxpLWljb24gW25nQ2xhc3NdPVwieyAndGV4dC1wcmltYXJ5JzogYWN0aXZlTWFya2Vyc1sncCcgKyBldmVudD8uaWRdIH1cIj5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImM4eS1sb2NhdGlvblwiPjwvaT5cbiAgICAgICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgICAgICA8Yzh5LWxpLWJvZHk+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7IGV2ZW50LnRpbWUgfCBkYXRlOiAnbWVkaXVtRGF0ZScgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAge3sgZXZlbnQudGltZSB8IGRhdGU6ICdtZWRpdW1UaW1lJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgaWNvbj1cImM4eS1sb2NhdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCInTm8gdHJhY2tpbmcgZXZlbnRzIGZvdW5kLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhbm90aGVyIHRpbWUgcmFuZ2UuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICpuZ0lmPVwiIXNlcnZpY2UuaGFzRXZlbnRzXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgKm5nSWY9XCJsb2FkTW9yZUNvbXBvbmVudD8uaGFzTW9yZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBmaXQtdyBzdGlja3ktYm90dG9tIHNlcGFyYXRvci10b3BcIlxuICAgICAgICBbdGl0bGVdPVwiJ0xvYWQgbW9yZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRNb3JlQ29tcG9uZW50Py5pc0xvYWRpbmdcIlxuICAgICAgICAoY2xpY2spPVwibG9hZE1vcmVDb21wb25lbnQubG9hZE1vcmUoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdMb2FkIG1vcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3JcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICBbdGl0bGVdPVwiJ0Rlc2VsZWN0IGFsbCBtYXJrZXJzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiKGFjdGl2ZU1hcmtlcnMgfCBqc29uKSA9PT0gJ3t9J1wiXG4gICAgICAgIChjbGljayk9XCJtYXAuY2xlYXJNYXJrZXJzKCdldmVudCcpOyBhY3RpdmVNYXJrZXJzID0ge31cIlxuICAgICAgPlxuICAgICAgICB7eyAnRGVzZWxlY3QgYWxsIG1hcmtlcnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHJhY2tpbmcvdHJhY2tpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vdHJhY2tpbmcvdHJhY2tpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUNMLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsVUFBVSxFQUVWLG9CQUFvQixFQUdwQixxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFhLFNBQVMsRUFBeUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFnQnJELE1BQU0sT0FBTyxpQkFBaUI7SUF5QjVCLFlBQ1MsT0FBd0IsRUFDeEIsUUFBOEIsRUFDN0IsbUJBQXdDLEVBQ3hDLGNBQThCO1FBSC9CLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLGFBQVEsR0FBUixRQUFRLENBQXNCO1FBQzdCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBekJ4QywwQkFBcUIsR0FBMEI7WUFDN0MsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLHdCQUF3QixFQUFFLElBQUk7U0FDL0IsQ0FBQztRQUVGLFdBQU0sR0FBYztZQUNsQixRQUFRLEVBQUUsSUFBSTtZQUNkLE1BQU0sRUFB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IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQmFyTW9kdWxlLFxuICBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICBDb3JlTW9kdWxlLFxuICBEYXRlUmFuZ2VQaWNrZXJDb25maWcsXG4gIEV2ZW50UmVhbHRpbWVTZXJ2aWNlLFxuICBMb2FkTW9yZUNvbXBvbmVudCxcbiAgVGltZUludGVydmFsLFxuICBUaW1lSW50ZXJ2YWxDb21wb25lbnRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNYXBDb21wb25lbnQsIE1hcENvbmZpZywgTWFwTW9kdWxlLCBQb3NpdGlvbk1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBUcmFja2luZ01hcmtlclBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi90cmFja2luZy1tYXJrZXItcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYWNraW5nU2VydmljZSB9IGZyb20gJy4vdHJhY2tpbmcuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJhY2tpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbXG4gICAgTWFwTW9kdWxlLFxuICAgIEFjdGlvbkJhck1vZHVsZSxcbiAgICBDb3JlTW9kdWxlLFxuICAgIFRpbWVJbnRlcnZhbENvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBUcmFja2luZ01hcmtlclBvcHVwQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW1RyYWNraW5nU2VydmljZSwgRXZlbnRSZWFsdGltZVNlcnZpY2VdLFxuICBzZWxlY3RvcjogJ2M4eS10cmFja2luZydcbn0pXG5leHBvcnQgY2xhc3MgVHJhY2tpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKE1hcENvbXBvbmVudClcbiAgbWFwOiBNYXBDb21wb25lbnQ7XG5cbiAgZGF0ZVJhbmdlUGlja2VyQ29uZmlnOiBEYXRlUmFuZ2VQaWNrZXJDb25maWcgPSB7XG4gICAgYWRhcHRpdmVQb3NpdGlvbjogdHJ1ZSxcbiAgICBzaG93UHJldmlvdXNNb250aDogdHJ1ZSxcbiAgICBwcmV2ZW50Q2hhbmdlVG9OZXh0TW9udGg6IHRydWVcbiAgfTtcblxuICBjb25maWc6IE1hcENvbmZpZyA9IHtcbiAgICByZWFsdGltZTogdHJ1ZSxcbiAgICBmb2xsb3c6IGZhbHNlLFxuICAgIHpvb21MZXZlbDogMTIsXG4gICAgZml0Qm91bmRzT3B0aW9uczoge1xuICAgICAgcGFkZGluZzogWzUwLCA1MF1cbiAgICB9XG4gIH07XG5cbiAgbWF4RGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGFjdGl2ZU1hcmtlcnM6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG4gIHJlYWx0aW1lRGlzYWJsZWQgPSBmYWxzZTtcbiAgZGV2aWNlOiBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gIGxvYWRNb3JlQ29tcG9uZW50OiBMb2FkTW9yZUNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2VydmljZTogVHJhY2tpbmdTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWFsdGltZTogRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0Um91dGVTZXJ2aWNlOiBDb250ZXh0Um91dGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB7IGNvbnRleHREYXRhIH0gPSB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UuZ2V0Q29udGV4dERhdGEodGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XG4gICAgdGhpcy5kZXZpY2UgPSBjb250ZXh0RGF0YSBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3Q7XG4gIH1cblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLnNldERldmljZUlkKHRoaXMuZGV2aWNlLmlkKTtcbiAgICB0aGlzLnRvZ2dsZVBvc2l0aW9uUmVhbHRpbWUodGhpcy5yZWFsdGltZS5hY3RpdmUpO1xuICB9XG5cbiAgdG9nZ2xlTWFya2VyKGV2ZW50OiBJRXZlbnQpIHtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5tYXAuZmluZE1hcmtlcihldmVudCk7XG5cbiAgICBpZiAobWFya2VyKSB7XG4gICAgICB0aGlzLm1hcC5yZW1vdmVNYXJrZXIobWFya2VyKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmFjdGl2ZU1hcmtlcnNbYHAke2V2ZW50LmlkfWBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBtYXJrZXIgPSB0aGlzLm1hcC5nZXRUcmFja2luZ01hcmtlcihldmVudCk7XG4gICAgICB0aGlzLm1hcC5hZGRNYXJrZXJUb01hcChtYXJrZXIpO1xuICAgICAgdGhpcy5hY3RpdmVNYXJrZXJzW2BwJHtldmVudC5pZH1gXSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlUG9zaXRpb25SZWFsdGltZShhY3RpdmU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWcsIHJlYWx0aW1lOiBhY3RpdmUgfTtcbiAgfVxuXG4gIHRvZ2dsZVJlYWx0aW1lKGludGVydmFsOiBUaW1lSW50ZXJ2YWwpIHtcbiAgICBjb25zdCBjdXJyZW50VGltZUluUmFuZ2UgPSBEYXRlLm5vdygpIDw9IGludGVydmFsPy5kYXRlVG8/LmdldFRpbWUoKTtcbiAgICB0aGlzLnRvZ2dsZVBvc2l0aW9uUmVhbHRpbWUoY3VycmVudFRpbWVJblJhbmdlKTtcbiAgICB0aGlzLnJlYWx0aW1lRGlzYWJsZWQgPSAhY3VycmVudFRpbWVJblJhbmdlO1xuXG4gICAgaWYgKGN1cnJlbnRUaW1lSW5SYW5nZSkge1xuICAgICAgdGhpcy5yZWFsdGltZS5zdGFydCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlYWx0aW1lLnN0b3AoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjOHktYWN0aW9uLWJhci1pdGVtXG4gIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiXG4gIFtwcmlvcml0eV09XCIxMDBcIlxuPlxuICA8Yzh5LXJlYWx0aW1lLWJ0blxuICAgIFtzZXJ2aWNlXT1cInJlYWx0aW1lXCJcbiAgICBbZGlzYWJsZWRdPVwicmVhbHRpbWVEaXNhYmxlZFwiXG4gICAgKG9uVG9nZ2xlKT1cInRvZ2dsZVBvc2l0aW9uUmVhbHRpbWUoJGV2ZW50KVwiXG4gID48L2M4eS1yZWFsdGltZS1idG4+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICBbcHJpb3JpdHldPVwiNjBcIlxuPlxuICA8Yzh5LXRpbWUtaW50ZXJ2YWxcbiAgICBbbWF4Q3VzdG9tRGF0ZV09XCJtYXhEYXRlXCJcbiAgICBbZGF0ZVJhbmdlUGlja2VyQ29uZmlnXT1cImRhdGVSYW5nZVBpY2tlckNvbmZpZ1wiXG4gICAgKGludGVydmFsKT1cInNlcnZpY2Uuc2V0SW50ZXJ2YWwoJGV2ZW50KTsgdG9nZ2xlUmVhbHRpbWUoJGV2ZW50KVwiXG4gID48L2M4eS10aW1lLWludGVydmFsPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLS1ncmlkIGNvbnRlbnQtZnVsbHBhZ2UgZC1ncmlkIGdyaWRfX2NvbC0tOC00LS1tZFwiPlxuICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcC1yZWxhdGl2ZVwiPlxuICAgIDxjOHktbWFwXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICBbYXNzZXRzXT1cImRldmljZVwiXG4gICAgICBbcG9seWxpbmUkXT1cInNlcnZpY2UucG9seWxpbmUkXCJcbiAgICAgIFtwb2x5bGluZU9wdGlvbnNdPVwieyBjb2xvcjogJ2RhcmtibHVlJyB9XCJcbiAgICA+XG4gICAgICA8ZGl2ICpjOHlNYXBQb3B1cD1cImxldCBjb250ZXh0XCI+XG4gICAgICAgIDxjOHktdHJhY2tpbmctbWFya2VyLXBvcHVwIFtjb250ZXh0XT1cImNvbnRleHRcIj48L2M4eS10cmFja2luZy1tYXJrZXItcG9wdXA+XG4gICAgICA8L2Rpdj5cbiAgICA8L2M4eS1tYXA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1jb2wgYmctaW5oZXJpdCBjb250ZW50LWZ1bGxwYWdlIGJnLWdyYXktd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbGFyZ2UtcGFkZGluZyBzZXBhcmF0b3Igc3RpY2t5LXRvcFwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJjYXJkLXRpdGxlXCJcbiAgICAgICAgdHJhbnNsYXRlXG4gICAgICA+XG4gICAgICAgIFRyYWNraW5nIGV2ZW50c1xuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgIDxjOHktbGlzdC1ncm91cCBjbGFzcz1cImM4eS1saXN0X19ncm91cC0tc3RyaXBcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgYzh5Rm9yXG4gICAgICAgICAgbGV0LWV2ZW50XG4gICAgICAgICAgW2M4eUZvck9mXT1cInNlcnZpY2UuZXZlbnRzJFwiXG4gICAgICAgICAgW2M4eUZvclBpcGVdPVwic2VydmljZS5waXBlXCJcbiAgICAgICAgICBbYzh5Rm9yUmVhbHRpbWVdPVwicmVhbHRpbWVcIlxuICAgICAgICAgIFtjOHlGb3JSZWFsdGltZU9wdGlvbnNdPVwieyBlbnRpdHlPcklkOiBkZXZpY2UgfVwiXG4gICAgICAgICAgW2M4eUZvckxvYWRNb3JlXT1cIidoaWRkZW4nXCJcbiAgICAgICAgICBbYzh5Rm9yTm90Rm91bmRdPVwiZW1wdHlcIlxuICAgICAgICAgIChjOHlGb3JMb2FkTW9yZUNvbXBvbmVudCk9XCJcbiAgICAgICAgICAgIGxvYWRNb3JlQ29tcG9uZW50ID0gJGV2ZW50OyBsb2FkTW9yZUNvbXBvbmVudC51c2VJbnRlcnNlY3Rpb24gPSBmYWxzZVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWxpXG4gICAgICAgICAgICBjbGFzcz1cInBvaW50ZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndGV4dC1wcmltYXJ5IHRleHQtYm9sZCc6IGFjdGl2ZU1hcmtlcnNbJ3AnICsgZXZlbnQ/LmlkXSB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNYXJrZXIoZXZlbnQpXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtY3ldPVwiJ2M4eS10cmFja2luZy0tdHJhY2tpbmctZXZlbnQtaXRlbS0nICsgZXZlbnQ/LmlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Yzh5LWxpLWljb24gW25nQ2xhc3NdPVwieyAndGV4dC1wcmltYXJ5JzogYWN0aXZlTWFya2Vyc1sncCcgKyBldmVudD8uaWRdIH1cIj5cbiAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImM4eS1sb2NhdGlvblwiPjwvaT5cbiAgICAgICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgICAgICA8Yzh5LWxpLWJvZHk+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7IGV2ZW50LnRpbWUgfCBkYXRlOiAnbWVkaXVtRGF0ZScgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtLWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAge3sgZXZlbnQudGltZSB8IGRhdGU6ICdtZWRpdW1UaW1lJyB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gZW1wdHkgc3RhdGUgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgaWNvbj1cImM4eS1sb2NhdGlvblwiXG4gICAgICAgIFt0aXRsZV09XCInTm8gdHJhY2tpbmcgZXZlbnRzIGZvdW5kLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbc3VidGl0bGVdPVwiJ1NlbGVjdCBhbm90aGVyIHRpbWUgcmFuZ2UuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICpuZ0lmPVwiIXNlcnZpY2UuaGFzRXZlbnRzXCJcbiAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXYgKm5nSWY9XCJsb2FkTW9yZUNvbXBvbmVudD8uaGFzTW9yZVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBmaXQtdyBzdGlja3ktYm90dG9tIHNlcGFyYXRvci10b3BcIlxuICAgICAgICBbdGl0bGVdPVwiJ0xvYWQgbW9yZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImxvYWRNb3JlQ29tcG9uZW50Py5pc0xvYWRpbmdcIlxuICAgICAgICAoY2xpY2spPVwibG9hZE1vcmVDb21wb25lbnQubG9hZE1vcmUoKVwiXG4gICAgICAgIGRhdGEtY3k9XCJjOHktdHJhY2tpbmctLWxvYWQtbW9yZVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdMb2FkIG1vcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3JcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICBbdGl0bGVdPVwiJ0Rlc2VsZWN0IGFsbCBtYXJrZXJzJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiKGFjdGl2ZU1hcmtlcnMgfCBqc29uKSA9PT0gJ3t9J1wiXG4gICAgICAgIChjbGljayk9XCJtYXAuY2xlYXJNYXJrZXJzKCdldmVudCcpOyBhY3RpdmVNYXJrZXJzID0ge31cIlxuICAgICAgPlxuICAgICAgICB7eyAnRGVzZWxlY3QgYWxsIG1hcmtlcnMnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -3,7 +3,7 @@ import { EventService } from '@c8y/client';
3
3
  import { GeoService } from '@c8y/ngx-components';
4
4
  import { first, identity, isEmpty, last } from 'lodash-es';
5
5
  import { BehaviorSubject, Subject, combineLatest, pipe } from 'rxjs';
6
- import { map, share, switchMap, tap } from 'rxjs/operators';
6
+ import { distinctUntilChanged, map, share, switchMap, tap } from 'rxjs/operators';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@c8y/client";
9
9
  import * as i2 from "@c8y/ngx-components";
@@ -24,7 +24,11 @@ export class TrackingService {
24
24
  this.timeInterval$ = new Subject();
25
25
  this.reload$ = new BehaviorSubject(null);
26
26
  this.polyline$ = this._polylineEventsSubject$.asObservable().pipe(map(events => (events || []).map(event => this.geo.getLatLong(event)).filter(identity)), share());
27
- this.events$ = combineLatest([this.deviceId$, this.timeInterval$, this.reload$]).pipe(switchMap(([source, interval]) => {
27
+ this.events$ = combineLatest([
28
+ this.deviceId$.pipe(distinctUntilChanged()),
29
+ this.timeInterval$,
30
+ this.reload$
31
+ ]).pipe(switchMap(([source, interval]) => {
28
32
  const { dateFrom, dateTo } = interval;
29
33
  return this.eventService.list({
30
34
  ...TrackingService.BASE_FILTER,
@@ -90,4 +94,4 @@ export class TrackingService {
90
94
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TrackingService, decorators: [{
91
95
  type: Injectable
92
96
  }], ctorParameters: () => [{ type: i1.EventService }, { type: i2.GeoService }] });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RyYWNraW5nL3RyYWNraW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFVBQVUsRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRixPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRTVELE1BQU0sMEJBQTBCLEdBQUcsb0JBQW9CLENBQUM7QUFHeEQsTUFBTSxPQUFPLGVBQWU7YUFDRixnQkFBVyxHQUFHO1FBQ3BDLFFBQVEsRUFBRSxJQUFJO1FBQ2QsY0FBYyxFQUFFLElBQUk7UUFDcEIsSUFBSSxFQUFFLDBCQUEwQjtLQUNqQyxBQUprQyxDQUlqQztJQWNGLFlBQ1UsWUFBMEIsRUFDMUIsR0FBZTtRQURmLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFYekIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVWLDRCQUF1QixHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTVELGNBQVMsR0FBNkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNwRCxrQkFBYSxHQUEwQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3JELFlBQU8sR0FB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O0lBQzNDLENBQUM7SUFFTyxhQUFhLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDeEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDOzhHQTNHVSxlQUFlO2tIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudFNlcnZpY2UsIElFdmVudCwgSVJlc3VsdExpc3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBGb3JPZkZpbHRlclBpcGUsIEdlb1NlcnZpY2UsIFRpbWVJbnRlcnZhbCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUG9zaXRpb25NYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9tYXAnO1xuaW1wb3J0IHsgZmlyc3QsIGlkZW50aXR5LCBpc0VtcHR5LCBsYXN0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgY29tYmluZUxhdGVzdCwgcGlwZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzaGFyZSwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IExPQ0FUSU9OX1VQREFURV9FVkVOVF9UWVBFID0gJ2M4eV9Mb2NhdGlvblVwZGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmFja2luZ1NlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBCQVNFX0ZJTFRFUiA9IHtcbiAgICBwYWdlU2l6ZTogMTAwMCxcbiAgICB3aXRoVG90YWxQYWdlczogdHJ1ZSxcbiAgICB0eXBlOiBMT0NBVElPTl9VUERBVEVfRVZFTlRfVFlQRVxuICB9O1xuXG4gIGV2ZW50cyQ6IE9ic2VydmFibGU8SVJlc3VsdExpc3Q8SUV2ZW50Pj47XG4gIHBvbHlsaW5lJDogT2JzZXJ2YWJsZTxMLkxhdExuZ0V4cHJlc3Npb25bXT47XG4gIHBpcGU6IEZvck9mRmlsdGVyUGlwZTtcbiAgdHJhY2tWaXNpYmxlID0gdHJ1ZTtcbiAgaGFzRXZlbnRzID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfcG9seWxpbmVFdmVudHNTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SUV2ZW50W10+KFtdKTtcblxuICBwcml2YXRlIGRldmljZUlkJDogU3ViamVjdDxzdHJpbmcgfCBudW1iZXI+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSB0aW1lSW50ZXJ2YWwkOiBTdWJqZWN0PFRpbWVJbnRlcnZhbD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHJlbG9hZCQ6IEJlaGF2aW9yU3ViamVjdDx2b2lkPiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGdlbzogR2VvU2VydmljZVxuICApIHtcbiAgICB0aGlzLnBvbHlsaW5lJCA9IHRoaXMuX3BvbHlsaW5lRXZlbnRzU3ViamVjdCQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIG1hcChldmVudHMgPT4gKGV2ZW50cyB8fCBbXSkubWFwKGV2ZW50ID0+IHRoaXMuZ2VvLmdldExhdExvbmcoZXZlbnQpKS5maWx0ZXIoaWRlbnRpdHkpKSxcbiAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudHMkID0gY29tYmluZUxhdGVzdChbdGhpcy5kZXZpY2VJZCQsIHRoaXMudGltZUludGVydmFsJCwgdGhpcy5yZWxvYWQkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW3NvdXJjZSwgaW50ZXJ2YWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGF0ZUZyb20sIGRhdGVUbyB9ID0gaW50ZXJ2YWw7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50U2VydmljZS5saXN0KHtcbiAgICAgICAgICAuLi5UcmFja2luZ1NlcnZpY2UuQkFTRV9GSUxURVIsXG4gICAgICAgICAgc291cmNlLFxuICAgICAgICAgIGRhdGVGcm9tOiBkYXRlRnJvbS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGRhdGVUbzogZGF0ZVRvLnRvSVNPU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB0aGlzLl9wb2x5bGluZUV2ZW50c1N1YmplY3QkLm5leHQoW10pKSxcbiAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgdGhpcy5waXBlID0gcGlwZShcbiAgICAgIHRhcChldmVudHMgPT4gKHRoaXMuaGFzRXZlbnRzID0gIWlzRW1wdHkoZXZlbnRzKSkpLFxuICAgICAgbWFwKChldmVudHM6IElFdmVudFtdKSA9PiAoZXZlbnRzIHx8IFtdKS5maWx0ZXIoZXZlbnQgPT4gdGhpcy5pc01hdGNoaW5nRXZlbnQoZXZlbnQpKSksXG4gICAgICB0YXAoKGV2ZW50czogSUV2ZW50W10pID0+IHtcbiAgICAgICAgY29uc3QgcHJlcGVuZCA9XG4gICAgICAgICAgdGhpcy5jb21wYXJlRXZlbnRzKGxhc3QodGhpcy5fcG9seWxpbmVFdmVudHNTdWJqZWN0JC52YWx1ZSksIGZpcnN0KGV2ZW50cykpIDwgMDtcbiAgICAgICAgY29uc3QgcG9seWxpbmU6IElFdmVudFtdID0gcHJlcGVuZFxuICAgICAgICAgID8gWy4uLmV2ZW50cywgLi4udGhpcy5fcG9seWxpbmVFdmVudHNTdWJqZWN0JC52YWx1ZV1cbiAgICAgICAgICA6IFsuLi50aGlzLl9wb2x5bGluZUV2ZW50c1N1YmplY3QkLnZhbHVlLCAuLi5ldmVudHNdO1xuXG4gICAgICAgIHRoaXMuX3BvbHlsaW5lRXZlbnRzU3ViamVjdCQubmV4dChwb2x5bGluZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzZXREZXZpY2VJZChkZXZpY2VJZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5kZXZpY2VJZCQubmV4dChkZXZpY2VJZCk7XG4gIH1cblxuICBzZXRJbnRlcnZhbChpbnRlcnZhbDogVGltZUludGVydmFsKSB7XG4gICAgdGhpcy50aW1lSW50ZXJ2YWwkLm5leHQoaW50ZXJ2YWwpO1xuICB9XG5cbiAgY2xlYXJUcmFjaygpIHtcbiAgICB0aGlzLl9wb2x5bGluZUV2ZW50c1N1YmplY3QkLm5leHQoW10pO1xuICB9XG5cbiAgcmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkJC5uZXh0KCk7XG4gIH1cblxuICBhc3luYyBsYXRlc3RQb3NpdGlvblVwZGF0ZShtbzogUG9zaXRpb25NYW5hZ2VkT2JqZWN0KTogUHJvbWlzZTxEYXRlPiB7XG4gICAgY29uc3QgZGF0ZVRvID0gbmV3IERhdGUoKTtcbiAgICBkYXRlVG8uc2V0RGF0ZShkYXRlVG8uZ2V0RGF0ZSgpICsgMSk7XG5cbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgZnJhZ21lbnRUeXBlOiAnYzh5X1Bvc2l0aW9uJyxcbiAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZSgwKS50b0lTT1N0cmluZygpLFxuICAgICAgZGF0ZVRvOiBkYXRlVG8udG9JU09TdHJpbmcoKSxcbiAgICAgIHBhZ2VTaXplOiAxLFxuICAgICAgc291cmNlOiBtby5pZFxuICAgIH07XG4gICAgY29uc3QgZXZlbnRzID0gYXdhaXQgdGhpcy5ldmVudFNlcnZpY2UubGlzdChmaWx0ZXJzKTtcbiAgICByZXR1cm4gZXZlbnRzPy5kYXRhPy5sZW5ndGggPyBuZXcgRGF0ZShldmVudHMuZGF0YVswXS50aW1lKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHRvZ2dsZVRyYWNrKCkge1xuICAgIGlmICh0aGlzLnRyYWNrVmlzaWJsZSkge1xuICAgICAgdGhpcy5jbGVhclRyYWNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVsb2FkKCk7XG4gICAgfVxuICAgIHRoaXMudHJhY2tWaXNpYmxlID0gIXRoaXMudHJhY2tWaXNpYmxlO1xuICB9XG5cbiAgaXNMb2NhdGlvblVwZGF0ZUV2ZW50KGV2ZW50OiBJRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXZlbnQudHlwZSA9PT0gTE9DQVRJT05fVVBEQVRFX0VWRU5UX1RZUEU7XG4gIH1cblxuICBwcml2YXRlIGlzTWF0Y2hpbmdFdmVudChldmVudDogSUV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNMb2NhdGlvblVwZGF0ZUV2ZW50KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZUV2ZW50cyhhOiBJRXZlbnQsIGI6IElFdmVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUucGFyc2UoYT8udGltZSkgLSBEYXRlLnBhcnNlKGI/LnRpbWUpO1xuICB9XG59XG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RyYWNraW5nL3RyYWNraW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFVBQVUsRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRixPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRWxGLE1BQU0sMEJBQTBCLEdBQUcsb0JBQW9CLENBQUM7QUFHeEQsTUFBTSxPQUFPLGVBQWU7YUFDRixnQkFBVyxHQUFHO1FBQ3BDLFFBQVEsRUFBRSxJQUFJO1FBQ2QsY0FBYyxFQUFFLElBQUk7UUFDcEIsSUFBSSxFQUFFLDBCQUEwQjtLQUNqQyxBQUprQyxDQUlqQztJQWNGLFlBQ1UsWUFBMEIsRUFDMUIsR0FBZTtRQURmLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFYekIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVWLDRCQUF1QixHQUFHLElBQUksZUFBZSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTVELGNBQVMsR0FBNkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNwRCxrQkFBYSxHQUEwQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FB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QUNuQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sYUFBYSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkQsQ0FBQzs4R0EvR1UsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnRTZXJ2aWNlLCBJRXZlbnQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRm9yT2ZGaWx0ZXJQaXBlLCBHZW9TZXJ2aWNlLCBUaW1lSW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvbWFwJztcbmltcG9ydCB7IGZpcnN0LCBpZGVudGl0eSwgaXNFbXB0eSwgbGFzdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIHBpcGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgTE9DQVRJT05fVVBEQVRFX0VWRU5UX1RZUEUgPSAnYzh5X0xvY2F0aW9uVXBkYXRlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRyYWNraW5nU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEJBU0VfRklMVEVSID0ge1xuICAgIHBhZ2VTaXplOiAxMDAwLFxuICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgIHR5cGU6IExPQ0FUSU9OX1VQREFURV9FVkVOVF9UWVBFXG4gIH07XG5cbiAgZXZlbnRzJDogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJRXZlbnQ+PjtcbiAgcG9seWxpbmUkOiBPYnNlcnZhYmxlPEwuTGF0TG5nRXhwcmVzc2lvbltdPjtcbiAgcGlwZTogRm9yT2ZGaWx0ZXJQaXBlO1xuICB0cmFja1Zpc2libGUgPSB0cnVlO1xuICBoYXNFdmVudHMgPSBmYWxzZTtcblxuICBwcml2YXRlIF9wb2x5bGluZUV2ZW50c1N1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRXZlbnRbXT4oW10pO1xuXG4gIHByaXZhdGUgZGV2aWNlSWQkOiBTdWJqZWN0PHN0cmluZyB8IG51bWJlcj4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHRpbWVJbnRlcnZhbCQ6IFN1YmplY3Q8VGltZUludGVydmFsPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgcmVsb2FkJDogQmVoYXZpb3JTdWJqZWN0PHZvaWQ+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2VvOiBHZW9TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucG9seWxpbmUkID0gdGhpcy5fcG9seWxpbmVFdmVudHNTdWJqZWN0JC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgbWFwKGV2ZW50cyA9PiAoZXZlbnRzIHx8IFtdKS5tYXAoZXZlbnQgPT4gdGhpcy5nZW8uZ2V0TGF0TG9uZyhldmVudCkpLmZpbHRlcihpZGVudGl0eSkpLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICB0aGlzLmV2ZW50cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZGV2aWNlSWQkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSksXG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbCQsXG4gICAgICB0aGlzLnJlbG9hZCRcbiAgICBdKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChbc291cmNlLCBpbnRlcnZhbF0pID0+IHtcbiAgICAgICAgY29uc3QgeyBkYXRlRnJvbSwgZGF0ZVRvIH0gPSBpbnRlcnZhbDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRTZXJ2aWNlLmxpc3Qoe1xuICAgICAgICAgIC4uLlRyYWNraW5nU2VydmljZS5CQVNFX0ZJTFRFUixcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgZGF0ZUZyb206IGRhdGVGcm9tLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgZGF0ZVRvOiBkYXRlVG8udG9JU09TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHRoaXMuX3BvbHlsaW5lRXZlbnRzU3ViamVjdCQubmV4dChbXSkpLFxuICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICB0aGlzLnBpcGUgPSBwaXBlKFxuICAgICAgdGFwKGV2ZW50cyA9PiAodGhpcy5oYXNFdmVudHMgPSAhaXNFbXB0eShldmVudHMpKSksXG4gICAgICBtYXAoKGV2ZW50czogSUV2ZW50W10pID0+IChldmVudHMgfHwgW10pLmZpbHRlcihldmVudCA9PiB0aGlzLmlzTWF0Y2hpbmdFdmVudChldmVudCkpKSxcbiAgICAgIHRhcCgoZXZlbnRzOiBJRXZlbnRbXSkgPT4ge1xuICAgICAgICBjb25zdCBwcmVwZW5kID1cbiAgICAgICAgICB0aGlzLmNvbXBhcmVFdmVudHMobGFzdCh0aGlzLl9wb2x5bGluZUV2ZW50c1N1YmplY3QkLnZhbHVlKSwgZmlyc3QoZXZlbnRzKSkgPCAwO1xuICAgICAgICBjb25zdCBwb2x5bGluZTogSUV2ZW50W10gPSBwcmVwZW5kXG4gICAgICAgICAgPyBbLi4uZXZlbnRzLCAuLi50aGlzLl9wb2x5bGluZUV2ZW50c1N1YmplY3QkLnZhbHVlXVxuICAgICAgICAgIDogWy4uLnRoaXMuX3BvbHlsaW5lRXZlbnRzU3ViamVjdCQudmFsdWUsIC4uLmV2ZW50c107XG5cbiAgICAgICAgdGhpcy5fcG9seWxpbmVFdmVudHNTdWJqZWN0JC5uZXh0KHBvbHlsaW5lKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNldERldmljZUlkKGRldmljZUlkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLmRldmljZUlkJC5uZXh0KGRldmljZUlkKTtcbiAgfVxuXG4gIHNldEludGVydmFsKGludGVydmFsOiBUaW1lSW50ZXJ2YWwpIHtcbiAgICB0aGlzLnRpbWVJbnRlcnZhbCQubmV4dChpbnRlcnZhbCk7XG4gIH1cblxuICBjbGVhclRyYWNrKCkge1xuICAgIHRoaXMuX3BvbHlsaW5lRXZlbnRzU3ViamVjdCQubmV4dChbXSk7XG4gIH1cblxuICByZWxvYWQoKSB7XG4gICAgdGhpcy5yZWxvYWQkLm5leHQoKTtcbiAgfVxuXG4gIGFzeW5jIGxhdGVzdFBvc2l0aW9uVXBkYXRlKG1vOiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpOiBQcm9taXNlPERhdGU+IHtcbiAgICBjb25zdCBkYXRlVG8gPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGVUby5zZXREYXRlKGRhdGVUby5nZXREYXRlKCkgKyAxKTtcblxuICAgIGNvbnN0IGZpbHRlcnMgPSB7XG4gICAgICBmcmFnbWVudFR5cGU6ICdjOHlfUG9zaXRpb24nLFxuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKDApLnRvSVNPU3RyaW5nKCksXG4gICAgICBkYXRlVG86IGRhdGVUby50b0lTT1N0cmluZygpLFxuICAgICAgcGFnZVNpemU6IDEsXG4gICAgICBzb3VyY2U6IG1vLmlkXG4gICAgfTtcbiAgICBjb25zdCBldmVudHMgPSBhd2FpdCB0aGlzLmV2ZW50U2VydmljZS5saXN0KGZpbHRlcnMpO1xuICAgIHJldHVybiBldmVudHM/LmRhdGE/Lmxlbmd0aCA/IG5ldyBEYXRlKGV2ZW50cy5kYXRhWzBdLnRpbWUpIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgdG9nZ2xlVHJhY2soKSB7XG4gICAgaWYgKHRoaXMudHJhY2tWaXNpYmxlKSB7XG4gICAgICB0aGlzLmNsZWFyVHJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICB9XG4gICAgdGhpcy50cmFja1Zpc2libGUgPSAhdGhpcy50cmFja1Zpc2libGU7XG4gIH1cblxuICBpc0xvY2F0aW9uVXBkYXRlRXZlbnQoZXZlbnQ6IElFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudC50eXBlID09PSBMT0NBVElPTl9VUERBVEVfRVZFTlRfVFlQRTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNYXRjaGluZ0V2ZW50KGV2ZW50OiBJRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0xvY2F0aW9uVXBkYXRlRXZlbnQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wYXJlRXZlbnRzKGE6IElFdmVudCwgYjogSUV2ZW50KTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5wYXJzZShhPy50aW1lKSAtIERhdGUucGFyc2UoYj8udGltZSk7XG4gIH1cbn1cbiJdfQ==
@@ -578,6 +578,9 @@ class MapComponent {
578
578
  this.addLayers(layers);
579
579
  this.handleMobile();
580
580
  this.onMap.next(this.map);
581
+ if (this.config.realtime) {
582
+ this.startRealtime();
583
+ }
581
584
  this.isInit = true;
582
585
  this.onInit.emit(this.leaflet);
583
586
  }