@pie-lib/plot 2.27.3-next.2 → 2.27.4-next.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.md +10 -84
- package/lib/__tests__/draggable.test.js +48 -0
- package/lib/__tests__/grid-draggable.test.js +773 -0
- package/lib/__tests__/root.test.js +265 -0
- package/lib/__tests__/trig.test.js +168 -0
- package/lib/__tests__/utils.test.js +300 -0
- package/lib/draggable.js +13 -34
- package/lib/draggable.js.map +1 -1
- package/lib/graph-props.js +5 -12
- package/lib/graph-props.js.map +1 -1
- package/lib/grid-draggable.js +68 -142
- package/lib/grid-draggable.js.map +1 -1
- package/lib/index.js +2 -17
- package/lib/index.js.map +1 -1
- package/lib/label.js +82 -108
- package/lib/label.js.map +1 -1
- package/lib/root.js +190 -215
- package/lib/root.js.map +1 -1
- package/lib/trig.js +15 -62
- package/lib/trig.js.map +1 -1
- package/lib/types.js +10 -38
- package/lib/types.js.map +1 -1
- package/lib/utils.js +23 -87
- package/lib/utils.js.map +1 -1
- package/package.json +11 -22
- package/src/__tests__/draggable.test.jsx +33 -15
- package/src/__tests__/grid-draggable.test.jsx +377 -224
- package/src/__tests__/root.test.jsx +213 -57
- package/src/grid-draggable.jsx +13 -4
- package/src/label.jsx +101 -69
- package/src/root.jsx +175 -129
- package/esm/index.css +0 -847
- package/esm/index.js +0 -199267
- package/esm/index.js.map +0 -1
- package/esm/package.json +0 -3
- package/src/__tests__/__snapshots__/grid-draggable.test.jsx.snap +0 -185
- package/src/__tests__/__snapshots__/root.test.jsx.snap +0 -18
package/lib/root.js
CHANGED
|
@@ -1,84 +1,131 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports["default"] = exports.Root = void 0;
|
|
9
|
-
|
|
10
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
11
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
12
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
24
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
-
|
|
26
15
|
var _react = _interopRequireDefault(require("react"));
|
|
27
|
-
|
|
28
|
-
var _styles = require("@material-ui/core/styles");
|
|
29
|
-
|
|
16
|
+
var _styles = require("@mui/material/styles");
|
|
30
17
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
|
-
|
|
32
18
|
var _d3Selection = require("d3-selection");
|
|
33
|
-
|
|
34
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
35
|
-
|
|
36
19
|
var _renderUi = require("@pie-lib/render-ui");
|
|
37
|
-
|
|
38
20
|
var _editableHtml = _interopRequireDefault(require("@pie-lib/editable-html"));
|
|
39
|
-
|
|
40
21
|
var _types = require("./types");
|
|
41
|
-
|
|
42
22
|
var _label = _interopRequireDefault(require("./label"));
|
|
43
|
-
|
|
44
23
|
var _utils = require("./utils");
|
|
45
|
-
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
24
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
25
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
26
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
27
|
+
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; }
|
|
28
|
+
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; }
|
|
29
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
30
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
31
|
+
var StyledRoot = (0, _styles.styled)('div')(function (_ref) {
|
|
32
|
+
var theme = _ref.theme;
|
|
33
|
+
return {
|
|
34
|
+
border: "solid 1px ".concat(_renderUi.color.primaryLight()),
|
|
35
|
+
color: _renderUi.color.defaults.TEXT,
|
|
36
|
+
backgroundColor: theme.palette.common.white,
|
|
37
|
+
touchAction: 'none',
|
|
38
|
+
position: 'relative',
|
|
39
|
+
boxSizing: 'unset' // to override the default border-box in IBX that breaks the component width layout
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
var Wrapper = (0, _styles.styled)('div')({
|
|
43
|
+
display: 'flex',
|
|
44
|
+
position: 'relative'
|
|
45
|
+
});
|
|
46
|
+
var DefineChartSvg = (0, _styles.styled)('svg')({
|
|
47
|
+
paddingLeft: '50px',
|
|
48
|
+
overflow: 'visible'
|
|
49
|
+
});
|
|
50
|
+
var ChartSvg = (0, _styles.styled)('svg')({
|
|
51
|
+
overflow: 'visible'
|
|
52
|
+
});
|
|
53
|
+
var GraphBox = (0, _styles.styled)('g')({
|
|
54
|
+
cursor: 'pointer',
|
|
55
|
+
userSelect: 'none'
|
|
56
|
+
});
|
|
57
|
+
var GraphTitle = (0, _styles.styled)('div')(function (_ref2) {
|
|
58
|
+
var theme = _ref2.theme;
|
|
59
|
+
return {
|
|
60
|
+
color: _renderUi.color.defaults.TEXT,
|
|
61
|
+
fontSize: theme.typography.fontSize + 2,
|
|
62
|
+
padding: "".concat(theme.spacing(1.5), " ").concat(theme.spacing(0.5), " 0"),
|
|
63
|
+
textAlign: 'center',
|
|
64
|
+
'&.disabled': {
|
|
65
|
+
pointerEvents: 'none'
|
|
66
|
+
},
|
|
67
|
+
'&.rightMargin': {
|
|
68
|
+
marginRight: '74px'
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
var ChartTitle = (0, _styles.styled)('div')(function (_ref3) {
|
|
73
|
+
var theme = _ref3.theme;
|
|
74
|
+
return {
|
|
75
|
+
color: _renderUi.color.defaults.TEXT,
|
|
76
|
+
fontSize: theme.typography.fontSize + 4,
|
|
77
|
+
padding: "".concat(theme.spacing(1.5), " ").concat(theme.spacing(0.5), " 0"),
|
|
78
|
+
textAlign: 'center',
|
|
79
|
+
'&.disabled': {
|
|
80
|
+
pointerEvents: 'none'
|
|
81
|
+
},
|
|
82
|
+
'&.rightMargin': {
|
|
83
|
+
marginRight: '74px'
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
});
|
|
87
|
+
var TopPixelGuides = (0, _styles.styled)('div')({
|
|
88
|
+
display: 'flex',
|
|
89
|
+
paddingTop: '6px'
|
|
90
|
+
});
|
|
91
|
+
var TopPixelIndicator = (0, _styles.styled)('div')({
|
|
92
|
+
display: 'flex',
|
|
93
|
+
flexDirection: 'column',
|
|
94
|
+
alignItems: 'center',
|
|
95
|
+
width: '100px',
|
|
96
|
+
pointerEvents: 'none',
|
|
97
|
+
userSelect: 'none'
|
|
98
|
+
});
|
|
99
|
+
var SidePixelGuides = (0, _styles.styled)('div')({
|
|
100
|
+
width: '70px',
|
|
101
|
+
display: 'flex',
|
|
102
|
+
flexDirection: 'column',
|
|
103
|
+
marginRight: '6px'
|
|
104
|
+
});
|
|
105
|
+
var SidePixelIndicator = (0, _styles.styled)('div')({
|
|
106
|
+
textAlign: 'right',
|
|
107
|
+
height: '20px',
|
|
108
|
+
pointerEvents: 'none',
|
|
109
|
+
userSelect: 'none',
|
|
110
|
+
'&:not(:last-child)': {
|
|
111
|
+
marginBottom: '80px'
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
var Root = exports.Root = /*#__PURE__*/function (_React$Component) {
|
|
65
115
|
function Root(props) {
|
|
66
116
|
var _this;
|
|
67
|
-
|
|
68
117
|
(0, _classCallCheck2["default"])(this, Root);
|
|
69
|
-
_this =
|
|
70
|
-
(0, _defineProperty2["default"])(
|
|
118
|
+
_this = _callSuper(this, Root, [props]);
|
|
119
|
+
(0, _defineProperty2["default"])(_this, "mouseMove", function (g) {
|
|
71
120
|
var _this$props = _this.props,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
121
|
+
graphProps = _this$props.graphProps,
|
|
122
|
+
onMouseMove = _this$props.onMouseMove;
|
|
75
123
|
if (!onMouseMove) {
|
|
76
124
|
return;
|
|
77
125
|
}
|
|
78
|
-
|
|
79
126
|
var scale = graphProps.scale,
|
|
80
|
-
|
|
81
|
-
var coords = (0, _d3Selection.mouse)(g.
|
|
127
|
+
snap = graphProps.snap;
|
|
128
|
+
var coords = (0, _d3Selection.mouse)(g.node());
|
|
82
129
|
var x = scale.x.invert(coords[0]);
|
|
83
130
|
var y = scale.y.invert(coords[1]);
|
|
84
131
|
var snapped = {
|
|
@@ -87,62 +134,55 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
87
134
|
};
|
|
88
135
|
onMouseMove(snapped);
|
|
89
136
|
});
|
|
90
|
-
(0, _defineProperty2["default"])(
|
|
137
|
+
(0, _defineProperty2["default"])(_this, "onChangeLabel", function (newValue, side) {
|
|
91
138
|
var _this$props2 = _this.props,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
139
|
+
labels = _this$props2.labels,
|
|
140
|
+
onChangeLabels = _this$props2.onChangeLabels,
|
|
141
|
+
isChart = _this$props2.isChart;
|
|
96
142
|
if (!onChangeLabels) {
|
|
97
143
|
return;
|
|
98
144
|
}
|
|
99
|
-
|
|
100
145
|
if (isChart) {
|
|
101
146
|
if (side === 'left') {
|
|
102
147
|
onChangeLabels('range', newValue);
|
|
103
148
|
} else {
|
|
104
149
|
onChangeLabels('domain', newValue);
|
|
105
150
|
}
|
|
106
|
-
|
|
107
151
|
return;
|
|
108
152
|
}
|
|
109
|
-
|
|
110
153
|
onChangeLabels(_objectSpread(_objectSpread({}, labels), {}, (0, _defineProperty2["default"])({}, side, newValue)));
|
|
111
154
|
});
|
|
112
|
-
(0, _defineProperty2["default"])(
|
|
155
|
+
(0, _defineProperty2["default"])(_this, "measureTitleHeight", function () {
|
|
113
156
|
var titleElement = _this.titleRef;
|
|
114
|
-
|
|
115
157
|
if (titleElement) {
|
|
116
158
|
var titleHeight = titleElement.clientHeight;
|
|
117
|
-
|
|
118
159
|
_this.setState({
|
|
119
160
|
titleHeight: titleHeight,
|
|
120
161
|
prevTitle: _this.props.title
|
|
121
162
|
});
|
|
122
|
-
|
|
123
163
|
if (!_this.resizeObserver && typeof ResizeObserver !== 'undefined') {
|
|
124
164
|
_this.setupVisibilityObserver();
|
|
125
165
|
}
|
|
126
166
|
}
|
|
127
167
|
});
|
|
128
|
-
(0, _defineProperty2["default"])(
|
|
168
|
+
(0, _defineProperty2["default"])(_this, "handleKeyDown", function () {
|
|
129
169
|
setTimeout(function () {
|
|
130
170
|
_this.measureTitleHeight();
|
|
131
171
|
}, 0);
|
|
132
172
|
});
|
|
133
|
-
|
|
173
|
+
// handle edge case where chart is hidden with display:none and then shown with display:block
|
|
174
|
+
(0, _defineProperty2["default"])(_this, "setupVisibilityObserver", function () {
|
|
134
175
|
if (typeof ResizeObserver !== 'undefined' && _this.titleRef) {
|
|
135
176
|
_this.resizeObserver = new ResizeObserver(function (entries) {
|
|
136
177
|
var _iterator = _createForOfIteratorHelper(entries),
|
|
137
|
-
|
|
138
|
-
|
|
178
|
+
_step;
|
|
139
179
|
try {
|
|
140
180
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
141
181
|
var entry = _step.value;
|
|
142
182
|
var _entry$contentRect = entry.contentRect,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
183
|
+
width = _entry$contentRect.width,
|
|
184
|
+
height = _entry$contentRect.height;
|
|
185
|
+
// trigger if element becomes visible and we haven't measured this height yet
|
|
146
186
|
if (width > 0 && height > 0) {
|
|
147
187
|
setTimeout(function () {
|
|
148
188
|
_this.measureTitleHeight();
|
|
@@ -156,14 +196,12 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
156
196
|
_iterator.f();
|
|
157
197
|
}
|
|
158
198
|
});
|
|
159
|
-
|
|
160
199
|
_this.resizeObserver.observe(_this.titleRef);
|
|
161
200
|
}
|
|
162
201
|
});
|
|
163
|
-
(0, _defineProperty2["default"])(
|
|
202
|
+
(0, _defineProperty2["default"])(_this, "cleanupVisibilityObserver", function () {
|
|
164
203
|
if (_this.resizeObserver) {
|
|
165
204
|
_this.resizeObserver.disconnect();
|
|
166
|
-
|
|
167
205
|
_this.resizeObserver = null;
|
|
168
206
|
}
|
|
169
207
|
});
|
|
@@ -173,8 +211,8 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
173
211
|
_this.resizeObserver = null;
|
|
174
212
|
return _this;
|
|
175
213
|
}
|
|
176
|
-
|
|
177
|
-
(0, _createClass2["default"])(Root, [{
|
|
214
|
+
(0, _inherits2["default"])(Root, _React$Component);
|
|
215
|
+
return (0, _createClass2["default"])(Root, [{
|
|
178
216
|
key: "componentDidMount",
|
|
179
217
|
value: function componentDidMount() {
|
|
180
218
|
var g = (0, _d3Selection.select)(this.g);
|
|
@@ -200,50 +238,46 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
200
238
|
key: "render",
|
|
201
239
|
value: function render() {
|
|
202
240
|
var _this2 = this;
|
|
203
|
-
|
|
204
241
|
var _this$props3 = this.props,
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
labelsCharactersLimit = _this$props3.labelsCharactersLimit;
|
|
242
|
+
disabledTitle = _this$props3.disabledTitle,
|
|
243
|
+
disabledLabels = _this$props3.disabledLabels,
|
|
244
|
+
labels = _this$props3.labels,
|
|
245
|
+
labelsPlaceholders = _this$props3.labelsPlaceholders,
|
|
246
|
+
titlePlaceholder = _this$props3.titlePlaceholder,
|
|
247
|
+
graphProps = _this$props3.graphProps,
|
|
248
|
+
children = _this$props3.children,
|
|
249
|
+
defineChart = _this$props3.defineChart,
|
|
250
|
+
onChangeTitle = _this$props3.onChangeTitle,
|
|
251
|
+
isChart = _this$props3.isChart,
|
|
252
|
+
showLabels = _this$props3.showLabels,
|
|
253
|
+
showPixelGuides = _this$props3.showPixelGuides,
|
|
254
|
+
showTitle = _this$props3.showTitle,
|
|
255
|
+
title = _this$props3.title,
|
|
256
|
+
rootRef = _this$props3.rootRef,
|
|
257
|
+
_this$props3$mathMlOp = _this$props3.mathMlOptions,
|
|
258
|
+
mathMlOptions = _this$props3$mathMlOp === void 0 ? {} : _this$props3$mathMlOp,
|
|
259
|
+
labelsCharactersLimit = _this$props3.labelsCharactersLimit;
|
|
224
260
|
var _graphProps$size = graphProps.size,
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
261
|
+
_graphProps$size$widt = _graphProps$size.width,
|
|
262
|
+
width = _graphProps$size$widt === void 0 ? 500 : _graphProps$size$widt,
|
|
263
|
+
_graphProps$size$heig = _graphProps$size.height,
|
|
264
|
+
height = _graphProps$size$heig === void 0 ? 500 : _graphProps$size$heig,
|
|
265
|
+
domain = graphProps.domain,
|
|
266
|
+
range = graphProps.range;
|
|
231
267
|
var topPadding = 40;
|
|
232
268
|
var leftPadding = (0, _utils.isEmptyString)((0, _utils.extractTextFromHTML)(labels === null || labels === void 0 ? void 0 : labels.left)) && (0, _utils.isEmptyObject)(labelsPlaceholders) ? 48 : 70;
|
|
233
269
|
var rightPadding = (0, _utils.isEmptyString)((0, _utils.extractTextFromHTML)(labels === null || labels === void 0 ? void 0 : labels.right)) && (0, _utils.isEmptyObject)(labelsPlaceholders) ? 48 : 70;
|
|
234
270
|
var finalWidth = width + leftPadding + rightPadding + (domain.padding || 0) * 2;
|
|
235
271
|
var finalHeight = height + topPadding * 2 + (range.padding || 0) * 2;
|
|
236
|
-
var activeTitlePlugins = ['bold', 'italic', 'underline', 'superscript', 'subscript', 'strikethrough', 'math'
|
|
272
|
+
var activeTitlePlugins = ['bold', 'italic', 'underline', 'superscript', 'subscript', 'strikethrough', 'math'
|
|
273
|
+
// 'languageCharacters'
|
|
237
274
|
];
|
|
238
275
|
var actualHeight = defineChart && showPixelGuides ? height - 160 : height;
|
|
239
276
|
var nbOfVerticalLines = parseInt(width / 100);
|
|
240
277
|
var nbOfHorizontalLines = parseInt(actualHeight / 100);
|
|
241
278
|
var sideGridlinesPadding = parseInt(actualHeight % 100);
|
|
242
279
|
var titleHeight = this.state.titleHeight;
|
|
243
|
-
return /*#__PURE__*/_react["default"].createElement("
|
|
244
|
-
className: classes.root
|
|
245
|
-
}, showPixelGuides && /*#__PURE__*/_react["default"].createElement("div", {
|
|
246
|
-
className: classes.topPixelGuides,
|
|
280
|
+
return /*#__PURE__*/_react["default"].createElement(StyledRoot, null, showPixelGuides && /*#__PURE__*/_react["default"].createElement(TopPixelGuides, {
|
|
247
281
|
style: {
|
|
248
282
|
marginLeft: isChart ? 80 : showLabels ? 30 : 10
|
|
249
283
|
}
|
|
@@ -251,9 +285,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
251
285
|
return /*#__PURE__*/_react["default"].createElement(_renderUi.Readable, {
|
|
252
286
|
"false": true,
|
|
253
287
|
key: "top-guide-".concat(value)
|
|
254
|
-
}, /*#__PURE__*/_react["default"].createElement("div",
|
|
255
|
-
className: classes.topPixelIndicator
|
|
256
|
-
}, /*#__PURE__*/_react["default"].createElement("div", null, value * 100, "px"), /*#__PURE__*/_react["default"].createElement("div", null, "|")));
|
|
288
|
+
}, /*#__PURE__*/_react["default"].createElement(TopPixelIndicator, null, /*#__PURE__*/_react["default"].createElement("div", null, value * 100, "px"), /*#__PURE__*/_react["default"].createElement("div", null, "|")));
|
|
257
289
|
})), showTitle && (disabledTitle ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
258
290
|
ref: function ref(r) {
|
|
259
291
|
return _this2.titleRef = r;
|
|
@@ -262,20 +294,27 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
262
294
|
width: finalWidth
|
|
263
295
|
}), (0, _utils.isEmptyString)((0, _utils.extractTextFromHTML)(title)) && {
|
|
264
296
|
display: 'none'
|
|
265
|
-
})
|
|
266
|
-
|
|
297
|
+
})
|
|
298
|
+
}, isChart ? /*#__PURE__*/_react["default"].createElement(ChartTitle, {
|
|
299
|
+
className: "disabled",
|
|
267
300
|
dangerouslySetInnerHTML: {
|
|
268
301
|
__html: title || ''
|
|
269
302
|
}
|
|
270
|
-
}) : /*#__PURE__*/_react["default"].createElement(
|
|
303
|
+
}) : /*#__PURE__*/_react["default"].createElement(GraphTitle, {
|
|
304
|
+
className: "disabled",
|
|
305
|
+
dangerouslySetInnerHTML: {
|
|
306
|
+
__html: title || ''
|
|
307
|
+
}
|
|
308
|
+
})) : /*#__PURE__*/_react["default"].createElement("div", {
|
|
271
309
|
ref: function ref(r) {
|
|
272
310
|
return _this2.titleRef = r;
|
|
273
311
|
}
|
|
312
|
+
}, isChart ? /*#__PURE__*/_react["default"].createElement(ChartTitle, {
|
|
313
|
+
className: showPixelGuides ? 'rightMargin' : ''
|
|
274
314
|
}, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
275
315
|
style: isChart && {
|
|
276
316
|
width: finalWidth
|
|
277
317
|
},
|
|
278
|
-
className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.rightMargin, showPixelGuides), isChart ? classes.chartTitle : classes.graphTitle),
|
|
279
318
|
markup: title || '',
|
|
280
319
|
onChange: onChangeTitle,
|
|
281
320
|
placeholder: defineChart && titlePlaceholder || !disabledTitle && 'Click here to add a title for this graph',
|
|
@@ -286,7 +325,23 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
286
325
|
activePlugins: activeTitlePlugins,
|
|
287
326
|
disableScrollbar: true,
|
|
288
327
|
onKeyDown: this.handleKeyDown
|
|
289
|
-
}))
|
|
328
|
+
})) : /*#__PURE__*/_react["default"].createElement(GraphTitle, {
|
|
329
|
+
className: showPixelGuides ? 'rightMargin' : ''
|
|
330
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
331
|
+
style: isChart && {
|
|
332
|
+
width: finalWidth
|
|
333
|
+
},
|
|
334
|
+
markup: title || '',
|
|
335
|
+
onChange: onChangeTitle,
|
|
336
|
+
placeholder: defineChart && titlePlaceholder || !disabledTitle && 'Click here to add a title for this graph',
|
|
337
|
+
toolbarOpts: {
|
|
338
|
+
noPadding: true,
|
|
339
|
+
noBorder: true
|
|
340
|
+
},
|
|
341
|
+
activePlugins: activeTitlePlugins,
|
|
342
|
+
disableScrollbar: true,
|
|
343
|
+
onKeyDown: this.handleKeyDown
|
|
344
|
+
})))), showLabels && !isChart && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
290
345
|
side: "top",
|
|
291
346
|
text: labels.top,
|
|
292
347
|
disabledLabel: disabledLabels,
|
|
@@ -298,9 +353,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
298
353
|
},
|
|
299
354
|
mathMlOptions: mathMlOptions,
|
|
300
355
|
charactersLimit: labelsCharactersLimit
|
|
301
|
-
}), /*#__PURE__*/_react["default"].createElement("
|
|
302
|
-
className: classes.wrapper
|
|
303
|
-
}, showLabels && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
356
|
+
}), /*#__PURE__*/_react["default"].createElement(Wrapper, null, showLabels && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
304
357
|
side: "left",
|
|
305
358
|
text: labels.left,
|
|
306
359
|
disabledLabel: disabledLabels,
|
|
@@ -314,19 +367,27 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
314
367
|
},
|
|
315
368
|
mathMlOptions: mathMlOptions,
|
|
316
369
|
charactersLimit: labelsCharactersLimit
|
|
317
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
370
|
+
}), defineChart ? /*#__PURE__*/_react["default"].createElement(DefineChartSvg, {
|
|
318
371
|
width: finalWidth,
|
|
319
|
-
height: finalHeight
|
|
320
|
-
|
|
321
|
-
|
|
372
|
+
height: finalHeight
|
|
373
|
+
}, /*#__PURE__*/_react["default"].createElement(GraphBox, {
|
|
374
|
+
ref: function ref(r) {
|
|
375
|
+
_this2.g = r;
|
|
376
|
+
if (rootRef) {
|
|
377
|
+
rootRef(r);
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
transform: "translate(".concat(leftPadding + (domain.padding || 0), ", ").concat(topPadding + (range.padding || 0), ")")
|
|
381
|
+
}, children)) : /*#__PURE__*/_react["default"].createElement(ChartSvg, {
|
|
382
|
+
width: finalWidth,
|
|
383
|
+
height: finalHeight
|
|
384
|
+
}, /*#__PURE__*/_react["default"].createElement(GraphBox, {
|
|
322
385
|
ref: function ref(r) {
|
|
323
386
|
_this2.g = r;
|
|
324
|
-
|
|
325
387
|
if (rootRef) {
|
|
326
388
|
rootRef(r);
|
|
327
389
|
}
|
|
328
390
|
},
|
|
329
|
-
className: classes.graphBox,
|
|
330
391
|
transform: "translate(".concat(leftPadding + (domain.padding || 0), ", ").concat(topPadding + (range.padding || 0), ")")
|
|
331
392
|
}, children)), showLabels && !isChart && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
332
393
|
side: "right",
|
|
@@ -340,8 +401,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
340
401
|
},
|
|
341
402
|
mathMlOptions: mathMlOptions,
|
|
342
403
|
charactersLimit: labelsCharactersLimit
|
|
343
|
-
}), showPixelGuides && /*#__PURE__*/_react["default"].createElement(
|
|
344
|
-
className: classes.sidePixelGuides,
|
|
404
|
+
}), showPixelGuides && /*#__PURE__*/_react["default"].createElement(SidePixelGuides, {
|
|
345
405
|
style: {
|
|
346
406
|
paddingTop: sideGridlinesPadding,
|
|
347
407
|
marginTop: 31
|
|
@@ -350,9 +410,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
350
410
|
return /*#__PURE__*/_react["default"].createElement(_renderUi.Readable, {
|
|
351
411
|
"false": true,
|
|
352
412
|
key: "top-guide-".concat(value)
|
|
353
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
354
|
-
className: classes.sidePixelIndicator
|
|
355
|
-
}, "\u2501 ", value * 100, "px"));
|
|
413
|
+
}, /*#__PURE__*/_react["default"].createElement(SidePixelIndicator, null, "\u2501 ", value * 100, "px"));
|
|
356
414
|
}))), showLabels && /*#__PURE__*/_react["default"].createElement(_label["default"], {
|
|
357
415
|
side: "bottom",
|
|
358
416
|
text: labels.bottom,
|
|
@@ -371,11 +429,7 @@ var Root = /*#__PURE__*/function (_React$Component) {
|
|
|
371
429
|
}));
|
|
372
430
|
}
|
|
373
431
|
}]);
|
|
374
|
-
|
|
375
|
-
}(_react["default"].Component); // use default color theme style to avoid color contrast issues
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
exports.Root = Root;
|
|
432
|
+
}(_react["default"].Component);
|
|
379
433
|
(0, _defineProperty2["default"])(Root, "propTypes", {
|
|
380
434
|
title: _propTypes["default"].string,
|
|
381
435
|
children: _types.ChildrenType,
|
|
@@ -388,7 +442,6 @@ exports.Root = Root;
|
|
|
388
442
|
labelsPlaceholders: _propTypes["default"].object,
|
|
389
443
|
onChangeTitle: _propTypes["default"].func,
|
|
390
444
|
onMouseMove: _propTypes["default"].func,
|
|
391
|
-
classes: _propTypes["default"].object.isRequired,
|
|
392
445
|
showLabels: _propTypes["default"].bool,
|
|
393
446
|
showTitle: _propTypes["default"].bool,
|
|
394
447
|
showPixelGuides: _propTypes["default"].bool,
|
|
@@ -398,83 +451,5 @@ exports.Root = Root;
|
|
|
398
451
|
mathMlOptions: _propTypes["default"].object,
|
|
399
452
|
labelsCharactersLimit: _propTypes["default"].number
|
|
400
453
|
});
|
|
401
|
-
|
|
402
|
-
var styles = function styles(theme) {
|
|
403
|
-
return {
|
|
404
|
-
root: {
|
|
405
|
-
border: "solid 1px ".concat(_renderUi.color.primaryLight()),
|
|
406
|
-
color: _renderUi.color.defaults.TEXT,
|
|
407
|
-
backgroundColor: theme.palette.common.white,
|
|
408
|
-
touchAction: 'none',
|
|
409
|
-
position: 'relative',
|
|
410
|
-
boxSizing: 'unset' // to override the default border-box in IBX that breaks the component width layout
|
|
411
|
-
|
|
412
|
-
},
|
|
413
|
-
wrapper: {
|
|
414
|
-
display: 'flex',
|
|
415
|
-
position: 'relative'
|
|
416
|
-
},
|
|
417
|
-
svg: {},
|
|
418
|
-
defineChart: {
|
|
419
|
-
paddingLeft: '50px',
|
|
420
|
-
overflow: 'visible'
|
|
421
|
-
},
|
|
422
|
-
chart: {
|
|
423
|
-
overflow: 'visible'
|
|
424
|
-
},
|
|
425
|
-
graphBox: {
|
|
426
|
-
cursor: 'pointer',
|
|
427
|
-
userSelect: 'none'
|
|
428
|
-
},
|
|
429
|
-
graphTitle: {
|
|
430
|
-
color: _renderUi.color.defaults.TEXT,
|
|
431
|
-
fontSize: theme.typography.fontSize + 2,
|
|
432
|
-
padding: "".concat(theme.spacing.unit * 1.5, "px ").concat(theme.spacing.unit / 2, "px 0"),
|
|
433
|
-
textAlign: 'center'
|
|
434
|
-
},
|
|
435
|
-
chartTitle: {
|
|
436
|
-
color: _renderUi.color.defaults.TEXT,
|
|
437
|
-
fontSize: theme.typography.fontSize + 4,
|
|
438
|
-
padding: "".concat(theme.spacing.unit * 1.5, "px ").concat(theme.spacing.unit / 2, "px 0"),
|
|
439
|
-
textAlign: 'center'
|
|
440
|
-
},
|
|
441
|
-
disabledTitle: {
|
|
442
|
-
pointerEvents: 'none'
|
|
443
|
-
},
|
|
444
|
-
rightMargin: {
|
|
445
|
-
marginRight: '74px'
|
|
446
|
-
},
|
|
447
|
-
topPixelGuides: {
|
|
448
|
-
display: 'flex',
|
|
449
|
-
paddingTop: '6px'
|
|
450
|
-
},
|
|
451
|
-
topPixelIndicator: {
|
|
452
|
-
display: 'flex',
|
|
453
|
-
flexDirection: 'column',
|
|
454
|
-
alignItems: 'center',
|
|
455
|
-
width: '100px',
|
|
456
|
-
pointerEvents: 'none',
|
|
457
|
-
userSelect: 'none'
|
|
458
|
-
},
|
|
459
|
-
sidePixelGuides: {
|
|
460
|
-
width: '70px',
|
|
461
|
-
display: 'flex',
|
|
462
|
-
flexDirection: 'column',
|
|
463
|
-
marginRight: '6px'
|
|
464
|
-
},
|
|
465
|
-
sidePixelIndicator: {
|
|
466
|
-
textAlign: 'right',
|
|
467
|
-
height: '20px',
|
|
468
|
-
pointerEvents: 'none',
|
|
469
|
-
userSelect: 'none',
|
|
470
|
-
'&:not(:last-child)': {
|
|
471
|
-
marginBottom: '80px'
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
};
|
|
475
|
-
};
|
|
476
|
-
|
|
477
|
-
var _default = (0, _styles.withStyles)(styles)(Root);
|
|
478
|
-
|
|
479
|
-
exports["default"] = _default;
|
|
480
|
-
//# sourceMappingURL=root.js.map
|
|
454
|
+
var _default = exports["default"] = Root;
|
|
455
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHlsZXMiLCJfcHJvcFR5cGVzIiwiX2QzU2VsZWN0aW9uIiwiX3JlbmRlclVpIiwiX2VkaXRhYmxlSHRtbCIsIl90eXBlcyIsIl9sYWJlbCIsIl91dGlscyIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsImUiLCJ0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwibiIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwiYSIsInUiLCJjYWxsIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0Iiwib3duS2V5cyIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl9jYWxsU3VwZXIiLCJfZ2V0UHJvdG90eXBlT2YyIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4yIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIlN0eWxlZFJvb3QiLCJzdHlsZWQiLCJfcmVmIiwidGhlbWUiLCJib3JkZXIiLCJjb25jYXQiLCJjb2xvciIsInByaW1hcnlMaWdodCIsImRlZmF1bHRzIiwiVEVYVCIsImJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJjb21tb24iLCJ3aGl0ZSIsInRvdWNoQWN0aW9uIiwicG9zaXRpb24iLCJib3hTaXppbmciLCJXcmFwcGVyIiwiZGlzcGxheSIsIkRlZmluZUNoYXJ0U3ZnIiwicGFkZGluZ0xlZnQiLCJvdmVyZmxvdyIsIkNoYXJ0U3ZnIiwiR3JhcGhCb3giLCJjdXJzb3IiLCJ1c2VyU2VsZWN0IiwiR3JhcGhUaXRsZSIsIl9yZWYyIiwiZm9udFNpemUiLCJ0eXBvZ3JhcGh5IiwicGFkZGluZyIsInNwYWNpbmciLCJ0ZXh0QWxpZ24iLCJwb2ludGVyRXZlbnRzIiwibWFyZ2luUmlnaHQiLCJDaGFydFRpdGxlIiwiX3JlZjMiLCJUb3BQaXhlbEd1aWRlcyIsInBhZGRpbmdUb3AiLCJUb3BQaXhlbEluZGljYXRvciIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwid2lkdGgiLCJTaWRlUGl4ZWxHdWlkZXMiLCJTaWRlUGl4ZWxJbmRpY2F0b3IiLCJoZWlnaHQiLCJtYXJnaW5Cb3R0b20iLCJSb290IiwiZXhwb3J0cyIsIl9SZWFjdCRDb21wb25lbnQiLCJwcm9wcyIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsImciLCJfdGhpcyRwcm9wcyIsImdyYXBoUHJvcHMiLCJvbk1vdXNlTW92ZSIsInNjYWxlIiwic25hcCIsImNvb3JkcyIsIm1vdXNlIiwibm9kZSIsIngiLCJpbnZlcnQiLCJ5Iiwic25hcHBlZCIsIm5ld1ZhbHVlIiwic2lkZSIsIl90aGlzJHByb3BzMiIsImxhYmVscyIsIm9uQ2hhbmdlTGFiZWxzIiwiaXNDaGFydCIsInRpdGxlRWxlbWVudCIsInRpdGxlUmVmIiwidGl0bGVIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJzZXRTdGF0ZSIsInByZXZUaXRsZSIsInRpdGxlIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsInNldHVwVmlzaWJpbGl0eU9ic2VydmVyIiwic2V0VGltZW91dCIsIm1lYXN1cmVUaXRsZUhlaWdodCIsImVudHJpZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImVudHJ5IiwiX2VudHJ5JGNvbnRlbnRSZWN0IiwiY29udGVudFJlY3QiLCJlcnIiLCJvYnNlcnZlIiwiZGlzY29ubmVjdCIsInN0YXRlIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJjb21wb25lbnREaWRNb3VudCIsInNlbGVjdCIsIm9uIiwibW91c2VNb3ZlIiwiYmluZCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiY2xlYW51cFZpc2liaWxpdHlPYnNlcnZlciIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInJlbmRlciIsIl90aGlzMiIsIl90aGlzJHByb3BzMyIsImRpc2FibGVkVGl0bGUiLCJkaXNhYmxlZExhYmVscyIsImxhYmVsc1BsYWNlaG9sZGVycyIsInRpdGxlUGxhY2Vob2xkZXIiLCJjaGlsZHJlbiIsImRlZmluZUNoYXJ0Iiwib25DaGFuZ2VUaXRsZSIsInNob3dMYWJlbHMiLCJzaG93UGl4ZWxHdWlkZXMiLCJzaG93VGl0bGUiLCJyb290UmVmIiwiX3RoaXMkcHJvcHMzJG1hdGhNbE9wIiwibWF0aE1sT3B0aW9ucyIsImxhYmVsc0NoYXJhY3RlcnNMaW1pdCIsIl9ncmFwaFByb3BzJHNpemUiLCJzaXplIiwiX2dyYXBoUHJvcHMkc2l6ZSR3aWR0IiwiX2dyYXBoUHJvcHMkc2l6ZSRoZWlnIiwiZG9tYWluIiwicmFuZ2UiLCJ0b3BQYWRkaW5nIiwibGVmdFBhZGRpbmciLCJpc0VtcHR5U3RyaW5nIiwiZXh0cmFjdFRleHRGcm9tSFRNTCIsImxlZnQiLCJpc0VtcHR5T2JqZWN0IiwicmlnaHRQYWRkaW5nIiwicmlnaHQiLCJmaW5hbFdpZHRoIiwiZmluYWxIZWlnaHQiLCJhY3RpdmVUaXRsZVBsdWdpbnMiLCJhY3R1YWxIZWlnaHQiLCJuYk9mVmVydGljYWxMaW5lcyIsInBhcnNlSW50IiwibmJPZkhvcml6b250YWxMaW5lcyIsInNpZGVHcmlkbGluZXNQYWRkaW5nIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwibWFyZ2luTGVmdCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJtYXAiLCJSZWFkYWJsZSIsInJlZiIsImNsYXNzTmFtZSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwibWFya3VwIiwib25DaGFuZ2UiLCJwbGFjZWhvbGRlciIsInRvb2xiYXJPcHRzIiwibm9QYWRkaW5nIiwibm9Cb3JkZXIiLCJhY3RpdmVQbHVnaW5zIiwiZGlzYWJsZVNjcm9sbGJhciIsIm9uS2V5RG93biIsImhhbmRsZUtleURvd24iLCJ0ZXh0IiwidG9wIiwiZGlzYWJsZWRMYWJlbCIsImdyYXBoSGVpZ2h0IiwiZ3JhcGhXaWR0aCIsIm9uQ2hhbmdlTGFiZWwiLCJjaGFyYWN0ZXJzTGltaXQiLCJpc0NoYXJ0TGVmdExhYmVsIiwiaXNEZWZpbmVDaGFydExlZnRMYWJlbCIsInRyYW5zZm9ybSIsIm1hcmdpblRvcCIsInJldmVyc2UiLCJib3R0b20iLCJpc0NoYXJ0Qm90dG9tTGFiZWwiLCJpc0RlZmluZUNoYXJ0Qm90dG9tTGFiZWwiLCJSZWFjdCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsInN0cmluZyIsIkNoaWxkcmVuVHlwZSIsImJvb2wiLCJHcmFwaFByb3BzVHlwZSIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJmdW5jIiwibnVtYmVyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi9zcmMvcm9vdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBzZWxlY3QsIG1vdXNlIH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcblxuaW1wb3J0IHsgY29sb3IsIFJlYWRhYmxlIH0gZnJvbSAnQHBpZS1saWIvcmVuZGVyLXVpJztcbmltcG9ydCBFZGl0YWJsZUh0bWwgZnJvbSAnQHBpZS1saWIvZWRpdGFibGUtaHRtbCc7XG5pbXBvcnQgeyBDaGlsZHJlblR5cGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEdyYXBoUHJvcHNUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgTGFiZWwgZnJvbSAnLi9sYWJlbCc7XG5pbXBvcnQgeyBleHRyYWN0VGV4dEZyb21IVE1MLCBpc0VtcHR5T2JqZWN0LCBpc0VtcHR5U3RyaW5nIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IFN0eWxlZFJvb3QgPSBzdHlsZWQoJ2RpdicpKCh7IHRoZW1lIH0pID0+ICh7XG4gIGJvcmRlcjogYHNvbGlkIDFweCAke2NvbG9yLnByaW1hcnlMaWdodCgpfWAsXG4gIGNvbG9yOiBjb2xvci5kZWZhdWx0cy5URVhULFxuICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuY29tbW9uLndoaXRlLFxuICB0b3VjaEFjdGlvbjogJ25vbmUnLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgYm94U2l6aW5nOiAndW5zZXQnLCAvLyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBib3JkZXItYm94IGluIElCWCB0aGF0IGJyZWFrcyB0aGUgY29tcG9uZW50IHdpZHRoIGxheW91dFxufSkpO1xuXG5jb25zdCBXcmFwcGVyID0gc3R5bGVkKCdkaXYnKSh7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG59KTtcblxuY29uc3QgRGVmaW5lQ2hhcnRTdmcgPSBzdHlsZWQoJ3N2ZycpKHtcbiAgcGFkZGluZ0xlZnQ6ICc1MHB4JyxcbiAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbn0pO1xuXG5jb25zdCBDaGFydFN2ZyA9IHN0eWxlZCgnc3ZnJykoe1xuICBvdmVyZmxvdzogJ3Zpc2libGUnLFxufSk7XG5cbmNvbnN0IEdyYXBoQm94ID0gc3R5bGVkKCdnJykoe1xuICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgdXNlclNlbGVjdDogJ25vbmUnLFxufSk7XG5cbmNvbnN0IEdyYXBoVGl0bGUgPSBzdHlsZWQoJ2RpdicpKCh7IHRoZW1lIH0pID0+ICh7XG4gIGNvbG9yOiBjb2xvci5kZWZhdWx0cy5URVhULFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSArIDIsXG4gIHBhZGRpbmc6IGAke3RoZW1lLnNwYWNpbmcoMS41KX0gJHt0aGVtZS5zcGFjaW5nKDAuNSl9IDBgLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAnJi5kaXNhYmxlZCc6IHtcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIH0sXG4gICcmLnJpZ2h0TWFyZ2luJzoge1xuICAgIG1hcmdpblJpZ2h0OiAnNzRweCcsXG4gIH0sXG59KSk7XG5cbmNvbnN0IENoYXJ0VGl0bGUgPSBzdHlsZWQoJ2RpdicpKCh7IHRoZW1lIH0pID0+ICh7XG4gIGNvbG9yOiBjb2xvci5kZWZhdWx0cy5URVhULFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSArIDQsXG4gIHBhZGRpbmc6IGAke3RoZW1lLnNwYWNpbmcoMS41KX0gJHt0aGVtZS5zcGFjaW5nKDAuNSl9IDBgLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAnJi5kaXNhYmxlZCc6IHtcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIH0sXG4gICcmLnJpZ2h0TWFyZ2luJzoge1xuICAgIG1hcmdpblJpZ2h0OiAnNzRweCcsXG4gIH0sXG59KSk7XG5cbmNvbnN0IFRvcFBpeGVsR3VpZGVzID0gc3R5bGVkKCdkaXYnKSh7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZ1RvcDogJzZweCcsXG59KTtcblxuY29uc3QgVG9wUGl4ZWxJbmRpY2F0b3IgPSBzdHlsZWQoJ2RpdicpKHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIHdpZHRoOiAnMTAwcHgnLFxuICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIHVzZXJTZWxlY3Q6ICdub25lJyxcbn0pO1xuXG5jb25zdCBTaWRlUGl4ZWxHdWlkZXMgPSBzdHlsZWQoJ2RpdicpKHtcbiAgd2lkdGg6ICc3MHB4JyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgbWFyZ2luUmlnaHQ6ICc2cHgnLFxufSk7XG5cbmNvbnN0IFNpZGVQaXhlbEluZGljYXRvciA9IHN0eWxlZCgnZGl2Jykoe1xuICB0ZXh0QWxpZ246ICdyaWdodCcsXG4gIGhlaWdodDogJzIwcHgnLFxuICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgJyY6bm90KDpsYXN0LWNoaWxkKSc6IHtcbiAgICBtYXJnaW5Cb3R0b206ICc4MHB4JyxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY2xhc3MgUm9vdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICB0aXRsZUhlaWdodDogMCxcbiAgICB9O1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjaGlsZHJlbjogQ2hpbGRyZW5UeXBlLFxuICAgIGRlZmluZUNoYXJ0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBkaXNhYmxlZExhYmVsczogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzYWJsZWRUaXRsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgZ3JhcGhQcm9wczogR3JhcGhQcm9wc1R5cGUuaXNSZXF1aXJlZCxcbiAgICBpc0NoYXJ0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBsYWJlbHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbGFiZWxzUGxhY2Vob2xkZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9uQ2hhbmdlVGl0bGU6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uTW91c2VNb3ZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzaG93TGFiZWxzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBzaG93VGl0bGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dQaXhlbEd1aWRlczogUHJvcFR5cGVzLmJvb2wsXG4gICAgcm9vdFJlZjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2VMYWJlbHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIHRpdGxlUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbWF0aE1sT3B0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBsYWJlbHNDaGFyYWN0ZXJzTGltaXQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIH07XG5cbiAgbW91c2VNb3ZlID0gKGcpID0+IHtcbiAgICBjb25zdCB7IGdyYXBoUHJvcHMsIG9uTW91c2VNb3ZlIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKCFvbk1vdXNlTW92ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2NhbGUsIHNuYXAgfSA9IGdyYXBoUHJvcHM7XG4gICAgY29uc3QgY29vcmRzID0gbW91c2UoZy5ub2RlKCkpO1xuICAgIGNvbnN0IHggPSBzY2FsZS54LmludmVydChjb29yZHNbMF0pO1xuICAgIGNvbnN0IHkgPSBzY2FsZS55LmludmVydChjb29yZHNbMV0pO1xuXG4gICAgY29uc3Qgc25hcHBlZCA9IHtcbiAgICAgIHg6IHNuYXAueCh4KSxcbiAgICAgIHk6IHNuYXAueSh5KSxcbiAgICB9O1xuXG4gICAgb25Nb3VzZU1vdmUoc25hcHBlZCk7XG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgZyA9IHNlbGVjdCh0aGlzLmcpO1xuICAgIGcub24oJ21vdXNlbW92ZScsIHRoaXMubW91c2VNb3ZlLmJpbmQodGhpcywgZykpO1xuICAgIHRoaXMubWVhc3VyZVRpdGxlSGVpZ2h0KCk7XG4gICAgdGhpcy5zZXR1cFZpc2liaWxpdHlPYnNlcnZlcigpO1xuICB9XG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgY29uc3QgZyA9IHNlbGVjdCh0aGlzLmcpO1xuICAgIGcub24oJ21vdXNlbW92ZScsIG51bGwpO1xuICAgIHRoaXMuY2xlYW51cFZpc2liaWxpdHlPYnNlcnZlcigpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIGlmIChwcmV2UHJvcHMudGl0bGUgIT09IHRoaXMucHJvcHMudGl0bGUpIHtcbiAgICAgIHRoaXMubWVhc3VyZVRpdGxlSGVpZ2h0KCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VMYWJlbCA9IChuZXdWYWx1ZSwgc2lkZSkgPT4ge1xuICAgIGNvbnN0IHsgbGFiZWxzLCBvbkNoYW5nZUxhYmVscywgaXNDaGFydCB9ID0gdGhpcy5wcm9wcztcblxuICAgIGlmICghb25DaGFuZ2VMYWJlbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNDaGFydCkge1xuICAgICAgaWYgKHNpZGUgPT09ICdsZWZ0Jykge1xuICAgICAgICBvbkNoYW5nZUxhYmVscygncmFuZ2UnLCBuZXdWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkNoYW5nZUxhYmVscygnZG9tYWluJywgbmV3VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25DaGFuZ2VMYWJlbHMoe1xuICAgICAgLi4ubGFiZWxzLFxuICAgICAgW3NpZGVdOiBuZXdWYWx1ZSxcbiAgICB9KTtcbiAgfTtcblxuICBtZWFzdXJlVGl0bGVIZWlnaHQgPSAoKSA9PiB7XG4gICAgY29uc3QgdGl0bGVFbGVtZW50ID0gdGhpcy50aXRsZVJlZjtcbiAgICBpZiAodGl0bGVFbGVtZW50KSB7XG4gICAgICBjb25zdCB0aXRsZUhlaWdodCA9IHRpdGxlRWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgdGl0bGVIZWlnaHQsIHByZXZUaXRsZTogdGhpcy5wcm9wcy50aXRsZSB9KTtcblxuICAgICAgaWYgKCF0aGlzLnJlc2l6ZU9ic2VydmVyICYmIHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhpcy5zZXR1cFZpc2liaWxpdHlPYnNlcnZlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBoYW5kbGVLZXlEb3duID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5tZWFzdXJlVGl0bGVIZWlnaHQoKTtcbiAgICB9LCAwKTtcbiAgfTtcblxuICAvLyBoYW5kbGUgZWRnZSBjYXNlIHdoZXJlIGNoYXJ0IGlzIGhpZGRlbiB3aXRoIGRpc3BsYXk6bm9uZSBhbmQgdGhlbiBzaG93biB3aXRoIGRpc3BsYXk6YmxvY2tcbiAgc2V0dXBWaXNpYmlsaXR5T2JzZXJ2ZXIgPSAoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBSZXNpemVPYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50aXRsZVJlZikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgICBmb3IgKGxldCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBlbnRyeS5jb250ZW50UmVjdDtcbiAgICAgICAgICAvLyB0cmlnZ2VyIGlmIGVsZW1lbnQgYmVjb21lcyB2aXNpYmxlIGFuZCB3ZSBoYXZlbid0IG1lYXN1cmVkIHRoaXMgaGVpZ2h0IHlldFxuICAgICAgICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubWVhc3VyZVRpdGxlSGVpZ2h0KCk7XG4gICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy50aXRsZVJlZik7XG4gICAgfVxuICB9O1xuXG4gIGNsZWFudXBWaXNpYmlsaXR5T2JzZXJ2ZXIgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBkaXNhYmxlZFRpdGxlLFxuICAgICAgZGlzYWJsZWRMYWJlbHMsXG4gICAgICBsYWJlbHMsXG4gICAgICBsYWJlbHNQbGFjZWhvbGRlcnMsXG4gICAgICB0aXRsZVBsYWNlaG9sZGVyLFxuICAgICAgZ3JhcGhQcm9wcyxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZGVmaW5lQ2hhcnQsXG4gICAgICBvbkNoYW5nZVRpdGxlLFxuICAgICAgaXNDaGFydCxcbiAgICAgIHNob3dMYWJlbHMsXG4gICAgICBzaG93UGl4ZWxHdWlkZXMsXG4gICAgICBzaG93VGl0bGUsXG4gICAgICB0aXRsZSxcbiAgICAgIHJvb3RSZWYsXG4gICAgICBtYXRoTWxPcHRpb25zID0ge30sXG4gICAgICBsYWJlbHNDaGFyYWN0ZXJzTGltaXQsXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgc2l6ZTogeyB3aWR0aCA9IDUwMCwgaGVpZ2h0ID0gNTAwIH0sXG4gICAgICBkb21haW4sXG4gICAgICByYW5nZSxcbiAgICB9ID0gZ3JhcGhQcm9wcztcblxuICAgIGNvbnN0IHRvcFBhZGRpbmcgPSA0MDtcbiAgICBjb25zdCBsZWZ0UGFkZGluZyA9IGlzRW1wdHlTdHJpbmcoZXh0cmFjdFRleHRGcm9tSFRNTChsYWJlbHM/LmxlZnQpKSAmJiBpc0VtcHR5T2JqZWN0KGxhYmVsc1BsYWNlaG9sZGVycykgPyA0OCA6IDcwO1xuICAgIGNvbnN0IHJpZ2h0UGFkZGluZyA9XG4gICAgICBpc0VtcHR5U3RyaW5nKGV4dHJhY3RUZXh0RnJvbUhUTUwobGFiZWxzPy5yaWdodCkpICYmIGlzRW1wdHlPYmplY3QobGFiZWxzUGxhY2Vob2xkZXJzKSA/IDQ4IDogNzA7XG4gICAgY29uc3QgZmluYWxXaWR0aCA9IHdpZHRoICsgbGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcgKyAoZG9tYWluLnBhZGRpbmcgfHwgMCkgKiAyO1xuICAgIGNvbnN0IGZpbmFsSGVpZ2h0ID0gaGVpZ2h0ICsgdG9wUGFkZGluZyAqIDIgKyAocmFuZ2UucGFkZGluZyB8fCAwKSAqIDI7XG5cbiAgICBjb25zdCBhY3RpdmVUaXRsZVBsdWdpbnMgPSBbXG4gICAgICAnYm9sZCcsXG4gICAgICAnaXRhbGljJyxcbiAgICAgICd1bmRlcmxpbmUnLFxuICAgICAgJ3N1cGVyc2NyaXB0JyxcbiAgICAgICdzdWJzY3JpcHQnLFxuICAgICAgJ3N0cmlrZXRocm91Z2gnLFxuICAgICAgJ21hdGgnLFxuICAgICAgLy8gJ2xhbmd1YWdlQ2hhcmFjdGVycydcbiAgICBdO1xuXG4gICAgY29uc3QgYWN0dWFsSGVpZ2h0ID0gZGVmaW5lQ2hhcnQgJiYgc2hvd1BpeGVsR3VpZGVzID8gaGVpZ2h0IC0gMTYwIDogaGVpZ2h0O1xuICAgIGNvbnN0IG5iT2ZWZXJ0aWNhbExpbmVzID0gcGFyc2VJbnQod2lkdGggLyAxMDApO1xuICAgIGNvbnN0IG5iT2ZIb3Jpem9udGFsTGluZXMgPSBwYXJzZUludChhY3R1YWxIZWlnaHQgLyAxMDApO1xuICAgIGNvbnN0IHNpZGVHcmlkbGluZXNQYWRkaW5nID0gcGFyc2VJbnQoYWN0dWFsSGVpZ2h0ICUgMTAwKTtcbiAgICBjb25zdCB7IHRpdGxlSGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xuICAgIFxuICAgIHJldHVybiAoXG4gICAgICA8U3R5bGVkUm9vdD5cbiAgICAgICAge3Nob3dQaXhlbEd1aWRlcyAmJiAoXG4gICAgICAgICAgPFRvcFBpeGVsR3VpZGVzIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IGlzQ2hhcnQgPyA4MCA6IHNob3dMYWJlbHMgPyAzMCA6IDEwIH19PlxuICAgICAgICAgICAge1suLi5BcnJheShuYk9mVmVydGljYWxMaW5lcyArIDEpLmtleXMoKV0ubWFwKCh2YWx1ZSkgPT4gKFxuICAgICAgICAgICAgICA8UmVhZGFibGUgZmFsc2Uga2V5PXtgdG9wLWd1aWRlLSR7dmFsdWV9YH0+XG4gICAgICAgICAgICAgICAgPFRvcFBpeGVsSW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgICAgPGRpdj57dmFsdWUgKiAxMDB9cHg8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+fDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvVG9wUGl4ZWxJbmRpY2F0b3I+XG4gICAgICAgICAgICAgIDwvUmVhZGFibGU+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1RvcFBpeGVsR3VpZGVzPlxuICAgICAgICApfVxuICAgICAgICB7c2hvd1RpdGxlICYmXG4gICAgICAgICAgKGRpc2FibGVkVGl0bGUgPyAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHJlZj17KHIpID0+ICh0aGlzLnRpdGxlUmVmID0gcil9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgLi4uKGlzQ2hhcnQgJiYgeyB3aWR0aDogZmluYWxXaWR0aCB9KSxcbiAgICAgICAgICAgICAgICAuLi4oaXNFbXB0eVN0cmluZyhleHRyYWN0VGV4dEZyb21IVE1MKHRpdGxlKSkgJiYgeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtpc0NoYXJ0ID8gKFxuICAgICAgICAgICAgICAgIDxDaGFydFRpdGxlIGNsYXNzTmFtZT1cImRpc2FibGVkXCIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiB0aXRsZSB8fCAnJyB9fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxHcmFwaFRpdGxlIGNsYXNzTmFtZT1cImRpc2FibGVkXCIgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiB0aXRsZSB8fCAnJyB9fSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgcmVmPXsocikgPT4gKHRoaXMudGl0bGVSZWYgPSByKX0+XG4gICAgICAgICAgICAgIHtpc0NoYXJ0ID8gKFxuICAgICAgICAgICAgICAgIDxDaGFydFRpdGxlIGNsYXNzTmFtZT17c2hvd1BpeGVsR3VpZGVzID8gJ3JpZ2h0TWFyZ2luJyA6ICcnfT5cbiAgICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICAgIGlzQ2hhcnQgJiYge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGZpbmFsV2lkdGgsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1hcmt1cD17dGl0bGUgfHwgJyd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZVRpdGxlfVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17XG4gICAgICAgICAgICAgICAgICAgICAgKGRlZmluZUNoYXJ0ICYmIHRpdGxlUGxhY2Vob2xkZXIpIHx8ICghZGlzYWJsZWRUaXRsZSAmJiAnQ2xpY2sgaGVyZSB0byBhZGQgYSB0aXRsZSBmb3IgdGhpcyBncmFwaCcpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3sgbm9QYWRkaW5nOiB0cnVlLCBub0JvcmRlcjogdHJ1ZSB9fVxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVQbHVnaW5zPXthY3RpdmVUaXRsZVBsdWdpbnN9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVTY3JvbGxiYXJcbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZUtleURvd259XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvQ2hhcnRUaXRsZT5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8R3JhcGhUaXRsZSBjbGFzc05hbWU9e3Nob3dQaXhlbEd1aWRlcyA/ICdyaWdodE1hcmdpbicgOiAnJ30+XG4gICAgICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc0NoYXJ0ICYmIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBmaW5hbFdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtYXJrdXA9e3RpdGxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2VUaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgICAgICAgICAgIChkZWZpbmVDaGFydCAmJiB0aXRsZVBsYWNlaG9sZGVyKSB8fCAoIWRpc2FibGVkVGl0bGUgJiYgJ0NsaWNrIGhlcmUgdG8gYWRkIGEgdGl0bGUgZm9yIHRoaXMgZ3JhcGgnKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt7IG5vUGFkZGluZzogdHJ1ZSwgbm9Cb3JkZXI6IHRydWUgfX1cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlUGx1Z2lucz17YWN0aXZlVGl0bGVQbHVnaW5zfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlU2Nyb2xsYmFyXG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L0dyYXBoVGl0bGU+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAge3Nob3dMYWJlbHMgJiYgIWlzQ2hhcnQgJiYgKFxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgc2lkZT1cInRvcFwiXG4gICAgICAgICAgICB0ZXh0PXtsYWJlbHMudG9wfVxuICAgICAgICAgICAgZGlzYWJsZWRMYWJlbD17ZGlzYWJsZWRMYWJlbHN9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17bGFiZWxzUGxhY2Vob2xkZXJzPy50b3B9XG4gICAgICAgICAgICBncmFwaEhlaWdodD17ZmluYWxIZWlnaHR9XG4gICAgICAgICAgICBncmFwaFdpZHRoPXtmaW5hbFdpZHRofVxuICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5vbkNoYW5nZUxhYmVsKHZhbHVlLCAndG9wJyl9XG4gICAgICAgICAgICBtYXRoTWxPcHRpb25zPXttYXRoTWxPcHRpb25zfVxuICAgICAgICAgICAgY2hhcmFjdGVyc0xpbWl0PXtsYWJlbHNDaGFyYWN0ZXJzTGltaXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPFdyYXBwZXI+XG4gICAgICAgICAge3Nob3dMYWJlbHMgJiYgKFxuICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgIHNpZGU9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgdGV4dD17bGFiZWxzLmxlZnR9XG4gICAgICAgICAgICAgIGRpc2FibGVkTGFiZWw9e2Rpc2FibGVkTGFiZWxzfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17bGFiZWxzUGxhY2Vob2xkZXJzPy5sZWZ0fVxuICAgICAgICAgICAgICBncmFwaEhlaWdodD17ZmluYWxIZWlnaHR9XG4gICAgICAgICAgICAgIGdyYXBoV2lkdGg9e2ZpbmFsV2lkdGh9XG4gICAgICAgICAgICAgIGlzQ2hhcnRMZWZ0TGFiZWw9e2lzQ2hhcnQgJiYgIWRlZmluZUNoYXJ0fVxuICAgICAgICAgICAgICBpc0RlZmluZUNoYXJ0TGVmdExhYmVsPXtpc0NoYXJ0ICYmIGRlZmluZUNoYXJ0fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlKSA9PiB0aGlzLm9uQ2hhbmdlTGFiZWwodmFsdWUsICdsZWZ0Jyl9XG4gICAgICAgICAgICAgIG1hdGhNbE9wdGlvbnM9e21hdGhNbE9wdGlvbnN9XG4gICAgICAgICAgICAgIGNoYXJhY3RlcnNMaW1pdD17bGFiZWxzQ2hhcmFjdGVyc0xpbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtkZWZpbmVDaGFydCA/IChcbiAgICAgICAgICAgIDxEZWZpbmVDaGFydFN2ZyB3aWR0aD17ZmluYWxXaWR0aH0gaGVpZ2h0PXtmaW5hbEhlaWdodH0+XG4gICAgICAgICAgICAgIDxHcmFwaEJveFxuICAgICAgICAgICAgICAgIHJlZj17KHIpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZyA9IHI7XG4gICAgICAgICAgICAgICAgICBpZiAocm9vdFJlZikge1xuICAgICAgICAgICAgICAgICAgICByb290UmVmKHIpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7bGVmdFBhZGRpbmcgKyAoZG9tYWluLnBhZGRpbmcgfHwgMCl9LCAke3RvcFBhZGRpbmcgKyAocmFuZ2UucGFkZGluZyB8fCAwKX0pYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC9HcmFwaEJveD5cbiAgICAgICAgICAgIDwvRGVmaW5lQ2hhcnRTdmc+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxDaGFydFN2ZyB3aWR0aD17ZmluYWxXaWR0aH0gaGVpZ2h0PXtmaW5hbEhlaWdodH0+XG4gICAgICAgICAgICAgIDxHcmFwaEJveFxuICAgICAgICAgICAgICAgIHJlZj17KHIpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZyA9IHI7XG4gICAgICAgICAgICAgICAgICBpZiAocm9vdFJlZikge1xuICAgICAgICAgICAgICAgICAgICByb290UmVmKHIpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtPXtgdHJhbnNsYXRlKCR7bGVmdFBhZGRpbmcgKyAoZG9tYWluLnBhZGRpbmcgfHwgMCl9LCAke3RvcFBhZGRpbmcgKyAocmFuZ2UucGFkZGluZyB8fCAwKX0pYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC9HcmFwaEJveD5cbiAgICAgICAgICAgIDwvQ2hhcnRTdmc+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7c2hvd0xhYmVscyAmJiAhaXNDaGFydCAmJiAoXG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgc2lkZT1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgdGV4dD17bGFiZWxzLnJpZ2h0fVxuICAgICAgICAgICAgICBkaXNhYmxlZExhYmVsPXtkaXNhYmxlZExhYmVsc31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2xhYmVsc1BsYWNlaG9sZGVycz8ucmlnaHR9XG4gICAgICAgICAgICAgIGdyYXBoSGVpZ2h0PXtmaW5hbEhlaWdodH1cbiAgICAgICAgICAgICAgZ3JhcGhXaWR0aD17ZmluYWxXaWR0aH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5vbkNoYW5nZUxhYmVsKHZhbHVlLCAncmlnaHQnKX1cbiAgICAgICAgICAgICAgbWF0aE1sT3B0aW9ucz17bWF0aE1sT3B0aW9uc31cbiAgICAgICAgICAgICAgY2hhcmFjdGVyc0xpbWl0PXtsYWJlbHNDaGFyYWN0ZXJzTGltaXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAge3Nob3dQaXhlbEd1aWRlcyAmJiAoXG4gICAgICAgICAgICA8U2lkZVBpeGVsR3VpZGVzXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogc2lkZUdyaWRsaW5lc1BhZGRpbmcsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAzMSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge1suLi5BcnJheShuYk9mSG9yaXpvbnRhbExpbmVzICsgMSkua2V5cygpXS5yZXZlcnNlKCkubWFwKCh2YWx1ZSkgPT4gKFxuICAgICAgICAgICAgICAgIDxSZWFkYWJsZSBmYWxzZSBrZXk9e2B0b3AtZ3VpZGUtJHt2YWx1ZX1gfT5cbiAgICAgICAgICAgICAgICAgIDxTaWRlUGl4ZWxJbmRpY2F0b3I+4pSBIHt2YWx1ZSAqIDEwMH1weDwvU2lkZVBpeGVsSW5kaWNhdG9yPlxuICAgICAgICAgICAgICAgIDwvUmVhZGFibGU+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TaWRlUGl4ZWxHdWlkZXM+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9XcmFwcGVyPlxuICAgICAgICB7c2hvd0xhYmVscyAmJiAoXG4gICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICBzaWRlPVwiYm90dG9tXCJcbiAgICAgICAgICAgIHRleHQ9e2xhYmVscy5ib3R0b219XG4gICAgICAgICAgICBkaXNhYmxlZExhYmVsPXtkaXNhYmxlZExhYmVsc31cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtsYWJlbHNQbGFjZWhvbGRlcnM/LmJvdHRvbX1cbiAgICAgICAgICAgIGdyYXBoSGVpZ2h0PXtmaW5hbEhlaWdodH1cbiAgICAgICAgICAgIGdyYXBoV2lkdGg9e2ZpbmFsV2lkdGh9XG4gICAgICAgICAgICB0aXRsZUhlaWdodD17dGl0bGVIZWlnaHR9XG4gICAgICAgICAgICBpc0NoYXJ0Qm90dG9tTGFiZWw9e2lzQ2hhcnQgJiYgIWRlZmluZUNoYXJ0fVxuICAgICAgICAgICAgaXNEZWZpbmVDaGFydEJvdHRvbUxhYmVsPXtpc0NoYXJ0ICYmIGRlZmluZUNoYXJ0fVxuICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gdGhpcy5vbkNoYW5nZUxhYmVsKHZhbHVlLCAnYm90dG9tJyl9XG4gICAgICAgICAgICBtYXRoTWxPcHRpb25zPXttYXRoTWxPcHRpb25zfVxuICAgICAgICAgICAgY2hhcmFjdGVyc0xpbWl0PXtsYWJlbHNDaGFyYWN0ZXJzTGltaXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU3R5bGVkUm9vdD5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJvb3Q7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksU0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sTUFBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBQTRFLFNBQUFTLDJCQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLHFCQUFBRSxDQUFBLFFBQUFHLEtBQUEsQ0FBQUMsT0FB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
|