@carto/kepler.gl 0.0.40-alpha.3 → 0.0.40-alpha.aggregation-selector

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 (59) hide show
  1. package/dist/components/common/field-selector.js +62 -17
  2. package/dist/components/common/field-token.js +4 -12
  3. package/dist/components/common/icons/chevron-right.js +69 -0
  4. package/dist/components/common/icons/index.js +9 -1
  5. package/dist/components/common/item-selector/dropdown-list.js +118 -20
  6. package/dist/components/common/item-selector/item-selector-submenu.js +133 -0
  7. package/dist/components/common/item-selector/item-selector.js +7 -4
  8. package/dist/components/common/item-selector/typeahead.js +16 -16
  9. package/dist/components/index.js +1 -10
  10. package/dist/components/map-container.js +1 -14
  11. package/dist/components/side-panel/layer-panel/layer-configurator.js +13 -11
  12. package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +7 -3
  13. package/dist/constants/default-settings.js +33 -8
  14. package/dist/constants/index.js +7 -1
  15. package/dist/layers/base-layer.js +1 -11
  16. package/dist/localization/ca.js +1 -4
  17. package/dist/localization/cn.js +1 -4
  18. package/dist/localization/en.js +1 -4
  19. package/dist/localization/es.js +1 -4
  20. package/dist/localization/fi.js +1 -4
  21. package/dist/localization/ja.js +1 -4
  22. package/dist/localization/pt.js +1 -4
  23. package/dist/localization/ru.js +1 -4
  24. package/dist/reducers/vis-state-merger.js +2 -3
  25. package/dist/schemas/vis-state-schema.js +1 -5
  26. package/dist/styles/base.js +3 -3
  27. package/package.json +1 -1
  28. package/src/components/common/field-selector.js +62 -21
  29. package/src/components/common/field-token.js +13 -14
  30. package/src/components/common/icons/chevron-right.js +47 -0
  31. package/src/components/common/icons/index.js +1 -0
  32. package/src/components/common/item-selector/dropdown-list.js +124 -43
  33. package/src/components/common/item-selector/item-selector-submenu.js +88 -0
  34. package/src/components/common/item-selector/item-selector.d.ts +2 -1
  35. package/src/components/common/item-selector/item-selector.js +5 -2
  36. package/src/components/common/item-selector/typeahead.js +27 -21
  37. package/src/components/index.js +0 -1
  38. package/src/components/map-container.js +0 -14
  39. package/src/components/side-panel/layer-panel/layer-configurator.js +19 -7
  40. package/src/components/side-panel/layer-panel/vis-config-by-field-selector.js +5 -1
  41. package/src/constants/default-settings.js +51 -5
  42. package/src/constants/index.js +2 -1
  43. package/src/layers/base-layer.js +3 -10
  44. package/src/layers/index.d.ts +0 -1
  45. package/src/localization/ca.js +0 -3
  46. package/src/localization/cn.js +0 -3
  47. package/src/localization/en.js +0 -3
  48. package/src/localization/es.js +0 -3
  49. package/src/localization/fi.js +0 -3
  50. package/src/localization/ja.js +0 -3
  51. package/src/localization/pt.js +0 -3
  52. package/src/localization/ru.js +0 -3
  53. package/src/reducers/vis-state-merger.js +1 -2
  54. package/src/schemas/schema-manager.d.ts +0 -1
  55. package/src/schemas/vis-state-schema.js +0 -2
  56. package/src/styles/base.js +1 -0
  57. package/umd/keplergl.min.js +31 -31
  58. package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +0 -106
  59. package/src/components/side-panel/layer-panel/layer-visibility-by-zoom.js +0 -120
@@ -13,6 +13,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
13
13
 
14
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
15
 
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
16
18
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
19
 
18
20
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -31,7 +33,17 @@ var _classnames = _interopRequireDefault(require("classnames"));
31
33
 
32
34
  var _styledComponents = _interopRequireDefault(require("styled-components"));
33
35
 
34
- var _templateObject;
36
+ var _itemSelectorSubmenu = _interopRequireDefault(require("./item-selector-submenu"));
37
+
38
+ var _icons = require("../icons");
39
+
40
+ var _defaultSettings = require("../../../constants/default-settings");
41
+
42
+ var _templateObject, _templateObject2, _templateObject3;
43
+
44
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
45
+
46
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
47
 
36
48
  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); }; }
37
49
 
@@ -69,26 +81,82 @@ var DropdownListWrapper = _styledComponents["default"].div(_templateObject || (_
69
81
  return props.light ? props.theme.dropdownListLT : props.theme.dropdownList;
70
82
  });
71
83
 
84
+ var DropdownListContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n"])));
85
+
86
+ var Item = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n padding-right: 25px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n svg {\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n opacity: 0.6;\n }\n"])));
87
+
72
88
  var DropdownList = /*#__PURE__*/function (_Component) {
73
89
  (0, _inherits2["default"])(DropdownList, _Component);
74
90
 
75
91
  var _super = _createSuper(DropdownList);
76
92
 
77
93
  function DropdownList() {
94
+ var _this;
95
+
78
96
  (0, _classCallCheck2["default"])(this, DropdownList);
79
- return _super.apply(this, arguments);
97
+
98
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
99
+ args[_key] = arguments[_key];
100
+ }
101
+
102
+ _this = _super.call.apply(_super, [this].concat(args));
103
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
104
+ currentOption: {},
105
+ submenuVisible: false,
106
+ submenuPosition: {}
107
+ });
108
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "hasSubOptions", !!_this.props.subOptions);
109
+ return _this;
80
110
  }
81
111
 
82
112
  (0, _createClass2["default"])(DropdownList, [{
113
+ key: "_resetState",
114
+ value: function _resetState() {
115
+ var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
116
+ this.setState({
117
+ currentOption: {},
118
+ submenuVisible: false,
119
+ submenuPosition: {}
120
+ }, callback);
121
+ }
122
+ }, {
83
123
  key: "_onClick",
84
- value: function _onClick(result, event) {
85
- event.preventDefault();
86
- this.props.onOptionSelected(result, event);
124
+ value: function _onClick(option, subOption, event) {
125
+ var optionSelected = typeof option === 'string' ? option : _objectSpread(_objectSpread({}, option), {}, {
126
+ selectedAggregator: subOption === null || subOption === void 0 ? void 0 : subOption.id
127
+ });
128
+
129
+ if (this.props.withSubOptions && subOption !== null && subOption !== void 0 && subOption.id || !this.props.withSubOptions) {
130
+ this.props.onOptionSelected(optionSelected, event);
131
+ }
132
+ }
133
+ }, {
134
+ key: "_onMouseOver",
135
+ value: function _onMouseOver(option, event) {
136
+ var el = event.target;
137
+
138
+ if (el.classList.contains('list__item')) {
139
+ this.setState({
140
+ currentOption: option,
141
+ submenuVisible: true,
142
+ submenuPosition: {
143
+ top: el.getBoundingClientRect().top,
144
+ left: el.getBoundingClientRect().right
145
+ }
146
+ });
147
+ }
148
+ }
149
+ }, {
150
+ key: "componentDidUpdate",
151
+ value: function componentDidUpdate(prevProps) {
152
+ if (prevProps.searchEntryValue !== this.props.searchEntryValue) {
153
+ this._resetState();
154
+ }
87
155
  }
88
156
  }, {
89
157
  key: "render",
90
158
  value: function render() {
91
- var _this = this;
159
+ var _this2 = this;
92
160
 
93
161
  var _this$props = this.props,
94
162
  fixedOptions = _this$props.fixedOptions,
@@ -102,7 +170,11 @@ var DropdownList = /*#__PURE__*/function (_Component) {
102
170
  var valueOffset = Array.isArray(fixedOptions) ? fixedOptions.length : 0; // For some reason onClick is not fired when clicked on an option
103
171
  // onMouseDown is used here as a workaround of #205 and other
104
172
 
105
- return /*#__PURE__*/_react["default"].createElement(DropdownListWrapper, {
173
+ return /*#__PURE__*/_react["default"].createElement(DropdownListContainer, {
174
+ onMouseLeave: function onMouseLeave() {
175
+ return _this2._resetState();
176
+ }
177
+ }, /*#__PURE__*/_react["default"].createElement(DropdownListWrapper, {
106
178
  className: classList.list,
107
179
  light: light
108
180
  }, this.props.customListHeaderComponent ? /*#__PURE__*/_react["default"].createElement("div", {
@@ -110,38 +182,60 @@ var DropdownList = /*#__PURE__*/function (_Component) {
110
182
  }, /*#__PURE__*/_react["default"].createElement(this.props.customListHeaderComponent, null)) : null, valueOffset > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
111
183
  className: classList.listSection
112
184
  }, fixedOptions.map(function (value, i) {
185
+ var _this2$state$currentO;
186
+
113
187
  return /*#__PURE__*/_react["default"].createElement("div", {
114
188
  className: (0, _classnames["default"])(classList.listItem, {
115
- hover: _this.props.selectionIndex === i,
189
+ active: _this2.props.selectionIndex === i,
190
+ hover: value.id && ((_this2$state$currentO = _this2.state.currentOption) === null || _this2$state$currentO === void 0 ? void 0 : _this2$state$currentO.id) === value.id,
116
191
  fixed: true
117
192
  }),
118
193
  key: "".concat(display(value), "_").concat(i),
119
194
  onMouseDown: function onMouseDown(e) {
120
- return _this._onClick(value, e);
195
+ return !_this2.hasSubOptions && _this2._onClick(value, null, e);
121
196
  },
122
197
  onClick: function onClick(e) {
123
- return _this._onClick(value, e);
198
+ return !_this2.hasSubOptions && _this2._onClick(value, null, e);
199
+ },
200
+ onMouseOver: function onMouseOver(e) {
201
+ return _this2._onMouseOver(value, e);
124
202
  }
125
- }, /*#__PURE__*/_react["default"].createElement(_this.props.customListItemComponent, {
203
+ }, /*#__PURE__*/_react["default"].createElement(_this2.props.customListItemComponent, {
126
204
  value: value,
127
205
  displayOption: display
128
206
  }));
129
207
  })) : null, this.props.options.map(function (value, i) {
130
- return /*#__PURE__*/_react["default"].createElement("div", {
208
+ var _this2$state$currentO2;
209
+
210
+ return /*#__PURE__*/_react["default"].createElement(Item, {
131
211
  className: (0, _classnames["default"])(classList.listItem, {
132
- hover: _this.props.selectionIndex === i + valueOffset
212
+ active: _this2.props.selectionIndex === i + valueOffset,
213
+ hover: value.id && ((_this2$state$currentO2 = _this2.state.currentOption) === null || _this2$state$currentO2 === void 0 ? void 0 : _this2$state$currentO2.id) === value.id
133
214
  }),
134
215
  key: "".concat(display(value), "_").concat(i),
135
216
  onMouseDown: function onMouseDown(e) {
136
- return _this._onClick(value, e);
217
+ return !_this2.hasSubOptions && _this2._onClick(value, null, e);
137
218
  },
138
219
  onClick: function onClick(e) {
139
- return _this._onClick(value, e);
220
+ return !_this2.hasSubOptions && _this2._onClick(value, null, e);
221
+ },
222
+ onMouseOver: function onMouseOver(e) {
223
+ return _this2._onMouseOver(value, e);
140
224
  }
141
- }, /*#__PURE__*/_react["default"].createElement(_this.props.customListItemComponent, {
225
+ }, /*#__PURE__*/_react["default"].createElement(_this2.props.customListItemComponent, {
142
226
  value: value,
143
227
  displayOption: display
144
- }));
228
+ }), _this2.props.withSubOptions && value.aggregators && /*#__PURE__*/_react["default"].createElement(_icons.ChevronRight, null));
229
+ })), this.props.withSubOptions && this.state.currentOption && this.state.currentOption.aggregators && /*#__PURE__*/_react["default"].createElement(_itemSelectorSubmenu["default"], {
230
+ position: this.state.submenuPosition,
231
+ options: this.state.currentOption.aggregators.map(function (a) {
232
+ return _defaultSettings.FIELD_AGGREGATORS.find(function (am) {
233
+ return am.id === a;
234
+ });
235
+ }),
236
+ onClick: function onClick(aggregator, e) {
237
+ return _this2._onClick(_this2.state.currentOption, aggregator, e);
238
+ }
145
239
  }));
146
240
  }
147
241
  }]);
@@ -151,6 +245,7 @@ var DropdownList = /*#__PURE__*/function (_Component) {
151
245
  exports["default"] = DropdownList;
152
246
  (0, _defineProperty2["default"])(DropdownList, "propTypes", {
153
247
  options: _propTypes["default"].arrayOf(_propTypes["default"].any),
248
+ subOptions: _propTypes["default"].arrayOf(_propTypes["default"].any),
154
249
  allowCustomValues: _propTypes["default"].number,
155
250
  customClasses: _propTypes["default"].object,
156
251
  customValues: _propTypes["default"].arrayOf(_propTypes["default"].any),
@@ -162,7 +257,9 @@ exports["default"] = DropdownList;
162
257
  defaultClassNames: _propTypes["default"].bool,
163
258
  areResultsTruncated: _propTypes["default"].bool,
164
259
  resultsTruncatedMessage: _propTypes["default"].string,
165
- listItemComponent: _propTypes["default"].func
260
+ listItemComponent: _propTypes["default"].func,
261
+ searchEntryValue: _propTypes["default"].string,
262
+ withSubOptions: _propTypes["default"].bool
166
263
  });
167
264
  (0, _defineProperty2["default"])(DropdownList, "defaultProps", {
168
265
  customClasses: {},
@@ -173,6 +270,7 @@ exports["default"] = DropdownList;
173
270
  displayOption: defaultDisplay,
174
271
  onOptionSelected: function onOptionSelected() {},
175
272
  defaultClassNames: true,
176
- selectionIndex: null
273
+ selectionIndex: null,
274
+ withSubOptions: false
177
275
  });
178
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QuanMiXSwibmFtZXMiOlsiY2xhc3NMaXN0IiwibGlzdCIsImxpc3RIZWFkZXIiLCJsaXN0U2VjdGlvbiIsImxpc3RJdGVtIiwibGlzdEl0ZW1BbmNob3IiLCJkZWZhdWx0RGlzcGxheSIsImQiLCJMaXN0SXRlbSIsInZhbHVlIiwiZGlzcGxheU9wdGlvbiIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCZ2RMVCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcExUIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wIiwiZHJvcGRvd25MaXN0TFQiLCJkcm9wZG93bkxpc3QiLCJEcm9wZG93bkxpc3QiLCJyZXN1bHQiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwib25PcHRpb25TZWxlY3RlZCIsImZpeGVkT3B0aW9ucyIsImRpc3BsYXkiLCJvcHRpb25zIiwibGVuZ3RoIiwiYWxsb3dDdXN0b21WYWx1ZXMiLCJ2YWx1ZU9mZnNldCIsIkFycmF5IiwiaXNBcnJheSIsImN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQiLCJtYXAiLCJpIiwiaG92ZXIiLCJzZWxlY3Rpb25JbmRleCIsImZpeGVkIiwiZSIsIl9vbkNsaWNrIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwiYXJyYXlPZiIsImFueSIsIm51bWJlciIsImN1c3RvbUNsYXNzZXMiLCJvYmplY3QiLCJjdXN0b21WYWx1ZXMiLCJjdXN0b21MaXN0SXRlbUNvbXBvbmVudCIsIm9uZU9mVHlwZSIsImVsZW1lbnQiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImRlZmF1bHRDbGFzc05hbWVzIiwiYm9vbCIsImFyZVJlc3VsdHNUcnVuY2F0ZWQiLCJyZXN1bHRzVHJ1bmNhdGVkTWVzc2FnZSIsInN0cmlu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QUFFZCxzQkFBVWEsSUFYZDtBQVlqQkUsRUFBQUEsdUJBQXVCLEVBQUVmLHNCQUFVZ0IsTUFabEI7QUFhakJDLEVBQUFBLGlCQUFpQixFQUFFakIsc0JBQVVVO0FBYlosQztpQ0FEQWhDLFksa0JBaUJHO0FBQ3BCMEIsRUFBQUEsYUFBYSxFQUFFLEVBREs7QUFFcEJHLEVBQUFBLHVCQUF1QixFQUFFNUMsUUFGTDtBQUdwQjRCLEVBQUFBLHlCQUF5QixFQUFFLElBSFA7QUFJcEJKLEVBQUFBLGlCQUFpQixFQUFFLENBSkM7QUFLcEJtQixFQUFBQSxZQUFZLEVBQUUsRUFMTTtBQU1wQnpDLEVBQUFBLGFBQWEsRUFBRUosY0FOSztBQU9wQnFCLEVBQUFBLGdCQUFnQixFQUFFLDRCQUFNLENBQUUsQ0FQTjtBQVFwQjhCLEVBQUFBLGlCQUFpQixFQUFFLElBUkM7QUFTcEJqQixFQUFBQSxjQUFjLEVBQUU7QUFUSSxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgbGlzdDogJ2xpc3Qtc2VsZWN0b3InLFxuICBsaXN0SGVhZGVyOiAnbGlzdF9faGVhZGVyJyxcbiAgbGlzdFNlY3Rpb246ICdsaXN0X19zZWN0aW9uJyxcbiAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgbGlzdEl0ZW1BbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG59O1xuXG5jb25zdCBkZWZhdWx0RGlzcGxheSA9IGQgPT4gZDtcbmV4cG9ydCBjb25zdCBMaXN0SXRlbSA9ICh7dmFsdWUsIGRpc3BsYXlPcHRpb24gPSBkZWZhdWx0RGlzcGxheX0pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdEl0ZW1BbmNob3J9PntkaXNwbGF5T3B0aW9uKHZhbHVlKX08L3NwYW4+XG4pO1xuXG5jb25zdCBEcm9wZG93bkxpc3RXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuICBib3JkZXItdG9wOiAxcHggc29saWRcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdCl9O1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHJvcGRvd25MaXN0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogUHJvcFR5cGVzLm51bWJlcixcbiAgICBjdXN0b21DbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGN1c3RvbVZhbHVlczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIHNlbGVjdGlvbkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGRpc3BsYXlPcHRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgZGVmYXVsdENsYXNzTmFtZXM6IFByb3BUeXBlcy5ib29sLFxuICAgIGFyZVJlc3VsdHNUcnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGxpc3RJdGVtQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuY1xuICB9O1xuXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY3VzdG9tQ2xhc3Nlczoge30sXG4gICAgY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQ6IExpc3RJdGVtLFxuICAgIGN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgYWxsb3dDdXN0b21WYWx1ZXM6IDAsXG4gICAgY3VzdG9tVmFsdWVzOiBbXSxcbiAgICBkaXNwbGF5T3B0aW9uOiBkZWZhdWx0RGlzcGxheSxcbiAgICBvbk9wdGlvblNlbGVjdGVkOiAoKSA9PiB7fSxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogdHJ1ZSxcbiAgICBzZWxlY3Rpb25JbmRleDogbnVsbFxuICB9O1xuXG4gIF9vbkNsaWNrKHJlc3VsdCwgZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMucHJvcHMub25PcHRpb25TZWxlY3RlZChyZXN1bHQsIGV2ZW50KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Zml4ZWRPcHRpb25zLCBsaWdodH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGRpc3BsYXkgPSB0aGlzLnByb3BzLmRpc3BsYXlPcHRpb247XG5cbiAgICAvLyBEb24ndCByZW5kZXIgaWYgdGhlcmUgYXJlIG5vIG9wdGlvbnMgdG8gZGlzcGxheVxuICAgIGlmICghdGhpcy5wcm9wcy5vcHRpb25zLmxlbmd0aCAmJiB0aGlzLnByb3BzLmFsbG93Q3VzdG9tVmFsdWVzIDw9IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZU9mZnNldCA9IEFycmF5LmlzQXJyYXkoZml4ZWRPcHRpb25zKSA/IGZpeGVkT3B0aW9ucy5sZW5ndGggOiAwO1xuXG4gICAgLy8gRm9yIHNvbWUgcmVhc29uIG9uQ2xpY2sgaXMgbm90IGZpcmVkIHdoZW4gY2xpY2tlZCBvbiBhbiBvcHRpb25cbiAgICAvLyBvbk1vdXNlRG93biBpcyB1c2VkIGhlcmUgYXMgYSB3b3JrYXJvdW5kIG9mICMyMDUgYW5kIG90aGVyXG4gICAgcmV0dXJuIChcbiAgICAgIDxEcm9wZG93bkxpc3RXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3R9IGxpZ2h0PXtsaWdodH0+XG4gICAgICAgIHt0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTGlzdC5saXN0SGVhZGVyfT5cbiAgICAgICAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAge3ZhbHVlT2Zmc2V0ID4gMCA/IChcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3RTZWN0aW9ufT5cbiAgICAgICAgICAgIHtmaXhlZE9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzTGlzdC5saXN0SXRlbSwge1xuICAgICAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGksXG4gICAgICAgICAgICAgICAgICBmaXhlZDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgIGtleT17YCR7ZGlzcGxheSh2YWx1ZSl9XyR7aX1gfVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gdGhpcy5fb25DbGljayh2YWx1ZSwgZSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMubWFwKCh2YWx1ZSwgaSkgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgaG92ZXI6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGkgKyB2YWx1ZU9mZnNldFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICBrZXk9e2Ake2Rpc3BsYXkodmFsdWUpfV8ke2l9YH1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+IHRoaXMuX29uQ2xpY2sodmFsdWUsIGUpfVxuICAgICAgICAgICAgb25DbGljaz17ZSA9PiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9Ecm9wZG93bkxpc3RXcmFwcGVyPlxuICAgICk7XG4gIH1cbn1cbiJdfQ==
276
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QuanMiXSwibmFtZXMiOlsiY2xhc3NMaXN0IiwibGlzdCIsImxpc3RIZWFkZXIiLCJsaXN0U2VjdGlvbiIsImxpc3RJdGVtIiwibGlzdEl0ZW1BbmNob3IiLCJkZWZhdWx0RGlzcGxheSIsImQiLCJMaXN0SXRlbSIsInZhbHVlIiwiZGlzcGxheU9wdGlvbiIsIkRyb3Bkb3duTGlzdFdyYXBwZXIiLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsImxpZ2h0IiwidGhlbWUiLCJkcm9wZG93bkxpc3RCZ2RMVCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcExUIiwiZHJvcGRvd25MaXN0Qm9yZGVyVG9wIiwiZHJvcGRvd25MaXN0TFQiLCJkcm9wZG93bkxpc3QiLCJEcm9wZG93bkxpc3RDb250YWluZXIiLCJJdGVtIiwiRHJvcGRvd25MaXN0IiwiY3VycmVudE9wdGlvbiIsInN1Ym1lbnVWaXNpYmxlIiwic3VibWVudVBvc2l0aW9uIiwic3ViT3B0aW9ucyIsImNhbGxiYWNrIiwidW5kZWZpbmVkIiwic2V0U3RhdGUiLCJvcHRpb24iLCJzdWJPcHRpb24iLCJldmVudCIsIm9wdGlvblNlbGVjdGVkIiwic2VsZWN0ZWRBZ2dyZWdhdG9yIiwiaWQiLCJ3aXRoU3ViT3B0aW9ucyIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJlbCIsInRhcmdldCIsImNvbnRhaW5zIiwidG9wIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwibGVmdCIsInJpZ2h0IiwicHJldlByb3BzIiwic2VhcmNoRW50cnlWYWx1ZSIsIl9yZXNldFN0YXRlIiwiZml4ZWRPcHRpb25zIiwiZGlzcGxheSIsIm9wdGlvbnMiLCJsZW5ndGgiLCJhbGxvd0N1c3RvbVZhbHVlcyIsInZhbHVlT2Zmc2V0IiwiQXJyYXkiLCJpc0FycmF5IiwiY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCIsIm1hcCIsImkiLCJhY3RpdmUiLCJzZWxlY3Rpb25JbmRleCIsImhvdmVyIiwic3RhdGUiLCJmaXhlZCIsImUiLCJoYXNTdWJPcHRpb25zIiwiX29uQ2xpY2siLCJfb25Nb3VzZU92ZXIiLCJhZ2dyZWdhdG9ycyIsImEiLCJGSUVMRF9BR0dSRUdBVE9SUyIsImZpbmQiLCJhbSIsImFnZ3JlZ2F0b3IiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwiYW55IiwibnVtYmVyIiwiY3VzdG9tQ2xhc3NlcyIsIm9iamVjdCIsImN1c3RvbVZhbHVlcyIsImN1c3RvbUxpc3RJdGVtQ29tcG9uZW50Iiwib25lT2ZUeXBlIiwiZWxlbWVudCIsImZ1bmMiLCJpc1JlcXVpcmVkIiwiZGVmYXVsdENsYXNzTmFtZXMiLCJib29sIiwiYXJlUmVzdWx0c1RydW5jYXRlZCIsInJlc3VsdHNUcnVuY2F0ZWRNZXNzYWdlIiwic3RyaW5nIiwibGlzdEl0ZW1Db21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUEsU0FBUyxHQUFHO0FBQ3ZCQyxFQUFBQSxJQUFJLEVBQUUsZUFEaUI7QUFFdkJDLEVBQUFBLFVBQVUsRUFBRSxjQUZXO0FBR3ZCQyxFQUFBQSxXQUFXLEVBQUUsZUFIVTtBQUl2QkMsRUFBQUEsUUFBUSxFQUFFLFlBSmE7QUFLdkJDLEVBQUFBLGNBQWMsRUFBRTtBQUxPLENBQWxCOzs7QUFRUCxJQUFNQyxjQUFjLEdBQUcsU0FBakJBLGNBQWlCLENBQUFDLENBQUM7QUFBQSxTQUFJQSxDQUFKO0FBQUEsQ0FBeEI7O0FBQ08sSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVc7QUFBQSxNQUFFQyxLQUFGLFFBQUVBLEtBQUY7QUFBQSxnQ0FBU0MsYUFBVDtBQUFBLE1BQVNBLGFBQVQsbUNBQXlCSixjQUF6QjtBQUFBLHNCQUN0QjtBQUFNLElBQUEsU0FB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UjtBQU9qQjdCLEVBQUFBLHlCQUF5QixFQUFFbUIsc0JBQVVRLFNBQVYsQ0FBb0IsQ0FBQ1Isc0JBQVVTLE9BQVgsRUFBb0JULHNCQUFVVSxJQUE5QixDQUFwQixDQVBWO0FBUWpCekIsRUFBQUEsY0FBYyxFQUFFZSxzQkFBVUcsTUFSVDtBQVNqQnpDLEVBQUFBLGdCQUFnQixFQUFFc0Msc0JBQVVVLElBVFg7QUFVakI5RSxFQUFBQSxhQUFhLEVBQUVvRSxzQkFBVVUsSUFBVixDQUFlQyxVQVZiO0FBV2pCQyxFQUFBQSxpQkFBaUIsRUFBRVosc0JBQVVhLElBWFo7QUFZakJDLEVBQUFBLG1CQUFtQixFQUFFZCxzQkFBVWEsSUFaZDtBQWFqQkUsRUFBQUEsdUJBQXVCLEVBQUVmLHNCQUFVZ0IsTUFibEI7QUFjakJDLEVBQUFBLGlCQUFpQixFQUFFakIsc0JBQVVVLElBZFo7QUFlakJ2QyxFQUFBQSxnQkFBZ0IsRUFBRTZCLHNCQUFVZ0IsTUFmWDtBQWdCakJ2RCxFQUFBQSxjQUFjLEVBQUV1QyxzQkFBVWE7QUFoQlQsQztpQ0FEQWxFLFksa0JBb0JHO0FBQ3BCeUQsRUFBQUEsYUFBYSxFQUFFLEVBREs7QUFFcEJHLEVBQUFBLHVCQUF1QixFQUFFN0UsUUFGTDtBQUdwQm1ELEVBQUFBLHlCQUF5QixFQUFFLElBSFA7QUFJcEJKLEVBQUFBLGlCQUFpQixFQUFFLENBSkM7QUFLcEI2QixFQUFBQSxZQUFZLEVBQUUsRUFMTTtBQU1wQjFFLEVBQUFBLGFBQWEsRUFBRUosY0FOSztBQU9wQmtDLEVBQUFBLGdCQUFnQixFQUFFLDRCQUFNLENBQUUsQ0FQTjtBQVFwQmtELEVBQUFBLGlCQUFpQixFQUFFLElBUkM7QUFTcEIzQixFQUFBQSxjQUFjLEVBQUUsSUFUSTtBQVVwQnhCLEVBQUFBLGNBQWMsRUFBRTtBQVZJLEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEl0ZW1TZWxlY3RvclN1Ym1lbnUgZnJvbSAnLi9pdGVtLXNlbGVjdG9yLXN1Ym1lbnUnO1xuaW1wb3J0IHtDaGV2cm9uUmlnaHR9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCB7RklFTERfQUdHUkVHQVRPUlN9IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuZXhwb3J0IGNvbnN0IGNsYXNzTGlzdCA9IHtcbiAgbGlzdDogJ2xpc3Qtc2VsZWN0b3InLFxuICBsaXN0SGVhZGVyOiAnbGlzdF9faGVhZGVyJyxcbiAgbGlzdFNlY3Rpb246ICdsaXN0X19zZWN0aW9uJyxcbiAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgbGlzdEl0ZW1BbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG59O1xuXG5jb25zdCBkZWZhdWx0RGlzcGxheSA9IGQgPT4gZDtcbmV4cG9ydCBjb25zdCBMaXN0SXRlbSA9ICh7dmFsdWUsIGRpc3BsYXlPcHRpb24gPSBkZWZhdWx0RGlzcGxheX0pID0+IChcbiAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdEl0ZW1BbmNob3J9PntkaXNwbGF5T3B0aW9uKHZhbHVlKX08L3NwYW4+XG4pO1xuXG5jb25zdCBEcm9wZG93bkxpc3RXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuICBib3JkZXItdG9wOiAxcHggc29saWRcbiAgICAke3Byb3BzID0+XG4gICAgICBwcm9wcy5saWdodCA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEJvcmRlclRvcExUIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbiAgJHtwcm9wcyA9PiAocHJvcHMubGlnaHQgPyBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RMVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdCl9O1xuYDtcblxuY29uc3QgRHJvcGRvd25MaXN0Q29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuY29uc3QgSXRlbSA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1yaWdodDogMjVweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBzdmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgb3BhY2l0eTogMC42O1xuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEcm9wZG93bkxpc3QgZXh0ZW5kcyBDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIHN1Yk9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLFxuICAgIGFsbG93Q3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGN1c3RvbUNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY3VzdG9tVmFsdWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KSxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgc2VsZWN0aW9uSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb25PcHRpb25TZWxlY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lczogUHJvcFR5cGVzLmJvb2wsXG4gICAgYXJlUmVzdWx0c1RydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgcmVzdWx0c1RydW5jYXRlZE1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGlzdEl0ZW1Db21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHNlYXJjaEVudHJ5VmFsdWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgd2l0aFN1Yk9wdGlvbnM6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjdXN0b21DbGFzc2VzOiB7fSxcbiAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudDogTGlzdEl0ZW0sXG4gICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudDogbnVsbCxcbiAgICBhbGxvd0N1c3RvbVZhbHVlczogMCxcbiAgICBjdXN0b21WYWx1ZXM6IFtdLFxuICAgIGRpc3BsYXlPcHRpb246IGRlZmF1bHREaXNwbGF5LFxuICAgIG9uT3B0aW9uU2VsZWN0ZWQ6ICgpID0+IHt9LFxuICAgIGRlZmF1bHRDbGFzc05hbWVzOiB0cnVlLFxuICAgIHNlbGVjdGlvbkluZGV4OiBudWxsLFxuICAgIHdpdGhTdWJPcHRpb25zOiBmYWxzZVxuICB9O1xuXG4gIHN0YXRlID0ge1xuICAgIGN1cnJlbnRPcHRpb246IHt9LFxuICAgIHN1Ym1lbnVWaXNpYmxlOiBmYWxzZSxcbiAgICBzdWJtZW51UG9zaXRpb246IHt9XG4gIH07XG5cbiAgaGFzU3ViT3B0aW9ucyA9ICEhdGhpcy5wcm9wcy5zdWJPcHRpb25zXG5cbiAgX3Jlc2V0U3RhdGUoY2FsbGJhY2sgPSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50T3B0aW9uOiB7fSwgc3VibWVudVZpc2libGU6IGZhbHNlLCBzdWJtZW51UG9zaXRpb246IHt9fSwgY2FsbGJhY2spO1xuICB9XG5cbiAgX29uQ2xpY2sob3B0aW9uLCBzdWJPcHRpb24sIGV2ZW50KSB7XG4gICAgY29uc3Qgb3B0aW9uU2VsZWN0ZWQgPSB0eXBlb2Yob3B0aW9uKSA9PT0gJ3N0cmluZycgPyBvcHRpb24gOiB7XG4gICAgICAuLi5vcHRpb24sXG4gICAgICBzZWxlY3RlZEFnZ3JlZ2F0b3I6IHN1Yk9wdGlvbj8uaWRcbiAgICB9XG4gICAgaWYgKCh0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmIHN1Yk9wdGlvbj8uaWQpIHx8ICF0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zKSB7XG4gICAgICB0aGlzLnByb3BzLm9uT3B0aW9uU2VsZWN0ZWQob3B0aW9uU2VsZWN0ZWQsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBfb25Nb3VzZU92ZXIob3B0aW9uLCBldmVudCkge1xuICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0XG4gICAgaWYgKGVsLmNsYXNzTGlzdC5jb250YWlucygnbGlzdF9faXRlbScpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgY3VycmVudE9wdGlvbjogb3B0aW9uLFxuICAgICAgICBzdWJtZW51VmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgc3VibWVudVBvc2l0aW9uOiB7XG4gICAgICAgICAgdG9wOiBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AsXG4gICAgICAgICAgbGVmdDogZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHRcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgIGlmIChwcmV2UHJvcHMuc2VhcmNoRW50cnlWYWx1ZSAhPT0gdGhpcy5wcm9wcy5zZWFyY2hFbnRyeVZhbHVlKSB7XG4gICAgICB0aGlzLl9yZXNldFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtmaXhlZE9wdGlvbnMsIGxpZ2h0fSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgZGlzcGxheSA9IHRoaXMucHJvcHMuZGlzcGxheU9wdGlvbjtcblxuICAgIC8vIERvbid0IHJlbmRlciBpZiB0aGVyZSBhcmUgbm8gb3B0aW9ucyB0byBkaXNwbGF5XG4gICAgaWYgKCF0aGlzLnByb3BzLm9wdGlvbnMubGVuZ3RoICYmIHRoaXMucHJvcHMuYWxsb3dDdXN0b21WYWx1ZXMgPD0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlT2Zmc2V0ID0gQXJyYXkuaXNBcnJheShmaXhlZE9wdGlvbnMpID8gZml4ZWRPcHRpb25zLmxlbmd0aCA6IDA7XG5cbiAgICAvLyBGb3Igc29tZSByZWFzb24gb25DbGljayBpcyBub3QgZmlyZWQgd2hlbiBjbGlja2VkIG9uIGFuIG9wdGlvblxuICAgIC8vIG9uTW91c2VEb3duIGlzIHVzZWQgaGVyZSBhcyBhIHdvcmthcm91bmQgb2YgIzIwNSBhbmQgb3RoZXJcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duTGlzdENvbnRhaW5lciBvbk1vdXNlTGVhdmU9eygpID0+IHRoaXMuX3Jlc2V0U3RhdGUoKX0+XG4gICAgICAgIDxEcm9wZG93bkxpc3RXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3R9IGxpZ2h0PXtsaWdodH0+XG4gICAgICAgICAge3RoaXMucHJvcHMuY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdEhlYWRlcn0+XG4gICAgICAgICAgICAgIDx0aGlzLnByb3BzLmN1c3RvbUxpc3RIZWFkZXJDb21wb25lbnQgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAge3ZhbHVlT2Zmc2V0ID4gMCA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc0xpc3QubGlzdFNlY3Rpb259PlxuICAgICAgICAgICAgICB7Zml4ZWRPcHRpb25zLm1hcCgodmFsdWUsIGkpID0+IChcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3NMaXN0Lmxpc3RJdGVtLCB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdGhpcy5wcm9wcy5zZWxlY3Rpb25JbmRleCA9PT0gaSxcbiAgICAgICAgICAgICAgICAgICAgaG92ZXI6IHZhbHVlLmlkICYmICh0aGlzLnN0YXRlLmN1cnJlbnRPcHRpb24/LmlkID09PSB2YWx1ZS5pZCksXG4gICAgICAgICAgICAgICAgICAgIGZpeGVkOiB0cnVlXG4gICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIGtleT17YCR7ZGlzcGxheSh2YWx1ZSl9XyR7aX1gfVxuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2UgPT4gIXRoaXMuaGFzU3ViT3B0aW9ucyAmJiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBudWxsLCBlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gIXRoaXMuaGFzU3ViT3B0aW9ucyAmJiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBudWxsLCBlKX1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VPdmVyPXtlID0+IHRoaXMuX29uTW91c2VPdmVyKHZhbHVlLCBlKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcCgodmFsdWUsIGkpID0+IChcbiAgICAgICAgICAgIDxJdGVtXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc0xpc3QubGlzdEl0ZW0sIHtcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRoaXMucHJvcHMuc2VsZWN0aW9uSW5kZXggPT09IGkgKyB2YWx1ZU9mZnNldCxcbiAgICAgICAgICAgICAgICBob3ZlcjogdmFsdWUuaWQgJiYgKHRoaXMuc3RhdGUuY3VycmVudE9wdGlvbj8uaWQgPT09IHZhbHVlLmlkKVxuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAga2V5PXtgJHtkaXNwbGF5KHZhbHVlKX1fJHtpfWB9XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXtlID0+ICF0aGlzLmhhc1N1Yk9wdGlvbnMgJiYgdGhpcy5fb25DbGljayh2YWx1ZSwgbnVsbCwgZSl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4gIXRoaXMuaGFzU3ViT3B0aW9ucyAmJiB0aGlzLl9vbkNsaWNrKHZhbHVlLCBudWxsLCBlKX1cbiAgICAgICAgICAgICAgb25Nb3VzZU92ZXI9e2UgPT4gdGhpcy5fb25Nb3VzZU92ZXIodmFsdWUsIGUpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8dGhpcy5wcm9wcy5jdXN0b21MaXN0SXRlbUNvbXBvbmVudCB2YWx1ZT17dmFsdWV9IGRpc3BsYXlPcHRpb249e2Rpc3BsYXl9IC8+XG4gICAgICAgICAgICAgIHt0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zICYmIHZhbHVlLmFnZ3JlZ2F0b3JzICYmIDxDaGV2cm9uUmlnaHQgLz59XG4gICAgICAgICAgICA8L0l0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRHJvcGRvd25MaXN0V3JhcHBlcj5cbiAgICAgICAge3RoaXMucHJvcHMud2l0aFN1Yk9wdGlvbnMgJiZcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRPcHRpb24gJiZcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRPcHRpb24uYWdncmVnYXRvcnMgJiYgKFxuICAgICAgICAgICAgPEl0ZW1TZWxlY3RvclN1Ym1lbnVcbiAgICAgICAgICAgICAgcG9zaXRpb249e3RoaXMuc3RhdGUuc3VibWVudVBvc2l0aW9ufVxuICAgICAgICAgICAgICBvcHRpb25zPXt0aGlzLnN0YXRlLmN1cnJlbnRPcHRpb24uYWdncmVnYXRvcnMubWFwKGEgPT5cbiAgICAgICAgICAgICAgICBGSUVMRF9BR0dSRUdBVE9SUy5maW5kKGFtID0+IGFtLmlkID09PSBhKVxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoYWdncmVnYXRvciwgZSkgPT4gdGhpcy5fb25DbGljayh0aGlzLnN0YXRlLmN1cnJlbnRPcHRpb24sIGFnZ3JlZ2F0b3IsIGUpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC9Ecm9wZG93bkxpc3RDb250YWluZXI+XG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
27
+
28
+ var _react = _interopRequireWildcard(require("react"));
29
+
30
+ var _propTypes = _interopRequireDefault(require("prop-types"));
31
+
32
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
33
+
34
+ var _templateObject;
35
+
36
+ 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); }; }
37
+
38
+ 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; } }
39
+
40
+ var ItemSelectorSubmenuStyled = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding: 5px 0;\n position: fixed;\n min-width: 100px;\n top: ", "px;\n left: ", "px;\n z-index: 10;\n font-weight: 500;\n transform: translateY(", "px);\n ", ";\n background-color: ", ";\n"])), function (props) {
41
+ return props.position.top;
42
+ }, function (props) {
43
+ return props.position.left;
44
+ }, function (props) {
45
+ return props.verticalTranslation;
46
+ }, function (props) {
47
+ return props.light ? props.theme.dropdownListLT : props.theme.dropdownList;
48
+ }, function (props) {
49
+ return props.light ? props.theme.dropdownListBgdLT : props.theme.dropdownListBgd;
50
+ });
51
+
52
+ var ItemSelectorSubmenu = /*#__PURE__*/function (_Component) {
53
+ (0, _inherits2["default"])(ItemSelectorSubmenu, _Component);
54
+
55
+ var _super = _createSuper(ItemSelectorSubmenu);
56
+
57
+ function ItemSelectorSubmenu() {
58
+ var _this;
59
+
60
+ (0, _classCallCheck2["default"])(this, ItemSelectorSubmenu);
61
+
62
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
63
+ args[_key] = arguments[_key];
64
+ }
65
+
66
+ _this = _super.call.apply(_super, [this].concat(args));
67
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
68
+ verticalTranslation: 0
69
+ });
70
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "container", /*#__PURE__*/(0, _react.createRef)());
71
+ return _this;
72
+ }
73
+
74
+ (0, _createClass2["default"])(ItemSelectorSubmenu, [{
75
+ key: "_adjustPosition",
76
+ value: function _adjustPosition() {
77
+ var _this2 = this;
78
+
79
+ this.setState({
80
+ verticalTranslation: 0
81
+ }, function () {
82
+ var containerOffsetBottom = window.innerHeight - _this2.container.current.getBoundingClientRect().bottom;
83
+
84
+ if (containerOffsetBottom < 0) {
85
+ _this2.setState({
86
+ verticalTranslation: containerOffsetBottom
87
+ });
88
+ }
89
+ });
90
+ }
91
+ }, {
92
+ key: "componentDidMount",
93
+ value: function componentDidMount() {
94
+ this._adjustPosition();
95
+ }
96
+ }, {
97
+ key: "componentDidUpdate",
98
+ value: function componentDidUpdate(prevProps) {
99
+ if (this.props.position.top !== prevProps.position.top) {
100
+ this._adjustPosition();
101
+ }
102
+ }
103
+ }, {
104
+ key: "render",
105
+ value: function render() {
106
+ var _this3 = this;
107
+
108
+ return /*#__PURE__*/_react["default"].createElement(ItemSelectorSubmenuStyled, {
109
+ position: this.props.position,
110
+ ref: this.container,
111
+ verticalTranslation: this.state.verticalTranslation
112
+ }, this.props.options.map(function (option, i) {
113
+ return /*#__PURE__*/_react["default"].createElement("div", {
114
+ className: "list__item",
115
+ key: i,
116
+ onClick: function onClick(e) {
117
+ return _this3.props.onClick(option, e);
118
+ }
119
+ }, option.displayName);
120
+ }));
121
+ }
122
+ }]);
123
+ return ItemSelectorSubmenu;
124
+ }(_react.Component);
125
+
126
+ (0, _defineProperty2["default"])(ItemSelectorSubmenu, "propTypes", {
127
+ position: _propTypes["default"].object,
128
+ options: _propTypes["default"].array,
129
+ onClick: _propTypes["default"].func
130
+ });
131
+ var _default = ItemSelectorSubmenu;
132
+ exports["default"] = _default;
133
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3Itc3VibWVudS5qcyJdLCJuYW1lcyI6WyJJdGVtU2VsZWN0b3JTdWJtZW51U3R5bGVkIiwic3R5bGVkIiwiZGl2IiwicHJvcHMiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ2ZXJ0aWNhbFRyYW5zbGF0aW9uIiwibGlnaHQiLCJ0aGVtZSIsImRyb3Bkb3duTGlzdExUIiwiZHJvcGRvd25MaXN0IiwiZHJvcGRvd25MaXN0QmdkTFQiLCJkcm9wZG93bkxpc3RCZ2QiLCJJdGVtU2VsZWN0b3JTdWJtZW51Iiwic2V0U3RhdGUiLCJjb250YWluZXJPZmZzZXRCb3R0b20iLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsImNvbnRhaW5lciIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3R0b20iLCJfYWRqdXN0UG9zaXRpb24iLCJwcmV2UHJvcHMiLCJzdGF0ZSIsIm9wdGlvbnMiLCJtYXAiLCJvcHRpb24iLCJpIiwiZSIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVBLElBQU1BLHlCQUF5QixHQUFHQyw2QkFBT0MsR0FBVixpU0FJdEIsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsUUFBTixDQUFlQyxHQUFuQjtBQUFBLENBSmlCLEVBS3JCLFVBQUFGLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLFFBQU4sQ0FBZUUsSUFBbkI7QUFBQSxDQUxnQixFQVFMLFVBQUFILEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNJLG1CQUFWO0FBQUEsQ0FSQSxFQVMzQixVQUFBSixLQUFLO0FBQUEsU0FBS0EsS0FBSyxDQUFDSyxLQUFOLEdBQWNMLEtBQUssQ0FBQ00sS0FBTixDQUFZQyxjQUExQixHQUEyQ1AsS0FBSyxDQUFDTSxLQUFOLENBQVlFLFlBQTVEO0FBQUEsQ0FUc0IsRUFVVCxVQUFBUixLQUFLO0FBQUEsU0FDdkJBLEtBQUssQ0FBQ0ssS0FBTixHQUFjTCxLQUFLLENBQUNNLEtBQU4sQ0FBWUcsaUJBQTFCLEdBQThDVCxLQUFLLENBQUNNLEtBQU4sQ0FBWUksZUFEbkM7QUFBQSxDQVZJLENBQS9COztJQWNNQyxtQjs7Ozs7Ozs7Ozs7Ozs7OzhGQU9JO0FBQ05QLE1BQUFBLG1CQUFtQixFQUFFO0FBRGYsSzsrR0FJSSx1Qjs7Ozs7O1dBRVosMkJBQWtCO0FBQUE7O0FBQ2hCLFdBQUtRLFFBQUwsQ0FBYztBQUFFUixRQUFBQSxtQkFBbUIsRUFBRTtBQUF2QixPQUFkLEVBQTBDLFlBQU07QUFDOUMsWUFBTVMscUJBQXFCLEdBQUdDLE1BQU0sQ0FBQ0MsV0FBUCxHQUFxQixNQUFJLENBQUNDLFNBQUwsQ0FBZUMsT0FBZixDQUF1QkMscUJBQXZCLEdBQStDQyxNQUFsRzs7QUFDQSxZQUFJTixxQkFBcUIsR0FBRyxDQUE1QixFQUErQjtBQUM3QixVQUFBLE1BQUksQ0FBQ0QsUUFBTCxDQUFjO0FBQUVSLFlBQUFBLG1CQUFtQixFQUFFUztBQUF2QixXQUFkO0FBQ0Q7QUFDRixPQUxEO0FBTUQ7OztXQUVELDZCQUFvQjtBQUNsQixXQUFLTyxlQUFMO0FBQ0Q7OztXQUVELDRCQUFtQkMsU0FBbkIsRUFBOEI7QUFDNUIsVUFBSSxLQUFLckIsS0FBTCxDQUFXQyxRQUFYLENBQW9CQyxHQUFwQixLQUE0Qm1CLFNBQVMsQ0FBQ3BCLFFBQVYsQ0FBbUJDLEdBQW5ELEVBQXdEO0FBQ3RELGFBQUtrQixlQUFMO0FBQ0Q7QUFDRjs7O1dBRUQsa0JBQVM7QUFBQTs7QUFDUCwwQkFDRSxnQ0FBQyx5QkFBRDtBQUNFLFFBQUEsUUFBUSxFQUFFLEtBQUtwQixLQUFMLENBQVdDLFFBRHZCO0FBRUUsUUFBQSxHQUFHLEVBQUUsS0FBS2UsU0FGWjtBQUdFLFFBQUEsbUJBQW1CLEVBQUUsS0FBS00sS0FBTCxDQUFXbEI7QUFIbEMsU0FLRyxLQUFLSixLQUFMLENBQVd1QixPQUFYLENBQW1CQyxHQUFuQixDQUF1QixVQUFDQyxNQUFELEVBQVNDLENBQVQ7QUFBQSw0QkFDdEI7QUFBSyxVQUFBLFNBQVMsRUFBQyxZQUFmO0FBQTRCLFVBQUEsR0FBRyxFQUFFQSxDQUFqQztBQUFvQyxVQUFBLE9BQU8sRUFBRSxpQkFBQUMsQ0FBQztBQUFBLG1CQUFJLE1BQUksQ0FBQzNCLEtBQUwsQ0FBVzRCLE9BQVgsQ0FBbUJILE1BQW5CLEVBQTJCRSxDQUEzQixDQUFKO0FBQUE7QUFBOUMsV0FDR0YsTUFBTSxDQUFDSSxXQURWLENBRHNCO0FBQUEsT0FBdkIsQ0FMSCxDQURGO0FBYUQ7OztFQTlDK0JDLGdCOztpQ0FBNUJuQixtQixlQUNlO0FBQ2pCVixFQUFBQSxRQUFRLEVBQUU4QixzQkFBVUMsTUFESDtBQUVqQlQsRUFBQUEsT0FBTyxFQUFFUSxzQkFBVUUsS0FGRjtBQUdqQkwsRUFBQUEsT0FBTyxFQUFFRyxzQkFBVUc7QUFIRixDO2VBZ0ROdkIsbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5jb25zdCBJdGVtU2VsZWN0b3JTdWJtZW51U3R5bGVkID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogNXB4IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgbWluLXdpZHRoOiAxMDBweDtcbiAgdG9wOiAke3Byb3BzID0+IHByb3BzLnBvc2l0aW9uLnRvcH1weDtcbiAgbGVmdDogJHtwcm9wcyA9PiBwcm9wcy5wb3NpdGlvbi5sZWZ0fXB4O1xuICB6LWluZGV4OiAxMDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCR7cHJvcHMgPT4gcHJvcHMudmVydGljYWxUcmFuc2xhdGlvbn1weCk7XG4gICR7cHJvcHMgPT4gKHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0TFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3QpfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmxpZ2h0ID8gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkTFQgOiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RCZ2R9O1xuYFxuXG5jbGFzcyBJdGVtU2VsZWN0b3JTdWJtZW51IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBwb3NpdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgb25DbGljazogUHJvcFR5cGVzLmZ1bmNcbiAgfVxuXG4gIHN0YXRlID0ge1xuICAgIHZlcnRpY2FsVHJhbnNsYXRpb246IDBcbiAgfVxuXG4gIGNvbnRhaW5lciA9IGNyZWF0ZVJlZigpXG5cbiAgX2FkanVzdFBvc2l0aW9uKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoeyB2ZXJ0aWNhbFRyYW5zbGF0aW9uOiAwIH0sICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldEJvdHRvbSA9IHdpbmRvdy5pbm5lckhlaWdodCAtIHRoaXMuY29udGFpbmVyLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tO1xuICAgICAgaWYgKGNvbnRhaW5lck9mZnNldEJvdHRvbSA8IDApIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZlcnRpY2FsVHJhbnNsYXRpb246IGNvbnRhaW5lck9mZnNldEJvdHRvbSB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLl9hZGp1c3RQb3NpdGlvbigpXG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgaWYgKHRoaXMucHJvcHMucG9zaXRpb24udG9wICE9PSBwcmV2UHJvcHMucG9zaXRpb24udG9wKSB7XG4gICAgICB0aGlzLl9hZGp1c3RQb3NpdGlvbigpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8SXRlbVNlbGVjdG9yU3VibWVudVN0eWxlZFxuICAgICAgICBwb3NpdGlvbj17dGhpcy5wcm9wcy5wb3NpdGlvbn1cbiAgICAgICAgcmVmPXt0aGlzLmNvbnRhaW5lcn1cbiAgICAgICAgdmVydGljYWxUcmFuc2xhdGlvbj17dGhpcy5zdGF0ZS52ZXJ0aWNhbFRyYW5zbGF0aW9ufVxuICAgICAgPlxuICAgICAgICB7dGhpcy5wcm9wcy5vcHRpb25zLm1hcCgob3B0aW9uLCBpKSA9PiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsaXN0X19pdGVtXCIga2V5PXtpfSBvbkNsaWNrPXtlID0+IHRoaXMucHJvcHMub25DbGljayhvcHRpb24sIGUpfT5cbiAgICAgICAgICAgIHtvcHRpb24uZGlzcGxheU5hbWV9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9JdGVtU2VsZWN0b3JTdWJtZW51U3R5bGVkPlxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJdGVtU2VsZWN0b3JTdWJtZW51O1xuIl19
@@ -227,7 +227,8 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
227
227
  searchable: this.props.searchable,
228
228
  showOptionsWhenEmpty: true,
229
229
  selectedItems: (0, _utils.toArray)(this.props.selectedItems),
230
- light: this.props.inputTheme === 'light'
230
+ light: this.props.inputTheme === 'light',
231
+ withSubOptions: this.props.withSubOptions
231
232
  }));
232
233
  }
233
234
  }, {
@@ -313,7 +314,8 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
313
314
  DropdownHeaderComponent: _propTypes["default"].func,
314
315
  DropDownRenderComponent: _propTypes["default"].func,
315
316
  DropDownLineItemRenderComponent: _propTypes["default"].func,
316
- CustomChickletComponent: _propTypes["default"].func
317
+ CustomChickletComponent: _propTypes["default"].func,
318
+ withSubOptions: _propTypes["default"].bool
317
319
  });
318
320
  (0, _defineProperty2["default"])(ItemSelector, "defaultProps", {
319
321
  erasable: false,
@@ -332,7 +334,8 @@ var ItemSelector = /*#__PURE__*/function (_Component) {
332
334
  dropdownHeader: null,
333
335
  DropdownHeaderComponent: null,
334
336
  DropDownRenderComponent: _dropdownList["default"],
335
- DropDownLineItemRenderComponent: _dropdownList.ListItem
337
+ DropDownLineItemRenderComponent: _dropdownList.ListItem,
338
+ withSubOptions: false
336
339
  });
337
340
  var ItemSelectorListen = (0, _reactOnclickoutside["default"])(ItemSelector);
338
341
  exports.ItemSelectorListen = ItemSelectorListen;
@@ -340,4 +343,4 @@ exports.ItemSelectorListen = ItemSelectorListen;
340
343
  var _default = (0, _reactIntl.injectIntl)((0, _reactOnclickoutside["default"])(ItemSelector));
341
344
 
342
345
  exports["default"] = _default;
343
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiU3R5bGVkRHJvcGRvd25TZWxlY3QiLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsInByb3BzIiwiaW5wdXRUaGVtZSIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJpbnB1dExUIiwiaW5wdXQiLCJzaXplIiwiaW5wdXRCb3hIZWlnaHRTbWFsbCIsImlucHV0Qm94SGVpZ2h0IiwiZHJvcGRvd25MaXN0QW5jaG9yIiwiRHJvcGRvd25TZWxlY3RWYWx1ZSIsInNwYW4iLCJoYXNQbGFjZWhvbGRlciIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXJMVCIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXIiLCJzZWxlY3RDb2xvckxUIiwic2VsZWN0Q29sb3IiLCJkcm9wZG93bkxpc3RJdGVtTFQiLCJkcm9wZG93bkxpc3RJdGVtIiwiZHJvcGRvd25MaXN0QW5jaG9yTFQiLCJEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0Iiwic3VidGV4dENvbG9yIiwidGV4dENvbG9yIiwiRHJvcGRvd25XcmFwcGVyIiwiZHJvcGRvd25XcmFwcGVyWiIsInBsYWNlbWVudCIsImRyb3Bkb3duV2FwcGVyTWFyZ2luIiwiSXRlbVNlbGVjdG9yIiwic2hvd1R5cGVhaGVhZCIsIl9oaWRlVHlwZWFoZWFkIiwib25CbHVyIiwiaXRlbSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJpbmRleCIsImZpbmRJbmRleCIsInQiLCJpdGVtcyIsInNsaWNlIiwibGVuZ3RoIiwib25DaGFuZ2UiLCJjbG9zZU9uU2VsZWN0Iiwic2V0U3RhdGUiLCJfb25CbHVyIiwiZ2V0VmFsdWUiLCJBY2Nlc3NvciIsImdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IiLCJnZXRPcHRpb25WYWx1ZSIsImRpc3BsYXlPcHRpb24iLCJwcmV2aW91c1NlbGVjdGVkIiwibXVsdGlTZWxlY3QiLCJjb25jYXQiLCJkaXNhYmxlZCIsImlzTG9hZGluZyIsImludGwiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJzZWxlY3RlZCIsImhhc1ZhbHVlIiwiZHJvcGRvd25TZWxlY3RQcm9wcyIsImFjdGl2ZSIsInN0YXRlIiwib25DbGljayIsIl9zaG93VHlwZWFoZWFkIiwiZXJyb3IiLCJpc0Vycm9yIiwicG9zaXRpb24iLCJwbGFjZWhvbGRlciIsIl9yZW1vdmVJdGVtIiwiQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQiLCJlcmFzYWJsZSIsIl9vbkVyYXNlIiwic2hvd0Fycm93IiwiX3JlbmRlckRyb3Bkb3duIiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwib25lT2ZUeXBlIiwiYXJyYXkiLCJzdHJpbmciLCJudW1iZXIiLCJib29sIiwib2JqZWN0IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJhcnJheU9mIiwiYW55IiwiZHJvcGRvd25IZWFkZXIiLCJEcm9wZG93bkxpc3QiLCJMaXN0SXRlbSIsIkl0ZW1TZWxlY3Rvckxpc3RlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFTyxJQUFNQSxvQkFBb0IsR0FBR0MsNkJBQU9DLEdBQVAsQ0FBV0MsS0FBWCxD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RUFBQUEsdUJBQXVCLEVBQUUsSUFmTDtBQWdCcEJELEVBQUFBLHVCQUF1QixFQUFFa0Msd0JBaEJMO0FBaUJwQmhDLEVBQUFBLCtCQUErQixFQUFFaUM7QUFqQmIsQztBQTBNakIsSUFBTUMsa0JBQWtCLEdBQUcscUNBQXNCNUUsWUFBdEIsQ0FBM0I7OztlQUNRLDJCQUFXLHFDQUFzQkEsWUFBdEIsQ0FBWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuaW1wb3J0IGxpc3RlbnNUb0NsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4vYWNjZXNzb3InO1xuaW1wb3J0IENoaWNrbGV0ZWRJbnB1dCBmcm9tICcuL2NoaWNrbGV0ZWQtaW5wdXQnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuL3R5cGVhaGVhZCc7XG5pbXBvcnQge0RlbGV0ZSwgQXJyb3dEb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcblxuaW1wb3J0IHt0b0FycmF5fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRHJvcGRvd25TZWxlY3QgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd24nXG59KWBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93blNlbGVjdFZhbHVlID0gc3R5bGVkLnNwYW5gXG4gIGNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuaGFzUGxhY2Vob2xkZXIgJiYgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvclBsYWNlSG9sZGVyTFRcbiAgICAgIDogcHJvcHMuaGFzUGxhY2Vob2xkZXJcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlclxuICAgICAgOiBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yTFRcbiAgICAgIDogcHJvcHMudGhlbWUuc2VsZWN0Q29sb3J9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAubGlzdF9faXRlbSB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0JyA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW1MVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW19O1xuICB9XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgICA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvckxUXG4gICAgICAgIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QW5jaG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuXG4gIDpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLnBsYWNlbWVudCA9PT0gJ3RvcCcgPyBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodCA6ICdhdXRvJyl9O1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+XG4gICAgcHJvcHMucGxhY2VtZW50ID09PSAnYm90dG9tJyA/IGAke3Byb3BzLnRoZW1lLmRyb3Bkb3duV2FwcGVyTWFyZ2lufXB4YCA6ICdhdXRvJ307XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5wbGFjZW1lbnQgPT09ICd0b3AnID8gYCR7cHJvcHMudGhlbWUuZHJvcGRvd25XYXBwZXJNYXJnaW59cHhgIDogJ2F1dG8nfTtcbmA7XG5cbmNsYXNzIEl0ZW1TZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLy8gcmVxdWlyZWQgcHJvcGVydGllc1xuICAgIHNlbGVjdGVkSXRlbXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIFByb3BUeXBlcy5vYmplY3RcbiAgICBdKSxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuXG4gICAgLy8gb3B0aW9uYWwgcHJvcGVydGllc1xuICAgIGZpeGVkT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgZXJhc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBcnJvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBnZXRPcHRpb25WYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0xvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIG11bHRpU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpbnB1dFRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VPblNlbGVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdHlwZWFoZWFkUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIERyb3BEb3duUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBDdXN0b21DaGlja2xldENvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmNcbiAgfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGVyYXNhYmxlOiBmYWxzZSxcbiAgICBzaG93QXJyb3c6IGZhbHNlLFxuICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgc2VsZWN0ZWRJdGVtczogW10sXG4gICAgZGlzcGxheU9wdGlvbjogbnVsbCxcbiAgICBnZXRPcHRpb25WYWx1ZTogbnVsbCxcbiAgICBmaWx0ZXJPcHRpb246IG51bGwsXG4gICAgZml4ZWRPcHRpb25zOiBudWxsLFxuICAgIGlucHV0VGhlbWU6ICdwcmltYXJ5JyxcbiAgICBtdWx0aVNlbGVjdDogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlcjogJ3BsYWNlaG9sZGVyLmVudGVyVmFsdWUnLFxuICAgIGNsb3NlT25TZWxlY3Q6IHRydWUsXG4gICAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgICBkcm9wZG93bkhlYWRlcjogbnVsbCxcbiAgICBEcm9wZG93bkhlYWRlckNvbXBvbmVudDogbnVsbCxcbiAgICBEcm9wRG93blJlbmRlckNvbXBvbmVudDogRHJvcGRvd25MaXN0LFxuICAgIERyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnQ6IExpc3RJdGVtXG4gIH07XG5cbiAgc3RhdGUgPSB7XG4gICAgc2hvd1R5cGVhaGVhZDogZmFsc2VcbiAgfTtcblxuICBoYW5kbGVDbGlja091dHNpZGUgPSAoKSA9PiB7XG4gICAgdGhpcy5faGlkZVR5cGVhaGVhZCgpO1xuICB9O1xuXG4gIF9oaWRlVHlwZWFoZWFkKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgdGhpcy5fb25CbHVyKCk7XG4gIH1cblxuICBfb25CbHVyID0gKCkgPT4ge1xuICAgIC8vIG5vdGU6IGNoaWNrbGV0ZWQgaW5wdXQgaXMgbm90IGEgcmVhbCBmb3JtIGVsZW1lbnQgc28gd2UgY2FsbCBvbkJsdXIoKVxuICAgIC8vIHdoZW4gd2UgZmVlbCB0aGUgZXZlbnRzIGFyZSBhcHByb3ByaWF0ZVxuICAgIGlmICh0aGlzLnByb3BzLm9uQmx1cikge1xuICAgICAgdGhpcy5wcm9wcy5vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbW92ZUl0ZW0gPSAoaXRlbSwgZSkgPT4ge1xuICAgIC8vIG9ubHkgdXNlZCB3aGVuIG11bHRpU2VsZWN0ID0gdHJ1ZVxuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IHtzZWxlY3RlZEl0ZW1zfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgaW5kZXggPSBzZWxlY3RlZEl0ZW1zLmZpbmRJbmRleCh0ID0+IHQgPT09IGl0ZW0pO1xuXG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGl0ZW1zID0gW1xuICAgICAgLi4uc2VsZWN0ZWRJdGVtcy5zbGljZSgwLCBpbmRleCksXG4gICAgICAuLi5zZWxlY3RlZEl0ZW1zLnNsaWNlKGluZGV4ICsgMSwgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpXG4gICAgXTtcblxuICAgIHRoaXMucHJvcHMub25DaGFuZ2UoaXRlbXMpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICAgIHRoaXMuX29uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfc2VsZWN0SXRlbSA9IGl0ZW0gPT4ge1xuICAgIGNvbnN0IGdldFZhbHVlID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0ZvcihcbiAgICAgIHRoaXMucHJvcHMuZ2V0T3B0aW9uVmFsdWUgfHwgdGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uXG4gICAgKTtcblxuICAgIGNvbnN0IHByZXZpb3VzU2VsZWN0ZWQgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5tdWx0aVNlbGVjdCkge1xuICAgICAgY29uc3QgaXRlbXMgPSB1bmlxQnkocHJldmlvdXNTZWxlY3RlZC5jb25jYXQodG9BcnJheShpdGVtKSksIGdldFZhbHVlKTtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKGdldFZhbHVlKGl0ZW0pKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9vbkVyYXNlID0gZSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKG51bGwpO1xuICB9O1xuXG4gIF9zaG93VHlwZWFoZWFkID0gZSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMucHJvcHMuZGlzYWJsZWQgJiYgIXRoaXMucHJvcHMuaXNMb2FkaW5nKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2hvd1R5cGVhaGVhZDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIF9yZW5kZXJEcm9wZG93bihpbnRsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEcm9wZG93bldyYXBwZXIgcGxhY2VtZW50PXt0aGlzLnByb3BzLnBsYWNlbWVudH0+XG4gICAgICAgIDxUeXBlYWhlYWRcbiAgICAgICAgICBjdXN0b21DbGFzc2VzPXt7XG4gICAgICAgICAgICByZXN1bHRzOiAnbGlzdC1zZWxlY3RvcicsXG4gICAgICAgICAgICBpbnB1dDogJ3R5cGVhaGVhZF9faW5wdXQnLFxuICAgICAgICAgICAgbGlzdEl0ZW06ICdsaXN0X19pdGVtJyxcbiAgICAgICAgICAgIGxpc3RBbmNob3I6ICdsaXN0X19pdGVtX19hbmNob3InXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvcHRpb25zPXt0aGlzLnByb3BzLm9wdGlvbnN9XG4gICAgICAgICAgZmlsdGVyT3B0aW9uPXt0aGlzLnByb3BzLmZpbHRlck9wdGlvbn1cbiAgICAgICAgICBmaXhlZE9wdGlvbnM9e3RoaXMucHJvcHMuZml4ZWRPcHRpb25zfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtcbiAgICAgICAgICAgIHRoaXMucHJvcHMudHlwZWFoZWFkUGxhY2Vob2xkZXIgfHwgaW50bFxuICAgICAgICAgICAgICA/IGludGwuZm9ybWF0TWVzc2FnZSh7aWQ6ICdwbGFjZWhvbGRlci5zZWFyY2gnfSlcbiAgICAgICAgICAgICAgOiAnU2VhcmNoJ1xuICAgICAgICAgIH1cbiAgICAgICAgICBvbk9wdGlvblNlbGVjdGVkPXt0aGlzLl9zZWxlY3RJdGVtfVxuICAgICAgICAgIGN1c3RvbUxpc3RDb21wb25lbnQ9e3RoaXMucHJvcHMuRHJvcERvd25SZW5kZXJDb21wb25lbnR9XG4gICAgICAgICAgY3VzdG9tTGlzdEhlYWRlckNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wZG93bkhlYWRlckNvbXBvbmVudH1cbiAgICAgICAgICBjdXN0b21MaXN0SXRlbUNvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50fVxuICAgICAgICAgIGRpc3BsYXlPcHRpb249e0FjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IodGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uKX1cbiAgICAgICAgICBzZWFyY2hhYmxlPXt0aGlzLnByb3BzLnNlYXJjaGFibGV9XG4gICAgICAgICAgc2hvd09wdGlvbnNXaGVuRW1wdHlcbiAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyl9XG4gICAgICAgICAgbGlnaHQ9e3RoaXMucHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J31cbiAgICAgICAgLz5cbiAgICAgIDwvRHJvcGRvd25XcmFwcGVyPlxuICAgICk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgY29uc3QgaGFzVmFsdWUgPSBzZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgZGlzcGxheU9wdGlvbiA9IEFjY2Vzc29yLmdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IodGhpcy5wcm9wcy5kaXNwbGF5T3B0aW9uKTtcblxuICAgIGNvbnN0IGRyb3Bkb3duU2VsZWN0UHJvcHMgPSB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzbmFtZXMoe1xuICAgICAgICBhY3RpdmU6IHRoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZFxuICAgICAgfSksXG4gICAgICBkaXNwbGF5T3B0aW9uLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMucHJvcHMuZGlzYWJsZWQsXG4gICAgICBvbkNsaWNrOiB0aGlzLl9zaG93VHlwZWFoZWFkLFxuICAgICAgZXJyb3I6IHRoaXMucHJvcHMuaXNFcnJvcixcbiAgICAgIGlucHV0VGhlbWU6IHRoaXMucHJvcHMuaW5wdXRUaGVtZSxcbiAgICAgIHNpemU6IHRoaXMucHJvcHMuc2l6ZVxuICAgIH07XG4gICAgY29uc3QgaW50bCA9IHRoaXMucHJvcHMuaW50bDtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIml0ZW0tc2VsZWN0b3JcIj5cbiAgICAgICAgPGRpdiBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgey8qIHRoaXMgcGFydCBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlIGxhYmVsICovfVxuICAgICAgICAgIHt0aGlzLnByb3BzLm11bHRpU2VsZWN0ID8gKFxuICAgICAgICAgICAgPENoaWNrbGV0ZWRJbnB1dFxuICAgICAgICAgICAgICB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dG9BcnJheSh0aGlzLnByb3BzLnNlbGVjdGVkSXRlbXMpfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgcmVtb3ZlSXRlbT17dGhpcy5fcmVtb3ZlSXRlbX1cbiAgICAgICAgICAgICAgQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnQ9e3RoaXMucHJvcHMuQ3VzdG9tQ2hpY2tsZXRDb21wb25lbnR9XG4gICAgICAgICAgICAgIGlucHV0VGhlbWU9e3RoaXMucHJvcHMuaW5wdXRUaGVtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTdHlsZWREcm9wZG93blNlbGVjdCB7Li4uZHJvcGRvd25TZWxlY3RQcm9wc30+XG4gICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdFZhbHVlXG4gICAgICAgICAgICAgICAgaGFzUGxhY2Vob2xkZXI9eyFoYXNWYWx1ZX1cbiAgICAgICAgICAgICAgICBpbnB1dFRoZW1lPXt0aGlzLnByb3BzLmlucHV0VGhlbWV9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd25fX3ZhbHVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtoYXNWYWx1ZSA/IChcbiAgICAgICAgICAgICAgICAgIDx0aGlzLnByb3BzLkRyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbj17ZGlzcGxheU9wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkWzBdfVxuICAgICAgICAgICAgICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9e3RoaXMucHJvcHMucGxhY2Vob2xkZXIgfHwgJ3BsYWNlaG9sZGVyLnNlbGVjdFZhbHVlJ30gLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0VmFsdWU+XG4gICAgICAgICAgICAgIHt0aGlzLnByb3BzLmVyYXNhYmxlICYmIGhhc1ZhbHVlID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMuaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgc2l6ZT17MTh9IHN0cm9rZVdpZHRoPXsyfSBnYXA9ezB9IC8+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICA8RGVsZXRlIGhlaWdodD1cIjEycHhcIiBvbkNsaWNrPXt0aGlzLl9vbkVyYXNlfSAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICkgOiB0aGlzLnByb3BzLnNob3dBcnJvdyA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgICAgIDxBcnJvd0Rvd24gaGVpZ2h0PVwiMTRweFwiIG9uQ2xpY2s9e3RoaXMuX3Nob3dUeXBlYWhlYWR9IC8+XG4gICAgICAgICAgICAgICAgPC9Ecm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU3R5bGVkRHJvcGRvd25TZWxlY3Q+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7LyogdGhpcyBwYXJ0IGlzIHVzZWQgdG8gYnVpbHQgdGhlIGxpc3QgKi99XG4gICAgICAgICAge3RoaXMuc3RhdGUuc2hvd1R5cGVhaGVhZCAmJiB0aGlzLl9yZW5kZXJEcm9wZG93bihpbnRsKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBJdGVtU2VsZWN0b3JMaXN0ZW4gPSBsaXN0ZW5zVG9DbGlja091dHNpZGUoSXRlbVNlbGVjdG9yKTtcbmV4cG9ydCBkZWZhdWx0IGluamVjdEludGwobGlzdGVuc1RvQ2xpY2tPdXRzaWRlKEl0ZW1TZWxlY3RvcikpO1xuIl19
346
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiU3R5bGVkRHJvcGRvd25TZWxlY3QiLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsInByb3BzIiwiaW5wdXRUaGVtZSIsInRoZW1lIiwic2Vjb25kYXJ5SW5wdXQiLCJpbnB1dExUIiwiaW5wdXQiLCJzaXplIiwiaW5wdXRCb3hIZWlnaHRTbWFsbCIsImlucHV0Qm94SGVpZ2h0IiwiZHJvcGRvd25MaXN0QW5jaG9yIiwiRHJvcGRvd25TZWxlY3RWYWx1ZSIsInNwYW4iLCJoYXNQbGFjZWhvbGRlciIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXJMVCIsInNlbGVjdENvbG9yUGxhY2VIb2xkZXIiLCJzZWxlY3RDb2xvckxUIiwic2VsZWN0Q29sb3IiLCJkcm9wZG93bkxpc3RJdGVtTFQiLCJkcm9wZG93bkxpc3RJdGVtIiwiZHJvcGRvd25MaXN0QW5jaG9yTFQiLCJEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0Iiwic3VidGV4dENvbG9yIiwidGV4dENvbG9yIiwiRHJvcGRvd25XcmFwcGVyIiwiZHJvcGRvd25XcmFwcGVyWiIsInBsYWNlbWVudCIsImRyb3Bkb3duV2FwcGVyTWFyZ2luIiwiSXRlbVNlbGVjdG9yIiwic2hvd1R5cGVhaGVhZCIsIl9oaWRlVHlwZWFoZWFkIiwib25CbHVyIiwiaXRlbSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsInNlbGVjdGVkSXRlbXMiLCJpbmRleCIsImZpbmRJbmRleCIsInQiLCJpdGVtcyIsInNsaWNlIiwibGVuZ3RoIiwib25DaGFuZ2UiLCJjbG9zZU9uU2VsZWN0Iiwic2V0U3RhdGUiLCJfb25CbHVyIiwiZ2V0VmFsdWUiLCJBY2Nlc3NvciIsImdlbmVyYXRlT3B0aW9uVG9TdHJpbmdGb3IiLCJnZXRPcHRpb25WYWx1ZSIsImRpc3BsYXlPcHRpb24iLCJwcmV2aW91c1NlbGVjdGVkIiwibXVsdGlTZWxlY3QiLCJjb25jYXQiLCJkaXNhYmxlZCIsImlzTG9hZGluZyIsImludGwiLCJyZXN1bHRzIiwibGlzdEl0ZW0iLCJsaXN0QW5jaG9yIiwib3B0aW9ucyIsImZpbHRlck9wdGlvbiIsImZpeGVkT3B0aW9ucyIsInR5cGVhaGVhZFBsYWNlaG9sZGVyIiwiZm9ybWF0TWVzc2FnZSIsImlkIiwiX3NlbGVjdEl0ZW0iLCJEcm9wRG93blJlbmRlckNvbXBvbmVudCIsIkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50IiwiRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudCIsInNlYXJjaGFibGUiLCJ3aXRoU3ViT3B0aW9ucyIsInNlbGVjdGVkIiwiaGFzVmFsdWUiLCJkcm9wZG93blNlbGVjdFByb3BzIiwiYWN0aXZlIiwic3RhdGUiLCJvbkNsaWNrIiwiX3Nob3dUeXBlYWhlYWQiLCJlcnJvciIsImlzRXJyb3IiLCJwb3NpdGlvbiIsInBsYWNlaG9sZGVyIiwiX3JlbW92ZUl0ZW0iLCJDdXN0b21DaGlja2xldENvbXBvbmVudCIsImVyYXNhYmxlIiwiX29uRXJhc2UiLCJzaG93QXJyb3ciLCJfcmVuZGVyRHJvcGRvd24iLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvbmVPZlR5cGUiLCJhcnJheSIsInN0cmluZyIsIm51bWJlciIsImJvb2wiLCJvYmplY3QiLCJmdW5jIiwiaXNSZXF1aXJlZCIsImFycmF5T2YiLCJhbnkiLCJkcm9wZG93bkhlYWRlciIsIkRyb3Bkb3duTGlzdCIsIkxpc3RJdGVtIiwiSXRlbVNlbGVjdG9yTGlzdGVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLElBQU1BLG9CQUFvQixHQUFHQyw2QkFBT0MsR0FBUCxDQUFXQyxLQUFYLENBQWlCO0FBQ25EQyxFQUFBQSxTQUFTLEVBQUU7QUFEd0MsQ0FBakIsQ0FBSCxnS0FHN0IsVUFBQUMsS0FBSztBQUFBLFNBQ0xBLEtBQUssQ0FBQ0MsVUFBTixLQUFxQixXQUFyQixHQUNJRCxLQUFLLENBQUNFLEtBQU4sQ0FBWUMsY0FEaEIsR0FFSUgsS0FBSyxDQUFDQyxVQUFOLEtBQXFCLE9BQXJCLEdBQ0FELEtBQUssQ0FBQ0UsS0FBTixDQUFZRSxPQURaLEdBRUFKLEtBQUssQ0FBQ0UsS0FBTixDQUFZRyxLQUxYO0FBQUEsQ0FId0IsRUFVckIsVUFBQUwsS0FBSztBQUFBLFNBQ2JBLEtBQUssQ0FBQ00sSUFBTixLQUFlLE9BQWYsR0FBeUJOLEtBQUssQ0FBQ0UsS0FBTixDQUFZSyxtQkFBckMsR0FBMkRQLEtBQUssQ0FBQ0UsS0FBTixDQUFZTSxjQUQxRDtBQUFBLENBVmdCLEVBYzNCLFVBQUFSLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNFLEtBQU4sQ0FBWU8sa0JBQWhCO0FBQUEsQ0Fkc0IsQ0FBMUI7Ozs7QUFrQlAsSUFBTUMsbUJBQW1CLEdBQUdkLDZCQUFPZSxJQUFWLGtRQUNkLFVBQUFYLEtBQUs7QUFBQSxTQUNaQSxLQUFLLENBQUNZLGNBQU4sSUFBd0JaLEtBQUssQ0FBQ0MsVUFBTixLQUFxQixPQUE3QyxHQUNJRCxLQUFLLENBQUNFLEtBQU4sQ0FBWVcsd0JBRGhCLEdBRUliLEtBQUssQ0FBQ1ksY0FBTixHQUNBWixLQUFLLENBQUNFLEtBQU4sQ0FBWVksc0JBRFosR0FFQWQsS0FBSyxDQUFDQyxVQUFOLEtBQXFCLE9BQXJCLEdBQ0FELEtBQUssQ0FBQ0UsS0FBTixDQUFZYSxhQURaLEdBRUFmLEtBQUssQ0FBQ0UsS0FBTixDQUFZYyxXQVBKO0FBQUEsQ0FEUyxFQWNuQixVQUFBaEIsS0FBSztBQUFBLFNBQ0xBLEtBQUssQ0FBQ0MsVUFBTixLQUFxQixPQUFyQixHQUErQkQsS0FBSyxDQUFDRSxLQUFOLENBQVllLGtCQUEzQyxHQUFnRWpCLEtBQUssQ0FBQ0UsS0FBTixDQUFZZ0IsZ0JBRHZFO0FBQUEsQ0FkYyxFQW1CbkIsVUFBQWxCLEtBQUs7QUFBQSxTQUNMQSxLQUFLLENBQUNDLFVBQU4sS0FBcUIsT0FBckIsR0FDSUQsS0FBSyxDQUFDRSxLQUFOLENBQVlpQixvQkFEaEIsR0FFSW5CLEtBQUssQ0FBQ0UsS0FBTixDQUFZTyxrQkFIWDtBQUFBLENBbkJjLENBQXpCOztBQTBCQSxJQUFNVyx5QkFBeUIsR0FBR3hCLDZCQUFPQyxHQUFWLHdMQUdwQixVQUFBRyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDRSxLQUFOLENBQVltQixZQUFoQjtBQUFBLENBSGUsRUFNbEIsVUFBQXJCLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNFLEtBQU4sQ0FBWW9CLFNBQWhCO0FBQUEsQ0FOYSxDQUEvQjs7QUFVQSxJQUFNQyxlQUFlLEdBQUczQiw2QkFBT0MsR0FBViw0T0FJUixVQUFBRyxLQUFLO0FBQUEsU0FBSUEsS0FBSyxDQUFDRSxLQUFOLENBQVlzQixnQkFBaEI7QUFBQSxDQUpHLEVBTVQsVUFBQXhCLEtBQUs7QUFBQSxTQUFLQSxLQUFLLENBQUN5QixTQUFOLEtBQW9CLEtBQXBCLEdBQTRCekIsS0FBSyxDQUFDRSxLQUFOLENBQVlNLGNBQXhDLEdBQXlELE1BQTlEO0FBQUEsQ0FOSSxFQU9MLFVBQUFSLEtBQUs7QUFBQSxTQUNqQkEsS0FBSyxDQUFDeUIsU0FBTixLQUFvQixRQUFwQixhQUFrQ3pCLEtBQUssQ0FBQ0UsS0FBTixDQUFZd0Isb0JBQTlDLFVBQXlFLE1BRHhEO0FBQUEsQ0FQQSxFQVNGLFVBQUExQixLQUFLO0FBQUEsU0FDcEJBLEtBQUssQ0FBQ3lCLFNBQU4sS0FBb0IsS0FBcEIsYUFBK0J6QixLQUFLLENBQUNFLEtBQU4sQ0FBWXdCLG9CQUEzQyxVQUFzRSxNQURsRDtBQUFBLENBVEgsQ0FBckI7O0lBYU1DLFk7Ozs7Ozs7Ozs7Ozs7Ozs4RkEwREk7QUFDTkMsTUFBQUEsYUFBYSxFQUFFO0FBRFQsSzsyR0FJYSxZQUFNO0FBQ3pCLFlBQUtDLGNBQUw7QUFDRCxLO2dHQU9TLFlBQU07QUFDZDtBQUNBO0FBQ0EsVUFBSSxNQUFLN0IsS0FBTCxDQUFXOEIsTUFBZixFQUF1QjtBQUNyQixjQUFLOUIsS0FBTCxDQUFXOEIsTUFBWDtBQUNEO0FBQ0YsSztvR0FFYSxVQUFDQyxJQUFELEVBQU9DLENBQVAsRUFBYTtBQUN6QjtBQUNBQSxNQUFBQSxDQUFDLENBQUNDLGNBQUY7QUFDQUQsTUFBQUEsQ0FBQyxDQUFDRSxlQUFGO0FBSHlCLFVBSWxCQyxhQUprQixHQUlELE1BQUtuQyxLQUpKLENBSWxCbUMsYUFKa0I7QUFLekIsVUFBTUMsS0FBSyxHQUFHRCxhQUFhLENBQUNFLFNBQWQsQ0FBd0IsVUFBQUMsQ0FBQztBQUFBLGVBQUlBLENBQUMsS0FBS1AsSUFBVjtBQUFBLE9BQXpCLENBQWQ7O0FBRUEsVUFBSUssS0FBSyxHQUFHLENBQVosRUFBZTtBQUNiO0FBQ0Q7O0FBRUQsVUFBTUcsS0FBSyxpREFDTkosYUFBYSxDQUFDSyxLQUFkLENBQW9CLENBQXBCLEVBQXVCSixLQUF2QixDQURNLHVDQUVORCxhQUFhLENBQUNLLEtBQWQsQ0FBb0JKLEtBQUssR0FBRyxDQUE1QixFQUErQkQsYUFBYSxDQUFDTSxNQUE3QyxDQUZNLEVBQVg7O0FBS0EsWUFBS3pDLEtBQUwsQ0FBVzBDLFFBQVgsQ0FBb0JILEtBQXBCOztBQUVBLFVBQUksTUFBS3ZDLEtBQUwsQ0FBVzJDLGFBQWYsRUFBOEI7QUFDNUIsY0FBS0MsUUFBTCxDQUFjO0FBQUNoQixVQUFBQSxhQUFhLEVBQUU7QUFBaEIsU0FBZDs7QUFDQSxjQUFLaUIsT0FBTDtBQUNEO0FBQ0YsSztvR0FFYSxVQUFBZCxJQUFJLEVBQUk7QUFDcEIsVUFBTWUsUUFBUSxHQUFHQyxxQkFBU0MseUJBQVQsQ0FDZixNQUFLaEQsS0FBTCxDQUFXaUQsY0FBWCxJQUE2QixNQUFLakQsS0FBTCxDQUFXa0QsYUFEekIsQ0FBakI7O0FBSUEsVUFBTUMsZ0JBQWdCLEdBQUcsb0JBQVEsTUFBS25ELEtBQUwsQ0FBV21DLGFBQW5CLENBQXpCOztBQUVBLFVBQUksTUFBS25DLEtBQUwsQ0FBV29ELFdBQWYsRUFBNEI7QUFDMUIsWUFBTWIsS0FBSyxHQUFHLHdCQUFPWSxnQkFBZ0IsQ0FBQ0UsTUFBakIsQ0FBd0Isb0JBQVF0QixJQUFSLENBQXhCLENBQVAsRUFBK0NlLFFBQS9DLENBQWQ7O0FBQ0EsY0FBSzlDLEtBQUwsQ0FBVzBDLFFBQVgsQ0FBb0JILEtBQXBCO0FBQ0QsT0FIRCxNQUdPO0FBQ0wsY0FBS3ZDLEtBQUwsQ0FBVzBDLFFBQVgsQ0FBb0JJLFFBQVEsQ0FBQ2YsSUFBRCxDQUE1QjtBQUNEOztBQUVELFVBQUksTUFBSy9CLEtBQUwsQ0FBVzJDLGFBQWYsRUFBOEI7QUFDNUIsY0FBS0MsUUFBTCxDQUFjO0FBQUNoQixVQUFBQSxhQUFhLEVBQUU7QUFBaEIsU0FBZDs7QUFDQSxjQUFLaUIsT0FBTDtBQUNEO0FBQ0YsSztpR0FFVSxVQUFBYixDQUFDLEVBQUk7QUFDZEEsTUFBQUEsQ0FBQyxDQUFDRSxlQUFGOztBQUNBLFlBQUtsQyxLQUFMLENBQVcwQyxRQUFYLENBQW9CLElBQXBCO0FBQ0QsSzt1R0FFZ0IsVUFBQVYsQ0FBQyxFQUFJO0FBQ3BCQSxNQUFBQSxDQUFDLENBQUNFLGVBQUY7O0FBQ0EsVUFBSSxDQUFDLE1BQUtsQyxLQUFMLENBQVdzRCxRQUFaLElBQXdCLENBQUMsTUFBS3RELEtBQUwsQ0FBV3VELFNBQXhDLEVBQW1EO0FBQ2pELGNBQUtYLFFBQUwsQ0FBYztBQUNaaEIsVUFBQUEsYUFBYSxFQUFFO0FBREgsU0FBZDtBQUdEO0FBQ0YsSzs7Ozs7O1dBckVELDBCQUFpQjtBQUNmLFdBQUtnQixRQUFMLENBQWM7QUFBQ2hCLFFBQUFBLGFBQWEsRUFBRTtBQUFoQixPQUFkOztBQUNBLFdBQUtpQixPQUFMO0FBQ0Q7OztXQW9FRCx5QkFBZ0JXLElBQWhCLEVBQXNCO0FBQ3BCLDBCQUNFLGdDQUFDLGVBQUQ7QUFBaUIsUUFBQSxTQUFTLEVBQUUsS0FBS3hELEtBQUwsQ0FBV3lCO0FBQXZDLHNCQUNFLGdDQUFDLHFCQUFEO0FBQ0UsUUFBQSxhQUFhLEVBQUU7QUFDYmdDLFVBQUFBLE9BQU8sRUFBRSxlQURJO0FBRWJwRCxVQUFBQSxLQUFLLEVBQUUsa0JBRk07QUFHYnFELFVBQUFBLFFBQVEsRUFBRSxZQUhHO0FBSWJDLFVBQUFBLFVBQVUsRUFBRTtBQUpDLFNBRGpCO0FBT0UsUUFBQSxPQUFPLEVBQUUsS0FBSzNELEtBQUwsQ0FBVzRELE9BUHRCO0FBUUUsUUFBQSxZQUFZLEVBQUUsS0FBSzVELEtBQUwsQ0FBVzZELFlBUjNCO0FBU0UsUUFBQSxZQUFZLEVBQUUsS0FBSzdELEtBQUwsQ0FBVzhELFlBVDNCO0FBVUUsUUFBQSxXQUFXLEVBQ1QsS0FBSzlELEtBQUwsQ0FBVytELG9CQUFYLElBQW1DUCxJQUFuQyxHQUNJQSxJQUFJLENBQUNRLGFBQUwsQ0FBbUI7QUFBQ0MsVUFBQUEsRUFBRSxFQUFFO0FBQUwsU0FBbkIsQ0FESixHQUVJLFFBYlI7QUFlRSxRQUFBLGdCQUFnQixFQUFFLEtBQUtDLFdBZnpCO0FBZ0JFLFFBQUEsbUJBQW1CLEVBQUUsS0FBS2xFLEtBQUwsQ0FBV21FLHVCQWhCbEM7QUFpQkUsUUFBQSx5QkFBeUIsRUFBRSxLQUFLbkUsS0FBTCxDQUFXb0UsdUJBakJ4QztBQWtCRSxRQUFBLHVCQUF1QixFQUFFLEtBQUtwRSxLQUFMLENBQVdxRSwrQkFsQnRDO0FBbUJFLFFBQUEsYUFBYSxFQUFFdEIscUJBQVNDLHlCQUFULENBQW1DLEtBQUtoRCxLQUFMLENBQVdrRCxhQUE5QyxDQW5CakI7QUFvQkUsUUFBQSxVQUFVLEVBQUUsS0FBS2xELEtBQUwsQ0FBV3NFLFVBcEJ6QjtBQXFCRSxRQUFBLG9CQUFvQixNQXJCdEI7QUFzQkUsUUFBQSxhQUFhLEVBQUUsb0JBQVEsS0FBS3RFLEtBQUwsQ0FBV21DLGFBQW5CLENBdEJqQjtBQXVCRSxRQUFBLEtBQUssRUFBRSxLQUFLbkMsS0FBTCxDQUFXQyxVQUFYLEtBQTBCLE9BdkJuQztBQXdCRSxRQUFBLGNBQWMsRUFBRSxLQUFLRCxLQUFMLENBQVd1RTtBQXhCN0IsUUFERixDQURGO0FBOEJEOzs7V0FFRCxrQkFBUztBQUNQLFVBQU1DLFFBQVEsR0FBRyxvQkFBUSxLQUFLeEUsS0FBTCxDQUFXbUMsYUFBbkIsQ0FBakI7QUFDQSxVQUFNc0MsUUFBUSxHQUFHRCxRQUFRLENBQUMvQixNQUExQjs7QUFDQSxVQUFNUyxhQUFhLEdBQUdILHFCQUFTQyx5QkFBVCxDQUFtQyxLQUFLaEQsS0FBTCxDQUFXa0QsYUFBOUMsQ0FBdEI7O0FBRUEsVUFBTXdCLG1CQUFtQixHQUFHO0FBQzFCM0UsUUFBQUEsU0FBUyxFQUFFLDRCQUFXO0FBQ3BCNEUsVUFBQUEsTUFBTSxFQUFFLEtBQUtDLEtBQUwsQ0FBV2hEO0FBREMsU0FBWCxDQURlO0FBSTFCc0IsUUFBQUEsYUFBYSxFQUFiQSxhQUowQjtBQUsxQkksUUFBQUEsUUFBUSxFQUFFLEtBQUt0RCxLQUFMLENBQVdzRCxRQUxLO0FBTTFCdUIsUUFBQUEsT0FBTyxFQUFFLEtBQUtDLGNBTlk7QUFPMUJDLFFBQUFBLEtBQUssRUFBRSxLQUFLL0UsS0FBTCxDQUFXZ0YsT0FQUTtBQVExQi9FLFFBQUFBLFVBQVUsRUFBRSxLQUFLRCxLQUFMLENBQVdDLFVBUkc7QUFTMUJLLFFBQUFBLElBQUksRUFBRSxLQUFLTixLQUFMLENBQVdNO0FBVFMsT0FBNUI7QUFXQSxVQUFNa0QsSUFBSSxHQUFHLEtBQUt4RCxLQUFMLENBQVd3RCxJQUF4QjtBQUVBLDBCQUNFO0FBQUssUUFBQSxTQUFTLEVBQUM7QUFBZixzQkFDRTtBQUFLLFFBQUEsS0FBSyxFQUFFO0FBQUN5QixVQUFBQSxRQUFRLEVBQUU7QUFBWDtBQUFaLFNBRUcsS0FBS2pGLEtBQUwsQ0FBV29ELFdBQVgsZ0JBQ0MsZ0NBQUMsMkJBQUQsZ0NBQ01zQixtQkFETjtBQUVFLFFBQUEsYUFBYSxFQUFFLG9CQUFRLEtBQUsxRSxLQUFMLENBQVdtQyxhQUFuQixDQUZqQjtBQUdFLFFBQUEsV0FBVyxFQUFFLEtBQUtuQyxLQUFMLENBQVdrRixXQUgxQjtBQUlFLFFBQUEsVUFBVSxFQUFFLEtBQUtDLFdBSm5CO0FBS0UsUUFBQSx1QkFBdUIsRUFBRSxLQUFLbkYsS0FBTCxDQUFXb0YsdUJBTHRDO0FBTUUsUUFBQSxVQUFVLEVBQUUsS0FBS3BGLEtBQUwsQ0FBV0M7QUFOekIsU0FERCxnQkFVQyxnQ0FBQyxvQkFBRCxFQUEwQnlFLG1CQUExQixlQUNFLGdDQUFDLG1CQUFEO0FBQ0UsUUFBQSxjQUFjLEVBQUUsQ0FBQ0QsUUFEbkI7QUFFRSxRQUFBLFVBQVUsRUFBRSxLQUFLekUsS0FBTCxDQUFXQyxVQUZ6QjtBQUdFLFFBQUEsU0FBUyxFQUFDO0FBSFosU0FLR3dFLFFBQVEsZ0JBQ1AscUNBQU0sS0FBTixDQUFZLCtCQUFaO0FBQ0UsUUFBQSxhQUFhLEVBQUV2QixhQURqQjtBQUVFLFFBQUEsS0FBSyxFQUFFc0IsUUFBUSxDQUFDLENBQUQsQ0FGakI7QUFHRSxRQUFBLEtBQUssRUFBRSxLQUFLeEUsS0FBTCxDQUFXQyxVQUFYLEtBQTBCO0FBSG5DLFFBRE8sZ0JBT1AsZ0NBQUMsOEJBQUQ7QUFBa0IsUUFBQSxFQUFFLEVBQUUsS0FBS0QsS0FBTCxDQUFXa0YsV0FBWCxJQUEwQjtBQUFoRCxRQVpKLENBREYsRUFnQkcsS0FBS2xGLEtBQUwsQ0FBV3FGLFFBQVgsSUFBdUJaLFFBQXZCLGdCQUNDLGdDQUFDLHlCQUFELFFBQ0csS0FBS3pFLEtBQUwsQ0FBV3VELFNBQVgsZ0JBQ0MsZ0NBQUMsMEJBQUQ7QUFBZ0IsUUFBQSxJQUFJLEVBQUUsRUFBdEI7QUFBMEIsUUFBQSxXQUFXLEVBQUUsQ0FBdkM7QUFBMEMsUUFBQSxHQUFHLEVBQUU7QUFBL0MsUUFERCxnQkFHQyxnQ0FBQyxhQUFEO0FBQVEsUUFBQSxNQUFNLEVBQUMsTUFBZjtBQUFzQixRQUFBLE9BQU8sRUFBRSxLQUFLK0I7QUFBcEMsUUFKSixDQURELEdBUUcsS0FBS3RGLEtBQUwsQ0FBV3VGLFNBQVgsZ0JBQ0YsZ0NBQUMseUJBQUQscUJBQ0UsZ0NBQUMsZ0JBQUQ7QUFBVyxRQUFBLE1BQU0sRUFBQyxNQUFsQjtBQUF5QixRQUFBLE9BQU8sRUFBRSxLQUFLVDtBQUF2QyxRQURGLENBREUsR0FJQSxJQTVCTixDQVpKLEVBNENHLEtBQUtGLEtBQUwsQ0FBV2hELGFBQVgsSUFBNEIsS0FBSzRELGVBQUwsQ0FBcUJoQyxJQUFyQixDQTVDL0IsQ0FERixDQURGO0FBa0REOzs7RUE5T3dCaUMsZ0I7O2lDQUFyQjlELFksZUFDZTtBQUNqQjtBQUNBUSxFQUFBQSxhQUFhLEVBQUV1RCxzQkFBVUMsU0FBVixDQUFvQixDQUNqQ0Qsc0JBQVVFLEtBRHVCLEVBRWpDRixzQkFBVUcsTUFGdUIsRUFHakNILHNCQUFVSSxNQUh1QixFQUlqQ0osc0JBQVVLLElBSnVCLEVBS2pDTCxzQkFBVU0sTUFMdUIsQ0FBcEIsQ0FGRTtBQVNqQnRELEVBQUFBLFFBQVEsRUFBRWdELHNCQUFVTyxJQUFWLENBQWVDLFVBVFI7QUFVakJ0QyxFQUFBQSxPQUFPLEVBQUU4QixzQkFBVVMsT0FBVixDQUFrQlQsc0JBQVVVLEdBQTVCLEVBQWlDRixVQVZ6QjtBQVlqQjtBQUNBcEMsRUFBQUEsWUFBWSxFQUFFNEIsc0JBQVVTLE9BQVYsQ0FBa0JULHNCQUFVVSxHQUE1QixDQWJHO0FBY2pCZixFQUFBQSxRQUFRLEVBQUVLLHNCQUFVSyxJQWRIO0FBZWpCUixFQUFBQSxTQUFTLEVBQUVHLHNCQUFVSyxJQWZKO0FBZ0JqQjdDLEVBQUFBLGFBQWEsRUFBRXdDLHNCQUFVQyxTQUFWLENBQW9CLENBQUNELHNCQUFVRyxNQUFYLEVBQW1CSCxzQkFBVU8sSUFBN0IsQ0FBcEIsQ0FoQkU7QUFpQmpCaEQsRUFBQUEsY0FBYyxFQUFFeUMsc0JBQVVDLFNBQVYsQ0FBb0IsQ0FBQ0Qsc0JBQVVHLE1BQVgsRUFBbUJILHNCQUFVTyxJQUE3QixDQUFwQixDQWpCQztBQWtCakJwQyxFQUFBQSxZQUFZLEVBQUU2QixzQkFBVUMsU0FBVixDQUFvQixDQUFDRCxzQkFBVUcsTUFBWCxFQUFtQkgsc0JBQVVPLElBQTdCLENBQXBCLENBbEJHO0FBbUJqQnhFLEVBQUFBLFNBQVMsRUFBRWlFLHNCQUFVRyxNQW5CSjtBQW9CakJ2QyxFQUFBQSxRQUFRLEVBQUVvQyxzQkFBVUssSUFwQkg7QUFxQmpCZixFQUFBQSxPQUFPLEVBQUVVLHNCQUFVSyxJQXJCRjtBQXNCakJ4QyxFQUFBQSxTQUFTLEVBQUVtQyxzQkFBVUssSUF0Qko7QUF1QmpCM0MsRUFBQUEsV0FBVyxFQUFFc0Msc0JBQVVLLElBdkJOO0FBd0JqQjlGLEVBQUFBLFVBQVUsRUFBRXlGLHNCQUFVRyxNQXhCTDtBQXlCakIvRCxFQUFBQSxNQUFNLEVBQUU0RCxzQkFBVU8sSUF6QkQ7QUEwQmpCZixFQUFBQSxXQUFXLEVBQUVRLHNCQUFVRyxNQTFCTjtBQTJCakJsRCxFQUFBQSxhQUFhLEVBQUUrQyxzQkFBVUssSUEzQlI7QUE0QmpCaEMsRUFBQUEsb0JBQW9CLEVBQUUyQixzQkFBVUcsTUE1QmY7QUE2QmpCekIsRUFBQUEsdUJBQXVCLEVBQUVzQixzQkFBVU8sSUE3QmxCO0FBOEJqQjlCLEVBQUFBLHVCQUF1QixFQUFFdUIsc0JBQVVPLElBOUJsQjtBQStCakI1QixFQUFBQSwrQkFBK0IsRUFBRXFCLHNCQUFVTyxJQS9CMUI7QUFnQ2pCYixFQUFBQSx1QkFBdUIsRUFBRU0sc0JBQVVPLElBaENsQjtBQWlDakIxQixFQUFBQSxjQUFjLEVBQUVtQixzQkFBVUs7QUFqQ1QsQztpQ0FEZnBFLFksa0JBcUNrQjtBQUNwQjBELEVBQUFBLFFBQVEsRUFBRSxLQURVO0FBRXBCRSxFQUFBQSxTQUFTLEVBQUUsS0FGUztBQUdwQjlELEVBQUFBLFNBQVMsRUFBRSxRQUhTO0FBSXBCVSxFQUFBQSxhQUFhLEVBQUUsRUFKSztBQUtwQmUsRUFBQUEsYUFBYSxFQUFFLElBTEs7QUFNcEJELEVBQUFBLGNBQWMsRUFBRSxJQU5JO0FBT3BCWSxFQUFBQSxZQUFZLEVBQUUsSUFQTTtBQVFwQkMsRUFBQUEsWUFBWSxFQUFFLElBUk07QUFTcEI3RCxFQUFBQSxVQUFVLEVBQUUsU0FUUTtBQVVwQm1ELEVBQUFBLFdBQVcsRUFBRSxJQVZPO0FBV3BCOEIsRUFBQUEsV0FBVyxFQUFFLHdCQVhPO0FBWXBCdkMsRUFBQUEsYUFBYSxFQUFFLElBWks7QUFhcEIyQixFQUFBQSxVQUFVLEVBQUUsSUFiUTtBQWNwQitCLEVBQUFBLGNBQWMsRUFBRSxJQWRJO0FBZXBCakMsRUFBQUEsdUJBQXVCLEVBQUUsSUFmTDtBQWdCcEJELEVBQUFBLHVCQUF1QixFQUFFbUMsd0JBaEJMO0FBaUJwQmpDLEVBQUFBLCtCQUErQixFQUFFa0Msc0JBakJiO0FBa0JwQmhDLEVBQUFBLGNBQWMsRUFBRTtBQWxCSSxDO0FBNE1qQixJQUFNaUMsa0JBQWtCLEdBQUcscUNBQXNCN0UsWUFBdEIsQ0FBM0I7OztlQUNRLDJCQUFXLHFDQUFzQkEsWUFBdEIsQ0FBWCxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC51bmlxYnknO1xuaW1wb3J0IGxpc3RlbnNUb0NsaWNrT3V0c2lkZSBmcm9tICdyZWFjdC1vbmNsaWNrb3V0c2lkZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEFjY2Vzc29yIGZyb20gJy4vYWNjZXNzb3InO1xuaW1wb3J0IENoaWNrbGV0ZWRJbnB1dCBmcm9tICcuL2NoaWNrbGV0ZWQtaW5wdXQnO1xuaW1wb3J0IFR5cGVhaGVhZCBmcm9tICcuL3R5cGVhaGVhZCc7XG5pbXBvcnQge0RlbGV0ZSwgQXJyb3dEb3dufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgTG9hZGluZ1NwaW5uZXIgZnJvbSAnY29tcG9uZW50cy9jb21tb24vbG9hZGluZy1zcGlubmVyJztcbmltcG9ydCBEcm9wZG93bkxpc3QsIHtMaXN0SXRlbX0gZnJvbSAnLi9kcm9wZG93bi1saXN0JztcblxuaW1wb3J0IHt0b0FycmF5fSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge2luamVjdEludGx9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHtGb3JtYXR0ZWRNZXNzYWdlfSBmcm9tICdsb2NhbGl6YXRpb24nO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkRHJvcGRvd25TZWxlY3QgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnaXRlbS1zZWxlY3Rvcl9fZHJvcGRvd24nXG59KWBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLmlucHV0VGhlbWUgPT09ICdzZWNvbmRhcnknXG4gICAgICA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0XG4gICAgICA6IHByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCdcbiAgICAgID8gcHJvcHMudGhlbWUuaW5wdXRMVFxuICAgICAgOiBwcm9wcy50aGVtZS5pbnB1dH07XG5cbiAgaGVpZ2h0OiAke3Byb3BzID0+XG4gICAgcHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJyA/IHByb3BzLnRoZW1lLmlucHV0Qm94SGVpZ2h0U21hbGwgOiBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodH07XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bkxpc3RBbmNob3J9O1xuICB9XG5gO1xuXG5jb25zdCBEcm9wZG93blNlbGVjdFZhbHVlID0gc3R5bGVkLnNwYW5gXG4gIGNvbG9yOiAke3Byb3BzID0+XG4gICAgcHJvcHMuaGFzUGxhY2Vob2xkZXIgJiYgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgPyBwcm9wcy50aGVtZS5zZWxlY3RDb2xvclBsYWNlSG9sZGVyTFRcbiAgICAgIDogcHJvcHMuaGFzUGxhY2Vob2xkZXJcbiAgICAgID8gcHJvcHMudGhlbWUuc2VsZWN0Q29sb3JQbGFjZUhvbGRlclxuICAgICAgOiBwcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnXG4gICAgICA/IHByb3BzLnRoZW1lLnNlbGVjdENvbG9yTFRcbiAgICAgIDogcHJvcHMudGhlbWUuc2VsZWN0Q29sb3J9O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICAubGlzdF9faXRlbSB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0JyA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW1MVCA6IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEl0ZW19O1xuICB9XG5cbiAgLmxpc3RfX2l0ZW1fX2FuY2hvciB7XG4gICAgJHtwcm9wcyA9PlxuICAgICAgcHJvcHMuaW5wdXRUaGVtZSA9PT0gJ2xpZ2h0J1xuICAgICAgICA/IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdEFuY2hvckxUXG4gICAgICAgIDogcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QW5jaG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodCA9IHN0eWxlZC5kaXZgXG4gIG1hcmdpbi1yaWdodDogNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3J9O1xuXG4gIDpob3ZlciB7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgfVxuYDtcblxuY29uc3QgRHJvcGRvd25XcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgYm9yZGVyOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5kcm9wZG93bldyYXBwZXJafTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206ICR7cHJvcHMgPT4gKHByb3BzLnBsYWNlbWVudCA9PT0gJ3RvcCcgPyBwcm9wcy50aGVtZS5pbnB1dEJveEhlaWdodCA6ICdhdXRvJyl9O1xuICBtYXJnaW4tdG9wOiAke3Byb3BzID0+XG4gICAgcHJvcHMucGxhY2VtZW50ID09PSAnYm90dG9tJyA/IGAke3Byb3BzLnRoZW1lLmRyb3Bkb3duV2FwcGVyTWFyZ2lufXB4YCA6ICdhdXRvJ307XG4gIG1hcmdpbi1ib3R0b206ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5wbGFjZW1lbnQgPT09ICd0b3AnID8gYCR7cHJvcHMudGhlbWUuZHJvcGRvd25XYXBwZXJNYXJnaW59cHhgIDogJ2F1dG8nfTtcbmA7XG5cbmNsYXNzIEl0ZW1TZWxlY3RvciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgLy8gcmVxdWlyZWQgcHJvcGVydGllc1xuICAgIHNlbGVjdGVkSXRlbXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1xuICAgICAgUHJvcFR5cGVzLmFycmF5LFxuICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBQcm9wVHlwZXMuYm9vbCxcbiAgICAgIFByb3BUeXBlcy5vYmplY3RcbiAgICBdKSxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuXG4gICAgLy8gb3B0aW9uYWwgcHJvcGVydGllc1xuICAgIGZpeGVkT3B0aW9uczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSksXG4gICAgZXJhc2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHNob3dBcnJvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGlzcGxheU9wdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBnZXRPcHRpb25WYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBmaWx0ZXJPcHRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0Vycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpc0xvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIG11bHRpU2VsZWN0OiBQcm9wVHlwZXMuYm9vbCxcbiAgICBpbnB1dFRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VPblNlbGVjdDogUHJvcFR5cGVzLmJvb2wsXG4gICAgdHlwZWFoZWFkUGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIERyb3BEb3duUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBDdXN0b21DaGlja2xldENvbXBvbmVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgd2l0aFN1Yk9wdGlvbnM6IFByb3BUeXBlcy5ib29sXG4gIH07XG5cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBlcmFzYWJsZTogZmFsc2UsXG4gICAgc2hvd0Fycm93OiBmYWxzZSxcbiAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgIHNlbGVjdGVkSXRlbXM6IFtdLFxuICAgIGRpc3BsYXlPcHRpb246IG51bGwsXG4gICAgZ2V0T3B0aW9uVmFsdWU6IG51bGwsXG4gICAgZmlsdGVyT3B0aW9uOiBudWxsLFxuICAgIGZpeGVkT3B0aW9uczogbnVsbCxcbiAgICBpbnB1dFRoZW1lOiAncHJpbWFyeScsXG4gICAgbXVsdGlTZWxlY3Q6IHRydWUsXG4gICAgcGxhY2Vob2xkZXI6ICdwbGFjZWhvbGRlci5lbnRlclZhbHVlJyxcbiAgICBjbG9zZU9uU2VsZWN0OiB0cnVlLFxuICAgIHNlYXJjaGFibGU6IHRydWUsXG4gICAgZHJvcGRvd25IZWFkZXI6IG51bGwsXG4gICAgRHJvcGRvd25IZWFkZXJDb21wb25lbnQ6IG51bGwsXG4gICAgRHJvcERvd25SZW5kZXJDb21wb25lbnQ6IERyb3Bkb3duTGlzdCxcbiAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50OiBMaXN0SXRlbSxcbiAgICB3aXRoU3ViT3B0aW9uczogZmFsc2VcbiAgfTtcblxuICBzdGF0ZSA9IHtcbiAgICBzaG93VHlwZWFoZWFkOiBmYWxzZVxuICB9O1xuXG4gIGhhbmRsZUNsaWNrT3V0c2lkZSA9ICgpID0+IHtcbiAgICB0aGlzLl9oaWRlVHlwZWFoZWFkKCk7XG4gIH07XG5cbiAgX2hpZGVUeXBlYWhlYWQoKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7c2hvd1R5cGVhaGVhZDogZmFsc2V9KTtcbiAgICB0aGlzLl9vbkJsdXIoKTtcbiAgfVxuXG4gIF9vbkJsdXIgPSAoKSA9PiB7XG4gICAgLy8gbm90ZTogY2hpY2tsZXRlZCBpbnB1dCBpcyBub3QgYSByZWFsIGZvcm0gZWxlbWVudCBzbyB3ZSBjYWxsIG9uQmx1cigpXG4gICAgLy8gd2hlbiB3ZSBmZWVsIHRoZSBldmVudHMgYXJlIGFwcHJvcHJpYXRlXG4gICAgaWYgKHRoaXMucHJvcHMub25CbHVyKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQmx1cigpO1xuICAgIH1cbiAgfTtcblxuICBfcmVtb3ZlSXRlbSA9IChpdGVtLCBlKSA9PiB7XG4gICAgLy8gb25seSB1c2VkIHdoZW4gbXVsdGlTZWxlY3QgPSB0cnVlXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3Qge3NlbGVjdGVkSXRlbXN9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBpbmRleCA9IHNlbGVjdGVkSXRlbXMuZmluZEluZGV4KHQgPT4gdCA9PT0gaXRlbSk7XG5cbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXRlbXMgPSBbXG4gICAgICAuLi5zZWxlY3RlZEl0ZW1zLnNsaWNlKDAsIGluZGV4KSxcbiAgICAgIC4uLnNlbGVjdGVkSXRlbXMuc2xpY2UoaW5kZXggKyAxLCBzZWxlY3RlZEl0ZW1zLmxlbmd0aClcbiAgICBdO1xuXG4gICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jbG9zZU9uU2VsZWN0KSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtzaG93VHlwZWFoZWFkOiBmYWxzZX0pO1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuICB9O1xuXG4gIF9zZWxlY3RJdGVtID0gaXRlbSA9PiB7XG4gICAgY29uc3QgZ2V0VmFsdWUgPSBBY2Nlc3Nvci5nZW5lcmF0ZU9wdGlvblRvU3RyaW5nRm9yKFxuICAgICAgdGhpcy5wcm9wcy5nZXRPcHRpb25WYWx1ZSB8fCB0aGlzLnByb3BzLmRpc3BsYXlPcHRpb25cbiAgICApO1xuXG4gICAgY29uc3QgcHJldmlvdXNTZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcblxuICAgIGlmICh0aGlzLnByb3BzLm11bHRpU2VsZWN0KSB7XG4gICAgICBjb25zdCBpdGVtcyA9IHVuaXFCeShwcmV2aW91c1NlbGVjdGVkLmNvbmNhdCh0b0FycmF5KGl0ZW0pKSwgZ2V0VmFsdWUpO1xuICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZShpdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UoZ2V0VmFsdWUoaXRlbSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dUeXBlYWhlYWQ6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9vbkJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgX29uRXJhc2UgPSBlID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMucHJvcHMub25DaGFuZ2UobnVsbCk7XG4gIH07XG5cbiAgX3Nob3dUeXBlYWhlYWQgPSBlID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5wcm9wcy5kaXNhYmxlZCAmJiAhdGhpcy5wcm9wcy5pc0xvYWRpbmcpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBzaG93VHlwZWFoZWFkOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3JlbmRlckRyb3Bkb3duKGludGwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPERyb3Bkb3duV3JhcHBlciBwbGFjZW1lbnQ9e3RoaXMucHJvcHMucGxhY2VtZW50fT5cbiAgICAgICAgPFR5cGVhaGVhZFxuICAgICAgICAgIGN1c3RvbUNsYXNzZXM9e3tcbiAgICAgICAgICAgIHJlc3VsdHM6ICdsaXN0LXNlbGVjdG9yJyxcbiAgICAgICAgICAgIGlucHV0OiAndHlwZWFoZWFkX19pbnB1dCcsXG4gICAgICAgICAgICBsaXN0SXRlbTogJ2xpc3RfX2l0ZW0nLFxuICAgICAgICAgICAgbGlzdEFuY2hvcjogJ2xpc3RfX2l0ZW1fX2FuY2hvcidcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9wdGlvbnM9e3RoaXMucHJvcHMub3B0aW9uc31cbiAgICAgICAgICBmaWx0ZXJPcHRpb249e3RoaXMucHJvcHMuZmlsdGVyT3B0aW9ufVxuICAgICAgICAgIGZpeGVkT3B0aW9ucz17dGhpcy5wcm9wcy5maXhlZE9wdGlvbnN9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e1xuICAgICAgICAgICAgdGhpcy5wcm9wcy50eXBlYWhlYWRQbGFjZWhvbGRlciB8fCBpbnRsXG4gICAgICAgICAgICAgID8gaW50bC5mb3JtYXRNZXNzYWdlKHtpZDogJ3BsYWNlaG9sZGVyLnNlYXJjaCd9KVxuICAgICAgICAgICAgICA6ICdTZWFyY2gnXG4gICAgICAgICAgfVxuICAgICAgICAgIG9uT3B0aW9uU2VsZWN0ZWQ9e3RoaXMuX3NlbGVjdEl0ZW19XG4gICAgICAgICAgY3VzdG9tTGlzdENvbXBvbmVudD17dGhpcy5wcm9wcy5Ecm9wRG93blJlbmRlckNvbXBvbmVudH1cbiAgICAgICAgICBjdXN0b21MaXN0SGVhZGVyQ29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3Bkb3duSGVhZGVyQ29tcG9uZW50fVxuICAgICAgICAgIGN1c3RvbUxpc3RJdGVtQ29tcG9uZW50PXt0aGlzLnByb3BzLkRyb3BEb3duTGluZUl0ZW1SZW5kZXJDb21wb25lbnR9XG4gICAgICAgICAgZGlzcGxheU9wdGlvbj17QWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pfVxuICAgICAgICAgIHNlYXJjaGFibGU9e3RoaXMucHJvcHMuc2VhcmNoYWJsZX1cbiAgICAgICAgICBzaG93T3B0aW9uc1doZW5FbXB0eVxuICAgICAgICAgIHNlbGVjdGVkSXRlbXM9e3RvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKX1cbiAgICAgICAgICBsaWdodD17dGhpcy5wcm9wcy5pbnB1dFRoZW1lID09PSAnbGlnaHQnfVxuICAgICAgICAgIHdpdGhTdWJPcHRpb25zPXt0aGlzLnByb3BzLndpdGhTdWJPcHRpb25zfVxuICAgICAgICAvPlxuICAgICAgPC9Ecm9wZG93bldyYXBwZXI+XG4gICAgKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHRvQXJyYXkodGhpcy5wcm9wcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICBjb25zdCBoYXNWYWx1ZSA9IHNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBkaXNwbGF5T3B0aW9uID0gQWNjZXNzb3IuZ2VuZXJhdGVPcHRpb25Ub1N0cmluZ0Zvcih0aGlzLnByb3BzLmRpc3BsYXlPcHRpb24pO1xuXG4gICAgY29uc3QgZHJvcGRvd25TZWxlY3RQcm9wcyA9IHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NuYW1lcyh7XG4gICAgICAgIGFjdGl2ZTogdGhpcy5zdGF0ZS5zaG93VHlwZWFoZWFkXG4gICAgICB9KSxcbiAgICAgIGRpc3BsYXlPcHRpb24sXG4gICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCxcbiAgICAgIG9uQ2xpY2s6IHRoaXMuX3Nob3dUeXBlYWhlYWQsXG4gICAgICBlcnJvcjogdGhpcy5wcm9wcy5pc0Vycm9yLFxuICAgICAgaW5wdXRUaGVtZTogdGhpcy5wcm9wcy5pbnB1dFRoZW1lLFxuICAgICAgc2l6ZTogdGhpcy5wcm9wcy5zaXplXG4gICAgfTtcbiAgICBjb25zdCBpbnRsID0gdGhpcy5wcm9wcy5pbnRsO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaXRlbS1zZWxlY3RvclwiPlxuICAgICAgICA8ZGl2IHN0eWxlPXt7cG9zaXRpb246ICdyZWxhdGl2ZSd9fT5cbiAgICAgICAgICB7LyogdGhpcyBwYXJ0IGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgbGFiZWwgKi99XG4gICAgICAgICAge3RoaXMucHJvcHMubXVsdGlTZWxlY3QgPyAoXG4gICAgICAgICAgICA8Q2hpY2tsZXRlZElucHV0XG4gICAgICAgICAgICAgIHsuLi5kcm9wZG93blNlbGVjdFByb3BzfVxuICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0b0FycmF5KHRoaXMucHJvcHMuc2VsZWN0ZWRJdGVtcyl9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICByZW1vdmVJdGVtPXt0aGlzLl9yZW1vdmVJdGVtfVxuICAgICAgICAgICAgICBDdXN0b21DaGlja2xldENvbXBvbmVudD17dGhpcy5wcm9wcy5DdXN0b21DaGlja2xldENvbXBvbmVudH1cbiAgICAgICAgICAgICAgaW5wdXRUaGVtZT17dGhpcy5wcm9wcy5pbnB1dFRoZW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFN0eWxlZERyb3Bkb3duU2VsZWN0IHsuLi5kcm9wZG93blNlbGVjdFByb3BzfT5cbiAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0VmFsdWVcbiAgICAgICAgICAgICAgICBoYXNQbGFjZWhvbGRlcj17IWhhc1ZhbHVlfVxuICAgICAgICAgICAgICAgIGlucHV0VGhlbWU9e3RoaXMucHJvcHMuaW5wdXRUaGVtZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpdGVtLXNlbGVjdG9yX19kcm9wZG93bl9fdmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2hhc1ZhbHVlID8gKFxuICAgICAgICAgICAgICAgICAgPHRoaXMucHJvcHMuRHJvcERvd25MaW5lSXRlbVJlbmRlckNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9uPXtkaXNwbGF5T3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VsZWN0ZWRbMF19XG4gICAgICAgICAgICAgICAgICAgIGxpZ2h0PXt0aGlzLnByb3BzLmlucHV0VGhlbWUgPT09ICdsaWdodCd9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD17dGhpcy5wcm9wcy5wbGFjZWhvbGRlciB8fCAncGxhY2Vob2xkZXIuc2VsZWN0VmFsdWUnfSAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RWYWx1ZT5cbiAgICAgICAgICAgICAge3RoaXMucHJvcHMuZXJhc2FibGUgJiYgaGFzVmFsdWUgPyAoXG4gICAgICAgICAgICAgICAgPERyb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5pc0xvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciBzaXplPXsxOH0gc3Ryb2tlV2lkdGg9ezJ9IGdhcD17MH0gLz5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxEZWxldGUgaGVpZ2h0PVwiMTJweFwiIG9uQ2xpY2s9e3RoaXMuX29uRXJhc2V9IC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25TZWxlY3RBY3Rpb25SaWdodD5cbiAgICAgICAgICAgICAgKSA6IHRoaXMucHJvcHMuc2hvd0Fycm93ID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93blNlbGVjdEFjdGlvblJpZ2h0PlxuICAgICAgICAgICAgICAgICAgPEFycm93RG93biBoZWlnaHQ9XCIxNHB4XCIgb25DbGljaz17dGhpcy5fc2hvd1R5cGVhaGVhZH0gLz5cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duU2VsZWN0QWN0aW9uUmlnaHQ+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9TdHlsZWREcm9wZG93blNlbGVjdD5cbiAgICAgICAgICApfVxuICAgICAgICAgIHsvKiB0aGlzIHBhcnQgaXMgdXNlZCB0byBidWlsdCB0aGUgbGlzdCAqL31cbiAgICAgICAgICB7dGhpcy5zdGF0ZS5zaG93VHlwZWFoZWFkICYmIHRoaXMuX3JlbmRlckRyb3Bkb3duKGludGwpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEl0ZW1TZWxlY3Rvckxpc3RlbiA9IGxpc3RlbnNUb0NsaWNrT3V0c2lkZShJdGVtU2VsZWN0b3IpO1xuZXhwb3J0IGRlZmF1bHQgaW5qZWN0SW50bChsaXN0ZW5zVG9DbGlja091dHNpZGUoSXRlbVNlbGVjdG9yKSk7XG4iXX0=