@pie-element/multiple-choice 7.0.0 → 7.1.0-test

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 CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [7.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice@7.0.0...@pie-element/multiple-choice@7.1.0) (2022-06-28)
7
+
8
+
9
+ ### Features
10
+
11
+ * **multiple-choice:** add maxImageWidth and maxImageHeight props PD-1801 ([36b9617](https://github.com/pie-framework/pie-elements/commit/36b961715f3913606b8abb9e9aae764bf02c8d7a))
12
+
13
+
14
+
15
+
16
+
6
17
  # [7.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice@6.3.4...@pie-element/multiple-choice@7.0.0) (2022-06-28)
7
18
 
8
19
 
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-configure@5.0.0...@pie-element/multiple-choice-configure@5.1.0) (2022-06-28)
7
+
8
+
9
+ ### Features
10
+
11
+ * **multiple-choice:** add maxImageWidth and maxImageHeight props PD-1801 ([36b9617](https://github.com/pie-framework/pie-elements/commit/36b961715f3913606b8abb9e9aae764bf02c8d7a))
12
+
13
+
14
+
15
+
16
+
6
17
  # [5.0.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/multiple-choice-configure@4.2.4...@pie-element/multiple-choice-configure@5.0.0) (2022-06-28)
7
18
 
8
19
 
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
6
+
7
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
+
9
+ var _enzyme = require("enzyme");
10
+
11
+ var _react = _interopRequireDefault(require("react"));
12
+
13
+ var _main = require("../main");
14
+
15
+ var _defaults = _interopRequireDefault(require("../defaults"));
16
+
17
+ var _configUi = require("@pie-lib/config-ui");
18
+
19
+ var _index = _interopRequireDefault(require("../index"));
20
+
21
+ 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; }
22
+
23
+ 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; }
24
+
25
+ jest.mock('@pie-lib/config-ui', function () {
26
+ return {
27
+ choiceUtils: {
28
+ firstAvailableIndex: jest.fn(),
29
+ normalizeChoices: jest.fn(function (model) {
30
+ return model;
31
+ })
32
+ },
33
+ settings: {
34
+ Panel: function Panel(props) {
35
+ return /*#__PURE__*/_react["default"].createElement("div", props);
36
+ },
37
+ toggle: jest.fn(),
38
+ radio: jest.fn()
39
+ }
40
+ };
41
+ });
42
+
43
+ var model = function model(extras) {
44
+ return _objectSpread(_objectSpread({}, _defaults["default"].model), {}, {
45
+ prompt: 'Which of these northern European countries are EU members?',
46
+ choiceMode: 'checkbox',
47
+ choices: [{
48
+ correct: true,
49
+ value: 'sweden',
50
+ label: 'Sweden',
51
+ feedback: {
52
+ type: 'none',
53
+ value: ''
54
+ }
55
+ }, {
56
+ value: 'iceland',
57
+ label: 'Iceland',
58
+ feedback: {
59
+ type: 'none',
60
+ value: ''
61
+ }
62
+ }, {
63
+ value: 'norway',
64
+ label: 'Norway',
65
+ feedback: {
66
+ type: 'none',
67
+ value: ''
68
+ }
69
+ }, {
70
+ correct: true,
71
+ value: 'finland',
72
+ label: 'Finland',
73
+ feedback: {
74
+ type: 'none',
75
+ value: ''
76
+ }
77
+ }],
78
+ partialScoring: false,
79
+ configure: {}
80
+ }, extras);
81
+ };
82
+
83
+ describe('Main', function () {
84
+ var w;
85
+ var onModelChanged = jest.fn();
86
+ var onConfigurationChanged = jest.fn();
87
+ var initialModel = model();
88
+
89
+ var wrapper = function wrapper(extras) {
90
+ var defaults = {
91
+ onModelChanged: onModelChanged,
92
+ onConfigurationChanged: onConfigurationChanged,
93
+ classes: {},
94
+ model: model()
95
+ };
96
+
97
+ var props = _objectSpread(_objectSpread({}, defaults), extras);
98
+
99
+ return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_main.Main, props));
100
+ };
101
+
102
+ describe('snapshot', function () {
103
+ it('renders with choicePrefix="numbers"', function () {
104
+ w = wrapper({
105
+ model: model({
106
+ choicePrefix: 'numbers'
107
+ })
108
+ });
109
+ expect(w).toMatchSnapshot();
110
+ });
111
+ it('renders with choicePrefix="letters" as default', function () {
112
+ w = wrapper();
113
+ expect(w).toMatchSnapshot();
114
+ });
115
+ });
116
+ describe('logic', function () {
117
+ beforeEach(function () {
118
+ w = wrapper();
119
+ });
120
+ describe('onRemoveChoice', function () {
121
+ it('removes choice', function () {
122
+ w.instance().onRemoveChoice(0);
123
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
124
+ choices: initialModel.choices.slice(1)
125
+ }));
126
+ });
127
+ });
128
+ describe('createDefaultModel', function () {
129
+ it('sets choicesLayout: horizontal if verticalMode: false', function () {
130
+ var m = _index["default"].createDefaultModel(model({
131
+ verticalMode: false,
132
+ choicesLayout: undefined
133
+ }));
134
+
135
+ expect(m.choicesLayout).toEqual('horizontal');
136
+ });
137
+ it('sets choicesLayout: vertical if verticalMode: true', function () {
138
+ var m = _index["default"].createDefaultModel(model({
139
+ verticalMode: true,
140
+ choicesLayout: undefined
141
+ }));
142
+
143
+ expect(m.choicesLayout).toEqual('vertical');
144
+ });
145
+ it('sets choicesLayout: grid if verticalMode: true && choicesLayout: grid', function () {
146
+ var m = _index["default"].createDefaultModel(model({
147
+ verticalMode: true,
148
+ choicesLayout: 'grid'
149
+ }));
150
+
151
+ expect(m.choicesLayout).toEqual('grid');
152
+ });
153
+ it('sets choicesLayout: vertical', function () {
154
+ var m = _index["default"].createDefaultModel(model());
155
+
156
+ expect(m.choicesLayout).toEqual('vertical');
157
+ });
158
+ });
159
+ describe('onAddChoice', function () {
160
+ it('adds a choice', function () {
161
+ w.instance().onAddChoice();
162
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
163
+ choices: [].concat((0, _toConsumableArray2["default"])(initialModel.choices), [{
164
+ label: '',
165
+ value: _configUi.choiceUtils.firstAvailableIndex(initialModel.choices.map(function (c) {
166
+ return c.value;
167
+ }), 0),
168
+ feedback: {
169
+ type: 'none'
170
+ }
171
+ }])
172
+ }));
173
+ });
174
+ });
175
+ describe('onChoiceChanged', function () {
176
+ describe('checkbox', function () {
177
+ it('changes choice (there are 2 true values)', function () {
178
+ var newChoices = (0, _toConsumableArray2["default"])(model().choices);
179
+ var choice = {
180
+ correct: true,
181
+ value: 'iceland',
182
+ label: 'Iceland',
183
+ feedback: {
184
+ type: 'none',
185
+ value: ''
186
+ }
187
+ };
188
+ w.instance().onChoiceChanged(1, choice);
189
+ newChoices[1].correct = true;
190
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
191
+ choices: newChoices
192
+ }));
193
+ });
194
+ });
195
+ describe('radio', function () {
196
+ it('changes choice (there is only one true value)', function () {
197
+ var choice = {
198
+ correct: true,
199
+ value: 'iceland',
200
+ label: 'Iceland',
201
+ feedback: {
202
+ type: 'none',
203
+ value: ''
204
+ }
205
+ };
206
+
207
+ var newModel = _objectSpread(_objectSpread({}, initialModel), {}, {
208
+ choiceMode: 'radio',
209
+ choices: initialModel.choices.slice(0, 2)
210
+ });
211
+
212
+ w = wrapper({
213
+ model: newModel
214
+ });
215
+ w.instance().onChoiceChanged(1, choice);
216
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, newModel), {}, {
217
+ choices: [{
218
+ correct: false,
219
+ value: 'sweden',
220
+ label: 'Sweden',
221
+ feedback: {
222
+ type: 'none',
223
+ value: ''
224
+ }
225
+ }, {
226
+ correct: true,
227
+ value: 'iceland',
228
+ label: 'Iceland',
229
+ feedback: {
230
+ type: 'none',
231
+ value: ''
232
+ }
233
+ }]
234
+ }));
235
+ });
236
+ });
237
+ });
238
+ describe('onPromptChanged', function () {
239
+ it('changes prompt', function () {
240
+ w.instance().onPromptChanged('New Prompt');
241
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
242
+ prompt: 'New Prompt'
243
+ }));
244
+ });
245
+ });
246
+ describe('onTeacherInstructionsChanged', function () {
247
+ it('changes teacher instructions', function () {
248
+ w.instance().onTeacherInstructionsChanged('New Teacher Instructions');
249
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
250
+ teacherInstructions: 'New Teacher Instructions'
251
+ }));
252
+ });
253
+ });
254
+ describe('onModelChanged', function () {
255
+ it('changes choice and makes incorrect all other choices', function () {
256
+ w.instance().onModelChanged(_objectSpread(_objectSpread({}, initialModel), {}, {
257
+ choiceMode: 'radio'
258
+ }), 'choiceMode');
259
+ var expectedChoices = model().choices;
260
+ expectedChoices.forEach(function (eC, index) {
261
+ eC.correct = index === 0;
262
+ });
263
+ expect(onModelChanged).toBeCalledWith(_objectSpread(_objectSpread({}, initialModel), {}, {
264
+ choiceMode: 'radio',
265
+ choices: expectedChoices
266
+ }), true);
267
+ });
268
+ });
269
+ });
270
+ });
271
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcm9vdC50ZXN0LmpzeCJdLCJuYW1lcyI6WyJqZXN0IiwibW9jayIsImNob2ljZVV0aWxzIiwiZmlyc3RBdmFpbGFibGVJbmRleCIsImZuIiwibm9ybWFsaXplQ2hvaWNlcyIsIm1vZGVsIiwic2V0dGluZ3MiLCJQYW5lbCIsInByb3BzIiwidG9nZ2xlIiwicmFkaW8iLCJleHRyYXMiLCJkZWZhdWx0cyIsInByb21wdCIsImNob2ljZU1vZGUiLCJjaG9pY2VzIiwiY29ycmVjdCIsInZhbHVlIiwibGFiZWwiLCJmZWVkYmFjayIsInR5cGUiLCJwYXJ0aWFsU2NvcmluZyIsImNvbmZpZ3VyZSIsImRlc2NyaWJlIiwidyIsIm9uTW9kZWxDaGFuZ2VkIiwib25Db25maWd1cmF0aW9uQ2hhbmdlZCIsImluaXRpYWxNb2RlbCIsIndyYXBwZXIiLCJjbGFzc2VzIiwiaXQiLCJjaG9pY2VQcmVmaXgiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJiZWZvcmVFYWNoIiwiaW5zdGFuY2UiLCJvblJlbW92ZUNob2ljZSIsInRvQmVDYWxsZWRXaXRoIiwic2xpY2UiLCJtIiwiTXVsdGlwbGVDaG9pY2UiLCJjcmVhdGVEZWZhdWx0TW9kZWwiLCJ2ZXJ0aWNhbE1vZGUiLCJjaG9pY2VzTGF5b3V0IiwidW5kZWZpbmVkIiwidG9FcXVhbCIsIm9uQWRkQ2hvaWNlIiwidXRpbHMiLCJtYXAiLCJjIiwibmV3Q2hvaWNlcyIsImNob2ljZSIsIm9uQ2hvaWNlQ2hhbmdlZCIsIm5ld01vZGVsIiwib25Qcm9tcHRDaGFuZ2VkIiwib25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCIsInRlYWNoZXJJbnN0cnVjdGlvbnMiLCJleHBlY3RlZENob2ljZXMiLCJmb3JFYWNoIiwiZUMiLCJpbmRleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxD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LFFBQUYsR0FBYVYsY0FBYixpQ0FDT0UsWUFEUDtBQUVJYixVQUFBQSxVQUFVLEVBQUU7QUFGaEIsWUFJRSxZQUpGO0FBT0EsWUFBTTJDLGVBQWUsR0FBR3BELEtBQUssR0FBR1UsT0FBaEM7QUFFQTBDLFFBQUFBLGVBQWUsQ0FBQ0MsT0FBaEIsQ0FBd0IsVUFBQ0MsRUFBRCxFQUFLQyxLQUFMLEVBQWU7QUFDckNELFVBQUFBLEVBQUUsQ0FBQzNDLE9BQUgsR0FBYTRDLEtBQUssS0FBSyxDQUF2QjtBQUNELFNBRkQ7QUFJQTVCLFFBQUFBLE1BQU0sQ0FBQ1AsY0FBRCxDQUFOLENBQXVCWSxjQUF2QixpQ0FDT1YsWUFEUDtBQUVJYixVQUFBQSxVQUFVLEVBQUUsT0FGaEI7QUFHSUMsVUFBQUEsT0FBTyxFQUFFMEM7QUFIYixZQUtFLElBTEY7QUFPRCxPQXJCQyxDQUFGO0FBc0JELEtBdkJPLENBQVI7QUF3QkQsR0FuTE8sQ0FBUjtBQW9MRCxDQWxOTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBNYWluIH0gZnJvbSAnLi4vbWFpbic7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi4vZGVmYXVsdHMnO1xuaW1wb3J0IHsgY2hvaWNlVXRpbHMgYXMgdXRpbHMgfSBmcm9tICdAcGllLWxpYi9jb25maWctdWknO1xuaW1wb3J0IE11bHRpcGxlQ2hvaWNlIGZyb20gJy4uL2luZGV4JztcblxuamVzdC5tb2NrKCdAcGllLWxpYi9jb25maWctdWknLCAoKSA9PiAoe1xuICBjaG9pY2VVdGlsczoge1xuICAgIGZpcnN0QXZhaWxhYmxlSW5kZXg6IGplc3QuZm4oKSxcbiAgICBub3JtYWxpemVDaG9pY2VzOiBqZXN0LmZuKChtb2RlbCkgPT4gbW9kZWwpXG4gIH0sXG4gIHNldHRpbmdzOiB7XG4gICAgUGFuZWw6IHByb3BzID0+IDxkaXYgey4uLnByb3BzfSAvPixcbiAgICB0b2dnbGU6IGplc3QuZm4oKSxcbiAgICByYWRpbzogamVzdC5mbigpXG4gIH1cbn0pKTtcblxuY29uc3QgbW9kZWwgPSAoZXh0cmFzKSA9PiAoe1xuICAuLi5kZWZhdWx0cy5tb2RlbCxcbiAgcHJvbXB0OiAnV2hpY2ggb2YgdGhlc2Ugbm9ydGhlcm4gRXVyb3BlYW4gY291bnRyaWVzIGFyZSBFVSBtZW1iZXJzPycsXG4gIGNob2ljZU1vZGU6ICdjaGVja2JveCcsXG4gIGNob2ljZXM6IFtcbiAgICB7XG4gICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgdmFsdWU6ICdzd2VkZW4nLFxuICAgICAgbGFiZWw6ICdTd2VkZW4nLFxuICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICB2YWx1ZTogJydcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnaWNlbGFuZCcsXG4gICAgICBsYWJlbDogJ0ljZWxhbmQnLFxuICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICB2YWx1ZTogJydcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlOiAnbm9yd2F5JyxcbiAgICAgIGxhYmVsOiAnTm9yd2F5JyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6XG4gICAgICAgICAgJydcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICB2YWx1ZTogJ2ZpbmxhbmQnLFxuICAgICAgbGFiZWw6ICdGaW5sYW5kJyxcbiAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgdmFsdWU6ICcnXG4gICAgICB9XG4gICAgfVxuICBdLFxuICBwYXJ0aWFsU2NvcmluZzogZmFsc2UsXG4gIGNvbmZpZ3VyZToge30sXG4gIC4uLmV4dHJhc1xufSk7XG5cbmRlc2NyaWJlKCdNYWluJywgKCkgPT4ge1xuICBsZXQgdztcbiAgbGV0IG9uTW9kZWxDaGFuZ2VkID0gamVzdC5mbigpO1xuICBsZXQgb25Db25maWd1cmF0aW9uQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgbGV0IGluaXRpYWxNb2RlbCA9IG1vZGVsKCk7XG5cbiAgY29uc3Qgd3JhcHBlciA9IGV4dHJhcyA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBvbk1vZGVsQ2hhbmdlZCxcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQsXG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIG1vZGVsOiBtb2RlbCgpXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMsIC4uLmV4dHJhcyB9O1xuXG4gICAgcmV0dXJuIHNoYWxsb3coPE1haW4gey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggY2hvaWNlUHJlZml4PVwibnVtYmVyc1wiJywgKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoeyBtb2RlbDogbW9kZWwoeyBjaG9pY2VQcmVmaXg6ICdudW1iZXJzJyB9KSB9KTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggY2hvaWNlUHJlZml4PVwibGV0dGVyc1wiIGFzIGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbG9naWMnLCAoKSA9PiB7XG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICB3ID0gd3JhcHBlcigpO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdvblJlbW92ZUNob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdyZW1vdmVzIGNob2ljZScsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uUmVtb3ZlQ2hvaWNlKDApO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICBjaG9pY2VzOiBpbml0aWFsTW9kZWwuY2hvaWNlcy5zbGljZSgxKVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NyZWF0ZURlZmF1bHRNb2RlbCcsICgpID0+IHtcbiAgICAgIGl0KCdzZXRzIGNob2ljZXNMYXlvdXQ6IGhvcml6b250YWwgaWYgdmVydGljYWxNb2RlOiBmYWxzZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgbSA9IE11bHRpcGxlQ2hvaWNlLmNyZWF0ZURlZmF1bHRNb2RlbChtb2RlbCh7IHZlcnRpY2FsTW9kZTogZmFsc2UsIGNob2ljZXNMYXlvdXQ6IHVuZGVmaW5lZCB9KSk7XG5cbiAgICAgICAgZXhwZWN0KG0uY2hvaWNlc0xheW91dCkudG9FcXVhbCgnaG9yaXpvbnRhbCcpXG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NldHMgY2hvaWNlc0xheW91dDogdmVydGljYWwgaWYgdmVydGljYWxNb2RlOiB0cnVlJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKHsgdmVydGljYWxNb2RlOiB0cnVlLCBjaG9pY2VzTGF5b3V0OiB1bmRlZmluZWQgfSkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ3ZlcnRpY2FsJylcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2V0cyBjaG9pY2VzTGF5b3V0OiBncmlkIGlmIHZlcnRpY2FsTW9kZTogdHJ1ZSAmJiBjaG9pY2VzTGF5b3V0OiBncmlkJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKHsgdmVydGljYWxNb2RlOiB0cnVlLCBjaG9pY2VzTGF5b3V0OiAnZ3JpZCcgfSkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ2dyaWQnKVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzZXRzIGNob2ljZXNMYXlvdXQ6IHZlcnRpY2FsJywgKCkgPT4ge1xuICAgICAgICBjb25zdCBtID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKG1vZGVsKCkpO1xuXG4gICAgICAgIGV4cGVjdChtLmNob2ljZXNMYXlvdXQpLnRvRXF1YWwoJ3ZlcnRpY2FsJylcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uQWRkQ2hvaWNlJywgKCkgPT4ge1xuICAgICAgaXQoJ2FkZHMgYSBjaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkFkZENob2ljZSgpO1xuXG4gICAgICAgIGV4cGVjdChvbk1vZGVsQ2hhbmdlZCkudG9CZUNhbGxlZFdpdGgoe1xuICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICBjaG9pY2VzOiBbXG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwuY2hvaWNlcyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICAgICAgICB2YWx1ZTogdXRpbHMuZmlyc3RBdmFpbGFibGVJbmRleChpbml0aWFsTW9kZWwuY2hvaWNlcy5tYXAoYyA9PiBjLnZhbHVlKSwgMCksXG4gICAgICAgICAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25DaG9pY2VDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgZGVzY3JpYmUoJ2NoZWNrYm94JywgKCkgPT4ge1xuICAgICAgICBpdCgnY2hhbmdlcyBjaG9pY2UgKHRoZXJlIGFyZSAyIHRydWUgdmFsdWVzKScsICgpID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdDaG9pY2VzID0gWy4uLm1vZGVsKCkuY2hvaWNlc107XG4gICAgICAgICAgbGV0IGNob2ljZSA9IHtcbiAgICAgICAgICAgIGNvcnJlY3Q6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogJ2ljZWxhbmQnLFxuICAgICAgICAgICAgbGFiZWw6ICdJY2VsYW5kJyxcbiAgICAgICAgICAgIGZlZWRiYWNrOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHcuaW5zdGFuY2UoKS5vbkNob2ljZUNoYW5nZWQoMSwgY2hvaWNlKTtcblxuICAgICAgICAgIG5ld0Nob2ljZXNbMV0uY29ycmVjdCA9IHRydWU7XG5cbiAgICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICAgIGNob2ljZXM6IG5ld0Nob2ljZXNcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ3JhZGlvJywgKCkgPT4ge1xuICAgICAgICBpdCgnY2hhbmdlcyBjaG9pY2UgKHRoZXJlIGlzIG9ubHkgb25lIHRydWUgdmFsdWUpJywgKCkgPT4ge1xuICAgICAgICAgIGxldCBjaG9pY2UgPSB7XG4gICAgICAgICAgICBjb3JyZWN0OiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6ICdpY2VsYW5kJyxcbiAgICAgICAgICAgIGxhYmVsOiAnSWNlbGFuZCcsXG4gICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICB0eXBlOiAnbm9uZScsXG4gICAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBuZXdNb2RlbCA9IHsgLi4uaW5pdGlhbE1vZGVsLCBjaG9pY2VNb2RlOiAncmFkaW8nLCBjaG9pY2VzOiBpbml0aWFsTW9kZWwuY2hvaWNlcy5zbGljZSgwLCAyKSB9O1xuICAgICAgICAgIHcgPSB3cmFwcGVyKHsgbW9kZWw6IG5ld01vZGVsIH0pO1xuXG5cbiAgICAgICAgICB3Lmluc3RhbmNlKCkub25DaG9pY2VDaGFuZ2VkKDEsIGNob2ljZSk7XG5cbiAgICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLm5ld01vZGVsLFxuICAgICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29ycmVjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmFsdWU6ICdzd2VkZW4nLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnU3dlZGVuJyxcbiAgICAgICAgICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogJ2ljZWxhbmQnLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnSWNlbGFuZCcsXG4gICAgICAgICAgICAgICAgZmVlZGJhY2s6IHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJ1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblByb21wdENoYW5nZWQnLCAoKSA9PiB7XG4gICAgICBpdCgnY2hhbmdlcyBwcm9tcHQnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vblByb21wdENoYW5nZWQoJ05ldyBQcm9tcHQnKTtcblxuICAgICAgICBleHBlY3Qob25Nb2RlbENoYW5nZWQpLnRvQmVDYWxsZWRXaXRoKHtcbiAgICAgICAgICAgIC4uLmluaXRpYWxNb2RlbCxcbiAgICAgICAgICAgIHByb21wdDogJ05ldyBQcm9tcHQnXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCcsICgpID0+IHtcbiAgICAgIGl0KCdjaGFuZ2VzIHRlYWNoZXIgaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkub25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCgnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJyk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zOiAnTmV3IFRlYWNoZXIgSW5zdHJ1Y3Rpb25zJ1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ29uTW9kZWxDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgaXQoJ2NoYW5nZXMgY2hvaWNlIGFuZCBtYWtlcyBpbmNvcnJlY3QgYWxsIG90aGVyIGNob2ljZXMnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbk1vZGVsQ2hhbmdlZCh7XG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgICBjaG9pY2VNb2RlOiAncmFkaW8nXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnY2hvaWNlTW9kZSdcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBleHBlY3RlZENob2ljZXMgPSBtb2RlbCgpLmNob2ljZXM7XG5cbiAgICAgICAgZXhwZWN0ZWRDaG9pY2VzLmZvckVhY2goKGVDLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGVDLmNvcnJlY3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXhwZWN0KG9uTW9kZWxDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7XG4gICAgICAgICAgICAuLi5pbml0aWFsTW9kZWwsXG4gICAgICAgICAgICBjaG9pY2VNb2RlOiAncmFkaW8nLFxuICAgICAgICAgICAgY2hvaWNlczogZXhwZWN0ZWRDaG9pY2VzXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -113,4 +113,4 @@ var _default = {
113
113
  }
114
114
  };
115
115
  exports["default"] = _default;
116
- //# sourceMappingURL=defaults.js.map
116
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0cy5qcyJdLCJuYW1lcyI6WyJtb2RlbCIsImNob2ljZU1vZGUiLCJjaG9pY2VQcmVmaXgiLCJjaG9pY2VzIiwicHJvbXB0IiwibG9ja0Nob2ljZU9yZGVyIiwicGFydGlhbFNjb3JpbmciLCJzY29yaW5nVHlwZSIsImZlZWRiYWNrRW5hYmxlZCIsInByb21wdEVuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZCIsInRvb2xiYXJFZGl0b3JQb3NpdGlvbiIsImNob2ljZXNMYXlvdXQiLCJncmlkQ29sdW1ucyIsImNvbmZpZ3VyYXRpb24iLCJzcGVsbENoZWNrIiwibGFiZWwiLCJzZXR0aW5ncyIsImVuYWJsZWQiLCJhbnN3ZXJDaG9pY2VDb3VudCIsImFkZENob2ljZUJ1dHRvbiIsImRlbGV0ZUNob2ljZSIsImZlZWRiYWNrIiwicmF0aW9uYWxlIiwiYWNjZXNzaWJpbGl0eSIsInN0dWRlbnRJbnN0cnVjdGlvbnMiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwibWluQW5zd2VyQ2hvaWNlcyIsIm1heEFuc3dlckNob2ljZXMiLCJtYXhJbWFnZVdpZHRoIiwibWF4SW1hZ2VIZWlnaHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtlQUNlO0FBQ2JBLEVBQUFBLEtBQUssRUFBRTtBQUNMQyxJQUFBQSxVQUFVLEVBQUUsVUFEUDtBQUVMQyxJQUFBQSxZQUFZLEVBQUUsU0FGVDtBQUdMQyxJQUFBQSxPQUFPLEVBQUUsRUFISjtBQUlMQyxJQUFBQSxNQUFNLEVBQUUsMkJBSkg7QUFLTEMsSUFBQUEsZUFBZSxFQUFFLElBTFo7QUFNTEMsSUFBQUEsY0FBYyxFQUFFLElBTlg7QUFPTEMsSUFBQUEsV0FBVyxFQUFFLE1BUFI7QUFRTEMsSUFBQUEsZUFBZSxFQUFFLElBUlo7QUFTTEMsSUFBQUEsYUFBYSxFQUFFLElBVFY7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QUFBQSxPQUFPLEVBQUU7QUFKSSxLQXZFRjtBQTZFYjZCLElBQUFBLGNBQWMsRUFBRTtBQUNkSixNQUFBQSxtQkFBbUIsRUFBRSxHQURQO0FBRWR4QixNQUFBQSxNQUFNLEVBQUUsR0FGTTtBQUdkcUIsTUFBQUEsU0FBUyxFQUFFLEdBSEc7QUFJZHRCLE1BQUFBLE9BQU8sRUFBRTtBQUpLO0FBN0VIO0FBbEJGLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogTk9URTogdGVhY2hlckluc3RydWN0aW9ucywgc3R1ZGVudEluc3RydWN0aW9ucywgcmF0aW9uYWxlICYgc2NvcmluZ1R5cGVcbiAqIGZ1bmN0aW9uYWxpdGllcyBhcmUgbm90IGRlZmluZWQgeWV0IC0gdGhlIHZhbHVlIGZvciB0aG9zZSBjYW4gYmVsb25nIHRvXG4gKiBtb2RlbCBvciB0byBjb25maWd1cmVcbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBtb2RlbDoge1xuICAgIGNob2ljZU1vZGU6ICdjaGVja2JveCcsXG4gICAgY2hvaWNlUHJlZml4OiAnbGV0dGVycycsXG4gICAgY2hvaWNlczogW10sXG4gICAgcHJvbXB0OiAnUXVlc3Rpb24gUHJvbXB0IGdvZXMgaGVyZScsXG4gICAgbG9ja0Nob2ljZU9yZGVyOiB0cnVlLFxuICAgIHBhcnRpYWxTY29yaW5nOiB0cnVlLFxuICAgIHNjb3JpbmdUeXBlOiAnYXV0bycsXG4gICAgZmVlZGJhY2tFbmFibGVkOiB0cnVlLFxuICAgIHByb21wdEVuYWJsZWQ6IHRydWUsXG4gICAgcmF0aW9uYWxlRW5hYmxlZDogdHJ1ZSxcbiAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICBzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICB0b29sYmFyRWRpdG9yUG9zaXRpb246ICdib3R0b20nLFxuICAgIGNob2ljZXNMYXlvdXQ6ICd2ZXJ0aWNhbCcsXG4gICAgZ3JpZENvbHVtbnM6ICcyJyxcbiAgfSxcbiAgY29uZmlndXJhdGlvbjoge1xuICAgIHNwZWxsQ2hlY2s6IHtcbiAgICAgIGxhYmVsOiAnU3BlbGxjaGVjaycsXG4gICAgICBzZXR0aW5nczpmYWxzZSxcbiAgICAgIGVuYWJsZWQ6dHJ1ZVxuICAgIH0sXG4gICAgY2hvaWNlc0xheW91dDoge1xuICAgICAgc2V0dGluZ3M6IGZhbHNlLFxuICAgICAgbGFiZWw6ICdDaG9pY2VzIExheW91dCcsXG4gICAgfSxcbiAgICBncmlkQ29sdW1uczoge1xuICAgICAgbGFiZWw6ICdHcmlkIGNvbHVtbnMnLFxuICAgIH0sXG4gICAgYW5zd2VyQ2hvaWNlQ291bnQ6IDAsXG4gICAgYWRkQ2hvaWNlQnV0dG9uOiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnQWRkIGEgQ2hvaWNlJyxcbiAgICB9LFxuICAgIGNob2ljZU1vZGU6IHtcbiAgICAgIHNldHRpbmdzOiB0cnVlLFxuICAgICAgbGFiZWw6ICdSZXNwb25zZSBUeXBlJyxcbiAgICB9LFxuICAgIGNob2ljZVByZWZpeDoge1xuICAgICAgc2V0dGluZ3M6IHRydWUsXG4gICAgICBsYWJlbDogJ0Nob2ljZSBMYWJlbHMnLFxuICAgIH0sXG4gICAgZGVsZXRlQ2hvaWNlOiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICB9LFxuICAgIGZlZWRiYWNrOiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnRmVlZGJhY2snLFxuICAgIH0sXG4gICAgcHJvbXB0OiB7XG4gICAgICBzZXR0aW5nczogdHJ1ZSxcbiAgICAgIGxhYmVsOiAnUHJvbXB0JyxcbiAgICB9LFxuICAgIGxvY2tDaG9pY2VPcmRlcjoge1xuICAgICAgc2V0dGluZ3M6IHRydWUsXG4gICAgICBsYWJlbDogJ0xvY2sgQ2hvaWNlIE9yZGVyJyxcbiAgICB9LFxuICAgIHBhcnRpYWxTY29yaW5nOiB7XG4gICAgICBzZXR0aW5nczogZmFsc2UsXG4gICAgICBsYWJlbDogJ0FsbG93IFBhcnRpYWwgU2NvcmluZycsXG4gICAgfSxcbiAgICByYXRpb25hbGU6IHtcbiAgICAgIHNldHRpbmdzOiB0cnVlLFxuICAgICAgbGFiZWw6ICdSYXRpb25hbGUnLFxuICAgIH0sXG4gICAgYWNjZXNzaWJpbGl0eToge1xuICAgICAgc2V0dGluZ3M6IGZhbHNlLFxuICAgICAgbGFiZWw6ICdBY2Nlc3NpYmlsaXR5IExhYmVsJ1xuICAgIH0sXG4gICAgc2NvcmluZ1R5cGU6IHtcbiAgICAgIHNldHRpbmdzOiBmYWxzZSxcbiAgICAgIGxhYmVsOiAnU2NvcmluZyBUeXBlJyxcbiAgICB9LFxuICAgIHN0dWRlbnRJbnN0cnVjdGlvbnM6IHtcbiAgICAgIHNldHRpbmdzOiBmYWxzZSxcbiAgICAgIGxhYmVsOiAnU3R1ZGVudCBJbnN0cnVjdGlvbnMnLFxuICAgIH0sXG4gICAgdGVhY2hlckluc3RydWN0aW9uczoge1xuICAgICAgc2V0dGluZ3M6IHRydWUsXG4gICAgICBsYWJlbDogJ1RlYWNoZXIgSW5zdHJ1Y3Rpb25zJyxcbiAgICB9LFxuICAgIHRvb2xiYXJFZGl0b3JQb3NpdGlvbjoge1xuICAgICAgc2V0dGluZ3M6IGZhbHNlLFxuICAgICAgbGFiZWw6ICdUb29sYmFyIEVkaXRvciBQb3NpdGlvbicsXG4gICAgfSxcbiAgICBtaW5BbnN3ZXJDaG9pY2VzOiAyLFxuICAgIG1heEFuc3dlckNob2ljZXM6IDUsXG4gICAgbWF4SW1hZ2VXaWR0aDoge1xuICAgICAgdGVhY2hlckluc3RydWN0aW9uczogMzAwLFxuICAgICAgcHJvbXB0OiAzMDAsXG4gICAgICByYXRpb25hbGU6IDYzNixcbiAgICAgIGNob2ljZXM6IDYzNlxuICAgIH0sXG4gICAgbWF4SW1hZ2VIZWlnaHQ6IHtcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6IDMwMCxcbiAgICAgIHByb21wdDogMzAwLFxuICAgICAgcmF0aW9uYWxlOiAzMDAsXG4gICAgICBjaG9pY2VzOiAzMDBcbiAgICB9XG4gIH0sXG59O1xuIl19
@@ -160,6 +160,21 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
160
160
  value: function onDeleteImage(src, done) {
161
161
  this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
162
162
  }
163
+ }, {
164
+ key: "insertSound",
165
+ value: function insertSound(handler) {
166
+ console.log('=== insert handler: ', handler);
167
+ this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
168
+ }
169
+ }, {
170
+ key: "onDeleteSound",
171
+ value: function onDeleteSound(src, done) {
172
+ console.log('=== delete handler: ', {
173
+ src: src,
174
+ done: done
175
+ });
176
+ this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
177
+ }
163
178
  }, {
164
179
  key: "_render",
165
180
  value: function _render() {
@@ -174,6 +189,10 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
174
189
  imageSupport: {
175
190
  add: this.insertImage.bind(this),
176
191
  "delete": this.onDeleteImage.bind(this)
192
+ },
193
+ uploadSoundSupport: {
194
+ add: this.insertSound.bind(this),
195
+ "delete": this.onDeleteSound.bind(this)
177
196
  }
178
197
  });
179
198
 
@@ -195,4 +214,4 @@ exports["default"] = MultipleChoice;
195
214
  normalizedModel.choicesLayout = model.choicesLayout || model.verticalMode === false && 'horizontal' || _defaults2["default"].model.choicesLayout;
196
215
  return normalizedModel;
197
216
  });
198
- //# sourceMappingURL=index.js.map
217
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJnZW5lcmF0ZUZvcm1hdHRlZENob2ljZXMiLCJjaG9pY2VzIiwiY2hvaWNlQ291bnQiLCJsZW5ndGgiLCJmb3JtYXR0ZWRDaG9pY2VzIiwiaSIsInB1c2giLCJ2YWx1ZSIsImxhYmVsIiwiZmVlZGJhY2siLCJ0eXBlIiwicHJlcGFyZUN1c3RvbWl6YXRpb25PYmplY3QiLCJjb25maWciLCJtb2RlbCIsImNvbmZpZ3VyYXRpb24iLCJzZW5zaWJsZURlZmF1bHRzIiwiYW5zd2VyQ2hvaWNlQ291bnQiLCJNdWx0aXBsZUNob2ljZSIsIl9tb2RlbCIsImNyZWF0ZURlZmF1bHRNb2RlbCIsIl9jb25maWd1cmF0aW9uIiwib25Nb2RlbENoYW5nZWQiLCJiaW5kIiwib25Db25maWd1cmF0aW9uQ2hhbmdlZCIsInMiLCJfcmVuZGVyIiwiYyIsImluZm8iLCJfZGlzYWJsZVNpZGVQYW5lbCIsInJlc2V0IiwicmVzZXRWYWx1ZSIsImRpc3BhdGNoRXZlbnQiLCJNb2RlbFVwZGF0ZWRFdmVudCIsIm0iLCJkaXNwYXRjaE1vZGVsVXBkYXRlZCIsImhhbmRsZXIiLCJJbnNlcnRJbWFnZUV2ZW50Iiwic3JjIiwiZG9uZSIsIkRlbGV0ZUltYWdlRXZlbnQiLCJjb25zb2xlIiwiSW5zZXJ0U291bmRFdmVudCIsIkRlbGV0ZVNvdW5kRXZlbnQiLCJlbGVtZW50IiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiTWFpbiIsImRpc2FibGVTaWRlUGFuZWwiLCJpbWFnZVN1cHBvcnQiLCJhZGQiLCJpbnNlcnRJbWFnZSIsIm9uRGVsZXRlSW1hZ2UiLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJpbnNlcnRTb3VuZCIsIm9uRGVsZXRlU291bmQiLCJSZWFjdERPTSIsInJlbmRlciIsIkhUTUxFbGVtZW50Iiwibm9ybWFsaXplZE1vZGVsIiwidXRpbHMiLCJub3JtYWxpemVDaG9pY2VzIiwiY2hvaWNlc0xheW91dCIsInZlcnRpY2Fs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aUJGLEtBQWpCLENBQXVCZ0QsYUFBaEk7QUFFQSxTQUFPSCxlQUFQO0FBQ0QsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQge1xuICBEZWxldGVJbWFnZUV2ZW50LFxuICBJbnNlcnRJbWFnZUV2ZW50LFxuICBNb2RlbFVwZGF0ZWRFdmVudCxcbiAgSW5zZXJ0U291bmRFdmVudCxcbiAgRGVsZXRlU291bmRFdmVudFxufSBmcm9tICdAcGllLWZyYW1ld29yay9waWUtY29uZmlndXJlLWV2ZW50cyc7XG5cbmltcG9ydCBNYWluIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBjaG9pY2VVdGlscyBhcyB1dGlscyB9IGZyb20gJ0BwaWUtbGliL2NvbmZpZy11aSc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnbG9kYXNoL2RlZmF1bHRzJztcblxuaW1wb3J0IHNlbnNpYmxlRGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cyc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdtdWx0aXBsZS1jaG9pY2U6Y29uZmlndXJlJyk7XG5cbmNvbnN0IGdlbmVyYXRlRm9ybWF0dGVkQ2hvaWNlcyA9IChjaG9pY2VzLCBjaG9pY2VDb3VudCA9IDApID0+IHtcbiAgaWYgKCFjaG9pY2VzIHx8IGNob2ljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgbGV0IGZvcm1hdHRlZENob2ljZXMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hvaWNlQ291bnQ7IGkrKykge1xuICAgICAgZm9ybWF0dGVkQ2hvaWNlcy5wdXNoKHtcbiAgICAgICAgdmFsdWU6IGAke2l9YCxcbiAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICBmZWVkYmFjazoge1xuICAgICAgICAgIHR5cGU6ICdub25lJyxcbiAgICAgICAgICB2YWx1ZTogJydcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZENob2ljZXM7XG4gIH1cblxuICByZXR1cm4gY2hvaWNlcztcbn07XG5cbmNvbnN0IHByZXBhcmVDdXN0b21pemF0aW9uT2JqZWN0ID0gKGNvbmZpZywgbW9kZWwpID0+IHtcbiAgY29uc3QgY29uZmlndXJhdGlvbiA9IGRlZmF1bHRzKGNvbmZpZywgc2Vuc2libGVEZWZhdWx0cy5jb25maWd1cmF0aW9uKTtcblxuICByZXR1cm4ge1xuICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgbW9kZWw6IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgY2hvaWNlczogZ2VuZXJhdGVGb3JtYXR0ZWRDaG9pY2VzKChtb2RlbCAmJiBtb2RlbC5jaG9pY2VzKSB8fCBbXSwgY29uZmlndXJhdGlvbiAmJiBjb25maWd1cmF0aW9uLmFuc3dlckNob2ljZUNvdW50KVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpcGxlQ2hvaWNlIGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICBzdGF0aWMgY3JlYXRlRGVmYXVsdE1vZGVsID0gKG1vZGVsID0ge30pID0+IHtcbiAgICBjb25zdCBub3JtYWxpemVkTW9kZWwgPSB1dGlscy5ub3JtYWxpemVDaG9pY2VzKHtcbiAgICAgIC4uLnNlbnNpYmxlRGVmYXVsdHMubW9kZWwsXG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGNob2ljZXM6IGdlbmVyYXRlRm9ybWF0dGVkQ2hvaWNlcygobW9kZWwgJiYgbW9kZWwuY2hvaWNlcykgfHwgW10pXG4gICAgfSk7XG5cbiAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIG9mZmVyaW5nIHN1cHBvcnQgZm9yIG9sZCBtb2RlbHMgd2hpY2ggaGF2ZSB0aGUgcHJvcGVydHkgXCJ2ZXJ0aWNhbE1vZGVcIlxuICAgIG5vcm1hbGl6ZWRNb2RlbC5jaG9pY2VzTGF5b3V0ID0gbW9kZWwuY2hvaWNlc0xheW91dCB8fCAobW9kZWwudmVydGljYWxNb2RlID09PSBmYWxzZSAmJiAnaG9yaXpvbnRhbCcpIHx8IHNlbnNpYmxlRGVmYXVsdHMubW9kZWwuY2hvaWNlc0xheW91dDtcblxuICAgIHJldHVybiBub3JtYWxpemVkTW9kZWw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX21vZGVsID0gTXVsdGlwbGVDaG9pY2UuY3JlYXRlRGVmYXVsdE1vZGVsKCk7XG4gICAgdGhpcy5fY29uZmlndXJhdGlvbiA9IHNlbnNpYmxlRGVmYXVsdHMuY29uZmlndXJhdGlvbjtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2VkID0gdGhpcy5vbk1vZGVsQ2hhbmdlZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMub25Db25maWd1cmF0aW9uQ2hhbmdlZCA9IHRoaXMub25Db25maWd1cmF0aW9uQ2hhbmdlZC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgc2V0IG1vZGVsKHMpIHtcbiAgICB0aGlzLl9tb2RlbCA9IE11bHRpcGxlQ2hvaWNlLmNyZWF0ZURlZmF1bHRNb2RlbChzKTtcblxuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG5cbiAgc2V0IGNvbmZpZ3VyYXRpb24oYykge1xuICAgIGNvbnN0IGluZm8gPSBwcmVwYXJlQ3VzdG9taXphdGlvbk9iamVjdChjLCB0aGlzLl9tb2RlbCk7XG5cbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2VkKGluZm8ubW9kZWwpO1xuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb24gPSBpbmZvLmNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBzZXQgZGlzYWJsZVNpZGVQYW5lbChzKSB7XG4gICAgdGhpcy5fZGlzYWJsZVNpZGVQYW5lbCA9IHM7XG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICBkaXNwYXRjaE1vZGVsVXBkYXRlZChyZXNldCkge1xuICAgIGNvbnN0IHJlc2V0VmFsdWUgPSAhIXJlc2V0O1xuXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBNb2RlbFVwZGF0ZWRFdmVudCh0aGlzLl9tb2RlbCwgcmVzZXRWYWx1ZSkpO1xuICB9XG5cbiAgb25Nb2RlbENoYW5nZWQobSwgcmVzZXQpIHtcbiAgICB0aGlzLl9tb2RlbCA9IG07XG4gICAgdGhpcy5fcmVuZGVyKCk7XG5cbiAgICB0aGlzLmRpc3BhdGNoTW9kZWxVcGRhdGVkKHJlc2V0KTtcbiAgfVxuXG4gIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQoYykge1xuICAgIHRoaXMuX2NvbmZpZ3VyYXRpb24gPSBwcmVwYXJlQ3VzdG9taXphdGlvbk9iamVjdChjLCB0aGlzLl9tb2RlbCkuY29uZmlndXJhdGlvbjtcblxuICAgIGlmICh0aGlzLl9tb2RlbCkge1xuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlZCh0aGlzLl9tb2RlbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVuZGVyKCk7XG4gIH1cblxuICAvKiogQHBhcmFtIHtkb25lLCBwcm9ncmVzcywgZmlsZX0gaGFuZGxlciAqL1xuICBpbnNlcnRJbWFnZShoYW5kbGVyKSB7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBJbnNlcnRJbWFnZUV2ZW50KGhhbmRsZXIpKTtcbiAgfVxuXG4gIG9uRGVsZXRlSW1hZ2Uoc3JjLCBkb25lKSB7XG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBEZWxldGVJbWFnZUV2ZW50KHNyYywgZG9uZSkpO1xuICB9XG5cbiAgaW5zZXJ0U291bmQoaGFuZGxlcikge1xuICAgIGNvbnNvbGUubG9nKCc9PT0gaW5zZXJ0IGhhbmRsZXI6ICcsIGhhbmRsZXIpO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgSW5zZXJ0U291bmRFdmVudChoYW5kbGVyKSk7XG4gIH1cblxuICBvbkRlbGV0ZVNvdW5kKHNyYywgZG9uZSkge1xuICAgIGNvbnNvbGUubG9nKCc9PT0gZGVsZXRlIGhhbmRsZXI6ICcsIHsgc3JjLCBkb25lIH0pO1xuICAgIHRoaXMuZGlzcGF0Y2hFdmVudChuZXcgRGVsZXRlU291bmRFdmVudChzcmMsIGRvbmUpKTtcbiAgfVxuXG4gIF9yZW5kZXIoKSB7XG4gICAgbG9nKCdfcmVuZGVyJyk7XG4gICAgbGV0IGVsZW1lbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50KE1haW4sIHtcbiAgICAgIG1vZGVsOiB0aGlzLl9tb2RlbCxcbiAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuX2NvbmZpZ3VyYXRpb24sXG4gICAgICBvbk1vZGVsQ2hhbmdlZDogdGhpcy5vbk1vZGVsQ2hhbmdlZCxcbiAgICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQ6IHRoaXMub25Db25maWd1cmF0aW9uQ2hhbmdlZCxcbiAgICAgIGRpc2FibGVTaWRlUGFuZWw6IHRoaXMuX2Rpc2FibGVTaWRlUGFuZWwsXG4gICAgICBpbWFnZVN1cHBvcnQ6IHtcbiAgICAgICAgYWRkOiB0aGlzLmluc2VydEltYWdlLmJpbmQodGhpcyksXG4gICAgICAgIGRlbGV0ZTogdGhpcy5vbkRlbGV0ZUltYWdlLmJpbmQodGhpcylcbiAgICAgIH0sXG4gICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ6IHtcbiAgICAgICAgYWRkOiB0aGlzLmluc2VydFNvdW5kLmJpbmQodGhpcyksXG4gICAgICAgIGRlbGV0ZTogdGhpcy5vbkRlbGV0ZVNvdW5kLmJpbmQodGhpcylcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgUmVhY3RET00ucmVuZGVyKGVsZW1lbnQsIHRoaXMpO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement","normalizedModel","utils","normalizeChoices","choicesLayout","verticalMode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: ''\n }\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [], configuration && configuration.answerChoiceCount)\n }\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\n });\n\n // This is used for offering support for old models which have the property \"verticalMode\"\n normalizedModel.choicesLayout = model.choicesLayout || (model.verticalMode === false && 'horizontal') || sensibleDefaults.model.choicesLayout;\n\n return normalizedModel;\n }\n\n constructor() {\n super();\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n this._configuration = info.configuration;\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this._render();\n\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n }\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","console","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel","utils","normalizeChoices","choicesLayout","verticalMode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent,\n InsertSoundEvent,\n DeleteSoundEvent\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: ''\n }\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [], configuration && configuration.answerChoiceCount)\n }\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\n });\n\n // This is used for offering support for old models which have the property \"verticalMode\"\n normalizedModel.choicesLayout = model.choicesLayout || (model.verticalMode === false && 'horizontal') || sensibleDefaults.model.choicesLayout;\n\n return normalizedModel;\n }\n\n constructor() {\n super();\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n this._configuration = info.configuration;\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this._render();\n\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n console.log('=== insert handler: ', handler);\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n console.log('=== delete handler: ', { src, done });\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this)\n },\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
@@ -155,6 +155,7 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
155
155
  onRemoveChoice = props.onRemoveChoice,
156
156
  onAddChoice = props.onAddChoice,
157
157
  imageSupport = props.imageSupport,
158
+ uploadSoundSupport = props.uploadSoundSupport,
158
159
  onChangeModel = props.onChangeModel,
159
160
  onConfigurationChanged = props.onConfigurationChanged,
160
161
  onTeacherInstructionsChanged = props.onTeacherInstructionsChanged;
@@ -263,7 +264,8 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
263
264
  toolbarOpts: toolbarOpts,
264
265
  spellCheck: spellCheckEnabled,
265
266
  maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
266
- maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight
267
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
268
+ uploadSoundSupport: uploadSoundSupport
267
269
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
268
270
  label: prompt.label,
269
271
  className: classes.promptHolder
@@ -277,7 +279,8 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
277
279
  toolbarOpts: toolbarOpts,
278
280
  spellCheck: spellCheckEnabled,
279
281
  maxImageWidth: maxImageWidth && maxImageWidth.prompt,
280
- maxImageHeight: maxImageHeight && maxImageHeight.prompt
282
+ maxImageHeight: maxImageHeight && maxImageHeight.prompt,
283
+ uploadSoundSupport: uploadSoundSupport
281
284
  })), /*#__PURE__*/_react["default"].createElement("div", {
282
285
  className: classes.flexContainer
283
286
  }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
@@ -342,7 +345,8 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
342
345
  pluginProps: labelPlugins,
343
346
  spellCheck: spellCheckEnabled,
344
347
  maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
345
- maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight
348
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
349
+ uploadSoundSupport: uploadSoundSupport
346
350
  })), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
347
351
  key: "accessibility-".concat(index),
348
352
  label: accessibility.label,
@@ -359,7 +363,8 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
359
363
  pluginProps: labelPlugins,
360
364
  spellCheck: spellCheckEnabled,
361
365
  maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
362
- maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight
366
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
367
+ uploadSoundSupport: uploadSoundSupport
363
368
  })));
364
369
  }), /*#__PURE__*/_react["default"].createElement("br", null), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
365
370
  title: maxAnswerChoices && model.choices.length >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '',
@@ -612,4 +617,4 @@ exports.Main = Main;
612
617
  var Styled = (0, _styles.withStyles)(styles)(Main);
613
618
  var _default = Styled;
614
619
  exports["default"] = _default;
615
- //# sourceMappingURL=main.js.map
620
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzeCJdLCJuYW1lcyI6WyJQYW5lbCIsInNldHRpbmdzIiwidG9nZ2xlIiwicmFkaW8iLCJkcm9wZG93biIsIk1BWF9DSE9JQ0VTIiwic3R5bGVzIiwidGhlbWUiLCJwcm9tcHRIb2xkZXIiLCJ3aWR0aCIsInBhZGRpbmdCb3R0b20iLCJzcGFjaW5nIiwidW5pdCIsIm1hcmdpbkJvdHRvbSIsInByb21wdCIsInBhZGRpbmdUb3AiLCJyYXRpb25hbGVIb2xkZXIiLCJhY2Nlc3NpYmlsaXR5SG9sZGVyIiwicmF0aW9uYWxlIiwiYWNjZXNzaWJpbGl0eSIsImRlc2lnbiIsImNob2ljZUNvbmZpZ3VyYXRpb25Ib2xkZXIiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJjaG9pY2VDb25maWd1cmF0aW9uIiwic3dpdGNoRWxlbWVudCIsImp1c3RpZnlDb250ZW50IiwibWFyZ2luIiwiYWRkQnV0dG9uIiwiZGlzYWJsZUJ1dHRvbiIsImN1cnNvciIsInBvaW50ZXJFdmVudHMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJjb2xvciIsImRpc2FibGVkIiwiZmxleENvbnRhaW5lciIsInRpdGxlVGV4dCIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJtYXJnaW5SaWdodCIsInRvb2x0aXAiLCJ3aGl0ZVNwYWNlIiwibWF4V2lkdGgiLCJlcnJvclRleHQiLCJEZXNpZ24iLCJwcm9wcyIsImNsYXNzZXMiLCJtb2RlbCIsImNvbmZpZ3VyYXRpb24iLCJvblByb21wdENoYW5nZWQiLCJvbkNob2ljZUNoYW5nZWQiLCJvblJlbW92ZUNob2ljZSIsIm9uQWRkQ2hvaWNlIiwiaW1hZ2VTdXBwb3J0IiwidXBsb2FkU291bmRTdXBwb3J0Iiwib25DaGFuZ2VNb2RlbCIsIm9uQ29uZmlndXJhdGlvbkNoYW5nZWQiLCJvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkIiwiYWRkQ2hvaWNlQnV0dG9uIiwiZmVlZGJhY2siLCJkZWxldGVDaG9pY2UiLCJjaG9pY2VNb2RlIiwiY2hvaWNlUHJlZml4IiwicGFydGlhbFNjb3JpbmciLCJsb2NrQ2hvaWNlT3JkZXIiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwic3R1ZGVudEluc3RydWN0aW9ucyIsInNjb3JpbmdUeXBlIiwic2VxdWVudGlhbENob2ljZUxhYmVscyIsInNldHRpbmdzUGFuZWxEaXNhYmxlZCIsImNob2ljZXNMYXlvdXQiLCJzcGVsbENoZWNrIiwiZ3JpZENvbHVtbnMiLCJtYXhJbWFnZVdpZHRoIiwibWF4SW1hZ2VIZWlnaHQiLCJtYXhBbnN3ZXJDaG9pY2VzIiwibGltaXRDaG9pY2VzTnVtYmVyIiwidGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQiLCJyYXRpb25hbGVFbmFibGVkIiwiYWNjZXNzaWJpbGl0eUxhYmVsc0VuYWJsZWQiLCJmZWVkYmFja0VuYWJsZWQiLCJwcm9tcHRFbmFibGVkIiwic3BlbGxDaGVja0VuYWJsZWQiLCJjaG9pY2VzIiwiZXJyb3JzIiwiY2hvaWNlc0Vycm9ycyIsImNvcnJlY3RSZXNwb25zZUVycm9yIiwiYW5zd2VyQ2hvaWNlc0Vycm9yIiwibnJPZkNvbHVtbnNBdmFpbGFibGUiLCJsZW5ndGgiLCJBcnJheSIsImZyb20iLCJfIiwiaSIsImxhYmVsUGx1Z2lucyIsImF1ZGlvIiwidmlkZW8iLCJ0b29sYmFyT3B0cyIsInRvb2xiYXJFZGl0b3JQb3NpdGlvbiIsInBvc2l0aW9uIiwidmFsaWRhdGlvbk1lc3NhZ2UiLCJkZWZhdWx0SW1hZ2VNYXhXaWR0aCIsImRlZmF1bHRJbWFnZU1heEhlaWdodCIsIkNvbnRlbnQiLCJsYWJlbCIsIm1hcCIsImNob2ljZSIsImluZGV4IiwiYyIsInZhbHVlIiwicm9vdCIsInNldHRpbmdzSW5QYW5lbCIsIlNldHRpbmdzIiwiUHJvcGVydGllcyIsInN0dWRlbnRJbnN0cnVjdGlvbnNFbmFibGVkIiwiSW5mb0RpYWxvZyIsIm9wZW4iLCJvbkNhbmNlbCIsIm9uT2siLCJ0aXRsZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJmdW5jIiwic3RyaW5nIiwiTWFpbiIsImRpYWxvZyIsIm1pbkFuc3dlckNob2ljZXMiLCJzZXRTdGF0ZSIsIm1lc3NhZ2UiLCJzcGxpY2UiLCJvbk1vZGVsQ2hhbmdlZCIsInB1c2giLCJ1dGlscyIsImZpcnN0QXZhaWxhYmxlSW5kZXgiLCJ0eXBlIiwiY29ycmVjdCIsImtleSIsImNvcnJlY3RGb3VuZCIsInN0YXRlIiwiUmVhY3QiLCJDb21wb25lbnQiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwiZGlzYWJsZVNpZGVQYW5lbCIsInNoYXBlIiwiYWRkIiwiU3R5bGVkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBT0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFRQSxLQUFSLEdBQTJDQyxrQkFBM0MsQ0FBUUQsS0FBUjtBQUFBLElBQWVFLE1BQWYsR0FBMkNELGtCQUEzQyxDQUFlQyxNQUFmO0FBQUEsSUFBdUJDLEtBQXZCLEdBQTJDRixrQkFBM0MsQ0FBdUJFLEtBQXZCO0FBQUEsSUFBOEJDLFFBQTlCLEdBQTJDSCxrQkFBM0MsQ0FBOEJHLFFBQTlCO0FBRUEsSUFBTUMsV0FBVyxHQUFHLENBQXBCOztBQUVBLElBQU1DLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQUNDLEtBQUQ7QUFBQSxTQUFZO0FBQ3pCQyxJQUFBQSxZQUFZLEVBQUU7QUFDWkMsTUFBQUEsS0FBSyxFQUFFLE1BREs7QUFFWkMsTUFBQUEsYUFBYSxFQUFFSCxLQUFLLENBQUNJLE9BQU4sQ0FBY0MsSUFBZCxHQUFxQixDQUZ4QjtBQUdaQyxNQUFBQSxZQUFZLEVBQUVOLEtBQUssQ0FBQ0ksT0FBTixDQUFjQyxJQUFkLEdBQXFCO0FBSHZCLEtBRFc7QUFNekJFLElBQUFBLE1BQU0sRUFBRTtBQUNOQyxNQUFBQSxVQUFVLEVBQUVS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QWMsRUFBRSxLQUFLaEYsY0FIdkI7QUFJRSxRQUFBLGVBQWUsRUFBRSxLQUFLRCxlQUp4QjtBQUtFLFFBQUEsV0FBVyxFQUFFLEtBQUtFLFdBTHBCO0FBTUUsUUFBQSxlQUFlLEVBQUUsS0FBS0gsZUFOeEI7QUFPRSxRQUFBLDRCQUE0QixFQUFFLEtBQUtRO0FBUHJDLFNBUEYsQ0FERjtBQW1CRDs7O0VBdEp1Qm1GLGtCQUFNQyxTOzs7aUNBQW5CaEIsSSxlQUNRO0FBQ2pCOUUsRUFBQUEsS0FBSyxFQUFFMEUsc0JBQVVxQixNQUFWLENBQWlCQyxVQURQO0FBRWpCL0YsRUFBQUEsYUFBYSxFQUFFeUUsc0JBQVVxQixNQUFWLENBQWlCQyxVQUZmO0FBR2pCQyxFQUFBQSxnQkFBZ0IsRUFBRXZCLHNCQUFVQyxJQUhYO0FBSWpCUyxFQUFBQSxjQUFjLEVBQUVWLHNCQUFVRSxJQUFWLENBQWVvQixVQUpkO0FBS2pCdkYsRUFBQUEsc0JBQXNCLEVBQUVpRSxzQkFBVUUsSUFBVixDQUFlb0IsVUFMdEI7QUFNakJqRyxFQUFBQSxPQUFPLEVBQUUyRSxzQkFBVXFCLE1BQVYsQ0FBaUJDLFVBTlQ7QUFPakIxRixFQUFBQSxZQUFZLEVBQUVvRSxzQkFBVXdCLEtBQVYsQ0FBZ0I7QUFDNUJDLElBQUFBLEdBQUcsRUFBRXpCLHNCQUFVRSxJQUFWLENBQWVvQixVQURRO0FBRTVCLGNBQVF0QixzQkFBVUUsSUFBVixDQUFlb0I7QUFGSyxHQUFoQjtBQVBHLEM7QUF3SnJCLElBQU1JLE1BQU0sR0FBRyx3QkFBVy9JLE1BQVgsRUFBbUJ5SCxJQUFuQixDQUFmO2VBRWVzQixNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgRWRpdGFibGVIdG1sIGZyb20gJ0BwaWUtbGliL2VkaXRhYmxlLWh0bWwnO1xuaW1wb3J0IHtcbiAgSW5wdXRDb250YWluZXIsXG4gIENob2ljZUNvbmZpZ3VyYXRpb24sXG4gIHNldHRpbmdzLFxuICBsYXlvdXQsXG4gIGNob2ljZVV0aWxzIGFzIHV0aWxzLFxufSBmcm9tICdAcGllLWxpYi9jb25maWctdWknO1xuaW1wb3J0IHsgY29sb3IgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0J1dHRvbic7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1Rvb2x0aXAnO1xuaW1wb3J0IERpYWxvZyBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9EaWFsb2cnO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ1RpdGxlJztcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ0FjdGlvbnMnO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVHlwb2dyYXBoeSc7XG5pbXBvcnQgSW5mbyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvSW5mbyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVZhbGlkYXRpb25NZXNzYWdlIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHsgUGFuZWwsIHRvZ2dsZSwgcmFkaW8sIGRyb3Bkb3duIH0gPSBzZXR0aW5ncztcblxuY29uc3QgTUFYX0NIT0lDRVMgPSA5O1xuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIHByb21wdEhvbGRlcjoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICBtYXJnaW5Cb3R0b206IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIHByb21wdDoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgfSxcbiAgcmF0aW9uYWxlSG9sZGVyOiB7XG4gICAgd2lkdGg6ICc3MCUnLFxuICB9LFxuICBhY2Nlc3NpYmlsaXR5SG9sZGVyOiB7XG4gICAgd2lkdGg6ICc3MCUnLFxuICB9LFxuICByYXRpb25hbGU6IHtcbiAgICBwYWRkaW5nVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICB9LFxuICBhY2Nlc3NpYmlsaXR5OiB7XG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgfSxcbiAgZGVzaWduOiB7XG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMyxcbiAgfSxcbiAgY2hvaWNlQ29uZmlndXJhdGlvbkhvbGRlcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfSxcbiAgY2hvaWNlQ29uZmlndXJhdGlvbjoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZ1RvcDogdGhlbWUuc3BhY2luZy51bml0ICogMixcbiAgICBwYWRkaW5nQm90dG9tOiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICB9LFxuICBzd2l0Y2hFbGVtZW50OiB7XG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBtYXJnaW46IDAsXG4gIH0sXG4gIGFkZEJ1dHRvbjoge1xuICAgIGZsb2F0OiAncmlnaHQnLFxuICB9LFxuICBkaXNhYmxlQnV0dG9uOiB7XG4gICAgY3Vyc29yOiAnbm90LWFsbG93ZWQnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdhbGwnLFxuICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuZGlzYWJsZWQoKSxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IuZGlzYWJsZWQoKSxcbiAgICB9LFxuICAgICcmOmZvY3VzJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvci5kaXNhYmxlZCgpLFxuICAgIH0sXG4gIH0sXG4gIGZsZXhDb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgbWFyZ2luQm90dG9tOiAnNXB4J1xuICB9LFxuICB0aXRsZVRleHQ6IHtcbiAgICBmb250RmFtaWx5OiAnQ2VyZWJyaSBTYW5zJyxcbiAgICBmb250U2l6ZTogJzE4cHgnLFxuICAgIGxpbmVIZWlnaHQ6ICcxOXB4JyxcbiAgICBjb2xvcjogJyM0OTVCOEYnLFxuICAgIG1hcmdpblJpZ2h0OiAnNXB4J1xuICB9LFxuICB0b29sdGlwOiB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICB3aGl0ZVNwYWNlOiAncHJlJyxcbiAgICBtYXhXaWR0aDogJzUwMHB4J1xuICB9LFxuICBlcnJvclRleHQ6IHtcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGNvbG9yOiAncmVkJyxcbiAgICBwYWRkaW5nVG9wOiAnNXB4J1xuICB9XG59KTtcblxuY29uc3QgRGVzaWduID0gd2l0aFN0eWxlcyhzdHlsZXMpKChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBtb2RlbCxcbiAgICBjb25maWd1cmF0aW9uLFxuICAgIG9uUHJvbXB0Q2hhbmdlZCxcbiAgICBvbkNob2ljZUNoYW5nZWQsXG4gICAgb25SZW1vdmVDaG9pY2UsXG4gICAgb25BZGRDaG9pY2UsXG4gICAgaW1hZ2VTdXBwb3J0LFxuICAgIHVwbG9hZFNvdW5kU3VwcG9ydCxcbiAgICBvbkNoYW5nZU1vZGVsLFxuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZWQsXG4gICAgb25UZWFjaGVySW5zdHJ1Y3Rpb25zQ2hhbmdlZCxcbiAgfSA9IHByb3BzO1xuICBjb25zdCB7XG4gICAgcHJvbXB0ID0ge30sXG4gICAgYWRkQ2hvaWNlQnV0dG9uID0ge30sXG4gICAgZmVlZGJhY2sgPSB7fSxcbiAgICBkZWxldGVDaG9pY2UgPSB7fSxcbiAgICBjaG9pY2VNb2RlID0ge30sXG4gICAgY2hvaWNlUHJlZml4ID0ge30sXG4gICAgcGFydGlhbFNjb3JpbmcgPSB7fSxcbiAgICBsb2NrQ2hvaWNlT3JkZXIgPSB7fSxcbiAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zID0ge30sXG4gICAgc3R1ZGVudEluc3RydWN0aW9ucyA9IHt9LFxuICAgIHJhdGlvbmFsZSA9IHt9LFxuICAgIGFjY2Vzc2liaWxpdHkgPSB7fSxcbiAgICBzY29yaW5nVHlwZSA9IHt9LFxuICAgIHNlcXVlbnRpYWxDaG9pY2VMYWJlbHMgPSB7fSxcbiAgICBzZXR0aW5nc1BhbmVsRGlzYWJsZWQsXG4gICAgY2hvaWNlc0xheW91dCxcbiAgICBzcGVsbENoZWNrID0ge30sXG4gICAgZ3JpZENvbHVtbnMsXG4gICAgbWF4SW1hZ2VXaWR0aCA9IHt9LFxuICAgIG1heEltYWdlSGVpZ2h0ID0ge31cbiAgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG4gIGxldCB7IG1heEFuc3dlckNob2ljZXMgfSA9IGNvbmZpZ3VyYXRpb24gfHwge307XG4gIGNvbnN0IHtcbiAgICBsaW1pdENob2ljZXNOdW1iZXIsXG4gICAgdGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQsXG4gICAgcmF0aW9uYWxlRW5hYmxlZCxcbiAgICBhY2Nlc3NpYmlsaXR5TGFiZWxzRW5hYmxlZCxcbiAgICBmZWVkYmFja0VuYWJsZWQsXG4gICAgcHJvbXB0RW5hYmxlZCxcbiAgICBzcGVsbENoZWNrRW5hYmxlZCxcbiAgICBjaG9pY2VzLFxuICAgIGVycm9yc1xuICB9ID0gbW9kZWwgfHwge307XG5cbiAgY29uc3QgeyBjaG9pY2VzRXJyb3JzLCBjb3JyZWN0UmVzcG9uc2VFcnJvciwgYW5zd2VyQ2hvaWNlc0Vycm9yIH0gPSBlcnJvcnMgfHwge307XG4gIGNvbnN0IG5yT2ZDb2x1bW5zQXZhaWxhYmxlID0gY2hvaWNlcyAmJiBjaG9pY2VzLmxlbmd0aFxuICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogY2hvaWNlcy5sZW5ndGggfSwgKF8sIGkpID0+IGAke2kgKyAxfWApXG4gICAgOiBbXTtcblxuICBjb25zdCBsYWJlbFBsdWdpbnMgPSB7XG4gICAgYXVkaW86IHsgZGlzYWJsZWQ6IHRydWUgfSxcbiAgICB2aWRlbzogeyBkaXNhYmxlZDogdHJ1ZSB9LFxuICB9O1xuXG4gIGNvbnN0IHRvb2xiYXJPcHRzID0ge307XG5cbiAgc3dpdGNoIChtb2RlbC50b29sYmFyRWRpdG9yUG9zaXRpb24pIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgdG9vbGJhck9wdHMucG9zaXRpb24gPSAndG9wJztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0b29sYmFyT3B0cy5wb3NpdGlvbiA9ICdib3R0b20nO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBpZiBvbGQgcHJvcGVydHkgaXMgdXNlZCwgc2V0IG1heEFuc3dlckNob2ljZXMgdG8gOVxuICBpZiAobGltaXRDaG9pY2VzTnVtYmVyKSB7XG4gICAgbWF4QW5zd2VyQ2hvaWNlcyA9IE1BWF9DSE9JQ0VTO1xuICB9XG5cbiAgY29uc3QgdmFsaWRhdGlvbk1lc3NhZ2UgPSBnZW5lcmF0ZVZhbGlkYXRpb25NZXNzYWdlKGNvbmZpZ3VyYXRpb24pO1xuICBjb25zdCBkZWZhdWx0SW1hZ2VNYXhXaWR0aCA9IG1heEltYWdlV2lkdGggJiYgbWF4SW1hZ2VXaWR0aC5wcm9tcHQ7XG4gIGNvbnN0IGRlZmF1bHRJbWFnZU1heEhlaWdodCA9IG1heEltYWdlSGVpZ2h0ICYmIG1heEltYWdlSGVpZ2h0LnByb21wdDtcblxuICBjb25zdCBDb250ZW50ID0gKFxuICAgIDxkaXY+XG4gICAgICB7dGVhY2hlckluc3RydWN0aW9uc0VuYWJsZWQgJiYgKFxuICAgICAgICA8SW5wdXRDb250YWluZXJcbiAgICAgICAgICBsYWJlbD17dGVhY2hlckluc3RydWN0aW9ucy5sYWJlbH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucHJvbXB0SG9sZGVyfVxuICAgICAgICA+XG4gICAgICAgICAgPEVkaXRhYmxlSHRtbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnByb21wdH1cbiAgICAgICAgICAgIG1hcmt1cD17bW9kZWwudGVhY2hlckluc3RydWN0aW9ucyB8fCAnJ31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkfVxuICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICBub25FbXB0eT17ZmFsc2V9XG4gICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgIG1heEltYWdlV2lkdGg9e21heEltYWdlV2lkdGggJiYgbWF4SW1hZ2VXaWR0aC50ZWFjaGVySW5zdHJ1Y3Rpb25zIHx8IGRlZmF1bHRJbWFnZU1heFdpZHRofVxuICAgICAgICAgICAgbWF4SW1hZ2VIZWlnaHQ9e21heEltYWdlSGVpZ2h0ICYmIG1heEltYWdlSGVpZ2h0LnRlYWNoZXJJbnN0cnVjdGlvbnMgfHwgZGVmYXVsdEltYWdlTWF4SGVpZ2h0fVxuICAgICAgICAgICAgdXBsb2FkU291bmRTdXBwb3J0PXt1cGxvYWRTb3VuZFN1cHBvcnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9JbnB1dENvbnRhaW5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtwcm9tcHRFbmFibGVkICYmIChcbiAgICAgICAgPElucHV0Q29udGFpbmVyIGxhYmVsPXtwcm9tcHQubGFiZWx9IGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHRIb2xkZXJ9PlxuICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wcm9tcHR9XG4gICAgICAgICAgICBtYXJrdXA9e21vZGVsLnByb21wdH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblByb21wdENoYW5nZWR9XG4gICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgIG5vbkVtcHR5PXtmYWxzZX1cbiAgICAgICAgICAgIGRpc2FibGVVbmRlcmxpbmVcbiAgICAgICAgICAgIHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c31cbiAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgbWF4SW1hZ2VXaWR0aD17bWF4SW1hZ2VXaWR0aCAmJiBtYXhJbWFnZVdpZHRoLnByb21wdH1cbiAgICAgICAgICAgIG1heEltYWdlSGVpZ2h0PXttYXhJbWFnZUhlaWdodCAmJiBtYXhJbWFnZUhlaWdodC5wcm9tcHR9XG4gICAgICAgICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ9e3VwbG9hZFNvdW5kU3VwcG9ydH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0lucHV0Q29udGFpbmVyPlxuICAgICAgKX1cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmZsZXhDb250YWluZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSBjbGFzc05hbWU9e2NsYXNzZXMudGl0bGVUZXh0fT5DaG9pY2VzPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgIGNsYXNzZXM9e3sgdG9vbHRpcDogY2xhc3Nlcy50b29sdGlwIH19XG4gICAgICAgICAgZGlzYWJsZUZvY3VzTGlzdGVuZXJcbiAgICAgICAgICBkaXNhYmxlVG91Y2hMaXN0ZW5lclxuICAgICAgICAgIHBsYWNlbWVudD17J3JpZ2h0J31cbiAgICAgICAgICB0aXRsZT17dmFsaWRhdGlvbk1lc3NhZ2V9XG4gICAgICAgID5cbiAgICAgICAgICA8SW5mbyBmb250U2l6ZT17J3NtYWxsJ30gY29sb3I9eydwcmltYXJ5J30vPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtjb3JyZWN0UmVzcG9uc2VFcnJvciAmJiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5lcnJvclRleHR9Pntjb3JyZWN0UmVzcG9uc2VFcnJvcn08L2Rpdj59XG4gICAgICB7YW5zd2VyQ2hvaWNlc0Vycm9yICYmIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVycm9yVGV4dH0+e2Fuc3dlckNob2ljZXNFcnJvcn08L2Rpdj59XG4gICAgICB7Y2hvaWNlcy5tYXAoKGNob2ljZSwgaW5kZXgpID0+IChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGtleT17YGNob2ljZS0ke2luZGV4fWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmNob2ljZUNvbmZpZ3VyYXRpb25Ib2xkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICA8Q2hvaWNlQ29uZmlndXJhdGlvblxuICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgIGluZGV4PXtpbmRleCArIDF9XG4gICAgICAgICAgICB1c2VMZXR0ZXJPcmRlcmluZz17bW9kZWwuY2hvaWNlUHJlZml4ID09PSAnbGV0dGVycyd9XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY2hvaWNlQ29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgIG1vZGU9e21vZGVsLmNob2ljZU1vZGV9XG4gICAgICAgICAgICBkYXRhPXtjaG9pY2V9XG4gICAgICAgICAgICBkZWZhdWx0RmVlZGJhY2s9e3t9fVxuICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICBvbkRlbGV0ZT17KCkgPT4gb25SZW1vdmVDaG9pY2UoaW5kZXgpfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhjKSA9PiBvbkNob2ljZUNoYW5nZWQoaW5kZXgsIGMpfVxuICAgICAgICAgICAgYWxsb3dGZWVkQmFjaz17ZmVlZGJhY2tFbmFibGVkfVxuICAgICAgICAgICAgYWxsb3dEZWxldGU9e2RlbGV0ZUNob2ljZS5zZXR0aW5nc31cbiAgICAgICAgICAgIG5vTGFiZWxzXG4gICAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgICBzcGVsbENoZWNrPXtzcGVsbENoZWNrRW5hYmxlZH1cbiAgICAgICAgICAgIGVycm9yPXtjaG9pY2VzRXJyb3JzICYmIGNob2ljZXNFcnJvcnNbY2hvaWNlLnZhbHVlXSA/IGNob2ljZXNFcnJvcnNbY2hvaWNlLnZhbHVlXSA6IG51bGx9XG4gICAgICAgICAgICBub0NvcnJlY3RBbnN3ZXJFcnJvcj17Y29ycmVjdFJlc3BvbnNlRXJyb3J9XG4gICAgICAgICAgICBtYXhJbWFnZVdpZHRoPXttYXhJbWFnZVdpZHRoICYmIG1heEltYWdlV2lkdGguY2hvaWNlcyB8fCBkZWZhdWx0SW1hZ2VNYXhXaWR0aH1cbiAgICAgICAgICAgIG1heEltYWdlSGVpZ2h0PXttYXhJbWFnZUhlaWdodCAmJiBtYXhJbWFnZUhlaWdodC5jaG9pY2VzIHx8IGRlZmF1bHRJbWFnZU1heEhlaWdodH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtyYXRpb25hbGVFbmFibGVkICYmIChcbiAgICAgICAgICAgIDxJbnB1dENvbnRhaW5lclxuICAgICAgICAgICAgICBrZXk9e2ByYXRpb25hbGUtJHtpbmRleH1gfVxuICAgICAgICAgICAgICBsYWJlbD17cmF0aW9uYWxlLmxhYmVsfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucmF0aW9uYWxlSG9sZGVyfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8RWRpdGFibGVIdG1sXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJhdGlvbmFsZX1cbiAgICAgICAgICAgICAgICBtYXJrdXA9e2Nob2ljZS5yYXRpb25hbGUgfHwgJyd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhjKSA9PlxuICAgICAgICAgICAgICAgICAgb25DaG9pY2VDaGFuZ2VkKGluZGV4LCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNob2ljZSxcbiAgICAgICAgICAgICAgICAgICAgcmF0aW9uYWxlOiBjLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW1hZ2VTdXBwb3J0PXtpbWFnZVN1cHBvcnR9XG4gICAgICAgICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgICAgICAgIHBsdWdpblByb3BzPXtsYWJlbFBsdWdpbnN9XG4gICAgICAgICAgICAgICAgc3BlbGxDaGVjaz17c3BlbGxDaGVja0VuYWJsZWR9XG4gICAgICAgICAgICAgICAgbWF4SW1hZ2VXaWR0aD17bWF4SW1hZ2VXaWR0aCAmJiBtYXhJbWFnZVdpZHRoLnJhdGlvbmFsZSB8fCBkZWZhdWx0SW1hZ2VNYXhXaWR0aH1cbiAgICAgICAgICAgICAgICBtYXhJbWFnZUhlaWdodD17bWF4SW1hZ2VIZWlnaHQgJiYgbWF4SW1hZ2VIZWlnaHQucmF0aW9uYWxlIHx8IGRlZmF1bHRJbWFnZU1heEhlaWdodH1cbiAgICAgICAgICAgICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ9e3VwbG9hZFNvdW5kU3VwcG9ydH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7YWNjZXNzaWJpbGl0eUxhYmVsc0VuYWJsZWQgJiYgKFxuICAgICAgICAgICAgPElucHV0Q29udGFpbmVyXG4gICAgICAgICAgICAgIGtleT17YGFjY2Vzc2liaWxpdHktJHtpbmRleH1gfVxuICAgICAgICAgICAgICBsYWJlbD17YWNjZXNzaWJpbGl0eS5sYWJlbH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjY2Vzc2liaWxpdHlIb2xkZXJ9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxFZGl0YWJsZUh0bWxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWNjZXNzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICBtYXJrdXA9e2Nob2ljZS5hY2Nlc3NpYmlsaXR5IHx8ICcnfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoYykgPT5cbiAgICAgICAgICAgICAgICAgIG9uQ2hvaWNlQ2hhbmdlZChpbmRleCwge1xuICAgICAgICAgICAgICAgICAgICAuLi5jaG9pY2UsXG4gICAgICAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IGMsXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbWFnZVN1cHBvcnQ9e2ltYWdlU3VwcG9ydH1cbiAgICAgICAgICAgICAgICBwbHVnaW5Qcm9wcz17bGFiZWxQbHVnaW5zfVxuICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2s9e3NwZWxsQ2hlY2tFbmFibGVkfVxuICAgICAgICAgICAgICAgIG1heEltYWdlV2lkdGg9e21heEltYWdlV2lkdGggJiYgbWF4SW1hZ2VXaWR0aC5jaG9pY2VzIHx8IGRlZmF1bHRJbWFnZU1heFdpZHRofVxuICAgICAgICAgICAgICAgIG1heEltYWdlSGVpZ2h0PXttYXhJbWFnZUhlaWdodCAmJiBtYXhJbWFnZUhlaWdodC5jaG9pY2VzIHx8IGRlZmF1bHRJbWFnZU1heEhlaWdodH1cbiAgICAgICAgICAgICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ9e3VwbG9hZFNvdW5kU3VwcG9ydH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvSW5wdXRDb250YWluZXI+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cbiAgICAgIDxici8+XG4gICAgICB7YWRkQ2hvaWNlQnV0dG9uLnNldHRpbmdzICYmIChcbiAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICBtYXhBbnN3ZXJDaG9pY2VzICYmIG1vZGVsLmNob2ljZXMubGVuZ3RoID49IG1heEFuc3dlckNob2ljZXNcbiAgICAgICAgICAgICAgPyBgT25seSAke21heEFuc3dlckNob2ljZXN9IGFsbG93ZWQgbWF4aW11bWBcbiAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBjbGFzc2VzPXt7IHRvb2x0aXA6IGNsYXNzZXMudG9vbHRpcCB9fVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3Nlcz17eyByb290OiBtYXhBbnN3ZXJDaG9pY2VzICYmIG1vZGVsLmNob2ljZXMubGVuZ3RoID49IG1heEFuc3dlckNob2ljZXMgJiYgY2xhc3Nlcy5kaXNhYmxlQnV0dG9uIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWRkQnV0dG9ufVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgb25DbGljaz17b25BZGRDaG9pY2V9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2FkZENob2ljZUJ1dHRvbi5sYWJlbH1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcblxuICBjb25zdCBzZXR0aW5nc0luUGFuZWwgPSB7XG4gICAgY2hvaWNlTW9kZTpcbiAgICAgIGNob2ljZU1vZGUuc2V0dGluZ3MgJiYgcmFkaW8oY2hvaWNlTW9kZS5sYWJlbCwgWydjaGVja2JveCcsICdyYWRpbyddKSxcbiAgICAnc2VxdWVudGlhbENob2ljZUxhYmVscy5lbmFibGVkJzpcbiAgICAgIHNlcXVlbnRpYWxDaG9pY2VMYWJlbHMuc2V0dGluZ3MgJiZcbiAgICAgIHRvZ2dsZShzZXF1ZW50aWFsQ2hvaWNlTGFiZWxzLmxhYmVsLCB0cnVlKSxcbiAgICBjaG9pY2VQcmVmaXg6XG4gICAgICBjaG9pY2VQcmVmaXguc2V0dGluZ3MgJiZcbiAgICAgIHJhZGlvKGNob2ljZVByZWZpeC5sYWJlbCwgWydudW1iZXJzJywgJ2xldHRlcnMnXSksXG4gICAgcGFydGlhbFNjb3Jpbmc6IHBhcnRpYWxTY29yaW5nLnNldHRpbmdzICYmIHRvZ2dsZShwYXJ0aWFsU2NvcmluZy5sYWJlbCksXG4gICAgbG9ja0Nob2ljZU9yZGVyOiBsb2NrQ2hvaWNlT3JkZXIuc2V0dGluZ3MgJiYgdG9nZ2xlKGxvY2tDaG9pY2VPcmRlci5sYWJlbCksXG4gICAgZmVlZGJhY2tFbmFibGVkOiBmZWVkYmFjay5zZXR0aW5ncyAmJiB0b2dnbGUoZmVlZGJhY2subGFiZWwpLFxuICAgIGNob2ljZXNMYXlvdXQ6XG4gICAgICBjaG9pY2VzTGF5b3V0LnNldHRpbmdzICYmXG4gICAgICBkcm9wZG93bihjaG9pY2VzTGF5b3V0LmxhYmVsLCBbJ3ZlcnRpY2FsJywgJ2dyaWQnLCAnaG9yaXpvbnRhbCddKSxcbiAgICBncmlkQ29sdW1uczpcbiAgICAgIGNob2ljZXNMYXlvdXQuc2V0dGluZ3MgJiZcbiAgICAgIG1vZGVsLmNob2ljZXNMYXlvdXQgPT09ICdncmlkJyAmJlxuICAgICAgbnJPZkNvbHVtbnNBdmFpbGFibGUubGVuZ3RoID4gMCAmJlxuICAgICAgZHJvcGRvd24oZ3JpZENvbHVtbnMubGFiZWwsIG5yT2ZDb2x1bW5zQXZhaWxhYmxlKSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmRlc2lnbn0+XG4gICAgICB7c2V0dGluZ3NQYW5lbERpc2FibGVkID8gKFxuICAgICAgICBDb250ZW50XG4gICAgICApIDogKFxuICAgICAgICA8bGF5b3V0LkNvbmZpZ0xheW91dFxuICAgICAgICAgIHNldHRpbmdzPXtcbiAgICAgICAgICAgIDxQYW5lbFxuICAgICAgICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlTW9kZWw9e29uQ2hhbmdlTW9kZWx9XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249e2NvbmZpZ3VyYXRpb259XG4gICAgICAgICAgICAgIG9uQ2hhbmdlQ29uZmlndXJhdGlvbj17b25Db25maWd1cmF0aW9uQ2hhbmdlZH1cbiAgICAgICAgICAgICAgZ3JvdXBzPXt7XG4gICAgICAgICAgICAgICAgU2V0dGluZ3M6IHNldHRpbmdzSW5QYW5lbCxcbiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICB0ZWFjaGVySW5zdHJ1Y3Rpb25zRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgICAgdGVhY2hlckluc3RydWN0aW9ucy5zZXR0aW5ncyAmJlxuICAgICAgICAgICAgICAgICAgICB0b2dnbGUodGVhY2hlckluc3RydWN0aW9ucy5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBzdHVkZW50SW5zdHJ1Y3Rpb25zRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgICAgc3R1ZGVudEluc3RydWN0aW9ucy5zZXR0aW5ncyAmJlxuICAgICAgICAgICAgICAgICAgICB0b2dnbGUoc3R1ZGVudEluc3RydWN0aW9ucy5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBwcm9tcHRFbmFibGVkOiBwcm9tcHQuc2V0dGluZ3MgJiYgdG9nZ2xlKHByb21wdC5sYWJlbCksXG4gICAgICAgICAgICAgICAgICByYXRpb25hbGVFbmFibGVkOlxuICAgICAgICAgICAgICAgICAgICByYXRpb25hbGUuc2V0dGluZ3MgJiYgdG9nZ2xlKHJhdGlvbmFsZS5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBzcGVsbENoZWNrRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgICAgc3BlbGxDaGVjay5zZXR0aW5ncyAmJiB0b2dnbGUoc3BlbGxDaGVjay5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBhY2Nlc3NpYmlsaXR5TGFiZWxzRW5hYmxlZDpcbiAgICAgICAgICAgICAgICAgICAgYWNjZXNzaWJpbGl0eS5zZXR0aW5ncyAmJiB0b2dnbGUoYWNjZXNzaWJpbGl0eS5sYWJlbCksXG4gICAgICAgICAgICAgICAgICBzY29yaW5nVHlwZTpcbiAgICAgICAgICAgICAgICAgICAgc2NvcmluZ1R5cGUuc2V0dGluZ3MgJiZcbiAgICAgICAgICAgICAgICAgICAgcmFkaW8oc2NvcmluZ1R5cGUubGFiZWwsIFsnYXV0bycsICdydWJyaWMnXSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge0NvbnRlbnR9XG4gICAgICAgIDwvbGF5b3V0LkNvbmZpZ0xheW91dD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuY29uc3QgSW5mb0RpYWxvZyA9ICh7IG9wZW4sIG9uQ2FuY2VsLCBvbk9rLCB0aXRsZSB9KSA9PiAoXG4gIDxEaWFsb2cgb3Blbj17b3Blbn0+XG4gICAgPERpYWxvZ1RpdGxlPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAge29uT2sgJiYgKFxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uT2t9IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgIE9LXG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtvbkNhbmNlbCAmJiAoXG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25DYW5jZWx9IGNvbG9yPVwicHJpbWFyeVwiPlxuICAgICAgICAgIENhbmNlbFxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9EaWFsb2dBY3Rpb25zPlxuICA8L0RpYWxvZz5cbik7XG5cbkluZm9EaWFsb2cucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DYW5jZWw6IFByb3BUeXBlcy5mdW5jLFxuICBvbk9rOiBQcm9wVHlwZXMuZnVuYyxcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5leHBvcnQgY2xhc3MgTWFpbiBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBjb25maWd1cmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZGlzYWJsZVNpZGVQYW5lbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgb25Nb2RlbENoYW5nZWQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgaW1hZ2VTdXBwb3J0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgYWRkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgZGVsZXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIH0pLFxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGRpYWxvZzoge1xuICAgICAgb3BlbjogZmFsc2UsXG4gICAgfSxcbiAgfTtcblxuICBvblJlbW92ZUNob2ljZSA9IChpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwsIGNvbmZpZ3VyYXRpb24gfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgeyBtaW5BbnN3ZXJDaG9pY2VzIH0gPSBjb25maWd1cmF0aW9uIHx8IHt9O1xuXG4gICAgaWYgKG1pbkFuc3dlckNob2ljZXMgJiYgbW9kZWwuY2hvaWNlcy5sZW5ndGggPT09IG1pbkFuc3dlckNob2ljZXMpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkaWFsb2c6IHtcbiAgICAgICAgICBvcGVuOiB0cnVlLFxuICAgICAgICAgIG1lc3NhZ2U6IGBUaGVyZSBjYW4ndCBiZSBsZXNzIHRoYW4gJHttaW5BbnN3ZXJDaG9pY2VzfSBjaG9pY2VzLmAsXG4gICAgICAgICAgb25PazogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGRpYWxvZzoge1xuICAgICAgICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW9kZWwuY2hvaWNlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZChtb2RlbCk7XG4gICAgfVxuICB9O1xuXG4gIG9uQWRkQ2hvaWNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgbW9kZWwsIGNvbmZpZ3VyYXRpb24gfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IHsgbWF4QW5zd2VyQ2hvaWNlcyB9ID0gY29uZmlndXJhdGlvbiB8fCB7fTtcbiAgICBjb25zdCB7IGxpbWl0Q2hvaWNlc051bWJlciB9ID0gbW9kZWwgfHwge307XG5cbiAgICAvLyBpZiBvbGQgcHJvcGVydHkgaXMgdXNlZCwgc2V0IG1heEFuc3dlckNob2ljZXMgdG8gOVxuICAgIGlmIChsaW1pdENob2ljZXNOdW1iZXIpIHtcbiAgICAgIG1heEFuc3dlckNob2ljZXMgPSBNQVhfQ0hPSUNFUztcbiAgICB9XG5cbiAgICBpZiAobWF4QW5zd2VyQ2hvaWNlcyAmJiBtb2RlbC5jaG9pY2VzLmxlbmd0aCA+PSBtYXhBbnN3ZXJDaG9pY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbW9kZWwuY2hvaWNlcy5wdXNoKHtcbiAgICAgIGxhYmVsOiAnJyxcbiAgICAgIHZhbHVlOiB1dGlscy5maXJzdEF2YWlsYWJsZUluZGV4KG1vZGVsLmNob2ljZXMubWFwKChjKSA9PiBjLnZhbHVlKSwgMCksXG4gICAgICBmZWVkYmFjazogeyB0eXBlOiAnbm9uZScgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZChtb2RlbCk7XG4gIH07XG5cbiAgb25DaG9pY2VDaGFuZ2VkID0gKGluZGV4LCBjaG9pY2UpID0+IHtcbiAgICBjb25zdCB7IG1vZGVsIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKGNob2ljZS5jb3JyZWN0ICYmIG1vZGVsLmNob2ljZU1vZGUgPT09ICdyYWRpbycpIHtcbiAgICAgIG1vZGVsLmNob2ljZXMgPSBtb2RlbC5jaG9pY2VzLm1hcCgoYykgPT4ge1xuICAgICAgICByZXR1cm4gbWVyZ2Uoe30sIGMsIHsgY29ycmVjdDogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBtb2RlbC5jaG9pY2VzLnNwbGljZShpbmRleCwgMSwgY2hvaWNlKTtcbiAgICB0aGlzLnByb3BzLm9uTW9kZWxDaGFuZ2VkKG1vZGVsKTtcbiAgfTtcblxuICBvblByb21wdENoYW5nZWQgPSAocHJvbXB0KSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbk1vZGVsQ2hhbmdlZCh7XG4gICAgICAuLi50aGlzLnByb3BzLm1vZGVsLFxuICAgICAgcHJvbXB0LFxuICAgIH0pO1xuICB9O1xuXG4gIG9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWQgPSAodGVhY2hlckluc3RydWN0aW9ucykgPT4ge1xuICAgIHRoaXMucHJvcHMub25Nb2RlbENoYW5nZWQoe1xuICAgICAgLi4udGhpcy5wcm9wcy5tb2RlbCxcbiAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnMsXG4gICAgfSk7XG4gIH07XG5cbiAgb25Nb2RlbENoYW5nZWQgPSAobW9kZWwsIGtleSkgPT4ge1xuICAgIGNvbnN0IHsgb25Nb2RlbENoYW5nZWQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnY2hvaWNlTW9kZSc6IHtcbiAgICAgICAgbGV0IHZhbHVlID0gbW9kZWwuY2hvaWNlTW9kZTtcblxuICAgICAgICBpZiAodmFsdWUgPT09ICdyYWRpbycpIHtcbiAgICAgICAgICBsZXQgY29ycmVjdEZvdW5kID0gZmFsc2U7XG5cbiAgICAgICAgICBtb2RlbC5jaG9pY2VzID0gbW9kZWwuY2hvaWNlcy5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgIGlmIChjb3JyZWN0Rm91bmQpIHtcbiAgICAgICAgICAgICAgYy5jb3JyZWN0ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjLmNvcnJlY3QpIHtcbiAgICAgICAgICAgICAgY29ycmVjdEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBvbk1vZGVsQ2hhbmdlZChtb2RlbCwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgb25Nb2RlbENoYW5nZWQobW9kZWwpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZGlhbG9nIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIDxJbmZvRGlhbG9nXG4gICAgICAgICAgb3Blbj17ZGlhbG9nLm9wZW59XG4gICAgICAgICAgdGl0bGU9e2RpYWxvZy5tZXNzYWdlfVxuICAgICAgICAgIG9uQ2FuY2VsPXtkaWFsb2cub25DYW5jZWx9XG4gICAgICAgICAgb25Paz17ZGlhbG9nLm9uT2t9XG4gICAgICAgIC8+XG4gICAgICAgIDxEZXNpZ25cbiAgICAgICAgICB7Li4udGhpcy5wcm9wc31cbiAgICAgICAgICBvbkNoYW5nZU1vZGVsPXt0aGlzLm9uTW9kZWxDaGFuZ2VkfVxuICAgICAgICAgIG9uUmVtb3ZlQ2hvaWNlPXt0aGlzLm9uUmVtb3ZlQ2hvaWNlfVxuICAgICAgICAgIG9uQ2hvaWNlQ2hhbmdlZD17dGhpcy5vbkNob2ljZUNoYW5nZWR9XG4gICAgICAgICAgb25BZGRDaG9pY2U9e3RoaXMub25BZGRDaG9pY2V9XG4gICAgICAgICAgb25Qcm9tcHRDaGFuZ2VkPXt0aGlzLm9uUHJvbXB0Q2hhbmdlZH1cbiAgICAgICAgICBvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkPXt0aGlzLm9uVGVhY2hlckluc3RydWN0aW9uc0NoYW5nZWR9XG4gICAgICAgIC8+XG4gICAgICA8Lz5cbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFN0eWxlZCA9IHdpdGhTdHlsZXMoc3R5bGVzKShNYWluKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkO1xuIl19