@pie-lib/config-ui 11.11.0-beta.0 → 11.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.json +8 -1653
  2. package/CHANGELOG.md +81 -39
  3. package/package.json +8 -5
  4. package/src/checkbox.jsx +5 -9
  5. package/src/inputs.jsx +2 -2
  6. package/src/radio-with-label.jsx +3 -9
  7. package/src/settings/settings-radio-label.jsx +2 -8
  8. package/lib/__tests__/choice-utils.test.js +0 -16
  9. package/lib/__tests__/langs.test.js +0 -55
  10. package/lib/__tests__/number-text-field.test.js +0 -128
  11. package/lib/__tests__/settings-panel.test.js +0 -201
  12. package/lib/__tests__/two-choice.test.js +0 -33
  13. package/lib/alert-dialog.js +0 -75
  14. package/lib/checkbox.js +0 -99
  15. package/lib/choice-configuration/__tests__/feedback-menu.test.js +0 -20
  16. package/lib/choice-configuration/__tests__/index.test.js +0 -119
  17. package/lib/choice-configuration/feedback-menu.js +0 -164
  18. package/lib/choice-configuration/index.js +0 -445
  19. package/lib/choice-utils.js +0 -54
  20. package/lib/feedback-config/__tests__/feedback-config.test.js +0 -78
  21. package/lib/feedback-config/__tests__/feedback-selector.test.js +0 -71
  22. package/lib/feedback-config/feedback-selector.js +0 -195
  23. package/lib/feedback-config/group.js +0 -75
  24. package/lib/feedback-config/index.js +0 -189
  25. package/lib/form-section.js +0 -46
  26. package/lib/help.js +0 -147
  27. package/lib/index.js +0 -216
  28. package/lib/input.js +0 -139
  29. package/lib/inputs.js +0 -139
  30. package/lib/langs.js +0 -179
  31. package/lib/layout/__tests__/config.layout.test.js +0 -33
  32. package/lib/layout/__tests__/layout-content.test.js +0 -6
  33. package/lib/layout/config-layout.js +0 -143
  34. package/lib/layout/index.js +0 -24
  35. package/lib/layout/layout-contents.js +0 -191
  36. package/lib/layout/settings-box.js +0 -86
  37. package/lib/mui-box/index.js +0 -79
  38. package/lib/number-text-field-custom.js +0 -458
  39. package/lib/number-text-field.js +0 -267
  40. package/lib/radio-with-label.js +0 -49
  41. package/lib/settings/display-size.js +0 -77
  42. package/lib/settings/index.js +0 -143
  43. package/lib/settings/panel.js +0 -463
  44. package/lib/settings/settings-radio-label.js +0 -53
  45. package/lib/settings/toggle.js +0 -74
  46. package/lib/tabs/index.js +0 -110
  47. package/lib/tags-input/__tests__/index.test.js +0 -88
  48. package/lib/tags-input/index.js +0 -198
  49. package/lib/two-choice.js +0 -180
  50. package/lib/with-stateful-model.js +0 -84
@@ -1,463 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = exports.Panel = void 0;
9
-
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
-
16
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
-
20
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
-
22
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
-
24
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
25
-
26
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
27
-
28
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
29
-
30
- var _react = _interopRequireDefault(require("react"));
31
-
32
- var _propTypes = _interopRequireDefault(require("prop-types"));
33
-
34
- var _styles = require("@material-ui/core/styles");
35
-
36
- var _get2 = _interopRequireDefault(require("lodash/get"));
37
-
38
- var _set = _interopRequireDefault(require("lodash/set"));
39
-
40
- var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
41
-
42
- var _Input = _interopRequireDefault(require("@material-ui/core/Input"));
43
-
44
- var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
45
-
46
- var _debug = _interopRequireDefault(require("debug"));
47
-
48
- var _toggle = _interopRequireDefault(require("./toggle"));
49
-
50
- var _twoChoice = require("../two-choice");
51
-
52
- var _settingsRadioLabel = _interopRequireDefault(require("./settings-radio-label"));
53
-
54
- var _numberTextField = _interopRequireDefault(require("../number-text-field"));
55
-
56
- var _checkbox = _interopRequireDefault(require("../checkbox"));
57
-
58
- var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
59
-
60
- var _excluded = ["isConfigProperty"];
61
-
62
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
63
-
64
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
65
-
66
- 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; }
67
-
68
- 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; }
69
-
70
- var log = (0, _debug["default"])('pie-lib:config-ui:settings:panel');
71
- var labelValue = {
72
- label: _propTypes["default"].string,
73
- value: _propTypes["default"].string
74
- };
75
- var baseTypes = {
76
- label: _propTypes["default"].string,
77
- value: _propTypes["default"].string,
78
- onChange: _propTypes["default"].func
79
- };
80
-
81
- var CheckboxChoice = function CheckboxChoice(_ref) {
82
- var label = _ref.label,
83
- value = _ref.value,
84
- _onChange = _ref.onChange;
85
- return /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
86
- checked: value,
87
- label: label,
88
- onChange: function onChange(event) {
89
- _onChange(event.target.checked);
90
- }
91
- });
92
- };
93
-
94
- CheckboxChoice.propTypes = {
95
- label: _propTypes["default"].string,
96
- value: _propTypes["default"].bool,
97
- onChange: _propTypes["default"].func
98
- };
99
-
100
- var Radio = function Radio(_ref2) {
101
- var classes = _ref2.classes,
102
- label = _ref2.label,
103
- value = _ref2.value,
104
- onChange = _ref2.onChange,
105
- choices = _ref2.choices;
106
- return /*#__PURE__*/_react["default"].createElement(_twoChoice.NChoice, {
107
- className: classes.radioSettings,
108
- direction: "horizontal",
109
- customLabel: _settingsRadioLabel["default"],
110
- value: value,
111
- header: label,
112
- opts: choices,
113
- onChange: onChange
114
- });
115
- };
116
-
117
- Radio.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
118
- choices: _propTypes["default"].arrayOf(_propTypes["default"].shape(labelValue))
119
- });
120
- var StyledRadio = (0, _styles.withStyles)(function (theme) {
121
- return {
122
- radioSettings: {
123
- marginTop: theme.spacing.unit / 2,
124
- paddingBottom: theme.spacing.unit / 2,
125
- width: '100%',
126
- '& > label': {
127
- color: 'rgba(0, 0, 0, 0.89)',
128
- transform: 'translate(0, 10px) scale(1)',
129
- fontSize: '14px'
130
- },
131
- '& > div': {
132
- marginTop: theme.spacing.unit * 2.5
133
- }
134
- },
135
- label: {
136
- display: 'none'
137
- }
138
- };
139
- })(Radio);
140
- var Dropdown = (0, _styles.withStyles)(function (theme) {
141
- return {
142
- label: {
143
- margin: 0,
144
- fontSize: theme.typography.fontSize
145
- },
146
- wrapper: {
147
- marginTop: theme.spacing.unit / 2,
148
- border: '2px solid lightgrey',
149
- borderRadius: '4px',
150
- padding: "0 ".concat(theme.spacing.unit, "px")
151
- }
152
- };
153
- })(function (_ref3) {
154
- var classes = _ref3.classes,
155
- label = _ref3.label,
156
- value = _ref3.value,
157
- _onChange2 = _ref3.onChange,
158
- _ref3$choices = _ref3.choices,
159
- choices = _ref3$choices === void 0 ? [] : _ref3$choices;
160
-
161
- var getItemLabel = function getItemLabel(l) {
162
- return typeof l === 'string' ? l : l.label;
163
- };
164
-
165
- var getItemValue = function getItemValue(l) {
166
- return typeof l === 'string' ? l : l.value;
167
- };
168
-
169
- return /*#__PURE__*/_react["default"].createElement("div", null, label && /*#__PURE__*/_react["default"].createElement("p", {
170
- className: classes.label
171
- }, label), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
172
- className: classes.wrapper,
173
- value: value || choices && choices[0],
174
- onChange: function onChange(_ref4) {
175
- var target = _ref4.target;
176
- return _onChange2(target.value);
177
- },
178
- input: /*#__PURE__*/_react["default"].createElement(_Input["default"], {
179
- id: "dropdown-".concat(label)
180
- }),
181
- disableUnderline: true
182
- }, choices.map(function (l, index) {
183
- return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
184
- key: index,
185
- value: getItemValue(l)
186
- }, getItemLabel(l));
187
- })));
188
- });
189
- Dropdown.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
190
- choices: _propTypes["default"].arrayOf(_propTypes["default"].string)
191
- });
192
- var TextField = (0, _styles.withStyles)(function (theme) {
193
- return {
194
- field: {
195
- marginRight: theme.spacing.unit * 3,
196
- marginTop: theme.spacing.unit
197
- }
198
- };
199
- })(function (_ref5) {
200
- var classes = _ref5.classes,
201
- label = _ref5.label;
202
- return /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
203
- className: classes.field
204
- }, label);
205
- });
206
- var NumberField = (0, _styles.withStyles)(function (theme) {
207
- return {
208
- field: {
209
- width: '35%',
210
- marginRight: theme.spacing.unit * 3,
211
- marginTop: theme.spacing.unit
212
- },
213
- wrapper: {
214
- marginTop: theme.spacing.unit / 2,
215
- border: '2px solid lightgrey',
216
- borderRadius: '4px',
217
- padding: "0 ".concat(theme.spacing.unit, "px")
218
- }
219
- };
220
- })(function (_ref6) {
221
- var classes = _ref6.classes,
222
- label = _ref6.label,
223
- value = _ref6.value,
224
- _ref6$onChange = _ref6.onChange,
225
- _onChange3 = _ref6$onChange === void 0 ? function () {} : _ref6$onChange,
226
- suffix = _ref6.suffix,
227
- min = _ref6.min,
228
- max = _ref6.max;
229
-
230
- return /*#__PURE__*/_react["default"].createElement(_numberTextField["default"], {
231
- label: label || 'Label',
232
- value: value,
233
- max: max,
234
- min: min,
235
- onChange: function onChange(ev, value) {
236
- return _onChange3(value);
237
- },
238
- suffix: suffix,
239
- className: classes.field,
240
- showErrorWhenOutsideRange: true,
241
- inputClassName: classes.wrapper,
242
- disableUnderline: true,
243
- classes: classes
244
- });
245
- });
246
- NumberField.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
247
- classes: _propTypes["default"].object,
248
- suffix: _propTypes["default"].string,
249
- min: _propTypes["default"].number,
250
- max: _propTypes["default"].number,
251
- value: _propTypes["default"].number
252
- });
253
- TextField.propTypes = _objectSpread({}, baseTypes);
254
-
255
- var ToggleWrapper = function ToggleWrapper(_ref7) {
256
- var disabled = _ref7.disabled,
257
- label = _ref7.label,
258
- value = _ref7.value,
259
- onChange = _ref7.onChange;
260
- return /*#__PURE__*/_react["default"].createElement(_toggle["default"], {
261
- label: label,
262
- checked: !!value,
263
- disabled: !!disabled,
264
- toggle: onChange
265
- });
266
- };
267
-
268
- ToggleWrapper.propTypes = _objectSpread(_objectSpread({}, baseTypes), {}, {
269
- value: _propTypes["default"].bool
270
- });
271
- var tagMap = {
272
- toggle: ToggleWrapper,
273
- radio: StyledRadio,
274
- dropdown: Dropdown,
275
- numberField: NumberField,
276
- checkbox: CheckboxChoice,
277
- textField: TextField
278
- };
279
- var Group = (0, _styles.withStyles)(function (theme) {
280
- return {
281
- group: {
282
- margin: "0 0 ".concat(theme.spacing.unit * 2, "px 0")
283
- },
284
- groupHeader: {
285
- color: '#495B8F',
286
- fontSize: theme.typography.fontSize + 2,
287
- fontWeight: 600,
288
- marginBottom: theme.spacing.unit
289
- },
290
- numberFields: {
291
- fontSize: theme.typography.fontSize,
292
- marginBottom: 0
293
- }
294
- };
295
- })(function (props) {
296
- var classes = props.classes,
297
- model = props.model,
298
- label = props.label,
299
- group = props.group,
300
- configuration = props.configuration,
301
- _onChange4 = props.onChange;
302
- /**
303
- * @param group - the group of settings
304
- * @param key - the key(or path) to be used to set or get from model or configuration
305
- * @param innerKey - the key(or path) to be used to get from the group (used only for numberField type)
306
- * @returns tag that corresponds to element type */
307
-
308
- var getTag = function getTag(group, key, innerKey) {
309
- var _get = (0, _get2["default"])(group, innerKey || key),
310
- isConfigProperty = _get.isConfigProperty,
311
- properties = (0, _objectWithoutProperties2["default"])(_get, _excluded);
312
-
313
- var value = isConfigProperty ? (0, _get2["default"])(configuration, key) : (0, _get2["default"])(model, key);
314
-
315
- var tagProps = _objectSpread(_objectSpread({}, properties), {}, {
316
- key: key,
317
- value: value
318
- });
319
-
320
- var Tag = tagMap[tagProps.type];
321
- return /*#__PURE__*/_react["default"].createElement(Tag, (0, _extends2["default"])({
322
- key: key
323
- }, tagProps, {
324
- onChange: function onChange(v) {
325
- return _onChange4(key, v, isConfigProperty);
326
- }
327
- }));
328
- };
329
-
330
- var content = function content(group, key) {
331
- var currentGroup = group[key];
332
-
333
- if (!currentGroup) {
334
- return null;
335
- }
336
-
337
- var type = currentGroup.type,
338
- label = currentGroup.label,
339
- fields = currentGroup.fields,
340
- choices = currentGroup.choices;
341
-
342
- if (type === 'numberFields') {
343
- return /*#__PURE__*/_react["default"].createElement("div", {
344
- key: "numberField-".concat(label)
345
- }, /*#__PURE__*/_react["default"].createElement("p", {
346
- className: classes.numberFields
347
- }, label), Object.keys(fields).map(function (fieldKey) {
348
- return getTag(group, "".concat(key, ".").concat(fieldKey), "".concat(key, ".fields.").concat(fieldKey));
349
- }));
350
- }
351
-
352
- if (type === 'checkboxes') {
353
- return /*#__PURE__*/_react["default"].createElement("div", {
354
- key: "checkbox-".concat(label)
355
- }, /*#__PURE__*/_react["default"].createElement("p", null, label), Object.keys(choices).map(function (choiceKey) {
356
- return getTag(group, "".concat(key, ".").concat(choiceKey), "".concat(key, ".choices.").concat(choiceKey));
357
- }));
358
- } // if type is toggle, radio, dropdown, numberField or numberText
359
-
360
-
361
- return getTag(group, key);
362
- };
363
-
364
- return /*#__PURE__*/_react["default"].createElement("div", {
365
- className: classes.group
366
- }, /*#__PURE__*/_react["default"].createElement("div", {
367
- className: classes.groupHeader
368
- }, label), Object.keys(group).map(function (key) {
369
- return content(group, key);
370
- }));
371
- });
372
-
373
- var Panel = /*#__PURE__*/function (_React$Component) {
374
- (0, _inherits2["default"])(Panel, _React$Component);
375
-
376
- var _super = _createSuper(Panel);
377
-
378
- function Panel() {
379
- var _this;
380
-
381
- (0, _classCallCheck2["default"])(this, Panel);
382
-
383
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
384
- args[_key] = arguments[_key];
385
- }
386
-
387
- _this = _super.call.apply(_super, [this].concat(args));
388
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "change", function (key, value) {
389
- var isConfigProperty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
390
- log('[changeModel]', key, value);
391
- var _this$props = _this.props,
392
- onChangeModel = _this$props.onChangeModel,
393
- onChangeConfiguration = _this$props.onChangeConfiguration;
394
-
395
- var model = _objectSpread({}, _this.props.model);
396
-
397
- var configuration = _objectSpread({}, _this.props.configuration);
398
-
399
- if (isConfigProperty) {
400
- (0, _set["default"])(configuration, key, value);
401
- onChangeConfiguration(configuration, key);
402
- } else {
403
- (0, _set["default"])(model, key, value);
404
- onChangeModel(model, key);
405
- }
406
- });
407
- return _this;
408
- }
409
-
410
- (0, _createClass2["default"])(Panel, [{
411
- key: "render",
412
- value: function render() {
413
- var _this2 = this;
414
-
415
- var _this$props2 = this.props,
416
- groups = _this$props2.groups,
417
- model = _this$props2.model,
418
- configuration = _this$props2.configuration,
419
- modal = _this$props2.modal;
420
- log('render:', model);
421
- var renderedGroups = Object.keys(groups || {}).map(function (group) {
422
- var showGroup = Object.entries(groups[group]).some(function (_ref8) {
423
- var _ref9 = (0, _slicedToArray2["default"])(_ref8, 2),
424
- propVal = _ref9[1];
425
-
426
- return !!propVal;
427
- });
428
-
429
- if (showGroup) {
430
- return /*#__PURE__*/_react["default"].createElement(Group, {
431
- label: group,
432
- key: group,
433
- model: model,
434
- configuration: configuration,
435
- group: groups[group],
436
- onChange: _this2.change
437
- });
438
- }
439
-
440
- return null;
441
- });
442
- return /*#__PURE__*/_react["default"].createElement("div", null, renderedGroups, modal);
443
- }
444
- }]);
445
- return Panel;
446
- }(_react["default"].Component);
447
-
448
- exports.Panel = Panel;
449
- (0, _defineProperty2["default"])(Panel, "propTypes", {
450
- model: _propTypes["default"].object,
451
- configuration: _propTypes["default"].object,
452
- groups: _propTypes["default"].object,
453
- onChangeModel: _propTypes["default"].func,
454
- onChangeConfiguration: _propTypes["default"].func,
455
- modal: _propTypes["default"].object
456
- });
457
- (0, _defineProperty2["default"])(Panel, "defaultProps", {
458
- onChangeModel: function onChangeModel() {},
459
- onChangeConfiguration: function onChangeConfiguration() {}
460
- });
461
- var _default = Panel;
462
- exports["default"] = _default;
463
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXR0aW5ncy9wYW5lbC5qc3giXSwibmFtZXMiOlsibG9nIiwibGFiZWxWYWx1ZSIsImxhYmVsIiwiUHJvcFR5cGVzIiwic3RyaW5nIiwidmFsdWUiLCJiYXNlVHlwZXMiLCJvbkNoYW5nZSIsImZ1bmMiLCJDaGVja2JveENob2ljZSIsImV2ZW50IiwidGFyZ2V0IiwiY2hlY2tlZCIsInByb3BUeXBlcyIsImJvb2wiLCJSYWRpbyIsImNsYXNzZXMiLCJjaG9pY2VzIiwicmFkaW9TZXR0aW5ncyIsIlNldHRpbmdzUmFkaW9MYWJlbCIsImFycmF5T2YiLCJzaGFwZSIsIlN0eWxlZFJhZGlvIiwidGhlbWUiLCJtYXJnaW5Ub3AiLCJzcGFjaW5nIiwidW5pdCIsInBhZGRpbmdCb3R0b20iLCJ3aWR0aCIsImNvbG9yIiwidHJhbnNmb3JtIiwiZm9udFNpemUiLCJkaXNwbGF5IiwiRHJvcGRvd24iLCJtYXJnaW4iLCJ0eXBvZ3JhcGh5Iiwid3JhcHBlciIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsInBhZGRpbmciLCJnZXRJdGVtTGFiZWwiLCJsIiwiZ2V0SXRlbVZhbHVlIiwibWFwIiwiaW5kZXgiLCJUZXh0RmllbGQiLCJmaWVsZCIsIm1hcmdpblJpZ2h0IiwiTnVtYmVyRmllbGQiLCJzdWZmaXgiLCJtaW4iLCJtYXgiLCJldiIsIm9iamVjdCIsIm51bWJlciIsIlRvZ2dsZVdyYXBwZXIiLCJkaXNhYmxlZCIsInRhZ01hcCIsInRvZ2dsZSIsInJhZGlvIiwiZHJvcGRvd24iLCJudW1iZXJGaWVsZCIsImNoZWNrYm94IiwidGV4dEZpZWxkIiwiR3JvdXAiLCJncm91cCIsImdyb3VwSGVhZGVyIiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsIm51bWJlckZpZWxkcyIsInByb3BzIiwibW9kZWwiLCJjb25maWd1cmF0aW9uIiwiZ2V0VGFnIiwia2V5IiwiaW5uZXJLZXkiLCJpc0NvbmZpZ1Byb3BlcnR5IiwicHJvcGVydGllcyIsInRhZ1Byb3BzIiwiVGFnIiwidHlwZSIsInYiLCJjb250ZW50IiwiY3VycmVudEdyb3VwIiwiZmllbGRzIiwiT2JqZWN0Iiwia2V5cyIsImZpZWxkS2V5IiwiY2hvaWNlS2V5IiwiUGFuZWwiLCJvbkNoYW5nZU1vZGVsIiwib25DaGFuZ2VDb25maWd1cmF0aW9uIiwiZ3JvdXBzIiwibW9kYWwiLCJyZW5kZXJlZEdyb3VwcyIsInNob3dHcm91cCIsImVudHJpZXMiLCJzb21lIiwicHJvcFZhbCIsImNoYW5nZSIsIlJlYWN0IiwiQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxHQUFHLEdBQUcsdUJBQU0sa0NBQU4sQ0FBWjtBQUVBLElBQU1DLFVBQVUsR0FBRztBQUNqQkMsRUFBQUEsS0FBSyxFQUFFQyxzQkFBVUMsTUFEQTtBQUVqQkMsRUFBQUEsS0FBSyxFQUFFRixzQkFBVUM7QUFGQSxDQUFuQjtBQUtBLElBQU1FLFNBQVMsR0FBRztBQUNoQkosRUFBQUEsS0FBSyxFQUFFQyxzQkFBVUMsTUFERDtBQUVoQkMsRUFBQUEsS0FBSyxFQUFFRixzQkFBVUMsTUFGRDtBQUdoQkcsRUFBQUEsUUFBUSxFQUFFSixzQkFBVUs7QUFISixDQUFsQjs7QUFNQSxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLE9BQWdDO0FBQUEsTUFBN0JQLEtBQTZCLFFBQTdCQSxLQUE2QjtBQUFBLE1BQXRCRyxLQUFzQixRQUF0QkEsS0FBc0I7QUFBQSxNQUFmRSxTQUFlLFFBQWZBLFFBQWU7QUFDckQsc0JBQ0UsZ0NBQUMsb0JBQUQ7QUFDRSxJQUFBLE9BQU8sRUFBRUYsS0FEWDtBQUVFLElBQUEsS0FBSyxFQUFFSCxLQUZUO0FBR0UsSUFBQSxRQUFRLEVBQUUsa0JBQUNRLEtBQUQsRUFB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O0FBR0UsWUFBQSxLQUFLLEVBQUVNLEtBSFQ7QUFJRSxZQUFBLGFBQWEsRUFBRUMsYUFKakI7QUFLRSxZQUFBLEtBQUssRUFBRW9CLE1BQU0sQ0FBQzNCLEtBQUQsQ0FMZjtBQU1FLFlBQUEsUUFBUSxFQUFFLE1BQUksQ0FBQ2tDO0FBTmpCLFlBREY7QUFVRDs7QUFFRCxlQUFPLElBQVA7QUFDRCxPQWpCc0IsQ0FBdkI7QUFtQkEsMEJBQ0UsNkNBQ0dMLGNBREgsRUFFR0QsS0FGSCxDQURGO0FBTUQ7OztFQTdEd0JPLGtCQUFNQyxTOzs7aUNBQXBCWixLLGVBQ1E7QUFDakJsQixFQUFBQSxLQUFLLEVBQUVwRSxzQkFBVWtELE1BREE7QUFFakJtQixFQUFBQSxhQUFhLEVBQUVyRSxzQkFBVWtELE1BRlI7QUFHakJ1QyxFQUFBQSxNQUFNLEVBQUV6RixzQkFBVWtELE1BSEQ7QUFJakJxQyxFQUFBQSxhQUFhLEVBQUV2RixzQkFBVUssSUFKUjtBQUtqQm1GLEVBQUFBLHFCQUFxQixFQUFFeEYsc0JBQVVLLElBTGhCO0FBTWpCcUYsRUFBQUEsS0FBSyxFQUFFMUYsc0JBQVVrRDtBQU5BLEM7aUNBRFJvQyxLLGtCQVVXO0FBQ3BCQyxFQUFBQSxhQUFhLEVBQUUseUJBQU0sQ0FBRSxDQURIO0FBRXBCQyxFQUFBQSxxQkFBcUIsRUFBRSxpQ0FBTSxDQUFFO0FBRlgsQztlQXNEVEYsSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2gvc2V0JztcbmltcG9ydCBTZWxlY3QgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvU2VsZWN0JztcbmltcG9ydCBJbnB1dCBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9JbnB1dCc7XG5pbXBvcnQgTWVudUl0ZW0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvTWVudUl0ZW0nO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IFRvZ2dsZSBmcm9tICcuL3RvZ2dsZSc7XG5pbXBvcnQgeyBOQ2hvaWNlIH0gZnJvbSAnLi4vdHdvLWNob2ljZSc7XG5pbXBvcnQgU2V0dGluZ3NSYWRpb0xhYmVsIGZyb20gJy4vc2V0dGluZ3MtcmFkaW8tbGFiZWwnO1xuaW1wb3J0IE51bWJlclRleHRGaWVsZCBmcm9tICcuLi9udW1iZXItdGV4dC1maWVsZCc7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnLi4vY2hlY2tib3gnO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVHlwb2dyYXBoeSc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwaWUtbGliOmNvbmZpZy11aTpzZXR0aW5nczpwYW5lbCcpO1xuXG5jb25zdCBsYWJlbFZhbHVlID0ge1xuICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5jb25zdCBiYXNlVHlwZXMgPSB7XG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxufTtcblxuY29uc3QgQ2hlY2tib3hDaG9pY2UgPSAoeyBsYWJlbCwgdmFsdWUsIG9uQ2hhbmdlIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8Q2hlY2tib3hcbiAgICAgIGNoZWNrZWQ9e3ZhbHVlfVxuICAgICAgbGFiZWw9e2xhYmVsfVxuICAgICAgb25DaGFuZ2U9eyhldmVudCkgPT4ge1xuICAgICAgICBvbkNoYW5nZShldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5DaGVja2JveENob2ljZS5wcm9wVHlwZXMgPSB7XG4gIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbn07XG5cbmNvbnN0IFJhZGlvID0gKHsgY2xhc3NlcywgbGFiZWwsIHZhbHVlLCBvbkNoYW5nZSwgY2hvaWNlcyB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPE5DaG9pY2VcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5yYWRpb1NldHRpbmdzfVxuICAgICAgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiXG4gICAgICBjdXN0b21MYWJlbD17U2V0dGluZ3NSYWRpb0xhYmVsfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgaGVhZGVyPXtsYWJlbH1cbiAgICAgIG9wdHM9e2Nob2ljZXN9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgLz5cbiAgKTtcbn07XG5cblJhZGlvLnByb3BUeXBlcyA9IHsgLi4uYmFzZVR5cGVzLCBjaG9pY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUobGFiZWxWYWx1ZSkpIH07XG5cbmNvbnN0IFN0eWxlZFJhZGlvID0gd2l0aFN0eWxlcygodGhlbWUpID0+ICh7XG4gIHJhZGlvU2V0dGluZ3M6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCAvIDIsXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZy51bml0IC8gMixcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgICcmID4gbGFiZWwnOiB7XG4gICAgICBjb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC44OSknLFxuICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIDEwcHgpIHNjYWxlKDEpJyxcbiAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgfSxcbiAgICAnJiA+IGRpdic6IHtcbiAgICAgIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZy51bml0ICogMi41LFxuICAgIH0sXG4gIH0sXG4gIGxhYmVsOiB7XG4gICAgZGlzcGxheTogJ25vbmUnLFxuICB9LFxufSkpKFJhZGlvKTtcblxuY29uc3QgRHJvcGRvd24gPSB3aXRoU3R5bGVzKCh0aGVtZSkgPT4gKHtcbiAgbGFiZWw6IHtcbiAgICBtYXJnaW46IDAsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFNpemUsXG4gIH0sXG4gIHdyYXBwZXI6IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCAvIDIsXG4gICAgYm9yZGVyOiAnMnB4IHNvbGlkIGxpZ2h0Z3JleScsXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICBwYWRkaW5nOiBgMCAke3RoZW1lLnNwYWNpbmcudW5pdH1weGAsXG4gIH0sXG59KSkoKHsgY2xhc3NlcywgbGFiZWwsIHZhbHVlLCBvbkNoYW5nZSwgY2hvaWNlcyA9IFtdIH0pID0+IHtcbiAgY29uc3QgZ2V0SXRlbUxhYmVsID0gKGwpID0+ICh0eXBlb2YgbCA9PT0gJ3N0cmluZycgPyBsIDogbC5sYWJlbCk7XG4gIGNvbnN0IGdldEl0ZW1WYWx1ZSA9IChsKSA9PiAodHlwZW9mIGwgPT09ICdzdHJpbmcnID8gbCA6IGwudmFsdWUpO1xuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICB7bGFiZWwgJiYgPHAgY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsfT57bGFiZWx9PC9wPn1cbiAgICAgIDxTZWxlY3RcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLndyYXBwZXJ9XG4gICAgICAgIHZhbHVlPXt2YWx1ZSB8fCAoY2hvaWNlcyAmJiBjaG9pY2VzWzBdKX1cbiAgICAgICAgb25DaGFuZ2U9eyh7IHRhcmdldCB9KSA9PiBvbkNoYW5nZSh0YXJnZXQudmFsdWUpfVxuICAgICAgICBpbnB1dD17PElucHV0IGlkPXtgZHJvcGRvd24tJHtsYWJlbH1gfSAvPn1cbiAgICAgICAgZGlzYWJsZVVuZGVybGluZVxuICAgICAgPlxuICAgICAgICB7Y2hvaWNlcy5tYXAoKGwsIGluZGV4KSA9PiAoXG4gICAgICAgICAgPE1lbnVJdGVtIGtleT17aW5kZXh9IHZhbHVlPXtnZXRJdGVtVmFsdWUobCl9PlxuICAgICAgICAgICAge2dldEl0ZW1MYWJlbChsKX1cbiAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICApKX1cbiAgICAgIDwvU2VsZWN0PlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cbkRyb3Bkb3duLnByb3BUeXBlcyA9IHsgLi4uYmFzZVR5cGVzLCBjaG9pY2VzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSB9O1xuXG5jb25zdCBUZXh0RmllbGQgPSB3aXRoU3R5bGVzKCh0aGVtZSkgPT4gKHtcbiAgZmllbGQ6IHtcbiAgICBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2luZy51bml0ICogMyxcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgfSxcbn0pKSgoeyBjbGFzc2VzLCBsYWJlbCB9KSA9PiB7XG4gIHJldHVybiA8VHlwb2dyYXBoeSBjbGFzc05hbWU9e2NsYXNzZXMuZmllbGR9PntsYWJlbH08L1R5cG9ncmFwaHk+O1xufSk7XG5cbmNvbnN0IE51bWJlckZpZWxkID0gd2l0aFN0eWxlcygodGhlbWUpID0+ICh7XG4gIGZpZWxkOiB7XG4gICAgd2lkdGg6ICczNSUnLFxuICAgIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAzLFxuICAgIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZy51bml0LFxuICB9LFxuICB3cmFwcGVyOiB7XG4gICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nLnVuaXQgLyAyLFxuICAgIGJvcmRlcjogJzJweCBzb2xpZCBsaWdodGdyZXknLFxuICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgcGFkZGluZzogYDAgJHt0aGVtZS5zcGFjaW5nLnVuaXR9cHhgLFxuICB9LFxufSkpKCh7IGNsYXNzZXMsIGxhYmVsLCB2YWx1ZSwgb25DaGFuZ2UgPSAoKSA9PiB7fSwgc3VmZml4LCBtaW4sIG1heCB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPE51bWJlclRleHRGaWVsZFxuICAgICAgbGFiZWw9e2xhYmVsIHx8ICdMYWJlbCd9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBtYXg9e21heH1cbiAgICAgIG1pbj17bWlufVxuICAgICAgb25DaGFuZ2U9eyhldiwgdmFsdWUpID0+IG9uQ2hhbmdlKHZhbHVlKX1cbiAgICAgIHN1ZmZpeD17c3VmZml4fVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmZpZWxkfVxuICAgICAgc2hvd0Vycm9yV2hlbk91dHNpZGVSYW5nZVxuICAgICAgaW5wdXRDbGFzc05hbWU9e2NsYXNzZXMud3JhcHBlcn1cbiAgICAgIGRpc2FibGVVbmRlcmxpbmVcbiAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgLz5cbiAgKTtcbn0pO1xuXG5OdW1iZXJGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIC4uLmJhc2VUeXBlcyxcbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3VmZml4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBtaW46IFByb3BUeXBlcy5udW1iZXIsXG4gIG1heDogUHJvcFR5cGVzLm51bWJlcixcbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG59O1xuXG5UZXh0RmllbGQucHJvcFR5cGVzID0ge1xuICAuLi5iYXNlVHlwZXMsXG59O1xuXG5jb25zdCBUb2dnbGVXcmFwcGVyID0gKHsgZGlzYWJsZWQsIGxhYmVsLCB2YWx1ZSwgb25DaGFuZ2UgfSkgPT4gKFxuICA8VG9nZ2xlIGxhYmVsPXtsYWJlbH0gY2hlY2tlZD17ISF2YWx1ZX0gZGlzYWJsZWQ9eyEhZGlzYWJsZWR9IHRvZ2dsZT17b25DaGFuZ2V9IC8+XG4pO1xuXG5Ub2dnbGVXcmFwcGVyLnByb3BUeXBlcyA9IHsgLi4uYmFzZVR5cGVzLCB2YWx1ZTogUHJvcFR5cGVzLmJvb2wgfTtcblxuY29uc3QgdGFnTWFwID0ge1xuICB0b2dnbGU6IFRvZ2dsZVdyYXBwZXIsXG4gIHJhZGlvOiBTdHlsZWRSYWRpbyxcbiAgZHJvcGRvd246IERyb3Bkb3duLFxuICBudW1iZXJGaWVsZDogTnVtYmVyRmllbGQsXG4gIGNoZWNrYm94OiBDaGVja2JveENob2ljZSxcbiAgdGV4dEZpZWxkOiBUZXh0RmllbGQsXG59O1xuXG5jb25zdCBHcm91cCA9IHdpdGhTdHlsZXMoKHRoZW1lKSA9PiAoe1xuICBncm91cDoge1xuICAgIG1hcmdpbjogYDAgMCAke3RoZW1lLnNwYWNpbmcudW5pdCAqIDJ9cHggMGAsXG4gIH0sXG4gIGdyb3VwSGVhZGVyOiB7XG4gICAgY29sb3I6ICcjNDk1QjhGJyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSArIDIsXG4gICAgZm9udFdlaWdodDogNjAwLFxuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZy51bml0LFxuICB9LFxuICBudW1iZXJGaWVsZHM6IHtcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5mb250U2l6ZSxcbiAgICBtYXJnaW5Cb3R0b206IDAsXG4gIH0sXG59KSkoKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NlcywgbW9kZWwsIGxhYmVsLCBncm91cCwgY29uZmlndXJhdGlvbiwgb25DaGFuZ2UgfSA9IHByb3BzO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gZ3JvdXAgLSB0aGUgZ3JvdXAgb2Ygc2V0dGluZ3NcbiAgICogQHBhcmFtIGtleSAtIHRoZSBrZXkob3IgcGF0aCkgdG8gYmUgdXNlZCB0byBzZXQgb3IgZ2V0IGZyb20gbW9kZWwgb3IgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gaW5uZXJLZXkgLSB0aGUga2V5KG9yIHBhdGgpIHRvIGJlIHVzZWQgdG8gZ2V0IGZyb20gdGhlIGdyb3VwICh1c2VkIG9ubHkgZm9yIG51bWJlckZpZWxkIHR5cGUpXG4gICAqIEByZXR1cm5zIHRhZyB0aGF0IGNvcnJlc3BvbmRzIHRvIGVsZW1lbnQgdHlwZSAqL1xuICBjb25zdCBnZXRUYWcgPSAoZ3JvdXAsIGtleSwgaW5uZXJLZXkpID0+IHtcbiAgICBjb25zdCB7IGlzQ29uZmlnUHJvcGVydHksIC4uLnByb3BlcnRpZXMgfSA9IGdldChncm91cCwgaW5uZXJLZXkgfHwga2V5KTtcbiAgICBjb25zdCB2YWx1ZSA9IGlzQ29uZmlnUHJvcGVydHkgPyBnZXQoY29uZmlndXJhdGlvbiwga2V5KSA6IGdldChtb2RlbCwga2V5KTtcbiAgICBjb25zdCB0YWdQcm9wcyA9IHsgLi4ucHJvcGVydGllcywga2V5LCB2YWx1ZSB9O1xuICAgIGNvbnN0IFRhZyA9IHRhZ01hcFt0YWdQcm9wcy50eXBlXTtcblxuICAgIHJldHVybiA8VGFnIGtleT17a2V5fSB7Li4udGFnUHJvcHN9IG9uQ2hhbmdlPXsodikgPT4gb25DaGFuZ2Uoa2V5LCB2LCBpc0NvbmZpZ1Byb3BlcnR5KX0gLz47XG4gIH07XG5cbiAgY29uc3QgY29udGVudCA9IChncm91cCwga2V5KSA9PiB7XG4gICAgY29uc3QgY3VycmVudEdyb3VwID0gZ3JvdXBba2V5XTtcblxuICAgIGlmICghY3VycmVudEdyb3VwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHR5cGUsIGxhYmVsLCBmaWVsZHMsIGNob2ljZXMgfSA9IGN1cnJlbnRHcm91cDtcblxuICAgIGlmICh0eXBlID09PSAnbnVtYmVyRmllbGRzJykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBrZXk9e2BudW1iZXJGaWVsZC0ke2xhYmVsfWB9PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT17Y2xhc3Nlcy5udW1iZXJGaWVsZHN9PntsYWJlbH08L3A+XG4gICAgICAgICAge09iamVjdC5rZXlzKGZpZWxkcykubWFwKChmaWVsZEtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGdldFRhZyhncm91cCwgYCR7a2V5fS4ke2ZpZWxkS2V5fWAsIGAke2tleX0uZmllbGRzLiR7ZmllbGRLZXl9YCk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ2NoZWNrYm94ZXMnKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGtleT17YGNoZWNrYm94LSR7bGFiZWx9YH0+XG4gICAgICAgICAgPHA+e2xhYmVsfTwvcD5cbiAgICAgICAgICB7T2JqZWN0LmtleXMoY2hvaWNlcykubWFwKChjaG9pY2VLZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBnZXRUYWcoZ3JvdXAsIGAke2tleX0uJHtjaG9pY2VLZXl9YCwgYCR7a2V5fS5jaG9pY2VzLiR7Y2hvaWNlS2V5fWApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gaWYgdHlwZSBpcyB0b2dnbGUsIHJhZGlvLCBkcm9wZG93biwgbnVtYmVyRmllbGQgb3IgbnVtYmVyVGV4dFxuICAgIHJldHVybiBnZXRUYWcoZ3JvdXAsIGtleSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5ncm91cH0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5ncm91cEhlYWRlcn0+e2xhYmVsfTwvZGl2PlxuXG4gICAgICB7T2JqZWN0LmtleXMoZ3JvdXApLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIHJldHVybiBjb250ZW50KGdyb3VwLCBrZXkpO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gICk7XG59KTtcblxuZXhwb3J0IGNsYXNzIFBhbmVsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBtb2RlbDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjb25maWd1cmF0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGdyb3VwczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvbkNoYW5nZU1vZGVsOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNoYW5nZUNvbmZpZ3VyYXRpb246IFByb3BUeXBlcy5mdW5jLFxuICAgIG1vZGFsOiBQcm9wVHlwZXMub2JqZWN0LFxuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgb25DaGFuZ2VNb2RlbDogKCkgPT4ge30sXG4gICAgb25DaGFuZ2VDb25maWd1cmF0aW9uOiAoKSA9PiB7fSxcbiAgfTtcblxuICBjaGFuZ2UgPSAoa2V5LCB2YWx1ZSwgaXNDb25maWdQcm9wZXJ0eSA9IGZhbHNlKSA9PiB7XG4gICAgbG9nKCdbY2hhbmdlTW9kZWxdJywga2V5LCB2YWx1ZSk7XG5cbiAgICBjb25zdCB7IG9uQ2hhbmdlTW9kZWwsIG9uQ2hhbmdlQ29uZmlndXJhdGlvbiB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBtb2RlbCA9IHsgLi4udGhpcy5wcm9wcy5tb2RlbCB9O1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB7IC4uLnRoaXMucHJvcHMuY29uZmlndXJhdGlvbiB9O1xuXG4gICAgaWYgKGlzQ29uZmlnUHJvcGVydHkpIHtcbiAgICAgIHNldChjb25maWd1cmF0aW9uLCBrZXksIHZhbHVlKTtcbiAgICAgIG9uQ2hhbmdlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXQobW9kZWwsIGtleSwgdmFsdWUpO1xuICAgICAgb25DaGFuZ2VNb2RlbChtb2RlbCwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgZ3JvdXBzLCBtb2RlbCwgY29uZmlndXJhdGlvbiwgbW9kYWwgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBsb2coJ3JlbmRlcjonLCBtb2RlbCk7XG5cbiAgICBjb25zdCByZW5kZXJlZEdyb3VwcyA9IE9iamVjdC5rZXlzKGdyb3VwcyB8fCB7fSkubWFwKChncm91cCkgPT4ge1xuICAgICAgY29uc3Qgc2hvd0dyb3VwID0gT2JqZWN0LmVudHJpZXMoZ3JvdXBzW2dyb3VwXSkuc29tZSgoWywgcHJvcFZhbF0pID0+ICEhcHJvcFZhbCk7XG5cbiAgICAgIGlmIChzaG93R3JvdXApIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8R3JvdXBcbiAgICAgICAgICAgIGxhYmVsPXtncm91cH1cbiAgICAgICAgICAgIGtleT17Z3JvdXB9XG4gICAgICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgICAgICBjb25maWd1cmF0aW9uPXtjb25maWd1cmF0aW9ufVxuICAgICAgICAgICAgZ3JvdXA9e2dyb3Vwc1tncm91cF19XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy5jaGFuZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAge3JlbmRlcmVkR3JvdXBzfVxuICAgICAgICB7bW9kYWx9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhbmVsO1xuIl19
@@ -1,53 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _FormControlLabel = _interopRequireDefault(require("@material-ui/core/FormControlLabel"));
11
-
12
- var _Radio = _interopRequireDefault(require("@material-ui/core/Radio"));
13
-
14
- var _react = _interopRequireDefault(require("react"));
15
-
16
- var _styles = require("@material-ui/core/styles");
17
-
18
- var _renderUi = require("@pie-lib/render-ui");
19
-
20
- var _default = (0, _styles.withStyles)(function (theme) {
21
- return {
22
- label: {
23
- color: 'rgba(0, 0, 0, 0.89)',
24
- fontSize: theme.typography.fontSize - 2,
25
- left: '-5px',
26
- position: 'relative'
27
- },
28
- customColor: {
29
- color: "".concat(_renderUi.color.tertiary(), " !important")
30
- }
31
- };
32
- })(function (_ref) {
33
- var label = _ref.label,
34
- value = _ref.value,
35
- checked = _ref.checked,
36
- onChange = _ref.onChange,
37
- classes = _ref.classes;
38
- return /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
39
- value: value,
40
- classes: {
41
- label: classes.label
42
- },
43
- control: /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
44
- className: classes.customColor,
45
- checked: checked,
46
- onChange: onChange
47
- }),
48
- label: label
49
- });
50
- });
51
-
52
- exports["default"] = _default;
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXR0aW5ncy9zZXR0aW5ncy1yYWRpby1sYWJlbC5qc3giXSwibmFtZXMiOlsidGhlbWUiLCJsYWJlbCIsImNvbG9yIiwiZm9udFNpemUiLCJ0eXBvZ3JhcGh5IiwibGVmdCIsInBvc2l0aW9uIiwiY3VzdG9tQ29sb3IiLCJ0ZXJ0aWFyeSIsInZhbHVlIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiY2xhc3NlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O2VBRWUsd0JBQVcsVUFBQ0EsS0FBRDtBQUFBLFNBQVk7QUFDcENDLElBQUFBLEtBQUssRUFBRTtBQUNMQyxNQUFBQSxLQUFLLEVBQUUscUJBREY7QUFFTEMsTUFBQUEsUUFBUSxFQUFFSCxLQUFLLENBQUNJLFVBQU4sQ0FBaUJELFFBQWpCLEdBQTRCLENBRmpDO0FBR0xFLE1BQUFBLElBQUksRUFBRSxNQUhEO0FBSUxDLE1BQUFBLFFBQVEsRUFBRTtBQUpMLEtBRDZCO0FBT3BDQyxJQUFBQSxXQUFXLEVBQUU7QUFDWEwsTUFBQUEsS0FBSyxZQUFLQSxnQkFBTU0sUUFBTixFQUFMO0FBRE07QUFQdUIsR0FBWjtBQUFBLENBQVgsRUFVWDtBQUFBLE1BQUdQLEtBQUgsUUFBR0EsS0FBSDtBQUFBLE1BQVVRLEtBQVYsUUFBVUEsS0FBVjtBQUFBLE1BQWlCQyxPQUFqQixRQUFpQkEsT0FBakI7QUFBQSxNQUEwQkMsUUFBMUIsUUFBMEJBLFFBQTFCO0FBQUEsTUFBb0NDLE9BQXBDLFFBQW9DQSxPQUFwQztBQUFBLHNCQUNGLGdDQUFDLDRCQUFEO0FBQ0UsSUFBQSxLQUFLLEVBQUVILEtBRFQ7QUFFRSxJQUFBLE9BQU8sRUFBRTtBQUFFUixNQUFBQSxLQUFLLEVBQUVXLE9BQU8sQ0FBQ1g7QUFBakIsS0FGWDtBQUdFLElBQUEsT0FBTyxlQUNQLGdDQUFDLGlCQUFEO0FBQ0ksTUFBQSxTQUFTLEVBQUVXLE9BQU8sQ0FBQ0wsV0FEdkI7QUFFSSxNQUFBLE9BQU8sRUFBRUcsT0FGYjtBQUdJLE1BQUEsUUFBUSxFQUFFQztBQUhkLE1BSkY7QUFVRSxJQUFBLEtBQUssRUFBRVY7QUFWVCxJQURFO0FBQUEsQ0FWVyxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZvcm1Db250cm9sTGFiZWwgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvRm9ybUNvbnRyb2xMYWJlbCc7XG5pbXBvcnQgUmFkaW8gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvUmFkaW8nO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IHsgY29sb3IgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKCh0aGVtZSkgPT4gKHtcbiAgbGFiZWw6IHtcbiAgICBjb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC44OSknLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRTaXplIC0gMixcbiAgICBsZWZ0OiAnLTVweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIH0sXG4gIGN1c3RvbUNvbG9yOiB7XG4gICAgY29sb3I6IGAke2NvbG9yLnRlcnRpYXJ5KCl9ICFpbXBvcnRhbnRgXG4gIH0sXG59KSkoKHsgbGFiZWwsIHZhbHVlLCBjaGVja2VkLCBvbkNoYW5nZSwgY2xhc3NlcyB9KSA9PiAoXG4gIDxGb3JtQ29udHJvbExhYmVsXG4gICAgdmFsdWU9e3ZhbHVlfVxuICAgIGNsYXNzZXM9e3sgbGFiZWw6IGNsYXNzZXMubGFiZWwgfX1cbiAgICBjb250cm9sPXtcbiAgICA8UmFkaW9cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmN1c3RvbUNvbG9yfVxuICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgLz5cbiAgfVxuICAgIGxhYmVsPXtsYWJlbH1cbiAgLz5cbikpO1xuIl19
@@ -1,74 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports["default"] = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _react = _interopRequireDefault(require("react"));
13
-
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
15
-
16
- var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
17
-
18
- var _styles = require("@material-ui/core/styles");
19
-
20
- var _Switch = _interopRequireDefault(require("@material-ui/core/Switch"));
21
-
22
- var _classnames = _interopRequireDefault(require("classnames"));
23
-
24
- var _renderUi = require("@pie-lib/render-ui");
25
-
26
- var Toggle = (0, _styles.withStyles)(function (theme) {
27
- return {
28
- toggle: {
29
- display: 'flex',
30
- width: '100%',
31
- justifyContent: 'space-between'
32
- },
33
- label: {
34
- color: 'rgba(0, 0, 0, 0.89)',
35
- fontSize: theme.typography.fontSize,
36
- paddingTop: theme.spacing.unit * 2
37
- },
38
- checkedThumb: {
39
- color: "".concat(_renderUi.color.tertiary(), " !important")
40
- },
41
- checkedBar: {
42
- backgroundColor: "".concat(_renderUi.color.tertiaryLight(), " !important")
43
- }
44
- };
45
- })(function (_ref) {
46
- var checked = _ref.checked,
47
- disabled = _ref.disabled,
48
- label = _ref.label,
49
- toggle = _ref.toggle,
50
- classes = _ref.classes;
51
- return /*#__PURE__*/_react["default"].createElement("div", {
52
- className: classes.toggle
53
- }, /*#__PURE__*/_react["default"].createElement(_InputLabel["default"], {
54
- className: classes.label
55
- }, label), /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
56
- classes: {
57
- checked: (0, _classnames["default"])(classes.checkedThumb),
58
- bar: (0, _classnames["default"])((0, _defineProperty2["default"])({}, classes.checkedBar, checked))
59
- },
60
- checked: checked,
61
- disabled: disabled,
62
- onChange: function onChange(e) {
63
- return toggle(e.target.checked);
64
- }
65
- }));
66
- });
67
- Toggle.propTypes = {
68
- checked: _propTypes["default"].bool,
69
- label: _propTypes["default"].string.isRequired,
70
- toggle: _propTypes["default"].func.isRequired
71
- };
72
- var _default = Toggle;
73
- exports["default"] = _default;
74
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXR0aW5ncy90b2dnbGUuanN4Il0sIm5hbWVzIjpbIlRvZ2dsZSIsInRoZW1lIiwidG9nZ2xlIiwiZGlzcGxheSIsIndpZHRoIiwianVzdGlmeUNvbnRlbnQiLCJsYWJlbCIsImNvbG9yIiwiZm9udFNpemUiLCJ0eXBvZ3JhcGh5IiwicGFkZGluZ1RvcCIsInNwYWNpbmciLCJ1bml0IiwiY2hlY2tlZFRodW1iIiwidGVydGlhcnkiLCJjaGVja2VkQmFyIiwiYmFja2dyb3VuZENvbG9yIiwidGVydGlhcnlMaWdodCIsImNoZWNrZWQiLCJkaXNhYmxlZCIsImNsYXNzZXMiLCJiYXIiLCJlIiwidGFyZ2V0IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYm9vbCIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJmdW5jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLE1BQU0sR0FBRyx3QkFBVyxVQUFDQyxLQUFEO0FBQUEsU0FBWTtBQUNwQ0MsSUFBQUEsTUFBTSxFQUFFO0FBQ05DLE1BQUFBLE9BQU8sRUFBRSxNQURIO0FBRU5DLE1BQUFBLEtBQUssRUFBRSxNQUZEO0FBR05DLE1BQUFBLGNBQWMsRUFBRTtBQUhWLEtBRDRCO0FBTXBDQyxJQUFBQSxLQUFLLEVBQUU7QUFDTEMsTUFBQUEsS0FBSyxFQUFFLHFCQURGO0FBRUxDLE1BQUFBLFFBQVEsRUFBRVAsS0FBSyxDQUFDUSxVQUFOLENBQWlCRCxRQUZ0QjtBQUdMRSxNQUFBQSxVQUFVLEVBQUVULEtBQUssQ0FBQ1UsT0FBTixDQUFjQyxJQUFkLEdBQXFCO0FBSDVCLEtBTjZCO0FBV3BDQyxJQUFBQSxZQUFZLEVBQUU7QUFDWk4sTUFBQUEsS0FBSyxZQUFLQSxnQkFBTU8sUUFBTixFQUFMO0FBRE8sS0FYc0I7QUFjcENDLElBQUFBLFVBQVUsRUFBRTtBQUNWQyxNQUFBQSxlQUFlLFlBQUtULGdCQUFNVSxhQUFOLEVBQUw7QUFETDtBQWR3QixHQUFaO0FBQUEsQ0FBWCxFQWlCWDtBQUFBLE1BQUdDLE9BQUgsUUFBR0EsT0FBSDtBQUFBLE1BQVlDLFFBQVosUUFBWUEsUUFBWjtBQUFBLE1BQXNCYixLQUF0QixRQUFzQkEsS0FBdEI7QUFBQSxNQUE2QkosTUFBN0IsUUFBNkJBLE1BQTdCO0FBQUEsTUFBcUNrQixPQUFyQyxRQUFxQ0EsT0FBckM7QUFBQSxzQkFDRjtBQUFLLElBQUEsU0FBUyxFQUFFQSxPQUFPLENBQUNsQjtBQUF4QixrQkFDRSxnQ0FBQyxzQkFBRDtBQUFZLElBQUEsU0FBUyxFQUFFa0IsT0FBTyxDQUFDZDtBQUEvQixLQUF1Q0EsS0FBdkMsQ0FERixlQUVFLGdDQUFDLGtCQUFEO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFDUFksTUFBQUEsT0FBTyxFQUFFLDRCQUFXRSxPQUFPLENBQUNQLFlBQW5CLENBREY7QUFFUFEsTUFBQUEsR0FBRyxFQUFFLGlFQUNGRCxPQUFPLENBQUNMLFVBRE4sRUFDbUJHLE9BRG5CO0FBRkUsS0FEWDtBQU9FLElBQUEsT0FBTyxFQUFFQSxPQVBYO0FBUUUsSUFBQSxRQUFRLEVBQUVDLFFBUlo7QUFTRSxJQUFBLFFBQVEsRUFBRSxrQkFBQ0csQ0FBRDtBQUFBLGFBQU9wQixNQUFNLENBQUNvQixDQUFDLENBQUNDLE1BQUYsQ0FBU0wsT0FBVixDQUFiO0FBQUE7QUFUWixJQUZGLENBREU7QUFBQSxDQWpCVyxDQUFmO0FBa0NBbEIsTUFBTSxDQUFDd0IsU0FBUCxHQUFtQjtBQUNqQk4sRUFBQUEsT0FBTyxFQUFFTyxzQkFBVUMsSUFERjtBQUVqQnBCLEVBQUFBLEtBQUssRUFBRW1CLHNCQUFVRSxNQUFWLENBQWlCQyxVQUZQO0FBR2pCMUIsRUFBQUEsTUFBTSxFQUFFdUIsc0JBQVVJLElBQVYsQ0FBZUQ7QUFITixDQUFuQjtlQU1lNUIsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IElucHV0TGFiZWwgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvSW5wdXRMYWJlbCc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCBTd2l0Y2ggZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvU3dpdGNoJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgY29sb3IgfSBmcm9tICdAcGllLWxpYi9yZW5kZXItdWknO1xuXG5jb25zdCBUb2dnbGUgPSB3aXRoU3R5bGVzKCh0aGVtZSkgPT4gKHtcbiAgdG9nZ2xlOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBjb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC44OSknLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRTaXplLFxuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gIH0sXG4gIGNoZWNrZWRUaHVtYjoge1xuICAgIGNvbG9yOiBgJHtjb2xvci50ZXJ0aWFyeSgpfSAhaW1wb3J0YW50YCxcbiAgfSxcbiAgY2hlY2tlZEJhcjoge1xuICAgIGJhY2tncm91bmRDb2xvcjogYCR7Y29sb3IudGVydGlhcnlMaWdodCgpfSAhaW1wb3J0YW50YCxcbiAgfSxcbn0pKSgoeyBjaGVja2VkLCBkaXNhYmxlZCwgbGFiZWwsIHRvZ2dsZSwgY2xhc3NlcyB9KSA9PiAoXG4gIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnRvZ2dsZX0+XG4gICAgPElucHV0TGFiZWwgY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsfT57bGFiZWx9PC9JbnB1dExhYmVsPlxuICAgIDxTd2l0Y2hcbiAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgY2hlY2tlZDogY2xhc3NOYW1lcyhjbGFzc2VzLmNoZWNrZWRUaHVtYiksXG4gICAgICAgIGJhcjogY2xhc3NOYW1lcyh7XG4gICAgICAgICAgW2NsYXNzZXMuY2hlY2tlZEJhcl06IGNoZWNrZWQsXG4gICAgICAgIH0pLFxuICAgICAgfX1cbiAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBvbkNoYW5nZT17KGUpID0+IHRvZ2dsZShlLnRhcmdldC5jaGVja2VkKX1cbiAgICAvPlxuICA8L2Rpdj5cbikpO1xuXG5Ub2dnbGUucHJvcFR5cGVzID0ge1xuICBjaGVja2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdG9nZ2xlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVG9nZ2xlO1xuIl19