occam-parsers 23.0.109 → 23.0.111

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.
@@ -320,28 +320,6 @@ var NonTerminalNode = /*#__PURE__*/ function() {
320
320
  return unprecedented;
321
321
  }
322
322
  },
323
- {
324
- key: "isIncludedIn",
325
- value: function isIncludedIn(node) {
326
- var _this = this;
327
- var includedIn = false;
328
- if (this === node) {
329
- includedIn = true;
330
- } else {
331
- var nodeNonTerminalNode = node.isNonTerminalNode();
332
- if (nodeNonTerminalNode) {
333
- var nonTerminalNode = node, childNodes = nonTerminalNode.getChildNodes();
334
- includedIn = childNodes.some(function(childNode) {
335
- var includedInChildNode = _this.isIncludedIn(childNode);
336
- if (includedInChildNode) {
337
- return true;
338
- }
339
- });
340
- }
341
- }
342
- return includedIn;
343
- }
344
- },
345
323
  {
346
324
  key: "mapChildNode",
347
325
  value: function mapChildNode(callback) {
@@ -500,7 +478,8 @@ var NonTerminalNode = /*#__PURE__*/ function() {
500
478
  },
501
479
  {
502
480
  key: "sliceChildNodes",
503
- value: function sliceChildNodes(startIndex, endIndex) {
481
+ value: function sliceChildNodes(startIndex) {
482
+ var endIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Infinity;
504
483
  var childNodes = this.childNodes.slice(startIndex, endIndex);
505
484
  return childNodes;
506
485
  }
@@ -603,4 +582,4 @@ function cloneChildNodes(childNodes) {
603
582
  return childNodes;
604
583
  }
605
584
 
606
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlIGZyb20gXCIuLi9wYXJzZVRyZWUvbm9uVGVybWluYWxOb2RlXCI7XG5cbmNvbnN0IHsgZmlyc3QsIG1hdGNoLCBmb3J3YXJkc1NvbWUsIGJhY2t3YXJkc1NvbWUgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBvcGFxdWU6IG9wYXF1ZVNwZWNpYWxTeW1ib2wgLCBzZW1pT3BhcXVlOiBzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vblRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRSdWxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlTmFtZTtcbiAgfVxuXG4gIGdldFBhcmVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGdldENoaWxkTm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2RlcztcbiAgfVxuXG4gIGdldE9wYWNpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMub3BhY2l0eTtcbiAgfVxuXG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlY2VkZW5jZTtcbiAgfVxuXG4gIHNldFJ1bGVOYW1lKHJ1bGVOYW1lKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0UHJlY2VkZW5jZShwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5wcmVjZWRlbmNlID0gcHJlY2VkZW5jZTtcbiAgfVxuXG4gIHNldE9wYWNpdHkob3BhY2l0eSkge1xuICAgIHRoaXMub3BhY2l0eSA9IG9wYWNpdHk7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5mb3J3YXJkc1NvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAoZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5iYWNrd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucyk7XG5cbiAgICAgIGlmIChsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2VucyA9IFtdKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmdldFNpZ25pZmljYW50VG9rZW5zKHNpZ25pZmljYW50VG9rZW5zKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VucztcbiAgfVxuXG4gIGdldERlc2NlbmRhbnROb2RlcyhkZXNjZW5kYW50Tm9kZXMgPSBbXSkge1xuICAgIGNvbnN0IGRlc2NlbmRhbnROb2RlID0gdGhpczsgLy8vXG5cbiAgICBkZXNjZW5kYW50Tm9kZXMucHVzaChkZXNjZW5kYW50Tm9kZSk7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGU7ICAvLy9cblxuICAgICAgICBub25UZXJtaW5hbE5vZGUuZ2V0RGVzY2VuZGFudE5vZGVzKGRlc2NlbmRhbnROb2Rlcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVzY2VuZGFudE5vZGVzO1xuICB9XG5cbiAgZ2V0QW5jZXN0b3JOb2RlcygpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gW107XG5cbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRoaXMucGFyZW50Tm9kZTtcblxuICAgIHdoaWxlIChwYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhbmNlc3Rvck5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICAgIGFuY2VzdG9yTm9kZXMucHVzaChhbmNlc3Rvck5vZGUpO1xuXG4gICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5nZXRQYXJlbnROb2RlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9yTm9kZXM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBlbXB0eSA9IChtdWx0aXBsaWNpdHkgPT09IDApO1xuXG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgaXNTaW5ndWxhcigpIHtcbiAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgIHNpbmd1bGFyID0gKG11bHRpcGxpY2l0eSA9PT0gMSk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc0xvd2VyUHJlY2VkZW5jZShydWxlTmFtZSwgcHJlY2VkZW5jZSkge1xuICAgIGxldCBsb3dlclByZWNlZGVuY2U7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmVjZWRlbmNlID09PSBudWxsKSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gSW5maW5pdHkpIHtcbiAgICAgIGNvbnN0IGZpcnN0Q2hpbGROb2RlID0gZmlyc3QodGhpcy5jaGlsZE5vZGVzKTtcblxuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gZmlyc3RDaGlsZE5vZGUuaXNMb3dlclByZWNlZGVuY2UocnVsZU5hbWUsIHByZWNlZGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSAoKHRoaXMucnVsZU5hbWUgPT09IHJ1bGVOYW1lKSAmJiAodGhpcy5wcmVjZWRlbmNlIDwgcHJlY2VkZW5jZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBsb3dlclByZWNlZGVuY2U7XG4gIH1cblxuICBpc1VucHJlY2VkZW50ZWQoKSB7XG4gICAgbGV0IHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpIHtcbiAgICAgIHVucHJlY2VkZW50ZWQgPSB0aGlzLmNoaWxkTm9kZXMuc29tZSgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlID0gY2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKHRoaXMucnVsZU5hbWUsIHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIGlzSW5jbHVkZWRJbihub2RlKSB7XG4gICAgbGV0IGluY2x1ZGVkSW4gPSBmYWxzZTtcblxuICAgIGlmICh0aGlzID09PSBub2RlKSB7XG4gICAgICBpbmNsdWRlZEluID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9kZU5vblRlcm1pbmFsTm9kZSA9IG5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpO1xuXG4gICAgICAgIGluY2x1ZGVkSW4gPSBjaGlsZE5vZGVzLnNvbWUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluY2x1ZGVkSW5DaGlsZE5vZGUgPSB0aGlzLmlzSW5jbHVkZWRJbihjaGlsZE5vZGUpO1xuXG4gICAgICAgICAgaWYgKGluY2x1ZGVkSW5DaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluY2x1ZGVkSW47XG4gIH1cblxuICBtYXBDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoY2FsbGJhY2spOyB9XG5cbiAgc29tZUNoaWxkTm9kZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLnNvbWUoY2FsbGJhY2spOyB9XG5cbiAgZmluZENoaWxkTm9kZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLmZpbmQoY2FsbGJhY2spOyB9XG5cbiAgZXZlcnlDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5ldmVyeShjYWxsYmFjayk7IH1cblxuICBmaWx0ZXJDaGlsZE5vZGUoY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5maWx0ZXIoY2FsbGJhY2spOyB9XG5cbiAgcmVkdWNlQ2hpbGROb2RlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5yZWR1Y2UoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSk7IH1cblxuICBmb3JFYWNoQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHRoaXMuY2hpbGROb2Rlcy5mb3JFYWNoKGNhbGxiYWNrKTsgfVxuXG4gIGZvcndhcmRzU29tZUNoaWxkTm9kZShjYWxsYmFjaykgeyByZXR1cm4gZm9yd2FyZHNTb21lKHRoaXMuY2hpbGROb2RlcywgY2FsbGJhY2spOyB9XG5cbiAgYmFja3dhcmRzU29tZUNoaWxkTm9kZShjYWxsYmFjaykgeyByZXR1cm4gYmFja3dhcmRzU29tZSh0aGlzLmNoaWxkTm9kZXMsIGNhbGxiYWNrKTsgfVxuXG4gIGluZGV4T2ZDaGlsZE5vZGUoY2hpbGROb2RlKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihjaGlsZE5vZGUpOyB9XG5cbiAgc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoY2hpbGROb2Rlcykge1xuICAgIGlmIChjaGlsZE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoaWxkTm9kZXMgPSBbXG4gICAgICAgIC4uLnRoaXMuY2hpbGROb2Rlc1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcztcblxuICAgIGNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoY2hpbGROb2Rlcykge1xuICAgIGlmIChjaGlsZE5vZGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNoaWxkTm9kZXMgPSBbXG4gICAgICAgIC4uLnRoaXMuY2hpbGROb2Rlc1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnROb2RlID0gbnVsbDtcblxuICAgIGNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjaGlsZE5vZGUuc2V0UGFyZW50Tm9kZShwYXJlbnROb2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZENoaWxkTm9kZShhZGRlZENoaWxkTm9kZSwgc3RhcnRJbmRleCkge1xuICAgIGNvbnN0IGFkZGVkQ2hpbGROb2RlcyA9IFtcbiAgICAgICAgYWRkZWRDaGlsZE5vZGVcbiAgICBdO1xuXG4gICAgdGhpcy5hZGRDaGlsZE5vZGVzKGFkZGVkQ2hpbGROb2Rlcywgc3RhcnRJbmRleCk7XG4gIH1cblxuICBhZGRDaGlsZE5vZGVzKGFkZGVkQ2hpbGROb2Rlcywgc3RhcnRJbmRleCkge1xuICAgIGNvbnN0IGRlbGV0ZUNvdW50ID0gMDtcblxuICAgIHRoaXMuc3BsaWNlQ2hpbGROb2RlcyhzdGFydEluZGV4LCBkZWxldGVDb3VudCwgYWRkZWRDaGlsZE5vZGVzKTtcbiAgfVxuXG4gIHJlbW92ZUNoaWxkTm9kZShyZW1vdmVkQ2hpbGROb2RlKSB7XG4gICAgbGV0IHJlbW92ZWRDaGlsZE5vZGVzO1xuXG4gICAgcmVtb3ZlZENoaWxkTm9kZXMgPSBbXG4gICAgICByZW1vdmVkQ2hpbGROb2RlXG4gICAgXTtcblxuICAgIHJlbW92ZWRDaGlsZE5vZGVzID0gdGhpcy5yZW1vdmVDaGlsZE5vZGVzKHJlbW92ZWRDaGlsZE5vZGVzKTtcblxuICAgIHJldHVybiByZW1vdmVkQ2hpbGROb2RlcztcbiAgfVxuXG4gIHJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpIHtcbiAgICBpZiAocmVtb3ZlZENoaWxkTm9kZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVtb3ZlZENoaWxkTm9kZXMgPSBbXG4gICAgICAgIC4uLnRoaXMuY2hpbGROb2Rlc1xuICAgICAgXTtcbiAgICB9XG5cbiAgICBjb25zdCByZW1vdmVkQ2hpbGROb2Rlc0xlbmd0aCA9IHJlbW92ZWRDaGlsZE5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChyZW1vdmVkQ2hpbGROb2Rlc0xlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0UmVwbGFjZWRDaGlsZE5vZGUgPSBmaXJzdChyZW1vdmVkQ2hpbGROb2RlcyksXG4gICAgICAgICAgZmlyc3RJbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGZpcnN0UmVwbGFjZWRDaGlsZE5vZGUpLFxuICAgICAgICAgIHN0YXJ0SW5kZXggPSBmaXJzdEluZGV4LCAvLy9cbiAgICAgICAgICBkZWxldGVDb3VudCA9IHJlbW92ZWRDaGlsZE5vZGVzTGVuZ3RoLCAvLy9cbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBbXTtcblxuICAgIHJlbW92ZWRDaGlsZE5vZGVzID0gdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCBhZGRlZENoaWxkTm9kZXMpO1xuXG4gICAgcmV0dXJuIHJlbW92ZWRDaGlsZE5vZGVzO1xuICB9XG5cbiAgcmVwbGFjZUNoaWxkTm9kZShyZXBsYWNlZENoaWxkTm9kZSwgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKSB7XG4gICAgY29uc3QgcmVwbGFjZWRDaGlsZE5vZGVzID0gW1xuICAgICAgcmVwbGFjZWRDaGlsZE5vZGVcbiAgICBdO1xuXG4gICAgdGhpcy5yZXBsYWNlQ2hpbGROb2RlcyhyZXBsYWNlZENoaWxkTm9kZXMsIHJlcGxhY2VtZW50Q2hpbGROb2Rlcyk7XG4gIH1cblxuICByZXBsYWNlQ2hpbGROb2RlcyhyZXBsYWNlZENoaWxkTm9kZXMsIHJlcGxhY2VtZW50Q2hpbGROb2Rlcykge1xuICAgIGNvbnN0IHJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aCA9IHJlcGxhY2VkQ2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgZmlyc3RSZXBsYWNlZENoaWxkTm9kZSA9IGZpcnN0KHJlcGxhY2VkQ2hpbGROb2RlcyksXG4gICAgICAgICAgZmlyc3RJbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGZpcnN0UmVwbGFjZWRDaGlsZE5vZGUpLFxuICAgICAgICAgIHN0YXJ0SW5kZXggPSBmaXJzdEluZGV4LCAvLy9cbiAgICAgICAgICBkZWxldGVDb3VudCA9IHJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aDsgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIHJlcGxhY2VtZW50Q2hpbGROb2Rlcyk7XG4gIH1cblxuICBzcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCBhZGRlZENoaWxkTm9kZXMgPSBbXSkge1xuICAgIGNvbnN0IHJlbW92ZWRDaGlsZE5vZGVzID0gdGhpcy5jaGlsZE5vZGVzLnNwbGljZShzdGFydEluZGV4LCBkZWxldGVDb3VudCwgLi4uYWRkZWRDaGlsZE5vZGVzKTtcblxuICAgIHRoaXMucmVzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZShyZW1vdmVkQ2hpbGROb2Rlcyk7XG5cbiAgICB0aGlzLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKGFkZGVkQ2hpbGROb2Rlcyk7XG5cbiAgICByZXR1cm4gcmVtb3ZlZENoaWxkTm9kZXM7XG4gIH1cblxuICBzbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZW5kSW5kZXgpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5jaGlsZE5vZGVzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICAgIHJldHVybiBjaGlsZE5vZGVzO1xuICB9XG5cbiAgbWF0Y2gobm9kZSwgZGVwdGggPSBJbmZpbml0eSwgZXhhY3RseSA9IGZhbHNlKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGVOb25UZXJtaW5hbE5vZGUgPSBub2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAobm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gICAgICBpZiAodGhpcy5ydWxlTmFtZSA9PT0gbm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlT3BhY2l0eSA9IG5vblRlcm1pbmFsTm9kZS5nZXRPcGFjaXR5KCk7XG5cbiAgICAgICAgaWYgKHRoaXMub3BhY2l0eSA9PT0gbm9uVGVybWluYWxOb2RlT3BhY2l0eSkge1xuICAgICAgICAgIGNvbnN0IHByZWNlZGVuY2UgPSB0aGlzLmdldFByZWNlZGVuY2UoKSxcbiAgICAgICAgICAgICAgICBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlID0gbm9uVGVybWluYWxOb2RlLmdldFByZWNlZGVuY2UoKTtcblxuICAgICAgICAgIGlmIChwcmVjZWRlbmNlID09PSBub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlKSB7XG4gICAgICAgICAgICBkZXB0aC0tO1xuXG4gICAgICAgICAgICBpZiAoZGVwdGggPT09IDApIHtcbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKTtcblxuICAgICAgICAgICAgICBtYXRjaGVzID0gbWF0Y2godGhpcy5jaGlsZE5vZGVzLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAoY2hpbGROb2RlLCBub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlID0gY2hpbGROb2RlLm1hdGNoKG5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSwgZGVwdGgsIGV4YWN0bHkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICByZXdyaXRlKCkge1xuICAgIGNvbnN0IHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSA9IG51bGw7XG5cbiAgICByZXR1cm4gcmV3cml0dGVuTm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgYXNQYXJzZVRyZWUodG9rZW5zKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcywgIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZSA9IE5vblRlcm1pbmFsTm9kZVBhcnNlVHJlZS5mcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zKG5vblRlcm1pbmFsTm9kZSwgdG9rZW5zKSxcbiAgICAgICAgICBwYXJzZVRyZWUgPSBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWU7ICAvLy9cblxuICAgIHJldHVybiBwYXJzZVRyZWU7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHtcbiAgICBjb25zdCBDbGFzcyA9IHRoaXMuY29uc3RydWN0b3IsXG4gICAgICAgICAgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcnVsZU5hbWUgPSB0aGlzLnJ1bGVOYW1lLFxuICAgICAgICAgIGNoaWxkTm9kZXMgPSBjbG9uZUNoaWxkTm9kZXModGhpcy5jaGlsZE5vZGVzKSxcbiAgICAgICAgICBvcGFjaXR5ID0gdGhpcy5vcGFjaXR5LFxuICAgICAgICAgIHByZWNlZGVuY2UgPSB0aGlzLnByZWNlZGVuY2UsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21SdWxlTmFtZUNoaWxkTm9kZXNBbmRPcGFjaXR5KENsYXNzLCBydWxlTmFtZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgaWYgKG9wYWNpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgb3BhY2l0eSA9IGNoaWxkTm9kZXM7IC8vL1xuXG4gICAgICBjaGlsZE5vZGVzID0gcnVsZU5hbWU7ICAvLy9cblxuICAgICAgcnVsZU5hbWUgPSBDbGFzczsgLy8vXG5cbiAgICAgIENsYXNzID0gTm9uVGVybWluYWxOb2RlOyAgLy8vXG4gICAgfVxuXG4gICAgY29uc3QgcGFyZW50Tm9kZSA9IG51bGwsXG4gICAgICAgICAgcHJlY2VkZW5jZSA9IG51bGwsXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbmV3IENsYXNzKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlLCAuLi5yZW1haW5pbmdBcmd1bWVudHMpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlLnNldENoaWxkTm9kZXNQYXJlbnROb2RlKCk7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lQ2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gIGNoaWxkTm9kZXMgPSBjaGlsZE5vZGVzLm1hcCgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGUuY2xvbmUoKTsgIC8vL1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXM7XG59XG4iXSwibmFtZXMiOlsiTm9uVGVybWluYWxOb2RlIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsIm1hdGNoIiwiZm9yd2FyZHNTb21lIiwiYmFja3dhcmRzU29tZSIsIm9wYXF1ZSIsIm9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJzcGVjaWFsU3ltYm9scyIsInNlbWlPcGFxdWUiLCJzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCIsInJ1bGVOYW1lIiwicGFyZW50Tm9kZSIsImNoaWxkTm9kZXMiLCJvcGFjaXR5IiwicHJlY2VkZW5jZSIsImdldFJ1bGVOYW1lIiwiZ2V0UGFyZW50Tm9kZSIsImdldENoaWxkTm9kZXMiLCJnZXRPcGFjaXR5IiwiZ2V0UHJlY2VkZW5jZSIsInNldFJ1bGVOYW1lIiwic2V0Q2hpbGROb2RlcyIsInN0YXJ0SW5kZXgiLCJkZWxldGVDb3VudCIsIkluZmluaXR5IiwiYWRkZWRDaGlsZE5vZGVzIiwic3BsaWNlQ2hpbGROb2RlcyIsInNldFBhcmVudE5vZGUiLCJzZXRQcmVjZWRlbmNlIiwic2V0T3BhY2l0eSIsImlzT3BhcXVlIiwiaXNTZW1pT3BhcXVlIiwiaXNUcmFuc3BhcmVudCIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInRva2VucyIsImZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZm9yd2FyZHNTb21lQ2hpbGROb2RlIiwiY2hpbGROb2RlIiwibm9kZSIsImdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiYmFja3dhcmRzU29tZUNoaWxkTm9kZSIsImdldFNpZ25pZmljYW50VG9rZW5zIiwic2lnbmlmaWNhbnRUb2tlbnMiLCJmb3JFYWNoIiwiZ2V0RGVzY2VuZGFudE5vZGVzIiwiZGVzY2VuZGFudE5vZGVzIiwiZGVzY2VuZGFudE5vZGUiLCJwdXNoIiwiY2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiZ2V0QW5jZXN0b3JOb2RlcyIsImFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGUiLCJnZXRNdWx0aXBsaWNpdHkiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwibXVsdGlwbGljaXR5IiwiaXNFbXB0eSIsImVtcHR5IiwiaXNTaW5ndWxhciIsInNpbmd1bGFyIiwiaXNMb3dlclByZWNlZGVuY2UiLCJsb3dlclByZWNlZGVuY2UiLCJmaXJzdENoaWxkTm9kZSIsImlzVW5wcmVjZWRlbnRlZCIsInVucHJlY2VkZW50ZWQiLCJzb21lIiwiY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlIiwiaXNJbmNsdWRlZEluIiwiaW5jbHVkZWRJbiIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJpbmNsdWRlZEluQ2hpbGROb2RlIiwibWFwQ2hpbGROb2RlIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lQ2hpbGROb2RlIiwiZmluZENoaWxkTm9kZSIsImZpbmQiLCJldmVyeUNoaWxkTm9kZSIsImV2ZXJ5IiwiZmlsdGVyQ2hpbGROb2RlIiwiZmlsdGVyIiwicmVkdWNlQ2hpbGROb2RlIiwiaW5pdGlhbFZhbHVlIiwicmVkdWNlIiwiZm9yRWFjaENoaWxkTm9kZSIsImluZGV4T2ZDaGlsZE5vZGUiLCJpbmRleE9mIiwic2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUiLCJ1bmRlZmluZWQiLCJyZXNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwiYWRkQ2hpbGROb2RlIiwiYWRkZWRDaGlsZE5vZGUiLCJhZGRDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGROb2RlIiwicmVtb3ZlZENoaWxkTm9kZSIsInJlbW92ZWRDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGROb2RlcyIsInJlbW92ZWRDaGlsZE5vZGVzTGVuZ3RoIiwiZmlyc3RSZXBsYWNlZENoaWxkTm9kZSIsImZpcnN0SW5kZXgiLCJyZXBsYWNlQ2hpbGROb2RlIiwicmVwbGFjZWRDaGlsZE5vZGUiLCJyZXBsYWNlbWVudENoaWxkTm9kZXMiLCJyZXBsYWNlZENoaWxkTm9kZXMiLCJyZXBsYWNlQ2hpbGROb2RlcyIsInJlcGxhY2VkQ2hpbGROb2Rlc0xlbmd0aCIsInNwbGljZSIsInNsaWNlQ2hpbGROb2RlcyIsImVuZEluZGV4Iiwic2xpY2UiLCJkZXB0aCIsImV4YWN0bHkiLCJtYXRjaGVzIiwibm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJub25UZXJtaW5hbE5vZGVPcGFjaXR5Iiwibm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlIiwicmV3cml0ZSIsInJld3JpdHRlbk5vblRlcm1pbmFsTm9kZSIsImFzUGFyc2VUcmVlIiwibm9uVGVybWluYWxOb2RlUGFyc2VUcmVlIiwiTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlIiwiZnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2VucyIsInBhcnNlVHJlZSIsImNsb25lIiwicmVtYWluaW5nQXJndW1lbnRzIiwiQ2xhc3MiLCJjb25zdHJ1Y3RvciIsImNsb25lQ2hpbGROb2RlcyIsImZyb21SdWxlTmFtZUNoaWxkTm9kZXNBbmRPcGFjaXR5Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVVxQkE7Ozt5QkFSVTsyQkFDQTtzRUFFTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyQyxJQUFRQyxRQUE4Q0MseUJBQWMsQ0FBNURELE9BQU9FLFFBQXVDRCx5QkFBYyxDQUFyREMsT0FBT0MsZUFBZ0NGLHlCQUFjLENBQTlDRSxjQUFjQyxnQkFBa0JILHlCQUFjLENBQWhDRyxlQUM1QkMsQUFBUUMsc0JBQThEQywyQkFBYyxDQUFwRkYsUUFBOEJHLEFBQVlDLDBCQUE0QkYsMkJBQWMsQ0FBdERDO0FBRXZCLElBQUEsQUFBTVQsZ0NBQU47YUFBTUEsZ0JBQ1BXLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsVUFBVTtnQ0FEOUNmO1FBRWpCLElBQUksQ0FBQ1csUUFBUSxHQUFHQTtRQUNoQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7UUFDbEIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsT0FBTyxHQUFHQTtRQUNmLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTs7a0JBTkRmOztZQVNuQmdCLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFP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
585
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vblRlcm1pbmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IHNwZWNpYWxTeW1ib2xzIH0gZnJvbSBcIm9jY2FtLWxleGVyc1wiO1xuXG5pbXBvcnQgTm9uVGVybWluYWxOb2RlUGFyc2VUcmVlIGZyb20gXCIuLi9wYXJzZVRyZWUvbm9uVGVybWluYWxOb2RlXCI7XG5cbmNvbnN0IHsgZmlyc3QsIG1hdGNoLCBmb3J3YXJkc1NvbWUsIGJhY2t3YXJkc1NvbWUgfSA9IGFycmF5VXRpbGl0aWVzLFxuICAgICAgeyBvcGFxdWU6IG9wYXF1ZVNwZWNpYWxTeW1ib2wgLCBzZW1pT3BhcXVlOiBzZW1pT3BhcXVlU3BlY2lhbFN5bWJvbCB9ID0gc3BlY2lhbFN5bWJvbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5vblRlcm1pbmFsTm9kZSB7XG4gIGNvbnN0cnVjdG9yKHJ1bGVOYW1lLCBwYXJlbnROb2RlLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGROb2RlcztcbiAgICB0aGlzLm9wYWNpdHkgPSBvcGFjaXR5O1xuICAgIHRoaXMucHJlY2VkZW5jZSA9IHByZWNlZGVuY2U7XG4gIH1cblxuICBnZXRSdWxlTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlTmFtZTtcbiAgfVxuXG4gIGdldFBhcmVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZTtcbiAgfVxuXG4gIGdldENoaWxkTm9kZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2RlcztcbiAgfVxuXG4gIGdldE9wYWNpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMub3BhY2l0eTtcbiAgfVxuXG4gIGdldFByZWNlZGVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJlY2VkZW5jZTtcbiAgfVxuXG4gIHNldFJ1bGVOYW1lKHJ1bGVOYW1lKSB7XG4gICAgdGhpcy5ydWxlTmFtZSA9IHJ1bGVOYW1lO1xuICB9XG5cbiAgc2V0Q2hpbGROb2RlcyhjaGlsZE5vZGVzKSB7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IDAsXG4gICAgICAgICAgZGVsZXRlQ291bnQgPSBJbmZpbml0eSxcbiAgICAgICAgICBhZGRlZENoaWxkTm9kZXMgPSBjaGlsZE5vZGVzOyAgLy8vXG5cbiAgICB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG4gIH1cblxuICBzZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpIHtcbiAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICB9XG5cbiAgc2V0UHJlY2VkZW5jZShwcmVjZWRlbmNlKSB7XG4gICAgdGhpcy5wcmVjZWRlbmNlID0gcHJlY2VkZW5jZTtcbiAgfVxuXG4gIHNldE9wYWNpdHkob3BhY2l0eSkge1xuICAgIHRoaXMub3BhY2l0eSA9IG9wYWNpdHk7XG4gIH1cblxuICBpc09wYXF1ZSgpIHtcbiAgICBjb25zdCBvcGFxdWUgPSAodGhpcy5vcGFjaXR5ID09PSBvcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBvcGFxdWU7XG4gIH1cblxuICBpc1NlbWlPcGFxdWUoKSB7XG4gICAgY29uc3Qgc2VtaU9wYXF1ZSA9ICh0aGlzLm9wYWNpdHkgPT09IHNlbWlPcGFxdWVTcGVjaWFsU3ltYm9sKTtcblxuICAgIHJldHVybiBzZW1pT3BhcXVlO1xuICB9XG5cbiAgaXNUcmFuc3BhcmVudCgpIHtcbiAgICBjb25zdCBzZW1pT3BhcXVlID0gKHRoaXMub3BhY2l0eSA9PT0gbnVsbCk7XG5cbiAgICByZXR1cm4gc2VtaU9wYXF1ZTtcbiAgfVxuXG4gIGlzVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGlzTm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRydWU7XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlO1xuICB9XG5cbiAgZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSB7XG4gICAgbGV0IGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5mb3J3YXJkc1NvbWVDaGlsZE5vZGUoKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZTsgLy8vXG5cbiAgICAgIGZpcnN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCh0b2tlbnMpO1xuXG4gICAgICBpZiAoZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucykge1xuICAgIGxldCBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4O1xuXG4gICAgdGhpcy5iYWNrd2FyZHNTb21lQ2hpbGROb2RlKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNvbnN0IG5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9kZS5nZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4KHRva2Vucyk7XG5cbiAgICAgIGlmIChsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXg7XG4gIH1cblxuICBnZXRTaWduaWZpY2FudFRva2VucyhzaWduaWZpY2FudFRva2VucyA9IFtdKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY2hpbGROb2RlLmdldFNpZ25pZmljYW50VG9rZW5zKHNpZ25pZmljYW50VG9rZW5zKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaWduaWZpY2FudFRva2VucztcbiAgfVxuXG4gIGdldERlc2NlbmRhbnROb2RlcyhkZXNjZW5kYW50Tm9kZXMgPSBbXSkge1xuICAgIGNvbnN0IGRlc2NlbmRhbnROb2RlID0gdGhpczsgLy8vXG5cbiAgICBkZXNjZW5kYW50Tm9kZXMucHVzaChkZXNjZW5kYW50Tm9kZSk7XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBjaGlsZE5vZGU7ICAvLy9cblxuICAgICAgICBub25UZXJtaW5hbE5vZGUuZ2V0RGVzY2VuZGFudE5vZGVzKGRlc2NlbmRhbnROb2Rlcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVzY2VuZGFudE5vZGVzO1xuICB9XG5cbiAgZ2V0QW5jZXN0b3JOb2RlcygpIHtcbiAgICBjb25zdCBhbmNlc3Rvck5vZGVzID0gW107XG5cbiAgICBsZXQgcGFyZW50Tm9kZSA9IHRoaXMucGFyZW50Tm9kZTtcblxuICAgIHdoaWxlIChwYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBhbmNlc3Rvck5vZGUgPSBwYXJlbnROb2RlOyAgLy8vXG5cbiAgICAgIGFuY2VzdG9yTm9kZXMucHVzaChhbmNlc3Rvck5vZGUpO1xuXG4gICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5nZXRQYXJlbnROb2RlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFuY2VzdG9yTm9kZXM7XG4gIH1cblxuICBnZXRNdWx0aXBsaWNpdHkoKSB7XG4gICAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsXG4gICAgICAgICAgbXVsdGlwbGljaXR5ID0gY2hpbGROb2Rlc0xlbmd0aDsgIC8vL1xuXG4gICAgcmV0dXJuIG11bHRpcGxpY2l0eTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgY29uc3QgbXVsdGlwbGljaXR5ID0gdGhpcy5nZXRNdWx0aXBsaWNpdHkoKSxcbiAgICAgICAgICBlbXB0eSA9IChtdWx0aXBsaWNpdHkgPT09IDApO1xuXG4gICAgcmV0dXJuIGVtcHR5O1xuICB9XG5cbiAgaXNTaW5ndWxhcigpIHtcbiAgICBjb25zdCBtdWx0aXBsaWNpdHkgPSB0aGlzLmdldE11bHRpcGxpY2l0eSgpLFxuICAgICAgICAgIHNpbmd1bGFyID0gKG11bHRpcGxpY2l0eSA9PT0gMSk7XG5cbiAgICByZXR1cm4gc2luZ3VsYXI7XG4gIH1cblxuICBpc0xvd2VyUHJlY2VkZW5jZShydWxlTmFtZSwgcHJlY2VkZW5jZSkge1xuICAgIGxldCBsb3dlclByZWNlZGVuY2U7XG5cbiAgICBpZiAoZmFsc2UpIHtcbiAgICAgIC8vL1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmVjZWRlbmNlID09PSBudWxsKSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJlY2VkZW5jZSA9PT0gSW5maW5pdHkpIHtcbiAgICAgIGNvbnN0IGZpcnN0Q2hpbGROb2RlID0gZmlyc3QodGhpcy5jaGlsZE5vZGVzKTtcblxuICAgICAgbG93ZXJQcmVjZWRlbmNlID0gZmlyc3RDaGlsZE5vZGUuaXNMb3dlclByZWNlZGVuY2UocnVsZU5hbWUsIHByZWNlZGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb3dlclByZWNlZGVuY2UgPSAoKHRoaXMucnVsZU5hbWUgPT09IHJ1bGVOYW1lKSAmJiAodGhpcy5wcmVjZWRlbmNlIDwgcHJlY2VkZW5jZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBsb3dlclByZWNlZGVuY2U7XG4gIH1cblxuICBpc1VucHJlY2VkZW50ZWQoKSB7XG4gICAgbGV0IHVucHJlY2VkZW50ZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnByZWNlZGVuY2UgIT09IG51bGwpIHtcbiAgICAgIHVucHJlY2VkZW50ZWQgPSB0aGlzLmNoaWxkTm9kZXMuc29tZSgoY2hpbGROb2RlKSA9PiB7ICAvLy9cbiAgICAgICAgY29uc3QgY2hpbGROb2RlTG93ZXJQcmVjZWRlbmNlID0gY2hpbGROb2RlLmlzTG93ZXJQcmVjZWRlbmNlKHRoaXMucnVsZU5hbWUsIHRoaXMucHJlY2VkZW5jZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5wcmVjZWRlbnRlZDtcbiAgfVxuXG4gIG1hcENoaWxkTm9kZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLm1hcChjYWxsYmFjayk7IH1cblxuICBzb21lQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuc29tZShjYWxsYmFjayk7IH1cblxuICBmaW5kQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmNoaWxkTm9kZXMuZmluZChjYWxsYmFjayk7IH1cblxuICBldmVyeUNoaWxkTm9kZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLmV2ZXJ5KGNhbGxiYWNrKTsgfVxuXG4gIGZpbHRlckNoaWxkTm9kZShjYWxsYmFjaykgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLmZpbHRlcihjYWxsYmFjayk7IH1cblxuICByZWR1Y2VDaGlsZE5vZGUoY2FsbGJhY2ssIGluaXRpYWxWYWx1ZSkgeyByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLnJlZHVjZShjYWxsYmFjaywgaW5pdGlhbFZhbHVlKTsgfVxuXG4gIGZvckVhY2hDaGlsZE5vZGUoY2FsbGJhY2spIHsgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goY2FsbGJhY2spOyB9XG5cbiAgZm9yd2FyZHNTb21lQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiBmb3J3YXJkc1NvbWUodGhpcy5jaGlsZE5vZGVzLCBjYWxsYmFjayk7IH1cblxuICBiYWNrd2FyZHNTb21lQ2hpbGROb2RlKGNhbGxiYWNrKSB7IHJldHVybiBiYWNrd2FyZHNTb21lKHRoaXMuY2hpbGROb2RlcywgY2FsbGJhY2spOyB9XG5cbiAgaW5kZXhPZkNoaWxkTm9kZShjaGlsZE5vZGUpIHsgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGNoaWxkTm9kZSk7IH1cblxuICBzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZShjaGlsZE5vZGVzKSB7XG4gICAgaWYgKGNoaWxkTm9kZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hpbGROb2RlcyA9IFtcbiAgICAgICAgLi4udGhpcy5jaGlsZE5vZGVzXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzO1xuXG4gICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5zZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZShjaGlsZE5vZGVzKSB7XG4gICAgaWYgKGNoaWxkTm9kZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hpbGROb2RlcyA9IFtcbiAgICAgICAgLi4udGhpcy5jaGlsZE5vZGVzXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsO1xuXG4gICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGUpID0+IHtcbiAgICAgIGNoaWxkTm9kZS5zZXRQYXJlbnROb2RlKHBhcmVudE5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkQ2hpbGROb2RlKGFkZGVkQ2hpbGROb2RlLCBzdGFydEluZGV4KSB7XG4gICAgY29uc3QgYWRkZWRDaGlsZE5vZGVzID0gW1xuICAgICAgICBhZGRlZENoaWxkTm9kZVxuICAgIF07XG5cbiAgICB0aGlzLmFkZENoaWxkTm9kZXMoYWRkZWRDaGlsZE5vZGVzLCBzdGFydEluZGV4KTtcbiAgfVxuXG4gIGFkZENoaWxkTm9kZXMoYWRkZWRDaGlsZE5vZGVzLCBzdGFydEluZGV4KSB7XG4gICAgY29uc3QgZGVsZXRlQ291bnQgPSAwO1xuXG4gICAgdGhpcy5zcGxpY2VDaGlsZE5vZGVzKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCBhZGRlZENoaWxkTm9kZXMpO1xuICB9XG5cbiAgcmVtb3ZlQ2hpbGROb2RlKHJlbW92ZWRDaGlsZE5vZGUpIHtcbiAgICBsZXQgcmVtb3ZlZENoaWxkTm9kZXM7XG5cbiAgICByZW1vdmVkQ2hpbGROb2RlcyA9IFtcbiAgICAgIHJlbW92ZWRDaGlsZE5vZGVcbiAgICBdO1xuXG4gICAgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLnJlbW92ZUNoaWxkTm9kZXMocmVtb3ZlZENoaWxkTm9kZXMpO1xuXG4gICAgcmV0dXJuIHJlbW92ZWRDaGlsZE5vZGVzO1xuICB9XG5cbiAgcmVtb3ZlQ2hpbGROb2RlcyhyZW1vdmVkQ2hpbGROb2Rlcykge1xuICAgIGlmIChyZW1vdmVkQ2hpbGROb2RlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZW1vdmVkQ2hpbGROb2RlcyA9IFtcbiAgICAgICAgLi4udGhpcy5jaGlsZE5vZGVzXG4gICAgICBdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbW92ZWRDaGlsZE5vZGVzTGVuZ3RoID0gcmVtb3ZlZENoaWxkTm9kZXMubGVuZ3RoO1xuXG4gICAgaWYgKHJlbW92ZWRDaGlsZE5vZGVzTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlyc3RSZXBsYWNlZENoaWxkTm9kZSA9IGZpcnN0KHJlbW92ZWRDaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdEluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZmlyc3RSZXBsYWNlZENoaWxkTm9kZSksXG4gICAgICAgICAgc3RhcnRJbmRleCA9IGZpcnN0SW5kZXgsIC8vL1xuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gcmVtb3ZlZENoaWxkTm9kZXNMZW5ndGgsIC8vL1xuICAgICAgICAgIGFkZGVkQ2hpbGROb2RlcyA9IFtdO1xuXG4gICAgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLnNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2Rlcyk7XG5cbiAgICByZXR1cm4gcmVtb3ZlZENoaWxkTm9kZXM7XG4gIH1cblxuICByZXBsYWNlQ2hpbGROb2RlKHJlcGxhY2VkQ2hpbGROb2RlLCByZXBsYWNlbWVudENoaWxkTm9kZXMpIHtcbiAgICBjb25zdCByZXBsYWNlZENoaWxkTm9kZXMgPSBbXG4gICAgICByZXBsYWNlZENoaWxkTm9kZVxuICAgIF07XG5cbiAgICB0aGlzLnJlcGxhY2VDaGlsZE5vZGVzKHJlcGxhY2VkQ2hpbGROb2RlcywgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKTtcbiAgfVxuXG4gIHJlcGxhY2VDaGlsZE5vZGVzKHJlcGxhY2VkQ2hpbGROb2RlcywgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKSB7XG4gICAgY29uc3QgcmVwbGFjZWRDaGlsZE5vZGVzTGVuZ3RoID0gcmVwbGFjZWRDaGlsZE5vZGVzLmxlbmd0aCxcbiAgICAgICAgICBmaXJzdFJlcGxhY2VkQ2hpbGROb2RlID0gZmlyc3QocmVwbGFjZWRDaGlsZE5vZGVzKSxcbiAgICAgICAgICBmaXJzdEluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YoZmlyc3RSZXBsYWNlZENoaWxkTm9kZSksXG4gICAgICAgICAgc3RhcnRJbmRleCA9IGZpcnN0SW5kZXgsIC8vL1xuICAgICAgICAgIGRlbGV0ZUNvdW50ID0gcmVwbGFjZWRDaGlsZE5vZGVzTGVuZ3RoOyAvLy9cblxuICAgIHRoaXMuc3BsaWNlQ2hpbGROb2RlcyhzdGFydEluZGV4LCBkZWxldGVDb3VudCwgcmVwbGFjZW1lbnRDaGlsZE5vZGVzKTtcbiAgfVxuXG4gIHNwbGljZUNoaWxkTm9kZXMoc3RhcnRJbmRleCwgZGVsZXRlQ291bnQsIGFkZGVkQ2hpbGROb2RlcyA9IFtdKSB7XG4gICAgY29uc3QgcmVtb3ZlZENoaWxkTm9kZXMgPSB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKHN0YXJ0SW5kZXgsIGRlbGV0ZUNvdW50LCAuLi5hZGRlZENoaWxkTm9kZXMpO1xuXG4gICAgdGhpcy5yZXNldENoaWxkTm9kZXNQYXJlbnROb2RlKHJlbW92ZWRDaGlsZE5vZGVzKTtcblxuICAgIHRoaXMuc2V0Q2hpbGROb2Rlc1BhcmVudE5vZGUoYWRkZWRDaGlsZE5vZGVzKTtcblxuICAgIHJldHVybiByZW1vdmVkQ2hpbGROb2RlcztcbiAgfVxuXG4gIHNsaWNlQ2hpbGROb2RlcyhzdGFydEluZGV4LCBlbmRJbmRleCA9IEluZmluaXR5KSB7XG4gICAgY29uc3QgY2hpbGROb2RlcyA9IHRoaXMuY2hpbGROb2Rlcy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleCk7XG5cbiAgICByZXR1cm4gY2hpbGROb2RlcztcbiAgfVxuXG4gIG1hdGNoKG5vZGUsIGRlcHRoID0gSW5maW5pdHksIGV4YWN0bHkgPSBmYWxzZSkge1xuICAgIGxldCBtYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBub2RlTm9uVGVybWluYWxOb2RlID0gbm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKG5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgICAgaWYgKHRoaXMucnVsZU5hbWUgPT09IG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkgPSBub25UZXJtaW5hbE5vZGUuZ2V0T3BhY2l0eSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wYWNpdHkgPT09IG5vblRlcm1pbmFsTm9kZU9wYWNpdHkpIHtcbiAgICAgICAgICBjb25zdCBwcmVjZWRlbmNlID0gdGhpcy5nZXRQcmVjZWRlbmNlKCksXG4gICAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRQcmVjZWRlbmNlKCk7XG5cbiAgICAgICAgICBpZiAocHJlY2VkZW5jZSA9PT0gbm9uVGVybWluYWxOb2RlUHJlY2VkZW5jZSkge1xuICAgICAgICAgICAgZGVwdGgtLTtcblxuICAgICAgICAgICAgaWYgKGRlcHRoID09PSAwKSB7XG4gICAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgICAgICAgICAgbWF0Y2hlcyA9IG1hdGNoKHRoaXMuY2hpbGROb2Rlcywgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgKGNoaWxkTm9kZSwgbm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWF0Y2hlc05vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSA9IGNoaWxkTm9kZS5tYXRjaChub25UZXJtaW5hbE5vZGVDaGlsZE5vZGUsIGRlcHRoLCBleGFjdGx5KTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXRjaGVzTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgcmV3cml0ZSgpIHtcbiAgICBjb25zdCByZXdyaXR0ZW5Ob25UZXJtaW5hbE5vZGUgPSBudWxsO1xuXG4gICAgcmV0dXJuIHJld3JpdHRlbk5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIGFzUGFyc2VUcmVlKHRva2Vucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHRoaXMsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUgPSBOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUuZnJvbU5vblRlcm1pbmFsTm9kZUFuZFRva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2VucyksXG4gICAgICAgICAgcGFyc2VUcmVlID0gbm9uVGVybWluYWxOb2RlUGFyc2VUcmVlOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyc2VUcmVlO1xuICB9XG5cbiAgY2xvbmUoLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgY29uc3QgQ2xhc3MgPSB0aGlzLmNvbnN0cnVjdG9yLFxuICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHJ1bGVOYW1lID0gdGhpcy5ydWxlTmFtZSxcbiAgICAgICAgICBjaGlsZE5vZGVzID0gY2xvbmVDaGlsZE5vZGVzKHRoaXMuY2hpbGROb2RlcyksXG4gICAgICAgICAgb3BhY2l0eSA9IHRoaXMub3BhY2l0eSxcbiAgICAgICAgICBwcmVjZWRlbmNlID0gdGhpcy5wcmVjZWRlbmNlLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGlmIChvcGFjaXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wYWNpdHkgPSBjaGlsZE5vZGVzOyAvLy9cblxuICAgICAgY2hpbGROb2RlcyA9IHJ1bGVOYW1lOyAgLy8vXG5cbiAgICAgIHJ1bGVOYW1lID0gQ2xhc3M7IC8vL1xuXG4gICAgICBDbGFzcyA9IE5vblRlcm1pbmFsTm9kZTsgIC8vL1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHByZWNlZGVuY2UgPSBudWxsLFxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IG5ldyBDbGFzcyhydWxlTmFtZSwgcGFyZW50Tm9kZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTtcblxuICAgIG5vblRlcm1pbmFsTm9kZS5zZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSgpO1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9uZUNoaWxkTm9kZXMoY2hpbGROb2Rlcykge1xuICBjaGlsZE5vZGVzID0gY2hpbGROb2Rlcy5tYXAoKGNoaWxkTm9kZSkgPT4geyAgLy8vXG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlLmNsb25lKCk7ICAvLy9cblxuICAgIHJldHVybiBjaGlsZE5vZGU7XG4gIH0pO1xuXG4gIHJldHVybiBjaGlsZE5vZGVzO1xufVxuIl0sIm5hbWVzIjpbIk5vblRlcm1pbmFsTm9kZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJtYXRjaCIsImZvcndhcmRzU29tZSIsImJhY2t3YXJkc1NvbWUiLCJvcGFxdWUiLCJvcGFxdWVTcGVjaWFsU3ltYm9sIiwic3BlY2lhbFN5bWJvbHMiLCJzZW1pT3BhcXVlIiwic2VtaU9wYXF1ZVNwZWNpYWxTeW1ib2wiLCJydWxlTmFtZSIsInBhcmVudE5vZGUiLCJjaGlsZE5vZGVzIiwib3BhY2l0eSIsInByZWNlZGVuY2UiLCJnZXRSdWxlTmFtZSIsImdldFBhcmVudE5vZGUiLCJnZXRDaGlsZE5vZGVzIiwiZ2V0T3BhY2l0eSIsImdldFByZWNlZGVuY2UiLCJzZXRSdWxlTmFtZSIsInNldENoaWxkTm9kZXMiLCJzdGFydEluZGV4IiwiZGVsZXRlQ291bnQiLCJJbmZpbml0eSIsImFkZGVkQ2hpbGROb2RlcyIsInNwbGljZUNoaWxkTm9kZXMiLCJzZXRQYXJlbnROb2RlIiwic2V0UHJlY2VkZW5jZSIsInNldE9wYWNpdHkiLCJpc09wYXF1ZSIsImlzU2VtaU9wYXF1ZSIsImlzVHJhbnNwYXJlbnQiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJ0b2tlbnMiLCJmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImZvcndhcmRzU29tZUNoaWxkTm9kZSIsImNoaWxkTm9kZSIsIm5vZGUiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwibGFzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsImJhY2t3YXJkc1NvbWVDaGlsZE5vZGUiLCJnZXRTaWduaWZpY2FudFRva2VucyIsInNpZ25pZmljYW50VG9rZW5zIiwiZm9yRWFjaCIsImdldERlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlcyIsImRlc2NlbmRhbnROb2RlIiwicHVzaCIsImNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImdldEFuY2VzdG9yTm9kZXMiLCJhbmNlc3Rvck5vZGVzIiwiYW5jZXN0b3JOb2RlIiwiZ2V0TXVsdGlwbGljaXR5IiwiY2hpbGROb2Rlc0xlbmd0aCIsImxlbmd0aCIsIm11bHRpcGxpY2l0eSIsImlzRW1wdHkiLCJlbXB0eSIsImlzU2luZ3VsYXIiLCJzaW5ndWxhciIsImlzTG93ZXJQcmVjZWRlbmNlIiwibG93ZXJQcmVjZWRlbmNlIiwiZmlyc3RDaGlsZE5vZGUiLCJpc1VucHJlY2VkZW50ZWQiLCJ1bnByZWNlZGVudGVkIiwic29tZSIsImNoaWxkTm9kZUxvd2VyUHJlY2VkZW5jZSIsIm1hcENoaWxkTm9kZSIsImNhbGxiYWNrIiwibWFwIiwic29tZUNoaWxkTm9kZSIsImZpbmRDaGlsZE5vZGUiLCJmaW5kIiwiZXZlcnlDaGlsZE5vZGUiLCJldmVyeSIsImZpbHRlckNoaWxkTm9kZSIsImZpbHRlciIsInJlZHVjZUNoaWxkTm9kZSIsImluaXRpYWxWYWx1ZSIsInJlZHVjZSIsImZvckVhY2hDaGlsZE5vZGUiLCJpbmRleE9mQ2hpbGROb2RlIiwiaW5kZXhPZiIsInNldENoaWxkTm9kZXNQYXJlbnROb2RlIiwidW5kZWZpbmVkIiwicmVzZXRDaGlsZE5vZGVzUGFyZW50Tm9kZSIsImFkZENoaWxkTm9kZSIsImFkZGVkQ2hpbGROb2RlIiwiYWRkQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkTm9kZSIsInJlbW92ZWRDaGlsZE5vZGUiLCJyZW1vdmVkQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkTm9kZXMiLCJyZW1vdmVkQ2hpbGROb2Rlc0xlbmd0aCIsImZpcnN0UmVwbGFjZWRDaGlsZE5vZGUiLCJmaXJzdEluZGV4IiwicmVwbGFjZUNoaWxkTm9kZSIsInJlcGxhY2VkQ2hpbGROb2RlIiwicmVwbGFjZW1lbnRDaGlsZE5vZGVzIiwicmVwbGFjZWRDaGlsZE5vZGVzIiwicmVwbGFjZUNoaWxkTm9kZXMiLCJyZXBsYWNlZENoaWxkTm9kZXNMZW5ndGgiLCJzcGxpY2UiLCJzbGljZUNoaWxkTm9kZXMiLCJlbmRJbmRleCIsInNsaWNlIiwiZGVwdGgiLCJleGFjdGx5IiwibWF0Y2hlcyIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsIm5vblRlcm1pbmFsTm9kZU9wYWNpdHkiLCJub25UZXJtaW5hbE5vZGVQcmVjZWRlbmNlIiwibm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsIm5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZSIsImNoaWxkTm9kZU1hdGNoZXNOb25UZXJtaW5hbE5vZGVDaGlsZE5vZGUiLCJyZXdyaXRlIiwicmV3cml0dGVuTm9uVGVybWluYWxOb2RlIiwiYXNQYXJzZVRyZWUiLCJub25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJOb25UZXJtaW5hbE5vZGVQYXJzZVRyZWUiLCJmcm9tTm9uVGVybWluYWxOb2RlQW5kVG9rZW5zIiwicGFyc2VUcmVlIiwiY2xvbmUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJDbGFzcyIsImNvbnN0cnVjdG9yIiwiY2xvbmVDaGlsZE5vZGVzIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc0FuZE9wYWNpdHkiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBVXFCQTs7O3lCQVJVOzJCQUNBO3NFQUVNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJDLElBQVFDLFFBQThDQyx5QkFBYyxDQUE1REQsT0FBT0UsUUFBdUNELHlCQUFjLENBQXJEQyxPQUFPQyxlQUFnQ0YseUJBQWMsQ0FBOUNFLGNBQWNDLGdCQUFrQkgseUJBQWMsQ0FBaENHLGVBQzVCQyxBQUFRQyxzQkFBOERDLDJCQUFjLENBQXBGRixRQUE4QkcsQUFBWUMsMEJBQTRCRiwyQkFBYyxDQUF0REM7QUFFdkIs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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.0.109",
4
+ "version": "23.0.111",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-parsers",
7
7
  "description": "Occam's parsers.",
@@ -220,31 +220,6 @@ export default class NonTerminalNode {
220
220
  return unprecedented;
221
221
  }
222
222
 
223
- isIncludedIn(node) {
224
- let includedIn = false;
225
-
226
- if (this === node) {
227
- includedIn = true;
228
- } else {
229
- const nodeNonTerminalNode = node.isNonTerminalNode();
230
-
231
- if (nodeNonTerminalNode) {
232
- const nonTerminalNode = node, ///
233
- childNodes = nonTerminalNode.getChildNodes();
234
-
235
- includedIn = childNodes.some((childNode) => {
236
- const includedInChildNode = this.isIncludedIn(childNode);
237
-
238
- if (includedInChildNode) {
239
- return true;
240
- }
241
- });
242
- }
243
- }
244
-
245
- return includedIn;
246
- }
247
-
248
223
  mapChildNode(callback) { return this.childNodes.map(callback); }
249
224
 
250
225
  someChildNode(callback) { return this.childNodes.some(callback); }
@@ -371,7 +346,7 @@ export default class NonTerminalNode {
371
346
  return removedChildNodes;
372
347
  }
373
348
 
374
- sliceChildNodes(startIndex, endIndex) {
349
+ sliceChildNodes(startIndex, endIndex = Infinity) {
375
350
  const childNodes = this.childNodes.slice(startIndex, endIndex);
376
351
 
377
352
  return childNodes;