@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.
Files changed (74) hide show
  1. package/CHANGELOG.json +1 -581
  2. package/CHANGELOG.md +149 -43
  3. package/package.json +5 -5
  4. package/src/__tests__/__snapshots__/axes.test.jsx.snap +1 -0
  5. package/src/__tests__/__snapshots__/chart.test.jsx.snap +0 -18
  6. package/src/__tests__/__snapshots__/grid.test.jsx.snap +61 -17
  7. package/src/__tests__/axes.test.jsx +0 -5
  8. package/src/__tests__/chart.test.jsx +8 -0
  9. package/src/actions-button.jsx +109 -0
  10. package/src/axes.jsx +5 -31
  11. package/src/bars/common/bars.jsx +8 -10
  12. package/src/chart-setup.jsx +1 -1
  13. package/src/chart.jsx +31 -26
  14. package/src/common/drag-handle.jsx +3 -3
  15. package/src/common/styles.js +1 -1
  16. package/src/grid.jsx +38 -13
  17. package/src/index.js +2 -1
  18. package/src/key-legend.jsx +75 -0
  19. package/src/line/common/drag-handle.jsx +3 -9
  20. package/src/line/common/line.jsx +2 -6
  21. package/src/line/line-cross.js +29 -2
  22. package/src/line/line-dot.js +36 -19
  23. package/src/mark-label.jsx +7 -2
  24. package/src/plot/common/plot.jsx +8 -5
  25. package/src/tool-menu.jsx +1 -1
  26. package/lib/__tests__/axes.test.js +0 -181
  27. package/lib/__tests__/chart-setup.test.js +0 -58
  28. package/lib/__tests__/chart-type.test.js +0 -42
  29. package/lib/__tests__/chart.test.js +0 -108
  30. package/lib/__tests__/grid.test.js +0 -48
  31. package/lib/__tests__/mark-label.test.js +0 -57
  32. package/lib/__tests__/utils.js +0 -56
  33. package/lib/__tests__/utils.test.js +0 -197
  34. package/lib/axes.js +0 -643
  35. package/lib/bars/__tests__/bar.test.js +0 -62
  36. package/lib/bars/__tests__/histogram.test.js +0 -64
  37. package/lib/bars/__tests__/utils.js +0 -56
  38. package/lib/bars/bar.js +0 -86
  39. package/lib/bars/common/__tests__/bars.test.js +0 -100
  40. package/lib/bars/common/__tests__/utils.js +0 -56
  41. package/lib/bars/common/bars.js +0 -301
  42. package/lib/bars/histogram.js +0 -87
  43. package/lib/chart-setup.js +0 -458
  44. package/lib/chart-type.js +0 -71
  45. package/lib/chart-types.js +0 -31
  46. package/lib/chart.js +0 -438
  47. package/lib/common/__tests__/drag-handle.test.js +0 -134
  48. package/lib/common/__tests__/utils.js +0 -56
  49. package/lib/common/drag-handle.js +0 -175
  50. package/lib/common/drag-icon.js +0 -52
  51. package/lib/common/styles.js +0 -40
  52. package/lib/grid.js +0 -104
  53. package/lib/index.js +0 -40
  54. package/lib/line/__tests__/line-cross.test.js +0 -64
  55. package/lib/line/__tests__/line-dot.test.js +0 -64
  56. package/lib/line/__tests__/utils.js +0 -56
  57. package/lib/line/common/__tests__/drag-handle.test.js +0 -134
  58. package/lib/line/common/__tests__/line.test.js +0 -128
  59. package/lib/line/common/__tests__/utils.js +0 -56
  60. package/lib/line/common/drag-handle.js +0 -157
  61. package/lib/line/common/line.js +0 -261
  62. package/lib/line/line-cross.js +0 -168
  63. package/lib/line/line-dot.js +0 -131
  64. package/lib/mark-label.js +0 -255
  65. package/lib/plot/__tests__/dot.test.js +0 -64
  66. package/lib/plot/__tests__/line.test.js +0 -64
  67. package/lib/plot/__tests__/utils.js +0 -56
  68. package/lib/plot/common/__tests__/plot.test.js +0 -103
  69. package/lib/plot/common/__tests__/utils.js +0 -56
  70. package/lib/plot/common/plot.js +0 -280
  71. package/lib/plot/dot.js +0 -123
  72. package/lib/plot/line.js +0 -152
  73. package/lib/tool-menu.js +0 -142
  74. package/lib/utils.js +0 -244
@@ -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=