@pie-lib/charting 6.2.0-next.2 → 6.2.0-next.4
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 +23 -37
- package/LICENSE.md +5 -0
- package/lib/actions-button.js +1 -1
- package/lib/axes.js +1 -1
- package/lib/bars/bar.js +1 -1
- package/lib/bars/common/bars.js +1 -1
- package/lib/bars/common/correct-check-icon.js +1 -1
- package/lib/bars/histogram.js +1 -1
- package/lib/chart-setup.js +1 -1
- package/lib/chart-type.js +1 -1
- package/lib/chart-types.js +1 -1
- package/lib/chart.js +1 -1
- package/lib/common/correctness-indicators.js +1 -1
- package/lib/common/drag-handle.js +1 -1
- package/lib/common/drag-icon.js +1 -1
- package/lib/common/styles.js +1 -1
- package/lib/grid.js +1 -1
- package/lib/index.js +1 -1
- package/lib/key-legend.js +1 -1
- package/lib/line/common/drag-handle.js +1 -1
- package/lib/line/common/line.js +1 -1
- package/lib/line/line-cross.js +1 -1
- package/lib/line/line-dot.js +1 -1
- package/lib/mark-label.js +1 -1
- package/lib/plot/common/plot.js +1 -1
- package/lib/plot/dot.js +1 -1
- package/lib/plot/line.js +1 -1
- package/lib/tool-menu.js +1 -1
- package/lib/utils.js +1 -1
- package/package.json +3 -3
- package/lib/__tests__/actions-button.test.js +0 -332
- package/lib/__tests__/axes.test.js +0 -746
- package/lib/__tests__/chart-setup.test.js +0 -796
- package/lib/__tests__/chart-type.test.js +0 -25
- package/lib/__tests__/chart.test.js +0 -103
- package/lib/__tests__/grid.test.js +0 -39
- package/lib/__tests__/key-legend.test.js +0 -235
- package/lib/__tests__/mark-label.test.js +0 -46
- package/lib/__tests__/tool-menu.test.js +0 -627
- package/lib/__tests__/utils.js +0 -56
- package/lib/__tests__/utils.test.js +0 -186
- package/lib/bars/__tests__/bar.test.js +0 -53
- package/lib/bars/__tests__/histogram.test.js +0 -53
- package/lib/bars/__tests__/utils.js +0 -50
- package/lib/bars/common/__tests__/bars.test.js +0 -76
- package/lib/bars/common/__tests__/utils.js +0 -50
- package/lib/common/__tests__/correctness-indicators.test.js +0 -887
- package/lib/common/__tests__/drag-handle.test.js +0 -73
- package/lib/common/__tests__/utils.js +0 -50
- package/lib/line/__tests__/line-cross.test.js +0 -617
- package/lib/line/__tests__/line-dot.test.js +0 -47
- package/lib/line/__tests__/utils.js +0 -56
- package/lib/line/common/__tests__/drag-handle.test.js +0 -73
- package/lib/line/common/__tests__/line.test.js +0 -92
- package/lib/line/common/__tests__/utils.js +0 -50
- package/lib/plot/__tests__/dot.test.js +0 -513
- package/lib/plot/__tests__/line.test.js +0 -566
- package/lib/plot/__tests__/utils.js +0 -50
- package/lib/plot/common/__tests__/plot.test.js +0 -79
- package/lib/plot/common/__tests__/utils.js +0 -50
|
@@ -1,566 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
7
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var _testUtils = require("@pie-lib/test-utils");
|
|
10
|
-
var _styles = require("@mui/material/styles");
|
|
11
|
-
var _line = _interopRequireWildcard(require("../line"));
|
|
12
|
-
var _utils = require("./utils");
|
|
13
|
-
var _excluded = ["data", "x", "y"];
|
|
14
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
15
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
-
jest.mock('@mui/icons-material/Check', function () {
|
|
18
|
-
return function Check(props) {
|
|
19
|
-
return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
|
|
20
|
-
"data-testid": "check-icon"
|
|
21
|
-
}, props));
|
|
22
|
-
};
|
|
23
|
-
});
|
|
24
|
-
jest.mock('@visx/shape', function () {
|
|
25
|
-
return {
|
|
26
|
-
LinePath: function LinePath(_ref) {
|
|
27
|
-
var data = _ref.data,
|
|
28
|
-
x = _ref.x,
|
|
29
|
-
y = _ref.y,
|
|
30
|
-
rest = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
31
|
-
return /*#__PURE__*/_react["default"].createElement("path", (0, _extends2["default"])({
|
|
32
|
-
d: data.map(function (d, i) {
|
|
33
|
-
return "".concat(i === 0 ? 'M' : 'L').concat(x(d), ",").concat(y(d));
|
|
34
|
-
}).join(' ')
|
|
35
|
-
}, rest));
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
});
|
|
39
|
-
jest.mock('@visx/group', function () {
|
|
40
|
-
return {
|
|
41
|
-
Group: function Group(_ref2) {
|
|
42
|
-
var children = _ref2.children;
|
|
43
|
-
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
44
|
-
className: "visx-group"
|
|
45
|
-
}, children);
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
var theme;
|
|
50
|
-
beforeAll(function () {
|
|
51
|
-
theme = (0, _styles.createTheme)();
|
|
52
|
-
});
|
|
53
|
-
describe('LinePlot', function () {
|
|
54
|
-
var renderComponent = function renderComponent(extras) {
|
|
55
|
-
var defaults = {
|
|
56
|
-
classes: {},
|
|
57
|
-
className: 'className',
|
|
58
|
-
graphProps: (0, _utils.graphProps)(),
|
|
59
|
-
xBand: function xBand() {
|
|
60
|
-
return {
|
|
61
|
-
bandwidth: function bandwidth() {}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
66
|
-
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_styles.ThemeProvider, {
|
|
67
|
-
theme: theme
|
|
68
|
-
}, /*#__PURE__*/_react["default"].createElement("svg", null, /*#__PURE__*/_react["default"].createElement(_line.LinePlot, props))));
|
|
69
|
-
};
|
|
70
|
-
describe('rendering', function () {
|
|
71
|
-
it('renders line plot', function () {
|
|
72
|
-
var _renderComponent = renderComponent(),
|
|
73
|
-
container = _renderComponent.container;
|
|
74
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
75
|
-
});
|
|
76
|
-
it('renders without graphProps', function () {
|
|
77
|
-
var _renderComponent2 = renderComponent({
|
|
78
|
-
graphProps: undefined
|
|
79
|
-
}),
|
|
80
|
-
container = _renderComponent2.container;
|
|
81
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
82
|
-
});
|
|
83
|
-
it('renders with data array', function () {
|
|
84
|
-
var data = [{
|
|
85
|
-
value: 1,
|
|
86
|
-
label: 'A'
|
|
87
|
-
}, {
|
|
88
|
-
value: 2,
|
|
89
|
-
label: 'B'
|
|
90
|
-
}, {
|
|
91
|
-
value: 3,
|
|
92
|
-
label: 'C'
|
|
93
|
-
}];
|
|
94
|
-
var _renderComponent3 = renderComponent({
|
|
95
|
-
data: data
|
|
96
|
-
}),
|
|
97
|
-
container = _renderComponent3.container;
|
|
98
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
99
|
-
});
|
|
100
|
-
it('renders with empty data array', function () {
|
|
101
|
-
var _renderComponent4 = renderComponent({
|
|
102
|
-
data: []
|
|
103
|
-
}),
|
|
104
|
-
container = _renderComponent4.container;
|
|
105
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
106
|
-
});
|
|
107
|
-
it('renders with null data', function () {
|
|
108
|
-
var _renderComponent5 = renderComponent({
|
|
109
|
-
data: null
|
|
110
|
-
}),
|
|
111
|
-
container = _renderComponent5.container;
|
|
112
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
113
|
-
});
|
|
114
|
-
it('renders with undefined data', function () {
|
|
115
|
-
var _renderComponent6 = renderComponent({
|
|
116
|
-
data: undefined
|
|
117
|
-
}),
|
|
118
|
-
container = _renderComponent6.container;
|
|
119
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
120
|
-
});
|
|
121
|
-
it('renders with custom className', function () {
|
|
122
|
-
var _renderComponent7 = renderComponent({
|
|
123
|
-
className: 'custom-line-plot'
|
|
124
|
-
}),
|
|
125
|
-
container = _renderComponent7.container;
|
|
126
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
127
|
-
});
|
|
128
|
-
it('renders with onChange handler', function () {
|
|
129
|
-
var onChange = jest.fn();
|
|
130
|
-
var _renderComponent8 = renderComponent({
|
|
131
|
-
onChange: onChange
|
|
132
|
-
}),
|
|
133
|
-
container = _renderComponent8.container;
|
|
134
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
135
|
-
});
|
|
136
|
-
it('renders in defineChart mode', function () {
|
|
137
|
-
var _renderComponent9 = renderComponent({
|
|
138
|
-
defineChart: true
|
|
139
|
-
}),
|
|
140
|
-
container = _renderComponent9.container;
|
|
141
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
142
|
-
});
|
|
143
|
-
it('renders with correctData', function () {
|
|
144
|
-
var data = [{
|
|
145
|
-
value: 2,
|
|
146
|
-
label: 'A'
|
|
147
|
-
}];
|
|
148
|
-
var correctData = [{
|
|
149
|
-
value: 3,
|
|
150
|
-
label: 'A'
|
|
151
|
-
}];
|
|
152
|
-
var _renderComponent0 = renderComponent({
|
|
153
|
-
data: data,
|
|
154
|
-
correctData: correctData
|
|
155
|
-
}),
|
|
156
|
-
container = _renderComponent0.container;
|
|
157
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
describe('graphProps handling', function () {
|
|
161
|
-
it('handles graphProps with missing scale', function () {
|
|
162
|
-
var props = (0, _utils.graphProps)();
|
|
163
|
-
delete props.scale;
|
|
164
|
-
var _renderComponent1 = renderComponent({
|
|
165
|
-
graphProps: props
|
|
166
|
-
}),
|
|
167
|
-
container = _renderComponent1.container;
|
|
168
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
169
|
-
});
|
|
170
|
-
it('handles graphProps with missing size', function () {
|
|
171
|
-
var props = (0, _utils.graphProps)();
|
|
172
|
-
delete props.size;
|
|
173
|
-
var _renderComponent10 = renderComponent({
|
|
174
|
-
graphProps: props
|
|
175
|
-
}),
|
|
176
|
-
container = _renderComponent10.container;
|
|
177
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
178
|
-
});
|
|
179
|
-
it('handles graphProps with empty scale object', function () {
|
|
180
|
-
var props = (0, _utils.graphProps)();
|
|
181
|
-
props.scale = {};
|
|
182
|
-
var _renderComponent11 = renderComponent({
|
|
183
|
-
graphProps: props
|
|
184
|
-
}),
|
|
185
|
-
container = _renderComponent11.container;
|
|
186
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
187
|
-
});
|
|
188
|
-
it('handles graphProps with empty size object', function () {
|
|
189
|
-
var props = (0, _utils.graphProps)();
|
|
190
|
-
props.size = {};
|
|
191
|
-
var _renderComponent12 = renderComponent({
|
|
192
|
-
graphProps: props
|
|
193
|
-
}),
|
|
194
|
-
container = _renderComponent12.container;
|
|
195
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
describe('data variations', function () {
|
|
199
|
-
it('renders with single data point', function () {
|
|
200
|
-
var data = [{
|
|
201
|
-
value: 1,
|
|
202
|
-
label: 'A'
|
|
203
|
-
}];
|
|
204
|
-
var _renderComponent13 = renderComponent({
|
|
205
|
-
data: data
|
|
206
|
-
}),
|
|
207
|
-
container = _renderComponent13.container;
|
|
208
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
209
|
-
});
|
|
210
|
-
it('renders with multiple data points', function () {
|
|
211
|
-
var data = [{
|
|
212
|
-
value: 1,
|
|
213
|
-
label: 'A'
|
|
214
|
-
}, {
|
|
215
|
-
value: 2,
|
|
216
|
-
label: 'B'
|
|
217
|
-
}, {
|
|
218
|
-
value: 3,
|
|
219
|
-
label: 'C'
|
|
220
|
-
}, {
|
|
221
|
-
value: 4,
|
|
222
|
-
label: 'D'
|
|
223
|
-
}];
|
|
224
|
-
var _renderComponent14 = renderComponent({
|
|
225
|
-
data: data
|
|
226
|
-
}),
|
|
227
|
-
container = _renderComponent14.container;
|
|
228
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
229
|
-
});
|
|
230
|
-
it('renders with zero values', function () {
|
|
231
|
-
var data = [{
|
|
232
|
-
value: 0,
|
|
233
|
-
label: 'A'
|
|
234
|
-
}, {
|
|
235
|
-
value: 0,
|
|
236
|
-
label: 'B'
|
|
237
|
-
}];
|
|
238
|
-
var _renderComponent15 = renderComponent({
|
|
239
|
-
data: data
|
|
240
|
-
}),
|
|
241
|
-
container = _renderComponent15.container;
|
|
242
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
243
|
-
});
|
|
244
|
-
it('renders with mixed values', function () {
|
|
245
|
-
var data = [{
|
|
246
|
-
value: 0,
|
|
247
|
-
label: 'A'
|
|
248
|
-
}, {
|
|
249
|
-
value: 5,
|
|
250
|
-
label: 'B'
|
|
251
|
-
}, {
|
|
252
|
-
value: 1,
|
|
253
|
-
label: 'C'
|
|
254
|
-
}];
|
|
255
|
-
var _renderComponent16 = renderComponent({
|
|
256
|
-
data: data
|
|
257
|
-
}),
|
|
258
|
-
container = _renderComponent16.container;
|
|
259
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
260
|
-
});
|
|
261
|
-
it('renders with large values', function () {
|
|
262
|
-
var data = [{
|
|
263
|
-
value: 100,
|
|
264
|
-
label: 'A'
|
|
265
|
-
}, {
|
|
266
|
-
value: 200,
|
|
267
|
-
label: 'B'
|
|
268
|
-
}];
|
|
269
|
-
var _renderComponent17 = renderComponent({
|
|
270
|
-
data: data
|
|
271
|
-
}),
|
|
272
|
-
container = _renderComponent17.container;
|
|
273
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
274
|
-
});
|
|
275
|
-
it('renders with correctness data', function () {
|
|
276
|
-
var data = [{
|
|
277
|
-
value: 2,
|
|
278
|
-
label: 'A',
|
|
279
|
-
correctness: {
|
|
280
|
-
value: 'correct',
|
|
281
|
-
label: 'Correct'
|
|
282
|
-
}
|
|
283
|
-
}, {
|
|
284
|
-
value: 3,
|
|
285
|
-
label: 'B',
|
|
286
|
-
correctness: {
|
|
287
|
-
value: 'correct',
|
|
288
|
-
label: 'Correct'
|
|
289
|
-
}
|
|
290
|
-
}];
|
|
291
|
-
var _renderComponent18 = renderComponent({
|
|
292
|
-
data: data
|
|
293
|
-
}),
|
|
294
|
-
container = _renderComponent18.container;
|
|
295
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
296
|
-
});
|
|
297
|
-
it('renders with incorrect correctness and correctData', function () {
|
|
298
|
-
var data = [{
|
|
299
|
-
value: 2,
|
|
300
|
-
label: 'A',
|
|
301
|
-
correctness: {
|
|
302
|
-
value: 'incorrect',
|
|
303
|
-
label: 'Incorrect'
|
|
304
|
-
}
|
|
305
|
-
}, {
|
|
306
|
-
value: 3,
|
|
307
|
-
label: 'B',
|
|
308
|
-
correctness: {
|
|
309
|
-
value: 'incorrect',
|
|
310
|
-
label: 'Incorrect'
|
|
311
|
-
}
|
|
312
|
-
}];
|
|
313
|
-
var correctData = [{
|
|
314
|
-
value: 3,
|
|
315
|
-
label: 'A'
|
|
316
|
-
}, {
|
|
317
|
-
value: 4,
|
|
318
|
-
label: 'B'
|
|
319
|
-
}];
|
|
320
|
-
var _renderComponent19 = renderComponent({
|
|
321
|
-
data: data,
|
|
322
|
-
correctData: correctData
|
|
323
|
-
}),
|
|
324
|
-
container = _renderComponent19.container;
|
|
325
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
326
|
-
});
|
|
327
|
-
it('renders with interactive data points', function () {
|
|
328
|
-
var data = [{
|
|
329
|
-
value: 2,
|
|
330
|
-
label: 'A',
|
|
331
|
-
interactive: true
|
|
332
|
-
}, {
|
|
333
|
-
value: 3,
|
|
334
|
-
label: 'B',
|
|
335
|
-
interactive: false
|
|
336
|
-
}];
|
|
337
|
-
var _renderComponent20 = renderComponent({
|
|
338
|
-
data: data
|
|
339
|
-
}),
|
|
340
|
-
container = _renderComponent20.container;
|
|
341
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
342
|
-
});
|
|
343
|
-
});
|
|
344
|
-
describe('callbacks', function () {
|
|
345
|
-
it('passes onChange handler to Plot component', function () {
|
|
346
|
-
var onChange = jest.fn();
|
|
347
|
-
var data = [{
|
|
348
|
-
value: 1,
|
|
349
|
-
label: 'A'
|
|
350
|
-
}];
|
|
351
|
-
var _renderComponent21 = renderComponent({
|
|
352
|
-
data: data,
|
|
353
|
-
onChange: onChange
|
|
354
|
-
}),
|
|
355
|
-
container = _renderComponent21.container;
|
|
356
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
357
|
-
});
|
|
358
|
-
it('handles onChangeCategory callback', function () {
|
|
359
|
-
var onChangeCategory = jest.fn();
|
|
360
|
-
var data = [{
|
|
361
|
-
value: 1,
|
|
362
|
-
label: 'A'
|
|
363
|
-
}];
|
|
364
|
-
var _renderComponent22 = renderComponent({
|
|
365
|
-
data: data,
|
|
366
|
-
onChangeCategory: onChangeCategory
|
|
367
|
-
}),
|
|
368
|
-
container = _renderComponent22.container;
|
|
369
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
370
|
-
});
|
|
371
|
-
});
|
|
372
|
-
describe('component', function () {
|
|
373
|
-
it('returns correct chart object', function () {
|
|
374
|
-
var chart = (0, _line["default"])();
|
|
375
|
-
expect(chart).toEqual({
|
|
376
|
-
type: 'linePlot',
|
|
377
|
-
Component: _line.LinePlot,
|
|
378
|
-
name: 'Line Plot'
|
|
379
|
-
});
|
|
380
|
-
});
|
|
381
|
-
it('returns object with Component that can be rendered', function () {
|
|
382
|
-
var chart = (0, _line["default"])();
|
|
383
|
-
var Component = chart.Component;
|
|
384
|
-
var _render = (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(Component, {
|
|
385
|
-
graphProps: (0, _utils.graphProps)()
|
|
386
|
-
})),
|
|
387
|
-
container = _render.container;
|
|
388
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
389
|
-
});
|
|
390
|
-
});
|
|
391
|
-
});
|
|
392
|
-
describe('CustomBarElement (Line)', function () {
|
|
393
|
-
var renderLinePlot = function renderLinePlot(props) {
|
|
394
|
-
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_styles.ThemeProvider, {
|
|
395
|
-
theme: theme
|
|
396
|
-
}, /*#__PURE__*/_react["default"].createElement("svg", null, /*#__PURE__*/_react["default"].createElement(_line.LinePlot, props))));
|
|
397
|
-
};
|
|
398
|
-
it('renders line elements', function () {
|
|
399
|
-
var data = [{
|
|
400
|
-
value: 1,
|
|
401
|
-
label: 'A'
|
|
402
|
-
}];
|
|
403
|
-
var _renderLinePlot = renderLinePlot({
|
|
404
|
-
data: data,
|
|
405
|
-
graphProps: (0, _utils.graphProps)()
|
|
406
|
-
}),
|
|
407
|
-
container = _renderLinePlot.container;
|
|
408
|
-
expect(container).toBeInTheDocument();
|
|
409
|
-
});
|
|
410
|
-
it('renders with dottedOverline prop', function () {
|
|
411
|
-
var data = [{
|
|
412
|
-
value: 2,
|
|
413
|
-
label: 'A',
|
|
414
|
-
correctness: {
|
|
415
|
-
value: 'incorrect'
|
|
416
|
-
}
|
|
417
|
-
}];
|
|
418
|
-
var correctData = [{
|
|
419
|
-
value: 3,
|
|
420
|
-
label: 'A'
|
|
421
|
-
}];
|
|
422
|
-
var _renderLinePlot2 = renderLinePlot({
|
|
423
|
-
data: data,
|
|
424
|
-
graphProps: (0, _utils.graphProps)(),
|
|
425
|
-
correctData: correctData
|
|
426
|
-
}),
|
|
427
|
-
container = _renderLinePlot2.container;
|
|
428
|
-
expect(container).toBeInTheDocument();
|
|
429
|
-
});
|
|
430
|
-
it('renders without dottedOverline prop', function () {
|
|
431
|
-
var data = [{
|
|
432
|
-
value: 2,
|
|
433
|
-
label: 'A'
|
|
434
|
-
}];
|
|
435
|
-
var _renderLinePlot3 = renderLinePlot({
|
|
436
|
-
data: data,
|
|
437
|
-
graphProps: (0, _utils.graphProps)()
|
|
438
|
-
}),
|
|
439
|
-
container = _renderLinePlot3.container;
|
|
440
|
-
expect(container).toBeInTheDocument();
|
|
441
|
-
});
|
|
442
|
-
it('renders two LinePath elements for X shape when not dotted', function () {
|
|
443
|
-
var data = [{
|
|
444
|
-
value: 3,
|
|
445
|
-
label: 'A'
|
|
446
|
-
}];
|
|
447
|
-
var _renderLinePlot4 = renderLinePlot({
|
|
448
|
-
data: data,
|
|
449
|
-
graphProps: (0, _utils.graphProps)()
|
|
450
|
-
}),
|
|
451
|
-
container = _renderLinePlot4.container;
|
|
452
|
-
expect(container).toBeInTheDocument();
|
|
453
|
-
});
|
|
454
|
-
it('renders rect with dashed stroke when dottedOverline is true', function () {
|
|
455
|
-
var data = [{
|
|
456
|
-
value: 2,
|
|
457
|
-
label: 'A',
|
|
458
|
-
correctness: {
|
|
459
|
-
value: 'incorrect'
|
|
460
|
-
}
|
|
461
|
-
}];
|
|
462
|
-
var correctData = [{
|
|
463
|
-
value: 3,
|
|
464
|
-
label: 'A'
|
|
465
|
-
}];
|
|
466
|
-
var _renderLinePlot5 = renderLinePlot({
|
|
467
|
-
data: data,
|
|
468
|
-
graphProps: (0, _utils.graphProps)(),
|
|
469
|
-
correctData: correctData
|
|
470
|
-
}),
|
|
471
|
-
container = _renderLinePlot5.container;
|
|
472
|
-
expect(container).toBeInTheDocument();
|
|
473
|
-
});
|
|
474
|
-
it('calculates correct line positions', function () {
|
|
475
|
-
var data = [{
|
|
476
|
-
value: 2,
|
|
477
|
-
label: 'A'
|
|
478
|
-
}];
|
|
479
|
-
var _renderLinePlot6 = renderLinePlot({
|
|
480
|
-
data: data,
|
|
481
|
-
graphProps: (0, _utils.graphProps)()
|
|
482
|
-
}),
|
|
483
|
-
container = _renderLinePlot6.container;
|
|
484
|
-
expect(container).toBeInTheDocument();
|
|
485
|
-
});
|
|
486
|
-
it('handles zero pointDiameter', function () {
|
|
487
|
-
var props = (0, _utils.graphProps)();
|
|
488
|
-
props.size = {
|
|
489
|
-
width: 0,
|
|
490
|
-
height: 0
|
|
491
|
-
};
|
|
492
|
-
var data = [{
|
|
493
|
-
value: 1,
|
|
494
|
-
label: 'A'
|
|
495
|
-
}];
|
|
496
|
-
var _renderLinePlot7 = renderLinePlot({
|
|
497
|
-
data: data,
|
|
498
|
-
graphProps: props
|
|
499
|
-
}),
|
|
500
|
-
container = _renderLinePlot7.container;
|
|
501
|
-
expect(container).toBeInTheDocument();
|
|
502
|
-
});
|
|
503
|
-
it('handles large pointDiameter values', function () {
|
|
504
|
-
var props = (0, _utils.graphProps)();
|
|
505
|
-
props.size = {
|
|
506
|
-
width: 1000,
|
|
507
|
-
height: 1000
|
|
508
|
-
};
|
|
509
|
-
var data = [{
|
|
510
|
-
value: 1,
|
|
511
|
-
label: 'A'
|
|
512
|
-
}];
|
|
513
|
-
var _renderLinePlot8 = renderLinePlot({
|
|
514
|
-
data: data,
|
|
515
|
-
graphProps: props
|
|
516
|
-
}),
|
|
517
|
-
container = _renderLinePlot8.container;
|
|
518
|
-
expect(container).toBeInTheDocument();
|
|
519
|
-
});
|
|
520
|
-
it('applies correct strokeWidth based on pointDiameter', function () {
|
|
521
|
-
var data = [{
|
|
522
|
-
value: 2,
|
|
523
|
-
label: 'A'
|
|
524
|
-
}];
|
|
525
|
-
var _renderLinePlot9 = renderLinePlot({
|
|
526
|
-
data: data,
|
|
527
|
-
graphProps: (0, _utils.graphProps)()
|
|
528
|
-
}),
|
|
529
|
-
container = _renderLinePlot9.container;
|
|
530
|
-
// strokeWidth should be pointDiameter / 5
|
|
531
|
-
expect(container).toBeInTheDocument();
|
|
532
|
-
});
|
|
533
|
-
it('renders Group component wrapping LinePaths', function () {
|
|
534
|
-
var data = [{
|
|
535
|
-
value: 1,
|
|
536
|
-
label: 'A'
|
|
537
|
-
}];
|
|
538
|
-
var _renderLinePlot0 = renderLinePlot({
|
|
539
|
-
data: data,
|
|
540
|
-
graphProps: (0, _utils.graphProps)()
|
|
541
|
-
}),
|
|
542
|
-
container = _renderLinePlot0.container;
|
|
543
|
-
expect(container).toBeInTheDocument();
|
|
544
|
-
});
|
|
545
|
-
it('handles rect with extra padding when dotted', function () {
|
|
546
|
-
var data = [{
|
|
547
|
-
value: 2,
|
|
548
|
-
label: 'A',
|
|
549
|
-
correctness: {
|
|
550
|
-
value: 'incorrect'
|
|
551
|
-
}
|
|
552
|
-
}];
|
|
553
|
-
var correctData = [{
|
|
554
|
-
value: 3,
|
|
555
|
-
label: 'A'
|
|
556
|
-
}];
|
|
557
|
-
var _renderLinePlot1 = renderLinePlot({
|
|
558
|
-
data: data,
|
|
559
|
-
graphProps: (0, _utils.graphProps)(),
|
|
560
|
-
correctData: correctData
|
|
561
|
-
}),
|
|
562
|
-
container = _renderLinePlot1.container;
|
|
563
|
-
expect(container).toBeInTheDocument();
|
|
564
|
-
});
|
|
565
|
-
});
|
|
566
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0VXRpbHMiLCJfc3R5bGVzIiwiX2xpbmUiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl91dGlscyIsIl9leGNsdWRlZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJqZXN0IiwibW9jayIsIkNoZWNrIiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwiTGluZVBhdGgiLCJfcmVmIiwiZGF0YSIsIngiLCJ5IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJkIiwibWFwIiwiY29uY2F0Iiwiam9pbiIsIkdyb3VwIiwiX3JlZjIiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsInRoZW1lIiwiYmVmb3JlQWxsIiwiY3JlYXRlVGhlbWUiLCJkZXNjcmliZSIsInJlbmRlckNvbXBvbmVudCIsImV4dHJhcyIsImRlZmF1bHRzIiwiY2xhc3NlcyIsImdyYXBoUHJvcHMiLCJ4QmFuZCIsImJhbmR3aWR0aCIsInJlbmRlciIsIlRoZW1lUHJvdmlkZXIiLCJMaW5lUGxvdCIsIml0IiwiX3JlbmRlckNvbXBvbmVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIl9yZW5kZXJDb21wb25lbnQyIiwidW5kZWZpbmVkIiwidmFsdWUiLCJsYWJlbCIsIl9yZW5kZXJDb21wb25lbnQzIiwiX3JlbmRlckNvbXBvbmVudDQiLCJfcmVuZGVyQ29tcG9uZW50NSIsIl9yZW5kZXJDb21wb25lbnQ2IiwiX3JlbmRlckNvbXBvbmVudDciLCJvbkNoYW5nZSIsImZuIiwiX3JlbmRlckNvbXBvbmVudDgiLCJfcmVuZGVyQ29tcG9uZW50OSIsImRlZmluZUNoYXJ0IiwiY29ycmVjdERhdGEiLCJfcmVuZGVyQ29tcG9uZW50MCIsInNjYWxlIiwiX3JlbmRlckNvbXBvbmVudDEiLCJzaXplIiwiX3JlbmRlckNvbXBvbmVudDEwIiwiX3JlbmRlckNvbXBvbmVudDExIiwiX3JlbmRlckNvbXBvbmVudDEyIiwiX3JlbmRlckNvbXBvbmVudDEzIiwiX3JlbmRlckNvbXBvbmVudDE0IiwiX3JlbmRlckNvbXBvbmVudDE1IiwiX3JlbmRlckNvbXBvbmVudDE2IiwiX3JlbmRlckNvbXBvbmVudDE3IiwiY29ycmVjdG5lc3MiLCJfcmVuZGVyQ29tcG9uZW50MTgiLCJfcmVuZGVyQ29tcG9uZW50MTkiLCJpbnRlcmFjdGl2ZSIsIl9yZW5kZXJDb21wb25lbnQyMCIsIl9yZW5kZXJDb21wb25lbnQyMSIsIm9uQ2hhbmdlQ2F0ZWdvcnkiLCJfcmVuZGVyQ29tcG9uZW50MjIiLCJjaGFydCIsIkxpbmUiLCJ0b0VxdWFsIiwidHlwZSIsIkNvbXBvbmVudCIsIm5hbWUiLCJfcmVuZGVyIiwicmVuZGVyTGluZVBsb3QiLCJfcmVuZGVyTGluZVBsb3QiLCJfcmVuZGVyTGluZVBsb3QyIiwiX3JlbmRlckxpbmVQbG90MyIsIl9yZW5kZXJMaW5lUGxvdDQiLCJfcmVuZGVyTGluZVBsb3Q1IiwiX3JlbmRlckxpbmVQbG90NiIsIndpZHRoIiwiaGVpZ2h0IiwiX3JlbmRlckxpbmVQbG90NyIsIl9yZW5kZXJMaW5lUGxvdDgiLCJfcmVuZGVyTGluZVBsb3Q5IiwiX3JlbmRlckxpbmVQbG90MCIsIl9yZW5kZXJMaW5lUGxvdDEiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGxvdC9fX3Rlc3RzX18vbGluZS50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHBpZS1saWIvdGVzdC11dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSwgVGhlbWVQcm92aWRlciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcbmltcG9ydCBMaW5lLCB7IExpbmVQbG90IH0gZnJvbSAnLi4vbGluZSc7XG5pbXBvcnQgeyBncmFwaFByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5cbmplc3QubW9jaygnQG11aS9pY29ucy1tYXRlcmlhbC9DaGVjaycsICgpID0+IHtcbiAgcmV0dXJuIGZ1bmN0aW9uIENoZWNrKHByb3BzKSB7XG4gICAgcmV0dXJuIDxkaXYgZGF0YS10ZXN0aWQ9XCJjaGVjay1pY29uXCIgey4uLnByb3BzfSAvPjtcbiAgfTtcbn0pO1xuXG5qZXN0Lm1vY2soJ0B2aXN4L3NoYXBlJywgKCkgPT4gKHtcbiAgTGluZVBhdGg6ICh7IGRhdGEsIHgsIHksIC4uLnJlc3QgfSkgPT4gKFxuICAgIDxwYXRoIGQ9e2RhdGEubWFwKChkLCBpKSA9PiBgJHtpID09PSAwID8gJ00nIDogJ0wnfSR7eChkKX0sJHt5KGQpfWApLmpvaW4oJyAnKX0gey4uLnJlc3R9IC8+XG4gICksXG59KSk7XG5cbmplc3QubW9jaygnQHZpc3gvZ3JvdXAnLCAoKSA9PiAoe1xuICBHcm91cDogKHsgY2hpbGRyZW4gfSkgPT4gPGcgY2xhc3NOYW1lPVwidmlzeC1ncm91cFwiPntjaGlsZHJlbn08L2c+LFxufSkpO1xuXG5sZXQgdGhlbWU7XG5cbmJlZm9yZUFsbCgoKSA9PiB7XG4gIHRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbn0pO1xuXG5kZXNjcmliZSgnTGluZVBsb3QnLCAoKSA9PiB7XG4gIGNvbnN0IHJlbmRlckNvbXBvbmVudCA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIGdyYXBoUHJvcHM6IGdyYXBoUHJvcHMoKSxcbiAgICAgIHhCYW5kOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYmFuZHdpZHRoOiAoKSA9PiB7fSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuICAgIHJldHVybiByZW5kZXIoXG4gICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PlxuICAgICAgICA8c3ZnPlxuICAgICAgICAgIDxMaW5lUGxvdCB7Li4ucHJvcHN9IC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9UaGVtZVByb3ZpZGVyPixcbiAgICApO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgbGluZSBwbG90JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCgpO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBncmFwaFByb3BzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGdyYXBoUHJvcHM6IHVuZGVmaW5lZCB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggZGF0YSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXG4gICAgICAgIHsgdmFsdWU6IDEsIGxhYmVsOiAnQScgfSxcbiAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdCJyB9LFxuICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogJ0MnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGRhdGEgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGVtcHR5IGRhdGEgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZGF0YTogW10gfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIG51bGwgZGF0YScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBkYXRhOiBudWxsIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgd2l0aCB1bmRlZmluZWQgZGF0YScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBkYXRhOiB1bmRlZmluZWQgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGN1c3RvbSBjbGFzc05hbWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgY2xhc3NOYW1lOiAnY3VzdG9tLWxpbmUtcGxvdCcgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIG9uQ2hhbmdlIGhhbmRsZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBvbkNoYW5nZSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGluIGRlZmluZUNoYXJ0IG1vZGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZGVmaW5lQ2hhcnQ6IHRydWUgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGNvcnJlY3REYXRhJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFt7IHZhbHVlOiAyLCBsYWJlbDogJ0EnIH1dO1xuICAgICAgY29uc3QgY29ycmVjdERhdGEgPSBbeyB2YWx1ZTogMywgbGFiZWw6ICdBJyB9XTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBkYXRhLCBjb3JyZWN0RGF0YSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dyYXBoUHJvcHMgaGFuZGxpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2hhbmRsZXMgZ3JhcGhQcm9wcyB3aXRoIG1pc3Npbmcgc2NhbGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IGdyYXBoUHJvcHMoKTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5zY2FsZTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBncmFwaFByb3BzOiBwcm9wcyB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIGdyYXBoUHJvcHMgd2l0aCBtaXNzaW5nIHNpemUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IGdyYXBoUHJvcHMoKTtcbiAgICAgIGRlbGV0ZSBwcm9wcy5zaXplO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGdyYXBoUHJvcHM6IHByb3BzIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgZ3JhcGhQcm9wcyB3aXRoIGVtcHR5IHNjYWxlIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0gZ3JhcGhQcm9wcygpO1xuICAgICAgcHJvcHMuc2NhbGUgPSB7fTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBncmFwaFByb3BzOiBwcm9wcyB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIGdyYXBoUHJvcHMgd2l0aCBlbXB0eSBzaXplIG9iamVjdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0gZ3JhcGhQcm9wcygpO1xuICAgICAgcHJvcHMuc2l6ZSA9IHt9O1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGdyYXBoUHJvcHM6IHByb3BzIH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZGF0YSB2YXJpYXRpb25zJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggc2luZ2xlIGRhdGEgcG9pbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gW3sgdmFsdWU6IDEsIGxhYmVsOiAnQScgfV07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZGF0YSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggbXVsdGlwbGUgZGF0YSBwb2ludHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gW1xuICAgICAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ0EnIH0sXG4gICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnQicgfSxcbiAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6ICdDJyB9LFxuICAgICAgICB7IHZhbHVlOiA0LCBsYWJlbDogJ0QnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGRhdGEgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIHplcm8gdmFsdWVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFtcbiAgICAgICAgeyB2YWx1ZTogMCwgbGFiZWw6ICdBJyB9LFxuICAgICAgICB7IHZhbHVlOiAwLCBsYWJlbDogJ0InIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGRhdGEgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIG1peGVkIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXG4gICAgICAgIHsgdmFsdWU6IDAsIGxhYmVsOiAnQScgfSxcbiAgICAgICAgeyB2YWx1ZTogNSwgbGFiZWw6ICdCJyB9LFxuICAgICAgICB7IHZhbHVlOiAxLCBsYWJlbDogJ0MnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGRhdGEgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGxhcmdlIHZhbHVlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXG4gICAgICAgIHsgdmFsdWU6IDEwMCwgbGFiZWw6ICdBJyB9LFxuICAgICAgICB7IHZhbHVlOiAyMDAsIGxhYmVsOiAnQicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZGF0YSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY29ycmVjdG5lc3MgZGF0YScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXG4gICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnQScsIGNvcnJlY3RuZXNzOiB7IHZhbHVlOiAnY29ycmVjdCcsIGxhYmVsOiAnQ29ycmVjdCcgfSB9LFxuICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogJ0InLCBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2NvcnJlY3QnLCBsYWJlbDogJ0NvcnJlY3QnIH0gfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZGF0YSB9KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggaW5jb3JyZWN0IGNvcnJlY3RuZXNzIGFuZCBjb3JyZWN0RGF0YScsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBbXG4gICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnQScsIGNvcnJlY3RuZXNzOiB7IHZhbHVlOiAnaW5jb3JyZWN0JywgbGFiZWw6ICdJbmNvcnJlY3QnIH0gfSxcbiAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6ICdCJywgY29ycmVjdG5lc3M6IHsgdmFsdWU6ICdpbmNvcnJlY3QnLCBsYWJlbDogJ0luY29ycmVjdCcgfSB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IGNvcnJlY3REYXRhID0gW1xuICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogJ0EnIH0sXG4gICAgICAgIHsgdmFsdWU6IDQsIGxhYmVsOiAnQicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZGF0YSwgY29ycmVjdERhdGEgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGludGVyYWN0aXZlIGRhdGEgcG9pbnRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IFtcbiAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6ICdBJywgaW50ZXJhY3RpdmU6IHRydWUgfSxcbiAgICAgICAgeyB2YWx1ZTogMywgbGFiZWw6ICdCJywgaW50ZXJhY3RpdmU6IGZhbHNlIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckNvbXBvbmVudCh7IGRhdGEgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjYWxsYmFja3MnLCAoKSA9PiB7XG4gICAgaXQoJ3Bhc3NlcyBvbkNoYW5nZSBoYW5kbGVyIHRvIFBsb3QgY29tcG9uZW50JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgICBjb25zdCBkYXRhID0gW3sgdmFsdWU6IDEsIGxhYmVsOiAnQScgfV07XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyQ29tcG9uZW50KHsgZGF0YSwgb25DaGFuZ2UgfSk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFuZGxlcyBvbkNoYW5nZUNhdGVnb3J5IGNhbGxiYWNrJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb25DaGFuZ2VDYXRlZ29yeSA9IGplc3QuZm4oKTtcbiAgICAgIGNvbnN0IGRhdGEgPSBbeyB2YWx1ZTogMSwgbGFiZWw6ICdBJyB9XTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoeyBkYXRhLCBvbkNoYW5nZUNhdGVnb3J5IH0pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnY29tcG9uZW50JywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIGNvcnJlY3QgY2hhcnQgb2JqZWN0JywgKCkgPT4ge1xuICAgICAgY29uc3QgY2hhcnQgPSBMaW5lKCk7XG5cbiAgICAgIGV4cGVjdChjaGFydCkudG9FcXVhbCh7XG4gICAgICAgIHR5cGU6ICdsaW5lUGxvdCcsXG4gICAgICAgIENvbXBvbmVudDogTGluZVBsb3QsXG4gICAgICAgIG5hbWU6ICdMaW5lIFBsb3QnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBvYmplY3Qgd2l0aCBDb21wb25lbnQgdGhhdCBjYW4gYmUgcmVuZGVyZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjaGFydCA9IExpbmUoKTtcbiAgICAgIGNvbnN0IHsgQ29tcG9uZW50IH0gPSBjaGFydDtcblxuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q29tcG9uZW50IGdyYXBoUHJvcHM9e2dyYXBoUHJvcHMoKX0gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQ3VzdG9tQmFyRWxlbWVudCAoTGluZSknLCAoKSA9PiB7XG4gIGNvbnN0IHJlbmRlckxpbmVQbG90ID0gKHByb3BzKSA9PlxuICAgIHJlbmRlcihcbiAgICAgIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+XG4gICAgICAgIDxzdmc+XG4gICAgICAgICAgPExpbmVQbG90IHsuLi5wcm9wc30gLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L1RoZW1lUHJvdmlkZXI+LFxuICAgICk7XG5cbiAgaXQoJ3JlbmRlcnMgbGluZSBlbGVtZW50cycsICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gW3sgdmFsdWU6IDEsIGxhYmVsOiAnQScgfV07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckxpbmVQbG90KHtcbiAgICAgIGRhdGEsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgfSk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2l0aCBkb3R0ZWRPdmVybGluZSBwcm9wJywgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBbeyB2YWx1ZTogMiwgbGFiZWw6ICdBJywgY29ycmVjdG5lc3M6IHsgdmFsdWU6ICdpbmNvcnJlY3QnIH0gfV07XG4gICAgY29uc3QgY29ycmVjdERhdGEgPSBbeyB2YWx1ZTogMywgbGFiZWw6ICdBJyB9XTtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyTGluZVBsb3Qoe1xuICAgICAgZGF0YSxcbiAgICAgIGdyYXBoUHJvcHM6IGdyYXBoUHJvcHMoKSxcbiAgICAgIGNvcnJlY3REYXRhLFxuICAgIH0pO1xuICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdyZW5kZXJzIHdpdGhvdXQgZG90dGVkT3ZlcmxpbmUgcHJvcCcsICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gW3sgdmFsdWU6IDIsIGxhYmVsOiAnQScgfV07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckxpbmVQbG90KHtcbiAgICAgIGRhdGEsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgfSk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgdHdvIExpbmVQYXRoIGVsZW1lbnRzIGZvciBYIHNoYXBlIHdoZW4gbm90IGRvdHRlZCcsICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gW3sgdmFsdWU6IDMsIGxhYmVsOiAnQScgfV07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckxpbmVQbG90KHtcbiAgICAgIGRhdGEsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgfSk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgcmVjdCB3aXRoIGRhc2hlZCBzdHJva2Ugd2hlbiBkb3R0ZWRPdmVybGluZSBpcyB0cnVlJywgKCkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBbeyB2YWx1ZTogMiwgbGFiZWw6ICdBJywgY29ycmVjdG5lc3M6IHsgdmFsdWU6ICdpbmNvcnJlY3QnIH0gfV07XG4gICAgY29uc3QgY29ycmVjdERhdGEgPSBbeyB2YWx1ZTogMywgbGFiZWw6ICdBJyB9XTtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyTGluZVBsb3Qoe1xuICAgICAgZGF0YSxcbiAgICAgIGdyYXBoUHJvcHM6IGdyYXBoUHJvcHMoKSxcbiAgICAgIGNvcnJlY3REYXRhLFxuICAgIH0pO1xuICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdjYWxjdWxhdGVzIGNvcnJlY3QgbGluZSBwb3NpdGlvbnMnLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFt7IHZhbHVlOiAyLCBsYWJlbDogJ0EnIH1dO1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJMaW5lUGxvdCh7XG4gICAgICBkYXRhLFxuICAgICAgZ3JhcGhQcm9wczogZ3JhcGhQcm9wcygpLFxuICAgIH0pO1xuICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdoYW5kbGVzIHplcm8gcG9pbnREaWFtZXRlcicsICgpID0+IHtcbiAgICBjb25zdCBwcm9wcyA9IGdyYXBoUHJvcHMoKTtcbiAgICBwcm9wcy5zaXplID0geyB3aWR0aDogMCwgaGVpZ2h0OiAwIH07XG4gICAgY29uc3QgZGF0YSA9IFt7IHZhbHVlOiAxLCBsYWJlbDogJ0EnIH1dO1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJMaW5lUGxvdCh7XG4gICAgICBkYXRhLFxuICAgICAgZ3JhcGhQcm9wczogcHJvcHMsXG4gICAgfSk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgbGFyZ2UgcG9pbnREaWFtZXRlciB2YWx1ZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgcHJvcHMgPSBncmFwaFByb3BzKCk7XG4gICAgcHJvcHMuc2l6ZSA9IHsgd2lkdGg6IDEwMDAsIGhlaWdodDogMTAwMCB9O1xuICAgIGNvbnN0IGRhdGEgPSBbeyB2YWx1ZTogMSwgbGFiZWw6ICdBJyB9XTtcbiAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyTGluZVBsb3Qoe1xuICAgICAgZGF0YSxcbiAgICAgIGdyYXBoUHJvcHM6IHByb3BzLFxuICAgIH0pO1xuICAgIGV4cGVjdChjb250YWluZXIpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gIH0pO1xuXG4gIGl0KCdhcHBsaWVzIGNvcnJlY3Qgc3Ryb2tlV2lkdGggYmFzZWQgb24gcG9pbnREaWFtZXRlcicsICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gW3sgdmFsdWU6IDIsIGxhYmVsOiAnQScgfV07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckxpbmVQbG90KHtcbiAgICAgIGRhdGEsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgfSk7XG4gICAgLy8gc3Ryb2tlV2lkdGggc2hvdWxkIGJlIHBvaW50RGlhbWV0ZXIgLyA1XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgR3JvdXAgY29tcG9uZW50IHdyYXBwaW5nIExpbmVQYXRocycsICgpID0+IHtcbiAgICBjb25zdCBkYXRhID0gW3sgdmFsdWU6IDEsIGxhYmVsOiAnQScgfV07XG4gICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlckxpbmVQbG90KHtcbiAgICAgIGRhdGEsXG4gICAgICBncmFwaFByb3BzOiBncmFwaFByb3BzKCksXG4gICAgfSk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG5cbiAgaXQoJ2hhbmRsZXMgcmVjdCB3aXRoIGV4dHJhIHBhZGRpbmcgd2hlbiBkb3R0ZWQnLCAoKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFt7IHZhbHVlOiAyLCBsYWJlbDogJ0EnLCBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2luY29ycmVjdCcgfSB9XTtcbiAgICBjb25zdCBjb3JyZWN0RGF0YSA9IFt7IHZhbHVlOiAzLCBsYWJlbDogJ0EnIH1dO1xuICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJMaW5lUGxvdCh7XG4gICAgICBkYXRhLFxuICAgICAgZ3JhcGhQcm9wczogZ3JhcGhQcm9wcygpLFxuICAgICAgY29ycmVjdERhdGEsXG4gICAgfSk7XG4gICAgZXhwZWN0KGNvbnRhaW5lcikudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUFxQyxJQUFBTSxTQUFBO0FBQUEsU0FBQUYsd0JBQUFHLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFMLHVCQUFBLFlBQUFBLHdCQUFBRyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsbUJBQUFULENBQUEsaUJBQUFBLENBQUEsZ0JBQUFVLE9BQUEsQ0FBQVYsQ0FBQSwwQkFBQUEsQ0FBQSxTQUFBUSxDQUFBLE1BQUFGLENBQUEsR0FBQUwsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsUUFBQUcsQ0FBQSxDQUFBSyxHQUFBLENBQUFYLENBQUEsVUFBQU0sQ0FBQSxDQUFBTSxHQUFBLENBQUFaLENBQUEsR0FBQU0sQ0FBQSxDQUFBTyxHQUFBLENBQUFiLENBQUEsRUFB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
|