@pie-lib/charting 5.17.0-beta.0 → 5.17.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.
- package/CHANGELOG.json +1 -581
- package/CHANGELOG.md +149 -43
- package/package.json +5 -5
- package/src/__tests__/__snapshots__/axes.test.jsx.snap +1 -0
- package/src/__tests__/__snapshots__/chart.test.jsx.snap +0 -18
- package/src/__tests__/__snapshots__/grid.test.jsx.snap +61 -17
- package/src/__tests__/axes.test.jsx +0 -5
- package/src/__tests__/chart.test.jsx +8 -0
- package/src/actions-button.jsx +109 -0
- package/src/axes.jsx +5 -31
- package/src/bars/common/bars.jsx +8 -10
- package/src/chart-setup.jsx +1 -1
- package/src/chart.jsx +31 -26
- package/src/common/drag-handle.jsx +3 -3
- package/src/common/styles.js +1 -1
- package/src/grid.jsx +38 -13
- package/src/index.js +2 -1
- package/src/key-legend.jsx +75 -0
- package/src/line/common/drag-handle.jsx +3 -9
- package/src/line/common/line.jsx +2 -6
- package/src/line/line-cross.js +29 -2
- package/src/line/line-dot.js +36 -19
- package/src/mark-label.jsx +7 -2
- package/src/plot/common/plot.jsx +8 -5
- package/src/tool-menu.jsx +1 -1
- package/lib/__tests__/axes.test.js +0 -181
- package/lib/__tests__/chart-setup.test.js +0 -58
- package/lib/__tests__/chart-type.test.js +0 -42
- package/lib/__tests__/chart.test.js +0 -108
- package/lib/__tests__/grid.test.js +0 -48
- package/lib/__tests__/mark-label.test.js +0 -57
- package/lib/__tests__/utils.js +0 -56
- package/lib/__tests__/utils.test.js +0 -197
- package/lib/axes.js +0 -643
- package/lib/bars/__tests__/bar.test.js +0 -62
- package/lib/bars/__tests__/histogram.test.js +0 -64
- package/lib/bars/__tests__/utils.js +0 -56
- package/lib/bars/bar.js +0 -86
- package/lib/bars/common/__tests__/bars.test.js +0 -100
- package/lib/bars/common/__tests__/utils.js +0 -56
- package/lib/bars/common/bars.js +0 -301
- package/lib/bars/histogram.js +0 -87
- package/lib/chart-setup.js +0 -458
- package/lib/chart-type.js +0 -71
- package/lib/chart-types.js +0 -31
- package/lib/chart.js +0 -438
- package/lib/common/__tests__/drag-handle.test.js +0 -134
- package/lib/common/__tests__/utils.js +0 -56
- package/lib/common/drag-handle.js +0 -175
- package/lib/common/drag-icon.js +0 -52
- package/lib/common/styles.js +0 -40
- package/lib/grid.js +0 -104
- package/lib/index.js +0 -40
- package/lib/line/__tests__/line-cross.test.js +0 -64
- package/lib/line/__tests__/line-dot.test.js +0 -64
- package/lib/line/__tests__/utils.js +0 -56
- package/lib/line/common/__tests__/drag-handle.test.js +0 -134
- package/lib/line/common/__tests__/line.test.js +0 -128
- package/lib/line/common/__tests__/utils.js +0 -56
- package/lib/line/common/drag-handle.js +0 -157
- package/lib/line/common/line.js +0 -261
- package/lib/line/line-cross.js +0 -168
- package/lib/line/line-dot.js +0 -131
- package/lib/mark-label.js +0 -255
- package/lib/plot/__tests__/dot.test.js +0 -64
- package/lib/plot/__tests__/line.test.js +0 -64
- package/lib/plot/__tests__/utils.js +0 -56
- package/lib/plot/common/__tests__/plot.test.js +0 -103
- package/lib/plot/common/__tests__/utils.js +0 -56
- package/lib/plot/common/plot.js +0 -280
- package/lib/plot/dot.js +0 -123
- package/lib/plot/line.js +0 -152
- package/lib/tool-menu.js +0 -142
- package/lib/utils.js +0 -244
package/lib/__tests__/utils.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.scaleMock = exports.graphProps = void 0;
|
|
7
|
-
|
|
8
|
-
var scaleMock = function scaleMock() {
|
|
9
|
-
var fn = jest.fn(function (n) {
|
|
10
|
-
return n;
|
|
11
|
-
});
|
|
12
|
-
fn.invert = jest.fn(function (n) {
|
|
13
|
-
return n;
|
|
14
|
-
});
|
|
15
|
-
return fn;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
exports.scaleMock = scaleMock;
|
|
19
|
-
|
|
20
|
-
var graphProps = function graphProps() {
|
|
21
|
-
var dmin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
22
|
-
var dmax = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
23
|
-
var rmin = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
24
|
-
var rmax = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
|
|
25
|
-
return {
|
|
26
|
-
scale: {
|
|
27
|
-
x: scaleMock(),
|
|
28
|
-
y: scaleMock()
|
|
29
|
-
},
|
|
30
|
-
snap: {
|
|
31
|
-
x: jest.fn(function (n) {
|
|
32
|
-
return n;
|
|
33
|
-
}),
|
|
34
|
-
y: jest.fn(function (n) {
|
|
35
|
-
return n;
|
|
36
|
-
})
|
|
37
|
-
},
|
|
38
|
-
domain: {
|
|
39
|
-
min: dmin,
|
|
40
|
-
max: dmax,
|
|
41
|
-
step: 1
|
|
42
|
-
},
|
|
43
|
-
range: {
|
|
44
|
-
min: rmin,
|
|
45
|
-
max: rmax,
|
|
46
|
-
step: 1
|
|
47
|
-
},
|
|
48
|
-
size: {
|
|
49
|
-
width: 400,
|
|
50
|
-
height: 400
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
exports.graphProps = graphProps;
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMuanMiXSwibmFtZXMiOlsic2NhbGVNb2NrIiwiZm4iLCJqZXN0IiwibiIsImludmVydCIsImdyYXBoUHJvcHMiLCJkbWluIiwiZG1heCIsInJtaW4iLCJybWF4Iiwic2NhbGUiLCJ4IiwieSIsInNuYXAiLCJkb21haW4iLCJtaW4iLCJtYXgiLCJzdGVwIiwicmFuZ2UiLCJzaXplIiwid2lkdGgiLCJoZWlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBTyxJQUFNQSxTQUFTLEdBQUcsU0FBWkEsU0FBWSxHQUFNO0FBQzdCLE1BQU1DLEVBQUUsR0FBR0MsSUFBSSxDQUFDRCxFQUFMLENBQVEsVUFBQ0UsQ0FBRDtBQUFBLFdBQU9BLENBQVA7QUFBQSxHQUFSLENBQVg7QUFDQUYsRUFBQUEsRUFBRSxDQUFDRyxNQUFILEdBQVlGLElBQUksQ0FBQ0QsRUFBTCxDQUFRLFVBQUNFLENBQUQ7QUFBQSxXQUFPQSxDQUFQO0FBQUEsR0FBUixDQUFaO0FBQ0EsU0FBT0YsRUFBUDtBQUNELENBSk07Ozs7QUFNQSxJQUFNSSxVQUFVLEdBQUcsU0FBYkEsVUFBYTtBQUFBLE1BQUNDLElBQUQsdUVBQVEsQ0FBUjtBQUFBLE1BQVdDLElBQVgsdUVBQWtCLENBQWxCO0FBQUEsTUFBcUJDLElBQXJCLHVFQUE0QixDQUE1QjtBQUFBLE1BQStCQyxJQUEvQix1RUFBc0MsQ0FBdEM7QUFBQSxTQUE2QztBQUNyRUMsSUFBQUEsS0FBSyxFQUFFO0FBQ0xDLE1BQUFBLENBQUMsRUFBRVgsU0FBUyxFQURQO0FBRUxZLE1BQUFBLENBQUMsRUFBRVosU0FBUztBQUZQLEtBRDhEO0FBS3JFYSxJQUFBQSxJQUFJLEVBQUU7QUFDSkYsTUFBQUEsQ0FBQyxFQUFFVCxJQUFJLENBQUNELEVBQUwsQ0FBUSxVQUFDRSxDQUFEO0FBQUEsZUFBT0EsQ0FBUDtBQUFBLE9BQVIsQ0FEQztBQUVKUyxNQUFBQSxDQUFDLEVBQUVWLElBQUksQ0FBQ0QsRUFBTCxDQUFRLFVBQUNFLENBQUQ7QUFBQSxlQUFPQSxDQUFQO0FBQUEsT0FBUjtBQUZDLEtBTCtEO0FBU3JFVyxJQUFBQSxNQUFNLEVBQUU7QUFDTkMsTUFBQUEsR0FBRyxFQUFFVCxJQURDO0FBRU5VLE1BQUFBLEdBQUcsRUFBRVQsSUFGQztBQUdOVSxNQUFBQSxJQUFJLEVBQUU7QUFIQSxLQVQ2RDtBQWNyRUMsSUFBQUEsS0FBSyxFQUFFO0FBQ0xILE1BQUFBLEdBQUcsRUFBRVAsSUFEQTtBQUVMUSxNQUFBQSxHQUFHLEVBQUVQLElBRkE7QUFHTFEsTUFBQUEsSUFBSSxFQUFFO0FBSEQsS0FkOEQ7QUFtQnJFRSxJQUFBQSxJQUFJLEVBQUU7QUFDSkMsTUFBQUEsS0FBSyxFQUFFLEdBREg7QUFFSkMsTUFBQUEsTUFBTSxFQUFFO0FBRko7QUFuQitELEdBQTdDO0FBQUEsQ0FBbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgc2NhbGVNb2NrID0gKCkgPT4ge1xuICBjb25zdCBmbiA9IGplc3QuZm4oKG4pID0+IG4pO1xuICBmbi5pbnZlcnQgPSBqZXN0LmZuKChuKSA9PiBuKTtcbiAgcmV0dXJuIGZuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdyYXBoUHJvcHMgPSAoZG1pbiA9IDAsIGRtYXggPSAxLCBybWluID0gMCwgcm1heCA9IDEpID0+ICh7XG4gIHNjYWxlOiB7XG4gICAgeDogc2NhbGVNb2NrKCksXG4gICAgeTogc2NhbGVNb2NrKCksXG4gIH0sXG4gIHNuYXA6IHtcbiAgICB4OiBqZXN0LmZuKChuKSA9PiBuKSxcbiAgICB5OiBqZXN0LmZuKChuKSA9PiBuKSxcbiAgfSxcbiAgZG9tYWluOiB7XG4gICAgbWluOiBkbWluLFxuICAgIG1heDogZG1heCxcbiAgICBzdGVwOiAxLFxuICB9LFxuICByYW5nZToge1xuICAgIG1pbjogcm1pbixcbiAgICBtYXg6IHJtYXgsXG4gICAgc3RlcDogMSxcbiAgfSxcbiAgc2l6ZToge1xuICAgIHdpZHRoOiA0MDAsXG4gICAgaGVpZ2h0OiA0MDAsXG4gIH0sXG59KTtcbiJdfQ==
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
-
|
|
5
|
-
var utils = _interopRequireWildcard(require("../utils"));
|
|
6
|
-
|
|
7
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
8
|
-
|
|
9
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
-
|
|
11
|
-
var xy = function xy(x, y) {
|
|
12
|
-
return {
|
|
13
|
-
x: x,
|
|
14
|
-
y: y
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
describe('utils', function () {
|
|
19
|
-
describe('getTickValues', function () {
|
|
20
|
-
var assertGetTickValues = function assertGetTickValues(range, points) {
|
|
21
|
-
it("converts ".concat(range, " -> ").concat(points), function () {
|
|
22
|
-
var result = utils.getTickValues(range);
|
|
23
|
-
expect(result).toEqual(points);
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
assertGetTickValues({
|
|
28
|
-
min: 0,
|
|
29
|
-
max: 5,
|
|
30
|
-
step: 1
|
|
31
|
-
}, [0, 1, 2, 3, 4, 5]);
|
|
32
|
-
assertGetTickValues({
|
|
33
|
-
min: 0,
|
|
34
|
-
max: 5,
|
|
35
|
-
step: 0.5
|
|
36
|
-
}, [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]);
|
|
37
|
-
assertGetTickValues({
|
|
38
|
-
min: 0.4,
|
|
39
|
-
max: 2,
|
|
40
|
-
step: 0.3
|
|
41
|
-
}, [0.4, 0.7, 1, 1.3, 1.6, 1.9]);
|
|
42
|
-
});
|
|
43
|
-
describe('getDomainAndRangeByChartType', function () {
|
|
44
|
-
var assertGetDomainAndRangeByChartType = function assertGetDomainAndRangeByChartType(domain, range, chartType, correctValues) {
|
|
45
|
-
it('returns correct values for domain and range', function () {
|
|
46
|
-
var result = utils.getDomainAndRangeByChartType(domain, range, chartType);
|
|
47
|
-
expect(result).toEqual(correctValues);
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
assertGetDomainAndRangeByChartType({
|
|
52
|
-
min: -1,
|
|
53
|
-
max: 4
|
|
54
|
-
}, {
|
|
55
|
-
min: 1,
|
|
56
|
-
max: 2,
|
|
57
|
-
step: 1
|
|
58
|
-
}, 'line', {
|
|
59
|
-
domain: {
|
|
60
|
-
min: 0,
|
|
61
|
-
max: 1,
|
|
62
|
-
step: 1,
|
|
63
|
-
labelStep: 1
|
|
64
|
-
},
|
|
65
|
-
range: {
|
|
66
|
-
min: 1,
|
|
67
|
-
max: 2,
|
|
68
|
-
step: 1,
|
|
69
|
-
labelStep: 1
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
assertGetDomainAndRangeByChartType({
|
|
73
|
-
min: -1,
|
|
74
|
-
max: 4
|
|
75
|
-
}, {
|
|
76
|
-
min: 0.1,
|
|
77
|
-
max: 2,
|
|
78
|
-
labelStep: 0.1
|
|
79
|
-
}, 'line', {
|
|
80
|
-
domain: {
|
|
81
|
-
min: 0,
|
|
82
|
-
max: 1,
|
|
83
|
-
step: 1,
|
|
84
|
-
labelStep: 1
|
|
85
|
-
},
|
|
86
|
-
range: {
|
|
87
|
-
min: 0.1,
|
|
88
|
-
max: 2,
|
|
89
|
-
step: 0.1,
|
|
90
|
-
labelStep: 0.1
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
assertGetDomainAndRangeByChartType({
|
|
94
|
-
min: -1,
|
|
95
|
-
max: 4
|
|
96
|
-
}, {
|
|
97
|
-
min: 0.2,
|
|
98
|
-
max: 2.4,
|
|
99
|
-
step: 0.1
|
|
100
|
-
}, 'dotPlot', {
|
|
101
|
-
domain: {
|
|
102
|
-
min: 0,
|
|
103
|
-
max: 1,
|
|
104
|
-
step: 1,
|
|
105
|
-
labelStep: 1
|
|
106
|
-
},
|
|
107
|
-
range: {
|
|
108
|
-
min: 0,
|
|
109
|
-
max: 2,
|
|
110
|
-
step: 1,
|
|
111
|
-
labelStep: 0.1
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
describe('getGridLinesAndAxisByChartType', function () {
|
|
116
|
-
var assertGetGridLinesAndAxisByChartType = function assertGetGridLinesAndAxisByChartType(range, chartType, gridLines) {
|
|
117
|
-
it('returns proper grid values', function () {
|
|
118
|
-
var result = utils.getGridLinesAndAxisByChartType(range, chartType);
|
|
119
|
-
expect(result).toEqual(gridLines);
|
|
120
|
-
});
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
assertGetGridLinesAndAxisByChartType({
|
|
124
|
-
min: 0,
|
|
125
|
-
max: 1,
|
|
126
|
-
step: 1
|
|
127
|
-
}, 'lineDot', {
|
|
128
|
-
verticalLines: undefined,
|
|
129
|
-
horizontalLines: [0, 1],
|
|
130
|
-
leftAxis: true
|
|
131
|
-
});
|
|
132
|
-
assertGetGridLinesAndAxisByChartType({
|
|
133
|
-
min: 0,
|
|
134
|
-
max: 1,
|
|
135
|
-
step: 1
|
|
136
|
-
}, 'lineCross', {
|
|
137
|
-
verticalLines: undefined,
|
|
138
|
-
horizontalLines: [0, 1],
|
|
139
|
-
leftAxis: true
|
|
140
|
-
});
|
|
141
|
-
assertGetGridLinesAndAxisByChartType({
|
|
142
|
-
min: 0,
|
|
143
|
-
max: 1,
|
|
144
|
-
step: 1
|
|
145
|
-
}, 'bar', {
|
|
146
|
-
verticalLines: [],
|
|
147
|
-
horizontalLines: [0, 1],
|
|
148
|
-
leftAxis: true
|
|
149
|
-
});
|
|
150
|
-
assertGetGridLinesAndAxisByChartType({
|
|
151
|
-
min: 0,
|
|
152
|
-
max: 1,
|
|
153
|
-
step: 1
|
|
154
|
-
}, 'dotPlot', {
|
|
155
|
-
verticalLines: [],
|
|
156
|
-
horizontalLines: [],
|
|
157
|
-
leftAxis: false
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
describe('getTopPadding', function () {
|
|
161
|
-
var assertGetTopPadding = function assertGetTopPadding(barWidth, topPadding) {
|
|
162
|
-
it('returns proper top padding', function () {
|
|
163
|
-
var result = utils.getTopPadding(barWidth);
|
|
164
|
-
expect(result).toEqual(topPadding);
|
|
165
|
-
});
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
assertGetTopPadding(20, 50);
|
|
169
|
-
assertGetTopPadding(35, 30);
|
|
170
|
-
assertGetTopPadding(55, 15);
|
|
171
|
-
assertGetTopPadding(65, 0);
|
|
172
|
-
});
|
|
173
|
-
describe('getRotateAngle', function () {
|
|
174
|
-
var assertGetRotateAngle = function assertGetRotateAngle(_ref, rotateAngle) {
|
|
175
|
-
var fontSize = _ref.fontSize,
|
|
176
|
-
height = _ref.height;
|
|
177
|
-
it('returns proper rotate angle', function () {
|
|
178
|
-
var result = utils.getRotateAngle(fontSize, height);
|
|
179
|
-
expect(result).toEqual(rotateAngle);
|
|
180
|
-
});
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
assertGetRotateAngle({
|
|
184
|
-
fontSize: 14,
|
|
185
|
-
height: 14
|
|
186
|
-
}, 0);
|
|
187
|
-
assertGetRotateAngle({
|
|
188
|
-
fontSize: 14,
|
|
189
|
-
height: 28
|
|
190
|
-
}, 25);
|
|
191
|
-
assertGetRotateAngle({
|
|
192
|
-
fontSize: 14,
|
|
193
|
-
height: 42
|
|
194
|
-
}, 25);
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMudGVzdC5qcyJdLCJuYW1lcyI6WyJ4eSIsIngiLCJ5IiwiZGVzY3JpYmUiLCJhc3NlcnRHZXRUaWNrVmFsdWVzIiwicmFuZ2UiLCJwb2ludHMiLCJpdCIsInJlc3VsdCIsInV0aWxzIiwiZ2V0VGlja1ZhbHVlcyIsImV4cGVjdCIsInRvRXF1YWwiLCJtaW4iLCJtYXgiLCJzdGVwIiwiYXNzZXJ0R2V0RG9tYWluQW5kUmFuZ2VCeUNoYXJ0VHlwZSIsImRvbWFpbiIsImNoYXJ0VHlwZSIsImNvcnJlY3RWYWx1ZXMiLCJnZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlIiwibGFiZWxTdGVwIiwiYXNzZXJ0R2V0R3JpZExpbmVzQW5kQXhpc0J5Q2hhcnRUeXBlIiwiZ3JpZExpbmVzIiwiZ2V0R3JpZExpbmVzQW5kQXhpc0J5Q2hhcnRUeXBlIiwidmVydGljYWxMaW5lcyIsInVuZGVmaW5lZCIsImhvcml6b250YWxMaW5lcyIsImxlZnRBeGlzIiwiYXNzZXJ0R2V0VG9wUGFkZGluZyIsImJhcldpZHRoIiwidG9wUGFkZGluZyIsImdldFRvcFBhZGRpbmciLCJhc3NlcnRHZXRSb3RhdGVBbmdsZSIsInJvdGF0ZUFuZ2xlIiwiZm9udFNpemUiLCJoZWlnaHQiLCJnZXRSb3RhdGVBbmdsZSJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFFQSxJQUFNQSxFQUFFLEdBQUcsU0FBTEEsRUFBSyxDQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxTQUFXO0FBQUVELElBQUFBLENBQUMsRUFBREEsQ0FBRjtBQUFLQyxJQUFBQSxDQUFDLEVBQURBO0FBQUwsR0FBWDtBQUFBLENBQVg7O0FBRUFDLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBTTtBQUN0QkEsRUFBQUEsUUFBUSxDQUFDLGVBQUQsRUFBa0IsWUFBTTtBQUM5QixRQUFNQyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQXNCLENBQUNDLEtBQUQsRUFBUUMsTUFBUixFQUFt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QWNBMUIsRUFBQUEsUUFBUSxDQUFDLGdCQUFELEVBQW1CLFlBQU07QUFDL0IsUUFBTThCLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBdUIsT0FBdUJDLFdBQXZCLEVBQXVDO0FBQUEsVUFBcENDLFFBQW9DLFFBQXBDQSxRQUFvQztBQUFBLFVBQTFCQyxNQUEwQixRQUExQkEsTUFBMEI7QUFDbEU3QixNQUFBQSxFQUFFLENBQUMsNkJBQUQsRUFBZ0MsWUFBTTtBQUN0QyxZQUFNQyxNQUFNLEdBQUdDLEtBQUssQ0FBQzRCLGNBQU4sQ0FBcUJGLFFBQXJCLEVBQStCQyxNQUEvQixDQUFmO0FBQ0F6QixRQUFBQSxNQUFNLENBQUNILE1BQUQsQ0FBTixDQUFlSSxPQUFmLENBQXVCc0IsV0FBdkI7QUFDRCxPQUhDLENBQUY7QUFJRCxLQUxEOztBQU9BRCxJQUFBQSxvQkFBb0IsQ0FBQztBQUFFRSxNQUFBQSxRQUFRLEVBQUUsRUFBWjtBQUFnQkMsTUFBQUEsTUFBTSxFQUFFO0FBQXhCLEtBQUQsRUFBK0IsQ0FBL0IsQ0FBcEI7QUFDQUgsSUFBQUEsb0JBQW9CLENBQUM7QUFBRUUsTUFBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0JDLE1BQUFBLE1BQU0sRUFBRTtBQUF4QixLQUFELEVBQStCLEVBQS9CLENBQXBCO0FBQ0FILElBQUFBLG9CQUFvQixDQUFDO0FBQUVFLE1BQUFBLFFBQVEsRUFBRSxFQUFaO0FBQWdCQyxNQUFBQSxNQUFNLEVBQUU7QUFBeEIsS0FBRCxFQUErQixFQUEvQixDQUFwQjtBQUNELEdBWE8sQ0FBUjtBQVlELENBL0ZPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dGlscyBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IHh5ID0gKHgsIHkpID0+ICh7IHgsIHkgfSk7XG5cbmRlc2NyaWJlKCd1dGlscycsICgpID0+IHtcbiAgZGVzY3JpYmUoJ2dldFRpY2tWYWx1ZXMnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0R2V0VGlja1ZhbHVlcyA9IChyYW5nZSwgcG9pbnRzKSA9PiB7XG4gICAgICBpdChgY29udmVydHMgJHtyYW5nZX0gLT4gJHtwb2ludHN9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5nZXRUaWNrVmFsdWVzKHJhbmdlKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChwb2ludHMpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAsIG1heDogNSwgc3RlcDogMSB9LCBbMCwgMSwgMiwgMywgNCwgNV0pO1xuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAsIG1heDogNSwgc3RlcDogMC41IH0sIFswLCAwLjUsIDEsIDEuNSwgMiwgMi41LCAzLCAzLjUsIDQsIDQuNSwgNV0pO1xuICAgIGFzc2VydEdldFRpY2tWYWx1ZXMoeyBtaW46IDAuNCwgbWF4OiAyLCBzdGVwOiAwLjMgfSwgWzAuNCwgMC43LCAxLCAxLjMsIDEuNiwgMS45XSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydEdldERvbWFpbkFuZFJhbmdlQnlDaGFydFR5cGUgPSAoZG9tYWluLCByYW5nZSwgY2hhcnRUeXBlLCBjb3JyZWN0VmFsdWVzKSA9PiB7XG4gICAgICBpdCgncmV0dXJucyBjb3JyZWN0IHZhbHVlcyBmb3IgZG9tYWluIGFuZCByYW5nZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuZ2V0RG9tYWluQW5kUmFuZ2VCeUNoYXJ0VHlwZShkb21haW4sIHJhbmdlLCBjaGFydFR5cGUpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGNvcnJlY3RWYWx1ZXMpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydEdldERvbWFpbkFuZFJhbmdlQnlDaGFydFR5cGUoeyBtaW46IC0xLCBtYXg6IDQgfSwgeyBtaW46IDEsIG1heDogMiwgc3RlcDogMSB9LCAnbGluZScsIHtcbiAgICAgIGRvbWFpbjogeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSwgbGFiZWxTdGVwOiAxIH0sXG4gICAgICByYW5nZTogeyBtaW46IDEsIG1heDogMiwgc3RlcDogMSwgbGFiZWxTdGVwOiAxIH0sXG4gICAgfSk7XG4gICAgYXNzZXJ0R2V0RG9tYWluQW5kUmFuZ2VCeUNoYXJ0VHlwZSh7IG1pbjogLTEsIG1heDogNCB9LCB7IG1pbjogMC4xLCBtYXg6IDIsIGxhYmVsU3RlcDogMC4xIH0sICdsaW5lJywge1xuICAgICAgZG9tYWluOiB7IG1pbjogMCwgbWF4OiAxLCBzdGVwOiAxLCBsYWJlbFN0ZXA6IDEgfSxcbiAgICAgIHJhbmdlOiB7IG1pbjogMC4xLCBtYXg6IDIsIHN0ZXA6IDAuMSwgbGFiZWxTdGVwOiAwLjEgfSxcbiAgICB9KTtcbiAgICBhc3NlcnRHZXREb21haW5BbmRSYW5nZUJ5Q2hhcnRUeXBlKHsgbWluOiAtMSwgbWF4OiA0IH0sIHsgbWluOiAwLjIsIG1heDogMi40LCBzdGVwOiAwLjEgfSwgJ2RvdFBsb3QnLCB7XG4gICAgICBkb21haW46IHsgbWluOiAwLCBtYXg6IDEsIHN0ZXA6IDEsIGxhYmVsU3RlcDogMSB9LFxuICAgICAgcmFuZ2U6IHsgbWluOiAwLCBtYXg6IDIsIHN0ZXA6IDEsIGxhYmVsU3RlcDogMC4xIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0R2V0R3JpZExpbmVzQW5kQXhpc0J5Q2hhcnRUeXBlID0gKHJhbmdlLCBjaGFydFR5cGUsIGdyaWRMaW5lcykgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgcHJvcGVyIGdyaWQgdmFsdWVzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5nZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUocmFuZ2UsIGNoYXJ0VHlwZSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZ3JpZExpbmVzKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3NlcnRHZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUoeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LCAnbGluZURvdCcsIHtcbiAgICAgIHZlcnRpY2FsTGluZXM6IHVuZGVmaW5lZCxcbiAgICAgIGhvcml6b250YWxMaW5lczogWzAsIDFdLFxuICAgICAgbGVmdEF4aXM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBhc3NlcnRHZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUoeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LCAnbGluZUNyb3NzJywge1xuICAgICAgdmVydGljYWxMaW5lczogdW5kZWZpbmVkLFxuICAgICAgaG9yaXpvbnRhbExpbmVzOiBbMCwgMV0sXG4gICAgICBsZWZ0QXhpczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGFzc2VydEdldEdyaWRMaW5lc0FuZEF4aXNCeUNoYXJ0VHlwZSh7IG1pbjogMCwgbWF4OiAxLCBzdGVwOiAxIH0sICdiYXInLCB7XG4gICAgICB2ZXJ0aWNhbExpbmVzOiBbXSxcbiAgICAgIGhvcml6b250YWxMaW5lczogWzAsIDFdLFxuICAgICAgbGVmdEF4aXM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBhc3NlcnRHZXRHcmlkTGluZXNBbmRBeGlzQnlDaGFydFR5cGUoeyBtaW46IDAsIG1heDogMSwgc3RlcDogMSB9LCAnZG90UGxvdCcsIHtcbiAgICAgIHZlcnRpY2FsTGluZXM6IFtdLFxuICAgICAgaG9yaXpvbnRhbExpbmVzOiBbXSxcbiAgICAgIGxlZnRBeGlzOiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFRvcFBhZGRpbmcnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0R2V0VG9wUGFkZGluZyA9IChiYXJXaWR0aCwgdG9wUGFkZGluZykgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgcHJvcGVyIHRvcCBwYWRkaW5nJywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB1dGlscy5nZXRUb3BQYWRkaW5nKGJhcldpZHRoKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh0b3BQYWRkaW5nKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3NlcnRHZXRUb3BQYWRkaW5nKDIwLCA1MCk7XG4gICAgYXNzZXJ0R2V0VG9wUGFkZGluZygzNSwgMzApO1xuICAgIGFzc2VydEdldFRvcFBhZGRpbmcoNTUsIDE1KTtcbiAgICBhc3NlcnRHZXRUb3BQYWRkaW5nKDY1LCAwKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2dldFJvdGF0ZUFuZ2xlJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydEdldFJvdGF0ZUFuZ2xlID0gKHsgZm9udFNpemUsIGhlaWdodCB9LCByb3RhdGVBbmdsZSkgPT4ge1xuICAgICAgaXQoJ3JldHVybnMgcHJvcGVyIHJvdGF0ZSBhbmdsZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbHMuZ2V0Um90YXRlQW5nbGUoZm9udFNpemUsIGhlaWdodCk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwocm90YXRlQW5nbGUpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydEdldFJvdGF0ZUFuZ2xlKHsgZm9udFNpemU6IDE0LCBoZWlnaHQ6IDE0IH0sIDApO1xuICAgIGFzc2VydEdldFJvdGF0ZUFuZ2xlKHsgZm9udFNpemU6IDE0LCBoZWlnaHQ6IDI4IH0sIDI1KTtcbiAgICBhc3NlcnRHZXRSb3RhdGVBbmdsZSh7IGZvbnRTaXplOiAxNCwgaGVpZ2h0OiA0MiB9LCAyNSk7XG4gIH0pO1xufSk7XG4iXX0=
|