@unovis/angular 1.1.0-beta.2 → 1.1.0-beta.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.
Files changed (38) hide show
  1. package/dist/lib/bundles/unovis-angular.umd.js +38 -12
  2. package/dist/lib/bundles/unovis-angular.umd.js.map +1 -1
  3. package/dist/lib/components/area/area.component.d.ts +1 -1
  4. package/dist/lib/components/axis/axis.component.d.ts +1 -1
  5. package/dist/lib/components/brush/brush.component.d.ts +5 -5
  6. package/dist/lib/components/crosshair/crosshair.component.d.ts +1 -1
  7. package/dist/lib/components/donut/donut.component.d.ts +5 -3
  8. package/dist/lib/components/free-brush/free-brush.component.d.ts +9 -9
  9. package/dist/lib/components/graph/graph.component.d.ts +23 -2
  10. package/dist/lib/components/grouped-bar/grouped-bar.component.d.ts +1 -1
  11. package/dist/lib/components/line/line.component.d.ts +1 -1
  12. package/dist/lib/components/sankey/sankey.component.d.ts +5 -5
  13. package/dist/lib/components/scatter/scatter.component.d.ts +1 -1
  14. package/dist/lib/components/stacked-bar/stacked-bar.component.d.ts +1 -1
  15. package/dist/lib/components/timeline/timeline.component.d.ts +1 -1
  16. package/dist/lib/components/xy-labels/xy-labels.component.d.ts +3 -3
  17. package/dist/lib/esm2015/components/area/area.component.js +1 -1
  18. package/dist/lib/esm2015/components/axis/axis.component.js +1 -1
  19. package/dist/lib/esm2015/components/brush/brush.component.js +1 -1
  20. package/dist/lib/esm2015/components/crosshair/crosshair.component.js +1 -1
  21. package/dist/lib/esm2015/components/donut/donut.component.js +6 -4
  22. package/dist/lib/esm2015/components/free-brush/free-brush.component.js +1 -1
  23. package/dist/lib/esm2015/components/graph/graph.component.js +20 -4
  24. package/dist/lib/esm2015/components/grouped-bar/grouped-bar.component.js +1 -1
  25. package/dist/lib/esm2015/components/line/line.component.js +1 -1
  26. package/dist/lib/esm2015/components/sankey/sankey.component.js +1 -1
  27. package/dist/lib/esm2015/components/scatter/scatter.component.js +1 -1
  28. package/dist/lib/esm2015/components/stacked-bar/stacked-bar.component.js +1 -1
  29. package/dist/lib/esm2015/components/timeline/timeline.component.js +1 -1
  30. package/dist/lib/esm2015/components/xy-labels/xy-labels.component.js +1 -1
  31. package/dist/lib/esm2015/html-components/leaflet-flow-map/leaflet-flow-map.component.js +8 -4
  32. package/dist/lib/esm2015/html-components/leaflet-map/leaflet-map.component.js +8 -4
  33. package/dist/lib/fesm2015/unovis-angular.js +38 -12
  34. package/dist/lib/fesm2015/unovis-angular.js.map +1 -1
  35. package/dist/lib/html-components/leaflet-flow-map/leaflet-flow-map.component.d.ts +13 -1
  36. package/dist/lib/html-components/leaflet-map/leaflet-map.component.d.ts +13 -1
  37. package/dist/lib/package.json +2 -2
  38. package/package.json +2 -2
@@ -54,7 +54,7 @@ export declare class VisAreaComponent<Datum> implements AreaConfigInterface<Datu
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -54,7 +54,7 @@ export declare class VisAxisComponent<Datum> implements AxisConfigInterface<Datu
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -55,7 +55,7 @@ export declare class VisBrushComponent<Datum> implements BrushConfigInterface<Da
55
55
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
56
56
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
57
57
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
58
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
58
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
59
59
  /** Component color accessor function. Default: `d => d.color` */
60
60
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
61
61
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -73,16 +73,16 @@ export declare class VisBrushComponent<Datum> implements BrushConfigInterface<Da
73
73
  excludeFromDomainCalculation?: boolean;
74
74
  /** Callback function to be called on any Brush event.
75
75
  * Default: `(selection: [number, number], event: D3BrushEvent<Datum>, userDriven: boolean): void => {}` */
76
- onBrush?: ((selection?: [number, number], event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
76
+ onBrush?: ((selection: [number, number] | undefined, event: D3BrushEvent<Datum>, userDriven: boolean) => void);
77
77
  /** Callback function to be called on the Brush start event.
78
78
  * Default: `(selection: [number, number], event: D3BrushEvent<Datum>, userDriven: boolean): void => {}` */
79
- onBrushStart?: ((selection?: [number, number], event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
79
+ onBrushStart?: ((selection: [number, number] | undefined, event: D3BrushEvent<Datum>, userDriven: boolean) => void);
80
80
  /** Callback function to be called on the Brush move event.
81
81
  * Default: `(selection: [number, number], event: D3BrushEvent<Datum>, userDriven: boolean): void => {}` */
82
- onBrushMove?: ((selection?: [number, number], event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
82
+ onBrushMove?: ((selection: [number, number] | undefined, event: D3BrushEvent<Datum>, userDriven: boolean) => void);
83
83
  /** Callback function to be called on the Brush end event.
84
84
  * Default: `(selection: [number, number], event: D3BrushEvent<Datum>, userDriven: boolean): void => {}` */
85
- onBrushEnd?: ((selection?: [number, number], event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
85
+ onBrushEnd?: ((selection: [number, number] | undefined, event: D3BrushEvent<Datum>, userDriven: boolean) => void);
86
86
  /** Width of the Brush handle. Default: `1` */
87
87
  handleWidth?: number;
88
88
  /** Brush selection in the data space coordinates, can be used to control the selection. Default: `undefined` */
@@ -54,7 +54,7 @@ export declare class VisCrosshairComponent<Datum> implements CrosshairConfigInte
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -50,7 +50,7 @@ export declare class VisDonutComponent<Datum> implements DonutConfigInterface<Da
50
50
  };
51
51
  };
52
52
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
53
- id?: ((d: Datum, i?: number, ...rest: any[]) => string | number);
53
+ id?: ((d: Datum, i: number, ...rest: any[]) => string | number);
54
54
  /** Value accessor function. Default: `undefined` */
55
55
  value: NumericAccessor<Datum>;
56
56
  /** Diagram angle range. Default: `[0, 2 * Math.PI]` */
@@ -73,9 +73,11 @@ export declare class VisDonutComponent<Datum> implements DonutConfigInterface<Da
73
73
  centralSubLabel?: string;
74
74
  /** Enables wrapping for the sub-label. Default: `true` */
75
75
  centralSubLabelWrap?: boolean;
76
- /** When true, the component will display empty segments (the ones that have `0` values) as thin lines.
76
+ /** When true, the component will display empty segments (the ones that have `0` values) as tiny slices.
77
77
  * Default: `false` */
78
78
  showEmptySegments?: boolean;
79
+ /** Angular size for empty segments in radians. Default: `0.5 * Math.PI / 180` */
80
+ emptySegmentAngle?: number;
79
81
  /** Show donut background. The color is configurable via
80
82
  * the `--vis-donut-background-color` and `--vis-dark-donut-background-color` CSS variables.
81
83
  * Default: `true` */
@@ -89,5 +91,5 @@ export declare class VisDonutComponent<Datum> implements DonutConfigInterface<Da
89
91
  ngOnChanges(changes: SimpleChanges): void;
90
92
  private getConfig;
91
93
  static ɵfac: i0.ɵɵFactoryDeclaration<VisDonutComponent<any>, never>;
92
- static ɵcmp: i0.ɵɵComponentDeclaration<VisDonutComponent<any>, "vis-donut", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "id": "id"; "value": "value"; "angleRange": "angleRange"; "padAngle": "padAngle"; "sortFunction": "sortFunction"; "cornerRadius": "cornerRadius"; "color": "color"; "radius": "radius"; "arcWidth": "arcWidth"; "centralLabel": "centralLabel"; "centralSubLabel": "centralSubLabel"; "centralSubLabelWrap": "centralSubLabelWrap"; "showEmptySegments": "showEmptySegments"; "showBackground": "showBackground"; "backgroundAngleRange": "backgroundAngleRange"; "data": "data"; }, {}, never, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<VisDonutComponent<any>, "vis-donut", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "id": "id"; "value": "value"; "angleRange": "angleRange"; "padAngle": "padAngle"; "sortFunction": "sortFunction"; "cornerRadius": "cornerRadius"; "color": "color"; "radius": "radius"; "arcWidth": "arcWidth"; "centralLabel": "centralLabel"; "centralSubLabel": "centralSubLabel"; "centralSubLabelWrap": "centralSubLabelWrap"; "showEmptySegments": "showEmptySegments"; "emptySegmentAngle": "emptySegmentAngle"; "showBackground": "showBackground"; "backgroundAngleRange": "backgroundAngleRange"; "data": "data"; }, {}, never, never>;
93
95
  }
@@ -55,7 +55,7 @@ export declare class VisFreeBrushComponent<Datum> implements FreeBrushConfigInte
55
55
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
56
56
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
57
57
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
58
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
58
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
59
59
  /** Component color accessor function. Default: `d => d.color` */
60
60
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
61
61
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -75,22 +75,22 @@ export declare class VisFreeBrushComponent<Datum> implements FreeBrushConfigInte
75
75
  mode?: FreeBrushMode;
76
76
  /** Callback function to be called on any Brush event.
77
77
  * Default: `(selection: FreeBrushSelection, event: D3BrushEvent<Datum>, userDriven: boolean): void => {}` */
78
- onBrush?: ((selection?: FreeBrushSelection, event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
78
+ onBrush?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
79
79
  /** Callback function to be called on the Brush start event.
80
- * Default: `(selection: FreeBrushSelection, event: D3BrushEvent<Datum>, userDriven: boolean): void => {}` */
81
- onBrushStart?: ((selection?: FreeBrushSelection, event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
80
+ * Default: `(selection: FreeBrushSelection, event: D3BrushEvent<unknown>, userDriven: boolean): void => {}` */
81
+ onBrushStart?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
82
82
  /** Callback function to be called on the Brush move event.
83
- * Default: `(selection: FreeBrushSelection, event: D3BrushEvent<Datum>, userDriven: boolean): void => {}` */
84
- onBrushMove?: ((selection?: FreeBrushSelection, event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
83
+ * Default: `(selection: FreeBrushSelection, event: D3BrushEvent<unknown>, userDriven: boolean): void => {}` */
84
+ onBrushMove?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
85
85
  /** Callback function to be called on the Brush end event.
86
- * Default: `(selection: FreeBrushSelection, event: D3BrushEvent<Datum>, userDriven: boolean)L void => {}` */
87
- onBrushEnd?: ((selection?: FreeBrushSelection, event?: D3BrushEvent<Datum>, userDriven?: boolean) => void);
86
+ * Default: `(selection: FreeBrushSelection, event: D3BrushEvent<unknown>, userDriven: boolean)L void => {}` */
87
+ onBrushEnd?: ((selection: FreeBrushSelection | undefined, event: D3BrushEvent<unknown>, userDriven: boolean) => void);
88
88
  /** Width of the Brush handle. Default: `1` */
89
89
  handleWidth?: number;
90
90
  /** Brush selection in data space, can be used to force set the selection from outside.
91
91
  * In case of two dimensional mode, the selection has the following format: `[[xMin, xMax], [yMin, yMax]]`.
92
92
  * This config property gets updated on internal brush events. Default: `undefined` */
93
- selection?: FreeBrushSelection | null;
93
+ selection?: FreeBrushSelection | null | undefined;
94
94
  /** Constraint Brush selection to a minimal length in data units. Default: `undefined` */
95
95
  selectionMinLength?: number | [number, number];
96
96
  /** Automatically hide the brush after selection. Default: `true` */
@@ -1,5 +1,5 @@
1
1
  import { AfterViewInit, SimpleChanges } from '@angular/core';
2
- import { Graph, GraphConfigInterface, ContainerCore, GraphInputNode, GraphInputLink, VisEventType, VisEventCallback, GraphLayoutType, StringAccessor, GraphForceLayoutSettings, NumericAccessor, GenericAccessor, GraphLinkStyle, GraphLinkArrowStyle, ColorAccessor, BooleanAccessor, GraphCircleLabel, GraphNodeShape, GraphPanelConfig } from '@unovis/ts';
2
+ import { Graph, GraphConfigInterface, ContainerCore, GraphInputNode, GraphInputLink, VisEventType, VisEventCallback, GraphLayoutType, StringAccessor, GraphForceLayoutSettings, GenericAccessor, GraphElkLayoutSettings, NumericAccessor, GraphLinkStyle, GraphLinkArrowStyle, ColorAccessor, BooleanAccessor, GraphCircleLabel, GraphNodeShape, TrimMode, GraphPanelConfig } from '@unovis/ts';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class VisGraphComponent<N extends GraphInputNode, L extends GraphInputLink> implements GraphConfigInterface<N, L>, AfterViewInit {
5
5
  /** Animation duration of the data update transitions in milliseconds. Default: `600` */
@@ -109,6 +109,15 @@ export declare class VisGraphComponent<N extends GraphInputNode, L extends Graph
109
109
  ranker: string;
110
110
  [key: string]: any;
111
111
  };
112
+ /** ELK layout options, see the `elkjs` package for more details: https://github.com/kieler/elkjs.
113
+ * If you want to specify custom layout option for each node group, you can provide an accessor function that
114
+ * receives group name ('root' for the top-level configuration) as the first argument and returns an object containing
115
+ * layout options. */
116
+ layoutElkSettings?: GenericAccessor<GraphElkLayoutSettings, string> | undefined;
117
+ /** Array of accessor functions to define nested node groups for the ELK Layered layout.
118
+ * E.g.: `[n => n.group, n => n.subGroup]`.
119
+ * Default: `undefined` */
120
+ layoutElkNodeGroups?: StringAccessor<N>[];
112
121
  /** Link width accessor function ot constant value. Default: `1` */
113
122
  linkWidth?: NumericAccessor<L>;
114
123
  /** Link style accessor function or constant value. Default: `GraphLinkStyle.Solid` */
@@ -153,8 +162,20 @@ export declare class VisGraphComponent<N extends GraphInputNode, L extends Graph
153
162
  nodeIconSize?: NumericAccessor<N>;
154
163
  /** Node label accessor function or constant value. Default: `node => node.label` */
155
164
  nodeLabel?: StringAccessor<N>;
165
+ /** Defines whether to trim the node labels or not. Default: `true` */
166
+ nodeLabelTrim?: BooleanAccessor<N>;
167
+ /** Node label trimming mode. Default: `TrimMode.Middle` */
168
+ nodeLabelTrimMode?: GenericAccessor<TrimMode | string, N>;
169
+ /** Node label maximum allowed text length above which the label will be trimmed. Default: `15` */
170
+ nodeLabelTrimLength?: NumericAccessor<N>;
156
171
  /** Node sub-label accessor function or constant value: Default: `''` */
157
172
  nodeSubLabel?: StringAccessor<N>;
173
+ /** Defines whether to trim the node sub-labels or not. Default: `true` */
174
+ nodeSubLabelTrim?: BooleanAccessor<N>;
175
+ /** Node sub-label trimming mode. Default: `TrimMode.Middle` */
176
+ nodeSubLabelTrimMode?: GenericAccessor<TrimMode | string, N>;
177
+ /** Node sub-label maximum allowed text length above which the label will be trimmed. Default: `15` */
178
+ nodeSubLabelTrimLength?: NumericAccessor<N>;
158
179
  /** Node circular side labels accessor function. The function should return an array of GraphCircleLabel objects. Default: `undefined` */
159
180
  nodeSideLabels?: GenericAccessor<GraphCircleLabel[], N>;
160
181
  /** Node bottom icon accessor function. Default: `undefined` */
@@ -186,5 +207,5 @@ export declare class VisGraphComponent<N extends GraphInputNode, L extends Graph
186
207
  ngOnChanges(changes: SimpleChanges): void;
187
208
  private getConfig;
188
209
  static ɵfac: i0.ɵɵFactoryDeclaration<VisGraphComponent<any, any>, never>;
189
- static ɵcmp: i0.ɵɵComponentDeclaration<VisGraphComponent<any, any>, "vis-graph", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "zoomScaleExtent": "zoomScaleExtent"; "disableZoom": "disableZoom"; "disableDrag": "disableDrag"; "zoomThrottledUpdateNodeThreshold": "zoomThrottledUpdateNodeThreshold"; "onZoom": "onZoom"; "layoutType": "layoutType"; "layoutAutofit": "layoutAutofit"; "layoutAutofitTolerance": "layoutAutofitTolerance"; "layoutNonConnectedAside": "layoutNonConnectedAside"; "layoutNodeGroup": "layoutNodeGroup"; "layoutGroupOrder": "layoutGroupOrder"; "layoutParallelNodesPerColumn": "layoutParallelNodesPerColumn"; "layoutParallelNodeSubGroup": "layoutParallelNodeSubGroup"; "layoutParallelSubGroupsPerRow": "layoutParallelSubGroupsPerRow"; "layoutParallelGroupSpacing": "layoutParallelGroupSpacing"; "layoutParallelSortConnectionsByGroup": "layoutParallelSortConnectionsByGroup"; "forceLayoutSettings": "forceLayoutSettings"; "dagreLayoutSettings": "dagreLayoutSettings"; "linkWidth": "linkWidth"; "linkStyle": "linkStyle"; "linkBandWidth": "linkBandWidth"; "linkArrow": "linkArrow"; "linkStroke": "linkStroke"; "linkDisabled": "linkDisabled"; "linkFlow": "linkFlow"; "linkFlowAnimDuration": "linkFlowAnimDuration"; "linkFlowParticleSize": "linkFlowParticleSize"; "linkLabel": "linkLabel"; "linkLabelShiftFromCenter": "linkLabelShiftFromCenter"; "linkNeighborSpacing": "linkNeighborSpacing"; "selectedLinkId": "selectedLinkId"; "nodeSize": "nodeSize"; "nodeStrokeWidth": "nodeStrokeWidth"; "nodeShape": "nodeShape"; "nodeGaugeValue": "nodeGaugeValue"; "nodeGaugeFill": "nodeGaugeFill"; "nodeGaugeAnimDuration": "nodeGaugeAnimDuration"; "nodeIcon": "nodeIcon"; "nodeIconSize": "nodeIconSize"; "nodeLabel": "nodeLabel"; "nodeSubLabel": "nodeSubLabel"; "nodeSideLabels": "nodeSideLabels"; "nodeBottomIcon": "nodeBottomIcon"; "nodeDisabled": "nodeDisabled"; "nodeFill": "nodeFill"; "nodeStroke": "nodeStroke"; "nodeSort": "nodeSort"; "nodeEnterPosition": "nodeEnterPosition"; "nodeEnterScale": "nodeEnterScale"; "nodeExitPosition": "nodeExitPosition"; "nodeExitScale": "nodeExitScale"; "selectedNodeId": "selectedNodeId"; "panels": "panels"; "data": "data"; }, {}, never, never>;
210
+ static ɵcmp: i0.ɵɵComponentDeclaration<VisGraphComponent<any, any>, "vis-graph", never, { "duration": "duration"; "events": "events"; "attributes": "attributes"; "zoomScaleExtent": "zoomScaleExtent"; "disableZoom": "disableZoom"; "disableDrag": "disableDrag"; "zoomThrottledUpdateNodeThreshold": "zoomThrottledUpdateNodeThreshold"; "onZoom": "onZoom"; "layoutType": "layoutType"; "layoutAutofit": "layoutAutofit"; "layoutAutofitTolerance": "layoutAutofitTolerance"; "layoutNonConnectedAside": "layoutNonConnectedAside"; "layoutNodeGroup": "layoutNodeGroup"; "layoutGroupOrder": "layoutGroupOrder"; "layoutParallelNodesPerColumn": "layoutParallelNodesPerColumn"; "layoutParallelNodeSubGroup": "layoutParallelNodeSubGroup"; "layoutParallelSubGroupsPerRow": "layoutParallelSubGroupsPerRow"; "layoutParallelGroupSpacing": "layoutParallelGroupSpacing"; "layoutParallelSortConnectionsByGroup": "layoutParallelSortConnectionsByGroup"; "forceLayoutSettings": "forceLayoutSettings"; "dagreLayoutSettings": "dagreLayoutSettings"; "layoutElkSettings": "layoutElkSettings"; "layoutElkNodeGroups": "layoutElkNodeGroups"; "linkWidth": "linkWidth"; "linkStyle": "linkStyle"; "linkBandWidth": "linkBandWidth"; "linkArrow": "linkArrow"; "linkStroke": "linkStroke"; "linkDisabled": "linkDisabled"; "linkFlow": "linkFlow"; "linkFlowAnimDuration": "linkFlowAnimDuration"; "linkFlowParticleSize": "linkFlowParticleSize"; "linkLabel": "linkLabel"; "linkLabelShiftFromCenter": "linkLabelShiftFromCenter"; "linkNeighborSpacing": "linkNeighborSpacing"; "selectedLinkId": "selectedLinkId"; "nodeSize": "nodeSize"; "nodeStrokeWidth": "nodeStrokeWidth"; "nodeShape": "nodeShape"; "nodeGaugeValue": "nodeGaugeValue"; "nodeGaugeFill": "nodeGaugeFill"; "nodeGaugeAnimDuration": "nodeGaugeAnimDuration"; "nodeIcon": "nodeIcon"; "nodeIconSize": "nodeIconSize"; "nodeLabel": "nodeLabel"; "nodeLabelTrim": "nodeLabelTrim"; "nodeLabelTrimMode": "nodeLabelTrimMode"; "nodeLabelTrimLength": "nodeLabelTrimLength"; "nodeSubLabel": "nodeSubLabel"; "nodeSubLabelTrim": "nodeSubLabelTrim"; "nodeSubLabelTrimMode": "nodeSubLabelTrimMode"; "nodeSubLabelTrimLength": "nodeSubLabelTrimLength"; "nodeSideLabels": "nodeSideLabels"; "nodeBottomIcon": "nodeBottomIcon"; "nodeDisabled": "nodeDisabled"; "nodeFill": "nodeFill"; "nodeStroke": "nodeStroke"; "nodeSort": "nodeSort"; "nodeEnterPosition": "nodeEnterPosition"; "nodeEnterScale": "nodeEnterScale"; "nodeExitPosition": "nodeExitPosition"; "nodeExitScale": "nodeExitScale"; "selectedNodeId": "selectedNodeId"; "panels": "panels"; "data": "data"; }, {}, never, never>;
190
211
  }
@@ -54,7 +54,7 @@ export declare class VisGroupedBarComponent<Datum> implements GroupedBarConfigIn
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -54,7 +54,7 @@ export declare class VisLineComponent<Datum> implements LineConfigInterface<Datu
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -1,5 +1,5 @@
1
1
  import { AfterViewInit, SimpleChanges } from '@angular/core';
2
- import { Sankey, SankeyConfigInterface, ContainerCore, SankeyInputNode, SankeyInputLink, VisEventType, VisEventCallback, SankeyExitTransitionType, SankeyEnterTransitionType, SankeyNodeAlign, StringAccessor, SankeyNode, ColorAccessor, NumericAccessor, SankeyLink, GenericAccessor, Position, VerticalAlign, FitMode, TrimMode, SankeySubLabelPlacement } from '@unovis/ts';
2
+ import { Sankey, SankeyConfigInterface, ContainerCore, SankeyInputNode, SankeyInputLink, VisEventType, VisEventCallback, SankeyExitTransitionType, SankeyEnterTransitionType, SankeyNode, SankeyLink, SankeyNodeAlign, StringAccessor, ColorAccessor, NumericAccessor, GenericAccessor, Position, VerticalAlign, FitMode, TrimMode, SankeySubLabelPlacement } from '@unovis/ts';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class VisSankeyComponent<N extends SankeyInputNode, L extends SankeyInputLink> implements SankeyConfigInterface<N, L>, AfterViewInit {
5
5
  /** Animation duration of the data update transitions in milliseconds. Default: `600` */
@@ -50,7 +50,7 @@ export declare class VisSankeyComponent<N extends SankeyInputNode, L extends San
50
50
  };
51
51
  };
52
52
  /** Node / Link id accessor function. Used for mapping of data updates to corresponding SVG objects. Default: `(d, i) => d.id ?? i.toString()` */
53
- id?: (d: SankeyInputNode | SankeyInputLink, i?: number, ...rest: any[]) => string;
53
+ id?: (d: SankeyInputNode | SankeyInputLink, i: number, ...rest: any[]) => string;
54
54
  /** Coefficient to scale the height of the diagram when the amount of links is low: `C * links.length`, clamped to `[height / 2, height]`. Default: `1/16` */
55
55
  heightNormalizationCoeff?: number;
56
56
  /** Type of animation on removing nodes. Default: `ExitTransitionType.Default` */
@@ -70,13 +70,13 @@ export declare class VisSankeyComponent<N extends SankeyInputNode, L extends San
70
70
  * Options: `undefined` - the order is determined by the layout;
71
71
  * `null` - the order is fixed by the input;
72
72
  * sort function - the order is determined by the function. */
73
- nodeSort?: ((node1: N, node2: N) => number) | null | undefined;
73
+ nodeSort?: ((node1: SankeyNode<N, L>, node2: SankeyNode<N, L>) => number) | null | undefined;
74
74
  /** Sankey link sorting function. Default: `(link2, link1) => link1.value - link2.value`.
75
75
  * Link sorting is applied to the source (exiting) links within one node.
76
76
  * Options: `undefined` - the order is determined by the layout;
77
77
  * `null` - the order is fixed by the input;
78
78
  * sort function - the order is determined by the function. */
79
- linkSort?: ((link1: L, link2: L) => number) | null | undefined;
79
+ linkSort?: ((link1: SankeyLink<N, L>, link2: SankeyLink<N, L>) => number) | null | undefined;
80
80
  /** Sankey node width in pixels */
81
81
  nodeWidth?: number;
82
82
  /** Sankey node alignment method */
@@ -125,7 +125,7 @@ export declare class VisSankeyComponent<N extends SankeyInputNode, L extends San
125
125
  labelMaxWidth?: number;
126
126
  /** Expand trimmed label on hover. Default: `true` */
127
127
  labelExpandTrimmedOnHover?: boolean;
128
- /** Label trimming mode. Default: `TrimMode.MIDDLE` */
128
+ /** Label trimming mode. Default: `TrimMode.Middle` */
129
129
  labelTrimMode?: TrimMode;
130
130
  /** Label font size in pixels. If not provided, the value of CSS variable `--vis-sankey-node-label-font-size` will be used. Default: `undefined` */
131
131
  labelFontSize?: number;
@@ -54,7 +54,7 @@ export declare class VisScatterComponent<Datum> implements ScatterConfigInterfac
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -54,7 +54,7 @@ export declare class VisStackedBarComponent<Datum> implements StackedBarConfigIn
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -54,7 +54,7 @@ export declare class VisTimelineComponent<Datum> implements TimelineConfigInterf
54
54
  /** A single of multiple accessor functions for getting the values along the Y axis. Default: `undefined` */
55
55
  y: NumericAccessor<Datum> | NumericAccessor<Datum>[];
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -54,7 +54,7 @@ export declare class VisXYLabelsComponent<Datum> implements XYLabelsConfigInterf
54
54
  /** Single Y accessor function. Default: `undefined` */
55
55
  y: NumericAccessor<Datum>;
56
56
  /** Accessor function for getting the unique data record id. Used for more persistent data updates. Default: `(d, i) => d.id ?? i` */
57
- id?: ((d: Datum, i?: number, ...rest: any[]) => string);
57
+ id?: ((d: Datum, i: number, ...rest: any[]) => string);
58
58
  /** Component color accessor function. Default: `d => d.color` */
59
59
  color?: ColorAccessor<Datum> | ColorAccessor<Datum[]>;
60
60
  /** Scale for X dimension, e.g. Scale.scaleLinear(). If you set xScale you'll be responsible for setting it's `domain` and `range` as well.
@@ -71,9 +71,9 @@ export declare class VisXYLabelsComponent<Datum> implements XYLabelsConfigInterf
71
71
  * Default: `false` */
72
72
  excludeFromDomainCalculation?: boolean;
73
73
  /** Defines how to position the label horizontally: in data space or in screen space. Default: `LabelPositioning.DataSpace` */
74
- xPositioning?: GenericAccessor<XYLabelPositioning, Datum>;
74
+ xPositioning?: GenericAccessor<XYLabelPositioning | string, Datum>;
75
75
  /** Defines how to position the label vertically: in data space or in screen space. Default: `LabelPositioning.DataSpace` */
76
- yPositioning?: GenericAccessor<XYLabelPositioning, Datum>;
76
+ yPositioning?: GenericAccessor<XYLabelPositioning | string, Datum>;
77
77
  /** Font size accessor function or constant value in pixels. If not provided, the value of CSS variable `--vis-xy-label-font-size` will be used. Default: `undefined` */
78
78
  labelFontSize?: NumericAccessor<Datum>;
79
79
  /** Label accessor function or string. Default: `undefined` */
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
72
72
  }], data: [{
73
73
  type: Input
74
74
  }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hcmVhL2FyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxJQUFJLEdBVUwsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLGdCQUFnQjtJQXFHM0IsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNoSyxNQUFNLE1BQU0sR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQTtRQUNsSyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBeUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFMUUsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOzs4R0EzSFUsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsNlhBRmhCLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLCtDQUY3RCxFQUFFOzRGQUlELGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZ0RBQWdEO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxrQkFBa0IsRUFBRSxDQUFDO2lCQUN4RTs4QkFHVSxRQUFRO3NCQUFoQixLQUFLO2dCQW1CRyxNQUFNO3NCQUFkLEtBQUs7Z0JBd0JHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csQ0FBQztzQkFBVCxLQUFLO2dCQUdHLENBQUM7c0JBQVQsS0FBSztnQkFHRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQXJlYSxcbiAgQXJlYUNvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgQ3VydmVUeXBlLFxuICBTdHJpbmdBY2Nlc3Nvcixcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IFZpc1hZQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmlzLWFyZWEnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc1hZQ29tcG9uZW50LCB1c2VFeGlzdGluZzogVmlzQXJlYUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzQXJlYUNvbXBvbmVudDxEYXR1bT4gaW1wbGVtZW50cyBBcmVhQ29uZmlnSW50ZXJmYWNlPERhdHVtPiwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIGRhdGEgdXBkYXRlIHRyYW5zaXRpb25zIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdDogYDYwMGAgKi9cbiAgQElucHV0KCkgZHVyYXRpb24/OiBudW1iZXJcblxuICAvKiogRXZlbnRzIGNvbmZpZ3VyYXRpb24uIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbZXZlbnRUeXBlXTogY2FsbGJhY2tGdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBjbGljazogKGQpID0+IGNvbnNvbGUubG9nKFwiQ2xpY2tlZCBBcmVhXCIsIGQpXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGV2ZW50cz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFtldmVudFR5cGUgaW4gVmlzRXZlbnRUeXBlXT86IFZpc0V2ZW50Q2FsbGJhY2tcbiAgICB9O1xuICB9XG5cbiAgLyoqIFlvdSBjYW4gc2V0IGV2ZXJ5IFNWRyBhbmQgSFRNTCB2aXN1YWxpemF0aW9uIG9iamVjdCB0byBoYXZlIGEgY3VzdG9tIERPTSBhdHRyaWJ1dGVzLCB3aGljaCBpcyB1c2VmdWxcbiAgICogd2hlbiB5b3Ugd2FudCB0byBkbyB1bml0IG9yIGVuZC10by1lbmQgdGVzdGluZy4gQXR0cmlidXRlcyBjb25maWd1cmF0aW9uIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbYXR0cmlidXRlTmFtZV06IGF0dHJpYnV0ZSBjb25zdGFudCB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBcInRlc3QtdmFsdWVcIjogZCA9PiBkLnZhbHVlXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZXM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbYXR0cjogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8ICgoZGF0dW06IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdmFsdWVzIGFsb25nIHRoZSBYIGF4aXMuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHg6IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogQSBzaW5nbGUgb2YgbXVsdGlwbGUgYWNjZXNzb3IgZnVuY3Rpb25zIGZvciBnZXR0aW5nIHRoZSB2YWx1ZXMgYWxvbmcgdGhlIFkgYXhpcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeTogTnVtZXJpY0FjY2Vzc29yPERhdHVtPiB8IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5bXVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdW5pcXVlIGRhdGEgcmVjb3JkIGlkLiBVc2VkIGZvciBtb3JlIHBlcnNpc3RlbnQgZGF0YSB1cGRhdGVzLiBEZWZhdWx0OiBgKGQsIGkpID0+IGQuaWQgPz8gaWAgKi9cbiAgQElucHV0KCkgaWQ/OiAoKGQ6IERhdHVtLCBpPzogbnVtYmVyLCAuLi5yZXN0KSA9PiBzdHJpbmcpXG5cbiAgLyoqIENvbXBvbmVudCBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvcmAgKi9cbiAgQElucHV0KCkgY29sb3I/OiBDb2xvckFjY2Vzc29yPERhdHVtPiB8IENvbG9yQWNjZXNzb3I8RGF0dW1bXT5cblxuICAvKiogU2NhbGUgZm9yIFggZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIElmIHlvdSBzZXQgeFNjYWxlIHlvdSdsbCBiZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBpdCdzIGBkb21haW5gIGFuZCBgcmFuZ2VgIGFzIHdlbGwuXG4gICAqIE9ubHkgY29udGludW91cyBzY2FsZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeFNjYWxlPzogQ29udGludW91c1NjYWxlXG5cbiAgLyoqIFNjYWxlIGZvciBZIGRpbWVuc2lvbiwgZS5nLiBTY2FsZS5zY2FsZUxpbmVhcigpLiBJZiB5b3Ugc2V0IHlTY2FsZSB5b3UnbGwgYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgaXQncyBgZG9tYWluYCBhbmQgYHJhbmdlYCBhcyB3ZWxsLlxuICAgKiBPbmx5IGNvbnRpbnVvdXMgc2NhbGVzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHlTY2FsZT86IENvbnRpbnVvdXNTY2FsZVxuXG4gIC8qKiBJZGVudGlmaWVzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBvdmVyYWxsIFggYW5kIFkgZG9tYWluIGNhbGN1bGF0aW9ucyBvciBub3QuXG4gICAqIFRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHBhc3MgaW5kaXZpZHVhbCBkYXRhIHRvIGEgY29tcG9uZW50IGFuZCB5b3UgZG9uJ3Qgd2FudCBpdCB0byBhZmZlY3RcbiAgICogdGhlIHNjYWxlcyBvZiB0aGUgY2hhcnQuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbj86IGJvb2xlYW5cblxuICAvKiogQ3VydmUgdHlwZSBmcm9tIHRoZSBDdXJ2ZVR5cGUgZW51bS4gRGVmYXVsdDogYEN1cnZlVHlwZS5Nb25vdG9uZVhgICovXG4gIEBJbnB1dCgpIGN1cnZlVHlwZT86IEN1cnZlVHlwZVxuXG4gIC8qKiBCYXNlbGluZSB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgYmFzZWxpbmU/OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIE9wYWNpdHkgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGAxYCAqL1xuICBASW5wdXQoKSBvcGFjaXR5PzogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBPcHRpb25hbCBhcmVhIGN1cnNvci4gU3RyaW5nIG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgY3Vyc29yPzogU3RyaW5nQWNjZXNzb3I8RGF0dW1bXT5cblxuICAvKiogSWYgYW4gYXJlYSBpcyBzbWFsbGVyIHRoYW4gMXB4LCBleHRlbmQgaXQgdG8gaGF2ZSAxcHggaGVpZ2h0LlxuICAgKiBUaGlzIHNldHRpbmcgaXMgdXNlZnVsIHdoZW4gc29tZSBvZiB0aGUgYXJlYSB2YWx1ZXMgYXJlIHplcm9zIG9yIHZlcnkgc21hbGwgc28gdmlzdWFsbHkgdGhleSBiZWNvbWVcbiAgICogcHJhY3RpY2FsbHkgaW52aXNpYmxlLCBidXQgeW91IHdhbnQgdG8gc2hvdyB0aGF0IHRoZSBkYXRhIGJlaGluZCB0aGVtIGV4aXN0cyBhbmQgdGhleSdyZSBub3QganVzdCBlbXB0eSBzZWdtZW50cy5cbiAgICogRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBtaW5IZWlnaHQxUHg/OiBib29sZWFuXG4gIEBJbnB1dCgpIGRhdGE6IERhdHVtW11cblxuICBjb21wb25lbnQ6IEFyZWE8RGF0dW0+IHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjb21wb25lbnRDb250YWluZXI6IENvbnRhaW5lckNvcmUgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IEFyZWE8RGF0dW0+KHRoaXMuZ2V0Q29uZmlnKCkpXG5cbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXREYXRhKHRoaXMuZGF0YSlcbiAgICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkgeyB0aGlzLmNvbXBvbmVudD8uc2V0RGF0YSh0aGlzLmRhdGEpIH1cbiAgICB0aGlzLmNvbXBvbmVudD8uc2V0Q29uZmlnKHRoaXMuZ2V0Q29uZmlnKCkpXG4gICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZyAoKTogQXJlYUNvbmZpZ0ludGVyZmFjZTxEYXR1bT4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgeSwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgY3VydmVUeXBlLCBiYXNlbGluZSwgb3BhY2l0eSwgY3Vyc29yLCBtaW5IZWlnaHQxUHggfSA9IHRoaXNcbiAgICBjb25zdCBjb25maWcgPSB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHgsIHksIGlkLCBjb2xvciwgeFNjYWxlLCB5U2NhbGUsIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24sIGN1cnZlVHlwZSwgYmFzZWxpbmUsIG9wYWNpdHksIGN1cnNvciwgbWluSGVpZ2h0MVB4IH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKSBhcyAoa2V5b2YgQXJlYUNvbmZpZ0ludGVyZmFjZTxEYXR1bT4pW11cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHsgaWYgKGNvbmZpZ1trZXldID09PSB1bmRlZmluZWQpIGRlbGV0ZSBjb25maWdba2V5XSB9KVxuXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hcmVhL2FyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxJQUFJLEdBVUwsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLGdCQUFnQjtJQXFHM0IsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNoSyxNQUFNLE1BQU0sR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQTtRQUNsSyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBeUMsQ0FBQTtRQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFMUUsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOzs4R0EzSFUsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsNlhBRmhCLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLCtDQUY3RCxFQUFFOzRGQUlELGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZ0RBQWdEO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxrQkFBa0IsRUFBRSxDQUFDO2lCQUN4RTs4QkFHVSxRQUFRO3NCQUFoQixLQUFLO2dCQW1CRyxNQUFNO3NCQUFkLEtBQUs7Z0JBd0JHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csQ0FBQztzQkFBVCxLQUFLO2dCQUdHLENBQUM7c0JBQVQsS0FBSztnQkFHRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQXJlYSxcbiAgQXJlYUNvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgQ3VydmVUeXBlLFxuICBTdHJpbmdBY2Nlc3Nvcixcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IFZpc1hZQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29yZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmlzLWFyZWEnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc1hZQ29tcG9uZW50LCB1c2VFeGlzdGluZzogVmlzQXJlYUNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzQXJlYUNvbXBvbmVudDxEYXR1bT4gaW1wbGVtZW50cyBBcmVhQ29uZmlnSW50ZXJmYWNlPERhdHVtPiwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIGRhdGEgdXBkYXRlIHRyYW5zaXRpb25zIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdDogYDYwMGAgKi9cbiAgQElucHV0KCkgZHVyYXRpb24/OiBudW1iZXJcblxuICAvKiogRXZlbnRzIGNvbmZpZ3VyYXRpb24uIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbZXZlbnRUeXBlXTogY2FsbGJhY2tGdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBjbGljazogKGQpID0+IGNvbnNvbGUubG9nKFwiQ2xpY2tlZCBBcmVhXCIsIGQpXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGV2ZW50cz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFtldmVudFR5cGUgaW4gVmlzRXZlbnRUeXBlXT86IFZpc0V2ZW50Q2FsbGJhY2tcbiAgICB9O1xuICB9XG5cbiAgLyoqIFlvdSBjYW4gc2V0IGV2ZXJ5IFNWRyBhbmQgSFRNTCB2aXN1YWxpemF0aW9uIG9iamVjdCB0byBoYXZlIGEgY3VzdG9tIERPTSBhdHRyaWJ1dGVzLCB3aGljaCBpcyB1c2VmdWxcbiAgICogd2hlbiB5b3Ugd2FudCB0byBkbyB1bml0IG9yIGVuZC10by1lbmQgdGVzdGluZy4gQXR0cmlidXRlcyBjb25maWd1cmF0aW9uIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbYXR0cmlidXRlTmFtZV06IGF0dHJpYnV0ZSBjb25zdGFudCB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBcInRlc3QtdmFsdWVcIjogZCA9PiBkLnZhbHVlXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZXM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbYXR0cjogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8ICgoZGF0dW06IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdmFsdWVzIGFsb25nIHRoZSBYIGF4aXMuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHg6IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogQSBzaW5nbGUgb2YgbXVsdGlwbGUgYWNjZXNzb3IgZnVuY3Rpb25zIGZvciBnZXR0aW5nIHRoZSB2YWx1ZXMgYWxvbmcgdGhlIFkgYXhpcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeTogTnVtZXJpY0FjY2Vzc29yPERhdHVtPiB8IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5bXVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdW5pcXVlIGRhdGEgcmVjb3JkIGlkLiBVc2VkIGZvciBtb3JlIHBlcnNpc3RlbnQgZGF0YSB1cGRhdGVzLiBEZWZhdWx0OiBgKGQsIGkpID0+IGQuaWQgPz8gaWAgKi9cbiAgQElucHV0KCkgaWQ/OiAoKGQ6IERhdHVtLCBpOiBudW1iZXIsIC4uLnJlc3QpID0+IHN0cmluZylcblxuICAvKiogQ29tcG9uZW50IGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmNvbG9yYCAqL1xuICBASW5wdXQoKSBjb2xvcj86IENvbG9yQWNjZXNzb3I8RGF0dW0+IHwgQ29sb3JBY2Nlc3NvcjxEYXR1bVtdPlxuXG4gIC8qKiBTY2FsZSBmb3IgWCBkaW1lbnNpb24sIGUuZy4gU2NhbGUuc2NhbGVMaW5lYXIoKS4gSWYgeW91IHNldCB4U2NhbGUgeW91J2xsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGl0J3MgYGRvbWFpbmAgYW5kIGByYW5nZWAgYXMgd2VsbC5cbiAgICogT25seSBjb250aW51b3VzIHNjYWxlcyBhcmUgc3VwcG9ydGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4U2NhbGU/OiBDb250aW51b3VzU2NhbGVcblxuICAvKiogU2NhbGUgZm9yIFkgZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIElmIHlvdSBzZXQgeVNjYWxlIHlvdSdsbCBiZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBpdCdzIGBkb21haW5gIGFuZCBgcmFuZ2VgIGFzIHdlbGwuXG4gICAqIE9ubHkgY29udGludW91cyBzY2FsZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeVNjYWxlPzogQ29udGludW91c1NjYWxlXG5cbiAgLyoqIElkZW50aWZpZXMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIG92ZXJhbGwgWCBhbmQgWSBkb21haW4gY2FsY3VsYXRpb25zIG9yIG5vdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZnVsIHdoZW4geW91IHdhbnQgcGFzcyBpbmRpdmlkdWFsIGRhdGEgdG8gYSBjb21wb25lbnQgYW5kIHlvdSBkb24ndCB3YW50IGl0IHRvIGFmZmVjdFxuICAgKiB0aGUgc2NhbGVzIG9mIHRoZSBjaGFydC5cbiAgICogRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uPzogYm9vbGVhblxuXG4gIC8qKiBDdXJ2ZSB0eXBlIGZyb20gdGhlIEN1cnZlVHlwZSBlbnVtLiBEZWZhdWx0OiBgQ3VydmVUeXBlLk1vbm90b25lWGAgKi9cbiAgQElucHV0KCkgY3VydmVUeXBlPzogQ3VydmVUeXBlXG5cbiAgLyoqIEJhc2VsaW5lIHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBiYXNlbGluZT86IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogT3BhY2l0eSB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYDFgICovXG4gIEBJbnB1dCgpIG9wYWNpdHk/OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIE9wdGlvbmFsIGFyZWEgY3Vyc29yLiBTdHJpbmcgb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBjdXJzb3I/OiBTdHJpbmdBY2Nlc3NvcjxEYXR1bVtdPlxuXG4gIC8qKiBJZiBhbiBhcmVhIGlzIHNtYWxsZXIgdGhhbiAxcHgsIGV4dGVuZCBpdCB0byBoYXZlIDFweCBoZWlnaHQuXG4gICAqIFRoaXMgc2V0dGluZyBpcyB1c2VmdWwgd2hlbiBzb21lIG9mIHRoZSBhcmVhIHZhbHVlcyBhcmUgemVyb3Mgb3IgdmVyeSBzbWFsbCBzbyB2aXN1YWxseSB0aGV5IGJlY29tZVxuICAgKiBwcmFjdGljYWxseSBpbnZpc2libGUsIGJ1dCB5b3Ugd2FudCB0byBzaG93IHRoYXQgdGhlIGRhdGEgYmVoaW5kIHRoZW0gZXhpc3RzIGFuZCB0aGV5J3JlIG5vdCBqdXN0IGVtcHR5IHNlZ21lbnRzLlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIG1pbkhlaWdodDFQeD86IGJvb2xlYW5cbiAgQElucHV0KCkgZGF0YTogRGF0dW1bXVxuXG4gIGNvbXBvbmVudDogQXJlYTxEYXR1bT4gfCB1bmRlZmluZWRcbiAgcHVibGljIGNvbXBvbmVudENvbnRhaW5lcjogQ29udGFpbmVyQ29yZSB8IHVuZGVmaW5lZFxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCAoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQXJlYTxEYXR1bT4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBBcmVhQ29uZmlnSW50ZXJmYWNlPERhdHVtPiB7XG4gICAgY29uc3QgeyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCB4LCB5LCBpZCwgY29sb3IsIHhTY2FsZSwgeVNjYWxlLCBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uLCBjdXJ2ZVR5cGUsIGJhc2VsaW5lLCBvcGFjaXR5LCBjdXJzb3IsIG1pbkhlaWdodDFQeCB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgeSwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgY3VydmVUeXBlLCBiYXNlbGluZSwgb3BhY2l0eSwgY3Vyc29yLCBtaW5IZWlnaHQxUHggfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpIGFzIChrZXlvZiBBcmVhQ29uZmlnSW50ZXJmYWNlPERhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
106
106
  }], data: [{
107
107
  type: Input
108
108
  }] } });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9heGlzL2F4aXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxJQUFJLEdBYUwsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLGdCQUFnQjtJQXFKM0IsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDdlosTUFBTSxNQUFNLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQ3paLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUF5QyxDQUFBO1FBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUxRSxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7OzhHQTNLVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiw2NEJBRmhCLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLCtDQUY3RCxFQUFFOzRGQUlELGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZ0RBQWdEO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxrQkFBa0IsRUFBRSxDQUFDO2lCQUN4RTs4QkFHVSxRQUFRO3NCQUFoQixLQUFLO2dCQW1CRyxNQUFNO3NCQUFkLEtBQUs7Z0JBd0JHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csQ0FBQztzQkFBVCxLQUFLO2dCQUdHLENBQUM7c0JBQVQsS0FBSztnQkFHRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQXhpcyxcbiAgQXhpc0NvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgUG9zaXRpb24sXG4gIEF4aXNUeXBlLFxuICBGaXRNb2RlLFxuICBUcmltTW9kZSxcbiAgVGV4dEFsaWduLFxufSBmcm9tICdAdW5vdmlzL3RzJ1xuaW1wb3J0IHsgVmlzWFlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtYXhpcycsXG4gIHRlbXBsYXRlOiAnJyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVmlzWFlDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNBeGlzQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBWaXNBeGlzQ29tcG9uZW50PERhdHVtPiBpbXBsZW1lbnRzIEF4aXNDb25maWdJbnRlcmZhY2U8RGF0dW0+LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiB0aGUgZGF0YSB1cGRhdGUgdHJhbnNpdGlvbnMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0OiBgNjAwYCAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBFdmVudHMgY29uZmlndXJhdGlvbi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFtldmVudFR5cGVdOiBjYWxsYmFja0Z1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIGNsaWNrOiAoZCkgPT4gY29uc29sZS5sb2coXCJDbGlja2VkIEFyZWFcIiwgZClcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgZXZlbnRzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2V2ZW50VHlwZSBpbiBWaXNFdmVudFR5cGVdPzogVmlzRXZlbnRDYWxsYmFja1xuICAgIH07XG4gIH1cblxuICAvKiogWW91IGNhbiBzZXQgZXZlcnkgU1ZHIGFuZCBIVE1MIHZpc3VhbGl6YXRpb24gb2JqZWN0IHRvIGhhdmUgYSBjdXN0b20gRE9NIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIHVzZWZ1bFxuICAgKiB3aGVuIHlvdSB3YW50IHRvIGRvIHVuaXQgb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLiBBdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFthdHRyaWJ1dGVOYW1lXTogYXR0cmlidXRlIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIFwidGVzdC12YWx1ZVwiOiBkID0+IGQudmFsdWVcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRlcz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFthdHRyOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgKChkYXR1bTogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEFjY2Vzc29yIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSB2YWx1ZXMgYWxvbmcgdGhlIFggYXhpcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeDogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBBIHNpbmdsZSBvZiBtdWx0aXBsZSBhY2Nlc3NvciBmdW5jdGlvbnMgZm9yIGdldHRpbmcgdGhlIHZhbHVlcyBhbG9uZyB0aGUgWSBheGlzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB5OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+IHwgTnVtZXJpY0FjY2Vzc29yPERhdHVtPltdXG5cbiAgLyoqIEFjY2Vzc29yIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSB1bmlxdWUgZGF0YSByZWNvcmQgaWQuIFVzZWQgZm9yIG1vcmUgcGVyc2lzdGVudCBkYXRhIHVwZGF0ZXMuIERlZmF1bHQ6IGAoZCwgaSkgPT4gZC5pZCA/PyBpYCAqL1xuICBASW5wdXQoKSBpZD86ICgoZDogRGF0dW0sIGk/OiBudW1iZXIsIC4uLnJlc3QpID0+IHN0cmluZylcblxuICAvKiogQ29tcG9uZW50IGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmNvbG9yYCAqL1xuICBASW5wdXQoKSBjb2xvcj86IENvbG9yQWNjZXNzb3I8RGF0dW0+IHwgQ29sb3JBY2Nlc3NvcjxEYXR1bVtdPlxuXG4gIC8qKiBTY2FsZSBmb3IgWCBkaW1lbnNpb24sIGUuZy4gU2NhbGUuc2NhbGVMaW5lYXIoKS4gSWYgeW91IHNldCB4U2NhbGUgeW91J2xsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGl0J3MgYGRvbWFpbmAgYW5kIGByYW5nZWAgYXMgd2VsbC5cbiAgICogT25seSBjb250aW51b3VzIHNjYWxlcyBhcmUgc3VwcG9ydGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4U2NhbGU/OiBDb250aW51b3VzU2NhbGVcblxuICAvKiogU2NhbGUgZm9yIFkgZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIElmIHlvdSBzZXQgeVNjYWxlIHlvdSdsbCBiZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBpdCdzIGBkb21haW5gIGFuZCBgcmFuZ2VgIGFzIHdlbGwuXG4gICAqIE9ubHkgY29udGludW91cyBzY2FsZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeVNjYWxlPzogQ29udGludW91c1NjYWxlXG5cbiAgLyoqIElkZW50aWZpZXMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIG92ZXJhbGwgWCBhbmQgWSBkb21haW4gY2FsY3VsYXRpb25zIG9yIG5vdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZnVsIHdoZW4geW91IHdhbnQgcGFzcyBpbmRpdmlkdWFsIGRhdGEgdG8gYSBjb21wb25lbnQgYW5kIHlvdSBkb24ndCB3YW50IGl0IHRvIGFmZmVjdFxuICAgKiB0aGUgc2NhbGVzIG9mIHRoZSBjaGFydC5cbiAgICogRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uPzogYm9vbGVhblxuXG4gIC8qKiBBeGlzIHBvc2l0aW9uOiBgUG9zaXRpb24uVG9wYCwgYFBvc2l0aW9uLkJvdHRvbWAsIGBQb3NpdGlvbi5SaWdodGAgb3IgYFBvc2l0aW9uLkxlZnRgLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBwb3NpdGlvbj86IFBvc2l0aW9uIHwgc3RyaW5nXG5cbiAgLyoqIEF4aXMgdHlwZTogYEF4aXNUeXBlLlhgIG9yIGBBeGlzVHlwZS5ZYCAqL1xuICBASW5wdXQoKSB0eXBlPzogQXhpc1R5cGUgfCBzdHJpbmdcblxuICAvKiogRXh0ZW5kIHRoZSBheGlzIGRvbWFpbiBsaW5lIHRvIGJlIGZ1bGwgd2lkdGggb3IgZnVsbCBoZWlnaHQuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBmdWxsU2l6ZT86IGJvb2xlYW5cblxuICAvKiogQXhpcyBsYWJlbC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbGFiZWw/OiBzdHJpbmdcblxuICAvKiogRm9udCBzaXplIG9mIHRoZSBheGlzIGxhYmVsIGFzIENTUyBzdHJpbmcuIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBsYWJlbEZvbnRTaXplPzogc3RyaW5nIHwgbnVsbFxuXG4gIC8qKiBEaXN0YW5jZSBiZXR3ZWVuIHRoZSBheGlzIGFuZCB0aGUgbGFiZWwgaW4gcGl4ZWxzLiBEZWZhdWx0OiBgOGAgKi9cbiAgQElucHV0KCkgbGFiZWxNYXJnaW4/OiBudW1iZXJcblxuICAvKiogU2V0cyB3aGV0aGVyIHRvIGRyYXcgdGhlIGdyaWQgbGluZXMgb3Igbm90LiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgZ3JpZExpbmU/OiBib29sZWFuXG5cbiAgLyoqIFNldHMgd2hldGhlciB0byBkcmF3IHRoZSB0aWNrIGxpbmVzIG9yIG5vdC4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIHRpY2tMaW5lPzogYm9vbGVhblxuXG4gIC8qKiBTZXRzIHdoZXRoZXIgdG8gZHJhdyB0aGUgZG9tYWluIGxpbmUgb3Igbm90LiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgZG9tYWluTGluZT86IGJvb2xlYW5cblxuICAvKiogRHJhdyB0aGUgbWluIGFuZCBtYXggYXhpcyB0aWNrcyBvbmx5LiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIG1pbk1heFRpY2tzT25seT86IGJvb2xlYW5cblxuICAvKiogVGljayBsYWJlbCBmb3JtYXR0ZXIgZnVuY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHRpY2tGb3JtYXQ/OiAoKHRpY2s6IG51bWJlciwgaTogbnVtYmVyLCB0aWNrczogbnVtYmVyW10pID0+IHN0cmluZykgfCAoKHRpY2s6IERhdGUsIGk6IG51bWJlciwgdGlja3M6IERhdGVbXSkgPT4gc3RyaW5nKVxuXG4gIC8qKiBFeHBsaWNpdGx5IHNldCB0aWNrIHZhbHVlcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgdGlja1ZhbHVlcz86IG51bWJlcltdXG5cbiAgLyoqIFNldCB0aGUgYXBwcm94aW1hdGUgbnVtYmVyIG9mIGF4aXMgdGlja3MgKHdpbGwgYmUgcGFzc2VkIHRvIEQzJ3MgYXhpcyBjb25zdHJ1Y3RvcikuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIG51bVRpY2tzPzogbnVtYmVyXG5cbiAgLyoqIFRpY2sgdGV4dCBmaXQgbW9kZTogYEZpdE1vZGUuV3JhcGAgb3IgYEZpdE1vZGUuVHJpbWAuIERlZmF1bHQ6IGBGaXRNb2RlLldyYXBgLiAqL1xuICBASW5wdXQoKSB0aWNrVGV4dEZpdE1vZGU/OiBGaXRNb2RlIHwgc3RyaW5nXG5cbiAgLyoqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZm9yIHRpY2sgdGV4dCB3cmFwcGluZy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgdGlja1RleHRMZW5ndGg/OiBudW1iZXJcblxuICAvKiogTWF4aW11bSB3aWR0aCBpbiBwaXhlbHMgZm9yIHRoZSB0aWNrIHRleHQgdG8gYmUgd3JhcHBlZCBvciB0cmltbWVkLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB0aWNrVGV4dFdpZHRoPzogbnVtYmVyXG5cbiAgLyoqIFRpY2sgdGV4dCB3cmFwcGluZyBzZXBhcmF0b3IuIFN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzLiBEZWZhdWx0OiBgJyAnYCAqL1xuICBASW5wdXQoKSB0aWNrVGV4dFNlcGFyYXRvcj86IHN0cmluZyB8IHN0cmluZ1tdXG5cbiAgLyoqIEZvcmNlIHdvcmQgYnJlYWsgZm9yIHRpY2tzIHdoZW4gdGhleSBkb24ndCBmaXQuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgdGlja1RleHRGb3JjZVdvcmRCcmVhaz86IGJvb2xlYW5cblxuICAvKiogVGljayB0ZXh0IHRyaW0gbW9kZTogYFRyaW1Nb2RlLlN0YXJ0YCwgYFRyaW1Nb2RlLk1pZGRsZWAgb3IgYFRyaW1Nb2RlLkVuZGAuIERlZmF1bHQ6IGBUcmltTW9kZS5NaWRkbGVgICovXG4gIEBJbnB1dCgpIHRpY2tUZXh0VHJpbVR5cGU/OiBUcmltTW9kZSB8IHN0cmluZ1xuXG4gIC8qKiBGb250IHNpemUgb2YgdGhlIHRpY2sgdGV4dCBhcyBDU1Mgc3RyaW5nLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgdGlja1RleHRGb250U2l6ZT86IHN0cmluZyB8IG51bGxcblxuICAvKiogVGV4dCBhbGlnbm1lbnQgZm9yIHRpY2tzOiBgVGV4dEFsaWduLkxlZnRgLCBgVGV4dEFsaWduLkNlbnRlcmAgb3IgYFRleHRBbGlnbi5SaWdodGAuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHRpY2tUZXh0QWxpZ24/OiBUZXh0QWxpZ25cblxuICAvKiogVGhlIHNwYWNpbmcgaW4gcGl4ZWxzIGJldHdlZW4gdGhlIHRpY2sgYW5kIGl0J3MgbGFiZWwuIERlZmF1bHQ6IGA4YCAqL1xuICBASW5wdXQoKSB0aWNrUGFkZGluZz86IG51bWJlclxuICBASW5wdXQoKSBkYXRhOiBEYXR1bVtdXG5cbiAgY29tcG9uZW50OiBBeGlzPERhdHVtPiB8IHVuZGVmaW5lZFxuICBwdWJsaWMgY29tcG9uZW50Q29udGFpbmVyOiBDb250YWluZXJDb3JlIHwgdW5kZWZpbmVkXG5cbiAgbmdBZnRlclZpZXdJbml0ICgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBBeGlzPERhdHVtPih0aGlzLmdldENvbmZpZygpKVxuXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuc2V0RGF0YSh0aGlzLmRhdGEpXG4gICAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHsgdGhpcy5jb21wb25lbnQ/LnNldERhdGEodGhpcy5kYXRhKSB9XG4gICAgdGhpcy5jb21wb25lbnQ/LnNldENvbmZpZyh0aGlzLmdldENvbmZpZygpKVxuICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWcgKCk6IEF4aXNDb25maWdJbnRlcmZhY2U8RGF0dW0+IHtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHgsIHksIGlkLCBjb2xvciwgeFNjYWxlLCB5U2NhbGUsIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24sIHBvc2l0aW9uLCB0eXBlLCBmdWxsU2l6ZSwgbGFiZWwsIGxhYmVsRm9udFNpemUsIGxhYmVsTWFyZ2luLCBncmlkTGluZSwgdGlja0xpbmUsIGRvbWFpbkxpbmUsIG1pbk1heFRpY2tzT25seSwgdGlja0Zvcm1hdCwgdGlja1ZhbHVlcywgbnVtVGlja3MsIHRpY2tUZXh0Rml0TW9kZSwgdGlja1RleHRMZW5ndGgsIHRpY2tUZXh0V2lkdGgsIHRpY2tUZXh0U2VwYXJhdG9yLCB0aWNrVGV4dEZvcmNlV29yZEJyZWFrLCB0aWNrVGV4dFRyaW1UeXBlLCB0aWNrVGV4dEZvbnRTaXplLCB0aWNrVGV4dEFsaWduLCB0aWNrUGFkZGluZyB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgeSwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgcG9zaXRpb24sIHR5cGUsIGZ1bGxTaXplLCBsYWJlbCwgbGFiZWxGb250U2l6ZSwgbGFiZWxNYXJnaW4sIGdyaWRMaW5lLCB0aWNrTGluZSwgZG9tYWluTGluZSwgbWluTWF4VGlja3NPbmx5LCB0aWNrRm9ybWF0LCB0aWNrVmFsdWVzLCBudW1UaWNrcywgdGlja1RleHRGaXRNb2RlLCB0aWNrVGV4dExlbmd0aCwgdGlja1RleHRXaWR0aCwgdGlja1RleHRTZXBhcmF0b3IsIHRpY2tUZXh0Rm9yY2VXb3JkQnJlYWssIHRpY2tUZXh0VHJpbVR5cGUsIHRpY2tUZXh0Rm9udFNpemUsIHRpY2tUZXh0QWxpZ24sIHRpY2tQYWRkaW5nIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKSBhcyAoa2V5b2YgQXhpc0NvbmZpZ0ludGVyZmFjZTxEYXR1bT4pW11cbiAgICBrZXlzLmZvckVhY2goa2V5ID0+IHsgaWYgKGNvbmZpZ1trZXldID09PSB1bmRlZmluZWQpIGRlbGV0ZSBjb25maWdba2V5XSB9KVxuXG4gICAgcmV0dXJuIGNvbmZpZ1xuICB9XG59XG4iXX0=
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9heGlzL2F4aXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxJQUFJLEdBYUwsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLGdCQUFnQjtJQXFKM0IsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRWxELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDdlosTUFBTSxNQUFNLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFBO1FBQ3paLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUF5QyxDQUFBO1FBQ3hFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUxRSxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7OzhHQTNLVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiw2NEJBRmhCLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLCtDQUY3RCxFQUFFOzRGQUlELGdCQUFnQjtrQkFONUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZ0RBQWdEO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxrQkFBa0IsRUFBRSxDQUFDO2lCQUN4RTs4QkFHVSxRQUFRO3NCQUFoQixLQUFLO2dCQW1CRyxNQUFNO3NCQUFkLEtBQUs7Z0JBd0JHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csQ0FBQztzQkFBVCxLQUFLO2dCQUdHLENBQUM7c0JBQVQsS0FBSztnQkFHRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFHRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUdHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQXhpcyxcbiAgQXhpc0NvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgUG9zaXRpb24sXG4gIEF4aXNUeXBlLFxuICBGaXRNb2RlLFxuICBUcmltTW9kZSxcbiAgVGV4dEFsaWduLFxufSBmcm9tICdAdW5vdmlzL3RzJ1xuaW1wb3J0IHsgVmlzWFlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtYXhpcycsXG4gIHRlbXBsYXRlOiAnJyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVmlzWFlDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBWaXNBeGlzQ29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBWaXNBeGlzQ29tcG9uZW50PERhdHVtPiBpbXBsZW1lbnRzIEF4aXNDb25maWdJbnRlcmZhY2U8RGF0dW0+LCBBZnRlclZpZXdJbml0IHtcbiAgLyoqIEFuaW1hdGlvbiBkdXJhdGlvbiBvZiB0aGUgZGF0YSB1cGRhdGUgdHJhbnNpdGlvbnMgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0OiBgNjAwYCAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlclxuXG4gIC8qKiBFdmVudHMgY29uZmlndXJhdGlvbi4gQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFtldmVudFR5cGVdOiBjYWxsYmFja0Z1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIGNsaWNrOiAoZCkgPT4gY29uc29sZS5sb2coXCJDbGlja2VkIEFyZWFcIiwgZClcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgZXZlbnRzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2V2ZW50VHlwZSBpbiBWaXNFdmVudFR5cGVdPzogVmlzRXZlbnRDYWxsYmFja1xuICAgIH07XG4gIH1cblxuICAvKiogWW91IGNhbiBzZXQgZXZlcnkgU1ZHIGFuZCBIVE1MIHZpc3VhbGl6YXRpb24gb2JqZWN0IHRvIGhhdmUgYSBjdXN0b20gRE9NIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIHVzZWZ1bFxuICAgKiB3aGVuIHlvdSB3YW50IHRvIGRvIHVuaXQgb3IgZW5kLXRvLWVuZCB0ZXN0aW5nLiBBdHRyaWJ1dGVzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbc2VsZWN0b3JTdHJpbmddOiB7XG4gICAqICAgICBcXFthdHRyaWJ1dGVOYW1lXTogYXR0cmlidXRlIGNvbnN0YW50IHZhbHVlIG9yIGFjY2Vzc29yIGZ1bmN0aW9uXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqIGUuZy46XG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW0FyZWEuc2VsZWN0b3JzLmFyZWFdOiB7XG4gICAqICAgIFwidGVzdC12YWx1ZVwiOiBkID0+IGQudmFsdWVcbiAgICogIH1cbiAgICogfVxuICAgKiBgYGAgKi9cbiAgQElucHV0KCkgYXR0cmlidXRlcz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFthdHRyOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgKChkYXR1bTogYW55KSA9PiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqIEFjY2Vzc29yIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSB2YWx1ZXMgYWxvbmcgdGhlIFggYXhpcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeDogTnVtZXJpY0FjY2Vzc29yPERhdHVtPlxuXG4gIC8qKiBBIHNpbmdsZSBvZiBtdWx0aXBsZSBhY2Nlc3NvciBmdW5jdGlvbnMgZm9yIGdldHRpbmcgdGhlIHZhbHVlcyBhbG9uZyB0aGUgWSBheGlzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB5OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+IHwgTnVtZXJpY0FjY2Vzc29yPERhdHVtPltdXG5cbiAgLyoqIEFjY2Vzc29yIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSB1bmlxdWUgZGF0YSByZWNvcmQgaWQuIFVzZWQgZm9yIG1vcmUgcGVyc2lzdGVudCBkYXRhIHVwZGF0ZXMuIERlZmF1bHQ6IGAoZCwgaSkgPT4gZC5pZCA/PyBpYCAqL1xuICBASW5wdXQoKSBpZD86ICgoZDogRGF0dW0sIGk6IG51bWJlciwgLi4ucmVzdCkgPT4gc3RyaW5nKVxuXG4gIC8qKiBDb21wb25lbnQgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQuY29sb3JgICovXG4gIEBJbnB1dCgpIGNvbG9yPzogQ29sb3JBY2Nlc3NvcjxEYXR1bT4gfCBDb2xvckFjY2Vzc29yPERhdHVtW10+XG5cbiAgLyoqIFNjYWxlIGZvciBYIGRpbWVuc2lvbiwgZS5nLiBTY2FsZS5zY2FsZUxpbmVhcigpLiBJZiB5b3Ugc2V0IHhTY2FsZSB5b3UnbGwgYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgaXQncyBgZG9tYWluYCBhbmQgYHJhbmdlYCBhcyB3ZWxsLlxuICAgKiBPbmx5IGNvbnRpbnVvdXMgc2NhbGVzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHhTY2FsZT86IENvbnRpbnVvdXNTY2FsZVxuXG4gIC8qKiBTY2FsZSBmb3IgWSBkaW1lbnNpb24sIGUuZy4gU2NhbGUuc2NhbGVMaW5lYXIoKS4gSWYgeW91IHNldCB5U2NhbGUgeW91J2xsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGl0J3MgYGRvbWFpbmAgYW5kIGByYW5nZWAgYXMgd2VsbC5cbiAgICogT25seSBjb250aW51b3VzIHNjYWxlcyBhcmUgc3VwcG9ydGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB5U2NhbGU/OiBDb250aW51b3VzU2NhbGVcblxuICAvKiogSWRlbnRpZmllcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gb3ZlcmFsbCBYIGFuZCBZIGRvbWFpbiBjYWxjdWxhdGlvbnMgb3Igbm90LlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbiBiZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCBwYXNzIGluZGl2aWR1YWwgZGF0YSB0byBhIGNvbXBvbmVudCBhbmQgeW91IGRvbid0IHdhbnQgaXQgdG8gYWZmZWN0XG4gICAqIHRoZSBzY2FsZXMgb2YgdGhlIGNoYXJ0LlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24/OiBib29sZWFuXG5cbiAgLyoqIEF4aXMgcG9zaXRpb246IGBQb3NpdGlvbi5Ub3BgLCBgUG9zaXRpb24uQm90dG9tYCwgYFBvc2l0aW9uLlJpZ2h0YCBvciBgUG9zaXRpb24uTGVmdGAuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHBvc2l0aW9uPzogUG9zaXRpb24gfCBzdHJpbmdcblxuICAvKiogQXhpcyB0eXBlOiBgQXhpc1R5cGUuWGAgb3IgYEF4aXNUeXBlLllgICovXG4gIEBJbnB1dCgpIHR5cGU/OiBBeGlzVHlwZSB8IHN0cmluZ1xuXG4gIC8qKiBFeHRlbmQgdGhlIGF4aXMgZG9tYWluIGxpbmUgdG8gYmUgZnVsbCB3aWR0aCBvciBmdWxsIGhlaWdodC4gRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIGZ1bGxTaXplPzogYm9vbGVhblxuXG4gIC8qKiBBeGlzIGxhYmVsLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZ1xuXG4gIC8qKiBGb250IHNpemUgb2YgdGhlIGF4aXMgbGFiZWwgYXMgQ1NTIHN0cmluZy4gRGVmYXVsdDogYG51bGxgICovXG4gIEBJbnB1dCgpIGxhYmVsRm9udFNpemU/OiBzdHJpbmcgfCBudWxsXG5cbiAgLyoqIERpc3RhbmNlIGJldHdlZW4gdGhlIGF4aXMgYW5kIHRoZSBsYWJlbCBpbiBwaXhlbHMuIERlZmF1bHQ6IGA4YCAqL1xuICBASW5wdXQoKSBsYWJlbE1hcmdpbj86IG51bWJlclxuXG4gIC8qKiBTZXRzIHdoZXRoZXIgdG8gZHJhdyB0aGUgZ3JpZCBsaW5lcyBvciBub3QuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBncmlkTGluZT86IGJvb2xlYW5cblxuICAvKiogU2V0cyB3aGV0aGVyIHRvIGRyYXcgdGhlIHRpY2sgbGluZXMgb3Igbm90LiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgdGlja0xpbmU/OiBib29sZWFuXG5cbiAgLyoqIFNldHMgd2hldGhlciB0byBkcmF3IHRoZSBkb21haW4gbGluZSBvciBub3QuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBkb21haW5MaW5lPzogYm9vbGVhblxuXG4gIC8qKiBEcmF3IHRoZSBtaW4gYW5kIG1heCBheGlzIHRpY2tzIG9ubHkuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgbWluTWF4VGlja3NPbmx5PzogYm9vbGVhblxuXG4gIC8qKiBUaWNrIGxhYmVsIGZvcm1hdHRlciBmdW5jdGlvbi4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgdGlja0Zvcm1hdD86ICgodGljazogbnVtYmVyLCBpOiBudW1iZXIsIHRpY2tzOiBudW1iZXJbXSkgPT4gc3RyaW5nKSB8ICgodGljazogRGF0ZSwgaTogbnVtYmVyLCB0aWNrczogRGF0ZVtdKSA9PiBzdHJpbmcpXG5cbiAgLyoqIEV4cGxpY2l0bHkgc2V0IHRpY2sgdmFsdWVzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB0aWNrVmFsdWVzPzogbnVtYmVyW11cblxuICAvKiogU2V0IHRoZSBhcHByb3hpbWF0ZSBudW1iZXIgb2YgYXhpcyB0aWNrcyAod2lsbCBiZSBwYXNzZWQgdG8gRDMncyBheGlzIGNvbnN0cnVjdG9yKS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgbnVtVGlja3M/OiBudW1iZXJcblxuICAvKiogVGljayB0ZXh0IGZpdCBtb2RlOiBgRml0TW9kZS5XcmFwYCBvciBgRml0TW9kZS5UcmltYC4gRGVmYXVsdDogYEZpdE1vZGUuV3JhcGAuICovXG4gIEBJbnB1dCgpIHRpY2tUZXh0Rml0TW9kZT86IEZpdE1vZGUgfCBzdHJpbmdcblxuICAvKiogTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBmb3IgdGljayB0ZXh0IHdyYXBwaW5nLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB0aWNrVGV4dExlbmd0aD86IG51bWJlclxuXG4gIC8qKiBNYXhpbXVtIHdpZHRoIGluIHBpeGVscyBmb3IgdGhlIHRpY2sgdGV4dCB0byBiZSB3cmFwcGVkIG9yIHRyaW1tZWQuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHRpY2tUZXh0V2lkdGg/OiBudW1iZXJcblxuICAvKiogVGljayB0ZXh0IHdyYXBwaW5nIHNlcGFyYXRvci4gU3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MuIERlZmF1bHQ6IGAnICdgICovXG4gIEBJbnB1dCgpIHRpY2tUZXh0U2VwYXJhdG9yPzogc3RyaW5nIHwgc3RyaW5nW11cblxuICAvKiogRm9yY2Ugd29yZCBicmVhayBmb3IgdGlja3Mgd2hlbiB0aGV5IGRvbid0IGZpdC4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSB0aWNrVGV4dEZvcmNlV29yZEJyZWFrPzogYm9vbGVhblxuXG4gIC8qKiBUaWNrIHRleHQgdHJpbSBtb2RlOiBgVHJpbU1vZGUuU3RhcnRgLCBgVHJpbU1vZGUuTWlkZGxlYCBvciBgVHJpbU1vZGUuRW5kYC4gRGVmYXVsdDogYFRyaW1Nb2RlLk1pZGRsZWAgKi9cbiAgQElucHV0KCkgdGlja1RleHRUcmltVHlwZT86IFRyaW1Nb2RlIHwgc3RyaW5nXG5cbiAgLyoqIEZvbnQgc2l6ZSBvZiB0aGUgdGljayB0ZXh0IGFzIENTUyBzdHJpbmcuIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSB0aWNrVGV4dEZvbnRTaXplPzogc3RyaW5nIHwgbnVsbFxuXG4gIC8qKiBUZXh0IGFsaWdubWVudCBmb3IgdGlja3M6IGBUZXh0QWxpZ24uTGVmdGAsIGBUZXh0QWxpZ24uQ2VudGVyYCBvciBgVGV4dEFsaWduLlJpZ2h0YC4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgdGlja1RleHRBbGlnbj86IFRleHRBbGlnblxuXG4gIC8qKiBUaGUgc3BhY2luZyBpbiBwaXhlbHMgYmV0d2VlbiB0aGUgdGljayBhbmQgaXQncyBsYWJlbC4gRGVmYXVsdDogYDhgICovXG4gIEBJbnB1dCgpIHRpY2tQYWRkaW5nPzogbnVtYmVyXG4gIEBJbnB1dCgpIGRhdGE6IERhdHVtW11cblxuICBjb21wb25lbnQ6IEF4aXM8RGF0dW0+IHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjb21wb25lbnRDb250YWluZXI6IENvbnRhaW5lckNvcmUgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IEF4aXM8RGF0dW0+KHRoaXMuZ2V0Q29uZmlnKCkpXG5cbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXREYXRhKHRoaXMuZGF0YSlcbiAgICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkgeyB0aGlzLmNvbXBvbmVudD8uc2V0RGF0YSh0aGlzLmRhdGEpIH1cbiAgICB0aGlzLmNvbXBvbmVudD8uc2V0Q29uZmlnKHRoaXMuZ2V0Q29uZmlnKCkpXG4gICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZyAoKTogQXhpc0NvbmZpZ0ludGVyZmFjZTxEYXR1bT4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgeSwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgcG9zaXRpb24sIHR5cGUsIGZ1bGxTaXplLCBsYWJlbCwgbGFiZWxGb250U2l6ZSwgbGFiZWxNYXJnaW4sIGdyaWRMaW5lLCB0aWNrTGluZSwgZG9tYWluTGluZSwgbWluTWF4VGlja3NPbmx5LCB0aWNrRm9ybWF0LCB0aWNrVmFsdWVzLCBudW1UaWNrcywgdGlja1RleHRGaXRNb2RlLCB0aWNrVGV4dExlbmd0aCwgdGlja1RleHRXaWR0aCwgdGlja1RleHRTZXBhcmF0b3IsIHRpY2tUZXh0Rm9yY2VXb3JkQnJlYWssIHRpY2tUZXh0VHJpbVR5cGUsIHRpY2tUZXh0Rm9udFNpemUsIHRpY2tUZXh0QWxpZ24sIHRpY2tQYWRkaW5nIH0gPSB0aGlzXG4gICAgY29uc3QgY29uZmlnID0geyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCB4LCB5LCBpZCwgY29sb3IsIHhTY2FsZSwgeVNjYWxlLCBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uLCBwb3NpdGlvbiwgdHlwZSwgZnVsbFNpemUsIGxhYmVsLCBsYWJlbEZvbnRTaXplLCBsYWJlbE1hcmdpbiwgZ3JpZExpbmUsIHRpY2tMaW5lLCBkb21haW5MaW5lLCBtaW5NYXhUaWNrc09ubHksIHRpY2tGb3JtYXQsIHRpY2tWYWx1ZXMsIG51bVRpY2tzLCB0aWNrVGV4dEZpdE1vZGUsIHRpY2tUZXh0TGVuZ3RoLCB0aWNrVGV4dFdpZHRoLCB0aWNrVGV4dFNlcGFyYXRvciwgdGlja1RleHRGb3JjZVdvcmRCcmVhaywgdGlja1RleHRUcmltVHlwZSwgdGlja1RleHRGb250U2l6ZSwgdGlja1RleHRBbGlnbiwgdGlja1BhZGRpbmcgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpIGFzIChrZXlvZiBBeGlzQ29uZmlnSW50ZXJmYWNlPERhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
80
80
  }], data: [{
81
81
  type: Input
82
82
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYnJ1c2gvYnJ1c2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxLQUFLLEdBU04sTUFBTSxZQUFZLENBQUE7QUFFbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLGlCQUFpQjtJQWtINUIsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRW5ELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNuTyxNQUFNLE1BQU0sR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQTtRQUNyTyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBMEMsQ0FBQTtRQUN6RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFMUUsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOzsrR0F4SVUsaUJBQWlCO21HQUFqQixpQkFBaUIsNGdCQUZqQixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQywrQ0FGOUQsRUFBRTs0RkFJRCxpQkFBaUI7a0JBTjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGdEQUFnRDtvQkFDaEQsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsbUJBQW1CLEVBQUUsQ0FBQztpQkFDekU7OEJBR1UsUUFBUTtzQkFBaEIsS0FBSztnQkFtQkcsTUFBTTtzQkFBZCxLQUFLO2dCQXdCRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLENBQUM7c0JBQVQsS0FBSztnQkFHRyxDQUFDO3NCQUFULEtBQUs7Z0JBR0csRUFBRTtzQkFBVixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQU1HLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQnJ1c2gsXG4gIEJydXNoQ29uZmlnSW50ZXJmYWNlLFxuICBDb250YWluZXJDb3JlLFxuICBWaXNFdmVudFR5cGUsXG4gIFZpc0V2ZW50Q2FsbGJhY2ssXG4gIE51bWVyaWNBY2Nlc3NvcixcbiAgQ29sb3JBY2Nlc3NvcixcbiAgQ29udGludW91c1NjYWxlLFxuICBBcnJhbmdlbWVudCxcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IEQzQnJ1c2hFdmVudCB9IGZyb20gJ2QzLWJydXNoJ1xuaW1wb3J0IHsgVmlzWFlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtYnJ1c2gnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc1hZQ29tcG9uZW50LCB1c2VFeGlzdGluZzogVmlzQnJ1c2hDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIFZpc0JydXNoQ29tcG9uZW50PERhdHVtPiBpbXBsZW1lbnRzIEJydXNoQ29uZmlnSW50ZXJmYWNlPERhdHVtPiwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIGRhdGEgdXBkYXRlIHRyYW5zaXRpb25zIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdDogYDYwMGAgKi9cbiAgQElucHV0KCkgZHVyYXRpb24/OiBudW1iZXJcblxuICAvKiogRXZlbnRzIGNvbmZpZ3VyYXRpb24uIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbZXZlbnRUeXBlXTogY2FsbGJhY2tGdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBjbGljazogKGQpID0+IGNvbnNvbGUubG9nKFwiQ2xpY2tlZCBBcmVhXCIsIGQpXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGV2ZW50cz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFtldmVudFR5cGUgaW4gVmlzRXZlbnRUeXBlXT86IFZpc0V2ZW50Q2FsbGJhY2tcbiAgICB9O1xuICB9XG5cbiAgLyoqIFlvdSBjYW4gc2V0IGV2ZXJ5IFNWRyBhbmQgSFRNTCB2aXN1YWxpemF0aW9uIG9iamVjdCB0byBoYXZlIGEgY3VzdG9tIERPTSBhdHRyaWJ1dGVzLCB3aGljaCBpcyB1c2VmdWxcbiAgICogd2hlbiB5b3Ugd2FudCB0byBkbyB1bml0IG9yIGVuZC10by1lbmQgdGVzdGluZy4gQXR0cmlidXRlcyBjb25maWd1cmF0aW9uIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbYXR0cmlidXRlTmFtZV06IGF0dHJpYnV0ZSBjb25zdGFudCB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBcInRlc3QtdmFsdWVcIjogZCA9PiBkLnZhbHVlXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZXM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbYXR0cjogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8ICgoZGF0dW06IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdmFsdWVzIGFsb25nIHRoZSBYIGF4aXMuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHg6IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogQSBzaW5nbGUgb2YgbXVsdGlwbGUgYWNjZXNzb3IgZnVuY3Rpb25zIGZvciBnZXR0aW5nIHRoZSB2YWx1ZXMgYWxvbmcgdGhlIFkgYXhpcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeTogTnVtZXJpY0FjY2Vzc29yPERhdHVtPiB8IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5bXVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdW5pcXVlIGRhdGEgcmVjb3JkIGlkLiBVc2VkIGZvciBtb3JlIHBlcnNpc3RlbnQgZGF0YSB1cGRhdGVzLiBEZWZhdWx0OiBgKGQsIGkpID0+IGQuaWQgPz8gaWAgKi9cbiAgQElucHV0KCkgaWQ/OiAoKGQ6IERhdHVtLCBpPzogbnVtYmVyLCAuLi5yZXN0KSA9PiBzdHJpbmcpXG5cbiAgLyoqIENvbXBvbmVudCBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvcmAgKi9cbiAgQElucHV0KCkgY29sb3I/OiBDb2xvckFjY2Vzc29yPERhdHVtPiB8IENvbG9yQWNjZXNzb3I8RGF0dW1bXT5cblxuICAvKiogU2NhbGUgZm9yIFggZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIElmIHlvdSBzZXQgeFNjYWxlIHlvdSdsbCBiZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBpdCdzIGBkb21haW5gIGFuZCBgcmFuZ2VgIGFzIHdlbGwuXG4gICAqIE9ubHkgY29udGludW91cyBzY2FsZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeFNjYWxlPzogQ29udGludW91c1NjYWxlXG5cbiAgLyoqIFNjYWxlIGZvciBZIGRpbWVuc2lvbiwgZS5nLiBTY2FsZS5zY2FsZUxpbmVhcigpLiBJZiB5b3Ugc2V0IHlTY2FsZSB5b3UnbGwgYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgaXQncyBgZG9tYWluYCBhbmQgYHJhbmdlYCBhcyB3ZWxsLlxuICAgKiBPbmx5IGNvbnRpbnVvdXMgc2NhbGVzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHlTY2FsZT86IENvbnRpbnVvdXNTY2FsZVxuXG4gIC8qKiBJZGVudGlmaWVzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBvdmVyYWxsIFggYW5kIFkgZG9tYWluIGNhbGN1bGF0aW9ucyBvciBub3QuXG4gICAqIFRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHBhc3MgaW5kaXZpZHVhbCBkYXRhIHRvIGEgY29tcG9uZW50IGFuZCB5b3UgZG9uJ3Qgd2FudCBpdCB0byBhZmZlY3RcbiAgICogdGhlIHNjYWxlcyBvZiB0aGUgY2hhcnQuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbj86IGJvb2xlYW5cblxuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uIGFueSBCcnVzaCBldmVudC5cbiAgICogRGVmYXVsdDogYChzZWxlY3Rpb246IFtudW1iZXIsIG51bWJlcl0sIGV2ZW50OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuOiBib29sZWFuKTogdm9pZCA9PiB7fWAgKi9cbiAgQElucHV0KCkgb25CcnVzaD86ICgoc2VsZWN0aW9uPzogW251bWJlciwgbnVtYmVyXSwgZXZlbnQ/OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuPzogYm9vbGVhbikgPT4gdm9pZClcblxuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIG9uIHRoZSBCcnVzaCBzdGFydCBldmVudC5cbiAgICogRGVmYXVsdDogYChzZWxlY3Rpb246IFtudW1iZXIsIG51bWJlcl0sIGV2ZW50OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuOiBib29sZWFuKTogdm9pZCA9PiB7fWAgKi9cbiAgQElucHV0KCkgb25CcnVzaFN0YXJ0PzogKChzZWxlY3Rpb24/OiBbbnVtYmVyLCBudW1iZXJdLCBldmVudD86IEQzQnJ1c2hFdmVudDxEYXR1bT4sIHVzZXJEcml2ZW4/OiBib29sZWFuKSA9PiB2b2lkKVxuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gdGhlIEJydXNoIG1vdmUgZXZlbnQuXG4gICAqIERlZmF1bHQ6IGAoc2VsZWN0aW9uOiBbbnVtYmVyLCBudW1iZXJdLCBldmVudDogRDNCcnVzaEV2ZW50PERhdHVtPiwgdXNlckRyaXZlbjogYm9vbGVhbik6IHZvaWQgPT4ge31gICovXG4gIEBJbnB1dCgpIG9uQnJ1c2hNb3ZlPzogKChzZWxlY3Rpb24/OiBbbnVtYmVyLCBudW1iZXJdLCBldmVudD86IEQzQnJ1c2hFdmVudDxEYXR1bT4sIHVzZXJEcml2ZW4/OiBib29sZWFuKSA9PiB2b2lkKVxuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gdGhlIEJydXNoIGVuZCBldmVudC5cbiAgICogRGVmYXVsdDogYChzZWxlY3Rpb246IFtudW1iZXIsIG51bWJlcl0sIGV2ZW50OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuOiBib29sZWFuKTogdm9pZCA9PiB7fWAgKi9cbiAgQElucHV0KCkgb25CcnVzaEVuZD86ICgoc2VsZWN0aW9uPzogW251bWJlciwgbnVtYmVyXSwgZXZlbnQ/OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuPzogYm9vbGVhbikgPT4gdm9pZClcblxuICAvKiogV2lkdGggb2YgdGhlIEJydXNoIGhhbmRsZS4gRGVmYXVsdDogYDFgICovXG4gIEBJbnB1dCgpIGhhbmRsZVdpZHRoPzogbnVtYmVyXG5cbiAgLyoqIEJydXNoIHNlbGVjdGlvbiBpbiB0aGUgZGF0YSBzcGFjZSBjb29yZGluYXRlcywgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgc2VsZWN0aW9uLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBzZWxlY3Rpb24/OiBbbnVtYmVyLCBudW1iZXJdIHwgbnVsbFxuXG4gIC8qKiBBbGxvdyBkcmFnZ2luZyB0aGUgc2VsZWN0ZWQgYXJlYSBhcyBhIHdob2xlIGluIG9yZGVyIHRvIGNoYW5nZSB0aGUgc2VsZWN0ZWQgcmFuZ2UuIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZHJhZ2dhYmxlPzogYm9vbGVhblxuXG4gIC8qKiBQb3NpdGlvbiBvZiB0aGUgaGFuZGxlOiBgQXJyYW5nZW1lbnQuSW5zaWRlYCBvciBgQXJyYW5nZW1lbnQuT3V0c2lkZWAuIERlZmF1bHQ6IGBBcnJhbmdlbWVudC5JbnNpZGVgICovXG4gIEBJbnB1dCgpIGhhbmRsZVBvc2l0aW9uPzogQXJyYW5nZW1lbnQgfCBzdHJpbmdcblxuICAvKiogQ29uc3RyYWludCBCcnVzaCBzZWxlY3Rpb24gdG8gYSBtaW5pbWFsIGxlbmd0aCBpbiBkYXRhIHVuaXRzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBzZWxlY3Rpb25NaW5MZW5ndGg/OiBudW1iZXJcbiAgQElucHV0KCkgZGF0YTogRGF0dW1bXVxuXG4gIGNvbXBvbmVudDogQnJ1c2g8RGF0dW0+IHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjb21wb25lbnRDb250YWluZXI6IENvbnRhaW5lckNvcmUgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IEJydXNoPERhdHVtPih0aGlzLmdldENvbmZpZygpKVxuXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuc2V0RGF0YSh0aGlzLmRhdGEpXG4gICAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHsgdGhpcy5jb21wb25lbnQ/LnNldERhdGEodGhpcy5kYXRhKSB9XG4gICAgdGhpcy5jb21wb25lbnQ/LnNldENvbmZpZyh0aGlzLmdldENvbmZpZygpKVxuICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWcgKCk6IEJydXNoQ29uZmlnSW50ZXJmYWNlPERhdHVtPiB7XG4gICAgY29uc3QgeyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCB4LCB5LCBpZCwgY29sb3IsIHhTY2FsZSwgeVNjYWxlLCBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uLCBvbkJydXNoLCBvbkJydXNoU3RhcnQsIG9uQnJ1c2hNb3ZlLCBvbkJydXNoRW5kLCBoYW5kbGVXaWR0aCwgc2VsZWN0aW9uLCBkcmFnZ2FibGUsIGhhbmRsZVBvc2l0aW9uLCBzZWxlY3Rpb25NaW5MZW5ndGggfSA9IHRoaXNcbiAgICBjb25zdCBjb25maWcgPSB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHgsIHksIGlkLCBjb2xvciwgeFNjYWxlLCB5U2NhbGUsIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24sIG9uQnJ1c2gsIG9uQnJ1c2hTdGFydCwgb25CcnVzaE1vdmUsIG9uQnJ1c2hFbmQsIGhhbmRsZVdpZHRoLCBzZWxlY3Rpb24sIGRyYWdnYWJsZSwgaGFuZGxlUG9zaXRpb24sIHNlbGVjdGlvbk1pbkxlbmd0aCB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykgYXMgKGtleW9mIEJydXNoQ29uZmlnSW50ZXJmYWNlPERhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYnJ1c2gvYnJ1c2guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxLQUFLLEdBU04sTUFBTSxZQUFZLENBQUE7QUFFbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLGlCQUFpQjtJQWtINUIsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRW5ELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQTtRQUNuTyxNQUFNLE1BQU0sR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQTtRQUNyTyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBMEMsQ0FBQTtRQUN6RSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUztZQUFFLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFMUUsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDOzsrR0F4SVUsaUJBQWlCO21HQUFqQixpQkFBaUIsNGdCQUZqQixDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQywrQ0FGOUQsRUFBRTs0RkFJRCxpQkFBaUI7a0JBTjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxFQUFFO29CQUNaLGdEQUFnRDtvQkFDaEQsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsbUJBQW1CLEVBQUUsQ0FBQztpQkFDekU7OEJBR1UsUUFBUTtzQkFBaEIsS0FBSztnQkFtQkcsTUFBTTtzQkFBZCxLQUFLO2dCQXdCRyxVQUFVO3NCQUFsQixLQUFLO2dCQU9HLENBQUM7c0JBQVQsS0FBSztnQkFHRyxDQUFDO3NCQUFULEtBQUs7Z0JBR0csRUFBRTtzQkFBVixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBS0csTUFBTTtzQkFBZCxLQUFLO2dCQU1HLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFJRyxPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gISEhIFRoaXMgY29kZSB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQuIFlvdSBzaG91bGQgbm90IGNoYW5nZSBpdCAhISFcbmltcG9ydCB7IENvbXBvbmVudCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQnJ1c2gsXG4gIEJydXNoQ29uZmlnSW50ZXJmYWNlLFxuICBDb250YWluZXJDb3JlLFxuICBWaXNFdmVudFR5cGUsXG4gIFZpc0V2ZW50Q2FsbGJhY2ssXG4gIE51bWVyaWNBY2Nlc3NvcixcbiAgQ29sb3JBY2Nlc3NvcixcbiAgQ29udGludW91c1NjYWxlLFxuICBBcnJhbmdlbWVudCxcbn0gZnJvbSAnQHVub3Zpcy90cydcbmltcG9ydCB7IEQzQnJ1c2hFdmVudCB9IGZyb20gJ2QzLWJydXNoJ1xuaW1wb3J0IHsgVmlzWFlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtYnJ1c2gnLFxuICB0ZW1wbGF0ZTogJycsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFZpc1hZQ29tcG9uZW50LCB1c2VFeGlzdGluZzogVmlzQnJ1c2hDb21wb25lbnQgfV0sXG59KVxuZXhwb3J0IGNsYXNzIFZpc0JydXNoQ29tcG9uZW50PERhdHVtPiBpbXBsZW1lbnRzIEJydXNoQ29uZmlnSW50ZXJmYWNlPERhdHVtPiwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKiBBbmltYXRpb24gZHVyYXRpb24gb2YgdGhlIGRhdGEgdXBkYXRlIHRyYW5zaXRpb25zIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdDogYDYwMGAgKi9cbiAgQElucHV0KCkgZHVyYXRpb24/OiBudW1iZXJcblxuICAvKiogRXZlbnRzIGNvbmZpZ3VyYXRpb24uIEFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbZXZlbnRUeXBlXTogY2FsbGJhY2tGdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBjbGljazogKGQpID0+IGNvbnNvbGUubG9nKFwiQ2xpY2tlZCBBcmVhXCIsIGQpXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGV2ZW50cz86IHtcbiAgICBbc2VsZWN0b3I6IHN0cmluZ106IHtcbiAgICAgIFtldmVudFR5cGUgaW4gVmlzRXZlbnRUeXBlXT86IFZpc0V2ZW50Q2FsbGJhY2tcbiAgICB9O1xuICB9XG5cbiAgLyoqIFlvdSBjYW4gc2V0IGV2ZXJ5IFNWRyBhbmQgSFRNTCB2aXN1YWxpemF0aW9uIG9iamVjdCB0byBoYXZlIGEgY3VzdG9tIERPTSBhdHRyaWJ1dGVzLCB3aGljaCBpcyB1c2VmdWxcbiAgICogd2hlbiB5b3Ugd2FudCB0byBkbyB1bml0IG9yIGVuZC10by1lbmQgdGVzdGluZy4gQXR0cmlidXRlcyBjb25maWd1cmF0aW9uIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqIFxcW3NlbGVjdG9yU3RyaW5nXToge1xuICAgKiAgICAgXFxbYXR0cmlidXRlTmFtZV06IGF0dHJpYnV0ZSBjb25zdGFudCB2YWx1ZSBvciBhY2Nlc3NvciBmdW5jdGlvblxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKiBlLmcuOlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtBcmVhLnNlbGVjdG9ycy5hcmVhXToge1xuICAgKiAgICBcInRlc3QtdmFsdWVcIjogZCA9PiBkLnZhbHVlXG4gICAqICB9XG4gICAqIH1cbiAgICogYGBgICovXG4gIEBJbnB1dCgpIGF0dHJpYnV0ZXM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbYXR0cjogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8ICgoZGF0dW06IGFueSkgPT4gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbik7XG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdmFsdWVzIGFsb25nIHRoZSBYIGF4aXMuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHg6IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogQSBzaW5nbGUgb2YgbXVsdGlwbGUgYWNjZXNzb3IgZnVuY3Rpb25zIGZvciBnZXR0aW5nIHRoZSB2YWx1ZXMgYWxvbmcgdGhlIFkgYXhpcy4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeTogTnVtZXJpY0FjY2Vzc29yPERhdHVtPiB8IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5bXVxuXG4gIC8qKiBBY2Nlc3NvciBmdW5jdGlvbiBmb3IgZ2V0dGluZyB0aGUgdW5pcXVlIGRhdGEgcmVjb3JkIGlkLiBVc2VkIGZvciBtb3JlIHBlcnNpc3RlbnQgZGF0YSB1cGRhdGVzLiBEZWZhdWx0OiBgKGQsIGkpID0+IGQuaWQgPz8gaWAgKi9cbiAgQElucHV0KCkgaWQ/OiAoKGQ6IERhdHVtLCBpOiBudW1iZXIsIC4uLnJlc3QpID0+IHN0cmluZylcblxuICAvKiogQ29tcG9uZW50IGNvbG9yIGFjY2Vzc29yIGZ1bmN0aW9uLiBEZWZhdWx0OiBgZCA9PiBkLmNvbG9yYCAqL1xuICBASW5wdXQoKSBjb2xvcj86IENvbG9yQWNjZXNzb3I8RGF0dW0+IHwgQ29sb3JBY2Nlc3NvcjxEYXR1bVtdPlxuXG4gIC8qKiBTY2FsZSBmb3IgWCBkaW1lbnNpb24sIGUuZy4gU2NhbGUuc2NhbGVMaW5lYXIoKS4gSWYgeW91IHNldCB4U2NhbGUgeW91J2xsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGl0J3MgYGRvbWFpbmAgYW5kIGByYW5nZWAgYXMgd2VsbC5cbiAgICogT25seSBjb250aW51b3VzIHNjYWxlcyBhcmUgc3VwcG9ydGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4U2NhbGU/OiBDb250aW51b3VzU2NhbGVcblxuICAvKiogU2NhbGUgZm9yIFkgZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIElmIHlvdSBzZXQgeVNjYWxlIHlvdSdsbCBiZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBpdCdzIGBkb21haW5gIGFuZCBgcmFuZ2VgIGFzIHdlbGwuXG4gICAqIE9ubHkgY29udGludW91cyBzY2FsZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeVNjYWxlPzogQ29udGludW91c1NjYWxlXG5cbiAgLyoqIElkZW50aWZpZXMgd2hldGhlciB0aGUgY29tcG9uZW50IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIG92ZXJhbGwgWCBhbmQgWSBkb21haW4gY2FsY3VsYXRpb25zIG9yIG5vdC5cbiAgICogVGhpcyBwcm9wZXJ0eSBjYW4gYmUgdXNlZnVsIHdoZW4geW91IHdhbnQgcGFzcyBpbmRpdmlkdWFsIGRhdGEgdG8gYSBjb21wb25lbnQgYW5kIHlvdSBkb24ndCB3YW50IGl0IHRvIGFmZmVjdFxuICAgKiB0aGUgc2NhbGVzIG9mIHRoZSBjaGFydC5cbiAgICogRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uPzogYm9vbGVhblxuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gYW55IEJydXNoIGV2ZW50LlxuICAgKiBEZWZhdWx0OiBgKHNlbGVjdGlvbjogW251bWJlciwgbnVtYmVyXSwgZXZlbnQ6IEQzQnJ1c2hFdmVudDxEYXR1bT4sIHVzZXJEcml2ZW46IGJvb2xlYW4pOiB2b2lkID0+IHt9YCAqL1xuICBASW5wdXQoKSBvbkJydXNoPzogKChzZWxlY3Rpb246IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGV2ZW50OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuOiBib29sZWFuKSA9PiB2b2lkKVxuXG4gIC8qKiBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgb24gdGhlIEJydXNoIHN0YXJ0IGV2ZW50LlxuICAgKiBEZWZhdWx0OiBgKHNlbGVjdGlvbjogW251bWJlciwgbnVtYmVyXSwgZXZlbnQ6IEQzQnJ1c2hFdmVudDxEYXR1bT4sIHVzZXJEcml2ZW46IGJvb2xlYW4pOiB2b2lkID0+IHt9YCAqL1xuICBASW5wdXQoKSBvbkJydXNoU3RhcnQ/OiAoKHNlbGVjdGlvbjogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgZXZlbnQ6IEQzQnJ1c2hFdmVudDxEYXR1bT4sIHVzZXJEcml2ZW46IGJvb2xlYW4pID0+IHZvaWQpXG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiB0aGUgQnJ1c2ggbW92ZSBldmVudC5cbiAgICogRGVmYXVsdDogYChzZWxlY3Rpb246IFtudW1iZXIsIG51bWJlcl0sIGV2ZW50OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuOiBib29sZWFuKTogdm9pZCA9PiB7fWAgKi9cbiAgQElucHV0KCkgb25CcnVzaE1vdmU/OiAoKHNlbGVjdGlvbjogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCwgZXZlbnQ6IEQzQnJ1c2hFdmVudDxEYXR1bT4sIHVzZXJEcml2ZW46IGJvb2xlYW4pID0+IHZvaWQpXG5cbiAgLyoqIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiB0aGUgQnJ1c2ggZW5kIGV2ZW50LlxuICAgKiBEZWZhdWx0OiBgKHNlbGVjdGlvbjogW251bWJlciwgbnVtYmVyXSwgZXZlbnQ6IEQzQnJ1c2hFdmVudDxEYXR1bT4sIHVzZXJEcml2ZW46IGJvb2xlYW4pOiB2b2lkID0+IHt9YCAqL1xuICBASW5wdXQoKSBvbkJydXNoRW5kPzogKChzZWxlY3Rpb246IFtudW1iZXIsIG51bWJlcl0gfCB1bmRlZmluZWQsIGV2ZW50OiBEM0JydXNoRXZlbnQ8RGF0dW0+LCB1c2VyRHJpdmVuOiBib29sZWFuKSA9PiB2b2lkKVxuXG4gIC8qKiBXaWR0aCBvZiB0aGUgQnJ1c2ggaGFuZGxlLiBEZWZhdWx0OiBgMWAgKi9cbiAgQElucHV0KCkgaGFuZGxlV2lkdGg/OiBudW1iZXJcblxuICAvKiogQnJ1c2ggc2VsZWN0aW9uIGluIHRoZSBkYXRhIHNwYWNlIGNvb3JkaW5hdGVzLCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBzZWxlY3Rpb24uIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHNlbGVjdGlvbj86IFtudW1iZXIsIG51bWJlcl0gfCBudWxsXG5cbiAgLyoqIEFsbG93IGRyYWdnaW5nIHRoZSBzZWxlY3RlZCBhcmVhIGFzIGEgd2hvbGUgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBzZWxlY3RlZCByYW5nZS4gRGVmYXVsdDogYGZhbHNlYCAqL1xuICBASW5wdXQoKSBkcmFnZ2FibGU/OiBib29sZWFuXG5cbiAgLyoqIFBvc2l0aW9uIG9mIHRoZSBoYW5kbGU6IGBBcnJhbmdlbWVudC5JbnNpZGVgIG9yIGBBcnJhbmdlbWVudC5PdXRzaWRlYC4gRGVmYXVsdDogYEFycmFuZ2VtZW50Lkluc2lkZWAgKi9cbiAgQElucHV0KCkgaGFuZGxlUG9zaXRpb24/OiBBcnJhbmdlbWVudCB8IHN0cmluZ1xuXG4gIC8qKiBDb25zdHJhaW50IEJydXNoIHNlbGVjdGlvbiB0byBhIG1pbmltYWwgbGVuZ3RoIGluIGRhdGEgdW5pdHMuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1pbkxlbmd0aD86IG51bWJlclxuICBASW5wdXQoKSBkYXRhOiBEYXR1bVtdXG5cbiAgY29tcG9uZW50OiBCcnVzaDxEYXR1bT4gfCB1bmRlZmluZWRcbiAgcHVibGljIGNvbXBvbmVudENvbnRhaW5lcjogQ29udGFpbmVyQ29yZSB8IHVuZGVmaW5lZFxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCAoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQnJ1c2g8RGF0dW0+KHRoaXMuZ2V0Q29uZmlnKCkpXG5cbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudC5zZXREYXRhKHRoaXMuZGF0YSlcbiAgICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkgeyB0aGlzLmNvbXBvbmVudD8uc2V0RGF0YSh0aGlzLmRhdGEpIH1cbiAgICB0aGlzLmNvbXBvbmVudD8uc2V0Q29uZmlnKHRoaXMuZ2V0Q29uZmlnKCkpXG4gICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gIH1cblxuICBwcml2YXRlIGdldENvbmZpZyAoKTogQnJ1c2hDb25maWdJbnRlcmZhY2U8RGF0dW0+IHtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHgsIHksIGlkLCBjb2xvciwgeFNjYWxlLCB5U2NhbGUsIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24sIG9uQnJ1c2gsIG9uQnJ1c2hTdGFydCwgb25CcnVzaE1vdmUsIG9uQnJ1c2hFbmQsIGhhbmRsZVdpZHRoLCBzZWxlY3Rpb24sIGRyYWdnYWJsZSwgaGFuZGxlUG9zaXRpb24sIHNlbGVjdGlvbk1pbkxlbmd0aCB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgeSwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgb25CcnVzaCwgb25CcnVzaFN0YXJ0LCBvbkJydXNoTW92ZSwgb25CcnVzaEVuZCwgaGFuZGxlV2lkdGgsIHNlbGVjdGlvbiwgZHJhZ2dhYmxlLCBoYW5kbGVQb3NpdGlvbiwgc2VsZWN0aW9uTWluTGVuZ3RoIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKSBhcyAoa2V5b2YgQnJ1c2hDb25maWdJbnRlcmZhY2U8RGF0dW0+KVtdXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7IGlmIChjb25maWdba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgY29uZmlnW2tleV0gfSlcblxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuIl19
@@ -78,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
78
78
  }], data: [{
79
79
  type: Input
80
80
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NoYWlyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nyb3NzaGFpci9jcm9zc2hhaXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxTQUFTLEdBVVYsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLHFCQUFxQjtJQWtIaEMsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXZELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLDhCQUE4QixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDbk8sTUFBTSxNQUFNLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFBO1FBQ3JPLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUE4QyxDQUFBO1FBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUxRSxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7O21IQXhJVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw4Z0JBRnJCLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLCtDQUZsRSxFQUFFOzRGQUlELHFCQUFxQjtrQkFOakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZ0RBQWdEO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyx1QkFBdUIsRUFBRSxDQUFDO2lCQUM3RTs4QkFHVSxRQUFRO3NCQUFoQixLQUFLO2dCQW1CRyxNQUFNO3NCQUFkLEtBQUs7Z0JBd0JHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csQ0FBQztzQkFBVCxLQUFLO2dCQUdHLENBQUM7c0JBQVQsS0FBSztnQkFHRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0csOEJBQThCO3NCQUF0QyxLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAhISEgVGhpcyBjb2RlIHdhcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4gWW91IHNob3VsZCBub3QgY2hhbmdlIGl0ICEhIVxuaW1wb3J0IHsgQ29tcG9uZW50LCBBZnRlclZpZXdJbml0LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDcm9zc2hhaXIsXG4gIENyb3NzaGFpckNvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgVG9vbHRpcCxcbiAgQ3Jvc3NoYWlyQ2lyY2xlLFxufSBmcm9tICdAdW5vdmlzL3RzJ1xuaW1wb3J0IHsgVmlzWFlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtY3Jvc3NoYWlyJyxcbiAgdGVtcGxhdGU6ICcnLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBWaXNYWUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IFZpc0Nyb3NzaGFpckNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzQ3Jvc3NoYWlyQ29tcG9uZW50PERhdHVtPiBpbXBsZW1lbnRzIENyb3NzaGFpckNvbmZpZ0ludGVyZmFjZTxEYXR1bT4sIEFmdGVyVmlld0luaXQge1xuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHVwZGF0ZSB0cmFuc2l0aW9ucyBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IGA2MDBgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIEV2ZW50cyBjb25maWd1cmF0aW9uLiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2V2ZW50VHlwZV06IGNhbGxiYWNrRnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgY2xpY2s6IChkKSA9PiBjb25zb2xlLmxvZyhcIkNsaWNrZWQgQXJlYVwiLCBkKVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBldmVudHM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbZXZlbnRUeXBlIGluIFZpc0V2ZW50VHlwZV0/OiBWaXNFdmVudENhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBZb3UgY2FuIHNldCBldmVyeSBTVkcgYW5kIEhUTUwgdmlzdWFsaXphdGlvbiBvYmplY3QgdG8gaGF2ZSBhIGN1c3RvbSBET00gYXR0cmlidXRlcywgd2hpY2ggaXMgdXNlZnVsXG4gICAqIHdoZW4geW91IHdhbnQgdG8gZG8gdW5pdCBvciBlbmQtdG8tZW5kIHRlc3RpbmcuIEF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2F0dHJpYnV0ZU5hbWVdOiBhdHRyaWJ1dGUgY29uc3RhbnQgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgXCJ0ZXN0LXZhbHVlXCI6IGQgPT4gZC52YWx1ZVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBhdHRyaWJ1dGVzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2F0dHI6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoKGRhdHVtOiBhbnkpID0+IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pO1xuICAgIH07XG4gIH1cblxuICAvKiogQWNjZXNzb3IgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIHZhbHVlcyBhbG9uZyB0aGUgWCBheGlzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIEEgc2luZ2xlIG9mIG11bHRpcGxlIGFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyB0aGUgdmFsdWVzIGFsb25nIHRoZSBZIGF4aXMuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHk6IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT4gfCBOdW1lcmljQWNjZXNzb3I8RGF0dW0+W11cblxuICAvKiogQWNjZXNzb3IgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIHVuaXF1ZSBkYXRhIHJlY29yZCBpZC4gVXNlZCBmb3IgbW9yZSBwZXJzaXN0ZW50IGRhdGEgdXBkYXRlcy4gRGVmYXVsdDogYChkLCBpKSA9PiBkLmlkID8/IGlgICovXG4gIEBJbnB1dCgpIGlkPzogKChkOiBEYXR1bSwgaT86IG51bWJlciwgLi4ucmVzdCkgPT4gc3RyaW5nKVxuXG4gIC8qKiBDb21wb25lbnQgY29sb3IgYWNjZXNzb3IgZnVuY3Rpb24uIERlZmF1bHQ6IGBkID0+IGQuY29sb3JgICovXG4gIEBJbnB1dCgpIGNvbG9yPzogQ29sb3JBY2Nlc3NvcjxEYXR1bT4gfCBDb2xvckFjY2Vzc29yPERhdHVtW10+XG5cbiAgLyoqIFNjYWxlIGZvciBYIGRpbWVuc2lvbiwgZS5nLiBTY2FsZS5zY2FsZUxpbmVhcigpLiBJZiB5b3Ugc2V0IHhTY2FsZSB5b3UnbGwgYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgaXQncyBgZG9tYWluYCBhbmQgYHJhbmdlYCBhcyB3ZWxsLlxuICAgKiBPbmx5IGNvbnRpbnVvdXMgc2NhbGVzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHhTY2FsZT86IENvbnRpbnVvdXNTY2FsZVxuXG4gIC8qKiBTY2FsZSBmb3IgWSBkaW1lbnNpb24sIGUuZy4gU2NhbGUuc2NhbGVMaW5lYXIoKS4gSWYgeW91IHNldCB5U2NhbGUgeW91J2xsIGJlIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIGl0J3MgYGRvbWFpbmAgYW5kIGByYW5nZWAgYXMgd2VsbC5cbiAgICogT25seSBjb250aW51b3VzIHNjYWxlcyBhcmUgc3VwcG9ydGVkLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB5U2NhbGU/OiBDb250aW51b3VzU2NhbGVcblxuICAvKiogSWRlbnRpZmllcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gb3ZlcmFsbCBYIGFuZCBZIGRvbWFpbiBjYWxjdWxhdGlvbnMgb3Igbm90LlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbiBiZSB1c2VmdWwgd2hlbiB5b3Ugd2FudCBwYXNzIGluZGl2aWR1YWwgZGF0YSB0byBhIGNvbXBvbmVudCBhbmQgeW91IGRvbid0IHdhbnQgaXQgdG8gYWZmZWN0XG4gICAqIHRoZSBzY2FsZXMgb2YgdGhlIGNoYXJ0LlxuICAgKiBEZWZhdWx0OiBgZmFsc2VgICovXG4gIEBJbnB1dCgpIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24/OiBib29sZWFuXG5cbiAgLyoqIFNlcGFyYXRlIGFycmF5IG9mIGFjY2Vzc29ycyBmb3Igc3RhY2tlZCBjb21wb25lbnRzIChlZyBTdGFja2VkQmFyLCBBcmVhKS4gRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeVN0YWNrZWQ/OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+W11cblxuICAvKiogQmFzZWxpbmUgYWNjZXNzb3IgZnVuY3Rpb24gZm9yIHN0YWNrZWQgdmFsdWVzLCB1c2VmdWwgd2l0aCBzdGFja2VkIGFyZWFzLiBEZWZhdWx0OiBgbnVsbGAgKi9cbiAgQElucHV0KCkgYmFzZWxpbmU/OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIEFuIGluc3RhbmNlIG9mIHRoZSBUb29sdGlwIGNvbXBvbmVudCB0byBiZSB1c2VkIHdpdGggQ3Jvc3NoYWlyLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB0b29sdGlwPzogVG9vbHRpcCB8IHVuZGVmaW5lZFxuXG4gIC8qKiBUb29sdGlwIHRlbXBsYXRlIGFjY2Vzc29yLiBUaGUgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGVpdGhlciBhIHZhbGlkIEhUTUwgc3RyaW5nIG9yIGFuIEhUTUxFbGVtZW50LiBEZWZhdWx0OiBgZCA9PiAnJ2AgKi9cbiAgQElucHV0KCkgdGVtcGxhdGU/OiAoZGF0YTogRGF0dW0sIHg6IG51bWJlciB8IERhdGUpID0+IHN0cmluZyB8IEhUTUxFbGVtZW50XG5cbiAgLyoqIEhpZGUgQ3Jvc3NoYWlyIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpcyBmYXIgZnJvbSBtb3VzZSBwb2ludGVyLiBEZWZhdWx0OiBgdHJ1ZWAgKi9cbiAgQElucHV0KCkgaGlkZVdoZW5GYXJGcm9tUG9pbnRlcj86IGJvb2xlYW5cblxuICAvKiogRGlzdGFuY2UgaW4gcGl4ZWxzIHRvIGNoZWNrIGluIHRoZSBoaWRlV2hlbkZhckZyb21Qb2ludGVyIGNvbmRpdGlvbi4gRGVmYXVsdDogYDEwMGAgKi9cbiAgQElucHV0KCkgaGlkZVdoZW5GYXJGcm9tUG9pbnRlckRpc3RhbmNlPzogbnVtYmVyXG5cbiAgLyoqIFNuYXAgdG8gdGhlIG5lYXJlc3QgZGF0YSBwb2ludC5cbiAgICogSWYgZGlzYWJsZWQsIHRoZSB0b29sdGlwIHRlbXBsYXRlIHdpbGwgcmVjZWl2ZSBvbmx5IHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBjcm9zc2hhaXIgYW5kIHlvdSdsbCBiZSByZXNwb25zaWJsZVxuICAgKiBmb3IgZ2V0dGluZyB0aGUgdW5kZXJseWluZyBkYXRhIHJlY29yZHMgYW5kIGNyb3NzaGFpciBjaXJjbGVzIChzZWUgdGhlIGBnZXRDaXJjbGVzYCBjb25maWd1cmF0aW9uIG9wdGlvbikuXG4gICAqIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBzbmFwVG9EYXRhPzogYm9vbGVhblxuXG4gIC8qKiBDdXN0b20gZnVuY3Rpb24gZm9yIHNldHRpbmcgdXAgdGhlIGNyb3NzaGFpciBjaXJjbGVzLCB1c3VhbGx5IG5lZWRlZCB3aGVuIGBzbmFwVG9EYXRhYCBpcyBzZXQgdG8gYGZhbHNlYC5cbiAgICogVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBjcm9zc2hhaXIgKGluIHRoZSBkYXRhIHNwYWNlLCBub3QgaW4gcGl4ZWxzKSwgdGhlIGRhdGEgYXJyYXlcbiAgICogYW5kIHRoZSBgeVNjYWxlYCBpbnN0YW5jZSB0byBoZWxwIHlvdSBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdmVydGljYWwgcG9zaXRpb24gb2YgdGhlIGNpcmNsZXMuXG4gICAqIEl0IGhhcyB0byByZXR1cm4gYW4gYXJyYXkgb2YgdGhlIENyb3NzaGFpckNpcmNsZSBvYmplY3RzOiBgeyB5OiBudW1iZXI7IGNvbG9yOiBzdHJpbmc7IG9wYWNpdHk/OiBudW1iZXIgfVtdYC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgZ2V0Q2lyY2xlcz86ICh4OiBudW1iZXIsIGRhdGE6IERhdHVtW10sIHlTY2FsZTogQ29udGludW91c1NjYWxlKSA9PiBDcm9zc2hhaXJDaXJjbGVbXVxuICBASW5wdXQoKSBkYXRhOiBEYXR1bVtdXG5cbiAgY29tcG9uZW50OiBDcm9zc2hhaXI8RGF0dW0+IHwgdW5kZWZpbmVkXG4gIHB1YmxpYyBjb21wb25lbnRDb250YWluZXI6IENvbnRhaW5lckNvcmUgfCB1bmRlZmluZWRcblxuICBuZ0FmdGVyVmlld0luaXQgKCk6IHZvaWQge1xuICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENyb3NzaGFpcjxEYXR1bT4odGhpcy5nZXRDb25maWcoKSlcblxuICAgIGlmICh0aGlzLmRhdGEpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50LnNldERhdGEodGhpcy5kYXRhKVxuICAgICAgdGhpcy5jb21wb25lbnRDb250YWluZXI/LnJlbmRlcigpXG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMgKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7IHRoaXMuY29tcG9uZW50Py5zZXREYXRhKHRoaXMuZGF0YSkgfVxuICAgIHRoaXMuY29tcG9uZW50Py5zZXRDb25maWcodGhpcy5nZXRDb25maWcoKSlcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29uZmlnICgpOiBDcm9zc2hhaXJDb25maWdJbnRlcmZhY2U8RGF0dW0+IHtcbiAgICBjb25zdCB7IGR1cmF0aW9uLCBldmVudHMsIGF0dHJpYnV0ZXMsIHgsIHksIGlkLCBjb2xvciwgeFNjYWxlLCB5U2NhbGUsIGV4Y2x1ZGVGcm9tRG9tYWluQ2FsY3VsYXRpb24sIHlTdGFja2VkLCBiYXNlbGluZSwgdG9vbHRpcCwgdGVtcGxhdGUsIGhpZGVXaGVuRmFyRnJvbVBvaW50ZXIsIGhpZGVXaGVuRmFyRnJvbVBvaW50ZXJEaXN0YW5jZSwgc25hcFRvRGF0YSwgZ2V0Q2lyY2xlcyB9ID0gdGhpc1xuICAgIGNvbnN0IGNvbmZpZyA9IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgeSwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgeVN0YWNrZWQsIGJhc2VsaW5lLCB0b29sdGlwLCB0ZW1wbGF0ZSwgaGlkZVdoZW5GYXJGcm9tUG9pbnRlciwgaGlkZVdoZW5GYXJGcm9tUG9pbnRlckRpc3RhbmNlLCBzbmFwVG9EYXRhLCBnZXRDaXJjbGVzIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY29uZmlnKSBhcyAoa2V5b2YgQ3Jvc3NoYWlyQ29uZmlnSW50ZXJmYWNlPERhdHVtPilbXVxuICAgIGtleXMuZm9yRWFjaChrZXkgPT4geyBpZiAoY29uZmlnW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGNvbmZpZ1trZXldIH0pXG5cbiAgICByZXR1cm4gY29uZmlnXG4gIH1cbn1cbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NoYWlyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Nyb3NzaGFpci9jcm9zc2hhaXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFpQixLQUFLLEVBQWlCLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFDTCxTQUFTLEdBVVYsTUFBTSxZQUFZLENBQUE7QUFDbkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQTs7QUFRM0MsTUFBTSxPQUFPLHFCQUFxQjtJQWtIaEMsZUFBZTs7UUFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO1FBRXZELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7U0FDbEM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFFLE9BQXNCOztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFBRSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7U0FBRTtRQUN4RCxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtRQUMzQyxNQUFBLElBQUksQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLDhCQUE4QixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUE7UUFDbk8sTUFBTSxNQUFNLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSw0QkFBNEIsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFBO1FBQ3JPLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUE4QyxDQUFBO1FBQzdFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTO1lBQUUsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUxRSxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7O21IQXhJVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw4Z0JBRnJCLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLCtDQUZsRSxFQUFFOzRGQUlELHFCQUFxQjtrQkFOakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZ0RBQWdEO29CQUNoRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyx1QkFBdUIsRUFBRSxDQUFDO2lCQUM3RTs4QkFHVSxRQUFRO3NCQUFoQixLQUFLO2dCQW1CRyxNQUFNO3NCQUFkLEtBQUs7Z0JBd0JHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csQ0FBQztzQkFBVCxLQUFLO2dCQUdHLENBQUM7c0JBQVQsS0FBSztnQkFHRyxFQUFFO3NCQUFWLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUdHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csUUFBUTtzQkFBaEIsS0FBSztnQkFHRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0csOEJBQThCO3NCQUF0QyxLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBT0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAhISEgVGhpcyBjb2RlIHdhcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4gWW91IHNob3VsZCBub3QgY2hhbmdlIGl0ICEhIVxuaW1wb3J0IHsgQ29tcG9uZW50LCBBZnRlclZpZXdJbml0LCBJbnB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBDcm9zc2hhaXIsXG4gIENyb3NzaGFpckNvbmZpZ0ludGVyZmFjZSxcbiAgQ29udGFpbmVyQ29yZSxcbiAgVmlzRXZlbnRUeXBlLFxuICBWaXNFdmVudENhbGxiYWNrLFxuICBOdW1lcmljQWNjZXNzb3IsXG4gIENvbG9yQWNjZXNzb3IsXG4gIENvbnRpbnVvdXNTY2FsZSxcbiAgVG9vbHRpcCxcbiAgQ3Jvc3NoYWlyQ2lyY2xlLFxufSBmcm9tICdAdW5vdmlzL3RzJ1xuaW1wb3J0IHsgVmlzWFlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb3JlJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2aXMtY3Jvc3NoYWlyJyxcbiAgdGVtcGxhdGU6ICcnLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBWaXNYWUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IFZpc0Nyb3NzaGFpckNvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgVmlzQ3Jvc3NoYWlyQ29tcG9uZW50PERhdHVtPiBpbXBsZW1lbnRzIENyb3NzaGFpckNvbmZpZ0ludGVyZmFjZTxEYXR1bT4sIEFmdGVyVmlld0luaXQge1xuICAvKiogQW5pbWF0aW9uIGR1cmF0aW9uIG9mIHRoZSBkYXRhIHVwZGF0ZSB0cmFuc2l0aW9ucyBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQ6IGA2MDBgICovXG4gIEBJbnB1dCgpIGR1cmF0aW9uPzogbnVtYmVyXG5cbiAgLyoqIEV2ZW50cyBjb25maWd1cmF0aW9uLiBBbiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0aWVzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2V2ZW50VHlwZV06IGNhbGxiYWNrRnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgY2xpY2s6IChkKSA9PiBjb25zb2xlLmxvZyhcIkNsaWNrZWQgQXJlYVwiLCBkKVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBldmVudHM/OiB7XG4gICAgW3NlbGVjdG9yOiBzdHJpbmddOiB7XG4gICAgICBbZXZlbnRUeXBlIGluIFZpc0V2ZW50VHlwZV0/OiBWaXNFdmVudENhbGxiYWNrXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBZb3UgY2FuIHNldCBldmVyeSBTVkcgYW5kIEhUTUwgdmlzdWFsaXphdGlvbiBvYmplY3QgdG8gaGF2ZSBhIGN1c3RvbSBET00gYXR0cmlidXRlcywgd2hpY2ggaXMgdXNlZnVsXG4gICAqIHdoZW4geW91IHdhbnQgdG8gZG8gdW5pdCBvciBlbmQtdG8tZW5kIHRlc3RpbmcuIEF0dHJpYnV0ZXMgY29uZmlndXJhdGlvbiBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiBcXFtzZWxlY3RvclN0cmluZ106IHtcbiAgICogICAgIFxcW2F0dHJpYnV0ZU5hbWVdOiBhdHRyaWJ1dGUgY29uc3RhbnQgdmFsdWUgb3IgYWNjZXNzb3IgZnVuY3Rpb25cbiAgICogIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICogZS5nLjpcbiAgICogYGBgXG4gICAqIHtcbiAgICogXFxbQXJlYS5zZWxlY3RvcnMuYXJlYV06IHtcbiAgICogICAgXCJ0ZXN0LXZhbHVlXCI6IGQgPT4gZC52YWx1ZVxuICAgKiAgfVxuICAgKiB9XG4gICAqIGBgYCAqL1xuICBASW5wdXQoKSBhdHRyaWJ1dGVzPzoge1xuICAgIFtzZWxlY3Rvcjogc3RyaW5nXToge1xuICAgICAgW2F0dHI6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoKGRhdHVtOiBhbnkpID0+IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pO1xuICAgIH07XG4gIH1cblxuICAvKiogQWNjZXNzb3IgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIHZhbHVlcyBhbG9uZyB0aGUgWCBheGlzLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB4OiBOdW1lcmljQWNjZXNzb3I8RGF0dW0+XG5cbiAgLyoqIEEgc2luZ2xlIG9mIG11bHRpcGxlIGFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyB0aGUgdmFsdWVzIGFsb25nIHRoZSBZIGF4aXMuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHk6IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT4gfCBOdW1lcmljQWNjZXNzb3I8RGF0dW0+W11cblxuICAvKiogQWNjZXNzb3IgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIHVuaXF1ZSBkYXRhIHJlY29yZCBpZC4gVXNlZCBmb3IgbW9yZSBwZXJzaXN0ZW50IGRhdGEgdXBkYXRlcy4gRGVmYXVsdDogYChkLCBpKSA9PiBkLmlkID8/IGlgICovXG4gIEBJbnB1dCgpIGlkPzogKChkOiBEYXR1bSwgaTogbnVtYmVyLCAuLi5yZXN0KSA9PiBzdHJpbmcpXG5cbiAgLyoqIENvbXBvbmVudCBjb2xvciBhY2Nlc3NvciBmdW5jdGlvbi4gRGVmYXVsdDogYGQgPT4gZC5jb2xvcmAgKi9cbiAgQElucHV0KCkgY29sb3I/OiBDb2xvckFjY2Vzc29yPERhdHVtPiB8IENvbG9yQWNjZXNzb3I8RGF0dW1bXT5cblxuICAvKiogU2NhbGUgZm9yIFggZGltZW5zaW9uLCBlLmcuIFNjYWxlLnNjYWxlTGluZWFyKCkuIElmIHlvdSBzZXQgeFNjYWxlIHlvdSdsbCBiZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyBpdCdzIGBkb21haW5gIGFuZCBgcmFuZ2VgIGFzIHdlbGwuXG4gICAqIE9ubHkgY29udGludW91cyBzY2FsZXMgYXJlIHN1cHBvcnRlZC5cbiAgICogRGVmYXVsdDogYHVuZGVmaW5lZGAgKi9cbiAgQElucHV0KCkgeFNjYWxlPzogQ29udGludW91c1NjYWxlXG5cbiAgLyoqIFNjYWxlIGZvciBZIGRpbWVuc2lvbiwgZS5nLiBTY2FsZS5zY2FsZUxpbmVhcigpLiBJZiB5b3Ugc2V0IHlTY2FsZSB5b3UnbGwgYmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgaXQncyBgZG9tYWluYCBhbmQgYHJhbmdlYCBhcyB3ZWxsLlxuICAgKiBPbmx5IGNvbnRpbnVvdXMgc2NhbGVzIGFyZSBzdXBwb3J0ZWQuXG4gICAqIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHlTY2FsZT86IENvbnRpbnVvdXNTY2FsZVxuXG4gIC8qKiBJZGVudGlmaWVzIHdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBvdmVyYWxsIFggYW5kIFkgZG9tYWluIGNhbGN1bGF0aW9ucyBvciBub3QuXG4gICAqIFRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHBhc3MgaW5kaXZpZHVhbCBkYXRhIHRvIGEgY29tcG9uZW50IGFuZCB5b3UgZG9uJ3Qgd2FudCBpdCB0byBhZmZlY3RcbiAgICogdGhlIHNjYWxlcyBvZiB0aGUgY2hhcnQuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAgKi9cbiAgQElucHV0KCkgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbj86IGJvb2xlYW5cblxuICAvKiogU2VwYXJhdGUgYXJyYXkgb2YgYWNjZXNzb3JzIGZvciBzdGFja2VkIGNvbXBvbmVudHMgKGVnIFN0YWNrZWRCYXIsIEFyZWEpLiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSB5U3RhY2tlZD86IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5bXVxuXG4gIC8qKiBCYXNlbGluZSBhY2Nlc3NvciBmdW5jdGlvbiBmb3Igc3RhY2tlZCB2YWx1ZXMsIHVzZWZ1bCB3aXRoIHN0YWNrZWQgYXJlYXMuIERlZmF1bHQ6IGBudWxsYCAqL1xuICBASW5wdXQoKSBiYXNlbGluZT86IE51bWVyaWNBY2Nlc3NvcjxEYXR1bT5cblxuICAvKiogQW4gaW5zdGFuY2Ugb2YgdGhlIFRvb2x0aXAgY29tcG9uZW50IHRvIGJlIHVzZWQgd2l0aCBDcm9zc2hhaXIuIERlZmF1bHQ6IGB1bmRlZmluZWRgICovXG4gIEBJbnB1dCgpIHRvb2x0aXA/OiBUb29sdGlwIHwgdW5kZWZpbmVkXG5cbiAgLyoqIFRvb2x0aXAgdGVtcGxhdGUgYWNjZXNzb3IuIFRoZSBmdW5jdGlvbiBpcyBzdXBwb3NlZCB0byByZXR1cm4gZWl0aGVyIGEgdmFsaWQgSFRNTCBzdHJpbmcgb3IgYW4gSFRNTEVsZW1lbnQuIERlZmF1bHQ6IGBkID0+ICcnYCAqL1xuICBASW5wdXQoKSB0ZW1wbGF0ZT86IChkYXRhOiBEYXR1bSwgeDogbnVtYmVyIHwgRGF0ZSkgPT4gc3RyaW5nIHwgSFRNTEVsZW1lbnRcblxuICAvKiogSGlkZSBDcm9zc2hhaXIgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGlzIGZhciBmcm9tIG1vdXNlIHBvaW50ZXIuIERlZmF1bHQ6IGB0cnVlYCAqL1xuICBASW5wdXQoKSBoaWRlV2hlbkZhckZyb21Qb2ludGVyPzogYm9vbGVhblxuXG4gIC8qKiBEaXN0YW5jZSBpbiBwaXhlbHMgdG8gY2hlY2sgaW4gdGhlIGhpZGVXaGVuRmFyRnJvbVBvaW50ZXIgY29uZGl0aW9uLiBEZWZhdWx0OiBgMTAwYCAqL1xuICBASW5wdXQoKSBoaWRlV2hlbkZhckZyb21Qb2ludGVyRGlzdGFuY2U/OiBudW1iZXJcblxuICAvKiogU25hcCB0byB0aGUgbmVhcmVzdCBkYXRhIHBvaW50LlxuICAgKiBJZiBkaXNhYmxlZCwgdGhlIHRvb2x0aXAgdGVtcGxhdGUgd2lsbCByZWNlaXZlIG9ubHkgdGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIGNyb3NzaGFpciBhbmQgeW91J2xsIGJlIHJlc3BvbnNpYmxlXG4gICAqIGZvciBnZXR0aW5nIHRoZSB1bmRlcmx5aW5nIGRhdGEgcmVjb3JkcyBhbmQgY3Jvc3NoYWlyIGNpcmNsZXMgKHNlZSB0aGUgYGdldENpcmNsZXNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uKS5cbiAgICogRGVmYXVsdDogYHRydWVgICovXG4gIEBJbnB1dCgpIHNuYXBUb0RhdGE/OiBib29sZWFuXG5cbiAgLyoqIEN1c3RvbSBmdW5jdGlvbiBmb3Igc2V0dGluZyB1cCB0aGUgY3Jvc3NoYWlyIGNpcmNsZXMsIHVzdWFsbHkgbmVlZGVkIHdoZW4gYHNuYXBUb0RhdGFgIGlzIHNldCB0byBgZmFsc2VgLlxuICAgKiBUaGUgZnVuY3Rpb24gcmVjZWl2ZXMgdGhlIGhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIGNyb3NzaGFpciAoaW4gdGhlIGRhdGEgc3BhY2UsIG5vdCBpbiBwaXhlbHMpLCB0aGUgZGF0YSBhcnJheVxuICAgKiBhbmQgdGhlIGB5U2NhbGVgIGluc3RhbmNlIHRvIGhlbHAgeW91IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgY2lyY2xlcy5cbiAgICogSXQgaGFzIHRvIHJldHVybiBhbiBhcnJheSBvZiB0aGUgQ3Jvc3NoYWlyQ2lyY2xlIG9iamVjdHM6IGB7IHk6IG51bWJlcjsgY29sb3I6IHN0cmluZzsgb3BhY2l0eT86IG51bWJlciB9W11gLlxuICAgKiBEZWZhdWx0OiBgdW5kZWZpbmVkYCAqL1xuICBASW5wdXQoKSBnZXRDaXJjbGVzPzogKHg6IG51bWJlciwgZGF0YTogRGF0dW1bXSwgeVNjYWxlOiBDb250aW51b3VzU2NhbGUpID0+IENyb3NzaGFpckNpcmNsZVtdXG4gIEBJbnB1dCgpIGRhdGE6IERhdHVtW11cblxuICBjb21wb25lbnQ6IENyb3NzaGFpcjxEYXR1bT4gfCB1bmRlZmluZWRcbiAgcHVibGljIGNvbXBvbmVudENvbnRhaW5lcjogQ29udGFpbmVyQ29yZSB8IHVuZGVmaW5lZFxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCAoKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBuZXcgQ3Jvc3NoYWlyPERhdHVtPih0aGlzLmdldENvbmZpZygpKVxuXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgdGhpcy5jb21wb25lbnQuc2V0RGF0YSh0aGlzLmRhdGEpXG4gICAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ucmVuZGVyKClcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyAoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHsgdGhpcy5jb21wb25lbnQ/LnNldERhdGEodGhpcy5kYXRhKSB9XG4gICAgdGhpcy5jb21wb25lbnQ/LnNldENvbmZpZyh0aGlzLmdldENvbmZpZygpKVxuICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5yZW5kZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25maWcgKCk6IENyb3NzaGFpckNvbmZpZ0ludGVyZmFjZTxEYXR1bT4ge1xuICAgIGNvbnN0IHsgZHVyYXRpb24sIGV2ZW50cywgYXR0cmlidXRlcywgeCwgeSwgaWQsIGNvbG9yLCB4U2NhbGUsIHlTY2FsZSwgZXhjbHVkZUZyb21Eb21haW5DYWxjdWxhdGlvbiwgeVN0YWNrZWQsIGJhc2VsaW5lLCB0b29sdGlwLCB0ZW1wbGF0ZSwgaGlkZVdoZW5GYXJGcm9tUG9pbnRlciwgaGlkZVdoZW5GYXJGcm9tUG9pbnRlckRpc3RhbmNlLCBzbmFwVG9EYXRhLCBnZXRDaXJjbGVzIH0gPSB0aGlzXG4gICAgY29uc3QgY29uZmlnID0geyBkdXJhdGlvbiwgZXZlbnRzLCBhdHRyaWJ1dGVzLCB4LCB5LCBpZCwgY29sb3IsIHhTY2FsZSwgeVNjYWxlLCBleGNsdWRlRnJvbURvbWFpbkNhbGN1bGF0aW9uLCB5U3RhY2tlZCwgYmFzZWxpbmUsIHRvb2x0aXAsIHRlbXBsYXRlLCBoaWRlV2hlbkZhckZyb21Qb2ludGVyLCBoaWRlV2hlbkZhckZyb21Qb2ludGVyRGlzdGFuY2UsIHNuYXBUb0RhdGEsIGdldENpcmNsZXMgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpIGFzIChrZXlvZiBDcm9zc2hhaXJDb25maWdJbnRlcmZhY2U8RGF0dW0+KVtdXG4gICAga2V5cy5mb3JFYWNoKGtleSA9PiB7IGlmIChjb25maWdba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgY29uZmlnW2tleV0gfSlcblxuICAgIHJldHVybiBjb25maWdcbiAgfVxufVxuIl19