@igo2/geo 18.0.0-next.7 → 18.0.0-next.9
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/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +7 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/import-export/shared/export.service.mjs +11 -38
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +50 -32
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +26 -16
- package/esm2022/lib/layer/shared/layer.service.mjs +28 -1
- package/esm2022/lib/layer/shared/layers/layer.mjs +11 -2
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/fesm2022/igo2-geo.mjs +243 -142
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +2 -3
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +4 -4
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -1
- package/lib/import-export/shared/export.service.d.ts +0 -3
- package/lib/layer/layer-item/layer-item.component.d.ts +6 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +6 -1
- package/lib/layer/shared/layer.service.d.ts +5 -0
- package/lib/layer/shared/layers/layer.d.ts +1 -0
- package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
- package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
- package/locale/en.geo.json +2 -0
- package/locale/fr.geo.json +2 -0
- package/package.json +6 -7
- package/src/lib/layer/layer-item/layer-item.theme.scss +9 -1
|
@@ -81,6 +81,17 @@ export class LayerItemComponent {
|
|
|
81
81
|
queryBadge = false;
|
|
82
82
|
selectionMode;
|
|
83
83
|
changeDetection;
|
|
84
|
+
unavailableLayer;
|
|
85
|
+
get unavailableLayerTitle() {
|
|
86
|
+
if (this.unavailableLayer.sourceOptions &&
|
|
87
|
+
'params' in this.unavailableLayer.sourceOptions) {
|
|
88
|
+
return this.unavailableLayer.sourceOptions.params.LAYERS;
|
|
89
|
+
}
|
|
90
|
+
else if (this.unavailableLayer.sourceOptions &&
|
|
91
|
+
'layer' in this.unavailableLayer?.sourceOptions) {
|
|
92
|
+
return this.unavailableLayer.sourceOptions.layer;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
84
95
|
get opacity() {
|
|
85
96
|
return this.layer.opacity * 100;
|
|
86
97
|
}
|
|
@@ -106,39 +117,41 @@ export class LayerItemComponent {
|
|
|
106
117
|
this.cdRef = cdRef;
|
|
107
118
|
}
|
|
108
119
|
ngOnInit() {
|
|
109
|
-
if (this.
|
|
110
|
-
this.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
this.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
this.
|
|
131
|
-
|
|
120
|
+
if (!this.unavailableLayer) {
|
|
121
|
+
if (this.layer.visible &&
|
|
122
|
+
this.expandLegendIfVisible &&
|
|
123
|
+
this.layer.firstLoadComponent === true) {
|
|
124
|
+
this.layer.firstLoadComponent = false;
|
|
125
|
+
this.layer.legendCollapsed = false;
|
|
126
|
+
}
|
|
127
|
+
this.toggleLegend(this.layer.legendCollapsed);
|
|
128
|
+
this.updateQueryBadge();
|
|
129
|
+
const resolution$ = this.layer.map.viewController.resolution$;
|
|
130
|
+
this.resolution$$ = resolution$.subscribe(() => {
|
|
131
|
+
this.onResolutionChange();
|
|
132
|
+
});
|
|
133
|
+
this.tooltipText = this.computeTooltip();
|
|
134
|
+
this.network$$ = this.networkService
|
|
135
|
+
.currentState()
|
|
136
|
+
.subscribe((state) => {
|
|
137
|
+
this.state = state;
|
|
138
|
+
this.onResolutionChange();
|
|
139
|
+
});
|
|
140
|
+
this.layers$$ = this.layers$.subscribe(() => {
|
|
141
|
+
if (this.layer && this.layer.options.active) {
|
|
142
|
+
this.layerTool$.next(true);
|
|
143
|
+
this.renderer.addClass(this.elRef.nativeElement, this.focusedCls);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
if (this.changeDetection) {
|
|
147
|
+
this.changeDetection.subscribe(() => this.cdRef.detectChanges());
|
|
132
148
|
}
|
|
133
|
-
});
|
|
134
|
-
if (this.changeDetection) {
|
|
135
|
-
this.changeDetection.subscribe(() => this.cdRef.detectChanges());
|
|
136
149
|
}
|
|
137
150
|
}
|
|
138
151
|
ngOnDestroy() {
|
|
139
|
-
this.resolution
|
|
140
|
-
this.network
|
|
141
|
-
this.layers
|
|
152
|
+
this.resolution$$?.unsubscribe();
|
|
153
|
+
this.network$$?.unsubscribe();
|
|
154
|
+
this.layers$$?.unsubscribe();
|
|
142
155
|
}
|
|
143
156
|
toggleLegend(collapsed) {
|
|
144
157
|
this.layer.legendCollapsed = collapsed;
|
|
@@ -211,8 +224,11 @@ export class LayerItemComponent {
|
|
|
211
224
|
this.layerCheck = !this.layerCheck;
|
|
212
225
|
this.checkbox.emit({ layer: this.layer, check: this.layerCheck });
|
|
213
226
|
}
|
|
227
|
+
deleteUnavailableLayer(anyLayerOptions) {
|
|
228
|
+
this.action.emit(anyLayerOptions);
|
|
229
|
+
}
|
|
214
230
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerItemComponent, deps: [{ token: i1.NetworkService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
215
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LayerItemComponent, isStandalone: true, selector: "igo-layer-item", inputs: { activeLayer: "activeLayer", selectAll: "selectAll", layerCheck: "layerCheck", layer: "layer", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendIfVisible: "expandLegendIfVisible", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", orderable: "orderable", lowerDisabled: "lowerDisabled", raiseDisabled: "raiseDisabled", queryBadge: "queryBadge", selectionMode: "selectionMode", changeDetection: "changeDetection" }, outputs: { action: "action", checkbox: "checkbox" }, ngImport: i0, template: "<mat-list-item class=\"igo-layer-list-item\">\n
|
|
231
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LayerItemComponent, isStandalone: true, selector: "igo-layer-item", inputs: { activeLayer: "activeLayer", selectAll: "selectAll", layerCheck: "layerCheck", layer: "layer", toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendIfVisible: "expandLegendIfVisible", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", orderable: "orderable", lowerDisabled: "lowerDisabled", raiseDisabled: "raiseDisabled", queryBadge: "queryBadge", selectionMode: "selectionMode", changeDetection: "changeDetection", unavailableLayer: "unavailableLayer" }, outputs: { action: "action", checkbox: "checkbox" }, ngImport: i0, template: "<ng-container *ngIf=\"!unavailableLayer; else showUnavailableLayer\">\n <mat-list-item class=\"igo-layer-list-item\">\n <mat-checkbox\n *ngIf=\"selectionMode\"\n class=\"layerCheck\"\n matListItemIcon\n (change)=\"check()\"\n [checked]=\"layerCheck\"\n >\n </mat-checkbox>\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"tooltipText\"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleLegendOnClick()\"\n >\n {{ layer.title }}\n </span>\n\n <div matListItemMeta>\n <button\n *ngIf=\"!selectionMode\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"eyeTooltip | translate\"\n (click)=\"toggleVisibility($event)\"\n >\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"?\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\n [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ (layer.visible$ | async) ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n\n <button\n *ngIf=\"selectionMode\"\n class=\"selection-eye\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n layer.visible\n ? ('igo.geo.layer.hideLayer' | translate)\n : ('igo.geo.layer.showLayer' | translate)\n \"\n (click)=\"toggleVisibility($event)\"\n >\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"?\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\n [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ layer.visible ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n\n <button\n *ngIf=\"!selectionMode\"\n class=\"actions-button\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.moreOptions' | translate\"\n mat-icon-button\n color=\"primary\"\n (click)=\"toggleLayerTool()\"\n >\n <mat-icon>more_horiz</mat-icon>\n </button>\n </div>\n </mat-list-item>\n\n <div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n *ngIf=\"showLegend$ | async\"\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend>\n </div>\n</ng-container>\n\n<ng-template #showUnavailableLayer>\n <mat-list-item\n class=\"igo-layer-list-item unavailable-layer\"\n *ngIf=\"unavailableLayerTitle\"\n >\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"unavailableLayerTitle\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n >\n {{ unavailableLayerTitle }}\n </span>\n <div matListItemMeta>\n <div\n class=\"align-disabled-button-with-tooltip\"\n [matTooltip]=\"'igo.geo.layer.unavailableLayer' | translate\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n >\n <button mat-icon-button disabled=\"true\">\n <mat-icon aria-hidden=\"false\" color=\"warn\" svgIcon=\"alert-outline\">\n </mat-icon>\n </button>\n </div>\n <button\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.layer.deleteLayer' | translate\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n (click)=\"deleteUnavailableLayer(unavailableLayer)\"\n >\n <mat-icon aria-hidden=\"false\" svgIcon=\"delete\"> </mat-icon>\n </button>\n </div>\n </mat-list-item>\n</ng-template>\n", styles: [":host{overflow:hidden}:host ::ng-deep .igo-layer-title{display:block;width:100%;cursor:pointer}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}:host mat-icon[matBadge] ::ng-deep .mat-badge-content{font-size:12px}:host .layerCheck{align-self:baseline;width:16px;padding-right:0}:host .align-disabled-button-with-tooltip{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i2.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i2.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i7.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: LayerLegendComponent, selector: "igo-layer-legend", inputs: ["updateLegendOnResolutionChange", "layer"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
216
232
|
}
|
|
217
233
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerItemComponent, decorators: [{
|
|
218
234
|
type: Component,
|
|
@@ -228,7 +244,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
228
244
|
LayerLegendComponent,
|
|
229
245
|
AsyncPipe,
|
|
230
246
|
IgoLanguageModule
|
|
231
|
-
], template: "<mat-list-item class=\"igo-layer-list-item\">\n
|
|
247
|
+
], template: "<ng-container *ngIf=\"!unavailableLayer; else showUnavailableLayer\">\n <mat-list-item class=\"igo-layer-list-item\">\n <mat-checkbox\n *ngIf=\"selectionMode\"\n class=\"layerCheck\"\n matListItemIcon\n (change)=\"check()\"\n [checked]=\"layerCheck\"\n >\n </mat-checkbox>\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"tooltipText\"\n matTooltipShowDelay=\"500\"\n (click)=\"toggleLegendOnClick()\"\n >\n {{ layer.title }}\n </span>\n\n <div matListItemMeta>\n <button\n *ngIf=\"!selectionMode\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"eyeTooltip | translate\"\n (click)=\"toggleVisibility($event)\"\n >\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"?\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\n [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ (layer.visible$ | async) ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n\n <button\n *ngIf=\"selectionMode\"\n class=\"selection-eye\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"\n layer.visible\n ? ('igo.geo.layer.hideLayer' | translate)\n : ('igo.geo.layer.showLayer' | translate)\n \"\n (click)=\"toggleVisibility($event)\"\n >\n <mat-icon\n aria-hidden=\"false\"\n matBadge=\"?\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\n [ngClass]=\"{ disabled: (inResolutionRange$ | async) === false }\"\n >{{ layer.visible ? 'visibility' : 'visibility_off' }}\n </mat-icon>\n </button>\n\n <button\n *ngIf=\"!selectionMode\"\n class=\"actions-button\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.moreOptions' | translate\"\n mat-icon-button\n color=\"primary\"\n (click)=\"toggleLayerTool()\"\n >\n <mat-icon>more_horiz</mat-icon>\n </button>\n </div>\n </mat-list-item>\n\n <div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n *ngIf=\"showLegend$ | async\"\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend>\n </div>\n</ng-container>\n\n<ng-template #showUnavailableLayer>\n <mat-list-item\n class=\"igo-layer-list-item unavailable-layer\"\n *ngIf=\"unavailableLayerTitle\"\n >\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"unavailableLayerTitle\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n >\n {{ unavailableLayerTitle }}\n </span>\n <div matListItemMeta>\n <div\n class=\"align-disabled-button-with-tooltip\"\n [matTooltip]=\"'igo.geo.layer.unavailableLayer' | translate\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n >\n <button mat-icon-button disabled=\"true\">\n <mat-icon aria-hidden=\"false\" color=\"warn\" svgIcon=\"alert-outline\">\n </mat-icon>\n </button>\n </div>\n <button\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.layer.deleteLayer' | translate\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n (click)=\"deleteUnavailableLayer(unavailableLayer)\"\n >\n <mat-icon aria-hidden=\"false\" svgIcon=\"delete\"> </mat-icon>\n </button>\n </div>\n </mat-list-item>\n</ng-template>\n", styles: [":host{overflow:hidden}:host ::ng-deep .igo-layer-title{display:block;width:100%;cursor:pointer}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}:host mat-icon[matBadge] ::ng-deep .mat-badge-content{font-size:12px}:host .layerCheck{align-self:baseline;width:16px;padding-right:0}:host .align-disabled-button-with-tooltip{display:inline-block}\n"] }]
|
|
232
248
|
}], ctorParameters: () => [{ type: i1.NetworkService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { activeLayer: [{
|
|
233
249
|
type: Input
|
|
234
250
|
}], selectAll: [{
|
|
@@ -255,9 +271,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
255
271
|
type: Input
|
|
256
272
|
}], changeDetection: [{
|
|
257
273
|
type: Input
|
|
274
|
+
}], unavailableLayer: [{
|
|
275
|
+
type: Input
|
|
258
276
|
}], action: [{
|
|
259
277
|
type: Output
|
|
260
278
|
}], checkbox: [{
|
|
261
279
|
type: Output
|
|
262
280
|
}] } });
|
|
263
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1pdGVtL2xheWVyLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItaXRlbS9sYXllci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBR3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7OztBQXNCL0QsTUFBTSxPQUFPLGtCQUFrQjtJQTBHbkI7SUFDQTtJQUNBO0lBQ0E7SUE1R0gsVUFBVSxHQUFHLHdCQUF3QixDQUFDO0lBRTdDLElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBSztRQUNuQixJQUNFLEtBQUs7WUFDTCxJQUFJLENBQUMsS0FBSztZQUNWLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFCLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFDbkIsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUNPLFlBQVksQ0FBQztJQUVyQixVQUFVLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFakQsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBRWpELGtCQUFrQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBRXhELGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO0lBRXZELFdBQVcsQ0FBUztJQUVwQixLQUFLLENBQWtCO0lBRXZCLElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxTQUFTLENBQUMsS0FBYztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNPLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFbEIsVUFBVSxDQUFDO0lBRVosWUFBWSxDQUFlO0lBQzNCLFNBQVMsQ0FBZTtJQUN4QixRQUFRLENBQWU7SUFFL0IsT0FBTyxHQUEyQixJQUFJLGVBQWUsQ0FBUSxTQUFTLENBQUMsQ0FBQztJQUV4RSxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQUs7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ08sTUFBTSxDQUFDO0lBRU4sOEJBQThCLEdBQUcsS0FBSyxDQUFDO0lBRXZDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUU5Qiw4QkFBOEIsR0FBRyxLQUFLLENBQUM7SUFFdkMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVqQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFdEIsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVuQixhQUFhLENBQUM7SUFFZCxlQUFlLENBQUM7SUFFekIsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLE9BQWU7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDakQsT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUN2QixDQUFDLENBQUMseUJBQXlCO2dCQUMzQixDQUFDLENBQUMseUJBQXlCLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFUyxNQUFNLEdBQXdCLElBQUksWUFBWSxDQUFRLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsR0FBRyxJQUFJLFlBQVksRUFHakMsQ0FBQztJQUVMLFlBQ1UsY0FBOEIsRUFDOUIsUUFBbUIsRUFDbkIsS0FBaUIsRUFDakIsS0FBd0I7UUFIeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFtQjtJQUMvQixDQUFDO0lBRUosUUFBUTtRQUNOLElBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO1lBQ2xCLElBQUksQ0FBQyxxQkFBcUI7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLEVBQ3RDLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztZQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDckMsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDO1FBQzlELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV6QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjO2FBQ2pDLFlBQVksRUFBRTthQUNkLFNBQVMsQ0FBQyxDQUFDLEtBQXNCLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUFrQjtRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBWTtRQUMzQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN6QyxJQUFJLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUMxQyxNQUFNLGFBQWEsR0FBSSxZQUFxQyxDQUFDLFFBQVEsQ0FBQztRQUN0RSxRQUFRLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEMsS0FBSyxXQUFXLENBQUMsS0FBSztnQkFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUMxQixLQUFLLFdBQVcsQ0FBQyxRQUFRO2dCQUN2QixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQzVDLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFDaEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxLQUFLLFdBQVcsQ0FBQyxNQUFNO2dCQUNyQixJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ3RDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDM0IsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQzFCLENBQUM7WUFDSDtnQkFDRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztRQUMxRCxJQUNFLGlCQUFpQixLQUFLLEtBQUs7WUFDM0IsSUFBSSxDQUFDLDhCQUE4QixLQUFLLElBQUksRUFDNUMsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sZ0JBQWdCO1FBQ3RCLE1BQU0sTUFBTSxHQUNWLElBQUksQ0FBQyxVQUFVLEtBQUssS0FBSztZQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLO1lBQzVCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNsRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO3dHQXhPVSxrQkFBa0I7NEZBQWxCLGtCQUFrQixtbEJDbkQvQiw0bkZBNEZBLDRXRHRESSxhQUFhLG9iQUNiLElBQUksNEZBQ0osaUJBQWlCLG9ZQUNqQixnQkFBZ0IsNFRBQ2hCLGVBQWUsMklBQ2YsYUFBYSxtTEFDYixjQUFjLDRQQUNkLE9BQU8sb0ZBQ1Asb0JBQW9CLDZHQUNwQixTQUFTLDZDQUNULGlCQUFpQjs7NEZBR1Isa0JBQWtCO2tCQXBCOUIsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsYUFBYTt3QkFDYixJQUFJO3dCQUNKLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxPQUFPO3dCQUNQLG9CQUFvQjt3QkFDcEIsU0FBUzt3QkFDVCxpQkFBaUI7cUJBQ2xCO29LQU1HLFdBQVc7c0JBRGQsS0FBSztnQkFnQ0YsU0FBUztzQkFEWixLQUFLO2dCQVlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBU0YsS0FBSztzQkFEUixLQUFLO2dCQVVHLDhCQUE4QjtzQkFBdEMsS0FBSztnQkFFRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBRUcsOEJBQThCO3NCQUF0QyxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQW1CSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdGUsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9uZXR3b3JrJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWV0YWRhdGFMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9zaGFyZWQvbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IGxheWVySXNRdWVyeWFibGUgfSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkudXRpbHMnO1xuaW1wb3J0IHsgTGF5ZXJMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuLi9sYXllci1sZWdlbmQvbGF5ZXItbGVnZW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYXllciB9IGZyb20gJy4uL3NoYXJlZC9sYXllcnMvbGF5ZXInO1xuaW1wb3J0IHsgVG9vbHRpcFR5cGUgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1sYXllci1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xheWVyLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXllci1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgTmdDbGFzcyxcbiAgICBMYXllckxlZ2VuZENvbXBvbmVudCxcbiAgICBBc3luY1BpcGUsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMYXllckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBmb2N1c2VkQ2xzID0gJ2lnby1sYXllci1pdGVtLWZvY3VzZWQnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBhY3RpdmVMYXllcigpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlTGF5ZXI7XG4gIH1cbiAgc2V0IGFjdGl2ZUxheWVyKHZhbHVlKSB7XG4gICAgaWYgKFxuICAgICAgdmFsdWUgJiZcbiAgICAgIHRoaXMubGF5ZXIgJiZcbiAgICAgIHZhbHVlLmlkID09PSB0aGlzLmxheWVyLmlkICYmXG4gICAgICAhdGhpcy5zZWxlY3Rpb25Nb2RlXG4gICAgKSB7XG4gICAgICB0aGlzLmxheWVyVG9vbCQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmZvY3VzZWRDbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c2VkQ2xzKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYWN0aXZlTGF5ZXI7XG5cbiAgbGF5ZXJUb29sJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHNob3dMZWdlbmQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBpblJlc29sdXRpb25SYW5nZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHF1ZXJ5QmFkZ2VIaWRkZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICB0b29sdGlwVGV4dDogc3RyaW5nO1xuXG4gIHN0YXRlOiBDb25uZWN0aW9uU3RhdGU7XG5cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdEFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0QWxsO1xuICB9XG4gIHNldCBzZWxlY3RBbGwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zZWxlY3RBbGwgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMubGF5ZXJDaGVjayA9IHRydWU7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGxheWVyQ2hlY2s7XG5cbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBuZXR3b3JrJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBsYXllcnMkJDogU3Vic2NyaXB0aW9uO1xuXG4gIGxheWVycyQ6IEJlaGF2aW9yU3ViamVjdDxMYXllcj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheWVyPih1bmRlZmluZWQpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBsYXllcigpIHtcbiAgICByZXR1cm4gdGhpcy5fbGF5ZXI7XG4gIH1cbiAgc2V0IGxheWVyKHZhbHVlKSB7XG4gICAgdGhpcy5fbGF5ZXIgPSB2YWx1ZTtcbiAgICB0aGlzLmxheWVycyQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfbGF5ZXI7XG5cbiAgQElucHV0KCkgdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZXhwYW5kTGVnZW5kSWZWaXNpYmxlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgb3JkZXJhYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoKSBsb3dlckRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgcmFpc2VEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHF1ZXJ5QmFkZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlO1xuXG4gIEBJbnB1dCgpIGNoYW5nZURldGVjdGlvbjtcblxuICBnZXQgb3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYXllci5vcGFjaXR5ICogMTAwO1xuICB9XG4gIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuICAgIHRoaXMubGF5ZXIub3BhY2l0eSA9IG9wYWNpdHkgLyAxMDA7XG4gIH1cblxuICBnZXQgZXllVG9vbHRpcCgpIHtcbiAgICBpZiAodGhpcy5pblJlc29sdXRpb25SYW5nZSQuZ2V0VmFsdWUoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnaWdvLmdlby5sYXllci5ub3RJblJlc29sdXRpb24nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllci52aXNpYmxlXG4gICAgICAgID8gJ2lnby5nZW8ubGF5ZXIuaGlkZUxheWVyJ1xuICAgICAgICA6ICdpZ28uZ2VvLmxheWVyLnNob3dMYXllcic7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGFjdGlvbjogRXZlbnRFbWl0dGVyPExheWVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8TGF5ZXI+KHVuZGVmaW5lZCk7XG4gIEBPdXRwdXQoKSBjaGVja2JveCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGxheWVyOiBMYXllcjtcbiAgICBjaGVjazogYm9vbGVhbjtcbiAgfT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5ldHdvcmtTZXJ2aWNlOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5sYXllci52aXNpYmxlICYmXG4gICAgICB0aGlzLmV4cGFuZExlZ2VuZElmVmlzaWJsZSAmJlxuICAgICAgdGhpcy5sYXllci5maXJzdExvYWRDb21wb25lbnQgPT09IHRydWVcbiAgICApIHtcbiAgICAgIHRoaXMubGF5ZXIuZmlyc3RMb2FkQ29tcG9uZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLmxheWVyLmxlZ2VuZENvbGxhcHNlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUxlZ2VuZCh0aGlzLmxheWVyLmxlZ2VuZENvbGxhcHNlZCk7XG4gICAgdGhpcy51cGRhdGVRdWVyeUJhZGdlKCk7XG5cbiAgICBjb25zdCByZXNvbHV0aW9uJCA9IHRoaXMubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kO1xuICAgIHRoaXMucmVzb2x1dGlvbiQkID0gcmVzb2x1dGlvbiQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMub25SZXNvbHV0aW9uQ2hhbmdlKCk7XG4gICAgfSk7XG4gICAgdGhpcy50b29sdGlwVGV4dCA9IHRoaXMuY29tcHV0ZVRvb2x0aXAoKTtcblxuICAgIHRoaXMubmV0d29yayQkID0gdGhpcy5uZXR3b3JrU2VydmljZVxuICAgICAgLmN1cnJlbnRTdGF0ZSgpXG4gICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQ29ubmVjdGlvblN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgdGhpcy5vblJlc29sdXRpb25DaGFuZ2UoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5sYXllcnMkJCA9IHRoaXMubGF5ZXJzJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubGF5ZXIgJiYgdGhpcy5sYXllci5vcHRpb25zLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLmxheWVyVG9vbCQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZm9jdXNlZENscyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5jaGFuZ2VEZXRlY3Rpb24pIHtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5yZXNvbHV0aW9uJCQudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm5ldHdvcmskJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubGF5ZXJzJCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHRvZ2dsZUxlZ2VuZChjb2xsYXBzZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxheWVyLmxlZ2VuZENvbGxhcHNlZCA9IGNvbGxhcHNlZDtcbiAgICB0aGlzLnNob3dMZWdlbmQkLm5leHQoIWNvbGxhcHNlZCk7XG4gIH1cblxuICB0b2dnbGVMZWdlbmRPbkNsaWNrKCkge1xuICAgIHRoaXMudG9nZ2xlTGVnZW5kKHRoaXMuc2hvd0xlZ2VuZCQudmFsdWUpO1xuICB9XG5cbiAgdG9nZ2xlVmlzaWJpbGl0eShldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmxheWVyLnZpc2libGUgPSAhdGhpcy5sYXllci52aXNpYmxlO1xuICAgIGlmICh0aGlzLnRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZSkge1xuICAgICAgdGhpcy50b2dnbGVMZWdlbmQoIXRoaXMubGF5ZXIudmlzaWJsZSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlUXVlcnlCYWRnZSgpO1xuICB9XG5cbiAgY29tcHV0ZVRvb2x0aXAoKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSB0aGlzLmxheWVyLm9wdGlvbnM7XG4gICAgaWYgKCFsYXllck9wdGlvbnMudG9vbHRpcCkge1xuICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XG4gICAgfVxuICAgIGNvbnN0IGxheWVyVG9vbHRpcCA9IGxheWVyT3B0aW9ucy50b29sdGlwO1xuICAgIGNvbnN0IGxheWVyTWV0YWRhdGEgPSAobGF5ZXJPcHRpb25zIGFzIE1ldGFkYXRhTGF5ZXJPcHRpb25zKS5tZXRhZGF0YTtcbiAgICBzd2l0Y2ggKGxheWVyT3B0aW9ucy50b29sdGlwLnR5cGUpIHtcbiAgICAgIGNhc2UgVG9vbHRpcFR5cGUuVElUTEU6XG4gICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xuICAgICAgY2FzZSBUb29sdGlwVHlwZS5BQlNUUkFDVDpcbiAgICAgICAgaWYgKGxheWVyTWV0YWRhdGEgJiYgbGF5ZXJNZXRhZGF0YS5hYnN0cmFjdCkge1xuICAgICAgICAgIHJldHVybiBsYXllck1ldGFkYXRhLmFic3RyYWN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xuICAgICAgICB9XG4gICAgICBjYXNlIFRvb2x0aXBUeXBlLkNVU1RPTTpcbiAgICAgICAgaWYgKGxheWVyVG9vbHRpcCAmJiBsYXllclRvb2x0aXAudGV4dCkge1xuICAgICAgICAgIHJldHVybiBsYXllclRvb2x0aXAudGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcbiAgICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblJlc29sdXRpb25DaGFuZ2UoKSB7XG4gICAgY29uc3QgaW5SZXNvbHV0aW9uUmFuZ2UgPSB0aGlzLmxheWVyLmlzSW5SZXNvbHV0aW9uc1JhbmdlO1xuICAgIGlmIChcbiAgICAgIGluUmVzb2x1dGlvblJhbmdlID09PSBmYWxzZSAmJlxuICAgICAgdGhpcy51cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2UgPT09IHRydWVcbiAgICApIHtcbiAgICAgIHRoaXMudG9nZ2xlTGVnZW5kKHRydWUpO1xuICAgIH1cbiAgICB0aGlzLmluUmVzb2x1dGlvblJhbmdlJC5uZXh0KGluUmVzb2x1dGlvblJhbmdlKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlUXVlcnlCYWRnZSgpIHtcbiAgICBjb25zdCBoaWRkZW4gPVxuICAgICAgdGhpcy5xdWVyeUJhZGdlID09PSBmYWxzZSB8fFxuICAgICAgdGhpcy5sYXllci52aXNpYmxlID09PSBmYWxzZSB8fFxuICAgICAgIWxheWVySXNRdWVyeWFibGUodGhpcy5sYXllcik7XG4gICAgdGhpcy5xdWVyeUJhZGdlSGlkZGVuJC5uZXh0KGhpZGRlbik7XG4gIH1cblxuICB0b2dnbGVMYXllclRvb2woKSB7XG4gICAgdGhpcy5sYXllclRvb2wkLm5leHQoIXRoaXMubGF5ZXJUb29sJC5nZXRWYWx1ZSgpKTtcbiAgICBpZiAodGhpcy5sYXllclRvb2wkLmdldFZhbHVlKCkgPT09IHRydWUpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0aGlzLmZvY3VzZWRDbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c2VkQ2xzKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh0aGlzLmxheWVyKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVjaygpIHtcbiAgICB0aGlzLmxheWVyQ2hlY2sgPSAhdGhpcy5sYXllckNoZWNrO1xuICAgIHRoaXMuY2hlY2tib3guZW1pdCh7IGxheWVyOiB0aGlzLmxheWVyLCBjaGVjazogdGhpcy5sYXllckNoZWNrIH0pO1xuICB9XG59XG4iLCI8bWF0LWxpc3QtaXRlbSBjbGFzcz1cImlnby1sYXllci1saXN0LWl0ZW1cIj5cbiAgPG1hdC1jaGVja2JveFxuICAgICpuZ0lmPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgY2xhc3M9XCJsYXllckNoZWNrXCJcbiAgICBtYXRMaXN0SXRlbUljb25cbiAgICAoY2hhbmdlKT1cImNoZWNrKClcIlxuICAgIFtjaGVja2VkXT1cImxheWVyQ2hlY2tcIlxuICA+XG4gIDwvbWF0LWNoZWNrYm94PlxuICA8c3BhblxuICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICBjbGFzcz1cImlnby1sYXllci10aXRsZVwiXG4gICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgIChjbGljayk9XCJ0b2dnbGVMZWdlbmRPbkNsaWNrKClcIlxuICA+XG4gICAge3sgbGF5ZXIudGl0bGUgfX1cbiAgPC9zcGFuPlxuXG4gIDxkaXYgbWF0TGlzdEl0ZW1NZXRhPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIXNlbGVjdGlvbk1vZGVcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBbY29sb3JdPVwibGF5ZXIudmlzaWJsZSA/ICdwcmltYXJ5JyA6ICdkZWZhdWx0J1wiXG4gICAgICBjb2xsYXBzaWJsZUJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiZXllVG9vbHRpcCB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgIG1hdEJhZGdlPVwiP1wiXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxuICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJxdWVyeUJhZGdlSGlkZGVuJCB8IGFzeW5jXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogKGluUmVzb2x1dGlvblJhbmdlJCB8IGFzeW5jKSA9PT0gZmFsc2UgfVwiXG4gICAgICAgID57eyAobGF5ZXIudmlzaWJsZSQgfCBhc3luYykgPyAndmlzaWJpbGl0eScgOiAndmlzaWJpbGl0eV9vZmYnIH19XG4gICAgICA8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlXCJcbiAgICAgIGNsYXNzPVwic2VsZWN0aW9uLWV5ZVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIFtjb2xvcl09XCJsYXllci52aXNpYmxlID8gJ3ByaW1hcnknIDogJ2RlZmF1bHQnXCJcbiAgICAgIGNvbGxhcHNpYmxlQnV0dG9uXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgbGF5ZXIudmlzaWJsZVxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmhpZGVMYXllcicgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIuc2hvd0xheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgIG1hdEJhZGdlPVwiP1wiXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIlxuICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCJxdWVyeUJhZGdlSGlkZGVuJCB8IGFzeW5jXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogKGluUmVzb2x1dGlvblJhbmdlJCB8IGFzeW5jKSA9PT0gZmFsc2UgfVwiXG4gICAgICAgID57eyBsYXllci52aXNpYmxlID8gJ3Zpc2liaWxpdHknIDogJ3Zpc2liaWxpdHlfb2ZmJyB9fVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIXNlbGVjdGlvbk1vZGVcIlxuICAgICAgY2xhc3M9XCJhY3Rpb25zLWJ1dHRvblwiXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5tb3JlT3B0aW9ucycgfCB0cmFuc2xhdGVcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUxheWVyVG9vbCgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+bW9yZV9ob3JpejwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9tYXQtbGlzdC1pdGVtPlxuXG48ZGl2ICNsZWdlbmQgY2xhc3M9XCJpZ28tbGF5ZXItbGVnZW5kLWNvbnRhaW5lclwiPlxuICA8aWdvLWxheWVyLWxlZ2VuZFxuICAgICpuZ0lmPVwic2hvd0xlZ2VuZCQgfCBhc3luY1wiXG4gICAgW2xheWVyXT1cImxheWVyXCJcbiAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gID5cbiAgPC9pZ28tbGF5ZXItbGVnZW5kPlxuPC9kaXY+XG4iXX0=
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1pdGVtL2xheWVyLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItaXRlbS9sYXllci1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBR3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxvQkFB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O3NCQUF4QixLQUFLO2dCQWlDSSxNQUFNO3NCQUFmLE1BQU07Z0JBR0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdGUsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9uZXR3b3JrJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWV0YWRhdGFMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9zaGFyZWQvbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IGxheWVySXNRdWVyeWFibGUgfSBmcm9tICcuLi8uLi9xdWVyeS9zaGFyZWQvcXVlcnkudXRpbHMnO1xuaW1wb3J0IHsgTGF5ZXJMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuLi9sYXllci1sZWdlbmQvbGF5ZXItbGVnZW5kLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbnlMYXllck9wdGlvbnMgfSBmcm9tICcuLi9zaGFyZWQnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyJztcbmltcG9ydCB7IFRvb2x0aXBUeXBlIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbGF5ZXItaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllci1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTmdJZixcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJhZGdlTW9kdWxlLFxuICAgIE5nQ2xhc3MsXG4gICAgTGF5ZXJMZWdlbmRDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZm9jdXNlZENscyA9ICdpZ28tbGF5ZXItaXRlbS1mb2N1c2VkJztcblxuICBASW5wdXQoKVxuICBnZXQgYWN0aXZlTGF5ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUxheWVyO1xuICB9XG4gIHNldCBhY3RpdmVMYXllcih2YWx1ZSkge1xuICAgIGlmIChcbiAgICAgIHZhbHVlICYmXG4gICAgICB0aGlzLmxheWVyICYmXG4gICAgICB2YWx1ZS5pZCA9PT0gdGhpcy5sYXllci5pZCAmJlxuICAgICAgIXRoaXMuc2VsZWN0aW9uTW9kZVxuICAgICkge1xuICAgICAgdGhpcy5sYXllclRvb2wkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c2VkQ2xzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZm9jdXNlZENscyk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2FjdGl2ZUxheWVyO1xuXG4gIGxheWVyVG9vbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBzaG93TGVnZW5kJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgaW5SZXNvbHV0aW9uUmFuZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBxdWVyeUJhZGdlSGlkZGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcblxuICBzdGF0ZTogQ29ubmVjdGlvblN0YXRlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RBbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdEFsbDtcbiAgfVxuICBzZXQgc2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VsZWN0QWxsID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmxheWVyQ2hlY2sgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9zZWxlY3RBbGwgPSBmYWxzZTtcblxuICBASW5wdXQoKSBsYXllckNoZWNrO1xuXG4gIHByaXZhdGUgcmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbmV0d29yayQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbGF5ZXJzJCQ6IFN1YnNjcmlwdGlvbjtcblxuICBsYXllcnMkOiBCZWhhdmlvclN1YmplY3Q8TGF5ZXI+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXllcj4odW5kZWZpbmVkKTtcblxuICBASW5wdXQoKVxuICBnZXQgbGF5ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xheWVyO1xuICB9XG4gIHNldCBsYXllcih2YWx1ZSkge1xuICAgIHRoaXMuX2xheWVyID0gdmFsdWU7XG4gICAgdGhpcy5sYXllcnMkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2xheWVyO1xuXG4gIEBJbnB1dCgpIHRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGV4cGFuZExlZ2VuZElmVmlzaWJsZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIG9yZGVyYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KCkgbG93ZXJEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHJhaXNlRGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKSBxdWVyeUJhZGdlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2VsZWN0aW9uTW9kZTtcblxuICBASW5wdXQoKSBjaGFuZ2VEZXRlY3Rpb247XG5cbiAgQElucHV0KCkgdW5hdmFpbGFibGVMYXllcjogQW55TGF5ZXJPcHRpb25zO1xuXG4gIGdldCB1bmF2YWlsYWJsZUxheWVyVGl0bGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnVuYXZhaWxhYmxlTGF5ZXIuc291cmNlT3B0aW9ucyAmJlxuICAgICAgJ3BhcmFtcycgaW4gdGhpcy51bmF2YWlsYWJsZUxheWVyLnNvdXJjZU9wdGlvbnNcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLnVuYXZhaWxhYmxlTGF5ZXIuc291cmNlT3B0aW9ucy5wYXJhbXMuTEFZRVJTO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLnVuYXZhaWxhYmxlTGF5ZXIuc291cmNlT3B0aW9ucyAmJlxuICAgICAgJ2xheWVyJyBpbiB0aGlzLnVuYXZhaWxhYmxlTGF5ZXI/LnNvdXJjZU9wdGlvbnNcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLnVuYXZhaWxhYmxlTGF5ZXIuc291cmNlT3B0aW9ucy5sYXllcjtcbiAgICB9XG4gIH1cblxuICBnZXQgb3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYXllci5vcGFjaXR5ICogMTAwO1xuICB9XG4gIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuICAgIHRoaXMubGF5ZXIub3BhY2l0eSA9IG9wYWNpdHkgLyAxMDA7XG4gIH1cblxuICBnZXQgZXllVG9vbHRpcCgpIHtcbiAgICBpZiAodGhpcy5pblJlc29sdXRpb25SYW5nZSQuZ2V0VmFsdWUoKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiAnaWdvLmdlby5sYXllci5ub3RJblJlc29sdXRpb24nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllci52aXNpYmxlXG4gICAgICAgID8gJ2lnby5nZW8ubGF5ZXIuaGlkZUxheWVyJ1xuICAgICAgICA6ICdpZ28uZ2VvLmxheWVyLnNob3dMYXllcic7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGFjdGlvbjogRXZlbnRFbWl0dGVyPExheWVyIHwgQW55TGF5ZXJPcHRpb25zPiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgTGF5ZXIgfCBBbnlMYXllck9wdGlvbnNcbiAgPih1bmRlZmluZWQpO1xuICBAT3V0cHV0KCkgY2hlY2tib3ggPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBsYXllcjogTGF5ZXI7XG4gICAgY2hlY2s6IGJvb2xlYW47XG4gIH0+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZXR3b3JrU2VydmljZTogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy51bmF2YWlsYWJsZUxheWVyKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubGF5ZXIudmlzaWJsZSAmJlxuICAgICAgICB0aGlzLmV4cGFuZExlZ2VuZElmVmlzaWJsZSAmJlxuICAgICAgICB0aGlzLmxheWVyLmZpcnN0TG9hZENvbXBvbmVudCA9PT0gdHJ1ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGF5ZXIuZmlyc3RMb2FkQ29tcG9uZW50ID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGF5ZXIubGVnZW5kQ29sbGFwc2VkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLnRvZ2dsZUxlZ2VuZCh0aGlzLmxheWVyLmxlZ2VuZENvbGxhcHNlZCk7XG4gICAgICB0aGlzLnVwZGF0ZVF1ZXJ5QmFkZ2UoKTtcblxuICAgICAgY29uc3QgcmVzb2x1dGlvbiQgPSB0aGlzLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5yZXNvbHV0aW9uJDtcbiAgICAgIHRoaXMucmVzb2x1dGlvbiQkID0gcmVzb2x1dGlvbiQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblJlc29sdXRpb25DaGFuZ2UoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy50b29sdGlwVGV4dCA9IHRoaXMuY29tcHV0ZVRvb2x0aXAoKTtcblxuICAgICAgdGhpcy5uZXR3b3JrJCQgPSB0aGlzLm5ldHdvcmtTZXJ2aWNlXG4gICAgICAgIC5jdXJyZW50U3RhdGUoKVxuICAgICAgICAuc3Vic2NyaWJlKChzdGF0ZTogQ29ubmVjdGlvblN0YXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgIHRoaXMub25SZXNvbHV0aW9uQ2hhbmdlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLmxheWVycyQkID0gdGhpcy5sYXllcnMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmxheWVyICYmIHRoaXMubGF5ZXIub3B0aW9ucy5hY3RpdmUpIHtcbiAgICAgICAgICB0aGlzLmxheWVyVG9vbCQubmV4dCh0cnVlKTtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c2VkQ2xzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmNoYW5nZURldGVjdGlvbikge1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVzb2x1dGlvbiQkPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubmV0d29yayQkPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubGF5ZXJzJCQ/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICB0b2dnbGVMZWdlbmQoY29sbGFwc2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5sYXllci5sZWdlbmRDb2xsYXBzZWQgPSBjb2xsYXBzZWQ7XG4gICAgdGhpcy5zaG93TGVnZW5kJC5uZXh0KCFjb2xsYXBzZWQpO1xuICB9XG5cbiAgdG9nZ2xlTGVnZW5kT25DbGljaygpIHtcbiAgICB0aGlzLnRvZ2dsZUxlZ2VuZCh0aGlzLnNob3dMZWdlbmQkLnZhbHVlKTtcbiAgfVxuXG4gIHRvZ2dsZVZpc2liaWxpdHkoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5sYXllci52aXNpYmxlID0gIXRoaXMubGF5ZXIudmlzaWJsZTtcbiAgICBpZiAodGhpcy50b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2UpIHtcbiAgICAgIHRoaXMudG9nZ2xlTGVnZW5kKCF0aGlzLmxheWVyLnZpc2libGUpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZVF1ZXJ5QmFkZ2UoKTtcbiAgfVxuXG4gIGNvbXB1dGVUb29sdGlwKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGF5ZXJPcHRpb25zID0gdGhpcy5sYXllci5vcHRpb25zO1xuICAgIGlmICghbGF5ZXJPcHRpb25zLnRvb2x0aXApIHtcbiAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xuICAgIH1cbiAgICBjb25zdCBsYXllclRvb2x0aXAgPSBsYXllck9wdGlvbnMudG9vbHRpcDtcbiAgICBjb25zdCBsYXllck1ldGFkYXRhID0gKGxheWVyT3B0aW9ucyBhcyBNZXRhZGF0YUxheWVyT3B0aW9ucykubWV0YWRhdGE7XG4gICAgc3dpdGNoIChsYXllck9wdGlvbnMudG9vbHRpcC50eXBlKSB7XG4gICAgICBjYXNlIFRvb2x0aXBUeXBlLlRJVExFOlxuICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcbiAgICAgIGNhc2UgVG9vbHRpcFR5cGUuQUJTVFJBQ1Q6XG4gICAgICAgIGlmIChsYXllck1ldGFkYXRhICYmIGxheWVyTWV0YWRhdGEuYWJzdHJhY3QpIHtcbiAgICAgICAgICByZXR1cm4gbGF5ZXJNZXRhZGF0YS5hYnN0cmFjdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcbiAgICAgICAgfVxuICAgICAgY2FzZSBUb29sdGlwVHlwZS5DVVNUT006XG4gICAgICAgIGlmIChsYXllclRvb2x0aXAgJiYgbGF5ZXJUb29sdGlwLnRleHQpIHtcbiAgICAgICAgICByZXR1cm4gbGF5ZXJUb29sdGlwLnRleHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25SZXNvbHV0aW9uQ2hhbmdlKCkge1xuICAgIGNvbnN0IGluUmVzb2x1dGlvblJhbmdlID0gdGhpcy5sYXllci5pc0luUmVzb2x1dGlvbnNSYW5nZTtcbiAgICBpZiAoXG4gICAgICBpblJlc29sdXRpb25SYW5nZSA9PT0gZmFsc2UgJiZcbiAgICAgIHRoaXMudXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlID09PSB0cnVlXG4gICAgKSB7XG4gICAgICB0aGlzLnRvZ2dsZUxlZ2VuZCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5pblJlc29sdXRpb25SYW5nZSQubmV4dChpblJlc29sdXRpb25SYW5nZSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVF1ZXJ5QmFkZ2UoKSB7XG4gICAgY29uc3QgaGlkZGVuID1cbiAgICAgIHRoaXMucXVlcnlCYWRnZSA9PT0gZmFsc2UgfHxcbiAgICAgIHRoaXMubGF5ZXIudmlzaWJsZSA9PT0gZmFsc2UgfHxcbiAgICAgICFsYXllcklzUXVlcnlhYmxlKHRoaXMubGF5ZXIpO1xuICAgIHRoaXMucXVlcnlCYWRnZUhpZGRlbiQubmV4dChoaWRkZW4pO1xuICB9XG5cbiAgdG9nZ2xlTGF5ZXJUb29sKCkge1xuICAgIHRoaXMubGF5ZXJUb29sJC5uZXh0KCF0aGlzLmxheWVyVG9vbCQuZ2V0VmFsdWUoKSk7XG4gICAgaWYgKHRoaXMubGF5ZXJUb29sJC5nZXRWYWx1ZSgpID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGhpcy5mb2N1c2VkQ2xzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZm9jdXNlZENscyk7XG4gICAgfVxuICAgIHRoaXMuYWN0aW9uLmVtaXQodGhpcy5sYXllcik7XG4gIH1cblxuICBwdWJsaWMgY2hlY2soKSB7XG4gICAgdGhpcy5sYXllckNoZWNrID0gIXRoaXMubGF5ZXJDaGVjaztcbiAgICB0aGlzLmNoZWNrYm94LmVtaXQoeyBsYXllcjogdGhpcy5sYXllciwgY2hlY2s6IHRoaXMubGF5ZXJDaGVjayB9KTtcbiAgfVxuXG4gIGRlbGV0ZVVuYXZhaWxhYmxlTGF5ZXIoYW55TGF5ZXJPcHRpb25zOiBBbnlMYXllck9wdGlvbnMpIHtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KGFueUxheWVyT3B0aW9ucyk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhdW5hdmFpbGFibGVMYXllcjsgZWxzZSBzaG93VW5hdmFpbGFibGVMYXllclwiPlxuICA8bWF0LWxpc3QtaXRlbSBjbGFzcz1cImlnby1sYXllci1saXN0LWl0ZW1cIj5cbiAgICA8bWF0LWNoZWNrYm94XG4gICAgICAqbmdJZj1cInNlbGVjdGlvbk1vZGVcIlxuICAgICAgY2xhc3M9XCJsYXllckNoZWNrXCJcbiAgICAgIG1hdExpc3RJdGVtSWNvblxuICAgICAgKGNoYW5nZSk9XCJjaGVjaygpXCJcbiAgICAgIFtjaGVja2VkXT1cImxheWVyQ2hlY2tcIlxuICAgID5cbiAgICA8L21hdC1jaGVja2JveD5cbiAgICA8c3BhblxuICAgICAgbWF0TGlzdEl0ZW1UaXRsZVxuICAgICAgY2xhc3M9XCJpZ28tbGF5ZXItdGl0bGVcIlxuICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlTGVnZW5kT25DbGljaygpXCJcbiAgICA+XG4gICAgICB7eyBsYXllci50aXRsZSB9fVxuICAgIDwvc3Bhbj5cblxuICAgIDxkaXYgbWF0TGlzdEl0ZW1NZXRhPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cIiFzZWxlY3Rpb25Nb2RlXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIFtjb2xvcl09XCJsYXllci52aXNpYmxlID8gJ3ByaW1hcnknIDogJ2RlZmF1bHQnXCJcbiAgICAgICAgY29sbGFwc2libGVCdXR0b25cbiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cImV5ZVRvb2x0aXAgfCB0cmFuc2xhdGVcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlVmlzaWJpbGl0eSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgbWF0QmFkZ2U9XCI/XCJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwiYWNjZW50XCJcbiAgICAgICAgICBtYXRCYWRnZVNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgbWF0QmFkZ2VQb3NpdGlvbj1cImFmdGVyXCJcbiAgICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwicXVlcnlCYWRnZUhpZGRlbiQgfCBhc3luY1wiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogKGluUmVzb2x1dGlvblJhbmdlJCB8IGFzeW5jKSA9PT0gZmFsc2UgfVwiXG4gICAgICAgICAgPnt7IChsYXllci52aXNpYmxlJCB8IGFzeW5jKSA/ICd2aXNpYmlsaXR5JyA6ICd2aXNpYmlsaXR5X29mZicgfX1cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwic2VsZWN0aW9uTW9kZVwiXG4gICAgICAgIGNsYXNzPVwic2VsZWN0aW9uLWV5ZVwiXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwibGF5ZXIudmlzaWJsZSA/ICdwcmltYXJ5JyA6ICdkZWZhdWx0J1wiXG4gICAgICAgIGNvbGxhcHNpYmxlQnV0dG9uXG4gICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgICBsYXllci52aXNpYmxlXG4gICAgICAgICAgICA/ICgnaWdvLmdlby5sYXllci5oaWRlTGF5ZXInIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIuc2hvd0xheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVZpc2liaWxpdHkoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICAgIG1hdEJhZGdlPVwiP1wiXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxuICAgICAgICAgIG1hdEJhZGdlUG9zaXRpb249XCJhZnRlclwiXG4gICAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cInF1ZXJ5QmFkZ2VIaWRkZW4kIHwgYXN5bmNcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IChpblJlc29sdXRpb25SYW5nZSQgfCBhc3luYykgPT09IGZhbHNlIH1cIlxuICAgICAgICAgID57eyBsYXllci52aXNpYmxlID8gJ3Zpc2liaWxpdHknIDogJ3Zpc2liaWxpdHlfb2ZmJyB9fVxuICAgICAgICA8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCIhc2VsZWN0aW9uTW9kZVwiXG4gICAgICAgIGNsYXNzPVwiYWN0aW9ucy1idXR0b25cIlxuICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIubW9yZU9wdGlvbnMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVMYXllclRvb2woKVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvbj5tb3JlX2hvcml6PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1saXN0LWl0ZW0+XG5cbiAgPGRpdiAjbGVnZW5kIGNsYXNzPVwiaWdvLWxheWVyLWxlZ2VuZC1jb250YWluZXJcIj5cbiAgICA8aWdvLWxheWVyLWxlZ2VuZFxuICAgICAgKm5nSWY9XCJzaG93TGVnZW5kJCB8IGFzeW5jXCJcbiAgICAgIFtsYXllcl09XCJsYXllclwiXG4gICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gICAgPlxuICAgIDwvaWdvLWxheWVyLWxlZ2VuZD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzaG93VW5hdmFpbGFibGVMYXllcj5cbiAgPG1hdC1saXN0LWl0ZW1cbiAgICBjbGFzcz1cImlnby1sYXllci1saXN0LWl0ZW0gdW5hdmFpbGFibGUtbGF5ZXJcIlxuICAgICpuZ0lmPVwidW5hdmFpbGFibGVMYXllclRpdGxlXCJcbiAgPlxuICAgIDxzcGFuXG4gICAgICBtYXRMaXN0SXRlbVRpdGxlXG4gICAgICBjbGFzcz1cImlnby1sYXllci10aXRsZVwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJ1bmF2YWlsYWJsZUxheWVyVGl0bGVcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgID5cbiAgICAgIHt7IHVuYXZhaWxhYmxlTGF5ZXJUaXRsZSB9fVxuICAgIDwvc3Bhbj5cbiAgICA8ZGl2IG1hdExpc3RJdGVtTWV0YT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhbGlnbi1kaXNhYmxlZC1idXR0b24td2l0aC10b29sdGlwXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIudW5hdmFpbGFibGVMYXllcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQ9XCJ0cnVlXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBjb2xvcj1cIndhcm5cIiBzdmdJY29uPVwiYWxlcnQtb3V0bGluZVwiPlxuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5kZWxldGVMYXllcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVVuYXZhaWxhYmxlTGF5ZXIodW5hdmFpbGFibGVMYXllcilcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJmYWxzZVwiIHN2Z0ljb249XCJkZWxldGVcIj4gPC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L21hdC1saXN0LWl0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
|