nuxeo-development-framework 5.4.9 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/bundles/nuxeo-development-framework.umd.js +491 -288
  2. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  3. package/esm2015/lib/components/reports/charts/plugins/data-labels.js +166 -102
  4. package/esm2015/lib/components/reports/charts/utility/colors.js +13 -1
  5. package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +2 -2
  6. package/esm2015/lib/components/reports/ndf-reports/base/base-custom-report.js +16 -3
  7. package/esm2015/lib/components/reports/ndf-reports/base/base-graph.report.js +10 -22
  8. package/esm2015/lib/components/reports/ndf-reports/base/base-report.js +5 -2
  9. package/esm2015/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.js +68 -0
  10. package/esm2015/lib/components/reports/ndf-reports/charts-components/index.js +2 -1
  11. package/esm2015/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.js +41 -0
  12. package/esm2015/lib/components/reports/ndf-reports/components/_parts/index.js +2 -1
  13. package/esm2015/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.js +23 -37
  14. package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -6
  15. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +4 -3
  16. package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +2 -2
  17. package/esm2015/lib/components/reports/ndf-reports/models/custom-definition.js +1 -1
  18. package/esm2015/lib/components/reports/ndf-reports/models/dialog-data.js +1 -1
  19. package/esm2015/lib/components/reports/ndf-reports/models/report-config.js +1 -1
  20. package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +5 -3
  21. package/esm2015/lib/components/reports/ndf-reports/public-api.js +2 -1
  22. package/esm2015/lib/components/reports/ndf-reports/services/chart-manager.service.js +15 -9
  23. package/esm2015/lib/components/reports/ndf-reports/services/custom-reports-registry.service.js +1 -1
  24. package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +1 -1
  25. package/esm2015/lib/components/reports/ndf-reports/services/report-transform.service.js +2 -2
  26. package/esm2015/lib/components/reports/ndf-reports/services/reports-dialog.service.js +32 -0
  27. package/fesm2015/nuxeo-development-framework.js +452 -267
  28. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  29. package/lib/components/reports/charts/utility/colors.d.ts +5 -0
  30. package/lib/components/reports/ndf-reports/base/base-chart.d.ts +1 -1
  31. package/lib/components/reports/ndf-reports/base/base-custom-report.d.ts +18 -13
  32. package/lib/components/reports/ndf-reports/base/base-graph.report.d.ts +5 -13
  33. package/lib/components/reports/ndf-reports/base/base-report.d.ts +4 -1
  34. package/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.d.ts +15 -0
  35. package/lib/components/reports/ndf-reports/charts-components/index.d.ts +1 -0
  36. package/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.d.ts +14 -0
  37. package/lib/components/reports/ndf-reports/components/_parts/index.d.ts +1 -0
  38. package/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.d.ts +8 -10
  39. package/lib/components/reports/ndf-reports/models/custom-definition.d.ts +3 -3
  40. package/lib/components/reports/ndf-reports/models/dialog-data.d.ts +8 -0
  41. package/lib/components/reports/ndf-reports/models/report-config.d.ts +2 -2
  42. package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +22 -20
  43. package/lib/components/reports/ndf-reports/public-api.d.ts +1 -0
  44. package/lib/components/reports/ndf-reports/services/chart-manager.service.d.ts +2 -2
  45. package/lib/components/reports/ndf-reports/services/custom-reports-registry.service.d.ts +3 -2
  46. package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts +2 -2
  47. package/lib/components/reports/ndf-reports/services/reports-dialog.service.d.ts +21 -0
  48. package/package.json +2 -2
@@ -1,144 +1,208 @@
1
1
  import { getColor, getTextColor } from '../utility';
2
+ // Configuration constants
3
+ const LABEL_CONFIG = {
4
+ minFontSize: 10,
5
+ maxFontSize: 16,
6
+ defaultFontSize: 12,
7
+ textPadding: 8,
8
+ minAngleForPieLabel: 0.3,
9
+ arcRadiusMultiplier: {
10
+ pie: 0.7,
11
+ doughnut: 0.8
12
+ },
13
+ fontSizeCalculation: {
14
+ percentageDivisor: 3,
15
+ maxPercentageForFontSize: 20
16
+ }
17
+ };
18
+ // Main plugin
2
19
  export const chartDataLabels = {
3
20
  id: 'chartDataLabels',
4
21
  afterDatasetsDraw(chart, args, plugins) {
5
22
  var _a;
6
23
  const { ctx } = chart;
7
24
  ctx.save();
8
- switch ((_a = chart.config) === null || _a === void 0 ? void 0 : _a.type) {
9
- case 'bar':
10
- barChartLabels(chart);
11
- break;
12
- case 'pie':
13
- pieChartLabels(chart);
14
- break;
15
- case 'doughnut':
16
- doughnutChartLabels(chart);
17
- break;
25
+ const chartType = (_a = chart.config) === null || _a === void 0 ? void 0 : _a.type;
26
+ const renderer = getChartRenderer(chartType);
27
+ if (renderer) {
28
+ renderer(chart);
18
29
  }
19
30
  ctx.restore();
20
31
  }
21
32
  };
33
+ // Chart type router
34
+ function getChartRenderer(chartType) {
35
+ const renderers = {
36
+ bar: barChartLabels,
37
+ pie: pieChartLabels,
38
+ doughnut: doughnutChartLabels
39
+ };
40
+ return renderers[chartType];
41
+ }
42
+ // Core utility functions
43
+ function calculatePercentage(value, total) {
44
+ return total > 0 ? (value / total) * 100 : 0;
45
+ }
46
+ function calculateFontSize(percentage) {
47
+ const { percentageDivisor, maxPercentageForFontSize } = LABEL_CONFIG.fontSizeCalculation;
48
+ const calculatedSize = Math.min(percentage / percentageDivisor, maxPercentageForFontSize);
49
+ return Math.max(LABEL_CONFIG.minFontSize, Math.min(calculatedSize, LABEL_CONFIG.maxFontSize));
50
+ }
51
+ function getTextMetrics(ctx, text, fontSize) {
52
+ ctx.font = `normal ${fontSize}px sans-serif`;
53
+ const metrics = ctx.measureText(text);
54
+ const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent || LABEL_CONFIG.defaultFontSize;
55
+ return {
56
+ width: metrics.width,
57
+ height
58
+ };
59
+ }
60
+ function prepareCanvasForText(ctx, fontSize, color) {
61
+ ctx.font = `bold ${fontSize}px sans-serif`;
62
+ ctx.textAlign = 'center';
63
+ ctx.textBaseline = 'middle';
64
+ ctx.fillStyle = color;
65
+ }
66
+ function extractLabelData(dataset, index, totalSum, chart) {
67
+ const value = dataset.data[index];
68
+ const percentage = calculatePercentage(value, totalSum);
69
+ const isVisible = chart.getDataVisibility(index);
70
+ if (!percentage || !isVisible) {
71
+ return null;
72
+ }
73
+ return {
74
+ text: `${percentage.toFixed(1)}%`,
75
+ percentage,
76
+ backgroundColor: Array.isArray(dataset.backgroundColor) ? dataset.backgroundColor[index] : dataset.backgroundColor,
77
+ isVisible
78
+ };
79
+ }
80
+ // Bar chart implementation
22
81
  function barChartLabels(chart) {
23
82
  var _a;
24
- const { ctx, data } = chart;
83
+ const { ctx } = chart;
25
84
  const isHorizontalChart = ((_a = chart.options) === null || _a === void 0 ? void 0 : _a.indexAxis) === 'y';
26
- const { isHorizontalReversed } = isBarChartReversed(chart);
85
+ const { isHorizontalReversed } = getBarChartOrientation(chart);
27
86
  chart.data.datasets.forEach((dataset, datasetIndex) => {
28
87
  const meta = chart.getDatasetMeta(datasetIndex);
29
- const totalSum = dataset.data.reduce((sum, currentValue) => sum + currentValue, 0);
88
+ const totalSum = dataset.data.reduce((sum, value) => sum + value, 0);
30
89
  meta.data.forEach((dataPoint, index) => {
31
90
  if (!dataPoint)
32
91
  return;
33
- const percentage = (dataset.data[index] / totalSum) * 100;
34
- const isVisible = chart.getDataVisibility(index);
35
- if (!percentage || !isVisible) {
92
+ const labelData = extractLabelData(dataset, index, totalSum, chart);
93
+ if (!labelData)
36
94
  return;
37
- }
38
- const bgColor = dataset.backgroundColor[index];
39
- const textColor = getTextColor(bgColor);
40
- const fontSize = Math.max(12, Math.min(percentage / 2, 14));
41
- ctx.textAlign = 'center';
42
- ctx.textBaseline = 'middle';
43
- ctx.font = `normal ${fontSize}px sans-serif`;
44
- ctx.fillStyle = textColor;
45
- const text = `${percentage.toFixed()}%`;
46
- const { width, height } = getTextMetrics(ctx, text);
47
- const textHeight = height || 12;
48
- const textWidth = width || 30;
49
- if (isHorizontalChart) {
50
- if ((dataPoint === null || dataPoint === void 0 ? void 0 : dataPoint.width) > 0) {
51
- const textPadding = 20;
52
- const offset = textPadding + textWidth <= dataPoint.width ? textWidth : textWidth >= dataPoint.width ? 0 : 10;
53
- const x = dataPoint.x + (isHorizontalReversed ? offset : -offset);
54
- ctx.fillStyle = dataPoint.width <= textWidth ? getColor('--chart-value-default-color', '#000') : textColor;
55
- if (percentage) {
56
- ctx.fillText(text, x, dataPoint.y);
57
- }
58
- }
59
- }
60
- else {
61
- if ((dataPoint === null || dataPoint === void 0 ? void 0 : dataPoint.height) > 0) {
62
- const y = textHeight >= dataPoint.height ? dataPoint.y - 10 : dataPoint.y + 10;
63
- ctx.fillStyle = textHeight >= dataPoint.height ? getColor('--chart-value-default-color', '#000') : textColor;
64
- if (!percentage) {
65
- return;
66
- }
67
- ctx.fillText(text, dataPoint.x, y);
68
- }
95
+ const fontSize = calculateFontSize(labelData.percentage);
96
+ const textMetrics = getTextMetrics(ctx, labelData.text, fontSize);
97
+ const position = calculateBarLabelPosition(dataPoint, textMetrics, isHorizontalChart, isHorizontalReversed, labelData.backgroundColor);
98
+ if (position) {
99
+ prepareCanvasForText(ctx, fontSize, position.color);
100
+ ctx.fillText(labelData.text, position.x, position.y);
69
101
  }
70
102
  });
71
103
  });
72
104
  }
73
- function doughnutChartLabels(chart) {
74
- const { ctx, data } = chart;
75
- chart.data.datasets.forEach((dataset, datasetIndex) => {
76
- const meta = chart.getDatasetMeta(datasetIndex);
77
- const totalSum = dataset.data.reduce((sum, currentValue) => sum + currentValue, 0);
78
- meta.data.forEach((arc, index) => {
79
- if (!arc)
80
- return;
81
- const percentage = (dataset.data[index] / totalSum) * 100;
82
- const isVisible = chart.getDataVisibility(index);
83
- if (!percentage || !isVisible) {
84
- return;
85
- }
86
- const midAngle = (arc.startAngle + arc.endAngle) / 2;
87
- const x = arc.x + Math.cos(midAngle) * (arc.outerRadius / 1.2);
88
- const y = arc.y + Math.sin(midAngle) * (arc.outerRadius / 1.2);
89
- const fontSize = Math.max(12, Math.min(percentage / 2, 14));
90
- const bgColor = dataset.backgroundColor[index] || '#00000';
91
- prepareText(ctx, fontSize, bgColor);
92
- ctx.fillText(`${percentage.toFixed()}%`, x, y);
93
- });
94
- });
105
+ function calculateBarLabelPosition(dataPoint, textMetrics, isHorizontal, isReversed, backgroundColor) {
106
+ const { textPadding } = LABEL_CONFIG;
107
+ if (isHorizontal) {
108
+ const fitsInside = textMetrics.width + textPadding * 2 <= dataPoint.width;
109
+ if (fitsInside) {
110
+ return {
111
+ x: dataPoint.x + (isReversed ? textMetrics.width / 2 : -textMetrics.width / 2),
112
+ y: dataPoint.y,
113
+ color: getTextColor(backgroundColor)
114
+ };
115
+ }
116
+ else {
117
+ return {
118
+ x: dataPoint.x + (isReversed ? -textMetrics.width / 2 - textPadding : textMetrics.width / 2 + textPadding),
119
+ y: dataPoint.y,
120
+ color: getColor('--chart-value-default-color', '#000')
121
+ };
122
+ }
123
+ }
124
+ else {
125
+ const fitsInside = textMetrics.height + textPadding * 2 <= dataPoint.height;
126
+ if (fitsInside) {
127
+ return {
128
+ x: dataPoint.x,
129
+ y: dataPoint.y,
130
+ color: getTextColor(backgroundColor)
131
+ };
132
+ }
133
+ else {
134
+ return {
135
+ x: dataPoint.x,
136
+ y: dataPoint.y - textMetrics.height / 2 - textPadding,
137
+ color: getColor('--chart-value-default-color', '#000')
138
+ };
139
+ }
140
+ }
95
141
  }
142
+ // Pie chart implementation
96
143
  function pieChartLabels(chart) {
97
- const { ctx, data } = chart;
144
+ renderArcLabels(chart, 'pie');
145
+ }
146
+ // Doughnut chart implementation
147
+ function doughnutChartLabels(chart) {
148
+ renderArcLabels(chart, 'doughnut');
149
+ }
150
+ function renderArcLabels(chart, chartType) {
151
+ const { ctx } = chart;
98
152
  chart.data.datasets.forEach((dataset, datasetIndex) => {
99
153
  const meta = chart.getDatasetMeta(datasetIndex);
100
- const totalSum = dataset.data.reduce((sum, currentValue) => sum + currentValue, 0);
154
+ const totalSum = dataset.data.reduce((sum, value) => sum + value, 0);
101
155
  meta.data.forEach((arc, index) => {
102
156
  if (!arc)
103
157
  return;
104
- const percentage = (dataset.data[index] / totalSum) * 100;
105
- const isVisible = chart.getDataVisibility(index);
106
- if (!percentage || !isVisible) {
158
+ const labelData = extractLabelData(dataset, index, totalSum, chart);
159
+ if (!labelData)
107
160
  return;
161
+ if (shouldShowArcLabel(arc, labelData.text, chartType)) {
162
+ const position = calculateArcLabelPosition(arc, chartType);
163
+ const fontSize = calculateFontSize(labelData.percentage);
164
+ const textColor = getTextColor(labelData.backgroundColor || '#000000');
165
+ prepareCanvasForText(ctx, fontSize, textColor);
166
+ ctx.fillText(labelData.text, position.x, position.y);
108
167
  }
109
- const midAngle = (arc.startAngle + arc.endAngle) / 2;
110
- const x = arc.x + Math.cos(midAngle) * (arc.outerRadius / 1.5);
111
- const y = arc.y + Math.sin(midAngle) * (arc.outerRadius / 1.5);
112
- const fontSize = Math.max(12, Math.min(percentage / 2, 14));
113
- const bgColor = dataset.backgroundColor[index] || '#00000';
114
- prepareText(ctx, fontSize, bgColor);
115
- ctx.fillText(`${percentage.toFixed()}%`, x, y);
116
168
  });
117
169
  });
118
170
  }
119
- function isBarChartReversed(chart) {
120
- var _a, _b;
121
- const scales = chart.options.scales;
122
- const isVerticalReversed = ((_a = scales === null || scales === void 0 ? void 0 : scales.y) === null || _a === void 0 ? void 0 : _a.reverse) === true;
123
- const isHorizontalReversed = ((_b = scales === null || scales === void 0 ? void 0 : scales.x) === null || _b === void 0 ? void 0 : _b.reverse) === true;
171
+ function shouldShowArcLabel(arc, text, chartType) {
172
+ const arcAngle = Math.abs(arc.endAngle - arc.startAngle);
173
+ // Don't show labels for very small slices
174
+ if (arcAngle < LABEL_CONFIG.minAngleForPieLabel) {
175
+ return false;
176
+ }
177
+ // For doughnut charts, also check if there's enough radial space
178
+ if (chartType === 'doughnut') {
179
+ const radialSpace = arc.outerRadius - arc.innerRadius;
180
+ return radialSpace >= LABEL_CONFIG.defaultFontSize * 1.5;
181
+ }
182
+ return true;
183
+ }
184
+ function calculateArcLabelPosition(arc, chartType) {
185
+ const midAngle = (arc.startAngle + arc.endAngle) / 2;
186
+ const radiusMultiplier = LABEL_CONFIG.arcRadiusMultiplier[chartType];
187
+ let radius;
188
+ if (chartType === 'doughnut') {
189
+ radius = (arc.outerRadius + arc.innerRadius) / 2;
190
+ }
191
+ else {
192
+ radius = arc.outerRadius * radiusMultiplier;
193
+ }
124
194
  return {
125
- isVerticalReversed,
126
- isHorizontalReversed
195
+ x: arc.x + Math.cos(midAngle) * radius,
196
+ y: arc.y + Math.sin(midAngle) * radius
127
197
  };
128
198
  }
129
- function getTextMetrics(ctx, text) {
130
- const metrics = ctx.measureText(text);
131
- const textHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;
199
+ // Utility functions
200
+ function getBarChartOrientation(chart) {
201
+ var _a, _b;
202
+ const scales = chart.options.scales;
132
203
  return {
133
- height: textHeight,
134
- width: metrics.width
204
+ isVerticalReversed: ((_a = scales === null || scales === void 0 ? void 0 : scales.y) === null || _a === void 0 ? void 0 : _a.reverse) === true,
205
+ isHorizontalReversed: ((_b = scales === null || scales === void 0 ? void 0 : scales.x) === null || _b === void 0 ? void 0 : _b.reverse) === true
135
206
  };
136
207
  }
137
- function prepareText(ctx, fontSize, bgColor) {
138
- const textColor = getTextColor(bgColor || getColor('--chart-value-default-color', '#000'));
139
- ctx.font = `bold ${fontSize}px sans-serif`;
140
- ctx.textAlign = 'center';
141
- ctx.textBaseline = 'middle';
142
- ctx.fillStyle = textColor;
143
- }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYWJlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvY2hhcnRzL3BsdWdpbnMvZGF0YS1sYWJlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQjtJQUNqRCxFQUFFLEVBQUUsaUJBQWlCO0lBQ3JCLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTzs7UUFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN0QixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWCxRQUFRLE1BQUMsS0FBSyxDQUFDLE1BQTZCLDBDQUFFLElBQUksRUFBRTtZQUNuRCxLQUFLLEtBQUs7Z0JBQ1QsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixNQUFNO1lBQ1AsS0FBSyxLQUFLO2dCQUNULGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsTUFBTTtZQUNQLEtBQUssVUFBVTtnQkFDZCxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtTQUNQO1FBRUQsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQztDQUNELENBQUM7QUFFRixTQUFTLGNBQWMsQ0FBQyxLQUF5Qzs7SUFDaEUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDNUIsTUFBTSxpQkFBaUIsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLE9BQU8sMENBQUUsU0FBUyxNQUFLLEdBQUcsQ0FBQztJQUMzRCxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxrQkFBa0Is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O1FBQ04sTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0tBQ3BCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBNkIsRUFBRSxRQUFnQixFQUFFLE9BQWU7SUFDcEYsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRixHQUFHLENBQUMsSUFBSSxHQUFHLFFBQVEsUUFBUSxlQUFlLENBQUM7SUFDM0MsR0FBRyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDekIsR0FBRyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7SUFDNUIsR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyY0VsZW1lbnQsIENoYXJ0LCBQbHVnaW4gfSBmcm9tICdjaGFydC5qcyc7XHJcbmltcG9ydCB7IENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRUeXBlIH0gZnJvbSAnY2hhcnQuanMvZGlzdC90eXBlcyc7XHJcblxyXG5pbXBvcnQgQmFyRWxlbWVudCBmcm9tICdjaGFydC5qcy9kaXN0L2VsZW1lbnRzL2VsZW1lbnQuYmFyJztcclxuaW1wb3J0IHsgZ2V0Q29sb3IsIGdldFRleHRDb2xvciB9IGZyb20gJy4uL3V0aWxpdHknO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNoYXJ0RGF0YUxhYmVsczogUGx1Z2luPENoYXJ0VHlwZT4gPSB7XHJcblx0aWQ6ICdjaGFydERhdGFMYWJlbHMnLFxyXG5cdGFmdGVyRGF0YXNldHNEcmF3KGNoYXJ0LCBhcmdzLCBwbHVnaW5zKSB7XHJcblx0XHRjb25zdCB7IGN0eCB9ID0gY2hhcnQ7XHJcblx0XHRjdHguc2F2ZSgpO1xyXG5cclxuXHRcdHN3aXRjaCAoKGNoYXJ0LmNvbmZpZyBhcyBDaGFydENvbmZpZ3VyYXRpb24pPy50eXBlKSB7XHJcblx0XHRcdGNhc2UgJ2Jhcic6XHJcblx0XHRcdFx0YmFyQ2hhcnRMYWJlbHMoY2hhcnQpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdwaWUnOlxyXG5cdFx0XHRcdHBpZUNoYXJ0TGFiZWxzKGNoYXJ0KTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnZG91Z2hudXQnOlxyXG5cdFx0XHRcdGRvdWdobnV0Q2hhcnRMYWJlbHMoY2hhcnQpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdGN0eC5yZXN0b3JlKCk7XHJcblx0fVxyXG59O1xyXG5cclxuZnVuY3Rpb24gYmFyQ2hhcnRMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pIHtcclxuXHRjb25zdCB7IGN0eCwgZGF0YSB9ID0gY2hhcnQ7XHJcblx0Y29uc3QgaXNIb3Jpem9udGFsQ2hhcnQgPSBjaGFydC5vcHRpb25zPy5pbmRleEF4aXMgPT09ICd5JztcclxuXHRjb25zdCB7IGlzSG9yaXpvbnRhbFJldmVyc2VkIH0gPSBpc0JhckNoYXJ0UmV2ZXJzZWQoY2hhcnQpO1xyXG5cclxuXHRjaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xyXG5cdFx0Y29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XHJcblxyXG5cdFx0Y29uc3QgdG90YWxTdW0gPSAoZGF0YXNldC5kYXRhIGFzIFtdKS5yZWR1Y2UoKHN1bSwgY3VycmVudFZhbHVlKSA9PiBzdW0gKyBjdXJyZW50VmFsdWUsIDApO1xyXG5cclxuXHRcdG1ldGEuZGF0YS5mb3JFYWNoKChkYXRhUG9pbnQ6IEJhckVsZW1lbnQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmICghZGF0YVBvaW50KSByZXR1cm47XHJcblx0XHRcdGNvbnN0IHBlcmNlbnRhZ2UgPSAoZGF0YXNldC5kYXRhW2luZGV4XSAvIHRvdGFsU3VtKSAqIDEwMDtcclxuXHRcdFx0Y29uc3QgaXNWaXNpYmxlID0gY2hhcnQuZ2V0RGF0YVZpc2liaWxpdHkoaW5kZXgpO1xyXG5cdFx0XHRpZiAoIXBlcmNlbnRhZ2UgfHwgIWlzVmlzaWJsZSkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgYmdDb2xvciA9IGRhdGFzZXQuYmFja2dyb3VuZENvbG9yW2luZGV4XTtcclxuXHRcdFx0Y29uc3QgdGV4dENvbG9yID0gZ2V0VGV4dENvbG9yKGJnQ29sb3IpO1xyXG5cclxuXHRcdFx0Y29uc3QgZm9udFNpemUgPSBNYXRoLm1heCgxMiwgTWF0aC5taW4ocGVyY2VudGFnZSAvIDIsIDE0KSk7XHJcblxyXG5cdFx0XHRjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XHJcblx0XHRcdGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuXHRcdFx0Y3R4LmZvbnQgPSBgbm9ybWFsICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0XHRcdGN0eC5maWxsU3R5bGUgPSB0ZXh0Q29sb3I7XHJcblxyXG5cdFx0XHRjb25zdCB0ZXh0ID0gYCR7cGVyY2VudGFnZS50b0ZpeGVkKCl9JWA7XHJcblxyXG5cdFx0XHRjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFRleHRNZXRyaWNzKGN0eCwgdGV4dCk7XHJcblxyXG5cdFx0XHRjb25zdCB0ZXh0SGVpZ2h0ID0gaGVpZ2h0IHx8IDEyO1xyXG5cdFx0XHRjb25zdCB0ZXh0V2lkdGggPSB3aWR0aCB8fCAzMDtcclxuXHJcblx0XHRcdGlmIChpc0hvcml6b250YWxDaGFydCkge1xyXG5cdFx0XHRcdGlmIChkYXRhUG9pbnQ/LndpZHRoID4gMCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgdGV4dFBhZGRpbmcgPSAyMDtcclxuXHRcdFx0XHRcdGNvbnN0IG9mZnNldCA9IHRleHRQYWRkaW5nICsgdGV4dFdpZHRoIDw9IGRhdGFQb2ludC53aWR0aCA/IHRleHRXaWR0aCA6IHRleHRXaWR0aCA+PSBkYXRhUG9pbnQud2lkdGggPyAwIDogMTA7XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgeCA9IGRhdGFQb2ludC54ICsgKGlzSG9yaXpvbnRhbFJldmVyc2VkID8gb2Zmc2V0IDogLW9mZnNldCk7XHJcblx0XHRcdFx0XHRjdHguZmlsbFN0eWxlID0gZGF0YVBvaW50LndpZHRoIDw9IHRleHRXaWR0aCA/IGdldENvbG9yKCctLWNoYXJ0LXZhbHVlLWRlZmF1bHQtY29sb3InLCAnIzAwMCcpIDogdGV4dENvbG9yO1xyXG5cclxuXHRcdFx0XHRcdGlmIChwZXJjZW50YWdlKSB7XHJcblx0XHRcdFx0XHRcdGN0eC5maWxsVGV4dCh0ZXh0LCB4LCBkYXRhUG9pbnQueSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChkYXRhUG9pbnQ/LmhlaWdodCA+IDApIHtcclxuXHRcdFx0XHRcdGNvbnN0IHkgPSB0ZXh0SGVpZ2h0ID49IGRhdGFQb2ludC5oZWlnaHQgPyBkYXRhUG9pbnQueSAtIDEwIDogZGF0YVBvaW50LnkgKyAxMDtcclxuXHRcdFx0XHRcdGN0eC5maWxsU3R5bGUgPSB0ZXh0SGVpZ2h0ID49IGRhdGFQb2ludC5oZWlnaHQgPyBnZXRDb2xvcignLS1jaGFydC12YWx1ZS1kZWZhdWx0LWNvbG9yJywgJyMwMDAnKSA6IHRleHRDb2xvcjtcclxuXHRcdFx0XHRcdGlmICghcGVyY2VudGFnZSkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRjdHguZmlsbFRleHQodGV4dCwgZGF0YVBvaW50LngsIHkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvdWdobnV0Q2hhcnRMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pIHtcclxuXHRjb25zdCB7IGN0eCwgZGF0YSB9ID0gY2hhcnQ7XHJcblxyXG5cdGNoYXJ0LmRhdGEuZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCwgZGF0YXNldEluZGV4KSA9PiB7XHJcblx0XHRjb25zdCBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcclxuXHJcblx0XHRjb25zdCB0b3RhbFN1bSA9IChkYXRhc2V0LmRhdGEgYXMgW10pLnJlZHVjZSgoc3VtLCBjdXJyZW50VmFsdWUpID0+IHN1bSArIGN1cnJlbnRWYWx1ZSwgMCk7XHJcblxyXG5cdFx0bWV0YS5kYXRhLmZvckVhY2goKGFyYzogQXJjRWxlbWVudCwgaW5kZXgpID0+IHtcclxuXHRcdFx0aWYgKCFhcmMpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IHBlcmNlbnRhZ2UgPSAoZGF0YXNldC5kYXRhW2luZGV4XSAvIHRvdGFsU3VtKSAqIDEwMDtcclxuXHRcdFx0Y29uc3QgaXNWaXNpYmxlID0gY2hhcnQuZ2V0RGF0YVZpc2liaWxpdHkoaW5kZXgpO1xyXG5cdFx0XHRpZiAoIXBlcmNlbnRhZ2UgfHwgIWlzVmlzaWJsZSkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgbWlkQW5nbGUgPSAoYXJjLnN0YXJ0QW5nbGUgKyBhcmMuZW5kQW5nbGUpIC8gMjtcclxuXHRcdFx0Y29uc3QgeCA9IGFyYy54ICsgTWF0aC5jb3MobWlkQW5nbGUpICogKGFyYy5vdXRlclJhZGl1cyAvIDEuMik7XHJcblx0XHRcdGNvbnN0IHkgPSBhcmMueSArIE1hdGguc2luKG1pZEFuZ2xlKSAqIChhcmMub3V0ZXJSYWRpdXMgLyAxLjIpO1xyXG5cclxuXHRcdFx0Y29uc3QgZm9udFNpemUgPSBNYXRoLm1heCgxMiwgTWF0aC5taW4ocGVyY2VudGFnZSAvIDIsIDE0KSk7XHJcblx0XHRcdGNvbnN0IGJnQ29sb3IgPSBkYXRhc2V0LmJhY2tncm91bmRDb2xvcltpbmRleF0gfHwgJyMwMDAwMCc7XHJcblx0XHRcdHByZXBhcmVUZXh0KGN0eCwgZm9udFNpemUsIGJnQ29sb3IpO1xyXG5cdFx0XHRjdHguZmlsbFRleHQoYCR7cGVyY2VudGFnZS50b0ZpeGVkKCl9JWAsIHgsIHkpO1xyXG5cdFx0fSk7XHJcblx0fSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBpZUNoYXJ0TGFiZWxzKGNoYXJ0OiBDaGFydDxDaGFydFR5cGUsIHVua25vd24sIHVua25vd24+KSB7XHJcblx0Y29uc3QgeyBjdHgsIGRhdGEgfSA9IGNoYXJ0O1xyXG5cclxuXHRjaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xyXG5cdFx0Y29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XHJcblxyXG5cdFx0Y29uc3QgdG90YWxTdW0gPSAoZGF0YXNldC5kYXRhIGFzIFtdKS5yZWR1Y2UoKHN1bSwgY3VycmVudFZhbHVlKSA9PiBzdW0gKyBjdXJyZW50VmFsdWUsIDApO1xyXG5cclxuXHRcdG1ldGEuZGF0YS5mb3JFYWNoKChhcmM6IEFyY0VsZW1lbnQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmICghYXJjKSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBwZXJjZW50YWdlID0gKGRhdGFzZXQuZGF0YVtpbmRleF0gLyB0b3RhbFN1bSkgKiAxMDA7XHJcblx0XHRcdGNvbnN0IGlzVmlzaWJsZSA9IGNoYXJ0LmdldERhdGFWaXNpYmlsaXR5KGluZGV4KTtcclxuXHRcdFx0aWYgKCFwZXJjZW50YWdlIHx8ICFpc1Zpc2libGUpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNvbnN0IG1pZEFuZ2xlID0gKGFyYy5zdGFydEFuZ2xlICsgYXJjLmVuZEFuZ2xlKSAvIDI7XHJcblxyXG5cdFx0XHRjb25zdCB4ID0gYXJjLnggKyBNYXRoLmNvcyhtaWRBbmdsZSkgKiAoYXJjLm91dGVyUmFkaXVzIC8gMS41KTtcclxuXHJcblx0XHRcdGNvbnN0IHkgPSBhcmMueSArIE1hdGguc2luKG1pZEFuZ2xlKSAqIChhcmMub3V0ZXJSYWRpdXMgLyAxLjUpO1xyXG5cclxuXHRcdFx0Y29uc3QgZm9udFNpemUgPSBNYXRoLm1heCgxMiwgTWF0aC5taW4ocGVyY2VudGFnZSAvIDIsIDE0KSk7XHJcblx0XHRcdGNvbnN0IGJnQ29sb3IgPSBkYXRhc2V0LmJhY2tncm91bmRDb2xvcltpbmRleF0gfHwgJyMwMDAwMCc7XHJcblx0XHRcdHByZXBhcmVUZXh0KGN0eCwgZm9udFNpemUsIGJnQ29sb3IpO1xyXG5cclxuXHRcdFx0Y3R4LmZpbGxUZXh0KGAke3BlcmNlbnRhZ2UudG9GaXhlZCgpfSVgLCB4LCB5KTtcclxuXHRcdH0pO1xyXG5cdH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0JhckNoYXJ0UmV2ZXJzZWQoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pIHtcclxuXHRjb25zdCBzY2FsZXMgPSBjaGFydC5vcHRpb25zLnNjYWxlcztcclxuXHJcblx0Y29uc3QgaXNWZXJ0aWNhbFJldmVyc2VkID0gc2NhbGVzPy55Py5yZXZlcnNlID09PSB0cnVlO1xyXG5cclxuXHRjb25zdCBpc0hvcml6b250YWxSZXZlcnNlZCA9IHNjYWxlcz8ueD8ucmV2ZXJzZSA9PT0gdHJ1ZTtcclxuXHJcblx0cmV0dXJuIHtcclxuXHRcdGlzVmVydGljYWxSZXZlcnNlZCxcclxuXHRcdGlzSG9yaXpvbnRhbFJldmVyc2VkXHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0VGV4dE1ldHJpY3MoY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHRleHQ6IHN0cmluZykge1xyXG5cdGNvbnN0IG1ldHJpY3MgPSBjdHgubWVhc3VyZVRleHQodGV4dCk7XHJcblxyXG5cdGNvbnN0IHRleHRIZWlnaHQgPSBtZXRyaWNzLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50ICsgbWV0cmljcy5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQ7XHJcblx0cmV0dXJuIHtcclxuXHRcdGhlaWdodDogdGV4dEhlaWdodCxcclxuXHRcdHdpZHRoOiBtZXRyaWNzLndpZHRoXHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJlcGFyZVRleHQoY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGZvbnRTaXplOiBudW1iZXIsIGJnQ29sb3I6IHN0cmluZykge1xyXG5cdGNvbnN0IHRleHRDb2xvciA9IGdldFRleHRDb2xvcihiZ0NvbG9yIHx8IGdldENvbG9yKCctLWNoYXJ0LXZhbHVlLWRlZmF1bHQtY29sb3InLCAnIzAwMCcpKTtcclxuXHRjdHguZm9udCA9IGBib2xkICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0Y3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG5cdGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuXHRjdHguZmlsbFN0eWxlID0gdGV4dENvbG9yO1xyXG59XHJcbiJdfQ==
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYWJlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvY2hhcnRzL3BsdWdpbnMvZGF0YS1sYWJlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEQsMEJBQTBCO0FBQzFCLE1BQU0sWUFBWSxHQUFHO0lBQ3BCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsV0FBVyxFQUFFLEVBQUU7SUFDZixlQUFlLEVBQUUsRUFBRTtJQUNuQixXQUFXLEVBQUUsQ0FBQztJQUNkLG1CQUFtQixFQUFFLEdBQUc7SUFDeEIsbUJBQW1CLEVBQUU7UUFDcEIsR0FBRyxFQUFFLEdBQUc7UUFDUixRQUFRLEVBQUUsR0FBRztLQUNiO0lBQ0QsbUJBQW1CLEVBQUU7UUFDcEIsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQix3QkFBd0IsRUFBRSxFQUFFO0tBQzVCO0NBQ1EsQ0FBQztBQXFCWCxjQUFjO0FBQ2QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQjtJQUNqRCxFQUFFLEVBQUUsaUJBQWlCO0lBQ3JCLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTzs7UUFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN0QixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWCxNQUFNLFNBQVMsR0FBRyxNQUFDLEtBQUssQ0FBQyxNQUE2QiwwQ0FBRSxJQUFJLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0MsSUFBSSxRQUFRLEVBQUU7WUFDYixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEI7UUFFRCxHQUFHLENBQUMsT0FB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QkFBa0IsRUFBRSxDQUFBLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLENBQUMsMENBQUUsT0FBTyxNQUFLLElBQUk7UUFDL0Msb0JBQW9CLEVBQUUsQ0FBQSxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxDQUFDLDBDQUFFLE9BQU8sTUFBSyxJQUFJO0tBQ2pELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJjRWxlbWVudCwgQ2hhcnQsIFBsdWdpbiB9IGZyb20gJ2NoYXJ0LmpzJztcclxuaW1wb3J0IHsgQ2hhcnRDb25maWd1cmF0aW9uLCBDaGFydFR5cGUgfSBmcm9tICdjaGFydC5qcy9kaXN0L3R5cGVzJztcclxuaW1wb3J0IEJhckVsZW1lbnQgZnJvbSAnY2hhcnQuanMvZGlzdC9lbGVtZW50cy9lbGVtZW50LmJhcic7XHJcbmltcG9ydCB7IGdldENvbG9yLCBnZXRUZXh0Q29sb3IgfSBmcm9tICcuLi91dGlsaXR5JztcclxuXHJcbi8vIENvbmZpZ3VyYXRpb24gY29uc3RhbnRzXHJcbmNvbnN0IExBQkVMX0NPTkZJRyA9IHtcclxuXHRtaW5Gb250U2l6ZTogMTAsXHJcblx0bWF4Rm9udFNpemU6IDE2LFxyXG5cdGRlZmF1bHRGb250U2l6ZTogMTIsXHJcblx0dGV4dFBhZGRpbmc6IDgsXHJcblx0bWluQW5nbGVGb3JQaWVMYWJlbDogMC4zLCAvLyB+MTcgZGVncmVlc1xyXG5cdGFyY1JhZGl1c011bHRpcGxpZXI6IHtcclxuXHRcdHBpZTogMC43LFxyXG5cdFx0ZG91Z2hudXQ6IDAuOFxyXG5cdH0sXHJcblx0Zm9udFNpemVDYWxjdWxhdGlvbjoge1xyXG5cdFx0cGVyY2VudGFnZURpdmlzb3I6IDMsXHJcblx0XHRtYXhQZXJjZW50YWdlRm9yRm9udFNpemU6IDIwXHJcblx0fVxyXG59IGFzIGNvbnN0O1xyXG5cclxuLy8gVHlwZXNcclxuaW50ZXJmYWNlIFRleHRNZXRyaWNzIHtcclxuXHR3aWR0aDogbnVtYmVyO1xyXG5cdGhlaWdodDogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTGFiZWxEYXRhIHtcclxuXHR0ZXh0OiBzdHJpbmc7XHJcblx0cGVyY2VudGFnZTogbnVtYmVyO1xyXG5cdGJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cdGlzVmlzaWJsZTogYm9vbGVhbjtcclxufVxyXG5cclxuaW50ZXJmYWNlIExhYmVsUG9zaXRpb24ge1xyXG5cdHg6IG51bWJlcjtcclxuXHR5OiBudW1iZXI7XHJcblx0Y29sb3I6IHN0cmluZztcclxufVxyXG5cclxuLy8gTWFpbiBwbHVnaW5cclxuZXhwb3J0IGNvbnN0IGNoYXJ0RGF0YUxhYmVsczogUGx1Z2luPENoYXJ0VHlwZT4gPSB7XHJcblx0aWQ6ICdjaGFydERhdGFMYWJlbHMnLFxyXG5cdGFmdGVyRGF0YXNldHNEcmF3KGNoYXJ0LCBhcmdzLCBwbHVnaW5zKSB7XHJcblx0XHRjb25zdCB7IGN0eCB9ID0gY2hhcnQ7XHJcblx0XHRjdHguc2F2ZSgpO1xyXG5cclxuXHRcdGNvbnN0IGNoYXJ0VHlwZSA9IChjaGFydC5jb25maWcgYXMgQ2hhcnRDb25maWd1cmF0aW9uKT8udHlwZTtcclxuXHRcdGNvbnN0IHJlbmRlcmVyID0gZ2V0Q2hhcnRSZW5kZXJlcihjaGFydFR5cGUpO1xyXG5cclxuXHRcdGlmIChyZW5kZXJlcikge1xyXG5cdFx0XHRyZW5kZXJlcihjaGFydCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y3R4LnJlc3RvcmUoKTtcclxuXHR9XHJcbn07XHJcblxyXG4vLyBDaGFydCB0eXBlIHJvdXRlclxyXG5mdW5jdGlvbiBnZXRDaGFydFJlbmRlcmVyKGNoYXJ0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcblx0Y29uc3QgcmVuZGVyZXJzID0ge1xyXG5cdFx0YmFyOiBiYXJDaGFydExhYmVscyxcclxuXHRcdHBpZTogcGllQ2hhcnRMYWJlbHMsXHJcblx0XHRkb3VnaG51dDogZG91Z2hudXRDaGFydExhYmVsc1xyXG5cdH07XHJcblxyXG5cdHJldHVybiByZW5kZXJlcnNbY2hhcnRUeXBlIGFzIGtleW9mIHR5cGVvZiByZW5kZXJlcnNdO1xyXG59XHJcblxyXG4vLyBDb3JlIHV0aWxpdHkgZnVuY3Rpb25zXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZVBlcmNlbnRhZ2UodmFsdWU6IG51bWJlciwgdG90YWw6IG51bWJlcik6IG51bWJlciB7XHJcblx0cmV0dXJuIHRvdGFsID4gMCA/ICh2YWx1ZSAvIHRvdGFsKSAqIDEwMCA6IDA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZUZvbnRTaXplKHBlcmNlbnRhZ2U6IG51bWJlcik6IG51bWJlciB7XHJcblx0Y29uc3QgeyBwZXJjZW50YWdlRGl2aXNvciwgbWF4UGVyY2VudGFnZUZvckZvbnRTaXplIH0gPSBMQUJFTF9DT05GSUcuZm9udFNpemVDYWxjdWxhdGlvbjtcclxuXHRjb25zdCBjYWxjdWxhdGVkU2l6ZSA9IE1hdGgubWluKHBlcmNlbnRhZ2UgLyBwZXJjZW50YWdlRGl2aXNvciwgbWF4UGVyY2VudGFnZUZvckZvbnRTaXplKTtcclxuXHRyZXR1cm4gTWF0aC5tYXgoTEFCRUxfQ09ORklHLm1pbkZvbnRTaXplLCBNYXRoLm1pbihjYWxjdWxhdGVkU2l6ZSwgTEFCRUxfQ09ORklHLm1heEZvbnRTaXplKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFRleHRNZXRyaWNzKGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB0ZXh0OiBzdHJpbmcsIGZvbnRTaXplOiBudW1iZXIpOiBUZXh0TWV0cmljcyB7XHJcblx0Y3R4LmZvbnQgPSBgbm9ybWFsICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0Y29uc3QgbWV0cmljcyA9IGN0eC5tZWFzdXJlVGV4dCh0ZXh0KTtcclxuXHRjb25zdCBoZWlnaHQgPSBtZXRyaWNzLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50ICsgbWV0cmljcy5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQgfHwgTEFCRUxfQ09ORklHLmRlZmF1bHRGb250U2l6ZTtcclxuXHJcblx0cmV0dXJuIHtcclxuXHRcdHdpZHRoOiBtZXRyaWNzLndpZHRoLFxyXG5cdFx0aGVpZ2h0XHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJlcGFyZUNhbnZhc0ZvclRleHQoY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGZvbnRTaXplOiBudW1iZXIsIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRjdHguZm9udCA9IGBib2xkICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0Y3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG5cdGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuXHRjdHguZmlsbFN0eWxlID0gY29sb3I7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV4dHJhY3RMYWJlbERhdGEoXHJcblx0ZGF0YXNldDogYW55LFxyXG5cdGluZGV4OiBudW1iZXIsXHJcblx0dG90YWxTdW06IG51bWJlcixcclxuXHRjaGFydDogQ2hhcnQ8Q2hhcnRUeXBlLCB1bmtub3duLCB1bmtub3duPlxyXG4pOiBMYWJlbERhdGEgfCBudWxsIHtcclxuXHRjb25zdCB2YWx1ZSA9IGRhdGFzZXQuZGF0YVtpbmRleF0gYXMgbnVtYmVyO1xyXG5cdGNvbnN0IHBlcmNlbnRhZ2UgPSBjYWxjdWxhdGVQZXJjZW50YWdlKHZhbHVlLCB0b3RhbFN1bSk7XHJcblx0Y29uc3QgaXNWaXNpYmxlID0gY2hhcnQuZ2V0RGF0YVZpc2liaWxpdHkoaW5kZXgpO1xyXG5cclxuXHRpZiAoIXBlcmNlbnRhZ2UgfHwgIWlzVmlzaWJsZSkge1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4ge1xyXG5cdFx0dGV4dDogYCR7cGVyY2VudGFnZS50b0ZpeGVkKDEpfSVgLFxyXG5cdFx0cGVyY2VudGFnZSxcclxuXHRcdGJhY2tncm91bmRDb2xvcjogQXJyYXkuaXNBcnJheShkYXRhc2V0LmJhY2tncm91bmRDb2xvcikgPyBkYXRhc2V0LmJhY2tncm91bmRDb2xvcltpbmRleF0gOiBkYXRhc2V0LmJhY2tncm91bmRDb2xvcixcclxuXHRcdGlzVmlzaWJsZVxyXG5cdH07XHJcbn1cclxuXHJcbi8vIEJhciBjaGFydCBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBiYXJDaGFydExhYmVscyhjaGFydDogQ2hhcnQpOiB2b2lkIHtcclxuXHRjb25zdCB7IGN0eCB9ID0gY2hhcnQ7XHJcblx0Y29uc3QgaXNIb3Jpem9udGFsQ2hhcnQgPSBjaGFydC5vcHRpb25zPy5pbmRleEF4aXMgPT09ICd5JztcclxuXHRjb25zdCB7IGlzSG9yaXpvbnRhbFJldmVyc2VkIH0gPSBnZXRCYXJDaGFydE9yaWVudGF0aW9uKGNoYXJ0KTtcclxuXHJcblx0Y2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0LCBkYXRhc2V0SW5kZXgpID0+IHtcclxuXHRcdGNvbnN0IG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShkYXRhc2V0SW5kZXgpO1xyXG5cdFx0Y29uc3QgdG90YWxTdW0gPSAoZGF0YXNldC5kYXRhIGFzIG51bWJlcltdKS5yZWR1Y2UoKHN1bSwgdmFsdWUpID0+IHN1bSArIHZhbHVlLCAwKTtcclxuXHJcblx0XHRtZXRhLmRhdGEuZm9yRWFjaCgoZGF0YVBvaW50OiBCYXJFbGVtZW50LCBpbmRleCkgPT4ge1xyXG5cdFx0XHRpZiAoIWRhdGFQb2ludCkgcmV0dXJuO1xyXG5cclxuXHRcdFx0Y29uc3QgbGFiZWxEYXRhID0gZXh0cmFjdExhYmVsRGF0YShkYXRhc2V0LCBpbmRleCwgdG90YWxTdW0sIGNoYXJ0KTtcclxuXHRcdFx0aWYgKCFsYWJlbERhdGEpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IGZvbnRTaXplID0gY2FsY3VsYXRlRm9udFNpemUobGFiZWxEYXRhLnBlcmNlbnRhZ2UpO1xyXG5cdFx0XHRjb25zdCB0ZXh0TWV0cmljcyA9IGdldFRleHRNZXRyaWNzKGN0eCwgbGFiZWxEYXRhLnRleHQsIGZvbnRTaXplKTtcclxuXHJcblx0XHRcdGNvbnN0IHBvc2l0aW9uID0gY2FsY3VsYXRlQmFyTGFiZWxQb3NpdGlvbihcclxuXHRcdFx0XHRkYXRhUG9pbnQsXHJcblx0XHRcdFx0dGV4dE1ldHJpY3MsXHJcblx0XHRcdFx0aXNIb3Jpem9udGFsQ2hhcnQsXHJcblx0XHRcdFx0aXNIb3Jpem9udGFsUmV2ZXJzZWQsXHJcblx0XHRcdFx0bGFiZWxEYXRhLmJhY2tncm91bmRDb2xvclxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0aWYgKHBvc2l0aW9uKSB7XHJcblx0XHRcdFx0cHJlcGFyZUNhbnZhc0ZvclRleHQoY3R4LCBmb250U2l6ZSwgcG9zaXRpb24uY29sb3IpO1xyXG5cdFx0XHRcdGN0eC5maWxsVGV4dChsYWJlbERhdGEudGV4dCwgcG9zaXRpb24ueCwgcG9zaXRpb24ueSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxjdWxhdGVCYXJMYWJlbFBvc2l0aW9uKFxyXG5cdGRhdGFQb2ludDogQmFyRWxlbWVudCxcclxuXHR0ZXh0TWV0cmljczogVGV4dE1ldHJpY3MsXHJcblx0aXNIb3Jpem9udGFsOiBib29sZWFuLFxyXG5cdGlzUmV2ZXJzZWQ6IGJvb2xlYW4sXHJcblx0YmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWRcclxuKTogTGFiZWxQb3NpdGlvbiB8IG51bGwge1xyXG5cdGNvbnN0IHsgdGV4dFBhZGRpbmcgfSA9IExBQkVMX0NPTkZJRztcclxuXHJcblx0aWYgKGlzSG9yaXpvbnRhbCkge1xyXG5cdFx0Y29uc3QgZml0c0luc2lkZSA9IHRleHRNZXRyaWNzLndpZHRoICsgdGV4dFBhZGRpbmcgKiAyIDw9IGRhdGFQb2ludC53aWR0aDtcclxuXHJcblx0XHRpZiAoZml0c0luc2lkZSkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHg6IGRhdGFQb2ludC54ICsgKGlzUmV2ZXJzZWQgPyB0ZXh0TWV0cmljcy53aWR0aCAvIDIgOiAtdGV4dE1ldHJpY3Mud2lkdGggLyAyKSxcclxuXHRcdFx0XHR5OiBkYXRhUG9pbnQueSxcclxuXHRcdFx0XHRjb2xvcjogZ2V0VGV4dENvbG9yKGJhY2tncm91bmRDb2xvcilcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0eDogZGF0YVBvaW50LnggKyAoaXNSZXZlcnNlZCA/IC10ZXh0TWV0cmljcy53aWR0aCAvIDIgLSB0ZXh0UGFkZGluZyA6IHRleHRNZXRyaWNzLndpZHRoIC8gMiArIHRleHRQYWRkaW5nKSxcclxuXHRcdFx0XHR5OiBkYXRhUG9pbnQueSxcclxuXHRcdFx0XHRjb2xvcjogZ2V0Q29sb3IoJy0tY2hhcnQtdmFsdWUtZGVmYXVsdC1jb2xvcicsICcjMDAwJylcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHR9IGVsc2Uge1xyXG5cdFx0Y29uc3QgZml0c0luc2lkZSA9IHRleHRNZXRyaWNzLmhlaWdodCArIHRleHRQYWRkaW5nICogMiA8PSBkYXRhUG9pbnQuaGVpZ2h0O1xyXG5cclxuXHRcdGlmIChmaXRzSW5zaWRlKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0eDogZGF0YVBvaW50LngsXHJcblx0XHRcdFx0eTogZGF0YVBvaW50LnksXHJcblx0XHRcdFx0Y29sb3I6IGdldFRleHRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpXHJcblx0XHRcdH07XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHg6IGRhdGFQb2ludC54LFxyXG5cdFx0XHRcdHk6IGRhdGFQb2ludC55IC0gdGV4dE1ldHJpY3MuaGVpZ2h0IC8gMiAtIHRleHRQYWRkaW5nLFxyXG5cdFx0XHRcdGNvbG9yOiBnZXRDb2xvcignLS1jaGFydC12YWx1ZS1kZWZhdWx0LWNvbG9yJywgJyMwMDAnKVxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLy8gUGllIGNoYXJ0IGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIHBpZUNoYXJ0TGFiZWxzKGNoYXJ0OiBDaGFydDxDaGFydFR5cGUsIHVua25vd24sIHVua25vd24+KTogdm9pZCB7XHJcblx0cmVuZGVyQXJjTGFiZWxzKGNoYXJ0LCAncGllJyk7XHJcbn1cclxuXHJcbi8vIERvdWdobnV0IGNoYXJ0IGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGRvdWdobnV0Q2hhcnRMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pOiB2b2lkIHtcclxuXHRyZW5kZXJBcmNMYWJlbHMoY2hhcnQsICdkb3VnaG51dCcpO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZW5kZXJBcmNMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4sIGNoYXJ0VHlwZTogJ3BpZScgfCAnZG91Z2hudXQnKTogdm9pZCB7XHJcblx0Y29uc3QgeyBjdHggfSA9IGNoYXJ0O1xyXG5cclxuXHRjaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xyXG5cdFx0Y29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XHJcblx0XHRjb25zdCB0b3RhbFN1bSA9IChkYXRhc2V0LmRhdGEgYXMgbnVtYmVyW10pLnJlZHVjZSgoc3VtLCB2YWx1ZSkgPT4gc3VtICsgdmFsdWUsIDApO1xyXG5cclxuXHRcdG1ldGEuZGF0YS5mb3JFYWNoKChhcmM6IEFyY0VsZW1lbnQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmICghYXJjKSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBsYWJlbERhdGEgPSBleHRyYWN0TGFiZWxEYXRhKGRhdGFzZXQsIGluZGV4LCB0b3RhbFN1bSwgY2hhcnQpO1xyXG5cdFx0XHRpZiAoIWxhYmVsRGF0YSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0aWYgKHNob3VsZFNob3dBcmNMYWJlbChhcmMsIGxhYmVsRGF0YS50ZXh0LCBjaGFydFR5cGUpKSB7XHJcblx0XHRcdFx0Y29uc3QgcG9zaXRpb24gPSBjYWxjdWxhdGVBcmNMYWJlbFBvc2l0aW9uKGFyYywgY2hhcnRUeXBlKTtcclxuXHRcdFx0XHRjb25zdCBmb250U2l6ZSA9IGNhbGN1bGF0ZUZvbnRTaXplKGxhYmVsRGF0YS5wZXJjZW50YWdlKTtcclxuXHRcdFx0XHRjb25zdCB0ZXh0Q29sb3IgPSBnZXRUZXh0Q29sb3IobGFiZWxEYXRhLmJhY2tncm91bmRDb2xvciB8fCAnIzAwMDAwMCcpO1xyXG5cclxuXHRcdFx0XHRwcmVwYXJlQ2FudmFzRm9yVGV4dChjdHgsIGZvbnRTaXplLCB0ZXh0Q29sb3IpO1xyXG5cdFx0XHRcdGN0eC5maWxsVGV4dChsYWJlbERhdGEudGV4dCwgcG9zaXRpb24ueCwgcG9zaXRpb24ueSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzaG91bGRTaG93QXJjTGFiZWwoYXJjOiBBcmNFbGVtZW50LCB0ZXh0OiBzdHJpbmcsIGNoYXJ0VHlwZTogJ3BpZScgfCAnZG91Z2hudXQnKTogYm9vbGVhbiB7XHJcblx0Y29uc3QgYXJjQW5nbGUgPSBNYXRoLmFicyhhcmMuZW5kQW5nbGUgLSBhcmMuc3RhcnRBbmdsZSk7XHJcblxyXG5cdC8vIERvbid0IHNob3cgbGFiZWxzIGZvciB2ZXJ5IHNtYWxsIHNsaWNlc1xyXG5cdGlmIChhcmNBbmdsZSA8IExBQkVMX0NPTkZJRy5taW5BbmdsZUZvclBpZUxhYmVsKSB7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHQvLyBGb3IgZG91Z2hudXQgY2hhcnRzLCBhbHNvIGNoZWNrIGlmIHRoZXJlJ3MgZW5vdWdoIHJhZGlhbCBzcGFjZVxyXG5cdGlmIChjaGFydFR5cGUgPT09ICdkb3VnaG51dCcpIHtcclxuXHRcdGNvbnN0IHJhZGlhbFNwYWNlID0gYXJjLm91dGVyUmFkaXVzIC0gYXJjLmlubmVyUmFkaXVzO1xyXG5cdFx0cmV0dXJuIHJhZGlhbFNwYWNlID49IExBQkVMX0NPTkZJRy5kZWZhdWx0Rm9udFNpemUgKiAxLjU7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsY3VsYXRlQXJjTGFiZWxQb3NpdGlvbihhcmM6IEFyY0VsZW1lbnQsIGNoYXJ0VHlwZTogJ3BpZScgfCAnZG91Z2hudXQnKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHtcclxuXHRjb25zdCBtaWRBbmdsZSA9IChhcmMuc3RhcnRBbmdsZSArIGFyYy5lbmRBbmdsZSkgLyAyO1xyXG5cdGNvbnN0IHJhZGl1c011bHRpcGxpZXIgPSBMQUJFTF9DT05GSUcuYXJjUmFkaXVzTXVsdGlwbGllcltjaGFydFR5cGVdO1xyXG5cclxuXHRsZXQgcmFkaXVzOiBudW1iZXI7XHJcblx0aWYgKGNoYXJ0VHlwZSA9PT0gJ2RvdWdobnV0Jykge1xyXG5cdFx0cmFkaXVzID0gKGFyYy5vdXRlclJhZGl1cyArIGFyYy5pbm5lclJhZGl1cykgLyAyO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRyYWRpdXMgPSBhcmMub3V0ZXJSYWRpdXMgKiByYWRpdXNNdWx0aXBsaWVyO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHtcclxuXHRcdHg6IGFyYy54ICsgTWF0aC5jb3MobWlkQW5nbGUpICogcmFkaXVzLFxyXG5cdFx0eTogYXJjLnkgKyBNYXRoLnNpbihtaWRBbmdsZSkgKiByYWRpdXNcclxuXHR9O1xyXG59XHJcblxyXG4vLyBVdGlsaXR5IGZ1bmN0aW9uc1xyXG5mdW5jdGlvbiBnZXRCYXJDaGFydE9yaWVudGF0aW9uKGNoYXJ0OiBDaGFydDxDaGFydFR5cGUsIHVua25vd24sIHVua25vd24+KSB7XHJcblx0Y29uc3Qgc2NhbGVzID0gY2hhcnQub3B0aW9ucy5zY2FsZXM7XHJcblx0cmV0dXJuIHtcclxuXHRcdGlzVmVydGljYWxSZXZlcnNlZDogc2NhbGVzPy55Py5yZXZlcnNlID09PSB0cnVlLFxyXG5cdFx0aXNIb3Jpem9udGFsUmV2ZXJzZWQ6IHNjYWxlcz8ueD8ucmV2ZXJzZSA9PT0gdHJ1ZVxyXG5cdH07XHJcbn1cclxuIl19
@@ -71,4 +71,16 @@ export function createColorVariants(color, length, type = 'tint', amount = 43) {
71
71
  }
72
72
  return variants;
73
73
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL2NoYXJ0cy91dGlsaXR5L2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFFckMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFhLEVBQUUsT0FBZTtJQUM1RCxJQUFJLEtBQUssR0FBRyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDdEQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQUs7SUFDL0IsdURBQXVEO0lBQ3ZELFNBQVMsY0FBYyxDQUFDLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0MsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUN0QyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxD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QU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7U0FDckY7S0FDRDtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sb3JMaWIgZnJvbSAnQGt1cmtsZS9jb2xvcic7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwYXJlbnRpemUodmFsdWU6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyKSB7XHJcblx0dmFyIGFscGhhID0gb3BhY2l0eSA9PT0gdW5kZWZpbmVkID8gMC41IDogMSAtIG9wYWNpdHk7XHJcblx0cmV0dXJuIGNvbG9yTGliKHZhbHVlKS5hbHBoYShhbHBoYSkucmdiU3RyaW5nKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb2xvclRvSGV4KGNvbG9yKSB7XHJcblx0Ly8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBzaW5nbGUgY29tcG9uZW50IHRvIGhleFxyXG5cdGZ1bmN0aW9uIGNvbXBvbmVudFRvSGV4KGMpIHtcclxuXHRcdGNvbnN0IGhleCA9IGMudG9TdHJpbmcoMTYpO1xyXG5cdFx0cmV0dXJuIGhleC5sZW5ndGggPT09IDEgPyAnMCcgKyBoZXggOiBoZXg7XHJcblx0fVxyXG5cclxuXHQvLyBIZWxwZXIgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYW5kIHBhcnNlIGEgY29sb3IgY29tcG9uZW50XHJcblx0ZnVuY3Rpb24gcGFyc2VDb21wb25lbnQodmFsdWUsIG1heFZhbHVlKSB7XHJcblx0XHR2YWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG5cdFx0cmV0dXJuIGlzTmFOKHZhbHVlKSA/IDAgOiBNYXRoLm1pbihtYXhWYWx1ZSwgTWF0aC5tYXgoMCwgdmFsdWUpKTtcclxuXHR9XHJcblxyXG5cdGlmICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnKSB7XHJcblx0XHQvLyBJZiB0aGUgaW5wdXQgaXMgYSBzdHJpbmcsIGF0dGVtcHQgdG8gcGFyc2UgaXQgYXMgYSBDU1MgY29sb3JcclxuXHRcdGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHRcdHRlbXBEaXYuc3R5bGUuY29sb3IgPSBjb2xvcjtcclxuXHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVtcERpdik7XHJcblx0XHRjb25zdCBjb21wdXRlZENvbG9yID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGVtcERpdikuY29sb3I7XHJcblx0XHRkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlbXBEaXYpO1xyXG5cdFx0Y29sb3IgPSBjb21wdXRlZENvbG9yO1xyXG5cdH1cclxuXHJcblx0aWYgKGNvbG9yLnN0YXJ0c1dpdGgoJyMnKSkge1xyXG5cdFx0Ly8gSGV4YWRlY2ltYWwgY29sb3JcclxuXHRcdHJldHVybiBjb2xvci50b1VwcGVyQ2FzZSgpO1xyXG5cdH0gZWxzZSBpZiAoY29sb3Iuc3RhcnRzV2l0aCgncmdiJykgfHwgY29sb3Iuc3RhcnRzV2l0aCgnaHNsJykpIHtcclxuXHRcdC8vIFJHQiwgUkdCQSwgSFNMLCBIU0xBIGNvbG9yXHJcblx0XHRjb25zdCByZ2JhID0gY29sb3IubWF0Y2goLygwP1xcLj9cXGR7MSwzfSklP1xcYi9nKS5tYXAoKGNvbXBvbmVudCwgaW5kZXgpID0+IHtcclxuXHRcdFx0cmV0dXJuIGluZGV4IDwgMyA/IE1hdGgucm91bmQocGFyc2VDb21wb25lbnQoY29tcG9uZW50LCAyNTUpKSA6IHBhcnNlRmxvYXQoY29tcG9uZW50KTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHJldHVybiBgIyR7Y29tcG9uZW50VG9IZXgocmdiYVswXSl9JHtjb21wb25lbnRUb0hleChyZ2JhWzFdKX0ke2NvbXBvbmVudFRvSGV4KHJnYmFbMl0pfWA7XHJcblx0fVxyXG5cclxuXHQvLyBVbnN1cHBvcnRlZCBjb2xvciBmb3JtYXQsIHJldHVybiBpbnB1dFxyXG5cdHJldHVybiBjb2xvcjtcclxufVxyXG5cclxuLy8gRnVuY3Rpb24gdG8gY29udmVydCBoZXggdG8gUkdCXHJcbmV4cG9ydCBmdW5jdGlvbiBoZXhUb1JnYihoZXg6IHN0cmluZyk6IHsgcjogbnVtYmVyOyBnOiBudW1iZXI7IGI6IG51bWJlciB9IHtcclxuXHRsZXQgciA9IHBhcnNlSW50KGhleC5zbGljZSgxLCAzKSwgMTYpO1xyXG5cdGxldCBnID0gcGFyc2VJbnQoaGV4LnNsaWNlKDMsIDUpLCAxNik7XHJcblx0bGV0IGIgPSBwYXJzZUludChoZXguc2xpY2UoNSwgNyksIDE2KTtcclxuXHRyZXR1cm4geyByLCBnLCBiIH07XHJcbn1cclxuXHJcbi8vIEZ1bmN0aW9uIHRvIGNvbnZlcnQgUkdCIHRvIGhleFxyXG5leHBvcnQgZnVuY3Rpb24gcmdiVG9IZXgocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IHN0cmluZyB7XHJcblx0cmV0dXJuIGAjJHsoKDEgPDwgMjQpICsgKHIgPDwgMTYpICsgKGcgPDwgOCkgKyBiKS50b1N0cmluZygxNikuc2xpY2UoMSkudG9VcHBlckNhc2UoKX1gO1xyXG59XHJcblxyXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgYSB0aW50IChsaWdodGVuIHRoZSBjb2xvcilcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRpbnQoY29sb3I6IHN0cmluZywgYW1vdW50OiBudW1iZXIpOiBzdHJpbmcge1xyXG5cdGNvbnN0IHsgciwgZywgYiB9ID0gaGV4VG9SZ2IoY29sb3IpO1xyXG5cdHJldHVybiByZ2JUb0hleChNYXRoLm1pbigyNTUsIHIgKyBhbW91bnQpLCBNYXRoLm1pbigyNTUsIGcgKyBhbW91bnQpLCBNYXRoLm1pbigyNTUsIGIgKyBhbW91bnQpKTtcclxufVxyXG5cclxuLy8gRnVuY3Rpb24gdG8gY3JlYXRlIGEgc2hhZGUgKGRhcmtlbiB0aGUgY29sb3IpXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGFkZShjb2xvcjogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XHJcblx0Y29uc3QgeyByLCBnLCBiIH0gPSBoZXhUb1JnYihjb2xvcik7XHJcblx0cmV0dXJuIHJnYlRvSGV4KE1hdGgubWF4KDAsIHIgLSBhbW91bnQpLCBNYXRoLm1heCgwLCBnIC0gYW1vdW50KSwgTWF0aC5tYXgoMCwgYiAtIGFtb3VudCkpO1xyXG59XHJcblxyXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgbXVsdGlwbGUgdGludHMgb3Igc2hhZGVzXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb2xvclZhcmlhbnRzKFxyXG5cdGNvbG9yOiBzdHJpbmcsXHJcblx0bGVuZ3RoOiBudW1iZXIsXHJcblx0dHlwZTogJ3RpbnQnIHwgJ3NoYWRlJyA9ICd0aW50JyxcclxuXHRhbW91bnQgPSA0M1xyXG4pOiBzdHJpbmdbXSB7XHJcblx0bGV0IHZhcmlhbnRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cdGZvciAobGV0IGkgPSAxOyBpIDw9IGxlbmd0aDsgaSsrKSB7XHJcblx0XHRpZiAodHlwZSA9PT0gJ3RpbnQnKSB7XHJcblx0XHRcdHZhcmlhbnRzLnB1c2goY3JlYXRlVGludChjb2xvciwgaSAqIGFtb3VudCkpOyAvLyBBZGp1c3QgdGhlIHN0ZXAgc2l6ZSAoaGVyZSBpdCdzIDQwKVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dmFyaWFudHMucHVzaChjcmVhdGVTaGFkZShjb2xvciwgaSAqIGFtb3VudCkpOyAvLyBBZGp1c3QgdGhlIHN0ZXAgc2l6ZSAoaGVyZSBpdCdzIDIwKVxyXG5cdFx0fVxyXG5cdH1cclxuXHRyZXR1cm4gdmFyaWFudHM7XHJcbn1cclxuIl19
74
+ export function createConicGradient(chart, colors) {
75
+ const { ctx, chartArea } = chart;
76
+ if (!chartArea || !('createConicGradient' in ctx)) {
77
+ return null;
78
+ }
79
+ const { left, width, top, height } = chartArea;
80
+ //@ts-ignore
81
+ const gradient = ctx.createConicGradient(0, left + width / 2, top + height / 2);
82
+ gradient.addColorStop(0, colors === null || colors === void 0 ? void 0 : colors.startColor);
83
+ gradient.addColorStop(1, colors === null || colors === void 0 ? void 0 : colors.endColor);
84
+ return gradient;
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL2NoYXJ0cy91dGlsaXR5L2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFHckMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFhLEVBQUUsT0FBZTtJQUM1RCxJQUFJLEtBQUssR0FBRyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDdEQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQUs7SUFDL0IsdURBQXVEO0lBQ3ZELFNBQVMsY0FBYyxDQUFDLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0MsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUN0QyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxD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QU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7U0FDckY7S0FDRDtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBWSxFQUFFLE1BQWdEO0lBQ2pHLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLHFCQUFxQixJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBRS9DLFlBQVk7SUFDWixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsQ0FBRSxDQUFDO0lBQzlDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLENBQUMsQ0FBQztJQUUzQyxPQUFPLFFBQVEsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9yTGliIGZyb20gJ0BrdXJrbGUvY29sb3InO1xyXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3BhcmVudGl6ZSh2YWx1ZTogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIpIHtcclxuXHR2YXIgYWxwaGEgPSBvcGFjaXR5ID09PSB1bmRlZmluZWQgPyAwLjUgOiAxIC0gb3BhY2l0eTtcclxuXHRyZXR1cm4gY29sb3JMaWIodmFsdWUpLmFscGhhKGFscGhhKS5yZ2JTdHJpbmcoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yVG9IZXgoY29sb3IpIHtcclxuXHQvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIHNpbmdsZSBjb21wb25lbnQgdG8gaGV4XHJcblx0ZnVuY3Rpb24gY29tcG9uZW50VG9IZXgoYykge1xyXG5cdFx0Y29uc3QgaGV4ID0gYy50b1N0cmluZygxNik7XHJcblx0XHRyZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/ICcwJyArIGhleCA6IGhleDtcclxuXHR9XHJcblxyXG5cdC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhbmQgcGFyc2UgYSBjb2xvciBjb21wb25lbnRcclxuXHRmdW5jdGlvbiBwYXJzZUNvbXBvbmVudCh2YWx1ZSwgbWF4VmFsdWUpIHtcclxuXHRcdHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcblx0XHRyZXR1cm4gaXNOYU4odmFsdWUpID8gMCA6IE1hdGgubWluKG1heFZhbHVlLCBNYXRoLm1heCgwLCB2YWx1ZSkpO1xyXG5cdH1cclxuXHJcblx0aWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycpIHtcclxuXHRcdC8vIElmIHRoZSBpbnB1dCBpcyBhIHN0cmluZywgYXR0ZW1wdCB0byBwYXJzZSBpdCBhcyBhIENTUyBjb2xvclxyXG5cdFx0Y29uc3QgdGVtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG5cdFx0dGVtcERpdi5zdHlsZS5jb2xvciA9IGNvbG9yO1xyXG5cdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZW1wRGl2KTtcclxuXHRcdGNvbnN0IGNvbXB1dGVkQ29sb3IgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZW1wRGl2KS5jb2xvcjtcclxuXHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVtcERpdik7XHJcblx0XHRjb2xvciA9IGNvbXB1dGVkQ29sb3I7XHJcblx0fVxyXG5cclxuXHRpZiAoY29sb3Iuc3RhcnRzV2l0aCgnIycpKSB7XHJcblx0XHQvLyBIZXhhZGVjaW1hbCBjb2xvclxyXG5cdFx0cmV0dXJuIGNvbG9yLnRvVXBwZXJDYXNlKCk7XHJcblx0fSBlbHNlIGlmIChjb2xvci5zdGFydHNXaXRoKCdyZ2InKSB8fCBjb2xvci5zdGFydHNXaXRoKCdoc2wnKSkge1xyXG5cdFx0Ly8gUkdCLCBSR0JBLCBIU0wsIEhTTEEgY29sb3JcclxuXHRcdGNvbnN0IHJnYmEgPSBjb2xvci5tYXRjaCgvKDA/XFwuP1xcZHsxLDN9KSU/XFxiL2cpLm1hcCgoY29tcG9uZW50LCBpbmRleCkgPT4ge1xyXG5cdFx0XHRyZXR1cm4gaW5kZXggPCAzID8gTWF0aC5yb3VuZChwYXJzZUNvbXBvbmVudChjb21wb25lbnQsIDI1NSkpIDogcGFyc2VGbG9hdChjb21wb25lbnQpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIGAjJHtjb21wb25lbnRUb0hleChyZ2JhWzBdKX0ke2NvbXBvbmVudFRvSGV4KHJnYmFbMV0pfSR7Y29tcG9uZW50VG9IZXgocmdiYVsyXSl9YDtcclxuXHR9XHJcblxyXG5cdC8vIFVuc3VwcG9ydGVkIGNvbG9yIGZvcm1hdCwgcmV0dXJuIGlucHV0XHJcblx0cmV0dXJuIGNvbG9yO1xyXG59XHJcblxyXG4vLyBGdW5jdGlvbiB0byBjb252ZXJ0IGhleCB0byBSR0JcclxuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogeyByOiBudW1iZXI7IGc6IG51bWJlcjsgYjogbnVtYmVyIH0ge1xyXG5cdGxldCByID0gcGFyc2VJbnQoaGV4LnNsaWNlKDEsIDMpLCAxNik7XHJcblx0bGV0IGcgPSBwYXJzZUludChoZXguc2xpY2UoMywgNSksIDE2KTtcclxuXHRsZXQgYiA9IHBhcnNlSW50KGhleC5zbGljZSg1LCA3KSwgMTYpO1xyXG5cdHJldHVybiB7IHIsIGcsIGIgfTtcclxufVxyXG5cclxuLy8gRnVuY3Rpb24gdG8gY29udmVydCBSR0IgdG8gaGV4XHJcbmV4cG9ydCBmdW5jdGlvbiByZ2JUb0hleChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogc3RyaW5nIHtcclxuXHRyZXR1cm4gYCMkeygoMSA8PCAyNCkgKyAociA8PCAxNikgKyAoZyA8PCA4KSArIGIpLnRvU3RyaW5nKDE2KS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfWA7XHJcbn1cclxuXHJcbi8vIEZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHRpbnQgKGxpZ2h0ZW4gdGhlIGNvbG9yKVxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGludChjb2xvcjogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XHJcblx0Y29uc3QgeyByLCBnLCBiIH0gPSBoZXhUb1JnYihjb2xvcik7XHJcblx0cmV0dXJuIHJnYlRvSGV4KE1hdGgubWluKDI1NSwgciArIGFtb3VudCksIE1hdGgubWluKDI1NSwgZyArIGFtb3VudCksIE1hdGgubWluKDI1NSwgYiArIGFtb3VudCkpO1xyXG59XHJcblxyXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgYSBzaGFkZSAoZGFya2VuIHRoZSBjb2xvcilcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoYWRlKGNvbG9yOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuXHRjb25zdCB7IHIsIGcsIGIgfSA9IGhleFRvUmdiKGNvbG9yKTtcclxuXHRyZXR1cm4gcmdiVG9IZXgoTWF0aC5tYXgoMCwgciAtIGFtb3VudCksIE1hdGgubWF4KDAsIGcgLSBhbW91bnQpLCBNYXRoLm1heCgwLCBiIC0gYW1vdW50KSk7XHJcbn1cclxuXHJcbi8vIEZ1bmN0aW9uIHRvIGNyZWF0ZSBtdWx0aXBsZSB0aW50cyBvciBzaGFkZXNcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbG9yVmFyaWFudHMoXHJcblx0Y29sb3I6IHN0cmluZyxcclxuXHRsZW5ndGg6IG51bWJlcixcclxuXHR0eXBlOiAndGludCcgfCAnc2hhZGUnID0gJ3RpbnQnLFxyXG5cdGFtb3VudCA9IDQzXHJcbik6IHN0cmluZ1tdIHtcclxuXHRsZXQgdmFyaWFudHM6IHN0cmluZ1tdID0gW107XHJcblx0Zm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuZ3RoOyBpKyspIHtcclxuXHRcdGlmICh0eXBlID09PSAndGludCcpIHtcclxuXHRcdFx0dmFyaWFudHMucHVzaChjcmVhdGVUaW50KGNvbG9yLCBpICogYW1vdW50KSk7IC8vIEFkanVzdCB0aGUgc3RlcCBzaXplIChoZXJlIGl0J3MgNDApXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR2YXJpYW50cy5wdXNoKGNyZWF0ZVNoYWRlKGNvbG9yLCBpICogYW1vdW50KSk7IC8vIEFkanVzdCB0aGUgc3RlcCBzaXplIChoZXJlIGl0J3MgMjApXHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiB2YXJpYW50cztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmljR3JhZGllbnQoY2hhcnQ6IENoYXJ0LCBjb2xvcnM6IHsgc3RhcnRDb2xvcjogc3RyaW5nOyBlbmRDb2xvcjogc3RyaW5nIH0pIHtcclxuXHRjb25zdCB7IGN0eCwgY2hhcnRBcmVhIH0gPSBjaGFydDtcclxuXHRpZiAoIWNoYXJ0QXJlYSB8fCAhKCdjcmVhdGVDb25pY0dyYWRpZW50JyBpbiBjdHgpKSB7XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdGNvbnN0IHsgbGVmdCwgd2lkdGgsIHRvcCwgaGVpZ2h0IH0gPSBjaGFydEFyZWE7XHJcblxyXG5cdC8vQHRzLWlnbm9yZVxyXG5cdGNvbnN0IGdyYWRpZW50ID0gY3R4LmNyZWF0ZUNvbmljR3JhZGllbnQoMCwgbGVmdCArIHdpZHRoIC8gMiwgdG9wICsgaGVpZ2h0IC8gMik7XHJcblx0Z3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGNvbG9ycz8uc3RhcnRDb2xvciApO1xyXG5cdGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBjb2xvcnM/LmVuZENvbG9yKTtcclxuXHJcblx0cmV0dXJuIGdyYWRpZW50O1xyXG59XHJcbiJdfQ==
@@ -11,9 +11,9 @@ export class BaseChart extends DestroySubject {
11
11
  this.injector = injector;
12
12
  this._translateService = this.injector.get(TranslateService);
13
13
  this._rebuildTriggerSub = new BehaviorSubject(false);
14
- this._dataSub = new ReplaySubject(null);
15
14
  this._configSub = new ReplaySubject(null);
16
15
  this._isInitialized = false;
16
+ this._dataSub = new ReplaySubject(null);
17
17
  this.onReady = new EventEmitter();
18
18
  this._subscribeToLanguage();
19
19
  }
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
58
58
  }], onReady: [{
59
59
  type: Output
60
60
  }] } });
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9iYXNlL2Jhc2UtY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBR3ZCLE1BQU0sT0FBZ0IsU0FBYSxTQUFRLGNBQWM7SUF5Q3hELFlBQW1CLFFBQWtCO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRFUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXRDM0Isc0JBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRSxhQUFRLEdBQUcsSUFBSSxhQUFhLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBQ3hELGVBQVUsR0FBRyxJQUFJLGFBQWEsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUV4QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQStCdkIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFJN0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQWpDRCxJQUFhLElBQUksQ0FBQyxJQUF5QjtRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFHRCxJQUFhLE1BQU0sQ0FBQyxNQUFTO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQixDQUFDO0lBR0QsSUFBYSxRQUFRLENBQUMsS0FBb0I7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQVNTLG9CQUFvQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWTthQUNqQyxJQUFJLENBQ0osb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFDakMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDeEI7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUdBeERvQixTQUFTOzJGQUFULFNBQVM7NEZBQVQsU0FBUztrQkFEOUIsU0FBUzsrRkFZSSxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBVU8sUUFBUTtzQkFBcEIsS0FBSztnQkFRSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgQ2hhcnQgZnJvbSAnY2hhcnQuanMvYXV0byc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDcml0ZXJpYU1vZGVsLCBSZXBvcnRSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNoYXJ0PFQ+IGV4dGVuZHMgRGVzdHJveVN1YmplY3Qge1xyXG5cdHB1YmxpYyBhYnN0cmFjdCByZXBvcnQkOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG5cdHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBfcmVidWlsZFRyaWdnZXJTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwcm90ZWN0ZWQgX2RhdGFTdWIgPSBuZXcgUmVwbGF5U3ViamVjdDxSZXBvcnRSZXNwb25zZU1vZGVsPihudWxsKTtcclxuXHRwcm90ZWN0ZWQgX2NvbmZpZ1N1YiA9IG5ldyBSZXBsYXlTdWJqZWN0PFQ+KG51bGwpO1xyXG5cclxuXHRwcm90ZWN0ZWQgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHRwcml2YXRlIF9kYXRhOiBSZXBvcnRSZXNwb25zZU1vZGVsO1xyXG5cclxuXHRASW5wdXQoKSBzZXQgZGF0YShkYXRhOiBSZXBvcnRSZXNwb25zZU1vZGVsKSB7XHJcblx0XHR0aGlzLl9kYXRhID0gZGF0YTtcclxuXHRcdHRoaXMuX2RhdGFTdWIubmV4dChkYXRhKTtcclxuXHR9XHJcblxyXG5cdGdldCBkYXRhKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RhdGE7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9jb25maWc6IFQ7XHJcblx0QElucHV0KCkgc2V0IGNvbmZpZyhjb25maWc6IFQpIHtcclxuXHRcdHRoaXMuX2NvbmZpZyA9IF8uY2xvbmVEZWVwKGNvbmZpZyk7XHJcblx0XHR0aGlzLl9jb25maWdTdWIubmV4dCh0aGlzLl9jb25maWcpO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25maWc7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIF9jcml0ZXJpYTogQ3JpdGVyaWFNb2RlbDtcclxuXHRASW5wdXQoKSBzZXQgY3JpdGVyaWEodmFsdWU6IENyaXRlcmlhTW9kZWwpIHtcclxuXHRcdHRoaXMuX2NyaXRlcmlhID0gXy5jbG9uZURlZXAodmFsdWUpO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNyaXRlcmlhKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2NyaXRlcmlhO1xyXG5cdH1cclxuXHJcblx0QE91dHB1dCgpIG9uUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPENoYXJ0PigpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcblx0XHRzdXBlcigpO1xyXG5cdFx0dGhpcy5fc3Vic2NyaWJlVG9MYW5ndWFnZSgpO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIF9zdWJzY3JpYmVUb0xhbmd1YWdlKCkge1xyXG5cdFx0dGhpcy5fdHJhbnNsYXRlU2VydmljZS5vbkxhbmdDaGFuZ2VcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0ZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZSwgbmV4dCkgPT4gcHJlLmxhbmcgPT0gbmV4dC5sYW5nKSxcclxuXHRcdFx0XHRmaWx0ZXIoKCkgPT4gdGhpcy5faXNJbml0aWFsaXplZCksXHJcblx0XHRcdFx0dGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgoXykgPT4ge1xyXG5cdFx0XHRcdHRoaXMuX3JlYnVpbGRUcmlnZ2VyU3ViLm5leHQodHJ1ZSk7XHJcblx0XHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9iYXNlL2Jhc2UtY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBR3ZCLE1BQU0sT0FBZ0IsU0FBYSxTQUFRLGNBQWM7SUEwQ3hELFlBQW1CLFFBQWtCO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRFUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXZDM0Isc0JBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRSxlQUFVLEdBQUcsSUFBSSxhQUFhLENBQUksSUFBSSxDQUFDLENBQUM7UUFHeEMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQThCeEQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFJN0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQWpDRCxJQUFhLElBQUksQ0FBQyxJQUF5QjtRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFHRCxJQUFhLE1BQU0sQ0FBQyxNQUFTO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQixDQUFDO0lBR0QsSUFBYSxRQUFRLENBQUMsS0FBb0I7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQVNTLG9CQUFvQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWTthQUNqQyxJQUFJLENBQ0osb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFDakMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDeEI7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUdBekRvQixTQUFTOzJGQUFULFNBQVM7NEZBQVQsU0FBUztrQkFEOUIsU0FBUzsrRkFhSSxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBVU8sUUFBUTtzQkFBcEIsS0FBSztnQkFRSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgQ2hhcnQgZnJvbSAnY2hhcnQuanMvYXV0byc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDcml0ZXJpYU1vZGVsLCBSZXBvcnRSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNoYXJ0PFQ+IGV4dGVuZHMgRGVzdHJveVN1YmplY3Qge1xyXG5cdHB1YmxpYyBhYnN0cmFjdCByZXBvcnQkOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG5cdHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBfcmVidWlsZFRyaWdnZXJTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwcm90ZWN0ZWQgX2NvbmZpZ1N1YiA9IG5ldyBSZXBsYXlTdWJqZWN0PFQ+KG51bGwpO1xyXG5cclxuXHJcblx0cHJvdGVjdGVkIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG5cdHByb3RlY3RlZCBfZGF0YVN1YiA9IG5ldyBSZXBsYXlTdWJqZWN0PFJlcG9ydFJlc3BvbnNlTW9kZWw+KG51bGwpO1xyXG5cdHByaXZhdGUgX2RhdGE6IFJlcG9ydFJlc3BvbnNlTW9kZWw7XHJcblx0QElucHV0KCkgc2V0IGRhdGEoZGF0YTogUmVwb3J0UmVzcG9uc2VNb2RlbCkge1xyXG5cdFx0dGhpcy5fZGF0YSA9IGRhdGE7XHJcblx0XHR0aGlzLl9kYXRhU3ViLm5leHQoZGF0YSk7XHJcblx0fVxyXG5cclxuXHRnZXQgZGF0YSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9kYXRhO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfY29uZmlnOiBUO1xyXG5cdEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBUKSB7XHJcblx0XHR0aGlzLl9jb25maWcgPSBfLmNsb25lRGVlcChjb25maWcpO1xyXG5cdFx0dGhpcy5fY29uZmlnU3ViLm5leHQodGhpcy5fY29uZmlnKTtcclxuXHR9XHJcblxyXG5cdGdldCBjb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29uZmlnO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfY3JpdGVyaWE6IENyaXRlcmlhTW9kZWw7XHJcblx0QElucHV0KCkgc2V0IGNyaXRlcmlhKHZhbHVlOiBDcml0ZXJpYU1vZGVsKSB7XHJcblx0XHR0aGlzLl9jcml0ZXJpYSA9IF8uY2xvbmVEZWVwKHZhbHVlKTtcclxuXHR9XHJcblxyXG5cdGdldCBjcml0ZXJpYSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jcml0ZXJpYTtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoKSBvblJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGFydD4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuX3N1YnNjcmliZVRvTGFuZ3VhZ2UoKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBfc3Vic2NyaWJlVG9MYW5ndWFnZSgpIHtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmUsIG5leHQpID0+IHByZS5sYW5nID09IG5leHQubGFuZyksXHJcblx0XHRcdFx0ZmlsdGVyKCgpID0+IHRoaXMuX2lzSW5pdGlhbGl6ZWQpLFxyXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKF8pID0+IHtcclxuXHRcdFx0XHR0aGlzLl9yZWJ1aWxkVHJpZ2dlclN1Yi5uZXh0KHRydWUpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
@@ -1,6 +1,6 @@
1
1
  import { Directive, Input } from '@angular/core';
2
- import { BehaviorSubject, ReplaySubject } from 'rxjs';
3
2
  import _ from 'lodash';
3
+ import { BehaviorSubject, ReplaySubject } from 'rxjs';
4
4
  import { DestroySubject } from '../../../../shared/components';
5
5
  import { ChartManagerService } from '../services';
6
6
  import * as i0 from "@angular/core";
@@ -10,15 +10,26 @@ export class BaseCustomReport extends DestroySubject {
10
10
  this.injector = injector;
11
11
  this._chartHelperService = this.injector.get(ChartManagerService);
12
12
  this.direction = 'rtl';
13
+ this._dataSub = new ReplaySubject(null);
13
14
  this._criteriaSub = new ReplaySubject(null);
14
15
  this.criteria$ = this._criteriaSub.asObservable();
15
16
  this._configSub = new BehaviorSubject(null);
16
17
  this.config$ = this._configSub.asObservable();
17
18
  }
19
+ set data(data) {
20
+ this._data = data;
21
+ this._dataSub.next(data);
22
+ }
23
+ get data() {
24
+ return this._data;
25
+ }
18
26
  set criteria(value) {
19
27
  this._criteria = _.cloneDeep(value);
20
28
  this._criteriaSub.next(this._criteria);
21
29
  }
30
+ get criteria() {
31
+ return this._criteria;
32
+ }
22
33
  set config(obj) {
23
34
  if (obj) {
24
35
  this._configSub.next(obj);
@@ -40,11 +51,13 @@ export class BaseCustomReport extends DestroySubject {
40
51
  }
41
52
  }
42
53
  BaseCustomReport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
43
- BaseCustomReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomReport, inputs: { direction: "direction", data: "data", criteria: "criteria", config: "config" }, usesInheritance: true, ngImport: i0 });
54
+ BaseCustomReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomReport, inputs: { direction: "direction", definition: "definition", data: "data", criteria: "criteria", config: "config" }, usesInheritance: true, ngImport: i0 });
44
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, decorators: [{
45
56
  type: Directive
46
57
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { direction: [{
47
58
  type: Input
59
+ }], definition: [{
60
+ type: Input
48
61
  }], data: [{
49
62
  type: Input
50
63
  }], criteria: [{
@@ -52,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
52
65
  }], config: [{
53
66
  type: Input
54
67
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jdXN0b20tcmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2Jhc2UvYmFzZS1jdXN0b20tcmVwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xFLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUdsRCxNQUFNLE9BQWdCLGdCQUFpQixTQUFRLGNBQWM7SUEwQjVELFlBQXNDLFFBQWtCO1FBQ3ZELEtBQUssRUFBRSxDQUFDO1FBRDZCLGFBQVEsR0FBUixRQUFRLENBQVU7UUF6QjlDLHdCQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFOUQsY0FBUyxHQUFjLEtBQUssQ0FBQztRQUc1QixpQkFBWSxHQUFHLElBQUksYUFBYSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUNoRSxjQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQU9uQyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBQ3BFLFlBQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBYXpDLENBQUM7SUFuQkQsSUFBYSxRQUFRLENBQUMsS0FBb0I7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBS0QsSUFBYSxNQUFNLENBQUMsR0FBc0I7UUFDekMsSUFBSSxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQjtJQUNGLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQVdELFVBQVUsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7OEdBN0NvQixnQkFBZ0I7a0dBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQURyQyxTQUFTOytGQUlBLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUtPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBUU8sTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCB7IENyaXRlcmlhTW9kZWwsIEN1c3RvbUNoYXJ0Q29uZmlnLCBSZXBvcnRSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IENoYXJ0IGZyb20gJ2NoYXJ0LmpzL2F1dG8nO1xyXG5pbXBvcnQgeyBDaGFydE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ3VzdG9tUmVwb3J0IGV4dGVuZHMgRGVzdHJveVN1YmplY3Qge1xyXG5cdHByb3RlY3RlZCBfY2hhcnRIZWxwZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQ2hhcnRNYW5hZ2VyU2VydmljZSk7XHJcblxyXG5cdEBJbnB1dCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcblx0QElucHV0KCkgZGF0YTogUmVwb3J0UmVzcG9uc2VNb2RlbDtcclxuXHJcblx0cHJvdGVjdGVkIF9jcml0ZXJpYVN1YiA9IG5ldyBSZXBsYXlTdWJqZWN0PENyaXRlcmlhTW9kZWw+KG51bGwpO1xyXG5cdGNyaXRlcmlhJCA9IHRoaXMuX2NyaXRlcmlhU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHByaXZhdGUgX2NyaXRlcmlhOiBDcml0ZXJpYU1vZGVsO1xyXG5cdEBJbnB1dCgpIHNldCBjcml0ZXJpYSh2YWx1ZTogQ3JpdGVyaWFNb2RlbCkge1xyXG5cdFx0dGhpcy5fY3JpdGVyaWEgPSBfLmNsb25lRGVlcCh2YWx1ZSk7XHJcblx0XHR0aGlzLl9jcml0ZXJpYVN1Yi5uZXh0KHRoaXMuX2NyaXRlcmlhKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBfY29uZmlnU3ViID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDdXN0b21DaGFydENvbmZpZz4obnVsbCk7XHJcblx0Y29uZmlnJCA9IHRoaXMuX2NvbmZpZ1N1Yi5hc09ic2VydmFibGUoKTtcclxuXHJcblx0QElucHV0KCkgc2V0IGNvbmZpZyhvYmo6IEN1c3RvbUNoYXJ0Q29uZmlnKSB7XHJcblx0XHRpZiAob2JqKSB7XHJcblx0XHRcdHRoaXMuX2NvbmZpZ1N1Yi5uZXh0KG9iaik7XHJcblx0XHR9XHJcblx0fVxyXG5cdGdldCBjb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29uZmlnU3ViLmdldFZhbHVlKCk7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xyXG5cdFx0c3VwZXIoKTtcclxuXHR9XHJcblxyXG5cdGNoYXJ0OiBDaGFydDtcclxuXHRwcm90ZWN0ZWQgX3ByaW50TGlzdGVuZXI6IEV2ZW50TGlzdGVuZXI7XHJcblxyXG5cdGFic3RyYWN0IHByaW50KCk6IHZvaWQ7XHJcblxyXG5cdGNoYXJ0UmVhZHkoY2hhcnQ6IENoYXJ0KSB7XHJcblx0XHR0aGlzLmNoYXJ0ID0gY2hhcnQ7XHJcblx0XHR0aGlzLl9jaGFydEhlbHBlclNlcnZpY2Uuc2V0Q2hhcnQoY2hhcnQpO1xyXG5cdFx0dGhpcy5fcHJpbnRMaXN0ZW5lciA9IChldmVudCkgPT4ge1xyXG5cdFx0XHR0aGlzLmNoYXJ0LnJlc2l6ZSgpO1xyXG5cdFx0fTtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmVwcmludCcsIHRoaXMuX3ByaW50TGlzdGVuZXIpO1xyXG5cdFx0cXVldWVNaWNyb3Rhc2soKCkgPT4ge1xyXG5cdFx0XHR0aGlzLmNoYXJ0LnJlc2l6ZSgpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jdXN0b20tcmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2Jhc2UvYmFzZS1jdXN0b20tcmVwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUlsRCxNQUFNLE9BQWdCLGdCQUFpQixTQUFRLGNBQWM7SUE4QzVELFlBQTRCLFFBQWtCO1FBQzdDLEtBQUssRUFBRSxDQUFDO1FBRG1CLGFBQVEsR0FBUixRQUFRLENBQVU7UUF6Q3BDLHdCQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFOUQsY0FBUyxHQUFjLEtBQUssQ0FBQztRQUk1QixhQUFRLEdBQUcsSUFBSSxhQUFhLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBV3hELGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ2hFLGNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBV25DLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUM5RCxZQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQWF6QyxDQUFDO0lBbkNELElBQWEsSUFBSSxDQUFDLElBQXlCO1FBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkIsQ0FBQztJQUtELElBQWEsUUFBUSxDQUFDLEtBQW9CO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN2QixDQUFDO0lBS0QsSUFBYSxNQUFNLENBQUMsR0FBZ0I7UUFDbkMsSUFBSSxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQjtJQUNGLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQU1ELFVBQVUsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7OEdBNURvQixnQkFBZ0I7a0dBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQURyQyxTQUFTOytGQVFBLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLO2dCQVlPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBWU8sTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCBDaGFydCBmcm9tICdjaGFydC5qcy9hdXRvJztcclxuaW1wb3J0IHsgQ3JpdGVyaWFNb2RlbCwgQ3VzdG9tQ2hhcnQsIEN1c3RvbUNoYXJ0RGVmaW5pdGlvbiwgUmVwb3J0UmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENoYXJ0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ3VzdG9tUmVwb3J0IGV4dGVuZHMgRGVzdHJveVN1YmplY3Qge1xyXG5cdHByb3RlY3RlZCBjaGFydDogQ2hhcnQ7XHJcblx0cHJvdGVjdGVkIF9wcmludExpc3RlbmVyOiBFdmVudExpc3RlbmVyO1xyXG5cdGFic3RyYWN0IHByaW50KCk6IHZvaWQ7XHJcblxyXG5cdHByb3RlY3RlZCBfY2hhcnRIZWxwZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQ2hhcnRNYW5hZ2VyU2VydmljZSk7XHJcblxyXG5cdEBJbnB1dCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcblxyXG5cdEBJbnB1dCgpIGRlZmluaXRpb246IEN1c3RvbUNoYXJ0RGVmaW5pdGlvbjtcclxuXHJcblx0cHJvdGVjdGVkIF9kYXRhU3ViID0gbmV3IFJlcGxheVN1YmplY3Q8UmVwb3J0UmVzcG9uc2VNb2RlbD4obnVsbCk7XHJcblx0cHJpdmF0ZSBfZGF0YTogUmVwb3J0UmVzcG9uc2VNb2RlbDtcclxuXHRASW5wdXQoKSBzZXQgZGF0YShkYXRhOiBSZXBvcnRSZXNwb25zZU1vZGVsKSB7XHJcblx0XHR0aGlzLl9kYXRhID0gZGF0YTtcclxuXHRcdHRoaXMuX2RhdGFTdWIubmV4dChkYXRhKTtcclxuXHR9XHJcblxyXG5cdGdldCBkYXRhKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RhdGE7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgX2NyaXRlcmlhU3ViID0gbmV3IFJlcGxheVN1YmplY3Q8Q3JpdGVyaWFNb2RlbD4obnVsbCk7XHJcblx0Y3JpdGVyaWEkID0gdGhpcy5fY3JpdGVyaWFTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHJpdmF0ZSBfY3JpdGVyaWE6IENyaXRlcmlhTW9kZWw7XHJcblx0QElucHV0KCkgc2V0IGNyaXRlcmlhKHZhbHVlOiBDcml0ZXJpYU1vZGVsKSB7XHJcblx0XHR0aGlzLl9jcml0ZXJpYSA9IF8uY2xvbmVEZWVwKHZhbHVlKTtcclxuXHRcdHRoaXMuX2NyaXRlcmlhU3ViLm5leHQodGhpcy5fY3JpdGVyaWEpO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNyaXRlcmlhKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2NyaXRlcmlhO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIF9jb25maWdTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbUNoYXJ0PihudWxsKTtcclxuXHRjb25maWckID0gdGhpcy5fY29uZmlnU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRASW5wdXQoKSBzZXQgY29uZmlnKG9iajogQ3VzdG9tQ2hhcnQpIHtcclxuXHRcdGlmIChvYmopIHtcclxuXHRcdFx0dGhpcy5fY29uZmlnU3ViLm5leHQob2JqKTtcclxuXHRcdH1cclxuXHR9XHJcblx0Z2V0IGNvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25maWdTdWIuZ2V0VmFsdWUoKTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0fVxyXG5cclxuXHRjaGFydFJlYWR5KGNoYXJ0OiBDaGFydCkge1xyXG5cdFx0dGhpcy5jaGFydCA9IGNoYXJ0O1xyXG5cdFx0dGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLnNldENoYXJ0KGNoYXJ0KTtcclxuXHRcdHRoaXMuX3ByaW50TGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcclxuXHRcdFx0dGhpcy5jaGFydC5yZXNpemUoKTtcclxuXHRcdH07XHJcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JlcHJpbnQnLCB0aGlzLl9wcmludExpc3RlbmVyKTtcclxuXHRcdHF1ZXVlTWljcm90YXNrKCgpID0+IHtcclxuXHRcdFx0dGhpcy5jaGFydC5yZXNpemUoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=