@pie-element/charting 10.1.0 → 10.2.0-mui-update.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.
@@ -1,117 +1,63 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
4
  Object.defineProperty(exports, "__esModule", {
8
5
  value: true
9
6
  });
10
- exports.getUpdatedCategories = exports["default"] = exports.CorrectResponse = void 0;
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- 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
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
25
-
26
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
27
-
7
+ exports.getUpdatedCategories = exports.default = exports.CorrectResponse = void 0;
28
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
-
30
9
  var React = _interopRequireWildcard(require("react"));
31
-
32
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
33
-
34
- var _styles = require("@material-ui/core/styles");
35
-
11
+ var _styles = require("@mui/material/styles");
36
12
  var _charting = require("@pie-lib/charting");
37
-
38
13
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
39
-
40
14
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
41
-
42
- var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
43
-
44
- var _excluded = ["editable", "interactive", "deletable"],
45
- _excluded2 = ["interactive", "editable", "index"];
46
-
47
- 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); }
48
-
49
- 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; }
50
-
51
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
52
-
53
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
54
-
55
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
56
-
57
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
58
-
59
- var styles = function styles(theme) {
60
- return {
61
- container: {
62
- marginBottom: theme.spacing.unit * 2.5,
63
- display: 'flex',
64
- flex: 1
65
- },
66
- button: {
67
- marginTop: theme.spacing.unit * 3,
68
- cursor: 'pointer',
69
- background: theme.palette.grey[200],
70
- padding: theme.spacing.unit * 2,
71
- width: 'fit-content',
72
- borderRadius: '4px'
73
- },
74
- column: {
75
- flex: 1
76
- },
77
- chartError: {
78
- border: "2px solid ".concat(theme.palette.error.main)
79
- },
80
- errorText: {
81
- fontSize: theme.typography.fontSize - 2,
82
- color: theme.palette.error.main,
83
- paddingTop: theme.spacing.unit
84
- },
85
- title: {
86
- marginBottom: theme.spacing.unit
87
- }
88
- };
89
- };
90
-
91
- var addCategoryProps = function addCategoryProps(correctAnswer, data) {
92
- return correctAnswer.map(function (correct, index) {
93
- return _objectSpread(_objectSpread({}, correct), {}, {
94
- editable: index < data.length ? data[index].editable : true,
95
- interactive: index < data.length ? data[index].interactive : true,
96
- deletable: index >= data.length ? true : false
97
- });
98
- });
99
- };
100
-
101
- var updateCorrectResponseData = function updateCorrectResponseData(correctAnswer, data) {
15
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
16
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
+ const Container = (0, _styles.styled)('div')(({
18
+ theme
19
+ }) => ({
20
+ marginBottom: theme.spacing(2.5),
21
+ display: 'flex',
22
+ flex: 1
23
+ }));
24
+ const Column = (0, _styles.styled)('div')({
25
+ flex: 1
26
+ });
27
+ const ChartError = (0, _styles.styled)('div')(({
28
+ theme
29
+ }) => ({
30
+ border: `2px solid ${theme.palette.error.main}`
31
+ }));
32
+ const ErrorText = (0, _styles.styled)(_Typography.default)(({
33
+ theme
34
+ }) => ({
35
+ fontSize: theme.typography.fontSize - 2,
36
+ color: theme.palette.error.main,
37
+ paddingTop: theme.spacing(1)
38
+ }));
39
+ const Title = (0, _styles.styled)('div')(({
40
+ theme
41
+ }) => ({
42
+ marginBottom: theme.spacing(1)
43
+ }));
44
+ const addCategoryProps = (correctAnswer, data) => correctAnswer.map((correct, index) => ({
45
+ ...correct,
46
+ editable: index < data.length ? data[index].editable : true,
47
+ interactive: index < data.length ? data[index].interactive : true,
48
+ deletable: index >= data.length ? true : false
49
+ }));
50
+ const updateCorrectResponseData = (correctAnswer, data) => {
102
51
  if (!correctAnswer) {
103
52
  return data;
104
53
  }
105
-
106
- var correctAnswerData = (0, _toConsumableArray2["default"])(correctAnswer);
107
- var correctResponseDefinition = [];
108
- (data || []).forEach(function (category, currentIndex) {
109
- var _correctAnswer$curren, _correctAnswer$curren2, _correctAnswer$curren3;
110
-
111
- var editable = category.editable;
112
- var interactive = category.interactive;
113
- var label = editable && (_correctAnswer$curren = correctAnswer[currentIndex]) !== null && _correctAnswer$curren !== void 0 && _correctAnswer$curren.label ? correctAnswer[currentIndex].label : category.label;
114
- var value = interactive && (_correctAnswer$curren2 = correctAnswer[currentIndex]) !== null && _correctAnswer$curren2 !== void 0 && _correctAnswer$curren2.value || interactive && ((_correctAnswer$curren3 = correctAnswer[currentIndex]) === null || _correctAnswer$curren3 === void 0 ? void 0 : _correctAnswer$curren3.value) == 0 ? correctAnswer[currentIndex].value : category.value;
54
+ const correctAnswerData = [...correctAnswer];
55
+ let correctResponseDefinition = [];
56
+ (data || []).forEach((category, currentIndex) => {
57
+ const editable = category.editable;
58
+ const interactive = category.interactive;
59
+ const label = editable && correctAnswer[currentIndex]?.label ? correctAnswer[currentIndex].label : category.label;
60
+ const value = interactive && correctAnswer[currentIndex]?.value || interactive && correctAnswer[currentIndex]?.value == 0 ? correctAnswer[currentIndex].value : category.value;
115
61
  correctResponseDefinition[currentIndex] = {
116
62
  label: label,
117
63
  value: value,
@@ -119,202 +65,181 @@ var updateCorrectResponseData = function updateCorrectResponseData(correctAnswer
119
65
  interactive: category.interactive
120
66
  };
121
67
  });
122
-
123
68
  if (correctResponseDefinition.length < correctAnswer.length) {
124
- var missingCategories = (correctAnswerData || []).slice(correctResponseDefinition.length, correctAnswer.length);
69
+ const missingCategories = (correctAnswerData || []).slice(correctResponseDefinition.length, correctAnswer.length);
125
70
  return addCategoryProps((correctResponseDefinition || []).concat(missingCategories), data);
126
71
  }
127
-
128
72
  return correctResponseDefinition;
129
73
  };
130
-
131
- var insertCategory = function insertCategory(correctAnswer, data) {
132
- var positionToInsert = data.length - 1; // eslint-disable-next-line no-unused-vars
133
-
134
- var _data = data[data.length - 1],
135
- editable = _data.editable,
136
- interactive = _data.interactive,
137
- deletable = _data.deletable,
138
- categoryToInsert = (0, _objectWithoutProperties2["default"])(_data, _excluded);
74
+ const insertCategory = (correctAnswer, data) => {
75
+ const positionToInsert = data.length - 1;
76
+ // eslint-disable-next-line no-unused-vars
77
+ const {
78
+ editable,
79
+ interactive,
80
+ deletable,
81
+ ...categoryToInsert
82
+ } = data[data.length - 1];
139
83
  (correctAnswer || []).splice(positionToInsert, 0, categoryToInsert);
140
- var correctAnswerData = (0, _toConsumableArray2["default"])(correctAnswer);
84
+ const correctAnswerData = [...correctAnswer];
141
85
  return addCategoryProps(correctAnswerData, data);
142
86
  };
143
-
144
- var removeCategory = function removeCategory(correctAnswer, data, positionToRemove) {
87
+ const removeCategory = (correctAnswer, data, positionToRemove) => {
145
88
  (correctAnswer || []).splice(positionToRemove, 1);
146
- var correctAnswerData = (0, _toConsumableArray2["default"])(correctAnswer);
89
+ const correctAnswerData = [...correctAnswer];
147
90
  return addCategoryProps(correctAnswerData, data);
148
91
  };
149
-
150
- var getUpdatedCategories = function getUpdatedCategories(nextProps, prevProps, prevState) {
151
- var nextData = nextProps && nextProps.model && nextProps.model.data || [];
152
- var data = prevProps && prevProps.model && prevProps.model.data || [];
153
- var nextCorrectAnswerDataCopy = (0, _cloneDeep["default"])(nextProps && nextProps.model && nextProps.model.correctAnswer && nextProps.model.correctAnswer.data || []);
154
- var categoriesCopy = (0, _cloneDeep["default"])(prevState ? prevState.categories : []);
155
- var nextCategories = []; // Handle categories insertion in Define Chart
156
-
92
+ const getUpdatedCategories = (nextProps, prevProps, prevState) => {
93
+ const nextData = nextProps && nextProps.model && nextProps.model.data || [];
94
+ const data = prevProps && prevProps.model && prevProps.model.data || [];
95
+ const nextCorrectAnswerDataCopy = (0, _cloneDeep.default)(nextProps && nextProps.model && nextProps.model.correctAnswer && nextProps.model.correctAnswer.data || []);
96
+ const categoriesCopy = (0, _cloneDeep.default)(prevState ? prevState.categories : []);
97
+ let nextCategories = [];
98
+
99
+ // Handle categories insertion in Define Chart
157
100
  if (nextData.length > data.length) {
158
101
  nextCategories = insertCategory(nextCorrectAnswerDataCopy, nextData);
159
102
  return nextCategories;
160
- } // Handle categories removal from Define Chart
161
-
103
+ }
162
104
 
105
+ // Handle categories removal from Define Chart
163
106
  if (nextData.length < data.length) {
164
- var removedIndex = nextData.length; // we need to remove the category from the correct answer data and categories, from the same index it was removed from the data
165
- // index is a property of the nextData category
107
+ let removedIndex = nextData.length;
166
108
 
167
- for (var index = 0; index < nextData.length; index++) {
109
+ // we need to remove the category from the correct answer data and categories, from the same index it was removed from the data
110
+ // index is a property of the nextData category
111
+ for (let index = 0; index < nextData.length; index++) {
168
112
  if (nextData[index].index !== index) {
169
113
  removedIndex = index;
170
114
  break;
171
115
  }
172
116
  }
173
-
174
117
  nextCategories = removeCategory(categoriesCopy, nextData, removedIndex);
175
118
  return nextCategories;
176
- } // Handle category value or label changes in Define Chart
177
- // Handle categories update in Define Correct Response Chart
178
-
119
+ }
179
120
 
121
+ // Handle category value or label changes in Define Chart
122
+ // Handle categories update in Define Correct Response Chart
180
123
  nextCategories = updateCorrectResponseData(nextCorrectAnswerDataCopy, nextData);
181
124
  return nextCategories;
182
125
  };
183
-
184
126
  exports.getUpdatedCategories = getUpdatedCategories;
185
-
186
- var CorrectResponse = /*#__PURE__*/function (_React$Component) {
187
- (0, _inherits2["default"])(CorrectResponse, _React$Component);
188
-
189
- var _super = _createSuper(CorrectResponse);
190
-
191
- function CorrectResponse(props) {
192
- var _this;
193
-
194
- (0, _classCallCheck2["default"])(this, CorrectResponse);
195
- _this = _super.call(this, props);
196
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "changeData", function (data) {
197
- var _this$props = _this.props,
198
- model = _this$props.model,
199
- onChange = _this$props.onChange;
200
-
201
- var _ref = model || {},
202
- correctAnswer = _ref.correctAnswer;
203
-
204
- onChange(_objectSpread(_objectSpread({}, model), {}, {
205
- correctAnswer: _objectSpread(_objectSpread({}, correctAnswer), {}, {
127
+ class CorrectResponse extends React.Component {
128
+ constructor(props) {
129
+ super(props);
130
+ (0, _defineProperty2.default)(this, "changeData", data => {
131
+ const {
132
+ model,
133
+ onChange
134
+ } = this.props;
135
+ const {
136
+ correctAnswer
137
+ } = model || {};
138
+ onChange({
139
+ ...model,
140
+ correctAnswer: {
141
+ ...correctAnswer,
206
142
  // eslint-disable-next-line no-unused-vars
207
- data: data.map(function (_ref2) {
208
- var interactive = _ref2.interactive,
209
- editable = _ref2.editable,
210
- index = _ref2.index,
211
- keepAttrs = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
212
- return keepAttrs;
213
- })
214
- })
215
- }));
143
+ data: data.map(({
144
+ interactive,
145
+ editable,
146
+ index,
147
+ ...keepAttrs
148
+ }) => keepAttrs)
149
+ }
150
+ });
216
151
  });
217
- _this.state = {
152
+ this.state = {
218
153
  categories: []
219
154
  };
220
- return _this;
221
155
  }
222
-
223
- (0, _createClass2["default"])(CorrectResponse, [{
224
- key: "componentDidMount",
225
- value: function componentDidMount() {
226
- var initialCategories = getUpdatedCategories(this.props, this.props, null);
156
+ componentDidMount() {
157
+ const initialCategories = getUpdatedCategories(this.props, this.props, null);
158
+ this.setState({
159
+ categories: initialCategories || updateCorrectResponseData(this.props.model.correctAnswer.data, this.props.model.data)
160
+ });
161
+ }
162
+ componentDidUpdate(prevProps, prevState) {
163
+ const nextCategories = getUpdatedCategories(this.props, prevProps, prevState);
164
+ if (nextCategories && !(0, _isEqual.default)(nextCategories, this.state.categories)) {
165
+ this.changeData(nextCategories);
227
166
  this.setState({
228
- categories: initialCategories || updateCorrectResponseData(this.props.model.correctAnswer.data, this.props.model.data)
167
+ categories: nextCategories
229
168
  });
230
169
  }
231
- }, {
232
- key: "componentDidUpdate",
233
- value: function componentDidUpdate(prevProps, prevState) {
234
- var nextCategories = getUpdatedCategories(this.props, prevProps, prevState);
235
-
236
- if (nextCategories && !(0, _isEqual["default"])(nextCategories, this.state.categories)) {
237
- this.changeData(nextCategories);
238
- this.setState({
239
- categories: nextCategories
240
- });
241
- }
242
- }
243
- }, {
244
- key: "render",
245
- value: function render() {
246
- var _this$props2 = this.props,
247
- classes = _this$props2.classes,
248
- model = _this$props2.model,
249
- charts = _this$props2.charts,
250
- error = _this$props2.error,
251
- studentNewCategoryDefaultLabel = _this$props2.studentNewCategoryDefaultLabel,
252
- correctAnswerErrors = _this$props2.correctAnswerErrors,
253
- _this$props2$mathMlOp = _this$props2.mathMlOptions,
254
- mathMlOptions = _this$props2$mathMlOp === void 0 ? {} : _this$props2$mathMlOp,
255
- _this$props2$labelsPl = _this$props2.labelsPlaceholders,
256
- labelsPlaceholders = _this$props2$labelsPl === void 0 ? {} : _this$props2$labelsPl;
257
- var categories = this.state.categories;
258
-
259
- var _ref3 = model || {},
260
- _ref3$domain = _ref3.domain,
261
- domain = _ref3$domain === void 0 ? {} : _ref3$domain,
262
- _ref3$range = _ref3.range,
263
- range = _ref3$range === void 0 ? {} : _ref3$range;
264
-
265
- var _ref4 = correctAnswerErrors || {},
266
- identicalError = _ref4.identicalError,
267
- categoriesError = _ref4.categoriesError;
268
-
269
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
270
- className: classes.title
271
- }, "Define Correct Response"), /*#__PURE__*/React.createElement("div", {
272
- className: classes.container
273
- }, /*#__PURE__*/React.createElement("div", {
274
- className: classes.column,
275
- key: "graph"
276
- }, /*#__PURE__*/React.createElement(_Typography["default"], {
277
- component: "div",
278
- type: "body1"
279
- }, /*#__PURE__*/React.createElement("span", null, "Use the tools below to define the correct answer.")), /*#__PURE__*/React.createElement("div", {
280
- key: "correct-response-graph-".concat(model.correctAnswer.name),
281
- className: identicalError || categoriesError ? classes.chartError : ''
282
- }, /*#__PURE__*/React.createElement(_charting.Chart, {
283
- chartType: model.chartType,
284
- size: model.graph,
285
- domain: domain,
286
- range: range,
287
- charts: charts,
288
- data: categories,
289
- title: model.title,
290
- onDataChange: this.changeData,
291
- addCategoryEnabled: model.addCategoryEnabled,
292
- categoryDefaultLabel: studentNewCategoryDefaultLabel,
293
- error: error,
294
- mathMlOptions: mathMlOptions,
295
- labelsPlaceholders: labelsPlaceholders
296
- })), (identicalError || categoriesError) && /*#__PURE__*/React.createElement(_Typography["default"], {
297
- component: "div",
298
- type: "body1",
299
- className: classes.errorText
300
- }, /*#__PURE__*/React.createElement("span", null, identicalError || categoriesError)))));
301
- }
302
- }]);
303
- return CorrectResponse;
304
- }(React.Component);
305
-
170
+ }
171
+ render() {
172
+ const {
173
+ model,
174
+ charts,
175
+ error,
176
+ studentNewCategoryDefaultLabel,
177
+ correctAnswerErrors,
178
+ mathMlOptions = {},
179
+ labelsPlaceholders = {}
180
+ } = this.props;
181
+ const {
182
+ categories
183
+ } = this.state;
184
+ const {
185
+ domain = {},
186
+ range = {}
187
+ } = model || {};
188
+ const {
189
+ identicalError,
190
+ categoriesError
191
+ } = correctAnswerErrors || {};
192
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Title, null, "Define Correct Response"), /*#__PURE__*/React.createElement(Container, null, /*#__PURE__*/React.createElement(Column, {
193
+ key: "graph"
194
+ }, /*#__PURE__*/React.createElement(_Typography.default, {
195
+ component: "div",
196
+ type: "body1"
197
+ }, /*#__PURE__*/React.createElement("span", null, "Use the tools below to define the correct answer.")), identicalError || categoriesError ? /*#__PURE__*/React.createElement(ChartError, {
198
+ key: `correct-response-graph-${model.correctAnswer.name}`
199
+ }, /*#__PURE__*/React.createElement(_charting.Chart, {
200
+ chartType: model.chartType,
201
+ size: model.graph,
202
+ domain: domain,
203
+ range: range,
204
+ charts: charts,
205
+ data: categories,
206
+ title: model.title,
207
+ onDataChange: this.changeData,
208
+ addCategoryEnabled: model.addCategoryEnabled,
209
+ categoryDefaultLabel: studentNewCategoryDefaultLabel,
210
+ error: error,
211
+ mathMlOptions: mathMlOptions,
212
+ labelsPlaceholders: labelsPlaceholders
213
+ })) : /*#__PURE__*/React.createElement("div", {
214
+ key: `correct-response-graph-${model.correctAnswer.name}`
215
+ }, /*#__PURE__*/React.createElement(_charting.Chart, {
216
+ chartType: model.chartType,
217
+ size: model.graph,
218
+ domain: domain,
219
+ range: range,
220
+ charts: charts,
221
+ data: categories,
222
+ title: model.title,
223
+ onDataChange: this.changeData,
224
+ addCategoryEnabled: model.addCategoryEnabled,
225
+ categoryDefaultLabel: studentNewCategoryDefaultLabel,
226
+ error: error,
227
+ mathMlOptions: mathMlOptions,
228
+ labelsPlaceholders: labelsPlaceholders
229
+ })), (identicalError || categoriesError) && /*#__PURE__*/React.createElement(ErrorText, {
230
+ component: "div",
231
+ type: "body1"
232
+ }, /*#__PURE__*/React.createElement("span", null, identicalError || categoriesError)))));
233
+ }
234
+ }
306
235
  exports.CorrectResponse = CorrectResponse;
307
- (0, _defineProperty2["default"])(CorrectResponse, "propTypes", {
308
- classes: _propTypes["default"].object.isRequired,
309
- correctAnswerErrors: _propTypes["default"].object,
310
- studentNewCategoryDefaultLabel: _propTypes["default"].string,
311
- model: _propTypes["default"].object.isRequired,
312
- onChange: _propTypes["default"].func.isRequired,
313
- charts: _propTypes["default"].array,
314
- error: _propTypes["default"].string
236
+ (0, _defineProperty2.default)(CorrectResponse, "propTypes", {
237
+ correctAnswerErrors: _propTypes.default.object,
238
+ studentNewCategoryDefaultLabel: _propTypes.default.string,
239
+ model: _propTypes.default.object.isRequired,
240
+ onChange: _propTypes.default.func.isRequired,
241
+ charts: _propTypes.default.array,
242
+ error: _propTypes.default.string
315
243
  });
316
-
317
- var _default = (0, _styles.withStyles)(styles)(CorrectResponse);
318
-
319
- exports["default"] = _default;
320
- //# sourceMappingURL=correct-response.js.map
244
+ var _default = exports.default = CorrectResponse;
245
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3N0eWxlcyIsIl9jaGFydGluZyIsIl9pc0VxdWFsIiwiX2Nsb25lRGVlcCIsIl9UeXBvZ3JhcGh5IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiQ29udGFpbmVyIiwic3R5bGVkIiwidGhlbWUiLCJtYXJnaW5Cb3R0b20iLCJzcGFjaW5nIiwiZGlzcGxheSIsImZsZXgiLCJDb2x1bW4iLCJDaGFydEVycm9yIiwiYm9yZGVyIiwicGFsZXR0ZSIsImVycm9yIiwibWFpbiIsIkVycm9yVGV4dCIsIlR5cG9ncmFwaHkiLCJmb250U2l6ZSIsInR5cG9ncmFwaHkiLCJjb2xvciIsInBhZGRpbmdUb3AiLCJUaXRsZSIsImFkZENhdGVnb3J5UHJvcHMiLCJjb3JyZWN0QW5zd2VyIiwiZGF0YSIsIm1hcCIsImNvcnJlY3QiLCJpbmRleCIsImVkaXRhYmxlIiwibGVuZ3RoIiwiaW50ZXJhY3RpdmUiLCJkZWxldGFibGUiLCJ1cGRhdGVDb3JyZWN0UmVzcG9uc2VEYXRhIiwiY29ycmVjdEFuc3dlckRhdGEiLCJjb3JyZWN0UmVzcG9uc2VEZWZpbml0aW9uIiwiZm9yRWFjaCIsImNhdGVnb3J5IiwiY3VycmVudEluZGV4IiwibGFiZWwiLCJ2YWx1ZSIsIm1pc3NpbmdDYXRlZ29yaWVzIiwic2xpY2UiLCJjb25jYXQiLCJpbnNlcnRDYXRlZ29yeSIsInBvc2l0aW9uVG9JbnNlcnQiLCJjYXRlZ29yeVRvSW5zZXJ0Iiwic3BsaWNlIiwicmVtb3ZlQ2F0ZWdvcnkiLCJwb3NpdGlvblRvUmVtb3ZlIiwiZ2V0VXBkYXRlZENhdGVnb3JpZXMiLCJuZXh0UHJvcHMiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJuZXh0RGF0YSIsIm1vZGVsIiwibmV4dENvcnJlY3RBbnN3ZXJEYXRhQ29weSIsImNsb25lRGVlcCIsImNhdGVnb3JpZXNDb3B5IiwiY2F0ZWdvcmllcyIsIm5leHRDYXRlZ29yaWVzIiwicmVtb3ZlZEluZGV4IiwiZXhwb3J0cyIsIkNvcnJlY3RSZXNwb25zZSIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkyIiwib25DaGFuZ2UiLCJrZWVwQXR0cnMiLCJzdGF0ZSIsImNvbXBvbmVudERpZE1vdW50IiwiaW5pdGlhbENhdGVnb3JpZXMiLCJzZXRTdGF0ZSIsImNvbXBvbmVudERpZFVwZGF0ZSIsImlzRXF1YWwiLCJjaGFuZ2VEYXRhIiwicmVuZGVyIiwiY2hhcnRzIiwic3R1ZGVudE5ld0NhdGVnb3J5RGVmYXVsdExhYmVsIiwiY29ycmVjdEFuc3dlckVycm9ycyIsIm1hdGhNbE9wdGlvbnMiLCJsYWJlbHNQbGFjZWhvbGRlcnMiLCJkb21haW4iLCJyYW5nZSIsImlkZW50aWNhbEVycm9yIiwiY2F0ZWdvcmllc0Vycm9yIiwiY3JlYXRlRWxlbWVudCIsImtleSIsImNvbXBvbmVudCIsInR5cGUiLCJuYW1lIiwiQ2hhcnQiLCJjaGFydFR5cGUiLCJzaXplIiwiZ3JhcGgiLCJ0aXRsZSIsIm9uRGF0YUNoYW5nZSIsImFkZENhdGVnb3J5RW5hYmxlZCIsImNhdGVnb3J5RGVmYXVsdExhYmVsIiwiUHJvcFR5cGVzIiwib2JqZWN0Iiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJhcnJheSIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2NvcnJlY3QtcmVzcG9uc2UuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ0BwaWUtbGliL2NoYXJ0aW5nJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5cbmltcG9ydCBUeXBvZ3JhcGh5IGZyb20gJ0BtdWkvbWF0ZXJpYWwvVHlwb2dyYXBoeSc7XG5cbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZCgnZGl2JykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nKDIuNSksXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgZmxleDogMSxcbn0pKTtcblxuY29uc3QgQ29sdW1uID0gc3R5bGVkKCdkaXYnKSh7XG4gIGZsZXg6IDEsXG59KTtcblxuY29uc3QgQ2hhcnRFcnJvciA9IHN0eWxlZCgnZGl2JykoKHsgdGhlbWUgfSkgPT4gKHtcbiAgYm9yZGVyOiBgMnB4IHNvbGlkICR7dGhlbWUucGFsZXR0ZS5lcnJvci5tYWlufWAsXG59KSk7XG5cbmNvbnN0IEVycm9yVGV4dCA9IHN0eWxlZChUeXBvZ3JhcGh5KSgoeyB0aGVtZSB9KSA9PiAoe1xuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSAtIDIsXG4gIGNvbG9yOiB0aGVtZS5wYWxldHRlLmVycm9yLm1haW4sXG4gIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcoMSksXG59KSk7XG5cbmNvbnN0IFRpdGxlID0gc3R5bGVkKCdkaXYnKSgoeyB0aGVtZSB9KSA9PiAoe1xuICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcoMSksXG59KSk7XG5cbmNvbnN0IGFkZENhdGVnb3J5UHJvcHMgPSAoY29ycmVjdEFuc3dlciwgZGF0YSkgPT5cbiAgY29ycmVjdEFuc3dlci5tYXAoKGNvcnJlY3QsIGluZGV4KSA9PiAoe1xuICAgIC4uLmNvcnJlY3QsXG4gICAgZWRpdGFibGU6IGluZGV4IDwgZGF0YS5sZW5ndGggPyBkYXRhW2luZGV4XS5lZGl0YWJsZSA6IHRydWUsXG4gICAgaW50ZXJhY3RpdmU6IGluZGV4IDwgZGF0YS5sZW5ndGggPyBkYXRhW2luZGV4XS5pbnRlcmFjdGl2ZSA6IHRydWUsXG4gICAgZGVsZXRhYmxlOiBpbmRleCA+PSBkYXRhLmxlbmd0aCA/IHRydWUgOiBmYWxzZSxcbiAgfSkpO1xuXG5jb25zdCB1cGRhdGVDb3JyZWN0UmVzcG9uc2VEYXRhID0gKGNvcnJlY3RBbnN3ZXIsIGRhdGEpID0+IHtcbiAgaWYgKCFjb3JyZWN0QW5zd2VyKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBjb25zdCBjb3JyZWN0QW5zd2VyRGF0YSA9IFsuLi5jb3JyZWN0QW5zd2VyXTtcbiAgbGV0IGNvcnJlY3RSZXNwb25zZURlZmluaXRpb24gPSBbXTtcblxuICAoZGF0YSB8fCBbXSkuZm9yRWFjaCgoY2F0ZWdvcnksIGN1cnJlbnRJbmRleCkgPT4ge1xuICAgIGNvbnN0IGVkaXRhYmxlID0gY2F0ZWdvcnkuZWRpdGFibGU7XG4gICAgY29uc3QgaW50ZXJhY3RpdmUgPSBjYXRlZ29yeS5pbnRlcmFjdGl2ZTtcbiAgICBjb25zdCBsYWJlbCA9IGVkaXRhYmxlICYmIGNvcnJlY3RBbnN3ZXJbY3VycmVudEluZGV4XT8ubGFiZWwgPyBjb3JyZWN0QW5zd2VyW2N1cnJlbnRJbmRleF0ubGFiZWwgOiBjYXRlZ29yeS5sYWJlbDtcbiAgICBjb25zdCB2YWx1ZSA9XG4gICAgICAoaW50ZXJhY3RpdmUgJiYgY29ycmVjdEFuc3dlcltjdXJyZW50SW5kZXhdPy52YWx1ZSkgfHwgKGludGVyYWN0aXZlICYmIGNvcnJlY3RBbnN3ZXJbY3VycmVudEluZGV4XT8udmFsdWUgPT0gMClcbiAgICAgICAgPyBjb3JyZWN0QW5zd2VyW2N1cnJlbnRJbmRleF0udmFsdWVcbiAgICAgICAgOiBjYXRlZ29yeS52YWx1ZTtcblxuICAgIGNvcnJlY3RSZXNwb25zZURlZmluaXRpb25bY3VycmVudEluZGV4XSA9IHtcbiAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVkaXRhYmxlOiBjYXRlZ29yeS5lZGl0YWJsZSxcbiAgICAgIGludGVyYWN0aXZlOiBjYXRlZ29yeS5pbnRlcmFjdGl2ZSxcbiAgICB9O1xuICB9KTtcblxuICBpZiAoY29ycmVjdFJlc3BvbnNlRGVmaW5pdGlvbi5sZW5ndGggPCBjb3JyZWN0QW5zd2VyLmxlbmd0aCkge1xuICAgIGNvbnN0IG1pc3NpbmdDYXRlZ29yaWVzID0gKGNvcnJlY3RBbnN3ZXJEYXRhIHx8IFtdKS5zbGljZShjb3JyZWN0UmVzcG9uc2VEZWZpbml0aW9uLmxlbmd0aCwgY29ycmVjdEFuc3dlci5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIGFkZENhdGVnb3J5UHJvcHMoKGNvcnJlY3RSZXNwb25zZURlZmluaXRpb24gfHwgW10pLmNvbmNhdChtaXNzaW5nQ2F0ZWdvcmllcyksIGRhdGEpO1xuICB9XG5cbiAgcmV0dXJuIGNvcnJlY3RSZXNwb25zZURlZmluaXRpb247XG59O1xuXG5jb25zdCBpbnNlcnRDYXRlZ29yeSA9IChjb3JyZWN0QW5zd2VyLCBkYXRhKSA9PiB7XG4gIGNvbnN0IHBvc2l0aW9uVG9JbnNlcnQgPSBkYXRhLmxlbmd0aCAtIDE7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBjb25zdCB7IGVkaXRhYmxlLCBpbnRlcmFjdGl2ZSwgZGVsZXRhYmxlLCAuLi5jYXRlZ29yeVRvSW5zZXJ0IH0gPSBkYXRhW2RhdGEubGVuZ3RoIC0gMV07XG5cbiAgKGNvcnJlY3RBbnN3ZXIgfHwgW10pLnNwbGljZShwb3NpdGlvblRvSW5zZXJ0LCAwLCBjYXRlZ29yeVRvSW5zZXJ0KTtcbiAgY29uc3QgY29ycmVjdEFuc3dlckRhdGEgPSBbLi4uY29ycmVjdEFuc3dlcl07XG5cbiAgcmV0dXJuIGFkZENhdGVnb3J5UHJvcHMoY29ycmVjdEFuc3dlckRhdGEsIGRhdGEpO1xufTtcblxuY29uc3QgcmVtb3ZlQ2F0ZWdvcnkgPSAoY29ycmVjdEFuc3dlciwgZGF0YSwgcG9zaXRpb25Ub1JlbW92ZSkgPT4ge1xuICAoY29ycmVjdEFuc3dlciB8fCBbXSkuc3BsaWNlKHBvc2l0aW9uVG9SZW1vdmUsIDEpO1xuICBjb25zdCBjb3JyZWN0QW5zd2VyRGF0YSA9IFsuLi5jb3JyZWN0QW5zd2VyXTtcblxuICByZXR1cm4gYWRkQ2F0ZWdvcnlQcm9wcyhjb3JyZWN0QW5zd2VyRGF0YSwgZGF0YSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXBkYXRlZENhdGVnb3JpZXMgPSAobmV4dFByb3BzLCBwcmV2UHJvcHMsIHByZXZTdGF0ZSkgPT4ge1xuICBjb25zdCBuZXh0RGF0YSA9IChuZXh0UHJvcHMgJiYgbmV4dFByb3BzLm1vZGVsICYmIG5leHRQcm9wcy5tb2RlbC5kYXRhKSB8fCBbXTtcbiAgY29uc3QgZGF0YSA9IChwcmV2UHJvcHMgJiYgcHJldlByb3BzLm1vZGVsICYmIHByZXZQcm9wcy5tb2RlbC5kYXRhKSB8fCBbXTtcbiAgY29uc3QgbmV4dENvcnJlY3RBbnN3ZXJEYXRhQ29weSA9IGNsb25lRGVlcChcbiAgICAobmV4dFByb3BzICYmIG5leHRQcm9wcy5tb2RlbCAmJiBuZXh0UHJvcHMubW9kZWwuY29ycmVjdEFuc3dlciAmJiBuZXh0UHJvcHMubW9kZWwuY29ycmVjdEFuc3dlci5kYXRhKSB8fCBbXSxcbiAgKTtcblxuICBjb25zdCBjYXRlZ29yaWVzQ29weSA9IGNsb25lRGVlcChwcmV2U3RhdGUgPyBwcmV2U3RhdGUuY2F0ZWdvcmllcyA6IFtdKTtcblxuICBsZXQgbmV4dENhdGVnb3JpZXMgPSBbXTtcblxuICAvLyBIYW5kbGUgY2F0ZWdvcmllcyBpbnNlcnRpb24gaW4gRGVmaW5lIENoYXJ0XG4gIGlmIChuZXh0RGF0YS5sZW5ndGggPiBkYXRhLmxlbmd0aCkge1xuICAgIG5leHRDYXRlZ29yaWVzID0gaW5zZXJ0Q2F0ZWdvcnkobmV4dENvcnJlY3RBbnN3ZXJEYXRhQ29weSwgbmV4dERhdGEpO1xuICAgIHJldHVybiBuZXh0Q2F0ZWdvcmllcztcbiAgfVxuXG4gIC8vIEhhbmRsZSBjYXRlZ29yaWVzIHJlbW92YWwgZnJvbSBEZWZpbmUgQ2hhcnRcbiAgaWYgKG5leHREYXRhLmxlbmd0aCA8IGRhdGEubGVuZ3RoKSB7XG4gICAgbGV0IHJlbW92ZWRJbmRleCA9IG5leHREYXRhLmxlbmd0aDtcblxuICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBjYXRlZ29yeSBmcm9tIHRoZSBjb3JyZWN0IGFuc3dlciBkYXRhIGFuZCBjYXRlZ29yaWVzLCBmcm9tIHRoZSBzYW1lIGluZGV4IGl0IHdhcyByZW1vdmVkIGZyb20gdGhlIGRhdGFcbiAgICAvLyBpbmRleCBpcyBhIHByb3BlcnR5IG9mIHRoZSBuZXh0RGF0YSBjYXRlZ29yeVxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBuZXh0RGF0YS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChuZXh0RGF0YVtpbmRleF0uaW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgIHJlbW92ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0Q2F0ZWdvcmllcyA9IHJlbW92ZUNhdGVnb3J5KGNhdGVnb3JpZXNDb3B5LCBuZXh0RGF0YSwgcmVtb3ZlZEluZGV4KTtcbiAgICByZXR1cm4gbmV4dENhdGVnb3JpZXM7XG4gIH1cblxuICAvLyBIYW5kbGUgY2F0ZWdvcnkgdmFsdWUgb3IgbGFiZWwgY2hhbmdlcyBpbiBEZWZpbmUgQ2hhcnRcbiAgLy8gSGFuZGxlIGNhdGVnb3JpZXMgdXBkYXRlIGluIERlZmluZSBDb3JyZWN0IFJlc3BvbnNlIENoYXJ0XG4gIG5leHRDYXRlZ29yaWVzID0gdXBkYXRlQ29ycmVjdFJlc3BvbnNlRGF0YShuZXh0Q29ycmVjdEFuc3dlckRhdGFDb3B5LCBuZXh0RGF0YSk7XG5cbiAgcmV0dXJuIG5leHRDYXRlZ29yaWVzO1xufTtcblxuZXhwb3J0IGNsYXNzIENvcnJlY3RSZXNwb25zZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgY29ycmVjdEFuc3dlckVycm9yczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzdHVkZW50TmV3Q2F0ZWdvcnlEZWZhdWx0TGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBjaGFydHM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBlcnJvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgY2F0ZWdvcmllczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNoYW5nZURhdGEgPSAoZGF0YSkgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwsIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHsgY29ycmVjdEFuc3dlciB9ID0gbW9kZWwgfHwge307XG5cbiAgICBvbkNoYW5nZSh7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGNvcnJlY3RBbnN3ZXI6IHtcbiAgICAgICAgLi4uY29ycmVjdEFuc3dlcixcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICAgIGRhdGE6IGRhdGEubWFwKCh7IGludGVyYWN0aXZlLCBlZGl0YWJsZSwgaW5kZXgsIC4uLmtlZXBBdHRycyB9KSA9PiBrZWVwQXR0cnMpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfTtcblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCBpbml0aWFsQ2F0ZWdvcmllcyA9IGdldFVwZGF0ZWRDYXRlZ29yaWVzKHRoaXMucHJvcHMsIHRoaXMucHJvcHMsIG51bGwpO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBjYXRlZ29yaWVzOlxuICAgICAgICBpbml0aWFsQ2F0ZWdvcmllcyB8fCB1cGRhdGVDb3JyZWN0UmVzcG9uc2VEYXRhKHRoaXMucHJvcHMubW9kZWwuY29ycmVjdEFuc3dlci5kYXRhLCB0aGlzLnByb3BzLm1vZGVsLmRhdGEpLFxuICAgIH0pO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgY29uc3QgbmV4dENhdGVnb3JpZXMgPSBnZXRVcGRhdGVkQ2F0ZWdvcmllcyh0aGlzLnByb3BzLCBwcmV2UHJvcHMsIHByZXZTdGF0ZSk7XG5cbiAgICBpZiAobmV4dENhdGVnb3JpZXMgJiYgIWlzRXF1YWwobmV4dENhdGVnb3JpZXMsIHRoaXMuc3RhdGUuY2F0ZWdvcmllcykpIHtcbiAgICAgIHRoaXMuY2hhbmdlRGF0YShuZXh0Q2F0ZWdvcmllcyk7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgY2F0ZWdvcmllczogbmV4dENhdGVnb3JpZXMgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG1vZGVsLFxuICAgICAgY2hhcnRzLFxuICAgICAgZXJyb3IsXG4gICAgICBzdHVkZW50TmV3Q2F0ZWdvcnlEZWZhdWx0TGFiZWwsXG4gICAgICBjb3JyZWN0QW5zd2VyRXJyb3JzLFxuICAgICAgbWF0aE1sT3B0aW9ucyA9IHt9LFxuICAgICAgbGFiZWxzUGxhY2Vob2xkZXJzID0ge30sXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBjYXRlZ29yaWVzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgY29uc3QgeyBkb21haW4gPSB7fSwgcmFuZ2UgPSB7fSB9ID0gbW9kZWwgfHwge307XG4gICAgY29uc3QgeyBpZGVudGljYWxFcnJvciwgY2F0ZWdvcmllc0Vycm9yIH0gPSBjb3JyZWN0QW5zd2VyRXJyb3JzIHx8IHt9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxUaXRsZT5EZWZpbmUgQ29ycmVjdCBSZXNwb25zZTwvVGl0bGU+XG4gICAgICAgIDxDb250YWluZXI+XG4gICAgICAgICAgPENvbHVtbiBrZXk9XCJncmFwaFwiPlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgY29tcG9uZW50PVwiZGl2XCIgdHlwZT1cImJvZHkxXCI+XG4gICAgICAgICAgICAgIDxzcGFuPlVzZSB0aGUgdG9vbHMgYmVsb3cgdG8gZGVmaW5lIHRoZSBjb3JyZWN0IGFuc3dlci48L3NwYW4+XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgIHsoaWRlbnRpY2FsRXJyb3IgfHwgY2F0ZWdvcmllc0Vycm9yKSA/IChcbiAgICAgICAgICAgICAgPENoYXJ0RXJyb3Iga2V5PXtgY29ycmVjdC1yZXNwb25zZS1ncmFwaC0ke21vZGVsLmNvcnJlY3RBbnN3ZXIubmFtZX1gfT5cbiAgICAgICAgICAgICAgICA8Q2hhcnRcbiAgICAgICAgICAgICAgICAgIGNoYXJ0VHlwZT17bW9kZWwuY2hhcnRUeXBlfVxuICAgICAgICAgICAgICAgICAgc2l6ZT17bW9kZWwuZ3JhcGh9XG4gICAgICAgICAgICAgICAgICBkb21haW49e2RvbWFpbn1cbiAgICAgICAgICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICAgICAgICAgIGNoYXJ0cz17Y2hhcnRzfVxuICAgICAgICAgICAgICAgICAgZGF0YT17Y2F0ZWdvcmllc31cbiAgICAgICAgICAgICAgICAgIHRpdGxlPXttb2RlbC50aXRsZX1cbiAgICAgICAgICAgICAgICAgIG9uRGF0YUNoYW5nZT17dGhpcy5jaGFuZ2VEYXRhfVxuICAgICAgICAgICAgICAgICAgYWRkQ2F0ZWdvcnlFbmFibGVkPXttb2RlbC5hZGRDYXRlZ29yeUVuYWJsZWR9XG4gICAgICAgICAgICAgICAgICBjYXRlZ29yeURlZmF1bHRMYWJlbD17c3R1ZGVudE5ld0NhdGVnb3J5RGVmYXVsdExhYmVsfVxuICAgICAgICAgICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgICAgICAgICAgbWF0aE1sT3B0aW9ucz17bWF0aE1sT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIGxhYmVsc1BsYWNlaG9sZGVycz17bGFiZWxzUGxhY2Vob2xkZXJzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQ2hhcnRFcnJvcj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtgY29ycmVjdC1yZXNwb25zZS1ncmFwaC0ke21vZGVsLmNvcnJlY3RBbnN3ZXIubmFtZX1gfT5cbiAgICAgICAgICAgICAgICA8Q2hhcnRcbiAgICAgICAgICAgICAgICAgIGNoYXJ0VHlwZT17bW9kZWwuY2hhcnRUeXBlfVxuICAgICAgICAgICAgICAgICAgc2l6ZT17bW9kZWwuZ3JhcGh9XG4gICAgICAgICAgICAgICAgICBkb21haW49e2RvbWFpbn1cbiAgICAgICAgICAgICAgICAgIHJhbmdlPXtyYW5nZX1cbiAgICAgICAgICAgICAgICAgIGNoYXJ0cz17Y2hhcnRzfVxuICAgICAgICAgICAgICAgICAgZGF0YT17Y2F0ZWdvcmllc31cbiAgICAgICAgICAgICAgICAgIHRpdGxlPXttb2RlbC50aXRsZX1cbiAgICAgICAgICAgICAgICAgIG9uRGF0YUNoYW5nZT17dGhpcy5jaGFuZ2VEYXRhfVxuICAgICAgICAgICAgICAgICAgYWRkQ2F0ZWdvcnlFbmFibGVkPXttb2RlbC5hZGRDYXRlZ29yeUVuYWJsZWR9XG4gICAgICAgICAgICAgICAgICBjYXRlZ29yeURlZmF1bHRMYWJlbD17c3R1ZGVudE5ld0NhdGVnb3J5RGVmYXVsdExhYmVsfVxuICAgICAgICAgICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgICAgICAgICAgbWF0aE1sT3B0aW9ucz17bWF0aE1sT3B0aW9uc31cbiAgICAgICAgICAgICAgICAgIGxhYmVsc1BsYWNlaG9sZGVycz17bGFiZWxzUGxhY2Vob2xkZXJzfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgeyhpZGVudGljYWxFcnJvciB8fCBjYXRlZ29yaWVzRXJyb3IpICYmIChcbiAgICAgICAgICAgICAgPEVycm9yVGV4dCBjb21wb25lbnQ9XCJkaXZcIiB0eXBlPVwiYm9keTFcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57aWRlbnRpY2FsRXJyb3IgfHwgY2F0ZWdvcmllc0Vycm9yfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9FcnJvclRleHQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQ29sdW1uPlxuICAgICAgICA8L0NvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29ycmVjdFJlc3BvbnNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFNLFVBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFPLFdBQUEsR0FBQUwsc0JBQUEsQ0FBQUYsT0FBQTtBQUFrRCxTQUFBRCx3QkFBQVMsQ0FBQSxFQUFBQyxDQUFBLDZCQUFBQyxPQUFBLE1BQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQVgsdUJBQUEsWUFBQUEsQ0FBQVMsQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVB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QUFFLDBCQUEwQmpDLEtBQUssQ0FBQy9CLGFBQWEsQ0FBQ21FLElBQUk7SUFBRyxnQkFDN0RySCxLQUFBLENBQUFpSCxhQUFBLENBQUMzRyxTQUFBLENBQUFnSCxLQUFLO01BQ0pDLFNBQVMsRUFBRXRDLEtBQUssQ0FBQ3NDLFNBQVU7TUFDM0JDLElBQUksRUFBRXZDLEtBQUssQ0FBQ3dDLEtBQU07TUFDbEJaLE1BQU0sRUFBRUEsTUFBTztNQUNmQyxLQUFLLEVBQUVBLEtBQU07TUFDYk4sTUFBTSxFQUFFQSxNQUFPO01BQ2ZyRCxJQUFJLEVBQUVrQyxVQUFXO01BQ2pCcUMsS0FBSyxFQUFFekMsS0FBSyxDQUFDeUMsS0FBTTtNQUNuQkMsWUFBWSxFQUFFLElBQUksQ0FBQ3JCLFVBQVc7TUFDOUJzQixrQkFBa0IsRUFBRTNDLEtBQUssQ0FBQzJDLGtCQUFtQjtNQUM3Q0Msb0JBQW9CLEVBQUVwQiw4QkFBK0I7TUFDckRqRSxLQUFLLEVBQUVBLEtBQU07TUFDYm1FLGFBQWEsRUFBRUEsYUFBYztNQUM3QkMsa0JBQWtCLEVBQUVBO0lBQW1CLENBQ3hDLENBQ0UsQ0FDTixFQUVBLENBQUNHLGNBQWMsSUFBSUMsZUFBZSxrQkFDakNoSCxLQUFBLENBQUFpSCxhQUFBLENBQUN2RSxTQUFTO01BQUN5RSxTQUFTLEVBQUMsS0FBSztNQUFDQyxJQUFJLEVBQUM7SUFBTyxnQkFDckNwSCxLQUFBLENBQUFpSCxhQUFBLGVBQU9GLGNBQWMsSUFBSUMsZUFBc0IsQ0FDdEMsQ0FFUCxDQUNDLENBQ1IsQ0FBQztFQUVWO0FBQ0Y7QUFBQ3hCLE9BQUEsQ0FBQUMsZUFBQSxHQUFBQSxlQUFBO0FBQUEsSUFBQUksZ0JBQUEsQ0FBQXpFLE9BQUEsRUF6SFlxRSxlQUFlLGVBQ1A7RUFDakJpQixtQkFBbUIsRUFBRW9CLGtCQUFTLENBQUNDLE1BQU07RUFDckN0Qiw4QkFBOEIsRUFBRXFCLGtCQUFTLENBQUNFLE1BQU07RUFDaEQvQyxLQUFLLEVBQUU2QyxrQkFBUyxDQUFDQyxNQUFNLENBQUNFLFVBQVU7RUFDbENuQyxRQUFRLEVBQUVnQyxrQkFBUyxDQUFDSSxJQUFJLENBQUNELFVBQVU7RUFDbkN6QixNQUFNLEVBQUVzQixrQkFBUyxDQUFDSyxLQUFLO0VBQ3ZCM0YsS0FBSyxFQUFFc0Ysa0JBQVMsQ0FBQ0U7QUFDbkIsQ0FBQztBQUFBLElBQUFJLFFBQUEsR0FBQTVDLE9BQUEsQ0FBQXBFLE9BQUEsR0FtSFlxRSxlQUFlIiwiaWdub3JlTGlzdCI6W119