easy-richtextarea 3.0.147 → 3.0.149

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.
@@ -27,7 +27,7 @@ function _taggedTemplateLiteral(strings, raw) {
27
27
  }
28
28
  function _templateObject() {
29
29
  var data = _taggedTemplateLiteral([
30
- "\n\n border: 1px solid black;\n width: 32rem;\n height: 32rem;\n padding: 0.25rem;\n font-size: 1.2rem;\n font-family: monospace;\n\n"
30
+ "\n\n border: 1px solid black;\n width: 32rem;\n height: 32rem;\n padding: 0.25rem;\n font-size: 1.2rem;\n font-family: monospace;\n \n display: none;\n \n .active {\n display: block;\n }\n\n"
31
31
  ]);
32
32
  _templateObject = function _templateObject() {
33
33
  return data;
@@ -36,4 +36,4 @@ function _templateObject() {
36
36
  }
37
37
  var _default = (0, _easyWithStyle.default)(_browser.RichTextarea)(_templateObject());
38
38
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3JpY2hUZXh0YXJlYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHdpdGhTdHlsZSBmcm9tIFwiZWFzeS13aXRoLXN0eWxlXCI7XG5cbmltcG9ydCB7IFJpY2hUZXh0YXJlYSB9IGZyb20gXCIuLi9icm93c2VyXCI7ICAvLy9cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlKFJpY2hUZXh0YXJlYSlgXG5cbiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XG4gIHdpZHRoOiAzMnJlbTtcbiAgaGVpZ2h0OiAzMnJlbTtcbiAgcGFkZGluZzogMC4yNXJlbTtcbiAgZm9udC1zaXplOiAxLjJyZW07XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG5cbmA7XG4iXSwibmFtZXMiOlsid2l0aFN0eWxlIiwiUmljaFRleHRhcmVhIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQUE7OztrRUFKc0I7dUJBRU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFN0IsV0FBZUEsSUFBQUEsc0JBQVMsRUFBQ0MscUJBQVkifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3JpY2hUZXh0YXJlYS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHdpdGhTdHlsZSBmcm9tIFwiZWFzeS13aXRoLXN0eWxlXCI7XG5cbmltcG9ydCB7IFJpY2hUZXh0YXJlYSB9IGZyb20gXCIuLi9icm93c2VyXCI7ICAvLy9cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlKFJpY2hUZXh0YXJlYSlgXG5cbiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XG4gIHdpZHRoOiAzMnJlbTtcbiAgaGVpZ2h0OiAzMnJlbTtcbiAgcGFkZGluZzogMC4yNXJlbTtcbiAgZm9udC1zaXplOiAxLjJyZW07XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gIFxuICBkaXNwbGF5OiBub25lO1xuICBcbiAgLmFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuYDtcbiJdLCJuYW1lcyI6WyJ3aXRoU3R5bGUiLCJSaWNoVGV4dGFyZWEiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBQTs7O2tFQUpzQjt1QkFFTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUU3QixXQUFlQSxJQUFBQSxzQkFBUyxFQUFDQyxxQkFBWSJ9
@@ -14,17 +14,19 @@ function _interopRequireDefault(obj) {
14
14
  default: obj
15
15
  };
16
16
  }
17
+ var content = "Rule (blah)\n Conclusion\n A", readOnly = true, richTextarea = /*#__PURE__*/ React.createElement(_richTextarea.default, {
18
+ onChange: changeHandler,
19
+ onScroll: scrollHandler,
20
+ onFocus: focusHandler,
21
+ onBlur: blurHandler
22
+ });
23
+ richTextarea.setContent(content);
24
+ richTextarea.setReadOnly(readOnly);
25
+ richTextarea.activate();
17
26
  var View = function(properties) {
18
27
  return /*#__PURE__*/ React.createElement("div", {
19
28
  className: "view"
20
- }, /*#__PURE__*/ React.createElement(_richTextarea.default, {
21
- onChange: changeHandler,
22
- onScroll: scrollHandler,
23
- onFocus: focusHandler,
24
- onBlur: blurHandler,
25
- readOnly: true,
26
- active: true
27
- }, "Rule (blah)\n Conclusion\n A"));
29
+ }, richTextarea);
28
30
  };
29
31
  var _default = View;
30
32
  function changeHandler(event, element) {
@@ -42,4 +44,4 @@ function blurHandler(event, element) {
42
44
  console.log("blur");
43
45
  }
44
46
 
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3ZpZXcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBSaWNoVGV4dGFyZWEgZnJvbSBcIi4vcmljaFRleHRhcmVhXCI7XG5cbmNvbnN0IFZpZXcgPSAocHJvcGVydGllcykgPT5cblxuICA8ZGl2IGNsYXNzTmFtZT1cInZpZXdcIj5cbiAgICA8UmljaFRleHRhcmVhIG9uQ2hhbmdlPXtjaGFuZ2VIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgb25TY3JvbGw9e3Njcm9sbEhhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICBvbkZvY3VzPXtmb2N1c0hhbmRsZXJ9XG4gICAgICAgICAgICAgICAgICBvbkJsdXI9e2JsdXJIYW5kbGVyfVxuICAgICAgICAgICAgICAgICAgcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgIGFjdGl2ZVxuICAgID5cbntgUnVsZSAoYmxhaClcbiAgQ29uY2x1c2lvblxuICAgIEFgfVxuICAgIDwvUmljaFRleHRhcmVhPlxuICA8L2Rpdj5cblxuO1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3O1xuXG5mdW5jdGlvbiBjaGFuZ2VIYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnN0IGNvbnRlbnRDaGFuZ2VkID0gZWxlbWVudC5oYXNDb250ZW50Q2hhbmdlZCgpLFxuICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gZWxlbWVudC5oYXNTZWxlY3Rpb25DaGFuZ2VkKCk7XG5cbiAgY29uc29sZS5sb2coY29udGVudENoYW5nZWQsIHNlbGVjdGlvbkNoYW5nZWQpXG59XG5cbmZ1bmN0aW9uIHNjcm9sbEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcbiAgY29uc3Qgc2Nyb2xsVG9wID0gZWxlbWVudC5nZXRTY3JvbGxUb3AoKSxcbiAgICAgICAgc2Nyb2xsTGVmdCA9IGVsZW1lbnQuZ2V0U2Nyb2xsTGVmdCgpO1xuXG4gIGNvbnNvbGUubG9nKHNjcm9sbFRvcCwgc2Nyb2xsTGVmdClcbn1cblxuZnVuY3Rpb24gZm9jdXNIYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnNvbGUubG9nKFwiZm9jdXNcIilcbn1cblxuZnVuY3Rpb24gYmx1ckhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcbiAgY29uc29sZS5sb2coXCJibHVyXCIpXG59XG4iXSwibmFtZXMiOlsiVmlldyIsInByb3BlcnRpZXMiLCJkaXYiLCJjbGFzc05hbWUiLCJSaWNoVGV4dGFyZWEiLCJvbkNoYW5nZSIsImNoYW5nZUhhbmRsZXIiLCJvblNjcm9sbCIsInNjcm9sbEhhbmRsZXIiLCJvbkZvY3VzIiwiZm9jdXNIYW5kbGVyIiwib25CbHVyIiwiYmx1ckhhbmRsZXIiLCJyZWFkT25seSIsImFjdGl2ZSIsImV2ZW50IiwiZWxlbWVudCIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImNvbnNvbGUiLCJsb2ciLCJzY3JvbGxUb3AiLCJnZXRTY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwiZ2V0U2Nyb2xsTGVmdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0JBOzs7ZUFBQTs7O2lFQXBCeUI7Ozs7OztBQUV6QixJQUFNQSxPQUFPLFNBQUNDO3lCQUVaLG9CQUFDQztRQUFJQyxXQUFVO3FCQUNiLG9CQUFDQyxxQkFBWTtRQUFDQyxVQUFVQztRQUNWQyxVQUFVQztRQUNWQyxTQUFTQztRQUNUQyxRQUFRQztRQUNSQyxVQUFBQSxJQUFRO1FBQ1JDLFFBQUFBLElBQU07T0FFdEI7O0lBUUYsV0FBZWQ7QUFFZixTQUFTTSxjQUFjUyxLQUFLLEVBQUVDLE9BQU8sRUFBRTtJQUNyQyxJQUFNQyxpQkFBaUJELFFBQVFFLGlCQUFpQixJQUMxQ0MsbUJBQW1CSCxRQUFRSSxtQkFBbUI7SUFFcERDLFFBQVFDLEdBQUcsQ0FBQ0wsZ0JBQWdCRTtBQUM5QjtBQUVBLFNBQVNYLGNBQWNPLEtBQUssRUFBRUMsT0FBTyxFQUFFO0lBQ3JDLElBQU1PLFlBQVlQLFFBQVFRLFlBQVksSUFDaENDLGFBQWFULFFBQVFVLGFBQWE7SUFFeENMLFFBQVFDLEdBQUcsQ0FBQ0MsV0FBV0U7QUFDekI7QUFFQSxTQUFTZixhQUFhSyxLQUFLLEVBQUVDLE9BQU8sRUFBRTtJQUNwQ0ssUUFBUUMsR0FBRyxDQUFDO0FBQ2Q7QUFFQSxTQUFTVixZQUFZRyxLQUFLLEVBQUVDLE9BQU8sRUFBRTtJQUNuQ0ssUUFBUUMsR0FBRyxDQUFDO0FBQ2QifQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL3ZpZXcuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBSaWNoVGV4dGFyZWEgZnJvbSBcIi4vcmljaFRleHRhcmVhXCI7XG5cbmNvbnN0IGNvbnRlbnQgPSBgUnVsZSAoYmxhaClcbiAgQ29uY2x1c2lvblxuICAgIEFgLFxuICAgICAgcmVhZE9ubHkgPSB0cnVlLFxuICAgICAgcmljaFRleHRhcmVhID1cblxuICAgICAgICA8UmljaFRleHRhcmVhIG9uQ2hhbmdlPXtjaGFuZ2VIYW5kbGVyfSBvblNjcm9sbD17c2Nyb2xsSGFuZGxlcn0gb25Gb2N1cz17Zm9jdXNIYW5kbGVyfSBvbkJsdXI9e2JsdXJIYW5kbGVyfSAvPlxuXG4gICAgICA7XG5cbnJpY2hUZXh0YXJlYS5zZXRDb250ZW50KGNvbnRlbnQpO1xucmljaFRleHRhcmVhLnNldFJlYWRPbmx5KHJlYWRPbmx5KTtcblxucmljaFRleHRhcmVhLmFjdGl2YXRlKCk7XG5cbmNvbnN0IFZpZXcgPSAocHJvcGVydGllcykgPT5cblxuICA8ZGl2IGNsYXNzTmFtZT1cInZpZXdcIj5cbiAgICB7cmljaFRleHRhcmVhfVxuICA8L2Rpdj5cblxuO1xuXG5leHBvcnQgZGVmYXVsdCBWaWV3O1xuXG5mdW5jdGlvbiBjaGFuZ2VIYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnN0IGNvbnRlbnRDaGFuZ2VkID0gZWxlbWVudC5oYXNDb250ZW50Q2hhbmdlZCgpLFxuICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkID0gZWxlbWVudC5oYXNTZWxlY3Rpb25DaGFuZ2VkKCk7XG5cbiAgY29uc29sZS5sb2coY29udGVudENoYW5nZWQsIHNlbGVjdGlvbkNoYW5nZWQpXG59XG5cbmZ1bmN0aW9uIHNjcm9sbEhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcbiAgY29uc3Qgc2Nyb2xsVG9wID0gZWxlbWVudC5nZXRTY3JvbGxUb3AoKSxcbiAgICAgICAgc2Nyb2xsTGVmdCA9IGVsZW1lbnQuZ2V0U2Nyb2xsTGVmdCgpO1xuXG4gIGNvbnNvbGUubG9nKHNjcm9sbFRvcCwgc2Nyb2xsTGVmdClcbn1cblxuZnVuY3Rpb24gZm9jdXNIYW5kbGVyKGV2ZW50LCBlbGVtZW50KSB7XG4gIGNvbnNvbGUubG9nKFwiZm9jdXNcIilcbn1cblxuZnVuY3Rpb24gYmx1ckhhbmRsZXIoZXZlbnQsIGVsZW1lbnQpIHtcbiAgY29uc29sZS5sb2coXCJibHVyXCIpXG59XG4iXSwibmFtZXMiOlsiY29udGVudCIsInJlYWRPbmx5IiwicmljaFRleHRhcmVhIiwiUmljaFRleHRhcmVhIiwib25DaGFuZ2UiLCJjaGFuZ2VIYW5kbGVyIiwib25TY3JvbGwiLCJzY3JvbGxIYW5kbGVyIiwib25Gb2N1cyIsImZvY3VzSGFuZGxlciIsIm9uQmx1ciIsImJsdXJIYW5kbGVyIiwic2V0Q29udGVudCIsInNldFJlYWRPbmx5IiwiYWN0aXZhdGUiLCJWaWV3IiwicHJvcGVydGllcyIsImRpdiIsImNsYXNzTmFtZSIsImV2ZW50IiwiZWxlbWVudCIsImNvbnRlbnRDaGFuZ2VkIiwiaGFzQ29udGVudENoYW5nZWQiLCJzZWxlY3Rpb25DaGFuZ2VkIiwiaGFzU2VsZWN0aW9uQ2hhbmdlZCIsImNvbnNvbGUiLCJsb2ciLCJzY3JvbGxUb3AiLCJnZXRTY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwiZ2V0U2Nyb2xsTGVmdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBMkJBOzs7ZUFBQTs7O2lFQXpCeUI7Ozs7OztBQUV6QixJQUFNQSxVQUFXLG9DQUdYQyxXQUFXLElBQUksRUFDZkMsNkJBRUUsb0JBQUNDLHFCQUFZO0lBQUNDLFVBQVVDO0lBQWVDLFVBQVVDO0lBQWVDLFNBQVNDO0lBQWNDLFFBQVFDOztBQUl2R1QsYUFBYVUsVUFBVSxDQUFDWjtBQUN4QkUsYUFBYVcsV0FBVyxDQUFDWjtBQUV6QkMsYUFBYVksUUFBUTtBQUVyQixJQUFNQyxPQUFPLFNBQUNDO3lCQUVaLG9CQUFDQztRQUFJQyxXQUFVO09BQ1poQjs7SUFLTCxXQUFlYTtBQUVmLFNBQVNWLGNBQWNjLEtBQUssRUFBRUMsT0FBTyxFQUFFO0lBQ3JDLElBQU1DLGlCQUFpQkQsUUFBUUUsaUJBQWlCLElBQzFDQyxtQkFBbUJILFFBQVFJLG1CQUFtQjtJQUVwREMsUUFBUUMsR0FBRyxDQUFDTCxnQkFBZ0JFO0FBQzlCO0FBRUEsU0FBU2hCLGNBQWNZLEtBQUssRUFBRUMsT0FBTyxFQUFFO0lBQ3JDLElBQU1PLFlBQVlQLFFBQVFRLFlBQVksSUFDaENDLGFBQWFULFFBQVFVLGFBQWE7SUFFeENMLFFBQVFDLEdBQUcsQ0FBQ0MsV0FBV0U7QUFDekI7QUFFQSxTQUFTcEIsYUFBYVUsS0FBSyxFQUFFQyxPQUFPLEVBQUU7SUFDcENLLFFBQVFDLEdBQUcsQ0FBQztBQUNkO0FBRUEsU0FBU2YsWUFBWVEsS0FBSyxFQUFFQyxPQUFPLEVBQUU7SUFDbkNLLFFBQVFDLEdBQUcsQ0FBQztBQUNkIn0=
@@ -511,7 +511,7 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
511
511
  {
512
512
  key: "didMount",
513
513
  value: function didMount() {
514
- var _this_properties = this.properties, onChange = _this_properties.onChange, onScroll = _this_properties.onScroll, onFocus = _this_properties.onFocus, onBlur = _this_properties.onBlur, _this_properties_readOnly = _this_properties.readOnly, readOnly = _this_properties_readOnly === void 0 ? false : _this_properties_readOnly, _this_properties_active = _this_properties.active, active = _this_properties_active === void 0 ? false : _this_properties_active, changeHandler = onChange, scrollHandler = onScroll, focusHandler = onFocus, blurHandler = onBlur; ///
514
+ var _this_properties = this.properties, onChange = _this_properties.onChange, onScroll = _this_properties.onScroll, onFocus = _this_properties.onFocus, onBlur = _this_properties.onBlur, changeHandler = onChange, scrollHandler = onScroll, focusHandler = onFocus, blurHandler = onBlur; ///
515
515
  changeHandler && this.onChange(changeHandler, this);
516
516
  scrollHandler && this.onScroll(scrollHandler, this);
517
517
  focusHandler && this.onFocus(focusHandler, this);
@@ -519,10 +519,6 @@ var RichTextarea = /*#__PURE__*/ function(Element) {
519
519
  var content = this.getContent(), selection = this.getSelection(), previousContent = content, previousSelection = selection; ///
520
520
  this.setPreviousSelection(previousSelection);
521
521
  this.setPreviousContent(previousContent);
522
- this.setReadOnly(readOnly);
523
- if (active) {
524
- this.activate();
525
- }
526
522
  }
527
523
  },
528
524
  {
@@ -553,12 +549,10 @@ _defineProperty(RichTextarea, "ignoredProperties", [
553
549
  "onChange",
554
550
  "onScroll",
555
551
  "onFocus",
556
- "onBlur",
557
- "active",
558
- "readOnly"
552
+ "onBlur"
559
553
  ]);
560
554
  _defineProperty(RichTextarea, "defaultProperties", {
561
555
  className: "rich"
562
556
  });
563
557
 
564
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyB3aW5kb3csIEVsZW1lbnQsIGV2ZW50VHlwZXMgfSBmcm9tIFwiZWFzeVwiO1xyXG5cclxuaW1wb3J0IFNlbGVjdGlvbiBmcm9tIFwiLi9zZWxlY3Rpb25cIlxyXG5cclxuY29uc3QgeyBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIENIQU5HRV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgS0VZRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRVVQX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIE1PVVNFRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRU1PVkVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmNvbnN0IGRlZmVyID0gKGZ1bmMpID0+IHNldFRpbWVvdXQoZnVuYywgMSk7IC8vL1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmljaFRleHRhcmVhIGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpID0+IHtcclxuICAgIGNvbnN0IHJlYWRPbmx5ID0gdGhpcy5pc1JlYWRPbmx5KCk7XHJcblxyXG4gICAgaWYgKHJlYWRPbmx5KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IHRoaXMuZ2V0UHJldmlvdXNDb250ZW50KCksXHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwcmV2aW91c0NvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5oYXNDaGFuZ2VkKCk7XHJcblxyXG4gICAgaWYgKGNoYW5nZWQgfHwgZm9yY2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIG1vdXNlRG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IGZhbHNlLFxyXG4gICAgICAgICAgbW91c2VEb3duID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuc2V0TW91c2VEb3duKG1vdXNlRG93bik7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4gdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUsIGZvcmNlZCkpO1xyXG4gIH1cclxuXHJcbiAgbW91c2VNb3ZlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZm9yY2VkID0gZmFsc2UsXHJcbiAgICAgICAgICBtb3VzZURvd24gPSB0aGlzLmlzTW91c2VEb3duKCksXHJcbiAgICAgICAgICBldmVudFRZcGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICBpZiAobW91c2VEb3duKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUWXBlLCBmb3JjZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW91c2VVcEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1vdXNlRG93biA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0TW91c2VEb3duKG1vdXNlRG93bik7XHJcbiAgfTtcclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IGZhbHNlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4gdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUsIGZvcmNlZCkpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSBmYWxzZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IHRydWUsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpKTtcclxuICB9XHJcblxyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSB0cnVlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmhhc0NsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgIHJldHVybiBhY3RpdmU7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgeyB2YWx1ZSB9ID0gZG9tRWxlbWVudCxcclxuICAgICAgICAgIGNvbnRlbnQgPSB2YWx1ZTsgIC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gU2VsZWN0aW9uLmZyb21ET01FbGVtZW50KGRvbUVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRDb250ZW50KGNvbnRlbnQpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xyXG4gICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihzZWxlY3Rpb24pIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHNlbGVjdGlvblN0YXJ0LFxyXG4gICAgICBzZWxlY3Rpb25FbmRcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICByZXR1cm4gY2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnREaWZmZXJlbnRUb1ByZXZpb3VzQ29udGVudCA9IChjb250ZW50ICE9PSBwcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSBjb250ZW50RGlmZmVyZW50VG9QcmV2aW91c0NvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50Q2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc1NlbGVjdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLmdldFByZXZpb3VzU2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25EaWZmZXJlbnRUb1ByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRGlmZmVyZW50VG8ocHJldmlvdXNTZWxlY3Rpb24pLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHNlbGVjdGlvbkRpZmZlcmVudFRvUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICBjb25zdCBtb3VzZURvd24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIHdpbmRvdy5vbihgJHtCTFVSX0VWRU5UX1RZUEV9ICR7TU9VU0VVUF9FVkVOVF9UWVBFfSAke0NPTlRFWFRNRU5VX0VWRU5UX1RZUEV9YCwgdGhpcy5tb3VzZVVwSGFuZGxlciwgdGhpcyk7IC8vL1xyXG5cclxuICAgIHRoaXMub24oTU9VU0VET1dOX0VWRU5UX1RZUEUsIHRoaXMubW91c2VEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihNT1VTRU1PVkVfRVZFTlRfVFlQRSwgdGhpcy5tb3VzZU1vdmVIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICBjb25zdCBtb3VzZURvd24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIHdpbmRvdy5vZmYoYCR7QkxVUl9FVkVOVF9UWVBFfSAke01PVVNFVVBfRVZFTlRfVFlQRX0gJHtDT05URVhUTUVOVV9FVkVOVF9UWVBFfWAsIHRoaXMubW91c2VVcEhhbmRsZXIsIHRoaXMpOyAvLy9cclxuXHJcbiAgICB0aGlzLm9mZihNT1VTRURPV05fRVZFTlRfVFlQRSwgdGhpcy5tb3VzZURvd25IYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihNT1VTRU1PVkVfRVZFTlRfVFlQRSwgdGhpcy5tb3VzZU1vdmVIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBjb25zdCB7IGhhbmRsZXIsIGVsZW1lbnQ6IGhhbmRsZXJFbGVtZW50IH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcikpIHtcclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNSZWFkT25seSgpIHtcclxuICAgIGNvbnN0IHsgcmVhZE9ubHkgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBpc01vdXNlRG93bigpIHtcclxuICAgIGNvbnN0IHsgbW91c2VEb3duIH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIG1vdXNlRG93bjtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzQ29udGVudCgpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNDb250ZW50IH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzQ29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzU2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgeyBwcmV2aW91c1NlbGVjdGlvbiB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcmVhZE9ubHlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0TW91c2VEb3duKG1vdXNlRG93bikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIG1vdXNlRG93blxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xyXG4gICAgY29uc3QgcmVhZE9ubHkgPSBmYWxzZSxcclxuICAgICAgICAgIG1vdXNlRG93biA9IGZhbHNlLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcmVhZE9ubHksXHJcbiAgICAgIG1vdXNlRG93bixcclxuICAgICAgcHJldmlvdXNDb250ZW50LFxyXG4gICAgICBwcmV2aW91c1NlbGVjdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIsIHJlYWRPbmx5ID0gZmFsc2UsIGFjdGl2ZSA9IGZhbHNlIH0gPSB0aGlzLnByb3BlcnRpZXMsXHJcbiAgICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICAgIGZvY3VzSGFuZGxlciA9IG9uRm9jdXMsIC8vL1xyXG4gICAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1cjsgLy8vXHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9uQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIHRoaXMpO1xyXG4gICAgZm9jdXNIYW5kbGVyICYmIHRoaXMub25Gb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vbkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRSZWFkT25seShyZWFkT25seSk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB3aWxsVW5tb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgIGNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZSwgLy8vXHJcbiAgICAgICAgICBzY3JvbGxIYW5kbGVyID0gb25TY3JvbGwsIC8vL1xyXG4gICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICBibHVySGFuZGxlciA9IG9uQmx1cjsgLy8vXHJcblxyXG4gICAgY2hhbmdlSGFuZGxlciAmJiB0aGlzLm9mZkNoYW5nZShjaGFuZ2VIYW5kbGVyLCB0aGlzKTtcclxuICAgIHNjcm9sbEhhbmRsZXIgJiYgdGhpcy5vZmZTY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vZmZGb2N1cyhmb2N1c0hhbmRsZXIsIHRoaXMpO1xyXG4gICAgYmx1ckhhbmRsZXIgJiYgdGhpcy5vZmZCbHVyKGJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmlzQWN0aXZlKCk7XHJcblxyXG4gICAgaWYgKGFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmRlYWN0aXZhdGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpc2UoKSB7XHJcbiAgICB0aGlzLnNldEluaXRpYWxTdGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHRhZ05hbWUgPSBcInRleHRhcmVhXCI7XHJcblxyXG4gIHN0YXRpYyBpZ25vcmVkUHJvcGVydGllcyA9IFtcclxuICAgIFwib25DaGFuZ2VcIixcclxuICAgIFwib25TY3JvbGxcIixcclxuICAgIFwib25Gb2N1c1wiLFxyXG4gICAgXCJvbkJsdXJcIixcclxuICAgIFwiYWN0aXZlXCIsXHJcbiAgICBcInJlYWRPbmx5XCJcclxuICBdO1xyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BlcnRpZXMgPSB7XHJcbiAgICBjbGFzc05hbWU6IFwicmljaFwiXHJcbiAgfTtcclxufVxyXG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIlJpY2hUZXh0YXJlYSIsIkJMVVJfRVZFTlRfVFlQRSIsImV2ZW50VHlwZXMiLCJJTlBVVF9FVkVOVF9UWVBFIiwiRk9DVVNfRVZFTlRfVFlQRSIsIkNIQU5HRV9FVkVOVF9UWVBFIiwiU0NST0xMX0VWRU5UX1RZUEUiLCJLRVlET1dOX0VWRU5UX1RZUEUiLCJNT1VTRVVQX0VWRU5UX1RZUEUiLCJNT1VTRURPV05fRVZFTlRfVFlQRSIsIk1PVVNFTU9WRV9FVkVOVF9UWVBFIiwiQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSIsImRlZmVyIiwiZnVuYyIsInNldFRpbWVvdXQiLCJpbnRlcm1lZGlhdGVIYW5kbGVyIiwiZXZlbnQiLCJlbGVtZW50IiwiZXZlbnRUeXBlIiwiZm9yY2VkIiwicmVhZE9ubHkiLCJpc1JlYWRPbmx5IiwicHJldmlvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNDb250ZW50IiwiY29udGVudCIsInNldENvbnRlbnQiLCJjaGFuZ2VkIiwiaGFzQ2hhbmdlZCIsImNhbGxIYW5kbGVycyIsImdldENvbnRlbnQiLCJzZWxlY3Rpb24iLCJnZXRTZWxlY3Rpb24iLCJwcmV2aW91c1NlbGVjdGlvbiIsInNldFByZXZpb3VzQ29udGVudCIsInNldFByZXZpb3VzU2VsZWN0aW9uIiwibW91c2VEb3duSGFuZGxlciIsIm1vdXNlRG93biIsInNldE1vdXNlRG93biIsIm1vdXNlTW92ZUhhbmRsZXIiLCJpc01vdXNlRG93biIsImV2ZW50VFlwZSIsIm1vdXNlVXBIYW5kbGVyIiwia2V5RG93bkhhbmRsZXIiLCJpbnB1dEhhbmRsZXIiLCJzY3JvbGxIYW5kbGVyIiwiZm9jdXNIYW5kbGVyIiwiYmx1ckhhbmRsZXIiLCJpc0FjdGl2ZSIsImFjdGl2ZSIsImhhc0NsYXNzIiwiZG9tRWxlbWVudCIsImdldERPTUVsZW1lbnQiLCJ2YWx1ZSIsIlNlbGVjdGlvbiIsImZyb21ET01FbGVtZW50IiwiT2JqZWN0IiwiYXNzaWduIiwic2V0U2VsZWN0aW9uIiwic2VsZWN0aW9uU3RhcnRQb3NpdGlvbiIsImdldFN0YXJ0UG9zaXRpb24iLCJzZWxlY3Rpb25FbmRQb3NpdGlvbiIsImdldEVuZFBvc2l0aW9uIiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJjb250ZW50Q2hhbmdlZCIsImhhc0NvbnRlbnRDaGFuZ2VkIiwic2VsZWN0aW9uQ2hhbmdlZCIsImhhc1NlbGVjdGlvbkNoYW5nZWQiLCJjb250ZW50RGlmZmVyZW50VG9QcmV2aW91c0NvbnRlbnQiLCJnZXRQcmV2aW91c1NlbGVjdGlvbiIsInNlbGVjdGlvbkRpZmZlcmVudFRvUHJldmlvdXNTZWxlY3Rpb24iLCJpc0RpZmZlcmVudFRvIiwiYWN0aXZhdGUiLCJ3aW5kb3ciLCJvbiIsImFkZENsYXNzIiwiZGVhY3RpdmF0ZSIsIm9mZiIsInJlbW92ZUNsYXNzIiwib25CbHVyIiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvZmZCbHVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uRm9jdXMiLCJvZmZGb2N1cyIsIm9uU2Nyb2xsIiwib2ZmU2Nyb2xsIiwib25DaGFuZ2UiLCJjaGFuZ2VIYW5kbGVyIiwib2ZmQ2hhbmdlIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZXZlbnRMaXN0ZW5lcnMiLCJmaW5kRXZlbnRMaXN0ZW5lcnMiLCJmb3JFYWNoIiwiZXZlbnRMaXN0ZW5lciIsImhhbmRsZXJFbGVtZW50IiwiY2FsbCIsImdldFN0YXRlIiwic2V0UmVhZE9ubHkiLCJ1cGRhdGVTdGF0ZSIsInNldEluaXRpYWxTdGF0ZSIsInNldFN0YXRlIiwiZGlkTW91bnQiLCJwcm9wZXJ0aWVzIiwid2lsbFVubW91bnQiLCJpbml0aWFsaXNlIiwiRWxlbWVudCIsInRhZ05hbWUiLCJpZ25vcmVkUHJvcGVydGllcyIsImRlZmF1bHRQcm9wZXJ0aWVzIiwiY2xhc3NOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQW1CcUJBOzs7b0JBakJ1Qjs4REFFdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV0QixJQUFRQyxrQkFTNEJDLGdCQUFVLENBVHRDRCxpQkFDQ0UsbUJBUTJCRCxnQkFBVSxDQVJyQ0Msa0JBQ0FDLG1CQU8yQkYsZ0JBQVUsQ0FQckNFLGtCQUNBQyxvQkFNMkJILGdCQUFVLENBTnJDRyxtQkFDQUMsb0JBSzJCSixnQkFBVSxDQUxyQ0ksbUJBQ0FDLHFCQUkyQkwsZ0JBQVUsQ0FKckNLLG9CQUNBQyxxQkFHMkJOLGdCQUFVLENBSHJDTSxvQkFDQUMsdUJBRTJCUCxnQkFBVSxDQUZyQ08sc0JBQ0FDLHVCQUMyQlIsZ0JBQVUsQ0FEckNRLHNCQUNBQyx5QkFBMkJULGdCQUFVLENBQXJDUztBQUVULElBQU1DLFFBQVEsU0FBQ0M7V0FBU0MsV0FBV0QsTUFBTTtHQUFJLEdBQUc7QUFFakMsSUFBQSxBQUFNYiw2QkFBTjtjQUFNQTs4QkFBQUE7YUFBQUE7OEJBQUFBOzs7UUFDbkJlLCtDQUFBQSx1QkFBc0IsU0FBQ0MsT0FBT0MsU0FBU0MsV0FBV0MsUUFBVztZQUMzRCxJQUFNQyxXQUFXLE1BQUtDLFVBQVU7WUFFaEMsSUFBSUQsVUFBVTtnQkFDWixJQUFNRSxrQkFB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
558
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yaWNoVGV4dGFyZWEuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgeyB3aW5kb3csIEVsZW1lbnQsIGV2ZW50VHlwZXMgfSBmcm9tIFwiZWFzeVwiO1xyXG5cclxuaW1wb3J0IFNlbGVjdGlvbiBmcm9tIFwiLi9zZWxlY3Rpb25cIlxyXG5cclxuY29uc3QgeyBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIElOUFVUX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIENIQU5HRV9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgS0VZRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRVVQX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgIE1PVVNFRE9XTl9FVkVOVF9UWVBFLFxyXG4gICAgICAgICBNT1VTRU1PVkVfRVZFTlRfVFlQRSxcclxuICAgICAgICAgQ09OVEVYVE1FTlVfRVZFTlRfVFlQRSB9ID0gZXZlbnRUeXBlcztcclxuXHJcbmNvbnN0IGRlZmVyID0gKGZ1bmMpID0+IHNldFRpbWVvdXQoZnVuYywgMSk7IC8vL1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmljaFRleHRhcmVhIGV4dGVuZHMgRWxlbWVudCB7XHJcbiAgaW50ZXJtZWRpYXRlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpID0+IHtcclxuICAgIGNvbnN0IHJlYWRPbmx5ID0gdGhpcy5pc1JlYWRPbmx5KCk7XHJcblxyXG4gICAgaWYgKHJlYWRPbmx5KSB7XHJcbiAgICAgIGNvbnN0IHByZXZpb3VzQ29udGVudCA9IHRoaXMuZ2V0UHJldmlvdXNDb250ZW50KCksXHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBwcmV2aW91c0NvbnRlbnQ7ICAvLy9cclxuXHJcbiAgICAgIHRoaXMuc2V0Q29udGVudChjb250ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5oYXNDaGFuZ2VkKCk7XHJcblxyXG4gICAgaWYgKGNoYW5nZWQgfHwgZm9yY2VkKSB7XHJcbiAgICAgIHRoaXMuY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgZXZlbnQsIGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKSxcclxuICAgICAgICAgIHNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBwcmV2aW91c0NvbnRlbnQgPSBjb250ZW50LCAgLy8vXHJcbiAgICAgICAgICBwcmV2aW91c1NlbGVjdGlvbiA9IHNlbGVjdGlvbjsgIC8vL1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNDb250ZW50KHByZXZpb3VzQ29udGVudCk7XHJcbiAgICB0aGlzLnNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIG1vdXNlRG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IGZhbHNlLFxyXG4gICAgICAgICAgbW91c2VEb3duID0gdHJ1ZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuc2V0TW91c2VEb3duKG1vdXNlRG93bik7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4gdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUsIGZvcmNlZCkpO1xyXG4gIH1cclxuXHJcbiAgbW91c2VNb3ZlSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZm9yY2VkID0gZmFsc2UsXHJcbiAgICAgICAgICBtb3VzZURvd24gPSB0aGlzLmlzTW91c2VEb3duKCksXHJcbiAgICAgICAgICBldmVudFRZcGUgPSBDSEFOR0VfRVZFTlRfVFlQRTtcclxuXHJcbiAgICBpZiAobW91c2VEb3duKSB7XHJcbiAgICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUWXBlLCBmb3JjZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW91c2VVcEhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1vdXNlRG93biA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuc2V0TW91c2VEb3duKG1vdXNlRG93bik7XHJcbiAgfTtcclxuXHJcbiAga2V5RG93bkhhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IGZhbHNlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgZGVmZXIoKCkgPT4gdGhpcy5pbnRlcm1lZGlhdGVIYW5kbGVyKGV2ZW50LCBlbGVtZW50LCBldmVudFR5cGUsIGZvcmNlZCkpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSBmYWxzZSxcclxuICAgICAgICAgIGV2ZW50VHlwZSA9IENIQU5HRV9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpO1xyXG4gIH1cclxuXHJcbiAgc2Nyb2xsSGFuZGxlciA9IChldmVudCwgZWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gU0NST0xMX0VWRU5UX1RZUEU7XHJcblxyXG4gICAgdGhpcy5jYWxsSGFuZGxlcnMoZXZlbnRUeXBlLCBldmVudCwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBmb2N1c0hhbmRsZXIgPSAoZXZlbnQsIGVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IGZvcmNlZCA9IHRydWUsXHJcbiAgICAgICAgICBldmVudFR5cGUgPSBGT0NVU19FVkVOVF9UWVBFO1xyXG5cclxuICAgIGRlZmVyKCgpID0+IHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpKTtcclxuICB9XHJcblxyXG4gIGJsdXJIYW5kbGVyID0gKGV2ZW50LCBlbGVtZW50KSA9PiB7XHJcbiAgICBjb25zdCBmb3JjZWQgPSB0cnVlLFxyXG4gICAgICAgICAgZXZlbnRUeXBlID0gQkxVUl9FVkVOVF9UWVBFO1xyXG5cclxuICAgIHRoaXMuaW50ZXJtZWRpYXRlSGFuZGxlcihldmVudCwgZWxlbWVudCwgZXZlbnRUeXBlLCBmb3JjZWQpO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmUoKSB7XHJcbiAgICBjb25zdCBhY3RpdmUgPSB0aGlzLmhhc0NsYXNzKFwiYWN0aXZlXCIpO1xyXG5cclxuICAgIHJldHVybiBhY3RpdmU7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZW50KCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgeyB2YWx1ZSB9ID0gZG9tRWxlbWVudCxcclxuICAgICAgICAgIGNvbnRlbnQgPSB2YWx1ZTsgIC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50O1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gU2VsZWN0aW9uLmZyb21ET01FbGVtZW50KGRvbUVsZW1lbnQpO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBzZXRDb250ZW50KGNvbnRlbnQpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gY29udGVudCwgIC8vL1xyXG4gICAgICAgICAgZG9tRWxlbWVudCA9IHRoaXMuZ2V0RE9NRWxlbWVudCgpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24oZG9tRWxlbWVudCwge1xyXG4gICAgICB2YWx1ZVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGlvbihzZWxlY3Rpb24pIHtcclxuICAgIGNvbnN0IHNlbGVjdGlvblN0YXJ0UG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0U3RhcnRQb3NpdGlvbigpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kUG9zaXRpb24gPSBzZWxlY3Rpb24uZ2V0RW5kUG9zaXRpb24oKSxcclxuICAgICAgICAgIHNlbGVjdGlvblN0YXJ0ID0gc2VsZWN0aW9uU3RhcnRQb3NpdGlvbiwgIC8vL1xyXG4gICAgICAgICAgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uRW5kUG9zaXRpb24sICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLCAgLy8vXHJcbiAgICAgICAgICBkb21FbGVtZW50ID0gdGhpcy5nZXRET01FbGVtZW50KCk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XHJcbiAgICAgIHNlbGVjdGlvblN0YXJ0LFxyXG4gICAgICBzZWxlY3Rpb25FbmRcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuc2V0UHJldmlvdXNTZWxlY3Rpb24ocHJldmlvdXNTZWxlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGNvbnRlbnRDaGFuZ2VkID0gdGhpcy5oYXNDb250ZW50Q2hhbmdlZCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHRoaXMuaGFzU2VsZWN0aW9uQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgY2hhbmdlZCA9IChjb250ZW50Q2hhbmdlZCB8fCBzZWxlY3Rpb25DaGFuZ2VkKTtcclxuXHJcbiAgICByZXR1cm4gY2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc0NvbnRlbnRDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gdGhpcy5nZXRQcmV2aW91c0NvbnRlbnQoKSxcclxuICAgICAgICAgIGNvbnRlbnREaWZmZXJlbnRUb1ByZXZpb3VzQ29udGVudCA9IChjb250ZW50ICE9PSBwcmV2aW91c0NvbnRlbnQpLFxyXG4gICAgICAgICAgY29udGVudENoYW5nZWQgPSBjb250ZW50RGlmZmVyZW50VG9QcmV2aW91c0NvbnRlbnQ7IC8vL1xyXG5cclxuICAgIHJldHVybiBjb250ZW50Q2hhbmdlZDtcclxuICB9XHJcblxyXG4gIGhhc1NlbGVjdGlvbkNoYW5nZWQoKSB7XHJcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpLFxyXG4gICAgICAgICAgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLmdldFByZXZpb3VzU2VsZWN0aW9uKCksXHJcbiAgICAgICAgICBzZWxlY3Rpb25EaWZmZXJlbnRUb1ByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uLmlzRGlmZmVyZW50VG8ocHJldmlvdXNTZWxlY3Rpb24pLFxyXG4gICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZCA9IHNlbGVjdGlvbkRpZmZlcmVudFRvUHJldmlvdXNTZWxlY3Rpb247IC8vL1xyXG5cclxuICAgIHJldHVybiBzZWxlY3Rpb25DaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZhdGUoKSB7XHJcbiAgICBjb25zdCBtb3VzZURvd24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIHdpbmRvdy5vbihgJHtCTFVSX0VWRU5UX1RZUEV9ICR7TU9VU0VVUF9FVkVOVF9UWVBFfSAke0NPTlRFWFRNRU5VX0VWRU5UX1RZUEV9YCwgdGhpcy5tb3VzZVVwSGFuZGxlciwgdGhpcyk7IC8vL1xyXG5cclxuICAgIHRoaXMub24oTU9VU0VET1dOX0VWRU5UX1RZUEUsIHRoaXMubW91c2VEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihNT1VTRU1PVkVfRVZFTlRfVFlQRSwgdGhpcy5tb3VzZU1vdmVIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEtFWURPV05fRVZFTlRfVFlQRSwgdGhpcy5rZXlEb3duSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihJTlBVVF9FVkVOVF9UWVBFLCB0aGlzLmlucHV0SGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vbihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEZPQ1VTX0VWRU5UX1RZUEUsIHRoaXMuZm9jdXNIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9uKEJMVVJfRVZFTlRfVFlQRSwgdGhpcy5ibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcclxuICB9XHJcblxyXG4gIGRlYWN0aXZhdGUoKSB7XHJcbiAgICBjb25zdCBtb3VzZURvd24gPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnNldE1vdXNlRG93bihtb3VzZURvd24pO1xyXG5cclxuICAgIHdpbmRvdy5vZmYoYCR7QkxVUl9FVkVOVF9UWVBFfSAke01PVVNFVVBfRVZFTlRfVFlQRX0gJHtDT05URVhUTUVOVV9FVkVOVF9UWVBFfWAsIHRoaXMubW91c2VVcEhhbmRsZXIsIHRoaXMpOyAvLy9cclxuXHJcbiAgICB0aGlzLm9mZihNT1VTRURPV05fRVZFTlRfVFlQRSwgdGhpcy5tb3VzZURvd25IYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihNT1VTRU1PVkVfRVZFTlRfVFlQRSwgdGhpcy5tb3VzZU1vdmVIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihLRVlET1dOX0VWRU5UX1RZUEUsIHRoaXMua2V5RG93bkhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIHRoaXMub2ZmKElOUFVUX0VWRU5UX1RZUEUsIHRoaXMuaW5wdXRIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihTQ1JPTExfRVZFTlRfVFlQRSwgdGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLm9mZihGT0NVU19FVkVOVF9UWVBFLCB0aGlzLmZvY3VzSGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgdGhpcy5vZmYoQkxVUl9FVkVOVF9UWVBFLCB0aGlzLmJsdXJIYW5kbGVyLCB0aGlzKTtcclxuXHJcbiAgICB0aGlzLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGJsdXJIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBCTFVSX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZkJsdXIoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEJMVVJfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhibHVySGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gRk9DVVNfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBibHVySGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgb2ZmRm9jdXMoYmx1ckhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IEZPQ1VTX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gYmx1ckhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2Nyb2xsKHNjcm9sbEhhbmRsZXIsIGVsZW1lbnQpIHtcclxuICAgIGNvbnN0IGV2ZW50VHlwZSA9IFNDUk9MTF9FVkVOVF9UWVBFLFxyXG4gICAgICAgICAgaGFuZGxlciA9IHNjcm9sbEhhbmRsZXI7ICAvLy9cclxuXHJcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBoYW5kbGVyLCBlbGVtZW50KTtcclxuICB9XHJcblxyXG4gIG9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBTQ1JPTExfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBzY3JvbGxIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShjaGFuZ2VIYW5kbGVyLCBlbGVtZW50KSB7XHJcbiAgICBjb25zdCBldmVudFR5cGUgPSBDSEFOR0VfRVZFTlRfVFlQRSxcclxuICAgICAgICAgIGhhbmRsZXIgPSBjaGFuZ2VIYW5kbGVyOyAgLy8vXHJcblxyXG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlciwgZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBvZmZDaGFuZ2UoY2hhbmdlSGFuZGxlciwgZWxlbWVudCkge1xyXG4gICAgY29uc3QgZXZlbnRUeXBlID0gQ0hBTkdFX0VWRU5UX1RZUEUsXHJcbiAgICAgICAgICBoYW5kbGVyID0gY2hhbmdlSGFuZGxlcjsgIC8vL1xyXG5cclxuICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGhhbmRsZXIsIGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgY2FsbEhhbmRsZXJzKGV2ZW50VHlwZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XHJcbiAgICBjb25zdCBldmVudExpc3RlbmVycyA9IHRoaXMuZmluZEV2ZW50TGlzdGVuZXJzKGV2ZW50VHlwZSk7XHJcblxyXG4gICAgZXZlbnRMaXN0ZW5lcnMuZm9yRWFjaCgoZXZlbnRMaXN0ZW5lcikgPT4ge1xyXG4gICAgICBjb25zdCB7IGhhbmRsZXIsIGVsZW1lbnQ6IGhhbmRsZXJFbGVtZW50IH0gPSBldmVudExpc3RlbmVyLFxyXG4gICAgICAgICAgICBlbGVtZW50ID0gdGhpczsgLy8vXHJcblxyXG4gICAgICBpZiAoKGhhbmRsZXIgIT09IHRoaXMuYmx1ckhhbmRsZXIpICYmIChoYW5kbGVyICE9PSB0aGlzLmZvY3VzSGFuZGxlcikgJiYgKGhhbmRsZXIgIT09IHRoaXMuc2Nyb2xsSGFuZGxlcikpIHtcclxuICAgICAgICBoYW5kbGVyLmNhbGwoaGFuZGxlckVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cywgZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNSZWFkT25seSgpIHtcclxuICAgIGNvbnN0IHsgcmVhZE9ubHkgfSA9IHRoaXMuZ2V0U3RhdGUoKTtcclxuXHJcbiAgICByZXR1cm4gcmVhZE9ubHk7XHJcbiAgfVxyXG5cclxuICBpc01vdXNlRG93bigpIHtcclxuICAgIGNvbnN0IHsgbW91c2VEb3duIH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIG1vdXNlRG93bjtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzQ29udGVudCgpIHtcclxuICAgIGNvbnN0IHsgcHJldmlvdXNDb250ZW50IH0gPSB0aGlzLmdldFN0YXRlKCk7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzQ29udGVudDtcclxuICB9XHJcblxyXG4gIGdldFByZXZpb3VzU2VsZWN0aW9uKCkge1xyXG4gICAgY29uc3QgeyBwcmV2aW91c1NlbGVjdGlvbiB9ID0gdGhpcy5nZXRTdGF0ZSgpO1xyXG5cclxuICAgIHJldHVybiBwcmV2aW91c1NlbGVjdGlvbjtcclxuICB9XHJcblxyXG4gIHNldFJlYWRPbmx5KHJlYWRPbmx5KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcmVhZE9ubHlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0TW91c2VEb3duKG1vdXNlRG93bikge1xyXG4gICAgdGhpcy51cGRhdGVTdGF0ZSh7XHJcbiAgICAgIG1vdXNlRG93blxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNDb250ZW50XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldFByZXZpb3VzU2VsZWN0aW9uKHByZXZpb3VzU2VsZWN0aW9uKSB7XHJcbiAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcclxuICAgICAgcHJldmlvdXNTZWxlY3Rpb25cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0SW5pdGlhbFN0YXRlKCkge1xyXG4gICAgY29uc3QgcmVhZE9ubHkgPSBmYWxzZSxcclxuICAgICAgICAgIG1vdXNlRG93biA9IGZhbHNlLFxyXG4gICAgICAgICAgcHJldmlvdXNDb250ZW50ID0gbnVsbCxcclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgcmVhZE9ubHksXHJcbiAgICAgIG1vdXNlRG93bixcclxuICAgICAgcHJldmlvdXNDb250ZW50LFxyXG4gICAgICBwcmV2aW91c1NlbGVjdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgb25DaGFuZ2UsIG9uU2Nyb2xsLCBvbkZvY3VzLCBvbkJsdXIgfSA9IHRoaXMucHJvcGVydGllcyxcclxuICAgICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgICAgc2Nyb2xsSGFuZGxlciA9IG9uU2Nyb2xsLCAvLy9cclxuICAgICAgICAgICAgZm9jdXNIYW5kbGVyID0gb25Gb2N1cywgLy8vXHJcbiAgICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyOyAvLy9cclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub25DaGFuZ2UoY2hhbmdlSGFuZGxlciwgdGhpcyk7XHJcbiAgICBzY3JvbGxIYW5kbGVyICYmIHRoaXMub25TY3JvbGwoc2Nyb2xsSGFuZGxlciwgdGhpcyk7XHJcbiAgICBmb2N1c0hhbmRsZXIgJiYgdGhpcy5vbkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcbiAgICBibHVySGFuZGxlciAmJiB0aGlzLm9uQmx1cihibHVySGFuZGxlciwgdGhpcyk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpLFxyXG4gICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKSxcclxuICAgICAgICAgIHByZXZpb3VzQ29udGVudCA9IGNvbnRlbnQsICAvLy9cclxuICAgICAgICAgIHByZXZpb3VzU2VsZWN0aW9uID0gc2VsZWN0aW9uOyAgLy8vXHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c1NlbGVjdGlvbihwcmV2aW91c1NlbGVjdGlvbik7XHJcblxyXG4gICAgdGhpcy5zZXRQcmV2aW91c0NvbnRlbnQocHJldmlvdXNDb250ZW50KTtcclxuICB9XHJcblxyXG4gIHdpbGxVbm1vdW50KCkge1xyXG4gICAgY29uc3QgeyBvbkNoYW5nZSwgb25TY3JvbGwsIG9uRm9jdXMsIG9uQmx1ciB9ID0gdGhpcy5wcm9wZXJ0aWVzLFxyXG4gICAgICAgICAgY2hhbmdlSGFuZGxlciA9IG9uQ2hhbmdlLCAvLy9cclxuICAgICAgICAgIHNjcm9sbEhhbmRsZXIgPSBvblNjcm9sbCwgLy8vXHJcbiAgICAgICAgICBmb2N1c0hhbmRsZXIgPSBvbkZvY3VzLCAvLy9cclxuICAgICAgICAgIGJsdXJIYW5kbGVyID0gb25CbHVyOyAvLy9cclxuXHJcbiAgICBjaGFuZ2VIYW5kbGVyICYmIHRoaXMub2ZmQ2hhbmdlKGNoYW5nZUhhbmRsZXIsIHRoaXMpO1xyXG4gICAgc2Nyb2xsSGFuZGxlciAmJiB0aGlzLm9mZlNjcm9sbChzY3JvbGxIYW5kbGVyLCB0aGlzKTtcclxuICAgIGZvY3VzSGFuZGxlciAmJiB0aGlzLm9mZkZvY3VzKGZvY3VzSGFuZGxlciwgdGhpcyk7XHJcbiAgICBibHVySGFuZGxlciAmJiB0aGlzLm9mZkJsdXIoYmx1ckhhbmRsZXIsIHRoaXMpO1xyXG5cclxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuXHJcbiAgICBpZiAoYWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGlzZSgpIHtcclxuICAgIHRoaXMuc2V0SW5pdGlhbFN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdGFnTmFtZSA9IFwidGV4dGFyZWFcIjtcclxuXHJcbiAgc3RhdGljIGlnbm9yZWRQcm9wZXJ0aWVzID0gW1xyXG4gICAgXCJvbkNoYW5nZVwiLFxyXG4gICAgXCJvblNjcm9sbFwiLFxyXG4gICAgXCJvbkZvY3VzXCIsXHJcbiAgICBcIm9uQmx1clwiXHJcbiAgXTtcclxuXHJcbiAgc3RhdGljIGRlZmF1bHRQcm9wZXJ0aWVzID0ge1xyXG4gICAgY2xhc3NOYW1lOiBcInJpY2hcIlxyXG4gIH07XHJcbn1cclxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJSaWNoVGV4dGFyZWEiLCJCTFVSX0VWRU5UX1RZUEUiLCJldmVudFR5cGVzIiwiSU5QVVRfRVZFTlRfVFlQRSIsIkZPQ1VTX0VWRU5UX1RZUEUiLCJDSEFOR0VfRVZFTlRfVFlQRSIsIlNDUk9MTF9FVkVOVF9UWVBFIiwiS0VZRE9XTl9FVkVOVF9UWVBFIiwiTU9VU0VVUF9FVkVOVF9UWVBFIiwiTU9VU0VET1dOX0VWRU5UX1RZUEUiLCJNT1VTRU1PVkVfRVZFTlRfVFlQRSIsIkNPTlRFWFRNRU5VX0VWRU5UX1RZUEUiLCJkZWZlciIsImZ1bmMiLCJzZXRUaW1lb3V0IiwiaW50ZXJtZWRpYXRlSGFuZGxlciIsImV2ZW50IiwiZWxlbWVudCIsImV2ZW50VHlwZSIsImZvcmNlZCIsInJlYWRPbmx5IiwiaXNSZWFkT25seSIsInByZXZpb3VzQ29udGVudCIsImdldFByZXZpb3VzQ29udGVudCIsImNvbnRlbnQiLCJzZXRDb250ZW50IiwiY2hhbmdlZCIsImhhc0NoYW5nZWQiLCJjYWxsSGFuZGxlcnMiLCJnZXRDb250ZW50Iiwic2VsZWN0aW9uIiwiZ2V0U2VsZWN0aW9uIiwicHJldmlvdXNTZWxlY3Rpb24iLCJzZXRQcmV2aW91c0NvbnRlbnQiLCJzZXRQcmV2aW91c1NlbGVjdGlvbiIsIm1vdXNlRG93bkhhbmRsZXIiLCJtb3VzZURvd24iLCJzZXRNb3VzZURvd24iLCJtb3VzZU1vdmVIYW5kbGVyIiwiaXNNb3VzZURvd24iLCJldmVudFRZcGUiLCJtb3VzZVVwSGFuZGxlciIsImtleURvd25IYW5kbGVyIiwiaW5wdXRIYW5kbGVyIiwic2Nyb2xsSGFuZGxlciIsImZvY3VzSGFuZGxlciIsImJsdXJIYW5kbGVyIiwiaXNBY3RpdmUiLCJhY3RpdmUiLCJoYXNDbGFzcyIsImRvbUVsZW1lbnQiLCJnZXRET01FbGVtZW50IiwidmFsdWUiLCJTZWxlY3Rpb24iLCJmcm9tRE9NRWxlbWVudCIsIk9iamVjdCIsImFzc2lnbiIsInNldFNlbGVjdGlvbiIsInNlbGVjdGlvblN0YXJ0UG9zaXRpb24iLCJnZXRTdGFydFBvc2l0aW9uIiwic2VsZWN0aW9uRW5kUG9zaXRpb24iLCJnZXRFbmRQb3NpdGlvbiIsInNlbGVjdGlvblN0YXJ0Iiwic2VsZWN0aW9uRW5kIiwiY29udGVudENoYW5nZWQiLCJoYXNDb250ZW50Q2hhbmdlZCIsInNlbGVjdGlvbkNoYW5nZWQiLCJoYXNTZWxlY3Rpb25DaGFuZ2VkIiwiY29udGVudERpZmZlcmVudFRvUHJldmlvdXNDb250ZW50IiwiZ2V0UHJldmlvdXNTZWxlY3Rpb24iLCJzZWxlY3Rpb25EaWZmZXJlbnRUb1ByZXZpb3VzU2VsZWN0aW9uIiwiaXNEaWZmZXJlbnRUbyIsImFjdGl2YXRlIiwid2luZG93Iiwib24iLCJhZGRDbGFzcyIsImRlYWN0aXZhdGUiLCJvZmYiLCJyZW1vdmVDbGFzcyIsIm9uQmx1ciIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib2ZmQmx1ciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvbkZvY3VzIiwib2ZmRm9jdXMiLCJvblNjcm9sbCIsIm9mZlNjcm9sbCIsIm9uQ2hhbmdlIiwiY2hhbmdlSGFuZGxlciIsIm9mZkNoYW5nZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsImV2ZW50TGlzdGVuZXJzIiwiZmluZEV2ZW50TGlzdGVuZXJzIiwiZm9yRWFjaCIsImV2ZW50TGlzdGVuZXIiLCJoYW5kbGVyRWxlbWVudCIsImNhbGwiLCJnZXRTdGF0ZSIsInNldFJlYWRPbmx5IiwidXBkYXRlU3RhdGUiLCJzZXRJbml0aWFsU3RhdGUiLCJzZXRTdGF0ZSIsImRpZE1vdW50IiwicHJvcGVydGllcyIsIndpbGxVbm1vdW50IiwiaW5pdGlhbGlzZSIsIkVsZW1lbnQiLCJ0YWdOYW1lIiwiaWdub3JlZFByb3BlcnRpZXMiLCJkZWZhdWx0UHJvcGVydGllcyIsImNsYXNzTmFtZSJdLCJt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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "easy-richtextarea",
3
3
  "author": "James Smith",
4
- "version": "3.0.147",
4
+ "version": "3.0.149",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/easy-richtextarea",
7
7
  "description": "A textarea element that handles and hands off events well.",
@@ -12,5 +12,11 @@ export default withStyle(RichTextarea)`
12
12
  padding: 0.25rem;
13
13
  font-size: 1.2rem;
14
14
  font-family: monospace;
15
+
16
+ display: none;
17
+
18
+ .active {
19
+ display: block;
20
+ }
15
21
 
16
22
  `;
@@ -2,20 +2,25 @@
2
2
 
3
3
  import RichTextarea from "./richTextarea";
4
4
 
5
+ const content = `Rule (blah)
6
+ Conclusion
7
+ A`,
8
+ readOnly = true,
9
+ richTextarea =
10
+
11
+ <RichTextarea onChange={changeHandler} onScroll={scrollHandler} onFocus={focusHandler} onBlur={blurHandler} />
12
+
13
+ ;
14
+
15
+ richTextarea.setContent(content);
16
+ richTextarea.setReadOnly(readOnly);
17
+
18
+ richTextarea.activate();
19
+
5
20
  const View = (properties) =>
6
21
 
7
22
  <div className="view">
8
- <RichTextarea onChange={changeHandler}
9
- onScroll={scrollHandler}
10
- onFocus={focusHandler}
11
- onBlur={blurHandler}
12
- readOnly
13
- active
14
- >
15
- {`Rule (blah)
16
- Conclusion
17
- A`}
18
- </RichTextarea>
23
+ {richTextarea}
19
24
  </div>
20
25
 
21
26
  ;
@@ -358,7 +358,7 @@ export default class RichTextarea extends Element {
358
358
  }
359
359
 
360
360
  didMount() {
361
- const { onChange, onScroll, onFocus, onBlur, readOnly = false, active = false } = this.properties,
361
+ const { onChange, onScroll, onFocus, onBlur } = this.properties,
362
362
  changeHandler = onChange, ///
363
363
  scrollHandler = onScroll, ///
364
364
  focusHandler = onFocus, ///
@@ -377,12 +377,6 @@ export default class RichTextarea extends Element {
377
377
  this.setPreviousSelection(previousSelection);
378
378
 
379
379
  this.setPreviousContent(previousContent);
380
-
381
- this.setReadOnly(readOnly);
382
-
383
- if (active) {
384
- this.activate();
385
- }
386
380
  }
387
381
 
388
382
  willUnmount() {
@@ -414,9 +408,7 @@ export default class RichTextarea extends Element {
414
408
  "onChange",
415
409
  "onScroll",
416
410
  "onFocus",
417
- "onBlur",
418
- "active",
419
- "readOnly"
411
+ "onBlur"
420
412
  ];
421
413
 
422
414
  static defaultProperties = {