occam-directed-graphs 3.0.30 → 3.0.32

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/cycle.js CHANGED
@@ -2,7 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = void 0;
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return Cycle;
9
+ }
10
+ });
6
11
  var _necessary = require("necessary");
7
12
  var _vertex = require("./utilities/vertex");
8
13
  function _classCallCheck(instance, Constructor) {
@@ -49,13 +54,12 @@ var Cycle = /*#__PURE__*/ function() {
49
54
  successorVertices.shift();
50
55
  }
51
56
  }
52
- var cyclicEdgeSourceVertexName = partialCycle.getCyclicEdgeSourceVertexName(), cyclicEdgeTargetVertexName1 = partialCycle.getCyclicEdgeTargetVertexName(), predecessorVertexNames = partialCycle.getPredecessorVertexNames(), successorVertexNames = (0, _vertex).vertexNamesFromVertices(successorVertices), vertexNames = vertexName === cyclicEdgeTargetVertexName1 ? [].concat(cyclicEdgeTargetVertexName1).concat(predecessorVertexNames).concat(cyclicEdgeSourceVertexName) : [].concat(predecessorVertexNames).concat(cyclicEdgeSourceVertexName).concat(cyclicEdgeTargetVertexName1).concat(successorVertexNames), cycle = new Cycle(vertexNames);
57
+ var cyclicEdgeSourceVertexName = partialCycle.getCyclicEdgeSourceVertexName(), cyclicEdgeTargetVertexName1 = partialCycle.getCyclicEdgeTargetVertexName(), predecessorVertexNames = partialCycle.getPredecessorVertexNames(), successorVertexNames = (0, _vertex.vertexNamesFromVertices)(successorVertices), vertexNames = vertexName === cyclicEdgeTargetVertexName1 ? [].concat(cyclicEdgeTargetVertexName1).concat(predecessorVertexNames).concat(cyclicEdgeSourceVertexName) : [].concat(predecessorVertexNames).concat(cyclicEdgeSourceVertexName).concat(cyclicEdgeTargetVertexName1).concat(successorVertexNames), cycle = new Cycle(vertexNames);
53
58
  return cycle;
54
59
  }
55
60
  }
56
61
  ]);
57
62
  return Cycle;
58
63
  }();
59
- exports.default = Cycle;
60
64
 
61
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jeWNsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IHZlcnRleE5hbWVzRnJvbVZlcnRpY2VzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcnRleFwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3ljbGUge1xuICBjb25zdHJ1Y3Rvcih2ZXJ0ZXhOYW1lcykge1xuICAgIHRoaXMudmVydGV4TmFtZXMgPSB2ZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldFZlcnRleE5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLnZlcnRleE5hbWVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21WZXJ0ZXhOYW1lUGFydGlhbEN5Y2xlQW5kU3VjY2Vzc29yVmVydGljZXModmVydGV4TmFtZSwgcGFydGlhbEN5Y2xlLCBzdWNjZXNzb3JWZXJ0aWNlcykge1xuICAgIHN1Y2Nlc3NvclZlcnRpY2VzID0gc3VjY2Vzc29yVmVydGljZXMuc2xpY2UoKTsgIC8vL1xuICAgIFxuICAgIGNvbnN0IHN1Y2Nlc3NvclZlcnRpY2VzTGVuZ3RoID0gc3VjY2Vzc29yVmVydGljZXMubGVuZ3RoO1xuICAgIFxuICAgIGlmIChzdWNjZXNzb3JWZXJ0aWNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VjY2Vzc29yVmVydGV4ID0gZmlyc3Qoc3VjY2Vzc29yVmVydGljZXMpLFxuICAgICAgICAgICAgZmlyc3RTdWNjZXNzb3JWZXJ0ZXhOYW1lID0gZmlyc3RTdWNjZXNzb3JWZXJ0ZXguZ2V0TmFtZSgpLFxuICAgICAgICAgICAgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBwYXJ0aWFsQ3ljbGUuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuICAgICAgXG4gICAgICBpZiAoZmlyc3RTdWNjZXNzb3JWZXJ0ZXhOYW1lID09PSBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSkge1xuICAgICAgICBzdWNjZXNzb3JWZXJ0aWNlcy5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gcGFydGlhbEN5Y2xlLmdldEN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBwYXJ0aWFsQ3ljbGUuZ2V0Q3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICBwcmVkZWNlc3NvclZlcnRleE5hbWVzID0gcGFydGlhbEN5Y2xlLmdldFByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSxcbiAgICAgICAgICBzdWNjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRpY2VzKHN1Y2Nlc3NvclZlcnRpY2VzKSxcbiAgICAgICAgICB2ZXJ0ZXhOYW1lcyA9ICh2ZXJ0ZXhOYW1lID09PSBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5jb25jYXQoY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUpLmNvbmNhdChwcmVkZWNlc3NvclZlcnRleE5hbWVzKS5jb25jYXQoY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5jb25jYXQocHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcykuY29uY2F0KGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKS5jb25jYXQoY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUpLmNvbmNhdChzdWNjZXNzb3JWZXJ0ZXhOYW1lcyksXG4gICAgICAgICAgY3ljbGUgPSBuZXcgQ3ljbGUodmVydGV4TmFtZXMpO1xuICAgIFxuICAgIHJldHVybiBjeWNsZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImZpcnN0IiwiQ3ljbGUiLCJ2ZXJ0ZXhOYW1lcyIsImdldFZlcnRleE5hbWVzIiwiZnJvbVZlcnRleE5hbWVQYXJ0aWFsQ3ljbGVBbmRTdWNjZXNzb3JWZXJ0aWNlcyIsInZlcnRleE5hbWUiLCJwYXJ0aWFsQ3ljbGUiLCJzdWNjZXNzb3JWZXJ0aWNlcyIsInNsaWNlIiwic3VjY2Vzc29yVmVydGljZXNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdFN1Y2Nlc3NvclZlcnRleCIsImZpcnN0U3VjY2Vzc29yVmVydGV4TmFtZSIsImdldE5hbWUiLCJjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSIsImdldFRhcmdldFZlcnRleE5hbWUiLCJzaGlmdCIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0Q3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWUiLCJnZXRDeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSIsInByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJnZXRQcmVkZWNlc3NvclZlcnRleE5hbWVzIiwic3VjY2Vzc29yVmVydGV4TmFtZXMiLCJjb25jYXQiLCJjeWNsZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7Ozs7QUFFbUIsR0FBVyxDQUFYLFVBQVc7QUFFRixHQUFvQixDQUFwQixPQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUQsR0FBSyxDQUFHQSxLQUFLLEdBSmtCLFVBQVcsZ0JBSWxDQSxLQUFLO0lBRVFDLEtBQUssaUJBQVgsUUFBUTthQUFGQSxLQUFLLENBQ1pDLFdBQVc7O1FBQ3JCLElBQUksQ0FBQ0EsV0FBVyxHQUFHQSxXQUFXOzs7O1lBR2hDQyxHQUFjLEVBQWRBLENBQWM7bUJBQWRBLFFBQVEsQ0FBUkEsY0FBYyxHQUFHLENBQUM7Z0JBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUNELFdBQVc7WUFDekIsQ0FBQzs7OztZQUVNRSxHQUE4QyxFQUE5Q0EsQ0FBOEM7bUJBQXJELFFBQVEsQ0FBREEsOENBQThDLENBQUNDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNsR0EsaUJBQWlCLEdBQUdBLGlCQUFpQixDQUFDQyxLQUFLLEdBQUssQ0FBRyxBQUFILEVBQUcsQUFBSCxDQUFHO2dCQUVuRCxHQUFLLENBQUNDLHVCQUF1QixHQUFHRixpQkFBaUIsQ0FBQ0csTUFBTTtnQkFFeEQsRUFBRSxFQUFFRCx1QkFBdUIsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsR0FBSyxDQUFDRSxvQkFBb0IsR0FBR1gsS0FBSyxDQUFDTyxpQkFBaUIsR0FDOUNLLHdCQUF3QixHQUFHRCxvQkFBb0IsQ0FBQ0UsT0FBTyxJQUN2REMsMEJBQTBCLEdBQUdSLFlBQVksQ0FBQ1MsbUJBQW1CO29CQUVuRSxFQUFFLEVBQUVILHdCQUF3QixLQUFLRSwwQkFBMEIsRUFBRSxDQUFDO3dCQUM1RFAsaUJBQWlCLENBQUNTLEtBQUs7b0JBQ3pCLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxHQUFLLENBQUNDLDBCQUEwQixHQUFHWCxZQUFZLENBQUNZLDZCQUE2QixJQUN2RUosMkJBQTBCLEdBQUdSLFlBQVksQ0FBQ2EsNkJBQTZCLElBQ3ZFQyxzQkFBc0IsR0FBR2QsWUFBWSxDQUFDZSx5QkFBeUIsSUFDL0RDLG9CQUFvQixPQS9CVSxPQUFvQiwwQkErQkhmLGlCQUFpQixHQUNoRUwsV0FBVyxHQUFJRyxVQUFVLEtBQUtTLDJCQUEwQixHQUN4QyxDQUFDLENBQUMsQ0FBQ1MsTUFBTSxDQUFDVCwyQkFBMEIsRUFBRVMsTUFBTSxDQUFDSCxzQkFBc0IsRUFBRUcsTUFBTSxDQUFDTiwwQkFBMEIsSUFDcEcsQ0FBQyxDQUFDLENBQUNNLE1BQU0sQ0FBQ0gsc0JBQXNCLEVBQUVHLE1BQU0sQ0FBQ04sMEJBQTBCLEVBQUVNLE1BQU0sQ0FBQ1QsMkJBQTBCLEVBQUVTLE1BQU0sQ0FBQ0Qsb0JBQW9CLEdBQ3JKRSxLQUFLLEdBQUcsR0FBRyxDQUFDdkIsS0FBSyxDQUFDQyxXQUFXO2dCQUVuQyxNQUFNLENBQUNzQixLQUFLO1lBQ2QsQ0FBQzs7Ozs7a0JBbENrQnZCLEtBQUsifQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jeWNsZS5qcyIsIjw8anN4LWNvbmZpZy1wcmFnbWEuanM+PiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7IHZlcnRleE5hbWVzRnJvbVZlcnRpY2VzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3ZlcnRleFwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ3ljbGUge1xuICBjb25zdHJ1Y3Rvcih2ZXJ0ZXhOYW1lcykge1xuICAgIHRoaXMudmVydGV4TmFtZXMgPSB2ZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldFZlcnRleE5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLnZlcnRleE5hbWVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21WZXJ0ZXhOYW1lUGFydGlhbEN5Y2xlQW5kU3VjY2Vzc29yVmVydGljZXModmVydGV4TmFtZSwgcGFydGlhbEN5Y2xlLCBzdWNjZXNzb3JWZXJ0aWNlcykge1xuICAgIHN1Y2Nlc3NvclZlcnRpY2VzID0gc3VjY2Vzc29yVmVydGljZXMuc2xpY2UoKTsgIC8vL1xuICAgIFxuICAgIGNvbnN0IHN1Y2Nlc3NvclZlcnRpY2VzTGVuZ3RoID0gc3VjY2Vzc29yVmVydGljZXMubGVuZ3RoO1xuICAgIFxuICAgIGlmIChzdWNjZXNzb3JWZXJ0aWNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0U3VjY2Vzc29yVmVydGV4ID0gZmlyc3Qoc3VjY2Vzc29yVmVydGljZXMpLFxuICAgICAgICAgICAgZmlyc3RTdWNjZXNzb3JWZXJ0ZXhOYW1lID0gZmlyc3RTdWNjZXNzb3JWZXJ0ZXguZ2V0TmFtZSgpLFxuICAgICAgICAgICAgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBwYXJ0aWFsQ3ljbGUuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuICAgICAgXG4gICAgICBpZiAoZmlyc3RTdWNjZXNzb3JWZXJ0ZXhOYW1lID09PSBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSkge1xuICAgICAgICBzdWNjZXNzb3JWZXJ0aWNlcy5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gcGFydGlhbEN5Y2xlLmdldEN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBwYXJ0aWFsQ3ljbGUuZ2V0Q3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICBwcmVkZWNlc3NvclZlcnRleE5hbWVzID0gcGFydGlhbEN5Y2xlLmdldFByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSxcbiAgICAgICAgICBzdWNjZXNzb3JWZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRpY2VzKHN1Y2Nlc3NvclZlcnRpY2VzKSxcbiAgICAgICAgICB2ZXJ0ZXhOYW1lcyA9ICh2ZXJ0ZXhOYW1lID09PSBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5jb25jYXQoY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUpLmNvbmNhdChwcmVkZWNlc3NvclZlcnRleE5hbWVzKS5jb25jYXQoY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXS5jb25jYXQocHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcykuY29uY2F0KGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKS5jb25jYXQoY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUpLmNvbmNhdChzdWNjZXNzb3JWZXJ0ZXhOYW1lcyksXG4gICAgICAgICAgY3ljbGUgPSBuZXcgQ3ljbGUodmVydGV4TmFtZXMpO1xuICAgIFxuICAgIHJldHVybiBjeWNsZTtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJDeWNsZSIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJ2ZXJ0ZXhOYW1lcyIsImdldFZlcnRleE5hbWVzIiwiZnJvbVZlcnRleE5hbWVQYXJ0aWFsQ3ljbGVBbmRTdWNjZXNzb3JWZXJ0aWNlcyIsInZlcnRleE5hbWUiLCJwYXJ0aWFsQ3ljbGUiLCJzdWNjZXNzb3JWZXJ0aWNlcyIsInNsaWNlIiwic3VjY2Vzc29yVmVydGljZXNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdFN1Y2Nlc3NvclZlcnRleCIsImZpcnN0U3VjY2Vzc29yVmVydGV4TmFtZSIsImdldE5hbWUiLCJjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSIsImdldFRhcmdldFZlcnRleE5hbWUiLCJzaGlmdCIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0Q3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWUiLCJnZXRDeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSIsInByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJnZXRQcmVkZWNlc3NvclZlcnRleE5hbWVzIiwic3VjY2Vzc29yVmVydGV4TmFtZXMiLCJ2ZXJ0ZXhOYW1lc0Zyb21WZXJ0aWNlcyIsImNvbmNhdCIsImN5Y2xlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVFxQkE7Ozt5QkFOVTtzQkFFUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeEMsSUFBTSxBQUFFQyxRQUFVQyx5QkFBYyxDQUF4QkQ7QUFFTyxJQUFBLEFBQU1ELHNCQUFOO2FBQU1BLE1BQ1BHLFdBQVc7OEJBREpIO1FBRWpCLElBQUksQ0FBQ0csV0FBVyxHQUFHQTs7aUJBRkZIOztZQUtuQkksS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQjtnQkFDZixPQUFPLElBQUksQ0FBQ0QsV0FBVztZQUN6Qjs7OztZQUVPRSxLQUFBQTttQkFBUCxTQUFPQSwrQ0FBK0NDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxpQkFBaUIsRUFBRTtnQkFDakdBLG9CQUFvQkEsa0JBQWtCQyxLQUFLLElBQUssR0FBRztnQkFFbkQsSUFBTUMsMEJBQTBCRixrQkFBa0JHLE1BQU07Z0JBRXhELElBQUlELDBCQUEwQixHQUFHO29CQUMvQixJQUFNRSx1QkFBdUJYLE1BQU1PLG9CQUM3QkssMkJBQTJCRCxxQkFBcUJFLE9BQU8sSUFDdkRDLDZCQUE2QlIsYUFBYVMsbUJBQW1CO29CQUVuRSxJQUFJSCw2QkFBNkJFLDRCQUE0Qjt3QkFDM0RQLGtCQUFrQlMsS0FBSztvQkFDekIsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQU1DLDZCQUE2QlgsYUFBYVksNkJBQTZCLElBQ3ZFSiw4QkFBNkJSLGFBQWFhLDZCQUE2QixJQUN2RUMseUJBQXlCZCxhQUFhZSx5QkFBeUIsSUFDL0RDLHVCQUF1QkMsSUFBQUEsK0JBQXVCLEVBQUNoQixvQkFDL0NMLGNBQWMsQUFBQ0csZUFBZVMsOEJBQ2QsRUFBRSxDQUFDVSxNQUFNLENBQUNWLDZCQUE0QlUsTUFBTSxDQUFDSix3QkFBd0JJLE1BQU0sQ0FBQ1AsOEJBQzFFLEVBQUUsQ0FBQ08sTUFBTSxDQUFDSix3QkFBd0JJLE1BQU0sQ0FBQ1AsNEJBQTRCTyxNQUFNLENBQUNWLDZCQUE0QlUsTUFBTSxDQUFDRixxQkFBcUIsRUFDdEpHLFFBQVEsSUEvQkcxQixNQStCT0c7Z0JBRXhCLE9BQU91QjtZQUNUOzs7V0FsQ21CMUIifQ==
@@ -2,13 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = void 0;
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return DirectedGraph;
9
+ }
10
+ });
6
11
  var _occamKahn = require("occam-kahn");
7
12
  var _necessary = require("necessary");
8
13
  var _occamPearceKelly = require("occam-pearce-kelly");
9
- var _edge = _interopRequireDefault(require("./edge"));
10
- var _cycle = _interopRequireDefault(require("./cycle"));
11
- var _partialCycle = _interopRequireDefault(require("./partialCycle"));
14
+ var _edge = /*#__PURE__*/ _interopRequireDefault(require("./edge"));
15
+ var _cycle = /*#__PURE__*/ _interopRequireDefault(require("./cycle"));
16
+ var _partialCycle = /*#__PURE__*/ _interopRequireDefault(require("./partialCycle"));
12
17
  var _vertex = require("./utilities/vertex");
13
18
  var _edge1 = require("./utilities/edge");
14
19
  function _classCallCheck(instance, Constructor) {
@@ -55,6 +60,48 @@ var DirectedGraph = /*#__PURE__*/ function() {
55
60
  return this.directedAcyclicGraph;
56
61
  }
57
62
  },
63
+ {
64
+ key: "getVertexNames",
65
+ value: function getVertexNames() {
66
+ return this.directedAcyclicGraph.getVertexNames();
67
+ }
68
+ },
69
+ {
70
+ key: "getOrderedVertexNames",
71
+ value: function getOrderedVertexNames() {
72
+ return this.directedAcyclicGraph.getOrderedVertexNames();
73
+ }
74
+ },
75
+ {
76
+ key: "addVertexByVertexName",
77
+ value: function addVertexByVertexName(vertexName) {
78
+ this.directedAcyclicGraph.addVertexByVertexName(vertexName);
79
+ }
80
+ },
81
+ {
82
+ key: "isEdgePresentByVertexNames",
83
+ value: function isEdgePresentByVertexNames(sourceVertexName, targetVertexName) {
84
+ return this.directedAcyclicGraph.isEdgePresentByVertexNames(sourceVertexName, targetVertexName);
85
+ }
86
+ },
87
+ {
88
+ key: "isVertexPresentByVertexName",
89
+ value: function isVertexPresentByVertexName(vertexName) {
90
+ return this.directedAcyclicGraph.isVertexPresentByVertexName(vertexName);
91
+ }
92
+ },
93
+ {
94
+ key: "getSuccessorVertexNamesByVertexName",
95
+ value: function getSuccessorVertexNamesByVertexName(vertexName) {
96
+ return this.directedAcyclicGraph.getSuccessorVertexNamesByVertexName(vertexName);
97
+ }
98
+ },
99
+ {
100
+ key: "getPredecessorVertexNamesByVertexName",
101
+ value: function getPredecessorVertexNamesByVertexName(vertexName) {
102
+ return this.directedAcyclicGraph.getPredecessorVertexNamesByVertexName(vertexName);
103
+ }
104
+ },
58
105
  {
59
106
  key: "getImmediatePredecessorVertexNamesByVertexName",
60
107
  value: function getImmediatePredecessorVertexNamesByVertexName(vertexName) {
@@ -89,18 +136,6 @@ var DirectedGraph = /*#__PURE__*/ function() {
89
136
  return immediateSuccessorVertexNames;
90
137
  }
91
138
  },
92
- {
93
- key: "getPredecessorVertexNamesByVertexName",
94
- value: function getPredecessorVertexNamesByVertexName(vertexName) {
95
- return this.directedAcyclicGraph.getPredecessorVertexNamesByVertexName(vertexName);
96
- }
97
- },
98
- {
99
- key: "getSuccessorVertexNamesByVertexName",
100
- value: function getSuccessorVertexNamesByVertexName(vertexName) {
101
- return this.directedAcyclicGraph.getSuccessorVertexNamesByVertexName(vertexName);
102
- }
103
- },
104
139
  {
105
140
  key: "areCyclesPresentByVertexName",
106
141
  value: function areCyclesPresentByVertexName(vertexName) {
@@ -113,25 +148,13 @@ var DirectedGraph = /*#__PURE__*/ function() {
113
148
  return cyclesPresent;
114
149
  }
115
150
  },
116
- {
117
- key: "isVertexPresentByVertexName",
118
- value: function isVertexPresentByVertexName(vertexName) {
119
- return this.directedAcyclicGraph.isVertexPresentByVertexName(vertexName);
120
- }
121
- },
122
- {
123
- key: "isEdgePresentByVertexNames",
124
- value: function isEdgePresentByVertexNames(sourceVertexName, targetVertexName) {
125
- return this.directedAcyclicGraph.isEdgePresentByVertexNames(sourceVertexName, targetVertexName);
126
- }
127
- },
128
151
  {
129
152
  key: "getFirstCycleByVertexName",
130
153
  value: function getFirstCycleByVertexName(vertexName) {
131
154
  var _this = this;
132
155
  var firstCycle = null;
133
156
  var vertex = this.directedAcyclicGraph.getVertexByVertexName(vertexName), cyclicEdges = this.cyclicEdges.slice(), partialCycles = [], cycles = [];
134
- (0, _vertex).forwardsDepthFirstSearch(vertex, function(visitedVertex, getPredecessorVertices) {
157
+ (0, _vertex.forwardsDepthFirstSearch)(vertex, function(visitedVertex, getPredecessorVertices) {
135
158
  var visitedVertexName = visitedVertex.getName(), sourceVertexName = visitedVertexName; ///
136
159
  filter(cyclicEdges, function(cyclicEdge) {
137
160
  var matches = cyclicEdge.matchSourceVertexName(sourceVertexName);
@@ -147,7 +170,7 @@ var DirectedGraph = /*#__PURE__*/ function() {
147
170
  });
148
171
  partialCycles.some(function(partialCycle) {
149
172
  var targetVertexName = partialCycle.getTargetVertexName(), targetVertex = _this.directedAcyclicGraph.getVertexByVertexName(targetVertexName);
150
- (0, _vertex).forwardsDepthFirstSearch(targetVertex, function(visitedVertex, getPredecessorVertices) {
173
+ (0, _vertex.forwardsDepthFirstSearch)(targetVertex, function(visitedVertex, getPredecessorVertices) {
151
174
  var visitedVertexName = visitedVertex.getName();
152
175
  if (visitedVertexName === vertexName) {
153
176
  var predecessorVertices = getPredecessorVertices(), successorVertices = predecessorVertices, cycle = _cycle.default.fromVertexNamePartialCycleAndSuccessorVertices(vertexName, partialCycle, successorVertices);
@@ -157,8 +180,8 @@ var DirectedGraph = /*#__PURE__*/ function() {
157
180
  return terminate;
158
181
  });
159
182
  });
160
- var cyclesLength1 = cycles.length;
161
- if (cyclesLength1 > 0) {
183
+ var cyclesLength = cycles.length;
184
+ if (cyclesLength > 0) {
162
185
  firstCycle = first(cycles);
163
186
  }
164
187
  return firstCycle;
@@ -171,18 +194,6 @@ var DirectedGraph = /*#__PURE__*/ function() {
171
194
  return firstCycle;
172
195
  }
173
196
  },
174
- {
175
- key: "getVertexNames",
176
- value: function getVertexNames() {
177
- return this.directedAcyclicGraph.getVertexNames();
178
- }
179
- },
180
- {
181
- key: "getOrderedVertexNames",
182
- value: function getOrderedVertexNames() {
183
- return this.directedAcyclicGraph.getOrderedVertexNames();
184
- }
185
- },
186
197
  {
187
198
  key: "areCyclesPresent",
188
199
  value: function areCyclesPresent() {
@@ -190,12 +201,6 @@ var DirectedGraph = /*#__PURE__*/ function() {
190
201
  return cyclesPresent;
191
202
  }
192
203
  },
193
- {
194
- key: "addVertexByVertexName",
195
- value: function addVertexByVertexName(vertexName) {
196
- this.directedAcyclicGraph.addVertexByVertexName(vertexName);
197
- }
198
- },
199
204
  {
200
205
  key: "addVerticesByVertexNames",
201
206
  value: function addVerticesByVertexNames(vertexNames) {
@@ -226,7 +231,7 @@ var DirectedGraph = /*#__PURE__*/ function() {
226
231
  value: function addEdge(edge) {
227
232
  var success = this.directedAcyclicGraph.addEdge(edge);
228
233
  if (!success) {
229
- var cyclicEdgesIncludesEdge = (0, _edge1).checkEdgesIncludesEdge(edge, this.cyclicEdges);
234
+ var cyclicEdgesIncludesEdge = (0, _edge1.checkEdgesIncludesEdge)(edge, this.cyclicEdges);
230
235
  if (!cyclicEdgesIncludesEdge) {
231
236
  var cyclicEdge = edge; ///
232
237
  this.cyclicEdges.push(cyclicEdge);
@@ -247,12 +252,12 @@ var DirectedGraph = /*#__PURE__*/ function() {
247
252
  key: "removeEdge",
248
253
  value: function removeEdge(edge) {
249
254
  var removeStrandedVertices = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
250
- var cyclicEdgesIncludesEdge = (0, _edge1).checkEdgesIncludesEdge(edge, this.cyclicEdges), edgePresent = this.directedAcyclicGraph.isEdgePresent(edge), edgeCyclic = cyclicEdgesIncludesEdge; ///
255
+ var cyclicEdgesIncludesEdge = (0, _edge1.checkEdgesIncludesEdge)(edge, this.cyclicEdges), edgePresent = this.directedAcyclicGraph.isEdgePresent(edge), edgeCyclic = cyclicEdgesIncludesEdge; ///
251
256
  if (false) {
252
257
  ///
253
258
  } else if (edgeCyclic) {
254
259
  var cyclicEdge = edge; ///
255
- (0, _edge1).removeEdgeFromEdges(cyclicEdge, this.cyclicEdges);
260
+ (0, _edge1.removeEdgeFromEdges)(cyclicEdge, this.cyclicEdges);
256
261
  } else if (edgePresent) {
257
262
  this.directedAcyclicGraph.removeEdge(edge);
258
263
  if (removeStrandedVertices) {
@@ -297,7 +302,7 @@ var DirectedGraph = /*#__PURE__*/ function() {
297
302
  key: "removeEdgesByTargetVertexName",
298
303
  value: function removeEdgesByTargetVertexName(targetVertexName) {
299
304
  var removeStrandedVertices = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
300
- var cyclicEdges = (0, _edge1).edgesByTargetVertexName(targetVertexName, this.cyclicEdges), edges = this.directedAcyclicGraph.getEdgesByTargetVertexName(targetVertexName);
305
+ var cyclicEdges = (0, _edge1.edgesByTargetVertexName)(targetVertexName, this.cyclicEdges), edges = this.directedAcyclicGraph.getEdgesByTargetVertexName(targetVertexName);
301
306
  this.removeEdges(cyclicEdges, removeStrandedVertices);
302
307
  this.removeEdges(edges, removeStrandedVertices);
303
308
  }
@@ -306,7 +311,7 @@ var DirectedGraph = /*#__PURE__*/ function() {
306
311
  key: "removeEdgesBySourceVertexName",
307
312
  value: function removeEdgesBySourceVertexName(sourceVertexName) {
308
313
  var removeStrandedVertices = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
309
- var cyclicEdges = (0, _edge1).edgesBySourceVertexName(sourceVertexName, this.cyclicEdges), edges = this.directedAcyclicGraph.getEdgesBySourceVertexName(sourceVertexName);
314
+ var cyclicEdges = (0, _edge1.edgesBySourceVertexName)(sourceVertexName, this.cyclicEdges), edges = this.directedAcyclicGraph.getEdgesBySourceVertexName(sourceVertexName);
310
315
  this.removeEdges(cyclicEdges, removeStrandedVertices);
311
316
  this.removeEdges(edges, removeStrandedVertices);
312
317
  }
@@ -347,7 +352,7 @@ var DirectedGraph = /*#__PURE__*/ function() {
347
352
  {
348
353
  key: "fromVertexLiterals",
349
354
  value: function fromVertexLiterals(vertexLiterals) {
350
- var vertexNames = (0, _vertex).vertexNamesFromVertexLiterals(vertexLiterals), edges = (0, _edge1).edgesFromVertexLiterals(vertexLiterals), directedGraph = DirectedGraph.fromVertexNamesAndEdges(vertexNames, edges);
355
+ var vertexNames = (0, _vertex.vertexNamesFromVertexLiterals)(vertexLiterals), edges = (0, _edge1.edgesFromVertexLiterals)(vertexLiterals), directedGraph = DirectedGraph.fromVertexNamesAndEdges(vertexNames, edges);
351
356
  return directedGraph;
352
357
  }
353
358
  },
@@ -372,6 +377,5 @@ var DirectedGraph = /*#__PURE__*/ function() {
372
377
  ]);
373
378
  return DirectedGraph;
374
379
  }();
375
- exports.default = DirectedGraph;
376
380
 
377
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RlZEdyYXBoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gXCJvY2NhbS1rYWhuXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IERpcmVjdGVkQWN5Y2xpY0dyYXBoIH0gZnJvbSBcIm9jY2FtLXBlYXJjZS1rZWxseVwiO1xuXG5pbXBvcnQgRWRnZSBmcm9tIFwiLi9lZGdlXCI7XG5pbXBvcnQgQ3ljbGUgZnJvbSBcIi4vY3ljbGVcIjtcbmltcG9ydCBQYXJ0aWFsQ3ljbGUgZnJvbSBcIi4vcGFydGlhbEN5Y2xlXCI7XG5cbmltcG9ydCB7IHZlcnRleE5hbWVzRnJvbVZlcnRleExpdGVyYWxzLCBmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2ggfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVydGV4XCI7XG5pbXBvcnQgeyBlZGdlc0Zyb21WZXJ0ZXhMaXRlcmFscywgY2hlY2tFZGdlc0luY2x1ZGVzRWRnZSwgcmVtb3ZlRWRnZUZyb21FZGdlcywgZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUsIGVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2VkZ2VcIjtcblxuY29uc3QgeyBmaXJzdCwgZmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlyZWN0ZWRHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKGN5Y2xpY0VkZ2VzLCBkaXJlY3RlZEFjeWNsaWNHcmFwaCkge1xuICAgIHRoaXMuY3ljbGljRWRnZXMgPSBjeWNsaWNFZGdlcztcblxuICAgIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBkaXJlY3RlZEFjeWNsaWNHcmFwaDtcbiAgfVxuXG4gIGdldEN5Y2xpY0VkZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLmN5Y2xpY0VkZ2VzO1xuICB9XG5cbiAgZ2V0RGlyZWN0ZWRBY3ljbGljR3JhcGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGg7XG4gIH1cblxuICBnZXRJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUsIGluY2x1ZGVDeWNsaWNFZGdlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIGlmIChpbmNsdWRlQ3ljbGljRWRnZXMpIHtcbiAgICAgIHRoaXMuY3ljbGljRWRnZXMuZm9yRWFjaCgoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgICBjb25zdCBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuXG4gICAgICAgIGlmIChjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9PT0gdmVydGV4TmFtZSkge1xuICAgICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgICAgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWU7ICAvLy9cblxuICAgICAgICAgIGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMucHVzaChpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUsIGluY2x1ZGVDeWNsaWNFZGdlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpO1xuXG4gICAgaWYgKGluY2x1ZGVDeWNsaWNFZGdlcykge1xuICAgICAgdGhpcy5jeWNsaWNFZGdlcy5mb3JFYWNoKChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCk7XG5cbiAgICAgICAgaWYgKGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID09PSB2ZXJ0ZXhOYW1lKSB7XG4gICAgICAgICAgY29uc3QgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgICAgICBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWU7ICAvLy9cblxuICAgICAgICAgIGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzLnB1c2goaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldFByZWRlY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpOyB9XG5cbiAgZ2V0U3VjY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTsgfVxuXG4gIGFyZUN5Y2xlc1ByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSkge1xuICAgIGxldCBjeWNsZXNQcmVzZW50ID0gZmFsc2U7XG5cbiAgICBjb25zdCB2ZXJ0ZXhQcmVzZW50ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5pc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICBpZiAodmVydGV4UHJlc2VudCkge1xuICAgICAgY29uc3QgZmlyc3RDeWNsZSA9IHRoaXMuZ2V0Rmlyc3RDeWNsZUJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgICAgY3ljbGVzUHJlc2VudCA9IChmaXJzdEN5Y2xlICE9PSBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3ljbGVzUHJlc2VudDtcbiAgfVxuXG4gIGlzVmVydGV4UHJlc2VudEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmlzVmVydGV4UHJlc2VudEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTsgfVxuXG4gIGlzRWRnZVByZXNlbnRCeVZlcnRleE5hbWVzKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNFZGdlUHJlc2VudEJ5VmVydGV4TmFtZXMoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSk7IH1cblxuICBnZXRGaXJzdEN5Y2xlQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHtcbiAgICBsZXQgZmlyc3RDeWNsZSA9IG51bGw7XG4gICAgXG4gICAgY29uc3QgdmVydGV4ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSksXG4gICAgICAgICAgY3ljbGljRWRnZXMgPSB0aGlzLmN5Y2xpY0VkZ2VzLnNsaWNlKCksIC8vL1xuICAgICAgICAgIHBhcnRpYWxDeWNsZXMgPSBbXSxcbiAgICAgICAgICBjeWNsZXMgPSBbXTtcblxuICAgIGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCh2ZXJ0ZXgsICh2aXNpdGVkVmVydGV4LCBnZXRQcmVkZWNlc3NvclZlcnRpY2VzKSA9PiB7XG4gICAgICBjb25zdCB2aXNpdGVkVmVydGV4TmFtZSA9IHZpc2l0ZWRWZXJ0ZXguZ2V0TmFtZSgpLFxuICAgICAgICAgICAgc291cmNlVmVydGV4TmFtZSA9IHZpc2l0ZWRWZXJ0ZXhOYW1lOyAvLy9cblxuICAgICAgZmlsdGVyKGN5Y2xpY0VkZ2VzLCAoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gY3ljbGljRWRnZS5tYXRjaFNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSk7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzID0gZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpLFxuICAgICAgICAgICAgICAgIHBhcnRpYWxDeWNsZSA9ICBQYXJ0aWFsQ3ljbGUuZnJvbUN5Y2xpY0VkZ2VBbmRQcmVkZWNlc3NvclZlcnRpY2VzKGN5Y2xpY0VkZ2UsIHByZWRlY2Vzc29yVmVydGljZXMpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhcnRpYWxDeWNsZXMucHVzaChwYXJ0aWFsQ3ljbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY3ljbGljRWRnZXNMZW5ndGggPSBjeWNsaWNFZGdlcy5sZW5ndGgsXG4gICAgICAgICAgICB0ZXJtaW5hdGUgPSAoY3ljbGljRWRnZXNMZW5ndGggPT09IDApO1xuXG4gICAgICByZXR1cm4gdGVybWluYXRlO1xuICAgIH0pO1xuXG4gICAgcGFydGlhbEN5Y2xlcy5zb21lKChwYXJ0aWFsQ3ljbGUpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldFZlcnRleE5hbWUgPSBwYXJ0aWFsQ3ljbGUuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhCeVZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSk7XG5cbiAgICAgIGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCh0YXJnZXRWZXJ0ZXgsICh2aXNpdGVkVmVydGV4LCBnZXRQcmVkZWNlc3NvclZlcnRpY2VzKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpc2l0ZWRWZXJ0ZXhOYW1lID0gdmlzaXRlZFZlcnRleC5nZXROYW1lKCk7XG5cbiAgICAgICAgaWYgKHZpc2l0ZWRWZXJ0ZXhOYW1lID09PSB2ZXJ0ZXhOYW1lKSB7XG4gICAgICAgICAgY29uc3QgcHJlZGVjZXNzb3JWZXJ0aWNlcyA9IGdldFByZWRlY2Vzc29yVmVydGljZXMoKSxcbiAgICAgICAgICAgICAgICBzdWNjZXNzb3JWZXJ0aWNlcyA9IHByZWRlY2Vzc29yVmVydGljZXMsICAvLy9cbiAgICAgICAgICAgICAgICBjeWNsZSA9IEN5Y2xlLmZyb21WZXJ0ZXhOYW1lUGFydGlhbEN5Y2xlQW5kU3VjY2Vzc29yVmVydGljZXModmVydGV4TmFtZSwgcGFydGlhbEN5Y2xlLCBzdWNjZXNzb3JWZXJ0aWNlcyk7XG5cbiAgICAgICAgICBjeWNsZXMucHVzaChjeWNsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjeWNsZXNMZW5ndGggPSBjeWNsZXMubGVuZ3RoLFxuICAgICAgICAgICAgICB0ZXJtaW5hdGUgPSAoY3ljbGVzTGVuZ3RoID4gMCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm1pbmF0ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY3ljbGVzTGVuZ3RoID0gY3ljbGVzLmxlbmd0aDtcbiAgICBcbiAgICBpZiAoY3ljbGVzTGVuZ3RoID4gMCkge1xuICAgICAgZmlyc3RDeWNsZSA9IGZpcnN0KGN5Y2xlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpcnN0Q3ljbGU7XG4gIH1cblxuICBnZXRGaXJzdEN5Y2xlKCkge1xuICAgIGNvbnN0IGZpcnN0Q3ljbGljRWRnZSA9IGZpcnN0KHRoaXMuY3ljbGljRWRnZXMpLFxuICAgICAgICAgIGN5Y2xpY0VkZ2UgPSBmaXJzdEN5Y2xpY0VkZ2UsIC8vL1xuICAgICAgICAgIHNvdXJjZVZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFNvdXJjZVZlcnRleE5hbWUoKSxcbiAgICAgICAgICB2ZXJ0ZXhOYW1lID0gc291cmNlVmVydGV4TmFtZSwgIC8vL1xuICAgICAgICAgIGZpcnN0Q3ljbGUgPSB0aGlzLmdldEZpcnN0Q3ljbGVCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICByZXR1cm4gZmlyc3RDeWNsZTtcbiAgfVxuXG4gIGdldFZlcnRleE5hbWVzKCkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhOYW1lcygpOyB9XG5cbiAgZ2V0T3JkZXJlZFZlcnRleE5hbWVzKCkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRPcmRlcmVkVmVydGV4TmFtZXMoKTsgfVxuXG4gIGFyZUN5Y2xlc1ByZXNlbnQoKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXNMZW5ndGggPSB0aGlzLmN5Y2xpY0VkZ2VzLmxlbmd0aCxcbiAgICAgICAgICBjeWNsZXNQcmVzZW50ID0gKGN5Y2xpY0VkZ2VzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gY3ljbGVzUHJlc2VudDtcbiAgfVxuXG4gIGFkZFZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSB7IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguYWRkVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpOyB9XG5cbiAgYWRkVmVydGljZXNCeVZlcnRleE5hbWVzKHZlcnRleE5hbWVzKSB7XG4gICAgdmVydGV4TmFtZXMuZm9yRWFjaCgodmVydGV4TmFtZSkgPT4gdGhpcy5hZGRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSkpO1xuICB9XG5cbiAgcmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHtcbiAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIHRoaXMuZmlsdGVyQ3ljbGljRWRnZXMoKTtcbiAgfVxuXG4gIHJlbW92ZVZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyh2ZXJ0ZXhOYW1lcykge1xuICAgIHZlcnRleE5hbWVzLmZvckVhY2goKHZlcnRleE5hbWUpID0+IHRoaXMucmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpKTtcbiAgfVxuXG4gIGFkZEVkZ2UoZWRnZSkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmFkZEVkZ2UoZWRnZSk7XG4gICAgXG4gICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICBjb25zdCBjeWNsaWNFZGdlc0luY2x1ZGVzRWRnZSA9IGNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UoZWRnZSwgdGhpcy5jeWNsaWNFZGdlcyk7XG5cbiAgICAgIGlmICghY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2UpIHtcbiAgICAgICAgY29uc3QgY3ljbGljRWRnZSA9IGVkZ2U7ICAvLy9cblxuICAgICAgICB0aGlzLmN5Y2xpY0VkZ2VzLnB1c2goY3ljbGljRWRnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBhZGRFZGdlcyhlZGdlcykge1xuICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHRoaXMuYWRkRWRnZShlZGdlKSk7XG4gIH1cblxuICByZW1vdmVFZGdlKGVkZ2UsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzSW5jbHVkZXNFZGdlID0gY2hlY2tFZGdlc0luY2x1ZGVzRWRnZShlZGdlLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlUHJlc2VudCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNFZGdlUHJlc2VudChlZGdlKSxcbiAgICAgICAgICBlZGdlQ3ljbGljID0gY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2U7IC8vL1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGVkZ2VDeWNsaWMpIHtcbiAgICAgIGNvbnN0IGN5Y2xpY0VkZ2UgPSBlZGdlOyAgLy8vXG5cbiAgICAgIHJlbW92ZUVkZ2VGcm9tRWRnZXMoY3ljbGljRWRnZSwgdGhpcy5jeWNsaWNFZGdlcyk7XG4gICAgfSBlbHNlIGlmIChlZGdlUHJlc2VudCkge1xuICAgICAgdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5yZW1vdmVFZGdlKGVkZ2UpO1xuXG4gICAgICBpZiAocmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcykge1xuICAgICAgICBjb25zdCBzb3VyY2VWZXJ0ZXhOYW1lID0gZWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleE5hbWUgPSBlZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgICAgc291cmNlVmVydGV4ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhCeVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0VmVydGV4QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpLFxuICAgICAgICAgICAgICBzb3VyY2VWZXJ0ZXhTdHJhbmRlZCA9IHNvdXJjZVZlcnRleC5pc1N0cmFuZGVkKCksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleFN0cmFuZGVkID0gdGFyZ2V0VmVydGV4LmlzU3RyYW5kZWQoKTtcblxuICAgICAgICBpZiAoc291cmNlVmVydGV4U3RyYW5kZWQpIHtcbiAgICAgICAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRWZXJ0ZXhTdHJhbmRlZCkge1xuICAgICAgICAgIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGgucmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJDeWNsaWNFZGdlcygpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHRoaXMucmVtb3ZlRWRnZShlZGdlLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKSk7XG4gIH1cblxuICBhZGRFZGdlQnlWZXJ0ZXhOYW1lcyhzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKSB7XG4gICAgY29uc3QgZWRnZSA9IEVkZ2UuZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5hZGRFZGdlKGVkZ2UpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZUJ5VmVydGV4TmFtZXMoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgZWRnZSA9IEVkZ2UuZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5yZW1vdmVFZGdlKGVkZ2UsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXMgPSBlZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0RWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGN5Y2xpY0VkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcblxuICAgIHRoaXMucmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXNCeVNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXMgPSBlZGdlc0J5U291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0RWRnZXNCeVNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGN5Y2xpY0VkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcblxuICAgIHRoaXMucmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlQWxsRWRnZXNBbmRWZXJ0aWNlcygpIHtcbiAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoID0gRGlyZWN0ZWRBY3ljbGljR3JhcGguZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMuY3ljbGljRWRnZXMgPSBbXTtcbiAgfVxuXG4gIGZpbHRlckN5Y2xpY0VkZ2VzKCkge1xuICAgIGZpbHRlcih0aGlzLmN5Y2xpY0VkZ2VzLCAoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgc291cmNlVmVydGV4UHJlc2VudCA9IHRoaXMuaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4UHJlc2VudCA9IHRoaXMuaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgICBpZiAoc291cmNlVmVydGV4UHJlc2VudCAmJiB0YXJnZXRWZXJ0ZXhQcmVzZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZmlsdGVyKHRoaXMuY3ljbGljRWRnZXMsIChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICBjb25zdCBlZGdlID0gY3ljbGljRWRnZSwgIC8vL1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguYWRkRWRnZShlZGdlKTtcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzID0gW10sXG4gICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tTm90aGluZygpLFxuICAgICAgICAgIGRpcmVjdGVkR3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaChjeWNsaWNFZGdlcywgZGlyZWN0ZWRBY3ljbGljR3JhcGgpO1xuICAgIFxuICAgIHJldHVybiBkaXJlY3RlZEdyYXBoOyAgICBcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmVydGV4TGl0ZXJhbHModmVydGV4TGl0ZXJhbHMpIHtcbiAgICBjb25zdCB2ZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleExpdGVyYWxzKHZlcnRleExpdGVyYWxzKSxcbiAgICAgICAgICBlZGdlcyA9IGVkZ2VzRnJvbVZlcnRleExpdGVyYWxzKHZlcnRleExpdGVyYWxzKSxcbiAgICAgICAgICBkaXJlY3RlZEdyYXBoID0gRGlyZWN0ZWRHcmFwaC5mcm9tVmVydGV4TmFtZXNBbmRFZGdlcyh2ZXJ0ZXhOYW1lcywgZWRnZXMpO1xuXG4gICAgcmV0dXJuIGRpcmVjdGVkR3JhcGg7XG4gIH1cblxuICBzdGF0aWMgZnJvbVZlcnRleE5hbWVzQW5kRWRnZXModmVydGV4TmFtZXMsIGVkZ2VzKSB7XG4gICAgbGV0IGRpcmVjdGVkR3JhcGg7XG5cbiAgICBjb25zdCBncmFwaCA9IEdyYXBoLmZyb21WZXJ0ZXhOYW1lc0FuZEVkZ2VzKHZlcnRleE5hbWVzLCBlZGdlcyksXG4gICAgICAgICAgY3ljbGVzUHJlc2VudCA9IGdyYXBoLmFyZUN5Y2xlc1ByZXNlbnQoKTtcblxuICAgIGlmIChjeWNsZXNQcmVzZW50KSB7XG4gICAgICBjb25zdCBjeWNsaWNFZGdlcyA9IFtdLFxuICAgICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tVmVydGV4TmFtZXModmVydGV4TmFtZXMpO1xuXG4gICAgICBkaXJlY3RlZEdyYXBoID0gbmV3IERpcmVjdGVkR3JhcGgoY3ljbGljRWRnZXMsIGRpcmVjdGVkQWN5Y2xpY0dyYXBoKTtcblxuICAgICAgZWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4gZGlyZWN0ZWRHcmFwaC5hZGRFZGdlKGVkZ2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3JkZXJlZFZlcnRpY2VzID0gZ3JhcGguZ2V0T3JkZXJlZFZlcnRpY2VzKCksXG4gICAgICAgICAgICBjeWNsaWNFZGdlcyA9IFtdLFxuICAgICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tT3JkZXJlZFZlcnRpY2VzKG9yZGVyZWRWZXJ0aWNlcyk7XG5cbiAgICAgIGRpcmVjdGVkR3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaChjeWNsaWNFZGdlcywgZGlyZWN0ZWRBY3ljbGljR3JhcGgpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXJlY3RlZEdyYXBoO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZmlyc3QiLCJmaWx0ZXIiLCJEaXJlY3RlZEdyYXBoIiwiY3ljbGljRWRnZXMiLCJkaXJlY3RlZEFjeWNsaWNHcmFwaCIsImdldEN5Y2xpY0VkZ2VzIiwiZ2V0RGlyZWN0ZWRBY3ljbGljR3JhcGgiLCJnZXRJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lIiwidmVydGV4TmFtZSIsImluY2x1ZGVDeWNsaWNFZGdlcyIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJmb3JFYWNoIiwiY3ljbGljRWRnZSIsImN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lIiwiZ2V0VGFyZ2V0VmVydGV4TmFtZSIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0U291cmNlVmVydGV4TmFtZSIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZSIsInB1c2giLCJnZXRJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSIsImltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzIiwiaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZSIsImdldFByZWRlY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUiLCJnZXRTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSIsImFyZUN5Y2xlc1ByZXNlbnRCeVZlcnRleE5hbWUiLCJjeWNsZXNQcmVzZW50IiwidmVydGV4UHJlc2VudCIsImlzVmVydGV4UHJlc2VudEJ5VmVydGV4TmFtZSIsImZpcnN0Q3ljbGUiLCJnZXRGaXJzdEN5Y2xlQnlWZXJ0ZXhOYW1lIiwiaXNFZGdlUHJlc2VudEJ5VmVydGV4TmFtZXMiLCJzb3VyY2VWZXJ0ZXhOYW1lIiwidGFyZ2V0VmVydGV4TmFtZSIsInZlcnRleCIsImdldFZlcnRleEJ5VmVydGV4TmFtZSIsInNsaWNlIiwicGFydGlhbEN5Y2xlcyIsImN5Y2xlcyIsInZpc2l0ZWRWZXJ0ZXgiLCJnZXRQcmVkZWNlc3NvclZlcnRpY2VzIiwidmlzaXRlZFZlcnRleE5hbWUiLCJnZXROYW1lIiwibWF0Y2hlcyIsIm1hdGNoU291cmNlVmVydGV4TmFtZSIsInByZWRlY2Vzc29yVmVydGljZXMiLCJwYXJ0aWFsQ3ljbGUiLCJmcm9tQ3ljbGljRWRnZUFuZFByZWRlY2Vzc29yVmVydGljZXMiLCJjeWNsaWNFZGdlc0xlbmd0aCIsImxlbmd0aCIsInRlcm1pbmF0ZSIsInNvbWUiLCJ0YXJnZXRWZXJ0ZXgiLCJzdWNjZXNzb3JWZXJ0aWNlcyIsImN5Y2xlIiwiZnJvbVZlcnRleE5hbWVQYXJ0aWFsQ3ljbGVBbmRTdWNjZXNzb3JWZXJ0aWNlcyIsImN5Y2xlc0xlbmd0aCIsImdldEZpcnN0Q3ljbGUiLCJmaXJzdEN5Y2xpY0VkZ2UiLCJnZXRWZXJ0ZXhOYW1lcyIsImdldE9yZGVyZWRWZXJ0ZXhOYW1lcyIsImFyZUN5Y2xlc1ByZXNlbnQiLCJhZGRWZXJ0ZXhCeVZlcnRleE5hbWUiLCJhZGRWZXJ0aWNlc0J5VmVydGV4TmFtZXMiLCJ2ZXJ0ZXhOYW1lcyIsInJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSIsImZpbHRlckN5Y2xpY0VkZ2VzIiwicmVtb3ZlVmVydGljZXNCeVZlcnRleE5hbWVzIiwiYWRkRWRnZSIsImVkZ2UiLCJzdWNjZXNzIiwiY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2UiLCJhZGRFZGdlcyIsImVkZ2VzIiwicmVtb3ZlRWRnZSIsInJlbW92ZVN0cmFuZGVkVmVydGljZXMiLCJlZGdlUHJlc2VudCIsImlzRWRnZVByZXNlbnQiLCJlZGdlQ3ljbGljIiwic291cmNlVmVydGV4Iiwic291cmNlVmVydGV4U3RyYW5kZWQiLCJpc1N0cmFuZGVkIiwidGFyZ2V0VmVydGV4U3RyYW5kZWQiLCJyZW1vdmVFZGdlcyIsImFkZEVkZ2VCeVZlcnRleE5hbWVzIiwiZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lIiwicmVtb3ZlRWRnZUJ5VmVydGV4TmFtZXMiLCJyZW1vdmVFZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSIsImdldEVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lIiwicmVtb3ZlRWRnZXNCeVNvdXJjZVZlcnRleE5hbWUiLCJnZXRFZGdlc0J5U291cmNlVmVydGV4TmFtZSIsInJlbW92ZUFsbEVkZ2VzQW5kVmVydGljZXMiLCJmcm9tTm90aGluZyIsInNvdXJjZVZlcnRleFByZXNlbnQiLCJ0YXJnZXRWZXJ0ZXhQcmVzZW50IiwiZGlyZWN0ZWRHcmFwaCIsImZyb21WZXJ0ZXhMaXRlcmFscyIsInZlcnRleExpdGVyYWxzIiwiZnJvbVZlcnRleE5hbWVzQW5kRWRnZXMiLCJncmFwaCIsImZyb21WZXJ0ZXhOYW1lcyIsIm9yZGVyZWRWZXJ0aWNlcyIsImdldE9yZGVyZWRWZXJ0aWNlcyIsImZyb21PcmRlcmVkVmVydGljZXMiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRVUsR0FBWSxDQUFaLFVBQVk7QUFDSCxHQUFXLENBQVgsVUFBVztBQUNMLEdBQW9CLENBQXBCLGlCQUFvQjtBQUV4QyxHQUFRLENBQVIsS0FBUTtBQUNQLEdBQVMsQ0FBVCxNQUFTO0FBQ0YsR0FBZ0IsQ0FBaEIsYUFBZ0I7QUFFK0IsR0FBb0IsQ0FBcEIsT0FBb0I7QUFDMkMsR0FBa0IsQ0FBbEIsTUFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFekosR0FBSyxDQUFHQSxL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
381
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RlZEdyYXBoLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gXCJvY2NhbS1rYWhuXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IERpcmVjdGVkQWN5Y2xpY0dyYXBoIH0gZnJvbSBcIm9jY2FtLXBlYXJjZS1rZWxseVwiO1xuXG5pbXBvcnQgRWRnZSBmcm9tIFwiLi9lZGdlXCI7XG5pbXBvcnQgQ3ljbGUgZnJvbSBcIi4vY3ljbGVcIjtcbmltcG9ydCBQYXJ0aWFsQ3ljbGUgZnJvbSBcIi4vcGFydGlhbEN5Y2xlXCI7XG5cbmltcG9ydCB7IHZlcnRleE5hbWVzRnJvbVZlcnRleExpdGVyYWxzLCBmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2ggfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVydGV4XCI7XG5pbXBvcnQgeyBlZGdlc0Zyb21WZXJ0ZXhMaXRlcmFscywgY2hlY2tFZGdlc0luY2x1ZGVzRWRnZSwgcmVtb3ZlRWRnZUZyb21FZGdlcywgZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUsIGVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2VkZ2VcIjtcblxuY29uc3QgeyBmaXJzdCwgZmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlyZWN0ZWRHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKGN5Y2xpY0VkZ2VzLCBkaXJlY3RlZEFjeWNsaWNHcmFwaCkge1xuICAgIHRoaXMuY3ljbGljRWRnZXMgPSBjeWNsaWNFZGdlcztcblxuICAgIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBkaXJlY3RlZEFjeWNsaWNHcmFwaDtcbiAgfVxuXG4gIGdldEN5Y2xpY0VkZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLmN5Y2xpY0VkZ2VzO1xuICB9XG5cbiAgZ2V0RGlyZWN0ZWRBY3ljbGljR3JhcGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGg7XG4gIH1cblxuICBnZXRWZXJ0ZXhOYW1lcygpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0VmVydGV4TmFtZXMoKTsgfVxuXG4gIGdldE9yZGVyZWRWZXJ0ZXhOYW1lcygpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0T3JkZXJlZFZlcnRleE5hbWVzKCk7IH1cblxuICBhZGRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmFkZFZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTsgfVxuXG4gIGlzRWRnZVByZXNlbnRCeVZlcnRleE5hbWVzKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNFZGdlUHJlc2VudEJ5VmVydGV4TmFtZXMoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSk7IH1cblxuICBpc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5pc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7IH1cblxuICBnZXRTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpOyB9XG5cbiAgZ2V0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFByZWRlY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7IH1cblxuICBnZXRJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUsIGluY2x1ZGVDeWNsaWNFZGdlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIGlmIChpbmNsdWRlQ3ljbGljRWRnZXMpIHtcbiAgICAgIHRoaXMuY3ljbGljRWRnZXMuZm9yRWFjaCgoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgICBjb25zdCBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuXG4gICAgICAgIGlmIChjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9PT0gdmVydGV4TmFtZSkge1xuICAgICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgICAgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWU7ICAvLy9cblxuICAgICAgICAgIGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMucHVzaChpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUsIGluY2x1ZGVDeWNsaWNFZGdlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpO1xuXG4gICAgaWYgKGluY2x1ZGVDeWNsaWNFZGdlcykge1xuICAgICAgdGhpcy5jeWNsaWNFZGdlcy5mb3JFYWNoKChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCk7XG5cbiAgICAgICAgaWYgKGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID09PSB2ZXJ0ZXhOYW1lKSB7XG4gICAgICAgICAgY29uc3QgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgICAgICBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWU7ICAvLy9cblxuICAgICAgICAgIGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzLnB1c2goaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGFyZUN5Y2xlc1ByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSkge1xuICAgIGxldCBjeWNsZXNQcmVzZW50ID0gZmFsc2U7XG5cbiAgICBjb25zdCB2ZXJ0ZXhQcmVzZW50ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5pc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICBpZiAodmVydGV4UHJlc2VudCkge1xuICAgICAgY29uc3QgZmlyc3RDeWNsZSA9IHRoaXMuZ2V0Rmlyc3RDeWNsZUJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgICAgY3ljbGVzUHJlc2VudCA9IChmaXJzdEN5Y2xlICE9PSBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3ljbGVzUHJlc2VudDtcbiAgfVxuXG4gIGdldEZpcnN0Q3ljbGVCeVZlcnRleE5hbWUodmVydGV4TmFtZSkge1xuICAgIGxldCBmaXJzdEN5Y2xlID0gbnVsbDtcbiAgICBcbiAgICBjb25zdCB2ZXJ0ZXggPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSxcbiAgICAgICAgICBjeWNsaWNFZGdlcyA9IHRoaXMuY3ljbGljRWRnZXMuc2xpY2UoKSwgLy8vXG4gICAgICAgICAgcGFydGlhbEN5Y2xlcyA9IFtdLFxuICAgICAgICAgIGN5Y2xlcyA9IFtdO1xuXG4gICAgZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKHZlcnRleCwgKHZpc2l0ZWRWZXJ0ZXgsIGdldFByZWRlY2Vzc29yVmVydGljZXMpID0+IHtcbiAgICAgIGNvbnN0IHZpc2l0ZWRWZXJ0ZXhOYW1lID0gdmlzaXRlZFZlcnRleC5nZXROYW1lKCksXG4gICAgICAgICAgICBzb3VyY2VWZXJ0ZXhOYW1lID0gdmlzaXRlZFZlcnRleE5hbWU7IC8vL1xuXG4gICAgICBmaWx0ZXIoY3ljbGljRWRnZXMsIChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBjeWNsaWNFZGdlLm1hdGNoU291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lKTtcblxuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgIGNvbnN0IHByZWRlY2Vzc29yVmVydGljZXMgPSBnZXRQcmVkZWNlc3NvclZlcnRpY2VzKCksXG4gICAgICAgICAgICAgICAgcGFydGlhbEN5Y2xlID0gIFBhcnRpYWxDeWNsZS5mcm9tQ3ljbGljRWRnZUFuZFByZWRlY2Vzc29yVmVydGljZXMoY3ljbGljRWRnZSwgcHJlZGVjZXNzb3JWZXJ0aWNlcyk7XG4gICAgICAgICAgXG4gICAgICAgICAgcGFydGlhbEN5Y2xlcy5wdXNoKHBhcnRpYWxDeWNsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjeWNsaWNFZGdlc0xlbmd0aCA9IGN5Y2xpY0VkZ2VzLmxlbmd0aCxcbiAgICAgICAgICAgIHRlcm1pbmF0ZSA9IChjeWNsaWNFZGdlc0xlbmd0aCA9PT0gMCk7XG5cbiAgICAgIHJldHVybiB0ZXJtaW5hdGU7XG4gICAgfSk7XG5cbiAgICBwYXJ0aWFsQ3ljbGVzLnNvbWUoKHBhcnRpYWxDeWNsZSkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0VmVydGV4TmFtZSA9IHBhcnRpYWxDeWNsZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICB0YXJnZXRWZXJ0ZXggPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFZlcnRleEJ5VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgICAgZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKHRhcmdldFZlcnRleCwgKHZpc2l0ZWRWZXJ0ZXgsIGdldFByZWRlY2Vzc29yVmVydGljZXMpID0+IHtcbiAgICAgICAgY29uc3QgdmlzaXRlZFZlcnRleE5hbWUgPSB2aXNpdGVkVmVydGV4LmdldE5hbWUoKTtcblxuICAgICAgICBpZiAodmlzaXRlZFZlcnRleE5hbWUgPT09IHZlcnRleE5hbWUpIHtcbiAgICAgICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzID0gZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NvclZlcnRpY2VzID0gcHJlZGVjZXNzb3JWZXJ0aWNlcywgIC8vL1xuICAgICAgICAgICAgICAgIGN5Y2xlID0gQ3ljbGUuZnJvbVZlcnRleE5hbWVQYXJ0aWFsQ3ljbGVBbmRTdWNjZXNzb3JWZXJ0aWNlcyh2ZXJ0ZXhOYW1lLCBwYXJ0aWFsQ3ljbGUsIHN1Y2Nlc3NvclZlcnRpY2VzKTtcblxuICAgICAgICAgIGN5Y2xlcy5wdXNoKGN5Y2xlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN5Y2xlc0xlbmd0aCA9IGN5Y2xlcy5sZW5ndGgsXG4gICAgICAgICAgICAgIHRlcm1pbmF0ZSA9IChjeWNsZXNMZW5ndGggPiAwKTtcblxuICAgICAgICByZXR1cm4gdGVybWluYXRlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjeWNsZXNMZW5ndGggPSBjeWNsZXMubGVuZ3RoO1xuICAgIFxuICAgIGlmIChjeWNsZXNMZW5ndGggPiAwKSB7XG4gICAgICBmaXJzdEN5Y2xlID0gZmlyc3QoY3ljbGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3RDeWNsZTtcbiAgfVxuXG4gIGdldEZpcnN0Q3ljbGUoKSB7XG4gICAgY29uc3QgZmlyc3RDeWNsaWNFZGdlID0gZmlyc3QodGhpcy5jeWNsaWNFZGdlcyksXG4gICAgICAgICAgY3ljbGljRWRnZSA9IGZpcnN0Q3ljbGljRWRnZSwgLy8vXG4gICAgICAgICAgc291cmNlVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpLFxuICAgICAgICAgIHZlcnRleE5hbWUgPSBzb3VyY2VWZXJ0ZXhOYW1lLCAgLy8vXG4gICAgICAgICAgZmlyc3RDeWNsZSA9IHRoaXMuZ2V0Rmlyc3RDeWNsZUJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIHJldHVybiBmaXJzdEN5Y2xlO1xuICB9XG5cbiAgYXJlQ3ljbGVzUHJlc2VudCgpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlc0xlbmd0aCA9IHRoaXMuY3ljbGljRWRnZXMubGVuZ3RoLFxuICAgICAgICAgIGN5Y2xlc1ByZXNlbnQgPSAoY3ljbGljRWRnZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjeWNsZXNQcmVzZW50O1xuICB9XG5cbiAgYWRkVmVydGljZXNCeVZlcnRleE5hbWVzKHZlcnRleE5hbWVzKSB7XG4gICAgdmVydGV4TmFtZXMuZm9yRWFjaCgodmVydGV4TmFtZSkgPT4gdGhpcy5hZGRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSkpO1xuICB9XG5cbiAgcmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHtcbiAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIHRoaXMuZmlsdGVyQ3ljbGljRWRnZXMoKTtcbiAgfVxuXG4gIHJlbW92ZVZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyh2ZXJ0ZXhOYW1lcykge1xuICAgIHZlcnRleE5hbWVzLmZvckVhY2goKHZlcnRleE5hbWUpID0+IHRoaXMucmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpKTtcbiAgfVxuXG4gIGFkZEVkZ2UoZWRnZSkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmFkZEVkZ2UoZWRnZSk7XG4gICAgXG4gICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICBjb25zdCBjeWNsaWNFZGdlc0luY2x1ZGVzRWRnZSA9IGNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UoZWRnZSwgdGhpcy5jeWNsaWNFZGdlcyk7XG5cbiAgICAgIGlmICghY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2UpIHtcbiAgICAgICAgY29uc3QgY3ljbGljRWRnZSA9IGVkZ2U7ICAvLy9cblxuICAgICAgICB0aGlzLmN5Y2xpY0VkZ2VzLnB1c2goY3ljbGljRWRnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBhZGRFZGdlcyhlZGdlcykge1xuICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHRoaXMuYWRkRWRnZShlZGdlKSk7XG4gIH1cblxuICByZW1vdmVFZGdlKGVkZ2UsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzSW5jbHVkZXNFZGdlID0gY2hlY2tFZGdlc0luY2x1ZGVzRWRnZShlZGdlLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlUHJlc2VudCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNFZGdlUHJlc2VudChlZGdlKSxcbiAgICAgICAgICBlZGdlQ3ljbGljID0gY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2U7IC8vL1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGVkZ2VDeWNsaWMpIHtcbiAgICAgIGNvbnN0IGN5Y2xpY0VkZ2UgPSBlZGdlOyAgLy8vXG5cbiAgICAgIHJlbW92ZUVkZ2VGcm9tRWRnZXMoY3ljbGljRWRnZSwgdGhpcy5jeWNsaWNFZGdlcyk7XG4gICAgfSBlbHNlIGlmIChlZGdlUHJlc2VudCkge1xuICAgICAgdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5yZW1vdmVFZGdlKGVkZ2UpO1xuXG4gICAgICBpZiAocmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcykge1xuICAgICAgICBjb25zdCBzb3VyY2VWZXJ0ZXhOYW1lID0gZWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleE5hbWUgPSBlZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgICAgc291cmNlVmVydGV4ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhCeVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0VmVydGV4QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpLFxuICAgICAgICAgICAgICBzb3VyY2VWZXJ0ZXhTdHJhbmRlZCA9IHNvdXJjZVZlcnRleC5pc1N0cmFuZGVkKCksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleFN0cmFuZGVkID0gdGFyZ2V0VmVydGV4LmlzU3RyYW5kZWQoKTtcblxuICAgICAgICBpZiAoc291cmNlVmVydGV4U3RyYW5kZWQpIHtcbiAgICAgICAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRWZXJ0ZXhTdHJhbmRlZCkge1xuICAgICAgICAgIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGgucmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJDeWNsaWNFZGdlcygpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHRoaXMucmVtb3ZlRWRnZShlZGdlLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKSk7XG4gIH1cblxuICBhZGRFZGdlQnlWZXJ0ZXhOYW1lcyhzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKSB7XG4gICAgY29uc3QgZWRnZSA9IEVkZ2UuZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5hZGRFZGdlKGVkZ2UpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZUJ5VmVydGV4TmFtZXMoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgZWRnZSA9IEVkZ2UuZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5yZW1vdmVFZGdlKGVkZ2UsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXMgPSBlZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0RWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGN5Y2xpY0VkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcblxuICAgIHRoaXMucmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXNCeVNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXMgPSBlZGdlc0J5U291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0RWRnZXNCeVNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGN5Y2xpY0VkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcblxuICAgIHRoaXMucmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlQWxsRWRnZXNBbmRWZXJ0aWNlcygpIHtcbiAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoID0gRGlyZWN0ZWRBY3ljbGljR3JhcGguZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMuY3ljbGljRWRnZXMgPSBbXTtcbiAgfVxuXG4gIGZpbHRlckN5Y2xpY0VkZ2VzKCkge1xuICAgIGZpbHRlcih0aGlzLmN5Y2xpY0VkZ2VzLCAoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgc291cmNlVmVydGV4UHJlc2VudCA9IHRoaXMuaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4UHJlc2VudCA9IHRoaXMuaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgICBpZiAoc291cmNlVmVydGV4UHJlc2VudCAmJiB0YXJnZXRWZXJ0ZXhQcmVzZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZmlsdGVyKHRoaXMuY3ljbGljRWRnZXMsIChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICBjb25zdCBlZGdlID0gY3ljbGljRWRnZSwgIC8vL1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguYWRkRWRnZShlZGdlKTtcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzID0gW10sXG4gICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tTm90aGluZygpLFxuICAgICAgICAgIGRpcmVjdGVkR3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaChjeWNsaWNFZGdlcywgZGlyZWN0ZWRBY3ljbGljR3JhcGgpO1xuICAgIFxuICAgIHJldHVybiBkaXJlY3RlZEdyYXBoOyAgICBcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmVydGV4TGl0ZXJhbHModmVydGV4TGl0ZXJhbHMpIHtcbiAgICBjb25zdCB2ZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleExpdGVyYWxzKHZlcnRleExpdGVyYWxzKSxcbiAgICAgICAgICBlZGdlcyA9IGVkZ2VzRnJvbVZlcnRleExpdGVyYWxzKHZlcnRleExpdGVyYWxzKSxcbiAgICAgICAgICBkaXJlY3RlZEdyYXBoID0gRGlyZWN0ZWRHcmFwaC5mcm9tVmVydGV4TmFtZXNBbmRFZGdlcyh2ZXJ0ZXhOYW1lcywgZWRnZXMpO1xuXG4gICAgcmV0dXJuIGRpcmVjdGVkR3JhcGg7XG4gIH1cblxuICBzdGF0aWMgZnJvbVZlcnRleE5hbWVzQW5kRWRnZXModmVydGV4TmFtZXMsIGVkZ2VzKSB7XG4gICAgbGV0IGRpcmVjdGVkR3JhcGg7XG5cbiAgICBjb25zdCBncmFwaCA9IEdyYXBoLmZyb21WZXJ0ZXhOYW1lc0FuZEVkZ2VzKHZlcnRleE5hbWVzLCBlZGdlcyksXG4gICAgICAgICAgY3ljbGVzUHJlc2VudCA9IGdyYXBoLmFyZUN5Y2xlc1ByZXNlbnQoKTtcblxuICAgIGlmIChjeWNsZXNQcmVzZW50KSB7XG4gICAgICBjb25zdCBjeWNsaWNFZGdlcyA9IFtdLFxuICAgICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tVmVydGV4TmFtZXModmVydGV4TmFtZXMpO1xuXG4gICAgICBkaXJlY3RlZEdyYXBoID0gbmV3IERpcmVjdGVkR3JhcGgoY3ljbGljRWRnZXMsIGRpcmVjdGVkQWN5Y2xpY0dyYXBoKTtcblxuICAgICAgZWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4gZGlyZWN0ZWRHcmFwaC5hZGRFZGdlKGVkZ2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3JkZXJlZFZlcnRpY2VzID0gZ3JhcGguZ2V0T3JkZXJlZFZlcnRpY2VzKCksXG4gICAgICAgICAgICBjeWNsaWNFZGdlcyA9IFtdLFxuICAgICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tT3JkZXJlZFZlcnRpY2VzKG9yZGVyZWRWZXJ0aWNlcyk7XG5cbiAgICAgIGRpcmVjdGVkR3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaChjeWNsaWNFZGdlcywgZGlyZWN0ZWRBY3ljbGljR3JhcGgpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXJlY3RlZEdyYXBoO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkRpcmVjdGVkR3JhcGgiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZmlsdGVyIiwiY3ljbGljRWRnZXMiLCJkaXJlY3RlZEFjeWNsaWNHcmFwaCIsImdldEN5Y2xpY0VkZ2VzIiwiZ2V0RGlyZWN0ZWRBY3ljbGljR3JhcGgiLCJnZXRWZXJ0ZXhOYW1lcyIsImdldE9yZGVyZWRWZXJ0ZXhOYW1lcyIsImFkZFZlcnRleEJ5VmVydGV4TmFtZSIsInZlcnRleE5hbWUiLCJpc0VkZ2VQcmVzZW50QnlWZXJ0ZXhOYW1lcyIsInNvdXJjZVZlcnRleE5hbWUiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lIiwiZ2V0U3VjY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUiLCJnZXRQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lIiwiZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSIsImluY2x1ZGVDeWNsaWNFZGdlcyIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJmb3JFYWNoIiwiY3ljbGljRWRnZSIsImN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lIiwiZ2V0VGFyZ2V0VmVydGV4TmFtZSIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0U291cmNlVmVydGV4TmFtZSIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZSIsInB1c2giLCJnZXRJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSIsImltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzIiwiaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZSIsImFyZUN5Y2xlc1ByZXNlbnRCeVZlcnRleE5hbWUiLCJjeWNsZXNQcmVzZW50IiwidmVydGV4UHJlc2VudCIsImZpcnN0Q3ljbGUiLCJnZXRGaXJzdEN5Y2xlQnlWZXJ0ZXhOYW1lIiwidmVydGV4IiwiZ2V0VmVydGV4QnlWZXJ0ZXhOYW1lIiwic2xpY2UiLCJwYXJ0aWFsQ3ljbGVzIiwiY3ljbGVzIiwiZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoIiwidmlzaXRlZFZlcnRleCIsImdldFByZWRlY2Vzc29yVmVydGljZXMiLCJ2aXNpdGVkVmVydGV4TmFtZSIsImdldE5hbWUiLCJtYXRjaGVzIiwibWF0Y2hTb3VyY2VWZXJ0ZXhOYW1lIiwicHJlZGVjZXNzb3JWZXJ0aWNlcyIsInBhcnRpYWxDeWNsZSIsIlBhcnRpYWxDeWNsZSIsImZyb21DeWNsaWNFZGdlQW5kUHJlZGVjZXNzb3JWZXJ0aWNlcyIsImN5Y2xpY0VkZ2VzTGVuZ3RoIiwibGVuZ3RoIiwidGVybWluYXRlIiwic29tZSIsInRhcmdldFZlcnRleCIsInN1Y2Nlc3NvclZlcnRpY2VzIiwiY3ljbGUiLCJDeWNsZSIsImZyb21WZXJ0ZXhOYW1lUGFydGlhbEN5Y2xlQW5kU3VjY2Vzc29yVmVydGljZXMiLCJjeWNsZXNMZW5ndGgiLCJnZXRGaXJzdEN5Y2xlIiwiZmlyc3RDeWNsaWNFZGdlIiwiYXJlQ3ljbGVzUHJlc2VudCIsImFkZFZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyIsInZlcnRleE5hbWVzIiwicmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lIiwiZmlsdGVyQ3ljbGljRWRnZXMiLCJyZW1vdmVWZXJ0aWNlc0J5VmVydGV4TmFtZXMiLCJhZGRFZGdlIiwiZWRnZSIsInN1Y2Nlc3MiLCJjeWNsaWNFZGdlc0luY2x1ZGVzRWRnZSIsImNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UiLCJhZGRFZGdlcyIsImVkZ2VzIiwicmVtb3ZlRWRnZSIsInJlbW92ZVN0cmFuZGVkVmVydGljZXMiLCJlZGdlUHJlc2VudCIsImlzRWRnZVByZXNlbnQiLCJlZGdlQ3ljbGljIiwicmVtb3ZlRWRnZUZyb21FZGdlcyIsInNvdXJjZVZlcnRleCIsInNvdXJjZVZlcnRleFN0cmFuZGVkIiwiaXNTdHJhbmRlZCIsInRhcmdldFZlcnRleFN0cmFuZGVkIiwicmVtb3ZlRWRnZXMiLCJhZGRFZGdlQnlWZXJ0ZXhOYW1lcyIsIkVkZ2UiLCJmcm9tU291cmNlVmVydGV4TmFtZUFuZFRhcmdldFZlcnRleE5hbWUiLCJyZW1vdmVFZGdlQnlWZXJ0ZXhOYW1lcyIsInJlbW92ZUVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lIiwiZWRnZXNCeVRhcmdldFZlcnRleE5hbWUiLCJnZXRFZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSIsInJlbW92ZUVkZ2VzQnlTb3VyY2VWZXJ0ZXhOYW1lIiwiZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUiLCJnZXRFZGdlc0J5U291cmNlVmVydGV4TmFtZSIsInJlbW92ZUFsbEVkZ2VzQW5kVmVydGljZXMiLCJEaXJlY3RlZEFjeWNsaWNHcmFwaCIsImZyb21Ob3RoaW5nIiwic291cmNlVmVydGV4UHJlc2VudCIsInRhcmdldFZlcnRleFByZXNlbnQiLCJkaXJlY3RlZEdyYXBoIiwiZnJvbVZlcnRleExpdGVyYWxzIiwidmVydGV4TGl0ZXJhbHMiLCJ2ZXJ0ZXhOYW1lc0Zyb21WZXJ0ZXhMaXRlcmFscyIsImVkZ2VzRnJvbVZlcnRleExpdGVyYWxzIiwiZnJvbVZlcnRleE5hbWVzQW5kRWRnZXMiLCJncmFwaCIsIkdyYXBoIiwiZnJvbVZlcnRleE5hbWVzIiwib3JkZXJlZFZlcnRpY2VzIiwiZ2V0T3JkZXJlZFZlcnRpY2VzIiwiZnJvbU9yZGVyZWRWZXJ0aWNlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFlcUJBOzs7eUJBYkM7eUJBQ1M7Z0NBQ007eURBRXBCOzBEQUNDO2lFQUNPO3NCQUUrQztxQkFDK0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkksSUFBUUMsUUFBa0JDLHlCQUFjLENBQWhDRCxPQUFPRSxTQUFXRCx5QkFBYyxDQUF6QkM7QUFFQSxJQUFBLEFBQU1ILDhCQUFOO2FBQU1BLGNBQ1BJLFdBQVcsRUFBRUMsb0JBQW9COzhCQUQxQkw7UUFFakIsSUFBSSxDQUFDSSxXQUFXLEdBQUdBO1FBRW5CLElBQUksQ0FBQ0Msb0JBQW9CLEdBQUdBOztpQkFKWEw7O1lBT25CTSxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCO2dCQUNmLE9BQU8sSUFBSSxDQUFDRixXQUFXO1lBQ3pCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLDBCQUEwQjtnQkFDeEIsT0FBTyxJQUFJLENBQUNGLG9CQUFvQjtZQUNsQzs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUI7Z0JBQUUsT0FBTyxJQUFJLENBQUNILG9CQUFvQixDQUFDRyxjQUFjO1lBQUk7OztZQUV0RUMsS0FBQUE7bUJBQUFBLFNBQUFBLHdCQUF3QjtnQkFBRSxPQUFPLElBQUksQ0FBQ0osb0JBQW9CLENBQUNJLHFCQUFxQjtZQUFJOzs7WUFFcEZDLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JDLFVBQVUsRUFBRTtnQkFBRSxJQUFJLENBQUNOLG9CQUFvQixDQUFDSyxxQkFBcUIsQ0FBQ0M7WUFBYTs7O1lBRWpHQyxLQUFBQTttQkFBQUEsU0FBQUEsMkJBQTJCQyxnQkFBZ0IsRUFBRUMsZ0JBQWdCLEVBQUU7Z0JBQUUsT0FBTyxJQUFJLENBQUNULG9CQUFvQixDQUFDTywwQkFBMEIsQ0FBQ0Msa0JBQWtCQztZQUFtQjs7O1lBRWxLQyxLQUFBQTttQkFBQUEsU0FBQUEs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
package/lib/edge.js CHANGED
@@ -2,9 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = void 0;
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
6
11
  var _occamPearceKelly = require("occam-pearce-kelly");
7
12
  var _default = _occamPearceKelly.Edge;
8
- exports.default = _default;
9
13
 
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGdlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFZGdlIH0gZnJvbSBcIm9jY2FtLXBlYXJjZS1rZWxseVwiO1xuXG5leHBvcnQgZGVmYXVsdCBFZGdlO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRVMsR0FBb0IsQ0FBcEIsaUJBQW9CO2VBQXBCLGlCQUFvQiJ9
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGdlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBFZGdlIH0gZnJvbSBcIm9jY2FtLXBlYXJjZS1rZWxseVwiO1xuXG5leHBvcnQgZGVmYXVsdCBFZGdlO1xuIl0sIm5hbWVzIjpbIkVkZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBQTs7O2dDQUZxQjtJQUVyQixXQUFlQSxzQkFBSSJ9
package/lib/example.js CHANGED
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
2
5
  var _index = require("./index");
3
6
  var directedGraph = _index.DirectedGraph.fromNothing();
4
7
  directedGraph.addVerticesByVertexNames([
@@ -15,4 +18,4 @@ directedGraph.addEdgeByVertexNames("./occam-lexers", "./with-style");
15
18
  directedGraph.removeVertexByVertexName("./occam-lexers");
16
19
  debugger;
17
20
 
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leGFtcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIi4vaW5kZXhcIjsgIC8vL1xuXG5jb25zdCBkaXJlY3RlZEdyYXBoID0gRGlyZWN0ZWRHcmFwaC5mcm9tTm90aGluZygpO1xuXG5kaXJlY3RlZEdyYXBoLmFkZFZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyhbXG4gIFwiLi9lYXN5LWxheW91dFwiLFxuICBcIi4vZWFzeS13aXRoLXN0eWxlXCIsXG4gIFwiLi9vY2NhbS1sZXhlcnNcIixcbiAgXCIuL3dpdGgtc3R5bGVcIlxuXSk7XG5cbmRpcmVjdGVkR3JhcGguYWRkRWRnZUJ5VmVydGV4TmFtZXMoXCIuL2Vhc3ktd2l0aC1zdHlsZVwiLCBcIi4vZWFzeS1sYXlvdXRcIik7XG5kaXJlY3RlZEdyYXBoLmFkZEVkZ2VCeVZlcnRleE5hbWVzKFwiLi93aXRoLXN0eWxlXCIsIFwiLi9lYXN5LXdpdGgtc3R5bGVcIik7XG5kaXJlY3RlZEdyYXBoLmFkZEVkZ2VCeVZlcnRleE5hbWVzKFwiLi9lYXN5LWxheW91dFwiLCBcIi4vb2NjYW0tbGV4ZXJzXCIpO1xuZGlyZWN0ZWRHcmFwaC5hZGRFZGdlQnlWZXJ0ZXhOYW1lcyhcIi4vZWFzeS13aXRoLXN0eWxlXCIsIFwiLi9lYXN5LWxheW91dFwiKTtcbmRpcmVjdGVkR3JhcGguYWRkRWRnZUJ5VmVydGV4TmFtZXMoXCIuL29jY2FtLWxleGVyc1wiLCBcIi4vd2l0aC1zdHlsZVwiKTtcblxuZGlyZWN0ZWRHcmFwaC5yZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUoXCIuL29jY2FtLWxleGVyc1wiKTtcblxuZGVidWdnZXJcbiJdLCJuYW1lcyI6WyJkaXJlY3RlZEdyYXBoIiwiZnJvbU5vdGhpbmciLCJhZGRWZXJ0aWNlc0J5VmVydGV4TmFtZXMiLCJhZGRFZGdlQnlWZXJ0ZXhOYW1lcyIsInJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTtBQUVrQixHQUFTLENBQVQsTUFBUztBQUV2QyxHQUFLLENBQUNBLGFBQWEsR0FGVyxNQUFTLGVBRUhDLFdBQVc7QUFFL0NELGFBQWEsQ0FBQ0Usd0JBQXdCLENBQUMsQ0FBQztJQUN0QyxDQUFlO0lBQ2YsQ0FBbUI7SUFDbkIsQ0FBZ0I7SUFDaEIsQ0FBYztBQUNoQixDQUFDO0FBRURGLGFBQWEsQ0FBQ0csb0JBQW9CLENBQUMsQ0FBbUIsb0JBQUUsQ0FBZTtBQUN2RUgsYUFBYSxDQUFDRyxvQkFBb0IsQ0FBQyxDQUFjLGVBQUUsQ0FBbUI7QUFDdEVILGFBQWEsQ0FBQ0csb0JBQW9CLENBQUMsQ0FBZSxnQkFBRSxDQUFnQjtBQUNwRUgsYUFBYSxDQUFDRyxvQkFBb0IsQ0FBQyxDQUFtQixvQkFBRSxDQUFlO0FBQ3ZFSCxhQUFhLENBQUNHLG9CQUFvQixDQUFDLENBQWdCLGlCQUFFLENBQWM7QUFFbkVILGFBQWEsQ0FBQ0ksd0JBQXdCLENBQUMsQ0FBZ0I7QUFFdkQsUUFBUSJ9
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leGFtcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIi4vaW5kZXhcIjsgIC8vL1xuXG5jb25zdCBkaXJlY3RlZEdyYXBoID0gRGlyZWN0ZWRHcmFwaC5mcm9tTm90aGluZygpO1xuXG5kaXJlY3RlZEdyYXBoLmFkZFZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyhbXG4gIFwiLi9lYXN5LWxheW91dFwiLFxuICBcIi4vZWFzeS13aXRoLXN0eWxlXCIsXG4gIFwiLi9vY2NhbS1sZXhlcnNcIixcbiAgXCIuL3dpdGgtc3R5bGVcIlxuXSk7XG5cbmRpcmVjdGVkR3JhcGguYWRkRWRnZUJ5VmVydGV4TmFtZXMoXCIuL2Vhc3ktd2l0aC1zdHlsZVwiLCBcIi4vZWFzeS1sYXlvdXRcIik7XG5kaXJlY3RlZEdyYXBoLmFkZEVkZ2VCeVZlcnRleE5hbWVzKFwiLi93aXRoLXN0eWxlXCIsIFwiLi9lYXN5LXdpdGgtc3R5bGVcIik7XG5kaXJlY3RlZEdyYXBoLmFkZEVkZ2VCeVZlcnRleE5hbWVzKFwiLi9lYXN5LWxheW91dFwiLCBcIi4vb2NjYW0tbGV4ZXJzXCIpO1xuZGlyZWN0ZWRHcmFwaC5hZGRFZGdlQnlWZXJ0ZXhOYW1lcyhcIi4vZWFzeS13aXRoLXN0eWxlXCIsIFwiLi9lYXN5LWxheW91dFwiKTtcbmRpcmVjdGVkR3JhcGguYWRkRWRnZUJ5VmVydGV4TmFtZXMoXCIuL29jY2FtLWxleGVyc1wiLCBcIi4vd2l0aC1zdHlsZVwiKTtcblxuZGlyZWN0ZWRHcmFwaC5yZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUoXCIuL29jY2FtLWxleGVyc1wiKTtcblxuZGVidWdnZXJcbiJdLCJuYW1lcyI6WyJkaXJlY3RlZEdyYXBoIiwiRGlyZWN0ZWRHcmFwaCIsImZyb21Ob3RoaW5nIiwiYWRkVmVydGljZXNCeVZlcnRleE5hbWVzIiwiYWRkRWRnZUJ5VmVydGV4TmFtZXMiLCJyZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7O3FCQUU4QjtBQUU5QixJQUFNQSxnQkFBZ0JDLG9CQUFhLENBQUNDLFdBQVc7QUFFL0NGLGNBQWNHLHdCQUF3QixDQUFDO0lBQ3JDO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFREgsY0FBY0ksb0JBQW9CLENBQUMscUJBQXFCO0FBQ3hESixjQUFjSSxvQkFBb0IsQ0FBQyxnQkFBZ0I7QUFDbkRKLGNBQWNJLG9CQUFvQixDQUFDLGlCQUFpQjtBQUNwREosY0FBY0ksb0JBQW9CLENBQUMscUJBQXFCO0FBQ3hESixjQUFjSSxvQkFBb0IsQ0FBQyxrQkFBa0I7QUFFckRKLGNBQWNLLHdCQUF3QixDQUFDO0FBRXZDLFFBQVEifQ==
package/lib/index.js CHANGED
@@ -2,24 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "Edge", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ Edge: function() {
8
13
  return _edge.default;
9
- }
10
- });
11
- Object.defineProperty(exports, "DirectedGraph", {
12
- enumerable: true,
13
- get: function() {
14
+ },
15
+ DirectedGraph: function() {
14
16
  return _directedGraph.default;
15
17
  }
16
18
  });
17
- var _edge = _interopRequireDefault(require("./edge"));
18
- var _directedGraph = _interopRequireDefault(require("./directedGraph"));
19
+ var _edge = /*#__PURE__*/ _interopRequireDefault(require("./edge"));
20
+ var _directedGraph = /*#__PURE__*/ _interopRequireDefault(require("./directedGraph"));
19
21
  function _interopRequireDefault(obj) {
20
22
  return obj && obj.__esModule ? obj : {
21
23
  default: obj
22
24
  };
23
25
  }
24
26
 
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBFZGdlIH0gZnJvbSBcIi4vZWRnZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIi4vZGlyZWN0ZWRHcmFwaFwiO1xuIl0sIm5hbWVzIjpbIkVkZ2UiLCJkZWZhdWx0IiwiRGlyZWN0ZWRHcmFwaCJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OzsrQkFFUUEsQ0FBSTs7O3FCQUFmQyxPQUFPOzs7K0JBQ0lDLENBQWE7Ozs4QkFBeEJELE9BQU8ifQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBFZGdlIH0gZnJvbSBcIi4vZWRnZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIi4vZGlyZWN0ZWRHcmFwaFwiO1xuIl0sIm5hbWVzIjpbIkVkZ2UiLCJEaXJlY3RlZEdyYXBoIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFb0JBLElBQUk7ZUFBSkEsYUFBSTs7SUFDSkMsYUFBYTtlQUFiQSxzQkFBYTs7O3lEQUREO2tFQUNTIn0=
@@ -2,7 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = void 0;
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return PartialCycle;
9
+ }
10
+ });
6
11
  var _necessary = require("necessary");
7
12
  function _classCallCheck(instance, Constructor) {
8
13
  if (!(instance instanceof Constructor)) {
@@ -93,6 +98,5 @@ var PartialCycle = /*#__PURE__*/ function() {
93
98
  ]);
94
99
  return PartialCycle;
95
100
  }();
96
- exports.default = PartialCycle;
97
101
 
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsQ3ljbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFydGlhbEN5Y2xlIHtcbiAgY29uc3RydWN0b3IocHJlZGVjZXNzb3JWZXJ0aWNlcywgY3ljbGljRWRnZSkge1xuICAgIHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcyA9IHByZWRlY2Vzc29yVmVydGljZXM7XG4gICAgdGhpcy5jeWNsaWNFZGdlID0gY3ljbGljRWRnZTtcbiAgfVxuICBcbiAgZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWNlc3NvclZlcnRpY2VzO1xuICB9XG5cbiAgZ2V0Q3ljbGljRWRnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jeWNsaWNFZGdlO1xuICB9XG5cbiAgZ2V0VGFyZ2V0VmVydGV4TmFtZSgpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IHRoaXMuY3ljbGljRWRnZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lOyAgLy8vXG4gICAgXG4gICAgcmV0dXJuIHRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldFByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgcHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcy5tYXAoKHByZWRlY2Vzc29yVmVydGV4KSA9PiB7XG4gICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRleE5hbWUgPSBwcmVkZWNlc3NvclZlcnRleC5nZXROYW1lKCk7XG5cbiAgICAgIHJldHVybiBwcmVkZWNlc3NvclZlcnRleE5hbWU7XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIHByZWRlY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFNvdXJjZVZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIHN0YXRpYyBmcm9tQ3ljbGljRWRnZUFuZFByZWRlY2Vzc29yVmVydGljZXMoY3ljbGljRWRnZSwgcHJlZGVjZXNzb3JWZXJ0aWNlcykge1xuICAgIHByZWRlY2Vzc29yVmVydGljZXMgPSBwcmVkZWNlc3NvclZlcnRpY2VzLnNsaWNlKCk7ICAvLy9cbiAgICBcbiAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzTGVuZ3RoID0gcHJlZGVjZXNzb3JWZXJ0aWNlcy5sZW5ndGg7XG5cbiAgICBpZiAocHJlZGVjZXNzb3JWZXJ0aWNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXggPSBmaXJzdChwcmVkZWNlc3NvclZlcnRpY2VzKSxcbiAgICAgICAgICAgIGZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lID0gZmlyc3RQcmVkZWNlc3NvclZlcnRleC5nZXROYW1lKCksXG4gICAgICAgICAgICBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuXG4gICAgICBpZiAoZmlyc3RQcmVkZWNlc3NvclZlcnRleE5hbWUgPT09IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lKSB7XG4gICAgICAgIHByZWRlY2Vzc29yVmVydGljZXMuc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aWFsQ3ljbGUgPSBuZXcgUGFydGlhbEN5Y2xlKHByZWRlY2Vzc29yVmVydGljZXMsIGN5Y2xpY0VkZ2UpO1xuICAgIFxuICAgIHJldHVybiBwYXJ0aWFsQ3ljbGU7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJmaXJzdCIsIlBhcnRpYWxDeWNsZSIsInByZWRlY2Vzc29yVmVydGljZXMiLCJjeWNsaWNFZGdlIiwiZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcyIsImdldEN5Y2xpY0VkZ2UiLCJnZXRUYXJnZXRWZXJ0ZXhOYW1lIiwiY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiZ2V0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyIsInByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJtYXAiLCJwcmVkZWNlc3NvclZlcnRleCIsInByZWRlY2Vzc29yVmVydGV4TmFtZSIsImdldE5hbWUiLCJnZXRDeWNsaWNFZGdlU291cmNlVmVydGV4TmFtZSIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0U291cmNlVmVydGV4TmFtZSIsImdldEN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lIiwiZnJvbUN5Y2xpY0VkZ2VBbmRQcmVkZWNlc3NvclZlcnRpY2VzIiwic2xpY2UiLCJwcmVkZWNlc3NvclZlcnRpY2VzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RQcmVkZWNlc3NvclZlcnRleCIsImZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lIiwic2hpZnQiLCJwYXJ0aWFsQ3ljbGUiXSwibWFwcGluZ3MiOiJBQUFBLENBQVk7Ozs7O0FBRW1CLEdBQVcsQ0FBWCxVQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUx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
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsQ3ljbGUuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFydGlhbEN5Y2xlIHtcbiAgY29uc3RydWN0b3IocHJlZGVjZXNzb3JWZXJ0aWNlcywgY3ljbGljRWRnZSkge1xuICAgIHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcyA9IHByZWRlY2Vzc29yVmVydGljZXM7XG4gICAgdGhpcy5jeWNsaWNFZGdlID0gY3ljbGljRWRnZTtcbiAgfVxuICBcbiAgZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWNlc3NvclZlcnRpY2VzO1xuICB9XG5cbiAgZ2V0Q3ljbGljRWRnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jeWNsaWNFZGdlO1xuICB9XG5cbiAgZ2V0VGFyZ2V0VmVydGV4TmFtZSgpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IHRoaXMuY3ljbGljRWRnZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lOyAgLy8vXG4gICAgXG4gICAgcmV0dXJuIHRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldFByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgcHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcy5tYXAoKHByZWRlY2Vzc29yVmVydGV4KSA9PiB7XG4gICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRleE5hbWUgPSBwcmVkZWNlc3NvclZlcnRleC5nZXROYW1lKCk7XG5cbiAgICAgIHJldHVybiBwcmVkZWNlc3NvclZlcnRleE5hbWU7XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIHByZWRlY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFNvdXJjZVZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIHN0YXRpYyBmcm9tQ3ljbGljRWRnZUFuZFByZWRlY2Vzc29yVmVydGljZXMoY3ljbGljRWRnZSwgcHJlZGVjZXNzb3JWZXJ0aWNlcykge1xuICAgIHByZWRlY2Vzc29yVmVydGljZXMgPSBwcmVkZWNlc3NvclZlcnRpY2VzLnNsaWNlKCk7ICAvLy9cbiAgICBcbiAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzTGVuZ3RoID0gcHJlZGVjZXNzb3JWZXJ0aWNlcy5sZW5ndGg7XG5cbiAgICBpZiAocHJlZGVjZXNzb3JWZXJ0aWNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXggPSBmaXJzdChwcmVkZWNlc3NvclZlcnRpY2VzKSxcbiAgICAgICAgICAgIGZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lID0gZmlyc3RQcmVkZWNlc3NvclZlcnRleC5nZXROYW1lKCksXG4gICAgICAgICAgICBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuXG4gICAgICBpZiAoZmlyc3RQcmVkZWNlc3NvclZlcnRleE5hbWUgPT09IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lKSB7XG4gICAgICAgIHByZWRlY2Vzc29yVmVydGljZXMuc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aWFsQ3ljbGUgPSBuZXcgUGFydGlhbEN5Y2xlKHByZWRlY2Vzc29yVmVydGljZXMsIGN5Y2xpY0VkZ2UpO1xuICAgIFxuICAgIHJldHVybiBwYXJ0aWFsQ3ljbGU7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiUGFydGlhbEN5Y2xlIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsInByZWRlY2Vzc29yVmVydGljZXMiLCJjeWNsaWNFZGdlIiwiZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcyIsImdldEN5Y2xpY0VkZ2UiLCJnZXRUYXJnZXRWZXJ0ZXhOYW1lIiwiY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiZ2V0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyIsInByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJtYXAiLCJwcmVkZWNlc3NvclZlcnRleCIsInByZWRlY2Vzc29yVmVydGV4TmFtZSIsImdldE5hbWUiLCJnZXRDeWNsaWNFZGdlU291cmNlVmVydGV4TmFtZSIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0U291cmNlVmVydGV4TmFtZSIsImdldEN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lIiwiZnJvbUN5Y2xpY0VkZ2VBbmRQcmVkZWNlc3NvclZlcnRpY2VzIiwic2xpY2UiLCJwcmVkZWNlc3NvclZlcnRpY2VzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RQcmVkZWNlc3NvclZlcnRleCIsImZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lIiwic2hpZnQiLCJwYXJ0aWFsQ3ljbGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3lCQUpVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvQixJQUFNLEFBQUVDLFFBQVVDLHlCQUFjLENBQXhCRDtBQUVPLElBQUEsQUFBTUQsNkJBQU47YUFBTUEsYUFDUEcsbUJBQW1CLEVBQUVDLFVBQVU7OEJBRHhCSjtRQUVqQixJQUFJLENBQUNHLG1CQUFtQixHQUFHQTtRQUMzQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7O2lCQUhESjs7WUFNbkJLLEtBQUFBO21CQUFBQSxTQUFBQSx5QkFBeUI7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDRixtQkFBbUI7WUFDakM7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsZ0JBQWdCO2dCQUNkLE9BQU8sSUFBSSxDQUFDRixVQUFVO1lBQ3hCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQjtnQkFDcEIsSUFBTUMsNkJBQTZCLElBQUksQ0FBQ0osVUFBVSxDQUFDRyxtQkFBbUIsSUFDaEVFLG1CQUFtQkQsNEJBQTZCLEdBQUc7Z0JBRXpELE9BQU9DO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsNEJBQTRCO2dCQUMxQixJQUFNQyx5QkFBeUIsSUFBSSxDQUFDUixtQkFBbUIsQ0FBQ1MsR0FBRyxDQUFDLFNBQUNDLG1CQUFzQjtvQkFDakYsSUFBTUMsd0JBQXdCRCxrQkFBa0JFLE9BQU87b0JBRXZELE9BQU9EO2dCQUNUO2dCQUVBLE9BQU9IO1lBQ1Q7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsZ0NBQWdDO2dCQUM5QixJQUFNQyw2QkFBNkIsSUFBSSxDQUFDYixVQUFVLENBQUNjLG1CQUFtQjtnQkFFdEUsT0FBT0Q7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQSxnQ0FBZ0M7Z0JBQzlCLElBQU1YLDZCQUE2QixJQUFJLENBQUNKLFVBQVUsQ0FBQ0csbUJBQW1CO2dCQUV0RSxPQUFPQztZQUNUOzs7O1lBRU9ZLEtBQUFBO21CQUFQLFNBQU9BLHFDQUFxQ2hCLFVBQVUsRUFBRUQsbUJBQW1CLEVBQUU7Z0JBQzNFQSxzQkFBc0JBLG9CQUFvQmtCLEtBQUssSUFBSyxHQUFHO2dCQUV2RCxJQUFNQyw0QkFBNEJuQixvQkFBb0JvQixNQUFNO2dCQUU1RCxJQUFJRCw0QkFBNEIsR0FBRztvQkFDakMsSUFBTUUseUJBQXlCdkIsTUFBTUUsc0JBQy9Cc0IsNkJBQTZCRCx1QkFBdUJULE9BQU8sSUFDM0RQLDZCQUE2QkosV0FBV0csbUJBQW1CO29CQUVqRSxJQUFJa0IsK0JBQStCakIsNEJBQTRCO3dCQUM3REwsb0JBQW9CdUIsS0FBSztvQkFDM0IsQ0FBQztnQkFDSCxDQUFDO2dCQUVELElBQU1DLGVBQWUsSUExREozQixhQTBEcUJHLHFCQUFxQkM7Z0JBRTNELE9BQU91QjtZQUNUOzs7V0E3RG1CM0IifQ==
@@ -2,11 +2,29 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.edgesFromVertexLiterals = edgesFromVertexLiterals;
6
- exports.checkEdgesIncludesEdge = checkEdgesIncludesEdge;
7
- exports.removeEdgeFromEdges = removeEdgeFromEdges;
8
- exports.edgesBySourceVertexName = edgesBySourceVertexName;
9
- exports.edgesByTargetVertexName = edgesByTargetVertexName;
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ edgesFromVertexLiterals: function() {
13
+ return edgesFromVertexLiterals;
14
+ },
15
+ checkEdgesIncludesEdge: function() {
16
+ return checkEdgesIncludesEdge;
17
+ },
18
+ removeEdgeFromEdges: function() {
19
+ return removeEdgeFromEdges;
20
+ },
21
+ edgesBySourceVertexName: function() {
22
+ return edgesBySourceVertexName;
23
+ },
24
+ edgesByTargetVertexName: function() {
25
+ return edgesByTargetVertexName;
26
+ }
27
+ });
10
28
  var _necessary = require("necessary");
11
29
  var prune = _necessary.arrayUtilities.prune;
12
30
  var remove = prune; ///
@@ -21,8 +39,8 @@ function edgesFromVertexLiterals(vertexLiterals) {
21
39
  });
22
40
  return edges;
23
41
  }
24
- function checkEdgesIncludesEdge(edge3, edges) {
25
- var edge1 = edge3, edgesIncludesEdge = edges.some(function(edge) {
42
+ function checkEdgesIncludesEdge(edge, edges) {
43
+ var edge1 = edge, edgesIncludesEdge = edges.some(function(edge) {
26
44
  var edge2 = edge, matches = edge1.match(edge2);
27
45
  if (matches) {
28
46
  return true;
@@ -30,8 +48,8 @@ function checkEdgesIncludesEdge(edge3, edges) {
30
48
  });
31
49
  return edgesIncludesEdge;
32
50
  }
33
- function removeEdgeFromEdges(edge4, edges) {
34
- var edge1 = edge4; ///
51
+ function removeEdgeFromEdges(edge, edges) {
52
+ var edge1 = edge; ///
35
53
  remove(edges, function(edge) {
36
54
  var edge2 = edge, matches = edge1.match(edge2);
37
55
  if (!matches) {
@@ -58,4 +76,4 @@ function edgesByTargetVertexName(targetVertexName, edges) {
58
76
  return edges;
59
77
  }
60
78
 
61
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZWRnZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgcHJ1bmUgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jb25zdCByZW1vdmUgPSBwcnVuZTsgIC8vL1xuXG5leHBvcnQgZnVuY3Rpb24gZWRnZXNGcm9tVmVydGV4TGl0ZXJhbHModmVydGV4TGl0ZXJhbHMpIHtcbiAgY29uc3QgZWRnZXMgPSBbXTtcblxuICB2ZXJ0ZXhMaXRlcmFscy5mb3JFYWNoKCh2ZXJ0ZXhMaXRlcmFsKSA9PiB7XG4gICAgY29uc3QgZmlyc3RWZXJ0ZXhMaXRlcmFsRWxlbWVudCA9IGZpcnN0KHZlcnRleExpdGVyYWwpLFxuICAgICAgICAgIHNlY29uZFZlcnRleExpdGVyYWxFbGVtZW50ID0gc2Vjb25kKHZlcnRleExpdGVyYWwpLFxuICAgICAgICAgIGFuY2VzdG9yVmVydGV4TmFtZXMgPSBzZWNvbmRWZXJ0ZXhMaXRlcmFsRWxlbWVudCwgLy8vXG4gICAgICAgICAgdmVydGV4TmFtZSA9IGZpcnN0VmVydGV4TGl0ZXJhbEVsZW1lbnQ7IC8vL1xuXG4gICAgYW5jZXN0b3JWZXJ0ZXhOYW1lcy5mb3JFYWNoKChhbmNlc3RvclZlcnRleE5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVZlcnRleE5hbWUgPSBhbmNlc3RvclZlcnRleE5hbWUsIC8vL1xuICAgICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IHZlcnRleE5hbWUsICAvLy9cbiAgICAgICAgICAgIGVkZ2UgPSBuZXcgRWRnZShzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgICAgZWRnZXMucHVzaChlZGdlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFZGdlc0luY2x1ZGVzRWRnZShlZGdlLCBlZGdlcykge1xuICBjb25zdCBlZGdlMSA9IGVkZ2UsIC8vL1xuICAgICAgICBlZGdlc0luY2x1ZGVzRWRnZSA9IGVkZ2VzLnNvbWUoKGVkZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGdlMiA9IGVkZ2UsIC8vL1xuICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBlZGdlMS5tYXRjaChlZGdlMik7XG5cbiAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICByZXR1cm4gZWRnZXNJbmNsdWRlc0VkZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFZGdlRnJvbUVkZ2VzKGVkZ2UsIGVkZ2VzKSB7XG4gIGNvbnN0IGVkZ2UxID0gZWRnZTsgLy8vXG5cbiAgcmVtb3ZlKGVkZ2VzLCAoZWRnZSkgPT4ge1xuICAgIGNvbnN0IGVkZ2UyID0gZWRnZSwgLy8vXG4gICAgICAgICAgbWF0Y2hlcyA9IGVkZ2UxLm1hdGNoKGVkZ2UyKTtcblxuICAgIGlmICghbWF0Y2hlcykgeyAvLy9cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlZGdlc0J5U291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCBlZGdlcykge1xuICBlZGdlcyA9IGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4geyAgLy8vXG4gICAgY29uc3QgbWF0Y2hlcyA9IGVkZ2UubWF0Y2hTb3VyY2VWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSwgZWRnZXMpIHtcbiAgZWRnZXMgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IHsgIC8vL1xuICAgIGNvbnN0IG1hdGNoZXMgPSBlZGdlLm1hdGNoVGFyZ2V0VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBlZGdlcztcbn1cbiJdLCJuYW1lcyI6WyJlZGdlc0Zyb21WZXJ0ZXhMaXRlcmFscyIsImNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UiLCJyZW1vdmVFZGdlRnJvbUVkZ2VzIiwiZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUiLCJlZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSIsInBydW5lIiwicmVtb3ZlIiwidmVydGV4TGl0ZXJhbHMiLCJlZGdlcyIsImZvckVhY2giLCJ2ZXJ0ZXhMaXRlcmFsIiwiZmlyc3RWZXJ0ZXhMaXRlcmFsRWxlbWVudCIsImZpcnN0Iiwic2Vjb25kVmVydGV4TGl0ZXJhbEVsZW1lbnQiLCJzZWNvbmQiLCJhbmNlc3RvclZlcnRleE5hbWVzIiwidmVydGV4TmFtZSIsImFuY2VzdG9yVmVydGV4TmFtZSIsInNvdXJjZVZlcnRleE5hbWUiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiZWRnZSIsIkVkZ2UiLCJwdXNoIiwiZWRnZTEiLCJlZGdlc0luY2x1ZGVzRWRnZSIsInNvbWUiLCJlZGdlMiIsIm1hdGNoZXMiLCJtYXRjaCIsImZpbHRlciIsIm1hdGNoU291cmNlVmVydGV4TmFtZSIsIm1hdGNoVGFyZ2V0VmVydGV4TmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsQ0FBWTs7OztRQVFJQSx1QkFBdUIsR0FBdkJBLHVCQUF1QjtRQXFCdkJDLHNCQUFzQixHQUF0QkEsc0JBQXNCO1FBY3RCQyxtQkFBbUIsR0FBbkJBLG1CQUFtQjtRQWFuQkMsdUJBQXVCLEdBQXZCQSx1QkFBdUI7UUFZdkJDLHVCQUF1QixHQUF2QkEsdUJBQXVCO0FBbEVSLEdBQVcsQ0FBWCxVQUFXO0FBRTFDLEdBQUssQ0FBR0MsS0FBSyxHQUZrQixVQUFX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
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZWRnZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgcHJ1bmUgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jb25zdCByZW1vdmUgPSBwcnVuZTsgIC8vL1xuXG5leHBvcnQgZnVuY3Rpb24gZWRnZXNGcm9tVmVydGV4TGl0ZXJhbHModmVydGV4TGl0ZXJhbHMpIHtcbiAgY29uc3QgZWRnZXMgPSBbXTtcblxuICB2ZXJ0ZXhMaXRlcmFscy5mb3JFYWNoKCh2ZXJ0ZXhMaXRlcmFsKSA9PiB7XG4gICAgY29uc3QgZmlyc3RWZXJ0ZXhMaXRlcmFsRWxlbWVudCA9IGZpcnN0KHZlcnRleExpdGVyYWwpLFxuICAgICAgICAgIHNlY29uZFZlcnRleExpdGVyYWxFbGVtZW50ID0gc2Vjb25kKHZlcnRleExpdGVyYWwpLFxuICAgICAgICAgIGFuY2VzdG9yVmVydGV4TmFtZXMgPSBzZWNvbmRWZXJ0ZXhMaXRlcmFsRWxlbWVudCwgLy8vXG4gICAgICAgICAgdmVydGV4TmFtZSA9IGZpcnN0VmVydGV4TGl0ZXJhbEVsZW1lbnQ7IC8vL1xuXG4gICAgYW5jZXN0b3JWZXJ0ZXhOYW1lcy5mb3JFYWNoKChhbmNlc3RvclZlcnRleE5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVZlcnRleE5hbWUgPSBhbmNlc3RvclZlcnRleE5hbWUsIC8vL1xuICAgICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IHZlcnRleE5hbWUsICAvLy9cbiAgICAgICAgICAgIGVkZ2UgPSBuZXcgRWRnZShzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgICAgZWRnZXMucHVzaChlZGdlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFZGdlc0luY2x1ZGVzRWRnZShlZGdlLCBlZGdlcykge1xuICBjb25zdCBlZGdlMSA9IGVkZ2UsIC8vL1xuICAgICAgICBlZGdlc0luY2x1ZGVzRWRnZSA9IGVkZ2VzLnNvbWUoKGVkZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGdlMiA9IGVkZ2UsIC8vL1xuICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBlZGdlMS5tYXRjaChlZGdlMik7XG5cbiAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICByZXR1cm4gZWRnZXNJbmNsdWRlc0VkZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFZGdlRnJvbUVkZ2VzKGVkZ2UsIGVkZ2VzKSB7XG4gIGNvbnN0IGVkZ2UxID0gZWRnZTsgLy8vXG5cbiAgcmVtb3ZlKGVkZ2VzLCAoZWRnZSkgPT4ge1xuICAgIGNvbnN0IGVkZ2UyID0gZWRnZSwgLy8vXG4gICAgICAgICAgbWF0Y2hlcyA9IGVkZ2UxLm1hdGNoKGVkZ2UyKTtcblxuICAgIGlmICghbWF0Y2hlcykgeyAvLy9cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlZGdlc0J5U291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCBlZGdlcykge1xuICBlZGdlcyA9IGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4geyAgLy8vXG4gICAgY29uc3QgbWF0Y2hlcyA9IGVkZ2UubWF0Y2hTb3VyY2VWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSwgZWRnZXMpIHtcbiAgZWRnZXMgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IHsgIC8vL1xuICAgIGNvbnN0IG1hdGNoZXMgPSBlZGdlLm1hdGNoVGFyZ2V0VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBlZGdlcztcbn1cbiJdLCJuYW1lcyI6WyJlZGdlc0Zyb21WZXJ0ZXhMaXRlcmFscyIsImNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UiLCJyZW1vdmVFZGdlRnJvbUVkZ2VzIiwiZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUiLCJlZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSIsInBydW5lIiwiYXJyYXlVdGlsaXRpZXMiLCJyZW1vdmUiLCJ2ZXJ0ZXhMaXRlcmFscyIsImVkZ2VzIiwiZm9yRWFjaCIsInZlcnRleExpdGVyYWwiLCJmaXJzdFZlcnRleExpdGVyYWxFbGVtZW50IiwiZmlyc3QiLCJzZWNvbmRWZXJ0ZXhMaXRlcmFsRWxlbWVudCIsInNlY29uZCIsImFuY2VzdG9yVmVydGV4TmFtZXMiLCJ2ZXJ0ZXhOYW1lIiwiYW5jZXN0b3JWZXJ0ZXhOYW1lIiwic291cmNlVmVydGV4TmFtZSIsInRhcmdldFZlcnRleE5hbWUiLCJlZGdlIiwiRWRnZSIsInB1c2giLCJlZGdlMSIsImVkZ2VzSW5jbHVkZXNFZGdlIiwic29tZSIsImVkZ2UyIiwibWF0Y2hlcyIsIm1hdGNoIiwiZmlsdGVyIiwibWF0Y2hTb3VyY2VWZXJ0ZXhOYW1lIiwibWF0Y2hUYXJnZXRWZXJ0ZXhOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFRZ0JBLHVCQUF1QjtlQUF2QkE7O0lBcUJBQyxzQkFBc0I7ZUFBdEJBOztJQWNBQyxtQkFBbUI7ZUFBbkJBOztJQWFBQyx1QkFBdUI7ZUFBdkJBOztJQVlBQyx1QkFBdUI7ZUFBdkJBOzs7eUJBbEVlO0FBRS9CLElBQU0sQUFBRUMsUUFBVUMseUJBQWMsQ0FBeEJEO0FBRVIsSUFBTUUsU0FBU0YsT0FBUSxHQUFHO0FBRW5CLFNBQVNMLHdCQUF3QlEsY0FBYyxFQUFFO0lBQ3RELElBQU1DLFFBQVEsRUFBRTtJQUVoQkQsZUFBZUUsT0FBTyxDQUFDLFNBQUNDLGVBQWtCO1FBQ3hDLElBQU1DLDRCQUE0QkMsTUFBTUYsZ0JBQ2xDRyw2QkFBNkJDLE9BQU9KLGdCQUNwQ0ssc0JBQXNCRiw0QkFDdEJHLGFBQWFMLDJCQUEyQixHQUFHO1FBRWpESSxvQkFBb0JOLE9BQU8sQ0FBQyxTQUFDUSxvQkFBdUI7WUFDbEQsSUFBTUMsbUJBQW1CRCxvQkFDbkJFLG1CQUFtQkgsWUFDbkJJLE9BQU8sSUFBSUMsS0FBS0gsa0JBQWtCQztZQUV4Q1gsTUFBTWMsSUFBSSxDQUFDRjtRQUNiO0lBQ0Y7SUFFQSxPQUFPWjtBQUNUO0FBRU8sU0FBU1IsdUJBQXVCb0IsSUFBSSxFQUFFWixLQUFLLEVBQUU7SUFDbEQsSUFBTWUsUUFBUUgsTUFDUkksb0JBQW9CaEIsTUFBTWlCLElBQUksQ0FBQyxTQUFDTCxNQUFTO1FBQ3ZDLElBQU1NLFFBQVFOLE1BQ1JPLFVBQVVKLE1BQU1LLEtBQUssQ0FBQ0Y7UUFFNUIsSUFBSUMsU0FBUztZQUNYLE9BQU8sSUFBSTtRQUNiLENBQUM7SUFDSDtJQUVOLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTdkIsb0JBQW9CbUIsSUFBSSxFQUFFWixLQUFLLEVBQUU7SUFDL0MsSUFBTWUsUUFBUUgsTUFBTSxHQUFHO0lBRXZCZCxPQUFPRSxPQUFPLFNBQUNZLE1BQVM7UUFDdEIsSUFBTU0sUUFBUU4sTUFDUk8sVUFBVUosTUFBTUssS0FBSyxDQUFDRjtRQUU1QixJQUFJLENBQUNDLFNBQVM7WUFDWixPQUFPLElBQUk7UUFDYixDQUFDO0lBQ0g7QUFDRjtBQUVPLFNBQVN6Qix3QkFBd0JnQixnQkFBZ0IsRUFBRVYsS0FBSyxFQUFFO0lBQy9EQSxRQUFRQSxNQUFNcUIsTUFBTSxDQUFDLFNBQUNULE1BQVM7UUFDN0IsSUFBTU8sVUFBVVAsS0FBS1UscUJBQXFCLENBQUNaO1FBRTNDLElBQUlTLFNBQVM7WUFDWCxPQUFPLElBQUk7UUFDYixDQUFDO0lBQ0g7SUFFQSxPQUFPbkI7QUFDVDtBQUVPLFNBQVNMLHdCQUF3QmdCLGdCQUFnQixFQUFFWCxLQUFLLEVBQUU7SUFDL0RBLFFBQVFBLE1BQU1xQixNQUFNLENBQUMsU0FBQ1QsTUFBUztRQUM3QixJQUFNTyxVQUFVUCxLQUFLVyxxQkFBcUIsQ0FBQ1o7UUFFM0MsSUFBSVEsU0FBUztZQUNYLE9BQU8sSUFBSTtRQUNiLENBQUM7SUFDSDtJQUVBLE9BQU9uQjtBQUNUIn0=