@pie-element/inline-dropdown 4.10.16-next.1 → 4.11.2
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 +461 -0
- package/LICENSE.md +5 -0
- package/configure/CHANGELOG.md +405 -0
- package/configure/lib/defaults.js +18 -1
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +15 -1
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/inline-dropdown-toolbar.js +54 -47
- package/configure/lib/inline-dropdown-toolbar.js.map +1 -1
- package/configure/lib/main.js +227 -159
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +1 -1
- package/configure/lib/markupUtils.js.map +1 -1
- package/configure/lib/utils.js +17 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +5 -5
- package/controller/CHANGELOG.md +85 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +28 -1
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +1 -1
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +2 -2
- package/docs/config-schema.json +94 -0
- package/docs/config-schema.json.md +73 -1
- package/docs/demo/config.js +2 -2
- package/docs/demo/generate.js +19 -20
- package/docs/pie-schema.json +27 -0
- package/docs/pie-schema.json.md +20 -0
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/inline-dropdown.js +31 -21
- package/lib/inline-dropdown.js.map +1 -1
- package/package.json +6 -6
- package/configure/lib/__tests__/inline-dropdown-toolbar.test.js +0 -124
- package/configure/lib/__tests__/main.test.js +0 -516
- package/configure/lib/__tests__/markupUtils.test.js +0 -108
- package/controller/lib/__tests__/index.test.js +0 -942
- package/docs/demo/pie.manifest.json +0 -11
- package/lib/__tests__/inline-dropdown.test.js +0 -121
package/configure/lib/main.js
CHANGED
|
@@ -45,15 +45,11 @@ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
|
45
45
|
|
|
46
46
|
var _reduce = _interopRequireDefault(require("lodash/reduce"));
|
|
47
47
|
|
|
48
|
-
var
|
|
49
|
-
|
|
50
|
-
var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
|
|
51
|
-
|
|
52
|
-
var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
|
|
48
|
+
var _max = _interopRequireDefault(require("lodash/max"));
|
|
53
49
|
|
|
54
|
-
var
|
|
50
|
+
var _styles = require("@material-ui/core/styles");
|
|
55
51
|
|
|
56
|
-
var
|
|
52
|
+
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
57
53
|
|
|
58
54
|
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
59
55
|
|
|
@@ -65,9 +61,11 @@ var _ExpansionPanelDetails = _interopRequireDefault(require("@material-ui/core/E
|
|
|
65
61
|
|
|
66
62
|
var _ExpandMore = _interopRequireDefault(require("@material-ui/icons/ExpandMore"));
|
|
67
63
|
|
|
64
|
+
var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
|
|
65
|
+
|
|
68
66
|
var _inlineDropdownToolbar = _interopRequireDefault(require("./inline-dropdown-toolbar"));
|
|
69
67
|
|
|
70
|
-
var
|
|
68
|
+
var _utils = require("./utils");
|
|
71
69
|
|
|
72
70
|
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); }
|
|
73
71
|
|
|
@@ -84,77 +82,55 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
84
82
|
var toggle = _configUi.settings.toggle,
|
|
85
83
|
Panel = _configUi.settings.Panel;
|
|
86
84
|
|
|
87
|
-
var InfoDialog = function InfoDialog(_ref) {
|
|
88
|
-
var open = _ref.open,
|
|
89
|
-
onCancel = _ref.onCancel,
|
|
90
|
-
onOk = _ref.onOk,
|
|
91
|
-
title = _ref.title;
|
|
92
|
-
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
93
|
-
open: open
|
|
94
|
-
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
95
|
-
onClick: onOk,
|
|
96
|
-
color: "primary"
|
|
97
|
-
}, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
98
|
-
onClick: onCancel,
|
|
99
|
-
color: "primary"
|
|
100
|
-
}, "Cancel")));
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
InfoDialog.propTypes = {
|
|
104
|
-
open: _propTypes["default"].bool,
|
|
105
|
-
onCancel: _propTypes["default"].func,
|
|
106
|
-
onOk: _propTypes["default"].func,
|
|
107
|
-
title: _propTypes["default"].string
|
|
108
|
-
};
|
|
109
|
-
|
|
110
85
|
var styles = function styles(theme) {
|
|
111
86
|
return {
|
|
112
87
|
promptHolder: {
|
|
113
88
|
width: '100%',
|
|
114
|
-
paddingBottom: theme.spacing.unit * 2,
|
|
115
|
-
marginBottom: theme.spacing.unit * 2
|
|
116
|
-
},
|
|
117
|
-
prompt: {
|
|
118
89
|
paddingTop: theme.spacing.unit * 2,
|
|
119
|
-
|
|
90
|
+
marginBottom: theme.spacing.unit * 2
|
|
120
91
|
},
|
|
121
92
|
markup: {
|
|
122
93
|
minHeight: '100px',
|
|
123
|
-
|
|
94
|
+
paddingBottom: theme.spacing.unit * 2.5,
|
|
124
95
|
width: '100%',
|
|
125
96
|
'& [data-slate-editor="true"]': {
|
|
126
97
|
minHeight: '100px'
|
|
127
98
|
}
|
|
128
99
|
},
|
|
129
|
-
design: {
|
|
130
|
-
paddingTop: theme.spacing.unit * 3
|
|
131
|
-
},
|
|
132
100
|
choiceConfiguration: {
|
|
133
101
|
paddingTop: theme.spacing.unit * 2,
|
|
134
102
|
paddingBottom: theme.spacing.unit * 2
|
|
135
103
|
},
|
|
136
|
-
switchElement: {
|
|
137
|
-
justifyContent: 'space-between',
|
|
138
|
-
margin: 0
|
|
139
|
-
},
|
|
140
|
-
addButton: {
|
|
141
|
-
"float": 'right'
|
|
142
|
-
},
|
|
143
104
|
text: {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
lineHeight: '19px',
|
|
147
|
-
color: '#495B8F'
|
|
105
|
+
fontSize: theme.typography.fontSize + 2,
|
|
106
|
+
marginRight: theme.spacing.unit
|
|
148
107
|
},
|
|
149
108
|
rationaleLabel: {
|
|
150
109
|
display: 'flex',
|
|
151
110
|
whiteSpace: 'break-spaces'
|
|
152
111
|
},
|
|
153
112
|
rationaleChoices: {
|
|
154
|
-
|
|
113
|
+
marginBottom: theme.spacing.unit * 2.5
|
|
155
114
|
},
|
|
156
115
|
panelDetails: {
|
|
157
|
-
display: 'block'
|
|
116
|
+
display: 'block',
|
|
117
|
+
paddingTop: 0,
|
|
118
|
+
paddingBottom: 0
|
|
119
|
+
},
|
|
120
|
+
flexContainer: {
|
|
121
|
+
display: 'flex',
|
|
122
|
+
alignItems: 'center',
|
|
123
|
+
marginBottom: theme.spacing.unit
|
|
124
|
+
},
|
|
125
|
+
tooltip: {
|
|
126
|
+
fontSize: theme.typography.fontSize - 2,
|
|
127
|
+
whiteSpace: 'pre',
|
|
128
|
+
maxWidth: '500px'
|
|
129
|
+
},
|
|
130
|
+
errorText: {
|
|
131
|
+
fontSize: theme.typography.fontSize - 2,
|
|
132
|
+
color: theme.palette.error.main,
|
|
133
|
+
paddingTop: theme.spacing.unit
|
|
158
134
|
}
|
|
159
135
|
};
|
|
160
136
|
};
|
|
@@ -188,7 +164,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
188
164
|
|
|
189
165
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
190
166
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
191
|
-
|
|
167
|
+
warning: {
|
|
192
168
|
open: false
|
|
193
169
|
}
|
|
194
170
|
});
|
|
@@ -226,22 +202,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
226
202
|
});
|
|
227
203
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onCheck", function (callback) {
|
|
228
204
|
_this.setState({
|
|
229
|
-
|
|
205
|
+
warning: {
|
|
230
206
|
open: true,
|
|
231
|
-
|
|
232
|
-
|
|
207
|
+
text: 'Response areas with under 2 options or with no correct answers will be discarded.',
|
|
208
|
+
onClose: function onClose() {
|
|
233
209
|
_this.setState({
|
|
234
|
-
|
|
210
|
+
warning: {
|
|
235
211
|
open: false
|
|
236
212
|
}
|
|
237
|
-
}
|
|
213
|
+
});
|
|
238
214
|
},
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
215
|
+
onConfirm: function onConfirm() {
|
|
216
|
+
_this.setState({
|
|
217
|
+
warning: {
|
|
242
218
|
open: false
|
|
243
219
|
}
|
|
244
|
-
});
|
|
220
|
+
}, callback);
|
|
245
221
|
}
|
|
246
222
|
}
|
|
247
223
|
});
|
|
@@ -279,12 +255,19 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
279
255
|
|
|
280
256
|
if (shouldWarn) {
|
|
281
257
|
_this.setState({
|
|
282
|
-
|
|
258
|
+
warning: {
|
|
283
259
|
open: true,
|
|
284
|
-
|
|
285
|
-
|
|
260
|
+
text: 'Response areas with under 2 options or with no correct answers will be discarded.',
|
|
261
|
+
onClose: function onClose() {
|
|
262
|
+
_this.setState({
|
|
263
|
+
warning: {
|
|
264
|
+
open: false
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
},
|
|
268
|
+
onConfirm: function onConfirm() {
|
|
286
269
|
_this.setState({
|
|
287
|
-
|
|
270
|
+
warning: {
|
|
288
271
|
open: false
|
|
289
272
|
}
|
|
290
273
|
}, function () {
|
|
@@ -293,13 +276,6 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
293
276
|
slateMarkup: domMarkup.innerHTML
|
|
294
277
|
});
|
|
295
278
|
});
|
|
296
|
-
},
|
|
297
|
-
onCancel: function onCancel() {
|
|
298
|
-
return _this.setState({
|
|
299
|
-
dialog: {
|
|
300
|
-
open: false
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
279
|
}
|
|
304
280
|
}
|
|
305
281
|
});
|
|
@@ -312,6 +288,26 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
312
288
|
});
|
|
313
289
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function (index, label) {
|
|
314
290
|
var respAreaChoices = _this.state.respAreaChoices;
|
|
291
|
+
var maxResponseAreaChoices = _this.props.configuration.maxResponseAreaChoices;
|
|
292
|
+
|
|
293
|
+
if (respAreaChoices[index] && respAreaChoices[index].length >= maxResponseAreaChoices) {
|
|
294
|
+
_this.setState({
|
|
295
|
+
warning: {
|
|
296
|
+
open: true,
|
|
297
|
+
text: "There are only ".concat(maxResponseAreaChoices, " answers allowed per choice."),
|
|
298
|
+
onClose: undefined,
|
|
299
|
+
onConfirm: function onConfirm() {
|
|
300
|
+
_this.setState({
|
|
301
|
+
warning: {
|
|
302
|
+
open: false
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
315
311
|
|
|
316
312
|
if (!respAreaChoices[index]) {
|
|
317
313
|
respAreaChoices[index] = [];
|
|
@@ -321,12 +317,13 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
321
317
|
return prepareVal(r.label) === prepareVal(label);
|
|
322
318
|
})) {
|
|
323
319
|
_this.setState({
|
|
324
|
-
|
|
320
|
+
warning: {
|
|
325
321
|
open: true,
|
|
326
|
-
|
|
327
|
-
|
|
322
|
+
text: 'Duplicate answers are not allowed.',
|
|
323
|
+
onClose: undefined,
|
|
324
|
+
onConfirm: function onConfirm() {
|
|
328
325
|
_this.setState({
|
|
329
|
-
|
|
326
|
+
warning: {
|
|
330
327
|
open: false
|
|
331
328
|
}
|
|
332
329
|
});
|
|
@@ -362,8 +359,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
362
359
|
});
|
|
363
360
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSelectChoice", function (respIndex, selectedIndex) {
|
|
364
361
|
var respAreaChoices = _this.state.respAreaChoices;
|
|
365
|
-
respAreaChoices[respIndex] = respAreaChoices[respIndex].map(function (
|
|
366
|
-
return _objectSpread(_objectSpread({},
|
|
362
|
+
respAreaChoices[respIndex] = respAreaChoices[respIndex].map(function (choice, index) {
|
|
363
|
+
return _objectSpread(_objectSpread({}, choice), {}, {
|
|
367
364
|
correct: index === selectedIndex
|
|
368
365
|
});
|
|
369
366
|
});
|
|
@@ -409,40 +406,58 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
409
406
|
value: function render() {
|
|
410
407
|
var _this2 = this;
|
|
411
408
|
|
|
412
|
-
var
|
|
409
|
+
var warning = this.state.warning;
|
|
413
410
|
var _this$props = this.props,
|
|
414
411
|
classes = _this$props.classes,
|
|
415
412
|
model = _this$props.model,
|
|
416
413
|
configuration = _this$props.configuration,
|
|
417
414
|
onConfigurationChanged = _this$props.onConfigurationChanged,
|
|
418
|
-
imageSupport = _this$props.imageSupport
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
415
|
+
imageSupport = _this$props.imageSupport,
|
|
416
|
+
uploadSoundSupport = _this$props.uploadSoundSupport;
|
|
417
|
+
|
|
418
|
+
var _ref = configuration || {},
|
|
419
|
+
_ref$choiceRationale = _ref.choiceRationale,
|
|
420
|
+
choiceRationale = _ref$choiceRationale === void 0 ? {} : _ref$choiceRationale,
|
|
421
|
+
_ref$lockChoiceOrder = _ref.lockChoiceOrder,
|
|
422
|
+
lockChoiceOrder = _ref$lockChoiceOrder === void 0 ? {} : _ref$lockChoiceOrder,
|
|
423
|
+
maxResponseAreas = _ref.maxResponseAreas,
|
|
424
|
+
_ref$maxImageWidth = _ref.maxImageWidth,
|
|
425
|
+
maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
|
|
426
|
+
_ref$maxImageHeight = _ref.maxImageHeight,
|
|
427
|
+
maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
|
|
428
|
+
_ref$partialScoring = _ref.partialScoring,
|
|
429
|
+
partialScoring = _ref$partialScoring === void 0 ? {} : _ref$partialScoring,
|
|
430
|
+
_ref$prompt = _ref.prompt,
|
|
431
|
+
prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
|
|
432
|
+
_ref$rationale = _ref.rationale,
|
|
433
|
+
rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
|
|
434
|
+
settingsPanelDisabled = _ref.settingsPanelDisabled,
|
|
435
|
+
_ref$spellCheck = _ref.spellCheck,
|
|
436
|
+
spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
|
|
437
|
+
_ref$teacherInstructi = _ref.teacherInstructions,
|
|
438
|
+
teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
|
|
439
|
+
_ref$withRubric = _ref.withRubric,
|
|
440
|
+
withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric;
|
|
441
|
+
|
|
442
|
+
var _ref2 = model || {},
|
|
443
|
+
choiceRationaleEnabled = _ref2.choiceRationaleEnabled,
|
|
444
|
+
choices = _ref2.choices,
|
|
445
|
+
errors = _ref2.errors,
|
|
446
|
+
promptEnabled = _ref2.promptEnabled,
|
|
447
|
+
rationaleEnabled = _ref2.rationaleEnabled,
|
|
448
|
+
spellCheckEnabled = _ref2.spellCheckEnabled,
|
|
449
|
+
teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
|
|
450
|
+
toolbarEditorPosition = _ref2.toolbarEditorPosition;
|
|
451
|
+
|
|
452
|
+
var _ref3 = errors || {},
|
|
453
|
+
responseAreasError = _ref3.responseAreasError,
|
|
454
|
+
responseAreaChoicesError = _ref3.responseAreaChoicesError;
|
|
455
|
+
|
|
456
|
+
var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
|
|
457
|
+
var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
|
|
443
458
|
|
|
444
459
|
var renderChoiceRationale = function renderChoiceRationale() {
|
|
445
|
-
return (Object.keys(choices) || []).map(function (key) {
|
|
460
|
+
return (Object.keys(choices) || []).map(function (key, index) {
|
|
446
461
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
447
462
|
key: key,
|
|
448
463
|
className: classes.rationaleChoices
|
|
@@ -450,7 +465,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
450
465
|
expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], null)
|
|
451
466
|
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
452
467
|
className: classes.text
|
|
453
|
-
}, "Rationale for response area #".concat(
|
|
468
|
+
}, "Rationale for response area #".concat(index + 1))), /*#__PURE__*/_react["default"].createElement(_ExpansionPanelDetails["default"], {
|
|
454
469
|
className: classes.panelDetails
|
|
455
470
|
}, (choices[key] || []).map(function (choice) {
|
|
456
471
|
return /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
@@ -471,27 +486,33 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
471
486
|
rationale: c
|
|
472
487
|
}));
|
|
473
488
|
},
|
|
474
|
-
imageSupport: imageSupport
|
|
489
|
+
imageSupport: imageSupport,
|
|
490
|
+
maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
|
|
491
|
+
maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
|
|
492
|
+
uploadSoundSupport: uploadSoundSupport
|
|
475
493
|
}));
|
|
476
494
|
}))));
|
|
477
495
|
});
|
|
478
496
|
};
|
|
479
497
|
|
|
480
|
-
var toolbarOpts = {
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
498
|
+
var toolbarOpts = {
|
|
499
|
+
position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
|
|
500
|
+
};
|
|
501
|
+
var validationMessage = (0, _utils.generateValidationMessage)(configuration);
|
|
502
|
+
var panelSettings = {
|
|
503
|
+
partialScoring: partialScoring.settings && toggle(partialScoring.label),
|
|
504
|
+
lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label)
|
|
505
|
+
};
|
|
506
|
+
var panelProperties = {
|
|
507
|
+
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
|
|
508
|
+
rationaleEnabled: rationale.settings && toggle(rationale.label),
|
|
509
|
+
choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),
|
|
510
|
+
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
511
|
+
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
512
|
+
rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
|
|
513
|
+
};
|
|
514
|
+
return /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
515
|
+
hideSettings: settingsPanelDisabled,
|
|
495
516
|
settings: /*#__PURE__*/_react["default"].createElement(Panel, {
|
|
496
517
|
model: model,
|
|
497
518
|
configuration: configuration,
|
|
@@ -502,20 +523,11 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
502
523
|
return onConfigurationChanged(configuration, true);
|
|
503
524
|
},
|
|
504
525
|
groups: {
|
|
505
|
-
Settings:
|
|
506
|
-
|
|
507
|
-
lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label)
|
|
508
|
-
},
|
|
509
|
-
Properties: {
|
|
510
|
-
teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
|
|
511
|
-
rationaleEnabled: rationale.settings && toggle(rationale.label),
|
|
512
|
-
choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),
|
|
513
|
-
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
514
|
-
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label)
|
|
515
|
-
}
|
|
526
|
+
Settings: panelSettings,
|
|
527
|
+
Properties: panelProperties
|
|
516
528
|
}
|
|
517
529
|
})
|
|
518
|
-
},
|
|
530
|
+
}, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
519
531
|
label: teacherInstructions.label,
|
|
520
532
|
className: classes.promptHolder
|
|
521
533
|
}, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
@@ -525,7 +537,15 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
525
537
|
imageSupport: imageSupport,
|
|
526
538
|
nonEmpty: false,
|
|
527
539
|
toolbarOpts: toolbarOpts,
|
|
528
|
-
spellCheck: spellCheckEnabled
|
|
540
|
+
spellCheck: spellCheckEnabled,
|
|
541
|
+
maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
|
|
542
|
+
maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
|
|
543
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
544
|
+
languageCharactersProps: [{
|
|
545
|
+
language: 'spanish'
|
|
546
|
+
}, {
|
|
547
|
+
language: 'special'
|
|
548
|
+
}]
|
|
529
549
|
})), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
530
550
|
label: prompt.label,
|
|
531
551
|
className: classes.promptHolder
|
|
@@ -537,25 +557,31 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
537
557
|
nonEmpty: false,
|
|
538
558
|
disableUnderline: true,
|
|
539
559
|
toolbarOpts: toolbarOpts,
|
|
540
|
-
spellCheck: spellCheckEnabled
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
}
|
|
560
|
+
spellCheck: spellCheckEnabled,
|
|
561
|
+
maxImageWidth: defaultImageMaxWidth,
|
|
562
|
+
maxImageHeight: defaultImageMaxHeight,
|
|
563
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
564
|
+
languageCharactersProps: [{
|
|
565
|
+
language: 'spanish'
|
|
566
|
+
}, {
|
|
567
|
+
language: 'special'
|
|
568
|
+
}]
|
|
569
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
570
|
+
className: classes.flexContainer
|
|
571
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
552
572
|
className: classes.text
|
|
553
|
-
}, "Define Template, Choices, and Correct Responses"), /*#__PURE__*/_react["default"].createElement(
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
573
|
+
}, "Define Template, Choices, and Correct Responses"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
574
|
+
classes: {
|
|
575
|
+
tooltip: classes.tooltip
|
|
576
|
+
},
|
|
577
|
+
disableFocusListener: true,
|
|
578
|
+
disableTouchListener: true,
|
|
579
|
+
placement: 'right',
|
|
580
|
+
title: validationMessage
|
|
581
|
+
}, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
|
|
582
|
+
fontSize: 'small',
|
|
583
|
+
color: 'primary'
|
|
584
|
+
}))), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
559
585
|
activePlugins: _editableHtml.ALL_PLUGINS,
|
|
560
586
|
toolbarOpts: {
|
|
561
587
|
position: 'top'
|
|
@@ -565,6 +591,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
565
591
|
options: {
|
|
566
592
|
duplicates: true
|
|
567
593
|
},
|
|
594
|
+
maxResponseAreas: maxResponseAreas,
|
|
568
595
|
respAreaToolbar: function respAreaToolbar(node, value, onToolbarDone) {
|
|
569
596
|
var respAreaChoices = _this2.state.respAreaChoices;
|
|
570
597
|
return function () {
|
|
@@ -581,7 +608,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
581
608
|
value: value,
|
|
582
609
|
onToolbarDone: onToolbarDone,
|
|
583
610
|
choices: respAreaChoices[node.data.get('index')],
|
|
584
|
-
spellCheck: spellCheckEnabled
|
|
611
|
+
spellCheck: spellCheckEnabled,
|
|
612
|
+
uploadSoundSupport: uploadSoundSupport
|
|
585
613
|
});
|
|
586
614
|
};
|
|
587
615
|
}
|
|
@@ -591,10 +619,46 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
591
619
|
markup: model.slateMarkup || '',
|
|
592
620
|
onChange: this.onChange,
|
|
593
621
|
imageSupport: imageSupport,
|
|
622
|
+
disableImageAlignmentButtons: true,
|
|
594
623
|
onBlur: this.onBlur,
|
|
595
624
|
disabled: false,
|
|
596
|
-
highlightShape: false
|
|
597
|
-
|
|
625
|
+
highlightShape: false,
|
|
626
|
+
error: responseAreasError,
|
|
627
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
628
|
+
languageCharactersProps: [{
|
|
629
|
+
language: 'spanish'
|
|
630
|
+
}, {
|
|
631
|
+
language: 'special'
|
|
632
|
+
}]
|
|
633
|
+
}), responseAreasError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
634
|
+
className: classes.errorText
|
|
635
|
+
}, responseAreasError), responseAreaChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
636
|
+
className: classes.errorText
|
|
637
|
+
}, responseAreaChoicesError), choiceRationaleEnabled && renderChoiceRationale(), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
638
|
+
label: rationale.label,
|
|
639
|
+
className: classes.promptHolder
|
|
640
|
+
}, /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
|
|
641
|
+
className: classes.prompt,
|
|
642
|
+
markup: model.rationale || '',
|
|
643
|
+
onChange: this.onRationaleChanged,
|
|
644
|
+
imageSupport: imageSupport,
|
|
645
|
+
toolbarOpts: toolbarOpts,
|
|
646
|
+
spellCheck: spellCheckEnabled,
|
|
647
|
+
maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
|
|
648
|
+
maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
|
|
649
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
650
|
+
languageCharactersProps: [{
|
|
651
|
+
language: 'spanish'
|
|
652
|
+
}, {
|
|
653
|
+
language: 'special'
|
|
654
|
+
}]
|
|
655
|
+
})), /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
|
|
656
|
+
open: warning.open,
|
|
657
|
+
title: "Warning",
|
|
658
|
+
text: warning.text,
|
|
659
|
+
onClose: warning.onClose,
|
|
660
|
+
onConfirm: warning.onConfirm
|
|
661
|
+
}));
|
|
598
662
|
}
|
|
599
663
|
}]);
|
|
600
664
|
return Main;
|
|
@@ -611,9 +675,13 @@ exports.Main = Main;
|
|
|
611
675
|
imageSupport: _propTypes["default"].shape({
|
|
612
676
|
add: _propTypes["default"].func.isRequired,
|
|
613
677
|
"delete": _propTypes["default"].func.isRequired
|
|
678
|
+
}),
|
|
679
|
+
uploadSoundSupport: _propTypes["default"].shape({
|
|
680
|
+
add: _propTypes["default"].func.isRequired,
|
|
681
|
+
"delete": _propTypes["default"].func.isRequired
|
|
614
682
|
})
|
|
615
683
|
});
|
|
616
684
|
var Styled = (0, _styles.withStyles)(styles)(Main);
|
|
617
685
|
var _default = Styled;
|
|
618
686
|
exports["default"] = _default;
|
|
619
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJ0b2dnbGUiLCJzZXR0aW5ncyIsIlBhbmVsIiwiSW5mb0RpYWxvZyIsIm9wZW4iLCJvbkNhbmNlbCIsIm9uT2siLCJ0aXRsZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwic3R5bGVzIiwidGhlbWUiLCJwcm9tcHRIb2xkZXIiLCJ3aWR0aCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsIm1hcmdpbkJvdHRvbSIsInByb21wdCIsInBhZGRpbmdUb3AiLCJtYXJrdXAiLCJtaW5IZWlnaHQiLCJkZXNpZ24iLCJjaG9pY2VDb25maWd1cmF0aW9uIiwic3dpdGNoRWxlbWVudCIsImp1c3RpZnlDb250ZW50IiwibWFyZ2luIiwiYWRkQnV0dG9uIiwidGV4dCIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJjb2xvciIsInJhdGlvbmFsZUxhYmVsIiwiZGlzcGxheSIsIndoaXRlU3BhY2UiLCJyYXRpb25hbGVDaG9pY2VzIiwibWFyZ2luVG9wIiwicGFuZWxEZXRhaWxzIiwiY3JlYXRlRWxlbWVudEZyb21IVE1MIiwiaHRtbFN0cmluZyIsImRpdiIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsInRyaW0iLCJwcmVwYXJlVmFsIiwiaHRtbCIsInRtcCIsInZhbHVlIiwidGV4dENvbnRlbnQiLCJpbm5lclRleHQiLCJNYWluIiwiZGlhbG9nIiwibmV3VmFsIiwicHJvcHMiLCJvbk1vZGVsQ2hhbmdlZCIsIm1vZGVsIiwib25Nb2RlbENoYW5nZSIsInJhdGlvbmFsZSIsImluZGV4IiwiY2hvaWNlIiwiaW5kZXhPZkNob2ljZSIsImNob2ljZXMiLCJmaW5kSW5kZXgiLCJlbGVtIiwibGFiZWwiLCJzcGxpY2UiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwic2xhdGVNYXJrdXAiLCJjYWxsYmFjayIsInNldFN0YXRlIiwibWVzc2FnZSIsInJlc3BBcmVhQ2hvaWNlcyIsInN0YXRlIiwiZG9tTWFya3VwIiwiYWxsUmVzcEFyZWFzIiwicXVlcnlTZWxlY3RvckFsbCIsImFsbENob2ljZXMiLCJmb3JFYWNoIiwiZWwiLCJkYXRhc2V0IiwiZXhpc3RpbmdSZXNwQXJlYUNob2ljZXMiLCJvYmoiLCJrZXkiLCJuZXdSZXNwQXJlYUNob2ljZXMiLCJzaG91bGRXYXJuIiwibmV3Q2hvaWNlcyIsImxlbmd0aCIsImZpbmQiLCJjIiwiY29ycmVjdCIsInJlbW92ZSIsInIiLCJtYXAiLCJwYXJzZUludCIsImZpbHRlciIsInZhbCIsImlzTmFOIiwicHVzaCIsInJlc3BJbmRleCIsInNlbGVjdGVkSW5kZXgiLCJjaCIsIm5Qcm9wcyIsIm5ld1N0YXRlIiwiZG9tTm9kZSIsIlJlYWN0RE9NIiwiZmluZERPTU5vZGUiLCJjbGFzc2VzIiwiY29uZmlndXJhdGlvbiIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJpbWFnZVN1cHBvcnQiLCJwYXJ0aWFsU2NvcmluZyIsImxvY2tDaG9pY2VPcmRlciIsImNob2ljZVJhdGlvbmFsZSIsInNwZWxsQ2hlY2siLCJyYXRpb25hbGVFbmFibGVkIiwiY2hvaWNlUmF0aW9uYWxlRW5hYmxlZCIsInByb21wdEVuYWJsZWQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInNwZWxsQ2hlY2tFbmFibGVkIiwicmVuZGVyQ2hvaWNlUmF0aW9uYWxlIiwiT2JqZWN0Iiwia2V5cyIsIl9faHRtbCIsIm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCIsInRvb2xiYXJPcHRzIiwidG9vbGJhckVkaXRvclBvc2l0aW9uIiwicG9zaXRpb24iLCJTZXR0aW5ncyIsIlByb3BlcnRpZXMiLCJvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkIiwib25Qcm9tcHRDaGFuZ2VkIiwib25SYXRpb25hbGVDaGFuZ2VkIiwiQUxMX1BMVUdJTlMiLCJ0eXBlIiwib3B0aW9ucyIsImR1cGxpY2F0ZXMiLCJyZXNwQXJlYVRvb2xiYXIiLCJub2RlIiwib25Ub29sYmFyRG9uZSIsIm9uQWRkQ2hvaWNlIiwib25DaGVjayIsIm9uUmVtb3ZlQ2hvaWNlIiwiZGF0YSIsImdldCIsIm9uU2VsZWN0Q2hvaWNlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJkaXNhYmxlU2lkZVBhbmVsIiwic2hhcGUiLCJhZGQiLCJTdHlsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxNQUFSLEdBQTBCQyxrQkFBMUIsQ0FBUUQsTUFBUjtBQUFBLElBQWdCRSxLQUFoQixHQUEwQkQsa0JBQTFCLENBQWdCQyxLQUFoQjs7QUFFQSxJQUFNQyxVQUFVLEdBQUcsU0FBYkEsVUFBYTtBQUFBLE1BQUdDLElBQUgsUUFBR0EsSUFBSDtBQUFBLE1BQVNDLFFBQVQsUUFBU0EsUUFBVDtBQUFBLE1BQW1CQyxJQUFuQixRQUFtQkEsSUFBbkI7QUFBQSxNQUF5QkMsS0FBekIsUUFBeUJBLEtBQXpCO0FBQUEsc0JBQ2pCLGdDQUFDLGtCQUFEO0FBQVEsSUFBQSxJQUFJLEVBQUVIO0FBQWQsa0JBQ0UsZ0NBQUMsdUJBQUQsUUFBY0csS0FBZCxDQURGLGVBRUUsZ0NBQUMseUJBQUQsUUFDR0QsSUFBSSxpQkFDSCxnQ0FBQyxrQkFBRDtBQUFRLElBQUEsT0FBTyxFQUFFQSxJQUFqQjtBQUF1QixJQUFBLEtBQUssRUFBQztBQUE3QixVQUZKLEVBTUdELFFBQVEsaUJBQ1AsZ0NBQUMsa0JBQUQ7QUFBUSxJQUFBLE9BQU8sRUFBRUEsUUFBakI7QUFBMkIsSUFBQSxLQUFLLEVBQUM7QUFBakMsY0FQSixDQUZGLENBRGlCO0FBQUEsQ0FBbkI7O0FBa0JBRixVQUFVLENBQUNLLFNBQVgsR0FBdUI7QUFDckJKLEVBQUFBLElBQUksRUFBRUssc0JBQVVDLElBREs7QUFFckJMLEVBQUFBLFFBQVEsRUFBRUksc0JBQVVFLElBRkM7QUFHckJMLEVBQUFBLElBQUksRUFBRUcsc0JBQVVFLElBSEs7QUFJckJKLEVBQUFBLEtBQUssRUFBRUUsc0JBQVVHO0FBSkksQ0FBdkI7O0FBT0EsSUFBTUMsTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQUMsS0FBSztBQUFBLFNBQUs7QUFDdkJDLElBQUFBLFlBQVksRUFBRTtBQUNaQyxNQUFBQSxLQUFLLEVBQUUsTUFESztBQUVaQyxNQUFBQSxhQUFhLEVBQUVILEtBQUssQ0FBQ0ksT0FBTixDQUFjQyxJQUFkLEdBQXFCLENBRnhCO0FBR1pDLE1BQUFBLFlBQVksRUFBRU4sS0FBSyxDQUFDSSxPQUFOLENBQWNDLElBQWQsR0FBcUI7QUFIdkIsS0FEUztBQU12QkUsSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLFVBQVUsRUFBRVIsS0FBSyxDQUFDSSxPQUFOLENBQWNDLElBQWQsR0FBcUIsQ0FEM0I7QUFFTkgsTUFBQUEsS0FBSyxFQUFFO0FBRkQsS0FOZTtBQVV2Qk8sSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLFNBQVMsRUFBRSxPQURMO0FBRU5GLE1BQUFBLFVBQVUsRUFBRVIsS0FBSyxDQUFDSSxPQUFOLENBQWNDLElBQWQsR0FBcUIsQ0FGM0I7QUFHTkgsTUFBQUEsS0FBSyxFQUFFLE1BSEQ7QUFJTixzQ0FBZ0M7QUFDOUJRLFFBQUFBLFNBQVMsRUFBRTtBQURtQjtBQUoxQixLQVZlO0FBa0J2QkMsSUFBQUEsTUFBTSxFQUFFO0FBQ05ILE1BQUFBLFVBQVUsRUFBRVIsS0FBSyxDQUFDSSxPQUFOLENBQWNDLElBQWQsR0FBcUI7QUFEM0IsS0FsQmU7QUFxQnZCTyxJQUFBQSxtQkFBbUIsRUFBRTtBQUNuQkosTUFBQUEsVUFBVSxFQUFFUixLQUFLLENBQUNJLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQixDQURkO0FBRW5CRixNQUFBQSxhQUFhLEVBQUVILEtBQUssQ0FBQ0ksT0FBTixDQUFjQyxJQUFkLEdBQXFCO0FBRmpCLEtBckJFO0FBeUJ2QlEsSUFBQUEsYUFBYSxFQUFFO0FBQ2JDLE1BQUFBLGNBQWMsRUFBRSxlQURIO0FBRWJDLE1BQUFBLE1BQU0sRUFBRTtBQUZLLEtBekJRO0FBNkJ2QkMsSUFBQUEsU0FBUyxFQUFFO0FBQ1QsZUFBTztBQURFLEtBN0JZO0FBZ0N2QkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0pDLE1BQUFBLFVBQVUsRUFBRSxjQURSO0FBRUpDLE1BQUFBLFFBQVEsRUFBRSxNQUZOO0FBR0pDLE1BQUFBLFVBQVUsRUFBRSxNQUhSO0FBSUpDLE1BQUFBLEtBQUssRUFBRTtBQUpILEtBaENpQjtBQXNDdkJDLElBQUFBLGNBQWMsRUFBRTtBQUNkQyxNQUFBQSxPQUFPLEVBQUUsTUFESztBQUVkQyxNQUFBQSxVQUFVLEVBQUU7QUFGRSxLQXRDTztBQTBDdkJDLElBQUFBLGdCQUFnQixFQUFFO0FBQ2hCQyxNQUFBQSxTQUFTLEVBQUU7QUFESyxLQTFDSztBQTZDdkJDLElBQUFBLFlBQVksRUFBRTtBQUNiSixNQUFBQSxPQUFPLEVBQUU7QUFESTtBQTdDUyxHQUFMO0FBQUEsQ0FBcEI7O0FBa0RBLElBQU1LLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBd0IsQ0FBQUMsVUFBVSxFQUFJO0FBQzFDLE1BQU1DLEdBQUcsR0FBR0MsUUFBUSxDQUFDQyxhQUFULENBQXVCLEtBQXZCLENBQVo7QUFFQUYsRUFBQUEsR0FBRyxDQUFDRyxTQUFKLEdBQWdCLENBQUNKLFVBQVUsSUFBSSxFQUFmLEVBQW1CSyxJQUFuQixFQUFoQjtBQUVBLFNBQU9KLEdBQVA7QUFDRCxDQU5EOztBQVFBLElBQU1LLFVBQVUsR0FBRyxTQUFiQSxVQUFhLENBQUFDLElBQUksRUFBSTtBQUN6QixNQUFNQyxHQUFHLEdBQUdOLFFBQVEsQ0FBQ0MsYUFBVCxDQUF1QixLQUF2QixDQUFaO0FBRUFLLEVBQUFBLEdBQUcsQ0FBQ0osU0FBSixHQUFnQkcsSUFBaEI7QUFFQSxNQUFNRSxLQUFLLEdBQUdELEdBQUcsQ0FBQ0UsV0FBSixJQUFtQkYsR0FBRyxDQUFDRyxTQUF2QixJQUFvQyxFQUFsRDtBQUVBLFNBQU9GLEtBQUssQ0FBQ0osSUFBTixFQUFQO0FBQ0QsQ0FSRDs7SUFVYU8sSTs7Ozs7Ozs7Ozs7Ozs7OzhGQWNIO0FBQ05DLE1BQUFBLE1BQU0sRUFBRTtBQUNOcEQsUUFBQUEsSUFBSSxFQUFFO0FBREE7QUFERixLO3NHQW9DUSxVQUFBcUQsTUFBTSxFQUFJO0FBQ3hCLFlBQUtDLEtBQUwsQ0FBV0MsY0FBWCxpQ0FDSyxNQUFLRCxLQUFMLENBQVdFLEtBRGhCLEdBRUtILE1BRkw7QUFJRCxLO3dHQUVpQixVQUFBcEMsTUFBTSxFQUFJO0FBQzFCLFlBQUt3QyxhQUFMLENBQW1CO0FBQUV4QyxRQUFBQSxNQUFNLEVBQU5BO0FBQUYsT0FBbkI7QUFDRCxLOzJHQUVvQixVQUFBeUMsU0FBUyxFQUFJO0FBQ2hDLFlBQUtELGFBQUwsQ0FBbUI7QUFBRUMsUUFBQUEsU0FBUyxFQUFUQTtBQUFGLE9BQW5CO0FBQ0QsSztpSEFFMEIsVUFBQ0MsS0FBRCxFQUFRQyxNQUFSLEVBQW1CO0FBQzVDLFVBQVFKLEtBQVIsR0FBa0IsTUFBS0YsS0FBdkIsQ0FBUUUsS0FBUjtBQUNBLFVBQU1LLGFBQWEsR0FBR0wsS0FBSyxDQUFDTSxPQUFOLElBQWlCTixLQUFLLENBQUNNLE9BQU4sQ0FBY0gsS0FBZCxDQUFqQixJQUF5Q0gsS0FBSyxDQUFDTSxPQUFOLENBQWNILEtBQWQsRUFDNURJLFNBRDRELENBQ2xELFVBQUFDLElBQUk7QUFBQSxlQUFJQSxJQUFJLENBQUNDLEtBQUwsS0FBZUwsTUFBTSxDQUFDSyxLQUF0QixJQUErQkQsSUFBSSxDQUFDaEIsS0FBTCxLQUFlWSxNQUFNLENBQUNaLEtBQXpEO0FBQUEsT0FEOEMsQ0FBL0Q7QUFHQVEsTUFBQUEsS0FBSyxDQUFDTSxPQUFOLENBQWNILEtBQWQsS0FBd0JILEtBQUssQ0FBQ00sT0FBTixDQUFjSCxLQUFkLEVBQXFCTyxNQUFyQixDQUE0QkwsYUFBNUIsRUFBMkMsQ0FBM0MsRUFBOENELE1BQTlDLENBQXhCOztBQUVBLFlBQUtILGFBQUwsQ0FBbUJELEtBQW5CO0FBQ0QsSztxSEFFOEIsVUFBQVcsbUJBQW1CLEVBQUk7QUFDcEQsWUFBS1YsYUFBTCxDQUFtQjtBQUFFVSxRQUFBQSxtQkFBbUIsRUFBbkJBO0FBQUYsT0FBbkI7QUFDRCxLO3dHQUVpQixVQUFBQyxXQUFXLEVBQUk7QUFDL0IsWUFBS1gsYUFBTCxDQUFtQjtBQUFFVyxRQUFBQSxXQUFXLEVBQVhBO0FBQUYsT0FBbkI7QUFDRCxLO2dHQUVTLFVBQUFDLFFBQVEsRUFBSTtBQUNwQixZQUFLQyxRQUFMLENBQWM7QUFDWmxCLFFBQUFBLE1BQU0sRUFBRTtBQUNOcEQsVUFBQUEsSUFBSSxFQUFFLElBREE7QUFFTnVFLFVBQUFBLE9BQU8sRUFDTCxrRkFISTtBQUlOckUsVUFBQUEsSUFBSSxFQUFFLGdCQUFNO0FBQ1Ysa0JBQUtvRSxRQUFMLENBQ0U7QUFDRWxCLGNBQUFBLE1BQU0sRUFBRTtBQUNOcEQsZ0JBQUFBLElBQUksRUFBRTtBQURBO0FBRFYsYUFERixFQU1FcUUsUUFORjtBQVFELFdBYks7QUFjTnBFLFVBQUFBLFFBQVEsRUFBRTtBQUFBLG1CQUNSLE1BQUtxRSxRQUFMLENBQWM7QUFDWmxCLGNBQUFBLE1BQU0sRUFBRTtBQUNOcEQsZ0JBQUFBLElBQUksRUFBRTtBQURBO0FBREksYUFBZCxDQURRO0FBQUE7QUFkSjtBQURJLE9BQWQ7QUF1QkQsSztpR0FFVSxVQUFBbUIsTUFBTSxFQUFJO0FBQ25CLFVBQVFxRCxlQUFSLEdBQTRCLE1BQUtDLEtBQWpDLENBQVFELGVBQVI7QUFDQSxVQUFNRSxTQUFTLEdBQUdwQyxxQkFBcUIsQ0FBQ25CLE1BQUQsQ0FBdkM7QUFDQSxVQUFNd0QsWUFBWSxHQUFHRCxTQUFTLENBQUNFLGdCQUFWLENBQ25CLCtCQURtQixDQUFyQjtBQUlBLFVBQU1DLFVBQVUsR0FBRyxFQUFuQjtBQUVBRixNQUFBQSxZQUFZLENBQUNHLE9BQWIsQ0FBcUIsVUFBQUMsRUFBRSxFQUFJO0FBQ3pCRixRQUFBQSxVQUFVLENBQUNFLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXckIsS0FBWixDQUFWLEdBQStCb0IsRUFBRSxDQUFDQyxPQUFILENBQVdoQyxLQUFYLElBQW9CLEVBQW5EO0FBQ0QsT0FGRDtBQUlBLFVBQU1pQyx1QkFBdUIsR0FBRyx3QkFDOUJULGVBRDhCLEVBRTlCLFVBQUNVLEdBQUQsRUFBTXBCLE9BQU4sRUFBZXFCLEdBQWYsRUFBdUI7QUFDckIsWUFBSSxDQUFDLDZCQUFZTixVQUFVLENBQUNNLEdBQUQsQ0FBdEIsQ0FBTCxFQUFtQztBQUNqQ0QsVUFBQUEsR0FBRyxDQUFDQyxHQUFELENBQUgsR0FBV1gsZUFBZSxDQUFDVyxHQUFELENBQTFCO0FBQ0Q7O0FBRUQsZUFBT0QsR0FBUDtBQUNELE9BUjZCLEVBUzlCLEVBVDhCLENBQWhDO0FBWUEsVUFBTUUsa0JBQWtCLEdBQUcsRUFBM0I7QUFDQSxVQUFJQyxVQUFVLEdBQUcsS0FBakI7QUFFQVYsTUFBQUEsWUFBWSxDQUFDRyxPQUFiLENBQXFCLFVBQUNDLEVBQUQsRUFBS3BCLEtBQUwsRUFBZTtBQUNsQyxZQUFNMkIsVUFBVSxHQUFHTCx1QkFBdUIsQ0FBQ0YsRUFBRSxDQUFDQyxPQUFILENBQVdyQixLQUFaLENBQXZCLElBQTZDLEVBQWhFOztBQUVBLFlBQUkyQixVQUFVLENBQUNDLE1BQVgsR0FBb0IsQ0FBcEIsSUFBeUIsQ0FBQ0QsVUFBVSxDQUFDRSxJQUFYLENBQWdCLFVBQUFDLENBQUM7QUFBQSxpQkFBSUEsQ0FBQyxDQUFDQyxPQUFOO0FBQUEsU0FBakIsQ0FBOUIsRUFBK0Q7QUFDN0RYLFVBQUFBLEVBQUUsQ0FBQ1ksTUFBSDtBQUNBTixVQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNELFNBSEQsTUFHTztBQUNMRCxVQUFBQSxrQkFBa0IsQ0FBQ3pCLEtBQUQsQ0FBbEIsR0FDRXNCLHVCQUF1QixDQUFDRixFQUFFLENBQUNDLE9BQUgsQ0FBV3JCLEtBQVosQ0FBdkIsSUFBNkMsRUFEL0M7QUFFQW9CLFVBQUFBLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXckIsS0FBWCxHQUFtQkEsS0FBbkI7QUFDRDtBQUNGLE9BWEQ7O0FBYUEsVUFBSTBCLFVBQUosRUFBZ0I7QUFDZCxjQUFLZixRQUFMLENBQWM7QUFDWmxCLFVBQUFBLE1BQU0sRUFBRTtBQUNOcEQsWUFBQUEsSUFBSSxFQUFFLElBREE7QUFFTnVFLFlBQUFBLE9BQU8sRUFDTCxrRkFISTtBQUlOckUsWUFBQUEsSUFBSSxFQUFFLGdCQUFNO0FBQ1Ysb0JBQUtvRSxRQUFMLENBQ0U7QUFDRWxCLGdCQUFBQSxNQUFNLEVBQUU7QUFDTnBELGtCQUFBQSxJQUFJLEVBQUU7QUFEQTtBQURWLGVBREYsRUFNRTtBQUFBLHVCQUNFLE1BQUt5RCxhQUFMLENBQW1CO0FBQ2pCSyxrQkFBQUEsT0FBTyxFQUFFLDJCQUFVc0Isa0JBQVYsQ0FEUTtBQUVqQmhCLGtCQUFBQSxXQUFXLEVBQUVNLFNBQVMsQ0FBQy9CO0FBRk4saUJBQW5CLENBREY7QUFBQSxlQU5GO0FBWUQsYUFqQks7QUFrQk4xQyxZQUFBQSxRQUFRLEVBQUU7QUFBQSxxQkFDUixNQUFLcUUsUUFBTCxDQUFjO0FBQ1psQixnQkFBQUEsTUFBTSxFQUFFO0FBQ05wRCxrQkFBQUEsSUFBSSxFQUFFO0FBREE7QUFESSxlQUFkLENBRFE7QUFBQTtBQWxCSjtBQURJLFNBQWQ7QUEyQkQsT0E1QkQsTUE0Qk87QUFDTCxjQUFLeUQsYUFBTCxDQUFtQjtBQUNqQkssVUFBQUEsT0FBTyxFQUFFLDJCQUFVc0Isa0JBQVYsQ0FEUTtBQUVqQmhCLFVBQUFBLFdBQVcsRUFBRU0sU0FBUyxDQUFDL0I7QUFGTixTQUFuQjtBQUlEO0FBQ0YsSztvR0FFYSxVQUFDZ0IsS0FBRCxFQUFRTSxLQUFSLEVBQWtCO0FBQzlCLFVBQVFPLGVBQVIsR0FBNEIsTUFBS0MsS0FBakMsQ0FBUUQsZUFBUjs7QUFFQSxVQUFJLENBQUNBLGVBQWUsQ0FBQ2IsS0FBRCxDQUFwQixFQUE2QjtBQUMzQmEsUUFBQUEsZUFBZSxDQUFDYixLQUFELENBQWYsR0FBeUIsRUFBekI7QUFDRDs7QUFFRCxVQUNFLENBQUNhLGVBQWUsQ0FBQ2IsS0FBRCxDQUFmLElBQTBCLEVBQTNCLEVBQStCNkIsSUFBL0IsQ0FDRSxVQUFBSSxDQUFDO0FBQUEsZUFBSS9DLFVBQVUsQ0FBQytDLENBQUMsQ0FBQzNCLEtBQUgsQ0FBVixLQUF3QnBCLFVBQVUsQ0FBQ29CLEtBQUQsQ0FBdEM7QUFBQSxPQURILENBREYsRUFJRTtBQUNBLGNBQUtLLFFBQUwsQ0FBYztBQUNabEIsVUFBQUEsTUFBTSxFQUFFO0FBQ05wRCxZQUFBQSxJQUFJLEVBQUUsSUFEQTtBQUVOdUUsWUFBQUEsT0FBTyxFQUFFLG9DQUZIO0FBR05yRSxZQUFBQSxJQUFJLEVBQUUsZ0JBQU07QUFDVixvQkFBS29FLFFBQUwsQ0FBYztBQUNabEIsZ0JBQUFBLE1BQU0sRUFBRTtBQUNOcEQsa0JBQUFBLElBQUksRUFBRTtBQURBO0FBREksZUFBZDtBQUtEO0FBVEs7QUFESSxTQUFkOztBQWNBO0FBQ0Q7O0FBRUQsVUFBTWdELEtBQUssR0FBSXdCLGVBQWUsQ0FBQ2IsS0FBRCxDQUFmLElBQTBCLHFCQUFJYSxlQUFlLENBQUNiLEtBQUQsQ0FBZixDQUF1QmtDLEdBQXZCLENBQTJCLFVBQUFKLENBQUM7QUFBQSxlQUFJSyxRQUFRLENBQUNMLENBQUMsQ0FBQ3pDLEtBQUgsQ0FBWjtBQUFBLE9BQTVCLEVBQW1EK0MsTUFBbkQsQ0FBMEQsVUFBQUMsR0FBRztBQUFBLGVBQUksQ0FBQ0MsS0FBSyxDQUFDRCxHQUFELENBQVY7QUFBQSxPQUE3RCxDQUFKLENBQTNCLElBQWtILENBQWhJO0FBRUF4QixNQUFBQSxlQUFlLENBQUNiLEtBQUQsQ0FBZixDQUF1QnVDLElBQXZCLENBQTRCO0FBQzFCakMsUUFBQUEsS0FBSyxFQUFMQSxLQUQwQjtBQUUxQmpCLFFBQUFBLEtBQUssWUFBS0EsS0FBSyxHQUFHLENBQWIsQ0FGcUI7QUFHMUIwQyxRQUFBQSxPQUFPLEVBQUU7QUFIaUIsT0FBNUI7O0FBTUEsWUFBS2pDLGFBQUwsQ0FBbUI7QUFBRUssUUFBQUEsT0FBTyxFQUFFLDJCQUFVVSxlQUFWO0FBQVgsT0FBbkI7QUFDRCxLO3VHQUVnQixVQUFDMkIsU0FBRCxFQUFZeEMsS0FBWixFQUFzQjtBQUNyQyxVQUFRYSxlQUFSLEdBQTRCLE1BQUtDLEtBQWpDLENBQVFELGVBQVI7QUFFQUEsTUFBQUEsZUFBZSxDQUFDMkIsU0FBRCxDQUFmLENBQTJCakMsTUFBM0IsQ0FBa0NQLEtBQWxDLEVBQXlDLENBQXpDOztBQUVBLFlBQUtGLGFBQUwsQ0FBbUI7QUFBRUssUUFBQUEsT0FBTyxFQUFFLDJCQUFVVSxlQUFWO0FBQVgsT0FBbkI7QUFDRCxLO3VHQUVnQixVQUFDMkIsU0FBRCxFQUFZQyxhQUFaLEVBQThCO0FBQzdDLFVBQVE1QixlQUFSLEdBQTRCLE1BQUtDLEtBQWpDLENBQVFELGVBQVI7QUFFQUEsTUFBQUEsZUFBZSxDQUFDMkIsU0FBRCxDQUFmLEdBQTZCM0IsZUFBZSxDQUFDMkIsU0FBRCxDQUFmLENBQTJCTixHQUEzQixDQUMzQixVQUFDUSxFQUFELEVBQUsxQyxLQUFMO0FBQUEsK0NBQXFCMEMsRUFBckI7QUFBeUJYLFVBQUFBLE9BQU8sRUFBRS9CLEtBQUssS0FBS3lDO0FBQTVDO0FBQUEsT0FEMkIsQ0FBN0I7O0FBSUEsWUFBSzNDLGFBQUwsQ0FBbUI7QUFBRUssUUFBQUEsT0FBTyxFQUFFLDJCQUFVVSxlQUFWO0FBQVgsT0FBbkI7QUFDRCxLOzs7Ozs7V0E5TkQsNkJBQW9CO0FBQ2xCLFVBQ1dWLE9BRFgsR0FFSSxLQUFLUixLQUZULENBQ0VFLEtBREYsQ0FDV00sT0FEWDtBQUlBLFdBQUtRLFFBQUwsQ0FBYztBQUFFRSxRQUFBQSxlQUFlLEVBQUUsMkJBQVVWLE9BQVY7QUFBbkIsT0FBZDtBQUNEOzs7V0FFRCwwQ0FBaUN3QyxNQUFqQyxFQUF5QztBQUN2QyxVQUFNQyxRQUFRLEdBQUcsRUFBakI7O0FBRUEsVUFDRSxDQUFDLHlCQUFRRCxNQUFNLENBQUM5QyxLQUFQLENBQWFNLE9BQXJCLEVBQThCLEtBQUtSLEtBQUwsQ0FBV0UsS0FBWCxDQUFpQk0sT0FBL0MsQ0FBRCxJQUNBLENBQUMseUJBQVF3QyxNQUFNLENBQUM5QyxLQUFQLENBQWFNLE9BQXJCLEVBQThCLEtBQUtXLEtBQUwsQ0FBV0QsZUFBekMsQ0FGSCxFQUdFO0FBQ0ErQixRQUFBQSxRQUFRLENBQUMvQixlQUFULEdBQTJCLDJCQUFVOEIsTUFBTSxDQUFDOUMsS0FBUCxDQUFhTSxPQUF2QixDQUEzQjtBQUNEOztBQUVELFVBQUksQ0FBQyx5QkFBUXlDLFFBQVIsQ0FBTCxFQUF3QjtBQUN0QixhQUFLakMsUUFBTCxDQUFjaUMsUUFBZDtBQUNEO0FBQ0Y7OztXQUVELDhCQUFxQjtBQUNuQjtBQUNBLFVBQU1DLE9BQU8sR0FBR0MscUJBQVNDLFdBQVQsQ0FBcUIsSUFBckIsQ0FBaEI7O0FBRUEscUNBQVdGLE9BQVg7QUFDRDs7O1dBb01ELGtCQUFTO0FBQUE7O0FBQ1AsVUFBUXBELE1BQVIsR0FBbUIsS0FBS3FCLEtBQXhCLENBQVFyQixNQUFSO0FBQ0Esd0JBTUksS0FBS0UsS0FOVDtBQUFBLFVBQ0VxRCxPQURGLGVBQ0VBLE9BREY7QUFBQSxVQUVFbkQsS0FGRixlQUVFQSxLQUZGO0FBQUEsVUFHRW9ELGFBSEYsZUFHRUEsYUFIRjtBQUFBLFVBSUVDLHNCQUpGLGVBSUVBLHNCQUpGO0FBQUEsVUFLRUMsWUFMRixlQUtFQSxZQUxGOztBQU9BLGtCQVFJRixhQUFhLElBQUksRUFSckI7QUFBQSwrQkFDRTNGLE1BREY7QUFBQSxVQUNFQSxNQURGLDZCQUNXLEVBRFg7QUFBQSx1Q0FFRThGLGNBRkY7QUFBQSxVQUVFQSxjQUZGLHFDQUVtQixFQUZuQjtBQUFBLHdDQUdFQyxlQUhGO0FBQUEsVUFHRUEsZUFIRixzQ0FHb0IsRUFIcEI7QUFBQSxrQ0FJRXRELFNBSkY7QUFBQSxVQUlFQSxTQUpGLGdDQUljLEVBSmQ7QUFBQSx3Q0FLRXVELGVBTEY7QUFBQSxVQUtFQSxlQUxGLHNDQUtvQixFQUxwQjtBQUFBLHdDQU1FOUMsbUJBTkY7QUFBQSxVQU1FQSxtQkFORixzQ0FNd0IsRUFOeEI7QUFBQSxtQ0FPRStDLFVBUEY7QUFBQSxVQU9FQSxVQVBGLGlDQU9lLEVBUGY7O0FBU0Esa0JBUUExRCxLQUFLLElBQUksRUFSVDtBQUFBLFVBQ0UyRCxnQkFERixTQUNFQSxnQkFERjtBQUFBLFVBRUVDLHNCQUZGLFNBRUVBLHNCQUZGO0FBQUEsVUFHRUMsYUFIRixTQUdFQSxhQUhGO0FBQUEsVUFJRUMsMEJBSkYsU0FJRUEsMEJBSkY7QUFBQSxVQUtFeEQsT0FMRixTQUtFQSxPQUxGO0FBQUEsVUFNRXlELGlCQU5GLFNBTUVBLGlCQU5GOztBQVVBLFVBQU1DLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBd0I7QUFBQSxlQUFNLENBQUNDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZNUQsT0FBWixLQUF3QixFQUF6QixFQUE2QitCLEdBQTdCLENBQWlDLFVBQUFWLEdBQUc7QUFBQSw4QkFDdEU7QUFBSyxZQUFBLEdBQUcsRUFBRUEsR0FBVjtBQUFlLFlBQUEsU0FBUyxFQUFFd0IsT0FBTyxDQUFDeEU7QUFBbEMsMEJBQ0UsZ0NBQUMsMEJBQUQscUJBQ0UsZ0NBQUMsaUNBQUQ7QUFBdUIsWUFBQSxVQUFVLGVBQUUsZ0NBQUMsc0JBQUQ7QUFBbkMsMEJBQ0UsZ0NBQUMsc0JBQUQ7QUFBWSxZQUFBLFNBQVMsRUFBRXdFLE9BQU8sQ0FBQ2hGO0FBQS9CLG9EQUNtQ21FLFFBQVEsQ0FBQ1gsR0FBRCxDQUFSLEdBQWdCLENBRG5ELEVBREYsQ0FERixlQU1FLGdDQUFDLGlDQUFEO0FBQXVCLFlBQUEsU0FBUyxFQUFFd0IsT0FBTyxDQUFDdEU7QUFBMUMsYUFDRyxDQUFDeUIsT0FBTyxDQUFDcUIsR0FBRCxDQUFQLElBQWdCLEVBQWpCLEVBQXFCVSxHQUFyQixDQUF5QixVQUFBakMsTUFBTTtBQUFBLGdDQUM5QixnQ0FBQyx3QkFBRDtBQUNFLGNBQUEsR0FBRyxFQUFFQSxNQUFNLENBQUNLLEtBRGQ7QUFFRSxjQUFBLEtBQUssZUFDSDtBQUNFLGdCQUFBLFNBQVMsRUFBRTBDLE9BQU8sQ0FBQzNFLGNBRHJCO0FBRUUsZ0JBQUEsdUJBQXVCLEVBQUU7QUFDdkIyRixrQkFBQUEsTUFBTSxZQUNEakUsU0FBUyxDQUFDTyxLQURULGtCQUNzQkwsTUFBTSxDQUFDSyxLQUQ3QixlQUN1Q0wsTUFBTSxDQUFDOEIsT0FBUCxHQUFpQixTQUFqQixHQUE2QixXQURwRTtBQURpQjtBQUYzQixnQkFISjtBQVdFLGNBQUEsU0FBUyxFQUFFaUIsT0FBTyxDQUFDaEc7QUFYckIsNEJBYUUsZ0NBQUMsd0JBQUQ7QUFDRSxjQUFBLFNBQVMsRUFBRWdHLE9BQU8sQ0FBQzFGLE1BRHJCO0FBRUUsY0FBQSxNQUFNLEVBQUUyQyxNQUFNLENBQUNGLFNBQVAsSUFBb0IsRUFGOUI7QUFHRSxjQUFBLFVBQVUsRUFBRTZELGlCQUhkO0FBSUUsY0FBQSxRQUFRLEVBQUUsa0JBQUE5QixDQUFDO0FBQUEsdUJBQ1QsTUFBSSxDQUFDbUMsd0JBQUwsQ0FBOEJ6QyxHQUE5QixrQ0FDS3ZCLE1BREw7QUFFRUYsa0JBQUFBLFNBQVMsRUFBRStCO0FBRmIsbUJBRFM7QUFBQSxlQUpiO0FBVUUsY0FBQSxZQUFZLEVBQUVxQjtBQVZoQixjQWJGLENBRDhCO0FBQUEsV0FBL0IsQ0FESCxDQU5GLENBREYsQ0FEc0U7QUFBQSxTQUFwQyxDQUFOO0FBQUEsT0FBOUI7O0FBMENBLFVBQU1lLFdBQVcsR0FBRyxFQUFwQjs7QUFFQSxjQUFRckUsS0FBSyxDQUFDc0UscUJBQWQ7QUFDRSxhQUFLLEtBQUw7QUFDRUQsVUFBQUEsV0FBVyxDQUFDRSxRQUFaLEdBQXVCLEtBQXZCO0FBQ0E7O0FBQ0Y7QUFDRUYsVUFBQUEsV0FBVyxDQUFDRSxRQUFaLEdBQXVCLFFBQXZCO0FBQ0E7QUFOSjs7QUFTQSwwQkFDRTtBQUFLLFFBQUEsU0FBUyxFQUFFcEIsT0FBTyxDQUFDdEY7QUFBeEIsc0JBQ0UsZ0NBQUMsZ0JBQUQsQ0FBUSxZQUFSO0FBQ0UsUUFBQSxRQUFRLGVBQ04sZ0NBQUMsS0FBRDtBQUNFLFVBQUEsS0FBSyxFQUFFbUMsS0FEVDtBQUVFLFVBQUEsYUFBYSxFQUFFb0QsYUFGakI7QUFHRSxVQUFBLGFBQWEsRUFBRSx1QkFBQXBELEtBQUs7QUFBQSxtQkFBSSxNQUFJLENBQUNDLGFBQUwsQ0FBbUJELEtBQW5CLENBQUo7QUFBQSxXQUh0QjtBQUlFLFVBQUEscUJBQXFCLEVBQUUsK0JBQUFvRCxhQUFhO0FBQUEsbUJBQ2xDQyxzQkFBc0IsQ0FBQ0QsYUFBRCxFQUFnQixJQUFoQixDQURZO0FBQUEsV0FKdEM7QUFPRSxVQUFBLE1BQU0sRUFBRTtBQUNOb0IsWUFBQUEsUUFBUSxFQUFFO0FBQ1JqQixjQUFBQSxjQUFjLEVBQ1pBLGNBQWMsQ0FBQ2xILFFBQWYsSUFBMkJELE1BQU0sQ0FBQ21ILGNBQWMsQ0FBQzlDLEtBQWhCLENBRjNCO0FBR1IrQyxjQUFBQSxlQUFlLEVBQ2JBLGVBQWUsQ0FBQ25ILFFBQWhCLElBQTRCRCxNQUFNLENBQUNvSCxlQUFlLENBQUMvQyxLQUFqQjtBQUo1QixhQURKO0FBT05nRSxZQUFBQSxVQUFVLEVBQUU7QUFDVlgsY0FBQUEsMEJBQTBCLEVBQ3hCbkQsbUJBQW1CLENBQUN0RSxRQUFwQixJQUNBRCxNQUFNLENBQUN1RSxtQkFBbUIsQ0FBQ0YsS0FBckIsQ0FIRTtBQUlWa0QsY0FBQUEsZ0JBQWdCLEVBQ2R6RCxTQUFTLENBQUM3RCxRQUFWLElBQXNCRCxNQUFNLENBQUM4RCxTQUFTLENBQUNPLEtBQVgsQ0FMcEI7QUFNVm1ELGNBQUFBLHNCQUFzQixFQUNwQkgsZUFBZSxDQUFDcEgsUUFBaEIsSUFBNEJELE1BQU0sQ0FBQ3FILGVBQWUsQ0FBQ2hELEtBQWpCLENBUDFCO0FBUVZvRCxjQUFBQSxhQUFhLEVBQUVwRyxNQUFNLENBQUNwQixRQUFQLElBQW1CRCxNQUFNLENBQUNxQixNQUFNLENBQUNnRCxLQUFSLENBUjlCO0FBU1ZzRCxjQUFBQSxpQkFBaUIsRUFDakJMLFVBQVUsQ0FBQ3JILFFBQVgsSUFBdUJELE1BQU0sQ0FBQ3NILFVBQVUsQ0FBQ2pELEtBQVo7QUFWbkI7QUFQTjtBQVBWO0FBRkosc0JBZ0NFLDZDQUNHcUQsMEJBQTBCLGlCQUN6QixnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsS0FBSyxFQUFFbkQsbUJBQW1CLENBQUNGLEtBRDdCO0FBRUUsUUFBQSxTQUFTLEVBQUUwQyxPQUFPLENBQUNoRztBQUZyQixzQkFJRSxnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsU0FBUyxFQUFFZ0csT0FBTyxDQUFDMUYsTUFEckI7QUFFRSxRQUFBLE1BQU0sRUFBRXVDLEtBQUssQ0FBQ1csbUJBQU4sSUFBNkIsRUFGdkM7QUFHRSxRQUFBLFFBQVEsRUFBRSxLQUFLK0QsNEJBSGpCO0FBSUUsUUFBQSxZQUFZLEVBQUVwQixZQUpoQjtBQUtFLFFBQUEsUUFBUSxFQUFFLEtBTFo7QUFNRSxRQUFBLFdBQVcsRUFBRWUsV0FOZjtBQU9FLFFBQUEsVUFBVSxFQUFFTjtBQVBkLFFBSkYsQ0FGSixFQWtCR0YsYUFBYSxpQkFDWixnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsS0FBSyxFQUFFcEcsTUFBTSxDQUFDZ0QsS0FEaEI7QUFFRSxRQUFBLFNBQVMsRUFBRTBDLE9BQU8sQ0FBQ2hHO0FBRnJCLHNCQUlFLGdDQUFDLHdCQUFEO0FBQ0UsUUFBQSxTQUFTLEVBQUVnRyxPQUFPLENBQUMxRixNQURyQjtBQUVFLFFBQUEsTUFBTSxFQUFFdUMsS0FBSyxDQUFDdkMsTUFGaEI7QUFHRSxRQUFBLFFBQVEsRUFBRSxLQUFLa0gsZUFIakI7QUFJRSxRQUFBLFlBQVksRUFBRXJCLFlBSmhCO0FBS0UsUUFBQSxRQUFRLEVBQUUsS0FMWjtBQU1FLFFBQUEsZ0JBQWdCLE1BTmxCO0FBT0UsUUFBQSxXQUFXLEVBQUVlLFdBUGY7QUFRRSxRQUFBLFVBQVUsRUFBRU47QUFSZCxRQUpGLENBbkJKLEVBb0NHSixnQkFBZ0IsaUJBQ2YsZ0NBQUMsd0JBQUQ7QUFDRSxRQUFBLEtBQUssRUFBRXpELFNBQVMsQ0FBQ08sS0FEbkI7QUFFRSxRQUFBLFNBQVMsRUFBRTBDLE9BQU8sQ0FBQ2hHO0FBRnJCLHNCQUlFLGdDQUFDLHdCQUFEO0FBQ0UsUUFBQSxTQUFTLEVBQUVnRyxPQUFPLENBQUMxRixNQURyQjtBQUVFLFFBQUEsTUFBTSxFQUFFdUMsS0FBSyxDQUFDRSxTQUFOLElBQW1CLEVBRjdCO0FBR0UsUUFBQSxRQUFRLEVBQUUsS0FBSzBFLGtCQUhqQjtBQUlFLFFBQUEsWUFBWSxFQUFFdEIsWUFKaEI7QUFLRSxRQUFBLFdBQVcsRUFBRWUsV0FMZjtBQU1FLFFBQUEsVUFBVSxFQUFFTjtBQU5kLFFBSkYsQ0FyQ0osZUFvREUsZ0NBQUMsc0JBQUQ7QUFBWSxRQUFBLFNBQVMsRUFBRVosT0FBTyxDQUFDaEY7QUFBL0IsMkRBcERGLGVBdURFLGdDQUFDLFVBQUQ7QUFDRSxRQUFBLElBQUksRUFBRXlCLE1BQU0sQ0FBQ3BELElBRGY7QUFFRSxRQUFBLEtBQUssRUFBRW9ELE1BQU0sQ0FBQ21CLE9BRmhCO0FBR0UsUUFBQSxRQUFRLEVBQUVuQixNQUFNLENBQUNuRCxRQUhuQjtBQUlFLFFBQUEsSUFBSSxFQUFFbUQsTUFBTSxDQUFDbEQ7QUFKZixRQXZERixlQTZERSxnQ0FBQyx3QkFBRDtBQUNFLFFBQUEsYUFBYSxFQUFFbUkseUJBRGpCO0FBRUUsUUFBQSxXQUFXLEVBQUU7QUFBRU4sVUFBQUEsUUFBUSxFQUFFO0FBQVosU0FGZjtBQUdFLFFBQUEsaUJBQWlCLEVBQUU7QUFDakJPLFVBQUFBLElBQUksRUFBRSxpQkFEVztBQUVqQkMsVUFBQUEsT0FBTyxFQUFFO0FBQ1BDLFlBQUFBLFVBQVUsRUFBRTtBQURMLFdBRlE7QUFLakJDLFVBQUFBLGVBQWUsRUFBRSx5QkFBQ0MsSUFBRCxFQUFPMUYsS0FBUCxFQUFjMkYsYUFBZCxFQUFnQztBQUMvQyxnQkFBUW5FLGVBQVIsR0FBNEIsTUFBSSxDQUFDQyxLQUFqQyxDQUFRRCxlQUFSO0FBRUEsbUJBQU87QUFBQSxrQ0FDTCxnQ0FBQyxpQ0FBRDtBQUNFLGdCQUFBLFdBQVcsRUFBRSxNQUFJLENBQUNvRSxXQURwQjtBQUVFLGdCQUFBLE9BQU8sRUFBRSxNQUFJLENBQUNDLE9BRmhCO0FBR0UsZ0JBQUEsY0FBYyxFQUFFLHdCQUFBbEYsS0FBSztBQUFBLHlCQUNuQixNQUFJLENBQUNtRixjQUFMLENBQW9CSixJQUFJLENBQUNLLElBQUwsQ0FBVUMsR0FBVixDQUFjLE9BQWQsQ0FBcEIsRUFBNENyRixLQUE1QyxDQURtQjtBQUFBLGlCQUh2QjtBQU1FLGdCQUFBLGNBQWMsRUFBRSx3QkFBQUEsS0FBSztBQUFBLHlCQUNuQixNQUFJLENBQUNzRixjQUFMLENBQW9CUCxJQUFJLENBQUNLLElBQUwsQ0FBVUMsR0FBVixDQUFjLE9BQWQsQ0FBcEIsRUFBNENyRixLQUE1QyxDQURtQjtBQUFBLGlCQU52QjtBQVNFLGdCQUFBLElBQUksRUFBRStFLElBVFI7QUFVRSxnQkFBQSxLQUFLLEVBQUUxRixLQVZUO0FBV0UsZ0JBQUEsYUFBYSxFQUFFMkYsYUFYakI7QUFZRSxnQkFBQSxPQUFPLEVBQUVuRSxlQUFlLENBQUNrRSxJQUFJLENBQUNLLElBQUwsQ0FBVUMsR0FBVixDQUFjLE9BQWQsQ0FBRCxDQVoxQjtBQWFFLGdCQUFBLFVBQVUsRUFBRXpCO0FBYmQsZ0JBREs7QUFBQSxhQUFQO0FBaUJEO0FBekJnQixTQUhyQjtBQThCRSxRQUFBLFVBQVUsRUFBRUEsaUJBOUJkO0FBK0JFLFFBQUEsU0FBUyxFQUFFWixPQUFPLENBQUN4RixNQS9CckI7QUFnQ0UsUUFBQSxNQUFNLEVBQUVxQyxLQUFLLENBQUNZLFdBQU4sSUFBcUIsRUFoQy9CO0FBaUNFLFFBQUEsUUFBUSxFQUFFLEtBQUs4RSxRQWpDakI7QUFrQ0UsUUFBQSxZQUFZLEVBQUVwQyxZQWxDaEI7QUFtQ0UsUUFBQSxNQUFNLEVBQUUsS0FBS3FDLE1BbkNmO0FBb0NFLFFBQUEsUUFBUSxFQUFFLEtBcENaO0FBcUNFLFFBQUEsY0FBYyxFQUFFO0FBckNsQixRQTdERixlQW9HRSwyQ0FwR0YsRUFxR0cvQixzQkFBc0IsSUFBSUkscUJBQXFCLEVBckdsRCxDQWhDRixDQURGLENBREY7QUE0SUQ7OztFQWpkdUI0QixrQkFBTUMsUzs7O2lDQUFuQmxHLEksZUFDUTtBQUNqQnlELEVBQUFBLGFBQWEsRUFBRXZHLHNCQUFVaUosTUFBVixDQUFpQkMsVUFEZjtBQUVqQi9GLEVBQUFBLEtBQUssRUFBRW5ELHNCQUFVaUosTUFBVixDQUFpQkMsVUFGUDtBQUdqQkMsRUFBQUEsZ0JBQWdCLEVBQUVuSixzQkFBVUMsSUFIWDtBQUlqQmlELEVBQUFBLGNBQWMsRUFBRWxELHNCQUFVRSxJQUFWLENBQWVnSixVQUpkO0FBS2pCMUMsRUFBQUEsc0JBQXNCLEVBQUV4RyxzQkFBVUUsSUFBVixDQUFlZ0osVUFMdEI7QUFNakI1QyxFQUFBQSxPQUFPLEVBQUV0RyxzQkFBVWlKLE1BQVYsQ0FBaUJDLFVBTlQ7QUFPakJ6QyxFQUFBQSxZQUFZLEVBQUV6RyxzQkFBVW9KLEtBQVYsQ0FBZ0I7QUFDNUJDLElBQUFBLEdBQUcsRUFBRXJKLHNCQUFVRSxJQUFWLENBQWVnSixVQURRO0FBRTVCLGNBQVFsSixzQkFBVUUsSUFBVixDQUFlZ0o7QUFGSyxHQUFoQjtBQVBHLEM7QUFtZHJCLElBQU1JLE1BQU0sR0FBRyx3QkFBV2xKLE1BQVgsRUFBbUIwQyxJQUFuQixDQUFmO2VBRWV3RyxNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBFZGl0YWJsZUh0bWwsIHsgQUxMX1BMVUdJTlMgfSBmcm9tICdAcGllLWxpYi9lZGl0YWJsZS1odG1sJztcbmltcG9ydCB7IElucHV0Q29udGFpbmVyLCBsYXlvdXQsIHNldHRpbmdzIH0gZnJvbSAnQHBpZS1saWIvY29uZmlnLXVpJztcbmltcG9ydCB7IHJlbmRlck1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGlzVW5kZWZpbmVkIGZyb20gJ2xvZGFzaC9pc1VuZGVmaW5lZCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5pbXBvcnQgcmVkdWNlIGZyb20gJ2xvZGFzaC9yZWR1Y2UnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0J1dHRvbic7XG5pbXBvcnQgRGlhbG9nIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZyc7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nVGl0bGUnO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRGlhbG9nQWN0aW9ucyc7XG5pbXBvcnQgVHlwb2dyYXBoeSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9UeXBvZ3JhcGh5JztcbmltcG9ydCBFeHBhbnNpb25QYW5lbCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9FeHBhbnNpb25QYW5lbCc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxTdW1tYXJ5IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsU3VtbWFyeSc7XG5pbXBvcnQgRXhwYW5zaW9uUGFuZWxEZXRhaWxzIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0V4cGFuc2lvblBhbmVsRGV0YWlscyc7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0V4cGFuZE1vcmUnO1xuaW1wb3J0IElubGluZURyb3Bkb3duVG9vbGJhciBmcm9tICcuL2lubGluZS1kcm9wZG93bi10b29sYmFyJztcbmltcG9ydCBtYXggZnJvbSAnbG9kYXNoL21heCc7XG5cbmNvbnN0IHsgdG9nZ2xlLCBQYW5lbCB9ID0gc2V0dGluZ3M7XG5cbmNvbnN0IEluZm9EaWFsb2cgPSAoeyBvcGVuLCBvbkNhbmNlbCwgb25PaywgdGl0bGUgfSkgPT4gKFxuICA8RGlhbG9nIG9wZW49e29wZW59PlxuICAgIDxEaWFsb2dUaXRsZT57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgIHtvbk9rICYmIChcbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbk9rfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBPS1xuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7b25DYW5jZWwgJiYgKFxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2FuY2VsfSBjb2xvcj1cInByaW1hcnlcIj5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgPC9EaWFsb2c+XG4pO1xuXG5JbmZvRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2FuY2VsOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25PazogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5jb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICBwcm9tcHRIb2xkZXI6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmdCb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyXG4gIH0sXG4gIHByb21wdDoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9LFxuICBtYXJrdXA6IHtcbiAgICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgICcmIFtkYXRhLXNsYXRlLWVkaXRvcj1cInRydWVcIl0nOiB7XG4gICAgICBtaW5IZWlnaHQ6ICcxMDBweCdcbiAgICB9XG4gIH0sXG4gIGRlc2lnbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDNcbiAgfSxcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMlxuICB9LFxuICBzd2l0Y2hFbGVtZW50OiB7XG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtYXJnaW46IDBcbiAgfSxcbiAgYWRkQnV0dG9uOiB7XG4gICAgZmxvYXQ6ICdyaWdodCdcbiAgfSxcbiAgdGV4dDoge1xuICAgIGZvbnRGYW1pbHk6ICdDZXJlYnJpIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgbGluZUhlaWdodDogJzE5cHgnLFxuICAgIGNvbG9yOiAnIzQ5NUI4RidcbiAgfSxcbiAgcmF0aW9uYWxlTGFiZWw6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2hpdGVTcGFjZTogJ2JyZWFrLXNwYWNlcydcbiAgfSxcbiAgcmF0aW9uYWxlQ2hvaWNlczoge1xuICAgIG1hcmdpblRvcDogJzE2cHgnXG4gIH0sXG4gIHBhbmVsRGV0YWlsczoge1xuICAgZGlzcGxheTogJ2Jsb2NrJ1xuICB9XG59KTtcblxuY29uc3QgY3JlYXRlRWxlbWVudEZyb21IVE1MID0gaHRtbFN0cmluZyA9PiB7XG4gIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gIGRpdi5pbm5lckhUTUwgPSAoaHRtbFN0cmluZyB8fCAnJykudHJpbSgpO1xuXG4gIHJldHVybiBkaXY7XG59O1xuXG5jb25zdCBwcmVwYXJlVmFsID0gaHRtbCA9PiB7XG4gIGNvbnN0IHRtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuXG4gIHRtcC5pbm5lckhUTUwgPSBodG1sO1xuXG4gIGNvbnN0IHZhbHVlID0gdG1wLnRleHRDb250ZW50IHx8IHRtcC5pbm5lclRleHQgfHwgJyc7XG5cbiAgcmV0dXJuIHZhbHVlLnRyaW0oKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBNYWluIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBjb25maWd1cmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBkaXNhYmxlU2lkZVBhbmVsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbk1vZGVsQ2hhbmdlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBpbWFnZVN1cHBvcnQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBhZGQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBkZWxldGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9KVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGRpYWxvZzoge1xuICAgICAgb3BlbjogZmFsc2VcbiAgICB9XG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgbW9kZWw6IHsgY2hvaWNlcyB9XG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgcmVzcEFyZWFDaG9pY2VzOiBjbG9uZURlZXAoY2hvaWNlcykgfSk7XG4gIH1cblxuICBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuUHJvcHMpIHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHt9O1xuXG4gICAgaWYgKFxuICAgICAgIWlzRXF1YWwoblByb3BzLm1vZGVsLmNob2ljZXMsIHRoaXMucHJvcHMubW9kZWwuY2hvaWNlcykgfHxcbiAgICAgICFpc0VxdWFsKG5Qcm9wcy5tb2RlbC5jaG9pY2VzLCB0aGlzLnN0YXRlLnJlc3BBcmVhQ2hvaWNlcylcbiAgICApIHtcbiAgICAgIG5ld1N0YXRlLnJlc3BBcmVhQ2hvaWNlcyA9IGNsb25lRGVlcChuUHJvcHMubW9kZWwuY2hvaWNlcyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0VtcHR5KG5ld1N0YXRlKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgY29uc3QgZG9tTm9kZSA9IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuXG4gICAgcmVuZGVyTWF0aChkb21Ob2RlKTtcbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2UgPSBuZXdWYWwgPT4ge1xuICAgIHRoaXMucHJvcHMub25Nb2RlbENoYW5nZWQoe1xuICAgICAgLi4udGhpcy5wcm9wcy5tb2RlbCxcbiAgICAgIC4uLm5ld1ZhbFxuICAgIH0pO1xuICB9O1xuXG4gIG9uUHJvbXB0Q2hhbmdlZCA9IHByb21wdCA9PiB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgcHJvbXB0IH0pO1xuICB9O1xuXG4gIG9uUmF0aW9uYWxlQ2hhbmdlZCA9IHJhdGlvbmFsZSA9PiB7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgcmF0aW9uYWxlIH0pO1xuICB9O1xuXG4gIG9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZCA9IChpbmRleCwgY2hvaWNlKSA9PiB7XG4gICAgY29uc3QgeyBtb2RlbCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpbmRleE9mQ2hvaWNlID0gbW9kZWwuY2hvaWNlcyAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XSAmJiBtb2RlbC5jaG9pY2VzW2luZGV4XVxuICAgICAgLmZpbmRJbmRleChlbGVtID0+IGVsZW0ubGFiZWwgPT09IGNob2ljZS5sYWJlbCAmJiBlbGVtLnZhbHVlID09PSBjaG9pY2UudmFsdWUpO1xuXG4gICAgbW9kZWwuY2hvaWNlc1tpbmRleF0gJiYgbW9kZWwuY2hvaWNlc1tpbmRleF0uc3BsaWNlKGluZGV4T2ZDaG9pY2UsIDEsIGNob2ljZSk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UobW9kZWwpO1xuICB9O1xuXG4gIG9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQgPSB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyB0ZWFjaGVySW5zdHJ1Y3Rpb25zIH0pO1xuICB9O1xuXG4gIG9uTWFya3VwQ2hhbmdlZCA9IHNsYXRlTWFya3VwID0+IHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoeyBzbGF0ZU1hcmt1cCB9KTtcbiAgfTtcblxuICBvbkNoZWNrID0gY2FsbGJhY2sgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZGlhbG9nOiB7XG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgJ1Jlc3BvbnNlIGFyZWFzIHdpdGggdW5kZXIgMiBvcHRpb25zIG9yIHdpdGggbm8gY29ycmVjdCBhbnN3ZXJzIHdpbGwgYmUgZGlzY2FyZGVkJyxcbiAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2FuY2VsOiAoKSA9PlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBvbkNoYW5nZSA9IG1hcmt1cCA9PiB7XG4gICAgY29uc3QgeyByZXNwQXJlYUNob2ljZXMgfSA9IHRoaXMuc3RhdGU7XG4gICAgY29uc3QgZG9tTWFya3VwID0gY3JlYXRlRWxlbWVudEZyb21IVE1MKG1hcmt1cCk7XG4gICAgY29uc3QgYWxsUmVzcEFyZWFzID0gZG9tTWFya3VwLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAnW2RhdGEtdHlwZT1cImlubGluZV9kcm9wZG93blwiXSdcbiAgICApO1xuXG4gICAgY29uc3QgYWxsQ2hvaWNlcyA9IHt9O1xuXG4gICAgYWxsUmVzcEFyZWFzLmZvckVhY2goZWwgPT4ge1xuICAgICAgYWxsQ2hvaWNlc1tlbC5kYXRhc2V0LmluZGV4XSA9IGVsLmRhdGFzZXQudmFsdWUgfHwgJyc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBleGlzdGluZ1Jlc3BBcmVhQ2hvaWNlcyA9IHJlZHVjZShcbiAgICAgIHJlc3BBcmVhQ2hvaWNlcyxcbiAgICAgIChvYmosIGNob2ljZXMsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGFsbENob2ljZXNba2V5XSkpIHtcbiAgICAgICAgICBvYmpba2V5XSA9IHJlc3BBcmVhQ2hvaWNlc1trZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBjb25zdCBuZXdSZXNwQXJlYUNob2ljZXMgPSB7fTtcbiAgICBsZXQgc2hvdWxkV2FybiA9IGZhbHNlO1xuXG4gICAgYWxsUmVzcEFyZWFzLmZvckVhY2goKGVsLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdIHx8IFtdO1xuXG4gICAgICBpZiAobmV3Q2hvaWNlcy5sZW5ndGggPCAyIHx8ICFuZXdDaG9pY2VzLmZpbmQoYyA9PiBjLmNvcnJlY3QpKSB7XG4gICAgICAgIGVsLnJlbW92ZSgpO1xuICAgICAgICBzaG91bGRXYXJuID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1Jlc3BBcmVhQ2hvaWNlc1tpbmRleF0gPVxuICAgICAgICAgIGV4aXN0aW5nUmVzcEFyZWFDaG9pY2VzW2VsLmRhdGFzZXQuaW5kZXhdIHx8IFtdO1xuICAgICAgICBlbC5kYXRhc2V0LmluZGV4ID0gaW5kZXg7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2hvdWxkV2Fybikge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICdSZXNwb25zZSBhcmVhcyB3aXRoIHVuZGVyIDIgb3B0aW9ucyBvciB3aXRoIG5vIGNvcnJlY3QgYW5zd2VycyB3aWxsIGJlIGRpc2NhcmRlZCcsXG4gICAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgICAgb3BlbjogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICAgIGNob2ljZXM6IGNsb25lRGVlcChuZXdSZXNwQXJlYUNob2ljZXMpLFxuICAgICAgICAgICAgICAgICAgc2xhdGVNYXJrdXA6IGRvbU1hcmt1cC5pbm5lckhUTUxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PlxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2Uoe1xuICAgICAgICBjaG9pY2VzOiBjbG9uZURlZXAobmV3UmVzcEFyZWFDaG9pY2VzKSxcbiAgICAgICAgc2xhdGVNYXJrdXA6IGRvbU1hcmt1cC5pbm5lckhUTUxcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBvbkFkZENob2ljZSA9IChpbmRleCwgbGFiZWwpID0+IHtcbiAgICBjb25zdCB7IHJlc3BBcmVhQ2hvaWNlcyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmICghcmVzcEFyZWFDaG9pY2VzW2luZGV4XSkge1xuICAgICAgcmVzcEFyZWFDaG9pY2VzW2luZGV4XSA9IFtdO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIChyZXNwQXJlYUNob2ljZXNbaW5kZXhdIHx8IFtdKS5maW5kKFxuICAgICAgICByID0+IHByZXBhcmVWYWwoci5sYWJlbCkgPT09IHByZXBhcmVWYWwobGFiZWwpXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZGlhbG9nOiB7XG4gICAgICAgICAgb3BlbjogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiAnRHVwbGljYXRlIGFuc3dlcnMgYXJlIG5vdCBhbGxvd2VkLicsXG4gICAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IChyZXNwQXJlYUNob2ljZXNbaW5kZXhdICYmIG1heChyZXNwQXJlYUNob2ljZXNbaW5kZXhdLm1hcChjID0+IHBhcnNlSW50KGMudmFsdWUpKS5maWx0ZXIodmFsID0+ICFpc05hTih2YWwpKSkpIHx8IDA7XG5cbiAgICByZXNwQXJlYUNob2ljZXNbaW5kZXhdLnB1c2goe1xuICAgICAgbGFiZWwsXG4gICAgICB2YWx1ZTogYCR7dmFsdWUgKyAxfWAsXG4gICAgICBjb3JyZWN0OiBmYWxzZVxuICAgIH0pO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgb25SZW1vdmVDaG9pY2UgPSAocmVzcEluZGV4LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmVzcEFyZWFDaG9pY2VzW3Jlc3BJbmRleF0uc3BsaWNlKGluZGV4LCAxKTtcblxuICAgIHRoaXMub25Nb2RlbENoYW5nZSh7IGNob2ljZXM6IGNsb25lRGVlcChyZXNwQXJlYUNob2ljZXMpIH0pO1xuICB9O1xuXG4gIG9uU2VsZWN0Q2hvaWNlID0gKHJlc3BJbmRleCwgc2VsZWN0ZWRJbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmVzcEFyZWFDaG9pY2VzW3Jlc3BJbmRleF0gPSByZXNwQXJlYUNob2ljZXNbcmVzcEluZGV4XS5tYXAoXG4gICAgICAoY2gsIGluZGV4KSA9PiAoeyAuLi5jaCwgY29ycmVjdDogaW5kZXggPT09IHNlbGVjdGVkSW5kZXggfSlcbiAgICApO1xuXG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHsgY2hvaWNlczogY2xvbmVEZWVwKHJlc3BBcmVhQ2hvaWNlcykgfSk7XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZGlhbG9nIH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHtcbiAgICAgIGNsYXNzZXMsXG4gICAgICBtb2RlbCxcbiAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkLFxuICAgICAgaW1hZ2VTdXBwb3J0XG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgcHJvbXB0ID0ge30sXG4gICAgICBwYXJ0aWFsU2NvcmluZyA9IHt9LFxuICAgICAgbG9ja0Nob2ljZU9yZGVyID0ge30sXG4gICAgICByYXRpb25hbGUgPSB7fSxcbiAgICAgIGNob2ljZVJhdGlvbmFsZSA9IHt9LFxuICAgICAgdGVhY2hlckluc3RydWN0aW9ucyA9IHt9LFxuICAgICAgc3BlbGxDaGVjayA9IHt9LFxuICAgIH0gPSBjb25maWd1cmF0aW9uIHx8IHt9O1xuICAgIGNvbnN0IHtcbiAgICAgIHJhdGlvbmFsZUVuYWJsZWQsXG4gICAgICBjaG9pY2VSYXRpb25hbGVFbmFibGVkLFxuICAgICAgcHJvbXB0RW5hYmxlZCxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIHNwZWxsQ2hlY2tFbmFibGVkXG4gICAgfSA9XG4gICAgbW9kZWwgfHwge307XG5cbiAgICBjb25zdCByZW5kZXJDaG9pY2VSYXRpb25hbGUgPSAoKSA9PiAoT2JqZWN0LmtleXMoY2hvaWNlcykgfHwgW10pLm1hcChrZXkgPT5cbiAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT17Y2xhc3Nlcy5yYXRpb25hbGVDaG9pY2VzfT5cbiAgICAgICAgPEV4cGFuc2lvblBhbmVsPlxuICAgICAgICAgIDxFeHBhbnNpb25QYW5lbFN1bW1hcnkgZXhwYW5kSWNvbj17PEV4cGFuZE1vcmVJY29uLz59PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRleHR9PlxuICAgICAgICAgICAgICB7YFJhdGlvbmFsZSBmb3IgcmVzcG9uc2UgYXJlYSAjJHtwYXJzZUludChrZXkpICsgMX1gfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvRXhwYW5zaW9uUGFuZWxTdW1tYXJ5PlxuICAgICAgICAgIDxFeHBhbnNpb25QYW5lbERldGFpbHMgY2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsRGV0YWlsc30+XG4gICAgICAgICAgICB7KGNob2ljZXNba2V5XSB8fCBbXSkubWFwKGNob2ljZSA9PlxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2Nob2ljZS5sYWJlbH1cbiAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucmF0aW9uYWxlTGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgICAgICAgICAgX19odG1sOlxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7cmF0aW9uYWxlLmxhYmVsfSBmb3IgJHtjaG9pY2UubGFiZWx9ICgke2Nob2ljZS5jb3JyZWN0ID8gJ2NvcnJlY3QnIDogJ2luY29ycmVjdCd9KWBcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHRIb2xkZXJ9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0fVxuICAgICAgICAgICAgICAgICAgbWFya3VwPXtjaG9pY2UucmF0aW9uYWxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17YyA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hvaWNlUmF0aW9uYWxlQ2hhbmdlZChrZXksIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgICAgICAgICAgICAgICAgcmF0aW9uYWxlOiBjXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0V4cGFuc2lvblBhbmVsRGV0YWlscz5cbiAgICAgICAgPC9FeHBhbnNpb25QYW5lbD5cbiAgICAgIDwvZGl2PlxuICAgIClcblxuICAgIGNvbnN0IHRvb2xiYXJPcHRzID0ge307XG5cbiAgICBzd2l0Y2ggKG1vZGVsLnRvb2xiYXJFZGl0b3JQb3NpdGlvbikge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgdG9vbGJhck9wdHMucG9zaXRpb24gPSAndG9wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0b29sYmFyT3B0cy5wb3NpdGlvbiA9ICdib3R0b20nO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZGVzaWdufT5cbiAgICAgICAgPGxheW91dC5Db25maWdMYXlvdXRcbiAgICAgICAgICBzZXR0aW5ncz17XG4gICAgICAgICAgICA8UGFuZWxcbiAgICAgICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgICAgICBjb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9ufVxuICAgICAgICAgICAgICBvbkNoYW5nZU1vZGVsPXttb2RlbCA9PiB0aGlzLm9uTW9kZWxDaGFuZ2UobW9kZWwpfVxuICAgICAgICAgICAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb249e2NvbmZpZ3VyYXRpb24gPT5cbiAgICAgICAgICAgICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKGNvbmZpZ3VyYXRpb24sIHRydWUpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZ3JvdXBzPXt7XG4gICAgICAgICAgICAgICAgU2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgIHBhcnRpYWxTY29yaW5nOlxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsU2NvcmluZy5zZXR0aW5ncyAmJiB0b2dnbGUocGFydGlhbFNjb3JpbmcubGFiZWwpLFxuICAgICAgICAgICAgICAgICAgbG9ja0Nob2ljZU9yZGVyOlxuICAgICAgICAgICAgICAgICAgICBsb2NrQ2hvaWNlT3JkZXIuc2V0dGluZ3MgJiYgdG9nZ2xlKGxvY2tDaG9pY2VPcmRlci5sYWJlbClcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnNFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zLnNldHRpbmdzICYmXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZSh0ZWFjaGVySW5zdHJ1Y3Rpb25zLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZUVuYWJsZWQ6XG4gICAgICAgICAgICAgICAgICAgIHJhdGlvbmFsZS5zZXR0aW5ncyAmJiB0b2dnbGUocmF0aW9uYWxlLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIGNob2ljZVJhdGlvbmFsZUVuYWJsZWQ6XG4gICAgICAgICAgICAgICAgICAgIGNob2ljZVJhdGlvbmFsZS5zZXR0aW5ncyAmJiB0b2dnbGUoY2hvaWNlUmF0aW9uYWxlLmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHByb21wdEVuYWJsZWQ6IHByb21wdC5zZXR0aW5ncyAmJiB0b2dnbGUocHJvbXB0LmxhYmVsKSxcbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2tFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjay5zZXR0aW5ncyAmJiB0b2dnbGUoc3BlbGxDaGVjay5sYWJlbClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICB7dGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICAgICAgICBsYWJlbD17dGVhY2hlckluc3RydWN0aW9ucy5sYWJlbH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwudGVhY2hlckluc3RydWN0aW9ucyB8fCAnJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWR9XG4gICAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7cHJvbXB0RW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICAgIGxhYmVsPXtwcm9tcHQubGFiZWx9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdEhvbGRlcn1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICAgICAgICBtYXJrdXA9e21vZGVsLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLm9uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICAgICAgbm9uRW1wdHk9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVVuZGVybGluZVxuICAgICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtyYXRpb25hbGVFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgbGFiZWw9e3JhdGlvbmFsZS5sYWJlbH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgICAgICAgIG1hcmt1cD17bW9kZWwucmF0aW9uYWxlIHx8ICcnfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgY2xhc3NOYW1lPXtjbGFzc2VzLnRleHR9PlxuICAgICAgICAgICAgICBEZWZpbmUgVGVtcGxhdGUsIENob2ljZXMsIGFuZCBDb3JyZWN0IFJlc3BvbnNlc1xuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPEluZm9EaWFsb2dcbiAgICAgICAgICAgICAgb3Blbj17ZGlhbG9nLm9wZW59XG4gICAgICAgICAgICAgIHRpdGxlPXtkaWFsb2cubWVzc2FnZX1cbiAgICAgICAgICAgICAgb25DYW5jZWw9e2RpYWxvZy5vbkNhbmNlbH1cbiAgICAgICAgICAgICAgb25Paz17ZGlhbG9nLm9uT2t9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgICBhY3RpdmVQbHVnaW5zPXtBTExfUExVR0lOU31cbiAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3sgcG9zaXRpb246ICd0b3AnIH19XG4gICAgICAgICAgICAgIHJlc3BvbnNlQXJlYVByb3BzPXt7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2lubGluZS1kcm9wZG93bicsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgZHVwbGljYXRlczogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcmVzcEFyZWFUb29sYmFyOiAobm9kZSwgdmFsdWUsIG9uVG9vbGJhckRvbmUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmVzcEFyZWFDaG9pY2VzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8SW5saW5lRHJvcGRvd25Ub29sYmFyXG4gICAgICAgICAgICAgICAgICAgICAgb25BZGRDaG9pY2U9e3RoaXMub25BZGRDaG9pY2V9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGVjaz17dGhpcy5vbkNoZWNrfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVtb3ZlQ2hvaWNlPXtpbmRleCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZUNob2ljZShub2RlLmRhdGEuZ2V0KCdpbmRleCcpLCBpbmRleClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RDaG9pY2U9e2luZGV4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU2VsZWN0Q2hvaWNlKG5vZGUuZGF0YS5nZXQoJ2luZGV4JyksIGluZGV4KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBub2RlPXtub2RlfVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBvblRvb2xiYXJEb25lPXtvblRvb2xiYXJEb25lfVxuICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9e3Jlc3BBcmVhQ2hvaWNlc1tub2RlLmRhdGEuZ2V0KCdpbmRleCcpXX1cbiAgICAgICAgICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmt1cH1cbiAgICAgICAgICAgICAgbWFya3VwPXttb2RlbC5zbGF0ZU1hcmt1cCB8fCAnJ31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgICAgICAgIGltYWdlU3VwcG9ydD17aW1hZ2VTdXBwb3J0fVxuICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMub25CbHVyfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgIGhpZ2hsaWdodFNoYXBlPXtmYWxzZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHtjaG9pY2VSYXRpb25hbGVFbmFibGVkICYmIHJlbmRlckNob2ljZVJhdGlvbmFsZSgpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xheW91dC5Db25maWdMYXlvdXQ+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZCA9IHdpdGhTdHlsZXMoc3R5bGVzKShNYWluKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkO1xuIl19
|
|
687
|
+
//# sourceMappingURL=main.js.map
|