@pie-element/select-text 9.6.2-beta.1 → 9.6.2-beta.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 +42 -0
- package/configure/CHANGELOG.md +41 -0
- package/configure/lib/defaultConfiguration.js +1 -12
- package/configure/lib/defaultConfiguration.js.map +1 -1
- package/configure/lib/design.js +68 -456
- package/configure/lib/design.js.map +1 -1
- package/configure/lib/index.js +1 -7
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/utils.js +2 -26
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +4 -2
- package/controller/CHANGELOG.md +40 -0
- package/controller/lib/index.js +2 -3
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +3 -2
- package/docs/demo/generate.js +44 -101
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/main.js +10 -44
- package/lib/main.js.map +1 -1
- package/lib/print.js +1 -1
- package/lib/print.js.map +1 -1
- package/module/configure.js +79560 -8795
- package/module/controller.js +112 -1056
- package/module/demo.js +44 -101
- package/module/element.js +6345 -7932
- package/module/manifest.json +0 -4
- package/module/print-demo.js +44 -101
- package/module/print.js +6345 -7932
- package/package.json +5 -2
- package/configure/lib/__tests__/design.test.js +0 -214
- package/controller/lib/__tests__/index.test.js +0 -833
- package/lib/__tests__/index.test.js +0 -91
- package/lib/__tests__/main.test.js +0 -83
package/package.json
CHANGED
|
@@ -4,12 +4,15 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"repository": "pie-framework/pie-elements",
|
|
7
|
-
"version": "9.6.2-beta.
|
|
7
|
+
"version": "9.6.2-beta.2",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@material-ui/core": "^3.9.2",
|
|
11
11
|
"@pie-framework/pie-player-events": "^0.1.0",
|
|
12
|
-
"@pie-lib/
|
|
12
|
+
"@pie-lib/correct-answer-toggle": "^2.14.1",
|
|
13
|
+
"@pie-lib/math-rendering": "^3.11.1",
|
|
14
|
+
"@pie-lib/render-ui": "^4.24.1",
|
|
15
|
+
"@pie-lib/text-select": "^1.21.1",
|
|
13
16
|
"prop-types": "^15.6.1",
|
|
14
17
|
"react": "^16.8.1",
|
|
15
18
|
"react-dom": "^16.8.1"
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
-
|
|
7
|
-
var _enzyme = require("enzyme");
|
|
8
|
-
|
|
9
|
-
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
|
|
11
|
-
var _design = require("../design");
|
|
12
|
-
|
|
13
|
-
var _defaultConfiguration = _interopRequireDefault(require("../defaultConfiguration"));
|
|
14
|
-
|
|
15
|
-
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; }
|
|
16
|
-
|
|
17
|
-
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; }
|
|
18
|
-
|
|
19
|
-
jest.mock('@pie-lib/pie-toolbox/config-ui', function () {
|
|
20
|
-
return {
|
|
21
|
-
layout: {
|
|
22
|
-
ConfigLayout: function ConfigLayout(props) {
|
|
23
|
-
return /*#__PURE__*/_react["default"].createElement("div", null, props.children);
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
settings: {
|
|
27
|
-
Panel: function Panel(props) {
|
|
28
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
29
|
-
oChangeModel: props.onChange
|
|
30
|
-
});
|
|
31
|
-
},
|
|
32
|
-
toggle: jest.fn(),
|
|
33
|
-
radio: jest.fn()
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
jest.mock('lodash/debounce', function () {
|
|
38
|
-
return function (fn) {
|
|
39
|
-
return fn;
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
describe('design', function () {
|
|
43
|
-
var w;
|
|
44
|
-
var onChange;
|
|
45
|
-
var onPromptChanged;
|
|
46
|
-
var onRationaleChanged;
|
|
47
|
-
|
|
48
|
-
var getModel = function getModel() {
|
|
49
|
-
return {
|
|
50
|
-
tokens: []
|
|
51
|
-
};
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
beforeEach(function () {
|
|
55
|
-
onChange = jest.fn();
|
|
56
|
-
onPromptChanged = jest.fn();
|
|
57
|
-
onRationaleChanged = jest.fn();
|
|
58
|
-
w = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
|
|
59
|
-
model: getModel(),
|
|
60
|
-
configuration: _defaultConfiguration["default"].configuration,
|
|
61
|
-
classes: {},
|
|
62
|
-
className: 'foo',
|
|
63
|
-
onModelChanged: onChange,
|
|
64
|
-
onPromptChanged: onPromptChanged,
|
|
65
|
-
onRationaleChanged: onRationaleChanged
|
|
66
|
-
}));
|
|
67
|
-
});
|
|
68
|
-
describe('snapshot', function () {
|
|
69
|
-
it('renders all items with defaultProps', function () {
|
|
70
|
-
expect(w).toMatchSnapshot();
|
|
71
|
-
});
|
|
72
|
-
it('tokenizer renders with html entities', function () {
|
|
73
|
-
expect((0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
|
|
74
|
-
model: {
|
|
75
|
-
text: '<p>“Lucy?? Are you using your time wisely to plan your project?!!!” Mr. Wilson asked.</p><p>Lucy looked a little confused at first. Ã Then she grinned and proudly stated, “Why, yes I am! I plan to make a bird feeder for that tree out our window!”</p>',
|
|
76
|
-
tokens: []
|
|
77
|
-
},
|
|
78
|
-
configuration: _defaultConfiguration["default"].configuration,
|
|
79
|
-
classes: {},
|
|
80
|
-
className: 'foo',
|
|
81
|
-
onModelChanged: onChange,
|
|
82
|
-
onPromptChanged: onPromptChanged,
|
|
83
|
-
onRationaleChanged: onRationaleChanged
|
|
84
|
-
}))).toMatchSnapshot();
|
|
85
|
-
});
|
|
86
|
-
it('renders all items except feedback', function () {
|
|
87
|
-
var defaultConfiguration = _defaultConfiguration["default"].configuration;
|
|
88
|
-
defaultConfiguration.feedback.settings = false;
|
|
89
|
-
var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
|
|
90
|
-
model: getModel(),
|
|
91
|
-
configuration: defaultConfiguration,
|
|
92
|
-
classes: {},
|
|
93
|
-
className: 'foo',
|
|
94
|
-
onModelChanged: onChange,
|
|
95
|
-
onPromptChanged: onPromptChanged,
|
|
96
|
-
onRationaleChanged: onRationaleChanged
|
|
97
|
-
}));
|
|
98
|
-
expect(wrapper).toMatchSnapshot();
|
|
99
|
-
});
|
|
100
|
-
it('renders all items except the content input', function () {
|
|
101
|
-
var defaultConfiguration = _defaultConfiguration["default"].configuration;
|
|
102
|
-
defaultConfiguration.text.settings = false;
|
|
103
|
-
var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_design.Design, {
|
|
104
|
-
model: getModel(),
|
|
105
|
-
configuration: defaultConfiguration,
|
|
106
|
-
classes: {},
|
|
107
|
-
className: 'foo',
|
|
108
|
-
onModelChanged: onChange,
|
|
109
|
-
onPromptChanged: onPromptChanged,
|
|
110
|
-
onRationaleChanged: onRationaleChanged
|
|
111
|
-
}));
|
|
112
|
-
expect(wrapper).toMatchSnapshot();
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
describe('logic', function () {
|
|
116
|
-
var assert = function assert(fn, args, expected) {
|
|
117
|
-
var e = expected(getModel());
|
|
118
|
-
it("".concat(fn, " ").concat(JSON.stringify(args), " => ").concat(JSON.stringify(e)), function () {
|
|
119
|
-
var instance = w.instance();
|
|
120
|
-
instance[fn].apply(instance, args); //jest.runAllTimers();
|
|
121
|
-
|
|
122
|
-
expect(onChange).toBeCalledWith(e);
|
|
123
|
-
});
|
|
124
|
-
}; // describe('changeText', () => {
|
|
125
|
-
// assert('changeText', [{ target: { value: 'foo' } }], (m) => ({
|
|
126
|
-
// ...m,
|
|
127
|
-
// text: 'foo',
|
|
128
|
-
// }));
|
|
129
|
-
// });
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
describe('changeTokens', function () {
|
|
133
|
-
assert('changeTokens', [[{
|
|
134
|
-
start: 0,
|
|
135
|
-
end: 1,
|
|
136
|
-
text: 'f'
|
|
137
|
-
}], 'words'], function (m) {
|
|
138
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
139
|
-
maxSelections: 0,
|
|
140
|
-
tokens: [{
|
|
141
|
-
start: 0,
|
|
142
|
-
end: 1,
|
|
143
|
-
text: 'f'
|
|
144
|
-
}],
|
|
145
|
-
mode: 'words'
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
assert('changeTokens', [[{
|
|
149
|
-
start: 0,
|
|
150
|
-
end: 8,
|
|
151
|
-
text: 'Foo bar.',
|
|
152
|
-
correct: true
|
|
153
|
-
}], 'sentences'], function (m) {
|
|
154
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
155
|
-
maxSelections: 1,
|
|
156
|
-
tokens: [{
|
|
157
|
-
start: 0,
|
|
158
|
-
end: 8,
|
|
159
|
-
text: 'Foo bar.',
|
|
160
|
-
correct: true
|
|
161
|
-
}],
|
|
162
|
-
mode: 'sentences'
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
describe('changeMaxSelections', function () {
|
|
167
|
-
assert('changeMaxSelections', [{}, 4], function (m) {
|
|
168
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
169
|
-
maxSelections: 4
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
describe('changeFeedback', function () {
|
|
174
|
-
assert('changeFeedback', [{
|
|
175
|
-
correctFeedbackType: 'none'
|
|
176
|
-
}], function (m) {
|
|
177
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
178
|
-
feedback: {
|
|
179
|
-
correctFeedbackType: 'none'
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
describe('changePartialScoring', function () {
|
|
185
|
-
assert('changePartialScoring', [true], function (m) {
|
|
186
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
187
|
-
partialScoring: true
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
describe('changePrompt', function () {
|
|
192
|
-
assert('onPromptChanged', ['New Prompt'], function (m) {
|
|
193
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
194
|
-
prompt: 'New Prompt'
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
describe('changeTeacherInstructions', function () {
|
|
199
|
-
assert('onTeacherInstructionsChanged', ['New Teacher Instructions'], function (m) {
|
|
200
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
201
|
-
teacherInstructions: 'New Teacher Instructions'
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
describe('changeRationale', function () {
|
|
206
|
-
assert('onRationaleChanged', ['New Rationale'], function (m) {
|
|
207
|
-
return _objectSpread(_objectSpread({}, m), {}, {
|
|
208
|
-
rationale: 'New Rationale'
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vZGVzaWduLnRlc3QuanN4Il0sIm5hbWVzIjpbImplc3QiLCJtb2NrIiwibGF5b3V0IiwiQ29uZmlnTGF5b3V0IiwicHJvcHMiLCJjaGlsZHJlbiIsInNldHRpbmdzIiwiUGFuZWwiLCJvbkNoYW5nZSIsInRvZ2dsZSIsImZuIiwicmFkaW8iLCJkZXNjcmliZSIsInciLCJvblByb21wdENoYW5nZWQiLCJvblJhdGlvbmFsZUNoYW5nZWQiLCJnZXRNb2RlbCIsInRva2VucyIsImJlZm9yZUVhY2giLCJkZWZhdWx0VmFsdWVzIiwiY29uZmlndXJhdGlvbiIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwidGV4dCIsImRlZmF1bHRDb25maWd1cmF0aW9uIiwiZmVlZGJhY2siLCJ3cmFwcGVyIiwiYXNzZXJ0IiwiYXJncyIsImV4cGVjdGVkIiwiZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbnN0YW5jZSIsImFwcGx5IiwidG9CZUNhbGxlZFdpdGgiLCJzdGFydCIsImVuZCIsIm0iLCJtYXhTZWxlY3Rpb25zIiwibW9kZSIsImNvcnJlY3QiLCJjb3JyZWN0RmVlZGJhY2tUeXBlIiwicGFydGlhbFNjb3JpbmciLCJwcm9tcHQiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwicmF0aW9uYWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxDQUFVLGdDQUFWLEVBQTRDO0FBQUEsU0FBTztBQUNqREMsSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLFlBQVksRUFBRSxzQkFBQ0MsS0FBRDtBQUFBLDRCQUFXLDZDQUFNQSxLQUFLLENBQUNDLFFBQVosQ0FBWDtBQUFBO0FBRFIsS0FEeUM7QUFJakRDLElBQUFBLFFBQVEsRUFBRTtBQUNSQyxNQUFBQSxLQUFLLEVBQUUsZUFBQ0gsS0FBRDtBQUFBLDRCQUFXO0FBQUssVUFBQSxZQUFZLEVBQUVBLEtB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LEtBTE8sQ0FBUjtBQU9BakMsSUFBQUEsUUFBUSxDQUFDLDJCQUFELEVBQThCLFlBQU07QUFDMUNnQixNQUFBQSxNQUFNLENBQUMsOEJBQUQsRUFBaUMsQ0FBQywwQkFBRCxDQUFqQyxFQUErRCxVQUFDVyxDQUFEO0FBQUEsK0NBQ2hFQSxDQURnRTtBQUVuRU8sVUFBQUEsbUJBQW1CLEVBQUU7QUFGOEM7QUFBQSxPQUEvRCxDQUFOO0FBSUQsS0FMTyxDQUFSO0FBT0FsQyxJQUFBQSxRQUFRLENBQUMsaUJBQUQsRUFBb0IsWUFBTTtBQUNoQ2dCLE1BQUFBLE1BQU0sQ0FBQyxvQkFBRCxFQUF1QixDQUFDLGVBQUQsQ0FBdkIsRUFBMEMsVUFBQ1csQ0FBRDtBQUFBLCtDQUMzQ0EsQ0FEMkM7QUFFOUNRLFVBQUFBLFNBQVMsRUFBRTtBQUZtQztBQUFBLE9BQTFDLENBQU47QUFJRCxLQUxPLENBQVI7QUFNRCxHQTdFTyxDQUFSO0FBOEVELENBektPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBEZXNpZ24gfSBmcm9tICcuLi9kZXNpZ24nO1xuaW1wb3J0IGRlZmF1bHRWYWx1ZXMgZnJvbSAnLi4vZGVmYXVsdENvbmZpZ3VyYXRpb24nO1xuXG5qZXN0Lm1vY2soJ0BwaWUtbGliL3BpZS10b29sYm94L2NvbmZpZy11aScsICgpID0+ICh7XG4gIGxheW91dDoge1xuICAgIENvbmZpZ0xheW91dDogKHByb3BzKSA9PiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj4sXG4gIH0sXG4gIHNldHRpbmdzOiB7XG4gICAgUGFuZWw6IChwcm9wcykgPT4gPGRpdiBvQ2hhbmdlTW9kZWw9e3Byb3BzLm9uQ2hhbmdlfSAvPixcbiAgICB0b2dnbGU6IGplc3QuZm4oKSxcbiAgICByYWRpbzogamVzdC5mbigpLFxuICB9LFxufSkpO1xuXG5qZXN0Lm1vY2soJ2xvZGFzaC9kZWJvdW5jZScsICgpID0+IChmbikgPT4gZm4pO1xuXG5kZXNjcmliZSgnZGVzaWduJywgKCkgPT4ge1xuICBsZXQgdztcbiAgbGV0IG9uQ2hhbmdlO1xuICBsZXQgb25Qcm9tcHRDaGFuZ2VkO1xuICBsZXQgb25SYXRpb25hbGVDaGFuZ2VkO1xuXG4gIGNvbnN0IGdldE1vZGVsID0gKCkgPT4gKHtcbiAgICB0b2tlbnM6IFtdLFxuICB9KTtcbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gICAgb25Qcm9tcHRDaGFuZ2VkID0gamVzdC5mbigpO1xuICAgIG9uUmF0aW9uYWxlQ2hhbmdlZCA9IGplc3QuZm4oKTtcbiAgICB3ID0gc2hhbGxvdyhcbiAgICAgIDxEZXNpZ25cbiAgICAgICAgbW9kZWw9e2dldE1vZGVsKCl9XG4gICAgICAgIGNvbmZpZ3VyYXRpb249e2RlZmF1bHRWYWx1ZXMuY29uZmlndXJhdGlvbn1cbiAgICAgICAgY2xhc3Nlcz17e319XG4gICAgICAgIGNsYXNzTmFtZT17J2Zvbyd9XG4gICAgICAgIG9uTW9kZWxDaGFuZ2VkPXtvbkNoYW5nZX1cbiAgICAgICAgb25Qcm9tcHRDaGFuZ2VkPXtvblByb21wdENoYW5nZWR9XG4gICAgICAgIG9uUmF0aW9uYWxlQ2hhbmdlZD17b25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgLz4sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIGFsbCBpdGVtcyB3aXRoIGRlZmF1bHRQcm9wcycsICgpID0+IHtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCd0b2tlbml6ZXIgcmVuZGVycyB3aXRoIGh0bWwgZW50aXRpZXMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHNoYWxsb3coXG4gICAgICAgICAgPERlc2lnblxuICAgICAgICAgICAgbW9kZWw9e3tcbiAgICAgICAgICAgICAgdGV4dDogJzxwPiYjODIyMDtMdWN5PyYjNjM7IEFyZSB5b3UgdXNpbmcgeW91ciB0aW1lIHdpc2VseSB0byBwbGFuIHlvdXIgcHJvamVjdD8mIzMzOyYjMzM7JiMzMzsmIzgyMjE7IE1yLiBXaWxzb24gYXNrZWQuPC9wPjxwPkx1Y3kgbG9va2VkIGEgbGl0dGxlIGNvbmZ1c2VkIGF0IGZpcnN0LiAmIzE5NTsgVGhlbiBzaGUgZ3Jpbm5lZCBhbmQgcHJvdWRseSBzdGF0ZWQsICYjODIyMDtXaHksIHllcyBJIGFtISBJIHBsYW4gdG8gbWFrZSBhIGJpcmQgZmVlZGVyIGZvciB0aGF0IHRyZWUgb3V0IG91ciB3aW5kb3chJiM4MjIxOzwvcD4nLFxuICAgICAgICAgICAgICB0b2tlbnM6IFtdLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249e2RlZmF1bHRWYWx1ZXMuY29uZmlndXJhdGlvbn1cbiAgICAgICAgICAgIGNsYXNzZXM9e3t9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXsnZm9vJ31cbiAgICAgICAgICAgIG9uTW9kZWxDaGFuZ2VkPXtvbkNoYW5nZX1cbiAgICAgICAgICAgIG9uUHJvbXB0Q2hhbmdlZD17b25Qcm9tcHRDaGFuZ2VkfVxuICAgICAgICAgICAgb25SYXRpb25hbGVDaGFuZ2VkPXtvblJhdGlvbmFsZUNoYW5nZWR9XG4gICAgICAgICAgLz4sXG4gICAgICAgICksXG4gICAgICApLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgYWxsIGl0ZW1zIGV4Y2VwdCBmZWVkYmFjaycsICgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRDb25maWd1cmF0aW9uID0gZGVmYXVsdFZhbHVlcy5jb25maWd1cmF0aW9uO1xuXG4gICAgICBkZWZhdWx0Q29uZmlndXJhdGlvbi5mZWVkYmFjay5zZXR0aW5ncyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCB3cmFwcGVyID0gc2hhbGxvdyhcbiAgICAgICAgPERlc2lnblxuICAgICAgICAgIG1vZGVsPXtnZXRNb2RlbCgpfVxuICAgICAgICAgIGNvbmZpZ3VyYXRpb249e2RlZmF1bHRDb25maWd1cmF0aW9ufVxuICAgICAgICAgIGNsYXNzZXM9e3t9fVxuICAgICAgICAgIGNsYXNzTmFtZT17J2Zvbyd9XG4gICAgICAgICAgb25Nb2RlbENoYW5nZWQ9e29uQ2hhbmdlfVxuICAgICAgICAgIG9uUHJvbXB0Q2hhbmdlZD17b25Qcm9tcHRDaGFuZ2VkfVxuICAgICAgICAgIG9uUmF0aW9uYWxlQ2hhbmdlZD17b25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGFsbCBpdGVtcyBleGNlcHQgdGhlIGNvbnRlbnQgaW5wdXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0Q29uZmlndXJhdGlvbiA9IGRlZmF1bHRWYWx1ZXMuY29uZmlndXJhdGlvbjtcblxuICAgICAgZGVmYXVsdENvbmZpZ3VyYXRpb24udGV4dC5zZXR0aW5ncyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCB3cmFwcGVyID0gc2hhbGxvdyhcbiAgICAgICAgPERlc2lnblxuICAgICAgICAgIG1vZGVsPXtnZXRNb2RlbCgpfVxuICAgICAgICAgIGNvbmZpZ3VyYXRpb249e2RlZmF1bHRDb25maWd1cmF0aW9ufVxuICAgICAgICAgIGNsYXNzZXM9e3t9fVxuICAgICAgICAgIGNsYXNzTmFtZT17J2Zvbyd9XG4gICAgICAgICAgb25Nb2RlbENoYW5nZWQ9e29uQ2hhbmdlfVxuICAgICAgICAgIG9uUHJvbXB0Q2hhbmdlZD17b25Qcm9tcHRDaGFuZ2VkfVxuICAgICAgICAgIG9uUmF0aW9uYWxlQ2hhbmdlZD17b25SYXRpb25hbGVDaGFuZ2VkfVxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdCh3cmFwcGVyKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydCA9IChmbiwgYXJncywgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGNvbnN0IGUgPSBleHBlY3RlZChnZXRNb2RlbCgpKTtcblxuICAgICAgaXQoYCR7Zm59ICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9ID0+ICR7SlNPTi5zdHJpbmdpZnkoZSl9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHcuaW5zdGFuY2UoKTtcbiAgICAgICAgaW5zdGFuY2VbZm5dLmFwcGx5KGluc3RhbmNlLCBhcmdzKTtcblxuICAgICAgICAvL2plc3QucnVuQWxsVGltZXJzKCk7XG5cbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0JlQ2FsbGVkV2l0aChlKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBkZXNjcmliZSgnY2hhbmdlVGV4dCcsICgpID0+IHtcbiAgICAvLyAgIGFzc2VydCgnY2hhbmdlVGV4dCcsIFt7IHRhcmdldDogeyB2YWx1ZTogJ2ZvbycgfSB9XSwgKG0pID0+ICh7XG4gICAgLy8gICAgIC4uLm0sXG4gICAgLy8gICAgIHRleHQ6ICdmb28nLFxuICAgIC8vICAgfSkpO1xuICAgIC8vIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZVRva2VucycsICgpID0+IHtcbiAgICAgIGFzc2VydCgnY2hhbmdlVG9rZW5zJywgW1t7IHN0YXJ0OiAwLCBlbmQ6IDEsIHRleHQ6ICdmJyB9XSwgJ3dvcmRzJ10sIChtKSA9PiAoe1xuICAgICAgICAuLi5tLFxuICAgICAgICBtYXhTZWxlY3Rpb25zOiAwLFxuICAgICAgICB0b2tlbnM6IFt7IHN0YXJ0OiAwLCBlbmQ6IDEsIHRleHQ6ICdmJyB9XSxcbiAgICAgICAgbW9kZTogJ3dvcmRzJyxcbiAgICAgIH0pKTtcbiAgICAgIGFzc2VydCgnY2hhbmdlVG9rZW5zJywgW1t7IHN0YXJ0OiAwLCBlbmQ6IDgsIHRleHQ6ICdGb28gYmFyLicsIGNvcnJlY3Q6IHRydWUgfV0sICdzZW50ZW5jZXMnXSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIG1heFNlbGVjdGlvbnM6IDEsXG4gICAgICAgIHRva2VuczogW3sgc3RhcnQ6IDAsIGVuZDogOCwgdGV4dDogJ0ZvbyBiYXIuJywgY29ycmVjdDogdHJ1ZSB9XSxcbiAgICAgICAgbW9kZTogJ3NlbnRlbmNlcycsXG4gICAgICB9KSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY2hhbmdlTWF4U2VsZWN0aW9ucycsICgpID0+IHtcbiAgICAgIGFzc2VydCgnY2hhbmdlTWF4U2VsZWN0aW9ucycsIFt7fSwgNF0sIChtKSA9PiAoe1xuICAgICAgICAuLi5tLFxuICAgICAgICBtYXhTZWxlY3Rpb25zOiA0LFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZUZlZWRiYWNrJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0KCdjaGFuZ2VGZWVkYmFjaycsIFt7IGNvcnJlY3RGZWVkYmFja1R5cGU6ICdub25lJyB9XSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIGZlZWRiYWNrOiB7IGNvcnJlY3RGZWVkYmFja1R5cGU6ICdub25lJyB9LFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZVBhcnRpYWxTY29yaW5nJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0KCdjaGFuZ2VQYXJ0aWFsU2NvcmluZycsIFt0cnVlXSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIHBhcnRpYWxTY29yaW5nOiB0cnVlLFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZVByb21wdCcsICgpID0+IHtcbiAgICAgIGFzc2VydCgnb25Qcm9tcHRDaGFuZ2VkJywgWydOZXcgUHJvbXB0J10sIChtKSA9PiAoe1xuICAgICAgICAuLi5tLFxuICAgICAgICBwcm9tcHQ6ICdOZXcgUHJvbXB0JyxcbiAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjaGFuZ2VUZWFjaGVySW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgYXNzZXJ0KCdvblRlYWNoZXJJbnN0cnVjdGlvbnNDaGFuZ2VkJywgWydOZXcgVGVhY2hlciBJbnN0cnVjdGlvbnMnXSwgKG0pID0+ICh7XG4gICAgICAgIC4uLm0sXG4gICAgICAgIHRlYWNoZXJJbnN0cnVjdGlvbnM6ICdOZXcgVGVhY2hlciBJbnN0cnVjdGlvbnMnLFxuICAgICAgfSkpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2NoYW5nZVJhdGlvbmFsZScsICgpID0+IHtcbiAgICAgIGFzc2VydCgnb25SYXRpb25hbGVDaGFuZ2VkJywgWydOZXcgUmF0aW9uYWxlJ10sIChtKSA9PiAoe1xuICAgICAgICAuLi5tLFxuICAgICAgICByYXRpb25hbGU6ICdOZXcgUmF0aW9uYWxlJyxcbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|