@c8y/ngx-components 1021.22.54 → 1021.22.58

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.
Files changed (76) hide show
  1. package/core/common/interval-based-reload.abstract.d.ts +13 -3
  2. package/core/common/interval-based-reload.abstract.d.ts.map +1 -1
  3. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +5 -4
  4. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
  5. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -1
  6. package/core/dashboard/widgets-dashboard-event.service.d.ts +1 -0
  7. package/core/dashboard/widgets-dashboard-event.service.d.ts.map +1 -1
  8. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +9 -3
  9. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  10. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +11 -8
  11. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  12. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +4 -2
  13. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -1
  14. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +6 -2
  15. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -1
  16. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +17 -0
  17. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  18. package/esm2022/core/common/aggregation/aggregation.model.mjs +2 -2
  19. package/esm2022/core/common/interval-based-reload.abstract.mjs +13 -13
  20. package/esm2022/core/dashboard/dashboard-child.component.mjs +3 -3
  21. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +12 -10
  22. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +2 -2
  23. package/esm2022/core/dashboard/widgets-dashboard-event.service.mjs +10 -1
  24. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +3 -3
  25. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +3 -3
  26. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -15
  27. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +22 -27
  28. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +29 -6
  29. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +18 -8
  30. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +18 -1
  31. package/esm2022/interval-picker/interval-picker.model.mjs +5 -1
  32. package/esm2022/widgets/definitions/datapoints-table/index.mjs +3 -2
  33. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +3 -3
  34. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +17 -100
  35. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +45 -41
  36. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +35 -13
  37. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +3 -3
  38. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +81 -38
  39. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +3 -5
  40. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +79 -36
  41. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-interval-picker.mjs +5 -1
  43. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
  45. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +18 -101
  47. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  48. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +152 -88
  49. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  50. package/fesm2022/c8y-ngx-components.mjs +75 -42
  51. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  52. package/interval-picker/interval-picker.model.d.ts +6 -0
  53. package/interval-picker/interval-picker.model.d.ts.map +1 -1
  54. package/locales/de.po +60 -62
  55. package/locales/es.po +10 -12
  56. package/locales/fr.po +109 -109
  57. package/locales/ja_JP.po +149 -94
  58. package/locales/ko.po +10 -12
  59. package/locales/locales.pot +3 -4
  60. package/locales/nl.po +11 -13
  61. package/locales/pl.po +11 -13
  62. package/locales/pt_BR.po +9 -11
  63. package/locales/zh_CN.po +9 -11
  64. package/locales/zh_TW.po +11 -13
  65. package/package.json +1 -1
  66. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  67. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +18 -63
  68. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  69. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +4 -3
  70. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -1
  71. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +16 -8
  72. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
  73. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +23 -5
  74. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  75. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +4 -1
  76. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
@@ -1,9 +1,9 @@
1
1
  import { Component, Input, signal } from '@angular/core';
2
2
  import { FormBuilder, FormControl, ReactiveFormsModule } from '@angular/forms';
3
- import { CommonModule, DismissAlertStrategy, DynamicComponentAlert, gettext } from '@c8y/ngx-components';
3
+ import { AlertService, CommonModule, DismissAlertStrategy, DynamicComponentAlert, WidgetGlobalAutoRefreshService, gettext, globalAutoRefreshLoading } from '@c8y/ngx-components';
4
+ import { DataFetchingService, TIME_RANGE_INTERVAL_UNITS_VALUES, dateRangeValidator } from '@c8y/ngx-components/datapoints-export-selector';
4
5
  import { TranslateService } from '@ngx-translate/core';
5
- import { TIME_RANGE_INTERVAL_UNITS_VALUES, dateRangeValidator } from '@c8y/ngx-components/datapoints-export-selector';
6
- import { Subject, debounceTime } from 'rxjs';
6
+ import { BehaviorSubject, Subject, debounceTime, takeUntil } from 'rxjs';
7
7
  import { DEFAULT_COUNTDOWN_VALUE } from '../datapoints-table-widget.model';
8
8
  import { DatapointsTableService } from '../datapoints-table.service';
9
9
  import { DateRangePickerComponent } from '../date-range-picker.component';
@@ -11,17 +11,22 @@ import { DatapointsReloadComponent } from './datapoints-reload/datapoints-reload
11
11
  import { DatapointsTableViewService } from './datapoints-table-view.service';
12
12
  import { DatapointsTableComponent } from './datapoints-table/datapoints-table.component';
13
13
  import * as i0 from "@angular/core";
14
- import * as i1 from "../datapoints-table.service";
15
- import * as i2 from "./datapoints-table-view.service";
16
- import * as i3 from "@angular/forms";
17
- import * as i4 from "@ngx-translate/core";
18
- import * as i5 from "@angular/common";
14
+ import * as i1 from "@c8y/ngx-components";
15
+ import * as i2 from "@c8y/ngx-components/datapoints-export-selector";
16
+ import * as i3 from "../datapoints-table.service";
17
+ import * as i4 from "./datapoints-table-view.service";
18
+ import * as i5 from "@angular/forms";
19
+ import * as i6 from "@ngx-translate/core";
20
+ import * as i7 from "@angular/common";
19
21
  export class DatapointsTableViewWidgetComponent {
20
- constructor(datapointsTableConfigService, datapointsTableViewService, formBuilder, translateService) {
22
+ constructor(alertService, dataFetchingService, datapointsTableConfigService, datapointsTableViewService, formBuilder, translateService, widgetGlobalAutoRefresh) {
23
+ this.alertService = alertService;
24
+ this.dataFetchingService = dataFetchingService;
21
25
  this.datapointsTableConfigService = datapointsTableConfigService;
22
26
  this.datapointsTableViewService = datapointsTableViewService;
23
27
  this.formBuilder = formBuilder;
24
28
  this.translateService = translateService;
29
+ this.widgetGlobalAutoRefresh = widgetGlobalAutoRefresh;
25
30
  /**
26
31
  * Represents the data points where __active property is set to true.
27
32
  */
@@ -31,7 +36,11 @@ export class DatapointsTableViewWidgetComponent {
31
36
  * Used to populate the table with data.
32
37
  */
33
38
  this.datapointsTableItems = [];
34
- this.isDisabled = false;
39
+ /**
40
+ * Indicates whether refreshing should be enabled or disabled.
41
+ * It's 'true' when user is not allowed to view a measurements.
42
+ */
43
+ this.isRefreshDisabled = false;
35
44
  /**
36
45
  * Indicates whether the component is in the initial request state
37
46
  * where data for a table structure is being prepared.
@@ -40,9 +49,12 @@ export class DatapointsTableViewWidgetComponent {
40
49
  /**
41
50
  * Current isLoading state. Indicates whether the data is being loaded.
42
51
  */
43
- this.isLoading = signal(true);
52
+ this.isLoading$ = new BehaviorSubject(true);
44
53
  this.isExportModalOpen = false;
45
54
  this.isScrolling = signal(false);
55
+ this.TIMEOUT_ERROR_TEXT = gettext('The request is taking longer than usual. We apologize for the inconvenience.');
56
+ this.SERVER_ERROR_TEXT = gettext('Server error occurred.');
57
+ this.destroy$ = new Subject();
46
58
  this.scrollingSubject$ = new Subject();
47
59
  /**
48
60
  * Indicates if the alert has already been displayed and can be dismissed.
@@ -51,19 +63,27 @@ export class DatapointsTableViewWidgetComponent {
51
63
  this.isMissingAnyPermissionAlertShown = false;
52
64
  }
53
65
  async ngOnInit() {
54
- // Will be uncommented in MTM-61920
55
- // if (this.config.widgetInstanceGlobalTimeContext) {
56
- // this.handleGlobalTimeContextSettings();
57
- // }
58
- // Condition will be removed in MTM-61920
66
+ if (this.config.widgetInstanceGlobalAutoRefreshContext) {
67
+ this.containerClass = 'a-i-center input-group p-t-4 p-b-4 max-width-fit m-l-auto';
68
+ }
69
+ /**
70
+ * Legacy widget used realtime so it must be converted to refresh approach
71
+ * if it was enabled before migration.
72
+ */
59
73
  if (this.config.widgetInstanceGlobalTimeContext) {
74
+ this.config.widgetInstanceGlobalAutoRefreshContext = true;
60
75
  this.config.widgetInstanceGlobalTimeContext = false;
76
+ this.config.displaySettings.globalAutoRefreshContext = true;
77
+ }
78
+ if (this.config.widgetInstanceGlobalAutoRefreshContext) {
79
+ this.handleGlobalRefreshLoading();
80
+ this.handleGlobalTimeContextSettings();
61
81
  }
62
82
  this.setScrollingSubscription();
63
83
  const isLegacyWidgetRealtimeActive = this.config.realtime &&
64
- !this.config.decimalPlaces &&
65
- !this.config.refreshInterval &&
66
- !this.config.isAutoRefreshEnabled;
84
+ !this.config.hasOwnProperty('decimalPlaces') &&
85
+ !this.config.hasOwnProperty('refreshInterval') &&
86
+ !this.config.hasOwnProperty('isAutoRefreshEnabled');
67
87
  if (isLegacyWidgetRealtimeActive) {
68
88
  this.setDefaultRefreshRelatedProperties();
69
89
  }
@@ -101,6 +121,8 @@ export class DatapointsTableViewWidgetComponent {
101
121
  if (this.subscription) {
102
122
  this.subscription.unsubscribe();
103
123
  }
124
+ this.destroy$.next();
125
+ this.destroy$.complete();
104
126
  }
105
127
  onDateChange(data) {
106
128
  if (this.formGroup.invalid) {
@@ -133,14 +155,8 @@ export class DatapointsTableViewWidgetComponent {
133
155
  this.onScrolling(false);
134
156
  }
135
157
  handleGlobalTimeContextSettings() {
136
- this.config.dateFrom = this.datapointsTableViewService.adjustDate(this.config.date[0], 0, false);
137
- this.config.dateTo = this.datapointsTableViewService.adjustDate(this.config.date[1], 0, false);
138
- if (this.config.realtime) {
139
- this.setDefaultRefreshRelatedProperties();
140
- }
141
- else {
142
- this.config.isAutoRefreshEnabled = false;
143
- }
158
+ this.config.dateFrom = this.dataFetchingService.adjustDate(this.config.date[0], 0, false);
159
+ this.config.dateTo = this.dataFetchingService.adjustDate(this.config.date[1], 0, false);
144
160
  }
145
161
  /**
146
162
  * Sets up the scrolling subscription.
@@ -157,7 +173,7 @@ export class DatapointsTableViewWidgetComponent {
157
173
  this.config.refreshInterval = DEFAULT_COUNTDOWN_VALUE;
158
174
  }
159
175
  recalculateIntervalToMatchFromNowDate() {
160
- if (this.config.widgetInstanceGlobalTimeContext) {
176
+ if (this.config.widgetInstanceGlobalAutoRefreshContext) {
161
177
  return;
162
178
  }
163
179
  const { dateFrom, dateTo } = this.datapointsTableConfigService.calculateDateRange(this.config.interval);
@@ -189,7 +205,7 @@ export class DatapointsTableViewWidgetComponent {
189
205
  * If false, the seconds will be displayed as they are.
190
206
  */
191
207
  async prepareTableData(roundSeconds = true) {
192
- this.isLoading.set(true);
208
+ this.isLoading$.next(true);
193
209
  if (this.isInitialRequest) {
194
210
  this.activeDatapoints = this.datapointsTableViewService.filterOutInactiveDatapoints(this.config.datapoints);
195
211
  this.hasMultipleDatapoints = this.datapointsTableViewService.hasMultipleDatapoints(this.activeDatapoints);
@@ -198,6 +214,9 @@ export class DatapointsTableViewWidgetComponent {
198
214
  }
199
215
  const activeDatapointsIdsWithSeries = this.datapointsTableViewService.groupSeriesByDeviceId(this.activeDatapoints);
200
216
  const activeDatapointsSeriesData = await this.getActiveDatapointsSeriesDataMap(activeDatapointsIdsWithSeries, this.config, roundSeconds);
217
+ if (this.isFailedToFetchSeriesData) {
218
+ return;
219
+ }
201
220
  this.seriesWithoutPermissionToRead =
202
221
  this.datapointsTableViewService.getSeriesWithoutPermissionToRead(activeDatapointsSeriesData, activeDatapointsIdsWithSeries);
203
222
  if (!this.isMissingAnyPermissionAlertShown &&
@@ -213,7 +232,7 @@ export class DatapointsTableViewWidgetComponent {
213
232
  const datapointsListItems = this.datapointsTableViewService.mapDatapointsWithValuesToList(this.datapointsWithValues);
214
233
  const groupedDatapointsListItems = this.datapointsTableViewService.groupByDateAndDevice(datapointsListItems, this.devicesColumnHeaders);
215
234
  this.datapointsTableItems = this.datapointsTableViewService.sortDataByDateDescending(groupedDatapointsListItems);
216
- this.isLoading.set(false);
235
+ this.isLoading$.next(false);
217
236
  }
218
237
  /**
219
238
  * Retrieves the active data points series data and returns it as a map.
@@ -229,13 +248,32 @@ export class DatapointsTableViewWidgetComponent {
229
248
  */
230
249
  async getActiveDatapointsSeriesDataMap(datapointsIdsWithSeries, config, roundSeconds) {
231
250
  try {
251
+ this.isFailedToFetchSeriesData = false;
232
252
  return await this.datapointsTableViewService.getAllActiveSeriesDataMap(datapointsIdsWithSeries, config, roundSeconds);
233
253
  }
234
254
  catch (error) {
235
- this.isDisabled = true;
236
- this.isLoading.set(false);
255
+ this.isLoading$.next(false);
256
+ this.handleFetchError(error);
237
257
  }
238
258
  }
259
+ handleFetchError(error) {
260
+ if (error?.message.includes('403')) {
261
+ this.alerts.setAlertGroupDismissStrategy('warning', DismissAlertStrategy.NONE);
262
+ this.isRefreshDisabled = true;
263
+ return;
264
+ }
265
+ const isTimeoutError = error?.name === 'TimeoutError';
266
+ const errorMessage = isTimeoutError
267
+ ? this.TIMEOUT_ERROR_TEXT
268
+ : error?.message ?? this.SERVER_ERROR_TEXT;
269
+ this.alerts.setAlertGroupDismissStrategy('warning', DismissAlertStrategy.TEMPORARY_OR_PERMANENT);
270
+ this.alerts.addAlerts(new DynamicComponentAlert({
271
+ type: 'warning',
272
+ text: errorMessage
273
+ }));
274
+ this.isFailedToFetchSeriesData = true;
275
+ this.alertService.addServerFailure(error);
276
+ }
239
277
  handleMissingAnyPermissionErrorMessage() {
240
278
  this.alerts.setAlertGroupDismissStrategy('system', DismissAlertStrategy.TEMPORARY);
241
279
  this.alerts.addAlerts(new DynamicComponentAlert({
@@ -259,11 +297,16 @@ export class DatapointsTableViewWidgetComponent {
259
297
  </div>
260
298
  `;
261
299
  }
262
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableViewWidgetComponent, deps: [{ token: i1.DatapointsTableService }, { token: i2.DatapointsTableViewService }, { token: i3.FormBuilder }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
263
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsTableViewWidgetComponent, isStandalone: true, selector: "c8y-datapoints-table-view", inputs: { config: "config" }, host: { classAttribute: "d-col fit-h" }, ngImport: i0, template: "<div class=\"d-flex gap-16 p-l-16 p-r-16 flex-wrap\">\n <ng-container *ngIf=\"config.displayDateSelection\">\n <form [formGroup]=\"formGroup\">\n <c8y-date-range-picker\n class=\"d-contents\"\n [isEmittingDateChange]=\"true\"\n [showLabel]=\"true\"\n (updatedDate)=\"onDateChange($event)\"\n ></c8y-date-range-picker>\n </form>\n </ng-container>\n <!-- TODO: temporarily commented out, will be enabled when MTM-59689 is integrated -->\n <!-- <c8y-datapoints-export-selector\n class=\"d-contents\"\n [exportConfig]=\"exportConfig\"\n (isExportModalOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector> -->\n <!-- TODO: below div is just a temp fix, it will be removed when MTM-59689 is integrated -->\n <div class=\"input-group p-t-4 p-b-4 max-width-fit m-l-auto\"></div>\n <ng-container *ngIf=\"config.datapoints.length > 0\">\n <c8y-datapoints-reload\n class=\"d-contents\"\n [isAutoRefreshEnabled]=\"config.isAutoRefreshEnabled\"\n [refreshInterval]=\"config.refreshInterval\"\n [isDisabled]=\"isDisabled\"\n [isLoading]=\"isLoading\"\n [isScrolling]=\"isScrolling()\"\n [isExportModalOpen]=\"isExportModalOpen\"\n (onCountdownEnded)=\"onCountdownEnded()\"\n ></c8y-datapoints-reload>\n </ng-container>\n</div>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading()\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type:
300
+ handleGlobalRefreshLoading() {
301
+ this.isLoading$
302
+ .pipe(globalAutoRefreshLoading(this.widgetGlobalAutoRefresh), takeUntil(this.destroy$))
303
+ .subscribe();
304
+ }
305
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableViewWidgetComponent, deps: [{ token: i1.AlertService }, { token: i2.DataFetchingService }, { token: i3.DatapointsTableService }, { token: i4.DatapointsTableViewService }, { token: i5.FormBuilder }, { token: i6.TranslateService }, { token: i1.WidgetGlobalAutoRefreshService }], target: i0.ɵɵFactoryTarget.Component }); }
306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: DatapointsTableViewWidgetComponent, isStandalone: true, selector: "c8y-datapoints-table-view", inputs: { config: "config" }, host: { classAttribute: "d-col fit-h" }, ngImport: i0, template: "<div class=\"d-flex gap-16 p-l-16 p-r-16 flex-wrap\">\n <ng-container *ngIf=\"config.displayDateSelection\">\n <form [formGroup]=\"formGroup\">\n <c8y-date-range-picker\n class=\"d-contents\"\n [isEmittingDateChange]=\"true\"\n [showLabel]=\"true\"\n (updatedDate)=\"onDateChange($event)\"\n ></c8y-date-range-picker>\n </form>\n </ng-container>\n <!-- TODO: temporarily commented out, will be enabled when graft of MTM-59689 is merged: https://github.com/Cumulocity-IoT/cumulocity-ui/pull/8028 -->\n <!-- <c8y-datapoints-export-selector\n class=\"d-contents\"\n [containerClass]=\"containerClass\"\n [exportConfig]=\"exportConfig\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector> -->\n <!-- TODO: below div is just a temp fix, it will be removed when MTM-59689 is merged: https://github.com/Cumulocity-IoT/cumulocity-ui/pull/8028 -->\n <div class=\"input-group p-t-4 p-b-4 max-width-fit m-l-auto\"></div>\n <ng-container *ngIf=\"config.datapoints.length > 0\">\n <c8y-datapoints-reload\n class=\"d-contents\"\n [isAutoRefreshEnabled]=\"config.isAutoRefreshEnabled\"\n [refreshInterval]=\"config.refreshInterval\"\n [isRefreshDisabled]=\"isRefreshDisabled\"\n [isLoading]=\"isLoading$\"\n [isScrolling]=\"isScrolling()\"\n [isExportModalOpen]=\"isExportModalOpen\"\n [widgetInstanceGlobalAutoRefreshContext]=\"config.widgetInstanceGlobalAutoRefreshContext\"\n (onCountdownEnded)=\"onCountdownEnded()\"\n ></c8y-datapoints-reload>\n </ng-container>\n</div>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading$ | async\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "component", type:
264
307
  // TODO: temporarily commented out, will be enabled when MTM-59689 is integrated
265
308
  // DatapointsExportSelectorComponent,
266
- DatapointsReloadComponent, selector: "c8y-datapoints-reload", inputs: ["isAutoRefreshEnabled", "isDisabled", "isLoading", "isScrolling", "isExportModalOpen", "refreshInterval"], outputs: ["onCountdownEnded"] }, { kind: "component", type: DatapointsTableComponent, selector: "c8y-datapoints-table", inputs: ["aggregationType", "datapointsTableItems", "devicesColumnHeaders", "decimalPlaces", "hasMultipleDatapoints", "isLoading", "seriesWithoutPermissionToReadCount"], outputs: ["isScrolling"] }, { kind: "component", type: DateRangePickerComponent, selector: "c8y-date-range-picker", inputs: ["isEmittingDateChange", "showLabel"], outputs: ["updatedDate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
309
+ DatapointsReloadComponent, selector: "c8y-datapoints-reload", inputs: ["isAutoRefreshEnabled", "isRefreshDisabled", "isLoading", "isScrolling", "isExportModalOpen", "refreshInterval", "widgetInstanceGlobalAutoRefreshContext"], outputs: ["onCountdownEnded"] }, { kind: "component", type: DatapointsTableComponent, selector: "c8y-datapoints-table", inputs: ["aggregationType", "datapointsTableItems", "devicesColumnHeaders", "decimalPlaces", "hasMultipleDatapoints", "isLoading", "seriesWithoutPermissionToReadCount"], outputs: ["isScrolling"] }, { kind: "component", type: DateRangePickerComponent, selector: "c8y-date-range-picker", inputs: ["isEmittingDateChange", "showLabel"], outputs: ["updatedDate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
267
310
  }
268
311
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: DatapointsTableViewWidgetComponent, decorators: [{
269
312
  type: Component,
@@ -275,8 +318,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
275
318
  DatapointsTableComponent,
276
319
  DateRangePickerComponent,
277
320
  ReactiveFormsModule
278
- ], template: "<div class=\"d-flex gap-16 p-l-16 p-r-16 flex-wrap\">\n <ng-container *ngIf=\"config.displayDateSelection\">\n <form [formGroup]=\"formGroup\">\n <c8y-date-range-picker\n class=\"d-contents\"\n [isEmittingDateChange]=\"true\"\n [showLabel]=\"true\"\n (updatedDate)=\"onDateChange($event)\"\n ></c8y-date-range-picker>\n </form>\n </ng-container>\n <!-- TODO: temporarily commented out, will be enabled when MTM-59689 is integrated -->\n <!-- <c8y-datapoints-export-selector\n class=\"d-contents\"\n [exportConfig]=\"exportConfig\"\n (isExportModalOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector> -->\n <!-- TODO: below div is just a temp fix, it will be removed when MTM-59689 is integrated -->\n <div class=\"input-group p-t-4 p-b-4 max-width-fit m-l-auto\"></div>\n <ng-container *ngIf=\"config.datapoints.length > 0\">\n <c8y-datapoints-reload\n class=\"d-contents\"\n [isAutoRefreshEnabled]=\"config.isAutoRefreshEnabled\"\n [refreshInterval]=\"config.refreshInterval\"\n [isDisabled]=\"isDisabled\"\n [isLoading]=\"isLoading\"\n [isScrolling]=\"isScrolling()\"\n [isExportModalOpen]=\"isExportModalOpen\"\n (onCountdownEnded)=\"onCountdownEnded()\"\n ></c8y-datapoints-reload>\n </ng-container>\n</div>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading()\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n" }]
279
- }], ctorParameters: () => [{ type: i1.DatapointsTableService }, { type: i2.DatapointsTableViewService }, { type: i3.FormBuilder }, { type: i4.TranslateService }], propDecorators: { config: [{
321
+ ], template: "<div class=\"d-flex gap-16 p-l-16 p-r-16 flex-wrap\">\n <ng-container *ngIf=\"config.displayDateSelection\">\n <form [formGroup]=\"formGroup\">\n <c8y-date-range-picker\n class=\"d-contents\"\n [isEmittingDateChange]=\"true\"\n [showLabel]=\"true\"\n (updatedDate)=\"onDateChange($event)\"\n ></c8y-date-range-picker>\n </form>\n </ng-container>\n <!-- TODO: temporarily commented out, will be enabled when graft of MTM-59689 is merged: https://github.com/Cumulocity-IoT/cumulocity-ui/pull/8028 -->\n <!-- <c8y-datapoints-export-selector\n class=\"d-contents\"\n [containerClass]=\"containerClass\"\n [exportConfig]=\"exportConfig\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector> -->\n <!-- TODO: below div is just a temp fix, it will be removed when MTM-59689 is merged: https://github.com/Cumulocity-IoT/cumulocity-ui/pull/8028 -->\n <div class=\"input-group p-t-4 p-b-4 max-width-fit m-l-auto\"></div>\n <ng-container *ngIf=\"config.datapoints.length > 0\">\n <c8y-datapoints-reload\n class=\"d-contents\"\n [isAutoRefreshEnabled]=\"config.isAutoRefreshEnabled\"\n [refreshInterval]=\"config.refreshInterval\"\n [isRefreshDisabled]=\"isRefreshDisabled\"\n [isLoading]=\"isLoading$\"\n [isScrolling]=\"isScrolling()\"\n [isExportModalOpen]=\"isExportModalOpen\"\n [widgetInstanceGlobalAutoRefreshContext]=\"config.widgetInstanceGlobalAutoRefreshContext\"\n (onCountdownEnded)=\"onCountdownEnded()\"\n ></c8y-datapoints-reload>\n </ng-container>\n</div>\n<ng-container *ngIf=\"devicesColumnHeaders\">\n <c8y-datapoints-table\n [aggregationType]=\"config.aggregation\"\n [datapointsTableItems]=\"datapointsTableItems\"\n [decimalPlaces]=\"config.decimalPlaces\"\n [devicesColumnHeaders]=\"devicesColumnHeaders\"\n [hasMultipleDatapoints]=\"hasMultipleDatapoints\"\n [isLoading]=\"isLoading$ | async\"\n [seriesWithoutPermissionToReadCount]=\"seriesWithoutPermissionToRead?.length\"\n (isScrolling)=\"onScrolling($event)\"\n ></c8y-datapoints-table>\n</ng-container>\n" }]
322
+ }], ctorParameters: () => [{ type: i1.AlertService }, { type: i2.DataFetchingService }, { type: i3.DatapointsTableService }, { type: i4.DatapointsTableViewService }, { type: i5.FormBuilder }, { type: i6.TranslateService }, { type: i1.WidgetGlobalAutoRefreshService }], propDecorators: { config: [{
280
323
  type: Input
281
324
  }] } });
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2RhdGFwb2ludHMtdGFibGUvZGF0YXBvaW50cy10YWJsZS12aWV3L2RhdGFwb2ludHMtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtdmlldy9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUVyQixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU92RCxPQUFPLEVBR0wsZ0NBQWdDLEVBQ2hDLGtCQUFrQixFQUNuQixNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQWdCLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRCxPQUFPLEVBQ0wsdUJBQXVCLEVBTXhCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxF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O2FBQzFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVaLE9BQU87O2FBRUUsV0FBVzs7WUFFWixhQUFhOzs7O0tBSXBCLENBQUM7SUFDSixDQUFDOzhHQXpYVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyw0SkNyRC9DLGsxREE0Q0EsMkNEQUksWUFBWTtnQkFDWixnRkFBZ0Y7Z0JBQ2hGLHFDQUFxQztnQkFDckMseUJBQXlCLHFOQUN6Qix3QkFBd0IscVFBQ3hCLHdCQUF3QiwwSUFDeEIsbUJBQW1COzsyRkFHVixrQ0FBa0M7a0JBZjlDLFNBQVM7K0JBQ0UsMkJBQTJCLFFBRS9CLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxjQUNsQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixnRkFBZ0Y7d0JBQ2hGLHFDQUFxQzt3QkFDckMseUJBQXlCO3dCQUN6Qix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsbUJBQW1CO3FCQUNwQjs2TEFNUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBDb21tb25Nb2R1bGUsXG4gIERpc21pc3NBbGVydFN0cmF0ZWd5LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLUElEZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuLy8gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWRcbi8vIGltcG9ydCB7XG4vLyAgIERhdGFwb2ludHNFeHBvcnRTZWxlY3RvckNvbXBvbmVudCxcbi8vICAgRXhwb3J0Q29uZmlnXG4vLyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgSVNlcmllcyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwLFxuICBTb3VyY2VJZCxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMsXG4gIGRhdGVSYW5nZVZhbGlkYXRvclxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0NPVU5URE9XTl9WQUxVRSxcbiAgRGF0YXBvaW50VGFibGVJdGVtLFxuICBEYXRhcG9pbnRXaXRoVmFsdWVzLFxuICBEYXRhcG9pbnRzVGFibGVDb25maWcsXG4gIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW0sXG4gIFRhYmxlQ29sdW1uSGVhZGVyXG59IGZyb20gJy4uL2RhdGFwb2ludHMtdGFibGUtd2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludHNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnRzLXRhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwb2ludHNSZWxvYWRDb21wb25lbnQgfSBmcm9tICcuL2RhdGFwb2ludHMtcmVsb2FkL2RhdGFwb2ludHMtcmVsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YXBvaW50c1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludHMtdGFibGUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb2wgZml0LWgnIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgLy8gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWRcbiAgICAvLyBEYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JDb21wb25lbnQsXG4gICAgRGF0YXBvaW50c1JlbG9hZENvbXBvbmVudCxcbiAgICBEYXRhcG9pbnRzVGFibGVDb21wb25lbnQsXG4gICAgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzVGFibGVWaWV3V2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogIERhdGEgcG9pbnRzIHRhYmxlIHdpZGdldCBjb25maWcuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZztcbiAgLy8gY29uZmlnOiBEYXRhcG9pbnRzVGFibGVDb25maWc7XG5cbiAgYWxlcnRzOiBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkYXRhIHBvaW50cyB3aGVyZSBfX2FjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGFjdGl2ZURhdGFwb2ludHM6IEtQSURldGFpbHNbXSA9IFtdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygb2JqZWN0cyByZXByZXNlbnRpbmcgZGF0YXBvaW50cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSBDU1YvRXhjZWwgZmlsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzV2l0aFZhbHVlczogRGF0YXBvaW50V2l0aFZhbHVlc1tdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1gIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBkYXRhcG9pbnRzIHRhYmxlIGl0ZW1zLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSB0YWJsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzVGFibGVJdGVtczogR3JvdXBlZERhdGFwb2ludFRhYmxlSXRlbVtdID0gW107XG5cbiAgZGV2aWNlc0NvbHVtbkhlYWRlcnM6IFRhYmxlQ29sdW1uSGVhZGVyW107XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGEgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzZWQgYnkgYSBjOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuXG4gICAqL1xuICAvLyBUT0RPOiB0ZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0LCB3aWxsIGJlIGVuYWJsZWQgd2hlbiBNVE0tNTk2ODkgaXMgaW50ZWdyYXRlZFxuICAvLyBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZztcblxuICBmb3JtR3JvdXA6IFJldHVyblR5cGU8RGF0YXBvaW50c1RhYmxlVmlld1dpZGdldENvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZGF0YSBwb2ludC5cbiAgICogSWYgaXMgdHJ1ZSwgdGhlbiBhIGNvbHVtbiAnRGV2aWNlJyB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuXG4gICAqL1xuICBoYXNNdWx0aXBsZURhdGFwb2ludHM6IGJvb2xlYW47XG5cbiAgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGluIHRoZSBpbml0aWFsIHJlcXVlc3Qgc3RhdGVcbiAgICogd2hlcmUgZGF0YSBmb3IgYSB0YWJsZSBzdHJ1Y3R1cmUgaXMgYmVpbmcgcHJlcGFyZWQuXG4gICAqL1xuICBpc0luaXRpYWxSZXF1ZXN0ID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgaXNMb2FkaW5nIHN0YXRlLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGF0YSBpcyBiZWluZyBsb2FkZWQuXG4gICAqL1xuICBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG5cbiAgaXNFeHBvcnRNb2RhbE9wZW4gPSBmYWxzZTtcblxuICBpc1Njcm9sbGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQ6IHsga2V5OiBTb3VyY2VJZDsgdmFsdWU6IHN0cmluZ1tdIH1bXTtcblxuICBwcml2YXRlIHNjcm9sbGluZ1N1YmplY3QkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYWxlcnQgaGFzIGFscmVhZHkgYmVlbiBkaXNwbGF5ZWQgYW5kIGNhbiBiZSBkaXNtaXNzZWQuXG4gICAqIFRoZSBtZXNzYWdlIGlzIG9ubHkgZGlzcGxheWVkIHdoZW4gYSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBwcml2YXRlIGlzTWlzc2luZ0FueVBlcm1pc3Npb25BbGVydFNob3duID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhcG9pbnRzVGFibGVDb25maWdTZXJ2aWNlOiBEYXRhcG9pbnRzVGFibGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2U6IERhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gV2lsbCBiZSB1bmNvbW1lbnRlZCBpbiBNVE0tNjE5MjBcbiAgICAvLyBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCkge1xuICAgIC8vICAgdGhpcy5oYW5kbGVHbG9iYWxUaW1lQ29udGV4dFNldHRpbmdzKCk7XG4gICAgLy8gfVxuXG4gICAgLy8gQ29uZGl0aW9uIHdpbGwgYmUgcmVtb3ZlZCBpbiBNVE0tNjE5MjBcbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCkge1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U2Nyb2xsaW5nU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBjb25zdCBpc0xlZ2FjeVdpZGdldFJlYWx0aW1lQWN0aXZlID1cbiAgICAgIHRoaXMuY29uZmlnLnJlYWx0aW1lICYmXG4gICAgICAhdGhpcy5jb25maWcuZGVjaW1hbFBsYWNlcyAmJlxuICAgICAgIXRoaXMuY29uZmlnLnJlZnJlc2hJbnRlcnZhbCAmJlxuICAgICAgIXRoaXMuY29uZmlnLmlzQXV0b1JlZnJlc2hFbmFibGVkO1xuXG4gICAgaWYgKGlzTGVnYWN5V2lkZ2V0UmVhbHRpbWVBY3RpdmUpIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdFJlZnJlc2hSZWxhdGVkUHJvcGVydGllcygpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jb25maWcuaW50ZXJ2YWwpIHtcbiAgICAgIC8qKlxuICAgICAgICogRml4IGZvciBsZWdhY3kgd2lkZ2V0IGJ1Zy5cbiAgICAgICAqIFdoZW4gbmV3IGxlZ2FjeSB3aWRnZXQgaXMgY3JlYXRlZCBhbmQgc2F2ZWRcbiAgICAgICAqIHRoZW4gaW50ZXJ2YWwgdmFsdWUgaW4gYSBjb25maWcgd291bGQgc3RheSBudWxsIHVudGlsIGludGVydmFsIGlzIG1hbnVhbGx5IGNoYW5nZWRcbiAgICAgICAqIGFuZCBzYXZlZCBhZ2Fpbi5cbiAgICAgICAqIEJ1ZyB3YXMgaW50cm9kdWNlZCBwb3N0IDEwMTguMC4xNjQgdmVyc2lvbiBvZiBVSS5cbiAgICAgICAqL1xuICAgICAgdGhpcy5jb25maWcuaW50ZXJ2YWwgPSAnaG91cnMnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZy5pbnRlcnZhbCAhPT0gVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuY3VzdG9tKSB7XG4gICAgICB0aGlzLnJlY2FsY3VsYXRlSW50ZXJ2YWxUb01hdGNoRnJvbU5vd0RhdGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuZGlzcGxheURhdGVTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMucHJlcGFyZURhdGVSYW5nZUZvcm0oKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnByZXBhcmVUYWJsZURhdGEoKTtcblxuICAgIC8vIFRPRE86IHRlbXBvcmFyaWx5IGNvbW1lbnRlZCBvdXQsIHdpbGwgYmUgZW5hYmxlZCB3aGVuIE1UTS01OTY4OSBpcyBpbnRlZ3JhdGVkXG4gICAgLy8gdGhpcy5leHBvcnRDb25maWcgPSB7XG4gICAgLy8gICBhZ2dyZWdhdGlvbjogdGhpcy5jb25maWcuYWdncmVnYXRpb24sXG4gICAgLy8gICBkYXRlRnJvbTogdGhpcy5jb25maWcuZGF0ZUZyb20sXG4gICAgLy8gICBkYXRlVG86IHRoaXMuY29uZmlnLmRhdGVUbyxcbiAgICAvLyAgIGRhdGFwb2ludERldGFpbHM6IHRoaXMuYWN0aXZlRGF0YXBvaW50cy5tYXAoKHsgX190YXJnZXQsIGZyYWdtZW50LCBzZXJpZXMgfSkgPT4gKHtcbiAgICAvLyAgICAgZGV2aWNlTmFtZTogX190YXJnZXQubmFtZSxcbiAgICAvLyAgICAgc291cmNlOiBfX3RhcmdldC5pZCxcbiAgICAvLyAgICAgdmFsdWVGcmFnbWVudFNlcmllczogc2VyaWVzLFxuICAgIC8vICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZnJhZ21lbnRcbiAgICAvLyAgIH0pKVxuICAgIC8vIH07XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgb25EYXRlQ2hhbmdlKGRhdGE6IHsgZGF0ZUZyb20/OiBzdHJpbmcgfCBudWxsOyBkYXRlVG8/OiBzdHJpbmcgfCBudWxsIH0pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmRhdGVGcm9tKSB7XG4gICAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IGRhdGEuZGF0ZUZyb207XG4gICAgfVxuICAgIGlmIChkYXRhLmRhdGVUbykge1xuICAgICAgdGhpcy5jb25maWcuZGF0ZVRvID0gZGF0YS5kYXRlVG87XG4gICAgfVxuICAgIHRoaXMucHJlcGFyZVRhYmxlRGF0YSgpO1xuXG4gICAgLy8gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWRcbiAgICAvLyBUT0RPLTI6IGVhY2ggbWFudWFsL2F1dG8gbGlzdCByZWxvYWQgc2hvdWxkIHVwZGF0ZSBleHBvcnRzIGNvbmZpZyBkYXRlIHJhbmdlIHRvIHN5bmMgY3VycmVudCBzdGF0ZSBvZiB2aWV3IHdpdGhcbiAgICAvLyBpbml0YWwgZXhwb3J0IGNvbmZpZ1xuICAgIC8vIHRoaXMuZXhwb3J0Q29uZmlnLmRhdGVGcm9tID0gdGhpcy5jb25maWcuZGF0ZUZyb207XG4gICAgLy8gdGhpcy5leHBvcnRDb25maWcuZGF0ZVRvID0gdGhpcy5jb25maWcuZGF0ZVRvO1xuICB9XG5cbiAgb25FeHBvcnRNb2RhbE9wZW4oaXNPcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRXhwb3J0TW9kYWxPcGVuID0gaXNPcGVuZWQ7XG4gIH1cblxuICBvblNjcm9sbGluZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsaW5nU3ViamVjdCQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBhc3luYyBvbkNvdW50ZG93bkVuZGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRhdGVSYW5nZSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UucHJlcGFyZVRpbWVSYW5nZShcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsLFxuICAgICAgdGhpcy5jb25maWcuZGF0ZUZyb20sXG4gICAgICB0aGlzLmNvbmZpZy5kYXRlVG9cbiAgICApO1xuXG4gICAgdGhpcy5jb25maWcuZGF0ZUZyb20gPSBkYXRlUmFuZ2UuZGF0ZUZyb207XG4gICAgdGhpcy5jb25maWcuZGF0ZVRvID0gZGF0ZVJhbmdlLmRhdGVUbztcblxuICAgIGF3YWl0IHRoaXMucHJlcGFyZVRhYmxlRGF0YShmYWxzZSk7XG5cbiAgICB0aGlzLm9uU2Nyb2xsaW5nKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR2xvYmFsVGltZUNvbnRleHRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZShcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVbMF0sXG4gICAgICAwLFxuICAgICAgZmFsc2VcbiAgICApO1xuICAgIHRoaXMuY29uZmlnLmRhdGVUbyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuYWRqdXN0RGF0ZSh0aGlzLmNvbmZpZy5kYXRlWzFdLCAwLCBmYWxzZSk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRSZWZyZXNoUmVsYXRlZFByb3BlcnRpZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCB0aGUgc2Nyb2xsaW5nIHN1YnNjcmlwdGlvbi5cbiAgICpcbiAgICogRW5zdXJlcyBzaW1pbGFyIFVYIGFzIGluIHRoZSBhbGFybXMgY291bnRkb3duLXBhdXNlIGxvZ2ljLlxuICAgKi9cbiAgcHJpdmF0ZSBzZXRTY3JvbGxpbmdTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNjcm9sbGluZ1N1YmplY3QkXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoMzAwKSlcbiAgICAgIC5zdWJzY3JpYmUodmFsdWUgPT4gdGhpcy5pc1Njcm9sbGluZy5zZXQodmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdFJlZnJlc2hSZWxhdGVkUHJvcGVydGllcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZCA9IHRydWU7XG4gICAgdGhpcy5jb25maWcucmVmcmVzaEludGVydmFsID0gREVGQVVMVF9DT1VOVERPV05fVkFMVUU7XG4gIH1cblxuICBwcml2YXRlIHJlY2FsY3VsYXRlSW50ZXJ2YWxUb01hdGNoRnJvbU5vd0RhdGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGRhdGVGcm9tLCBkYXRlVG8gfSA9IHRoaXMuZGF0YXBvaW50c1RhYmxlQ29uZmlnU2VydmljZS5jYWxjdWxhdGVEYXRlUmFuZ2UoXG4gICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbFxuICAgICk7XG4gICAgdGhpcy5jb25maWcuZGF0ZUZyb20gPSBkYXRlRnJvbTtcbiAgICB0aGlzLmNvbmZpZy5kYXRlVG8gPSBkYXRlVG87XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVEYXRlUmFuZ2VGb3JtKCkge1xuICAgIHRoaXMuZm9ybUdyb3VwID0gdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoXG4gICAgICB7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5jb25maWcuZGF0ZUZyb20pLFxuICAgICAgICBkYXRlVG86IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNvbmZpZy5kYXRlVG8pXG4gICAgICB9LFxuICAgICAgeyB2YWxpZGF0b3JzOiBkYXRlUmFuZ2VWYWxpZGF0b3IgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZXMgdGhlIHRhYmxlIGRhdGEgYnk6XG4gICAqIC0gZmlsdGVyaW5nIG91dCBpbmFjdGl2ZSBkYXRhIHBvaW50cyxcbiAgICogLSBjaGVja2luZyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZGV2aWNlcyBhcyBhIHNvdXJjZSBvZiBkYXRhIHBvaW50cyxcbiAgICogLSBnZXR0aW5nIHRoZSBjb2x1bW4gaGVhZGVycyBmb3IgZGV2aWNlcyxcbiAgICogLSBnZXR0aW5nIHRoZSBzZXJpZXMgZGF0YSBmb3IgYWN0aXZlIGRhdGEgcG9pbnRzIChBUEkgY2FsbCksXG4gICAqIC0gcHJlcGFyaW5nIGRhdGEgcG9pbnRzIHdpdGggdmFsdWVzIGxpc3QsXG4gICAqIC0gbWFwcGluZyBkYXRhIHBvaW50cyB3aXRoIHZhbHVlcyB0byBsaXN0IGl0ZW1zLFxuICAgKiAtIGdyb3VwaW5nIGRhdGEgcG9pbnRzIGJ5IGRhdGUgYW5kIGRldmljZSxcbiAgICogLSBzb3J0aW5nIGRhdGEgYnkgZGF0ZSBkZXNjZW5kaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gcm91bmRTZWNvbmRzIC0gV2hldGhlciB0byByb3VuZCB0aGUgc2Vjb25kcyBvciBub3QuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiB0cnVlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIHJvdW5kZWQgdG8gMC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIGRpc3BsYXllZCBhcyB0aGV5IGFyZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZVRhYmxlRGF0YShyb3VuZFNlY29uZHMgPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuXG4gICAgaWYgKHRoaXMuaXNJbml0aWFsUmVxdWVzdCkge1xuICAgICAgdGhpcy5hY3RpdmVEYXRhcG9pbnRzID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5maWx0ZXJPdXRJbmFjdGl2ZURhdGFwb2ludHMoXG4gICAgICAgIHRoaXMuY29uZmlnLmRhdGFwb2ludHNcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaGFzTXVsdGlwbGVEYXRhcG9pbnRzID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5oYXNNdWx0aXBsZURhdGFwb2ludHMoXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0YXBvaW50c1xuICAgICAgKTtcblxuICAgICAgdGhpcy5kZXZpY2VzQ29sdW1uSGVhZGVycyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZ2V0Q29sdW1uSGVhZGVycyhcbiAgICAgICAgdGhpcy5hY3RpdmVEYXRhcG9pbnRzXG4gICAgICApO1xuXG4gICAgICB0aGlzLmlzSW5pdGlhbFJlcXVlc3QgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhY3RpdmVEYXRhcG9pbnRzSWRzV2l0aFNlcmllczogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAgPVxuICAgICAgdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5ncm91cFNlcmllc0J5RGV2aWNlSWQodGhpcy5hY3RpdmVEYXRhcG9pbnRzKTtcblxuICAgIGNvbnN0IGFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhOiBNYXA8c3RyaW5nIHwgbnVtYmVyLCBJU2VyaWVzPiA9XG4gICAgICBhd2FpdCB0aGlzLmdldEFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhTWFwKFxuICAgICAgICBhY3RpdmVEYXRhcG9pbnRzSWRzV2l0aFNlcmllcyxcbiAgICAgICAgdGhpcy5jb25maWcsXG4gICAgICAgIHJvdW5kU2Vjb25kc1xuICAgICAgKTtcblxuICAgIHRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQgPVxuICAgICAgdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXRTZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZChcbiAgICAgICAgYWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGEsXG4gICAgICAgIGFjdGl2ZURhdGFwb2ludHNJZHNXaXRoU2VyaWVzXG4gICAgICApO1xuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuaXNNaXNzaW5nQW55UGVybWlzc2lvbkFsZXJ0U2hvd24gJiZcbiAgICAgIHRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWQ/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIGFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhPy5zaXplXG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZU1pc3NpbmdBbnlQZXJtaXNzaW9uRXJyb3JNZXNzYWdlKCk7XG4gICAgICB0aGlzLmlzTWlzc2luZ0FueVBlcm1pc3Npb25BbGVydFNob3duID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhcG9pbnRzV2l0aFZhbHVlcyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZ2V0RGF0YXBvaW50c1dpdGhWYWx1ZXMoXG4gICAgICB0aGlzLmFjdGl2ZURhdGFwb2ludHMsXG4gICAgICBhY3RpdmVEYXRhcG9pbnRzU2VyaWVzRGF0YVxuICAgICk7XG5cbiAgICBjb25zdCBkYXRhcG9pbnRzTGlzdEl0ZW1zOiBEYXRhcG9pbnRUYWJsZUl0ZW1bXSA9XG4gICAgICB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLm1hcERhdGFwb2ludHNXaXRoVmFsdWVzVG9MaXN0KHRoaXMuZGF0YXBvaW50c1dpdGhWYWx1ZXMpO1xuXG4gICAgY29uc3QgZ3JvdXBlZERhdGFwb2ludHNMaXN0SXRlbXM6IEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1bXSA9XG4gICAgICB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmdyb3VwQnlEYXRlQW5kRGV2aWNlKFxuICAgICAgICBkYXRhcG9pbnRzTGlzdEl0ZW1zLFxuICAgICAgICB0aGlzLmRldmljZXNDb2x1bW5IZWFkZXJzXG4gICAgICApO1xuXG4gICAgdGhpcy5kYXRhcG9pbnRzVGFibGVJdGVtcyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2Uuc29ydERhdGFCeURhdGVEZXNjZW5kaW5nKFxuICAgICAgZ3JvdXBlZERhdGFwb2ludHNMaXN0SXRlbXNcbiAgICApO1xuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGFjdGl2ZSBkYXRhIHBvaW50cyBzZXJpZXMgZGF0YSBhbmQgcmV0dXJucyBpdCBhcyBhIG1hcC5cbiAgICpcbiAgICogSXQncyBhIHdyYXBwZXIgbWV0aG9kIHdpdGggdHJ5LWNhdGNoIGJsb2NrLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YXBvaW50c0lkc1dpdGhTZXJpZXMgLSBBIG1hcCBvZiBkYXRhIHBvaW50IElEcyB3aXRoIHRoZWlyIGFzc29jaWF0ZWQgc2VyaWVzLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRhdGEgcG9pbnRzIHRhYmxlLlxuICAgKiBAcGFyYW0gcm91bmRTZWNvbmRzIC0gV2hldGhlciB0byByb3VuZCB0aGUgc2Vjb25kcyBvciBub3QuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiB0cnVlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIHJvdW5kZWQgdG8gMC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIGZhbHNlLCB0aGUgc2Vjb25kcyB3aWxsIGJlIGRpc3BsYXllZCBhcyB0aGV5IGFyZS5cbiAgICogQHJldHVybnMgQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBNYXAgb2JqZWN0IHdpdGggZGF0YSBwb2ludCBJRHMgYXMga2V5cyBhbmQgRGF0YU9iamVjdCBhcyB2YWx1ZXMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldEFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhTWFwKFxuICAgIGRhdGFwb2ludHNJZHNXaXRoU2VyaWVzOiBEYXRhcG9pbnRzVmFsdWVzRGF0YU1hcCxcbiAgICBjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZyxcbiAgICByb3VuZFNlY29uZHM6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxNYXA8c3RyaW5nIHwgbnVtYmVyLCBJU2VyaWVzPj4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXRBbGxBY3RpdmVTZXJpZXNEYXRhTWFwKFxuICAgICAgICBkYXRhcG9pbnRzSWRzV2l0aFNlcmllcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByb3VuZFNlY29uZHNcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuaXNEaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWlzc2luZ0FueVBlcm1pc3Npb25FcnJvck1lc3NhZ2UoKSB7XG4gICAgdGhpcy5hbGVydHMuc2V0QWxlcnRHcm91cERpc21pc3NTdHJhdGVneSgnc3lzdGVtJywgRGlzbWlzc0FsZXJ0U3RyYXRlZ3kuVEVNUE9SQVJZKTtcblxuICAgIHRoaXMuYWxlcnRzLmFkZEFsZXJ0cyhcbiAgICAgIG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnQoe1xuICAgICAgICBhbGxvd0h0bWw6IHRydWUsXG4gICAgICAgIHRleHQ6IHRoaXMuZ2V0TWlzc2luZ1Blcm1pc3Npb25zTWVzc2FnZSgpLFxuICAgICAgICB0eXBlOiAnc3lzdGVtJ1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNaXNzaW5nUGVybWlzc2lvbnNNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZU1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgIGdldHRleHQoYFlvdSBkb24ndCBoYXZlIHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIGZvbGxvd2luZyBzZXJpZXM6YClcbiAgICApO1xuXG4gICAgY29uc3QgZm9ybWF0dGVkTGlzdCA9IHRoaXMuc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWRcbiAgICAgIC5tYXAoZGF0YXBvaW50ID0+IGA8bGk+JHtkYXRhcG9pbnQua2V5LnZhbHVlT2YoKX1fJHtkYXRhcG9pbnQudmFsdWV9PC9saT5gKVxuICAgICAgLmpvaW4oJycpO1xuXG4gICAgcmV0dXJuIGBcbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPiR7YmFzZU1lc3NhZ2V9PC9wPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgJHtmb3JtYXR0ZWRMaXN0fVxuICAgICAgICA8L3VsPlxuICAgICAgICA8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFRoZSBuYW1lIGNvbnZlbnRpb24gZm9yIGVhY2ggbGlzdCBpdGVtIGlzOiA8Y29kZT5bc291cmNlXV9bZnJhZ21lbnQuc2VyaWVzXTwvY29kZT48L3A+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNiBwLWwtMTYgcC1yLTE2IGZsZXgtd3JhcFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLmRpc3BsYXlEYXRlU2VsZWN0aW9uXCI+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDxjOHktZGF0ZS1yYW5nZS1waWNrZXJcbiAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgW2lzRW1pdHRpbmdEYXRlQ2hhbmdlXT1cInRydWVcIlxuICAgICAgICBbc2hvd0xhYmVsXT1cInRydWVcIlxuICAgICAgICAodXBkYXRlZERhdGUpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvYzh5LWRhdGUtcmFuZ2UtcGlja2VyPlxuICAgIDwvZm9ybT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDwhLS0gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWQgLS0+XG4gIDwhLS0gPGM4eS1kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3RvclxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgW2V4cG9ydENvbmZpZ109XCJleHBvcnRDb25maWdcIlxuICAgIChpc0V4cG9ydE1vZGFsT3Blbik9XCJvbkV4cG9ydE1vZGFsT3BlbigkZXZlbnQpXCJcbiAgPjwvYzh5LWRhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yPiAtLT5cbiAgPCEtLSBUT0RPOiBiZWxvdyBkaXYgaXMganVzdCBhIHRlbXAgZml4LCBpdCB3aWxsIGJlIHJlbW92ZWQgd2hlbiBNVE0tNTk2ODkgaXMgaW50ZWdyYXRlZCAgLS0+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBwLXQtNCBwLWItNCBtYXgtd2lkdGgtZml0IG0tbC1hdXRvXCI+PC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcuZGF0YXBvaW50cy5sZW5ndGggPiAwXCI+XG4gICAgPGM4eS1kYXRhcG9pbnRzLXJlbG9hZFxuICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgIFtpc0F1dG9SZWZyZXNoRW5hYmxlZF09XCJjb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWRcIlxuICAgICAgW3JlZnJlc2hJbnRlcnZhbF09XCJjb25maWcucmVmcmVzaEludGVydmFsXCJcbiAgICAgIFtpc0Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgW2lzU2Nyb2xsaW5nXT1cImlzU2Nyb2xsaW5nKClcIlxuICAgICAgW2lzRXhwb3J0TW9kYWxPcGVuXT1cImlzRXhwb3J0TW9kYWxPcGVuXCJcbiAgICAgIChvbkNvdW50ZG93bkVuZGVkKT1cIm9uQ291bnRkb3duRW5kZWQoKVwiXG4gICAgPjwvYzh5LWRhdGFwb2ludHMtcmVsb2FkPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldmljZXNDb2x1bW5IZWFkZXJzXCI+XG4gIDxjOHktZGF0YXBvaW50cy10YWJsZVxuICAgIFthZ2dyZWdhdGlvblR5cGVdPVwiY29uZmlnLmFnZ3JlZ2F0aW9uXCJcbiAgICBbZGF0YXBvaW50c1RhYmxlSXRlbXNdPVwiZGF0YXBvaW50c1RhYmxlSXRlbXNcIlxuICAgIFtkZWNpbWFsUGxhY2VzXT1cImNvbmZpZy5kZWNpbWFsUGxhY2VzXCJcbiAgICBbZGV2aWNlc0NvbHVtbkhlYWRlcnNdPVwiZGV2aWNlc0NvbHVtbkhlYWRlcnNcIlxuICAgIFtoYXNNdWx0aXBsZURhdGFwb2ludHNdPVwiaGFzTXVsdGlwbGVEYXRhcG9pbnRzXCJcbiAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZygpXCJcbiAgICBbc2VyaWVzV2l0aG91dFBlcm1pc3Npb25Ub1JlYWRDb3VudF09XCJzZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZD8ubGVuZ3RoXCJcbiAgICAoaXNTY3JvbGxpbmcpPVwib25TY3JvbGxpbmcoJGV2ZW50KVwiXG4gID48L2M4eS1kYXRhcG9pbnRzLXRhYmxlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2RhdGFwb2ludHMtdGFibGUvZGF0YXBvaW50cy10YWJsZS12aWV3L2RhdGFwb2ludHMtdGFibGUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtdmlldy9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxFQUNaLG9CQUFvQixFQUNwQixxQkFBcUIsRUFFckIsOEJBQThCLEVBQzlCLE9BQU8sRUFDUCx3QkFBd0IsRUFDekIsTUFBTSxxQkFBcUIsQ0FBQztBQVE3QixPQUFPLEVBQ0wsbUJBQW1CLEVBR25CLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDbkIsTUFBTSxnREFBZ0QsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RixPQUFPLEVBQ0wsdUJBQXVCLEVBTXhCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDNUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7OztBQWlCekYsTUFBTSxPQUFPLGtDQUFrQztJQTZFN0MsWUFDVSxZQUEwQixFQUMxQixtQkFBd0MsRUFDeEMsNEJBQW9ELEVBQ3BELDBCQUFzRCxFQUN0RCxXQUF3QixFQUN4QixnQkFBa0MsRUFDbEMsdUJBQXVEO1FBTnZELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUF3QjtRQUNwRCwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3RELGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFnQztRQTNFakU7O1dBRUc7UUFDSCxxQkFBZ0IsR0FBaUIsRUFBRSxDQUFDO1FBVXBDOzs7V0FHRztRQUNILHlCQUFvQixHQUFnQyxFQUFFLENBQUM7UUFldkQ7OztXQUdHO1FBQ0gsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCOzs7V0FHRztRQUNILHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4Qjs7V0FFRztRQUNILGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUVoRCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFJcEIsdUJBQWtCLEdBQUcsT0FBTyxDQUNsQyw4RUFBOEUsQ0FDL0UsQ0FBQztRQUNNLHNCQUFpQixHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXRELGFBQVEsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN4QyxzQkFBaUIsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUdyRTs7O1dBR0c7UUFDSyxxQ0FBZ0MsR0FBRyxLQUFLLENBQUM7SUFVOUMsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRywyREFBMkQsQ0FBQztRQUNwRixDQUFDO1FBRUQ7OztXQUdHO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLCtCQUErQixFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQ0FBc0MsR0FBRyxJQUFJLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsR0FBRyxLQUFLLENBQUM7WUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsc0NBQXNDLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFFaEMsTUFBTSw0QkFBNEIsR0FDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQ3BCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBQzVDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUM7WUFDOUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXRELElBQUksNEJBQTRCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUI7Ozs7OztlQU1HO1lBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLGdDQUFnQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxDQUFDO1FBQy9DLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU5QixnRkFBZ0Y7UUFDaEYsd0JBQXdCO1FBQ3hCLDBDQUEwQztRQUMxQyxvQ0FBb0M7UUFDcEMsZ0NBQWdDO1FBQ2hDLHVGQUF1RjtRQUN2RixpQ0FBaUM7UUFDakMsMkJBQTJCO1FBQzNCLG1DQUFtQztRQUNuQyxrQ0FBa0M7UUFDbEMsUUFBUTtRQUNSLEtBQUs7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQTBEO1FBQ3JFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLGdGQUFnRjtRQUNoRixrSEFBa0g7UUFDbEgsdUJBQXVCO1FBQ3ZCLHFEQUFxRDtRQUNyRCxpREFBaUQ7SUFDbkQsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQWlCO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0I7UUFDcEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUNuQixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBRXRDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5DLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUI7YUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QixTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxrQ0FBa0M7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsdUJBQXVCLENBQUM7SUFDeEQsQ0FBQztJQUVPLHFDQUFxQztRQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsc0NBQXNDLEVBQUUsQ0FBQztZQUN2RCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLGtCQUFrQixDQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDckIsQ0FBQztRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sVUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUMzQjtZQUNFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUMvQyxNQUFNLEVBQUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDNUMsRUFDRCxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxDQUNuQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxJQUFJO1FBQ2hELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQywyQkFBMkIsQ0FDakYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ3ZCLENBQUM7WUFFRixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHFCQUFxQixDQUNoRixJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUM7WUFFRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUMxRSxJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUM7WUFFRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxNQUFNLDZCQUE2QixHQUNqQyxJQUFJLENBQUMsMEJBQTBCLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFL0UsTUFBTSwwQkFBMEIsR0FDOUIsTUFBTSxJQUFJLENBQUMsZ0NBQWdDLENBQ3pDLDZCQUE2QixFQUM3QixJQUFJLENBQUMsTUFBTSxFQUNYLFlBQVksQ0FDYixDQUFDO1FBRUosSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyw2QkFBNkI7WUFDaEMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGdDQUFnQyxDQUM5RCwwQkFBMEIsRUFDMUIsNkJBQTZCLENBQzlCLENBQUM7UUFFSixJQUNFLENBQUMsSUFBSSxDQUFDLGdDQUFnQztZQUN0QyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxHQUFHLENBQUM7WUFDOUMsMEJBQTBCLEVBQUUsSUFBSSxFQUNoQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQztRQUMvQyxDQUFDO1FBRUQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLHVCQUF1QixDQUNqRixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLDBCQUEwQixDQUMzQixDQUFDO1FBRUYsTUFBTSxtQkFBbUIsR0FDdkIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTNGLE1BQU0sMEJBQTBCLEdBQzlCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FDbEQsbUJBQW1CLEVBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FDMUIsQ0FBQztRQUVKLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsd0JBQXdCLENBQ2xGLDBCQUEwQixDQUMzQixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ssS0FBSyxDQUFDLGdDQUFnQyxDQUM1Qyx1QkFBZ0QsRUFDaEQsTUFBNkIsRUFDN0IsWUFBcUI7UUFFckIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztZQUN2QyxPQUFPLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixDQUFDLHlCQUF5QixDQUNwRSx1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLFlBQVksQ0FDYixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFZO1FBQ25DLElBQUksS0FBSyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLFNBQVMsRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsY0FBYztZQUNqQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQjtZQUN6QixDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFFN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FDdEMsU0FBUyxFQUNULG9CQUFvQixDQUFDLHNCQUFzQixDQUM1QyxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ25CLElBQUkscUJBQXFCLENBQUM7WUFDeEIsSUFBSSxFQUFFLFNBQVM7WUFDZixJQUFJLEVBQUUsWUFBWTtTQUNuQixDQUFDLENBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sc0NBQXNDO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5GLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUNuQixJQUFJLHFCQUFxQixDQUFDO1lBQ3hCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyw0QkFBNEIsRUFBRTtZQUN6QyxJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUMvQyxPQUFPLENBQUMsMERBQTBELENBQUMsQ0FDcEUsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyw2QkFBNkI7YUFDckQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLE9BQU8sQ0FBQzthQUMxRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFWixPQUFPOzthQUVFLFdBQVc7O1lBRVosYUFBYTs7OztLQUlwQixDQUFDO0lBQ0osQ0FBQztJQUVPLDBCQUEwQjtRQUNoQyxJQUFJLENBQUMsVUFBVTthQUNaLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3RGLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7OEdBbmJVLGtDQUFrQztrR0FBbEMsa0NBQWtDLDRKQ3pEL0MsaW1FQThDQSwyQ0RFSSxZQUFZO2dCQUNaLGdGQUFnRjtnQkFDaEYscUNBQXFDO2dCQUNyQyx5QkFBeUIsc1FBQ3pCLHdCQUF3QixxUUFDeEIsd0JBQXdCLDBJQUN4QixtQkFBbUI7OzJGQUdWLGtDQUFrQztrQkFmOUMsU0FBUzsrQkFDRSwyQkFBMkIsUUFFL0IsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGNBQ2xCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGdGQUFnRjt3QkFDaEYscUNBQXFDO3dCQUNyQyx5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QixtQkFBbUI7cUJBQ3BCO3VTQU1RLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQ29tbW9uTW9kdWxlLFxuICBEaXNtaXNzQWxlcnRTdHJhdGVneSxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yLFxuICBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIGdsb2JhbEF1dG9SZWZyZXNoTG9hZGluZ1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEtQSURldGFpbHMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG4vLyBUT0RPOiB0ZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0LCB3aWxsIGJlIGVuYWJsZWQgd2hlbiBNVE0tNTk2ODkgaXMgaW50ZWdyYXRlZFxuLy8gaW1wb3J0IHtcbi8vICAgRGF0YXBvaW50c0V4cG9ydFNlbGVjdG9yQ29tcG9uZW50LFxuLy8gICBFeHBvcnRDb25maWdcbi8vIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBJU2VyaWVzIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgRGF0YUZldGNoaW5nU2VydmljZSxcbiAgRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gIFNvdXJjZUlkLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUyxcbiAgZGF0ZVJhbmdlVmFsaWRhdG9yXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0NPVU5URE9XTl9WQUxVRSxcbiAgRGF0YXBvaW50VGFibGVJdGVtLFxuICBEYXRhcG9pbnRXaXRoVmFsdWVzLFxuICBEYXRhcG9pbnRzVGFibGVDb25maWcsXG4gIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW0sXG4gIFRhYmxlQ29sdW1uSGVhZGVyXG59IGZyb20gJy4uL2RhdGFwb2ludHMtdGFibGUtd2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IERhdGFwb2ludHNUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9kYXRhcG9pbnRzLXRhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFwb2ludHNSZWxvYWRDb21wb25lbnQgfSBmcm9tICcuL2RhdGFwb2ludHMtcmVsb2FkL2RhdGFwb2ludHMtcmVsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZSB9IGZyb20gJy4vZGF0YXBvaW50cy10YWJsZS12aWV3LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YXBvaW50c1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRhdGFwb2ludHMtdGFibGUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnRzLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnZC1jb2wgZml0LWgnIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgLy8gVE9ETzogdGVtcG9yYXJpbHkgY29tbWVudGVkIG91dCwgd2lsbCBiZSBlbmFibGVkIHdoZW4gTVRNLTU5Njg5IGlzIGludGVncmF0ZWRcbiAgICAvLyBEYXRhcG9pbnRzRXhwb3J0U2VsZWN0b3JDb21wb25lbnQsXG4gICAgRGF0YXBvaW50c1JlbG9hZENvbXBvbmVudCxcbiAgICBEYXRhcG9pbnRzVGFibGVDb21wb25lbnQsXG4gICAgRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzVGFibGVWaWV3V2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogIERhdGEgcG9pbnRzIHRhYmxlIHdpZGdldCBjb25maWcuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc6IERhdGFwb2ludHNUYWJsZUNvbmZpZztcbiAgLy8gY29uZmlnOiBEYXRhcG9pbnRzVGFibGVDb25maWc7XG5cbiAgYWxlcnRzOiBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBkYXRhIHBvaW50cyB3aGVyZSBfX2FjdGl2ZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIGFjdGl2ZURhdGFwb2ludHM6IEtQSURldGFpbHNbXSA9IFtdO1xuICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgY3VzdG9tIENTUyBzdHlsZSBmb3IgdGhlIGV4cG9ydCBzZWxlY3RvciBjb21wb25lbnQuXG4gICAqL1xuICBjb250YWluZXJDbGFzczogc3RyaW5nO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygb2JqZWN0cyByZXByZXNlbnRpbmcgZGF0YXBvaW50cyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSBDU1YvRXhjZWwgZmlsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzV2l0aFZhbHVlczogRGF0YXBvaW50V2l0aFZhbHVlc1tdO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW1gIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSBkYXRhcG9pbnRzIHRhYmxlIGl0ZW1zLlxuICAgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSB0YWJsZSB3aXRoIGRhdGEuXG4gICAqL1xuICBkYXRhcG9pbnRzVGFibGVJdGVtczogR3JvdXBlZERhdGFwb2ludFRhYmxlSXRlbVtdID0gW107XG5cbiAgZGV2aWNlc0NvbHVtbkhlYWRlcnM6IFRhYmxlQ29sdW1uSGVhZGVyW107XG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGEgY29uZmlndXJhdGlvbiBvcHRpb25zIHVzZWQgYnkgYSBjOHktZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3IuXG4gICAqL1xuICAvLyBUT0RPOiB0ZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0LCB3aWxsIGJlIGVuYWJsZWQgd2hlbiBNVE0tNTk2ODkgaXMgaW50ZWdyYXRlZFxuICAvLyBleHBvcnRDb25maWc6IEV4cG9ydENvbmZpZztcblxuICBmb3JtR3JvdXA6IFJldHVyblR5cGU8RGF0YXBvaW50c1RhYmxlVmlld1dpZGdldENvbXBvbmVudFsnY3JlYXRlRm9ybSddPjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZGF0YSBwb2ludC5cbiAgICogSWYgaXMgdHJ1ZSwgdGhlbiBhIGNvbHVtbiAnRGV2aWNlJyB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgdGFibGUuXG4gICAqL1xuICBoYXNNdWx0aXBsZURhdGFwb2ludHM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciByZWZyZXNoaW5nIHNob3VsZCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLlxuICAgKiBJdCdzICd0cnVlJyB3aGVuIHVzZXIgaXMgbm90IGFsbG93ZWQgdG8gdmlldyBhIG1lYXN1cmVtZW50cy5cbiAgICovXG4gIGlzUmVmcmVzaERpc2FibGVkID0gZmFsc2U7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29tcG9uZW50IGlzIGluIHRoZSBpbml0aWFsIHJlcXVlc3Qgc3RhdGVcbiAgICogd2hlcmUgZGF0YSBmb3IgYSB0YWJsZSBzdHJ1Y3R1cmUgaXMgYmVpbmcgcHJlcGFyZWQuXG4gICAqL1xuICBpc0luaXRpYWxSZXF1ZXN0ID0gdHJ1ZTtcbiAgLyoqXG4gICAqIEN1cnJlbnQgaXNMb2FkaW5nIHN0YXRlLiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGF0YSBpcyBiZWluZyBsb2FkZWQuXG4gICAqL1xuICBpc0xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBpc0V4cG9ydE1vZGFsT3BlbiA9IGZhbHNlO1xuXG4gIGlzU2Nyb2xsaW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICBzZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZDogeyBrZXk6IFNvdXJjZUlkOyB2YWx1ZTogc3RyaW5nW10gfVtdO1xuXG4gIHByaXZhdGUgVElNRU9VVF9FUlJPUl9URVhUID0gZ2V0dGV4dChcbiAgICAnVGhlIHJlcXVlc3QgaXMgdGFraW5nIGxvbmdlciB0aGFuIHVzdWFsLiBXZSBhcG9sb2dpemUgZm9yIHRoZSBpbmNvbnZlbmllbmNlLidcbiAgKTtcbiAgcHJpdmF0ZSBTRVJWRVJfRVJST1JfVEVYVCA9IGdldHRleHQoJ1NlcnZlciBlcnJvciBvY2N1cnJlZC4nKTtcblxuICBwcml2YXRlIGRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBzY3JvbGxpbmdTdWJqZWN0JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgaXNGYWlsZWRUb0ZldGNoU2VyaWVzRGF0YTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYWxlcnQgaGFzIGFscmVhZHkgYmVlbiBkaXNwbGF5ZWQgYW5kIGNhbiBiZSBkaXNtaXNzZWQuXG4gICAqIFRoZSBtZXNzYWdlIGlzIG9ubHkgZGlzcGxheWVkIHdoZW4gYSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBwcml2YXRlIGlzTWlzc2luZ0FueVBlcm1pc3Npb25BbGVydFNob3duID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFGZXRjaGluZ1NlcnZpY2U6IERhdGFGZXRjaGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhcG9pbnRzVGFibGVDb25maWdTZXJ2aWNlOiBEYXRhcG9pbnRzVGFibGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2U6IERhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoOiBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgdGhpcy5jb250YWluZXJDbGFzcyA9ICdhLWktY2VudGVyIGlucHV0LWdyb3VwIHAtdC00IHAtYi00IG1heC13aWR0aC1maXQgbS1sLWF1dG8nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExlZ2FjeSB3aWRnZXQgdXNlZCByZWFsdGltZSBzbyBpdCBtdXN0IGJlIGNvbnZlcnRlZCB0byByZWZyZXNoIGFwcHJvYWNoXG4gICAgICogaWYgaXQgd2FzIGVuYWJsZWQgYmVmb3JlIG1pZ3JhdGlvbi5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCkge1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQgPSB0cnVlO1xuICAgICAgdGhpcy5jb25maWcud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCA9IGZhbHNlO1xuICAgICAgdGhpcy5jb25maWcuZGlzcGxheVNldHRpbmdzLmdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0KSB7XG4gICAgICB0aGlzLmhhbmRsZUdsb2JhbFJlZnJlc2hMb2FkaW5nKCk7XG4gICAgICB0aGlzLmhhbmRsZUdsb2JhbFRpbWVDb250ZXh0U2V0dGluZ3MoKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFNjcm9sbGluZ1N1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3QgaXNMZWdhY3lXaWRnZXRSZWFsdGltZUFjdGl2ZSA9XG4gICAgICB0aGlzLmNvbmZpZy5yZWFsdGltZSAmJlxuICAgICAgIXRoaXMuY29uZmlnLmhhc093blByb3BlcnR5KCdkZWNpbWFsUGxhY2VzJykgJiZcbiAgICAgICF0aGlzLmNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgncmVmcmVzaEludGVydmFsJykgJiZcbiAgICAgICF0aGlzLmNvbmZpZy5oYXNPd25Qcm9wZXJ0eSgnaXNBdXRvUmVmcmVzaEVuYWJsZWQnKTtcblxuICAgIGlmIChpc0xlZ2FjeVdpZGdldFJlYWx0aW1lQWN0aXZlKSB7XG4gICAgICB0aGlzLnNldERlZmF1bHRSZWZyZXNoUmVsYXRlZFByb3BlcnRpZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY29uZmlnLmludGVydmFsKSB7XG4gICAgICAvKipcbiAgICAgICAqIEZpeCBmb3IgbGVnYWN5IHdpZGdldCBidWcuXG4gICAgICAgKiBXaGVuIG5ldyBsZWdhY3kgd2lkZ2V0IGlzIGNyZWF0ZWQgYW5kIHNhdmVkXG4gICAgICAgKiB0aGVuIGludGVydmFsIHZhbHVlIGluIGEgY29uZmlnIHdvdWxkIHN0YXkgbnVsbCB1bnRpbCBpbnRlcnZhbCBpcyBtYW51YWxseSBjaGFuZ2VkXG4gICAgICAgKiBhbmQgc2F2ZWQgYWdhaW4uXG4gICAgICAgKiBCdWcgd2FzIGludHJvZHVjZWQgcG9zdCAxMDE4LjAuMTY0IHZlcnNpb24gb2YgVUkuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsID0gJ2hvdXJzJztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb25maWcuaW50ZXJ2YWwgIT09IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmN1c3RvbSkge1xuICAgICAgdGhpcy5yZWNhbGN1bGF0ZUludGVydmFsVG9NYXRjaEZyb21Ob3dEYXRlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc3BsYXlEYXRlU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnByZXBhcmVEYXRlUmFuZ2VGb3JtKCk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5wcmVwYXJlVGFibGVEYXRhKCk7XG5cbiAgICAvLyBUT0RPOiB0ZW1wb3JhcmlseSBjb21tZW50ZWQgb3V0LCB3aWxsIGJlIGVuYWJsZWQgd2hlbiBNVE0tNTk2ODkgaXMgaW50ZWdyYXRlZFxuICAgIC8vIHRoaXMuZXhwb3J0Q29uZmlnID0ge1xuICAgIC8vICAgYWdncmVnYXRpb246IHRoaXMuY29uZmlnLmFnZ3JlZ2F0aW9uLFxuICAgIC8vICAgZGF0ZUZyb206IHRoaXMuY29uZmlnLmRhdGVGcm9tLFxuICAgIC8vICAgZGF0ZVRvOiB0aGlzLmNvbmZpZy5kYXRlVG8sXG4gICAgLy8gICBkYXRhcG9pbnREZXRhaWxzOiB0aGlzLmFjdGl2ZURhdGFwb2ludHMubWFwKCh7IF9fdGFyZ2V0LCBmcmFnbWVudCwgc2VyaWVzIH0pID0+ICh7XG4gICAgLy8gICAgIGRldmljZU5hbWU6IF9fdGFyZ2V0Lm5hbWUsXG4gICAgLy8gICAgIHNvdXJjZTogX190YXJnZXQuaWQsXG4gICAgLy8gICAgIHZhbHVlRnJhZ21lbnRTZXJpZXM6IHNlcmllcyxcbiAgICAvLyAgICAgdmFsdWVGcmFnbWVudFR5cGU6IGZyYWdtZW50XG4gICAgLy8gICB9KSlcbiAgICAvLyB9O1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShkYXRhOiB7IGRhdGVGcm9tPzogc3RyaW5nIHwgbnVsbDsgZGF0ZVRvPzogc3RyaW5nIHwgbnVsbCB9KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmludmFsaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kYXRlRnJvbSkge1xuICAgICAgdGhpcy5jb25maWcuZGF0ZUZyb20gPSBkYXRhLmRhdGVGcm9tO1xuICAgIH1cbiAgICBpZiAoZGF0YS5kYXRlVG8pIHtcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVUbyA9IGRhdGEuZGF0ZVRvO1xuICAgIH1cbiAgICB0aGlzLnByZXBhcmVUYWJsZURhdGEoKTtcblxuICAgIC8vIFRPRE86IHRlbXBvcmFyaWx5IGNvbW1lbnRlZCBvdXQsIHdpbGwgYmUgZW5hYmxlZCB3aGVuIE1UTS01OTY4OSBpcyBpbnRlZ3JhdGVkXG4gICAgLy8gVE9ETy0yOiBlYWNoIG1hbnVhbC9hdXRvIGxpc3QgcmVsb2FkIHNob3VsZCB1cGRhdGUgZXhwb3J0cyBjb25maWcgZGF0ZSByYW5nZSB0byBzeW5jIGN1cnJlbnQgc3RhdGUgb2YgdmlldyB3aXRoXG4gICAgLy8gaW5pdGFsIGV4cG9ydCBjb25maWdcbiAgICAvLyB0aGlzLmV4cG9ydENvbmZpZy5kYXRlRnJvbSA9IHRoaXMuY29uZmlnLmRhdGVGcm9tO1xuICAgIC8vIHRoaXMuZXhwb3J0Q29uZmlnLmRhdGVUbyA9IHRoaXMuY29uZmlnLmRhdGVUbztcbiAgfVxuXG4gIG9uRXhwb3J0TW9kYWxPcGVuKGlzT3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc0V4cG9ydE1vZGFsT3BlbiA9IGlzT3BlbmVkO1xuICB9XG5cbiAgb25TY3JvbGxpbmcodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbGluZ1N1YmplY3QkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgb25Db3VudGRvd25FbmRlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLnByZXBhcmVUaW1lUmFuZ2UoXG4gICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCxcbiAgICAgIHRoaXMuY29uZmlnLmRhdGVGcm9tLFxuICAgICAgdGhpcy5jb25maWcuZGF0ZVRvXG4gICAgKTtcblxuICAgIHRoaXMuY29uZmlnLmRhdGVGcm9tID0gZGF0ZVJhbmdlLmRhdGVGcm9tO1xuICAgIHRoaXMuY29uZmlnLmRhdGVUbyA9IGRhdGVSYW5nZS5kYXRlVG87XG5cbiAgICBhd2FpdCB0aGlzLnByZXBhcmVUYWJsZURhdGEoZmFsc2UpO1xuXG4gICAgdGhpcy5vblNjcm9sbGluZyhmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUdsb2JhbFRpbWVDb250ZXh0U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcuZGF0ZUZyb20gPSB0aGlzLmRhdGFGZXRjaGluZ1NlcnZpY2UuYWRqdXN0RGF0ZSh0aGlzLmNvbmZpZy5kYXRlWzBdLCAwLCBmYWxzZSk7XG4gICAgdGhpcy5jb25maWcuZGF0ZVRvID0gdGhpcy5kYXRhRmV0Y2hpbmdTZXJ2aWNlLmFkanVzdERhdGUodGhpcy5jb25maWcuZGF0ZVsxXSwgMCwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIHNjcm9sbGluZyBzdWJzY3JpcHRpb24uXG4gICAqXG4gICAqIEVuc3VyZXMgc2ltaWxhciBVWCBhcyBpbiB0aGUgYWxhcm1zIGNvdW50ZG93bi1wYXVzZSBsb2dpYy5cbiAgICovXG4gIHByaXZhdGUgc2V0U2Nyb2xsaW5nU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5zY3JvbGxpbmdTdWJqZWN0JFxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMuaXNTY3JvbGxpbmcuc2V0KHZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRSZWZyZXNoUmVsYXRlZFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcuaXNBdXRvUmVmcmVzaEVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuY29uZmlnLnJlZnJlc2hJbnRlcnZhbCA9IERFRkFVTFRfQ09VTlRET1dOX1ZBTFVFO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNhbGN1bGF0ZUludGVydmFsVG9NYXRjaEZyb21Ob3dEYXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGF0ZUZyb20sIGRhdGVUbyB9ID0gdGhpcy5kYXRhcG9pbnRzVGFibGVDb25maWdTZXJ2aWNlLmNhbGN1bGF0ZURhdGVSYW5nZShcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsXG4gICAgKTtcbiAgICB0aGlzLmNvbmZpZy5kYXRlRnJvbSA9IGRhdGVGcm9tO1xuICAgIHRoaXMuY29uZmlnLmRhdGVUbyA9IGRhdGVUbztcbiAgfVxuXG4gIHByaXZhdGUgcHJlcGFyZURhdGVSYW5nZUZvcm0oKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cChcbiAgICAgIHtcbiAgICAgICAgZGF0ZUZyb206IG5ldyBGb3JtQ29udHJvbCh0aGlzLmNvbmZpZy5kYXRlRnJvbSksXG4gICAgICAgIGRhdGVUbzogbmV3IEZvcm1Db250cm9sKHRoaXMuY29uZmlnLmRhdGVUbylcbiAgICAgIH0sXG4gICAgICB7IHZhbGlkYXRvcnM6IGRhdGVSYW5nZVZhbGlkYXRvciB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVwYXJlcyB0aGUgdGFibGUgZGF0YSBieTpcbiAgICogLSBmaWx0ZXJpbmcgb3V0IGluYWN0aXZlIGRhdGEgcG9pbnRzLFxuICAgKiAtIGNoZWNraW5nIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBkZXZpY2VzIGFzIGEgc291cmNlIG9mIGRhdGEgcG9pbnRzLFxuICAgKiAtIGdldHRpbmcgdGhlIGNvbHVtbiBoZWFkZXJzIGZvciBkZXZpY2VzLFxuICAgKiAtIGdldHRpbmcgdGhlIHNlcmllcyBkYXRhIGZvciBhY3RpdmUgZGF0YSBwb2ludHMgKEFQSSBjYWxsKSxcbiAgICogLSBwcmVwYXJpbmcgZGF0YSBwb2ludHMgd2l0aCB2YWx1ZXMgbGlzdCxcbiAgICogLSBtYXBwaW5nIGRhdGEgcG9pbnRzIHdpdGggdmFsdWVzIHRvIGxpc3QgaXRlbXMsXG4gICAqIC0gZ3JvdXBpbmcgZGF0YSBwb2ludHMgYnkgZGF0ZSBhbmQgZGV2aWNlLFxuICAgKiAtIHNvcnRpbmcgZGF0YSBieSBkYXRlIGRlc2NlbmRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSByb3VuZFNlY29uZHMgLSBXaGV0aGVyIHRvIHJvdW5kIHRoZSBzZWNvbmRzIG9yIG5vdC5cbiAgICogICAgICAgICAgICAgICAgICAgICAgIElmIHRydWUsIHRoZSBzZWNvbmRzIHdpbGwgYmUgcm91bmRlZCB0byAwLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgZmFsc2UsIHRoZSBzZWNvbmRzIHdpbGwgYmUgZGlzcGxheWVkIGFzIHRoZXkgYXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwcmVwYXJlVGFibGVEYXRhKHJvdW5kU2Vjb25kcyA9IHRydWUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmlzTG9hZGluZyQubmV4dCh0cnVlKTtcblxuICAgIGlmICh0aGlzLmlzSW5pdGlhbFJlcXVlc3QpIHtcbiAgICAgIHRoaXMuYWN0aXZlRGF0YXBvaW50cyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZmlsdGVyT3V0SW5hY3RpdmVEYXRhcG9pbnRzKFxuICAgICAgICB0aGlzLmNvbmZpZy5kYXRhcG9pbnRzXG4gICAgICApO1xuXG4gICAgICB0aGlzLmhhc011bHRpcGxlRGF0YXBvaW50cyA9IHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuaGFzTXVsdGlwbGVEYXRhcG9pbnRzKFxuICAgICAgICB0aGlzLmFjdGl2ZURhdGFwb2ludHNcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZGV2aWNlc0NvbHVtbkhlYWRlcnMgPSB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmdldENvbHVtbkhlYWRlcnMoXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0YXBvaW50c1xuICAgICAgKTtcblxuICAgICAgdGhpcy5pc0luaXRpYWxSZXF1ZXN0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlRGF0YXBvaW50c0lkc1dpdGhTZXJpZXM6IERhdGFwb2ludHNWYWx1ZXNEYXRhTWFwID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZ3JvdXBTZXJpZXNCeURldmljZUlkKHRoaXMuYWN0aXZlRGF0YXBvaW50cyk7XG5cbiAgICBjb25zdCBhY3RpdmVEYXRhcG9pbnRzU2VyaWVzRGF0YTogTWFwPHN0cmluZyB8IG51bWJlciwgSVNlcmllcz4gPVxuICAgICAgYXdhaXQgdGhpcy5nZXRBY3RpdmVEYXRhcG9pbnRzU2VyaWVzRGF0YU1hcChcbiAgICAgICAgYWN0aXZlRGF0YXBvaW50c0lkc1dpdGhTZXJpZXMsXG4gICAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgICByb3VuZFNlY29uZHNcbiAgICAgICk7XG5cbiAgICBpZiAodGhpcy5pc0ZhaWxlZFRvRmV0Y2hTZXJpZXNEYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZCA9XG4gICAgICB0aGlzLmRhdGFwb2ludHNUYWJsZVZpZXdTZXJ2aWNlLmdldFNlcmllc1dpdGhvdXRQZXJtaXNzaW9uVG9SZWFkKFxuICAgICAgICBhY3RpdmVEYXRhcG9pbnRzU2VyaWVzRGF0YSxcbiAgICAgICAgYWN0aXZlRGF0YXBvaW50c0lkc1dpdGhTZXJpZXNcbiAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5pc01pc3NpbmdBbnlQZXJtaXNzaW9uQWxlcnRTaG93biAmJlxuICAgICAgdGhpcy5zZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZD8ubGVuZ3RoID4gMCAmJlxuICAgICAgYWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGE/LnNpemVcbiAgICApIHtcbiAgICAgIHRoaXMuaGFuZGxlTWlzc2luZ0FueVBlcm1pc3Npb25FcnJvck1lc3NhZ2UoKTtcbiAgICAgIHRoaXMuaXNNaXNzaW5nQW55UGVybWlzc2lvbkFsZXJ0U2hvd24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghYWN0aXZlRGF0YXBvaW50c1Nlcmllc0RhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFwb2ludHNXaXRoVmFsdWVzID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXREYXRhcG9pbnRzV2l0aFZhbHVlcyhcbiAgICAgIHRoaXMuYWN0aXZlRGF0YXBvaW50cyxcbiAgICAgIGFjdGl2ZURhdGFwb2ludHNTZXJpZXNEYXRhXG4gICAgKTtcblxuICAgIGNvbnN0IGRhdGFwb2ludHNMaXN0SXRlbXM6IERhdGFwb2ludFRhYmxlSXRlbVtdID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UubWFwRGF0YXBvaW50c1dpdGhWYWx1ZXNUb0xpc3QodGhpcy5kYXRhcG9pbnRzV2l0aFZhbHVlcyk7XG5cbiAgICBjb25zdCBncm91cGVkRGF0YXBvaW50c0xpc3RJdGVtczogR3JvdXBlZERhdGFwb2ludFRhYmxlSXRlbVtdID1cbiAgICAgIHRoaXMuZGF0YXBvaW50c1RhYmxlVmlld1NlcnZpY2UuZ3JvdXBCeURhdGVBbmREZXZpY2UoXG4gICAgICAgIGRhdGFwb2ludHNMaXN0SXRlbXMsXG4gICAgICAgIHRoaXMuZGV2aWNlc0NvbHVtbkhlYWRlcnNcbiAgICAgICk7XG5cbiAgICB0aGlzLmRhdGFwb2ludHNUYWJsZUl0ZW1zID0gdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5zb3J0RGF0YUJ5RGF0ZURlc2NlbmRpbmcoXG4gICAgICBncm91cGVkRGF0YXBvaW50c0xpc3RJdGVtc1xuICAgICk7XG5cbiAgICB0aGlzLmlzTG9hZGluZyQubmV4dChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBhY3RpdmUgZGF0YSBwb2ludHMgc2VyaWVzIGRhdGEgYW5kIHJldHVybnMgaXQgYXMgYSBtYXAuXG4gICAqXG4gICAqIEl0J3MgYSB3cmFwcGVyIG1ldGhvZCB3aXRoIHRyeS1jYXRjaCBibG9jay5cbiAgICpcbiAgICogQHBhcmFtIGRhdGFwb2ludHNJZHNXaXRoU2VyaWVzIC0gQSBtYXAgb2YgZGF0YSBwb2ludCBJRHMgd2l0aCB0aGVpciBhc3NvY2lhdGVkIHNlcmllcy5cbiAgICogQHBhcmFtIGNvbmZpZyAtIFRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBkYXRhIHBvaW50cyB0YWJsZS5cbiAgICogQHBhcmFtIHJvdW5kU2Vjb25kcyAtIFdoZXRoZXIgdG8gcm91bmQgdGhlIHNlY29uZHMgb3Igbm90LlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgSWYgdHJ1ZSwgdGhlIHNlY29uZHMgd2lsbCBiZSByb3VuZGVkIHRvIDAuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICBJZiBmYWxzZSwgdGhlIHNlY29uZHMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgdGhleSBhcmUuXG4gICAqIEByZXR1cm5zIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgTWFwIG9iamVjdCB3aXRoIGRhdGEgcG9pbnQgSURzIGFzIGtleXMgYW5kIERhdGFPYmplY3QgYXMgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXRBY3RpdmVEYXRhcG9pbnRzU2VyaWVzRGF0YU1hcChcbiAgICBkYXRhcG9pbnRzSWRzV2l0aFNlcmllczogRGF0YXBvaW50c1ZhbHVlc0RhdGFNYXAsXG4gICAgY29uZmlnOiBEYXRhcG9pbnRzVGFibGVDb25maWcsXG4gICAgcm91bmRTZWNvbmRzOiBib29sZWFuXG4gICk6IFByb21pc2U8TWFwPHN0cmluZyB8IG51bWJlciwgSVNlcmllcz4+IHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0ZhaWxlZFRvRmV0Y2hTZXJpZXNEYXRhID0gZmFsc2U7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhcG9pbnRzVGFibGVWaWV3U2VydmljZS5nZXRBbGxBY3RpdmVTZXJpZXNEYXRhTWFwKFxuICAgICAgICBkYXRhcG9pbnRzSWRzV2l0aFNlcmllcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICByb3VuZFNlY29uZHNcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuaGFuZGxlRmV0Y2hFcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVGZXRjaEVycm9yKGVycm9yOiBFcnJvcik6IHZvaWQge1xuICAgIGlmIChlcnJvcj8ubWVzc2FnZS5pbmNsdWRlcygnNDAzJykpIHtcbiAgICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0R3JvdXBEaXNtaXNzU3RyYXRlZ3koJ3dhcm5pbmcnLCBEaXNtaXNzQWxlcnRTdHJhdGVneS5OT05FKTtcbiAgICAgIHRoaXMuaXNSZWZyZXNoRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGlzVGltZW91dEVycm9yID0gZXJyb3I/Lm5hbWUgPT09ICdUaW1lb3V0RXJyb3InO1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGlzVGltZW91dEVycm9yXG4gICAgICA/IHRoaXMuVElNRU9VVF9FUlJPUl9URVhUXG4gICAgICA6IGVycm9yPy5tZXNzYWdlID8/IHRoaXMuU0VSVkVSX0VSUk9SX1RFWFQ7XG5cbiAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydEdyb3VwRGlzbWlzc1N0cmF0ZWd5KFxuICAgICAgJ3dhcm5pbmcnLFxuICAgICAgRGlzbWlzc0FsZXJ0U3RyYXRlZ3kuVEVNUE9SQVJZX09SX1BFUk1BTkVOVFxuICAgICk7XG5cbiAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydHMoXG4gICAgICBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0KHtcbiAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICB0ZXh0OiBlcnJvck1lc3NhZ2VcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuaXNGYWlsZWRUb0ZldGNoU2VyaWVzRGF0YSA9IHRydWU7XG4gICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU1pc3NpbmdBbnlQZXJtaXNzaW9uRXJyb3JNZXNzYWdlKCkge1xuICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0R3JvdXBEaXNtaXNzU3RyYXRlZ3koJ3N5c3RlbScsIERpc21pc3NBbGVydFN0cmF0ZWd5LlRFTVBPUkFSWSk7XG5cbiAgICB0aGlzLmFsZXJ0cy5hZGRBbGVydHMoXG4gICAgICBuZXcgRHluYW1pY0NvbXBvbmVudEFsZXJ0KHtcbiAgICAgICAgYWxsb3dIdG1sOiB0cnVlLFxuICAgICAgICB0ZXh0OiB0aGlzLmdldE1pc3NpbmdQZXJtaXNzaW9uc01lc3NhZ2UoKSxcbiAgICAgICAgdHlwZTogJ3N5c3RlbSdcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWlzc2luZ1Blcm1pc3Npb25zTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VNZXNzYWdlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICBnZXR0ZXh0KGBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9ucyB0byByZWFkIHRoZSBmb2xsb3dpbmcgc2VyaWVzOmApXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1hdHRlZExpc3QgPSB0aGlzLnNlcmllc1dpdGhvdXRQZXJtaXNzaW9uVG9SZWFkXG4gICAgICAubWFwKGRhdGFwb2ludCA9PiBgPGxpPiR7ZGF0YXBvaW50LmtleS52YWx1ZU9mKCl9XyR7ZGF0YXBvaW50LnZhbHVlfTwvbGk+YClcbiAgICAgIC5qb2luKCcnKTtcblxuICAgIHJldHVybiBgXG4gICAgICA8ZGl2PlxuICAgICAgICA8cD4ke2Jhc2VNZXNzYWdlfTwvcD5cbiAgICAgICAgPHVsPlxuICAgICAgICAgICR7Zm9ybWF0dGVkTGlzdH1cbiAgICAgICAgPC91bD5cbiAgICAgICAgPHA+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGUgbmFtZSBjb252ZW50aW9uIGZvciBlYWNoIGxpc3QgaXRlbSBpczogPGNvZGU+W3NvdXJjZV1fW2ZyYWdtZW50LnNlcmllc108L2NvZGU+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlR2xvYmFsUmVmcmVzaExvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvYWRpbmckXG4gICAgICAucGlwZShnbG9iYWxBdXRvUmVmcmVzaExvYWRpbmcodGhpcy53aWRnZXRHbG9iYWxBdXRvUmVmcmVzaCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTYgcC1sLTE2IHAtci0xNiBmbGV4LXdyYXBcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5kaXNwbGF5RGF0ZVNlbGVjdGlvblwiPlxuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICA8Yzh5LWRhdGUtcmFuZ2UtcGlja2VyXG4gICAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgICAgIFtpc0VtaXR0aW5nRGF0ZUNoYW5nZV09XCJ0cnVlXCJcbiAgICAgICAgW3Nob3dMYWJlbF09XCJ0cnVlXCJcbiAgICAgICAgKHVwZGF0ZWREYXRlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID48L2M4eS1kYXRlLXJhbmdlLXBpY2tlcj5cbiAgICA8L2Zvcm0+XG4gIDwvbmctY29udGFpbmVyPlxuICA8IS0tIFRPRE86IHRlbXBvcmFyaWx5IGNvbW1lbnRlZCBvdXQsIHdpbGwgYmUgZW5hYmxlZCB3aGVuIGdyYWZ0IG9mIE1UTS01OTY4OSBpcyBtZXJnZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9DdW11bG9jaXR5LUlvVC9jdW11bG9jaXR5LXVpL3B1bGwvODAyOCAtLT5cbiAgIDwhLS0gPGM4eS1kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3RvclxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgW2NvbnRhaW5lckNsYXNzXT1cImNvbnRhaW5lckNsYXNzXCJcbiAgICBbZXhwb3J0Q29uZmlnXT1cImV4cG9ydENvbmZpZ1wiXG4gICAgKGlzT3Blbik9XCJvbkV4cG9ydE1vZGFsT3BlbigkZXZlbnQpXCJcbiAgPjwvYzh5LWRhdGFwb2ludHMtZXhwb3J0LXNlbGVjdG9yPiAtLT5cbiAgPCEtLSBUT0RPOiBiZWxvdyBkaXYgaXMganVzdCBhIHRlbXAgZml4LCBpdCB3aWxsIGJlIHJlbW92ZWQgd2hlbiBNVE0tNTk2ODkgaXMgbWVyZ2VkOiBodHRwczovL2dpdGh1Yi5jb20vQ3VtdWxvY2l0eS1Jb1QvY3VtdWxvY2l0eS11aS9wdWxsLzgwMjggICAtLT5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHAtdC00IHAtYi00IG1heC13aWR0aC1maXQgbS1sLWF1dG9cIj48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5kYXRhcG9pbnRzLmxlbmd0aCA+IDBcIj5cbiAgICA8Yzh5LWRhdGFwb2ludHMtcmVsb2FkXG4gICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgW2lzQXV0b1JlZnJlc2hFbmFibGVkXT1cImNvbmZpZy5pc0F1dG9SZWZyZXNoRW5hYmxlZFwiXG4gICAgICBbcmVmcmVzaEludGVydmFsXT1cImNvbmZpZy5yZWZyZXNoSW50ZXJ2YWxcIlxuICAgICAgW2lzUmVmcmVzaERpc2FibGVkXT1cImlzUmVmcmVzaERpc2FibGVkXCJcbiAgICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nJFwiXG4gICAgICBbaXNTY3JvbGxpbmddPVwiaXNTY3JvbGxpbmcoKVwiXG4gICAgICBbaXNFeHBvcnRNb2RhbE9wZW5dPVwiaXNFeHBvcnRNb2RhbE9wZW5cIlxuICAgICAgW3dpZGdldEluc3RhbmNlR2xvYmFsQXV0b1JlZnJlc2hDb250ZXh0XT1cImNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dFwiXG4gICAgICAob25Db3VudGRvd25FbmRlZCk9XCJvbkNvdW50ZG93bkVuZGVkKClcIlxuICAgID48L2M4eS1kYXRhcG9pbnRzLXJlbG9hZD5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJkZXZpY2VzQ29sdW1uSGVhZGVyc1wiPlxuICA8Yzh5LWRhdGFwb2ludHMtdGFibGVcbiAgICBbYWdncmVnYXRpb25UeXBlXT1cImNvbmZpZy5hZ2dyZWdhdGlvblwiXG4gICAgW2RhdGFwb2ludHNUYWJsZUl0ZW1zXT1cImRhdGFwb2ludHNUYWJsZUl0ZW1zXCJcbiAgICBbZGVjaW1hbFBsYWNlc109XCJjb25maWcuZGVjaW1hbFBsYWNlc1wiXG4gICAgW2RldmljZXNDb2x1bW5IZWFkZXJzXT1cImRldmljZXNDb2x1bW5IZWFkZXJzXCJcbiAgICBbaGFzTXVsdGlwbGVEYXRhcG9pbnRzXT1cImhhc011bHRpcGxlRGF0YXBvaW50c1wiXG4gICAgW2lzTG9hZGluZ109XCJpc0xvYWRpbmckIHwgYXN5bmNcIlxuICAgIFtzZXJpZXNXaXRob3V0UGVybWlzc2lvblRvUmVhZENvdW50XT1cInNlcmllc1dpdGhvdXRQZXJtaXNzaW9uVG9SZWFkPy5sZW5ndGhcIlxuICAgIChpc1Njcm9sbGluZyk9XCJvblNjcm9sbGluZygkZXZlbnQpXCJcbiAgPjwvYzh5LWRhdGFwb2ludHMtdGFibGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -2,14 +2,12 @@ import { gettext } from '@c8y/ngx-components';
2
2
  import { TIME_RANGE_INTERVAL_UNITS_VALUES } from '@c8y/ngx-components/datapoints-export-selector';
3
3
  export const DEFAULT_COUNTDOWN_VALUE = 30_000;
4
4
  export const DATE_SELECTION_VALUES = {
5
- // Will be uncommented in MTM-61920
6
- // dashboard_context: 'dashboard_context',
5
+ dashboard_context: 'dashboard_context',
7
6
  config: 'config',
8
7
  view_and_config: 'view_and_config'
9
8
  };
10
9
  export const DATE_SELECTION_VALUES_ARR = [
11
- // Will be uncommented in MTM-61920
12
- // DATE_SELECTION_VALUES.dashboard_context,
10
+ DATE_SELECTION_VALUES.dashboard_context,
13
11
  DATE_SELECTION_VALUES.config,
14
12
  DATE_SELECTION_VALUES.view_and_config
15
13
  ];
@@ -73,4 +71,4 @@ export const DURATION_OPTIONS = [
73
71
  },
74
72
  { id: TIME_RANGE_INTERVAL_UNITS_VALUES.custom, label: TIME_RANGE_INTERVAL_LABELS.custom }
75
73
  ];
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakUsT0FBTyxFQUdMLGdDQUFnQyxFQUdqQyxNQUFNLGdEQUFnRCxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztBQWtDOUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsbUNBQW1DO0lBQ25DLDBDQUEwQztJQUMxQyxNQUFNLEVBQUUsUUFBUTtJQUNoQixlQUFlLEVBQUUsaUJBQWlCO0NBQzFCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxtQ0FBbUM7SUFDbkMsMkNBQTJDO0lBQzNDLHFCQUFxQixDQUFDLE1BQU07SUFDNUIscUJBQXFCLENBQUMsZUFBZTtDQUM3QixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBMkI7SUFDakUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBc0M7SUFDaEcsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixDQUEyQjtDQUNwRSxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFbkYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFDcEMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQWM7SUFDcEMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQVc7Q0FDdkIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLGdDQUFnQyxDQUFDLE9BQU87SUFDeEMsZ0NBQWdDLENBQUMsS0FBSztJQUN0QyxnQ0FBZ0MsQ0FBQyxJQUFJO0lBQ3JDLGdDQUFnQyxDQUFDLEtBQUs7SUFDdEMsZ0NBQWdDLENBQUMsTUFBTTtJQUN2QyxnQ0FBZ0MsQ0FBQyxNQUFNO0NBQy9CLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRztJQUN4QyxPQUFPLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBa0I7SUFDaEQsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQWdCO0lBQzFDLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFlO0lBQ3ZDLEtBQUssRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFnQjtJQUMxQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBaUI7SUFDN0MsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQWE7Q0FDN0IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLE9BQU87UUFDNUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLE9BQU87UUFDekMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLE9BQU87UUFDOUMsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDMUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLEtBQUs7UUFDdkMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDNUMsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLElBQUk7UUFDekMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLElBQUk7UUFDdEMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLElBQUk7UUFDM0MsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDMUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDLEtBQUs7UUFDdkMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLEtBQUs7UUFDNUMsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNEO1FBQ0UsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLE1BQU07UUFDM0MsS0FBSyxFQUFFLDBCQUEwQixDQUFDLE1BQU07UUFDeEMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLE1BQU07UUFDN0MsTUFBTSxFQUFFLENBQUM7S0FDVjtJQUNELEVBQUUsRUFBRSxFQUFFLGdDQUFnQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsMEJBQTBCLENBQUMsTUFBTSxFQUFFO0NBQzFGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRmV0Y2hSZXNwb25zZSwgSVNlcmllcyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uT3B0aW9uLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBLUElEZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHtcbiAgTWluTWF4VmFsdWVzLFxuICBTb3VyY2VJZCxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMsXG4gIFRpbWVSYW5nZUludGVydmFsLFxuICBUaW1lU3RhbXBcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnRzLWV4cG9ydC1zZWxlY3Rvcic7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPVU5URE9XTl9WQUxVRSA9IDMwXzAwMDtcblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50VGFibGVNYXBLZXkgPSBgJHtUaW1lU3RhbXB9XyR7RGV2aWNlTmFtZX1gO1xuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWFwcGluZyB3aGVyZSB0aGUga2V5IGlzIGEgZGF0YXBvaW50IGlkZW50aWZpZXIgY29udGFpbmluZyB0aGUgZGF0ZSBhbmQgZGV2aWNlIG5hbWUsIGFuZCB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgZGF0YSBwb2ludCB0YWJsZSBpdGVtcyBvciBudWxsLlxuICovXG5leHBvcnQgdHlwZSBEYXRhUG9pbnRzVGFibGVNYXAgPSBNYXA8RGF0YXBvaW50VGFibGVNYXBLZXksIChEYXRhcG9pbnRUYWJsZUl0ZW0gfCBudWxsKVtdPjtcblxudHlwZSBEZXZpY2VOYW1lID0gc3RyaW5nO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtYXAgb2YgZGF0YXBvaW50cyBzZXJpZXMgZGF0YS5cbiAqIFRoZSBrZXkgb2YgdGhlIG1hcCBpcyBhIHNvdXJjZSwgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgZGF0YSBmb3IgcmVxdWVzdGVkIHNlcmllcy5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YXBvaW50c1Nlcmllc0RhdGFNYXAgPSBNYXA8U291cmNlSWQsIElTZXJpZXM+O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHdoaWNoIHZhbHVlcyB3aWxsIGJlIGRpc3BsYXllZCBhcyB2YWx1ZXMgZm9yIGRhdGFwb2ludHMuXG4gKiBlLmcuIGlmIHVzZXIgY2hvc2UgJ21pbicsIG9ubHkgdGhlIG1pbmltdW0gdmFsdWVzIHdpbGwgYmUgZGlzcGxheWVkLlxuICovXG5leHBvcnQgdHlwZSBSZW5kZXJUeXBlID0ga2V5b2YgdHlwZW9mIFJFTkRFUl9UWVBFU19MQUJFTFM7XG4vKipcbiAqIFJlcHJlc2VudHMgYW4gb2JqZWN0IHdoZXJlIGtleSBpcyBhIHRpbWVzdGFtcCBhbmQgdmFsdWUgaXMgYW4gYXJyYXlcbiAqIHdoZXJlIGZpcnN0IHJlY29yZCBjb250YWlucyBtaW4gYW5kIG1heCB2YWx1ZXMgZm9yIGEgY29ycmVzcG9uZGluZyB0aW1lc3RhbXAuXG4gKi9cbmV4cG9ydCB0eXBlIE1lYXN1cmVtZW50UmFuZ2VzID0ge1xuICBba2V5OiBUaW1lU3RhbXBdOiBBcnJheTxNaW5NYXhWYWx1ZXM+O1xufTtcbi8qKlxuICogUmVwcmVzZW50cyBhIHZhbHVlIG9iamVjdCB3aGVyZSBrZXkgaXMgYW4gb2JqZWN0IHdpdGggbWluIGFuZCBtYXggcHJvcGVydGllcyB3aXRoIGl0cyBjb3JyZXNwb25kaW5nIHZhbHVlcy5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsdWUgPSB7XG4gIFtrZXkgaW4ga2V5b2YgTWluTWF4VmFsdWVzXTogbnVtYmVyO1xufTtcblxuZXhwb3J0IGNvbnN0IERBVEVfU0VMRUNUSU9OX1ZBTFVFUyA9IHtcbiAgLy8gV2lsbCBiZSB1bmNvbW1lbnRlZCBpbiBNVE0tNjE5MjBcbiAgLy8gZGFzaGJvYXJkX2NvbnRleHQ6ICdkYXNoYm9hcmRfY29udGV4dCcsXG4gIGNvbmZpZzogJ2NvbmZpZycsXG4gIHZpZXdfYW5kX2NvbmZpZzogJ3ZpZXdfYW5kX2NvbmZpZydcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NFTEVDVElPTl9WQUxVRVNfQVJSID0gW1xuICAvLyBXaWxsIGJlIHVuY29tbWVudGVkIGluIE1UTS02MTkyMFxuICAvLyBEQVRFX1NFTEVDVElPTl9WQUxVRVMuZGFzaGJvYXJkX2NvbnRleHQsXG4gIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy5jb25maWcsXG4gIERBVEVfU0VMRUNUSU9OX1ZBTFVFUy52aWV3X2FuZF9jb25maWdcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NFTEVDVElPTl9MQUJFTFMgPSB7XG4gIGNvbmZpZzogZ2V0dGV4dCgnV2lkZ2V0IGNvbmZpZ3VyYXRpb24nKSBhcyAnV2lkZ2V0IGNvbmZpZ3VyYXRpb24nLFxuICB2aWV3X2FuZF9jb25maWc6IGdldHRleHQoJ1dpZGdldCBhbmQgd2lkZ2V0IGNvbmZpZ3VyYXRpb24nKSBhcyAnV2lkZ2V0IGFuZCB3aWRnZXQgY29uZmlndXJhdGlvbicsXG4gIGRhc2hib2FyZF9jb250ZXh0OiBnZXR0ZXh0KCdEYXNoYm9hcmQgdGltZSByYW5nZScpIGFzICdEYXNoYm9hcmQgdGltZSByYW5nZSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBSRUZSRVNIX0lOVEVSVkFMX1ZBTFVFU19BUlIgPSBbNV8wMDAsIDEwXzAwMCwgMTVfMDAwLCAzMF8wMDAsIDYwXzAwMF07XG5cbmV4cG9ydCBjb25zdCBSRU5ERVJfVFlQRVNfTEFCRUxTID0ge1xuICBtaW46IGdldHRleHQoJ01pbmltdW0nKSBhcyAnTWluaW11bScsXG4gIG1heDogZ2V0dGV4dCgnTWF4aW11bScpIGFzICdNYXhpbXVtJyxcbiAgYXJlYTogZ2V0dGV4dCgnQXJlYScpIGFzICdBcmVhJ1xufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IElOVEVSVkFMX1ZBTFVFU19BUlIgPSBbXG4gIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1pbnV0ZXMsXG4gIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmhvdXJzLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5kYXlzLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy53ZWVrcyxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMubW9udGhzLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5jdXN0b21cbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUyA9IHtcbiAgbWludXRlczogZ2V0dGV4dCgnTGFzdCBtaW51dGUnKSBhcyAnTGFzdCBtaW51dGUnLFxuICBob3VyczogZ2V0dGV4dCgnTGFzdCBob3VyJykgYXMgJ0xhc3QgaG91cicsXG4gIGRheXM6IGdldHRleHQoJ0xhc3QgZGF5JykgYXMgJ0xhc3QgZGF5JyxcbiAgd2Vla3M6IGdldHRleHQoJ0xhc3Qgd2VlaycpIGFzICdMYXN0IHdlZWsnLFxuICBtb250aHM6IGdldHRleHQoJ0xhc3QgbW9udGgnKSBhcyAnTGFzdCBtb250aCcsXG4gIGN1c3RvbTogZ2V0dGV4dCgnQ3VzdG9tJykgYXMgJ0N1c3RvbSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBEVVJBVElPTl9PUFRJT05TID0gW1xuICB7XG4gICAgaWQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1pbnV0ZXMsXG4gICAgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLm1pbnV0ZXMsXG4gICAgdW5pdDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMubWludXRlcyxcbiAgICBhbW91bnQ6IDFcbiAgfSxcbiAge1xuICAgIGlkOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5ob3VycyxcbiAgICBsYWJlbDogVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFMuaG91cnMsXG4gICAgdW5pdDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuaG91cnMsXG4gICAgYW1vdW50OiAxXG4gIH0sXG4gIHtcbiAgICBpZDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuZGF5cyxcbiAgICBsYWJlbDogVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFMuZGF5cyxcbiAgICB1bml0OiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5kYXlzLFxuICAgIGFtb3VudDogMVxuICB9LFxuICB7XG4gICAgaWQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLndlZWtzLFxuICAgIGxhYmVsOiBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUy53ZWVrcyxcbiAgICB1bml0OiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy53ZWVrcyxcbiAgICBhbW91bnQ6IDFcbiAgfSxcbiAge1xuICAgIGlkOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5tb250aHMsXG4gICAgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLm1vbnRocyxcbiAgICB1bml0OiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5tb250aHMsXG4gICAgYW1vdW50OiAxXG4gIH0sXG4gIHsgaWQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmN1c3RvbSwgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLmN1c3RvbSB9XG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yUmFuZ2VCb3VuZGFyaWVzIHtcbiAgeWVsbG93UmFuZ2VNaW46IG51bWJlcjtcbiAgeWVsbG93UmFuZ2VNYXg6IG51bWJlcjtcbiAgcmVkUmFuZ2VNaW46IG51bWJlcjtcbiAgcmVkUmFuZ2VNYXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhcG9pbnRXaXRoVmFsdWVzIGV4dGVuZHMgS1BJRGV0YWlscyB7XG4gIHNlcmllc1VuaXQ/OiBzdHJpbmc7XG4gIHZhbHVlczogTWVhc3VyZW1lbnRSYW5nZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYXRpb24ge1xuICBpZDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICB1bml0Pzogc3RyaW5nO1xuICBhbW91bnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW5IZWFkZXIge1xuICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHJlbmRlclR5cGU6IHN0cmluZztcbiAgdW5pdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVSYW5nZSB7XG4gIGRhdGVGcm9tOiBzdHJpbmc7XG4gIGRhdGVUbzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFwb2ludHNUYWJsZUNvbmZpZyB7XG4gIGFnZ3JlZ2F0aW9uPzogQWdncmVnYXRpb25PcHRpb247XG4gIGNvbnRleHQ/OiBudW1iZXI7XG4gIGRhdGFwb2ludHM6IEtQSURldGFpbHNbXTtcbiAgLyoqXG4gICAqIEFycmF5IHRoYXQgY29udGFpbnMgZ2xvYmFsIHRpbWUgY29udGV4dCBkYXRlRnJvbSBhbmQgZGF0ZVRvLlxuICAgKi9cbiAgZGF0ZT86IHN0cmluZ1tdO1xuICBkYXRlRnJvbTogc3RyaW5nO1xuICBkYXRlVG86IHN0cmluZztcbiAgZGVjaW1hbFBsYWNlcz86IG51bWJlcjtcbiAgZGlzcGxheURhdGVTZWxlY3Rpb246IGJvb2xlYW47XG4gIGRpc3BsYXlTZXR0aW5nczoge1xuICAgIGdsb2JhbFRpbWVDb250ZXh0OiBib29sZWFuO1xuICAgIGdsb2JhbFJlYWx0aW1lQ29udGV4dDogYm9vbGVhbjtcbiAgICBnbG9iYWxBZ2dyZWdhdGlvbkNvbnRleHQ6IGJvb2xlYW47XG4gIH07XG4gIGludGVydmFsOiBUaW1lUmFuZ2VJbnRlcnZhbDtcbiAgaXNBdXRvUmVmcmVzaEVuYWJsZWQ6IGJvb2xlYW47XG4gIHJlYWx0aW1lOiBib29sZWFuO1xuICByZWZyZXNoSW50ZXJ2YWw/OiBudW1iZXI7XG4gIHNlbGVjdGVkOiBvYmplY3Q7XG4gIHdpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXBvaW50VGFibGVJdGVtIHtcbiAgZGF0ZUFuZFRpbWU6IHN0cmluZztcbiAgZGV2aWNlTmFtZTogc3RyaW5nO1xuICBmcmFnbWVudDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICByZWRSYW5nZU1heD86IG51bWJlcjtcbiAgcmVkUmFuZ2VNaW4/OiBudW1iZXI7XG4gIHJlbmRlclR5cGU6IHN0cmluZztcbiAgc2VyaWVzOiBzdHJpbmc7XG4gIHZhbHVlOiBWYWx1ZTtcbiAgeWVsbG93UmFuZ2VNYXg/OiBudW1iZXI7XG4gIHllbGxvd1JhbmdlTWluPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW0ge1xuICBkYXRlQW5kVGltZTogc3RyaW5nO1xuICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gIHJvd0l0ZW1zOiAoe1xuICAgIGZyYWdtZW50OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICByZWRSYW5nZU1heD86IG51bWJlcjtcbiAgICByZWRSYW5nZU1pbj86IG51bWJlcjtcbiAgICByZW5kZXJUeXBlOiBzdHJpbmc7XG4gICAgc2VyaWVzOiBzdHJpbmc7XG4gICAgdmFsdWU6IFZhbHVlO1xuICAgIHllbGxvd1JhbmdlTWF4PzogbnVtYmVyO1xuICAgIHllbGxvd1JhbmdlTWluPzogbnVtYmVyO1xuICB9IHwgbnVsbClbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpZXNEYXRhV2l0aFJlc3BvbnNlIHtcbiAgc291cmNlOiBTb3VyY2VJZDtcbiAgZGF0YTogSVNlcmllcztcbiAgcmVzOiBJRmV0Y2hSZXNwb25zZTtcbn1cbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy10YWJsZS13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLXRhYmxlL2RhdGFwb2ludHMtdGFibGUtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBcUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFakUsT0FBTyxFQUdMLGdDQUFnQyxFQUdqQyxNQUFNLGdEQUFnRCxDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQztBQWtDOUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUc7SUFDbkMsaUJBQWlCLEVBQUUsbUJBQW1CO0lBQ3RDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLGVBQWUsRUFBRSxpQkFBaUI7Q0FDMUIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3ZDLHFCQUFxQixDQUFDLGlCQUFpQjtJQUN2QyxxQkFBcUIsQ0FBQyxNQUFNO0lBQzVCLHFCQUFxQixDQUFDLGVBQWU7Q0FDN0IsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLE1BQU0sRUFBRSxPQUFPLENBQUMsc0JBQXNCLENBQTJCO0lBQ2pFLGVBQWUsRUFBRSxPQUFPLENBQUMsaUNBQWlDLENBQXNDO0lBQ2hHLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBMkI7Q0FDcEUsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRW5GLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLEdBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFjO0lBQ3BDLEdBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFjO0lBQ3BDLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFXO0NBQ3ZCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxnQ0FBZ0MsQ0FBQyxPQUFPO0lBQ3hDLGdDQUFnQyxDQUFDLEtBQUs7SUFDdEMsZ0NBQWdDLENBQUMsSUFBSTtJQUNyQyxnQ0FBZ0MsQ0FBQyxLQUFLO0lBQ3RDLGdDQUFnQyxDQUFDLE1BQU07SUFDdkMsZ0NBQWdDLENBQUMsTUFBTTtDQUMvQixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQWtCO0lBQ2hELEtBQUssRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFnQjtJQUMxQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBZTtJQUN2QyxLQUFLLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBZ0I7SUFDMUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQWlCO0lBQzdDLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFhO0NBQzdCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QjtRQUNFLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxPQUFPO1FBQzVDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxPQUFPO1FBQ3pDLElBQUksRUFBRSxnQ0FBZ0MsQ0FBQyxPQUFPO1FBQzlDLE1BQU0sRUFBRSxDQUFDO0tBQ1Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxLQUFLO1FBQzFDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxLQUFLO1FBQ3ZDLElBQUksRUFBRSxnQ0FBZ0MsQ0FBQyxLQUFLO1FBQzVDLE1BQU0sRUFBRSxDQUFDO0tBQ1Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxJQUFJO1FBQ3pDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxJQUFJO1FBQ3RDLElBQUksRUFBRSxnQ0FBZ0MsQ0FBQyxJQUFJO1FBQzNDLE1BQU0sRUFBRSxDQUFDO0tBQ1Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxLQUFLO1FBQzFDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxLQUFLO1FBQ3ZDLElBQUksRUFBRSxnQ0FBZ0MsQ0FBQyxLQUFLO1FBQzVDLE1BQU0sRUFBRSxDQUFDO0tBQ1Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxNQUFNO1FBQzNDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQyxNQUFNO1FBQ3hDLElBQUksRUFBRSxnQ0FBZ0MsQ0FBQyxNQUFNO1FBQzdDLE1BQU0sRUFBRSxDQUFDO0tBQ1Y7SUFDRCxFQUFFLEVBQUUsRUFBRSxnQ0FBZ0MsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixDQUFDLE1BQU0sRUFBRTtDQUMxRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUZldGNoUmVzcG9uc2UsIElTZXJpZXMgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbk9wdGlvbiwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgS1BJRGV0YWlscyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50LXNlbGVjdG9yJztcbmltcG9ydCB7XG4gIE1pbk1heFZhbHVlcyxcbiAgU291cmNlSWQsXG4gIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLFxuICBUaW1lUmFuZ2VJbnRlcnZhbCxcbiAgVGltZVN0YW1wXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZGF0YXBvaW50cy1leHBvcnQtc2VsZWN0b3InO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT1VOVERPV05fVkFMVUUgPSAzMF8wMDA7XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludFRhYmxlTWFwS2V5ID0gYCR7VGltZVN0YW1wfV8ke0RldmljZU5hbWV9YDtcbi8qKlxuICogUmVwcmVzZW50cyBhIG1hcHBpbmcgd2hlcmUgdGhlIGtleSBpcyBhIGRhdGFwb2ludCBpZGVudGlmaWVyIGNvbnRhaW5pbmcgdGhlIGRhdGUgYW5kIGRldmljZSBuYW1lLCBhbmQgdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIGRhdGEgcG9pbnQgdGFibGUgaXRlbXMgb3IgbnVsbC5cbiAqL1xuZXhwb3J0IHR5cGUgRGF0YVBvaW50c1RhYmxlTWFwID0gTWFwPERhdGFwb2ludFRhYmxlTWFwS2V5LCAoRGF0YXBvaW50VGFibGVJdGVtIHwgbnVsbClbXT47XG5cbnR5cGUgRGV2aWNlTmFtZSA9IHN0cmluZztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWFwIG9mIGRhdGFwb2ludHMgc2VyaWVzIGRhdGEuXG4gKiBUaGUga2V5IG9mIHRoZSBtYXAgaXMgYSBzb3VyY2UsIGFuZCB0aGUgdmFsdWUgaXMgdGhlIGRhdGEgZm9yIHJlcXVlc3RlZCBzZXJpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIERhdGFwb2ludHNTZXJpZXNEYXRhTWFwID0gTWFwPFNvdXJjZUlkLCBJU2VyaWVzPjtcbi8qKlxuICogRGV0ZXJtaW5lcyB3aGljaCB2YWx1ZXMgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgdmFsdWVzIGZvciBkYXRhcG9pbnRzLlxuICogZS5nLiBpZiB1c2VyIGNob3NlICdtaW4nLCBvbmx5IHRoZSBtaW5pbXVtIHZhbHVlcyB3aWxsIGJlIGRpc3BsYXllZC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyVHlwZSA9IGtleW9mIHR5cGVvZiBSRU5ERVJfVFlQRVNfTEFCRUxTO1xuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG9iamVjdCB3aGVyZSBrZXkgaXMgYSB0aW1lc3RhbXAgYW5kIHZhbHVlIGlzIGFuIGFycmF5XG4gKiB3aGVyZSBmaXJzdCByZWNvcmQgY29udGFpbnMgbWluIGFuZCBtYXggdmFsdWVzIGZvciBhIGNvcnJlc3BvbmRpbmcgdGltZXN0YW1wLlxuICovXG5leHBvcnQgdHlwZSBNZWFzdXJlbWVudFJhbmdlcyA9IHtcbiAgW2tleTogVGltZVN0YW1wXTogQXJyYXk8TWluTWF4VmFsdWVzPjtcbn07XG4vKipcbiAqIFJlcHJlc2VudHMgYSB2YWx1ZSBvYmplY3Qgd2hlcmUga2V5IGlzIGFuIG9iamVjdCB3aXRoIG1pbiBhbmQgbWF4IHByb3BlcnRpZXMgd2l0aCBpdHMgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFZhbHVlID0ge1xuICBba2V5IGluIGtleW9mIE1pbk1heFZhbHVlc106IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBEQVRFX1NFTEVDVElPTl9WQUxVRVMgPSB7XG4gIGRhc2hib2FyZF9jb250ZXh0OiAnZGFzaGJvYXJkX2NvbnRleHQnLFxuICBjb25maWc6ICdjb25maWcnLFxuICB2aWV3X2FuZF9jb25maWc6ICd2aWV3X2FuZF9jb25maWcnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgREFURV9TRUxFQ1RJT05fVkFMVUVTX0FSUiA9IFtcbiAgREFURV9TRUxFQ1RJT05fVkFMVUVTLmRhc2hib2FyZF9jb250ZXh0LFxuICBEQVRFX1NFTEVDVElPTl9WQUxVRVMuY29uZmlnLFxuICBEQVRFX1NFTEVDVElPTl9WQUxVRVMudmlld19hbmRfY29uZmlnXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgREFURV9TRUxFQ1RJT05fTEFCRUxTID0ge1xuICBjb25maWc6IGdldHRleHQoJ1dpZGdldCBjb25maWd1cmF0aW9uJykgYXMgJ1dpZGdldCBjb25maWd1cmF0aW9uJyxcbiAgdmlld19hbmRfY29uZmlnOiBnZXR0ZXh0KCdXaWRnZXQgYW5kIHdpZGdldCBjb25maWd1cmF0aW9uJykgYXMgJ1dpZGdldCBhbmQgd2lkZ2V0IGNvbmZpZ3VyYXRpb24nLFxuICBkYXNoYm9hcmRfY29udGV4dDogZ2V0dGV4dCgnRGFzaGJvYXJkIHRpbWUgcmFuZ2UnKSBhcyAnRGFzaGJvYXJkIHRpbWUgcmFuZ2UnXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgUkVGUkVTSF9JTlRFUlZBTF9WQUxVRVNfQVJSID0gWzVfMDAwLCAxMF8wMDAsIDE1XzAwMCwgMzBfMDAwLCA2MF8wMDBdO1xuXG5leHBvcnQgY29uc3QgUkVOREVSX1RZUEVTX0xBQkVMUyA9IHtcbiAgbWluOiBnZXR0ZXh0KCdNaW5pbXVtJykgYXMgJ01pbmltdW0nLFxuICBtYXg6IGdldHRleHQoJ01heGltdW0nKSBhcyAnTWF4aW11bScsXG4gIGFyZWE6IGdldHRleHQoJ0FyZWEnKSBhcyAnQXJlYSdcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBJTlRFUlZBTF9WQUxVRVNfQVJSID0gW1xuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5taW51dGVzLFxuICBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5ob3VycyxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuZGF5cyxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMud2Vla3MsXG4gIFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1vbnRocyxcbiAgVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuY3VzdG9tXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFMgPSB7XG4gIG1pbnV0ZXM6IGdldHRleHQoJ0xhc3QgbWludXRlJykgYXMgJ0xhc3QgbWludXRlJyxcbiAgaG91cnM6IGdldHRleHQoJ0xhc3QgaG91cicpIGFzICdMYXN0IGhvdXInLFxuICBkYXlzOiBnZXR0ZXh0KCdMYXN0IGRheScpIGFzICdMYXN0IGRheScsXG4gIHdlZWtzOiBnZXR0ZXh0KCdMYXN0IHdlZWsnKSBhcyAnTGFzdCB3ZWVrJyxcbiAgbW9udGhzOiBnZXR0ZXh0KCdMYXN0IG1vbnRoJykgYXMgJ0xhc3QgbW9udGgnLFxuICBjdXN0b206IGdldHRleHQoJ0N1c3RvbScpIGFzICdDdXN0b20nXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgRFVSQVRJT05fT1BUSU9OUyA9IFtcbiAge1xuICAgIGlkOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5taW51dGVzLFxuICAgIGxhYmVsOiBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUy5taW51dGVzLFxuICAgIHVuaXQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLm1pbnV0ZXMsXG4gICAgYW1vdW50OiAxXG4gIH0sXG4gIHtcbiAgICBpZDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuaG91cnMsXG4gICAgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLmhvdXJzLFxuICAgIHVuaXQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmhvdXJzLFxuICAgIGFtb3VudDogMVxuICB9LFxuICB7XG4gICAgaWQ6IFRJTUVfUkFOR0VfSU5URVJWQUxfVU5JVFNfVkFMVUVTLmRheXMsXG4gICAgbGFiZWw6IFRJTUVfUkFOR0VfSU5URVJWQUxfTEFCRUxTLmRheXMsXG4gICAgdW5pdDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMuZGF5cyxcbiAgICBhbW91bnQ6IDFcbiAgfSxcbiAge1xuICAgIGlkOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy53ZWVrcyxcbiAgICBsYWJlbDogVElNRV9SQU5HRV9JTlRFUlZBTF9MQUJFTFMud2Vla3MsXG4gICAgdW5pdDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMud2Vla3MsXG4gICAgYW1vdW50OiAxXG4gIH0sXG4gIHtcbiAgICBpZDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMubW9udGhzLFxuICAgIGxhYmVsOiBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUy5tb250aHMsXG4gICAgdW5pdDogVElNRV9SQU5HRV9JTlRFUlZBTF9VTklUU19WQUxVRVMubW9udGhzLFxuICAgIGFtb3VudDogMVxuICB9LFxuICB7IGlkOiBUSU1FX1JBTkdFX0lOVEVSVkFMX1VOSVRTX1ZBTFVFUy5jdXN0b20sIGxhYmVsOiBUSU1FX1JBTkdFX0lOVEVSVkFMX0xBQkVMUy5jdXN0b20gfVxuXTtcblxuZXhwb3J0IGludGVyZmFjZSBDb2xvclJhbmdlQm91bmRhcmllcyB7XG4gIHllbGxvd1JhbmdlTWluOiBudW1iZXI7XG4gIHllbGxvd1JhbmdlTWF4OiBudW1iZXI7XG4gIHJlZFJhbmdlTWluOiBudW1iZXI7XG4gIHJlZFJhbmdlTWF4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXBvaW50V2l0aFZhbHVlcyBleHRlbmRzIEtQSURldGFpbHMge1xuICBzZXJpZXNVbml0Pzogc3RyaW5nO1xuICB2YWx1ZXM6IE1lYXN1cmVtZW50UmFuZ2VzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER1cmF0aW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdW5pdD86IHN0cmluZztcbiAgYW1vdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uSGVhZGVyIHtcbiAgZGV2aWNlTmFtZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICByZW5kZXJUeXBlOiBzdHJpbmc7XG4gIHVuaXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRlUmFuZ2Uge1xuICBkYXRlRnJvbTogc3RyaW5nO1xuICBkYXRlVG86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhcG9pbnRzVGFibGVDb25maWcge1xuICBhZ2dyZWdhdGlvbj86IEFnZ3JlZ2F0aW9uT3B0aW9uO1xuICBjb250ZXh0PzogbnVtYmVyO1xuICBkYXRhcG9pbnRzOiBLUElEZXRhaWxzW107XG4gIC8qKlxuICAgKiBBcnJheSB0aGF0IGNvbnRhaW5zIGdsb2JhbCB0aW1lIGNvbnRleHQgZGF0ZUZyb20gYW5kIGRhdGVUby5cbiAgICovXG4gIGRhdGU/OiBzdHJpbmdbXTtcbiAgZGF0ZUZyb206IHN0cmluZztcbiAgZGF0ZVRvOiBzdHJpbmc7XG4gIGRlY2ltYWxQbGFjZXM/OiBudW1iZXI7XG4gIGRpc3BsYXlEYXRlU2VsZWN0aW9uOiBib29sZWFuO1xuICBkaXNwbGF5U2V0dGluZ3M6IHtcbiAgICBnbG9iYWxUaW1lQ29udGV4dDogYm9vbGVhbjtcbiAgICBnbG9iYWxSZWFsdGltZUNvbnRleHQ6IGJvb2xlYW47XG4gICAgZ2xvYmFsQWdncmVnYXRpb25Db250ZXh0OiBib29sZWFuO1xuICAgIGdsb2JhbEF1dG9SZWZyZXNoQ29udGV4dDogYm9vbGVhbjtcbiAgfTtcbiAgaW50ZXJ2YWw6IFRpbWVSYW5nZUludGVydmFsO1xuICBpc0F1dG9SZWZyZXNoRW5hYmxlZDogYm9vbGVhbjtcbiAgcmVhbHRpbWU6IGJvb2xlYW47XG4gIHJlZnJlc2hJbnRlcnZhbD86IG51bWJlcjtcbiAgc2VsZWN0ZWQ6IG9iamVjdDtcbiAgd2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dDogYm9vbGVhbjtcbiAgd2lkZ2V0SW5zdGFuY2VHbG9iYWxBdXRvUmVmcmVzaENvbnRleHQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXBvaW50VGFibGVJdGVtIHtcbiAgZGF0ZUFuZFRpbWU6IHN0cmluZztcbiAgZGV2aWNlTmFtZTogc3RyaW5nO1xuICBmcmFnbWVudDogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICByZWRSYW5nZU1heD86IG51bWJlcjtcbiAgcmVkUmFuZ2VNaW4/OiBudW1iZXI7XG4gIHJlbmRlclR5cGU6IHN0cmluZztcbiAgc2VyaWVzOiBzdHJpbmc7XG4gIHZhbHVlOiBWYWx1ZTtcbiAgeWVsbG93UmFuZ2VNYXg/OiBudW1iZXI7XG4gIHllbGxvd1JhbmdlTWluPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZWREYXRhcG9pbnRUYWJsZUl0ZW0ge1xuICBkYXRlQW5kVGltZTogc3RyaW5nO1xuICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gIHJvd0l0ZW1zOiAoe1xuICAgIGZyYWdtZW50OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICByZWRSYW5nZU1heD86IG51bWJlcjtcbiAgICByZWRSYW5nZU1pbj86IG51bWJlcjtcbiAgICByZW5kZXJUeXBlOiBzdHJpbmc7XG4gICAgc2VyaWVzOiBzdHJpbmc7XG4gICAgdmFsdWU6IFZhbHVlO1xuICAgIHllbGxvd1JhbmdlTWF4PzogbnVtYmVyO1xuICAgIHllbGxvd1JhbmdlTWluPzogbnVtYmVyO1xuICB9IHwgbnVsbClbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJpZXNEYXRhV2l0aFJlc3BvbnNlIHtcbiAgc291cmNlOiBTb3VyY2VJZDtcbiAgZGF0YTogSVNlcmllcztcbiAgcmVzOiBJRmV0Y2hSZXNwb25zZTtcbn1cbiJdfQ==