@syncfusion/ej2-angular-charts 31.2.18 → 32.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,33 +6,33 @@
6
6
 
7
7
  #### Bug Fixes
8
8
 
9
- - `#I774573` - Now, the column chart is rendered properly with `columnWidthInPixel` when rendered with column.
10
-
11
- ## 31.2.9 (2025-12-09)
9
+ - `#I788505` - Hovering over the scatter chart in the spreadsheet now does not throw a console error.
12
10
 
13
- ### Chart
11
+ ### Charts
14
12
 
15
- #### Bug Fixes
13
+ #### Feature
16
14
 
17
- - `#I788505` - Hovering over the scatter chart in the spreadsheet now does not throw a console error.
15
+ - Users can now use the `noDataTemplate` property in Charts to define a custom template that clearly indicates when chart data is unavailable.
16
+ Explore the demo [here](https://ej2.syncfusion.com/angular/demos/#/tailwind3/chart/no-data-template)
18
17
 
19
- ## 31.2.8 (2025-12-02)
18
+ #### Bug Fixes
20
19
 
21
- ### Chart
20
+ - `#T745980` - The legend text trim tooltip will no longer be cropped at the bottom of the legend bounds.
21
+ - `#T754125` - The marker will no longer render when it exceeds the axis range.
22
22
 
23
- #### Bug Fixes
23
+ ### Accumulation Chart
24
24
 
25
- - `#I784564` - The chart is now updated properly after removing the multilevel label.
25
+ #### Feature
26
26
 
27
- ## 31.2.7 (2025-11-25)
27
+ - Users can now use the `noDataTemplate` property in Accumulation Chart to define a custom template that clearly indicates when chart data is unavailable.
28
28
 
29
- ### Chart
29
+ ### Stock Chart
30
30
 
31
- #### Bug Fixes
31
+ #### Feature
32
32
 
33
- - `#F71059` - Polar range column now display properly even when the low and high values are the same.
33
+ - Users can now use the `noDataTemplate` property in Stock Chart to define a custom template that clearly indicates when chart data is unavailable.
34
34
 
35
- ## 31.2.6 (2025-11-18)
35
+ ## 31.2.6 (2025-12-02)
36
36
 
37
37
  ### Chart
38
38
 
@@ -73,10 +73,6 @@
73
73
  - `#I770538` - Axis label colors were updated for dark and high-contrast themes to improve visibility.
74
74
  - `#I774667` - The console error will no longer occur when hovering over the trendline legend text.
75
75
 
76
- #### Breaking Changes
77
-
78
- - The axis label color was updated to `#FFFFFFE6` for the dark theme and `#FFFFFF` for the high contrast theme.
79
-
80
76
  ## 31.2.2 (2025-10-15)
81
77
 
82
78
  ### Chart
@@ -143,14 +139,14 @@
143
139
 
144
140
  #### Bug Fixes
145
141
 
146
- - `#F69182` - Columns with a single X-axis value now render with the correct width.
142
+ - `#FB69182` - Columns with a single X-axis value now render with the correct width.
147
143
  - `#I762508` - The legend highlight now works correctly when the highlight mode is set to `Series`.
148
144
  - `#I760409` - The Zoom toolbar tooltip will be displayed on the pop-up.
149
145
  - `#I762919` - The sparkline tooltip renders properly on enabling RTL.
150
146
 
151
147
  ## 31.1.18 (2025-09-10)
152
148
 
153
- ### Chart
149
+ ### Charts
154
150
 
155
151
  #### Bug Fixes
156
152
 
@@ -161,7 +157,33 @@
161
157
 
162
158
  #### Bug Fixes
163
159
 
164
- - `#T756018` - The axis label tooltip text now renders correctly without being trimmed.
160
+ - `#I756018` - The axis label tooltip text now renders correctly without being trimmed
161
+
162
+ ## 31.1.17 (2025-09-05)
163
+
164
+ ### Charts
165
+
166
+ #### Feature
167
+
168
+ - Users can now use the `noDataTemplate` property in Charts to define a custom template that clearly indicates when chart data is unavailable.
169
+ Explore the demo [here](https://ej2.syncfusion.com/angular/demos/#/tailwind3/chart/no-data-template)
170
+
171
+ #### Bug Fixes
172
+
173
+ - `#I745980` - The legend text trim tooltip will no longer be cropped at the bottom of the legend bounds.
174
+ - `#I754125` - The marker will no longer render when it exceeds the axis range.
175
+
176
+ ### Accumulation Chart
177
+
178
+ #### Feature
179
+
180
+ - Users can now use the `noDataTemplate` property in Accumulation Chart to define a custom template that clearly indicates when chart data is unavailable.
181
+
182
+ ### Stock Chart
183
+
184
+ #### Feature
185
+
186
+ - Users can now use the `noDataTemplate` property in Stock Chart to define a custom template that clearly indicates when chart data is unavailable.
165
187
 
166
188
  ## 30.2.6 (2025-08-19)
167
189
 
@@ -3750,29 +3772,4 @@ Graphics (SVG).
3750
3772
  - **Animation** - Chart series will be animated when rendering and refreshing the chart widget.
3751
3773
  - **User Interaction** - Supports interactive features that are zooming, panning, crosshair, trackball, tooltip, and data point selection.
3752
3774
  - **Annotation** - Supports annotation to mark a specific area in chart.
3753
- - **Export** - Supports to print the chart directly from the browser and exports the chart in both JPEG and PNG format.## 31.1.17 (2025-09-05)
3754
-
3755
- ### Charts
3756
-
3757
- #### Feature
3758
-
3759
- - Users can now use the `noDataTemplate` property in Charts to define a custom template that clearly indicates when chart data is unavailable.
3760
- Explore the demo [here](https://ej2.syncfusion.com/angular/demos/#/tailwind3/chart/no-data-template)
3761
-
3762
- #### Bug Fixes
3763
-
3764
- - `#T745980` - The legend text trim tooltip will no longer be cropped at the bottom of the legend bounds.
3765
- - `#T754125` - The marker will no longer render when it exceeds the axis range.
3766
-
3767
- ### Accumulation Chart
3768
-
3769
- #### Feature
3770
-
3771
- - Users can now use the `noDataTemplate` property in Accumulation Chart to define a custom template that clearly indicates when chart data is unavailable.
3772
-
3773
- ### Stock Chart
3774
-
3775
- #### Feature
3776
-
3777
- - Users can now use the `noDataTemplate` property in Stock Chart to define a custom template that clearly indicates when chart data is unavailable.
3778
-
3775
+ - **Export** - Supports to print the chart directly from the browser and exports the chart in both JPEG and PNG format.
@@ -3,7 +3,7 @@ import { ComplexBase, ArrayBase, setValue } from '@syncfusion/ej2-angular-base';
3
3
  import { StripLinesDirective } from './striplines.directive';
4
4
  import { MultiLevelLabelsDirective } from './multilevellabels.directive';
5
5
  import * as i0 from "@angular/core";
6
- let input = ['border', 'coefficient', 'columnIndex', 'crossesAt', 'crossesInAxis', 'crosshairTooltip', 'description', 'desiredIntervals', 'edgeLabelPlacement', 'enableAutoIntervalOnZooming', 'enableScrollbarOnZooming', 'enableTrim', 'enableWrap', 'interval', 'intervalType', 'isIndexed', 'isInversed', 'labelFormat', 'labelIntersectAction', 'labelPadding', 'labelPlacement', 'labelPosition', 'labelRotation', 'labelStyle', 'lineBreakAlignment', 'lineStyle', 'logBase', 'majorGridLines', 'majorTickLines', 'maximum', 'maximumLabelWidth', 'maximumLabels', 'minimum', 'minorGridLines', 'minorTickLines', 'minorTicksPerInterval', 'multiLevelLabels', 'name', 'opposedPosition', 'placeNextToAxisLine', 'plotOffset', 'plotOffsetBottom', 'plotOffsetLeft', 'plotOffsetRight', 'plotOffsetTop', 'rangePadding', 'rowIndex', 'scrollbarSettings', 'skeleton', 'skeletonType', 'span', 'startAngle', 'startFromZero', 'stripLines', 'tabIndex', 'tickPosition', 'title', 'titlePadding', 'titleRotation', 'titleStyle', 'valueType', 'visible', 'zoomFactor', 'zoomPosition'];
6
+ let input = ['border', 'coefficient', 'columnIndex', 'crossesAt', 'crossesInAxis', 'crosshairTooltip', 'description', 'desiredIntervals', 'edgeLabelPlacement', 'enableAutoIntervalOnZooming', 'enableScrollbarOnZooming', 'enableTrim', 'enableWrap', 'interval', 'intervalType', 'isIndexed', 'isInversed', 'labelFormat', 'labelIntersectAction', 'labelPadding', 'labelPlacement', 'labelPosition', 'labelRotation', 'labelStyle', 'labelTemplate', 'lineBreakAlignment', 'lineStyle', 'logBase', 'majorGridLines', 'majorTickLines', 'maximum', 'maximumLabelWidth', 'maximumLabels', 'minimum', 'minorGridLines', 'minorTickLines', 'minorTicksPerInterval', 'multiLevelLabels', 'name', 'opposedPosition', 'placeNextToAxisLine', 'plotOffset', 'plotOffsetBottom', 'plotOffsetLeft', 'plotOffsetRight', 'plotOffsetTop', 'rangePadding', 'rowIndex', 'scrollbarSettings', 'skeleton', 'skeletonType', 'span', 'startAngle', 'startFromZero', 'stripLines', 'tabIndex', 'tickPosition', 'title', 'titlePadding', 'titleRotation', 'titleStyle', 'valueType', 'visible', 'zoomFactor', 'zoomPosition'];
7
7
  let outputs = [];
8
8
  /**
9
9
  * Axis Directive
@@ -22,7 +22,7 @@ export class AxisDirective extends ComplexBase {
22
22
  }
23
23
  }
24
24
  AxisDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxisDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
25
- AxisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AxisDirective, selector: "e-axes>e-axis", inputs: { border: "border", coefficient: "coefficient", columnIndex: "columnIndex", crossesAt: "crossesAt", crossesInAxis: "crossesInAxis", crosshairTooltip: "crosshairTooltip", description: "description", desiredIntervals: "desiredIntervals", edgeLabelPlacement: "edgeLabelPlacement", enableAutoIntervalOnZooming: "enableAutoIntervalOnZooming", enableScrollbarOnZooming: "enableScrollbarOnZooming", enableTrim: "enableTrim", enableWrap: "enableWrap", interval: "interval", intervalType: "intervalType", isIndexed: "isIndexed", isInversed: "isInversed", labelFormat: "labelFormat", labelIntersectAction: "labelIntersectAction", labelPadding: "labelPadding", labelPlacement: "labelPlacement", labelPosition: "labelPosition", labelRotation: "labelRotation", labelStyle: "labelStyle", lineBreakAlignment: "lineBreakAlignment", lineStyle: "lineStyle", logBase: "logBase", majorGridLines: "majorGridLines", majorTickLines: "majorTickLines", maximum: "maximum", maximumLabelWidth: "maximumLabelWidth", maximumLabels: "maximumLabels", minimum: "minimum", minorGridLines: "minorGridLines", minorTickLines: "minorTickLines", minorTicksPerInterval: "minorTicksPerInterval", multiLevelLabels: "multiLevelLabels", name: "name", opposedPosition: "opposedPosition", placeNextToAxisLine: "placeNextToAxisLine", plotOffset: "plotOffset", plotOffsetBottom: "plotOffsetBottom", plotOffsetLeft: "plotOffsetLeft", plotOffsetRight: "plotOffsetRight", plotOffsetTop: "plotOffsetTop", rangePadding: "rangePadding", rowIndex: "rowIndex", scrollbarSettings: "scrollbarSettings", skeleton: "skeleton", skeletonType: "skeletonType", span: "span", startAngle: "startAngle", startFromZero: "startFromZero", stripLines: "stripLines", tabIndex: "tabIndex", tickPosition: "tickPosition", title: "title", titlePadding: "titlePadding", titleRotation: "titleRotation", titleStyle: "titleStyle", valueType: "valueType", visible: "visible", zoomFactor: "zoomFactor", zoomPosition: "zoomPosition" }, queries: [{ propertyName: "childStripLines", first: true, predicate: StripLinesDirective, descendants: true }, { propertyName: "childMultiLevelLabels", first: true, predicate: MultiLevelLabelsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
25
+ AxisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AxisDirective, selector: "e-axes>e-axis", inputs: { border: "border", coefficient: "coefficient", columnIndex: "columnIndex", crossesAt: "crossesAt", crossesInAxis: "crossesInAxis", crosshairTooltip: "crosshairTooltip", description: "description", desiredIntervals: "desiredIntervals", edgeLabelPlacement: "edgeLabelPlacement", enableAutoIntervalOnZooming: "enableAutoIntervalOnZooming", enableScrollbarOnZooming: "enableScrollbarOnZooming", enableTrim: "enableTrim", enableWrap: "enableWrap", interval: "interval", intervalType: "intervalType", isIndexed: "isIndexed", isInversed: "isInversed", labelFormat: "labelFormat", labelIntersectAction: "labelIntersectAction", labelPadding: "labelPadding", labelPlacement: "labelPlacement", labelPosition: "labelPosition", labelRotation: "labelRotation", labelStyle: "labelStyle", labelTemplate: "labelTemplate", lineBreakAlignment: "lineBreakAlignment", lineStyle: "lineStyle", logBase: "logBase", majorGridLines: "majorGridLines", majorTickLines: "majorTickLines", maximum: "maximum", maximumLabelWidth: "maximumLabelWidth", maximumLabels: "maximumLabels", minimum: "minimum", minorGridLines: "minorGridLines", minorTickLines: "minorTickLines", minorTicksPerInterval: "minorTicksPerInterval", multiLevelLabels: "multiLevelLabels", name: "name", opposedPosition: "opposedPosition", placeNextToAxisLine: "placeNextToAxisLine", plotOffset: "plotOffset", plotOffsetBottom: "plotOffsetBottom", plotOffsetLeft: "plotOffsetLeft", plotOffsetRight: "plotOffsetRight", plotOffsetTop: "plotOffsetTop", rangePadding: "rangePadding", rowIndex: "rowIndex", scrollbarSettings: "scrollbarSettings", skeleton: "skeleton", skeletonType: "skeletonType", span: "span", startAngle: "startAngle", startFromZero: "startFromZero", stripLines: "stripLines", tabIndex: "tabIndex", tickPosition: "tickPosition", title: "title", titlePadding: "titlePadding", titleRotation: "titleRotation", titleStyle: "titleStyle", valueType: "valueType", visible: "visible", zoomFactor: "zoomFactor", zoomPosition: "zoomPosition" }, queries: [{ propertyName: "childStripLines", first: true, predicate: StripLinesDirective, descendants: true }, { propertyName: "childMultiLevelLabels", first: true, predicate: MultiLevelLabelsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxisDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
@@ -55,4 +55,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
55
55
  },
56
56
  }]
57
57
  }], ctorParameters: function () { return []; } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvYXhlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFekUsSUFBSSxLQUFLLEdBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN0aUMsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO0FBQzNCOzs7OztHQUtHO0FBVUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxXQUEwQjtJQThXekQsWUFBb0IsZ0JBQWlDO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBRFEscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQXpXOUMsU0FBSSxHQUFhLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUEyV3ZELFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7OzBHQW5YUSxhQUFhOzhGQUFiLGFBQWEsNGdFQUpnQixtQkFBbUIsd0ZBQ2IseUJBQXlCOzJGQUc1RCxhQUFhO2tCQVR6QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixNQUFNLEVBQUUsS0FBSztvQkFDYixPQUFPLEVBQUUsT0FBTztvQkFDaEIsT0FBTyxFQUFFO3dCQUNMLGVBQWUsRUFBRSxJQUFJLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQzt3QkFDdEQscUJBQXFCLEVBQUUsSUFBSSxZQUFZLENBQUMseUJBQXlCLENBQUM7cUJBQ3JFO2lCQUNKOztBQXVYRDs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQXdCO0lBQ3ZEO1FBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUM7OzBHQUhRLGFBQWE7OEZBQWIsYUFBYSxpRkFIWSxhQUFhOzJGQUd0QyxhQUFhO2tCQU56QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLE9BQU8sRUFBRTt3QkFDTCxRQUFRLEVBQUUsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDO3FCQUMvQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgVmlld0NvbnRhaW5lclJlZiwgQ29udGVudENoaWxkcmVuLCBDb250ZW50Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBsZXhCYXNlLCBBcnJheUJhc2UsIHNldFZhbHVlIH0gZnJvbSAnQHN5bmNmdXNpb24vZWoyLWFuZ3VsYXItYmFzZSc7XG5cbmltcG9ydCB7IFN0cmlwTGluZXNEaXJlY3RpdmUgfSBmcm9tICcuL3N0cmlwbGluZXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IE11bHRpTGV2ZWxMYWJlbHNEaXJlY3RpdmUgfSBmcm9tICcuL211bHRpbGV2ZWxsYWJlbHMuZGlyZWN0aXZlJztcblxubGV0IGlucHV0OiBzdHJpbmdbXSA9IFsnYm9yZGVyJywgJ2NvZWZmaWNpZW50JywgJ2NvbHVtbkluZGV4JywgJ2Nyb3NzZXNBdCcsICdjcm9zc2VzSW5BeGlzJywgJ2Nyb3NzaGFpclRvb2x0aXAnLCAnZGVzY3JpcHRpb24nLCAnZGVzaXJlZEludGVydmFscycsICdlZGdlTGFiZWxQbGFjZW1lbnQnLCAnZW5hYmxlQXV0b0ludGVydmFsT25ab29taW5nJywgJ2VuYWJsZVNjcm9sbGJhck9uWm9vbWluZycsICdlbmFibGVUcmltJywgJ2VuYWJsZVdyYXAnLCAnaW50ZXJ2YWwnLCAnaW50ZXJ2YWxUeXBlJywgJ2lzSW5kZXhlZCcsICdpc0ludmVyc2VkJywgJ2xhYmVsRm9ybWF0JywgJ2xhYmVsSW50ZXJzZWN0QWN0aW9uJywgJ2xhYmVsUGFkZGluZycsICdsYWJlbFBsYWNlbWVudCcsICdsYWJlbFBvc2l0aW9uJywgJ2xhYmVsUm90YXRpb24nLCAnbGFiZWxTdHlsZScsICdsaW5lQnJlYWtBbGlnbm1lbnQnLCAnbGluZVN0eWxlJywgJ2xvZ0Jhc2UnLCAnbWFqb3JHcmlkTGluZXMnLCAnbWFqb3JUaWNrTGluZXMnLCAnbWF4aW11bScsICdtYXhpbXVtTGFiZWxXaWR0aCcsICdtYXhpbXVtTGFiZWxzJywgJ21pbmltdW0nLCAnbWlub3JHcmlkTGluZXMnLCAnbWlub3JUaWNrTGluZXMnLCAnbWlub3JUaWNrc1BlckludGVydmFsJywgJ211bHRpTGV2ZWxMYWJlbHMnLCAnbmFtZScsICdvcHBvc2VkUG9zaXRpb24nLCAncGxhY2VOZXh0VG9BeGlzTGluZScsICdwbG90T2Zmc2V0JywgJ3Bsb3RPZmZzZXRCb3R0b20nLCAncGxvdE9mZnNldExlZnQnLCAncGxvdE9mZnNldFJpZ2h0JywgJ3Bsb3RPZmZzZXRUb3AnLCAncmFuZ2VQYWRkaW5nJywgJ3Jvd0luZGV4JywgJ3Njcm9sbGJhclNldHRpbmdzJywgJ3NrZWxldG9uJywgJ3NrZWxldG9uVHlwZScsICdzcGFuJywgJ3N0YXJ0QW5nbGUnLCAnc3RhcnRGcm9tWmVybycsICdzdHJpcExpbmVzJywgJ3RhYkluZGV4JywgJ3RpY2tQb3NpdGlvbicsICd0aXRsZScsICd0aXRsZVBhZGRpbmcnLCAndGl0bGVSb3RhdGlvbicsICd0aXRsZVN0eWxlJywgJ3ZhbHVlVHlwZScsICd2aXNpYmxlJywgJ3pvb21GYWN0b3InLCAnem9vbVBvc2l0aW9uJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogQXhpcyBEaXJlY3RpdmVcbiAqIGBgYGh0bWxcbiAqIDxlLWF4ZXM+PGUtYXhpcz48L2UtYXhpcz48L2UtYXhlcz5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2UtYXhlcz5lLWF4aXMnLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZFN0cmlwTGluZXM6IG5ldyBDb250ZW50Q2hpbGQoU3RyaXBMaW5lc0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZE11bHRpTGV2ZWxMYWJlbHM6IG5ldyBDb250ZW50Q2hpbGQoTXVsdGlMZXZlbExhYmVsc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEF4aXNEaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxBeGlzRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuICAgIHB1YmxpYyBjaGlsZFN0cmlwTGluZXM6IGFueTtcbiAgICBwdWJsaWMgY2hpbGRNdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydzdHJpcExpbmVzJywgJ211bHRpTGV2ZWxMYWJlbHMnXTtcbiAgICAvKiogXG4gICAgICogQ29uZmlndXJlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYm9yZGVyIGFyb3VuZCBtdWx0aS1sZXZlbCBsYWJlbHMsIGluY2x1ZGluZyB0aGUgY29sb3IsIHdpZHRoLCBhbmQgdHlwZSBvZiB0aGUgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBib3JkZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGBjb2VmZmljaWVudGAgdmFsdWUgYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUgcG9sYXIgcmFkYXIgY2hhcnQncyByYWRpdXMuIEEgaGlnaGVyIHZhbHVlIGluY3JlYXNlcyB0aGUgcmFkaXVzIHNpemUsIHdoaWxlIGEgc21hbGxlciB2YWx1ZSBkZWNyZWFzZXMgaXQuXG4gICAgICogQGRlZmF1bHQgMTAwXG4gICAgICovXG4gICAgcHVibGljIGNvZWZmaWNpZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIGNvbHVtbiB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYGNvbHVtbnNgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIGNvbHVtbkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdmFsdWUgYXQgd2hpY2ggdGhlIGF4aXMgbGluZSBpbnRlcnNlY3RzIHdpdGggdGhlIHZlcnRpY2FsIGF4aXMgb3IgdmljZSB2ZXJzYS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzZXNBdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGF4aXMgd2l0aCB3aGljaCB0aGUgYXhpcyBsaW5lIHNob3VsZCBpbnRlcnNlY3QuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjcm9zc2VzSW5BeGlzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIGFuZCBiZWhhdmlvciBvZiB0aGUgY3Jvc3NoYWlyIHRvb2x0aXAgdGhhdCBhcHBlYXJzIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgY2hhcnQuXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzaGFpclRvb2x0aXA6IGFueTtcbiAgICAvKiogXG4gICAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGF4aXMgdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGl0cyBjb250ZW50IGZvciBzY3JlZW4gcmVhZGVycy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZGVzaXJlZEludGVydmFsc2AgcHJvcGVydHkgYWxsb3dzIHRoZSBheGlzIHRvIGNhbGN1bGF0ZSBpbnRlcnZhbHMgdGhhdCBhcmUgcm91Z2hseSBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciwgcHJvbW90aW5nIGEgbW9yZSByZWFkYWJsZSBhbmQgZXZlbmx5IHNwYWNlZCBheGlzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwZGVmYXVsdHZhbHVlaWdub3JlIFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNpcmVkSW50ZXJ2YWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZWRnZUxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBlbnN1cmVzIHRoYXQgbGFiZWxzIHBvc2l0aW9uZWQgYXQgdGhlIGVkZ2VzIG9mIHRoZSBheGlzIGRvIG5vdCBvdmVybGFwIHdpdGggdGhlIGF4aXMgYm91bmRhcmllcyBvciBvdGhlciBjaGFydCBlbGVtZW50cywgb2ZmZXJpbmcgc2V2ZXJhbCBvcHRpb25zIHRvIGltcHJvdmUgY2hhcnQgcmVhZGFiaWxpdHkgYnkgbWFuYWdpbmcgZWRnZSBsYWJlbHMgZWZmZWN0aXZlbHkuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBOb25lOiBObyBhY3Rpb24gd2lsbCBiZSBwZXJmb3JtZWQgb24gZWRnZSBsYWJlbHMuIFxuICAgICAqICogSGlkZTogRWRnZSBsYWJlbHMgd2lsbCBiZSBoaWRkZW4gdG8gcHJldmVudCBvdmVybGFwLiBcbiAgICAgKiAqIFNoaWZ0OiBFZGdlIGxhYmVscyB3aWxsIGJlIHNoaWZ0ZWQgdG8gZml0IHdpdGhpbiB0aGUgYXhpcyBib3VuZHMgd2l0aG91dCBvdmVybGFwcGluZy5cbiAgICAgKiBAZGVmYXVsdCAnU2hpZnQnXG4gICAgICovXG4gICAgcHVibGljIGVkZ2VMYWJlbFBsYWNlbWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgaW50ZXJ2YWwgd2lsbCBiZSBjYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIHpvb21lZCByYW5nZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYSBzY3JvbGxiYXIgd2lsbCBhcHBlYXIgd2hpbGUgem9vbWluZyB0byBoZWxwIG5hdmlnYXRlIHRocm91Z2ggdGhlIHpvb21lZCBjb250ZW50LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlU2Nyb2xsYmFyT25ab29taW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCBheGlzIGxhYmVscyB3aWxsIGJlIHRyaW1tZWQgYmFzZWQgb24gdGhlIGBtYXhpbXVtTGFiZWxXaWR0aGAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlVHJpbTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXhpcyBsYWJlbHMgc2hvdWxkIGJlIHdyYXBwZWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBgbWF4aW11bUxhYmVsV2lkdGhgLiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBheGlzIGxhYmVscyB3aWxsIGF1dG9tYXRpY2FsbHkgd3JhcCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgd2lkdGggZGVmaW5lZCBieSBgbWF4aW11bUxhYmVsV2lkdGhgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZVdyYXA6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnRlcnZhbCBmb3IgdGhlIGF4aXMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgaW50ZXJ2YWxUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIGhvdyB0aGUgaW50ZXJ2YWxzIG9uIGEgZGF0ZS10aW1lIGF4aXMgYXJlIGNhbGN1bGF0ZWQgYW5kIGRpc3BsYXllZC4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIEF1dG86IEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgaW50ZXJ2YWwgdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSBhbmQgY2hhcnQgc2V0dGluZ3MuIFxuICAgICAqICogWWVhcnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIHllYXJzLiBcbiAgICAgKiAqIE1vbnRoczogU2V0cyB0aGUgaW50ZXJ2YWwgb2YgdGhlIGF4aXMgaW4gbW9udGhzLiBcbiAgICAgKiAqIERheXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGRheXMuIFxuICAgICAqICogSG91cnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGhvdXJzLiBcbiAgICAgKiAqIE1pbnV0ZXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIG1pbnV0ZXMuXG4gICAgICogQGRlZmF1bHQgJ0F1dG8nXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZGF0YSBwb2ludHMgYXJlIHJlbmRlcmVkIGJhc2VkIG9uIHRoZWlyIGluZGV4LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzSW5kZXhlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgd2lsbCBiZSByZW5kZXJlZCBpbiBhbiBpbnZlcnNlZCBtYW5uZXIuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbnZlcnNlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBVc2VkIHRvIGZvcm1hdCB0aGUgYXhpcyBsYWJlbC4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIGdsb2JhbCBzdHJpbmcgZm9ybWF0cyBzdWNoIGFzIGBDYCwgYG4xYCwgYFBgLCBldGMuIFxuICAgICAqIEl0IGFsc28gYWNjZXB0cyBwbGFjZWhvbGRlcnMgbGlrZSBge3ZhbHVlfcKwQ2AsIHdoZXJlIGB7dmFsdWV9YCByZXByZXNlbnRzIHRoZSBheGlzIGxhYmVsIChlLmcuLCAyMMKwQykuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxGb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIGF4aXMgbGFiZWxzIGludGVyc2VjdCB3aXRoIGVhY2ggb3RoZXIuIFxuICAgICAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogTm9uZTogU2hvd3MgYWxsIGxhYmVscyB3aXRob3V0IGFueSBtb2RpZmljYXRpb24uIFxuICAgICAqICogSGlkZTogSGlkZXMgdGhlIGxhYmVsIGlmIGl0IGludGVyc2VjdHMgd2l0aCBhbm90aGVyIGxhYmVsLiBcbiAgICAgKiAqIFRyaW06IFRyaW1zIHRoZSBsYWJlbCB0ZXh0IHRvIGZpdCB3aXRoaW4gdGhlIGF2YWlsYWJsZSBzcGFjZS4gXG4gICAgICogKiBXcmFwOiBXcmFwcyB0aGUgbGFiZWwgdGV4dCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgc3BhY2UuIFxuICAgICAqICogTXVsdGlwbGVSb3dzOiBEaXNwbGF5cyB0aGUgbGFiZWwgdGV4dCBpbiBtdWx0aXBsZSByb3dzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU0NTogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA0NSBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU5MDogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA5MCBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBUcmltXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsSW50ZXJzZWN0QWN0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQYWRkaW5nYCBwcm9wZXJ0eSBhZGp1c3RzIHRoZSBkaXN0YW5jZSB0byBlbnN1cmUgYSBjbGVhciBzcGFjZSBiZXR3ZWVuIHRoZSBheGlzIGxhYmVscyBhbmQgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCA1XG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGFkZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYGxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBjb250cm9scyB3aGVyZSB0aGUgY2F0ZWdvcnkgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogQmV0d2VlblRpY2tzOiBSZW5kZXJzIHRoZSBsYWJlbCBiZXR3ZWVuIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiAqIE9uVGlja3M6IFJlbmRlcnMgdGhlIGxhYmVsIGRpcmVjdGx5IG9uIHRoZSBheGlzIHRpY2tzLlxuICAgICAqIEBkZWZhdWx0ICdCZXR3ZWVuVGlja3MnXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGxhY2VtZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQb3NpdGlvbmAgcHJvcGVydHkgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIGxpbmUuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBJbnNpZGU6IFJlbmRlcnMgdGhlIGxhYmVscyBpbnNpZGUgdGhlIGF4aXMgbGluZS4gXG4gICAgICogKiBPdXRzaWRlOiBSZW5kZXJzIHRoZSBsYWJlbHMgb3V0c2lkZSB0aGUgYXhpcyBsaW5lLlxuICAgICAqIEBkZWZhdWx0ICdPdXRzaWRlJ1xuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBhbmdsZSB0byB3aGljaCB0aGUgYXhpcyBsYWJlbCBnZXRzIHJvdGF0ZWQuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFJvdGF0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoaXMgcHJvcGVydHkgYWxsb3dzIGRlZmluaW5nIHZhcmlvdXMgZm9udCBzZXR0aW5ncyB0byBjb250cm9sIGhvdyB0aGUgbGFiZWxzIGFyZSBkaXNwbGF5ZWQgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogRGV0ZXJtaW5lcyB0aGUgYWxpZ25tZW50IG9mIGxhYmVscyB3aGVuIGEgbGluZSBicmVhayBvY2N1cnMgaW4gdGhlIGF4aXMgbGFiZWxzLlxuICAgICAqIEBkZWZhdWx0ICdDZW50ZXInXG4gICAgICovXG4gICAgcHVibGljIGxpbmVCcmVha0FsaWdubWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgYXhpcyBsaW5lcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbGluZVN0eWxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgYmFzZSB2YWx1ZSBmb3IgYSBsb2dhcml0aG1pYyBheGlzLiBcbiAgICAgKiA+IE5vdGUgdGhhdCBgdmFsdWVUeXBlYCBtdXN0IGJlIHNldCB0byBgTG9nYXJpdGhtaWNgIGZvciB0aGlzIGZlYXR1cmUgdG8gd29yay5cbiAgICAgKiBAZGVmYXVsdCAxMFxuICAgICAqL1xuICAgIHB1YmxpYyBsb2dCYXNlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIG1ham9yIGdyaWQgbGluZXMgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIG1ham9yR3JpZExpbmVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIG1ham9yIHRpY2sgbGluZXMgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIG1ham9yVGlja0xpbmVzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgYXhpcyByYW5nZSwgd2hpY2ggc2V0cyB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIGF4aXMgYW5kIGRlZmluZXMgdGhlIGxhcmdlc3QgdmFsdWUgZGlzcGxheWVkIG9uIHRoZSBjaGFydCwgaGVscGluZyB0byBjb250cm9sIHRoZSB2aXNpYmxlIHJhbmdlIG9mIGRhdGEuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSB3aWR0aCBvZiBhbiBheGlzIGxhYmVsLlxuICAgICAqIEBkZWZhdWx0IDM0LlxuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtTGFiZWxXaWR0aDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGxhYmVscyBwZXIgMTAwIHBpeGVscyByZWxhdGl2ZSB0byB0aGUgYXhpcyBsZW5ndGguXG4gICAgICogQGRlZmF1bHQgM1xuICAgICAqL1xuICAgIHB1YmxpYyBtYXhpbXVtTGFiZWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgYXhpcyByYW5nZSwgd2hpY2ggc2V0cyB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIGF4aXMgYW5kIGRlZmluZXMgdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gdGhlIGNoYXJ0IHRvIGNvbnRyb2wgdGhlIHZpc2libGUgcmFuZ2Ugb2YgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1pbmltdW06IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWlub3IgZ3JpZCBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JHcmlkTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWlub3IgdGljayBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JUaWNrTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgbWlub3IgdGlja3MgcGVyIGludGVydmFsLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgbWlub3JUaWNrc1BlckludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE11bHRpLWxldmVsIGxhYmVscyBhcmUgdXNlZCB0byBkaXNwbGF5IGhpZXJhcmNoaWNhbCBvciBncm91cGVkIGxhYmVscyBvbiB0aGUgYXhpcywgYWxsb3dpbmcgZm9yIGEgbW9yZSBkZXRhaWxlZCBhbmQgc3RydWN0dXJlZCBkYXRhIHJlcHJlc2VudGF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBtdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIGFuIGF4aXMuIFRvIGFzc29jaWF0ZSBhbiBheGlzIHdpdGggYSBzZXJpZXMsIHNldCB0aGlzIG5hbWUgdG8gdGhlIGB4QXhpc05hbWVgIG9yIGB5QXhpc05hbWVgIHByb3BlcnRpZXMgb2YgdGhlIHNlcmllcy5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyBuYW1lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCB0aGUgYXhpcyB3aWxsIHJlbmRlciBvbiB0aGUgb3Bwb3NpdGUgc2lkZSBvZiBpdHMgZGVmYXVsdCBwb3NpdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBvcHBvc2VkUG9zaXRpb246IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHdoZXRoZXIgYXhpcyBlbGVtZW50cywgc3VjaCBhcyBheGlzIGxhYmVscyBhbmQgdGhlIGF4aXMgdGl0bGUsIHNob3VsZCBiZSBjcm9zc2VkIGJ5IHRoZSBheGlzIGxpbmUuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBwbGFjZU5leHRUb0F4aXNMaW5lOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgcGFkZGluZyBvbiB0aGUgdG9wLCBib3R0b20sIGxlZnQgYW5kIHJpZ2h0IHNpZGVzIG9mIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgYm90dG9tIHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0Qm90dG9tOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbGVmdCBwYWRkaW5nIGZvciB0aGUgY2hhcnQgYXJlYSwgaW4gcGl4ZWxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGxvdE9mZnNldExlZnQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSByaWdodCBwYWRkaW5nIGZvciB0aGUgY2hhcnQgYXJlYSwgaW4gcGl4ZWxzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgcGxvdE9mZnNldFJpZ2h0OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdG9wIHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0VG9wOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgcmFuZ2VQYWRkaW5nYCBwcm9wZXJ0eSBkZXRlcm1pbmVzIGhvdyBwYWRkaW5nIGlzIGFwcGxpZWQgdG8gdGhlIGF4aXMgcmFuZ2UsIGFmZmVjdGluZyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgY2hhcnQgYnkgYWRqdXN0aW5nIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiB0aGUgYXhpcy4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIE5vbmU6IE5vIHBhZGRpbmcgaXMgYXBwbGllZCB0byB0aGUgYXhpcy4gXG4gICAgICogKiBOb3JtYWw6IFBhZGRpbmcgaXMgYXBwbGllZCBiYXNlZCBvbiB0aGUgcmFuZ2UgY2FsY3VsYXRpb24uIFxuICAgICAqICogQWRkaXRpb25hbDogVGhlIGludGVydmFsIG9mIHRoZSBheGlzIGlzIGFkZGVkIGFzIHBhZGRpbmcgdG8gYm90aCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgb2YgdGhlIHJhbmdlLiBcbiAgICAgKiAqIFJvdW5kOiBUaGUgYXhpcyByYW5nZSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IHBvc3NpYmxlIHZhbHVlIHRoYXQgaXMgZGl2aXNpYmxlIGJ5IHRoZSBpbnRlcnZhbC5cbiAgICAgKiBAZGVmYXVsdCAnQXV0bydcbiAgICAgKi9cbiAgICBwdWJsaWMgcmFuZ2VQYWRkaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIHJvdyB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYHJvd3NgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHJvd0luZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIENvbmZpZ3VyZXMgdGhlIHNjcm9sbGJhciB3aXRoIG9wdGlvbnMgZm9yIGN1c3RvbWl6YXRpb24sIGluY2x1ZGluZyBhcHBlYXJhbmNlLCBiZWhhdmlvciwgYW5kIGxhenkgbG9hZGluZyBzZXR0aW5ncy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2Nyb2xsYmFyU2V0dGluZ3M6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBza2VsZXRvbiBmb3JtYXQgdXNlZCBmb3IgcHJvY2Vzc2luZyBkYXRlLXRpbWUgdmFsdWVzLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIHNrZWxldG9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgZm9ybWF0IHR5cGUgdG8gYmUgdXNlZCBpbiBkYXRlLXRpbWUgZm9ybWF0dGluZy5cbiAgICAgKiBAZGVmYXVsdCAnRGF0ZVRpbWUnXG4gICAgICogQGRlcHJlY2F0ZWQgXG4gICAgICovXG4gICAgcHVibGljIHNrZWxldG9uVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBgY29sdW1uc2Agb3IgYHJvd3NgIHRoYXQgYW4gYXhpcyBzcGFucyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS5cbiAgICAgKiBAZGVmYXVsdCAxXG4gICAgICovXG4gICAgcHVibGljIHNwYW46IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBzdGFydCBhbmdsZSBmb3IgdGhlIHNlcmllcyBpbiBhIHBvbGFyIG9yIHJhZGFyIGNoYXJ0LCBtZWFzdXJlZCBpbiBkZWdyZWVzIGZyb20gdGhlIGhvcml6b250YWwgYXhpcywgZGV0ZXJtaW5pbmcgdGhlIGluaXRpYWwgYW5nbGUgZnJvbSB3aGljaCB0aGUgc2VyaWVzIGJlZ2lucy5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0QW5nbGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBheGlzIHN0YXJ0cyBmcm9tIHplcm8uIFxuICAgICAqIElmIHNldCB0byBmYWxzZSwgdGhlIGF4aXMgc3RhcnRzIGZyb20gdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGRhdGEuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGFydEZyb21aZXJvOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgY29sbGVjdGlvbiBvZiBzdHJpcCBsaW5lcyBmb3IgdGhlIGF4aXMsIHdoaWNoIGFyZSB2aXN1YWwgZWxlbWVudHMgdXNlZCB0byBtYXJrIG9yIGhpZ2hsaWdodCBzcGVjaWZpYyByYW5nZXMuXG4gICAgICovXG4gICAgcHVibGljIHN0cmlwTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGB0YWJJbmRleGAgdmFsdWUgZm9yIHRoZSBheGlzLCBkZXRlcm1pbmluZyBpdHMgcG9zaXRpb24gaW4gdGhlIHRhYiBvcmRlci5cbiAgICAgKiBAZGVmYXVsdCAyXG4gICAgICovXG4gICAgcHVibGljIHRhYkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgdGlja1Bvc2l0aW9uYCBwcm9wZXJ0eSBkZXRlcm1pbmVzIHdoZXJlIHRoZSBheGlzIHRpY2tzIGFyZSByZW5kZXJlZCBpbiByZWxhdGlvbiB0byB0aGUgYXhpcyBsaW5lLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogSW5zaWRlOiBSZW5kZXJzIHRoZSB0aWNrcyBpbnNpZGUgdGhlIGF4aXMgbGluZS4gXG4gICAgICogKiBPdXRzaWRlOiBSZW5kZXJzIHRoZSB0aWNrcyBvdXRzaWRlIHRoZSBheGlzIGxpbmUuXG4gICAgICogQGRlZmF1bHQgJ091dHNpZGUnXG4gICAgICovXG4gICAgcHVibGljIHRpY2tQb3NpdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHRpdGxlIG9mIGFuIGF4aXMsIGRpc3BsYXllZCBhbG9uZyB0aGUgYXhpcyB0byBwcm92aWRlIGNvbnRleHQgYWJvdXQgdGhlIHJlcHJlc2VudGVkIGRhdGEuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgdGl0bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBwYWRkaW5nIGJldHdlZW4gdGhlIGF4aXMgdGl0bGUgYW5kIHRoZSBheGlzIGxhYmVscy5cbiAgICAgKiBAZGVmYXVsdCA1XG4gICAgICovXG4gICAgcHVibGljIHRpdGxlUGFkZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZWZpbmVzIGFuIGFuZ2xlIGZvciByb3RhdGluZyB0aGUgYXhpcyB0aXRsZS4gQnkgZGVmYXVsdCwgdGhlIGFuZ2xlIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIHBvc2l0aW9uIGFuZCBvcmllbnRhdGlvbiBvZiB0aGUgYXhpcy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHRpdGxlUm90YXRpb246IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGF4aXMgdGl0bGUsIGluY2x1ZGluZyBmb250IGZhbWlseSwgc2l6ZSwgc3R5bGUsIHdlaWdodCwgYW5kIGNvbG9yLlxuICAgICAqL1xuICAgIHB1YmxpYyB0aXRsZVN0eWxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgdmFsdWVUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIHRoZSB0eXBlIG9mIGRhdGEgdGhhdCB0aGUgYXhpcyBjYW4gbWFuYWdlLCBlbnN1cmluZyBjb3JyZWN0IHJlbmRlcmluZyBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLiBUaGlzIHByb3BlcnR5IHN1cHBvcnRzIG11bHRpcGxlIGRhdGEgdHlwZXMsIGVhY2ggc3VpdGVkIGZvciBkaWZmZXJlbnQga2luZHMgb2YgZGF0YSB2aXN1YWxpemF0aW9uLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBpbmNsdWRlOiBcbiAgICAgKiAqIERvdWJsZTogVXNlZCBmb3IgcmVuZGVyaW5nIGEgbnVtZXJpYyBheGlzIHRvIGFjY29tbW9kYXRlIG51bWVyaWMgZGF0YS4gXG4gICAgICogKiBEYXRlVGltZTogVXRpbGl6ZWQgZm9yIHJlbmRlcmluZyBhIGRhdGUtdGltZSBheGlzIHRvIG1hbmFnZSBkYXRlLXRpbWUgZGF0YS4gXG4gICAgICogKiBDYXRlZ29yeTogRW1wbG95ZWQgZm9yIHJlbmRlcmluZyBhIGNhdGVnb3J5IGF4aXMgdG8gbWFuYWdlIGNhdGVnb3JpY2FsIGRhdGEuIFxuICAgICAqICogTG9nYXJpdGhtaWM6IEFwcGxpZWQgZm9yIHJlbmRlcmluZyBhIGxvZ2FyaXRobWljIGF4aXMgdG8gaGFuZGxlIGEgd2lkZSByYW5nZSBvZiB2YWx1ZXMuIFxuICAgICAqICogRGF0ZVRpbWVDYXRlZ29yeTogVXNlZCB0byByZW5kZXIgYSBkYXRlLXRpbWUgY2F0ZWdvcnkgYXhpcyBmb3IgbWFuYWdpbmcgYnVzaW5lc3MgZGF5cy5cbiAgICAgKiBAZGVmYXVsdCAnRG91YmxlJ1xuICAgICAqIEBibGF6b3J0eXBlIFN5bmNmdXNpb24uRUoyLkJsYXpvci5DaGFydHMuVmFsdWVUeXBlXG4gICAgICogQGlzZW51bWVyYXRpb24gdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB2YWx1ZVR5cGU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIGF4aXMgbGFiZWxzIHdpbGwgYmUgdmlzaWJsZSBpbiB0aGUgY2hhcnQuIEJ5IGRlZmF1bHQsIGF4aXMgbGFiZWxzIGFyZSBlbmFibGVkLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmlzaWJsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYXhpcyBpcyBzY2FsZWQgYnkgdGhpcyBmYWN0b3IuIFdoZW4gYHpvb21GYWN0b3JgIGlzIDAuNSwgdGhlIGNoYXJ0IGlzIHNjYWxlZCBieSAyMDAlIGFsb25nIHRoaXMgYXhpcy4gXG4gICAgICogPiBOb3RlIHRoZSB2YWx1ZSByYW5nZXMgZnJvbSAwIHRvIDEuXG4gICAgICogQGRlZmF1bHQgMVxuICAgICAqL1xuICAgIHB1YmxpYyB6b29tRmFjdG9yOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIHRoZSB6b29tZWQgYXhpcyBvbiB0aGUgY2hhcnQsIHdpdGggdGhlIGB6b29tUG9zaXRpb25gIHByb3BlcnR5IHNwZWNpZnlpbmcgdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgem9vbWVkIHJhbmdlLCBmcm9tIDAgKHN0YXJ0KSB0byAxIChlbmQpLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgem9vbVBvc2l0aW9uOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6Vmlld0NvbnRhaW5lclJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICBzZXRWYWx1ZSgnY3VycmVudEluc3RhbmNlJywgdGhpcywgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50cyhvdXRwdXRzKTtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmVQcm9wTGlzdCA9IGlucHV0O1xuICAgIH1cbn1cblxuLyoqXG4gKiBBeGlzIEFycmF5IERpcmVjdGl2ZVxuICogQHByaXZhdGVcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdlanMtY2hhcnQ+ZS1heGVzJyxcbiAgICBxdWVyaWVzOiB7XG4gICAgICAgIGNoaWxkcmVuOiBuZXcgQ29udGVudENoaWxkcmVuKEF4aXNEaXJlY3RpdmUpXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQXhlc0RpcmVjdGl2ZSBleHRlbmRzIEFycmF5QmFzZTxBeGVzRGlyZWN0aXZlPiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdheGVzJyk7XG4gICAgfVxufSJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2hhcnQvYXhlcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0IsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFekUsSUFBSSxLQUFLLEdBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdmpDLElBQUksT0FBTyxHQUFhLEVBQUUsQ0FBQztBQUMzQjs7Ozs7R0FLRztBQVVILE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBMEI7SUFxWXpELFlBQW9CLGdCQUFpQztRQUNqRCxLQUFLLEVBQUUsQ0FBQztRQURRLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFoWTlDLFNBQUksR0FBYSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBa1l2RCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDOzswR0ExWVEsYUFBYTs4RkFBYixhQUFhLDRpRUFKZ0IsbUJBQW1CLHdGQUNiLHlCQUF5QjsyRkFHNUQsYUFBYTtrQkFUekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLE9BQU8sRUFBRTt3QkFDTCxlQUFlLEVBQUUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLENBQUM7d0JBQ3RELHFCQUFxQixFQUFFLElBQUksWUFBWSxDQUFDLHlCQUF5QixDQUFDO3FCQUNyRTtpQkFDSjs7QUE4WUQ7OztHQUdHO0FBT0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUF3QjtJQUN2RDtRQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDOzswR0FIUSxhQUFhOzhGQUFiLGFBQWEsaUZBSFksYUFBYTsyRkFHdEMsYUFBYTtrQkFOekIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixPQUFPLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQztxQkFDL0M7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIFZpZXdDb250YWluZXJSZWYsIENvbnRlbnRDaGlsZHJlbiwgQ29udGVudENoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21wbGV4QmFzZSwgQXJyYXlCYXNlLCBzZXRWYWx1ZSB9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1hbmd1bGFyLWJhc2UnO1xuXG5pbXBvcnQgeyBTdHJpcExpbmVzRGlyZWN0aXZlIH0gZnJvbSAnLi9zdHJpcGxpbmVzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBNdWx0aUxldmVsTGFiZWxzRGlyZWN0aXZlIH0gZnJvbSAnLi9tdWx0aWxldmVsbGFiZWxzLmRpcmVjdGl2ZSc7XG5cbmxldCBpbnB1dDogc3RyaW5nW10gPSBbJ2JvcmRlcicsICdjb2VmZmljaWVudCcsICdjb2x1bW5JbmRleCcsICdjcm9zc2VzQXQnLCAnY3Jvc3Nlc0luQXhpcycsICdjcm9zc2hhaXJUb29sdGlwJywgJ2Rlc2NyaXB0aW9uJywgJ2Rlc2lyZWRJbnRlcnZhbHMnLCAnZWRnZUxhYmVsUGxhY2VtZW50JywgJ2VuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZycsICdlbmFibGVTY3JvbGxiYXJPblpvb21pbmcnLCAnZW5hYmxlVHJpbScsICdlbmFibGVXcmFwJywgJ2ludGVydmFsJywgJ2ludGVydmFsVHlwZScsICdpc0luZGV4ZWQnLCAnaXNJbnZlcnNlZCcsICdsYWJlbEZvcm1hdCcsICdsYWJlbEludGVyc2VjdEFjdGlvbicsICdsYWJlbFBhZGRpbmcnLCAnbGFiZWxQbGFjZW1lbnQnLCAnbGFiZWxQb3NpdGlvbicsICdsYWJlbFJvdGF0aW9uJywgJ2xhYmVsU3R5bGUnLCAnbGFiZWxUZW1wbGF0ZScsICdsaW5lQnJlYWtBbGlnbm1lbnQnLCAnbGluZVN0eWxlJywgJ2xvZ0Jhc2UnLCAnbWFqb3JHcmlkTGluZXMnLCAnbWFqb3JUaWNrTGluZXMnLCAnbWF4aW11bScsICdtYXhpbXVtTGFiZWxXaWR0aCcsICdtYXhpbXVtTGFiZWxzJywgJ21pbmltdW0nLCAnbWlub3JHcmlkTGluZXMnLCAnbWlub3JUaWNrTGluZXMnLCAnbWlub3JUaWNrc1BlckludGVydmFsJywgJ211bHRpTGV2ZWxMYWJlbHMnLCAnbmFtZScsICdvcHBvc2VkUG9zaXRpb24nLCAncGxhY2VOZXh0VG9BeGlzTGluZScsICdwbG90T2Zmc2V0JywgJ3Bsb3RPZmZzZXRCb3R0b20nLCAncGxvdE9mZnNldExlZnQnLCAncGxvdE9mZnNldFJpZ2h0JywgJ3Bsb3RPZmZzZXRUb3AnLCAncmFuZ2VQYWRkaW5nJywgJ3Jvd0luZGV4JywgJ3Njcm9sbGJhclNldHRpbmdzJywgJ3NrZWxldG9uJywgJ3NrZWxldG9uVHlwZScsICdzcGFuJywgJ3N0YXJ0QW5nbGUnLCAnc3RhcnRGcm9tWmVybycsICdzdHJpcExpbmVzJywgJ3RhYkluZGV4JywgJ3RpY2tQb3NpdGlvbicsICd0aXRsZScsICd0aXRsZVBhZGRpbmcnLCAndGl0bGVSb3RhdGlvbicsICd0aXRsZVN0eWxlJywgJ3ZhbHVlVHlwZScsICd2aXNpYmxlJywgJ3pvb21GYWN0b3InLCAnem9vbVBvc2l0aW9uJ107XG5sZXQgb3V0cHV0czogc3RyaW5nW10gPSBbXTtcbi8qKlxuICogQXhpcyBEaXJlY3RpdmVcbiAqIGBgYGh0bWxcbiAqIDxlLWF4ZXM+PGUtYXhpcz48L2UtYXhpcz48L2UtYXhlcz5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2UtYXhlcz5lLWF4aXMnLFxuICAgIGlucHV0czogaW5wdXQsXG4gICAgb3V0cHV0czogb3V0cHV0cywgICAgXG4gICAgcXVlcmllczoge1xuICAgICAgICBjaGlsZFN0cmlwTGluZXM6IG5ldyBDb250ZW50Q2hpbGQoU3RyaXBMaW5lc0RpcmVjdGl2ZSksIFxuICAgICAgICBjaGlsZE11bHRpTGV2ZWxMYWJlbHM6IG5ldyBDb250ZW50Q2hpbGQoTXVsdGlMZXZlbExhYmVsc0RpcmVjdGl2ZSlcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEF4aXNEaXJlY3RpdmUgZXh0ZW5kcyBDb21wbGV4QmFzZTxBeGlzRGlyZWN0aXZlPiB7XG4gICAgcHVibGljIGRpcmVjdGl2ZVByb3BMaXN0OiBhbnk7XG5cdFxuICAgIHB1YmxpYyBjaGlsZFN0cmlwTGluZXM6IGFueTtcbiAgICBwdWJsaWMgY2hpbGRNdWx0aUxldmVsTGFiZWxzOiBhbnk7XG4gICAgcHVibGljIHRhZ3M6IHN0cmluZ1tdID0gWydzdHJpcExpbmVzJywgJ211bHRpTGV2ZWxMYWJlbHMnXTtcbiAgICAvKiogXG4gICAgICogQ29uZmlndXJlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYm9yZGVyIGFyb3VuZCBtdWx0aS1sZXZlbCBsYWJlbHMsIGluY2x1ZGluZyB0aGUgY29sb3IsIHdpZHRoLCBhbmQgdHlwZSBvZiB0aGUgYm9yZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBib3JkZXI6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGBjb2VmZmljaWVudGAgdmFsdWUgYWRqdXN0cyB0aGUgc2l6ZSBvZiB0aGUgcG9sYXIgcmFkYXIgY2hhcnQncyByYWRpdXMuIEEgaGlnaGVyIHZhbHVlIGluY3JlYXNlcyB0aGUgcmFkaXVzIHNpemUsIHdoaWxlIGEgc21hbGxlciB2YWx1ZSBkZWNyZWFzZXMgaXQuXG4gICAgICogQGRlZmF1bHQgMTAwXG4gICAgICovXG4gICAgcHVibGljIGNvZWZmaWNpZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIGNvbHVtbiB3aGVyZSB0aGUgYXhpcyBpcyBhc3NvY2lhdGVkIHdoZW4gdGhlIGNoYXJ0IGFyZWEgaXMgZGl2aWRlZCBpbnRvIG11bHRpcGxlIHBsb3QgYXJlYXMgdXNpbmcgYGNvbHVtbnNgLiBcbiAgICAgKiBcbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIGNvbHVtbkluZGV4OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdmFsdWUgYXQgd2hpY2ggdGhlIGF4aXMgbGluZSBpbnRlcnNlY3RzIHdpdGggdGhlIHZlcnRpY2FsIGF4aXMgb3IgdmljZSB2ZXJzYS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzZXNBdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGF4aXMgd2l0aCB3aGljaCB0aGUgYXhpcyBsaW5lIHNob3VsZCBpbnRlcnNlY3QuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBjcm9zc2VzSW5BeGlzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgdG8gY3VzdG9taXplIHRoZSBhcHBlYXJhbmNlIGFuZCBiZWhhdmlvciBvZiB0aGUgY3Jvc3NoYWlyIHRvb2x0aXAgdGhhdCBhcHBlYXJzIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgY2hhcnQuXG4gICAgICovXG4gICAgcHVibGljIGNyb3NzaGFpclRvb2x0aXA6IGFueTtcbiAgICAvKiogXG4gICAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGF4aXMgdGhhdCBwcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGl0cyBjb250ZW50IGZvciBzY3JlZW4gcmVhZGVycy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZGVzaXJlZEludGVydmFsc2AgcHJvcGVydHkgYWxsb3dzIHRoZSBheGlzIHRvIGNhbGN1bGF0ZSBpbnRlcnZhbHMgdGhhdCBhcmUgcm91Z2hseSBlcXVhbCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciwgcHJvbW90aW5nIGEgbW9yZSByZWFkYWJsZSBhbmQgZXZlbmx5IHNwYWNlZCBheGlzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKiBAYXNwZGVmYXVsdHZhbHVlaWdub3JlIFxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNpcmVkSW50ZXJ2YWxzOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgZWRnZUxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBlbnN1cmVzIHRoYXQgbGFiZWxzIHBvc2l0aW9uZWQgYXQgdGhlIGVkZ2VzIG9mIHRoZSBheGlzIGRvIG5vdCBvdmVybGFwIHdpdGggdGhlIGF4aXMgYm91bmRhcmllcyBvciBvdGhlciBjaGFydCBlbGVtZW50cywgb2ZmZXJpbmcgc2V2ZXJhbCBvcHRpb25zIHRvIGltcHJvdmUgY2hhcnQgcmVhZGFiaWxpdHkgYnkgbWFuYWdpbmcgZWRnZSBsYWJlbHMgZWZmZWN0aXZlbHkuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBOb25lOiBObyBhY3Rpb24gd2lsbCBiZSBwZXJmb3JtZWQgb24gZWRnZSBsYWJlbHMuIFxuICAgICAqICogSGlkZTogRWRnZSBsYWJlbHMgd2lsbCBiZSBoaWRkZW4gdG8gcHJldmVudCBvdmVybGFwLiBcbiAgICAgKiAqIFNoaWZ0OiBFZGdlIGxhYmVscyB3aWxsIGJlIHNoaWZ0ZWQgdG8gZml0IHdpdGhpbiB0aGUgYXhpcyBib3VuZHMgd2l0aG91dCBvdmVybGFwcGluZy5cbiAgICAgKiBAZGVmYXVsdCAnU2hpZnQnXG4gICAgICovXG4gICAgcHVibGljIGVkZ2VMYWJlbFBsYWNlbWVudDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgaW50ZXJ2YWwgd2lsbCBiZSBjYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gdGhlIHpvb21lZCByYW5nZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZUF1dG9JbnRlcnZhbE9uWm9vbWluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYSBzY3JvbGxiYXIgd2lsbCBhcHBlYXIgd2hpbGUgem9vbWluZyB0byBoZWxwIG5hdmlnYXRlIHRocm91Z2ggdGhlIHpvb21lZCBjb250ZW50LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlU2Nyb2xsYmFyT25ab29taW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIElmIHNldCB0byB0cnVlLCBheGlzIGxhYmVscyB3aWxsIGJlIHRyaW1tZWQgYmFzZWQgb24gdGhlIGBtYXhpbXVtTGFiZWxXaWR0aGAuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgZW5hYmxlVHJpbTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXhpcyBsYWJlbHMgc2hvdWxkIGJlIHdyYXBwZWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBgbWF4aW11bUxhYmVsV2lkdGhgLiBcbiAgICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBheGlzIGxhYmVscyB3aWxsIGF1dG9tYXRpY2FsbHkgd3JhcCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgd2lkdGggZGVmaW5lZCBieSBgbWF4aW11bUxhYmVsV2lkdGhgLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGVuYWJsZVdyYXA6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbnRlcnZhbCBmb3IgdGhlIGF4aXMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqIEBhc3BkZWZhdWx0dmFsdWVpZ25vcmUgXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgaW50ZXJ2YWxUeXBlYCBwcm9wZXJ0eSBkZWZpbmVzIGhvdyB0aGUgaW50ZXJ2YWxzIG9uIGEgZGF0ZS10aW1lIGF4aXMgYXJlIGNhbGN1bGF0ZWQgYW5kIGRpc3BsYXllZC4gXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnMgYXJlOiBcbiAgICAgKiAqIEF1dG86IEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgaW50ZXJ2YWwgdHlwZSBiYXNlZCBvbiB0aGUgZGF0YSBhbmQgY2hhcnQgc2V0dGluZ3MuIFxuICAgICAqICogWWVhcnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIHllYXJzLiBcbiAgICAgKiAqIE1vbnRoczogU2V0cyB0aGUgaW50ZXJ2YWwgb2YgdGhlIGF4aXMgaW4gbW9udGhzLiBcbiAgICAgKiAqIERheXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGRheXMuIFxuICAgICAqICogSG91cnM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIGhvdXJzLiBcbiAgICAgKiAqIE1pbnV0ZXM6IFNldHMgdGhlIGludGVydmFsIG9mIHRoZSBheGlzIGluIG1pbnV0ZXMuXG4gICAgICogQGRlZmF1bHQgJ0F1dG8nXG4gICAgICovXG4gICAgcHVibGljIGludGVydmFsVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgZGF0YSBwb2ludHMgYXJlIHJlbmRlcmVkIGJhc2VkIG9uIHRoZWlyIGluZGV4LlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIGlzSW5kZXhlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgd2lsbCBiZSByZW5kZXJlZCBpbiBhbiBpbnZlcnNlZCBtYW5uZXIuXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJbnZlcnNlZDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBVc2VkIHRvIGZvcm1hdCB0aGUgYXhpcyBsYWJlbC4gVGhpcyBwcm9wZXJ0eSBhY2NlcHRzIGdsb2JhbCBzdHJpbmcgZm9ybWF0cyBzdWNoIGFzIGBDYCwgYG4xYCwgYFBgLCBldGMuIFxuICAgICAqIEl0IGFsc28gYWNjZXB0cyBwbGFjZWhvbGRlcnMgbGlrZSBge3ZhbHVlfcKwQ2AsIHdoZXJlIGB7dmFsdWV9YCByZXByZXNlbnRzIHRoZSBheGlzIGxhYmVsIChlLmcuLCAyMMKwQykuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxGb3JtYXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBhY3Rpb24gdG8gdGFrZSB3aGVuIGF4aXMgbGFiZWxzIGludGVyc2VjdCB3aXRoIGVhY2ggb3RoZXIuIFxuICAgICAqIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogTm9uZTogU2hvd3MgYWxsIGxhYmVscyB3aXRob3V0IGFueSBtb2RpZmljYXRpb24uIFxuICAgICAqICogSGlkZTogSGlkZXMgdGhlIGxhYmVsIGlmIGl0IGludGVyc2VjdHMgd2l0aCBhbm90aGVyIGxhYmVsLiBcbiAgICAgKiAqIFRyaW06IFRyaW1zIHRoZSBsYWJlbCB0ZXh0IHRvIGZpdCB3aXRoaW4gdGhlIGF2YWlsYWJsZSBzcGFjZS4gXG4gICAgICogKiBXcmFwOiBXcmFwcyB0aGUgbGFiZWwgdGV4dCB0byBmaXQgd2l0aGluIHRoZSBhdmFpbGFibGUgc3BhY2UuIFxuICAgICAqICogTXVsdGlwbGVSb3dzOiBEaXNwbGF5cyB0aGUgbGFiZWwgdGV4dCBpbiBtdWx0aXBsZSByb3dzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU0NTogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA0NSBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi4gXG4gICAgICogKiBSb3RhdGU5MDogUm90YXRlcyB0aGUgbGFiZWwgdGV4dCBieSA5MCBkZWdyZWVzIHRvIGF2b2lkIGludGVyc2VjdGlvbi5cbiAgICAgKiBAZGVmYXVsdCBUcmltXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsSW50ZXJzZWN0QWN0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQYWRkaW5nYCBwcm9wZXJ0eSBhZGp1c3RzIHRoZSBkaXN0YW5jZSB0byBlbnN1cmUgYSBjbGVhciBzcGFjZSBiZXR3ZWVuIHRoZSBheGlzIGxhYmVscyBhbmQgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCA1XG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGFkZGluZzogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYGxhYmVsUGxhY2VtZW50YCBwcm9wZXJ0eSBjb250cm9scyB3aGVyZSB0aGUgY2F0ZWdvcnkgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogQmV0d2VlblRpY2tzOiBSZW5kZXJzIHRoZSBsYWJlbCBiZXR3ZWVuIHRoZSBheGlzIHRpY2tzLiBcbiAgICAgKiAqIE9uVGlja3M6IFJlbmRlcnMgdGhlIGxhYmVsIGRpcmVjdGx5IG9uIHRoZSBheGlzIHRpY2tzLlxuICAgICAqIEBkZWZhdWx0ICdCZXR3ZWVuVGlja3MnXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsUGxhY2VtZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBgbGFiZWxQb3NpdGlvbmAgcHJvcGVydHkgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgYXhpcyBsYWJlbHMgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIGxpbmUuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBJbnNpZGU6IFJlbmRlcnMgdGhlIGxhYmVscyBpbnNpZGUgdGhlIGF4aXMgbGluZS4gXG4gICAgICogKiBPdXRzaWRlOiBSZW5kZXJzIHRoZSBsYWJlbHMgb3V0c2lkZSB0aGUgYXhpcyBsaW5lLlxuICAgICAqIEBkZWZhdWx0ICdPdXRzaWRlJ1xuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBhbmdsZSB0byB3aGljaCB0aGUgYXhpcyBsYWJlbCBnZXRzIHJvdGF0ZWQuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBsYWJlbFJvdGF0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoaXMgcHJvcGVydHkgYWxsb3dzIGRlZmluaW5nIHZhcmlvdXMgZm9udCBzZXR0aW5ncyB0byBjb250cm9sIGhvdyB0aGUgbGFiZWxzIGFyZSBkaXNwbGF5ZWQgb24gdGhlIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIGxhYmVsU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSB0ZW1wbGF0ZSB1c2VkIHRvIHJlbmRlciBheGlzIGxhYmVscywgYWxsb3dpbmcgZm9yIGN1c3RvbWl6ZWQgbGFiZWxzIHdpdGggdGV4dCwgaW1hZ2VzLCBvciBvdGhlciBVSSBlbGVtZW50cy4gXG4gICAgICogVGhlIHRlbXBsYXRlIGlzIHByb3ZpZGVkIGFzIGEgc3RyaW5nIHdpdGggcGxhY2Vob2xkZXJzIGZvciBpbnRlcnBvbGF0aW9uLiBVc2UgYCR7bGFiZWx9YCB0byBpbnNlcnQgdGhlIGF4aXMgbGFiZWwgYW5kIGAke3ZhbHVlfWAgZm9yIHRoZSBheGlzIGxhYmVsIHZhbHVlLiBcbiAgICAgKiBGb3Igc2VjdXJpdHksIHN0cmluZyB0ZW1wbGF0ZXMgdXNlIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGluIFJlYWN04oCUZW5zdXJlIGlucHV0IGlzIHRydXN0ZWQgdG8gYXZvaWQgWFNTIHZ1bG5lcmFiaWxpdGllcy4gXG4gICAgICogSWYgbnVsbCBvciB1bmRlZmluZWQsIHRoZSBheGlzIHdpbGwgcmVuZGVyIGRlZmF1bHQgbGFiZWxzLiBcbiAgICAgKiBDb21wYXRpYmxlIHdpdGggYm90aCBjYXRlZ29yaWNhbCBhbmQgbnVtZXJpY2FsIGF4ZXMuXG4gICAgICogQGV4YW1wbGUgYGBgaHRtbFxuPGRpdiBpZD0nQ2hhcnQnPjwvZGl2PlxuYGBgXG5gYGB0eXBlc2NyaXB0XG5sZXQgY2hhcnQ6IENoYXJ0ID0gbmV3IENoYXJ0KHtcbi4uLlxucHJpbWFyeVhBeGlzOiB7XG5sYWJlbFRlbXBsYXRlOiAnPGRpdj5Db3VudHJ5OiAke2xhYmVsfTwvZGl2Pidcbn1cbi4uLlxufSk7XG5jaGFydC5hcHBlbmRUbygnI0NoYXJ0Jyk7XG5gYGBcblxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgbGFiZWxUZW1wbGF0ZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBEZXRlcm1pbmVzIHRoZSBhbGlnbm1lbnQgb2YgbGFiZWxzIHdoZW4gYSBsaW5lIGJyZWFrIG9jY3VycyBpbiB0aGUgYXhpcyBsYWJlbHMuXG4gICAgICogQGRlZmF1bHQgJ0NlbnRlcidcbiAgICAgKi9cbiAgICBwdWJsaWMgbGluZUJyZWFrQWxpZ25tZW50OiBhbnk7XG4gICAgLyoqIFxuICAgICAqIE9wdGlvbnMgZm9yIGN1c3RvbWl6aW5nIHRoZSBheGlzIGxpbmVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBsaW5lU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBiYXNlIHZhbHVlIGZvciBhIGxvZ2FyaXRobWljIGF4aXMuIFxuICAgICAqID4gTm90ZSB0aGF0IGB2YWx1ZVR5cGVgIG11c3QgYmUgc2V0IHRvIGBMb2dhcml0aG1pY2AgZm9yIHRoaXMgZmVhdHVyZSB0byB3b3JrLlxuICAgICAqIEBkZWZhdWx0IDEwXG4gICAgICovXG4gICAgcHVibGljIGxvZ0Jhc2U6IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWFqb3IgZ3JpZCBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFqb3JHcmlkTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgbWFqb3IgdGljayBsaW5lcyBvbiB0aGUgYXhpcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgbWFqb3JUaWNrTGluZXM6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBheGlzIHJhbmdlLCB3aGljaCBzZXRzIHRoZSB1cHBlciBib3VuZCBvZiB0aGUgYXhpcyBhbmQgZGVmaW5lcyB0aGUgbGFyZ2VzdCB2YWx1ZSBkaXNwbGF5ZWQgb24gdGhlIGNoYXJ0LCBoZWxwaW5nIHRvIGNvbnRyb2wgdGhlIHZpc2libGUgcmFuZ2Ugb2YgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIG1heGltdW06IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIHdpZHRoIG9mIGFuIGF4aXMgbGFiZWwuXG4gICAgICogQGRlZmF1bHQgMzQuXG4gICAgICovXG4gICAgcHVibGljIG1heGltdW1MYWJlbFdpZHRoOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGFiZWxzIHBlciAxMDAgcGl4ZWxzIHJlbGF0aXZlIHRvIHRoZSBheGlzIGxlbmd0aC5cbiAgICAgKiBAZGVmYXVsdCAzXG4gICAgICovXG4gICAgcHVibGljIG1heGltdW1MYWJlbHM6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBheGlzIHJhbmdlLCB3aGljaCBzZXRzIHRoZSBsb3dlciBib3VuZCBvZiB0aGUgYXhpcyBhbmQgZGVmaW5lcyB0aGUgc21hbGxlc3QgdmFsdWUgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQgdG8gY29udHJvbCB0aGUgdmlzaWJsZSByYW5nZSBvZiBkYXRhLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgbWluaW11bTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyBtaW5vciBncmlkIGxpbmVzIG9uIHRoZSBheGlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBtaW5vckdyaWRMaW5lczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyBtaW5vciB0aWNrIGxpbmVzIG9uIHRoZSBheGlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBtaW5vclRpY2tMaW5lczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtaW5vciB0aWNrcyBwZXIgaW50ZXJ2YWwuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyBtaW5vclRpY2tzUGVySW50ZXJ2YWw6IGFueTtcbiAgICAvKiogXG4gICAgICogTXVsdGktbGV2ZWwgbGFiZWxzIGFyZSB1c2VkIHRvIGRpc3BsYXkgaGllcmFyY2hpY2FsIG9yIGdyb3VwZWQgbGFiZWxzIG9uIHRoZSBheGlzLCBhbGxvd2luZyBmb3IgYSBtb3JlIGRldGFpbGVkIGFuZCBzdHJ1Y3R1cmVkIGRhdGEgcmVwcmVzZW50YXRpb24uXG4gICAgICovXG4gICAgcHVibGljIG11bHRpTGV2ZWxMYWJlbHM6IGFueTtcbiAgICAvKiogXG4gICAgICogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYW4gYXhpcy4gVG8gYXNzb2NpYXRlIGFuIGF4aXMgd2l0aCBhIHNlcmllcywgc2V0IHRoaXMgbmFtZSB0byB0aGUgYHhBeGlzTmFtZWAgb3IgYHlBeGlzTmFtZWAgcHJvcGVydGllcyBvZiB0aGUgc2VyaWVzLlxuICAgICAqIEBkZWZhdWx0ICcnXG4gICAgICovXG4gICAgcHVibGljIG5hbWU6IGFueTtcbiAgICAvKiogXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBheGlzIHdpbGwgcmVuZGVyIG9uIHRoZSBvcHBvc2l0ZSBzaWRlIG9mIGl0cyBkZWZhdWx0IHBvc2l0aW9uLlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcHVibGljIG9wcG9zZWRQb3NpdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciBheGlzIGVsZW1lbnRzLCBzdWNoIGFzIGF4aXMgbGFiZWxzIGFuZCB0aGUgYXhpcyB0aXRsZSwgc2hvdWxkIGJlIGNyb3NzZWQgYnkgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHBsYWNlTmV4dFRvQXhpc0xpbmU6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBwYWRkaW5nIG9uIHRoZSB0b3AsIGJvdHRvbSwgbGVmdCBhbmQgcmlnaHQgc2lkZXMgb2YgdGhlIGNoYXJ0IGFyZWEsIGluIHBpeGVscy5cbiAgICAgKiBAZGVmYXVsdCAwXG4gICAgICovXG4gICAgcHVibGljIHBsb3RPZmZzZXQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBib3R0b20gcGFkZGluZyBmb3IgdGhlIGNoYXJ0IGFyZWEsIGluIHBpeGVscy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHBsb3RPZmZzZXRCb3R0b206IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBsZWZ0IHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0TGVmdDogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHJpZ2h0IHBhZGRpbmcgZm9yIHRoZSBjaGFydCBhcmVhLCBpbiBwaXhlbHMuXG4gICAgICogQGRlZmF1bHQgbnVsbFxuICAgICAqL1xuICAgIHB1YmxpYyBwbG90T2Zmc2V0UmlnaHQ6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSB0b3AgcGFkZGluZyBmb3IgdGhlIGNoYXJ0IGFyZWEsIGluIHBpeGVscy5cbiAgICAgKiBAZGVmYXVsdCBudWxsXG4gICAgICovXG4gICAgcHVibGljIHBsb3RPZmZzZXRUb3A6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGByYW5nZVBhZGRpbmdgIHByb3BlcnR5IGRldGVybWluZXMgaG93IHBhZGRpbmcgaXMgYXBwbGllZCB0byB0aGUgYXhpcyByYW5nZSwgYWZmZWN0aW5nIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBjaGFydCBieSBhZGp1c3RpbmcgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIG9mIHRoZSBheGlzLiBcbiAgICAgKiBBdmFpbGFibGUgb3B0aW9ucyBhcmU6IFxuICAgICAqICogTm9uZTogTm8gcGFkZGluZyBpcyBhcHBsaWVkIHRvIHRoZSBheGlzLiBcbiAgICAgKiAqIE5vcm1hbDogUGFkZGluZyBpcyBhcHBsaWVkIGJhc2VkIG9uIHRoZSByYW5nZSBjYWxjdWxhdGlvbi4gXG4gICAgICogKiBBZGRpdGlvbmFsOiBUaGUgaW50ZXJ2YWwgb2YgdGhlIGF4aXMgaXMgYWRkZWQgYXMgcGFkZGluZyB0byBib3RoIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBvZiB0aGUgcmFuZ2UuIFxuICAgICAqICogUm91bmQ6IFRoZSBheGlzIHJhbmdlIGlzIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgcG9zc2libGUgdmFsdWUgdGhhdCBpcyBkaXZpc2libGUgYnkgdGhlIGludGVydmFsLlxuICAgICAqIEBkZWZhdWx0ICdBdXRvJ1xuICAgICAqL1xuICAgIHB1YmxpYyByYW5nZVBhZGRpbmc6IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBpbmRleCBvZiB0aGUgcm93IHdoZXJlIHRoZSBheGlzIGlzIGFzc29jaWF0ZWQgd2hlbiB0aGUgY2hhcnQgYXJlYSBpcyBkaXZpZGVkIGludG8gbXVsdGlwbGUgcGxvdCBhcmVhcyB1c2luZyBgcm93c2AuIFxuICAgICAqIFxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgcm93SW5kZXg6IGFueTtcbiAgICAvKiogXG4gICAgICogQ29uZmlndXJlcyB0aGUgc2Nyb2xsYmFyIHdpdGggb3B0aW9ucyBmb3IgY3VzdG9taXphdGlvbiwgaW5jbHVkaW5nIGFwcGVhcmFuY2UsIGJlaGF2aW9yLCBhbmQgbGF6eSBsb2FkaW5nIHNldHRpbmdzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzY3JvbGxiYXJTZXR0aW5nczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHNrZWxldG9uIGZvcm1hdCB1c2VkIGZvciBwcm9jZXNzaW5nIGRhdGUtdGltZSB2YWx1ZXMuXG4gICAgICogQGRlZmF1bHQgJydcbiAgICAgKi9cbiAgICBwdWJsaWMgc2tlbGV0b246IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBmb3JtYXQgdHlwZSB0byBiZSB1c2VkIGluIGRhdGUtdGltZSBmb3JtYXR0aW5nLlxuICAgICAqIEBkZWZhdWx0ICdEYXRlVGltZSdcbiAgICAgKiBAZGVwcmVjYXRlZCBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2tlbGV0b25UeXBlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGBjb2x1bW5zYCBvciBgcm93c2AgdGhhdCBhbiBheGlzIHNwYW5zIGhvcml6b250YWxseSBvciB2ZXJ0aWNhbGx5LlxuICAgICAqIEBkZWZhdWx0IDFcbiAgICAgKi9cbiAgICBwdWJsaWMgc3BhbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHN0YXJ0IGFuZ2xlIGZvciB0aGUgc2VyaWVzIGluIGEgcG9sYXIgb3IgcmFkYXIgY2hhcnQsIG1lYXN1cmVkIGluIGRlZ3JlZXMgZnJvbSB0aGUgaG9yaXpvbnRhbCBheGlzLCBkZXRlcm1pbmluZyB0aGUgaW5pdGlhbCBhbmdsZSBmcm9tIHdoaWNoIHRoZSBzZXJpZXMgYmVnaW5zLlxuICAgICAqIEBkZWZhdWx0IDBcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhcnRBbmdsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIGF4aXMgc3RhcnRzIGZyb20gemVyby4gXG4gICAgICogSWYgc2V0IHRvIGZhbHNlLCB0aGUgYXhpcyBzdGFydHMgZnJvbSB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHN0YXJ0RnJvbVplcm86IGFueTtcbiAgICAvKiogXG4gICAgICogU3BlY2lmaWVzIHRoZSBjb2xsZWN0aW9uIG9mIHN0cmlwIGxpbmVzIGZvciB0aGUgYXhpcywgd2hpY2ggYXJlIHZpc3VhbCBlbGVtZW50cyB1c2VkIHRvIG1hcmsgb3IgaGlnaGxpZ2h0IHNwZWNpZmljIHJhbmdlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RyaXBMaW5lczogYW55O1xuICAgIC8qKiBcbiAgICAgKiBUaGUgYHRhYkluZGV4YCB2YWx1ZSBmb3IgdGhlIGF4aXMsIGRldGVybWluaW5nIGl0cyBwb3NpdGlvbiBpbiB0aGUgdGFiIG9yZGVyLlxuICAgICAqIEBkZWZhdWx0IDJcbiAgICAgKi9cbiAgICBwdWJsaWMgdGFiSW5kZXg6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGB0aWNrUG9zaXRpb25gIHByb3BlcnR5IGRldGVybWluZXMgd2hlcmUgdGhlIGF4aXMgdGlja3MgYXJlIHJlbmRlcmVkIGluIHJlbGF0aW9uIHRvIHRoZSBheGlzIGxpbmUuIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGFyZTogXG4gICAgICogKiBJbnNpZGU6IFJlbmRlcnMgdGhlIHRpY2tzIGluc2lkZSB0aGUgYXhpcyBsaW5lLiBcbiAgICAgKiAqIE91dHNpZGU6IFJlbmRlcnMgdGhlIHRpY2tzIG91dHNpZGUgdGhlIGF4aXMgbGluZS5cbiAgICAgKiBAZGVmYXVsdCAnT3V0c2lkZSdcbiAgICAgKi9cbiAgICBwdWJsaWMgdGlja1Bvc2l0aW9uOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFNwZWNpZmllcyB0aGUgdGl0bGUgb2YgYW4gYXhpcywgZGlzcGxheWVkIGFsb25nIHRoZSBheGlzIHRvIHByb3ZpZGUgY29udGV4dCBhYm91dCB0aGUgcmVwcmVzZW50ZWQgZGF0YS5cbiAgICAgKiBAZGVmYXVsdCAnJ1xuICAgICAqL1xuICAgIHB1YmxpYyB0aXRsZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiB0aGUgYXhpcyB0aXRsZSBhbmQgdGhlIGF4aXMgbGFiZWxzLlxuICAgICAqIEBkZWZhdWx0IDVcbiAgICAgKi9cbiAgICBwdWJsaWMgdGl0bGVQYWRkaW5nOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIERlZmluZXMgYW4gYW5nbGUgZm9yIHJvdGF0aW5nIHRoZSBheGlzIHRpdGxlLiBCeSBkZWZhdWx0LCB0aGUgYW5nbGUgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgcG9zaXRpb24gYW5kIG9yaWVudGF0aW9uIG9mIHRoZSBheGlzLlxuICAgICAqIEBkZWZhdWx0IG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgdGl0bGVSb3RhdGlvbjogYW55O1xuICAgIC8qKiBcbiAgICAgKiBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYXhpcyB0aXRsZSwgaW5jbHVkaW5nIGZvbnQgZmFtaWx5LCBzaXplLCBzdHlsZSwgd2VpZ2h0LCBhbmQgY29sb3IuXG4gICAgICovXG4gICAgcHVibGljIHRpdGxlU3R5bGU6IGFueTtcbiAgICAvKiogXG4gICAgICogVGhlIGB2YWx1ZVR5cGVgIHByb3BlcnR5IGRlZmluZXMgdGhlIHR5cGUgb2YgZGF0YSB0aGF0IHRoZSBheGlzIGNhbiBtYW5hZ2UsIGVuc3VyaW5nIGNvcnJlY3QgcmVuZGVyaW5nIGJhc2VkIG9uIHRoZSBkYXRhIHR5cGUuIFRoaXMgcHJvcGVydHkgc3VwcG9ydHMgbXVsdGlwbGUgZGF0YSB0eXBlcywgZWFjaCBzdWl0ZWQgZm9yIGRpZmZlcmVudCBraW5kcyBvZiBkYXRhIHZpc3VhbGl6YXRpb24uIFxuICAgICAqIEF2YWlsYWJsZSBvcHRpb25zIGluY2x1ZGU6IFxuICAgICAqICogRG91YmxlOiBVc2VkIGZvciByZW5kZXJpbmcgYSBudW1lcmljIGF4aXMgdG8gYWNjb21tb2RhdGUgbnVtZXJpYyBkYXRhLiBcbiAgICAgKiAqIERhdGVUaW1lOiBVdGlsaXplZCBmb3IgcmVuZGVyaW5nIGEgZGF0ZS10aW1lIGF4aXMgdG8gbWFuYWdlIGRhdGUtdGltZSBkYXRhLiBcbiAgICAgKiAqIENhdGVnb3J5OiBFbXBsb3llZCBmb3IgcmVuZGVyaW5nIGEgY2F0ZWdvcnkgYXhpcyB0byBtYW5hZ2UgY2F0ZWdvcmljYWwgZGF0YS4gXG4gICAgICogKiBMb2dhcml0aG1pYzogQXBwbGllZCBmb3IgcmVuZGVyaW5nIGEgbG9nYXJpdGhtaWMgYXhpcyB0byBoYW5kbGUgYSB3aWRlIHJhbmdlIG9mIHZhbHVlcy4gXG4gICAgICogKiBEYXRlVGltZUNhdGVnb3J5OiBVc2VkIHRvIHJlbmRlciBhIGRhdGUtdGltZSBjYXRlZ29yeSBheGlzIGZvciBtYW5hZ2luZyBidXNpbmVzcyBkYXlzLlxuICAgICAqIEBkZWZhdWx0ICdEb3VibGUnXG4gICAgICogQGJsYXpvcnR5cGUgU3luY2Z1c2lvbi5FSjIuQmxhem9yLkNoYXJ0cy5WYWx1ZVR5cGVcbiAgICAgKiBAaXNlbnVtZXJhdGlvbiB0cnVlXG4gICAgICovXG4gICAgcHVibGljIHZhbHVlVHlwZTogYW55O1xuICAgIC8qKiBcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgYXhpcyBsYWJlbHMgd2lsbCBiZSB2aXNpYmxlIGluIHRoZSBjaGFydC4gQnkgZGVmYXVsdCwgYXhpcyBsYWJlbHMgYXJlIGVuYWJsZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB2aXNpYmxlOiBhbnk7XG4gICAgLyoqIFxuICAgICAqIFRoZSBheGlzIGlzIHNjYWxlZCBieSB0aGlzIGZhY3Rvci4gV2hlbiBgem9vbUZhY3RvcmAgaXMgMC41LCB0aGUgY2hhcnQgaXMgc2NhbGVkIGJ5IDIwMCUgYWxvbmcgdGhpcyBheGlzLiBcbiAgICAgKiA+IE5vdGUgdGhlIHZhbHVlIHJhbmdlcyBmcm9tIDAgdG8gMS5cbiAgICAgKiBAZGVmYXVsdCAxXG4gICAgICovXG4gICAgcHVibGljIHpvb21GYWN0b3I6IGFueTtcbiAgICAvKiogXG4gICAgICogU2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIHpvb21lZCBheGlzIG9uIHRoZSBjaGFydCwgd2l0aCB0aGUgYHpvb21Qb3NpdGlvbmAgcHJvcGVydHkgc3BlY2lmeWluZyB0aGUgcG9zaXRpb24gd2l0aGluIHRoZSB6b29tZWQgcmFuZ2UsIGZyb20gMCAoc3RhcnQpIHRvIDEgKGVuZCkuXG4gICAgICogQGRlZmF1bHQgMFxuICAgICAqL1xuICAgIHB1YmxpYyB6b29tUG9zaXRpb246IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjpWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHNldFZhbHVlKCdjdXJyZW50SW5zdGFuY2UnLCB0aGlzLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyRXZlbnRzKG91dHB1dHMpO1xuICAgICAgICB0aGlzLmRpcmVjdGl2ZVByb3BMaXN0ID0gaW5wdXQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEF4aXMgQXJyYXkgRGlyZWN0aXZlXG4gKiBAcHJpdmF0ZVxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ2Vqcy1jaGFydD5lLWF4ZXMnLFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgICAgY2hpbGRyZW46IG5ldyBDb250ZW50Q2hpbGRyZW4oQXhpc0RpcmVjdGl2ZSlcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBeGVzRGlyZWN0aXZlIGV4dGVuZHMgQXJyYXlCYXNlPEF4ZXNEaXJlY3RpdmU+IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ2F4ZXMnKTtcbiAgICB9XG59Il19
@@ -342,7 +342,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImpor
342
342
  }]
343
343
  }], ctorParameters: function () { return []; } });
344
344
 
345
- let input$s = ['border', 'coefficient', 'columnIndex', 'crossesAt', 'crossesInAxis', 'crosshairTooltip', 'description', 'desiredIntervals', 'edgeLabelPlacement', 'enableAutoIntervalOnZooming', 'enableScrollbarOnZooming', 'enableTrim', 'enableWrap', 'interval', 'intervalType', 'isIndexed', 'isInversed', 'labelFormat', 'labelIntersectAction', 'labelPadding', 'labelPlacement', 'labelPosition', 'labelRotation', 'labelStyle', 'lineBreakAlignment', 'lineStyle', 'logBase', 'majorGridLines', 'majorTickLines', 'maximum', 'maximumLabelWidth', 'maximumLabels', 'minimum', 'minorGridLines', 'minorTickLines', 'minorTicksPerInterval', 'multiLevelLabels', 'name', 'opposedPosition', 'placeNextToAxisLine', 'plotOffset', 'plotOffsetBottom', 'plotOffsetLeft', 'plotOffsetRight', 'plotOffsetTop', 'rangePadding', 'rowIndex', 'scrollbarSettings', 'skeleton', 'skeletonType', 'span', 'startAngle', 'startFromZero', 'stripLines', 'tabIndex', 'tickPosition', 'title', 'titlePadding', 'titleRotation', 'titleStyle', 'valueType', 'visible', 'zoomFactor', 'zoomPosition'];
345
+ let input$s = ['border', 'coefficient', 'columnIndex', 'crossesAt', 'crossesInAxis', 'crosshairTooltip', 'description', 'desiredIntervals', 'edgeLabelPlacement', 'enableAutoIntervalOnZooming', 'enableScrollbarOnZooming', 'enableTrim', 'enableWrap', 'interval', 'intervalType', 'isIndexed', 'isInversed', 'labelFormat', 'labelIntersectAction', 'labelPadding', 'labelPlacement', 'labelPosition', 'labelRotation', 'labelStyle', 'labelTemplate', 'lineBreakAlignment', 'lineStyle', 'logBase', 'majorGridLines', 'majorTickLines', 'maximum', 'maximumLabelWidth', 'maximumLabels', 'minimum', 'minorGridLines', 'minorTickLines', 'minorTicksPerInterval', 'multiLevelLabels', 'name', 'opposedPosition', 'placeNextToAxisLine', 'plotOffset', 'plotOffsetBottom', 'plotOffsetLeft', 'plotOffsetRight', 'plotOffsetTop', 'rangePadding', 'rowIndex', 'scrollbarSettings', 'skeleton', 'skeletonType', 'span', 'startAngle', 'startFromZero', 'stripLines', 'tabIndex', 'tickPosition', 'title', 'titlePadding', 'titleRotation', 'titleStyle', 'valueType', 'visible', 'zoomFactor', 'zoomPosition'];
346
346
  let outputs$B = [];
347
347
  /**
348
348
  * Axis Directive
@@ -361,7 +361,7 @@ class AxisDirective extends ComplexBase {
361
361
  }
362
362
  }
363
363
  AxisDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxisDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
364
- AxisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AxisDirective, selector: "e-axes>e-axis", inputs: { border: "border", coefficient: "coefficient", columnIndex: "columnIndex", crossesAt: "crossesAt", crossesInAxis: "crossesInAxis", crosshairTooltip: "crosshairTooltip", description: "description", desiredIntervals: "desiredIntervals", edgeLabelPlacement: "edgeLabelPlacement", enableAutoIntervalOnZooming: "enableAutoIntervalOnZooming", enableScrollbarOnZooming: "enableScrollbarOnZooming", enableTrim: "enableTrim", enableWrap: "enableWrap", interval: "interval", intervalType: "intervalType", isIndexed: "isIndexed", isInversed: "isInversed", labelFormat: "labelFormat", labelIntersectAction: "labelIntersectAction", labelPadding: "labelPadding", labelPlacement: "labelPlacement", labelPosition: "labelPosition", labelRotation: "labelRotation", labelStyle: "labelStyle", lineBreakAlignment: "lineBreakAlignment", lineStyle: "lineStyle", logBase: "logBase", majorGridLines: "majorGridLines", majorTickLines: "majorTickLines", maximum: "maximum", maximumLabelWidth: "maximumLabelWidth", maximumLabels: "maximumLabels", minimum: "minimum", minorGridLines: "minorGridLines", minorTickLines: "minorTickLines", minorTicksPerInterval: "minorTicksPerInterval", multiLevelLabels: "multiLevelLabels", name: "name", opposedPosition: "opposedPosition", placeNextToAxisLine: "placeNextToAxisLine", plotOffset: "plotOffset", plotOffsetBottom: "plotOffsetBottom", plotOffsetLeft: "plotOffsetLeft", plotOffsetRight: "plotOffsetRight", plotOffsetTop: "plotOffsetTop", rangePadding: "rangePadding", rowIndex: "rowIndex", scrollbarSettings: "scrollbarSettings", skeleton: "skeleton", skeletonType: "skeletonType", span: "span", startAngle: "startAngle", startFromZero: "startFromZero", stripLines: "stripLines", tabIndex: "tabIndex", tickPosition: "tickPosition", title: "title", titlePadding: "titlePadding", titleRotation: "titleRotation", titleStyle: "titleStyle", valueType: "valueType", visible: "visible", zoomFactor: "zoomFactor", zoomPosition: "zoomPosition" }, queries: [{ propertyName: "childStripLines", first: true, predicate: StripLinesDirective, descendants: true }, { propertyName: "childMultiLevelLabels", first: true, predicate: MultiLevelLabelsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
364
+ AxisDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: AxisDirective, selector: "e-axes>e-axis", inputs: { border: "border", coefficient: "coefficient", columnIndex: "columnIndex", crossesAt: "crossesAt", crossesInAxis: "crossesInAxis", crosshairTooltip: "crosshairTooltip", description: "description", desiredIntervals: "desiredIntervals", edgeLabelPlacement: "edgeLabelPlacement", enableAutoIntervalOnZooming: "enableAutoIntervalOnZooming", enableScrollbarOnZooming: "enableScrollbarOnZooming", enableTrim: "enableTrim", enableWrap: "enableWrap", interval: "interval", intervalType: "intervalType", isIndexed: "isIndexed", isInversed: "isInversed", labelFormat: "labelFormat", labelIntersectAction: "labelIntersectAction", labelPadding: "labelPadding", labelPlacement: "labelPlacement", labelPosition: "labelPosition", labelRotation: "labelRotation", labelStyle: "labelStyle", labelTemplate: "labelTemplate", lineBreakAlignment: "lineBreakAlignment", lineStyle: "lineStyle", logBase: "logBase", majorGridLines: "majorGridLines", majorTickLines: "majorTickLines", maximum: "maximum", maximumLabelWidth: "maximumLabelWidth", maximumLabels: "maximumLabels", minimum: "minimum", minorGridLines: "minorGridLines", minorTickLines: "minorTickLines", minorTicksPerInterval: "minorTicksPerInterval", multiLevelLabels: "multiLevelLabels", name: "name", opposedPosition: "opposedPosition", placeNextToAxisLine: "placeNextToAxisLine", plotOffset: "plotOffset", plotOffsetBottom: "plotOffsetBottom", plotOffsetLeft: "plotOffsetLeft", plotOffsetRight: "plotOffsetRight", plotOffsetTop: "plotOffsetTop", rangePadding: "rangePadding", rowIndex: "rowIndex", scrollbarSettings: "scrollbarSettings", skeleton: "skeleton", skeletonType: "skeletonType", span: "span", startAngle: "startAngle", startFromZero: "startFromZero", stripLines: "stripLines", tabIndex: "tabIndex", tickPosition: "tickPosition", title: "title", titlePadding: "titlePadding", titleRotation: "titleRotation", titleStyle: "titleStyle", valueType: "valueType", visible: "visible", zoomFactor: "zoomFactor", zoomPosition: "zoomPosition" }, queries: [{ propertyName: "childStripLines", first: true, predicate: StripLinesDirective, descendants: true }, { propertyName: "childMultiLevelLabels", first: true, predicate: MultiLevelLabelsDirective, descendants: true }], usesInheritance: true, ngImport: i0 });
365
365
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: AxisDirective, decorators: [{
366
366
  type: Directive,
367
367
  args: [{