@igo2/integration 18.0.0-next.9 → 18.0.0
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/esm2022/lib/analytics/analytics-listener.service.mjs +6 -2
- package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +5 -1
- package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +4 -4
- package/esm2022/lib/directions/directions.state.mjs +6 -18
- package/esm2022/lib/draw/draw.state.mjs +3 -3
- package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +4 -4
- package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +4 -4
- package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +104 -104
- package/esm2022/lib/geometry-form/data-issue-reporter-tool/data-issue-reporter-tool.component.mjs +7 -3
- package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +9 -3
- package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +22 -22
- package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +49 -20
- package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +6 -6
- package/esm2022/lib/map/map-proximity.state.mjs +7 -8
- package/esm2022/lib/map/map-tool/map-tool.component.mjs +49 -13
- package/esm2022/lib/map/map-tools/map-tools.component.mjs +57 -24
- package/esm2022/lib/map/map.state.mjs +1 -3
- package/esm2022/lib/measure/measure.state.mjs +4 -3
- package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +1 -1
- package/esm2022/lib/search/search.state.mjs +2 -2
- package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +4 -3
- package/fesm2022/igo2-integration.mjs +334 -243
- package/fesm2022/igo2-integration.mjs.map +1 -1
- package/lib/directions/directions-tool/directions-tool.component.d.ts +3 -3
- package/lib/directions/directions.state.d.ts +2 -2
- package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +4 -6
- package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +5 -6
- package/lib/map/map-details-tool/map-details-tool.component.d.ts +12 -4
- package/lib/map/map-legend/map-legend-tool.component.d.ts +4 -4
- package/lib/map/map-proximity.state.d.ts +4 -3
- package/lib/map/map-tool/map-tool.component.d.ts +14 -3
- package/lib/map/map-tools/map-tools.component.d.ts +15 -6
- package/lib/workspace/workspace-button/workspace-button.component.d.ts +4 -4
- package/package.json +4 -4
|
@@ -4,9 +4,10 @@ import { ChangeDetectorRef, Component, Input } from '@angular/core';
|
|
|
4
4
|
import { MatIconModule } from '@angular/material/icon';
|
|
5
5
|
import { MatListModule } from '@angular/material/list';
|
|
6
6
|
import { ToolComponent } from '@igo2/common/tool';
|
|
7
|
+
import { ConfigService } from '@igo2/core/config';
|
|
7
8
|
import { IgoLanguageModule } from '@igo2/core/language';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
9
|
+
import { Media, MediaService } from '@igo2/core/media';
|
|
10
|
+
import { ExportButtonComponent, LayerListControlsEnum, LayerViewerComponent, MetadataButtonComponent, OgcFilterButtonComponent, SearchSourceService, TimeFilterButtonComponent, TrackFeatureButtonComponent, sourceCanSearch } from '@igo2/geo';
|
|
10
11
|
import { ImportExportMode, ImportExportState } from '../../import-export/import-export.state';
|
|
11
12
|
import { WorkspaceButtonComponent } from '../../workspace';
|
|
12
13
|
import { ToolState } from './../../tool/tool.state';
|
|
@@ -16,15 +17,20 @@ import * as i1 from "./../map.state";
|
|
|
16
17
|
import * as i2 from "./../../tool/tool.state";
|
|
17
18
|
import * as i3 from "@igo2/geo";
|
|
18
19
|
import * as i4 from "../../import-export/import-export.state";
|
|
19
|
-
import * as i5 from "@
|
|
20
|
-
import * as i6 from "@
|
|
21
|
-
import * as i7 from "@
|
|
20
|
+
import * as i5 from "@igo2/core/config";
|
|
21
|
+
import * as i6 from "@igo2/core/media";
|
|
22
|
+
import * as i7 from "@angular/material/list";
|
|
23
|
+
import * as i8 from "@angular/material/icon";
|
|
24
|
+
import * as i9 from "@ngx-translate/core";
|
|
22
25
|
let MapDetailsToolComponent = class MapDetailsToolComponent {
|
|
23
26
|
mapState;
|
|
24
27
|
toolState;
|
|
25
28
|
searchSourceService;
|
|
26
|
-
cdRef;
|
|
27
29
|
importExportState;
|
|
30
|
+
configService;
|
|
31
|
+
mediaService;
|
|
32
|
+
cdr;
|
|
33
|
+
isDesktop;
|
|
28
34
|
delayedShowEmptyMapContent = false;
|
|
29
35
|
toggleLegendOnVisibilityChange = false;
|
|
30
36
|
expandLegendOfVisibleLayers = false;
|
|
@@ -34,12 +40,24 @@ let MapDetailsToolComponent = class MapDetailsToolComponent {
|
|
|
34
40
|
layerListControls = {};
|
|
35
41
|
queryBadge = false;
|
|
36
42
|
layerAdditionAllowed = true;
|
|
43
|
+
_layerViewerOptions;
|
|
44
|
+
get layerViewerOptions() {
|
|
45
|
+
return {
|
|
46
|
+
filterAndSortOptions: this.layerFilterAndSortOptions,
|
|
47
|
+
legend: {
|
|
48
|
+
showForVisibleLayers: this.expandLegendOfVisibleLayers,
|
|
49
|
+
showOnVisibilityChange: this.toggleLegendOnVisibilityChange,
|
|
50
|
+
updateOnResolutionChange: this.updateLegendOnResolutionChange
|
|
51
|
+
},
|
|
52
|
+
queryBadge: this.queryBadge,
|
|
53
|
+
...this._layerViewerOptions
|
|
54
|
+
};
|
|
55
|
+
}
|
|
37
56
|
get map() {
|
|
38
57
|
return this.mapState.map;
|
|
39
58
|
}
|
|
40
59
|
get layers$() {
|
|
41
|
-
return this.map.
|
|
42
|
-
(!this.excludeBaseLayers || !layer.baseLayer))));
|
|
60
|
+
return this.map.layerController.all$;
|
|
43
61
|
}
|
|
44
62
|
get excludeBaseLayers() {
|
|
45
63
|
return this.layerListControls.excludeBaseLayers || false;
|
|
@@ -73,18 +91,22 @@ let MapDetailsToolComponent = class MapDetailsToolComponent {
|
|
|
73
91
|
get contextToolInToolbar() {
|
|
74
92
|
return this.toolState.toolbox.getToolbar().indexOf('contextManager') !== -1;
|
|
75
93
|
}
|
|
76
|
-
constructor(mapState, toolState, searchSourceService,
|
|
94
|
+
constructor(mapState, toolState, searchSourceService, importExportState, configService, mediaService, cdr) {
|
|
77
95
|
this.mapState = mapState;
|
|
78
96
|
this.toolState = toolState;
|
|
79
97
|
this.searchSourceService = searchSourceService;
|
|
80
|
-
this.cdRef = cdRef;
|
|
81
98
|
this.importExportState = importExportState;
|
|
99
|
+
this.configService = configService;
|
|
100
|
+
this.mediaService = mediaService;
|
|
101
|
+
this.cdr = cdr;
|
|
102
|
+
this._layerViewerOptions = this.configService.getConfig('layer');
|
|
82
103
|
}
|
|
83
104
|
ngOnInit() {
|
|
105
|
+
this.handleMedia();
|
|
84
106
|
// prevent message to be shown too quickly. Waiting for layers
|
|
85
107
|
setTimeout(() => {
|
|
86
108
|
this.delayedShowEmptyMapContent = true;
|
|
87
|
-
this.
|
|
109
|
+
this.cdr.detectChanges();
|
|
88
110
|
}, 250);
|
|
89
111
|
}
|
|
90
112
|
searchEmit() {
|
|
@@ -108,8 +130,14 @@ let MapDetailsToolComponent = class MapDetailsToolComponent {
|
|
|
108
130
|
this.importExportState.setMode(ImportExportMode.export);
|
|
109
131
|
this.toolState.toolbox.activateTool('importExport');
|
|
110
132
|
}
|
|
111
|
-
|
|
112
|
-
|
|
133
|
+
handleMedia() {
|
|
134
|
+
this.mediaService.media$.subscribe((result) => {
|
|
135
|
+
this.isDesktop = result === Media.Desktop;
|
|
136
|
+
this.cdr.detectChanges();
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapDetailsToolComponent, deps: [{ token: i1.MapState }, { token: i2.ToolState }, { token: i3.SearchSourceService }, { token: i4.ImportExportState }, { token: i5.ConfigService }, { token: i6.MediaService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapDetailsToolComponent, isStandalone: true, selector: "igo-map-details-tool", inputs: { toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", ogcButton: "ogcButton", timeButton: "timeButton", layerListControls: "layerListControls", queryBadge: "queryBadge", layerAdditionAllowed: "layerAdditionAllowed" }, ngImport: i0, template: "<igo-layer-viewer\n class=\"mapDetailsList\"\n *ngIf=\"(layers$ | async).length; else empty\"\n [map]=\"map\"\n [options]=\"layerViewerOptions\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n>\n <ng-template #customBottomActions let-layer=\"layer\">\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n <igo-export-button\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></igo-export-button>\n <igo-ogc-filter-button\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n ></igo-ogc-filter-button>\n <igo-time-filter-button\n [header]=\"timeButton\"\n [layer]=\"layer\"\n ></igo-time-filter-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n </ng-template>\n</igo-layer-viewer>\n\n<ng-template #empty>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>search</mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}:host .mapDetailsList{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LayerViewerComponent, selector: "igo-layer-viewer", inputs: ["map", "options", "isDesktop", "excludeBaseLayers"], outputs: ["appliedFilterAndSort"] }, { kind: "component", type: WorkspaceButtonComponent, selector: "igo-workspace-button", inputs: ["layer", "color"] }, { kind: "component", type: ExportButtonComponent, selector: "igo-export-button", inputs: ["layer", "color"] }, { kind: "component", type: OgcFilterButtonComponent, selector: "igo-ogc-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TimeFilterButtonComponent, selector: "igo-time-filter-button", inputs: ["layer", "map", "color", "header"] }, { kind: "component", type: TrackFeatureButtonComponent, selector: "igo-track-feature-button", inputs: ["layer", "trackFeature"] }, { kind: "component", type: MetadataButtonComponent, selector: "igo-metadata-button", inputs: ["layer", "color"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i7.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
|
|
113
141
|
};
|
|
114
142
|
MapDetailsToolComponent = __decorate([
|
|
115
143
|
ToolComponent({
|
|
@@ -120,16 +148,17 @@ MapDetailsToolComponent = __decorate([
|
|
|
120
148
|
__metadata("design:paramtypes", [MapState,
|
|
121
149
|
ToolState,
|
|
122
150
|
SearchSourceService,
|
|
123
|
-
|
|
124
|
-
|
|
151
|
+
ImportExportState,
|
|
152
|
+
ConfigService,
|
|
153
|
+
MediaService,
|
|
154
|
+
ChangeDetectorRef])
|
|
125
155
|
], MapDetailsToolComponent);
|
|
126
156
|
export { MapDetailsToolComponent };
|
|
127
157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapDetailsToolComponent, decorators: [{
|
|
128
158
|
type: Component,
|
|
129
159
|
args: [{ selector: 'igo-map-details-tool', standalone: true, imports: [
|
|
130
160
|
NgIf,
|
|
131
|
-
|
|
132
|
-
LayerListBindingDirective,
|
|
161
|
+
LayerViewerComponent,
|
|
133
162
|
WorkspaceButtonComponent,
|
|
134
163
|
ExportButtonComponent,
|
|
135
164
|
OgcFilterButtonComponent,
|
|
@@ -140,8 +169,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
140
169
|
MatIconModule,
|
|
141
170
|
AsyncPipe,
|
|
142
171
|
IgoLanguageModule
|
|
143
|
-
], template: "<igo-layer-
|
|
144
|
-
}], ctorParameters: () => [{ type: i1.MapState }, { type: i2.ToolState }, { type: i3.SearchSourceService }, { type:
|
|
172
|
+
], template: "<igo-layer-viewer\n class=\"mapDetailsList\"\n *ngIf=\"(layers$ | async).length; else empty\"\n [map]=\"map\"\n [options]=\"layerViewerOptions\"\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [isDesktop]=\"isDesktop\"\n>\n <ng-template #customBottomActions let-layer=\"layer\">\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n <igo-export-button\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></igo-export-button>\n <igo-ogc-filter-button\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n ></igo-ogc-filter-button>\n <igo-time-filter-button\n [header]=\"timeButton\"\n [layer]=\"layer\"\n ></igo-time-filter-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n </ng-template>\n</igo-layer-viewer>\n\n<ng-template #empty>\n <mat-list *ngIf=\"delayedShowEmptyMapContent\">\n <p class=\"map-empty mat-typography\">\n {{ 'igo.integration.mapTool.empty' | translate }}\n </p>\n <p\n *ngIf=\"\n layerAdditionAllowed &&\n (searchToolInToolbar || catalogToolInToolbar || contextToolInToolbar)\n \"\n class=\"map-empty mat-typography\"\n >\n {{ 'igo.integration.mapTool.customize' | translate }}\n </p>\n <mat-list-item *ngIf=\"layerAdditionAllowed && searchToolInToolbar\">\n <mat-icon matListItemIcon>search</mat-icon>\n <span\n matListItemTitle\n class=\"search-tool mat-typography\"\n (click)=\"searchEmit()\"\n >\n {{ 'igo.integration.mapTool.search-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && catalogToolInToolbar\">\n <mat-icon matListItemIcon>library_add</mat-icon>\n <span\n matListItemTitle\n class=\"catalog-tool mat-typography\"\n (click)=\"catalogEmit()\"\n >\n {{ 'igo.integration.mapTool.catalog-tool' | translate }}\n </span>\n </mat-list-item>\n <mat-list-item *ngIf=\"layerAdditionAllowed && contextToolInToolbar\">\n <mat-icon matListItemIcon>star</mat-icon>\n <span\n matListItemTitle\n class=\"context-tool mat-typography\"\n (click)=\"contextEmit()\"\n >\n {{ 'igo.integration.mapTool.context-tool' | translate }}\n </span>\n </mat-list-item>\n </mat-list>\n</ng-template>\n", styles: [":host .map-empty,:host .search-tool,:host .catalog-tool,:host .context-tool{margin:10px}:host .map-empty{text-align:justify}:host .search-tool,:host .catalog-tool,:host .context-tool{cursor:pointer}:host mat-list mat-list-item h4{font-weight:700}:host mat-list-item ::ng-deep .mdc-list-item__primary-text{font-size:smaller}:host mat-list.mat-mdc-list-base mat-list-item.mat-mdc-list-item ::ng-deep div.mdc-list-item__content div.mdc-list-item__primary-text{padding-left:5px}:host .mapDetailsList{overflow:hidden}\n"] }]
|
|
173
|
+
}], ctorParameters: () => [{ type: i1.MapState }, { type: i2.ToolState }, { type: i3.SearchSourceService }, { type: i4.ImportExportState }, { type: i5.ConfigService }, { type: i6.MediaService }, { type: i0.ChangeDetectorRef }], propDecorators: { toggleLegendOnVisibilityChange: [{
|
|
145
174
|
type: Input
|
|
146
175
|
}], expandLegendOfVisibleLayers: [{
|
|
147
176
|
type: Input
|
|
@@ -158,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
158
187
|
}], layerAdditionAllowed: [{
|
|
159
188
|
type: Input
|
|
160
189
|
}] } });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWRldGFpbHMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtZGV0YWlscy10b29sL21hcC1kZXRhaWxzLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLWRldGFpbHMtdG9vbC9tYXAtZGV0YWlscy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hELE9BQU8sRUFDTCxxQkFBcUIsRUFJckIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFFckIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLDJCQUEyQixFQUMzQixlQUFlLEVBQ2hCLE1BQU0sV0FBVyxDQUFDO0FBR25CLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNsQixNQUFNLHlDQUF5QyxDQUFDO0FBQ2pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFD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dEMsS0FBSztnQkFFRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBRUcsOEJBQThCO3NCQUF0QyxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7XG4gIEV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgRXhwb3J0T3B0aW9ucyxcbiAgSWdvTWFwLFxuICBMYXllcixcbiAgTGF5ZXJMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgTGF5ZXJMaXN0Q29tcG9uZW50LFxuICBMYXllckxpc3RDb250cm9sc0VudW0sXG4gIExheWVyTGlzdENvbnRyb2xzT3B0aW9ucyxcbiAgTWV0YWRhdGFCdXR0b25Db21wb25lbnQsXG4gIE9nY0ZpbHRlckJ1dHRvbkNvbXBvbmVudCxcbiAgU2VhcmNoU291cmNlU2VydmljZSxcbiAgVGltZUZpbHRlckJ1dHRvbkNvbXBvbmVudCxcbiAgVHJhY2tGZWF0dXJlQnV0dG9uQ29tcG9uZW50LFxuICBzb3VyY2VDYW5TZWFyY2hcbn0gZnJvbSAnQGlnbzIvZ2VvJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBJbXBvcnRFeHBvcnRNb2RlLFxuICBJbXBvcnRFeHBvcnRTdGF0ZVxufSBmcm9tICcuLi8uLi9pbXBvcnQtZXhwb3J0L2ltcG9ydC1leHBvcnQuc3RhdGUnO1xuaW1wb3J0IHsgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vd29ya3NwYWNlJztcbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4vLi4vLi4vdG9vbC90b29sLnN0YXRlJztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi8uLi9tYXAuc3RhdGUnO1xuXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdtYXBEZXRhaWxzJyxcbiAgdGl0bGU6ICdpZ28uaW50ZWdyYXRpb24udG9vbHMubWFwJyxcbiAgaWNvbjogJ21hcCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLWRldGFpbHMtdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtZGV0YWlscy10b29sLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLWRldGFpbHMtdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBMYXllckxpc3RDb21wb25lbnQsXG4gICAgTGF5ZXJMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgICBXb3Jrc3BhY2VCdXR0b25Db21wb25lbnQsXG4gICAgRXhwb3J0QnV0dG9uQ29tcG9uZW50LFxuICAgIE9nY0ZpbHRlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBUaW1lRmlsdGVyQnV0dG9uQ29tcG9uZW50LFxuICAgIFRyYWNrRmVhdHVyZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBNZXRhZGF0YUJ1dHRvbkNvbXBvbmVudCxcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwRGV0YWlsc1Rvb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQgPSBmYWxzZTtcblxuICBASW5wdXQoKSB0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnMgPSBmYWxzZTtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBvZ2NCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHRpbWVCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGxheWVyTGlzdENvbnRyb2xzOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMgPSB7fTtcblxuICBASW5wdXQoKSBxdWVyeUJhZGdlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbGF5ZXJBZGRpdGlvbkFsbG93ZWQgPSB0cnVlO1xuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cblxuICBnZXQgbGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5tYXAubGF5ZXJzJC5waXBlKFxuICAgICAgbWFwKChsYXllcnMpID0+XG4gICAgICAgIGxheWVycy5maWx0ZXIoXG4gICAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgICAgbGF5ZXIuc2hvd0luTGF5ZXJMaXN0ICE9PSBmYWxzZSAmJlxuICAgICAgICAgICAgKCF0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8ICFsYXllci5iYXNlTGF5ZXIpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMoKTogYW55IHtcbiAgICBjb25zdCBmaWx0ZXJTb3J0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHNob3dUb29sYmFyOiBMYXllckxpc3RDb250cm9sc0VudW0uZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHRoaXMubGF5ZXJMaXN0Q29udHJvbHNcbiAgICApO1xuXG4gICAgc3dpdGNoICh0aGlzLmxheWVyTGlzdENvbnRyb2xzLnNob3dUb29sYmFyKSB7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJTb3J0T3B0aW9ucztcbiAgfVxuXG4gIGdldCBzZWFyY2hUb29sSW5Ub29sYmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmdldFRvb2xiYXIoKS5pbmRleE9mKCdzZWFyY2hSZXN1bHRzJykgIT09IC0xICYmXG4gICAgICB0aGlzLnNlYXJjaFNvdXJjZVNlcnZpY2VcbiAgICAgICAgLmdldFNvdXJjZXMoKVxuICAgICAgICAuZmlsdGVyKHNvdXJjZUNhblNlYXJjaClcbiAgICAgICAgLmZpbHRlcigocykgPT4gcy5hdmFpbGFibGUgJiYgcy5nZXRUeXBlKCkgPT09ICdMYXllcicpLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNhdGFsb2dUb29sSW5Ub29sYmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmdldFRvb2xiYXIoKS5pbmRleE9mKCdjYXRhbG9nJykgIT09IC0xO1xuICB9XG5cbiAgZ2V0IGNvbnRleHRUb29sSW5Ub29sYmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmdldFRvb2xiYXIoKS5pbmRleE9mKCdjb250ZXh0TWFuYWdlcicpICE9PSAtMTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTb3VyY2VTZXJ2aWNlOiBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgaW1wb3J0RXhwb3J0U3RhdGU6IEltcG9ydEV4cG9ydFN0YXRlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBwcmV2ZW50IG1lc3NhZ2UgdG8gYmUgc2hvd24gdG9vIHF1aWNrbHkuIFdhaXRpbmcgZm9yIGxheWVyc1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kZWxheWVkU2hvd0VtcHR5TWFwQ29udGVudCA9IHRydWU7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyNTApO1xuICB9XG5cbiAgc2VhcmNoRW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnc2VhcmNoUmVzdWx0cycpO1xuICB9XG5cbiAgY2F0YWxvZ0VtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2NhdGFsb2cnKTtcbiAgfVxuXG4gIGNvbnRleHRFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdjb250ZXh0TWFuYWdlcicpO1xuICB9XG5cbiAgYWN0aXZhdGVFeHBvcnQobGF5ZXI6IExheWVyKSB7XG4gICAgbGV0IGlkID0gbGF5ZXIuaWQ7XG4gICAgaWYgKGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy53b3Jrc3BhY2VJZCkge1xuICAgICAgaWQgPVxuICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZCAhPT0gbGF5ZXIuaWRcbiAgICAgICAgICA/IGxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkXG4gICAgICAgICAgOiBsYXllci5pZDtcbiAgICB9XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRzRXhwb3J0T3B0aW9ucyh7IGxheWVyczogW2lkXSB9IGFzIEV4cG9ydE9wdGlvbnMpO1xuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0TW9kZShJbXBvcnRFeHBvcnRNb2RlLmV4cG9ydCk7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2ltcG9ydEV4cG9ydCcpO1xuICB9XG59XG4iLCI8aWdvLWxheWVyLWxpc3RcbiAgY2xhc3M9XCJtYXBEZXRhaWxzTGlzdFwiXG4gICpuZ0lmPVwiKGxheWVycyQgfCBhc3luYykubGVuZ3RoOyBlbHNlIGVtcHR5XCJcbiAgW21hcF09XCJtYXBcIlxuICBpZ29MYXllckxpc3RCaW5kaW5nXG4gIFtleGNsdWRlQmFzZUxheWVyc109XCJleGNsdWRlQmFzZUxheWVyc1wiXG4gIFtsYXllckZpbHRlckFuZFNvcnRPcHRpb25zXT1cImxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnNcIlxuICBbZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXT1cImV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyc1wiXG4gIFt0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2VdPVwidG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXCJcbiAgW3VwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZV09XCJ1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VcIlxuICBbcXVlcnlCYWRnZV09XCJxdWVyeUJhZGdlXCJcbj5cbiAgPG5nLXRlbXBsYXRlICNpZ29MYXllckl0ZW1Ub29sYmFyIGxldC1sYXllcj1cImxheWVyXCI+XG4gICAgPCEtLSA8aWdvLWRvd25sb2FkLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1kb3dubG9hZC1idXR0b24+IC0tPlxuICAgIDxpZ28td29ya3NwYWNlLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby13b3Jrc3BhY2UtYnV0dG9uPlxuICAgIDxpZ28tZXhwb3J0LWJ1dHRvblxuICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgIChjbGljayk9XCJhY3RpdmF0ZUV4cG9ydChsYXllcilcIlxuICAgID48L2lnby1leHBvcnQtYnV0dG9uPlxuICAgIDxpZ28tb2djLWZpbHRlci1idXR0b25cbiAgICAgIFtoZWFkZXJdPVwib2djQnV0dG9uXCJcbiAgICAgIFtsYXllcl09XCJsYXllclwiXG4gICAgPjwvaWdvLW9nYy1maWx0ZXItYnV0dG9uPlxuICAgIDxpZ28tdGltZS1maWx0ZXItYnV0dG9uXG4gICAgICBbaGVhZGVyXT1cInRpbWVCdXR0b25cIlxuICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICA+PC9pZ28tdGltZS1maWx0ZXItYnV0dG9uPlxuICAgIDxpZ28tdHJhY2stZmVhdHVyZS1idXR0b25cbiAgICAgIFt0cmFja0ZlYXR1cmVdPVwidHJ1ZVwiXG4gICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgID48L2lnby10cmFjay1mZWF0dXJlLWJ1dHRvbj5cbiAgICA8aWdvLW1ldGFkYXRhLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1tZXRhZGF0YS1idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lnby1sYXllci1saXN0PlxuXG48bmctdGVtcGxhdGUgI2VtcHR5PlxuICA8bWF0LWxpc3QgKm5nSWY9XCJkZWxheWVkU2hvd0VtcHR5TWFwQ29udGVudFwiPlxuICAgIDxwIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuZW1wdHknIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICAgIDxwXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBsYXllckFkZGl0aW9uQWxsb3dlZCAmJlxuICAgICAgICAoc2VhcmNoVG9vbEluVG9vbGJhciB8fCBjYXRhbG9nVG9vbEluVG9vbGJhciB8fCBjb250ZXh0VG9vbEluVG9vbGJhcilcbiAgICAgIFwiXG4gICAgICBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiXG4gICAgPlxuICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmN1c3RvbWl6ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3A+XG4gICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBzZWFyY2hUb29sSW5Ub29sYmFyXCI+XG4gICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICA8c3BhblxuICAgICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoRW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLnNlYXJjaC10b29sJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIGNhdGFsb2dUb29sSW5Ub29sYmFyXCI+XG4gICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPmxpYnJhcnlfYWRkPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICAgY2xhc3M9XCJjYXRhbG9nLXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAoY2xpY2spPVwiY2F0YWxvZ0VtaXQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jYXRhbG9nLXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgY29udGV4dFRvb2xJblRvb2xiYXJcIj5cbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+c3RhcjwvbWF0LWljb24+XG4gICAgICA8c3BhblxuICAgICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICAgIGNsYXNzPVwiY29udGV4dC10b29sIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgKGNsaWNrKT1cImNvbnRleHRFbWl0KClcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY29udGV4dC10b29sJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgPC9tYXQtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWRldGFpbHMtdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtZGV0YWlscy10b29sL21hcC1kZXRhaWxzLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLWRldGFpbHMtdG9vbC9tYXAtZGV0YWlscy10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFFTCxxQkFBcUIsRUFJckIscUJBQXFCLEVBRXJCLG9CQUFvQixFQUVwQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLGVBQWUsRUFDaEIsTUFBTSxXQUFXLENBQUM7QUFJbkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNq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LDBGQUNyQix3QkFBd0IsK0dBQ3hCLHlCQUF5QixnSEFDekIsMkJBQTJCLHdHQUMzQix1QkFBdUIsMkZBQ3ZCLGFBQWEseWJBQ2IsYUFBYSwrS0FDYixTQUFTLDZDQUNULGlCQUFpQjs7QUFHUix1QkFBdUI7SUF6Qm5DLGFBQWEsQ0FBQztRQUNiLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSwyQkFBMkI7UUFDbEMsSUFBSSxFQUFFLEtBQUs7S0FDWixDQUFDO3FDQTJHb0IsUUFBUTtRQUNQLFNBQVM7UUFDQyxtQkFBbUI7UUFDckIsaUJBQWlCO1FBQ3JCLGFBQWE7UUFDZixZQUFZO1FBQ3BCLGlCQUFpQjtHQTVGckIsdUJBQXVCLENBMEluQzs7NEZBMUlZLHVCQUF1QjtrQkFwQm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBR3BCLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QiwyQkFBMkI7d0JBQzNCLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLFNBQVM7d0JBQ1QsaUJBQWlCO3FCQUNsQjs4UEFNUSw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBRUcsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVHLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcblxuaW1wb3J0IHsgVG9vbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbi90b29sJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVkaWEsIE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVkaWEnO1xuaW1wb3J0IHtcbiAgQW55TGF5ZXIsXG4gIEV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgRXhwb3J0T3B0aW9ucyxcbiAgSWdvTWFwLFxuICBMYXllcixcbiAgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLFxuICBMYXllckxpc3RDb250cm9sc09wdGlvbnMsXG4gIExheWVyVmlld2VyQ29tcG9uZW50LFxuICBMYXllclZpZXdlck9wdGlvbnMsXG4gIE1ldGFkYXRhQnV0dG9uQ29tcG9uZW50LFxuICBPZ2NGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gIFNlYXJjaFNvdXJjZVNlcnZpY2UsXG4gIFRpbWVGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gIFRyYWNrRmVhdHVyZUJ1dHRvbkNvbXBvbmVudCxcbiAgc291cmNlQ2FuU2VhcmNoXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgSW1wb3J0RXhwb3J0TW9kZSxcbiAgSW1wb3J0RXhwb3J0U3RhdGVcbn0gZnJvbSAnLi4vLi4vaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LnN0YXRlJztcbmltcG9ydCB7IFdvcmtzcGFjZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3dvcmtzcGFjZSc7XG5pbXBvcnQgeyBUb29sU3RhdGUgfSBmcm9tICcuLy4uLy4uL3Rvb2wvdG9vbC5zdGF0ZSc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4vLi4vbWFwLnN0YXRlJztcblxuQFRvb2xDb21wb25lbnQoe1xuICBuYW1lOiAnbWFwRGV0YWlscycsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLm1hcCcsXG4gIGljb246ICdtYXAnXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLW1hcC1kZXRhaWxzLXRvb2wnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLWRldGFpbHMtdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC1kZXRhaWxzLXRvb2wuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTGF5ZXJWaWV3ZXJDb21wb25lbnQsXG4gICAgV29ya3NwYWNlQnV0dG9uQ29tcG9uZW50LFxuICAgIEV4cG9ydEJ1dHRvbkNvbXBvbmVudCxcbiAgICBPZ2NGaWx0ZXJCdXR0b25Db21wb25lbnQsXG4gICAgVGltZUZpbHRlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBUcmFja0ZlYXR1cmVCdXR0b25Db21wb25lbnQsXG4gICAgTWV0YWRhdGFCdXR0b25Db21wb25lbnQsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE1hcERldGFpbHNUb29sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgaXNEZXNrdG9wOiBib29sZWFuO1xuICBwdWJsaWMgZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQgPSBmYWxzZTtcblxuICBASW5wdXQoKSB0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnMgPSBmYWxzZTtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBvZ2NCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHRpbWVCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGxheWVyTGlzdENvbnRyb2xzOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMgPSB7fTtcblxuICBASW5wdXQoKSBxdWVyeUJhZGdlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgbGF5ZXJBZGRpdGlvbkFsbG93ZWQgPSB0cnVlO1xuXG4gIHByaXZhdGUgX2xheWVyVmlld2VyT3B0aW9uczogUGFydGlhbDxMYXllclZpZXdlck9wdGlvbnM+O1xuICBnZXQgbGF5ZXJWaWV3ZXJPcHRpb25zKCk6IExheWVyVmlld2VyT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbHRlckFuZFNvcnRPcHRpb25zOiB0aGlzLmxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMsXG4gICAgICBsZWdlbmQ6IHtcbiAgICAgICAgc2hvd0ZvclZpc2libGVMYXllcnM6IHRoaXMuZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzLFxuICAgICAgICBzaG93T25WaXNpYmlsaXR5Q2hhbmdlOiB0aGlzLnRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZSxcbiAgICAgICAgdXBkYXRlT25SZXNvbHV0aW9uQ2hhbmdlOiB0aGlzLnVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVxuICAgICAgfSxcbiAgICAgIHF1ZXJ5QmFkZ2U6IHRoaXMucXVlcnlCYWRnZSxcbiAgICAgIC4uLnRoaXMuX2xheWVyVmlld2VyT3B0aW9uc1xuICAgIH07XG4gIH1cblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgZ2V0IGxheWVycyQoKTogT2JzZXJ2YWJsZTxBbnlMYXllcltdPiB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5hbGwkO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGxheWVyRmlsdGVyQW5kU29ydE9wdGlvbnMoKTogYW55IHtcbiAgICBjb25zdCBmaWx0ZXJTb3J0T3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHNob3dUb29sYmFyOiBMYXllckxpc3RDb250cm9sc0VudW0uZGVmYXVsdFxuICAgICAgfSxcbiAgICAgIHRoaXMubGF5ZXJMaXN0Q29udHJvbHNcbiAgICApO1xuXG4gICAgc3dpdGNoICh0aGlzLmxheWVyTGlzdENvbnRyb2xzLnNob3dUb29sYmFyKSB7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM6XG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmFsd2F5cztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIExheWVyTGlzdENvbnRyb2xzRW51bS5uZXZlcjpcbiAgICAgICAgZmlsdGVyU29ydE9wdGlvbnMuc2hvd1Rvb2xiYXIgPSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJTb3J0T3B0aW9ucztcbiAgfVxuXG4gIGdldCBzZWFyY2hUb29sSW5Ub29sYmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmdldFRvb2xiYXIoKS5pbmRleE9mKCdzZWFyY2hSZXN1bHRzJykgIT09IC0xICYmXG4gICAgICB0aGlzLnNlYXJjaFNvdXJjZVNlcnZpY2VcbiAgICAgICAgLmdldFNvdXJjZXMoKVxuICAgICAgICAuZmlsdGVyKHNvdXJjZUNhblNlYXJjaClcbiAgICAgICAgLmZpbHRlcigocykgPT4gcy5hdmFpbGFibGUgJiYgcy5nZXRUeXBlKCkgPT09ICdMYXllcicpLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0IGNhdGFsb2dUb29sSW5Ub29sYmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmdldFRvb2xiYXIoKS5pbmRleE9mKCdjYXRhbG9nJykgIT09IC0xO1xuICB9XG5cbiAgZ2V0IGNvbnRleHRUb29sSW5Ub29sYmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmdldFRvb2xiYXIoKS5pbmRleE9mKCdjb250ZXh0TWFuYWdlcicpICE9PSAtMTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTb3VyY2VTZXJ2aWNlOiBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1wb3J0RXhwb3J0U3RhdGU6IEltcG9ydEV4cG9ydFN0YXRlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwdWJsaWMgbWVkaWFTZXJ2aWNlOiBNZWRpYVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuX2xheWVyVmlld2VyT3B0aW9ucyA9IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2xheWVyJyk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZU1lZGlhKCk7XG5cbiAgICAvLyBwcmV2ZW50IG1lc3NhZ2UgdG8gYmUgc2hvd24gdG9vIHF1aWNrbHkuIFdhaXRpbmcgZm9yIGxheWVyc1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kZWxheWVkU2hvd0VtcHR5TWFwQ29udGVudCA9IHRydWU7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIHNlYXJjaEVtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ3NlYXJjaFJlc3VsdHMnKTtcbiAgfVxuXG4gIGNhdGFsb2dFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdjYXRhbG9nJyk7XG4gIH1cblxuICBjb250ZXh0RW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnY29udGV4dE1hbmFnZXInKTtcbiAgfVxuXG4gIGFjdGl2YXRlRXhwb3J0KGxheWVyOiBMYXllcikge1xuICAgIGxldCBpZCA9IGxheWVyLmlkO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZT8ud29ya3NwYWNlSWQpIHtcbiAgICAgIGlkID1cbiAgICAgICAgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWQgIT09IGxheWVyLmlkXG4gICAgICAgICAgPyBsYXllci5vcHRpb25zLndvcmtzcGFjZS53b3Jrc3BhY2VJZFxuICAgICAgICAgIDogbGF5ZXIuaWQ7XG4gICAgfVxuICAgIHRoaXMuaW1wb3J0RXhwb3J0U3RhdGUuc2V0c0V4cG9ydE9wdGlvbnMoeyBsYXllcnM6IFtpZF0gfSBhcyBFeHBvcnRPcHRpb25zKTtcbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldE1vZGUoSW1wb3J0RXhwb3J0TW9kZS5leHBvcnQpO1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdpbXBvcnRFeHBvcnQnKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWVkaWEoKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVNlcnZpY2UubWVkaWEkLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICB0aGlzLmlzRGVza3RvcCA9IHJlc3VsdCA9PT0gTWVkaWEuRGVza3RvcDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGlnby1sYXllci12aWV3ZXJcbiAgY2xhc3M9XCJtYXBEZXRhaWxzTGlzdFwiXG4gICpuZ0lmPVwiKGxheWVycyQgfCBhc3luYykubGVuZ3RoOyBlbHNlIGVtcHR5XCJcbiAgW21hcF09XCJtYXBcIlxuICBbb3B0aW9uc109XCJsYXllclZpZXdlck9wdGlvbnNcIlxuICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxuICBbaXNEZXNrdG9wXT1cImlzRGVza3RvcFwiXG4+XG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9tQm90dG9tQWN0aW9ucyBsZXQtbGF5ZXI9XCJsYXllclwiPlxuICAgIDxpZ28td29ya3NwYWNlLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby13b3Jrc3BhY2UtYnV0dG9uPlxuICAgIDxpZ28tZXhwb3J0LWJ1dHRvblxuICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgIChjbGljayk9XCJhY3RpdmF0ZUV4cG9ydChsYXllcilcIlxuICAgID48L2lnby1leHBvcnQtYnV0dG9uPlxuICAgIDxpZ28tb2djLWZpbHRlci1idXR0b25cbiAgICAgIFtoZWFkZXJdPVwib2djQnV0dG9uXCJcbiAgICAgIFtsYXllcl09XCJsYXllclwiXG4gICAgPjwvaWdvLW9nYy1maWx0ZXItYnV0dG9uPlxuICAgIDxpZ28tdGltZS1maWx0ZXItYnV0dG9uXG4gICAgICBbaGVhZGVyXT1cInRpbWVCdXR0b25cIlxuICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICA+PC9pZ28tdGltZS1maWx0ZXItYnV0dG9uPlxuICAgIDxpZ28tdHJhY2stZmVhdHVyZS1idXR0b25cbiAgICAgIFt0cmFja0ZlYXR1cmVdPVwidHJ1ZVwiXG4gICAgICBbbGF5ZXJdPVwibGF5ZXJcIlxuICAgID48L2lnby10cmFjay1mZWF0dXJlLWJ1dHRvbj5cbiAgICA8aWdvLW1ldGFkYXRhLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1tZXRhZGF0YS1idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2lnby1sYXllci12aWV3ZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZW1wdHk+XG4gIDxtYXQtbGlzdCAqbmdJZj1cImRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50XCI+XG4gICAgPHAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIj5cbiAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5lbXB0eScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3A+XG4gICAgPHBcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGxheWVyQWRkaXRpb25BbGxvd2VkICYmXG4gICAgICAgIChzZWFyY2hUb29sSW5Ub29sYmFyIHx8IGNhdGFsb2dUb29sSW5Ub29sYmFyIHx8IGNvbnRleHRUb29sSW5Ub29sYmFyKVxuICAgICAgXCJcbiAgICAgIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY3VzdG9taXplJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvcD5cbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIHNlYXJjaFRvb2xJblRvb2xiYXJcIj5cbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtdG9vbCBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hFbWl0KClcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuc2VhcmNoLXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgY2F0YWxvZ1Rvb2xJblRvb2xiYXJcIj5cbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+bGlicmFyeV9hZGQ8L21hdC1pY29uPlxuICAgICAgPHNwYW5cbiAgICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxuICAgICAgICBjbGFzcz1cImNhdGFsb2ctdG9vbCBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgIChjbGljayk9XCJjYXRhbG9nRW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmNhdGFsb2ctdG9vbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBjb250ZXh0VG9vbEluVG9vbGJhclwiPlxuICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5zdGFyPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICAgY2xhc3M9XCJjb250ZXh0LXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAoY2xpY2spPVwiY29udGV4dEVtaXQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jb250ZXh0LXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICA8L21hdC1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -5,7 +5,7 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
5
5
|
import { MatListModule } from '@angular/material/list';
|
|
6
6
|
import { ToolComponent } from '@igo2/common/tool';
|
|
7
7
|
import { IgoLanguageModule } from '@igo2/core/language';
|
|
8
|
-
import { LayerLegendListBindingDirective, LayerLegendListComponent, SearchSourceService, sourceCanSearch } from '@igo2/geo';
|
|
8
|
+
import { LayerLegendListBindingDirective, LayerLegendListComponent, SearchSourceService, isBaseLayer, sourceCanSearch } from '@igo2/geo';
|
|
9
9
|
import { BehaviorSubject, ReplaySubject, combineLatest } from 'rxjs';
|
|
10
10
|
import { debounceTime, map } from 'rxjs/operators';
|
|
11
11
|
import { ToolState } from './../../tool/tool.state';
|
|
@@ -37,10 +37,10 @@ let MapLegendToolComponent = class MapLegendToolComponent {
|
|
|
37
37
|
return this.mapState.map;
|
|
38
38
|
}
|
|
39
39
|
get visibleOrInRangeLayers$() {
|
|
40
|
-
return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.
|
|
40
|
+
return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.displayed)));
|
|
41
41
|
}
|
|
42
42
|
get visibleLayers$() {
|
|
43
|
-
return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible
|
|
43
|
+
return this.layers$.pipe(map((layers) => layers.filter((layer) => layer.visible)));
|
|
44
44
|
}
|
|
45
45
|
get excludeBaseLayers() {
|
|
46
46
|
return this.layerListControls.excludeBaseLayers || false;
|
|
@@ -66,13 +66,13 @@ let MapLegendToolComponent = class MapLegendToolComponent {
|
|
|
66
66
|
}
|
|
67
67
|
ngOnInit() {
|
|
68
68
|
this.resolution$$ = combineLatest([
|
|
69
|
-
this.map.
|
|
69
|
+
this.map.layerController.all$,
|
|
70
70
|
this.map.viewController.resolution$
|
|
71
71
|
])
|
|
72
72
|
.pipe(debounceTime(10))
|
|
73
73
|
.subscribe((bunch) => {
|
|
74
74
|
this.layers$.next(bunch[0].filter((layer) => layer.showInLayerList !== false &&
|
|
75
|
-
(!this.excludeBaseLayers || !layer
|
|
75
|
+
(!this.excludeBaseLayers || !isBaseLayer(layer))));
|
|
76
76
|
});
|
|
77
77
|
if (this.allowShowAllLegends) {
|
|
78
78
|
this.mapState.showAllLegendsValue =
|
|
@@ -162,4 +162,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
162
162
|
}], layerListControls: [{
|
|
163
163
|
type: Input
|
|
164
164
|
}] } });
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0wsK0JBQStCLEVBQy9CLHdCQUF3QixFQUV4QixtQkFBbUIsRUFDbkIsZUFBZSxFQUNoQixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQ0wsZUFBZSxFQUVmLGFBQWEsRUFFYixhQUFhLEVBQ2QsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBc0JuQyxJQUFNLHNCQUFzQixHQUE1QixNQUFNLHNC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QUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEQsQ0FBQzt3R0FoSlUsc0JBQXNCOzRGQUF0QixzQkFBc0IsMlVDdkRuQyxtM0VBNEVBLHNoQkQ5QkksSUFBSSw2RkFDSix3QkFBd0IseU5BQ3hCLCtCQUErQix1RUFDL0IsYUFBYSx5YkFDYixhQUFhLCtLQUNiLFNBQVMsNkNBQ1QsaUJBQWlCOztBQUdSLHNCQUFzQjtJQXBCbEMsYUFBYSxDQUFDO1FBQ2IsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLDhCQUE4QjtRQUNyQyxJQUFJLEVBQUUsc0JBQXNCO0tBQzdCLENBQUM7cUNBOEVvQixRQUFRO1FBQ1AsU0FBUztRQUNDLG1CQUFtQjtRQUNqQyxpQkFBaUI7R0FqRXZCLHNCQUFzQixDQWlKbEM7OzRGQWpKWSxzQkFBc0I7a0JBZmxDLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLHdCQUF3Qjt3QkFDeEIsK0JBQStCO3dCQUMvQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsU0FBUzt3QkFDVCxpQkFBaUI7cUJBQ2xCO3VLQVlRLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFFRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuXG5pbXBvcnQgeyBUb29sQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7XG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIExheWVyTGVnZW5kTGlzdEJpbmRpbmdEaXJlY3RpdmUsXG4gIExheWVyTGVnZW5kTGlzdENvbXBvbmVudCxcbiAgTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zLFxuICBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxuICBzb3VyY2VDYW5TZWFyY2hcbn0gZnJvbSAnQGlnbzIvZ2VvJztcblxuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIGNvbWJpbmVMYXRlc3Rcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi8uLi8uLi90b29sL3Rvb2wuc3RhdGUnO1xuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLy4uL21hcC5zdGF0ZSc7XG5cbkBUb29sQ29tcG9uZW50KHtcbiAgbmFtZTogJ21hcExlZ2VuZCcsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmxlZ2VuZCcsXG4gIGljb246ICdmb3JtYXRfbGlzdF9idWxsZXRlZCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLWxlZ2VuZC10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1sZWdlbmQtdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC1sZWdlbmQtdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBMYXllckxlZ2VuZExpc3RDb21wb25lbnQsXG4gICAgTGF5ZXJMZWdlbmRMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwTGVnZW5kVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50ID0gZmFsc2U7XG5cbiAgbGF5ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJbXT4oW10pO1xuICBzaG93QWxsTGVnZW5kc1ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBsYXllckFkZGl0aW9uQWxsb3dlZCA9IHRydWU7XG5cbiAgQElucHV0KCkgYWxsb3dTaG93QWxsTGVnZW5kcyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBsYXllckxpc3RDb250cm9sczogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zID0ge307XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT5cbiAgICAgICAgbGF5ZXJzLmZpbHRlcihcbiAgICAgICAgICAobGF5ZXIpID0+IGxheWVyLnZpc2libGUkLnZhbHVlICYmIGxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlJC52YWx1ZVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPExheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT4gbGF5ZXJzLmZpbHRlcigobGF5ZXIpID0+IGxheWVyLnZpc2libGUkLnZhbHVlKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVCYXNlTGF5ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxheWVyTGlzdENvbnRyb2xzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHNlYXJjaFRvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ3NlYXJjaFJlc3VsdHMnKSAhPT0gLTEgJiZcbiAgICAgIHRoaXMuc2VhcmNoU291cmNlU2VydmljZVxuICAgICAgICAuZ2V0U291cmNlcygpXG4gICAgICAgIC5maWx0ZXIoc291cmNlQ2FuU2VhcmNoKVxuICAgICAgICAuZmlsdGVyKChzKSA9PiBzLmF2YWlsYWJsZSAmJiBzLmdldFR5cGUoKSA9PT0gJ0xheWVyJykubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBnZXQgY2F0YWxvZ1Rvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ2NhdGFsb2cnKSAhPT0gLTE7XG4gIH1cblxuICBnZXQgY29udGV4dFRvb2xJblRvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFN0YXRlLnRvb2xib3guZ2V0VG9vbGJhcigpLmluZGV4T2YoJ2NvbnRleHRNYW5hZ2VyJykgIT09IC0xO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgdG9vbFN0YXRlOiBUb29sU3RhdGUsXG4gICAgcHJpdmF0ZSBzZWFyY2hTb3VyY2VTZXJ2aWNlOiBTZWFyY2hTb3VyY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5tYXAubGF5ZXJzJCxcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXG4gICAgXSlcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXG4gICAgICAuc3Vic2NyaWJlKChidW5jaDogW0xheWVyW10sIG51bWJlcl0pID0+IHtcbiAgICAgICAgdGhpcy5sYXllcnMkLm5leHQoXG4gICAgICAgICAgYnVuY2hbMF0uZmlsdGVyKFxuICAgICAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgICAgICBsYXllci5zaG93SW5MYXllckxpc3QgIT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICghdGhpcy5leGNsdWRlQmFzZUxheWVycyB8fCAhbGF5ZXIuYmFzZUxheWVyKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuYWxsb3dTaG93QWxsTGVnZW5kcykge1xuICAgICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlID1cbiAgICAgICAgdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHRoaXMubWFwU3RhdGUuc2hvd0FsbExlZ2VuZHNWYWx1ZVxuICAgICAgICAgIDogdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlIHx8IGZhbHNlO1xuICAgICAgdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlJC5uZXh0KHRoaXMubWFwU3RhdGUuc2hvd0FsbExlZ2VuZHNWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0FsbExlZ2VuZHNWYWx1ZSQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gcHJldmVudCBtZXNzYWdlIHRvIGJlIHNob3duIHRvbyBxdWlja2x5LiBXYWl0aW5nIGZvciBsYXllcnNcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnQgPSB0cnVlO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSwgMjUwKTtcbiAgfVxuXG4gIG9uU2hvd0FsbExlZ2VuZHMoZXZlbnQpIHtcbiAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgPSBldmVudDtcbiAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgc2hvd0FsbExlZ2VuZCgpIHtcbiAgICBpZiAodGhpcy5sYXllcnMkLmdldFZhbHVlKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMubGF5ZXJzJC5nZXRWYWx1ZSgpLmxlbmd0aCAhPT0gMCAmJlxuICAgICAgdGhpcy5hbGxvd1Nob3dBbGxMZWdlbmRzID09PSBmYWxzZVxuICAgICkge1xuICAgICAgbGV0IHZpc2libGVPckluUmFuZ2VMYXllcnM7XG4gICAgICB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkJCA9IHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQuc3Vic2NyaWJlKFxuICAgICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgICB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzID0gdmFsdWUubGVuZ3RoID09PSAwID8gZmFsc2UgOiB0cnVlO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBpZiAodmlzaWJsZU9ySW5SYW5nZUxheWVycyA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x1dGlvbiQkLnVuc3Vic2NyaWJlKCk7XG4gICAgaWYgKHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkKSB7XG4gICAgICB0aGlzLnZpc2libGVPckluUmFuZ2VMYXllcnMkJC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNlYXJjaEVtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ3NlYXJjaFJlc3VsdHMnKTtcbiAgfVxuXG4gIGNhdGFsb2dFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdjYXRhbG9nJyk7XG4gIH1cblxuICBjb250ZXh0RW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnY29udGV4dE1hbmFnZXInKTtcbiAgfVxufVxuIiwiPGlnby1sYXllci1sZWdlbmQtbGlzdFxuICAqbmdJZj1cInNob3dBbGxMZWdlbmQoKVwiXG4gIGlnb0xheWVyTGVnZW5kTGlzdEJpbmRpbmdcbiAgW2V4Y2x1ZGVCYXNlTGF5ZXJzXT1cImV4Y2x1ZGVCYXNlTGF5ZXJzXCJcbiAgW2FsbG93U2hvd0FsbExlZ2VuZHNdPVwiYWxsb3dTaG93QWxsTGVnZW5kc1wiXG4gIFt1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VdPVwidXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXCJcbiAgW3Nob3dBbGxMZWdlbmRzVmFsdWVdPVwic2hvd0FsbExlZ2VuZHNWYWx1ZSQgfCBhc3luY1wiXG4gIChhbGxMZWdlbmRzU2hvd24pPVwib25TaG93QWxsTGVnZW5kcygkZXZlbnQpXCJcbj5cbjwvaWdvLWxheWVyLWxlZ2VuZC1saXN0PlxuPG5nLXRlbXBsYXRlXG4gICpuZ0lmPVwiKGxheWVycyQgfCBhc3luYykubGVuZ3RoICE9PSAwOyBlbHNlIGVtcHR5TGF5ZXJzXCJcbj48L25nLXRlbXBsYXRlPlxuXG48cFxuICBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiXG4gICpuZ0lmPVwiXG4gICAgIWFsbG93U2hvd0FsbExlZ2VuZHMgJiZcbiAgICAobGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGggIT09IDAgJiZcbiAgICAodmlzaWJsZU9ySW5SYW5nZUxheWVycyQgfCBhc3luYykubGVuZ3RoID09PSAwXG4gIFwiXG4+XG4gIHt7XG4gICAgKHZpc2libGVMYXllcnMkIHwgYXN5bmMpLmxlbmd0aFxuICAgICAgPyAoJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLm5vTGF5ZXJzSW5SYW5nZScgfCB0cmFuc2xhdGUpXG4gICAgICA6ICgnaWdvLmludGVncmF0aW9uLm1hcFRvb2wubm9MYXllcnNWaXNpYmxlJyB8IHRyYW5zbGF0ZSlcbiAgfX1cbjwvcD5cblxuPG5nLXRlbXBsYXRlICNlbXB0eUxheWVycz5cbiAgPG1hdC1saXN0ICpuZ0lmPVwiZGVsYXllZFNob3dFbXB0eU1hcENvbnRlbnRcIj5cbiAgICA8cCBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmVtcHR5JyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvcD5cbiAgICA8cFxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgbGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiZcbiAgICAgICAgKHNlYXJjaFRvb2xJblRvb2xiYXIgfHwgY2F0YWxvZ1Rvb2xJblRvb2xiYXIgfHwgY29udGV4dFRvb2xJblRvb2xiYXIpXG4gICAgICBcIlxuICAgICAgY2xhc3M9XCJtYXAtZW1wdHkgbWF0LXR5cG9ncmFwaHlcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jdXN0b21pemUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuXG4gICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBzZWFyY2hUb29sSW5Ub29sYmFyXCI+XG4gICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICA8c3BhblxuICAgICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICAgIGNsYXNzPVwic2VhcmNoLXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAoY2xpY2spPVwic2VhcmNoRW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLnNlYXJjaC10b29sJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIGNhdGFsb2dUb29sSW5Ub29sYmFyXCI+XG4gICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uPmxpYnJhcnlfYWRkPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICAgY2xhc3M9XCJjYXRhbG9nLXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAoY2xpY2spPVwiY2F0YWxvZ0VtaXQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jYXRhbG9nLXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgY29udGV4dFRvb2xJblRvb2xiYXJcIj5cbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+c3RhcjwvbWF0LWljb24+XG4gICAgICA8c3BhblxuICAgICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICAgIGNsYXNzPVwiY29udGV4dC10b29sIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgKGNsaWNrKT1cImNvbnRleHRFbWl0KClcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuY29udGV4dC10b29sJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbWF0LWxpc3QtaXRlbT5cbiAgPC9tYXQtbGlzdD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1sZWdlbmQvbWFwLWxlZ2VuZC10b29sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBR0wsK0JBQStCLEVBQy9CLHdCQUF3QixFQUV4QixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLGVBQWUsRUFDaEIsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBRWIsYUFBYSxFQUNkLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQXNCbkMsSUFBTSxzQkFBc0IsR0FB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VCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxDQUFDO3dHQTVJVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwyVUN4RG5DLG0zRUE0RUEsc2hCRDdCSSxJQUFJLDZGQUNKLHdCQUF3Qix5TkFDeEIsK0JBQStCLHVFQUMvQixhQUFhLHliQUNiLGFBQWEsK0tBQ2IsU0FBUyw2Q0FDVCxpQkFBaUI7O0FBR1Isc0JBQXNCO0lBcEJsQyxhQUFhLENBQUM7UUFDYixJQUFJLEVBQUUsV0FBVztRQUNqQixLQUFLLEVBQUUsOEJBQThCO1FBQ3JDLElBQUksRUFBRSxzQkFBc0I7S0FDN0IsQ0FBQztxQ0EwRW9CLFFBQVE7UUFDUCxTQUFTO1FBQ0MsbUJBQW1CO1FBQ2pDLGlCQUFpQjtHQTdEdkIsc0JBQXNCLENBNklsQzs7NEZBN0lZLHNCQUFzQjtrQkFmbEMsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixTQUFTO3dCQUNULGlCQUFpQjtxQkFDbEI7dUtBWVEsOEJBQThCO3NCQUF0QyxLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24vdG9vbCc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHtcbiAgQW55TGF5ZXIsXG4gIElnb01hcCxcbiAgTGF5ZXJMZWdlbmRMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50LFxuICBMYXllckxpc3RDb250cm9sc09wdGlvbnMsXG4gIFNlYXJjaFNvdXJjZVNlcnZpY2UsXG4gIGlzQmFzZUxheWVyLFxuICBzb3VyY2VDYW5TZWFyY2hcbn0gZnJvbSAnQGlnbzIvZ2VvJztcblxuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBPYnNlcnZhYmxlLFxuICBSZXBsYXlTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG4gIGNvbWJpbmVMYXRlc3Rcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVG9vbFN0YXRlIH0gZnJvbSAnLi8uLi8uLi90b29sL3Rvb2wuc3RhdGUnO1xuaW1wb3J0IHsgTWFwU3RhdGUgfSBmcm9tICcuLy4uL21hcC5zdGF0ZSc7XG5cbkBUb29sQ29tcG9uZW50KHtcbiAgbmFtZTogJ21hcExlZ2VuZCcsXG4gIHRpdGxlOiAnaWdvLmludGVncmF0aW9uLnRvb2xzLmxlZ2VuZCcsXG4gIGljb246ICdmb3JtYXRfbGlzdF9idWxsZXRlZCdcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbWFwLWxlZ2VuZC10b29sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC1sZWdlbmQtdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC1sZWdlbmQtdG9vbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBMYXllckxlZ2VuZExpc3RDb21wb25lbnQsXG4gICAgTGF5ZXJMZWdlbmRMaXN0QmluZGluZ0RpcmVjdGl2ZSxcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWFwTGVnZW5kVG9vbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGRlbGF5ZWRTaG93RW1wdHlNYXBDb250ZW50ID0gZmFsc2U7XG5cbiAgbGF5ZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QW55TGF5ZXJbXT4oW10pO1xuICBzaG93QWxsTGVnZW5kc1ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBjaGFuZ2UkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBsYXllckFkZGl0aW9uQWxsb3dlZCA9IHRydWU7XG5cbiAgQElucHV0KCkgYWxsb3dTaG93QWxsTGVnZW5kcyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNob3dBbGxMZWdlbmRzVmFsdWUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBsYXllckxpc3RDb250cm9sczogTGF5ZXJMaXN0Q29udHJvbHNPcHRpb25zID0ge307XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGdldCB2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPEFueUxheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT4gbGF5ZXJzLmZpbHRlcigobGF5ZXIpID0+IGxheWVyLmRpc3BsYXllZCkpXG4gICAgKTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlTGF5ZXJzJCgpOiBPYnNlcnZhYmxlPEFueUxheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5sYXllcnMkLnBpcGUoXG4gICAgICBtYXAoKGxheWVycykgPT4gbGF5ZXJzLmZpbHRlcigobGF5ZXIpID0+IGxheWVyLnZpc2libGUpKVxuICAgICk7XG4gIH1cblxuICBnZXQgZXhjbHVkZUJhc2VMYXllcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXJMaXN0Q29udHJvbHMuZXhjbHVkZUJhc2VMYXllcnMgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgc2VhcmNoVG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignc2VhcmNoUmVzdWx0cycpICE9PSAtMSAmJlxuICAgICAgdGhpcy5zZWFyY2hTb3VyY2VTZXJ2aWNlXG4gICAgICAgIC5nZXRTb3VyY2VzKClcbiAgICAgICAgLmZpbHRlcihzb3VyY2VDYW5TZWFyY2gpXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuYXZhaWxhYmxlICYmIHMuZ2V0VHlwZSgpID09PSAnTGF5ZXInKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjYXRhbG9nVG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignY2F0YWxvZycpICE9PSAtMTtcbiAgfVxuXG4gIGdldCBjb250ZXh0VG9vbEluVG9vbGJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50b29sU3RhdGUudG9vbGJveC5nZXRUb29sYmFyKCkuaW5kZXhPZignY29udGV4dE1hbmFnZXInKSAhPT0gLTE7XG4gIH1cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gICAgcHJpdmF0ZSB0b29sU3RhdGU6IFRvb2xTdGF0ZSxcbiAgICBwcml2YXRlIHNlYXJjaFNvdXJjZVNlcnZpY2U6IFNlYXJjaFNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVzb2x1dGlvbiQkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIuYWxsJCxcbiAgICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kXG4gICAgXSlcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCkpXG4gICAgICAuc3Vic2NyaWJlKChidW5jaCkgPT4ge1xuICAgICAgICB0aGlzLmxheWVycyQubmV4dChcbiAgICAgICAgICBidW5jaFswXS5maWx0ZXIoXG4gICAgICAgICAgICAobGF5ZXIpID0+XG4gICAgICAgICAgICAgIGxheWVyLnNob3dJbkxheWVyTGlzdCAhPT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgKCF0aGlzLmV4Y2x1ZGVCYXNlTGF5ZXJzIHx8ICFpc0Jhc2VMYXllcihsYXllcikpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5hbGxvd1Nob3dBbGxMZWdlbmRzKSB7XG4gICAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgPVxuICAgICAgICB0aGlzLm1hcFN0YXRlLnNob3dBbGxMZWdlbmRzVmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gdGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlXG4gICAgICAgICAgOiB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUgfHwgZmFsc2U7XG4gICAgICB0aGlzLnNob3dBbGxMZWdlbmRzVmFsdWUkLm5leHQodGhpcy5tYXBTdGF0ZS5zaG93QWxsTGVnZW5kc1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93QWxsTGVnZW5kc1ZhbHVlJC5uZXh0KGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBwcmV2ZW50IG1lc3NhZ2UgdG8gYmUgc2hvd24gdG9vIHF1aWNrbHkuIFdhaXRpbmcgZm9yIGxheWVyc1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5kZWxheWVkU2hvd0VtcHR5TWFwQ29udGVudCA9IHRydWU7XG4gICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9LCAyNTApO1xuICB9XG5cbiAgb25TaG93QWxsTGVnZW5kcyhldmVudCkge1xuICAgIHRoaXMubWFwU3RhdGUuc2hvd0FsbExlZ2VuZHNWYWx1ZSA9IGV2ZW50O1xuICAgIHRoaXMuc2hvd0FsbExlZ2VuZHNWYWx1ZSQubmV4dChldmVudCk7XG4gIH1cblxuICBzaG93QWxsTGVnZW5kKCkge1xuICAgIGlmICh0aGlzLmxheWVycyQuZ2V0VmFsdWUoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5sYXllcnMkLmdldFZhbHVlKCkubGVuZ3RoICE9PSAwICYmXG4gICAgICB0aGlzLmFsbG93U2hvd0FsbExlZ2VuZHMgPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICBsZXQgdmlzaWJsZU9ySW5SYW5nZUxheWVycztcbiAgICAgIHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkID0gdGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJC5zdWJzY3JpYmUoXG4gICAgICAgICh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHZpc2libGVPckluUmFuZ2VMYXllcnMgPSB2YWx1ZS5sZW5ndGggPT09IDAgPyBmYWxzZSA6IHRydWU7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGlmICh2aXNpYmxlT3JJblJhbmdlTGF5ZXJzID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZXNvbHV0aW9uJCQudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy52aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCQpIHtcbiAgICAgIHRoaXMudmlzaWJsZU9ySW5SYW5nZUxheWVycyQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoRW1pdCgpIHtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnc2VhcmNoUmVzdWx0cycpO1xuICB9XG5cbiAgY2F0YWxvZ0VtaXQoKSB7XG4gICAgdGhpcy50b29sU3RhdGUudG9vbGJveC5hY3RpdmF0ZVRvb2woJ2NhdGFsb2cnKTtcbiAgfVxuXG4gIGNvbnRleHRFbWl0KCkge1xuICAgIHRoaXMudG9vbFN0YXRlLnRvb2xib3guYWN0aXZhdGVUb29sKCdjb250ZXh0TWFuYWdlcicpO1xuICB9XG59XG4iLCI8aWdvLWxheWVyLWxlZ2VuZC1saXN0XG4gICpuZ0lmPVwic2hvd0FsbExlZ2VuZCgpXCJcbiAgaWdvTGF5ZXJMZWdlbmRMaXN0QmluZGluZ1xuICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxuICBbYWxsb3dTaG93QWxsTGVnZW5kc109XCJhbGxvd1Nob3dBbGxMZWdlbmRzXCJcbiAgW3VwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZV09XCJ1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2VcIlxuICBbc2hvd0FsbExlZ2VuZHNWYWx1ZV09XCJzaG93QWxsTGVnZW5kc1ZhbHVlJCB8IGFzeW5jXCJcbiAgKGFsbExlZ2VuZHNTaG93bik9XCJvblNob3dBbGxMZWdlbmRzKCRldmVudClcIlxuPlxuPC9pZ28tbGF5ZXItbGVnZW5kLWxpc3Q+XG48bmctdGVtcGxhdGVcbiAgKm5nSWY9XCIobGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGggIT09IDA7IGVsc2UgZW1wdHlMYXllcnNcIlxuPjwvbmctdGVtcGxhdGU+XG5cbjxwXG4gIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCJcbiAgKm5nSWY9XCJcbiAgICAhYWxsb3dTaG93QWxsTGVnZW5kcyAmJlxuICAgIChsYXllcnMkIHwgYXN5bmMpLmxlbmd0aCAhPT0gMCAmJlxuICAgICh2aXNpYmxlT3JJblJhbmdlTGF5ZXJzJCB8IGFzeW5jKS5sZW5ndGggPT09IDBcbiAgXCJcbj5cbiAge3tcbiAgICAodmlzaWJsZUxheWVycyQgfCBhc3luYykubGVuZ3RoXG4gICAgICA/ICgnaWdvLmludGVncmF0aW9uLm1hcFRvb2wubm9MYXllcnNJblJhbmdlJyB8IHRyYW5zbGF0ZSlcbiAgICAgIDogKCdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5ub0xheWVyc1Zpc2libGUnIHwgdHJhbnNsYXRlKVxuICB9fVxuPC9wPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5TGF5ZXJzPlxuICA8bWF0LWxpc3QgKm5nSWY9XCJkZWxheWVkU2hvd0VtcHR5TWFwQ29udGVudFwiPlxuICAgIDxwIGNsYXNzPVwibWFwLWVtcHR5IG1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuZW1wdHknIHwgdHJhbnNsYXRlIH19XG4gICAgPC9wPlxuICAgIDxwXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBsYXllckFkZGl0aW9uQWxsb3dlZCAmJlxuICAgICAgICAoc2VhcmNoVG9vbEluVG9vbGJhciB8fCBjYXRhbG9nVG9vbEluVG9vbGJhciB8fCBjb250ZXh0VG9vbEluVG9vbGJhcilcbiAgICAgIFwiXG4gICAgICBjbGFzcz1cIm1hcC1lbXB0eSBtYXQtdHlwb2dyYXBoeVwiXG4gICAgPlxuICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmN1c3RvbWl6ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3A+XG5cbiAgICA8bWF0LWxpc3QtaXRlbSAqbmdJZj1cImxheWVyQWRkaXRpb25BbGxvd2VkICYmIHNlYXJjaFRvb2xJblRvb2xiYXJcIj5cbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICAgY2xhc3M9XCJzZWFyY2gtdG9vbCBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgIChjbGljayk9XCJzZWFyY2hFbWl0KClcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmludGVncmF0aW9uLm1hcFRvb2wuc2VhcmNoLXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDxtYXQtbGlzdC1pdGVtICpuZ0lmPVwibGF5ZXJBZGRpdGlvbkFsbG93ZWQgJiYgY2F0YWxvZ1Rvb2xJblRvb2xiYXJcIj5cbiAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24+bGlicmFyeV9hZGQ8L21hdC1pY29uPlxuICAgICAgPHNwYW5cbiAgICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxuICAgICAgICBjbGFzcz1cImNhdGFsb2ctdG9vbCBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgIChjbGljayk9XCJjYXRhbG9nRW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5pbnRlZ3JhdGlvbi5tYXBUb29sLmNhdGFsb2ctdG9vbCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJsYXllckFkZGl0aW9uQWxsb3dlZCAmJiBjb250ZXh0VG9vbEluVG9vbGJhclwiPlxuICAgICAgPG1hdC1pY29uIG1hdExpc3RJdGVtSWNvbj5zdGFyPC9tYXQtaWNvbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICAgICAgY2xhc3M9XCJjb250ZXh0LXRvb2wgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAoY2xpY2spPVwiY29udGV4dEVtaXQoKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uaW50ZWdyYXRpb24ubWFwVG9vbC5jb250ZXh0LXRvb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9tYXQtbGlzdC1pdGVtPlxuICA8L21hdC1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { StorageService } from '@igo2/core/storage';
|
|
3
|
-
import { FEATURE, FeatureStore, featureFromOl, measureOlGeometryLength, roundCoordTo } from '@igo2/geo';
|
|
3
|
+
import { FEATURE, FeatureStore, featureFromOl, isLayerItem, measureOlGeometryLength, roundCoordTo } from '@igo2/geo';
|
|
4
4
|
import { uuid } from '@igo2/utils';
|
|
5
5
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
6
6
|
import olLineString from 'ol/geom/LineString';
|
|
@@ -52,7 +52,7 @@ export class MapProximityState {
|
|
|
52
52
|
.subscribe((bunch) => {
|
|
53
53
|
this.proximityFeatureStore.clear();
|
|
54
54
|
const enabled = bunch[0];
|
|
55
|
-
const layers = this.map.
|
|
55
|
+
const layers = this.map.layerController.all;
|
|
56
56
|
const currentPos = this.map.geolocationController.position$.value;
|
|
57
57
|
const locationType = bunch[1];
|
|
58
58
|
const proximityRadiusValue = bunch[2];
|
|
@@ -75,7 +75,8 @@ export class MapProximityState {
|
|
|
75
75
|
const coordLonLat = olProj.transform(coord, this.map.projection, 'EPSG:4269');
|
|
76
76
|
const roundedCoordLonLat = roundCoordTo(coordLonLat, 6);
|
|
77
77
|
this.currentPositionCoordinate$.next(roundedCoordLonLat);
|
|
78
|
-
const layersToMonitor = layers.filter((layer) => layer
|
|
78
|
+
const layersToMonitor = layers.filter((layer) => isLayerItem(layer) &&
|
|
79
|
+
layer.ol instanceof olLayerVector &&
|
|
79
80
|
layer.dataSource.options.queryable &&
|
|
80
81
|
layer.visible &&
|
|
81
82
|
layer.isInResolutionsRange);
|
|
@@ -146,15 +147,13 @@ export class MapProximityState {
|
|
|
146
147
|
});
|
|
147
148
|
}
|
|
148
149
|
getQueryTitle(feature, layer) {
|
|
149
|
-
|
|
150
|
-
if (layer.options?.source?.options) {
|
|
150
|
+
if (isLayerItem(layer) && layer.options?.source?.options) {
|
|
151
151
|
const dataSourceOptions = layer.options.source
|
|
152
152
|
.options;
|
|
153
153
|
if (dataSourceOptions.queryTitle) {
|
|
154
|
-
|
|
154
|
+
return this.getLabelMatch(feature, dataSourceOptions.queryTitle);
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
return title;
|
|
158
157
|
}
|
|
159
158
|
getLabelMatch(feature, labelMatch) {
|
|
160
159
|
let label = labelMatch;
|
|
@@ -177,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
177
176
|
providedIn: 'root'
|
|
178
177
|
}]
|
|
179
178
|
}], ctorParameters: () => [{ type: i1.MapState }, { type: i2.StorageService }] });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUNMLE9BQU8sRUFFUCxZQUFZLEVBTVosYUFBYSxFQUNiLHVCQUF1QixFQUN2QixZQUFZLEVBQ2IsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUV4QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUdsQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFFNUM7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBb0JsQjtJQUNBO0lBcEJGLDJCQUEyQixHQUFHLEVBQUUsQ0FBQztJQUVsQyxRQUFRLEdBQTZCLElBQUksZUFBZSxDQUM3RCxLQUFLLENBQ04sQ0FBQztJQUNLLHFCQUFxQixDQUEwQjtJQUMvQyxzQkFBc0IsR0FDM0IsSUFBSSxlQUFlLENBQVMsYUFBYSxDQUFDLENBQUM7SUFDdEMscUJBQXFCLENBQXdCO0lBQzVDLE1BQU0sR0FBbUIsRUFBRSxDQUFDO0lB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O1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQixFQUFFLFVBQVU7UUFDeEMsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFFeEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFFSCwwQ0FBMEM7UUFDMUMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDcEQsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7d0dBeE9VLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcbmltcG9ydCB7XG4gIEZFQVRVUkUsXG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVTdG9yZSxcbiAgSWdvTWFwLFxuICBMYXllcixcbiAgTWFwR2VvbG9jYXRpb25TdGF0ZSxcbiAgUXVlcnlhYmxlRGF0YVNvdXJjZSxcbiAgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXG4gIGZlYXR1cmVGcm9tT2wsXG4gIG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoLFxuICByb3VuZENvb3JkVG9cbn0gZnJvbSAnQGlnbzIvZ2VvJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCBvbExpbmVTdHJpbmcgZnJvbSAnb2wvZ2VvbS9MaW5lU3RyaW5nJztcbmltcG9ydCBvbExheWVyVmVjdG9yIGZyb20gJ29sL2xheWVyL1ZlY3Rvcic7XG5pbXBvcnQgKiBhcyBvbFByb2ogZnJvbSAnb2wvcHJvaic7XG5pbXBvcnQgb2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0LCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC9tYXAuc3RhdGUnO1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBob2xkcyB0aGUgc3RhdGUgb2YgdGhlIGRpcmVjdGlvbiBtb2R1bGVcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWFwUHJveGltaXR5U3RhdGUge1xuICBwcml2YXRlIGRlZmF1bHRQcm94aW1pdHlSYWRpdXNWYWx1ZSA9IDMwO1xuXG4gIHB1YmxpYyBlbmFibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihcbiAgICBmYWxzZVxuICApO1xuICBwdWJsaWMgcHJveGltaXR5UmFkaXVzVmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPjtcbiAgcHVibGljIHByb3hpbWl0eWxvY2F0aW9uVHlwZSQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJ2dlb2xvY2F0aW9uJyk7XG4gIHB1YmxpYyBwcm94aW1pdHlGZWF0dXJlU3RvcmU6IEZlYXR1cmVTdG9yZTxGZWF0dXJlPjtcbiAgcHJpdmF0ZSBzdWJzJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHB1YmxpYyBjdXJyZW50UG9zaXRpb25Db29yZGluYXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8W251bWJlciwgbnVtYmVyXT4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZTxGZWF0dXJlPihbXSwge1xuICAgICAgbWFwOiB0aGlzLm1hcFN0YXRlLm1hcFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm94aW1pdHlSYWRpdXNWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oXG4gICAgICAodGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ21hcFByb3hpbWl0eVJhZGl1cycpIGFzIG51bWJlcikgfHxcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcbiAgICApO1xuXG4gICAgdGhpcy5tYXBTdGF0ZS5tYXAub2wub25jZSgncmVuZGVyY29tcGxldGUnLCAoKSA9PiB7XG4gICAgICB0aGlzLnN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1YnNjcmliZVByb3hpbWl0eU1vbml0b3IoKSB7XG4gICAgdGhpcy5zdWJzJCQucHVzaChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmVuYWJsZWQkLFxuICAgICAgICB0aGlzLnByb3hpbWl0eWxvY2F0aW9uVHlwZSQsXG4gICAgICAgIHRoaXMucHJveGltaXR5UmFkaXVzVmFsdWUkLFxuICAgICAgICBpbnRlcnZhbCg1MDAwKSxcbiAgICAgICAgdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJFxuICAgICAgXSlcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKGJ1bmNoOiBbYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIsIG51bWJlciwgTWFwR2VvbG9jYXRpb25TdGF0ZV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLmNsZWFyKCk7XG4gICAgICAgICAgICBjb25zdCBlbmFibGVkID0gYnVuY2hbMF07XG4gICAgICAgICAgICBjb25zdCBsYXllcnMgPSB0aGlzLm1hcC5sYXllcnM7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uVHlwZSA9IGJ1bmNoWzFdO1xuICAgICAgICAgICAgY29uc3QgcHJveGltaXR5UmFkaXVzVmFsdWUgPSBidW5jaFsyXTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgICAgICAgICAnbWFwUHJveGltaXR5UmFkaXVzJyxcbiAgICAgICAgICAgICAgcHJveGltaXR5UmFkaXVzVmFsdWUgfHwgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb29yZDogbnVtYmVyW107XG4gICAgICAgICAgICBpZiAobG9jYXRpb25UeXBlID09PSAnZ2VvbG9jYXRpb24nKSB7XG4gICAgICAgICAgICAgIGlmICghY3VycmVudFBvcyB8fCAhY3VycmVudFBvcy5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvb3JkID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb29yZCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldENlbnRlcigpO1xuICAgICAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICAgICdFUFNHOjQyNjknXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3Qgcm91bmRlZENvb3JkTG9uTGF0ID0gcm91bmRDb29yZFRvKFxuICAgICAgICAgICAgICBjb29yZExvbkxhdCBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICAgICAgICA2XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJC5uZXh0KHJvdW5kZWRDb29yZExvbkxhdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxheWVyc1RvTW9uaXRvciA9IGxheWVycy5maWx0ZXIoXG4gICAgICAgICAgICAgIChsYXllcikgPT5cbiAgICAgICAgICAgICAgICBsYXllci5vbCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgJiZcbiAgICAgICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZSBhcyBRdWVyeWFibGVEYXRhU291cmNlKS5vcHRpb25zLnF1ZXJ5YWJsZSAmJlxuICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUgJiZcbiAgICAgICAgICAgICAgICBsYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGF5ZXJzVG9Nb25pdG9yLm1hcCgobGF5ZXJUb01vbml0b3IpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbGF5ZXJTb3VyY2UgPVxuICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlO1xuXG4gICAgICAgICAgICAgIC8vIE1vc3RseSBmb3IgcG9seWdvbiBmZWF0dXJlcy5cbiAgICAgICAgICAgICAgY29uc3Qgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSA9XG4gICAgICAgICAgICAgICAgbGF5ZXJTb3VyY2UuZ2V0RmVhdHVyZXNBdENvb3JkaW5hdGUoY29vcmQpO1xuICAgICAgICAgICAgICBpZiAob2xGZWF0dXJlc0F0Q29vcmRpbmF0ZSAmJiBvbEZlYXR1cmVzQXRDb29yZGluYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIG9sRmVhdHVyZXNBdENvb3JkaW5hdGUubWFwKChvbEZlYXR1cmVBdENvb3JkaW5hdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVBdFRoaXNQb3NpdGlvbiA9IGZlYXR1cmVGcm9tT2woXG4gICAgICAgICAgICAgICAgICAgIG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvblxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlQXRUaGlzUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvcixcbiAgICAgICAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVBdFRoaXNQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBwcm94aW1pdHkgZm9yIHJlbWFpbmluZyBzb3VyY2VzXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdE9sRmVhdHVyZSA9XG4gICAgICAgICAgICAgICAgICBsYXllclNvdXJjZS5nZXRDbG9zZXN0RmVhdHVyZVRvQ29vcmRpbmF0ZShjb29yZCk7XG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RPbEZlYXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEdlb20gPSBjbG9zZXN0T2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0RmVhdHVyZSA9IGZlYXR1cmVGcm9tT2woXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RPbEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb25cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeUNsb3Nlc3RQb2ludCA9XG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RPbEdlb20uZ2V0Q2xvc2VzdFBvaW50KGNvb3JkKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmViZXR3ZWVuID0gbmV3IG9sTGluZVN0cmluZyhbXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkLFxuICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeUNsb3Nlc3RQb2ludFxuICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBsaW5lTGVuZ3RoID0gbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgoXG4gICAgICAgICAgICAgICAgICAgIGxpbmViZXR3ZWVuLFxuICAgICAgICAgICAgICAgICAgICAnRVBTRzozODU3J1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsaW5lTGVuZ3RoIDw9IHByb3hpbWl0eVJhZGl1c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKFxuICAgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RGZWF0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRvZG8gaGFuZGxlIGltcG9ydGVkIGxheWVycyB3aXRob3V0IHF1ZXJ5dGl0bGU/IHByb21wdCB0aXRsZSBvciBkZXRlY3QgZmlyc3QgY29sdW1uP1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKFxuICAgICAgICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yLFxuICAgICAgICAgICAgICAgICAgICAgIGNvb3JkLFxuICAgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RGZWF0dXJlLFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIGxpbmVMZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZmVhdHVyZSB3aXRoIHByb3hpbWl0eSBwcm9wZXJ0aWVzIHRvIHRoZSBzdG9yZVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYWRkRmVhdHVyZVRvU3RvcmUoXG4gICAgbGF5ZXI6IExheWVyLFxuICAgIGNvb3JkRnJvbUNhbGN1bGF0ZWREaXN0YW5jZSxcbiAgICBmZWF0dXJlOiBGZWF0dXJlLFxuICAgIHRpdGxlLFxuICAgIGRpc3RhbmNlXG4gICkge1xuICAgIGNvbnN0IGZlYXR1cmVJZCA9IHV1aWQoKTtcbiAgICBjb25zdCBwcm9qZWN0aW9uID0gdGhpcy5tYXAub2wuZ2V0VmlldygpLmdldFByb2plY3Rpb24oKTtcbiAgICBjb25zdCBvbEdlb21ldHJ5ID0gZmVhdHVyZS5vbC5nZXRHZW9tZXRyeSgpIGFzIEdlb21ldHJ5O1xuICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IEdlb0pTT04oKS53cml0ZUdlb21ldHJ5T2JqZWN0KG9sR2VvbWV0cnksIHtcbiAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBwcm9qZWN0aW9uLFxuICAgICAgZGF0YVByb2plY3Rpb246IHByb2plY3Rpb25cbiAgICB9KSBhcyBhbnk7XG4gICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUudXBkYXRlKHtcbiAgICAgIHR5cGU6IEZFQVRVUkUsXG4gICAgICBnZW9tZXRyeSxcbiAgICAgIHByb2plY3Rpb246IHByb2plY3Rpb24uZ2V0Q29kZSgpLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAuLi5mZWF0dXJlLnByb3BlcnRpZXMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICBpZDogZmVhdHVyZUlkLFxuICAgICAgICAgIGVsZW1lbnQ6IHRpdGxlLFxuICAgICAgICAgIGRpc3RhbmNlLFxuICAgICAgICAgIGNvb3JkRnJvbUNhbGN1bGF0ZWREaXN0YW5jZSxcbiAgICAgICAgICBsYXllclNyY0lkOiBsYXllci5pZCxcbiAgICAgICAgICBsYXllclNyY1RpdGxlOiBsYXllci50aXRsZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbWV0YToge1xuICAgICAgICBpZDogZmVhdHVyZUlkXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRRdWVyeVRpdGxlKGZlYXR1cmU6IEZlYXR1cmUsIGxheWVyOiBMYXllcik6IHN0cmluZyB7XG4gICAgbGV0IHRpdGxlO1xuICAgIGlmIChsYXllci5vcHRpb25zPy5zb3VyY2U/Lm9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFTb3VyY2VPcHRpb25zID0gbGF5ZXIub3B0aW9ucy5zb3VyY2VcbiAgICAgICAgLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnM7XG4gICAgICBpZiAoZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSkge1xuICAgICAgICB0aXRsZSA9IHRoaXMuZ2V0TGFiZWxNYXRjaChmZWF0dXJlLCBkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRpdGxlO1xuICB9XG5cbiAgZ2V0TGFiZWxNYXRjaChmZWF0dXJlOiBGZWF0dXJlLCBsYWJlbE1hdGNoKTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSBsYWJlbE1hdGNoO1xuICAgIGNvbnN0IGxhYmVsVG9HZXQgPSBBcnJheS5mcm9tKGxhYmVsTWF0Y2gubWF0Y2hBbGwoL1xcJFxceyhbXlxce1xcfV0rKVxcfS9nKSk7XG5cbiAgICBsYWJlbFRvR2V0LmZvckVhY2goKHYpID0+IHtcbiAgICAgIGxhYmVsID0gbGFiZWwucmVwbGFjZSh2WzBdLCBmZWF0dXJlLnByb3BlcnRpZXNbdlsxXV0pO1xuICAgIH0pO1xuXG4gICAgLy8gTm90aGluZyBkb25lPyBjaGVjayBmZWF0dXJlJ3MgYXR0cmlidXRlXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XG4gICAgICBsYWJlbCA9IGZlYXR1cmUucHJvcGVydGllc1tsYWJlbE1hdGNoXSB8fCBsYWJlbE1hdGNoO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cbn1cbiJdfQ==
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUVMLE9BQU8sRUFFUCxZQUFZLEVBTVosYUFBYSxFQUNiLFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsWUFBWSxFQUNiLE1BQU0sV0FBVyxDQUFDO0FBQ25CLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHbkMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUM7QUFDOUMsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFHbEMsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRTVDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQW9CbEI7SUFDQTtJQXBCRiwyQkFBMkIsR0FBRyxFQUFFLENBQUM7SUFFbEMsUUFBUSxHQUE2QixJQUFJLGVBQWUsQ0FDN0QsS0FBSyxDQUNOLENBQUM7SUFDSyxxQkFBcUIsQ0FBMEI7SUFDL0Msc0JBQXNCLEdBQzNCLElBQUksZUFBZSxDQUFTLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLHFCQUFxQixDQUF3QjtJQUM1QyxNQUFNLEdBQW1CLEVB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T0FBTyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25FLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQixFQUFFLFVBQVU7UUFDeEMsSUFBSSxLQUFLLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFFeEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFFSCwwQ0FBMEM7UUFDMUMsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDcEQsS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksVUFBVSxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7d0dBdk9VLGlCQUFpQjs0R0FBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcbmltcG9ydCB7XG4gIEFueUxheWVyLFxuICBGRUFUVVJFLFxuICBGZWF0dXJlLFxuICBGZWF0dXJlU3RvcmUsXG4gIElnb01hcCxcbiAgTGF5ZXIsXG4gIE1hcEdlb2xvY2F0aW9uU3RhdGUsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2UsXG4gIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICBmZWF0dXJlRnJvbU9sLFxuICBpc0xheWVySXRlbSxcbiAgbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgsXG4gIHJvdW5kQ29vcmRUb1xufSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgQ29vcmRpbmF0ZSB9IGZyb20gJ29sL2Nvb3JkaW5hdGUnO1xuaW1wb3J0IEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0IG9sTGF5ZXJWZWN0b3IgZnJvbSAnb2wvbGF5ZXIvVmVjdG9yJztcbmltcG9ydCAqIGFzIG9sUHJvaiBmcm9tICdvbC9wcm9qJztcbmltcG9ydCBvbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi4vbWFwL21hcC5zdGF0ZSc7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgZGlyZWN0aW9uIG1vZHVsZVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXBQcm94aW1pdHlTdGF0ZSB7XG4gIHByaXZhdGUgZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlID0gMzA7XG5cbiAgcHVibGljIGVuYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KFxuICAgIGZhbHNlXG4gICk7XG4gIHB1YmxpYyBwcm94aW1pdHlSYWRpdXNWYWx1ZSQ6IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+O1xuICBwdWJsaWMgcHJveGltaXR5bG9jYXRpb25UeXBlJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignZ2VvbG9jYXRpb24nKTtcbiAgcHVibGljIHByb3hpbWl0eUZlYXR1cmVTdG9yZTogRmVhdHVyZVN0b3JlPEZlYXR1cmU+O1xuICBwcml2YXRlIHN1YnMkJDogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHVibGljIGN1cnJlbnRQb3NpdGlvbkNvb3JkaW5hdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb29yZGluYXRlPihcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMubWFwU3RhdGUubWFwO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUgPSBuZXcgRmVhdHVyZVN0b3JlPEZlYXR1cmU+KFtdLCB7XG4gICAgICBtYXA6IHRoaXMubWFwU3RhdGUubWFwXG4gICAgfSk7XG5cbiAgICB0aGlzLnByb3hpbWl0eVJhZGl1c1ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihcbiAgICAgICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnbWFwUHJveGltaXR5UmFkaXVzJykgYXMgbnVtYmVyKSB8fFxuICAgICAgICB0aGlzLmRlZmF1bHRQcm94aW1pdHlSYWRpdXNWYWx1ZVxuICAgICk7XG5cbiAgICB0aGlzLm1hcFN0YXRlLm1hcC5vbC5vbmNlKCdyZW5kZXJjb21wbGV0ZScsICgpID0+IHtcbiAgICAgIHRoaXMuc3Vic2NyaWJlUHJveGltaXR5TW9uaXRvcigpO1xuICAgIH0pO1xuICB9XG5cbiAgc3Vic2NyaWJlUHJveGltaXR5TW9uaXRvcigpIHtcbiAgICB0aGlzLnN1YnMkJC5wdXNoKFxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuZW5hYmxlZCQsXG4gICAgICAgIHRoaXMucHJveGltaXR5bG9jYXRpb25UeXBlJCxcbiAgICAgICAgdGhpcy5wcm94aW1pdHlSYWRpdXNWYWx1ZSQsXG4gICAgICAgIGludGVydmFsKDUwMDApLFxuICAgICAgICB0aGlzLm1hcC5nZW9sb2NhdGlvbkNvbnRyb2xsZXIucG9zaXRpb24kXG4gICAgICBdKVxuICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNzUwKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAoYnVuY2g6IFtib29sZWFuLCBzdHJpbmcsIG51bWJlciwgbnVtYmVyLCBNYXBHZW9sb2NhdGlvblN0YXRlXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm94aW1pdHlGZWF0dXJlU3RvcmUuY2xlYXIoKTtcbiAgICAgICAgICAgIGNvbnN0IGVuYWJsZWQgPSBidW5jaFswXTtcbiAgICAgICAgICAgIGNvbnN0IGxheWVycyA9IHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5hbGw7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50UG9zID0gdGhpcy5tYXAuZ2VvbG9jYXRpb25Db250cm9sbGVyLnBvc2l0aW9uJC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uVHlwZSA9IGJ1bmNoWzFdO1xuICAgICAgICAgICAgY29uc3QgcHJveGltaXR5UmFkaXVzVmFsdWUgPSBidW5jaFsyXTtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KFxuICAgICAgICAgICAgICAnbWFwUHJveGltaXR5UmFkaXVzJyxcbiAgICAgICAgICAgICAgcHJveGltaXR5UmFkaXVzVmFsdWUgfHwgdGhpcy5kZWZhdWx0UHJveGltaXR5UmFkaXVzVmFsdWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb29yZDogbnVtYmVyW107XG4gICAgICAgICAgICBpZiAobG9jYXRpb25UeXBlID09PSAnZ2VvbG9jYXRpb24nKSB7XG4gICAgICAgICAgICAgIGlmICghY3VycmVudFBvcyB8fCAhY3VycmVudFBvcy5wb3NpdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvb3JkID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnBvc2l0aW9uLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MucHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMubWFwLm1hcENlbnRlciQubmV4dChmYWxzZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb29yZCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldENlbnRlcigpO1xuICAgICAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNvb3JkTG9uTGF0ID0gb2xQcm9qLnRyYW5zZm9ybShcbiAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb24sXG4gICAgICAgICAgICAgICdFUFNHOjQyNjknXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3Qgcm91bmRlZENvb3JkTG9uTGF0ID0gcm91bmRDb29yZFRvKFxuICAgICAgICAgICAgICBjb29yZExvbkxhdCBhcyBbbnVtYmVyLCBudW1iZXJdLFxuICAgICAgICAgICAgICA2XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UG9zaXRpb25Db29yZGluYXRlJC5uZXh0KHJvdW5kZWRDb29yZExvbkxhdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGxheWVyc1RvTW9uaXRvciA9IGxheWVycy5maWx0ZXIoXG4gICAgICAgICAgICAgIChsYXllcikgPT5cbiAgICAgICAgICAgICAgICBpc0xheWVySXRlbShsYXllcikgJiZcbiAgICAgICAgICAgICAgICBsYXllci5vbCBpbnN0YW5jZW9mIG9sTGF5ZXJWZWN0b3IgJiZcbiAgICAgICAgICAgICAgICAobGF5ZXIuZGF0YVNvdXJjZSBhcyBRdWVyeWFibGVEYXRhU291cmNlKS5vcHRpb25zLnF1ZXJ5YWJsZSAmJlxuICAgICAgICAgICAgICAgIGxheWVyLnZpc2libGUgJiZcbiAgICAgICAgICAgICAgICBsYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZVxuICAgICAgICAgICAgKSBhcyBMYXllcltdO1xuXG4gICAgICAgICAgICBsYXllcnNUb01vbml0b3IubWFwKChsYXllclRvTW9uaXRvcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBsYXllclNvdXJjZSA9XG4gICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3Iub2wuZ2V0U291cmNlKCkgYXMgb2xWZWN0b3JTb3VyY2U7XG5cbiAgICAgICAgICAgICAgLy8gTW9zdGx5IGZvciBwb2x5Z29uIGZlYXR1cmVzLlxuICAgICAgICAgICAgICBjb25zdCBvbEZlYXR1cmVzQXRDb29yZGluYXRlID1cbiAgICAgICAgICAgICAgICBsYXllclNvdXJjZS5nZXRGZWF0dXJlc0F0Q29vcmRpbmF0ZShjb29yZCk7XG4gICAgICAgICAgICAgIGlmIChvbEZlYXR1cmVzQXRDb29yZGluYXRlICYmIG9sRmVhdHVyZXNBdENvb3JkaW5hdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5tYXAoKG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uID0gZmVhdHVyZUZyb21PbChcbiAgICAgICAgICAgICAgICAgICAgb2xGZWF0dXJlQXRDb29yZGluYXRlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVBdFRoaXNQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3JcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAvLyB0b2RvIGhhbmRsZSBpbXBvcnRlZCBsYXllcnMgd2l0aG91dCBxdWVyeXRpdGxlPyBwcm9tcHQgdGl0bGUgb3IgZGV0ZWN0IGZpcnN0IGNvbHVtbj9cbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yLFxuICAgICAgICAgICAgICAgICAgICBjb29yZCxcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHByb3hpbWl0eSBmb3IgcmVtYWluaW5nIHNvdXJjZXNcbiAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0T2xGZWF0dXJlID1cbiAgICAgICAgICAgICAgICAgIGxheWVyU291cmNlLmdldENsb3Nlc3RGZWF0dXJlVG9Db29yZGluYXRlKGNvb3JkKTtcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdE9sRmVhdHVyZSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdE9sR2VvbSA9IGNsb3Nlc3RPbEZlYXR1cmUuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RGZWF0dXJlID0gZmVhdHVyZUZyb21PbChcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdE9sRmVhdHVyZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvblxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGdlb21ldHJ5Q2xvc2VzdFBvaW50ID1cbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdE9sR2VvbS5nZXRDbG9zZXN0UG9pbnQoY29vcmQpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgbGluZWJldHdlZW4gPSBuZXcgb2xMaW5lU3RyaW5nKFtcbiAgICAgICAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgICAgICAgIGdlb21ldHJ5Q2xvc2VzdFBvaW50XG4gICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVMZW5ndGggPSBtZWFzdXJlT2xHZW9tZXRyeUxlbmd0aChcbiAgICAgICAgICAgICAgICAgICAgbGluZWJldHdlZW4sXG4gICAgICAgICAgICAgICAgICAgICdFUFNHOjM4NTcnXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgaWYgKGxpbmVMZW5ndGggPD0gcHJveGltaXR5UmFkaXVzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLmdldFF1ZXJ5VGl0bGUoXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3JcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRmVhdHVyZVRvU3RvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgbGF5ZXJUb01vbml0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgICAgICAgICAgY2xvc2VzdEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgbGluZUxlbmd0aFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmZWF0dXJlIHdpdGggcHJveGltaXR5IHByb3BlcnRpZXMgdG8gdGhlIHN0b3JlXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBhZGRGZWF0dXJlVG9TdG9yZShcbiAgICBsYXllcjogTGF5ZXIsXG4gICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxuICAgIGZlYXR1cmU6IEZlYXR1cmUsXG4gICAgdGl0bGUsXG4gICAgZGlzdGFuY2VcbiAgKSB7XG4gICAgY29uc3QgZmVhdHVyZUlkID0gdXVpZCgpO1xuICAgIGNvbnN0IHByb2plY3Rpb24gPSB0aGlzLm1hcC5vbC5nZXRWaWV3KCkuZ2V0UHJvamVjdGlvbigpO1xuICAgIGNvbnN0IG9sR2VvbWV0cnkgPSBmZWF0dXJlLm9sLmdldEdlb21ldHJ5KCkgYXMgR2VvbWV0cnk7XG4gICAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3Qob2xHZW9tZXRyeSwge1xuICAgICAgZmVhdHVyZVByb2plY3Rpb246IHByb2plY3Rpb24sXG4gICAgICBkYXRhUHJvamVjdGlvbjogcHJvamVjdGlvblxuICAgIH0pIGFzIGFueTtcbiAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZS51cGRhdGUoe1xuICAgICAgdHlwZTogRkVBVFVSRSxcbiAgICAgIGdlb21ldHJ5LFxuICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbi5nZXRDb2RlKCksXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIC4uLmZlYXR1cmUucHJvcGVydGllcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIGlkOiBmZWF0dXJlSWQsXG4gICAgICAgICAgZWxlbWVudDogdGl0bGUsXG4gICAgICAgICAgZGlzdGFuY2UsXG4gICAgICAgICAgY29vcmRGcm9tQ2FsY3VsYXRlZERpc3RhbmNlLFxuICAgICAgICAgIGxheWVyU3JjSWQ6IGxheWVyLmlkLFxuICAgICAgICAgIGxheWVyU3JjVGl0bGU6IGxheWVyLnRpdGxlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBtZXRhOiB7XG4gICAgICAgIGlkOiBmZWF0dXJlSWRcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFF1ZXJ5VGl0bGUoZmVhdHVyZTogRmVhdHVyZSwgbGF5ZXI6IEFueUxheWVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoaXNMYXllckl0ZW0obGF5ZXIpICYmIGxheWVyLm9wdGlvbnM/LnNvdXJjZT8ub3B0aW9ucykge1xuICAgICAgY29uc3QgZGF0YVNvdXJjZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLnNvdXJjZVxuICAgICAgICAub3B0aW9ucyBhcyBRdWVyeWFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgICAgIGlmIChkYXRhU291cmNlT3B0aW9ucy5xdWVyeVRpdGxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExhYmVsTWF0Y2goZmVhdHVyZSwgZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0TGFiZWxNYXRjaChmZWF0dXJlOiBGZWF0dXJlLCBsYWJlbE1hdGNoKTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWwgPSBsYWJlbE1hdGNoO1xuICAgIGNvbnN0IGxhYmVsVG9HZXQgPSBBcnJheS5mcm9tKGxhYmVsTWF0Y2gubWF0Y2hBbGwoL1xcJFxceyhbXlxce1xcfV0rKVxcfS9nKSk7XG5cbiAgICBsYWJlbFRvR2V0LmZvckVhY2goKHYpID0+IHtcbiAgICAgIGxhYmVsID0gbGFiZWwucmVwbGFjZSh2WzBdLCBmZWF0dXJlLnByb3BlcnRpZXNbdlsxXV0pO1xuICAgIH0pO1xuXG4gICAgLy8gTm90aGluZyBkb25lPyBjaGVjayBmZWF0dXJlJ3MgYXR0cmlidXRlXG4gICAgaWYgKGxhYmVsVG9HZXQubGVuZ3RoID09PSAwICYmIGxhYmVsID09PSBsYWJlbE1hdGNoKSB7XG4gICAgICBsYWJlbCA9IGZlYXR1cmUucHJvcGVydGllc1tsYWJlbE1hdGNoXSB8fCBsYWJlbE1hdGNoO1xuICAgIH1cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cbn1cbiJdfQ==
|