@unovis/angular 1.6.5-topojson.8 → 1.6.5

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.
@@ -60,6 +60,15 @@ export declare class VisTopoJSONMapComponent<AreaDatum, PointDatum, LinkDatum> i
60
60
  mapFitToPoints?: boolean;
61
61
  /** Initial zoom level. Default: `undefined` */
62
62
  zoomFactor?: number;
63
+ /** Zoom to a specific location. When set, the map will zoom to the specified coordinates at the given zoom level.
64
+ * Format: `{ coordinates: [longitude, latitude], zoomLevel: number, expandCluster?: boolean }`
65
+ * When `expandCluster` is true, the cluster at or nearest to the coordinates will be expanded.
66
+ * Default: `undefined` */
67
+ zoomToLocation?: {
68
+ coordinates: [number, number];
69
+ zoomLevel: number;
70
+ expandCluster?: boolean;
71
+ };
63
72
  /** Disable pan / zoom interactions. Default: `false` */
64
73
  disableZoom?: boolean;
65
74
  /** Zoom extent. Default: `[0.5, 6]` */
@@ -202,5 +211,5 @@ export declare class VisTopoJSONMapComponent<AreaDatum, PointDatum, LinkDatum> i
202
211
  ngOnChanges(changes: SimpleChanges): void;
203
212
  private getConfig;
204
213
  static ɵfac: i0.ɵɵFactoryDeclaration<VisTopoJSONMapComponent<any, any, any>, never>;
205
- static ɵcmp: i0.ɵɵComponentDeclaration<VisTopoJSONMapComponent<any, any, any>, "vis-topojson-map", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "projection": "projection"; "topojson": "topojson"; "mapFeatureName": "mapFeatureName"; "mapFitToPoints": "mapFitToPoints"; "zoomFactor": "zoomFactor"; "disableZoom": "disableZoom"; "zoomExtent": "zoomExtent"; "zoomDuration": "zoomDuration"; "linkWidth": "linkWidth"; "linkColor": "linkColor"; "linkCursor": "linkCursor"; "linkId": "linkId"; "linkSource": "linkSource"; "linkTarget": "linkTarget"; "sourceLongitude": "sourceLongitude"; "sourceLatitude": "sourceLatitude"; "targetLongitude": "targetLongitude"; "targetLatitude": "targetLatitude"; "sourcePointRadius": "sourcePointRadius"; "sourcePointColor": "sourcePointColor"; "flowParticleColor": "flowParticleColor"; "flowParticleRadius": "flowParticleRadius"; "flowParticleSpeed": "flowParticleSpeed"; "flowParticleDensity": "flowParticleDensity"; "enableFlowAnimation": "enableFlowAnimation"; "onSourcePointClick": "onSourcePointClick"; "onSourcePointMouseEnter": "onSourcePointMouseEnter"; "onSourcePointMouseLeave": "onSourcePointMouseLeave"; "areaId": "areaId"; "areaColor": "areaColor"; "areaCursor": "areaCursor"; "areaLabel": "areaLabel"; "pointColor": "pointColor"; "pointRadius": "pointRadius"; "pointStrokeWidth": "pointStrokeWidth"; "pointShape": "pointShape"; "pointRingWidth": "pointRingWidth"; "pointCursor": "pointCursor"; "longitude": "longitude"; "latitude": "latitude"; "pointLabel": "pointLabel"; "pointLabelColor": "pointLabelColor"; "pointLabelPosition": "pointLabelPosition"; "pointBottomLabel": "pointBottomLabel"; "pointLabelTextBrightnessRatio": "pointLabelTextBrightnessRatio"; "pointId": "pointId"; "clusterColor": "clusterColor"; "clusterRadius": "clusterRadius"; "clusterLabel": "clusterLabel"; "clusterLabelColor": "clusterLabelColor"; "clusterBottomLabel": "clusterBottomLabel"; "clusterRingWidth": "clusterRingWidth"; "clusterBackground": "clusterBackground"; "clusterExpandOnClick": "clusterExpandOnClick"; "clusteringDistance": "clusteringDistance"; "clustering": "clustering"; "heatmapMode": "heatmapMode"; "heatmapModeBlurStdDeviation": "heatmapModeBlurStdDeviation"; "heatmapModeZoomLevelThreshold": "heatmapModeZoomLevelThreshold"; "colorMap": "colorMap"; "data": "data"; }, {}, never, never>;
214
+ static ɵcmp: i0.ɵɵComponentDeclaration<VisTopoJSONMapComponent<any, any, any>, "vis-topojson-map", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "projection": "projection"; "topojson": "topojson"; "mapFeatureName": "mapFeatureName"; "mapFitToPoints": "mapFitToPoints"; "zoomFactor": "zoomFactor"; "zoomToLocation": "zoomToLocation"; "disableZoom": "disableZoom"; "zoomExtent": "zoomExtent"; "zoomDuration": "zoomDuration"; "linkWidth": "linkWidth"; "linkColor": "linkColor"; "linkCursor": "linkCursor"; "linkId": "linkId"; "linkSource": "linkSource"; "linkTarget": "linkTarget"; "sourceLongitude": "sourceLongitude"; "sourceLatitude": "sourceLatitude"; "targetLongitude": "targetLongitude"; "targetLatitude": "targetLatitude"; "sourcePointRadius": "sourcePointRadius"; "sourcePointColor": "sourcePointColor"; "flowParticleColor": "flowParticleColor"; "flowParticleRadius": "flowParticleRadius"; "flowParticleSpeed": "flowParticleSpeed"; "flowParticleDensity": "flowParticleDensity"; "enableFlowAnimation": "enableFlowAnimation"; "onSourcePointClick": "onSourcePointClick"; "onSourcePointMouseEnter": "onSourcePointMouseEnter"; "onSourcePointMouseLeave": "onSourcePointMouseLeave"; "areaId": "areaId"; "areaColor": "areaColor"; "areaCursor": "areaCursor"; "areaLabel": "areaLabel"; "pointColor": "pointColor"; "pointRadius": "pointRadius"; "pointStrokeWidth": "pointStrokeWidth"; "pointShape": "pointShape"; "pointRingWidth": "pointRingWidth"; "pointCursor": "pointCursor"; "longitude": "longitude"; "latitude": "latitude"; "pointLabel": "pointLabel"; "pointLabelColor": "pointLabelColor"; "pointLabelPosition": "pointLabelPosition"; "pointBottomLabel": "pointBottomLabel"; "pointLabelTextBrightnessRatio": "pointLabelTextBrightnessRatio"; "pointId": "pointId"; "clusterColor": "clusterColor"; "clusterRadius": "clusterRadius"; "clusterLabel": "clusterLabel"; "clusterLabelColor": "clusterLabelColor"; "clusterBottomLabel": "clusterBottomLabel"; "clusterRingWidth": "clusterRingWidth"; "clusterBackground": "clusterBackground"; "clusterExpandOnClick": "clusterExpandOnClick"; "clusteringDistance": "clusteringDistance"; "clustering": "clustering"; "heatmapMode": "heatmapMode"; "heatmapModeBlurStdDeviation": "heatmapModeBlurStdDeviation"; "heatmapModeZoomLevelThreshold": "heatmapModeZoomLevelThreshold"; "colorMap": "colorMap"; "data": "data"; }, {}, never, never>;
206
215
  }
@@ -21,8 +21,8 @@ export class VisTopoJSONMapComponent {
21
21
  (_c = this.componentContainer) === null || _c === void 0 ? void 0 : _c.render();
22
22
  }
23
23
  getConfig() {
24
- const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap } = this;
25
- const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap };
24
+ const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, zoomToLocation, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap } = this;
25
+ const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, zoomToLocation, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap };
26
26
  const keys = Object.keys(config);
27
27
  keys.forEach(key => { if (config[key] === undefined)
28
28
  delete config[key]; });
@@ -30,7 +30,7 @@ export class VisTopoJSONMapComponent {
30
30
  }
31
31
  }
32
32
  VisTopoJSONMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", sourceLongitude: "sourceLongitude", sourceLatitude: "sourceLatitude", targetLongitude: "targetLongitude", targetLatitude: "targetLatitude", sourcePointRadius: "sourcePointRadius", sourcePointColor: "sourcePointColor", flowParticleColor: "flowParticleColor", flowParticleRadius: "flowParticleRadius", flowParticleSpeed: "flowParticleSpeed", flowParticleDensity: "flowParticleDensity", enableFlowAnimation: "enableFlowAnimation", onSourcePointClick: "onSourcePointClick", onSourcePointMouseEnter: "onSourcePointMouseEnter", onSourcePointMouseLeave: "onSourcePointMouseLeave", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", areaLabel: "areaLabel", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelColor: "pointLabelColor", pointLabelPosition: "pointLabelPosition", pointBottomLabel: "pointBottomLabel", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", clusterColor: "clusterColor", clusterRadius: "clusterRadius", clusterLabel: "clusterLabel", clusterLabelColor: "clusterLabelColor", clusterBottomLabel: "clusterBottomLabel", clusterRingWidth: "clusterRingWidth", clusterBackground: "clusterBackground", clusterExpandOnClick: "clusterExpandOnClick", clusteringDistance: "clusteringDistance", clustering: "clustering", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", colorMap: "colorMap", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
33
+ VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", zoomToLocation: "zoomToLocation", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", sourceLongitude: "sourceLongitude", sourceLatitude: "sourceLatitude", targetLongitude: "targetLongitude", targetLatitude: "targetLatitude", sourcePointRadius: "sourcePointRadius", sourcePointColor: "sourcePointColor", flowParticleColor: "flowParticleColor", flowParticleRadius: "flowParticleRadius", flowParticleSpeed: "flowParticleSpeed", flowParticleDensity: "flowParticleDensity", enableFlowAnimation: "enableFlowAnimation", onSourcePointClick: "onSourcePointClick", onSourcePointMouseEnter: "onSourcePointMouseEnter", onSourcePointMouseLeave: "onSourcePointMouseLeave", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", areaLabel: "areaLabel", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelColor: "pointLabelColor", pointLabelPosition: "pointLabelPosition", pointBottomLabel: "pointBottomLabel", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", clusterColor: "clusterColor", clusterRadius: "clusterRadius", clusterLabel: "clusterLabel", clusterLabelColor: "clusterLabelColor", clusterBottomLabel: "clusterBottomLabel", clusterRingWidth: "clusterRingWidth", clusterBackground: "clusterBackground", clusterExpandOnClick: "clusterExpandOnClick", clusteringDistance: "clusteringDistance", clustering: "clustering", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", colorMap: "colorMap", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
34
34
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{
@@ -55,6 +55,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
55
55
  type: Input
56
56
  }], zoomFactor: [{
57
57
  type: Input
58
+ }], zoomToLocation: [{
59
+ type: Input
58
60
  }], disableZoom: [{
59
61
  type: Input
60
62
  }], zoomExtent: [{
@@ -168,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
168
170
  }], data: [{
169
171
  type: Input
170
172
  }] } });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wb2pzb24tbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RvcG9qc29uLW1hcC90b3BvanNvbi1tYXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxXQUFXLEdBV1osTUFBTSxZQUFZLENBQUE7QUFFbkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFBOztBQVE3QyxNQUFNLE9BQU8sdUJBQXVCO0lBZ1FsQyxlQUFlOztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQW1DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXBGLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxF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LEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLDZCQUE2QjtzQkFBckMsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFHRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBcUJHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgVG9wb0pTT05NYXAsXG4gIFRvcG9KU09OTWFwQ29uZmlnSW50ZXJmYWNlLFxuICBDb250YWluZXJDb3JlLFxuICBWaXNFdmVudFR5cGUsXG4gIFZpc0V2ZW50Q2FsbGJhY2ssXG4gIE51bWVyaWNBY2Nlc3NvcixcbiAgQ29sb3JBY2Nlc3NvcixcbiAgU3RyaW5nQWNjZXNzb3IsXG4gIE1hcFBvaW50TGFiZWxQb3NpdGlvbixcbiAgVG9wb0pTT05NYXBDbHVzdGVyRGF0dW0sXG4gIFRvcG9KU09OTWFwUG9pbnRTdHlsZXMsXG59IGZyb20gJ0B1bm92aXMvdHMnXG5pbXBvcnQgeyBHZW9Qcm9qZWN0aW9uIH0gZnJvbSAnZDMtZ2VvJ1xuaW1wb3J0IHsgVmlzQ29yZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvcmUnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Zpcy10b3BvanNvbi1tYXAnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc0NvcmVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNUb3BvSlNPTk1hcENvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzVG9wb0pTT05NYXBDb21wb25lbnQ8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+IGltcGxlbWVudHMgVG9wb0pTT05NYXBDb25maWdJbnRlcmZhY2U8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiB0aGUgZGF0YSB1cGRhdGUgdHJhbnNpdGlvbnMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0OiBgNjAwYCAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBFdmVudHMgY29uZmlndXJhdGlvbi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFtldmVudFR5cGVdOiBjYWxsYmFja0Z1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIGNsaWNrOiAoZCkgPT4gY29uc29sZS5sb2coXCJDbGlja2VkIEFyZWFcIiwgZClcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgZXZlbnRzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2V2ZW50VHlwZSBpbiBWaXNFdmVudFR5cGVdPzogVmlzRXZlbnRDYWxsYmFja1xuICAgIH07XG4gIH1cblxuICAvKiogWW91IGNhbiBzZXQgZXZlcnkgU1ZHIGFuZCBIVE1MIHZpc3VhbGl6YXRpb24gb2JqZWN0IHRvIGhhdmUgYSBjdXN0b20gRE9NIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIHVzZWZ1bFxuICAgKiB3aGVuIHlvdSB3YW50IHRvIGRvIHVuaXQgb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLiBBdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFthdHRyaWJ1dGVOYW1lXTogYXR0cmlidXRlIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIFwidGVzdC12YWx1ZVwiOiBkID0+IGQudmFsdWVcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRlcz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFthdHRyOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgKChkYXR1bTogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIE1hcFByb2plY3Rpb24gKGFrYSBEMydzIEdlb1Byb2plY3Rpb24pIGluc3RhbmNlLiBEZWZhdWx0OiBgTWFwUHJvamVjdGlvbi5LYXZyYXlza2l5NygpYCAqL1xuICBASW5wdXQoKSBwcm9qZWN0aW9uPzogR2VvUHJvamVjdGlvblxuXG4gIC8qKiBNYXAgZGF0YSBpbiB0aGUgVG9wb0pTT04gdG9wb2xvZ3kgZm9ybWF0LiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB0b3BvanNvbj86IFRvcG9KU09OLlRvcG9sb2d5XG5cbiAgLyoqIE5hbWUgb2YgdGhlIG1hcCBmZWF0dXJlcyB0byBiZSBkaXNwbGF5ZWQsIGUuZy4gJ2NvdW50cmllcycgb3IgJ2NvdW50aWVzJy4gRGVmYXVsdDogYGNvdW50cmllc2AgKi9cbiAgQElucHV0KCkgbWFwRmVhdHVyZU5hbWU/OiBzdHJpbmdcblxuICAvKiogU2V0IGluaXRpYWwgbWFwIGZpdCB0byBwb2ludHMgaW5zdGVhZCBvZiB0b3BvanNvbiBmZWF0dXJlcy4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBtYXBGaXRUb1BvaW50cz86IGJvb2xlYW5cblxuICAvKiogSW5pdGlhbCB6b29tIGxldmVsLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB6b29tRmFjdG9yPzogbnVtYmVyXG5cbiAgLyoqIERpc2FibGUgcGFuIC8gem9vbSBpbnRlcmFjdGlvbnMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVpvb20/OiBib29sZWFuXG5cbiAgLyoqIFpvb20gZXh0ZW50LiBEZWZhdWx0OiBgWzAuNSwgNl1gICovXG4gIEBJbnB1dCgpIHpvb21FeHRlbnQ/OiBudW1iZXJbXVxuXG4gIC8qKiBab29tIGFuaW1hdGlvbiBkdXJhdGlvbi4gRGVmYXVsdDogYDQwMGAgKi9cbiAgQElucHV0KCkgem9vbUR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIExpbmsgd2lkdGggdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQud2lkdGggPz8gMWAgKi9cbiAgQElucHV0KCkgbGlua1dpZHRoPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogTGluayBjb2xvciB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBsaW5rQ29sb3I/OiBDb2xvckFjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogTGluayBjdXJzb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBsaW5rQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBMaW5rIGlkIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmlkYCAqL1xuICBASW5wdXQoKSBsaW5rSWQ/OiBTdHJpbmdBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIExpbmsgc291cmNlIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLnNvdXJjZWAgKi9cbiAgQElucHV0KCkgbGlua1NvdXJjZT86ICgobDogTGlua0RhdHVtKSA9PiBudW1iZXIgfCBzdHJpbmcgfCBQb2ludERhdHVtKVxuXG4gIC8qKiBMaW5rIHRhcmdldCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC50YXJnZXRgICovXG4gIEBJbnB1dCgpIGxpbmtUYXJnZXQ/OiAoKGw6IExpbmtEYXR1bSkgPT4gbnVtYmVyIHwgc3RyaW5nIHwgUG9pbnREYXR1bSlcblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnNvdXJjZUxvbmdpdHVkZWAgKi9cbiAgQElucHV0KCkgc291cmNlTG9uZ2l0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbGF0aXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGBmID0+IGYuc291cmNlTGF0aXR1ZGVgICovXG4gIEBJbnB1dCgpIHNvdXJjZUxhdGl0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyB0YXJnZXQgcG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnRhcmdldExvbmdpdHVkZWAgKi9cbiAgQElucHV0KCkgdGFyZ2V0TG9uZ2l0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyB0YXJnZXQgcG9pbnQgbGF0aXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGBmID0+IGYudGFyZ2V0TGF0aXR1ZGVgICovXG4gIEBJbnB1dCgpIHRhcmdldExhdGl0dWRlPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgcmFkaXVzIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgM2AgKi9cbiAgQElucHV0KCkgc291cmNlUG9pbnRSYWRpdXM/OiBOdW1lcmljQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBTb3VyY2UgcG9pbnQgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAnIzg4OTE5ZidgICovXG4gIEBJbnB1dCgpIHNvdXJjZVBvaW50Q29sb3I/OiBDb2xvckFjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBwYXJ0aWNsZSBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYCcjOTQ5ZGFkJ2AgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlQ29sb3I/OiBDb2xvckFjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBwYXJ0aWNsZSByYWRpdXMgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAxLjFgICovXG4gIEBJbnB1dCgpIGZsb3dQYXJ0aWNsZVJhZGl1cz86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgcGFydGljbGUgc3BlZWQgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIFRoZSB1bml0IGlzIGFyYml0cmFyeSwgcmVjb21tZW5kZWQgcmFuZ2UgaXMgMCDigJMgMC4yLiBEZWZhdWx0OiBgMC4wN2AgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlU3BlZWQ/OiBOdW1lcmljQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBGbG93IHBhcnRpY2xlIGRlbnNpdHkgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUgb24gdGhlIHJhbmdlIG9mIFswLCAxXS4gRGVmYXVsdDogYDAuNmAgKi9cbiAgQElucHV0KCkgZmxvd1BhcnRpY2xlRGVuc2l0eT86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEVuYWJsZSBmbG93IGFuaW1hdGlvbnMuIFdoZW4gdHJ1ZSwgc2hvd3MgYW5pbWF0ZWQgcGFydGljbGVzIGFsb25nIGxpbmtzLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGVuYWJsZUZsb3dBbmltYXRpb24/OiBib29sZWFuXG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IGNsaWNrIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblNvdXJjZVBvaW50Q2xpY2s/OiAoZjogTGlua0RhdHVtLCB4OiBudW1iZXIsIHk6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbW91c2Ugb3ZlciBjYWxsYmFjayBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXI/OiAoZjogTGlua0RhdHVtLCB4OiBudW1iZXIsIHk6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcblxuICAvKiogRmxvdyBzb3VyY2UgcG9pbnQgbW91c2UgbGVhdmUgY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlPzogKGY6IExpbmtEYXR1bSwgZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWRcblxuICAvKiogQXJlYSBpZCBhY2Nlc3NvciBmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBmZWF0dXJlIGlkIGZyb20gVG9wb0pTT04uIERlZmF1bHQ6IGBkID0+IGQuaWQgPz8gJydgICovXG4gIEBJbnB1dCgpIGFyZWFJZD86IFN0cmluZ0FjY2Vzc29yPEFyZWFEYXR1bT5cblxuICAvKiogQXJlYSBjb2xvciB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBhcmVhQ29sb3I/OiBDb2xvckFjY2Vzc29yPEFyZWFEYXR1bT5cblxuICAvKiogQXJlYSBjdXJzb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBhcmVhQ3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8QXJlYURhdHVtPlxuXG4gIC8qKiBBcmVhIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBhcmVhTGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxBcmVhRGF0dW0+XG5cbiAgLyoqIFBvaW50IGNvbG9yIGFjY2Vzc29yLiBEZWZhdWx0OiBgZCA9PiBkLmNvbG9yID8/IG51bGxgICovXG4gIEBJbnB1dCgpIHBvaW50Q29sb3I/OiBDb2xvckFjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHJhZGl1cyBhY2Nlc3Nvci4gRGVmYXVsdDogYGQgPT4gZC5yYWRpdXMgPz8gOGAgKi9cbiAgQElucHV0KCkgcG9pbnRSYWRpdXM/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgc3Ryb2tlIHdpZHRoIGFjY2Vzc29yLiBEZWZhdWx0OiBgZCA9PiBkLnN0cm9rZVdpZHRoID8/IG51bGxgICovXG4gIEBJbnB1dCgpIHBvaW50U3Ryb2tlV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgc2hhcGUgYWNjZXNzb3IuIERlZmF1bHQ6IGBUb3BvSlNPTk1hcFBvaW50U2hhcGUuQ2lyY2xlYCAqL1xuICBASW5wdXQoKSBwb2ludFNoYXBlPzogU3RyaW5nQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgcmluZyB3aWR0aCBmb3IgcmluZy1zaGFwZWQgcG9pbnRzLiBEZWZhdWx0OiBgMmAgKi9cbiAgQElucHV0KCkgcG9pbnRSaW5nV2lkdGg/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgY3Vyc29yIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgcG9pbnRDdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBsb25naXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQubG9uZ2l0dWRlID8/IG51bGxgICovXG4gIEBJbnB1dCgpIGxvbmdpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBsYXRpdHVkZSBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5sYXRpdHVkZSA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBsYXRpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBpbm5lciBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgcG9pbnRMYWJlbD86IFN0cmluZ0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IGlubmVyIGxhYmVsIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgbGFiZWwgY29sb3Igd2lsbCBiZSBzZXQsIGRlcGVuZGluZyBvbiB0aGUgcG9pbnQgYnJpZ2h0bmVzcywgZWl0aGVyIHRvXG4gICAqIGAtLXZpcy1tYXAtcG9pbnQtbGFiZWwtdGV4dC1jb2xvci1kYXJrYCBvciB0byBgLS12aXMtbWFwLXBvaW50LWxhYmVsLXRleHQtY29sb3ItbGlnaHRgIENTUyB2YXJpYWJsZS5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgcG9pbnRMYWJlbENvbG9yPzogQ29sb3JBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBsYWJlbCBwb3NpdGlvbi4gRGVmYXVsdDogYE1hcFBvaW50TGFiZWxQb3NpdGlvbi5DZW50ZXJgICovXG4gIEBJbnB1dCgpIHBvaW50TGFiZWxQb3NpdGlvbj86IE1hcFBvaW50TGFiZWxQb3NpdGlvblxuXG4gIC8qKiBQb2ludCBib3R0b20gbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHBvaW50Qm90dG9tTGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBjb2xvciBicmlnaHRuZXNzIHJhdGlvIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBkYXJrIGFuZCBsaWdodCB0ZXh0IGxhYmVsIGNvbG9yLiBEZWZhdWx0OiBgMC42NWAgKi9cbiAgQElucHV0KCkgcG9pbnRMYWJlbFRleHRCcmlnaHRuZXNzUmF0aW8/OiBudW1iZXJcblxuICAvKiogUG9pbnQgaWQgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQuaWRgICovXG4gIEBJbnB1dCgpIHBvaW50SWQ/OiAoKGQ6IFBvaW50RGF0dW0sIGk6IG51bWJlcikgPT4gc3RyaW5nKVxuXG4gIC8qKiBDbHVzdGVyIGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIGNvbnN0YW50IHZhbHVlLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBjbHVzdGVyQ29sb3I/OiBDb2xvckFjY2Vzc29yPFRvcG9KU09OTWFwQ2x1c3RlckRhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBDbHVzdGVyIHJhZGl1cyBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgY2x1c3RlclJhZGl1cz86IE51bWVyaWNBY2Nlc3NvcjxUb3BvSlNPTk1hcENsdXN0ZXJEYXR1bTxQb2ludERhdHVtPj5cblxuICAvKiogQ2x1c3RlciBpbm5lciBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5wb2ludENvdW50YCAqL1xuICBASW5wdXQoKSBjbHVzdGVyTGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxUb3BvSlNPTk1hcENsdXN0ZXJEYXR1bTxQb2ludERhdHVtPj5cblxuICAvKiogQ2x1c3RlciBpbm5lciBsYWJlbCBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgY2x1c3RlckxhYmVsQ29sb3I/OiBTdHJpbmdBY2Nlc3NvcjxUb3BvSlNPTk1hcENsdXN0ZXJEYXR1bTxQb2ludERhdHVtPj5cblxuICAvKiogQ2x1c3RlciBib3R0b20gbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGAnJ2AgKi9cbiAgQElucHV0KCkgY2x1c3RlckJvdHRvbUxhYmVsPzogU3RyaW5nQWNjZXNzb3I8VG9wb0pTT05NYXBDbHVzdGVyRGF0dW08UG9pbnREYXR1bT4+XG5cbiAgLyoqIFRoZSB3aWR0aCBvZiB0aGUgY2x1c3RlciBwb2ludCByaW5nLiBEZWZhdWx0OiBgMmAgKi9cbiAgQElucHV0KCkgY2x1c3RlclJpbmdXaWR0aD86IG51bWJlclxuXG4gIC8qKiBXaGVuIGNsdXN0ZXIgaXMgZXhwYW5kZWQsIHNob3cgYSBiYWNrZ3JvdW5kIGNpcmNsZSB0byBiZXR0ZXIgc2VwYXJhdGUgcG9pbnRzIGZyb20gdGhlIGJhc2UgbWFwLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgY2x1c3RlckJhY2tncm91bmQ/OiBib29sZWFuXG5cbiAgLyoqIERlZmluZXMgd2hldGhlciB0aGUgY2x1c3RlciBzaG91bGQgZXhwYW5kIG9uIGNsaWNrIG9yIG5vdC4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJFeHBhbmRPbkNsaWNrPzogYm9vbGVhblxuXG4gIC8qKiBDbHVzdGVyaW5nIGRpc3RhbmNlIGluIHBpeGVscy4gRGVmYXVsdDogYDU1YCAqL1xuICBASW5wdXQoKSBjbHVzdGVyaW5nRGlzdGFuY2U/OiBudW1iZXJcblxuICAvKiogRW5hYmxlIHBvaW50IGNsdXN0ZXJpbmcuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgY2x1c3RlcmluZz86IGJvb2xlYW5cblxuICAvKiogRW5hYmxlcyBibHVyIGFuZCBibGVuZGluZyBiZXR3ZWVuIG5laWdoYm91cmluZyBwb2ludHMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgaGVhdG1hcE1vZGU/OiBib29sZWFuXG5cbiAgLyoqIEhlYXRtYXAgYmx1ciBmaWx0ZXIgc3RkRGV2aWF0aW9uIHZhbHVlLiBEZWZhdWx0OiBgMTBgICovXG4gIEBJbnB1dCgpIGhlYXRtYXBNb2RlQmx1clN0ZERldmlhdGlvbj86IG51bWJlclxuXG4gIC8qKiBab29tIGxldmVsIGF0IHdoaWNoIHRoZSBoZWF0bWFwIG1vZGUgd2lsbCBiZSBkaXNhYmxlZC4gRGVmYXVsdDogYDIuNWAgKi9cbiAgQElucHV0KCkgaGVhdG1hcE1vZGVab29tTGV2ZWxUaHJlc2hvbGQ/OiBudW1iZXJcblxuICAvKiogQSBzaW5nbGUgbWFwIHBvaW50IGNhbiBoYXZlIG11bHRpcGxlIHByb3BlcnRpZXMgZGlzcGxheWVkIGFzIGEgc21hbGwgcGllIGNoYXJ0LlxuICAgKiBCeSBzZXR0aW5nIHRoZSBjb2xvck1hcCBjb25maWd1cmF0aW9uIHlvdSBjYW4gc3BlY2lmeSBkYXRhIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgYmUgbWFwcGVkIHRvIHZhcmlvdXMgcGllIC8gZG9udXQgc2VnbWVudHMuXG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICBba2V5IGluIGtleW9mIFBvaW50RGF0dW1dPzogeyBjb2xvcjogc3RyaW5nLCBjbGFzc05hbWU/OiBzdHJpbmcgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgaGVhbHRoeTogeyBjb2xvcjogJ2dyZWVuJyB9LFxuICAgKiAgd2FybmluZzogeyBjb2xvcjogJ29yYW5nZScgfSxcbiAgICogIGNyaXRpY2FsOiB7IGNvbG9yOiAncmVkJyB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIHdoZXJlIGV2ZXJ5IGRhdGEgcG9pbnQgaGFzIHRoZSBgaGVhbHRoeWAsIGB3YXJuaW5nYCBhbmQgYGNyaXRpY2FsYCBudW1lcmljYWwgb3IgYm9vbGVhbiBwcm9wZXJ0eS5cbiAgICogTm90ZTogUHJvcGVydGllcyB3aXRoIDAgb3IgZmFsc3kgdmFsdWVzIHdpbGwgbm90IGJlIGRpc3BsYXllZCBpbiB0aGUgcGllIGNoYXJ0LlxuICAgKiBEZWZhdWx0OiBge31gICovXG4gIEBJbnB1dCgpIGNvbG9yTWFwPzogVG9wb0pTT05NYXBQb2ludFN0eWxlczxQb2ludERhdHVtPlxuICBASW5wdXQoKSBkYXRhOiB7YXJlYXM/OiBBcmVhRGF0dW1bXTsgcG9pbnRzPzogUG9pbnREYXR1bVtdOyBsaW5rcz86IExpbmtEYXR1bVtdfVxuXG4gIGNvbXBvbmVudDogVG9wb0pTT05NYXA8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+IHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjb21wb25lbnRDb250YWluZXI6IENvbnRhaW5lckNvcmUgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IFRvcG9KU09OTWFwPEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPih0aGlzLmdldENvbmZpZygpKVxuXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuc2V0RGF0YSh0aGlzLmRhdGEpXG4gICAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHsgdGhpcy5jb21wb25lbnQ/LnNldERhdGEodGhpcy5kYXRhKSB9XG4gICAgdGhpcy5jb21wb25lbnQ/LnNldENvbmZpZyh0aGlzLmdldENvbmZpZygpKVxuICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWcgKCk6IFRvcG9KU09OTWFwQ29uZmlnSW50ZXJmYWNlPEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPiB7XG4gICAgY29uc3QgeyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCBwcm9qZWN0aW9uLCB0b3BvanNvbiwgbWFwRmVhdHVyZU5hbWUsIG1hcEZpdFRvUG9pbnRzLCB6b29tRmFjdG9yLCBkaXNhYmxlWm9vbSwgem9vbUV4dGVudCwgem9vbUR1cmF0aW9uLCBsaW5rV2lkdGgsIGxpbmtDb2xvciwgbGlua0N1cnNvciwgbGlua0lkLCBsaW5rU291cmNlLCBsaW5rVGFyZ2V0LCBzb3VyY2VMb25naXR1ZGUsIHNvdXJjZUxhdGl0dWRlLCB0YXJnZXRMb25naXR1ZGUsIHRhcmdldExhdGl0dWRlLCBzb3VyY2VQb2ludFJhZGl1cywgc291cmNlUG9pbnRDb2xvciwgZmxvd1BhcnRpY2xlQ29sb3IsIGZsb3dQYXJ0aWNsZVJhZGl1cywgZmxvd1BhcnRpY2xlU3BlZWQsIGZsb3dQYXJ0aWNsZURlbnNpdHksIGVuYWJsZUZsb3dBbmltYXRpb24sIG9uU291cmNlUG9pbnRDbGljaywgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXIsIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlLCBhcmVhSWQsIGFyZWFDb2xvciwgYXJlYUN1cnNvciwgYXJlYUxhYmVsLCBwb2ludENvbG9yLCBwb2ludFJhZGl1cywgcG9pbnRTdHJva2VXaWR0aCwgcG9pbnRTaGFwZSwgcG9pbnRSaW5nV2lkdGgsIHBvaW50Q3Vyc29yLCBsb25naXR1ZGUsIGxhdGl0dWRlLCBwb2ludExhYmVsLCBwb2ludExhYmVsQ29sb3IsIHBvaW50TGFiZWxQb3NpdGlvbiwgcG9pbnRCb3R0b21MYWJlbCwgcG9pbnRMYWJlbFRleHRCcmlnaHRuZXNzUmF0aW8sIHBvaW50SWQsIGNsdXN0ZXJDb2xvciwgY2x1c3RlclJhZGl1cywgY2x1c3RlckxhYmVsLCBjbHVzdGVyTGFiZWxDb2xvciwgY2x1c3RlckJvdHRvbUxhYmVsLCBjbHVzdGVyUmluZ1dpZHRoLCBjbHVzdGVyQmFja2dyb3VuZCwgY2x1c3RlckV4cGFuZE9uQ2xpY2ssIGNsdXN0ZXJpbmdEaXN0YW5jZSwgY2x1c3RlcmluZywgaGVhdG1hcE1vZGUsIGhlYXRtYXBNb2RlQmx1clN0ZERldmlhdGlvbiwgaGVhdG1hcE1vZGVab29tTGV2ZWxUaHJlc2hvbGQsIGNvbG9yTWFwIH0gPSB0aGlzXG4gICAgY29uc3QgY29uZmlnID0geyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCBwcm9qZWN0aW9uLCB0b3BvanNvbiwgbWFwRmVhdHVyZU5hbWUsIG1hcEZpdFRvUG9pbnRzLCB6b29tRmFjdG9yLCBkaXNhYmxlWm9vbSwgem9vbUV4dGVudCwgem9vbUR1cmF0aW9uLCBsaW5rV2lkdGgsIGxpbmtDb2xvciwgbGlua0N1cnNvciwgbGlua0lkLCBsaW5rU291cmNlLCBsaW5rVGFyZ2V0LCBzb3VyY2VMb25naXR1ZGUsIHNvdXJjZUxhdGl0dWRlLCB0YXJnZXRMb25naXR1ZGUsIHRhcmdldExhdGl0dWRlLCBzb3VyY2VQb2ludFJhZGl1cywgc291cmNlUG9pbnRDb2xvciwgZmxvd1BhcnRpY2xlQ29sb3IsIGZsb3dQYXJ0aWNsZVJhZGl1cywgZmxvd1BhcnRpY2xlU3BlZWQsIGZsb3dQYXJ0aWNsZURlbnNpdHksIGVuYWJsZUZsb3dBbmltYXRpb24sIG9uU291cmNlUG9pbnRDbGljaywgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXIsIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlLCBhcmVhSWQsIGFyZWFDb2xvciwgYXJlYUN1cnNvciwgYXJlYUxhYmVsLCBwb2ludENvbG9yLCBwb2ludFJhZGl1cywgcG9pbnRTdHJva2VXaWR0aCwgcG9pbnRTaGFwZSwgcG9pbnRSaW5nV2lkdGgsIHBvaW50Q3Vyc29yLCBsb25naXR1ZGUsIGxhdGl0dWRlLCBwb2ludExhYmVsLCBwb2ludExhYmVsQ29sb3IsIHBvaW50TGFiZWxQb3NpdGlvbiwgcG9pbnRCb3R0b21MYWJlbCwgcG9pbnRMYWJlbFRleHRCcmlnaHRuZXNzUmF0aW8sIHBvaW50SWQsIGNsdXN0ZXJDb2xvciwgY2x1c3RlclJhZGl1cywgY2x1c3RlckxhYmVsLCBjbHVzdGVyTGFiZWxDb2xvciwgY2x1c3RlckJvdHRvbUxhYmVsLCBjbHVzdGVyUmluZ1dpZHRoLCBjbHVzdGVyQmFja2dyb3VuZCwgY2x1c3RlckV4cGFuZE9uQ2xpY2ssIGNsdXN0ZXJpbmdEaXN0YW5jZSwgY2x1c3RlcmluZywgaGVhdG1hcE1vZGUsIGhlYXRtYXBNb2RlQmx1clN0ZERldmlhdGlvbiwgaGVhdG1hcE1vZGVab29tTGV2ZWxUaHJlc2hvbGQsIGNvbG9yTWFwIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKSBhcyAoa2V5b2YgVG9wb0pTT05NYXBDb25maWdJbnRlcmZhY2U8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+KVtdXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7IGlmIChjb25maWdba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgY29uZmlnW2tleV0gfSlcblxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuIl19
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wb2pzb24tbWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RvcG9qc29uLW1hcC90b3BvanNvbi1tYXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxXQUFXLEdBV1osTUFBTSxZQUFZLENBQUE7QUFFbkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFBOztBQVE3QyxNQUFNLE9BQU8sdUJBQXVCO0lBMFFsQyxlQUFlOztRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLENBQW1DLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXBGLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxF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QUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxXQUFXO3NCQUFuQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSztnQkFHRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBR0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBR0csNkJBQTZCO3NCQUFyQyxLQUFLO2dCQXFCRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vICEhISBUaGlzIGNvZGUgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkLiBZb3Ugc2hvdWxkIG5vdCBjaGFuZ2UgaXQgISEhXG5pbXBvcnQgeyBDb21wb25lbnQsIEFmdGVyVmlld0luaXQsIElucHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFRvcG9KU09OTWFwLFxuICBUb3BvSlNPTk1hcENvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIFN0cmluZ0FjY2Vzc29yLFxuICBNYXBQb2ludExhYmVsUG9zaXRpb24sXG4gIFRvcG9KU09OTWFwQ2x1c3RlckRhdHVtLFxuICBUb3BvSlNPTk1hcFBvaW50U3R5bGVzLFxufSBmcm9tICdAdW5vdmlzL3RzJ1xuaW1wb3J0IHsgR2VvUHJvamVjdGlvbiB9IGZyb20gJ2QzLWdlbydcbmltcG9ydCB7IFZpc0NvcmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtdG9wb2pzb24tbWFwJyxcbiAgdGVtcGxhdGU6ICcnLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBWaXNDb3JlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogVmlzVG9wb0pTT05NYXBDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIFZpc1RvcG9KU09OTWFwQ29tcG9uZW50PEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPiBpbXBsZW1lbnRzIFRvcG9KU09OTWFwQ29uZmlnSW50ZXJmYWNlPEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPiwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIGRhdGEgdXBkYXRlIHRyYW5zaXRpb25zIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdDogYDYwMGAgKi9cbiAgQElucHV0KCkgZHVyYXRpb24/OiBudW1iZXJcblxuICAvKiogRXZlbnRzIGNvbmZpZ3VyYXRpb24uIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbZXZlbnRUeXBlXTogY2FsbGJhY2tGdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBjbGljazogKGQpID0+IGNvbnNvbGUubG9nKFwiQ2xpY2tlZCBBcmVhXCIsIGQpXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGV2ZW50cz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFtldmVudFR5cGUgaW4gVmlzRXZlbnRUeXBlXT86IFZpc0V2ZW50Q2FsbGJhY2tcbiAgICB9O1xuICB9XG5cbiAgLyoqIFlvdSBjYW4gc2V0IGV2ZXJ5IFNWRyBhbmQgSFRNTCB2aXN1YWxpemF0aW9uIG9iamVjdCB0byBoYXZlIGEgY3VzdG9tIERPTSBhdHRyaWJ1dGVzLCB3aGljaCBpcyB1c2VmdWxcbiAgICogd2hlbiB5b3Ugd2FudCB0byBkbyB1bml0IG9yIGVuZC10by1lbmQgdGVzdGluZy4gQXR0cmlidXRlcyBjb25maWd1cmF0aW9uIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbYXR0cmlidXRlTmFtZV06IGF0dHJpYnV0ZSBjb25zdGFudCB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBcInRlc3QtdmFsdWVcIjogZCA9PiBkLnZhbHVlXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZXM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbYXR0cjogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8ICgoZGF0dW06IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBNYXBQcm9qZWN0aW9uIChha2EgRDMncyBHZW9Qcm9qZWN0aW9uKSBpbnN0YW5jZS4gRGVmYXVsdDogYE1hcFByb2plY3Rpb24uS2F2cmF5c2tpeTcoKWAgKi9cbiAgQElucHV0KCkgcHJvamVjdGlvbj86IEdlb1Byb2plY3Rpb25cblxuICAvKiogTWFwIGRhdGEgaW4gdGhlIFRvcG9KU09OIHRvcG9sb2d5IGZvcm1hdC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgdG9wb2pzb24/OiBUb3BvSlNPTi5Ub3BvbG9neVxuXG4gIC8qKiBOYW1lIG9mIHRoZSBtYXAgZmVhdHVyZXMgdG8gYmUgZGlzcGxheWVkLCBlLmcuICdjb3VudHJpZXMnIG9yICdjb3VudGllcycuIERlZmF1bHQ6IGBjb3VudHJpZXNgICovXG4gIEBJbnB1dCgpIG1hcEZlYXR1cmVOYW1lPzogc3RyaW5nXG5cbiAgLyoqIFNldCBpbml0aWFsIG1hcCBmaXQgdG8gcG9pbnRzIGluc3RlYWQgb2YgdG9wb2pzb24gZmVhdHVyZXMuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgbWFwRml0VG9Qb2ludHM/OiBib29sZWFuXG5cbiAgLyoqIEluaXRpYWwgem9vbSBsZXZlbC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgem9vbUZhY3Rvcj86IG51bWJlclxuXG4gIC8qKiBab29tIHRvIGEgc3BlY2lmaWMgbG9jYXRpb24uIFdoZW4gc2V0LCB0aGUgbWFwIHdpbGwgem9vbSB0byB0aGUgc3BlY2lmaWVkIGNvb3JkaW5hdGVzIGF0IHRoZSBnaXZlbiB6b29tIGxldmVsLlxuICAgKiBGb3JtYXQ6IGB7IGNvb3JkaW5hdGVzOiBbbG9uZ2l0dWRlLCBsYXRpdHVkZV0sIHpvb21MZXZlbDogbnVtYmVyLCBleHBhbmRDbHVzdGVyPzogYm9vbGVhbiB9YFxuICAgKiBXaGVuIGBleHBhbmRDbHVzdGVyYCBpcyB0cnVlLCB0aGUgY2x1c3RlciBhdCBvciBuZWFyZXN0IHRvIHRoZSBjb29yZGluYXRlcyB3aWxsIGJlIGV4cGFuZGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB6b29tVG9Mb2NhdGlvbj86IHtcbiAgICBjb29yZGluYXRlczogW251bWJlciwgbnVtYmVyXTtcbiAgICB6b29tTGV2ZWw6IG51bWJlcjtcbiAgICBleHBhbmRDbHVzdGVyPzogYm9vbGVhbjtcbiAgfVxuXG4gIC8qKiBEaXNhYmxlIHBhbiAvIHpvb20gaW50ZXJhY3Rpb25zLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGRpc2FibGVab29tPzogYm9vbGVhblxuXG4gIC8qKiBab29tIGV4dGVudC4gRGVmYXVsdDogYFswLjUsIDZdYCAqL1xuICBASW5wdXQoKSB6b29tRXh0ZW50PzogbnVtYmVyW11cblxuICAvKiogWm9vbSBhbmltYXRpb24gZHVyYXRpb24uIERlZmF1bHQ6IGA0MDBgICovXG4gIEBJbnB1dCgpIHpvb21EdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBMaW5rIHdpZHRoIHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLndpZHRoID8/IDFgICovXG4gIEBJbnB1dCgpIGxpbmtXaWR0aD86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIExpbmsgY29sb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQuY29sb3IgPz8gbnVsbGAgKi9cbiAgQElucHV0KCkgbGlua0NvbG9yPzogQ29sb3JBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIExpbmsgY3Vyc29yIHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgbGlua0N1cnNvcj86IFN0cmluZ0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogTGluayBpZCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5pZGAgKi9cbiAgQElucHV0KCkgbGlua0lkPzogU3RyaW5nQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBMaW5rIHNvdXJjZSBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5zb3VyY2VgICovXG4gIEBJbnB1dCgpIGxpbmtTb3VyY2U/OiAoKGw6IExpbmtEYXR1bSkgPT4gbnVtYmVyIHwgc3RyaW5nIHwgUG9pbnREYXR1bSlcblxuICAvKiogTGluayB0YXJnZXQgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQudGFyZ2V0YCAqL1xuICBASW5wdXQoKSBsaW5rVGFyZ2V0PzogKChsOiBMaW5rRGF0dW0pID0+IG51bWJlciB8IHN0cmluZyB8IFBvaW50RGF0dW0pXG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IGxvbmdpdHVkZSBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYGYgPT4gZi5zb3VyY2VMb25naXR1ZGVgICovXG4gIEBJbnB1dCgpIHNvdXJjZUxvbmdpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IGxhdGl0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnNvdXJjZUxhdGl0dWRlYCAqL1xuICBASW5wdXQoKSBzb3VyY2VMYXRpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgdGFyZ2V0IHBvaW50IGxvbmdpdHVkZSBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYGYgPT4gZi50YXJnZXRMb25naXR1ZGVgICovXG4gIEBJbnB1dCgpIHRhcmdldExvbmdpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgdGFyZ2V0IHBvaW50IGxhdGl0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgZiA9PiBmLnRhcmdldExhdGl0dWRlYCAqL1xuICBASW5wdXQoKSB0YXJnZXRMYXRpdHVkZT86IE51bWVyaWNBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IHJhZGl1cyBhY2Nlc3NvciBmdW5jdGlvbiBvciB2YWx1ZS4gRGVmYXVsdDogYDNgICovXG4gIEBJbnB1dCgpIHNvdXJjZVBvaW50UmFkaXVzPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogU291cmNlIHBvaW50IGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgJyM4ODkxOWYnYCAqL1xuICBASW5wdXQoKSBzb3VyY2VQb2ludENvbG9yPzogQ29sb3JBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgcGFydGljbGUgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgdmFsdWUuIERlZmF1bHQ6IGAnIzk0OWRhZCdgICovXG4gIEBJbnB1dCgpIGZsb3dQYXJ0aWNsZUNvbG9yPzogQ29sb3JBY2Nlc3NvcjxMaW5rRGF0dW0+XG5cbiAgLyoqIEZsb3cgcGFydGljbGUgcmFkaXVzIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBEZWZhdWx0OiBgMS4xYCAqL1xuICBASW5wdXQoKSBmbG93UGFydGljbGVSYWRpdXM/OiBOdW1lcmljQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBGbG93IHBhcnRpY2xlIHNwZWVkIGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlLiBUaGUgdW5pdCBpcyBhcmJpdHJhcnksIHJlY29tbWVuZGVkIHJhbmdlIGlzIDAg4oCTIDAuMi4gRGVmYXVsdDogYDAuMDdgICovXG4gIEBJbnB1dCgpIGZsb3dQYXJ0aWNsZVNwZWVkPzogTnVtZXJpY0FjY2Vzc29yPExpbmtEYXR1bT5cblxuICAvKiogRmxvdyBwYXJ0aWNsZSBkZW5zaXR5IGFjY2Vzc29yIGZ1bmN0aW9uIG9yIHZhbHVlIG9uIHRoZSByYW5nZSBvZiBbMCwgMV0uIERlZmF1bHQ6IGAwLjZgICovXG4gIEBJbnB1dCgpIGZsb3dQYXJ0aWNsZURlbnNpdHk/OiBOdW1lcmljQWNjZXNzb3I8TGlua0RhdHVtPlxuXG4gIC8qKiBFbmFibGUgZmxvdyBhbmltYXRpb25zLiBXaGVuIHRydWUsIHNob3dzIGFuaW1hdGVkIHBhcnRpY2xlcyBhbG9uZyBsaW5rcy4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBlbmFibGVGbG93QW5pbWF0aW9uPzogYm9vbGVhblxuXG4gIC8qKiBGbG93IHNvdXJjZSBwb2ludCBjbGljayBjYWxsYmFjayBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgb25Tb3VyY2VQb2ludENsaWNrPzogKGY6IExpbmtEYXR1bSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkXG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IG1vdXNlIG92ZXIgY2FsbGJhY2sgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG9uU291cmNlUG9pbnRNb3VzZUVudGVyPzogKGY6IExpbmtEYXR1bSwgeDogbnVtYmVyLCB5OiBudW1iZXIsIGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkXG5cbiAgLyoqIEZsb3cgc291cmNlIHBvaW50IG1vdXNlIGxlYXZlIGNhbGxiYWNrIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBvblNvdXJjZVBvaW50TW91c2VMZWF2ZT86IChmOiBMaW5rRGF0dW0sIGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB2b2lkXG5cbiAgLyoqIEFyZWEgaWQgYWNjZXNzb3IgZnVuY3Rpb24gY29ycmVzcG9uZGluZyB0byB0aGUgZmVhdHVyZSBpZCBmcm9tIFRvcG9KU09OLiBEZWZhdWx0OiBgZCA9PiBkLmlkID8/ICcnYCAqL1xuICBASW5wdXQoKSBhcmVhSWQ/OiBTdHJpbmdBY2Nlc3NvcjxBcmVhRGF0dW0+XG5cbiAgLyoqIEFyZWEgY29sb3IgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQuY29sb3IgPz8gbnVsbGAgKi9cbiAgQElucHV0KCkgYXJlYUNvbG9yPzogQ29sb3JBY2Nlc3NvcjxBcmVhRGF0dW0+XG5cbiAgLyoqIEFyZWEgY3Vyc29yIHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgYXJlYUN1cnNvcj86IFN0cmluZ0FjY2Vzc29yPEFyZWFEYXR1bT5cblxuICAvKiogQXJlYSBsYWJlbCBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgYXJlYUxhYmVsPzogU3RyaW5nQWNjZXNzb3I8QXJlYURhdHVtPlxuXG4gIC8qKiBQb2ludCBjb2xvciBhY2Nlc3Nvci4gRGVmYXVsdDogYGQgPT4gZC5jb2xvciA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBwb2ludENvbG9yPzogQ29sb3JBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCByYWRpdXMgYWNjZXNzb3IuIERlZmF1bHQ6IGBkID0+IGQucmFkaXVzID8/IDhgICovXG4gIEBJbnB1dCgpIHBvaW50UmFkaXVzPzogTnVtZXJpY0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHN0cm9rZSB3aWR0aCBhY2Nlc3Nvci4gRGVmYXVsdDogYGQgPT4gZC5zdHJva2VXaWR0aCA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBwb2ludFN0cm9rZVdpZHRoPzogTnVtZXJpY0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHNoYXBlIGFjY2Vzc29yLiBEZWZhdWx0OiBgVG9wb0pTT05NYXBQb2ludFNoYXBlLkNpcmNsZWAgKi9cbiAgQElucHV0KCkgcG9pbnRTaGFwZT86IFN0cmluZ0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IHJpbmcgd2lkdGggZm9yIHJpbmctc2hhcGVkIHBvaW50cy4gRGVmYXVsdDogYDJgICovXG4gIEBJbnB1dCgpIHBvaW50UmluZ1dpZHRoPzogTnVtZXJpY0FjY2Vzc29yPFBvaW50RGF0dW0+XG5cbiAgLyoqIFBvaW50IGN1cnNvciBjb25zdGFudCB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYG51bGxgICovXG4gIEBJbnB1dCgpIHBvaW50Q3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgbG9uZ2l0dWRlIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmxvbmdpdHVkZSA/PyBudWxsYCAqL1xuICBASW5wdXQoKSBsb25naXR1ZGU/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgbGF0aXR1ZGUgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQubGF0aXR1ZGUgPz8gbnVsbGAgKi9cbiAgQElucHV0KCkgbGF0aXR1ZGU/OiBOdW1lcmljQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgaW5uZXIgbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHBvaW50TGFiZWw/OiBTdHJpbmdBY2Nlc3NvcjxQb2ludERhdHVtPlxuXG4gIC8qKiBQb2ludCBpbm5lciBsYWJlbCBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGxhYmVsIGNvbG9yIHdpbGwgYmUgc2V0LCBkZXBlbmRpbmcgb24gdGhlIHBvaW50IGJyaWdodG5lc3MsIGVpdGhlciB0b1xuICAgKiBgLS12aXMtbWFwLXBvaW50LWxhYmVsLXRleHQtY29sb3ItZGFya2Agb3IgdG8gYC0tdmlzLW1hcC1wb2ludC1sYWJlbC10ZXh0LWNvbG9yLWxpZ2h0YCBDU1MgdmFyaWFibGUuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHBvaW50TGFiZWxDb2xvcj86IENvbG9yQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgbGFiZWwgcG9zaXRpb24uIERlZmF1bHQ6IGBNYXBQb2ludExhYmVsUG9zaXRpb24uQ2VudGVyYCAqL1xuICBASW5wdXQoKSBwb2ludExhYmVsUG9zaXRpb24/OiBNYXBQb2ludExhYmVsUG9zaXRpb25cblxuICAvKiogUG9pbnQgYm90dG9tIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBwb2ludEJvdHRvbUxhYmVsPzogU3RyaW5nQWNjZXNzb3I8UG9pbnREYXR1bT5cblxuICAvKiogUG9pbnQgY29sb3IgYnJpZ2h0bmVzcyByYXRpbyBmb3Igc3dpdGNoaW5nIGJldHdlZW4gZGFyayBhbmQgbGlnaHQgdGV4dCBsYWJlbCBjb2xvci4gRGVmYXVsdDogYDAuNjVgICovXG4gIEBJbnB1dCgpIHBvaW50TGFiZWxUZXh0QnJpZ2h0bmVzc1JhdGlvPzogbnVtYmVyXG5cbiAgLyoqIFBvaW50IGlkIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmlkYCAqL1xuICBASW5wdXQoKSBwb2ludElkPzogKChkOiBQb2ludERhdHVtLCBpOiBudW1iZXIpID0+IHN0cmluZylcblxuICAvKiogQ2x1c3RlciBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbiBvciBjb25zdGFudCB2YWx1ZS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgY2x1c3RlckNvbG9yPzogQ29sb3JBY2Nlc3NvcjxUb3BvSlNPTk1hcENsdXN0ZXJEYXR1bTxQb2ludERhdHVtPj5cblxuICAvKiogQ2x1c3RlciByYWRpdXMgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJSYWRpdXM/OiBOdW1lcmljQWNjZXNzb3I8VG9wb0pTT05NYXBDbHVzdGVyRGF0dW08UG9pbnREYXR1bT4+XG5cbiAgLyoqIENsdXN0ZXIgaW5uZXIgbGFiZWwgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQucG9pbnRDb3VudGAgKi9cbiAgQElucHV0KCkgY2x1c3RlckxhYmVsPzogU3RyaW5nQWNjZXNzb3I8VG9wb0pTT05NYXBDbHVzdGVyRGF0dW08UG9pbnREYXR1bT4+XG5cbiAgLyoqIENsdXN0ZXIgaW5uZXIgbGFiZWwgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24gb3IgY29uc3RhbnQgdmFsdWUuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJMYWJlbENvbG9yPzogU3RyaW5nQWNjZXNzb3I8VG9wb0pTT05NYXBDbHVzdGVyRGF0dW08UG9pbnREYXR1bT4+XG5cbiAgLyoqIENsdXN0ZXIgYm90dG9tIGxhYmVsIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgJydgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJCb3R0b21MYWJlbD86IFN0cmluZ0FjY2Vzc29yPFRvcG9KU09OTWFwQ2x1c3RlckRhdHVtPFBvaW50RGF0dW0+PlxuXG4gIC8qKiBUaGUgd2lkdGggb2YgdGhlIGNsdXN0ZXIgcG9pbnQgcmluZy4gRGVmYXVsdDogYDJgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJSaW5nV2lkdGg/OiBudW1iZXJcblxuICAvKiogV2hlbiBjbHVzdGVyIGlzIGV4cGFuZGVkLCBzaG93IGEgYmFja2dyb3VuZCBjaXJjbGUgdG8gYmV0dGVyIHNlcGFyYXRlIHBvaW50cyBmcm9tIHRoZSBiYXNlIG1hcC4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJCYWNrZ3JvdW5kPzogYm9vbGVhblxuXG4gIC8qKiBEZWZpbmVzIHdoZXRoZXIgdGhlIGNsdXN0ZXIgc2hvdWxkIGV4cGFuZCBvbiBjbGljayBvciBub3QuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBjbHVzdGVyRXhwYW5kT25DbGljaz86IGJvb2xlYW5cblxuICAvKiogQ2x1c3RlcmluZyBkaXN0YW5jZSBpbiBwaXhlbHMuIERlZmF1bHQ6IGA1NWAgKi9cbiAgQElucHV0KCkgY2x1c3RlcmluZ0Rpc3RhbmNlPzogbnVtYmVyXG5cbiAgLyoqIEVuYWJsZSBwb2ludCBjbHVzdGVyaW5nLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGNsdXN0ZXJpbmc/OiBib29sZWFuXG5cbiAgLyoqIEVuYWJsZXMgYmx1ciBhbmQgYmxlbmRpbmcgYmV0d2VlbiBuZWlnaGJvdXJpbmcgcG9pbnRzLiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGhlYXRtYXBNb2RlPzogYm9vbGVhblxuXG4gIC8qKiBIZWF0bWFwIGJsdXIgZmlsdGVyIHN0ZERldmlhdGlvbiB2YWx1ZS4gRGVmYXVsdDogYDEwYCAqL1xuICBASW5wdXQoKSBoZWF0bWFwTW9kZUJsdXJTdGREZXZpYXRpb24/OiBudW1iZXJcblxuICAvKiogWm9vbSBsZXZlbCBhdCB3aGljaCB0aGUgaGVhdG1hcCBtb2RlIHdpbGwgYmUgZGlzYWJsZWQuIERlZmF1bHQ6IGAyLjVgICovXG4gIEBJbnB1dCgpIGhlYXRtYXBNb2RlWm9vbUxldmVsVGhyZXNob2xkPzogbnVtYmVyXG5cbiAgLyoqIEEgc2luZ2xlIG1hcCBwb2ludCBjYW4gaGF2ZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIGRpc3BsYXllZCBhcyBhIHNtYWxsIHBpZSBjaGFydC5cbiAgICogQnkgc2V0dGluZyB0aGUgY29sb3JNYXAgY29uZmlndXJhdGlvbiB5b3UgY2FuIHNwZWNpZnkgZGF0YSBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIGJlIG1hcHBlZCB0byB2YXJpb3VzIHBpZSAvIGRvbnV0IHNlZ21lbnRzLlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgW2tleSBpbiBrZXlvZiBQb2ludERhdHVtXT86IHsgY29sb3I6IHN0cmluZywgY2xhc3NOYW1lPzogc3RyaW5nIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogIGhlYWx0aHk6IHsgY29sb3I6ICdncmVlbicgfSxcbiAgICogIHdhcm5pbmc6IHsgY29sb3I6ICdvcmFuZ2UnIH0sXG4gICAqICBjcml0aWNhbDogeyBjb2xvcjogJ3JlZCcgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiB3aGVyZSBldmVyeSBkYXRhIHBvaW50IGhhcyB0aGUgYGhlYWx0aHlgLCBgd2FybmluZ2AgYW5kIGBjcml0aWNhbGAgbnVtZXJpY2FsIG9yIGJvb2xlYW4gcHJvcGVydHkuXG4gICAqIE5vdGU6IFByb3BlcnRpZXMgd2l0aCAwIG9yIGZhbHN5IHZhbHVlcyB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQgaW4gdGhlIHBpZSBjaGFydC5cbiAgICogRGVmYXVsdDogYHt9YCAqL1xuICBASW5wdXQoKSBjb2xvck1hcD86IFRvcG9KU09OTWFwUG9pbnRTdHlsZXM8UG9pbnREYXR1bT5cbiAgQElucHV0KCkgZGF0YToge2FyZWFzPzogQXJlYURhdHVtW107IHBvaW50cz86IFBvaW50RGF0dW1bXTsgbGlua3M/OiBMaW5rRGF0dW1bXX1cblxuICBjb21wb25lbnQ6IFRvcG9KU09OTWFwPEFyZWFEYXR1bSwgUG9pbnREYXR1bSwgTGlua0RhdHVtPiB8IHVuZGVmaW5lZFxuICBwdWJsaWMgY29tcG9uZW50Q29udGFpbmVyOiBDb250YWluZXJDb3JlIHwgdW5kZWZpbmVkXG5cbiAgbmdBZnRlclZpZXdJbml0ICgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBUb3BvSlNPTk1hcDxBcmVhRGF0dW0sIFBvaW50RGF0dW0sIExpbmtEYXR1bT4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBUb3BvSlNPTk1hcENvbmZpZ0ludGVyZmFjZTxBcmVhRGF0dW0sIFBvaW50RGF0dW0sIExpbmtEYXR1bT4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgcHJvamVjdGlvbiwgdG9wb2pzb24sIG1hcEZlYXR1cmVOYW1lLCBtYXBGaXRUb1BvaW50cywgem9vbUZhY3Rvciwgem9vbVRvTG9jYXRpb24sIGRpc2FibGVab29tLCB6b29tRXh0ZW50LCB6b29tRHVyYXRpb24sIGxpbmtXaWR0aCwgbGlua0NvbG9yLCBsaW5rQ3Vyc29yLCBsaW5rSWQsIGxpbmtTb3VyY2UsIGxpbmtUYXJnZXQsIHNvdXJjZUxvbmdpdHVkZSwgc291cmNlTGF0aXR1ZGUsIHRhcmdldExvbmdpdHVkZSwgdGFyZ2V0TGF0aXR1ZGUsIHNvdXJjZVBvaW50UmFkaXVzLCBzb3VyY2VQb2ludENvbG9yLCBmbG93UGFydGljbGVDb2xvciwgZmxvd1BhcnRpY2xlUmFkaXVzLCBmbG93UGFydGljbGVTcGVlZCwgZmxvd1BhcnRpY2xlRGVuc2l0eSwgZW5hYmxlRmxvd0FuaW1hdGlvbiwgb25Tb3VyY2VQb2ludENsaWNrLCBvblNvdXJjZVBvaW50TW91c2VFbnRlciwgb25Tb3VyY2VQb2ludE1vdXNlTGVhdmUsIGFyZWFJZCwgYXJlYUNvbG9yLCBhcmVhQ3Vyc29yLCBhcmVhTGFiZWwsIHBvaW50Q29sb3IsIHBvaW50UmFkaXVzLCBwb2ludFN0cm9rZVdpZHRoLCBwb2ludFNoYXBlLCBwb2ludFJpbmdXaWR0aCwgcG9pbnRDdXJzb3IsIGxvbmdpdHVkZSwgbGF0aXR1ZGUsIHBvaW50TGFiZWwsIHBvaW50TGFiZWxDb2xvciwgcG9pbnRMYWJlbFBvc2l0aW9uLCBwb2ludEJvdHRvbUxhYmVsLCBwb2ludExhYmVsVGV4dEJyaWdodG5lc3NSYXRpbywgcG9pbnRJZCwgY2x1c3RlckNvbG9yLCBjbHVzdGVyUmFkaXVzLCBjbHVzdGVyTGFiZWwsIGNsdXN0ZXJMYWJlbENvbG9yLCBjbHVzdGVyQm90dG9tTGFiZWwsIGNsdXN0ZXJSaW5nV2lkdGgsIGNsdXN0ZXJCYWNrZ3JvdW5kLCBjbHVzdGVyRXhwYW5kT25DbGljaywgY2x1c3RlcmluZ0Rpc3RhbmNlLCBjbHVzdGVyaW5nLCBoZWF0bWFwTW9kZSwgaGVhdG1hcE1vZGVCbHVyU3RkRGV2aWF0aW9uLCBoZWF0bWFwTW9kZVpvb21MZXZlbFRocmVzaG9sZCwgY29sb3JNYXAgfSA9IHRoaXNcbiAgICBjb25zdCBjb25maWcgPSB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHByb2plY3Rpb24sIHRvcG9qc29uLCBtYXBGZWF0dXJlTmFtZSwgbWFwRml0VG9Qb2ludHMsIHpvb21GYWN0b3IsIHpvb21Ub0xvY2F0aW9uLCBkaXNhYmxlWm9vbSwgem9vbUV4dGVudCwgem9vbUR1cmF0aW9uLCBsaW5rV2lkdGgsIGxpbmtDb2xvciwgbGlua0N1cnNvciwgbGlua0lkLCBsaW5rU291cmNlLCBsaW5rVGFyZ2V0LCBzb3VyY2VMb25naXR1ZGUsIHNvdXJjZUxhdGl0dWRlLCB0YXJnZXRMb25naXR1ZGUsIHRhcmdldExhdGl0dWRlLCBzb3VyY2VQb2ludFJhZGl1cywgc291cmNlUG9pbnRDb2xvciwgZmxvd1BhcnRpY2xlQ29sb3IsIGZsb3dQYXJ0aWNsZVJhZGl1cywgZmxvd1BhcnRpY2xlU3BlZWQsIGZsb3dQYXJ0aWNsZURlbnNpdHksIGVuYWJsZUZsb3dBbmltYXRpb24sIG9uU291cmNlUG9pbnRDbGljaywgb25Tb3VyY2VQb2ludE1vdXNlRW50ZXIsIG9uU291cmNlUG9pbnRNb3VzZUxlYXZlLCBhcmVhSWQsIGFyZWFDb2xvciwgYXJlYUN1cnNvciwgYXJlYUxhYmVsLCBwb2ludENvbG9yLCBwb2ludFJhZGl1cywgcG9pbnRTdHJva2VXaWR0aCwgcG9pbnRTaGFwZSwgcG9pbnRSaW5nV2lkdGgsIHBvaW50Q3Vyc29yLCBsb25naXR1ZGUsIGxhdGl0dWRlLCBwb2ludExhYmVsLCBwb2ludExhYmVsQ29sb3IsIHBvaW50TGFiZWxQb3NpdGlvbiwgcG9pbnRCb3R0b21MYWJlbCwgcG9pbnRMYWJlbFRleHRCcmlnaHRuZXNzUmF0aW8sIHBvaW50SWQsIGNsdXN0ZXJDb2xvciwgY2x1c3RlclJhZGl1cywgY2x1c3RlckxhYmVsLCBjbHVzdGVyTGFiZWxDb2xvciwgY2x1c3RlckJvdHRvbUxhYmVsLCBjbHVzdGVyUmluZ1dpZHRoLCBjbHVzdGVyQmFja2dyb3VuZCwgY2x1c3RlckV4cGFuZE9uQ2xpY2ssIGNsdXN0ZXJpbmdEaXN0YW5jZSwgY2x1c3RlcmluZywgaGVhdG1hcE1vZGUsIGhlYXRtYXBNb2RlQmx1clN0ZERldmlhdGlvbiwgaGVhdG1hcE1vZGVab29tTGV2ZWxUaHJlc2hvbGQsIGNvbG9yTWFwIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKSBhcyAoa2V5b2YgVG9wb0pTT05NYXBDb25maWdJbnRlcmZhY2U8QXJlYURhdHVtLCBQb2ludERhdHVtLCBMaW5rRGF0dW0+KVtdXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7IGlmIChjb25maWdba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgY29uZmlnW2tleV0gfSlcblxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuIl19
@@ -2296,8 +2296,8 @@ class VisTopoJSONMapComponent {
2296
2296
  (_c = this.componentContainer) === null || _c === void 0 ? void 0 : _c.render();
2297
2297
  }
2298
2298
  getConfig() {
2299
- const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap } = this;
2300
- const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap };
2299
+ const { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, zoomToLocation, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap } = this;
2300
+ const config = { duration, events, attributes, projection, topojson, mapFeatureName, mapFitToPoints, zoomFactor, zoomToLocation, disableZoom, zoomExtent, zoomDuration, linkWidth, linkColor, linkCursor, linkId, linkSource, linkTarget, sourceLongitude, sourceLatitude, targetLongitude, targetLatitude, sourcePointRadius, sourcePointColor, flowParticleColor, flowParticleRadius, flowParticleSpeed, flowParticleDensity, enableFlowAnimation, onSourcePointClick, onSourcePointMouseEnter, onSourcePointMouseLeave, areaId, areaColor, areaCursor, areaLabel, pointColor, pointRadius, pointStrokeWidth, pointShape, pointRingWidth, pointCursor, longitude, latitude, pointLabel, pointLabelColor, pointLabelPosition, pointBottomLabel, pointLabelTextBrightnessRatio, pointId, clusterColor, clusterRadius, clusterLabel, clusterLabelColor, clusterBottomLabel, clusterRingWidth, clusterBackground, clusterExpandOnClick, clusteringDistance, clustering, heatmapMode, heatmapModeBlurStdDeviation, heatmapModeZoomLevelThreshold, colorMap };
2301
2301
  const keys = Object.keys(config);
2302
2302
  keys.forEach(key => { if (config[key] === undefined)
2303
2303
  delete config[key]; });
@@ -2305,7 +2305,7 @@ class VisTopoJSONMapComponent {
2305
2305
  }
2306
2306
  }
2307
2307
  VisTopoJSONMapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2308
- VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", sourceLongitude: "sourceLongitude", sourceLatitude: "sourceLatitude", targetLongitude: "targetLongitude", targetLatitude: "targetLatitude", sourcePointRadius: "sourcePointRadius", sourcePointColor: "sourcePointColor", flowParticleColor: "flowParticleColor", flowParticleRadius: "flowParticleRadius", flowParticleSpeed: "flowParticleSpeed", flowParticleDensity: "flowParticleDensity", enableFlowAnimation: "enableFlowAnimation", onSourcePointClick: "onSourcePointClick", onSourcePointMouseEnter: "onSourcePointMouseEnter", onSourcePointMouseLeave: "onSourcePointMouseLeave", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", areaLabel: "areaLabel", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelColor: "pointLabelColor", pointLabelPosition: "pointLabelPosition", pointBottomLabel: "pointBottomLabel", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", clusterColor: "clusterColor", clusterRadius: "clusterRadius", clusterLabel: "clusterLabel", clusterLabelColor: "clusterLabelColor", clusterBottomLabel: "clusterBottomLabel", clusterRingWidth: "clusterRingWidth", clusterBackground: "clusterBackground", clusterExpandOnClick: "clusterExpandOnClick", clusteringDistance: "clusteringDistance", clustering: "clustering", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", colorMap: "colorMap", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
2308
+ VisTopoJSONMapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: VisTopoJSONMapComponent, selector: "vis-topojson-map", inputs: { duration: "duration", events: "events", attributes: "attributes", projection: "projection", topojson: "topojson", mapFeatureName: "mapFeatureName", mapFitToPoints: "mapFitToPoints", zoomFactor: "zoomFactor", zoomToLocation: "zoomToLocation", disableZoom: "disableZoom", zoomExtent: "zoomExtent", zoomDuration: "zoomDuration", linkWidth: "linkWidth", linkColor: "linkColor", linkCursor: "linkCursor", linkId: "linkId", linkSource: "linkSource", linkTarget: "linkTarget", sourceLongitude: "sourceLongitude", sourceLatitude: "sourceLatitude", targetLongitude: "targetLongitude", targetLatitude: "targetLatitude", sourcePointRadius: "sourcePointRadius", sourcePointColor: "sourcePointColor", flowParticleColor: "flowParticleColor", flowParticleRadius: "flowParticleRadius", flowParticleSpeed: "flowParticleSpeed", flowParticleDensity: "flowParticleDensity", enableFlowAnimation: "enableFlowAnimation", onSourcePointClick: "onSourcePointClick", onSourcePointMouseEnter: "onSourcePointMouseEnter", onSourcePointMouseLeave: "onSourcePointMouseLeave", areaId: "areaId", areaColor: "areaColor", areaCursor: "areaCursor", areaLabel: "areaLabel", pointColor: "pointColor", pointRadius: "pointRadius", pointStrokeWidth: "pointStrokeWidth", pointShape: "pointShape", pointRingWidth: "pointRingWidth", pointCursor: "pointCursor", longitude: "longitude", latitude: "latitude", pointLabel: "pointLabel", pointLabelColor: "pointLabelColor", pointLabelPosition: "pointLabelPosition", pointBottomLabel: "pointBottomLabel", pointLabelTextBrightnessRatio: "pointLabelTextBrightnessRatio", pointId: "pointId", clusterColor: "clusterColor", clusterRadius: "clusterRadius", clusterLabel: "clusterLabel", clusterLabelColor: "clusterLabelColor", clusterBottomLabel: "clusterBottomLabel", clusterRingWidth: "clusterRingWidth", clusterBackground: "clusterBackground", clusterExpandOnClick: "clusterExpandOnClick", clusteringDistance: "clusteringDistance", clustering: "clustering", heatmapMode: "heatmapMode", heatmapModeBlurStdDeviation: "heatmapModeBlurStdDeviation", heatmapModeZoomLevelThreshold: "heatmapModeZoomLevelThreshold", colorMap: "colorMap", data: "data" }, providers: [{ provide: VisCoreComponent, useExisting: VisTopoJSONMapComponent }], usesOnChanges: true, ngImport: i0, template: '', isInline: true });
2309
2309
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisTopoJSONMapComponent, decorators: [{
2310
2310
  type: Component,
2311
2311
  args: [{
@@ -2330,6 +2330,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2330
2330
  type: Input
2331
2331
  }], zoomFactor: [{
2332
2332
  type: Input
2333
+ }], zoomToLocation: [{
2334
+ type: Input
2333
2335
  }], disableZoom: [{
2334
2336
  type: Input
2335
2337
  }], zoomExtent: [{