@c8y/ngx-components 1021.67.0 → 1021.70.1
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.
- package/core/common/bytes.pipe.d.ts +26 -10
- package/core/common/bytes.pipe.d.ts.map +1 -1
- package/echart/charts.component.d.ts +14 -3
- package/echart/charts.component.d.ts.map +1 -1
- package/esm2022/core/common/bytes.pipe.mjs +47 -18
- package/esm2022/core/data-grid/data-grid.component.mjs +3 -3
- package/esm2022/echart/charts.component.mjs +50 -3
- package/esm2022/messaging-management/api/model/backlogQuota.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespace.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceDetails.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceList.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespacePolicies.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespacePublishers.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceSubscribers.mjs +2 -0
- package/esm2022/messaging-management/api/model/namespaceTopics.mjs +2 -0
- package/esm2022/messaging-management/api/model/pageStatistics.mjs +2 -0
- package/esm2022/messaging-management/api/model/pageable.mjs +2 -0
- package/esm2022/messaging-management/api/model/sortable.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriber.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriberFilters.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriberList.mjs +2 -0
- package/esm2022/messaging-management/api/model/subscriberToDelete.mjs +2 -0
- package/esm2022/messaging-management/api/model/topic.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicDetailFilters.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicList.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicListFilters.mjs +2 -0
- package/esm2022/messaging-management/api/model/topicType.mjs +9 -0
- package/esm2022/messaging-management/api/services/messaging-namespaces.service.mjs +83 -0
- package/esm2022/messaging-management/api/services/messaging-subscribers.service.mjs +55 -0
- package/esm2022/messaging-management/api/services/messaging-topics.service.mjs +48 -0
- package/esm2022/messaging-management/c8y-ngx-components-messaging-management.mjs +5 -0
- package/esm2022/messaging-management/constants.mjs +4 -0
- package/esm2022/messaging-management/index.mjs +2 -0
- package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.mjs +43 -0
- package/esm2022/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.mjs +36 -0
- package/esm2022/messaging-management/messaging/namespace-list/namespace-list.component.mjs +51 -0
- package/esm2022/messaging-management/messaging/shared/usage/usage.component.mjs +68 -0
- package/esm2022/messaging-management/messaging/topic/topic-list-view.component.mjs +81 -0
- package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.mjs +220 -0
- package/esm2022/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.mjs +137 -0
- package/esm2022/messaging-management/messaging/topic/topics-data-grid.service.mjs +113 -0
- package/esm2022/messaging-management/messaging-management.guard.mjs +40 -0
- package/esm2022/messaging-management/messaging-management.module.mjs +72 -0
- package/esm2022/messaging-management/navigator/messaging-navigator-factory.mjs +55 -0
- package/esm2022/messaging-management/navigator/topic-details-tab.factory.mjs +33 -0
- package/esm2022/messaging-management/utils/backlog-quota-limit.pipe.mjs +32 -0
- package/esm2022/messaging-management/utils/namespace-props.mjs +23 -0
- package/esm2022/messaging-management/utils/time-to-live.pipe.mjs +122 -0
- package/esm2022/operations/device-selector/device-selector.component.mjs +5 -1
- package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.mjs +18 -3
- package/fesm2022/c8y-ngx-components-echart.mjs +49 -2
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-messaging-management.mjs +1225 -0
- package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +4 -0
- package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +17 -2
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +49 -22
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +272 -5
- package/locales/es.po +271 -4
- package/locales/fr.po +272 -5
- package/locales/ja_JP.po +272 -5
- package/locales/ko.po +271 -4
- package/locales/locales.pot +240 -0
- package/locales/nl.po +271 -4
- package/locales/pl.po +271 -4
- package/locales/pt_BR.po +272 -5
- package/locales/zh_CN.po +271 -4
- package/locales/zh_TW.po +272 -5
- package/messaging-management/api/model/backlogQuota.d.ts +14 -0
- package/messaging-management/api/model/backlogQuota.d.ts.map +1 -0
- package/messaging-management/api/model/namespace.d.ts +13 -0
- package/messaging-management/api/model/namespace.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceDetails.d.ts +8 -0
- package/messaging-management/api/model/namespaceDetails.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceList.d.ts +5 -0
- package/messaging-management/api/model/namespaceList.d.ts.map +1 -0
- package/messaging-management/api/model/namespacePolicies.d.ts +10 -0
- package/messaging-management/api/model/namespacePolicies.d.ts.map +1 -0
- package/messaging-management/api/model/namespacePublishers.d.ts +4 -0
- package/messaging-management/api/model/namespacePublishers.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceSubscribers.d.ts +4 -0
- package/messaging-management/api/model/namespaceSubscribers.d.ts.map +1 -0
- package/messaging-management/api/model/namespaceTopics.d.ts +5 -0
- package/messaging-management/api/model/namespaceTopics.d.ts.map +1 -0
- package/messaging-management/api/model/pageStatistics.d.ts +12 -0
- package/messaging-management/api/model/pageStatistics.d.ts.map +1 -0
- package/messaging-management/api/model/pageable.d.ts +8 -0
- package/messaging-management/api/model/pageable.d.ts.map +1 -0
- package/messaging-management/api/model/sortable.d.ts +6 -0
- package/messaging-management/api/model/sortable.d.ts.map +1 -0
- package/messaging-management/api/model/subscriber.d.ts +28 -0
- package/messaging-management/api/model/subscriber.d.ts.map +1 -0
- package/messaging-management/api/model/subscriberFilters.d.ts +13 -0
- package/messaging-management/api/model/subscriberFilters.d.ts.map +1 -0
- package/messaging-management/api/model/subscriberList.d.ts +7 -0
- package/messaging-management/api/model/subscriberList.d.ts.map +1 -0
- package/messaging-management/api/model/subscriberToDelete.d.ts +12 -0
- package/messaging-management/api/model/subscriberToDelete.d.ts.map +1 -0
- package/messaging-management/api/model/topic.d.ts +52 -0
- package/messaging-management/api/model/topic.d.ts.map +1 -0
- package/messaging-management/api/model/topicDetailFilters.d.ts +9 -0
- package/messaging-management/api/model/topicDetailFilters.d.ts.map +1 -0
- package/messaging-management/api/model/topicList.d.ts +7 -0
- package/messaging-management/api/model/topicList.d.ts.map +1 -0
- package/messaging-management/api/model/topicListFilters.d.ts +12 -0
- package/messaging-management/api/model/topicListFilters.d.ts.map +1 -0
- package/messaging-management/api/model/topicType.d.ts +8 -0
- package/messaging-management/api/model/topicType.d.ts.map +1 -0
- package/messaging-management/api/services/messaging-namespaces.service.d.ts +52 -0
- package/messaging-management/api/services/messaging-namespaces.service.d.ts.map +1 -0
- package/messaging-management/api/services/messaging-subscribers.service.d.ts +30 -0
- package/messaging-management/api/services/messaging-subscribers.service.d.ts.map +1 -0
- package/messaging-management/api/services/messaging-topics.service.d.ts +21 -0
- package/messaging-management/api/services/messaging-topics.service.d.ts.map +1 -0
- package/messaging-management/c8y-ngx-components-messaging-management.d.ts.map +1 -0
- package/messaging-management/constants.d.ts +4 -0
- package/messaging-management/constants.d.ts.map +1 -0
- package/messaging-management/index.d.ts +2 -0
- package/messaging-management/index.d.ts.map +1 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts +29 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts +15 -0
- package/messaging-management/messaging/namespace-list/namespace-item/namespace-item.component.d.ts.map +1 -0
- package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts +17 -0
- package/messaging-management/messaging/namespace-list/namespace-list.component.d.ts.map +1 -0
- package/messaging-management/messaging/shared/usage/usage.component.d.ts +40 -0
- package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topic-list-view.component.d.ts +38 -0
- package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts +21 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts +52 -0
- package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -0
- package/messaging-management/messaging/topic/topics-data-grid.service.d.ts +13 -0
- package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -0
- package/messaging-management/messaging-management.guard.d.ts +12 -0
- package/messaging-management/messaging-management.guard.d.ts.map +1 -0
- package/messaging-management/messaging-management.module.d.ts +7 -0
- package/messaging-management/messaging-management.module.d.ts.map +1 -0
- package/messaging-management/navigator/messaging-navigator-factory.d.ts +18 -0
- package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -0
- package/messaging-management/navigator/topic-details-tab.factory.d.ts +15 -0
- package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -0
- package/messaging-management/utils/backlog-quota-limit.pipe.d.ts +13 -0
- package/messaging-management/utils/backlog-quota-limit.pipe.d.ts.map +1 -0
- package/messaging-management/utils/namespace-props.d.ts +10 -0
- package/messaging-management/utils/namespace-props.d.ts.map +1 -0
- package/messaging-management/utils/time-to-live.pipe.d.ts +16 -0
- package/messaging-management/utils/time-to-live.pipe.d.ts.map +1 -0
- package/operations/device-selector/device-selector.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts +2 -0
- package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -1
|
@@ -44,6 +44,8 @@ export class DatapointsGraphWidgetViewComponent {
|
|
|
44
44
|
this.hasAtLeastOneDatapointActive = true;
|
|
45
45
|
this.hasAtLeastOneAlarmActive = true;
|
|
46
46
|
this.isMarkedAreaEnabled = false;
|
|
47
|
+
this.loadedDatapoints = [];
|
|
48
|
+
this.loadedAlarmsOrEvents = [];
|
|
47
49
|
this.legendHelp = this.translate.instant(gettext(`<ul class="m-l-0 p-l-8 m-t-8 m-b-0">
|
|
48
50
|
<li>
|
|
49
51
|
<b>Visibility:</b>
|
|
@@ -76,6 +78,9 @@ export class DatapointsGraphWidgetViewComponent {
|
|
|
76
78
|
aggregation: this.displayConfig?.realtime ? null : this.displayConfig?.aggregation
|
|
77
79
|
};
|
|
78
80
|
}
|
|
81
|
+
this.loadedDatapoints = this.displayConfig?.datapoints?.filter(dp => dp.__active) || [];
|
|
82
|
+
this.loadedAlarmsOrEvents =
|
|
83
|
+
this.displayConfig?.alarmsEventsConfigs?.filter(alarmOrEvent => alarmOrEvent.__active) || [];
|
|
79
84
|
}
|
|
80
85
|
ngOnDestroy() {
|
|
81
86
|
this.destroy$.next();
|
|
@@ -126,7 +131,12 @@ export class DatapointsGraphWidgetViewComponent {
|
|
|
126
131
|
}
|
|
127
132
|
datapoint.__active = !datapoint.__active;
|
|
128
133
|
this.hasAtLeastOneDatapointActive = true;
|
|
129
|
-
this.
|
|
134
|
+
if (!this.loadedDatapoints.find(dp => dp.label === datapoint.label)) {
|
|
135
|
+
this.loadedDatapoints.push(datapoint);
|
|
136
|
+
this.displayConfig = { ...this.displayConfig };
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
this.chartComponent.toggleDatapointSeriesVisibility(datapoint);
|
|
130
140
|
}
|
|
131
141
|
handleDatapointOutOfSync(dpOutOfSync) {
|
|
132
142
|
const key = (dp) => dp.__target?.id + dp.fragment + dp.series;
|
|
@@ -162,7 +172,12 @@ export class DatapointsGraphWidgetViewComponent {
|
|
|
162
172
|
return event;
|
|
163
173
|
});
|
|
164
174
|
}
|
|
165
|
-
this.
|
|
175
|
+
if (!this.loadedAlarmsOrEvents.find(aOrE => aOrE.filters.type === alarmOrEvent.filters.type)) {
|
|
176
|
+
this.loadedAlarmsOrEvents.push(alarmOrEvent);
|
|
177
|
+
this.displayConfig = { ...this.displayConfig };
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
this.chartComponent.toggleAlarmEventSeriesVisibility(alarmOrEvent);
|
|
166
181
|
}
|
|
167
182
|
updateAlarmsAndEvents(alarmsEventsConfigs) {
|
|
168
183
|
this.alarms = alarmsEventsConfigs.filter(alarm => alarm.timelineType === 'ALARM');
|
|
@@ -238,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
238
253
|
type: ViewChild,
|
|
239
254
|
args: [ChartsComponent]
|
|
240
255
|
}] } });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1ncmFwaC13aWRnZXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLWdyYXBoL2RhdGFwb2ludHMtZ3JhcGgtdmlldy9kYXRhcG9pbnRzLWdyYXBoLXdpZGdldC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2RhdGFwb2ludHMtZ3JhcGgvZGF0YXBvaW50cy1ncmFwaC12aWV3L2RhdGFwb2ludHMtZ3JhcGgtd2lkZ2V0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsUUFBUSxFQUVSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixVQUFVLEVBRVYsT0FBTyxFQUNQLGlDQUFpQyxFQUNsQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLG1CQUFtQixFQUlwQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFD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S0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLCtCQUErQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztTQUM3QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQXhPVSxrQ0FBa0M7bUdBQWxDLGtDQUFrQyw2R0FGbEMsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQywwRUEyQnhDLGVBQWUscUVDOUY1Qix5MVJBcVFBLDJDRDVNSSxVQUFVLDhCQUNWLFlBQVksbWJBQ1osZUFBZSwyTkFDZixVQUFVLHlMQUNWLGFBQWEsaWtCQUNiLGdCQUFnQiw4QkFDaEIsYUFBYSw4VkFDYixZQUFZLGdMQUNaLG9CQUFvQjs7NEZBSVgsa0NBQWtDO2tCQWpCOUMsU0FBUzsrQkFDRSxrQ0FBa0MsY0FFaEMsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixvQkFBb0I7cUJBQ3JCLGFBQ1UsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQzs7MEJBc0RoRCxRQUFRO3lDQW5DRSxNQUFNO3NCQUFsQixLQUFLO2dCQVFzQixjQUFjO3NCQUF6QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFHR1JFR0FUSU9OX0lDT05TLFxuICBBR0dSRUdBVElPTl9URVhUUyxcbiAgQ29yZU1vZHVsZSxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgZ2V0dGV4dCxcbiAgV2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgQUxBUk1fU1RBVFVTX0xBQkVMUyxcbiAgQWxhcm1TdGF0dXNUeXBlLFxuICBTZXZlcml0eVNldHRpbmdzLFxuICBhZ2dyZWdhdGlvblR5cGVcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBLUElEZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9kYXRhcG9pbnQtc2VsZWN0b3InO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvY29udGV4dC1kYXNoYm9hcmQnO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFydHNDb21wb25lbnQsXG4gIERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMsXG4gIERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyxcbiAgRGF0YXBvaW50c0dyYXBoV2lkZ2V0VGltZVByb3BzLFxuICBTZXZlcml0eVR5cGUsXG4gIEFsYXJtRGV0YWlsc0V4dGVuZGVkLFxuICBBbGFybU9yRXZlbnRFeHRlbmRlZCxcbiAgRXZlbnREZXRhaWxzRXh0ZW5kZWQsXG4gIENoYXJ0RXZlbnRzU2VydmljZSxcbiAgQ2hhcnRBbGFybXNTZXJ2aWNlLFxuICBUaW1lQ29udGV4dFByb3BzXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZWNoYXJ0JztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvZHJvcGRvd24nO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQgeyBBbGFybXNNb2R1bGUgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaW1lQ29udGV4dENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvdGltZS1jb250ZXh0JztcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGF0YXBvaW50cy1ncmFwaC13aWRnZXQtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhcG9pbnRzLWdyYXBoLXdpZGdldC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEExMXlNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENoYXJ0c0NvbXBvbmVudCxcbiAgICBDb3JlTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgQnNEcm9wZG93bk1vZHVsZSxcbiAgICBQb3BvdmVyTW9kdWxlLFxuICAgIEFsYXJtc01vZHVsZSxcbiAgICBUaW1lQ29udGV4dENvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtDaGFydEV2ZW50c1NlcnZpY2UsIENoYXJ0QWxhcm1zU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRGF0YXBvaW50c0dyYXBoV2lkZ2V0Vmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgZXZlbnRzOiBFdmVudERldGFpbHNFeHRlbmRlZFtdID0gW107XG4gIGFsYXJtczogQWxhcm1EZXRhaWxzRXh0ZW5kZWRbXSA9IFtdO1xuICBBR0dSRUdBVElPTl9JQ09OUyA9IEFHR1JFR0FUSU9OX0lDT05TO1xuICBBR0dSRUdBVElPTl9URVhUUyA9IEFHR1JFR0FUSU9OX1RFWFRTO1xuICBhbGVydHM6IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IgfCB1bmRlZmluZWQ7XG4gIGRhdGFwb2ludHNPdXRPZlN5bmMgPSBuZXcgTWFwPERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMsIGJvb2xlYW4+KCk7XG4gIHRpbWVQcm9wczogRGF0YXBvaW50c0dyYXBoV2lkZ2V0VGltZVByb3BzIHwgdW5kZWZpbmVkO1xuICBoYXNBdExlYXN0T25lRGF0YXBvaW50QWN0aXZlID0gdHJ1ZTtcbiAgaGFzQXRMZWFzdE9uZUFsYXJtQWN0aXZlID0gdHJ1ZTtcbiAgdGltZUNvbnRyb2xzRm9ybUdyb3VwOiBSZXR1cm5UeXBlPERhdGFwb2ludHNHcmFwaFdpZGdldFZpZXdDb21wb25lbnRbJ2luaXRGb3JtJ10+O1xuICBpc01hcmtlZEFyZWFFbmFibGVkID0gZmFsc2U7XG4gIC8qXG4gICAqIEBkZXNjcmlwdGlvbjogVGhlIHR5cGUgb2YgYWxhcm0gdGhhdCBoYXMgbWFya2VkIGFyZWEgZW5hYmxlZC5cbiAgICovXG4gIGVuYWJsZWRNYXJrZWRBcmVhQWxhcm1UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCkgc2V0IGNvbmZpZyh2YWx1ZTogRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnKSB7XG4gICAgdGhpcy5kaXNwbGF5Q29uZmlnID0gY2xvbmVEZWVwKHZhbHVlKTtcbiAgfVxuICBnZXQgY29uZmlnKCk6IG5ldmVyIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgICdcImNvbmZpZ1wiIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVmZXJlbmNlZCBpbiB2aWV3IGNvbXBvbmVudCB0byBhdm9pZCBtdXRhdGluZyBkYXRhLidcbiAgICApO1xuICB9XG4gIEBWaWV3Q2hpbGQoQ2hhcnRzQ29tcG9uZW50KSBjaGFydENvbXBvbmVudCE6IENoYXJ0c0NvbXBvbmVudDtcbiAgZGlzcGxheUNvbmZpZzogRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnIHwgdW5kZWZpbmVkO1xuICBsZWdlbmRIZWxwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICBnZXR0ZXh0KGA8dWwgY2xhc3M9XCJtLWwtMCBwLWwtOCBtLXQtOCBtLWItMFwiPlxuICAgIDxsaT5cbiAgICAgIDxiPlZpc2liaWxpdHk6PC9iPlxuICAgICAgdXNlIHZpc2liaWxpdHkgaWNvbiB0byB0b2dnbGUgZGF0YXBvaW50LCBhbGFybSBvciBldmVudCB2aXNpYmlsaXR5IG9uIGNoYXJ0LiBBdCBsZWFzdCBvbmUgZGF0YXBvaW50IGlzIHJlcXVpcmVkIHRvIGRpc3BsYXkgY2hhcnQuXG4gICAgPC9saT5cbiAgICA8bGk+XG4gICAgICA8Yj5BbGFybSBkZXRhaWxzPC9iPlxuICAgICAgQ2xpY2sgYWxhcm0gbGVnZW5kIGl0ZW0gdG8gaGlnaGxpZ2h0IGFyZWEgYmV0d2VlbiBhbGFybSByYWlzZWQgdGltZXN0YW1wIGFuZCBhbGFybSBjbGVhcmVkIHRpbWVzdGFtcC5cbiAgICAgIFlvdSBjYW4gYWxzbyBjbGljayBhbGFybSBtYXJrbGluZSBvbiBjaGFydCB0byBoaWdobGlnaHQgYWxhcm0gYW5kIHRvIHBhdXNlIHRvb2x0aXAuIENsaWNrIG9uIGhpZ2hsaWdodGVkIGFyZWEgb3IgbGVnZW5kIGl0ZW0gdG8gY2FuY2VsIGhpZ2hsaWdodGluZy5cbiAgICA8L2xpPlxuICA8L3VsPmApXG4gICk7XG4gIHJlYWRvbmx5IGRpc2FibGVab29tSW5MYWJlbCA9IGdldHRleHQoJ0Rpc2FibGUgem9vbSBpbicpO1xuICByZWFkb25seSBlbmFibGVab29tSW5MYWJlbCA9IGdldHRleHQoXG4gICAgJ0NsaWNrIHRvIGVuYWJsZSB6b29tLCB0aGVuIGNsaWNrIGFuZCBkcmFnIG9uIHRoZSBkZXNpcmVkIGFyZWEgaW4gdGhlIGNoYXJ0LidcbiAgKTtcbiAgcmVhZG9ubHkgaGlkZURhdGFwb2ludExhYmVsID0gZ2V0dGV4dCgnSGlkZSBkYXRhIHBvaW50Jyk7XG4gIHJlYWRvbmx5IHNob3dEYXRhcG9pbnRMYWJlbCA9IGdldHRleHQoJ1Nob3cgZGF0YSBwb2ludCcpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZTogV2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGFzaGJvYXJkQ29udGV4dENvbXBvbmVudDogQ29udGV4dERhc2hib2FyZENvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLnRpbWVDb250cm9sc0Zvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnRpbWVDb250cm9sc0Zvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXlDb25maWcgPSB7IC4uLnRoaXMuZGlzcGxheUNvbmZpZywgLi4udmFsdWUgfTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGlzcGxheUNvbmZpZz8uZGF0YXBvaW50cz8uZm9yRWFjaChkcCA9PiB0aGlzLmFzc2lnbkNvbnRleHRGcm9tQ29udGV4dERhc2hib2FyZChkcCkpO1xuICAgIGlmICh0aGlzLmRpc3BsYXlDb25maWcuZGF0ZUZyb20gJiYgdGhpcy5kaXNwbGF5Q29uZmlnLmRhdGVUbykge1xuICAgICAgdGhpcy50aW1lUHJvcHMgPSB7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZSh0aGlzLmRpc3BsYXlDb25maWc/LmRhdGVGcm9tKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZSh0aGlzLmRpc3BsYXlDb25maWc/LmRhdGVUbyksXG4gICAgICAgIGludGVydmFsOiB0aGlzLmRpc3BsYXlDb25maWc/LmludGVydmFsLFxuICAgICAgICByZWFsdGltZTogdGhpcy5kaXNwbGF5Q29uZmlnPy5yZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb246IHRoaXMuZGlzcGxheUNvbmZpZz8ucmVhbHRpbWUgPyBudWxsIDogdGhpcy5kaXNwbGF5Q29uZmlnPy5hZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy50aW1lQ29udHJvbHNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmRpc3BsYXlDb25maWcgfHwge30pO1xuICAgIGNvbnN0IGNvbmZpZzogRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnID0gY2hhbmdlc1snY29uZmlnJ10/LmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAoY29uZmlnPy5kYXRlICYmIGNvbmZpZz8ud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCAmJiB0aGlzLmRpc3BsYXlDb25maWc/LmRhdGUpIHtcbiAgICAgIGlmICghdGhpcy5kaXNwbGF5Q29uZmlnLnNsaWRlckNoYW5nZSkge1xuICAgICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS51cGRhdGVJbml0aWFsVGltZVJhbmdlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy50aW1lUHJvcHNDaGFuZ2VkKHtcbiAgICAgICAgY3VycmVudERhdGVDb250ZXh0RnJvbURhdGU6IHRoaXMuZGlzcGxheUNvbmZpZz8uZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRUb0RhdGU6IHRoaXMuZGlzcGxheUNvbmZpZz8uZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogdGhpcy5kaXNwbGF5Q29uZmlnPy5pbnRlcnZhbCxcbiAgICAgICAgcmVhbHRpbWU6IHRoaXMuZGlzcGxheUNvbmZpZz8ucmVhbHRpbWUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uOiB0aGlzLmRpc3BsYXlDb25maWc/LmFnZ3JlZ2F0aW9uXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0aW1lUHJvcHNDaGFuZ2VkKHRpbWVQcm9wczogVGltZUNvbnRleHRQcm9wcyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGNoVmFsdWVzID0ge1xuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSksXG4gICAgICBkYXRlVG86IG5ldyBEYXRlKHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRUb0RhdGUpLFxuICAgICAgaW50ZXJ2YWw6IHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCxcbiAgICAgIC4uLih0aW1lUHJvcHMuYWdncmVnYXRpb24gJiYgeyBhZ2dyZWdhdGlvbjogdGltZVByb3BzLmFnZ3JlZ2F0aW9uIH0pLFxuICAgICAgLi4uKHRpbWVQcm9wcy5yZWFsdGltZSAmJiB7IHJlYWx0aW1lOiB0aW1lUHJvcHMucmVhbHRpbWUgfSlcbiAgICB9O1xuICAgIHRoaXMudGltZUNvbnRyb2xzRm9ybUdyb3VwLnBhdGNoVmFsdWUocGF0Y2hWYWx1ZXMpO1xuICB9XG5cbiAgdXBkYXRlRGFzaGJvYXJkVGltZUNvbnRleHQodGltZVByb3BzOiBEYXRhcG9pbnRzR3JhcGhXaWRnZXRUaW1lUHJvcHMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5Q29uZmlnPy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5lbWl0UHJvcGVydHlVcGRhdGUodGltZVByb3BzKTtcbiAgICB9XG4gICAgdGhpcy50aW1lQ29udHJvbHNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aW1lUHJvcHMpO1xuICAgIHRoaXMudGltZVByb3BzID0geyAuLi50aW1lUHJvcHMsIHJlYWx0aW1lOiBmYWxzZSB9O1xuICB9XG5cbiAgdXBkYXRlVGltZVJhbmdlT25SZWFsdGltZShcbiAgICB0aW1lUmFuZ2U6IFBpY2s8RGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLCAnZGF0ZUZyb20nIHwgJ2RhdGVUbyc+XG4gICk6IHZvaWQge1xuICAgIHRoaXMudGltZUNvbnRyb2xzRm9ybUdyb3VwLnBhdGNoVmFsdWUodGltZVJhbmdlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICB0b2dnbGVDaGFydChkYXRhcG9pbnQ6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRpc3BsYXlDb25maWc/LmRhdGFwb2ludHM/LmZpbHRlcihkcCA9PiBkcC5fX2FjdGl2ZSkubGVuZ3RoID09PSAxICYmXG4gICAgICBkYXRhcG9pbnQuX19hY3RpdmVcbiAgICApIHtcbiAgICAgIC8vIGF0IGxlYXN0IDEgZGF0YXBvaW50IHNob3VsZCBiZSBhY3RpdmVcbiAgICAgIHRoaXMuaGFzQXRMZWFzdE9uZURhdGFwb2ludEFjdGl2ZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkYXRhcG9pbnQuX19hY3RpdmUgPSAhZGF0YXBvaW50Ll9fYWN0aXZlO1xuICAgIHRoaXMuaGFzQXRMZWFzdE9uZURhdGFwb2ludEFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy5kaXNwbGF5Q29uZmlnID0geyAuLi50aGlzLmRpc3BsYXlDb25maWcgfTtcbiAgfVxuXG4gIGhhbmRsZURhdGFwb2ludE91dE9mU3luYyhkcE91dE9mU3luYzogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IChkcDogS1BJRGV0YWlscykgPT4gZHAuX190YXJnZXQ/LmlkICsgZHAuZnJhZ21lbnQgKyBkcC5zZXJpZXM7XG4gICAgY29uc3QgZHBNYXRjaCA9IHRoaXMuZGlzcGxheUNvbmZpZz8uZGF0YXBvaW50cz8uZmluZChkcCA9PiBrZXkoZHApID09PSBrZXkoZHBPdXRPZlN5bmMpKTtcbiAgICBpZiAoIWRwTWF0Y2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kYXRhcG9pbnRzT3V0T2ZTeW5jLnNldChkcE1hdGNoLCB0cnVlKTtcbiAgfVxuXG4gIHRvZ2dsZU1hcmtlZEFyZWEoYWxhcm06IEFsYXJtRGV0YWlsc0V4dGVuZGVkKTogdm9pZCB7XG4gICAgdGhpcy5lbmFibGVkTWFya2VkQXJlYUFsYXJtVHlwZSA9IGFsYXJtLmZpbHRlcnMudHlwZTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGl0ZW1UeXBlOiBhbGFybS5maWx0ZXJzLnR5cGVcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuY2hhcnRDb21wb25lbnQub25DaGFydENsaWNrKHBhcmFtcyk7XG4gIH1cblxuICB0b2dnbGVBbGFybUV2ZW50VHlwZShhbGFybU9yRXZlbnQ6IEFsYXJtT3JFdmVudEV4dGVuZGVkKTogdm9pZCB7XG4gICAgaWYgKGFsYXJtT3JFdmVudC50aW1lbGluZVR5cGUgPT09ICdBTEFSTScpIHtcbiAgICAgIHRoaXMuYWxhcm1zID0gdGhpcy5hbGFybXMubWFwKGFsYXJtID0+IHtcbiAgICAgICAgaWYgKGFsYXJtLmZpbHRlcnMudHlwZSA9PT0gYWxhcm1PckV2ZW50LmZpbHRlcnMudHlwZSkge1xuICAgICAgICAgIGFsYXJtLl9faGlkZGVuID0gIWFsYXJtLl9faGlkZGVuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhbGFybTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV2ZW50cyA9IHRoaXMuZXZlbnRzLm1hcChldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5maWx0ZXJzLnR5cGUgPT09IGFsYXJtT3JFdmVudC5maWx0ZXJzLnR5cGUpIHtcbiAgICAgICAgICBldmVudC5fX2hpZGRlbiA9ICFldmVudC5fX2hpZGRlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5Q29uZmlnID0geyAuLi50aGlzLmRpc3BsYXlDb25maWcgfTtcbiAgfVxuXG4gIHVwZGF0ZUFsYXJtc0FuZEV2ZW50cyhhbGFybXNFdmVudHNDb25maWdzOiBBbGFybU9yRXZlbnRFeHRlbmRlZFtdKTogdm9pZCB7XG4gICAgdGhpcy5hbGFybXMgPSBhbGFybXNFdmVudHNDb25maWdzLmZpbHRlcihcbiAgICAgIGFsYXJtID0+IGFsYXJtLnRpbWVsaW5lVHlwZSA9PT0gJ0FMQVJNJ1xuICAgICkgYXMgQWxhcm1EZXRhaWxzRXh0ZW5kZWRbXTtcbiAgICB0aGlzLmV2ZW50cyA9IGFsYXJtc0V2ZW50c0NvbmZpZ3MuZmlsdGVyKFxuICAgICAgZXZlbnQgPT4gZXZlbnQudGltZWxpbmVUeXBlID09PSAnRVZFTlQnXG4gICAgKSBhcyBFdmVudERldGFpbHNFeHRlbmRlZFtdO1xuICAgIGlmICh0aGlzLmFsYXJtcy5sZW5ndGggPT09IDAgfHwgIXRoaXMuYWxhcm1zLmZpbmQoYWxhcm0gPT4gYWxhcm0uX19hY3RpdmUpKSB7XG4gICAgICB0aGlzLmhhc0F0TGVhc3RPbmVBbGFybUFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlclNldmVyaXR5KGV2ZW50VGFyZ2V0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmFsYXJtcyA9IHRoaXMuYWxhcm1zLm1hcChhbGFybSA9PiB7XG4gICAgICBpZiAoIWFsYXJtLl9fc2V2ZXJpdHkpIHtcbiAgICAgICAgYWxhcm0uX19zZXZlcml0eSA9IFtdO1xuICAgICAgfVxuICAgICAgYWxhcm0uX19zZXZlcml0eSA9IE9iamVjdC5rZXlzKGV2ZW50VGFyZ2V0LnNldmVyaXR5T3B0aW9ucykuZmlsdGVyKFxuICAgICAgICAoc2V2ZXJpdHkpOiBzZXZlcml0eSBpcyBrZXlvZiBTZXZlcml0eVNldHRpbmdzID0+XG4gICAgICAgICAgZXZlbnRUYXJnZXQuc2V2ZXJpdHlPcHRpb25zW3NldmVyaXR5IGFzIGtleW9mIFNldmVyaXR5U2V0dGluZ3NdXG4gICAgICApIGFzIFNldmVyaXR5VHlwZVtdO1xuXG4gICAgICBpZiAoIWFsYXJtLl9fc3RhdHVzKSB7XG4gICAgICAgIGFsYXJtLl9fc3RhdHVzID0gW107XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXNlcyA9IE9iamVjdC5rZXlzKEFMQVJNX1NUQVRVU19MQUJFTFMpIGFzIEFsYXJtU3RhdHVzVHlwZVtdO1xuICAgICAgY29uc3QgZmlsdGVyZWRTdGF0dXNlcyA9IGV2ZW50VGFyZ2V0LnNob3dDbGVhcmVkXG4gICAgICAgID8gc3RhdHVzZXNcbiAgICAgICAgOiBzdGF0dXNlcy5maWx0ZXIoc3RhdHVzID0+IHN0YXR1cyAhPT0gJ0NMRUFSRUQnKTtcbiAgICAgIGFsYXJtLl9fc3RhdHVzID0gZmlsdGVyZWRTdGF0dXNlcztcbiAgICAgIHJldHVybiBhbGFybTtcbiAgICB9KTtcbiAgICB0aGlzLmRpc3BsYXlDb25maWcgPSB7IC4uLnRoaXMuZGlzcGxheUNvbmZpZyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3NpZ25Db250ZXh0RnJvbUNvbnRleHREYXNoYm9hcmQoZGF0YXBvaW50OiBLUElEZXRhaWxzKSB7XG4gICAgaWYgKCF0aGlzLmRhc2hib2FyZENvbnRleHRDb21wb25lbnQ/LmlzRGV2aWNlVHlwZURhc2hib2FyZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5kYXNoYm9hcmRDb250ZXh0Q29tcG9uZW50Py5jb250ZXh0O1xuICAgIGlmIChjb250ZXh0Py5pZCkge1xuICAgICAgY29uc3QgeyBuYW1lLCBpZCB9ID0gY29udGV4dDtcbiAgICAgIGRhdGFwb2ludC5fX3RhcmdldCA9IHsgbmFtZSwgaWQgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCkge1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIGRhdGVGcm9tOiBbdW5kZWZpbmVkIGFzIHVua25vd24gYXMgRGF0ZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGRhdGVUbzogW3VuZGVmaW5lZCBhcyB1bmtub3duIGFzIERhdGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpbnRlcnZhbDogW1xuICAgICAgICB0aGlzLmRpc3BsYXlDb25maWc/LmludGVydmFsIHx8ICgnaG91cnMnIGFzIEludGVydmFsWydpZCddKSxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICBdLFxuICAgICAgYWdncmVnYXRpb246IFtudWxsIGFzIGFnZ3JlZ2F0aW9uVHlwZSB8IG51bGwsIFtdXSxcbiAgICAgIHJlYWx0aW1lOiBbZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICB3aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0OiBbZmFsc2UsIFtdXVxuICAgIH0pO1xuICAgIGZvcm0ucGF0Y2hWYWx1ZSh0aGlzLmRpc3BsYXlDb25maWcgfHwge30pO1xuICAgIHJldHVybiBmb3JtO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC1sLTE2IHAtci0xNlwiPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xNiBhLWktc3RhcnRcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAtc20gZmxleC1uby1zaHJpbmtcIlxuICAgICAgKm5nSWY9XCIhZGlzcGxheUNvbmZpZz8ud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dFwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FnZ3JlZ2F0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHRvb2x0aXA9XCJ7e1xuICAgICAgICAgIChkaXNwbGF5Q29uZmlnPy5hZ2dyZWdhdGlvblxuICAgICAgICAgICAgPyBBR0dSRUdBVElPTl9URVhUU1tkaXNwbGF5Q29uZmlnLmFnZ3JlZ2F0aW9uXVxuICAgICAgICAgICAgOiBBR0dSRUdBVElPTl9URVhUUy51bmRlZmluZWRcbiAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgIH19XCJcbiAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgPlxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbi0xNFwiXG4gICAgICAgICAgW2M4eUljb25dPVwiXG4gICAgICAgICAgICBkaXNwbGF5Q29uZmlnPy5hZ2dyZWdhdGlvblxuICAgICAgICAgICAgICA/IEFHR1JFR0FUSU9OX0lDT05TW2Rpc3BsYXlDb25maWcuYWdncmVnYXRpb25dXG4gICAgICAgICAgICAgIDogQUdHUkVHQVRJT05fSUNPTlMudW5kZWZpbmVkXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8Yzh5LXRpbWUtY29udGV4dFxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAoY29udGV4dENoYW5nZSk9XCJ0aW1lUHJvcHNDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbY2hhbmdlZERhdGVDb250ZXh0XT1cInRpbWVQcm9wc1wiXG4gICAgICAgIFtjb250cm9sc0F2YWlsYWJsZV09XCJ7XG4gICAgICAgICAgcmVhbHRpbWU6IHRydWUsXG4gICAgICAgICAgdGltZVJhbmdlOiBkaXNwbGF5Q29uZmlnPy5kaXNwbGF5RGF0ZVNlbGVjdGlvbixcbiAgICAgICAgICBpbnRlcnZhbDogZGlzcGxheUNvbmZpZz8uZGlzcGxheURhdGVTZWxlY3Rpb24sXG4gICAgICAgICAgYWdncmVnYXRpb246IGRpc3BsYXlDb25maWc/LmRpc3BsYXlBZ2dyZWdhdGlvblNlbGVjdGlvblxuICAgICAgICB9XCJcbiAgICAgID48L2M4eS10aW1lLWNvbnRleHQ+XG4gICAgPC9kaXY+XG4gICAgPGM4eS1hbGFybXMtZmlsdGVyXG4gICAgICBjbGFzcz1cImQtY29udGVudHMgZm9ybS1ncm91cC1zbVwiXG4gICAgICAqbmdJZj1cImhhc0F0TGVhc3RPbmVBbGFybUFjdGl2ZVwiXG4gICAgICAoZmlsdGVyQXBwbGllZCk9XCJmaWx0ZXJTZXZlcml0eSgkZXZlbnQpXCJcbiAgICA+PC9jOHktYWxhcm1zLWZpbHRlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJtLWwtYXV0byBidG4tZ3JvdXAgYnRuLWdyb3VwLXNtIGZsZXgtbm8tc2hyaW5rXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2F2ZSBhcyBpbWFnZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0b29sdGlwPVwie3sgJ1NhdmUgYXMgaW1hZ2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiY2hhcnQuc2F2ZUFzSW1hZ2UoKVwiXG4gICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb24tMTRcIlxuICAgICAgICAgIGM4eUljb249XCJpbWFnZS1maWxlLWNoZWNrZWRcIlxuICAgICAgICA+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJkLWZsZXhcIlxuICAgIHN0eWxlPVwiYWxpZ24taXRlbXM6IGNlbnRlclwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0bi1oZWxwIGJ0bi1oZWxwLS1zbSBtLXItOFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbcG9wb3Zlcl09XCJsZWdlbmRIZWxwVGVtcGxhdGVcIlxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgPjwvYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3cgcC10LTggZC1mbGV4IGEtaS1zdGFydCBnYXAtOCBwLWItNFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjOHktZGF0YXBvaW50LXBpbGwgZmxleC1uby1zaHJpbmtcIlxuICAgICAgICAgIHRpdGxlPVwie3sgZGF0YXBvaW50LmxhYmVsIH19IC0ge3sgZGF0YXBvaW50Ll9fdGFyZ2V0Lm5hbWUgfX1cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhcG9pbnQgb2YgZGlzcGxheUNvbmZpZy5kYXRhcG9pbnRzXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogZGF0YXBvaW50Ll9fYWN0aXZlIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC13YXJuaW5nIG0tbC00XCJcbiAgICAgICAgICAgIGM4eUljb249XCJleGNsYW1hdGlvbi10cmlhbmdsZVwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInQXQgbGVhc3QgMSBhY3RpdmUgZGF0YSBwb2ludHMgbXVzdCBiZSBhY3RpdmUuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWhhc0F0TGVhc3RPbmVEYXRhcG9pbnRBY3RpdmUgJiYgZGF0YXBvaW50Ll9fYWN0aXZlXCJcbiAgICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19idG5cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7e1xuICAgICAgICAgICAgICAoZGF0YXBvaW50Ll9fYWN0aXZlID8gaGlkZURhdGFwb2ludExhYmVsIDogc2hvd0RhdGFwb2ludExhYmVsKSB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX0gXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNoYXJ0KGRhdGFwb2ludClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbi0xNFwiXG4gICAgICAgICAgICAgIFtjOHlJY29uXT1cImRhdGFwb2ludC5fX2FjdGl2ZSA/ICdleWUgdGV4dC1wcmltYXJ5JyA6ICdleWUtc2xhc2ggdGV4dC1tdXRlZCdcIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsX19sYWJlbCBjOHktZGF0YXBvaW50LXBpbGxfX2J0blwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJtLXItNCBpY29uLTE0XCJcbiAgICAgICAgICAgICAgYzh5SWNvbj1cImNpcmNsZVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICBjb2xvcjogZGF0YXBvaW50LmNvbG9yXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtbXV0ZWQnOiAhZGF0YXBvaW50Ll9fYWN0aXZlIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICB7eyBkYXRhcG9pbnQubGFiZWwgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIHRleHQtMTBcIj5cbiAgICAgICAgICAgICAgICB7eyBkYXRhcG9pbnQuX190YXJnZXQubmFtZSB9fVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdhcm5pbmcgbS1sLTRcIlxuICAgICAgICAgICAgICBjOHlJY29uPVwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAnTWVhc3VyZW1lbnRzIHJlY2VpdmVkIGZvciB0aGlzIGRhdGEgcG9pbnQgbWF5IGJlIG91dCBvZiBzeW5jLicgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGF0YXBvaW50c091dE9mU3luYy5nZXQoZGF0YXBvaW50KVwiXG4gICAgICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8IS0tIEFsYXJtcyAgLS0+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWxhcm0gb2YgYWxhcm1zXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjOHktYWxhcm0tcGlsbCBmbGV4LW5vLXNocmlua1wiXG4gICAgICAgICAgICB0aXRsZT1cInt7IGFsYXJtLmZpbHRlcnMudHlwZSB9fSBcIlxuICAgICAgICAgICAgKm5nSWY9XCJhbGFybS5fX2FjdGl2ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdhcm5pbmcgbS1sLTRcIlxuICAgICAgICAgICAgICBjOHlJY29uPVwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgICAgICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAnQWxhcm0gb2YgdGhpcyB0eXBlIGlzIGN1cnJlbnRseSBhY3RpdmUgYW5kIG91dHNpZGUgb2YgdGhlIHNlbGVjdGVkIHRpbWUgcmFuZ2UnXG4gICAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5Q29uZmlnPy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZT8uaW5jbHVkZXMoYWxhcm0uZmlsdGVycy50eXBlKVwiXG4gICAgICAgICAgICAgIFthZGFwdGl2ZVBvc2l0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWFsYXJtLXBpbGxfX2J0blwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgYWxhcm0uZmlsdGVycy50eXBlIH19IFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxhcm1FdmVudFR5cGUoYWxhcm0pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tMTRcIlxuICAgICAgICAgICAgICAgIFtjOHlJY29uXT1cImFsYXJtLl9faGlkZGVuID8gJ2V5ZS1zbGFzaCB0ZXh0LW11dGVkJyA6ICdleWUgdGV4dC1wcmltYXJ5J1wiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjOHktYWxhcm0tcGlsbF9fbGFiZWwgYzh5LWFsYXJtLXBpbGxfX2J0blwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNYXJrZWRBcmVhKGFsYXJtKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBhY3RpdmU6ICFpc01hcmtlZEFyZWFFbmFibGVkICYmIGFsYXJtLmZpbHRlcnMudHlwZSA9PT0gZW5hYmxlZE1hcmtlZEFyZWFBbGFybVR5cGVcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaXJjbGUtaWNvbi13cmFwcGVyIGNpcmNsZS1pY29uLXdyYXBwZXItLXNtYWxsIG0tci00XCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJhbGFybS5jb2xvclwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdHJva2VkLWljb25cIlxuICAgICAgICAgICAgICAgICAgYzh5SWNvbj1cImJlbGxcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtbXV0ZWQnOiBhbGFybS5fX2hpZGRlbiB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgYWxhcm0uZmlsdGVycy50eXBlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWQgdGV4dC0xMFwiPlxuICAgICAgICAgICAgICAgICAge3sgYWxhcm0uX190YXJnZXQubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEV2ZW50cyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgZXZlbnRzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjOHktZXZlbnQtcGlsbCBmbGV4LW5vLXNocmlua1wiXG4gICAgICAgICAgICB0aXRsZT1cInt7IGV2ZW50LmZpbHRlcnMudHlwZSB9fVwiXG4gICAgICAgICAgICAqbmdJZj1cImV2ZW50Ll9fYWN0aXZlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWV2ZW50LXBpbGxfX2J0blwiXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgZXZlbnQuZmlsdGVycy50eXBlIH19IFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxhcm1FdmVudFR5cGUoZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb24tMTRcIlxuICAgICAgICAgICAgICAgIFtjOHlJY29uXT1cImV2ZW50Ll9faGlkZGVuID8gJ2V5ZS1zbGFzaCB0ZXh0LW11dGVkJyA6ICdleWUgdGV4dC1wcmltYXJ5J1wiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjOHktZXZlbnQtcGlsbF9fbGFiZWwgYzh5LWV2ZW50LXBpbGxfX2J0blwiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2lyY2xlLWljb24td3JhcHBlciBjaXJjbGUtaWNvbi13cmFwcGVyLS1zbWFsbCBtLXItNFwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGV2ZW50LmNvbG9yIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Ryb2tlZC1pY29uXCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJjOHktZXZlbnRzXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LW11dGVkJzogZXZlbnQuX19oaWRkZW4gfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGV2ZW50LmZpbHRlcnMudHlwZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIHRleHQtMTBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGV2ZW50Ll9fdGFyZ2V0Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGM4eS1jaGFydHNcbiAgI2NoYXJ0XG4gIFtjb25maWddPVwiZGlzcGxheUNvbmZpZ1wiXG4gIFthbGVydHNdPVwiYWxlcnRzXCJcbiAgKHVwZGF0ZUFsYXJtc0FuZEV2ZW50cyk9XCJ1cGRhdGVBbGFybXNBbmRFdmVudHMoJGV2ZW50KVwiXG4gIChjb25maWdDaGFuZ2VPblpvb21PdXQpPVwidXBkYXRlRGFzaGJvYXJkVGltZUNvbnRleHQoJGV2ZW50KVwiXG4gIChkYXRhcG9pbnRPdXRPZlN5bmMpPVwiaGFuZGxlRGF0YXBvaW50T3V0T2ZTeW5jKCRldmVudClcIlxuICAodGltZVJhbmdlQ2hhbmdlT25SZWFsdGltZSk9XCJ1cGRhdGVUaW1lUmFuZ2VPblJlYWx0aW1lKCRldmVudClcIlxuICAoaXNNYXJrZWRBcmVhRW5hYmxlZCk9XCJpc01hcmtlZEFyZWFFbmFibGVkID0gJGV2ZW50XCJcbj48L2M4eS1jaGFydHM+XG5cbjxuZy10ZW1wbGF0ZSAjbGVnZW5kSGVscFRlbXBsYXRlPlxuICA8ZGl2IFtpbm5lckhUTUxdPVwibGVnZW5kSGVscFwiPjwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1ncmFwaC13aWRnZXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi93aWRnZXRzL2ltcGxlbWVudGF0aW9ucy9kYXRhcG9pbnRzLWdyYXBoL2RhdGFwb2ludHMtZ3JhcGgtdmlldy9kYXRhcG9pbnRzLWdyYXBoLXdpZGdldC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3dpZGdldHMvaW1wbGVtZW50YXRpb25zL2RhdGFwb2ludHMtZ3JhcGgvZGF0YXBvaW50cy1ncmFwaC12aWV3L2RhdGFwb2ludHMtZ3JhcGgtd2lkZ2V0LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBR0wsUUFBUSxFQUVSLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixVQUFVLEVBRVYsT0FBTyxFQUNQLGlDQUFpQyxFQUNsQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLG1CQUFtQixFQUlwQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFD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QzdDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7K0dBdlBVLGtDQUFrQzttR0FBbEMsa0NBQWtDLDZHQUZsQyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLDBFQTZCeEMsZUFBZSxxRUNoRzVCLHkxUkFxUUEsMkNENU1JLFVBQVUsOEJBQ1YsWUFBWSxtYkFDWixlQUFlLDJOQUNmLFVBQVUseUxBQ1YsYUFBYSxpa0JBQ2IsZ0JBQWdCLDhCQUNoQixhQUFhLDhWQUNiLFlBQVksZ0xBQ1osb0JBQW9COzs0RkFJWCxrQ0FBa0M7a0JBakI5QyxTQUFTOytCQUNFLGtDQUFrQyxjQUVoQyxJQUFJLFdBQ1A7d0JBQ1AsVUFBVTt3QkFDVixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG9CQUFvQjtxQkFDckIsYUFDVSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDOzswQkF3RGhELFFBQVE7eUNBbkNFLE1BQU07c0JBQWxCLEtBQUs7Z0JBUXNCLGNBQWM7c0JBQXpDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQUdHUkVHQVRJT05fSUNPTlMsXG4gIEFHR1JFR0FUSU9OX1RFWFRTLFxuICBDb3JlTW9kdWxlLFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnRBZ2dyZWdhdG9yLFxuICBnZXR0ZXh0LFxuICBXaWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBBTEFSTV9TVEFUVVNfTEFCRUxTLFxuICBBbGFybVN0YXR1c1R5cGUsXG4gIFNldmVyaXR5U2V0dGluZ3MsXG4gIGFnZ3JlZ2F0aW9uVHlwZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IEtQSURldGFpbHMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb250ZXh0RGFzaGJvYXJkQ29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9jb250ZXh0LWRhc2hib2FyZCc7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYXJ0c0NvbXBvbmVudCxcbiAgRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyxcbiAgRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLFxuICBEYXRhcG9pbnRzR3JhcGhXaWRnZXRUaW1lUHJvcHMsXG4gIFNldmVyaXR5VHlwZSxcbiAgQWxhcm1EZXRhaWxzRXh0ZW5kZWQsXG4gIEFsYXJtT3JFdmVudEV4dGVuZGVkLFxuICBFdmVudERldGFpbHNFeHRlbmRlZCxcbiAgQ2hhcnRFdmVudHNTZXJ2aWNlLFxuICBDaGFydEFsYXJtc1NlcnZpY2UsXG4gIFRpbWVDb250ZXh0UHJvcHNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9lY2hhcnQnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kcm9wZG93bic7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IEFsYXJtc01vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRpbWVDb250ZXh0Q29tcG9uZW50IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy90aW1lLWNvbnRleHQnO1xuaW1wb3J0IHsgSW50ZXJ2YWwgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kYXRhcG9pbnRzLWdyYXBoLXdpZGdldC12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGFwb2ludHMtZ3JhcGgtd2lkZ2V0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQTExeU1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2hhcnRzQ29tcG9uZW50LFxuICAgIENvcmVNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBCc0Ryb3Bkb3duTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgQWxhcm1zTW9kdWxlLFxuICAgIFRpbWVDb250ZXh0Q29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW0NoYXJ0RXZlbnRzU2VydmljZSwgQ2hhcnRBbGFybXNTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhcG9pbnRzR3JhcGhXaWRnZXRWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBldmVudHM6IEV2ZW50RGV0YWlsc0V4dGVuZGVkW10gPSBbXTtcbiAgYWxhcm1zOiBBbGFybURldGFpbHNFeHRlbmRlZFtdID0gW107XG4gIEFHR1JFR0FUSU9OX0lDT05TID0gQUdHUkVHQVRJT05fSUNPTlM7XG4gIEFHR1JFR0FUSU9OX1RFWFRTID0gQUdHUkVHQVRJT05fVEVYVFM7XG4gIGFsZXJ0czogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvciB8IHVuZGVmaW5lZDtcbiAgZGF0YXBvaW50c091dE9mU3luYyA9IG5ldyBNYXA8RGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscywgYm9vbGVhbj4oKTtcbiAgdGltZVByb3BzOiBEYXRhcG9pbnRzR3JhcGhXaWRnZXRUaW1lUHJvcHMgfCB1bmRlZmluZWQ7XG4gIGhhc0F0TGVhc3RPbmVEYXRhcG9pbnRBY3RpdmUgPSB0cnVlO1xuICBoYXNBdExlYXN0T25lQWxhcm1BY3RpdmUgPSB0cnVlO1xuICB0aW1lQ29udHJvbHNGb3JtR3JvdXA6IFJldHVyblR5cGU8RGF0YXBvaW50c0dyYXBoV2lkZ2V0Vmlld0NvbXBvbmVudFsnaW5pdEZvcm0nXT47XG4gIGlzTWFya2VkQXJlYUVuYWJsZWQgPSBmYWxzZTtcbiAgbG9hZGVkRGF0YXBvaW50czogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlsc1tdID0gW107XG4gIGxvYWRlZEFsYXJtc09yRXZlbnRzOiBBbGFybU9yRXZlbnRFeHRlbmRlZFtdID0gW107XG4gIC8qXG4gICAqIEBkZXNjcmlwdGlvbjogVGhlIHR5cGUgb2YgYWxhcm0gdGhhdCBoYXMgbWFya2VkIGFyZWEgZW5hYmxlZC5cbiAgICovXG4gIGVuYWJsZWRNYXJrZWRBcmVhQWxhcm1UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KCkgc2V0IGNvbmZpZyh2YWx1ZTogRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnKSB7XG4gICAgdGhpcy5kaXNwbGF5Q29uZmlnID0gY2xvbmVEZWVwKHZhbHVlKTtcbiAgfVxuICBnZXQgY29uZmlnKCk6IG5ldmVyIHtcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgICdcImNvbmZpZ1wiIHByb3BlcnR5IHNob3VsZCBub3QgYmUgcmVmZXJlbmNlZCBpbiB2aWV3IGNvbXBvbmVudCB0byBhdm9pZCBtdXRhdGluZyBkYXRhLidcbiAgICApO1xuICB9XG4gIEBWaWV3Q2hpbGQoQ2hhcnRzQ29tcG9uZW50KSBjaGFydENvbXBvbmVudCE6IENoYXJ0c0NvbXBvbmVudDtcbiAgZGlzcGxheUNvbmZpZzogRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnIHwgdW5kZWZpbmVkO1xuICBsZWdlbmRIZWxwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICBnZXR0ZXh0KGA8dWwgY2xhc3M9XCJtLWwtMCBwLWwtOCBtLXQtOCBtLWItMFwiPlxuICAgIDxsaT5cbiAgICAgIDxiPlZpc2liaWxpdHk6PC9iPlxuICAgICAgdXNlIHZpc2liaWxpdHkgaWNvbiB0byB0b2dnbGUgZGF0YXBvaW50LCBhbGFybSBvciBldmVudCB2aXNpYmlsaXR5IG9uIGNoYXJ0LiBBdCBsZWFzdCBvbmUgZGF0YXBvaW50IGlzIHJlcXVpcmVkIHRvIGRpc3BsYXkgY2hhcnQuXG4gICAgPC9saT5cbiAgICA8bGk+XG4gICAgICA8Yj5BbGFybSBkZXRhaWxzPC9iPlxuICAgICAgQ2xpY2sgYWxhcm0gbGVnZW5kIGl0ZW0gdG8gaGlnaGxpZ2h0IGFyZWEgYmV0d2VlbiBhbGFybSByYWlzZWQgdGltZXN0YW1wIGFuZCBhbGFybSBjbGVhcmVkIHRpbWVzdGFtcC5cbiAgICAgIFlvdSBjYW4gYWxzbyBjbGljayBhbGFybSBtYXJrbGluZSBvbiBjaGFydCB0byBoaWdobGlnaHQgYWxhcm0gYW5kIHRvIHBhdXNlIHRvb2x0aXAuIENsaWNrIG9uIGhpZ2hsaWdodGVkIGFyZWEgb3IgbGVnZW5kIGl0ZW0gdG8gY2FuY2VsIGhpZ2hsaWdodGluZy5cbiAgICA8L2xpPlxuICA8L3VsPmApXG4gICk7XG4gIHJlYWRvbmx5IGRpc2FibGVab29tSW5MYWJlbCA9IGdldHRleHQoJ0Rpc2FibGUgem9vbSBpbicpO1xuICByZWFkb25seSBlbmFibGVab29tSW5MYWJlbCA9IGdldHRleHQoXG4gICAgJ0NsaWNrIHRvIGVuYWJsZSB6b29tLCB0aGVuIGNsaWNrIGFuZCBkcmFnIG9uIHRoZSBkZXNpcmVkIGFyZWEgaW4gdGhlIGNoYXJ0LidcbiAgKTtcbiAgcmVhZG9ubHkgaGlkZURhdGFwb2ludExhYmVsID0gZ2V0dGV4dCgnSGlkZSBkYXRhIHBvaW50Jyk7XG4gIHJlYWRvbmx5IHNob3dEYXRhcG9pbnRMYWJlbCA9IGdldHRleHQoJ1Nob3cgZGF0YSBwb2ludCcpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZTogV2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGFzaGJvYXJkQ29udGV4dENvbXBvbmVudDogQ29udGV4dERhc2hib2FyZENvbXBvbmVudFxuICApIHtcbiAgICB0aGlzLnRpbWVDb250cm9sc0Zvcm1Hcm91cCA9IHRoaXMuaW5pdEZvcm0oKTtcbiAgICB0aGlzLnRpbWVDb250cm9sc0Zvcm1Hcm91cC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLmRpc3BsYXlDb25maWcgPSB7IC4uLnRoaXMuZGlzcGxheUNvbmZpZywgLi4udmFsdWUgfTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZGlzcGxheUNvbmZpZz8uZGF0YXBvaW50cz8uZm9yRWFjaChkcCA9PiB0aGlzLmFzc2lnbkNvbnRleHRGcm9tQ29udGV4dERhc2hib2FyZChkcCkpO1xuICAgIGlmICh0aGlzLmRpc3BsYXlDb25maWcuZGF0ZUZyb20gJiYgdGhpcy5kaXNwbGF5Q29uZmlnLmRhdGVUbykge1xuICAgICAgdGhpcy50aW1lUHJvcHMgPSB7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZSh0aGlzLmRpc3BsYXlDb25maWc/LmRhdGVGcm9tKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZSh0aGlzLmRpc3BsYXlDb25maWc/LmRhdGVUbyksXG4gICAgICAgIGludGVydmFsOiB0aGlzLmRpc3BsYXlDb25maWc/LmludGVydmFsLFxuICAgICAgICByZWFsdGltZTogdGhpcy5kaXNwbGF5Q29uZmlnPy5yZWFsdGltZSxcbiAgICAgICAgYWdncmVnYXRpb246IHRoaXMuZGlzcGxheUNvbmZpZz8ucmVhbHRpbWUgPyBudWxsIDogdGhpcy5kaXNwbGF5Q29uZmlnPy5hZ2dyZWdhdGlvblxuICAgICAgfTtcbiAgICB9XG4gICAgdGhpcy5sb2FkZWREYXRhcG9pbnRzID0gdGhpcy5kaXNwbGF5Q29uZmlnPy5kYXRhcG9pbnRzPy5maWx0ZXIoZHAgPT4gZHAuX19hY3RpdmUpIHx8IFtdO1xuICAgIHRoaXMubG9hZGVkQWxhcm1zT3JFdmVudHMgPVxuICAgICAgdGhpcy5kaXNwbGF5Q29uZmlnPy5hbGFybXNFdmVudHNDb25maWdzPy5maWx0ZXIoYWxhcm1PckV2ZW50ID0+IGFsYXJtT3JFdmVudC5fX2FjdGl2ZSkgfHwgW107XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy50aW1lQ29udHJvbHNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmRpc3BsYXlDb25maWcgfHwge30pO1xuICAgIGNvbnN0IGNvbmZpZzogRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnID0gY2hhbmdlc1snY29uZmlnJ10/LmN1cnJlbnRWYWx1ZTtcbiAgICBpZiAoY29uZmlnPy5kYXRlICYmIGNvbmZpZz8ud2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dCAmJiB0aGlzLmRpc3BsYXlDb25maWc/LmRhdGUpIHtcbiAgICAgIGlmICghdGhpcy5kaXNwbGF5Q29uZmlnLnNsaWRlckNoYW5nZSkge1xuICAgICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS51cGRhdGVJbml0aWFsVGltZVJhbmdlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy50aW1lUHJvcHNDaGFuZ2VkKHtcbiAgICAgICAgY3VycmVudERhdGVDb250ZXh0RnJvbURhdGU6IHRoaXMuZGlzcGxheUNvbmZpZz8uZGF0ZVswXS50b0lTT1N0cmluZygpLFxuICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRUb0RhdGU6IHRoaXMuZGlzcGxheUNvbmZpZz8uZGF0ZVsxXS50b0lTT1N0cmluZygpLFxuICAgICAgICBjdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbDogdGhpcy5kaXNwbGF5Q29uZmlnPy5pbnRlcnZhbCxcbiAgICAgICAgcmVhbHRpbWU6IHRoaXMuZGlzcGxheUNvbmZpZz8ucmVhbHRpbWUsXG4gICAgICAgIGFnZ3JlZ2F0aW9uOiB0aGlzLmRpc3BsYXlDb25maWc/LmFnZ3JlZ2F0aW9uXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB0aW1lUHJvcHNDaGFuZ2VkKHRpbWVQcm9wczogVGltZUNvbnRleHRQcm9wcyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdGNoVmFsdWVzID0ge1xuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZSksXG4gICAgICBkYXRlVG86IG5ldyBEYXRlKHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRUb0RhdGUpLFxuICAgICAgaW50ZXJ2YWw6IHRpbWVQcm9wcy5jdXJyZW50RGF0ZUNvbnRleHRJbnRlcnZhbCxcbiAgICAgIC4uLih0aW1lUHJvcHMuYWdncmVnYXRpb24gJiYgeyBhZ2dyZWdhdGlvbjogdGltZVByb3BzLmFnZ3JlZ2F0aW9uIH0pLFxuICAgICAgLi4uKHRpbWVQcm9wcy5yZWFsdGltZSAmJiB7IHJlYWx0aW1lOiB0aW1lUHJvcHMucmVhbHRpbWUgfSlcbiAgICB9O1xuICAgIHRoaXMudGltZUNvbnRyb2xzRm9ybUdyb3VwLnBhdGNoVmFsdWUocGF0Y2hWYWx1ZXMpO1xuICB9XG5cbiAgdXBkYXRlRGFzaGJvYXJkVGltZUNvbnRleHQodGltZVByb3BzOiBEYXRhcG9pbnRzR3JhcGhXaWRnZXRUaW1lUHJvcHMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5Q29uZmlnPy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0KSB7XG4gICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5lbWl0UHJvcGVydHlVcGRhdGUodGltZVByb3BzKTtcbiAgICB9XG4gICAgdGhpcy50aW1lQ29udHJvbHNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aW1lUHJvcHMpO1xuICAgIHRoaXMudGltZVByb3BzID0geyAuLi50aW1lUHJvcHMsIHJlYWx0aW1lOiBmYWxzZSB9O1xuICB9XG5cbiAgdXBkYXRlVGltZVJhbmdlT25SZWFsdGltZShcbiAgICB0aW1lUmFuZ2U6IFBpY2s8RGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLCAnZGF0ZUZyb20nIHwgJ2RhdGVUbyc+XG4gICk6IHZvaWQge1xuICAgIHRoaXMudGltZUNvbnRyb2xzRm9ybUdyb3VwLnBhdGNoVmFsdWUodGltZVJhbmdlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICB0b2dnbGVDaGFydChkYXRhcG9pbnQ6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRpc3BsYXlDb25maWc/LmRhdGFwb2ludHM/LmZpbHRlcihkcCA9PiBkcC5fX2FjdGl2ZSkubGVuZ3RoID09PSAxICYmXG4gICAgICBkYXRhcG9pbnQuX19hY3RpdmVcbiAgICApIHtcbiAgICAgIC8vIGF0IGxlYXN0IDEgZGF0YXBvaW50IHNob3VsZCBiZSBhY3RpdmVcbiAgICAgIHRoaXMuaGFzQXRMZWFzdE9uZURhdGFwb2ludEFjdGl2ZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkYXRhcG9pbnQuX19hY3RpdmUgPSAhZGF0YXBvaW50Ll9fYWN0aXZlO1xuICAgIHRoaXMuaGFzQXRMZWFzdE9uZURhdGFwb2ludEFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmxvYWRlZERhdGFwb2ludHMuZmluZChkcCA9PiBkcC5sYWJlbCA9PT0gZGF0YXBvaW50LmxhYmVsKSkge1xuICAgICAgdGhpcy5sb2FkZWREYXRhcG9pbnRzLnB1c2goZGF0YXBvaW50KTtcbiAgICAgIHRoaXMuZGlzcGxheUNvbmZpZyA9IHsgLi4udGhpcy5kaXNwbGF5Q29uZmlnIH07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hhcnRDb21wb25lbnQudG9nZ2xlRGF0YXBvaW50U2VyaWVzVmlzaWJpbGl0eShkYXRhcG9pbnQpO1xuICB9XG5cbiAgaGFuZGxlRGF0YXBvaW50T3V0T2ZTeW5jKGRwT3V0T2ZTeW5jOiBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gKGRwOiBLUElEZXRhaWxzKSA9PiBkcC5fX3RhcmdldD8uaWQgKyBkcC5mcmFnbWVudCArIGRwLnNlcmllcztcbiAgICBjb25zdCBkcE1hdGNoID0gdGhpcy5kaXNwbGF5Q29uZmlnPy5kYXRhcG9pbnRzPy5maW5kKGRwID0+IGtleShkcCkgPT09IGtleShkcE91dE9mU3luYykpO1xuICAgIGlmICghZHBNYXRjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGFwb2ludHNPdXRPZlN5bmMuc2V0KGRwTWF0Y2gsIHRydWUpO1xuICB9XG5cbiAgdG9nZ2xlTWFya2VkQXJlYShhbGFybTogQWxhcm1EZXRhaWxzRXh0ZW5kZWQpOiB2b2lkIHtcbiAgICB0aGlzLmVuYWJsZWRNYXJrZWRBcmVhQWxhcm1UeXBlID0gYWxhcm0uZmlsdGVycy50eXBlO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaXRlbVR5cGU6IGFsYXJtLmZpbHRlcnMudHlwZVxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5jaGFydENvbXBvbmVudC5vbkNoYXJ0Q2xpY2socGFyYW1zKTtcbiAgfVxuXG4gIHRvZ2dsZUFsYXJtRXZlbnRUeXBlKGFsYXJtT3JFdmVudDogQWxhcm1PckV2ZW50RXh0ZW5kZWQpOiB2b2lkIHtcbiAgICBpZiAoYWxhcm1PckV2ZW50LnRpbWVsaW5lVHlwZSA9PT0gJ0FMQVJNJykge1xuICAgICAgdGhpcy5hbGFybXMgPSB0aGlzLmFsYXJtcy5tYXAoYWxhcm0gPT4ge1xuICAgICAgICBpZiAoYWxhcm0uZmlsdGVycy50eXBlID09PSBhbGFybU9yRXZlbnQuZmlsdGVycy50eXBlKSB7XG4gICAgICAgICAgYWxhcm0uX19oaWRkZW4gPSAhYWxhcm0uX19oaWRkZW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsYXJtO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZXZlbnRzID0gdGhpcy5ldmVudHMubWFwKGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmZpbHRlcnMudHlwZSA9PT0gYWxhcm1PckV2ZW50LmZpbHRlcnMudHlwZSkge1xuICAgICAgICAgIGV2ZW50Ll9faGlkZGVuID0gIWV2ZW50Ll9faGlkZGVuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubG9hZGVkQWxhcm1zT3JFdmVudHMuZmluZChhT3JFID0+IGFPckUuZmlsdGVycy50eXBlID09PSBhbGFybU9yRXZlbnQuZmlsdGVycy50eXBlKSkge1xuICAgICAgdGhpcy5sb2FkZWRBbGFybXNPckV2ZW50cy5wdXNoKGFsYXJtT3JFdmVudCk7XG4gICAgICB0aGlzLmRpc3BsYXlDb25maWcgPSB7IC4uLnRoaXMuZGlzcGxheUNvbmZpZyB9O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNoYXJ0Q29tcG9uZW50LnRvZ2dsZUFsYXJtRXZlbnRTZXJpZXNWaXNpYmlsaXR5KGFsYXJtT3JFdmVudCk7XG4gIH1cblxuICB1cGRhdGVBbGFybXNBbmRFdmVudHMoYWxhcm1zRXZlbnRzQ29uZmlnczogQWxhcm1PckV2ZW50RXh0ZW5kZWRbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxhcm1zID0gYWxhcm1zRXZlbnRzQ29uZmlncy5maWx0ZXIoXG4gICAgICBhbGFybSA9PiBhbGFybS50aW1lbGluZVR5cGUgPT09ICdBTEFSTSdcbiAgICApIGFzIEFsYXJtRGV0YWlsc0V4dGVuZGVkW107XG4gICAgdGhpcy5ldmVudHMgPSBhbGFybXNFdmVudHNDb25maWdzLmZpbHRlcihcbiAgICAgIGV2ZW50ID0+IGV2ZW50LnRpbWVsaW5lVHlwZSA9PT0gJ0VWRU5UJ1xuICAgICkgYXMgRXZlbnREZXRhaWxzRXh0ZW5kZWRbXTtcbiAgICBpZiAodGhpcy5hbGFybXMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmFsYXJtcy5maW5kKGFsYXJtID0+IGFsYXJtLl9fYWN0aXZlKSkge1xuICAgICAgdGhpcy5oYXNBdExlYXN0T25lQWxhcm1BY3RpdmUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJTZXZlcml0eShldmVudFRhcmdldDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5hbGFybXMgPSB0aGlzLmFsYXJtcy5tYXAoYWxhcm0gPT4ge1xuICAgICAgaWYgKCFhbGFybS5fX3NldmVyaXR5KSB7XG4gICAgICAgIGFsYXJtLl9fc2V2ZXJpdHkgPSBbXTtcbiAgICAgIH1cbiAgICAgIGFsYXJtLl9fc2V2ZXJpdHkgPSBPYmplY3Qua2V5cyhldmVudFRhcmdldC5zZXZlcml0eU9wdGlvbnMpLmZpbHRlcihcbiAgICAgICAgKHNldmVyaXR5KTogc2V2ZXJpdHkgaXMga2V5b2YgU2V2ZXJpdHlTZXR0aW5ncyA9PlxuICAgICAgICAgIGV2ZW50VGFyZ2V0LnNldmVyaXR5T3B0aW9uc1tzZXZlcml0eSBhcyBrZXlvZiBTZXZlcml0eVNldHRpbmdzXVxuICAgICAgKSBhcyBTZXZlcml0eVR5cGVbXTtcblxuICAgICAgaWYgKCFhbGFybS5fX3N0YXR1cykge1xuICAgICAgICBhbGFybS5fX3N0YXR1cyA9IFtdO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3RhdHVzZXMgPSBPYmplY3Qua2V5cyhBTEFSTV9TVEFUVVNfTEFCRUxTKSBhcyBBbGFybVN0YXR1c1R5cGVbXTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkU3RhdHVzZXMgPSBldmVudFRhcmdldC5zaG93Q2xlYXJlZFxuICAgICAgICA/IHN0YXR1c2VzXG4gICAgICAgIDogc3RhdHVzZXMuZmlsdGVyKHN0YXR1cyA9PiBzdGF0dXMgIT09ICdDTEVBUkVEJyk7XG4gICAgICBhbGFybS5fX3N0YXR1cyA9IGZpbHRlcmVkU3RhdHVzZXM7XG4gICAgICByZXR1cm4gYWxhcm07XG4gICAgfSk7XG4gICAgdGhpcy5kaXNwbGF5Q29uZmlnID0geyAuLi50aGlzLmRpc3BsYXlDb25maWcgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXNzaWduQ29udGV4dEZyb21Db250ZXh0RGFzaGJvYXJkKGRhdGFwb2ludDogS1BJRGV0YWlscykge1xuICAgIGlmICghdGhpcy5kYXNoYm9hcmRDb250ZXh0Q29tcG9uZW50Py5pc0RldmljZVR5cGVEYXNoYm9hcmQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZGFzaGJvYXJkQ29udGV4dENvbXBvbmVudD8uY29udGV4dDtcbiAgICBpZiAoY29udGV4dD8uaWQpIHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgaWQgfSA9IGNvbnRleHQ7XG4gICAgICBkYXRhcG9pbnQuX190YXJnZXQgPSB7IG5hbWUsIGlkIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0Rm9ybSgpIHtcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBkYXRlRnJvbTogW3VuZGVmaW5lZCBhcyB1bmtub3duIGFzIERhdGUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBkYXRlVG86IFt1bmRlZmluZWQgYXMgdW5rbm93biBhcyBEYXRlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgaW50ZXJ2YWw6IFtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlnPy5pbnRlcnZhbCB8fCAoJ2hvdXJzJyBhcyBJbnRlcnZhbFsnaWQnXSksXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgXSxcbiAgICAgIGFnZ3JlZ2F0aW9uOiBbbnVsbCBhcyBhZ2dyZWdhdGlvblR5cGUgfCBudWxsLCBbXV0sXG4gICAgICByZWFsdGltZTogW2ZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgd2lkZ2V0SW5zdGFuY2VHbG9iYWxUaW1lQ29udGV4dDogW2ZhbHNlLCBbXV1cbiAgICB9KTtcbiAgICBmb3JtLnBhdGNoVmFsdWUodGhpcy5kaXNwbGF5Q29uZmlnIHx8IHt9KTtcbiAgICByZXR1cm4gZm9ybTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInAtbC0xNiBwLXItMTZcIj5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMTYgYS1pLXN0YXJ0XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXNtIGZsZXgtbm8tc2hyaW5rXCJcbiAgICAgICpuZ0lmPVwiIWRpc3BsYXlDb25maWc/LndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHRcIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBZ2dyZWdhdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0b29sdGlwPVwie3tcbiAgICAgICAgICAoZGlzcGxheUNvbmZpZz8uYWdncmVnYXRpb25cbiAgICAgICAgICAgID8gQUdHUkVHQVRJT05fVEVYVFNbZGlzcGxheUNvbmZpZy5hZ2dyZWdhdGlvbl1cbiAgICAgICAgICAgIDogQUdHUkVHQVRJT05fVEVYVFMudW5kZWZpbmVkXG4gICAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgICB9fVwiXG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgID5cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb24tMTRcIlxuICAgICAgICAgIFtjOHlJY29uXT1cIlxuICAgICAgICAgICAgZGlzcGxheUNvbmZpZz8uYWdncmVnYXRpb25cbiAgICAgICAgICAgICAgPyBBR0dSRUdBVElPTl9JQ09OU1tkaXNwbGF5Q29uZmlnLmFnZ3JlZ2F0aW9uXVxuICAgICAgICAgICAgICA6IEFHR1JFR0FUSU9OX0lDT05TLnVuZGVmaW5lZFxuICAgICAgICAgIFwiXG4gICAgICAgID48L2k+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGM4eS10aW1lLWNvbnRleHRcbiAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgKGNvbnRleHRDaGFuZ2UpPVwidGltZVByb3BzQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW2NoYW5nZWREYXRlQ29udGV4dF09XCJ0aW1lUHJvcHNcIlxuICAgICAgICBbY29udHJvbHNBdmFpbGFibGVdPVwie1xuICAgICAgICAgIHJlYWx0aW1lOiB0cnVlLFxuICAgICAgICAgIHRpbWVSYW5nZTogZGlzcGxheUNvbmZpZz8uZGlzcGxheURhdGVTZWxlY3Rpb24sXG4gICAgICAgICAgaW50ZXJ2YWw6IGRpc3BsYXlDb25maWc/LmRpc3BsYXlEYXRlU2VsZWN0aW9uLFxuICAgICAgICAgIGFnZ3JlZ2F0aW9uOiBkaXNwbGF5Q29uZmlnPy5kaXNwbGF5QWdncmVnYXRpb25TZWxlY3Rpb25cbiAgICAgICAgfVwiXG4gICAgICA+PC9jOHktdGltZS1jb250ZXh0PlxuICAgIDwvZGl2PlxuICAgIDxjOHktYWxhcm1zLWZpbHRlclxuICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzIGZvcm0tZ3JvdXAtc21cIlxuICAgICAgKm5nSWY9XCJoYXNBdExlYXN0T25lQWxhcm1BY3RpdmVcIlxuICAgICAgKGZpbHRlckFwcGxpZWQpPVwiZmlsdGVyU2V2ZXJpdHkoJGV2ZW50KVwiXG4gICAgPjwvYzh5LWFsYXJtcy1maWx0ZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG8gYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSBmbGV4LW5vLXNocmlua1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1NhdmUgYXMgaW1hZ2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdG9vbHRpcD1cInt7ICdTYXZlIGFzIGltYWdlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cImNoYXJ0LnNhdmVBc0ltYWdlKClcIlxuICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICA+XG4gICAgICAgIDxpXG4gICAgICAgICAgY2xhc3M9XCJpY29uLTE0XCJcbiAgICAgICAgICBjOHlJY29uPVwiaW1hZ2UtZmlsZS1jaGVja2VkXCJcbiAgICAgICAgPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1mbGV4XCJcbiAgICBzdHlsZT1cImFsaWduLWl0ZW1zOiBjZW50ZXJcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc20gbS1yLThcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgW3BvcG92ZXJdPVwibGVnZW5kSGVscFRlbXBsYXRlXCJcbiAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgW2FkYXB0aXZlUG9zaXRpb25dPVwiZmFsc2VcIlxuICAgID48L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93IHAtdC04IGQtZmxleCBhLWktc3RhcnQgZ2FwLTggcC1iLTRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWRhdGFwb2ludC1waWxsIGZsZXgtbm8tc2hyaW5rXCJcbiAgICAgICAgICB0aXRsZT1cInt7IGRhdGFwb2ludC5sYWJlbCB9fSAtIHt7IGRhdGFwb2ludC5fX3RhcmdldC5uYW1lIH19XCJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YXBvaW50IG9mIGRpc3BsYXlDb25maWcuZGF0YXBvaW50c1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGRhdGFwb2ludC5fX2FjdGl2ZSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2FybmluZyBtLWwtNFwiXG4gICAgICAgICAgICBjOHlJY29uPVwiZXhjbGFtYXRpb24tdHJpYW5nbGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ0F0IGxlYXN0IDEgYWN0aXZlIGRhdGEgcG9pbnRzIG11c3QgYmUgYWN0aXZlLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAqbmdJZj1cIiFoYXNBdExlYXN0T25lRGF0YXBvaW50QWN0aXZlICYmIGRhdGFwb2ludC5fX2FjdGl2ZVwiXG4gICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1kYXRhcG9pbnQtcGlsbF9fYnRuXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3tcbiAgICAgICAgICAgICAgKGRhdGFwb2ludC5fX2FjdGl2ZSA/IGhpZGVEYXRhcG9pbnRMYWJlbCA6IHNob3dEYXRhcG9pbnRMYWJlbCkgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19IFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDaGFydChkYXRhcG9pbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb24tMTRcIlxuICAgICAgICAgICAgICBbYzh5SWNvbl09XCJkYXRhcG9pbnQuX19hY3RpdmUgPyAnZXllIHRleHQtcHJpbWFyeScgOiAnZXllLXNsYXNoIHRleHQtbXV0ZWQnXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1kYXRhcG9pbnQtcGlsbF9fbGFiZWwgYzh5LWRhdGFwb2ludC1waWxsX19idG5cIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwibS1yLTQgaWNvbi0xNFwiXG4gICAgICAgICAgICAgIGM4eUljb249XCJjaXJjbGVcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgY29sb3I6IGRhdGFwb2ludC5jb2xvclxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LW11dGVkJzogIWRhdGFwb2ludC5fX2FjdGl2ZSB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAge3sgZGF0YXBvaW50LmxhYmVsIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LTEwXCI+XG4gICAgICAgICAgICAgICAge3sgZGF0YXBvaW50Ll9fdGFyZ2V0Lm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13YXJuaW5nIG0tbC00XCJcbiAgICAgICAgICAgICAgYzh5SWNvbj1cImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ01lYXN1cmVtZW50cyByZWNlaXZlZCBmb3IgdGhpcyBkYXRhIHBvaW50IG1heSBiZSBvdXQgb2Ygc3luYy4nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGFwb2ludHNPdXRPZlN5bmMuZ2V0KGRhdGFwb2ludClcIlxuICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPCEtLSBBbGFybXMgIC0tPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGFsYXJtIG9mIGFsYXJtc1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWFsYXJtLXBpbGwgZmxleC1uby1zaHJpbmtcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBhbGFybS5maWx0ZXJzLnR5cGUgfX0gXCJcbiAgICAgICAgICAgICpuZ0lmPVwiYWxhcm0uX19hY3RpdmVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13YXJuaW5nIG0tbC00XCJcbiAgICAgICAgICAgICAgYzh5SWNvbj1cImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgJ0FsYXJtIG9mIHRoaXMgdHlwZSBpcyBjdXJyZW50bHkgYWN0aXZlIGFuZCBvdXRzaWRlIG9mIHRoZSBzZWxlY3RlZCB0aW1lIHJhbmdlJ1xuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiZGlzcGxheUNvbmZpZz8uYWN0aXZlQWxhcm1UeXBlc091dE9mUmFuZ2U/LmluY2x1ZGVzKGFsYXJtLmZpbHRlcnMudHlwZSlcIlxuICAgICAgICAgICAgICBbYWRhcHRpdmVQb3NpdGlvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImM4eS1hbGFybS1waWxsX19idG5cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGFsYXJtLmZpbHRlcnMudHlwZSB9fSBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsYXJtRXZlbnRUeXBlKGFsYXJtKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLTE0XCJcbiAgICAgICAgICAgICAgICBbYzh5SWNvbl09XCJhbGFybS5fX2hpZGRlbiA/ICdleWUtc2xhc2ggdGV4dC1tdXRlZCcgOiAnZXllIHRleHQtcHJpbWFyeSdcIlxuICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LWFsYXJtLXBpbGxfX2xhYmVsIGM4eS1hbGFybS1waWxsX19idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWFya2VkQXJlYShhbGFybSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgYWN0aXZlOiAhaXNNYXJrZWRBcmVhRW5hYmxlZCAmJiBhbGFybS5maWx0ZXJzLnR5cGUgPT09IGVuYWJsZWRNYXJrZWRBcmVhQWxhcm1UeXBlXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2lyY2xlLWljb24td3JhcHBlciBjaXJjbGUtaWNvbi13cmFwcGVyLS1zbWFsbCBtLXItNFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYWxhcm0uY29sb3JcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Ryb2tlZC1pY29uXCJcbiAgICAgICAgICAgICAgICAgIGM4eUljb249XCJiZWxsXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LW11dGVkJzogYWxhcm0uX19oaWRkZW4gfVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGFsYXJtLmZpbHRlcnMudHlwZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkIHRleHQtMTBcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGFsYXJtLl9fdGFyZ2V0Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBFdmVudHMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGV2ZW50IG9mIGV2ZW50c1wiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LWV2ZW50LXBpbGwgZmxleC1uby1zaHJpbmtcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBldmVudC5maWx0ZXJzLnR5cGUgfX1cIlxuICAgICAgICAgICAgKm5nSWY9XCJldmVudC5fX2FjdGl2ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImM4eS1ldmVudC1waWxsX19idG5cIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7IGV2ZW50LmZpbHRlcnMudHlwZSB9fSBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsYXJtRXZlbnRUeXBlKGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLTE0XCJcbiAgICAgICAgICAgICAgICBbYzh5SWNvbl09XCJldmVudC5fX2hpZGRlbiA/ICdleWUtc2xhc2ggdGV4dC1tdXRlZCcgOiAnZXllIHRleHQtcHJpbWFyeSdcIlxuICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LWV2ZW50LXBpbGxfX2xhYmVsIGM4eS1ldmVudC1waWxsX19idG5cIj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNpcmNsZS1pY29uLXdyYXBwZXIgY2lyY2xlLWljb24td3JhcHBlci0tc21hbGwgbS1yLTRcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtY29sb3InOiBldmVudC5jb2xvciB9XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInN0cm9rZWQtaWNvblwiXG4gICAgICAgICAgICAgICAgICBjOHlJY29uPVwiYzh5LWV2ZW50c1wiXG4gICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAndGV4dC1tdXRlZCc6IGV2ZW50Ll9faGlkZGVuIH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBldmVudC5maWx0ZXJzLnR5cGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LTEwXCI+XG4gICAgICAgICAgICAgICAgICB7eyBldmVudC5fX3RhcmdldC5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxjOHktY2hhcnRzXG4gICNjaGFydFxuICBbY29uZmlnXT1cImRpc3BsYXlDb25maWdcIlxuICBbYWxlcnRzXT1cImFsZXJ0c1wiXG4gICh1cGRhdGVBbGFybXNBbmRFdmVudHMpPVwidXBkYXRlQWxhcm1zQW5kRXZlbnRzKCRldmVudClcIlxuICAoY29uZmlnQ2hhbmdlT25ab29tT3V0KT1cInVwZGF0ZURhc2hib2FyZFRpbWVDb250ZXh0KCRldmVudClcIlxuICAoZGF0YXBvaW50T3V0T2ZTeW5jKT1cImhhbmRsZURhdGFwb2ludE91dE9mU3luYygkZXZlbnQpXCJcbiAgKHRpbWVSYW5nZUNoYW5nZU9uUmVhbHRpbWUpPVwidXBkYXRlVGltZVJhbmdlT25SZWFsdGltZSgkZXZlbnQpXCJcbiAgKGlzTWFya2VkQXJlYUVuYWJsZWQpPVwiaXNNYXJrZWRBcmVhRW5hYmxlZCA9ICRldmVudFwiXG4+PC9jOHktY2hhcnRzPlxuXG48bmctdGVtcGxhdGUgI2xlZ2VuZEhlbHBUZW1wbGF0ZT5cbiAgPGRpdiBbaW5uZXJIVE1MXT1cImxlZ2VuZEhlbHBcIj48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1496,12 +1496,14 @@ class ChartsComponent {
|
|
|
1496
1496
|
this.chartEventsService = inject(ChartEventsService);
|
|
1497
1497
|
this.chartAlarmsService = inject(ChartAlarmsService);
|
|
1498
1498
|
this.widgetTimeContextDateRangeService = inject(WidgetTimeContextDateRangeService);
|
|
1499
|
+
this.loadedTimeRange = null;
|
|
1499
1500
|
this.chartOption$ = this.configChangedSubject.pipe(switchMap(() => this.loadAlarmsAndEvents()), switchMap(() => this.fetchSeriesForDatapoints$()), switchMap((datapointsWithValues) => {
|
|
1500
1501
|
if (datapointsWithValues.length === 0) {
|
|
1501
1502
|
this.echartsInstance?.clear();
|
|
1502
1503
|
this.showLoadMore = false;
|
|
1503
1504
|
return of(this.getDefaultChartOptions());
|
|
1504
1505
|
}
|
|
1506
|
+
this.loadedTimeRange = { ...this.getTimeRange() };
|
|
1505
1507
|
return this.getChartOptions(datapointsWithValues);
|
|
1506
1508
|
}), tap(v => {
|
|
1507
1509
|
if (v['empty']) {
|
|
@@ -1510,7 +1512,13 @@ class ChartsComponent {
|
|
|
1510
1512
|
this.chartRealtimeService.stopRealtime();
|
|
1511
1513
|
this.startRealtimeIfPossible();
|
|
1512
1514
|
if (this.echartsInstance) {
|
|
1513
|
-
|
|
1515
|
+
/**
|
|
1516
|
+
* * Set the chart options
|
|
1517
|
+
* First parameter is the options to set
|
|
1518
|
+
* Second parameter is a boolean to indicate that the chart should be re-rendered as we do not want to merge.
|
|
1519
|
+
* Third parameter is a boolean to indicate that we want to lazy load the chart.
|
|
1520
|
+
*/
|
|
1521
|
+
this.echartsInstance.setOption(v, true, true);
|
|
1514
1522
|
const options = this.echartsInstance.getOption();
|
|
1515
1523
|
const dataZoom = options['dataZoom'][0];
|
|
1516
1524
|
if (dataZoom.start !== 0) {
|
|
@@ -1520,7 +1528,16 @@ class ChartsComponent {
|
|
|
1520
1528
|
this.sliderZoomUsed = false;
|
|
1521
1529
|
}));
|
|
1522
1530
|
}
|
|
1523
|
-
ngOnChanges() {
|
|
1531
|
+
ngOnChanges(changes) {
|
|
1532
|
+
const currentTimeRange = this.getTimeRange();
|
|
1533
|
+
// Check if the current time range is within the loaded time range to avoid unnecessary updates
|
|
1534
|
+
if (this.loadedTimeRange &&
|
|
1535
|
+
new Date(currentTimeRange.dateFrom) >= new Date(this.loadedTimeRange.dateFrom) &&
|
|
1536
|
+
new Date(currentTimeRange.dateTo) <= new Date(this.loadedTimeRange.dateTo) &&
|
|
1537
|
+
changes.config.previousValue?.dateFrom !== changes.config.currentValue.dateFrom &&
|
|
1538
|
+
changes.config.previousValue?.dateTo !== changes.config.currentValue.dateTo) {
|
|
1539
|
+
return;
|
|
1540
|
+
}
|
|
1524
1541
|
this.configChangedSubject.next();
|
|
1525
1542
|
}
|
|
1526
1543
|
ngOnInit() {
|
|
@@ -1662,6 +1679,36 @@ class ChartsComponent {
|
|
|
1662
1679
|
timeout = setTimeout(() => func(...args), wait);
|
|
1663
1680
|
};
|
|
1664
1681
|
}
|
|
1682
|
+
/**
|
|
1683
|
+
* Toggles the visibility of a series in the chart based on the provided datapoint.
|
|
1684
|
+
* @param datapoint - The datapoint to toggle visibility for.
|
|
1685
|
+
*/
|
|
1686
|
+
toggleDatapointSeriesVisibility(datapoint) {
|
|
1687
|
+
const series = this.echartsInstance.getOption().series;
|
|
1688
|
+
const seriesToUpdate = series.find(s => s.datapointLabel === datapoint.label);
|
|
1689
|
+
if (seriesToUpdate) {
|
|
1690
|
+
this.echartsInstance.dispatchAction({
|
|
1691
|
+
type: 'legendToggleSelect',
|
|
1692
|
+
name: seriesToUpdate.name
|
|
1693
|
+
});
|
|
1694
|
+
}
|
|
1695
|
+
}
|
|
1696
|
+
/**
|
|
1697
|
+
* Toggles the visibility of a series in the chart based on the provided alarm or event.
|
|
1698
|
+
* @param alarmOrEvent - The alarm or event to toggle visibility for.
|
|
1699
|
+
*/
|
|
1700
|
+
toggleAlarmEventSeriesVisibility(alarmOrEvent) {
|
|
1701
|
+
const series = this.echartsInstance.getOption().series;
|
|
1702
|
+
const seriesToUpdate = series.filter(s => s.name === `${alarmOrEvent.label}-markPoint` || s.name === `${alarmOrEvent.label}-markLine`);
|
|
1703
|
+
if (seriesToUpdate) {
|
|
1704
|
+
seriesToUpdate.forEach(s => {
|
|
1705
|
+
this.echartsInstance.dispatchAction({
|
|
1706
|
+
type: 'legendToggleSelect',
|
|
1707
|
+
name: s.name
|
|
1708
|
+
});
|
|
1709
|
+
});
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1665
1712
|
getDefaultChartOptions() {
|
|
1666
1713
|
return {
|
|
1667
1714
|
title: {
|