occam-parsers 23.3.85 → 23.3.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -36,6 +36,9 @@ _export(exports, {
36
36
  get Rule () {
37
37
  return _rule.default;
38
38
  },
39
+ get State () {
40
+ return _state.default;
41
+ },
39
42
  get TerminalNode () {
40
43
  return _terminal.default;
41
44
  },
@@ -64,6 +67,7 @@ const _rules = /*#__PURE__*/ _interop_require_default(require("./utilities/rules
64
67
  const _parser3 = /*#__PURE__*/ _interop_require_default(require("./utilities/parser"));
65
68
  const _rule = /*#__PURE__*/ _interop_require_default(require("./rule"));
66
69
  const _parts = /*#__PURE__*/ _interop_require_default(require("./parts"));
70
+ const _state = /*#__PURE__*/ _interop_require_default(require("./state"));
67
71
  const _partTypes = /*#__PURE__*/ _interop_require_default(require("./partTypes"));
68
72
  const _partChoice = /*#__PURE__*/ _interop_require_default(require("./partChoice"));
69
73
  const _definition = /*#__PURE__*/ _interop_require_default(require("./definition"));
@@ -76,4 +80,4 @@ function _interop_require_default(obj) {
76
80
  };
77
81
  }
78
82
 
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBCTkZQYXJzZXIgfSBmcm9tIFwiLi9ibmYvcGFyc2VyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJhc2ljUGFyc2VyIH0gZnJvbSBcIi4vYmFzaWMvcGFyc2VyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbW1vblBhcnNlciB9IGZyb20gXCIuL2NvbW1vbi9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ZXN0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3Rlc3RcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcnVsZXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcnVsZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VyVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3BhcnNlclwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhcnRzIH0gZnJvbSBcIi4vcGFydHNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFydFR5cGVzIH0gZnJvbSBcIi4vcGFydFR5cGVzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhcnRDaG9pY2UgfSBmcm9tIFwiLi9wYXJ0Q2hvaWNlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIERlZmluaXRpb24gfSBmcm9tIFwiLi9kZWZpbml0aW9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEVwc2lsb25Ob2RlIH0gZnJvbSBcIi4vbm9kZS90ZXJtaW5hbC9lcHNpbG9uXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFRlcm1pbmFsTm9kZSB9IGZyb20gXCIuL25vZGUvdGVybWluYWxcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTm9uVGVybWluYWxOb2RlIH0gZnJvbSBcIi4vbm9kZS9ub25UZXJtaW5hbFwiO1xuIl0sIm5hbWVzIjpbIkJORlBhcnNlciIsIkJhc2ljUGFyc2VyIiwiQ29tbW9uUGFyc2VyIiwiRGVmaW5pdGlvbiIsIkVwc2lsb25Ob2RlIiwiTm9uVGVybWluYWxOb2RlIiwiUGFydENob2ljZSIsIlBhcnRzIiwiUnVsZSIsIlRlcm1pbmFsTm9kZSIsIm5vZGVNaXhpbnMiLCJwYXJzZXJVdGlsaXRpZXMiLCJwYXJ0VHlwZXMiLCJydWxlc1V0aWxpdGllcyIsInRlc3RVdGlsaXRpZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQUVvQkE7ZUFBQUEsZUFBUzs7UUFDVEM7ZUFBQUEsZ0JBQVc7O1FBQ1hDO2VBQUFBLGdCQUFZOztRQVlaQztlQUFBQSxtQkFBVTs7UUFDVkM7ZUFBQUEsZ0JBQVc7O1FBRVhDO2VBQUFBLG9CQUFlOztRQUpmQztlQUFBQSxtQkFBVTs7UUFGVkM7ZUFBQUEsY0FBSzs7UUFETEM7ZUFBQUEsYUFBSTs7UUFNSkM7ZUFBQUEsaUJBQVk7O1FBWlpDO2VBQUFBLGFBQVU7O1FBSVZDO2VBQUFBLGdCQUFlOztRQUlmQztlQUFBQSxrQkFBUzs7UUFMVEM7ZUFBQUEsY0FBYzs7UUFEZEM7ZUFBQUEsYUFBYTs7OytEQU5JO2dFQUNFO2dFQUNDOzZEQUVGOzZEQUVHOzhEQUNDO2dFQUNDOzZEQUVYOzhEQUNDO2tFQUNJO21FQUNDO21FQUNBO2dFQUNDO2lFQUNDO29FQUNHIn0=
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBCTkZQYXJzZXIgfSBmcm9tIFwiLi9ibmYvcGFyc2VyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEJhc2ljUGFyc2VyIH0gZnJvbSBcIi4vYmFzaWMvcGFyc2VyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENvbW1vblBhcnNlciB9IGZyb20gXCIuL2NvbW1vbi9wYXJzZXJcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBub2RlTWl4aW5zIH0gZnJvbSBcIi4vbWl4aW5zL25vZGVcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB0ZXN0VXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3Rlc3RcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcnVsZXNVdGlsaXRpZXMgfSBmcm9tIFwiLi91dGlsaXRpZXMvcnVsZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcGFyc2VyVXRpbGl0aWVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3BhcnNlclwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhcnRzIH0gZnJvbSBcIi4vcGFydHNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgU3RhdGUgfSBmcm9tIFwiLi9zdGF0ZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwYXJ0VHlwZXMgfSBmcm9tIFwiLi9wYXJ0VHlwZXNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUGFydENob2ljZSB9IGZyb20gXCIuL3BhcnRDaG9pY2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRGVmaW5pdGlvbiB9IGZyb20gXCIuL2RlZmluaXRpb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgRXBzaWxvbk5vZGUgfSBmcm9tIFwiLi9ub2RlL3Rlcm1pbmFsL2Vwc2lsb25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGVybWluYWxOb2RlIH0gZnJvbSBcIi4vbm9kZS90ZXJtaW5hbFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwiLi9ub2RlL25vblRlcm1pbmFsXCI7XG4iXSwibmFtZXMiOlsiQk5GUGFyc2VyIiwiQmFzaWNQYXJzZXIiLCJDb21tb25QYXJzZXIiLCJEZWZpbml0aW9uIiwiRXBzaWxvbk5vZGUiLCJOb25UZXJtaW5hbE5vZGUiLCJQYXJ0Q2hvaWNlIiwiUGFydHMiLCJSdWxlIiwiU3RhdGUiLCJUZXJtaW5hbE5vZGUiLCJub2RlTWl4aW5zIiwicGFyc2VyVXRpbGl0aWVzIiwicGFydFR5cGVzIiwicnVsZXNVdGlsaXRpZXMiLCJ0ZXN0VXRpbGl0aWVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFFb0JBO2VBQUFBLGVBQVM7O1FBQ1RDO2VBQUFBLGdCQUFXOztRQUNYQztlQUFBQSxnQkFBWTs7UUFhWkM7ZUFBQUEsbUJBQVU7O1FBQ1ZDO2VBQUFBLGdCQUFXOztRQUVYQztlQUFBQSxvQkFBZTs7UUFKZkM7ZUFBQUEsbUJBQVU7O1FBSFZDO2VBQUFBLGNBQUs7O1FBRExDO2VBQUFBLGFBQUk7O1FBRUpDO2VBQUFBLGNBQUs7O1FBS0xDO2VBQUFBLGlCQUFZOztRQWJaQztlQUFBQSxhQUFVOztRQUlWQztlQUFBQSxnQkFBZTs7UUFLZkM7ZUFBQUEsa0JBQVM7O1FBTlRDO2VBQUFBLGNBQWM7O1FBRGRDO2VBQUFBLGFBQWE7OzsrREFOSTtnRUFDRTtnRUFDQzs2REFFRjs2REFFRzs4REFDQztnRUFDQzs2REFFWDs4REFDQzs4REFDQTtrRUFDSTttRUFDQzttRUFDQTtnRUFDQztpRUFDQztvRUFDRyJ9
@@ -188,6 +188,9 @@ class NonTerminalNode {
188
188
  }
189
189
  return matches;
190
190
  }
191
+ restore(state) {
192
+ ///
193
+ }
191
194
  rewrite(state) {
192
195
  const nonTerminalNode = this; ///
193
196
  return nonTerminalNode;
@@ -226,4 +229,4 @@ function cloneChildNodes(childNodes) {
226
229
  return childNodes;
227
230
  }
228
231
 
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgdHJhbnNwYXJlbnRQcmVjZWRlbmNlIH0gZnJvbSBcIi4uL3ByZWNlZGVuY2VcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNVbnByZWNlZGVudGVkKCkge1xuICAgIGxldCB1bnByZWNlZGVudGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLmNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgIHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVjZWRlbmNlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KSB7XG4gICAgbGV0IHByZWNlZGVuY2VDb21wYXJlcztcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IG51bGwpIHtcbiAgICAgIHByZWNlZGVuY2VDb21wYXJlcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IHRyYW5zcGFyZW50UHJlY2VkZW5jZSkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzID0gY2hpbGROb2RlLmNvbXBhcmVQcmVjZWRlbmNlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLnByZWNlZGVuY2UuY29tcGFyZShwcmVjZWRlbmNlLCBmaXJzdCwgbGFzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpIHtcbiAgICBsZXQgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IHRydWU7XG5cbiAgICBpZiAoKHRoaXMucHJlY2VkZW5jZSAhPT0gbnVsbCkgJiYgKHRoaXMucHJlY2VkZW5jZSAhPT0gdHJhbnNwYXJlbnRQcmVjZWRlbmNlKSkge1xuICAgICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IChtdWx0aXBsaWNpdHkgLSAxKSxcbiAgICAgICAgICAgIGZpcnN0SW5kZXggPSAwO1xuXG4gICAgICBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3QgPSAoaW5kZXggPT09IGxhc3RJbmRleCksXG4gICAgICAgICAgICAgIGZpcnN0ID0gKGluZGV4ID09PSBmaXJzdEluZGV4KSxcbiAgICAgICAgICAgICAgY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzID0gY2hpbGROb2RlLmNvbXBhcmVQcmVjZWRlbmNlKHRoaXMucHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXM7XG4gIH1cblxuICBhc1BhcnNlVHJlZSh0b2tlbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlID0gTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlLmZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpLFxuICAgICAgICAgIHBhcnNlVHJlZSA9IG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZTsgIC8vL1xuXG4gICAgcmV0dXJuIHBhcnNlVHJlZTtcbiAgfVxuXG4gIG1hdGNoKG5vZGUsIGRlcHRoID0gSW5maW5pdHksIGV4YWN0bHkgPSBmYWxzZSkge1xuICAgIGxldCBtYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBub2RlTm9uVGVybWluYWxOb2RlID0gbm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgaWYgKHRoaXMucnVsZU5hbWUgPT09IG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkgPSBub25UZXJtaW5hbE5vZGUuZ2V0T3BhY2l0eSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wYWNpdHkgPT09IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkpIHtcbiAgICAgICAgICBjb25zdCBwcmVjZWRlbmNlID0gdGhpcy5nZXRQcmVjZWRlbmNlKCksXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRQcmVjZWRlbmNlKCk7XG5cbiAgICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgZGVwdGgtLTtcblxuICAgICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoKHRoaXMuY2hpbGROb2Rlcywgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgKGNoaWxkTm9kZSwgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSA9IGNoaWxkTm9kZS5tYXRjaChub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUsIGRlcHRoLCBleGFjdGx5KTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgcmV3cml0ZShzdGF0ZSkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRoaXM7ICAvLy9cblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZm9yRWFjaENoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcblxuICAgIHRoaXMuY2hpbGROb2RlcyA9IG51bGw7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcnVsZU5hbWUgPSB0aGlzLnJ1bGVOYW1lLFxuICAgICAgICAgIGNoaWxkTm9kZXMgPSBjbG9uZUNoaWxkTm9kZXModGhpcy5jaGlsZE5vZGVzKSxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gdGhpcy5wcmVjZWRlbmNlLFxuICAgICAgICAgIG9wYWNpdHkgPSB0aGlzLm9wYWNpdHksXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChvcGFjaXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wYWNpdHkgPSBwcmVjZWRlbmNlOyAvLy9cblxuICAgICAgcHJlY2VkZW5jZSA9IGNoaWxkTm9kZXM7IC8vL1xuXG4gICAgICBjaGlsZE5vZGVzID0gcnVsZU5hbWU7ICAvLy9cblxuICAgICAgcnVsZU5hbWUgPSBDbGFzczsgLy8vXG5cbiAgICAgIENsYXNzID0gTm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oTm9uVGVybWluYWxOb2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG5cbmZ1bmN0aW9uIGNsb25lQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzLm1hcCgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY2xvbmUoKTsgIC8vL1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXM7XG59XG4iXSwibmFtZXMiOlsiTm9uVGVybWluYWxOb2RlIiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm9wYXF1ZSIsIm9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzcGVjaWFsU3ltYm9scyIsInJ1bGVOYW1lIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJwcmVjZWRlbmNlIiwib3BhY2l0eSIsImdldFJ1bGVOYW1lIiwiZ2V0UGFyZW50Tm9kZSIsImdldENoaWxkTm9kZXMiLCJnZXRQcmVjZWRlbmNlIiwiZ2V0T3BhY2l0eSIsInNldFJ1bGVOYW1lIiwic2V0UGFyZW50Tm9kZSIsInNldENoaWxkTm9kZXMiLCJzdGFydEluZGV4IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFkZGVkQ2hpbGROb2RlcyIsInNwbGljZUNoaWxkTm9kZXMiLCJzZXRQcmVjZWRlbmNlIiwic2V0T3BhY2l0eSIsImlzT3BhcXVlIiwiaXNTZW1pT3BhcXVlIiwiaXNUcmFuc3BhcmVudCIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJnZXREZXNjZW5kYW50Tm9kZXMiLCJkZXNjZW5kYW50Tm9kZXMiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VucyIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZm9yd2FyZHNTb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIiwibm9kZSIsImdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiYmFja3dhcmRzU29tZUNoaWxkTm9kZSIsImdldFNpZ25pZmljYW50VG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbnMiLCJmb3JFYWNoIiwiZ2V0TXVsdGlwbGljaXR5IiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIm11bHRpcGxpY2l0eSIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzVW5wcmVjZWRlbnRlZCIsInVucHJlY2VkZW50ZWQiLCJjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzIiwiY29tcGFyZUNoaWxkTm9kZXNQcmVjZWRlbmNlIiwiY29tcGFyZVByZWNlZGVuY2UiLCJmaXJzdCIsImxhc3QiLCJwcmVjZWRlbmNlQ29tcGFyZXMiLCJ0cmFuc3BhcmVudFByZWNlZGVuY2UiLCJldmVyeSIsImNoaWxkTm9kZVByZWNlZGVuY2VDb21wYXJlcyIsImNvbXBhcmUiLCJsYXN0SW5kZXgiLCJmaXJzdEluZGV4IiwiaW5kZXgiLCJhc1BhcnNlVHJlZSIsIm5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIk5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJkZXB0aCIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlT3BhY2l0eSIsIm5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwiY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsInJld3JpdGUiLCJzdGF0ZSIsImRlc3Ryb3kiLCJmb3JFYWNoQ2hpbGROb2RlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNsb25lQ2hpbGROb2RlcyIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc1ByZWNlZGVuY2VBbmRPcGFjaXR5IiwidW5k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
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgbm9kZU1peGlucyBmcm9tIFwiLi4vbWl4aW5zL25vZGVcIjtcbmltcG9ydCBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgZnJvbSBcIi4uL3BhcnNlVHJlZS9ub25UZXJtaW5hbE5vZGVcIjtcblxuaW1wb3J0IHsgdHJhbnNwYXJlbnRQcmVjZWRlbmNlIH0gZnJvbSBcIi4uL3ByZWNlZGVuY2VcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IG9wYXF1ZTogb3BhcXVlU3BlY2lhbFN5bWJvbCAsIHNlbWlPcGFxdWU6IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sIH0gPSBzcGVjaWFsU3ltYm9scztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9uVGVybWluYWxOb2RlIHtcbiAgY29uc3RydWN0b3IocnVsZU5hbWUsIHBhcmVudE5vZGUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHkpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gICAgdGhpcy5wYXJlbnROb2RlID0gcGFyZW50Tm9kZTtcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzO1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGdldFJ1bGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVOYW1lO1xuICB9XG5cbiAgZ2V0UGFyZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlO1xuICB9XG5cbiAgZ2V0Q2hpbGROb2RlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzO1xuICB9XG5cbiAgZ2V0UHJlY2VkZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVjZWRlbmNlO1xuICB9XG5cbiAgZ2V0T3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5vcGFjaXR5O1xuICB9XG5cbiAgc2V0UnVsZU5hbWUocnVsZU5hbWUpIHtcbiAgICB0aGlzLnJ1bGVOYW1lID0gcnVsZU5hbWU7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQcmVjZWRlbmNlKHByZWNlZGVuY2UpIHtcbiAgICB0aGlzLnByZWNlZGVuY2UgPSBwcmVjZWRlbmNlO1xuICB9XG5cbiAgc2V0T3BhY2l0eShvcGFjaXR5KSB7XG4gICAgdGhpcy5vcGFjaXR5ID0gb3BhY2l0eTtcbiAgfVxuXG4gIGlzT3BhcXVlKCkge1xuICAgIGNvbnN0IG9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IG9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIG9wYXF1ZTtcbiAgfVxuXG4gIGlzU2VtaU9wYXF1ZSgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gc2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wpO1xuXG4gICAgcmV0dXJuIHNlbWlPcGFxdWU7XG4gIH1cblxuICBpc1RyYW5zcGFyZW50KCkge1xuICAgIGNvbnN0IHNlbWlPcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBudWxsKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlO1xuICB9XG5cbiAgaXNOb25UZXJtaW5hbE5vZGUoKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdHJ1ZTtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXREZXNjZW5kYW50Tm9kZXMoZGVzY2VuZGFudE5vZGVzKSB7XG4gICAgcmV0dXJuIGRlc2NlbmRhbnROb2RlcztcbiAgfVxuXG4gIGdldEZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuZm9yd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKTtcblxuICAgICAgaWYgKGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpIHtcbiAgICBsZXQgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleDtcblxuICAgIHRoaXMuYmFja3dhcmRzU29tZUNoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gY2hpbGROb2RlOyAvLy9cblxuICAgICAgbGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCA9IG5vZGUuZ2V0TGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAobGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuICB9XG5cbiAgZ2V0U2lnbmlmaWNhbnRUb2tlbnMoc2lnbmlmaWNhbnRUb2tlbnMgPSBbXSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5nZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2Vucyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2lnbmlmaWNhbnRUb2tlbnM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBzaW5ndWxhciA9IChtdWx0aXBsaWNpdHkgPT09IDEpO1xuXG4gICAgcmV0dXJuIHNpbmd1bGFyO1xuICB9XG5cbiAgaXNVbnByZWNlZGVudGVkKCkge1xuICAgIGxldCB1bnByZWNlZGVudGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLmNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgIHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGNvbXBhcmVQcmVjZWRlbmNlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KSB7XG4gICAgbGV0IHByZWNlZGVuY2VDb21wYXJlcztcblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IG51bGwpIHtcbiAgICAgIHByZWNlZGVuY2VDb21wYXJlcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLnByZWNlZGVuY2UgPT09IHRyYW5zcGFyZW50UHJlY2VkZW5jZSkge1xuICAgICAgcHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzID0gY2hpbGROb2RlLmNvbXBhcmVQcmVjZWRlbmNlKHByZWNlZGVuY2UsIGZpcnN0LCBsYXN0KTtcblxuICAgICAgICBpZiAoY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVjZWRlbmNlQ29tcGFyZXMgPSB0aGlzLnByZWNlZGVuY2UuY29tcGFyZShwcmVjZWRlbmNlLCBmaXJzdCwgbGFzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWNlZGVuY2VDb21wYXJlcztcbiAgfVxuXG4gIGNvbXBhcmVDaGlsZE5vZGVzUHJlY2VkZW5jZSgpIHtcbiAgICBsZXQgY2hpbGROb2Rlc1ByZWNlZGVuY2VDb21wYXJlcyA9IHRydWU7XG5cbiAgICBpZiAoKHRoaXMucHJlY2VkZW5jZSAhPT0gbnVsbCkgJiYgKHRoaXMucHJlY2VkZW5jZSAhPT0gdHJhbnNwYXJlbnRQcmVjZWRlbmNlKSkge1xuICAgICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICAgIGxhc3RJbmRleCA9IChtdWx0aXBsaWNpdHkgLSAxKSxcbiAgICAgICAgICAgIGZpcnN0SW5kZXggPSAwO1xuXG4gICAgICBjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzID0gdGhpcy5jaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3QgPSAoaW5kZXggPT09IGxhc3RJbmRleCksXG4gICAgICAgICAgICAgIGZpcnN0ID0gKGluZGV4ID09PSBmaXJzdEluZGV4KSxcbiAgICAgICAgICAgICAgY2hpbGROb2RlUHJlY2VkZW5jZUNvbXBhcmVzID0gY2hpbGROb2RlLmNvbXBhcmVQcmVjZWRlbmNlKHRoaXMucHJlY2VkZW5jZSwgZmlyc3QsIGxhc3QpO1xuXG4gICAgICAgIGlmIChjaGlsZE5vZGVQcmVjZWRlbmNlQ29tcGFyZXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkTm9kZXNQcmVjZWRlbmNlQ29tcGFyZXM7XG4gIH1cblxuICBhc1BhcnNlVHJlZSh0b2tlbnMpIHtcbiAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlID0gTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlLmZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMobm9uVGVybWluYWxOb2RlLCB0b2tlbnMpLFxuICAgICAgICAgIHBhcnNlVHJlZSA9IG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZTsgIC8vL1xuXG4gICAgcmV0dXJuIHBhcnNlVHJlZTtcbiAgfVxuXG4gIG1hdGNoKG5vZGUsIGRlcHRoID0gSW5maW5pdHksIGV4YWN0bHkgPSBmYWxzZSkge1xuICAgIGxldCBtYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBub2RlTm9uVGVybWluYWxOb2RlID0gbm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgaWYgKHRoaXMucnVsZU5hbWUgPT09IG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkgPSBub25UZXJtaW5hbE5vZGUuZ2V0T3BhY2l0eSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wYWNpdHkgPT09IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkpIHtcbiAgICAgICAgICBjb25zdCBwcmVjZWRlbmNlID0gdGhpcy5nZXRQcmVjZWRlbmNlKCksXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRQcmVjZWRlbmNlKCk7XG5cbiAgICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgZGVwdGgtLTtcblxuICAgICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoKHRoaXMuY2hpbGROb2Rlcywgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgKGNoaWxkTm9kZSwgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSA9IGNoaWxkTm9kZS5tYXRjaChub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUsIGRlcHRoLCBleGFjdGx5KTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgcmVzdG9yZShzdGF0ZSkge1xuICAgIC8vL1xuICB9XG5cbiAgcmV3cml0ZShzdGF0ZSkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRoaXM7ICAvLy9cblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZm9yRWFjaENoaWxkTm9kZSgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuZGVzdHJveSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5wYXJlbnROb2RlID0gbnVsbDtcblxuICAgIHRoaXMuY2hpbGROb2RlcyA9IG51bGw7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcnVsZU5hbWUgPSB0aGlzLnJ1bGVOYW1lLFxuICAgICAgICAgIGNoaWxkTm9kZXMgPSBjbG9uZUNoaWxkTm9kZXModGhpcy5jaGlsZE5vZGVzKSxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gdGhpcy5wcmVjZWRlbmNlLFxuICAgICAgICAgIG9wYWNpdHkgPSB0aGlzLm9wYWNpdHksXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIHByZWNlZGVuY2UsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChvcGFjaXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wYWNpdHkgPSBwcmVjZWRlbmNlOyAvLy9cblxuICAgICAgcHJlY2VkZW5jZSA9IGNoaWxkTm9kZXM7IC8vL1xuXG4gICAgICBjaGlsZE5vZGVzID0gcnVsZU5hbWU7ICAvLy9cblxuICAgICAgcnVsZU5hbWUgPSBDbGFzczsgLy8vXG5cbiAgICAgIENsYXNzID0gTm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5LCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oTm9uVGVybWluYWxOb2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG5cbmZ1bmN0aW9uIGNsb25lQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzLm1hcCgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY2xvbmUoKTsgIC8vL1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXM7XG59XG4iXSwibmFtZXMiOlsiTm9uVGVybWluYWxOb2RlIiwibWF0Y2giLCJhcnJheVV0aWxpdGllcyIsIm9wYXF1ZSIsIm9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzcGVjaWFsU3ltYm9scyIsInJ1bGVOYW1lIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJwcmVjZWRlbmNlIiwib3BhY2l0eSIsImdldFJ1bGVOYW1lIiwiZ2V0UGFyZW50Tm9kZSIsImdldENoaWxkTm9kZXMiLCJnZXRQcmVjZWRlbmNlIiwiZ2V0T3BhY2l0eSIsInNldFJ1bGVOYW1lIiwic2V0UGFyZW50Tm9kZSIsInNldENoaWxkTm9kZXMiLCJzdGFydEluZGV4IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFkZGVkQ2hpbGROb2RlcyIsInNwbGljZUNoaWxkTm9kZXMiLCJzZXRQcmVjZWRlbmNlIiwic2V0T3BhY2l0eSIsImlzT3BhcXVlIiwiaXNTZW1pT3BhcXVlIiwiaXNUcmFuc3BhcmVudCIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJnZXREZXNjZW5kYW50Tm9kZXMiLCJkZXNjZW5kYW50Tm9kZXMiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VucyIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZm9yd2FyZHNTb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIiwibm9kZSIsImdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiYmFja3dhcmRzU29tZUNoaWxkTm9kZSIsImdldFNpZ25pZmljYW50VG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbnMiLCJmb3JFYWNoIiwiZ2V0TXVsdGlwbGljaXR5IiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIm11bHRpcGxpY2l0eSIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzVW5wcmVjZWRlbnRlZCIsInVucHJlY2VkZW50ZWQiLCJjaGlsZE5vZGVzUHJlY2VkZW5jZUNvbXBhcmVzIiwiY29tcGFyZUNoaWxkTm9kZXNQcmVjZWRlbmNlIiwiY29tcGFyZVByZWNlZGVuY2UiLCJmaXJzdCIsImxhc3QiLCJwcmVjZWRlbmNlQ29tcGFyZXMiLCJ0cmFuc3BhcmVudFByZWNlZGVuY2UiLCJldmVyeSIsImNoaWxkTm9kZVByZWNlZGVuY2VDb21wYXJlcyIsImNvbXBhcmUiLCJsYXN0SW5kZXgiLCJmaXJzdEluZGV4IiwiaW5kZXgiLCJhc1BhcnNlVHJlZSIsIm5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsIk5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSIsImZyb21Ob25UZXJtaW5hbE5vZGVBbmRUb2tlbnMiLCJwYXJzZVRyZWUiLCJkZXB0aCIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9kZU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwibm9uVGVybWluYWxOb2RlT3BhY2l0eSIsIm5vblRlcm1pbmFsTm9kZVByZWNlZGVuY2UiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwiY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsInJlc3RvcmUiLCJzdGF0ZSIsInJld3JpdGUiLCJkZXN0cm95IiwiZm9yRWFjaENoaWxkTm9kZSIsImNsb25lIiwicmVtYWluaW5nQXJndW1lbnRzIiwiQ2xhc3MiLCJjbG9uZUNoaWxkTm9kZXMiLCJzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNQcmVjZWRlbmNlQW5kT3BhY2l0eSIsInVuZGVmaW5lZCIsIk9iamVjdCIsImFzc2lnbiIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMiLCJtYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWFBOzs7ZUFBcUJBOzs7MkJBWFU7NkJBQ0E7NkRBRVI7d0VBQ2M7NEJBRUM7Ozs7OztBQUV0QyxNQUFNLEVBQUVDLEtBQUssRUFBRSxHQUFHQyx5QkFBYyxFQUMxQixFQUFFQyxRQUFRQyxtQkFBbUIsRUFBR0MsWUFBWUMsdUJBQXVCLEVBQUUsR0FBR0MsMkJBQWM7QUFFN0UsTUFBTVA7SUFDbkIsWUFBWVEsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsVUFBVSxFQUFFQyxPQUFPLENBQUU7UUFDakUsSUFBSSxDQUFDSixRQUFRLEdBQUdBO1FBQ2hCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtJQUNqQjtJQUVBQyxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUNMLFFBQVE7SUFDdEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFFQU0sZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUNMLFVBQVU7SUFDeEI7SUFFQU0sYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDTCxPQUFPO0lBQ3JCO0lBRUFNLFlBQVlWLFFBQVEsRUFBRTtRQUNwQixJQUFJLENBQUNBLFFBQVEsR0FBR0E7SUFDbEI7SUFFQVcsY0FBY1YsVUFBVSxFQUFFO1FBQ3hCLElBQUksQ0FBQ0EsVUFBVSxHQUFHQTtJQUNwQjtJQUVBVyxjQUFjVixVQUFVLEVBQUU7UUFDeEIsTUFBTVcsYUFBYSxHQUNiQyxjQUFjQyxVQUNkQyxrQkFBa0JkLFlB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
package/lib/state.js CHANGED
@@ -79,8 +79,13 @@ class State {
79
79
  const index = this.index, branches = this.branches - 1, state = new State(this.parser, this.tokens, index, branches);
80
80
  return state;
81
81
  }
82
- static fromTokensAndParser(tokens, parser) {
83
- const tokensSignificant = areTokensSignificant(tokens), tokensLength = tokens.length, index = tokensSignificant ? 0 : tokensLength, branches = 0, state = new State(parser, tokens, index, branches);
82
+ static fromTokensAndParser(Class, tokens, parser, ...remaingArguments) {
83
+ if (parser === undefined) {
84
+ parser = tokens; ///
85
+ tokens = Class; ///
86
+ Class = State; ///
87
+ }
88
+ const tokensSignificant = areTokensSignificant(tokens), tokensLength = tokens.length, index = tokensSignificant ? 0 : tokensLength, branches = 0, state = new Class(parser, tokens, index, branches, ...remaingArguments);
84
89
  return state;
85
90
  }
86
91
  }
@@ -100,4 +105,4 @@ function areTokensSignificant(tokens, index = 0) {
100
105
  return tokensSignificant;
101
106
  }
102
107
 
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGF0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGUge1xuICBjb25zdHJ1Y3RvcihwYXJzZXIsIHRva2VucywgaW5kZXgsIGJyYW5jaGVzKSB7XG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIHRoaXMuYnJhbmNoZXMgPSBicmFuY2hlcztcbiAgfVxuXG4gIGdldFBhcnNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXI7XG4gIH1cblxuICBnZXRUb2tlbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICB9XG5cbiAgZ2V0SW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXg7XG4gIH1cblxuICBnZXRCcmFuY2hlcygpIHtcbiAgICByZXR1cm4gdGhpcy5icmFuY2hlcztcbiAgfVxuXG4gIGlzQnJhbmNoaW5nKCkge1xuICAgIGNvbnN0IGJyYW5jaGluZyA9ICh0aGlzLmJyYW5jaGVzID4gMCk7XG5cbiAgICByZXR1cm4gYnJhbmNoaW5nO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICBjb25zdCB0b2tlbnNMZW5ndGggPSB0aGlzLnRva2Vucy5sZW5ndGgsXG4gICAgICAgICAgZW1wdHkgPSAodGhpcy5pbmRleCA9PT0gdG9rZW5zTGVuZ3RoKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIGZpbmRSdWxlKHJ1bGVOYW1lKSB7IHJldHVybiB0aGlzLnBhcnNlci5maW5kUnVsZShydWxlTmFtZSk7IH1cblxuICBOb25UZXJtaW5hbE5vZGVGcm9tUnVsZU5hbWUocnVsZU5hbWUpIHsgcmV0dXJuIHRoaXMucGFyc2VyLk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSk7IH1cblxuICBpc05leHRUb2tlbldoaXRlc3BhY2VUb2tlbigpIHtcbiAgICBjb25zdCBuZXh0VG9rZW4gPSB0aGlzLnRva2Vuc1t0aGlzLmluZGV4XSxcbiAgICAgICAgICBuZXh0VG9rZW5XaGl0ZXNwYWNlVG9rZW4gPSBuZXh0VG9rZW4uaXNXaGl0ZXNwYWNlVG9rZW4oKTtcblxuICAgIHJldHVybiBuZXh0VG9rZW5XaGl0ZXNwYWNlVG9rZW47XG4gIH1cblxuICBnZXROZXh0U2lnbmlmaWNhbnRUb2tlbigpIHtcbiAgICBsZXQgbmV4dFNpZ25pZmljYW50VG9rZW4gPSBudWxsO1xuXG4gICAgbGV0IGluZGV4ID0gdGhpcy5pbmRleDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IHRoaXMudG9rZW5zW2luZGV4XSxcbiAgICAgICAgICAgIHRva2VuU2lnbmlmaWNhbnQgPSB0b2tlbi5pc1NpZ25pZmljYW50KCk7XG5cbiAgICAgIGlmICh0b2tlblNpZ25pZmljYW50KSB7XG4gICAgICAgIG5leHRTaWduaWZpY2FudFRva2VuID0gdG9rZW47IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0U2lnbmlmaWNhbnRUb2tlbjtcbiAgfVxuXG4gIGFkdmFuY2UoKSB7XG4gICAgY29uc3QgbmV4dFNpZ25pZmljYW50VG9rZW4gPSB0aGlzLmdldE5leHRTaWduaWZpY2FudFRva2VuKCk7XG5cbiAgICBsZXQgaW5kZXg7XG5cbiAgICBpbmRleCA9IHRoaXMudG9rZW5zLmluZGV4T2YobmV4dFNpZ25pZmljYW50VG9rZW4sIHRoaXMuaW5kZXgpO1xuXG4gICAgaW5kZXgrKztcblxuICAgIGNvbnN0IHRva2Vuc1NpZ25pZmljYW50ID0gYXJlVG9rZW5zU2lnbmlmaWNhbnQodGhpcy50b2tlbnMsIGluZGV4KTtcblxuICAgIGlmICghdG9rZW5zU2lnbmlmaWNhbnQpIHtcbiAgICAgIGNvbnN0IHRva2Vuc0xlbmd0aCA9IHRoaXMudG9rZW5zLmxlbmd0aDtcblxuICAgICAgaW5kZXggPSB0b2tlbnNMZW5ndGg7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGJyYW5jaGVzID0gdGhpcy5icmFuY2hlcyxcbiAgICAgICAgICBzdGF0ZSA9IG5ldyBTdGF0ZSh0aGlzLnBhcnNlciwgdGhpcy50b2tlbnMsIGluZGV4LCBicmFuY2hlcyk7XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBicmFuY2goKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4LFxuICAgICAgICAgIGJyYW5jaGVzID0gdGhpcy5icmFuY2hlcyArIDEsXG4gICAgICAgICAgc3RhdGUgPSBuZXcgU3RhdGUodGhpcy5wYXJzZXIsIHRoaXMudG9rZW5zLCBpbmRleCwgYnJhbmNoZXMpO1xuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcHJ1bmUoKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4LFxuICAgICAgICAgIGJyYW5jaGVzID0gdGhpcy5icmFuY2hlcyAtIDEsXG4gICAgICAgICAgc3RhdGUgPSBuZXcgU3RhdGUodGhpcy5wYXJzZXIsIHRoaXMudG9rZW5zLCBpbmRleCwgYnJhbmNoZXMpO1xuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ub2tlbnNBbmRQYXJzZXIodG9rZW5zLCBwYXJzZXIpIHtcbiAgICBjb25zdCB0b2tlbnNTaWduaWZpY2FudCA9IGFyZVRva2Vuc1NpZ25pZmljYW50KHRva2VucyksXG4gICAgICAgICAgdG9rZW5zTGVuZ3RoID0gdG9rZW5zLmxlbmd0aCxcbiAgICAgICAgICBpbmRleCA9IHRva2Vuc1NpZ25pZmljYW50ID9cbiAgICAgICAgICAgICAgICAgICAgMCA6XG4gICAgICAgICAgICAgICAgICAgICAgdG9rZW5zTGVuZ3RoLCAvLy9cbiAgICAgICAgICBicmFuY2hlcyA9IDAsXG4gICAgICAgICAgc3RhdGUgPSBuZXcgU3RhdGUocGFyc2VyLCB0b2tlbnMsIGluZGV4LCBicmFuY2hlcyk7XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXJlVG9rZW5zU2lnbmlmaWNhbnQodG9rZW5zLCBpbmRleCA9IDApIHtcbiAgbGV0IHRva2Vuc1NpZ25pZmljYW50ID0gZmFsc2U7XG5cbiAgY29uc3QgbGVuZ3RoID0gdG9rZW5zLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tpbmRleF0sXG4gICAgICAgICAgdG9rZW5TaWduaWZpY2FudCA9IHRva2VuLmlzU2lnbmlmaWNhbnQoKTtcblxuICAgIGlmICh0b2tlblNpZ25pZmljYW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgaWYgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgdG9rZW5zU2lnbmlmaWNhbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRva2Vuc1NpZ25pZmljYW50O1xufVxuIl0sIm5hbWVzIjpbIlN0YXRlIiwicGFyc2VyIiwidG9rZW5zIiwiaW5kZXgiLCJicmFuY2hlcyIsImdldFBhcnNlciIsImdldFRva2VucyIsImdldEluZGV4IiwiZ2V0QnJhbmNoZXMiLCJpc0JyYW5jaGluZyIsImJyYW5jaGluZyIsImlzRW1wdHkiLCJ0b2tlbnNMZW5ndGgiLCJsZW5ndGgiLCJlbXB0eSIsImZpbmRSdWxlIiwicnVsZU5hbWUiLCJOb25UZXJtaW5hbE5vZGVGcm9tUnVsZU5hbWUiLCJpc05leHRUb2tlbldoaXRlc3BhY2VUb2tlbiIsIm5leHRUb2tlbiIsIm5leHRUb2tlbldoaXRlc3BhY2VUb2tlbiIsImlzV2hpdGVzcGFjZVRva2VuIiwiZ2V0TmV4dFNpZ25pZmljYW50VG9rZW4iLCJuZXh0U2lnbmlmaWNhbnRUb2tlbiIsInRva2VuIiwidG9rZW5TaWduaWZpY2FudCIsImlzU2lnbmlmaWNhbnQiLCJhZHZhbmNlIiwiaW5kZXhPZiIsInRva2Vuc1NpZ25pZmljYW50IiwiYXJlVG9rZW5zU2lnbmlmaWNhbnQiLCJzdGF0ZSIsImJyYW5jaCIsInBydW5lIiwiZnJvbVRva2Vuc0FuZFBhcnNlciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBRUE7OztlQUFxQkE7OztBQUFOLE1BQU1BO0lBQ25CLFlBQVlDLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLFFBQVEsQ0FBRTtRQUMzQyxJQUFJLENBQUNILE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFFBQVEsR0FBR0E7SUFDbEI7SUFFQUMsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDSixNQUFNO0lBQ3BCO0lBRUFLLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0osTUFBTTtJQUNwQjtJQUVBSyxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUNKLEtBQUs7SUFDbkI7SUFFQUssY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDSixRQUFRO0lBQ3RCO0lBRUFLLGNBQWM7UUFDWixNQUFNQyxZQUFhLElBQUksQ0FBQ04sUUFBUSxHQUFHO1FBRW5DLE9BQU9NO0lBQ1Q7SUFFQUMsVUFBVTtRQUNSLE1BQU1DLGVBQWUsSUFBSSxDQUFDVixNQUFNLENBQUNXLE1BQU0sRUFDakNDLFFBQVMsSUFBSSxDQUFDWCxLQUFLLEtBQUtTO1FBRTlCLE9BQU9FO0lBQ1Q7SUFFQUMsU0FBU0MsUUFBUSxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUNmLE1BQU0sQ0FBQ2MsUUFBUSxDQUFDQztJQUFXO0lBRTVEQyw0QkFBNEJELFFBQVEsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDZixNQUFNLENBQUNnQiwyQkFBMkIsQ0FBQ0Q7SUFBVztJQUVsR0UsNkJBQTZCO1FBQzNCLE1BQU1DLFlBQVksSUFBSSxDQUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQ0MsS0FBSyxDQUFDLEVBQ25DaUIsMkJBQTJCRCxVQUFVRSxpQkFBaUI7UUFFNUQsT0FBT0Q7SUFDVDtJQUVBRSwwQkFBMEI7UUFDeEIsSUFBSUMsdUJBQXVCO1FBRTNCLElBQUlwQixRQUFRLElBQUksQ0FBQ0EsS0FBSztRQUV0QixNQUFPLEtBQU07WUFDWCxNQUFNcUIsUUFBUSxJQUFJLENBQUN0QixNQUFNLENBQUNDLE1BQU0sRUFDMUJzQixtQkFBbUJELE1BQU1FLGFBQWE7WUFFNUMsSUFBSUQsa0JBQWtCO2dCQUNwQkYsdUJBQXVCQyxPQUFPLEdBQUc7Z0JBRWpDO1lBQ0Y7WUFFQXJCO1FBQ0Y7UUFFQSxPQUFPb0I7SUFDVDtJQUVBSSxVQUFVO1FBQ1IsTUFBTUosdUJBQXVCLElBQUksQ0FBQ0QsdUJBQXVCO1FBRXpELElBQUluQjtRQUVKQSxRQUFRLElBQUksQ0FBQ0QsTUFBTSxDQUFDMEIsT0FBTyxDQUFDTCxzQkFBc0IsSUFBSSxDQUFDcEIsS0FBSztRQUU1REE7UUFFQSxNQUFNMEIsb0JBQW9CQyxxQkFBcUIsSUFBSSxDQUFDNUIsTUFBTSxFQUFFQztRQUU1RCxJQUFJLENBQUMwQixtQkFBbUI7WUFDdEIsTUFBTWpCLGVBQWUsSUFBSSxDQUFDVixNQUFNLENBQUNXLE1BQU07WUFFdkNWLFFBQVFTLGNBQWMsR0FBRztRQUMzQjtRQUVBLE1BQU1SLFdBQVcsSUFBSSxDQUFDQSxRQUFRLEVBQ3hCMkIsUUFBUSxJQUFJL0IsTUFBTSxJQUFJLENBQUNDLE1BQU0sRUFBRSxJQUFJLENBQUNDLE1BQU0sRUFBRUMsT0FBT0M7UUFFekQsT0FBTzJCO0lBQ1Q7SUFFQUMsU0FBUztRQUNQLE1BQU03QixRQUFRLElBQUksQ0FBQ0EsS0FBSyxFQUNsQkMsV0FBVyxJQUFJLENBQUNBLFFBQVEsR0FBRyxHQUMzQjJCLFFBQVEsSUFBSS9CLE1BQU0sSUFBSSxDQUFDQyxNQUFNLEVBQUUsSUFBSSxDQUFDQyxNQUFNLEVBQUVDLE9BQU9DO1FBRXpELE9BQU8yQjtJQUNUO0lBRUFFLFFBQVE7UUFDTixNQUFNOUIsUUFBUSxJQUFJLENBQUNBLEtBQUssRUFDbEJDLFdBQVcsSUFBSSxDQUFDQSxRQUFRLEdBQUcsR0FDM0IyQixRQUFRLElBQUkvQixNQUFNLElBQUksQ0FBQ0MsTUFBTSxFQUFFLElBQUksQ0FBQ0MsTUFBTSxFQUFFQyxPQUFPQztRQUV6RCxPQUFPMkI7SUFDVDtJQUVBLE9BQU9HLG9CQUFvQmhDLE1BQU0sRUFBRUQsTUFBTSxFQUFFO1FBQ3pDLE1BQU00QixvQkFBb0JDLHFCQUFxQjVCLFNBQ3pDVSxlQUFlVixPQUFPVyxNQUFNLEVBQzVCVixRQUFRMEIsb0JBQ0UsSUFDRWpCLGNBQ1pSLFdBQVcsR0FDWDJCLFFBQVEsSUFBSS9CLE1BQU1DLFFBQVFDLFFBQVFDLE9BQU9DO1FBRS9DLE9BQU8yQjtJQUNUO0FBQ0Y7QUFFQSxTQUFTRCxxQkFBcUI1QixNQUFNLEVBQUVDLFFBQVEsQ0FBQztJQUM3QyxJQUFJMEIsb0JBQW9CO0lBRXhCLE1BQU1oQixTQUFTWCxPQUFPVyxNQUFNO0lBRTVCLE1BQU9WLFFBQVFVLE9BQVE7UUFDckIsTUFBTVcsUUFBUXRCLE1BQU0sQ0FBQ0MsTUFBTSxFQUNyQnNCLG1CQUFtQkQsTUFBTUUsYUFBYTtRQUU1QyxJQUFJRCxrQkFBa0I7WUFDcEI7UUFDRjtRQUVBdEI7SUFDRjtJQUVBLElBQUlBLFFBQVFVLFFBQVE7UUFDbEJnQixvQkFBb0I7SUFDdEI7SUFFQSxPQUFPQTtBQUNUIn0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGF0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGUge1xuICBjb25zdHJ1Y3RvcihwYXJzZXIsIHRva2VucywgaW5kZXgsIGJyYW5jaGVzKSB7XG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIHRoaXMuYnJhbmNoZXMgPSBicmFuY2hlcztcbiAgfVxuXG4gIGdldFBhcnNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXI7XG4gIH1cblxuICBnZXRUb2tlbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zO1xuICB9XG5cbiAgZ2V0SW5kZXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5kZXg7XG4gIH1cblxuICBnZXRCcmFuY2hlcygpIHtcbiAgICByZXR1cm4gdGhpcy5icmFuY2hlcztcbiAgfVxuXG4gIGlzQnJhbmNoaW5nKCkge1xuICAgIGNvbnN0IGJyYW5jaGluZyA9ICh0aGlzLmJyYW5jaGVzID4gMCk7XG5cbiAgICByZXR1cm4gYnJhbmNoaW5nO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICBjb25zdCB0b2tlbnNMZW5ndGggPSB0aGlzLnRva2Vucy5sZW5ndGgsXG4gICAgICAgICAgZW1wdHkgPSAodGhpcy5pbmRleCA9PT0gdG9rZW5zTGVuZ3RoKTtcblxuICAgIHJldHVybiBlbXB0eTtcbiAgfVxuXG4gIGZpbmRSdWxlKHJ1bGVOYW1lKSB7IHJldHVybiB0aGlzLnBhcnNlci5maW5kUnVsZShydWxlTmFtZSk7IH1cblxuICBOb25UZXJtaW5hbE5vZGVGcm9tUnVsZU5hbWUocnVsZU5hbWUpIHsgcmV0dXJuIHRoaXMucGFyc2VyLk5vblRlcm1pbmFsTm9kZUZyb21SdWxlTmFtZShydWxlTmFtZSk7IH1cblxuICBpc05leHRUb2tlbldoaXRlc3BhY2VUb2tlbigpIHtcbiAgICBjb25zdCBuZXh0VG9rZW4gPSB0aGlzLnRva2Vuc1t0aGlzLmluZGV4XSxcbiAgICAgICAgICBuZXh0VG9rZW5XaGl0ZXNwYWNlVG9rZW4gPSBuZXh0VG9rZW4uaXNXaGl0ZXNwYWNlVG9rZW4oKTtcblxuICAgIHJldHVybiBuZXh0VG9rZW5XaGl0ZXNwYWNlVG9rZW47XG4gIH1cblxuICBnZXROZXh0U2lnbmlmaWNhbnRUb2tlbigpIHtcbiAgICBsZXQgbmV4dFNpZ25pZmljYW50VG9rZW4gPSBudWxsO1xuXG4gICAgbGV0IGluZGV4ID0gdGhpcy5pbmRleDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IHRoaXMudG9rZW5zW2luZGV4XSxcbiAgICAgICAgICAgIHRva2VuU2lnbmlmaWNhbnQgPSB0b2tlbi5pc1NpZ25pZmljYW50KCk7XG5cbiAgICAgIGlmICh0b2tlblNpZ25pZmljYW50KSB7XG4gICAgICAgIG5leHRTaWduaWZpY2FudFRva2VuID0gdG9rZW47IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpbmRleCsrO1xuICAgIH1cblxuICAgIHJldHVybiBuZXh0U2lnbmlmaWNhbnRUb2tlbjtcbiAgfVxuXG4gIGFkdmFuY2UoKSB7XG4gICAgY29uc3QgbmV4dFNpZ25pZmljYW50VG9rZW4gPSB0aGlzLmdldE5leHRTaWduaWZpY2FudFRva2VuKCk7XG5cbiAgICBsZXQgaW5kZXg7XG5cbiAgICBpbmRleCA9IHRoaXMudG9rZW5zLmluZGV4T2YobmV4dFNpZ25pZmljYW50VG9rZW4sIHRoaXMuaW5kZXgpO1xuXG4gICAgaW5kZXgrKztcblxuICAgIGNvbnN0IHRva2Vuc1NpZ25pZmljYW50ID0gYXJlVG9rZW5zU2lnbmlmaWNhbnQodGhpcy50b2tlbnMsIGluZGV4KTtcblxuICAgIGlmICghdG9rZW5zU2lnbmlmaWNhbnQpIHtcbiAgICAgIGNvbnN0IHRva2Vuc0xlbmd0aCA9IHRoaXMudG9rZW5zLmxlbmd0aDtcblxuICAgICAgaW5kZXggPSB0b2tlbnNMZW5ndGg7IC8vL1xuICAgIH1cblxuICAgIGNvbnN0IGJyYW5jaGVzID0gdGhpcy5icmFuY2hlcyxcbiAgICAgICAgICBzdGF0ZSA9IG5ldyBTdGF0ZSh0aGlzLnBhcnNlciwgdGhpcy50b2tlbnMsIGluZGV4LCBicmFuY2hlcyk7XG5cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBicmFuY2goKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4LFxuICAgICAgICAgIGJyYW5jaGVzID0gdGhpcy5icmFuY2hlcyArIDEsXG4gICAgICAgICAgc3RhdGUgPSBuZXcgU3RhdGUodGhpcy5wYXJzZXIsIHRoaXMudG9rZW5zLCBpbmRleCwgYnJhbmNoZXMpO1xuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgcHJ1bmUoKSB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4LFxuICAgICAgICAgIGJyYW5jaGVzID0gdGhpcy5icmFuY2hlcyAtIDEsXG4gICAgICAgICAgc3RhdGUgPSBuZXcgU3RhdGUodGhpcy5wYXJzZXIsIHRoaXMudG9rZW5zLCBpbmRleCwgYnJhbmNoZXMpO1xuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ub2tlbnNBbmRQYXJzZXIoQ2xhc3MsIHRva2VucywgcGFyc2VyLCAuLi5yZW1haW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKHBhcnNlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJzZXIgPSB0b2tlbnM7ICAvLy9cblxuICAgICAgdG9rZW5zID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IFN0YXRlOyAgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zU2lnbmlmaWNhbnQgPSBhcmVUb2tlbnNTaWduaWZpY2FudCh0b2tlbnMpLFxuICAgICAgICAgIHRva2Vuc0xlbmd0aCA9IHRva2Vucy5sZW5ndGgsXG4gICAgICAgICAgaW5kZXggPSB0b2tlbnNTaWduaWZpY2FudCA/XG4gICAgICAgICAgICAgICAgICAgIDAgOlxuICAgICAgICAgICAgICAgICAgICAgIHRva2Vuc0xlbmd0aCwgLy8vXG4gICAgICAgICAgYnJhbmNoZXMgPSAwLFxuICAgICAgICAgIHN0YXRlID0gbmV3IENsYXNzKHBhcnNlciwgdG9rZW5zLCBpbmRleCwgYnJhbmNoZXMsIC4uLnJlbWFpbmdBcmd1bWVudHMpO1xuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFyZVRva2Vuc1NpZ25pZmljYW50KHRva2VucywgaW5kZXggPSAwKSB7XG4gIGxldCB0b2tlbnNTaWduaWZpY2FudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGxlbmd0aCA9IHRva2Vucy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaW5kZXhdLFxuICAgICAgICAgIHRva2VuU2lnbmlmaWNhbnQgPSB0b2tlbi5pc1NpZ25pZmljYW50KCk7XG5cbiAgICBpZiAodG9rZW5TaWduaWZpY2FudCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmIChpbmRleCA8IGxlbmd0aCkge1xuICAgIHRva2Vuc1NpZ25pZmljYW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnNTaWduaWZpY2FudDtcbn1cbiJdLCJuYW1lcyI6WyJTdGF0ZSIsInBhcnNlciIsInRva2VucyIsImluZGV4IiwiYnJhbmNoZXMiLCJnZXRQYXJzZXIiLCJnZXRUb2tlbnMiLCJnZXRJbmRleCIsImdldEJyYW5jaGVzIiwiaXNCcmFuY2hpbmciLCJicmFuY2hpbmciLCJpc0VtcHR5IiwidG9rZW5zTGVuZ3RoIiwibGVuZ3RoIiwiZW1wdHkiLCJmaW5kUnVsZSIsInJ1bGVOYW1lIiwiTm9uVGVybWluYWxOb2RlRnJvbVJ1bGVOYW1lIiwiaXNOZXh0VG9rZW5XaGl0ZXNwYWNlVG9rZW4iLCJuZXh0VG9rZW4iLCJuZXh0VG9rZW5XaGl0ZXNwYWNlVG9rZW4iLCJpc1doaXRlc3BhY2VUb2tlbiIsImdldE5leHRTaWduaWZpY2FudFRva2VuIiwibmV4dFNpZ25pZmljYW50VG9rZW4iLCJ0b2tlbiIsInRva2VuU2lnbmlmaWNhbnQiLCJpc1NpZ25pZmljYW50IiwiYWR2YW5jZSIsImluZGV4T2YiLCJ0b2tlbnNTaWduaWZpY2FudCIsImFyZVRva2Vuc1NpZ25pZmljYW50Iiwic3RhdGUiLCJicmFuY2giLCJwcnVuZSIsImZyb21Ub2tlbnNBbmRQYXJzZXIiLCJDbGFzcyIsInJlbWFpbmdBcmd1bWVudHMiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUVBOzs7ZUFBcUJBOzs7QUFBTixNQUFNQTtJQUNuQixZQUFZQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxRQUFRLENBQUU7UUFDM0MsSUFBSSxDQUFDSCxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxLQUFLLEdBQUdBO1FBQ2IsSUFBSSxDQUFDQyxRQUFRLEdBQUdBO0lBQ2xCO0lBRUFDLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0osTUFBTTtJQUNwQjtJQUVBSyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUNKLE1BQU07SUFDcEI7SUFFQUssV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDSixLQUFLO0lBQ25CO0lBRUFLLGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQ0osUUFBUTtJQUN0QjtJQUVBSyxjQUFjO1FBQ1osTUFBTUMsWUFBYSxJQUFJLENBQUNOLFFBQVEsR0FBRztRQUVuQyxPQUFPTTtJQUNUO0lBRUFDLFVBQVU7UUFDUixNQUFNQyxlQUFlLElBQUksQ0FBQ1YsTUFBTSxDQUFDVyxNQUFNLEVBQ2pDQyxRQUFTLElBQUksQ0FBQ1gsS0FBSyxLQUFLUztRQUU5QixPQUFPRTtJQUNUO0lBRUFDLFNBQVNDLFFBQVEsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDZixNQUFNLENBQUNjLFFBQVEs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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-parsers",
3
3
  "author": "James Smith",
4
- "version": "23.3.85",
4
+ "version": "23.3.87",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-parsers",
7
7
  "description": "Occam's parsers.",
package/src/index.js CHANGED
@@ -12,6 +12,7 @@ export { default as parserUtilities } from "./utilities/parser";
12
12
 
13
13
  export { default as Rule } from "./rule";
14
14
  export { default as Parts } from "./parts";
15
+ export { default as State } from "./state";
15
16
  export { default as partTypes } from "./partTypes";
16
17
  export { default as PartChoice } from "./partChoice";
17
18
  export { default as Definition } from "./definition";
@@ -256,6 +256,10 @@ export default class NonTerminalNode {
256
256
  return matches;
257
257
  }
258
258
 
259
+ restore(state) {
260
+ ///
261
+ }
262
+
259
263
  rewrite(state) {
260
264
  const nonTerminalNode = this; ///
261
265
 
package/src/state.js CHANGED
@@ -108,14 +108,22 @@ export default class State {
108
108
  return state;
109
109
  }
110
110
 
111
- static fromTokensAndParser(tokens, parser) {
111
+ static fromTokensAndParser(Class, tokens, parser, ...remaingArguments) {
112
+ if (parser === undefined) {
113
+ parser = tokens; ///
114
+
115
+ tokens = Class; ///
116
+
117
+ Class = State; ///
118
+ }
119
+
112
120
  const tokensSignificant = areTokensSignificant(tokens),
113
121
  tokensLength = tokens.length,
114
122
  index = tokensSignificant ?
115
123
  0 :
116
124
  tokensLength, ///
117
125
  branches = 0,
118
- state = new State(parser, tokens, index, branches);
126
+ state = new Class(parser, tokens, index, branches, ...remaingArguments);
119
127
 
120
128
  return state;
121
129
  }