occam-verify-cli 0.0.960 → 0.0.961

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/lib/context/local.js +3 -9
  2. package/lib/proofStep.js +8 -5
  3. package/lib/substitution/termForVariable.js +24 -25
  4. package/lib/unifier/statementWithCombinator.js +6 -6
  5. package/lib/unify/statementAtainstStatement.js +16 -16
  6. package/lib/unify/statementWithBracketedCombinator.js +30 -0
  7. package/lib/unify/statementWithCombinators.js +40 -0
  8. package/lib/unify/statementWithMetaType.js +6 -30
  9. package/lib/unify/termWithBracketedConstructor.js +37 -0
  10. package/lib/unify/termWithConstructors.js +53 -0
  11. package/lib/unify/termWithType.js +4 -12
  12. package/lib/utilities/assignments.js +9 -12
  13. package/lib/verifier/intrinsicLevel.js +140 -0
  14. package/lib/verifier/metaLevel.js +11 -20
  15. package/lib/verifier/statementAsCombinator.js +9 -9
  16. package/lib/verifier/termAsConstructor.js +5 -5
  17. package/lib/verify/assertion/contained.js +2 -3
  18. package/lib/verify/assertion/defined.js +2 -4
  19. package/lib/verify/assertion/subproof.js +20 -18
  20. package/lib/verify/assertion/type.js +1 -2
  21. package/lib/verify/declaration.js +27 -9
  22. package/lib/verify/frame.js +25 -6
  23. package/lib/verify/premise.js +3 -3
  24. package/lib/verify/proofStep.js +23 -30
  25. package/lib/verify/statement/qualified.js +93 -137
  26. package/lib/verify/statement/unqualified.js +18 -104
  27. package/lib/verify/statement.js +95 -76
  28. package/lib/verify/statementAsCombinator.js +2 -2
  29. package/lib/verify/statementGivenMetaType.js +41 -0
  30. package/lib/verify/supposition.js +3 -3
  31. package/lib/verify/term.js +36 -64
  32. package/lib/verify/termAsConstructor.js +2 -2
  33. package/lib/verify/termGivenType.js +34 -0
  34. package/package.json +1 -1
  35. package/src/context/local.js +4 -13
  36. package/src/proofStep.js +10 -5
  37. package/src/substitution/termForVariable.js +33 -30
  38. package/src/unifier/statementWithCombinator.js +5 -5
  39. package/src/unify/statementAtainstStatement.js +13 -13
  40. package/src/unify/statementWithBracketedCombinator.js +22 -0
  41. package/src/unify/statementWithCombinators.js +38 -0
  42. package/src/unify/statementWithMetaType.js +6 -42
  43. package/src/unify/termWithBracketedConstructor.js +36 -0
  44. package/src/unify/termWithConstructors.js +63 -0
  45. package/src/unify/termWithType.js +4 -20
  46. package/src/utilities/assignments.js +6 -13
  47. package/src/verifier/intrinsicLevel.js +42 -0
  48. package/src/verifier/metaLevel.js +13 -21
  49. package/src/verifier/statementAsCombinator.js +11 -7
  50. package/src/verifier/termAsConstructor.js +4 -3
  51. package/src/verify/assertion/contained.js +1 -3
  52. package/src/verify/assertion/defined.js +1 -4
  53. package/src/verify/assertion/subproof.js +22 -18
  54. package/src/verify/assertion/type.js +0 -1
  55. package/src/verify/declaration.js +34 -11
  56. package/src/verify/frame.js +32 -5
  57. package/src/verify/premise.js +3 -3
  58. package/src/verify/proofStep.js +26 -38
  59. package/src/verify/statement/qualified.js +104 -184
  60. package/src/verify/statement/unqualified.js +19 -149
  61. package/src/verify/statement.js +126 -72
  62. package/src/verify/statementAsCombinator.js +1 -1
  63. package/src/verify/statementGivenMetaType.js +37 -0
  64. package/src/verify/supposition.js +3 -3
  65. package/src/verify/term.js +38 -93
  66. package/src/verify/termAsConstructor.js +1 -1
  67. package/src/verify/termGivenType.js +32 -0
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "default", {
8
8
  return _default;
9
9
  }
10
10
  });
11
- var _variable = /*#__PURE__*/ _interop_require_default(require("../variable"));
12
11
  var _equivalence = /*#__PURE__*/ _interop_require_default(require("../equivalence"));
13
12
  var _array = require("../utilities/array");
14
13
  var _equivalences = require("../utilities/equivalences");
@@ -281,17 +280,12 @@ var LocalContext = /*#__PURE__*/ function() {
281
280
  value: function unifyStatement(statementNode, localContext) {
282
281
  var proofSteps = this.getProofSteps();
283
282
  proofSteps = (0, _array.reverse)(proofSteps); ///
284
- var localContextA = this, localContextB = localContext, statementNodeAB = statementNode, statementStringB = localContextA.nodeAsString(statementNodeAB);
285
- localContextB.trace("Unifying the '".concat(statementStringB, "' statement..."), statementNodeAB);
286
- var equivalences = this.getEquivalences(), statementUnified = proofSteps.some(function(proofStep) {
287
- var statementUnified = proofStep.unifyStatement(statementNode, equivalences, localContextA, localContextB);
283
+ var equivalences = this.getEquivalences(), localContextA = this, localContextB = localContext, statementNodeB = statementNode, statementUnified = proofSteps.some(function(proofStep) {
284
+ var statementUnified = proofStep.unifyStatement(statementNodeB, equivalences, localContextA, localContextB);
288
285
  if (statementUnified) {
289
286
  return true;
290
287
  }
291
288
  });
292
- if (statementUnified) {
293
- localContextB.debug("...unified the '".concat(statementStringB, "' statement."), statementNodeAB);
294
- }
295
289
  return statementUnified;
296
290
  }
297
291
  },
@@ -559,4 +553,4 @@ var LocalContext = /*#__PURE__*/ function() {
559
553
  }();
560
554
  var _default = LocalContext;
561
555
 
562
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2xvY2FsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVmFyaWFibGUgZnJvbSBcIi4uL3ZhcmlhYmxlXCI7XG5pbXBvcnQgRXF1aXZhbGVuY2UgZnJvbSBcIi4uL2VxdWl2YWxlbmNlXCI7XG5cbmltcG9ydCB7IGxhc3QsIHJldmVyc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgZmluZEVxdWl2YWxlbmNlQnlUZXJtLCBncm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlc0Zyb21Gcm9tRXF1aXZhbGVuY2VzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcblxuY2xhc3MgTG9jYWxDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBqdWRnZW1lbnRzLCBlcXVpdmFsZW5jZXMsIG1ldGF2YXJpYWJsZXMpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMudmFyaWFibGVzID0gdmFyaWFibGVzO1xuICAgIHRoaXMucHJvb2ZTdGVwcyA9IHByb29mU3RlcHM7XG4gICAgdGhpcy5qdWRnZW1lbnRzID0ganVkZ2VtZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLm1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKCkge1xuICAgIGxldCB2YXJpYWJsZXMgPSB0aGlzLmNvbnRleHQuZ2V0VmFyaWFibGVzKCk7XG5cbiAgICB2YXJpYWJsZXMgPSBbIC8vL1xuICAgICAgLi4udGhpcy52YXJpYWJsZXMsXG4gICAgICAuLi52YXJpYWJsZXNcbiAgICBdO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFByb29mU3RlcHMoKSB7XG4gICAgbGV0IHByb29mU3RlcHMgPSB0aGlzLmNvbnRleHQuZ2V0UHJvb2ZTdGVwcygpO1xuXG4gICAgcHJvb2ZTdGVwcyA9IFsgIC8vL1xuICAgICAgLi4ucHJvb2ZTdGVwcyxcbiAgICAgIC4uLnRoaXMucHJvb2ZTdGVwc1xuICAgIF07XG5cbiAgICByZXR1cm4gcHJvb2ZTdGVwcztcbiAgfVxuXG4gIGdldEp1ZGdlbWVudHMoKSB7XG4gICAgbGV0IGp1ZGdlbWVudHMgPSB0aGlzLmNvbnRleHQuZ2V0SnVkZ2VtZW50cygpO1xuXG4gICAganVkZ2VtZW50cyA9IFsgLy8vXG4gICAgICAuLi50aGlzLmp1ZGdlbWVudHMsXG4gICAgICAuLi5qdWRnZW1lbnRzXG4gICAgXVxuXG4gICAgcmV0dXJuIGp1ZGdlbWVudHM7XG4gIH1cblxuICBnZXRFcXVpdmFsZW5jZXMoKSB7XG4gICAgbGV0IGVxdWl2YWxlbmNlcyA9IHRoaXMuY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIGNvbnN0IGVxdWl2YWxlbmNlc0EgPSB0aGlzLmVxdWl2YWxlbmNlcywgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VzQiA9IGVxdWl2YWxlbmNlcyxcbiAgICAgICAgICBMb2NhbENvbnRleHQgPSB0aGlzOyAgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBMb2NhbENvbnRleHQpOyAvLy9cblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVzKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGVzID0gdGhpcy5jb250ZXh0LmdldE1ldGF2YXJpYWJsZXMoKTtcblxuICAgIG1ldGF2YXJpYWJsZXMgPSBbIC8vL1xuICAgICAgLi4udGhpcy5tZXRhdmFyaWFibGVzLFxuICAgICAgLi4ubWV0YXZhcmlhYmxlc1xuICAgIF1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0TGFzdFByb29mU3RlcCgpIHtcbiAgICBsZXQgbGFzdFByb29mU3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBwcm9vZlN0ZXBzTGVuZ3RoID0gdGhpcy5wcm9vZlN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChwcm9vZlN0ZXBzTGVuZ3RoID4gMCkge1xuICAgICAgbGFzdFByb29mU3RlcCA9IGxhc3QodGhpcy5wcm9vZlN0ZXBzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdFByb29mU3RlcDtcbiAgfVxuXG4gIGdldFRva2VucygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRUb2tlbnMoKTsgfVxuXG4gIGdldEF4aW9tcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRBeGlvbXMoKTsgfVxuXG4gIGdldExlbW1hcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKTsgfVxuXG4gIGdldFRoZW9yZW1zKCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmdldFRoZW9yZW1zKCk7IH1cblxuICBnZXRDb25qZWN0dXJlcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDb25qZWN0dXJlcygpOyB9XG5cbiAgZ2V0Q29tYmluYXRvcnMoKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZ2V0Q29tYmluYXRvcnMoKTsgfVxuXG4gIGdldENvbnN0cnVjdG9ycygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTsgfVxuXG4gIGFkZEVxdWFsaXR5KGVxdWFsaXR5KSB7XG4gICAgbGV0IGVxdWFsaXR5QWRkZWQ7XG5cbiAgICBjb25zdCBlcXVhbGl0eVJlZmxleGl2ZSA9IGVxdWFsaXR5LmlzUmVmbGV4aXZlKCk7XG5cbiAgICBpZiAoZXF1YWxpdHlSZWZsZXhpdmUpIHtcbiAgICAgIGVxdWFsaXR5QWRkZWQgPSB0cnVlOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGVmdFRlcm0gPSBlcXVhbGl0eS5nZXRMZWZ0VGVybSgpLFxuICAgICAgICAgICAgcmlnaHRUZXJtID0gZXF1YWxpdHkuZ2V0UmlnaHRUZXJtKCksXG4gICAgICAgICAgICBsZWZ0RXF1aXZhbGVuY2UgPSBmaW5kRXF1aXZhbGVuY2VCeVRlcm0odGhpcy5lcXVpdmFsZW5jZXMsIGxlZnRUZXJtKSxcbiAgICAgICAgICAgIHJpZ2h0RXF1aXZhbGVuY2UgPSBmaW5kRXF1aXZhbGVuY2VCeVRlcm0odGhpcy5lcXVpdmFsZW5jZXMsIHJpZ2h0VGVybSk7XG5cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAvLy9cbiAgICAgIH0gZWxzZSBpZiAoKGxlZnRFcXVpdmFsZW5jZSA9PT0gbnVsbCkgJiYgKHJpZ2h0RXF1aXZhbGVuY2UgPT09IG51bGwpKSB7XG4gICAgICAgIGNvbnN0IGVxdWl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUxlZnRUZXJtQW5kUmlnaHRUZXJtKGxlZnRUZXJtLCByaWdodFRlcm0pO1xuXG4gICAgICAgIHRoaXMuYWRkRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpO1xuXG4gICAgICAgIGVxdWFsaXR5QWRkZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICgobGVmdEVxdWl2YWxlbmNlICE9PSBudWxsKSAmJiAocmlnaHRFcXVpdmFsZW5jZSA9PT0gbnVsbCkpIHtcbiAgICAgICAgbGVmdEVxdWl2YWxlbmNlLmFkZFRlcm0ocmlnaHRUZXJtKTtcblxuICAgICAgICBlcXVhbGl0eUFkZGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoKGxlZnRFcXVpdmFsZW5jZSA9PT0gbnVsbCkgJiYgKHJpZ2h0RXF1aXZhbGVuY2UgIT09IG51bGwpKSB7XG4gICAgICAgIHJpZ2h0RXF1aXZhbGVuY2UuYWRkVGVybShsZWZ0VGVybSk7XG5cbiAgICAgICAgZXF1YWxpdHlBZGRlZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKChsZWZ0RXF1aXZhbGVuY2UgIT09IG51bGwpICYmIChyaWdodEVxdWl2YWxlbmNlICE9PSBudWxsKSkge1xuICAgICAgICBsZXQgZXF1aXZhbGVuY2U7XG5cbiAgICAgICAgaWYgKGxlZnRFcXVpdmFsZW5jZSA9PT0gcmlnaHRFcXVpdmFsZW5jZSkge1xuICAgICAgICAgIGVxdWl2YWxlbmNlID0gbGVmdEVxdWl2YWxlbmNlOyAgLy8vXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXF1aXZhbGVuY2UgPSBFcXVpdmFsZW5jZS5tZXJnZShsZWZ0RXF1aXZhbGVuY2UsIHJpZ2h0RXF1aXZhbGVuY2UpO1xuXG4gICAgICAgICAgdGhpcy5yZW1vdmVFcXVpdmFsZW5jZShsZWZ0RXF1aXZhbGVuY2UpO1xuXG4gICAgICAgICAgdGhpcy5yZW1vdmVFcXVpdmFsZW5jZShyaWdodEVxdWl2YWxlbmNlKTtcblxuICAgICAgICAgIHRoaXMuYWRkRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXF1aXZhbGVuY2UuYWRkVGVybShsZWZ0VGVybSk7XG5cbiAgICAgICAgZXF1aXZhbGVuY2UuYWRkVGVybShyaWdodFRlcm0pO1xuXG4gICAgICAgIGVxdWFsaXR5QWRkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcXVhbGl0eUFkZGVkO1xuICB9XG5cbiAgYWRkVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICBsZXQgdmFyaWFibGVBZGRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZSA9IHZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSB0aGlzLnZhcmlhYmxlcy5zb21lKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFyaWFibGVNYXRjaGVzTm9kZSA9IHZhcmlhYmxlLm1hdGNoTm9kZShub2RlKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlTWF0Y2hlc05vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoIXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgdGhpcy52YXJpYWJsZXMucHVzaCh2YXJpYWJsZSk7XG5cbiAgICAgIHZhcmlhYmxlQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZUFkZGVkO1xuICB9XG5cbiAgYWRkUHJvb2ZTdGVwKHByb29mU3RlcCkge1xuICAgIHRoaXMucHJvb2ZTdGVwcy5wdXNoKHByb29mU3RlcCk7XG4gIH1cblxuICBhZGRFcXVpdmFsZW5jZShlcXVpdmFsZW5jZSkge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzLnB1c2goZXF1aXZhbGVuY2UpO1xuICB9XG5cbiAgcmVtb3ZlRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZXF1aXZhbGVuY2VzLmluZGV4T2YoZXF1aXZhbGVuY2UpLFxuICAgICAgICAgIHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICB0aGlzLmVxdWl2YWxlbmNlcy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgfVxuXG4gIGFkZEp1ZGdlbWVudChqdWRnZW1lbnQpIHtcbiAgICBsZXQganVkZ2VtZW50QWRkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBqdWRnZW1lbnQuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGp1ZGdlbWVudFByZXNlbnQgPSB0aGlzLmlzSnVkZ2VtZW50UHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIGlmICghanVkZ2VtZW50UHJlc2VudCkge1xuICAgICAgdGhpcy5qdWRnZW1lbnRzLnB1c2goanVkZ2VtZW50KTtcblxuICAgICAganVkZ2VtZW50QWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBqdWRnZW1lbnRBZGRlZDtcbiAgfVxuXG4gIGFkZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlQWRkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGUgPSBtZXRhdmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSB0aGlzLm1ldGF2YXJpYWJsZXMuc29tZSgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSA9IG1ldGF2YXJpYWJsZS5tYXRjaE5vZGUobm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmICghbWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgdGhpcy5tZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcblxuICAgICAgbWV0YXZhcmlhYmxlQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVBZGRlZDtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCBwcm9vZlN0ZXBzID0gdGhpcy5nZXRQcm9vZlN0ZXBzKCk7XG5cbiAgICBwcm9vZlN0ZXBzID0gcmV2ZXJzZShwcm9vZlN0ZXBzKTsgLy8vXG5cbiAgICBjb25zdCBsb2NhbENvbnRleHRBID0gdGhpcywgIC8vL1xuICAgICAgICAgIGxvY2FsQ29udGV4dEIgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudE5vZGVBQiA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZ0IgPSBsb2NhbENvbnRleHRBLm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlQUIpO1xuXG4gICAgbG9jYWxDb250ZXh0Qi50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ0J9JyBzdGF0ZW1lbnQuLi5gLCBzdGF0ZW1lbnROb2RlQUIpO1xuXG4gICAgY29uc3QgZXF1aXZhbGVuY2VzID0gdGhpcy5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gcHJvb2ZTdGVwcy5zb21lKChwcm9vZlN0ZXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZWQgPSBwcm9vZlN0ZXAudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgZXF1aXZhbGVuY2VzLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgICAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0Qi5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nQn0nIHN0YXRlbWVudC5gLCBzdGF0ZW1lbnROb2RlQUIpO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgZ2V0VGVybVR5cGUodGVybSkge1xuICAgIGxldCB0ZXJtVHlwZTtcblxuICAgIGNvbnN0IGVxdWl2YWxlbmNlcyA9IHRoaXMuZ2V0RXF1aXZhbGVuY2VzKCksXG4gICAgICAgICAgZXF1aXZhbGVuY2UgPSBmaW5kRXF1aXZhbGVuY2VCeVRlcm0oZXF1aXZhbGVuY2VzLCB0ZXJtKTtcblxuICAgIGlmIChlcXVpdmFsZW5jZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgTG9jYWxDb250ZXh0ID0gdGhpcywgIC8vL1xuICAgICAgICAgICAgZXF1aXZhbGVuY2VUeXBlID0gZXF1aXZhbGVuY2UuZ2V0VHlwZShMb2NhbENvbnRleHQpO1xuXG4gICAgICB0ZXJtVHlwZSA9IGVxdWl2YWxlbmNlVHlwZTsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXJtVHlwZTtcbiAgfVxuXG4gIGlzVGVybUdyb3VuZGVkKHRlcm0pIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcyxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSB0aGlzLmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgIGdyb3VuZGVkVGVybXMgPSBbXSxcbiAgICAgICAgICBkZWZpbmVkVmFyaWFibGVzID0gW107XG5cbiAgICBncm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlc0Zyb21Gcm9tRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBjb25zdCB0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSA9IGdyb3VuZGVkVGVybXMuc29tZSgoZ3JvdW5kZWRUZXJtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSA9IHRlcm0ubWF0Y2goZ3JvdW5kZWRUZXJtKTtcblxuICAgICAgICAgICAgaWYgKHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRlcm1Hcm91bmRlZCA9IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtOyAvLy9cblxuICAgIHJldHVybiB0ZXJtR3JvdW5kZWQ7XG4gIH1cblxuICBpc1ZhcmlhYmxlRGVmaW5lZCh2YXJpYWJsZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLFxuICAgICAgICAgIGVxdWl2YWxlbmNlcyA9IHRoaXMuZ2V0RXF1aXZhbGVuY2VzKCksXG4gICAgICAgICAgZ3JvdW5kZWRUZXJtcyA9IFtdLFxuICAgICAgICAgIGRlZmluZWRWYXJpYWJsZXMgPSBbXTtcblxuICAgIGdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzRnJvbUZyb21FcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgIGNvbnN0IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuc29tZSgoZGVmaW5lZFZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUgPSB2YXJpYWJsZS5tYXRjaChkZWZpbmVkVmFyaWFibGUpO1xuXG4gICAgICAgICAgICBpZiAodmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHZhcmlhYmxlRGVmaW5lZCA9IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZTsgLy8vXG5cbiAgICByZXR1cm4gdmFyaWFibGVEZWZpbmVkO1xuICB9XG5cbiAgaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCB2YXJpYWJsZSA9IHRoaXMuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSAodmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGlzSnVkZ2VtZW50UHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QganVkZ2VtZW50ID0gdGhpcy5maW5kSnVkZ2VtZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIGp1ZGdlbWVudFByZXNlbnQgPSAoanVkZ2VtZW50ICE9PSBudWxsKTtcblxuICAgIHJldHVybiBqdWRnZW1lbnRQcmVzZW50O1xuICB9XG5cbiAgaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7IH1cblxuICBpc1R5cGVQcmVzZW50QnlUeXBlTm9kZSh0eXBlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOb2RlKHR5cGVOb2RlKTsgfVxuXG4gIGlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TmFtZShuYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlOYW1lKG5hbWUpOyB9XG5cbiAgaXNMYWJlbFByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmlzTGFiZWxQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IChtZXRhdmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdGhpcy5nZXRWYXJpYWJsZXMoKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlcy5maW5kKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHZhcmlhYmxlLm1hdGNoTm9kZShub2RlKTtcblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfVxuXG4gIGZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IGp1ZGdlbWVudHMgPSB0aGlzLmdldEp1ZGdlbWVudHMoKSxcbiAgICAgICAgICBqdWRnZW1lbnQgPSBqdWRnZW1lbnRzLmZpbmQoKGp1ZGdlbWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QganVkZ2VtZW50TWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUgPSBqdWRnZW1lbnQubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoanVkZ2VtZW50TWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBqdWRnZW1lbnQ7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gbWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgIGxvY2FsQ29udGV4dCA9IHRoaXMsICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gdGhpcy5nZXRNZXRhdmFyaWFibGVzKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlcy5maW5kKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBtZXRhdmFyaWFibGUubWF0Y2hOb2RlKG5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTsgfVxuXG4gIGZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7IH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlOYW1lKG5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlOYW1lKG5hbWUpOyB9XG5cbiAgZmluZExhYmVsQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTGFiZWxCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUpOyB9XG5cbiAgZmluZFJ1bGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRSdWxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgZmluZEF4aW9tQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBmaW5kTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIGZpbmRUaGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kVGhlb3JlbUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIGZpbmRNZXRhTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRNZXRhTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBmaW5kQ29uamVjdHVyZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZENvbmplY3R1cmVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBmaW5kTWV0YXRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRNZXRhdGhlb3JlbUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIG5vZGVBc1N0cmluZyhub2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpOyB9XG5cbiAgbm9kZXNBc1N0cmluZyhub2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQubm9kZXNBc1N0cmluZyhub2RlKTsgfVxuXG4gIHRyYWNlKG5vZGUsIG1lc3NhZ2UpIHsgdGhpcy5jb250ZXh0LnRyYWNlKG5vZGUsIG1lc3NhZ2UpOyB9XG5cbiAgZGVidWcobm9kZSwgbWVzc2FnZSkgeyB0aGlzLmNvbnRleHQuZGVidWcobm9kZSwgbWVzc2FnZSk7IH1cblxuICBpbmZvKG5vZGUsIG1lc3NhZ2UpIHsgdGhpcy5jb250ZXh0LmluZm8obm9kZSwgbWVzc2FnZSk7IH1cblxuICB3YXJuaW5nKG5vZGUsIG1lc3NhZ2UpIHsgdGhpcy5jb250ZXh0Lndhcm5pbmcobm9kZSwgbWVzc2FnZSk7IH1cblxuICBlcnJvcihub2RlLCBtZXNzYWdlKSB7IHRoaXMuY29udGV4dC5lcnJvcihub2RlLCBtZXNzYWdlKTsgfVxuXG4gIGZhdGFsKG5vZGUsIG1lc3NhZ2UpIHsgdGhpcy5jb250ZXh0LmZhdGFsKG5vZGUsIG1lc3NhZ2UpOyB9XG5cbiAgc3RhdGljIGZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBmaWxlQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIHByb29mU3RlcHMgPSBbXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSBbXSxcbiAgICAgICAgICBqdWRnZW1lbnRzID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIGxvY2FsQ29udGV4dCA9IG5ldyBMb2NhbENvbnRleHQoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBqdWRnZW1lbnRzLCBlcXVpdmFsZW5jZXMsIG1ldGF2YXJpYWJsZXMpO1xuXG4gICAgcmV0dXJuIGxvY2FsQ29udGV4dDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTG9jYWxDb250ZXh0KGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBsb2NhbENvbnRleHQsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBwcm9vZlN0ZXBzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAganVkZ2VtZW50cyA9IFtdLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSBbXTtcblxuICAgIGxvY2FsQ29udGV4dCA9IG5ldyBMb2NhbENvbnRleHQoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBqdWRnZW1lbnRzLCBlcXVpdmFsZW5jZXMsIG1ldGF2YXJpYWJsZXMpOyAgLy8vXG5cbiAgICByZXR1cm4gbG9jYWxDb250ZXh0O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvY2FsQ29udGV4dDsiXSwibmFtZXMiOlsiTG9jYWxDb250ZXh0IiwiY29udGV4dCIsInZhcmlhYmxlcyIsInByb29mU3RlcHMiLCJqdWRnZW1lbnRzIiwiZXF1aXZhbGVuY2VzIiwibWV0YXZhcmlhYmxlcyIsImdldENvbnRleHQiLCJnZXRWYXJpYWJsZXMiLCJnZXRQcm9vZlN0ZXBzIiwiZ2V0SnVkZ2VtZW50cyIsImdldEVxdWl2YWxlbmNlcyIsImVxdWl2YWxlbmNlc0EiLCJlcXVpdmFsZW5jZXNCIiwibWVyZ2VFcXVpdmFsZW5jZXMiLCJnZXRNZXRhdmFyaWFibGVzIiwiZ2V0TGFzdFByb29mU3RlcCIsImxhc3RQcm9vZlN0ZXAiLCJwcm9vZlN0ZXBzTGVuZ3RoIiwibGVuZ3RoIiwibGFzdCIsImdldFRva2VucyIsImdldEF4aW9tcyIsImdldExlbW1hcyIsImdldFRoZW9yZW1zIiwiZ2V0Q29uamVjdHVyZXMiLCJnZXRDb21iaW5hdG9ycyIsImdldENvbnN0cnVjdG9ycyIsImFkZEVxdWFsaXR5IiwiZXF1YWxpdHkiLCJlcXVhbGl0eUFkZGVkIiwiZXF1YWxpdHlSZWZsZXhpdmUiLCJpc1JlZmxleGl2ZSIsImxlZnRUZXJtIiwiZ2V0TGVmdFRlcm0iLCJyaWdodFRlcm0iLCJnZXRSaWdodFRlcm0iLCJsZWZ0RXF1aXZhbGVuY2UiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm0iLCJyaWdodEVxdWl2YWxlbmNlIiwiZXF1aXZhbGVuY2UiLCJFcXVpdmFsZW5jZSIsImZyb21MZWZ0VGVybUFuZFJpZ2h0VGVybSIsImFkZEVxdWl2YWxlbmNlIiwiYWRkVGVybSIsIm1lcmdlIiwicmVtb3ZlRXF1aXZhbGVuY2UiLCJhZGRWYXJpYWJsZSIsInZhcmlhYmxlIiwidmFyaWFibGVBZGRlZCIsIm5vZGUiLCJnZXROb2RlIiwidmFyaWFibGVQcmVzZW50Iiwic29tZSIsInZhcmlhYmxlTWF0Y2hlc05vZGUiLCJtYXRjaE5vZGUiLCJwdXNoIiwiYWRkUHJvb2ZTdGVwIiwicHJvb2ZTdGVwIiwiaW5kZXgiLCJpbmRleE9mIiwic3RhcnQiLCJkZWxldGVDb3VudCIsInNwbGljZSIsImFkZEp1ZGdlbWVudCIsImp1ZGdlbWVudCIsImp1ZGdlbWVudEFkZGVkIiwibWV0YXZhcmlhYmxlTm9kZSIsImdldE1ldGF2YXJpYWJsZU5vZGUiLCJqdWRnZW1lbnRQcmVzZW50IiwiaXNKdWRnZW1lbnRQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwiYWRkTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlQWRkZWQiLCJnZXROYW1lIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsIm1ldGF2YXJpYWJsZU1hdGNoZXNOb2RlIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwibG9jYWxDb250ZXh0IiwicmV2ZXJzZSIsImxvY2FsQ29udGV4dEEiLCJsb2NhbENvbnRleHRCIiwic3RhdGVtZW50Tm9kZUFCIiwic3RhdGVtZW50U3RyaW5nQiIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic3RhdGVtZW50VW5pZmllZCIsImRlYnVnIiwiZ2V0VGVybVR5cGUiLCJ0ZXJtIiwidGVybVR5cGUiLCJlcXVpdmFsZW5jZVR5cGUiLCJnZXRUeXBlIiwiaXNUZXJtR3JvdW5kZWQiLCJncm91bmRlZFRlcm1zIiwiZGVmaW5lZFZhcmlhYmxlcyIsImdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzRnJvbUZyb21FcXVpdmFsZW5jZXMiLCJ0ZXJtTWF0Y2hlc0dyb3VuZGVkVGVybSIsImdyb3VuZGVkVGVybSIsIm1hdGNoIiwidGVybUdyb3VuZGVkIiwiaXNWYXJpYWJsZURlZmluZWQiLCJ2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUiLCJkZWZpbmVkVmFyaWFibGUiLCJ2YXJpYWJsZURlZmluZWQiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5vZGUiLCJmaW5kSnVkZ2VtZW50QnlNZXRhdmFyaWFibGVOb2RlIiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJ0eXBlTmFtZSIsImlzVHlwZVByZXNlbnRCeVR5cGVOb2RlIiwidHlwZU5vZGUiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU5hbWUiLCJuYW1lIiwiaXNMYWJlbFByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZCIsIm1hdGNoZXMiLCJqdWRnZW1lbnRNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU5hbWUiLCJmaW5kTGFiZWxCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTm9kZSIsIm1ldGFUeXBlTm9kZSIsImZpbmRSdWxlQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZEF4aW9tQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZExlbW1hQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZFRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YUxlbW1hQnlNZXRhdmFyaWFibGVOb2RlIiwiZmluZENvbmplY3R1cmVCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTWV0YXRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUiLCJub2Rlc0FzU3RyaW5nIiwibWVzc2FnZSIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJmYXRhbCIsImZyb21GaWxl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
556
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2xvY2FsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgRXF1aXZhbGVuY2UgZnJvbSBcIi4uL2VxdWl2YWxlbmNlXCI7XG5cbmltcG9ydCB7IGxhc3QsIHJldmVyc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBtZXJnZUVxdWl2YWxlbmNlcywgZmluZEVxdWl2YWxlbmNlQnlUZXJtLCBncm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlc0Zyb21Gcm9tRXF1aXZhbGVuY2VzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lcXVpdmFsZW5jZXNcIjtcblxuY2xhc3MgTG9jYWxDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBqdWRnZW1lbnRzLCBlcXVpdmFsZW5jZXMsIG1ldGF2YXJpYWJsZXMpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMudmFyaWFibGVzID0gdmFyaWFibGVzO1xuICAgIHRoaXMucHJvb2ZTdGVwcyA9IHByb29mU3RlcHM7XG4gICAgdGhpcy5qdWRnZW1lbnRzID0ganVkZ2VtZW50cztcbiAgICB0aGlzLmVxdWl2YWxlbmNlcyA9IGVxdWl2YWxlbmNlcztcbiAgICB0aGlzLm1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0O1xuICB9XG5cbiAgZ2V0VmFyaWFibGVzKCkge1xuICAgIGxldCB2YXJpYWJsZXMgPSB0aGlzLmNvbnRleHQuZ2V0VmFyaWFibGVzKCk7XG5cbiAgICB2YXJpYWJsZXMgPSBbIC8vL1xuICAgICAgLi4udGhpcy52YXJpYWJsZXMsXG4gICAgICAuLi52YXJpYWJsZXNcbiAgICBdO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlcztcbiAgfVxuXG4gIGdldFByb29mU3RlcHMoKSB7XG4gICAgbGV0IHByb29mU3RlcHMgPSB0aGlzLmNvbnRleHQuZ2V0UHJvb2ZTdGVwcygpO1xuXG4gICAgcHJvb2ZTdGVwcyA9IFsgIC8vL1xuICAgICAgLi4ucHJvb2ZTdGVwcyxcbiAgICAgIC4uLnRoaXMucHJvb2ZTdGVwc1xuICAgIF07XG5cbiAgICByZXR1cm4gcHJvb2ZTdGVwcztcbiAgfVxuXG4gIGdldEp1ZGdlbWVudHMoKSB7XG4gICAgbGV0IGp1ZGdlbWVudHMgPSB0aGlzLmNvbnRleHQuZ2V0SnVkZ2VtZW50cygpO1xuXG4gICAganVkZ2VtZW50cyA9IFsgLy8vXG4gICAgICAuLi50aGlzLmp1ZGdlbWVudHMsXG4gICAgICAuLi5qdWRnZW1lbnRzXG4gICAgXVxuXG4gICAgcmV0dXJuIGp1ZGdlbWVudHM7XG4gIH1cblxuICBnZXRFcXVpdmFsZW5jZXMoKSB7XG4gICAgbGV0IGVxdWl2YWxlbmNlcyA9IHRoaXMuY29udGV4dC5nZXRFcXVpdmFsZW5jZXMoKTtcblxuICAgIGNvbnN0IGVxdWl2YWxlbmNlc0EgPSB0aGlzLmVxdWl2YWxlbmNlcywgLy8vXG4gICAgICAgICAgZXF1aXZhbGVuY2VzQiA9IGVxdWl2YWxlbmNlcyxcbiAgICAgICAgICBMb2NhbENvbnRleHQgPSB0aGlzOyAgLy8vXG5cbiAgICBlcXVpdmFsZW5jZXMgPSBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBMb2NhbENvbnRleHQpOyAvLy9cblxuICAgIHJldHVybiBlcXVpdmFsZW5jZXM7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVzKCkge1xuICAgIGxldCBtZXRhdmFyaWFibGVzID0gdGhpcy5jb250ZXh0LmdldE1ldGF2YXJpYWJsZXMoKTtcblxuICAgIG1ldGF2YXJpYWJsZXMgPSBbIC8vL1xuICAgICAgLi4udGhpcy5tZXRhdmFyaWFibGVzLFxuICAgICAgLi4ubWV0YXZhcmlhYmxlc1xuICAgIF1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVzO1xuICB9XG5cbiAgZ2V0TGFzdFByb29mU3RlcCgpIHtcbiAgICBsZXQgbGFzdFByb29mU3RlcCA9IG51bGw7XG5cbiAgICBjb25zdCBwcm9vZlN0ZXBzTGVuZ3RoID0gdGhpcy5wcm9vZlN0ZXBzLmxlbmd0aDtcblxuICAgIGlmIChwcm9vZlN0ZXBzTGVuZ3RoID4gMCkge1xuICAgICAgbGFzdFByb29mU3RlcCA9IGxhc3QodGhpcy5wcm9vZlN0ZXBzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdFByb29mU3RlcDtcbiAgfVxuXG4gIGdldFRva2VucygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRUb2tlbnMoKTsgfVxuXG4gIGdldEF4aW9tcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRBeGlvbXMoKTsgfVxuXG4gIGdldExlbW1hcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRMZW1tYXMoKTsgfVxuXG4gIGdldFRoZW9yZW1zKCkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmdldFRoZW9yZW1zKCk7IH1cblxuICBnZXRDb25qZWN0dXJlcygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDb25qZWN0dXJlcygpOyB9XG5cbiAgZ2V0Q29tYmluYXRvcnMoKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZ2V0Q29tYmluYXRvcnMoKTsgfVxuXG4gIGdldENvbnN0cnVjdG9ycygpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKTsgfVxuXG4gIGFkZEVxdWFsaXR5KGVxdWFsaXR5KSB7XG4gICAgbGV0IGVxdWFsaXR5QWRkZWQ7XG5cbiAgICBjb25zdCBlcXVhbGl0eVJlZmxleGl2ZSA9IGVxdWFsaXR5LmlzUmVmbGV4aXZlKCk7XG5cbiAgICBpZiAoZXF1YWxpdHlSZWZsZXhpdmUpIHtcbiAgICAgIGVxdWFsaXR5QWRkZWQgPSB0cnVlOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGVmdFRlcm0gPSBlcXVhbGl0eS5nZXRMZWZ0VGVybSgpLFxuICAgICAgICAgICAgcmlnaHRUZXJtID0gZXF1YWxpdHkuZ2V0UmlnaHRUZXJtKCksXG4gICAgICAgICAgICBsZWZ0RXF1aXZhbGVuY2UgPSBmaW5kRXF1aXZhbGVuY2VCeVRlcm0odGhpcy5lcXVpdmFsZW5jZXMsIGxlZnRUZXJtKSxcbiAgICAgICAgICAgIHJpZ2h0RXF1aXZhbGVuY2UgPSBmaW5kRXF1aXZhbGVuY2VCeVRlcm0odGhpcy5lcXVpdmFsZW5jZXMsIHJpZ2h0VGVybSk7XG5cbiAgICAgIGlmIChmYWxzZSkge1xuICAgICAgICAvLy9cbiAgICAgIH0gZWxzZSBpZiAoKGxlZnRFcXVpdmFsZW5jZSA9PT0gbnVsbCkgJiYgKHJpZ2h0RXF1aXZhbGVuY2UgPT09IG51bGwpKSB7XG4gICAgICAgIGNvbnN0IGVxdWl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUxlZnRUZXJtQW5kUmlnaHRUZXJtKGxlZnRUZXJtLCByaWdodFRlcm0pO1xuXG4gICAgICAgIHRoaXMuYWRkRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpO1xuXG4gICAgICAgIGVxdWFsaXR5QWRkZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmICgobGVmdEVxdWl2YWxlbmNlICE9PSBudWxsKSAmJiAocmlnaHRFcXVpdmFsZW5jZSA9PT0gbnVsbCkpIHtcbiAgICAgICAgbGVmdEVxdWl2YWxlbmNlLmFkZFRlcm0ocmlnaHRUZXJtKTtcblxuICAgICAgICBlcXVhbGl0eUFkZGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAoKGxlZnRFcXVpdmFsZW5jZSA9PT0gbnVsbCkgJiYgKHJpZ2h0RXF1aXZhbGVuY2UgIT09IG51bGwpKSB7XG4gICAgICAgIHJpZ2h0RXF1aXZhbGVuY2UuYWRkVGVybShsZWZ0VGVybSk7XG5cbiAgICAgICAgZXF1YWxpdHlBZGRlZCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKChsZWZ0RXF1aXZhbGVuY2UgIT09IG51bGwpICYmIChyaWdodEVxdWl2YWxlbmNlICE9PSBudWxsKSkge1xuICAgICAgICBsZXQgZXF1aXZhbGVuY2U7XG5cbiAgICAgICAgaWYgKGxlZnRFcXVpdmFsZW5jZSA9PT0gcmlnaHRFcXVpdmFsZW5jZSkge1xuICAgICAgICAgIGVxdWl2YWxlbmNlID0gbGVmdEVxdWl2YWxlbmNlOyAgLy8vXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXF1aXZhbGVuY2UgPSBFcXVpdmFsZW5jZS5tZXJnZShsZWZ0RXF1aXZhbGVuY2UsIHJpZ2h0RXF1aXZhbGVuY2UpO1xuXG4gICAgICAgICAgdGhpcy5yZW1vdmVFcXVpdmFsZW5jZShsZWZ0RXF1aXZhbGVuY2UpO1xuXG4gICAgICAgICAgdGhpcy5yZW1vdmVFcXVpdmFsZW5jZShyaWdodEVxdWl2YWxlbmNlKTtcblxuICAgICAgICAgIHRoaXMuYWRkRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXF1aXZhbGVuY2UuYWRkVGVybShsZWZ0VGVybSk7XG5cbiAgICAgICAgZXF1aXZhbGVuY2UuYWRkVGVybShyaWdodFRlcm0pO1xuXG4gICAgICAgIGVxdWFsaXR5QWRkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcXVhbGl0eUFkZGVkO1xuICB9XG5cbiAgYWRkVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICBsZXQgdmFyaWFibGVBZGRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgbm9kZSA9IHZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSB0aGlzLnZhcmlhYmxlcy5zb21lKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFyaWFibGVNYXRjaGVzTm9kZSA9IHZhcmlhYmxlLm1hdGNoTm9kZShub2RlKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlTWF0Y2hlc05vZGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICBpZiAoIXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgdGhpcy52YXJpYWJsZXMucHVzaCh2YXJpYWJsZSk7XG5cbiAgICAgIHZhcmlhYmxlQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZUFkZGVkO1xuICB9XG5cbiAgYWRkUHJvb2ZTdGVwKHByb29mU3RlcCkge1xuICAgIHRoaXMucHJvb2ZTdGVwcy5wdXNoKHByb29mU3RlcCk7XG4gIH1cblxuICBhZGRFcXVpdmFsZW5jZShlcXVpdmFsZW5jZSkge1xuICAgIHRoaXMuZXF1aXZhbGVuY2VzLnB1c2goZXF1aXZhbGVuY2UpO1xuICB9XG5cbiAgcmVtb3ZlRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZXF1aXZhbGVuY2VzLmluZGV4T2YoZXF1aXZhbGVuY2UpLFxuICAgICAgICAgIHN0YXJ0ID0gaW5kZXgsICAvLy9cbiAgICAgICAgICBkZWxldGVDb3VudCA9IDE7XG5cbiAgICB0aGlzLmVxdWl2YWxlbmNlcy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgfVxuXG4gIGFkZEp1ZGdlbWVudChqdWRnZW1lbnQpIHtcbiAgICBsZXQganVkZ2VtZW50QWRkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBqdWRnZW1lbnQuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIGp1ZGdlbWVudFByZXNlbnQgPSB0aGlzLmlzSnVkZ2VtZW50UHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIGlmICghanVkZ2VtZW50UHJlc2VudCkge1xuICAgICAgdGhpcy5qdWRnZW1lbnRzLnB1c2goanVkZ2VtZW50KTtcblxuICAgICAganVkZ2VtZW50QWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBqdWRnZW1lbnRBZGRlZDtcbiAgfVxuXG4gIGFkZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlQWRkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGUgPSBtZXRhdmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSB0aGlzLm1ldGF2YXJpYWJsZXMuc29tZSgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSA9IG1ldGF2YXJpYWJsZS5tYXRjaE5vZGUobm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmICghbWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgdGhpcy5tZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcblxuICAgICAgbWV0YXZhcmlhYmxlQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVBZGRlZDtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCBwcm9vZlN0ZXBzID0gdGhpcy5nZXRQcm9vZlN0ZXBzKCk7XG5cbiAgICBwcm9vZlN0ZXBzID0gcmV2ZXJzZShwcm9vZlN0ZXBzKTsgLy8vXG5cbiAgICBjb25zdCBlcXVpdmFsZW5jZXMgPSB0aGlzLmdldEVxdWl2YWxlbmNlcygpLFxuICAgICAgICAgIGxvY2FsQ29udGV4dEEgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgbG9jYWxDb250ZXh0QiA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZUIgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gcHJvb2ZTdGVwcy5zb21lKChwcm9vZlN0ZXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZWQgPSBwcm9vZlN0ZXAudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZUIsIGVxdWl2YWxlbmNlcywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG5cbiAgICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWQ7XG4gIH1cblxuICBnZXRUZXJtVHlwZSh0ZXJtKSB7XG4gICAgbGV0IHRlcm1UeXBlO1xuXG4gICAgY29uc3QgZXF1aXZhbGVuY2VzID0gdGhpcy5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICBlcXVpdmFsZW5jZSA9IGZpbmRFcXVpdmFsZW5jZUJ5VGVybShlcXVpdmFsZW5jZXMsIHRlcm0pO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBMb2NhbENvbnRleHQgPSB0aGlzLCAgLy8vXG4gICAgICAgICAgICBlcXVpdmFsZW5jZVR5cGUgPSBlcXVpdmFsZW5jZS5nZXRUeXBlKExvY2FsQ29udGV4dCk7XG5cbiAgICAgIHRlcm1UeXBlID0gZXF1aXZhbGVuY2VUeXBlOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIHRlcm1UeXBlID0gdGVybS5nZXRUeXBlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1UeXBlO1xuICB9XG5cbiAgaXNUZXJtR3JvdW5kZWQodGVybSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLFxuICAgICAgICAgIGVxdWl2YWxlbmNlcyA9IHRoaXMuZ2V0RXF1aXZhbGVuY2VzKCksXG4gICAgICAgICAgZ3JvdW5kZWRUZXJtcyA9IFtdLFxuICAgICAgICAgIGRlZmluZWRWYXJpYWJsZXMgPSBbXTtcblxuICAgIGdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzRnJvbUZyb21FcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgIGNvbnN0IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtID0gZ3JvdW5kZWRUZXJtcy5zb21lKChncm91bmRlZFRlcm0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtID0gdGVybS5tYXRjaChncm91bmRlZFRlcm0pO1xuXG4gICAgICAgICAgICBpZiAodGVybU1hdGNoZXNHcm91bmRlZFRlcm0pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGVybUdyb3VuZGVkID0gdGVybU1hdGNoZXNHcm91bmRlZFRlcm07IC8vL1xuXG4gICAgcmV0dXJuIHRlcm1Hcm91bmRlZDtcbiAgfVxuXG4gIGlzVmFyaWFibGVEZWZpbmVkKHZhcmlhYmxlKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMsXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gdGhpcy5nZXRFcXVpdmFsZW5jZXMoKSxcbiAgICAgICAgICBncm91bmRlZFRlcm1zID0gW10sXG4gICAgICAgICAgZGVmaW5lZFZhcmlhYmxlcyA9IFtdO1xuXG4gICAgZ3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXNGcm9tRnJvbUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5zb21lKChkZWZpbmVkVmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSA9IHZhcmlhYmxlLm1hdGNoKGRlZmluZWRWYXJpYWJsZSk7XG5cbiAgICAgICAgICAgIGlmICh2YXJpYWJsZU1hdGNoZXNEZWZpbmVkVmFyaWFibGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdmFyaWFibGVEZWZpbmVkID0gdmFyaWFibGVNYXRjaGVzRGVmaW5lZFZhcmlhYmxlOyAvLy9cblxuICAgIHJldHVybiB2YXJpYWJsZURlZmluZWQ7XG4gIH1cblxuICBpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IHZhcmlhYmxlID0gdGhpcy5maW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHZhcmlhYmxlUHJlc2VudCA9ICh2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGVQcmVzZW50O1xuICB9XG5cbiAgaXNKdWRnZW1lbnRQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBqdWRnZW1lbnQgPSB0aGlzLmZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAganVkZ2VtZW50UHJlc2VudCA9IChqdWRnZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudFByZXNlbnQ7XG4gIH1cblxuICBpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lKTsgfVxuXG4gIGlzVHlwZVByZXNlbnRCeVR5cGVOb2RlKHR5cGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5vZGUodHlwZU5vZGUpOyB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50QnlOYW1lKG5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU5hbWUobmFtZSk7IH1cblxuICBpc0xhYmVsUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuaXNMYWJlbFByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMuZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlUHJlc2VudDtcbiAgfVxuXG4gIGZpbmRWYXJpYWJsZUJ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSB2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB0aGlzLmdldFZhcmlhYmxlcygpLFxuICAgICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGVzLmZpbmQoKHZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gdmFyaWFibGUubWF0Y2hOb2RlKG5vZGUpO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9XG5cbiAgZmluZEp1ZGdlbWVudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QganVkZ2VtZW50cyA9IHRoaXMuZ2V0SnVkZ2VtZW50cygpLFxuICAgICAgICAgIGp1ZGdlbWVudCA9IGp1ZGdlbWVudHMuZmluZCgoanVkZ2VtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBqdWRnZW1lbnRNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSA9IGp1ZGdlbWVudC5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChqdWRnZW1lbnRNYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfVxuXG4gIGZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gdGhpcywgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVzLmZpbmQoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IG1ldGF2YXJpYWJsZS5tYXRjaE5vZGUobm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBmaW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpOyB9XG5cbiAgZmluZFR5cGVCeVR5cGVOb2RlKHR5cGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZFR5cGVCeVR5cGVOb2RlKHR5cGVOb2RlKTsgfVxuXG4gIGZpbmRNZXRhdmFyaWFibGVCeU5hbWUobmFtZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU5hbWUobmFtZSk7IH1cblxuICBmaW5kTGFiZWxCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRMYWJlbEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIGZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSk7IH1cblxuICBmaW5kUnVsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZFJ1bGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7IH1cblxuICBmaW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRBeGlvbUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIGZpbmRMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZExlbW1hQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgZmluZFRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkgeyByZXR1cm4gdGhpcy5jb250ZXh0LmZpbmRUaGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgZmluZE1ldGFMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZE1ldGFMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIGZpbmRDb25qZWN0dXJlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5maW5kQ29uamVjdHVyZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTsgfVxuXG4gIGZpbmRNZXRhdGhlb3JlbUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7IHJldHVybiB0aGlzLmNvbnRleHQuZmluZE1ldGF0aGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpOyB9XG5cbiAgbm9kZUFzU3RyaW5nKG5vZGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSk7IH1cblxuICBub2Rlc0FzU3RyaW5nKG5vZGUpIHsgcmV0dXJuIHRoaXMuY29udGV4dC5ub2Rlc0FzU3RyaW5nKG5vZGUpOyB9XG5cbiAgdHJhY2Uobm9kZSwgbWVzc2FnZSkgeyB0aGlzLmNvbnRleHQudHJhY2Uobm9kZSwgbWVzc2FnZSk7IH1cblxuICBkZWJ1Zyhub2RlLCBtZXNzYWdlKSB7IHRoaXMuY29udGV4dC5kZWJ1Zyhub2RlLCBtZXNzYWdlKTsgfVxuXG4gIGluZm8obm9kZSwgbWVzc2FnZSkgeyB0aGlzLmNvbnRleHQuaW5mbyhub2RlLCBtZXNzYWdlKTsgfVxuXG4gIHdhcm5pbmcobm9kZSwgbWVzc2FnZSkgeyB0aGlzLmNvbnRleHQud2FybmluZyhub2RlLCBtZXNzYWdlKTsgfVxuXG4gIGVycm9yKG5vZGUsIG1lc3NhZ2UpIHsgdGhpcy5jb250ZXh0LmVycm9yKG5vZGUsIG1lc3NhZ2UpOyB9XG5cbiAgZmF0YWwobm9kZSwgbWVzc2FnZSkgeyB0aGlzLmNvbnRleHQuZmF0YWwobm9kZSwgbWVzc2FnZSk7IH1cblxuICBzdGF0aWMgZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgcHJvb2ZTdGVwcyA9IFtdLFxuICAgICAgICAgIGVxdWl2YWxlbmNlcyA9IFtdLFxuICAgICAgICAgIGp1ZGdlbWVudHMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgbG9jYWxDb250ZXh0ID0gbmV3IExvY2FsQ29udGV4dChjb250ZXh0LCB2YXJpYWJsZXMsIHByb29mU3RlcHMsIGp1ZGdlbWVudHMsIGVxdWl2YWxlbmNlcywgbWV0YXZhcmlhYmxlcyk7XG5cbiAgICByZXR1cm4gbG9jYWxDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Mb2NhbENvbnRleHQobG9jYWxDb250ZXh0KSB7XG4gICAgY29uc3QgY29udGV4dCA9IGxvY2FsQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIHByb29mU3RlcHMgPSBbXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSBbXSxcbiAgICAgICAgICBqdWRnZW1lbnRzID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlcyA9IFtdO1xuXG4gICAgbG9jYWxDb250ZXh0ID0gbmV3IExvY2FsQ29udGV4dChjb250ZXh0LCB2YXJpYWJsZXMsIHByb29mU3RlcHMsIGp1ZGdlbWVudHMsIGVxdWl2YWxlbmNlcywgbWV0YXZhcmlhYmxlcyk7ICAvLy9cblxuICAgIHJldHVybiBsb2NhbENvbnRleHQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxDb250ZXh0OyJdLCJuYW1lcyI6WyJMb2NhbENvbnRleHQiLCJjb250ZXh0IiwidmFyaWFibGVzIiwicHJvb2ZTdGVwcyIsImp1ZGdlbWVudHMiLCJlcXVpdmFsZW5jZXMiLCJtZXRhdmFyaWFibGVzIiwiZ2V0Q29udGV4dCIsImdldFZhcmlhYmxlcyIsImdldFByb29mU3RlcHMiLCJnZXRKdWRnZW1lbnRzIiwiZ2V0RXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VzQSIsImVxdWl2YWxlbmNlc0IiLCJtZXJnZUVxdWl2YWxlbmNlcyIsImdldE1ldGF2YXJpYWJsZXMiLCJnZXRMYXN0UHJvb2ZTdGVwIiwibGFzdFByb29mU3RlcCIsInByb29mU3RlcHNMZW5ndGgiLCJsZW5ndGgiLCJsYXN0IiwiZ2V0VG9rZW5zIiwiZ2V0QXhpb21zIiwiZ2V0TGVtbWFzIiwiZ2V0VGhlb3JlbXMiLCJnZXRDb25qZWN0dXJlcyIsImdldENvbWJpbmF0b3JzIiwiZ2V0Q29uc3RydWN0b3JzIiwiYWRkRXF1YWxpdHkiLCJlcXVhbGl0eSIsImVxdWFsaXR5QWRkZWQiLCJlcXVhbGl0eVJlZmxleGl2ZSIsImlzUmVmbGV4aXZlIiwibGVmdFRlcm0iLCJnZXRMZWZ0VGVybSIsInJpZ2h0VGVybSIsImdldFJpZ2h0VGVybSIsImxlZnRFcXVpdmFsZW5jZSIsImZpbmRFcXVpdmFsZW5jZUJ5VGVybSIsInJpZ2h0RXF1aXZhbGVuY2UiLCJlcXVpdmFsZW5jZSIsIkVxdWl2YWxlbmNlIiwiZnJvbUxlZnRUZXJtQW5kUmlnaHRUZXJtIiwiYWRkRXF1aXZhbGVuY2UiLCJhZGRUZXJtIiwibWVyZ2UiLCJyZW1vdmVFcXVpdmFsZW5jZSIsImFkZFZhcmlhYmxlIiwidmFyaWFibGUiLCJ2YXJpYWJsZUFkZGVkIiwibm9kZSIsImdldE5vZGUiLCJ2YXJpYWJsZVByZXNlbnQiLCJzb21lIiwidmFyaWFibGVNYXRjaGVzTm9kZSIsIm1hdGNoTm9kZSIsInB1c2giLCJhZGRQcm9vZlN0ZXAiLCJwcm9vZlN0ZXAiLCJpbmRleCIsImluZGV4T2YiLCJzdGFydCIsImRlbGV0ZUNvdW50Iiwic3BsaWNlIiwiYWRkSnVkZ2VtZW50IiwianVkZ2VtZW50IiwianVkZ2VtZW50QWRkZWQiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsImp1ZGdlbWVudFByZXNlbnQiLCJpc0p1ZGdlbWVudFByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJhZGRNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVBZGRlZCIsImdldE5hbWUiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwibWV0YXZhcmlhYmxlTWF0Y2hlc05vZGUiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudE5vZGUiLCJsb2NhbENvbnRleHQiLCJyZXZlcnNlIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJzdGF0ZW1lbnROb2RlQiIsInN0YXRlbWVudFVuaWZpZWQiLCJnZXRUZXJtVHlwZSIsInRlcm0iLCJ0ZXJtVHlwZSIsImVxdWl2YWxlbmNlVHlwZSIsImdldFR5cGUiLCJpc1Rlcm1Hcm91bmRlZCIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXNGcm9tRnJvbUVxdWl2YWxlbmNlcyIsInRlcm1NYXRjaGVzR3JvdW5kZWRUZXJtIiwiZ3JvdW5kZWRUZXJtIiwibWF0Y2giLCJ0ZXJtR3JvdW5kZWQiLCJpc1ZhcmlhYmxlRGVmaW5lZCIsInZhcmlhYmxlTWF0Y2hlc0RlZmluZWRWYXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZSIsInZhcmlhYmxlRGVmaW5lZCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTm9kZSIsImZpbmRKdWRnZW1lbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsInR5cGVOYW1lIiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5vZGUiLCJ0eXBlTm9kZSIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TmFtZSIsIm5hbWUiLCJpc0xhYmVsUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kIiwibWF0Y2hlcyIsImp1ZGdlbWVudE1hdGNoZXNNZXRhdmFyaWFibGVOb2RlIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOb2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TmFtZSIsImZpbmRMYWJlbEJ5TWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOb2RlIiwibWV0YVR5cGVOb2RlIiwiZmluZFJ1bGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kVGhlb3JlbUJ5TWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUiLCJmaW5kQ29uamVjdHVyZUJ5TWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhdGhlb3JlbUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm5vZGVBc1N0cmluZyIsIm5vZGVzQXNTdHJpbmciLCJ0cmFjZSIsIm1lc3NhZ2UiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJmYXRhbCIsImZyb21GaWxlQ29udGV4dCIsImZpbGVDb250ZXh0IiwiZnJvbUxvY2FsQ29udGV4dCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBOGJBOzs7ZUFBQTs7O2tFQTVid0I7cUJBRU07NEJBQ2lGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvRyxJQUFBLEFBQU1BLDZCQUFOO2FBQU1BLGFBQ1FDLE9BQU8sRUFBRUMsU0FBUyxFQUFFQyxVQUFVLEVBQUVDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxhQUFhO2dDQUQvRU47UUFFRixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO1FBQ2xCLElBQUksQ0FBQ0MsVUFBVSxHQUFHQTtRQUNsQixJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxhQUFhLEdBQUdBOztrQkFQbkJOOztZQVVKTyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNOLE9BQU87WUFDckI7OztZQUVBTyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSU4sWUFBWSxJQUFJLENBQUNELE9BQU8sQ0FBQ08sWUFBWTtnQkFFekNOLFlBQVksQUFDVixxQkFBRyxJQUFJLENBQUNBLFNBQVMsU0FDakIscUJBQUdBO2dCQUdMLE9BQU9BO1lBQ1Q7OztZQUVBTyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSU4sYUFBYSxJQUFJLENBQUNGLE9BQU8sQ0FBQ1EsYUFBYTtnQkFFM0NOLGFBQWEsQUFDWCxxQkFBR0EsbUJBQ0gscUJBQUcsSUFBSSxDQUFDQSxVQUFVO2dCQUdwQixPQUFPQTtZQUNUOzs7WUFFQU8sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUlOLGFBQWEsSUFBSSxDQUFDSCxPQUFPLENBQUNTLGFBQWE7Z0JBRTNDTixhQUFhLEFBQ1gscUJBQUcsSUFBSSxDQUFDQSxVQUFVLFNBQ2xCLHFCQUFHQTtnQkFHTCxPQUFPQTtZQUNUOzs7WUFFQU8sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUlOLGVBQWUsSUFBSSxDQUFDSixPQUFPLENBQUNVLGVBQWU7Z0JBRS9DLElBQU1DLGdCQUFnQixJQUFJLENBQUNQLFlBQVksRUFDakNRLGdCQUFnQlIsY0FDaEJMLGlCQUFlLElBQUksRUFBRyxHQUFHO2dCQUUvQkssZUFBZVMsSUFBQUEsK0JBQWlCLEVBQUNGLGVBQWVDLGVBQWViLGlCQUFlLEdBQUc7Z0JBRWpGLE9BQU9LO1lBQ1Q7OztZQUVBVSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSVQsZ0JBQWdCLElBQUksQ0FBQ0wsT0FBTyxDQUFDYyxnQkFBZ0I7Z0JBRWpEVCxnQkFBZ0IsQUFDZCxxQkFBRyxJQUFJLENBQUNBLGFBQWEsU0FDckIscUJBQUdBO2dCQUdMLE9BQU9BO1lBQ1Q7OztZQUVBVSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSUMsZ0JBQWdCO2dCQUVwQixJQUFNQyxtQkFBbUIsSUFBSSxDQUFDZixVQUFVLENBQUNnQixNQUFNO2dCQUUvQyxJQUFJRCxtQkFBbUIsR0FBRztvQkFDeEJELGdCQUFnQkcsSUFBQUEsV0FBSSxFQUFDLElBQUksQ0FBQ2pCLFVBQVU7Z0JBQ3RDO2dCQUVBLE9BQU9jO1lBQ1Q7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQWMsT0FBTyxJQUFJLENBQUNwQixPQUFPLENBQUNvQixTQUFTO1lBQUk7OztZQUUvQ0MsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUFjLE9BQU8sSUFBSSxDQUFDckIsT0FBTyxDQUFDcUIsU0FBUztZQUFJOzs7WUFFL0NDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFBYyxPQUFPLElBQUksQ0FBQ3RCLE9BQU8sQ0FBQ3NCLFNBQVM7WUFBSTs7O1lBRS9DQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQWdCLE9BQU8sSUFBSSxDQUFDdkIsT0FBTyxDQUFDdUIsV0FBVztZQUFJOzs7WUFFbkRDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFBbUIsT0FBTyxJQUFJLENBQUN4QixPQUFPLENBQUN3QixjQUFjO1lBQUk7OztZQUV6REMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUFtQixPQUFPLElBQUksQ0FBQ3pCLE9BQU8sQ0FBQ3lCLGNBQWM7WUFBSTs7O1lBRXpEQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQW9CLE9BQU8sSUFBSSxDQUFDMUIsT0FBTyxDQUFDMEIsZUFBZTtZQUFJOzs7WUFFM0RDLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZQyxRQUFRO2dCQUNsQixJQUFJQztnQkFFSixJQUFNQyxvQkFBb0JGLFNBQVNHLFdBQVc7Z0JBRTlDLElBQUlELG1CQUFtQjtvQkFDckJELGdCQUFnQixNQUFNLEdBQUc7Z0JBQzNCLE9BQU87b0JBQ0wsSUFBTUcsV0FBV0osU0FBU0ssV0FBVyxJQUMvQkMsWUFBWU4sU0FBU08sWUFBWSxJQUNqQ0Msa0JBQWtCQyxJQUFBQSxtQ0FBcUIsRUFBQyxJQUFJLENBQUNqQyxZQUFZLEVBQUU0QixXQUMzRE0sbUJBQW1CRCxJQUFBQSxtQ0FBcUIsRUFBQyxJQUFJLENBQUNqQyxZQUFZLEVBQUU4QjtvQkFFbEUsSUFBSSxPQUFPO29CQUNULEdBQUc7b0JBQ0wsT0FBTyxJQUFJLEFBQUNFLG9CQUFvQixRQUFVRSxxQkFBcUIsTUFBTzt3QkFDcEUsSUFBTUMsY0FBY0Msb0JBQVcsQ0FBQ0Msd0JBQXdCLENBQUNULFVBQVVFO3dCQUVuRSxJQUFJLENBQUNRLGNBQWMsQ0FBQ0g7d0JBRXBCVixnQkFBZ0I7b0JBQ2xCLE9BQU8sSUFBSSxBQUFDTyxvQkFBb0IsUUFBVUUscUJBQXFCLE1BQU87d0JBQ3BFRixnQkFBZ0JPLE9BQU8sQ0FBQ1Q7d0JBRXhCTCxnQkFBZ0I7b0JBQ2xCLE9BQU8sSUFBSSxBQUFDTyxvQkFBb0IsUUFBVUUscUJBQXFCLE1BQU87d0JBQ3BFQSxpQkFBaUJLLE9BQU8sQ0FBQ1g7d0JBRXpCSCxnQkFBZ0I7b0JBQ2xCLE9BQU8sSUFBSSxBQUFDTyxvQkFBb0IsUUFBVUUscUJBQXFCLE1BQU87d0JBQ3BFLElBQUlDO3dCQUVKLElBQUlILG9CQUFvQkUsa0JBQWtCOzRCQUN4Q0MsZUFBY0gsaUJBQWtCLEdBQUc7d0JBQ3JDLE9BQU87NEJBQ0xHLGVBQWNDLG9CQUFXLENBQUNJLEtBQUssQ0FBQ1IsaUJBQWlCRTs0QkFFakQsSUFBSSxDQUFDTyxpQkFBaUIsQ0FBQ1Q7NEJBRXZCLElBQUksQ0FBQ1MsaUJBQWlCLENBQUNQOzRCQUV2QixJQUFJLENBQUNJLGNBQWMsQ0FBQ0g7d0JBQ3RCO3dCQUVBQSxhQUFZSSxPQUFPLENBQUNYO3dCQUVwQk8sYUFBWUksT0FBTyxDQUFDVDt3QkFFcEJMLGdCQUFnQjtvQkFDbEI7Z0JBQ0Y7Z0JBRUEsT0FBT0E7WUFDVDs7O1lBRUFpQixLQUFBQTttQkFBQUEsU0FBQUEsWUFBWUMsUUFBUTtnQkFDbEIsSUFBSUMsZ0JBQWdCO2dCQUVwQixJQUFNQyxPQUFPRixTQUFTRyxPQUFPLElBQ3ZCQyxrQkFBa0IsSUFBSSxDQUFDbEQsU0FBUyxDQUFDbUQsSUFBSSxDQUFDLFNBQUNMO29CQUNyQyxJQUFNTSxzQkFBc0JOLFNBQVNPLFNBQVMsQ0FBQ0w7b0JBRS9DLElBQUlJLHFCQUFxQjt3QkFDdkIsT0FBTztvQkFDVDtnQkFDRjtnQkFFTixJQUFJLENBQUNGLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDbEQsU0FBUyxDQUFDc0QsSUFBSSxDQUFDUjtvQkFFcEJDLGdCQUFnQjtnQkFDbEI7Z0JBRUEsT0FBT0E7WUFDVDs7O1lBRUFRLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhQyxTQUFTO2dCQUNwQixJQUFJLENBQUN2RCxVQUFVLENBQUNxRCxJQUFJLENBQUNFO1lBQ3ZCOzs7WUFFQWYsS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVILFdBQVc7Z0JBQ3hCLElBQUksQ0FBQ25DLFlBQVksQ0FBQ21ELElBQUksQ0FBQ2hCO1lBQ3pCOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBLGtCQUFrQk4sV0FBVztnQkFDM0IsSUFBTW1CLFFBQVEsSUFBSSxDQUFDdEQsWUFBWSxDQUFDdUQsT0FBTyxDQUFDcEIsY0FDbENxQixRQUFRRixPQUNSRyxjQUFjO2dCQUVwQixJQUFJLENBQUN6RCxZQUFZLENBQUMwRCxNQUFNLENBQUNGLE9BQU9DO1lBQ2xDOzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLGFBQWFDLFNBQVM7Z0JBQ3BCLElBQUlDLGlCQUFpQjtnQkFFckIsSUFBTUMsbUJBQW1CRixVQUFVRyxtQkFBbUIsSUFDaERDLG1CQUFtQixJQUFJLENBQUNDLG9DQUFvQyxDQUFDSDtnQkFFbkUsSUFBSSxDQUFDRSxrQkFBa0I7b0JBQ3JCLElBQUksQ0FBQ2pFLFVBQVUsQ0FBQ29ELElBQUksQ0FBQ1M7b0JBRXJCQyxpQkFBaUI7Z0JBQ25CO2dCQUVBLE9BQU9BO1lBQ1Q7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsZ0JBQWdCQyxZQUFZO2dCQUMxQixJQUFJQyxvQkFBb0I7Z0JBRXhCLElBQU12QixPQUFPc0IsYUFBYUUsT0FBTyxJQUMzQkMsc0JBQXNCLElBQUksQ0FBQ3JFLGFBQWEsQ0FBQytDLElBQUksQ0FBQyxTQUFDbUI7b0JBQzdDLElBQU1JLDBCQUEwQkosYUFBYWpCLFNBQVMsQ0FBQ0w7b0JBRXZELElBQUkwQix5QkFBeUI7d0JBQzNCLE9BQU87b0JBQ1Q7Z0JBQ0Y7Z0JBRU4sSUFBSSxDQUFDRCxxQkFBcUI7b0JBQ3hCLElBQUksQ0FBQ3JFLGFBQWEsQ0FBQ2tELElBQUksQ0FBQ2dCO29CQUV4QkMsb0JBQW9CO2dCQUN0QjtnQkFFQSxPQUFPQTtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVDLGFBQWEsRUFBRUMsWUFBWTtnQkFDeEMsSUFBSTVFLGFBQWEsSUFBSSxDQUFDTSxhQUFhO2dCQUVuQ04sYUFBYTZFLElBQUFBLGNBQU8sRUFBQzdFLGFBQWEsR0FBRztnQkFFckMsSUFBTUUsZUFBZSxJQUFJLENBQUNNLGVBQWUsSUFDbkNzRSxnQkFBZ0IsSUFBSSxFQUNwQkMsZ0JBQWdCSCxjQUNoQkksaUJBQWlCTCxlQUNqQk0sbUJBQW1CakYsV0FBV2tELElBQUksQ0FBQyxTQUFDSztvQkFDbEMsSUFBTTBCLG1CQUFtQjFCLFVBQVVtQixjQUFjLENBQUNNLGdCQUFnQjlFLGNBQWM0RSxlQUFlQztvQkFFL0YsSUFBSUUsa0JBQWtCO3dCQUNwQixPQUFPO29CQUNUO2dCQUNGO2dCQUVOLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWUMsSUFBSTtnQkFDZCxJQUFJQztnQkFFSixJQUFNbEYsZUFBZSxJQUFJLENBQUNNLGVBQWUsSUFDbkM2QixjQUFjRixJQUFBQSxtQ0FBcUIsRUFBQ2pDLGNBQWNpRjtnQkFFeEQsSUFBSTlDLGdCQUFnQixNQUFNO29CQUN4QixJQUFNeEMsaUJBQWUsSUFBSSxFQUNuQndGLGtCQUFrQmhELFlBQVlpRCxPQUFPLENBQUN6RjtvQkFFNUN1RixXQUFXQyxpQkFBa0IsR0FBRztnQkFDbEMsT0FBTztvQkFDTEQsV0FBV0QsS0FBS0csT0FBTztnQkFDekI7Z0JBRUEsT0FBT0Y7WUFDVDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxlQUFlSixJQUFJO2dCQUNqQixJQUFNckYsVUFBVSxJQUFJLEVBQ2RJLGVBQWUsSUFBSSxDQUFDTSxlQUFlLElBQ25DZ0YsZ0JBQWdCLEVBQUUsRUFDbEJDLG1CQUFtQixFQUFFO2dCQUUzQkMsSUFBQUEsa0VBQW9ELEVBQUN4RixjQUFjc0YsZUFBZUMsa0JBQWtCM0Y7Z0JBRXBHLElBQU02RiwwQkFBMEJILGNBQWN0QyxJQUFJLENBQUMsU0FBQzBDO29CQUM1QyxJQUFNRCwwQkFBMEJSLEtBQUtVLEtBQUssQ0FBQ0Q7b0JBRTNDLElBQUlELHlCQUF5Qjt3QkFDM0IsT0FBTztvQkFDVDtnQkFDRixJQUNBRyxlQUFlSCx5QkFBeUIsR0FBRztnQkFFakQsT0FBT0c7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0JsRCxRQUFRO2dCQUN4QixJQUFNL0MsVUFBVSxJQUFJLEVBQ2RJLGVBQWUsSUFBSSxDQUFDTSxlQUFlLElBQ25DZ0YsZ0JBQWdCLEVBQUUsRUFDbEJDLG1CQUFtQixFQUFFO2dCQUUzQkMsSUFBQUEsa0VBQW9ELEVBQUN4RixjQUFjc0YsZUFBZUMsa0JBQWtCM0Y7Z0JBRXBHLElBQU1rRyxpQ0FBaUNQLGlCQUFpQnZDLElBQUksQ0FBQyxTQUFDK0M7b0JBQ3RELElBQU1ELGlDQUFpQ25ELFNBQVNnRCxLQUFLLENBQUNJO29CQUV0RCxJQUFJRCxnQ0FBZ0M7d0JBQ2xDLE9BQU87b0JBQ1Q7Z0JBQ0YsSUFDQUUsa0JBQWtCRixnQ0FBZ0MsR0FBRztnQkFFM0QsT0FBT0U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxnQ0FBZ0NDLFlBQVk7Z0JBQzFDLElBQU12RCxXQUFXLElBQUksQ0FBQ3dELDBCQUEwQixDQUFDRCxlQUMzQ25ELGtCQUFtQkosYUFBYTtnQkFFdEMsT0FBT0k7WUFDVDs7O1lBRUFrQixLQUFBQTttQkFBQUEsU0FBQUEscUNBQXFDSCxnQkFBZ0I7Z0JBQ25ELElBQU1GLFlBQVksSUFBSSxDQUFDd0MsK0JBQStCLENBQUN0QyxtQkFDakRFLG1CQUFvQkosY0FBYztnQkFFeEMsT0FBT0k7WUFDVDs7O1lBRUFxQyxLQUFBQTttQkFBQUEsU0FBQUEsd0JBQXdCQyxRQUFRO2dCQUFJLE9BQU8sSUFBSSxDQUFDMUcsT0FBTyxDQUFDeUcsdUJBQXVCLENBQUNDO1lBQVc7OztZQUUzRkMsS0FBQUE7bUJBQUFBLFNBQUFBLHdCQUF3QkMsUUFBUTtnQkFBSSxPQUFPLElBQUksQ0FBQzVHLE9BQU8sQ0FBQzJHLHVCQUF1QixDQUFDQztZQUFXOzs7WUFFM0ZDLEtBQUFBO21CQUFBQSxTQUFBQSw0QkFBNEJDLElBQUk7Z0JBQUksT0FBTyxJQUFJLENBQUM5RyxPQUFPLENBQUM2RywyQkFBMkIsQ0FBQ0M7WUFBTzs7O1lBRTNGQyxLQUFBQTttQkFBQUEsU0FBQUEsaUNBQWlDN0MsZ0JBQWdCO2dCQUFJLE9BQU8sSUFBSSxDQUFDbEUsT0FBTyxDQUFDK0csZ0NBQWdDLENBQUM3QztZQUFtQjs7O1lBRTdIOEMsS0FBQUE7bUJBQUFBLFNBQUFBLHdDQUF3QzlDLGdCQUFnQjtnQkFDdEQsSUFBTUssZUFBZSxJQUFJLENBQUMwQyxrQ0FBa0MsQ0FBQy9DLG1CQUN2RFEsc0JBQXVCSCxpQkFBaUI7Z0JBRTlDLE9BQU9HO1lBQ1Q7OztZQUVBNkIsS0FBQUE7bUJBQUFBLFNBQUFBLDJCQUEyQkQsWUFBWTtnQkFDckMsSUFBTXJELE9BQU9xRCxjQUNQckcsWUFBWSxJQUFJLENBQUNNLFlBQVksSUFDN0J3QyxXQUFXOUMsVUFBVWlILElBQUksQ0FBQyxTQUFDbkU7b0JBQ3pCLElBQU1vRSxVQUFVcEUsU0FBU08sU0FBUyxDQUFDTDtvQkFFbkMsSUFBSWtFLFNBQVM7d0JBQ1gsT0FBTztvQkFDVDtnQkFDRixNQUFNO2dCQUVaLE9BQU9wRTtZQUNUOzs7WUFFQXlELEtBQUFBO21CQUFBQSxTQUFBQSxnQ0FBZ0N0QyxnQkFBZ0I7Z0JBQzlDLElBQU0vRCxhQUFhLElBQUksQ0FBQ00sYUFBYSxJQUMvQnVELFlBQVk3RCxXQUFXK0csSUFBSSxDQUFDLFNBQUNsRDtvQkFDM0IsSUFBTW9ELG1DQUFtQ3BELFVBQVVxRCxxQkFBcUIsQ0FBQ25EO29CQUV6RSxJQUFJa0Qsa0NBQWtDO3dCQUNwQyxPQUFPO29CQUNUO2dCQUNGLE1BQU07Z0JBRVosT0FBT3BEO1lBQ1Q7OztZQUVBaUQsS0FBQUE7bUJBQUFBLFNBQUFBLG1DQUFtQy9DLGdCQUFnQjtnQkFDakQsSUFBTWpCLE9BQU9pQixrQkFDUFksZUFBZSxJQUFJLEVBQ25CekUsZ0JBQWdCLElBQUksQ0FBQ1MsZ0JBQWdCLElBQ3JDeUQsZUFBZWxFLGNBQWM2RyxJQUFJLENBQUMsU0FBQzNDO29CQUNqQyxJQUFNNEMsVUFBVTVDLGFBQWFqQixTQUFTLENBQUNMLE1BQU02QjtvQkFFN0MsSUFBSXFDLFNBQVM7d0JBQ1gsT0FBTztvQkFDVDtnQkFDRixNQUFNO2dCQUVaLE9BQU81QztZQUNUOzs7WUFFQStDLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUJaLFFBQVE7Z0JBQUksT0FBTyxJQUFJLENBQUMxRyxPQUFPLENBQUNzSCxrQkFBa0IsQ0FBQ1o7WUFBVzs7O1lBRWpGYSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CWCxRQUFRO2dCQUFJLE9BQU8sSUFBSSxDQUFDNUcsT0FBTyxDQUFDdUgsa0JBQWtCLENBQUNYO1lBQVc7OztZQUVqRlksS0FBQUE7bUJBQUFBLFNBQUFBLHVCQUF1QlYsSUFBSTtnQkFBSSxPQUFPLElBQUksQ0FBQzlHLE9BQU8sQ0FBQ3dILHNCQUFzQixDQUFDVjtZQUFPOzs7WUFFakZXLEtBQUFBO21CQUFBQSxTQUFBQSw0QkFBNEJ2RCxnQkFBZ0I7Z0JBQUksT0FBTyxJQUFJLENBQUNsRSxPQUFPLENBQUN5SCwyQkFBMkIsQ0FBQ3ZEO1lBQW1COzs7WUFFbkh3RCxLQUFBQTttQkFBQUEsU0FBQUEsMkJBQTJCQyxZQUFZO2dCQUFJLE9BQU8sSUFBSSxDQUFDM0gsT0FBTyxDQUFDMEgsMEJBQTBCLENBQUNDO1lBQWU7OztZQUV6R0MsS0FBQUE7bUJBQUFBLFNBQUFBLDJCQUEyQjFELGdCQUFnQjtnQkFBSSxPQUFPLElBQUksQ0FBQ2xFLE9BQU8sQ0FBQzRILDBCQUEwQixDQUFDMUQ7WUFBbUI7OztZQUVqSDJELEtBQUFBO21CQUFBQSxTQUFBQSw0QkFBNEIzRCxnQkFBZ0I7Z0JBQUksT0FBTyxJQUFJLENBQUNsRSxPQUFPLENBQUM2SCwyQkFBMkIsQ0FBQzNEO1lBQW1COzs7WUFFbkg0RCxLQUFBQTttQkFBQUEsU0FBQUEsNEJBQTRCNUQsZ0JBQWdCO2dCQUFJLE9BQU8sSUFBSSxDQUFDbEUsT0FBTyxDQUFDOEgsMkJBQTJCLENBQUM1RDtZQUFtQjs7O1lBRW5INkQsS0FBQUE7bUJBQUFBLFNBQUFBLDhCQUE4QjdELGdCQUFnQjtnQkFBSSxPQUFPLElBQUksQ0FBQ2xFLE9BQU8sQ0FBQytILDZCQUE2QixDQUFDN0Q7WUFBbUI7OztZQUV2SDhELEtBQUFBO21CQUFBQSxTQUFBQSxnQ0FBZ0M5RCxnQkFBZ0I7Z0JBQUksT0FBTyxJQUFJLENBQUNsRSxPQUFPLENBQUNnSSwrQkFBK0IsQ0FBQzlEO1lBQW1COzs7WUFFM0grRCxLQUFBQTttQkFBQUEsU0FBQUEsaUNBQWlDL0QsZ0JBQWdCO2dCQUFJLE9BQU8sSUFBSSxDQUFDbEUsT0FBTyxDQUFDaUksZ0NBQWdDLENBQUMvRDtZQUFtQjs7O1lBRTdIZ0UsS0FBQUE7bUJBQUFBLFNBQUFBLGtDQUFrQ2hFLGdCQUFnQjtnQkFBSSxPQUFPLElBQUksQ0FBQ2xFLE9BQU8sQ0FBQ2tJLGlDQUFpQyxDQUFDaEU7WUFBbUI7OztZQUUvSGlFLEtBQUFBO21CQUFBQSxTQUFBQSxhQUFhbEYsSUFBSTtnQkFBSSxPQUFPLElBQUksQ0FBQ2pELE9BQU8sQ0FBQ21JLFlBQVksQ0FBQ2xGO1lBQU87OztZQUU3RG1GLEtBQUFBO21CQUFBQSxTQUFBQSxjQUFjbkYsSUFBSTtnQkFBSSxPQUFPLElBQUksQ0FBQ2pELE9BQU8sQ0FBQ29JLGFBQWEsQ0FBQ25GO1lBQU87OztZQUUvRG9GLEtBQUFBO21CQUFBQSxTQUFBQSxNQUFNcEYsSUFBSSxFQUFFcUYsT0FBTztnQkFBSSxJQUFJLENBQUN0SSxPQUFPLENBQUNxSSxLQUFLLENBQUNwRixNQUFNcUY7WUFBVTs7O1lBRTFEQyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTXRGLElBQUksRUFBRXFGLE9BQU87Z0JBQUksSUFBSSxDQUFDdEksT0FBTyxDQUFDdUksS0FBSyxDQUFDdEYsTUFBTXFGO1lBQVU7OztZQUUxREUsS0FBQUE7bUJBQUFBLFNBQUFBLEtBQUt2RixJQUFJLEVBQUVxRixPQUFPO2dCQUFJLElBQUksQ0FBQ3RJLE9BQU8sQ0FBQ3dJLElBQUksQ0FBQ3ZGLE1BQU1xRjtZQUFVOzs7WUFFeERHLEtBQUFBO21CQUFBQSxTQUFBQSxRQUFReEYsSUFBSSxFQUFFcUYsT0FBTztnQkFBSSxJQUFJLENBQUN0SSxPQUFPLENBQUN5SSxPQUFPLENBQUN4RixNQUFNcUY7WUFBVTs7O1lBRTlESSxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTXpGLElBQUksRUFBRXFGLE9BQU87Z0JBQUksSUFBSSxDQUFDdEksT0FBTyxDQUFDMEksS0FBSyxDQUFDekYsTUFBTXFGO1lBQVU7OztZQUUxREssS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU0xRixJQUFJLEVBQUVxRixPQUFPO2dCQUFJLElBQUksQ0FBQ3RJLE9BQU8sQ0FBQzJJLEtBQUssQ0FBQzFGLE1BQU1xRjtZQUFVOzs7O1lBRW5ETSxLQUFBQTttQkFBUCxTQUFPQSxnQkFBZ0JDLFdBQVc7Z0JBQ2hDLElBQU03SSxVQUFVNkksYUFDVjVJLFlBQVksRUFBRSxFQUNkQyxhQUFhLEVBQUUsRUFDZkUsZUFBZSxFQUFFLEVBQ2pCRCxhQUFhLEVBQUUsRUFDZkUsZ0JBQWdCLEVBQUUsRUFDbEJ5RSxlQUFlLElBcGFuQi9FLGFBb2FvQ0MsU0FBU0MsV0FBV0MsWUFBWUMsWUFBWUMsY0FBY0M7Z0JBRWhHLE9BQU95RTtZQUNUOzs7WUFFT2dFLEtBQUFBO21CQUFQLFNBQU9BLGlCQUFpQmhFLFlBQVk7Z0JBQ2xDLElBQU05RSxVQUFVOEUsY0FDVjdFLFlBQVksRUFBRSxFQUNkQyxhQUFhLEVBQUUsRUFDZkUsZUFBZSxFQUFFLEVBQ2pCRCxhQUFhLEVBQUUsRUFDZkUsZ0JBQWdCLEVBQUU7Z0JBRXhCeUUsZUFBZSxJQWpiYi9FLGFBaWI4QkMsU0FBU0MsV0FBV0MsWUFBWUMsWUFBWUMsY0FBY0MsZ0JBQWlCLEdBQUc7Z0JBRTlHLE9BQU95RTtZQUNUOzs7V0FwYkkvRTs7SUF1Yk4sV0FBZUEifQ==
package/lib/proofStep.js CHANGED
@@ -55,17 +55,20 @@ var ProofStep = /*#__PURE__*/ function() {
55
55
  },
56
56
  {
57
57
  key: "unifyStatement",
58
- value: function unifyStatement(statementNode, equivalences, localContextA, localContextB) {
58
+ value: function unifyStatement(statementNodeB, equivalences, localContextA, localContextB) {
59
59
  var statementUnified = false;
60
60
  if (this.statementNode !== null) {
61
61
  var statementUnifiedWithStatement = false;
62
62
  if (!statementUnifiedWithStatement) {
63
- var statementNodeA = statementNode, statementNodeB = this.statementNode; ///
63
+ var statementNodeA = this.statementNode; ///
64
64
  statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA, statementNodeB, equivalences, localContextA, localContextB);
65
65
  }
66
66
  if (!statementUnifiedWithStatement) {
67
- var statementNodeA1 = statementNode, statementNodeB1 = this.statementNode; ///
68
- statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA1, statementNodeB1, equivalences, localContextA, localContextB);
67
+ var statementNodeA1 = statementNodeB, localContext = localContextA; ///
68
+ statementNodeB = this.statementNode; ///
69
+ localContextA = localContextB; ///
70
+ localContextB = localContext; ///
71
+ statementUnifiedWithStatement = unifyStatementWithStatement(statementNodeA1, statementNodeB, equivalences, localContextA, localContextB);
69
72
  }
70
73
  statementUnified = statementUnifiedWithStatement; ///
71
74
  }
@@ -105,4 +108,4 @@ function unifyStatementWithStatement(statementNodeA, statementNodeB, equivalence
105
108
  return statementUnifiedWithStatement;
106
109
  }
107
110
 
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9vZlN0ZXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBTdWJzdGl0dXRpb25zIGZyb20gXCIuL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCBpbnRyaW5zaWNMZXZlbFVuaWZpZXIgZnJvbSBcIi4vdW5pZmllci9pbnRyaW5zaWNMZXZlbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9vZlN0ZXAge1xuICBjb25zdHJ1Y3RvcihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN1YnByb29mTm9kZSA9IHN1YnByb29mTm9kZTtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0U3VicHJvb2ZOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnByb29mTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGVxdWl2YWxlbmNlcywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5zdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBsZXQgc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQgPSBmYWxzZTtcblxuICAgICAgaWYgKCFzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudCkge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlQSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICBzdGF0ZW1lbnROb2RlQiA9IHRoaXMuc3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50ID0gdW5pZnlTdGF0ZW1lbnRXaXRoU3RhdGVtZW50KHN0YXRlbWVudE5vZGVBLCBzdGF0ZW1lbnROb2RlQiwgZXF1aXZhbGVuY2VzLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudCkge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnROb2RlQSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgICBzdGF0ZW1lbnROb2RlQiA9IHRoaXMuc3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50ID0gdW5pZnlTdGF0ZW1lbnRXaXRoU3RhdGVtZW50KHN0YXRlbWVudE5vZGVBLCBzdGF0ZW1lbnROb2RlQiwgZXF1aXZhbGVuY2VzLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcbiAgICAgIH1cblxuICAgICAgc3RhdGVtZW50VW5pZmllZCA9IHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50OyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWQ7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gbnVsbCxcbiAgICAgICAgICBwcm9vZlN0ZXAgPSBuZXcgUHJvb2ZTdGVwKHN1YnByb29mTm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gcHJvb2ZTdGVwO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdWJwcm9vZk5vZGUgPSBudWxsLFxuICAgICAgICAgIHByb29mU3RlcCA9IG5ldyBQcm9vZlN0ZXAoc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBwcm9vZlN0ZXA7XG4gIH1cbn1cblxuZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoU3RhdGVtZW50KHN0YXRlbWVudE5vZGVBLCBzdGF0ZW1lbnROb2RlQiwgZXF1aXZhbGVuY2VzLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZ0EgPSBsb2NhbENvbnRleHRBLm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlQSksXG4gICAgICAgIHN0YXRlbWVudFN0cmluZ0IgPSBsb2NhbENvbnRleHRCLm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlQik7XG5cbiAgbG9jYWxDb250ZXh0Qi50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ0J9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nQX0nIHN0YXRlbWVudC4uLmAsIHN0YXRlbWVudE5vZGVCKTtcblxuICBjb25zdCBzdWJzdGl0dXRpb25zID0gU3Vic3RpdHV0aW9ucy5mcm9tTm90aGluZygpLFxuICAgICAgICBub2RlQSA9IHN0YXRlbWVudE5vZGVBLCAgLy8vXG4gICAgICAgIG5vZGVCID0gc3RhdGVtZW50Tm9kZUIsICAvLy9cbiAgICAgICAgdW5pZmllZCA9IGludHJpbnNpY0xldmVsVW5pZmllci51bmlmeShub2RlQSwgbm9kZUIsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gIGlmICh1bmlmaWVkKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uc1VuaWZpZWRXaXRoRXF1aXZhbGVuY2VzID0gc3Vic3RpdHV0aW9ucy51bmlmeVdpdGhFcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50ID0gc3Vic3RpdHV0aW9uc1VuaWZpZWRXaXRoRXF1aXZhbGVuY2VzOyAgLy8vXG4gIH1cblxuICBpZiAoc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQpIHtcbiAgICBsb2NhbENvbnRleHRCLmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmdCfScgc3RhdGVtZW50IHdpdGggdGhlICcke3N0YXRlbWVudFN0cmluZ0F9JyBzdGF0ZW1lbnQuYCwgc3RhdGVtZW50Tm9kZUIpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50O1xufSJdLCJuYW1lcyI6WyJQcm9vZlN0ZXAiLCJzdWJwcm9vZk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3VicHJvb2ZOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInVuaWZ5U3RhdGVtZW50IiwiZXF1aXZhbGVuY2VzIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJzdGF0ZW1lbnRVbmlmaWVkIiwic3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlQSIsInN0YXRlbWVudE5vZGVCIiwidW5pZnlTdGF0ZW1lbnRXaXRoU3RhdGVtZW50IiwiZnJvbVN1YnByb29mTm9kZSIsInByb29mU3RlcCIsImZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50U3RyaW5nQSIsIm5vZGVBc1N0cmluZyIsInN0YXRlbWVudFN0cmluZ0IiLCJ0cmFjZSIsInN1YnN0aXR1dGlvbnMiLCJTdWJzdGl0dXRpb25zIiwiZnJvbU5vdGhpbmciLCJub2RlQSIsIm5vZGVCIiwidW5pZmllZCIsImludHJpbnNpY0xldmVsVW5pZmllciIsInVuaWZ5Iiwic3Vic3RpdHV0aW9uc1VuaWZpZWRXaXRoRXF1aXZhbGVuY2VzIiwidW5pZnlXaXRoRXF1aXZhbGVuY2VzIiwiZGVidWciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBS3FCQTs7O29FQUhLO3FFQUNROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5CLElBQUEsQUFBTUEsMEJBQU47YUFBTUEsVUFDUEMsWUFBWSxFQUFF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
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9vZlN0ZXAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBTdWJzdGl0dXRpb25zIGZyb20gXCIuL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCBpbnRyaW5zaWNMZXZlbFVuaWZpZXIgZnJvbSBcIi4vdW5pZmllci9pbnRyaW5zaWNMZXZlbFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9vZlN0ZXAge1xuICBjb25zdHJ1Y3RvcihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN1YnByb29mTm9kZSA9IHN1YnByb29mTm9kZTtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0U3VicHJvb2ZOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnByb29mTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGVCLCBlcXVpdmFsZW5jZXMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgbGV0IHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50ID0gZmFsc2U7XG5cbiAgICAgIGlmICghc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZUEgPSB0aGlzLnN0YXRlbWVudE5vZGU7ICAvLy9cblxuICAgICAgICBzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudCA9IHVuaWZ5U3RhdGVtZW50V2l0aFN0YXRlbWVudChzdGF0ZW1lbnROb2RlQSwgc3RhdGVtZW50Tm9kZUIsIGVxdWl2YWxlbmNlcywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZUEgPSBzdGF0ZW1lbnROb2RlQiwgIC8vL1xuICAgICAgICAgICAgICBsb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHRBOyAvLy9cblxuICAgICAgICBzdGF0ZW1lbnROb2RlQiA9IHRoaXMuc3RhdGVtZW50Tm9kZTsgIC8vL1xuXG4gICAgICAgIGxvY2FsQ29udGV4dEEgPSBsb2NhbENvbnRleHRCOyAgLy8vXG5cbiAgICAgICAgbG9jYWxDb250ZXh0QiA9IGxvY2FsQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQgPSB1bmlmeVN0YXRlbWVudFdpdGhTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZUEsIHN0YXRlbWVudE5vZGVCLCBlcXVpdmFsZW5jZXMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuICAgICAgfVxuXG4gICAgICBzdGF0ZW1lbnRVbmlmaWVkID0gc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQ7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllZDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIHByb29mU3RlcCA9IG5ldyBQcm9vZlN0ZXAoc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBwcm9vZlN0ZXA7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHN1YnByb29mTm9kZSA9IG51bGwsXG4gICAgICAgICAgcHJvb2ZTdGVwID0gbmV3IFByb29mU3RlcChzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHByb29mU3RlcDtcbiAgfVxufVxuXG5mdW5jdGlvbiB1bmlmeVN0YXRlbWVudFdpdGhTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZUEsIHN0YXRlbWVudE5vZGVCLCBlcXVpdmFsZW5jZXMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgbGV0IHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50ID0gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nQSA9IGxvY2FsQ29udGV4dEEubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGVBKSxcbiAgICAgICAgc3RhdGVtZW50U3RyaW5nQiA9IGxvY2FsQ29udGV4dEIubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGVCKTtcblxuICBsb2NhbENvbnRleHRCLnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nQn0nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmdBfScgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZUIpO1xuXG4gIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgIG5vZGVBID0gc3RhdGVtZW50Tm9kZUEsICAvLy9cbiAgICAgICAgbm9kZUIgPSBzdGF0ZW1lbnROb2RlQiwgIC8vL1xuICAgICAgICB1bmlmaWVkID0gaW50cmluc2ljTGV2ZWxVbmlmaWVyLnVuaWZ5KG5vZGVBLCBub2RlQiwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG5cbiAgaWYgKHVuaWZpZWQpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25zVW5pZmllZFdpdGhFcXVpdmFsZW5jZXMgPSBzdWJzdGl0dXRpb25zLnVuaWZ5V2l0aEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQgPSBzdWJzdGl0dXRpb25zVW5pZmllZFdpdGhFcXVpdmFsZW5jZXM7ICAvLy9cbiAgfVxuXG4gIGlmIChzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudCkge1xuICAgIGxvY2FsQ29udGV4dEIuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ0J9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nQX0nIHN0YXRlbWVudC5gLCBzdGF0ZW1lbnROb2RlQik7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQ7XG59Il0sIm5hbWVzIjpbIlByb29mU3RlcCIsInN1YnByb29mTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdWJwcm9vZk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlQiIsImVxdWl2YWxlbmNlcyIsImxvY2FsQ29udGV4dEEiLCJsb2NhbENvbnRleHRCIiwic3RhdGVtZW50VW5pZmllZCIsInN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZUEiLCJ1bmlmeVN0YXRlbWVudFdpdGhTdGF0ZW1lbnQiLCJsb2NhbENvbnRleHQiLCJmcm9tU3VicHJvb2ZOb2RlIiwicHJvb2ZTdGVwIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRTdHJpbmdBIiwibm9kZUFzU3RyaW5nIiwic3RhdGVtZW50U3RyaW5nQiIsInRyYWNlIiwic3Vic3RpdHV0aW9ucyIsIlN1YnN0aXR1dGlvbnMiLCJmcm9tTm90aGluZyIsIm5vZGVBIiwibm9kZUIiLCJ1bmlmaWVkIiwiaW50cmluc2ljTGV2ZWxVbmlmaWVyIiwidW5pZnkiLCJzdWJzdGl0dXRpb25zVW5pZmllZFdpdGhFcXVpdmFsZW5jZXMiLCJ1bmlmeVdpdGhFcXVpdmFsZW5jZXMiLCJkZWJ1ZyJdLCJtYXBwaW5n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
@@ -120,10 +120,15 @@ var TermForVariableSubstitution = /*#__PURE__*/ function(Substitution) {
120
120
  }
121
121
  },
122
122
  {
123
- key: "isTransformed",
124
- value: function isTransformed(substitution) {
125
- var termNod = substitution.getTermNode(), variableNode = substitution.getVariableNode(), termNodeMatches = this.termNode.match(termNod), variableNodeMatches = this.variableNode.match(variableNode), transformed = !termNodeMatches && !variableNodeMatches;
126
- return transformed;
123
+ key: "transformed",
124
+ value: function transformed(substitutions) {
125
+ var transformedSubstitution = null;
126
+ var transformedTermNode = transformTermNode(this.termNode, substitutions), transformedVariableNode = transformVariableNode(this.variableNode, substitutions);
127
+ if (transformedTermNode !== null && transformedVariableNode !== null) {
128
+ var termNode = transformedTermNode, variableNode = transformedVariableNode, termForVariableSubstitution = new TermForVariableSubstitution(termNode, variableNode);
129
+ transformedSubstitution = termForVariableSubstitution; ///
130
+ }
131
+ return transformedSubstitution;
127
132
  }
128
133
  },
129
134
  {
@@ -180,18 +185,9 @@ var TermForVariableSubstitution = /*#__PURE__*/ function(Substitution) {
180
185
  key: "fromSubstitutionAndSubstitutions",
181
186
  value: function fromSubstitutionAndSubstitutions(substitution, substitutions) {
182
187
  var termNode = substitution.getTermNode(), variableNode = substitution.getVariableNode();
183
- termNode = substituteTermNode(termNode, substitutions); ///
184
- variableNode = substituteVariableNode(variableNode, substitutions); ///
185
- var termForVariableSubstitution = new TermForVariableSubstitution(variableNode, termNode);
186
- return termForVariableSubstitution;
187
- }
188
- },
189
- {
190
- key: "fromSubstitutionNodeAndSubstitutions",
191
- value: function fromSubstitutionNodeAndSubstitutions(substitutionNode, substitutions) {
192
- var termNode = termNodeQuery(substitutionNode), variableNode = variableNodeQuery(substitutionNode);
193
- termNode = substituteTermNode(termNode, substitutions); ///
194
- variableNode = substituteVariableNode(variableNode, substitutions); ///
188
+ var transformedTermNode = transformTermNode(termNode, substitutions), transformedVariableNode = transformVariableNode(variableNode, substitutions); ///
189
+ termNode = transformedTermNode; ///
190
+ variableNode = transformedVariableNode; ///
195
191
  var termForVariableSubstitution = new TermForVariableSubstitution(variableNode, termNode);
196
192
  return termForVariableSubstitution;
197
193
  }
@@ -199,31 +195,34 @@ var TermForVariableSubstitution = /*#__PURE__*/ function(Substitution) {
199
195
  ]);
200
196
  return TermForVariableSubstitution;
201
197
  }(_substitution.default);
202
- function substituteTermNode(termNode, substitutions) {
198
+ function transformTermNode(termNode, substitutions) {
199
+ var transformedTermNode = null;
203
200
  var termVariableNode = variableNodeQuery(termNode);
204
201
  if (termVariableNode !== null) {
205
202
  substitutions.someSubstitution(function(substitution) {
206
203
  var substitutionMatchesVariableNode = substitution.matchVariableNode(termVariableNode);
207
204
  if (substitutionMatchesVariableNode) {
208
- termNode = substitution.getTermNode(); ///
205
+ var _$termNode = substitution.getTermNode();
206
+ transformedTermNode = _$termNode; ////
209
207
  return true;
210
208
  }
211
209
  });
212
210
  }
213
- return termNode;
211
+ return transformedTermNode;
214
212
  }
215
- function substituteVariableNode(variableNode, substitutions) {
213
+ function transformVariableNode(variableNode, substitutions) {
214
+ var transformedVariableNode = null;
216
215
  substitutions.someSubstitution(function(substitution) {
217
216
  var substitutionMatchesVariableNode = substitution.matchVariableNode(variableNode);
218
217
  if (substitutionMatchesVariableNode) {
219
- var termNode = substitution.getTermNode(), termVariableNode = variableNodeQuery(termNode);
220
- if (termVariableNode !== null) {
221
- variableNode = termVariableNode; ///
218
+ var termNode = substitution.getTermNode(), _$variableNode = variableNodeQuery(termNode);
219
+ if (_$variableNode !== null) {
220
+ transformedVariableNode = _$variableNode; ///
222
221
  return true;
223
222
  }
224
223
  }
225
224
  });
226
- return variableNode;
225
+ return transformedVariableNode;
227
226
  }
228
227
 
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vdGVybUZvclZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiLyovdGVybSFcIiksXG4gICAgICB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qL3ZhcmlhYmxlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIGV4dGVuZHMgU3Vic3RpdHV0aW9uIHtcbiAgY29uc3RydWN0b3IodmFyaWFibGVOb2RlLCB0ZXJtTm9kZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZTtcbiAgICB0aGlzLnRlcm1Ob2RlID0gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0VGVybU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybU5vZGU7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRlcm1Ob2RlOyAvLy9cblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgaXNUcmFuc2Zvcm1lZChzdWJzdGl0dXRpb24pIHtcbiAgICBjb25zdCB0ZXJtTm9kID0gc3Vic3RpdHV0aW9uLmdldFRlcm1Ob2RlKCksXG4gICAgICAgICAgdmFyaWFibGVOb2RlID0gc3Vic3RpdHV0aW9uLmdldFZhcmlhYmxlTm9kZSgpLFxuICAgICAgICAgIHRlcm1Ob2RlTWF0Y2hlcyA9IHRoaXMudGVybU5vZGUubWF0Y2godGVybU5vZCksXG4gICAgICAgICAgdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoaXMudmFyaWFibGVOb2RlLm1hdGNoKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgdHJhbnNmb3JtZWQgPSAoKCF0ZXJtTm9kZU1hdGNoZXMpICYmICghdmFyaWFibGVOb2RlTWF0Y2hlcykpO1xuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICB9XG5cbiAgbWF0Y2hUZXJtTm9kZSh0ZXJtTm9kZSkge1xuICAgIGNvbnN0IG1hdGNoZXNUZXJtTm9kZSA9IHRoaXMudGVybU5vZGUubWF0Y2godGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNUZXJtTm9kZTtcbiAgfVxuXG4gIG1hdGNoVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1hdGNoZXNWYXJpYWJsZU5vZGUgPSB0aGlzLnZhcmlhYmxlTm9kZS5tYXRjaCh2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXNWYXJpYWJsZU5vZGU7XG4gIH1cblxuICB1bmlmeVdpdGhFcXVpdmFsZW5jZShlcXVpdmFsZW5jZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICAgIGxldCB1bmlmaWVkV2l0aEVxdWl2YWxlbmNlO1xuXG4gICAgY29uc3QgZXF1aXZhbGVuY2VNYXRjaGVzVmFyaWFibGVOb2RlID0gZXF1aXZhbGVuY2UubWF0Y2hWYXJpYWJsZU5vZGUodGhpcy52YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlTWF0Y2hlc1ZhcmlhYmxlTm9kZSkge1xuICAgICAgY29uc3QgZXF1aXZhbGVuY2VNYXRjaGVzVGVybU5vZGUgPSBlcXVpdmFsZW5jZS5tYXRjaFRlcm1Ob2RlKHRoaXMudGVybU5vZGUpO1xuXG4gICAgICBpZiAoZXF1aXZhbGVuY2VNYXRjaGVzVGVybU5vZGUpIHtcbiAgICAgICAgdW5pZmllZFdpdGhFcXVpdmFsZW5jZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuaWZpZWRXaXRoRXF1aXZhbGVuY2U7XG4gIH1cblxuICBhc1N0cmluZyhsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gICAgY29uc3QgdGVybU5vZGVCID0gdGhpcy50ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIHRlcm1TdHJpbmdCID0gbG9jYWxDb250ZXh0Qi5ub2RlQXNTdHJpbmcodGVybU5vZGVCKSxcbiAgICAgICAgICB2YXJpYWJsZU5vZGVBID0gdGhpcy52YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZVN0cmluZ0EgPSBsb2NhbENvbnRleHRBLm5vZGVBc1N0cmluZyh2YXJpYWJsZU5vZGVBKSxcbiAgICAgICAgICBzdHJpbmcgPSBgWyR7dGVybVN0cmluZ0J9IGZvciAke3ZhcmlhYmxlU3RyaW5nQX1dYDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSkge1xuICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uKHZhcmlhYmxlTm9kZSwgdGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmFyaWFibGVOb2RlQW5kVGVybU5vZGUodmFyaWFibGVOb2RlLCB0ZXJtTm9kZSkge1xuICAgIGNvbnN0IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24odmFyaWFibGVOb2RlLCB0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdWJzdGl0dXRpb25BbmRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbiwgc3Vic3RpdHV0aW9ucykge1xuICAgIGxldCB0ZXJtTm9kZSA9IHN1YnN0aXR1dGlvbi5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB2YXJpYWJsZU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0VmFyaWFibGVOb2RlKCk7XG5cbiAgICB0ZXJtTm9kZSA9IHN1YnN0aXR1dGVUZXJtTm9kZSh0ZXJtTm9kZSwgc3Vic3RpdHV0aW9ucyk7IC8vL1xuXG4gICAgdmFyaWFibGVOb2RlID0gc3Vic3RpdHV0ZVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpOyAvLy9cblxuICAgIGNvbnN0IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24odmFyaWFibGVOb2RlLCB0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdWJzdGl0dXRpb25Ob2RlQW5kU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25Ob2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gICAgbGV0IHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICB0ZXJtTm9kZSA9IHN1YnN0aXR1dGVUZXJtTm9kZSh0ZXJtTm9kZSwgc3Vic3RpdHV0aW9ucyk7IC8vL1xuXG4gICAgdmFyaWFibGVOb2RlID0gc3Vic3RpdHV0ZVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpOyAvLy9cblxuICAgIGNvbnN0IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24odmFyaWFibGVOb2RlLCB0ZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN1YnN0aXR1dGVUZXJtTm9kZSh0ZXJtTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBjb25zdCB0ZXJtVmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gIGlmICh0ZXJtVmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgc3Vic3RpdHV0aW9ucy5zb21lU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk1hdGNoZXNWYXJpYWJsZU5vZGUgPSBzdWJzdGl0dXRpb24ubWF0Y2hWYXJpYWJsZU5vZGUodGVybVZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25NYXRjaGVzVmFyaWFibGVOb2RlKSB7XG4gICAgICAgIHRlcm1Ob2RlID0gc3Vic3RpdHV0aW9uLmdldFRlcm1Ob2RlKCk7ICAvLy9cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtTm9kZTtcbn1cblxuZnVuY3Rpb24gc3Vic3RpdHV0ZVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgc3Vic3RpdHV0aW9ucy5zb21lU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25NYXRjaGVzVmFyaWFibGVOb2RlID0gc3Vic3RpdHV0aW9uLm1hdGNoVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uTWF0Y2hlc1ZhcmlhYmxlTm9kZSkge1xuICAgICAgY29uc3QgdGVybU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgICAgIHRlcm1WYXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgICAgIGlmICh0ZXJtVmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIHZhcmlhYmxlTm9kZSA9IHRlcm1WYXJpYWJsZU5vZGU7ICAvLy9cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZU5vZGU7XG59XG4iXSwibmFtZXMiOlsiVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInZhcmlhYmxlTm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlIiwidGVybU5vZGUiLCJnZXRWYXJpYWJsZU5vZGUiLCJnZXRUZXJtTm9kZSIsImdldE5vZGUiLCJub2RlIiwiaXNUcmFuc2Zvcm1lZCIsInN1YnN0aXR1dGlvbiIsInRlcm1Ob2QiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaCIsInZhcmlhYmxlTm9kZU1hdGNoZXMiLCJ0cmFuc2Zvcm1lZCIsIm1hdGNoVGVybU5vZGUiLCJtYXRjaGVzVGVybU5vZGUiLCJtYXRjaFZhcmlhYmxlTm9kZSIsIm1hdGNoZXNWYXJpYWJsZU5vZGUiLCJ1bmlmeVdpdGhFcXVpdmFsZW5jZSIsImVxdWl2YWxlbmNlIiwic3Vic3RpdHV0aW9ucyIsImxvY2FsQ29udGV4dEEiLCJsb2NhbENvbnRleHRCIiwidW5pZmllZFdpdGhFcXVpdmFsZW5jZSIsImVxdWl2YWxlbmNlTWF0Y2hlc1ZhcmlhYmxlTm9kZSIsImVxdWl2YWxlbmNlTWF0Y2hlc1Rlcm1Ob2RlIiwiYXNTdHJpbmciLCJ0ZXJtTm9kZUIiLCJ0ZXJtU3RyaW5nQiIsIm5vZGVBc1N0cmluZyIsInZhcmlhYmxlTm9kZUEiLCJ2YXJpYWJsZVN0cmluZ0EiLCJzdHJpbmciLCJmcm9tU3Vic3RpdHV0aW9uTm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJ0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24iLCJmcm9tVmFyaWFibGVOb2RlQW5kVGVybU5vZGUiLCJmcm9tU3Vic3RpdHV0aW9uQW5kU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGVUZXJtTm9kZSIsInN1YnN0aXR1dGVWYXJpYWJsZU5vZGUiLCJmcm9tU3Vic3RpdHV0aW9uTm9kZUFuZFN1YnN0aXR1dGlvbnMiLCJTdWJzdGl0dXRpb24iLCJ0ZXJtVmFyaWFibGVOb2RlIiwic29tZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbk1hdGNoZXNWYXJpYWJsZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBU3FCQTs7O21FQVBJO3FCQUVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1DLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyxhQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLElBQUEsQUFBTUYsNENBQU47Y0FBTUE7YUFBQUEsNEJBQ1BJLFlBQVksRUFBRUMsUUFBUTtnQ0FEZkw7O2dCQUVqQixrQkFGaUJBO1FBSWpCLE1BQUtJLFlBQVksR0FBR0E7UUFDcEIsTUFBS0MsUUFBUSxHQUFHQTs7O2tCQUxDTDs7WUFRbkJNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsWUFBWTtZQUMxQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsUUFBUTtZQUN0Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxPQUFPLElBQUksQ0FBQ0osUUFBUSxFQUFFLEdBQUc7Z0JBRS9CLE9BQU9JO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsY0FBY0MsWUFBWTtnQkFDeEIsSUFBTUMsVUFBVUQsYUFBYUosV0FBVyxJQUNsQ0gsZUFBZU8sYUFBYUwsZUFBZSxJQUMzQ08sa0JBQWtCLElBQUks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
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vdGVybUZvclZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiLyovdGVybSFcIiksXG4gICAgICB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi8qL3ZhcmlhYmxlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIGV4dGVuZHMgU3Vic3RpdHV0aW9uIHtcbiAgY29uc3RydWN0b3IodmFyaWFibGVOb2RlLCB0ZXJtTm9kZSkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZTtcbiAgICB0aGlzLnRlcm1Ob2RlID0gdGVybU5vZGU7XG4gIH1cblxuICBnZXRWYXJpYWJsZU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0VGVybU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVybU5vZGU7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRlcm1Ob2RlOyAvLy9cblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgdHJhbnNmb3JtZWQoc3Vic3RpdHV0aW9ucykge1xuICAgIGxldCB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZFRlcm1Ob2RlID0gdHJhbnNmb3JtVGVybU5vZGUodGhpcy50ZXJtTm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgdHJhbnNmb3JtZWRWYXJpYWJsZU5vZGUgPSB0cmFuc2Zvcm1WYXJpYWJsZU5vZGUodGhpcy52YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgaWYgKCh0cmFuc2Zvcm1lZFRlcm1Ob2RlICE9PSBudWxsKSAmJiAodHJhbnNmb3JtZWRWYXJpYWJsZU5vZGUgIT09IG51bGwpKSB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IHRyYW5zZm9ybWVkVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gdHJhbnNmb3JtZWRWYXJpYWJsZU5vZGUsXG4gICAgICAgICAgICB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uKHRlcm1Ob2RlLCB2YXJpYWJsZU5vZGUpO1xuXG4gICAgICB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiA9IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIG1hdGNoVGVybU5vZGUodGVybU5vZGUpIHtcbiAgICBjb25zdCBtYXRjaGVzVGVybU5vZGUgPSB0aGlzLnRlcm1Ob2RlLm1hdGNoKHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiBtYXRjaGVzVGVybU5vZGU7XG4gIH1cblxuICBtYXRjaFZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtYXRjaGVzVmFyaWFibGVOb2RlID0gdGhpcy52YXJpYWJsZU5vZGUubWF0Y2godmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBtYXRjaGVzVmFyaWFibGVOb2RlO1xuICB9XG5cbiAgdW5pZnlXaXRoRXF1aXZhbGVuY2UoZXF1aXZhbGVuY2UsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgICBsZXQgdW5pZmllZFdpdGhFcXVpdmFsZW5jZTtcblxuICAgIGNvbnN0IGVxdWl2YWxlbmNlTWF0Y2hlc1ZhcmlhYmxlTm9kZSA9IGVxdWl2YWxlbmNlLm1hdGNoVmFyaWFibGVOb2RlKHRoaXMudmFyaWFibGVOb2RlKTtcblxuICAgIGlmIChlcXVpdmFsZW5jZU1hdGNoZXNWYXJpYWJsZU5vZGUpIHtcbiAgICAgIGNvbnN0IGVxdWl2YWxlbmNlTWF0Y2hlc1Rlcm1Ob2RlID0gZXF1aXZhbGVuY2UubWF0Y2hUZXJtTm9kZSh0aGlzLnRlcm1Ob2RlKTtcblxuICAgICAgaWYgKGVxdWl2YWxlbmNlTWF0Y2hlc1Rlcm1Ob2RlKSB7XG4gICAgICAgIHVuaWZpZWRXaXRoRXF1aXZhbGVuY2UgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmlmaWVkV2l0aEVxdWl2YWxlbmNlO1xuICB9XG5cbiAgYXNTdHJpbmcobG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICAgIGNvbnN0IHRlcm1Ob2RlQiA9IHRoaXMudGVybU5vZGUsICAvLy9cbiAgICAgICAgICB0ZXJtU3RyaW5nQiA9IGxvY2FsQ29udGV4dEIubm9kZUFzU3RyaW5nKHRlcm1Ob2RlQiksXG4gICAgICAgICAgdmFyaWFibGVOb2RlQSA9IHRoaXMudmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmdBID0gbG9jYWxDb250ZXh0QS5ub2RlQXNTdHJpbmcodmFyaWFibGVOb2RlQSksXG4gICAgICAgICAgc3RyaW5nID0gYFske3Rlcm1TdHJpbmdCfSBmb3IgJHt2YXJpYWJsZVN0cmluZ0F9XWA7XG5cbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdWJzdGl0dXRpb25Ob2RlKHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkoc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbmV3IFRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbih2YXJpYWJsZU5vZGUsIHRlcm1Ob2RlKTtcblxuICAgIHJldHVybiB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVZhcmlhYmxlTm9kZUFuZFRlcm1Ob2RlKHZhcmlhYmxlTm9kZSwgdGVybU5vZGUpIHtcbiAgICBjb25zdCB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uKHZhcmlhYmxlTm9kZSwgdGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3Vic3RpdHV0aW9uQW5kU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMpIHtcbiAgICBsZXQgdGVybU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgdmFyaWFibGVOb2RlID0gc3Vic3RpdHV0aW9uLmdldFZhcmlhYmxlTm9kZSgpO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRUZXJtTm9kZSA9IHRyYW5zZm9ybVRlcm1Ob2RlKHRlcm1Ob2RlLCBzdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICB0cmFuc2Zvcm1lZFZhcmlhYmxlTm9kZSA9IHRyYW5zZm9ybVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpOyAvLy9cblxuICAgIHRlcm1Ob2RlID0gdHJhbnNmb3JtZWRUZXJtTm9kZTsgLy8vXG5cbiAgICB2YXJpYWJsZU5vZGUgPSB0cmFuc2Zvcm1lZFZhcmlhYmxlTm9kZTsgLy8vXG5cbiAgICBjb25zdCB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uKHZhcmlhYmxlTm9kZSwgdGVybU5vZGUpO1xuXG4gICAgcmV0dXJuIHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1UZXJtTm9kZSh0ZXJtTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgdHJhbnNmb3JtZWRUZXJtTm9kZSA9IG51bGw7XG5cbiAgY29uc3QgdGVybVZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICBpZiAodGVybVZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIHN1YnN0aXR1dGlvbnMuc29tZVN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25NYXRjaGVzVmFyaWFibGVOb2RlID0gc3Vic3RpdHV0aW9uLm1hdGNoVmFyaWFibGVOb2RlKHRlcm1WYXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uTWF0Y2hlc1ZhcmlhYmxlTm9kZSkge1xuICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHN1YnN0aXR1dGlvbi5nZXRUZXJtTm9kZSgpO1xuXG4gICAgICAgIHRyYW5zZm9ybWVkVGVybU5vZGUgPSB0ZXJtTm9kZTsgLy8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkVGVybU5vZGU7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHRyYW5zZm9ybWVkVmFyaWFibGVOb2RlID0gbnVsbDtcblxuICBzdWJzdGl0dXRpb25zLnNvbWVTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk1hdGNoZXNWYXJpYWJsZU5vZGUgPSBzdWJzdGl0dXRpb24ubWF0Y2hWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICAgIGlmIChzdWJzdGl0dXRpb25NYXRjaGVzVmFyaWFibGVOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IHN1YnN0aXR1dGlvbi5nZXRUZXJtTm9kZSgpLFxuICAgICAgICAgICAgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gICAgICBpZiAodmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkVmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdHJhbnNmb3JtZWRWYXJpYWJsZU5vZGU7XG59XG4iXSwibmFtZXMiOlsiVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInZhcmlhYmxlTm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlIiwidGVybU5vZGUiLCJnZXRWYXJpYWJsZU5vZGUiLCJnZXRUZXJtTm9kZSIsImdldE5vZGUiLCJub2RlIiwidHJhbnNmb3JtZWQiLCJzdWJzdGl0dXRpb25zIiwidHJhbnNmb3JtZWRTdWJzdGl0dXRpb24iLCJ0cmFuc2Zvcm1lZFRlcm1Ob2RlIiwidHJhbnNmb3JtVGVybU5vZGUiLCJ0cmFuc2Zvcm1lZFZhcmlhYmxlTm9kZSIsInRyYW5zZm9ybVZhcmlhYmxlTm9kZSIsInRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiIsIm1hdGNoVGVybU5vZGUiLCJtYXRjaGVzVGVybU5vZGUiLCJtYXRjaCIsIm1hdGNoVmFyaWFibGVOb2RlIiwibWF0Y2hlc1ZhcmlhYmxlTm9kZSIsInVuaWZ5V2l0aEVxdWl2YWxlbmNlIiwiZXF1aXZhbGVuY2UiLCJsb2NhbENvbnRleHRBIiwibG9jYWxDb250ZXh0QiIsInVuaWZpZWRXaXRoRXF1aXZhbGVuY2UiLCJlcXVpdmFsZW5jZU1hdGNoZXNWYXJpYWJsZU5vZGUiLCJlcXVpdmFsZW5jZU1hdGNoZXNUZXJtTm9kZSIsImFzU3RyaW5nIiwidGVybU5vZGVCIiwidGVybVN0cmluZ0IiLCJub2RlQXNTdHJpbmciLCJ2YXJpYWJsZU5vZGVBIiwidmFyaWFibGVTdHJpbmdBIiwic3RyaW5nIiwiZnJvbVN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwiZnJvbVZhcmlhYmxlTm9kZUFuZFRlcm1Ob2RlIiwiZnJvbVN1YnN0aXR1dGlvbkFuZFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb24iLCJTdWJzdGl0dXRpb24iLCJ0ZXJtVmFyaWFibGVOb2RlIiwic29tZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbk1hdGNoZXNWYXJpYWJsZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBU3FCQTs7O21FQVBJO3FCQUVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1DLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyxhQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLElBQUEsQUFBTUYsNENBQU47Y0FBTUE7YUFBQUEsNEJBQ1BJLFlBQVksRUFBRUMsUUFBUTtnQ0FEZkw7O2dCQUVqQixrQkFGaUJBO1FBSWpCLE1BQUtJLFlBQVksR0FBR0E7UUFDcEIsTUFBS0MsUUFBUSxHQUFHQTs7O2tCQUxDTDs7WUFRbkJNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsWUFBWTtZQUMxQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0YsUUFBUTtZQUN0Qjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxPQUFPLElBQUksQ0FBQ0osUUFBUSxFQUFFLEdBQUc7Z0JBRS9CLE9BQU9JO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsWUFBWUMsYUFBYTtnQkFDdkIsSUFBSUMsMEJBQTBCO2dCQUU5QixJQUFNQyxzQkFBc0JDLGtCQUFrQixJQUFJ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
@@ -113,9 +113,9 @@ var StatementWithCombinatorUnifier = /*#__PURE__*/ function(Unifier) {
113
113
  _create_class(StatementWithCombinatorUnifier, [
114
114
  {
115
115
  key: "unify",
116
- value: function unify(statementNode, combinatorStatementNode, localContext) {
116
+ value: function unify(statementNode, combinatorStatementNode, assignments, derived, localContext) {
117
117
  var statementUnifiedWithCombinator;
118
- var nonTerminalNodeA = statementNode, nonTerminalNodeB = combinatorStatementNode, nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext);
118
+ var nonTerminalNodeA = statementNode, nonTerminalNodeB = combinatorStatementNode, nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, assignments, derived, localContext);
119
119
  statementUnifiedWithCombinator = nonTerminalNodeUnified; ///
120
120
  return statementUnifiedWithCombinator;
121
121
  }
@@ -127,15 +127,15 @@ _define_property(StatementWithCombinatorUnifier, "maps", [
127
127
  {
128
128
  nodeQueryA: statementNodeQuery,
129
129
  nodeQueryB: metaTypeNodeQuery,
130
- unify: function(statementNodeA, metaTypeNodeB, localContext) {
131
- var metaTypeNode = metaTypeNodeB, statementNode = statementNodeA, statementUnifiedWithMetaType = (0, _statementWithMetaType.default)(statementNode, metaTypeNode, localContext);
130
+ unify: function(statementNodeA, metaTypeNodeB, assignments, derived, localContext) {
131
+ var metaTypeNode = metaTypeNodeB, statementNode = statementNodeA, statementUnifiedWithMetaType = (0, _statementWithMetaType.default)(statementNode, metaTypeNode, assignments, derived, localContext);
132
132
  return statementUnifiedWithMetaType;
133
133
  }
134
134
  },
135
135
  {
136
136
  nodeQueryA: termNodeQuery,
137
137
  nodeQueryB: typeNodeQuery,
138
- unify: function(termNodeA, typeNodeB, localContext) {
138
+ unify: function(termNodeA, typeNodeB, assignments, derived, localContext) {
139
139
  var termNode = termNodeA, typeNode = typeNodeB, termUnifiedWithType = (0, _termWithType.default)(termNode, typeNode, localContext);
140
140
  return termUnifiedWithType;
141
141
  }
@@ -144,4 +144,4 @@ _define_property(StatementWithCombinatorUnifier, "maps", [
144
144
  var statementWithCombinatorUnifier = new StatementWithCombinatorUnifier();
145
145
  var _default = statementWithCombinatorUnifier;
146
146
 
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL3N0YXRlbWVudFdpdGhDb21iaW5hdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVW5pZmllciBmcm9tIFwiLi4vdW5pZmllclwiO1xuaW1wb3J0IHVuaWZ5VGVybVdpdGhUeXBlIGZyb20gXCIuLi91bmlmeS90ZXJtV2l0aFR5cGVcIjtcbmltcG9ydCB1bmlmeVN0YXRlbWVudFdpdGhNZXRhVHlwZSBmcm9tIFwiLi4vdW5pZnkvc3RhdGVtZW50V2l0aE1ldGFUeXBlXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZSFcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50IVwiKTtcblxuY2xhc3MgU3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyIGV4dGVuZHMgVW5pZmllciB7XG4gIHVuaWZ5KHN0YXRlbWVudE5vZGUsIGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlQSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBjb21iaW5hdG9yU3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVW5pZmllZCA9IHRoaXMudW5pZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlQSwgbm9uVGVybWluYWxOb2RlQiwgbG9jYWxDb250ZXh0KTtcblxuICAgIHN0YXRlbWVudFVuaWZpZWRXaXRoQ29tYmluYXRvciA9IG5vblRlcm1pbmFsTm9kZVVuaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWRXaXRoQ29tYmluYXRvcjtcbiAgfTtcblxuICBzdGF0aWMgbWFwcyA9IFtcbiAgICB7XG4gICAgICBub2RlUXVlcnlBOiBzdGF0ZW1lbnROb2RlUXVlcnksXG4gICAgICBub2RlUXVlcnlCOiBtZXRhVHlwZU5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAoc3RhdGVtZW50Tm9kZUEsIG1ldGFUeXBlTm9kZUIsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhVHlwZU5vZGUgPSBtZXRhVHlwZU5vZGVCLCAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVBLCAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllZFdpdGhNZXRhVHlwZSA9IHVuaWZ5U3RhdGVtZW50V2l0aE1ldGFUeXBlKHN0YXRlbWVudE5vZGUsIG1ldGFUeXBlTm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllZFdpdGhNZXRhVHlwZTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeUE6IHRlcm1Ob2RlUXVlcnksXG4gICAgICBub2RlUXVlcnlCOiB0eXBlTm9kZVF1ZXJ5LFxuICAgICAgdW5pZnk6ICh0ZXJtTm9kZUEsIHR5cGVOb2RlQiwgbG9jYWxDb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHRlcm1Ob2RlID0gdGVybU5vZGVBLCAvLy9cbiAgICAgICAgICAgICAgdHlwZU5vZGUgPSB0eXBlTm9kZUIsIC8vL1xuICAgICAgICAgICAgICB0ZXJtVW5pZmllZFdpdGhUeXBlID0gdW5pZnlUZXJtV2l0aFR5cGUodGVybU5vZGUsIHR5cGVOb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIHJldHVybiB0ZXJtVW5pZmllZFdpdGhUeXBlO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3Qgc3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyID0gbmV3IFN0YXRlbWVudFdpdGhDb21iaW5hdG9yVW5pZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBzdGF0ZW1lbnRXaXRoQ29tYmluYXRvclVuaWZpZXI7XG4iXSwibmFtZXMiOlsidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJtZXRhVHlwZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsIlN0YXRlbWVudFdpdGhDb21iaW5hdG9yVW5pZmllciIsInVuaWZ5Iiwic3RhdGVtZW50Tm9kZSIsImNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwibG9jYWxDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJub25UZXJtaW5hbE5vZGVVbmlmaWVkIiwidW5pZnlOb25UZXJtaW5hbE5vZGUiLCJVbmlmaWVyIiwibWFwcyIsIm5vZGVRdWVyeUEiLCJub2RlUXVlcnlCIiwic3RhdGVtZW50Tm9kZUEiLCJtZXRhVHlwZU5vZGVCIiwibWV0YVR5cGVOb2RlIiwic3RhdGVtZW50VW5pZmllZFdpdGhNZXRhVHlwZSIsInVuaWZ5U3RhdGVtZW50V2l0aE1ldGFUeXBlIiwidGVybU5vZGVBIiwidHlwZU5vZGVCIiwidGVybU5vZGUiLCJ0eXBlTm9kZSIsInRlcm1VbmlmaWVkV2l0aFR5cGUiLCJ1bmlmeVRlcm1XaXRoVHlwZSIsInN0YXRlbWVudFdpdGhDb21iaW5hdG9yVW5pZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBc0RBOzs7ZUFBQTs7OzhEQXBEb0I7bUVBQ1U7NEVBQ1M7cUJBRWI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFCLElBQU1BLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyxXQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLFdBQzFCRSxvQkFBb0JGLElBQUFBLGdCQUFTLEVBQUMsZUFDOUJHLHFCQUFxQkgsSUFBQUEsZ0JBQVMsRUFBQztBQUVyQyxJQUFBLEFBQU1JLCtDQUFOO2NBQU1BO2FBQUFBO2dDQUFBQTtpQ0FBQUE7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU1DLGFBQWEsRUFBRUMsdUJBQXVCLEVBQUVDLFlBQVk7Z0JBQ3hELElBQUlDO2dCQUVKLElBQU1DLG1CQUFtQkosZUFDbkJLLG1CQUFtQkoseUJBQ25CSyx5QkFBeUIsSUFBSSxDQUFDQyxvQkFBb0IsQ0FBQ0gsa0JBQWtCQyxrQkFBa0JIO2dCQUU3RkMsaUNBQWlDRyx3QkFBd0IsR0FBRztnQkFFNUQsT0FBT0g7WUFDVDs7O1dBWElMO0VBQXVDVSxnQkFBTztBQWFsRCxpQkFiSVYsZ0NBYUdXLFFBQU87SUFDWjtRQUNFQyxZQUFZYjtRQUNaYyxZQUFZZjtRQUNaRyxPQUFPLFNBQUNhLGdCQUFnQkMsZUFBZVg7WUFDckMsSUFBTVksZUFBZUQsZUFDZmIsZ0JBQWdCWSxnQkFDaEJHLCtCQUErQkMsSUFBQUEsOEJBQTBCLEVBQUNoQixlQUFlYyxjQUFjWjtZQUU3RixPQUFPYTtRQUNUO0lBQ0Y7SUFDQTtRQUNFTCxZQUFZakI7UUFDWmtCLFlBQVloQjtRQUNaSSxPQUFPLFNBQUNrQixXQUFXQyxXQUFXaEI7WUFDNUIsSUFBTWlCLFdBQVdGLFdBQ1hHLFdBQVdGLFdBQ1hHLHNCQUFzQkMsSUFBQUEscUJBQWlCLEVBQUNILFVBQVVDLFVBQVVsQjtZQUVsRSxPQUFPbUI7UUFDVDtJQUNGO0NBQ0Q7QUFHSCxJQUFNRSxpQ0FBaUMsSUFBSXpCO0lBRTNDLFdBQWV5QiJ9
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL3N0YXRlbWVudFdpdGhDb21iaW5hdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgVW5pZmllciBmcm9tIFwiLi4vdW5pZmllclwiO1xuaW1wb3J0IHVuaWZ5VGVybVdpdGhUeXBlIGZyb20gXCIuLi91bmlmeS90ZXJtV2l0aFR5cGVcIjtcbmltcG9ydCB1bmlmeVN0YXRlbWVudFdpdGhNZXRhVHlwZSBmcm9tIFwiLi4vdW5pZnkvc3RhdGVtZW50V2l0aE1ldGFUeXBlXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZSFcIiksXG4gICAgICBtZXRhVHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhVHlwZSFcIiksXG4gICAgICBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50IVwiKTtcblxuY2xhc3MgU3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyIGV4dGVuZHMgVW5pZmllciB7XG4gIHVuaWZ5KHN0YXRlbWVudE5vZGUsIGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFVuaWZpZWRXaXRoQ29tYmluYXRvcjtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZUEgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVCID0gY29tYmluYXRvclN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVVuaWZpZWQgPSB0aGlzLnVuaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yID0gbm9uVGVybWluYWxOb2RlVW5pZmllZDsgLy8vXG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yO1xuICB9O1xuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIG5vZGVRdWVyeUE6IHN0YXRlbWVudE5vZGVRdWVyeSxcbiAgICAgIG5vZGVRdWVyeUI6IG1ldGFUeXBlTm9kZVF1ZXJ5LFxuICAgICAgdW5pZnk6IChzdGF0ZW1lbnROb2RlQSwgbWV0YVR5cGVOb2RlQiwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBtZXRhVHlwZU5vZGUgPSBtZXRhVHlwZU5vZGVCLCAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVBLCAvLy9cbiAgICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllZFdpdGhNZXRhVHlwZSA9IHVuaWZ5U3RhdGVtZW50V2l0aE1ldGFUeXBlKHN0YXRlbWVudE5vZGUsIG1ldGFUeXBlTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWRXaXRoTWV0YVR5cGU7XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBub2RlUXVlcnlBOiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgbm9kZVF1ZXJ5QjogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAodGVybU5vZGVBLCB0eXBlTm9kZUIsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtTm9kZUEsIC8vL1xuICAgICAgICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlQiwgLy8vXG4gICAgICAgICAgICAgIHRlcm1VbmlmaWVkV2l0aFR5cGUgPSB1bmlmeVRlcm1XaXRoVHlwZSh0ZXJtTm9kZSwgdHlwZU5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm1VbmlmaWVkV2l0aFR5cGU7XG4gICAgICB9XG4gICAgfVxuICBdO1xufVxuXG5jb25zdCBzdGF0ZW1lbnRXaXRoQ29tYmluYXRvclVuaWZpZXIgPSBuZXcgU3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHN0YXRlbWVudFdpdGhDb21iaW5hdG9yVW5pZmllcjtcbiJdLCJuYW1lcyI6WyJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsIm1ldGFUeXBlTm9kZVF1ZXJ5Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5IiwiU3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyIiwidW5pZnkiLCJzdGF0ZW1lbnROb2RlIiwiY29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVkV2l0aENvbWJpbmF0b3IiLCJub25UZXJtaW5hbE5vZGVBIiwibm9uVGVybWluYWxOb2RlQiIsIm5vblRlcm1pbmFsTm9kZVVuaWZpZWQiLCJ1bmlmeU5vblRlcm1pbmFsTm9kZSIsIlVuaWZpZXIiLCJtYXBzIiwibm9kZVF1ZXJ5QSIsIm5vZGVRdWVyeUIiLCJzdGF0ZW1lbnROb2RlQSIsIm1ldGFUeXBlTm9kZUIiLCJtZXRhVHlwZU5vZGUiLCJzdGF0ZW1lbnRVbmlmaWVkV2l0aE1ldGFUeXBlIiwidW5pZnlTdGF0ZW1lbnRXaXRoTWV0YVR5cGUiLCJ0ZXJtTm9kZUEiLCJ0eXBlTm9kZUIiLCJ0ZXJtTm9kZSIsInR5cGVOb2RlIiwidGVybVVuaWZpZWRXaXRoVHlwZSIsInVuaWZ5VGVybVdpdGhUeXBlIiwic3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFzREE7OztlQUFBOzs7OERBcERvQjttRUFDVTs0RUFDUztxQkFFYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLFdBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUMsV0FDMUJFLG9CQUFvQkYsSUFBQUEsZ0JBQVMsRUFBQyxlQUM5QkcscUJBQXFCSCxJQUFBQSxnQkFBUyxFQUFDO0FBRXJDLElBQUEsQUFBTUksK0NBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO2lDQUFBQTs7a0JBQUFBOztZQUNKQyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTUMsYUFBYSxFQUFFQyx1QkFBdUIsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7Z0JBQzlFLElBQUlDO2dCQUVKLElBQU1DLG1CQUFtQk4sZUFDbkJPLG1CQUFtQk4seUJBQ25CTyx5QkFBeUIsSUFBSSxDQUFDQyxvQkFBb0IsQ0FBQ0gsa0JBQWtCQyxrQkFBa0JMLGFBQWFDLFNBQVNDO2dCQUVuSEMsaUNBQWlDRyx3QkFBd0IsR0FBRztnQkFFNUQsT0FBT0g7WUFDVDs7O1dBWElQO0VBQXVDWSxnQkFBTztBQWFsRCxpQkFiSVosZ0NBYUdhLFFBQU87SUFDWjtRQUNFQyxZQUFZZjtRQUNaZ0IsWUFBWWpCO1FBQ1pHLE9BQU8sU0FBQ2UsZ0JBQWdCQyxlQUFlYixhQUFhQyxTQUFTQztZQUMzRCxJQUFNWSxlQUFlRCxlQUNmZixnQkFBZ0JjLGdCQUNoQkcsK0JBQStCQyxJQUFBQSw4QkFBMEIsRUFBQ2xCLGVBQWVnQixjQUFjZCxhQUFhQyxTQUFTQztZQUVuSCxPQUFPYTtRQUNUO0lBQ0Y7SUFDQTtRQUNFTCxZQUFZbkI7UUFDWm9CLFlBQVlsQjtRQUNaSSxPQUFPLFNBQUNvQixXQUFXQyxXQUFXbEIsYUFBYUMsU0FBU0M7WUFDbEQsSUFBTWlCLFdBQVdGLFdBQ1hHLFdBQVdGLFdBQ1hHLHNCQUFzQkMsSUFBQUEscUJBQWlCLEVBQUNILFVBQVVDLFVBQVVsQjtZQUVsRSxPQUFPbUI7UUFDVDtJQUNGO0NBQ0Q7QUFHSCxJQUFNRSxpQ0FBaUMsSUFBSTNCO0lBRTNDLFdBQWUyQiJ9
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "default", {
8
8
  return unifyStatementWithStatement;
9
9
  }
10
10
  });
11
+ var _substitutions = /*#__PURE__*/ _interop_require_default(require("../substitutions"));
11
12
  var _metaLevel = /*#__PURE__*/ _interop_require_default(require("../unifier/metaLevel"));
12
13
  var _termForVariable = /*#__PURE__*/ _interop_require_default(require("../substitution/termForVariable"));
13
14
  var _array = require("../utilities/array");
@@ -17,33 +18,32 @@ function _interop_require_default(obj) {
17
18
  };
18
19
  }
19
20
  function unifyStatementWithStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB) {
20
- var statementUnifiedWithtatement = false;
21
- var termForVariableSubstitution = _termForVariable.default.fromSubstitutionAndSubstitutions(substitution, substitutions), transformed = termForVariableSubstitution.isTransformed(substitution);
22
- var substitutionsA = []; ///
23
- if (transformed) {
24
- var substitutionA = termForVariableSubstitution; ///
25
- substitutionsA.push(substitutionA);
21
+ var statementUnifiedWithStatement = false;
22
+ var transformedSubstitutions = _substitutions.default.fromNothing(), transformedSubstitution = substitution.transformed(substitutions);
23
+ if (transformedSubstitution !== null) {
24
+ transformedSubstitutions.addSubstitution(transformedSubstitution, localContextA, localContextB);
26
25
  }
27
- var nodeA = statementNodeA, nodeB = statementNodeB, unified = _metaLevel.default.unify(nodeA, nodeB, substitutionsA, localContextA, localContextB);
26
+ var nodeA = statementNodeA, nodeB = statementNodeB, unified = _metaLevel.default.unify(nodeA, nodeB, transformedSubstitutions, localContextA, localContextB);
28
27
  if (unified) {
29
- if (!transformed) {
28
+ if (transformedSubstitution === null) {
29
+ debugger;
30
30
  var substitutionB = termForVariableSubstitution, substitutionsB = [
31
31
  substitutionB
32
32
  ];
33
33
  substitutionsA = transformSubstitutions(substitutionsA, substitutionsB);
34
34
  (0, _array.push)(substitutions, substitutionsA);
35
35
  }
36
- statementUnifiedWithtatement = true;
36
+ statementUnifiedWithStatement = true;
37
37
  }
38
- return statementUnifiedWithtatement;
38
+ return statementUnifiedWithStatement;
39
39
  }
40
- function transformSubstitutions(substitutionsA, substitutionsB) {
41
- substitutionsA = substitutionsA.map(function(substitutionA) {
42
- var substitution = substitutionA, substitutions = substitutionsB, termForVariableSubstitution = _termForVariable.default.fromSubstitutionAndSubstitutions(substitution, substitutions);
43
- substitutionA = termForVariableSubstitution; ///
40
+ function transformSubstitutions(substitutionsA1, substitutionsB) {
41
+ substitutionsA1 = substitutionsA1.map(function(substitutionA) {
42
+ var substitution = substitutionA, substitutions = substitutionsB, termForVariableSubstitution1 = _termForVariable.default.fromSubstitutionAndSubstitutions(substitution, substitutions);
43
+ substitutionA = termForVariableSubstitution1; ///
44
44
  return substitutionA;
45
45
  });
46
- return substitutionsA;
46
+ return substitutionsA1;
47
47
  }
48
48
 
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmeS9zdGF0ZW1lbnRBdGFpbnN0U3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgbWV0YUxldmVsVW5pZmllciBmcm9tIFwiLi4vdW5pZmllci9tZXRhTGV2ZWxcIjtcbmltcG9ydCBUZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24gZnJvbSBcIi4uL3N1YnN0aXR1dGlvbi90ZXJtRm9yVmFyaWFibGVcIjtcblxuaW1wb3J0IHsgcHVzaCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoU3RhdGVtZW50KHN0YXRlbWVudE5vZGVBLCBzdGF0ZW1lbnROb2RlQiwgc3Vic3RpdHV0aW9uLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gIGxldCBzdGF0ZW1lbnRVbmlmaWVkV2l0aHRhdGVtZW50ID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uID0gVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uLmZyb21TdWJzdGl0dXRpb25BbmRTdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbiwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgIHRyYW5zZm9ybWVkID0gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uLmlzVHJhbnNmb3JtZWQoc3Vic3RpdHV0aW9uKTtcblxuICBsZXQgc3Vic3RpdHV0aW9uc0EgPSBbXTsgLy8vXG5cbiAgaWYgKHRyYW5zZm9ybWVkKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uQSA9IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgc3Vic3RpdHV0aW9uc0EucHVzaChzdWJzdGl0dXRpb25BKTtcbiAgfVxuXG4gIGNvbnN0IG5vZGVBID0gc3RhdGVtZW50Tm9kZUEsICAvLy9cbiAgICAgICAgbm9kZUIgPSBzdGF0ZW1lbnROb2RlQiwgIC8vL1xuICAgICAgICB1bmlmaWVkID0gbWV0YUxldmVsVW5pZmllci51bmlmeShub2RlQSwgbm9kZUIsIHN1YnN0aXR1dGlvbnNBLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICBpZiAodW5pZmllZCkge1xuICAgIGlmICghdHJhbnNmb3JtZWQpIHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkIgPSB0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24sICAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbnNCID0gW1xuICAgICAgICAgICAgICBzdWJzdGl0dXRpb25CXG4gICAgICAgICAgICBdO1xuXG4gICAgICBzdWJzdGl0dXRpb25zQSA9IHRyYW5zZm9ybVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9uc0EsIHN1YnN0aXR1dGlvbnNCKTtcblxuICAgICAgcHVzaChzdWJzdGl0dXRpb25zLCBzdWJzdGl0dXRpb25zQSk7XG4gICAgfVxuXG4gICAgc3RhdGVtZW50VW5pZmllZFdpdGh0YXRlbWVudCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllZFdpdGh0YXRlbWVudDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zQSwgc3Vic3RpdHV0aW9uc0IpIHtcbiAgc3Vic3RpdHV0aW9uc0EgPSBzdWJzdGl0dXRpb25zQS5tYXAoKHN1YnN0aXR1dGlvbkEpID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25BLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNCLFxuICAgICAgICAgIHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiA9IFRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbi5mcm9tU3Vic3RpdHV0aW9uQW5kU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgc3Vic3RpdHV0aW9uQSA9IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uQTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNBO1xufVxuIl0sIm5hbWVzIjpbInVuaWZ5U3RhdGVtZW50V2l0aFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVBIiwic3RhdGVtZW50Tm9kZUIiLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25zIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJzdGF0ZW1lbnRVbmlmaWVkV2l0aHRhdGVtZW50IiwidGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVN1YnN0aXR1dGlvbkFuZFN1YnN0aXR1dGlvbnMiLCJ0cmFuc2Zvcm1lZCIsImlzVHJhbnNmb3JtZWQiLCJzdWJzdGl0dXRpb25zQSIsInN1YnN0aXR1dGlvbkEiLCJwdXNoIiwibm9kZUEiLCJub2RlQiIsInVuaWZpZWQiLCJtZXRhTGV2ZWxVbmlmaWVyIiwidW5pZnkiLCJzdWJzdGl0dXRpb25CIiwic3Vic3RpdHV0aW9uc0IiLCJ0cmFuc2Zvcm1TdWJzdGl0dXRpb25zIiwibWFwIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFPQTs7O2VBQXdCQTs7O2dFQUxLO3NFQUNXO3FCQUVuQjs7Ozs7O0FBRU4sU0FBU0EsNEJBQTRCQyxjQUFjLEVBQUVDLGNBQWMsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLGFBQWEsRUFBRUMsYUFBYTtJQUMzSSxJQUFJQywrQkFBK0I7SUFFbkMsSUFBTUMsOEJBQThCQyx3QkFBMkIsQ0FBQ0MsZ0NBQWdDLENBQUNQLGNBQWNDLGdCQUN6R08sY0FBY0gsNEJBQTRCSSxhQUFhLENBQUNUO0lBRTlELElBQUlVLGlCQUFpQixFQUFFLEVBQUUsR0FBRztJQUU1QixJQUFJRixhQUFhO1FBQ2YsSUFBTUcsZ0JBQWdCTiw2QkFBOEIsR0FBRztRQUV2REssZUFBZUUsSUFBSSxDQUFDRDtJQUN0QjtJQUVBLElBQU1FLFFBQVFmLGdCQUNSZ0IsUUFBUWYsZ0JBQ1JnQixVQUFVQyxrQkFBZ0IsQ0FBQ0MsS0FBSyxDQUFDSixPQUFPQyxPQUFPSixnQkFBZ0JSLGVBQWVDO0lBRXBGLElBQUlZLFNBQVM7UUFDWCxJQUFJLENBQUNQLGFBQWE7WUFDaEIsSUFBTVUsZ0JBQWdCYiw2QkFDaEJjLGlCQUFpQjtnQkFDZkQ7YUFDRDtZQUVQUixpQkFBaUJVLHVCQUF1QlYsZ0JBQWdCUztZQUV4RFAsSUFBQUEsV0FBSSxFQUFDWCxlQUFlUztRQUN0QjtRQUVBTiwrQkFBK0I7SUFDakM7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU2dCLHVCQUF1QlYsY0FBYyxFQUFFUyxjQUFjO0lBQzVEVCxpQkFBaUJBLGVBQWVXLEdBQUcsQ0FBQyxTQUFDVjtRQUNuQyxJQUFNWCxlQUFlVyxlQUNmVixnQkFBZ0JrQixnQkFDaEJkLDhCQUE4QkMsd0JBQTJCLENBQUNDLGdDQUFnQyxDQUFDUCxjQUFjQztRQUUvR1UsZ0JBQWdCTiw2QkFBNkIsR0FBRztRQUVoRCxPQUFPTTtJQUNUO0lBRUEsT0FBT0Q7QUFDVCJ9
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmeS9zdGF0ZW1lbnRBdGFpbnN0U3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgU3Vic3RpdHV0aW9ucyBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uc1wiO1xuaW1wb3J0IG1ldGFMZXZlbFVuaWZpZXIgZnJvbSBcIi4uL3VuaWZpZXIvbWV0YUxldmVsXCI7XG5pbXBvcnQgVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb24vdGVybUZvclZhcmlhYmxlXCI7XG5cbmltcG9ydCB7IHB1c2ggfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aFN0YXRlbWVudChzdGF0ZW1lbnROb2RlQSwgc3RhdGVtZW50Tm9kZUIsIHN1YnN0aXR1dGlvbiwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICBsZXQgc3RhdGVtZW50VW5pZmllZFdpdGhTdGF0ZW1lbnQgPSBmYWxzZTtcblxuICBjb25zdCB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbnMgPSBTdWJzdGl0dXRpb25zLmZyb21Ob3RoaW5nKCksXG4gICAgICAgIHRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9uLnRyYW5zZm9ybWVkKHN1YnN0aXR1dGlvbnMpO1xuXG4gIGlmICh0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIHRyYW5zZm9ybWVkU3Vic3RpdHV0aW9ucy5hZGRTdWJzdGl0dXRpb24odHJhbnNmb3JtZWRTdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuICB9XG5cbiAgY29uc3Qgbm9kZUEgPSBzdGF0ZW1lbnROb2RlQSwgIC8vL1xuICAgICAgICBub2RlQiA9IHN0YXRlbWVudE5vZGVCLCAgLy8vXG4gICAgICAgIHVuaWZpZWQgPSBtZXRhTGV2ZWxVbmlmaWVyLnVuaWZ5KG5vZGVBLCBub2RlQiwgdHJhbnNmb3JtZWRTdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICBpZiAodW5pZmllZCkge1xuICAgIGlmICh0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiA9PT0gbnVsbCkge1xuXG4gICAgICBkZWJ1Z2dlclxuXG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25CID0gdGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uLCAgLy8vXG4gICAgICAgICAgICBzdWJzdGl0dXRpb25zQiA9IFtcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uQlxuICAgICAgICAgICAgXTtcblxuICAgICAgc3Vic3RpdHV0aW9uc0EgPSB0cmFuc2Zvcm1TdWJzdGl0dXRpb25zKHN1YnN0aXR1dGlvbnNBLCBzdWJzdGl0dXRpb25zQik7XG5cbiAgICAgIHB1c2goc3Vic3RpdHV0aW9ucywgc3Vic3RpdHV0aW9uc0EpO1xuICAgIH1cblxuICAgIHN0YXRlbWVudFVuaWZpZWRXaXRoU3RhdGVtZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudDtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zQSwgc3Vic3RpdHV0aW9uc0IpIHtcbiAgc3Vic3RpdHV0aW9uc0EgPSBzdWJzdGl0dXRpb25zQS5tYXAoKHN1YnN0aXR1dGlvbkEpID0+IHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25BLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNCLFxuICAgICAgICAgIHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbiA9IFRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbi5mcm9tU3Vic3RpdHV0aW9uQW5kU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb24sIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgc3Vic3RpdHV0aW9uQSA9IHRlcm1Gb3JWYXJpYWJsZVN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uQTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNBO1xufVxuIl0sIm5hbWVzIjpbInVuaWZ5U3RhdGVtZW50V2l0aFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVBIiwic3RhdGVtZW50Tm9kZUIiLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25zIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJzdGF0ZW1lbnRVbmlmaWVkV2l0aFN0YXRlbWVudCIsInRyYW5zZm9ybWVkU3Vic3RpdHV0aW9ucyIsIlN1YnN0aXR1dGlvbnMiLCJmcm9tTm90aGluZyIsInRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uIiwidHJhbnNmb3JtZWQiLCJhZGRTdWJzdGl0dXRpb24iLCJub2RlQSIsIm5vZGVCIiwidW5pZmllZCIsIm1ldGFMZXZlbFVuaWZpZXIiLCJ1bmlmeSIsInN1YnN0aXR1dGlvbkIiLCJ0ZXJtRm9yVmFyaWFibGVTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25zQiIsInN1YnN0aXR1dGlvbnNBIiwidHJhbnNmb3JtU3Vic3RpdHV0aW9ucyIsInB1c2giLCJtYXAiLCJzdWJzdGl0dXRpb25BIiwiVGVybUZvclZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVN1YnN0aXR1dGlvbkFuZFN1YnN0aXR1dGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBd0JBOzs7b0VBTkU7Z0VBQ0c7c0VBQ1c7cUJBRW5COzs7Ozs7QUFFTixTQUFTQSw0QkFBNEJDLGNBQWMsRUFBRUMsY0FBYyxFQUFFQyxZQUFZLEVBQUVDLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxhQUFhO0lBQzNJLElBQUlDLGdDQUFnQztJQUVwQyxJQUFNQywyQkFBMkJDLHNCQUFhLENBQUNDLFdBQVcsSUFDcERDLDBCQUEwQlIsYUFBYVMsV0FBVyxDQUFDUjtJQUV6RCxJQUFJTyw0QkFBNEIsTUFBTTtRQUNwQ0gseUJBQXlCSyxlQUFlLENBQUNGLHlCQUF5Qk4sZUFBZUM7SUFDbkY7SUFFQSxJQUFNUSxRQUFRYixnQkFDUmMsUUFBUWIsZ0JBQ1JjLFVBQVVDLGtCQUFnQixDQUFDQyxLQUFLLENBQUNKLE9BQU9DLE9BQU9QLDBCQUEwQkgsZUFBZUM7SUFFOUYsSUFBSVUsU0FBUztRQUNYLElBQUlMLDRCQUE0QixNQUFNO1lBRXBDLFFBQVE7WUFFUixJQUFNUSxnQkFBZ0JDLDZCQUNoQkMsaUJBQWlCO2dCQUNmRjthQUNEO1lBRVBHLGlCQUFpQkMsdUJBQXVCRCxnQkFBZ0JEO1lBRXhERyxJQUFBQSxXQUFJLEVBQUNwQixlQUFla0I7UUFDdEI7UUFFQWYsZ0NBQWdDO0lBQ2xDO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNnQix1QkFBdUJELGVBQWMsRUFBRUQsY0FBYztJQUM1REMsa0JBQWlCQSxnQkFBZUcsR0FBRyxDQUFDLFNBQUNDO1FBQ25DLElBQU12QixlQUFldUIsZUFDZnRCLGdCQUFnQmlCLGdCQUNoQkQsK0JBQThCTyx3QkFBMkIsQ0FBQ0MsZ0NBQWdDLENBQUN6QixjQUFjQztRQUUvR3NCLGdCQUFnQk4sOEJBQTZCLEdBQUc7UUFFaEQsT0FBT007SUFDVDtJQUVBLE9BQU9KO0FBQ1QifQ==
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return unifyStatementWithBracketedCombinator;
9
+ }
10
+ });
11
+ var _bracketed = /*#__PURE__*/ _interop_require_default(require("../ocmbinator/bracketed"));
12
+ var _statementWithCombinator = /*#__PURE__*/ _interop_require_default(require("../unifier/statementWithCombinator"));
13
+ function _interop_require_default(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ function unifyStatementWithBracketedCombinator(statementNode, assignments, derived, localContext) {
19
+ var statementUnifiedWithBracketedCombinator;
20
+ var statementString = localContext.nodeAsString(statementNode);
21
+ localContext.trace("Unifying the '".concat(statementString, "' statement with the bracketed combinator..."), statementNode);
22
+ var bracketedCombinatorStatementNode = _bracketed.default.getStatementNode();
23
+ statementUnifiedWithBracketedCombinator = _statementWithCombinator.default.unify(statementNode, bracketedCombinatorStatementNode, assignments, derived, localContext);
24
+ if (statementUnifiedWithBracketedCombinator) {
25
+ localContext.debug("...unified the '".concat(statementString, "' statement with the bracketed combinator."), statementNode);
26
+ }
27
+ return statementUnifiedWithBracketedCombinator;
28
+ }
29
+
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmeS9zdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGJyYWNrZXRlZENvbWJpbmF0b3IgZnJvbSBcIi4uL29jbWJpbmF0b3IvYnJhY2tldGVkXCI7XG5pbXBvcnQgc3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyIGZyb20gXCIuLi91bmlmaWVyL3N0YXRlbWVudFdpdGhDb21iaW5hdG9yXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aEJyYWNrZXRlZENvbWJpbmF0b3Ioc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VW5pZmllZFdpdGhCcmFja2V0ZWRDb21iaW5hdG9yO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlIGJyYWNrZXRlZCBjb21iaW5hdG9yLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3QgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRDb21iaW5hdG9yLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICBzdGF0ZW1lbnRVbmlmaWVkV2l0aEJyYWNrZXRlZENvbWJpbmF0b3IgPSBzdGF0ZW1lbnRXaXRoQ29tYmluYXRvclVuaWZpZXIudW5pZnkoc3RhdGVtZW50Tm9kZSwgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gIGlmIChzdGF0ZW1lbnRVbmlmaWVkV2l0aEJyYWNrZXRlZENvbWJpbmF0b3IpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSBicmFja2V0ZWQgY29tYmluYXRvci5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkV2l0aEJyYWNrZXRlZENvbWJpbmF0b3I7XG59XG4iXSwibmFtZXMiOlsidW5pZnlTdGF0ZW1lbnRXaXRoQnJhY2tldGVkQ29tYmluYXRvciIsInN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbENvbnRleHQiLCJzdGF0ZW1lbnRVbmlmaWVkV2l0aEJyYWNrZXRlZENvbWJpbmF0b3IiLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsImJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwiYnJhY2tldGVkQ29tYmluYXRvciIsImdldFN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRXaXRoQ29tYmluYXRvclVuaWZpZXIiLCJ1bmlmeSIsImRlYnVnIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFLQTs7O2VBQXdCQTs7O2dFQUhROzhFQUNXOzs7Ozs7QUFFNUIsU0FBU0Esc0NBQXNDQyxhQUFhLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQzdHLElBQUlDO0lBRUosSUFBTUMsa0JBQWtCRixhQUFhRyxZQUFZLENBQUNOO0lBRWxERyxhQUFhSSxLQUFLLENBQUMsQUFBQyxpQkFBZ0MsT0FBaEJGLGlCQUFnQixpREFBK0NMO0lBRW5HLElBQU1RLG1DQUFtQ0Msa0JBQW1CLENBQUNDLGdCQUFnQjtJQUU3RU4sMENBQTBDTyxnQ0FBOEIsQ0FBQ0MsS0FBSyxDQUFDWixlQUFlUSxrQ0FBa0NQLGFBQWFDLFNBQVNDO0lBRXRKLElBQUlDLHlDQUF5QztRQUMzQ0QsYUFBYVUsS0FBSyxDQUFDLEFBQUMsbUJBQWtDLE9BQWhCUixpQkFBZ0IsK0NBQTZDTDtJQUNyRztJQUVBLE9BQU9JO0FBQ1QifQ==
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return unifyStatementWithCombinators;
9
+ }
10
+ });
11
+ var _statementWithCombinator = /*#__PURE__*/ _interop_require_default(require("../unifier/statementWithCombinator"));
12
+ function _interop_require_default(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
17
+ function unifyStatementWithCombinators(statementNode, assignments, derived, localContext) {
18
+ var statementUnifiedWithCombinators;
19
+ var combinators = localContext.getCombinators();
20
+ statementUnifiedWithCombinators = combinators.some(function(combinator) {
21
+ var statementUnifiedWithCombinator = unifyStatementWithCombinator(statementNode, combinator, assignments, derived, localContext);
22
+ if (statementUnifiedWithCombinator) {
23
+ return true;
24
+ }
25
+ });
26
+ return statementUnifiedWithCombinators;
27
+ }
28
+ function unifyStatementWithCombinator(statementNode, combinator, assignments, derived, localContext) {
29
+ var statementUnifiedWithCombinator;
30
+ var statementString = localContext.nodeAsString(statementNode), combinatorString = combinator.getString();
31
+ localContext.trace("Unifying the '".concat(statementString, "' statement with the '").concat(combinatorString, "' combinator..."), statementNode);
32
+ var combinatorStatementNode = combinator.getStatementNode();
33
+ statementUnifiedWithCombinator = _statementWithCombinator.default.unify(statementNode, combinatorStatementNode, assignments, derived, localContext);
34
+ if (statementUnifiedWithCombinator) {
35
+ localContext.debug("...unified the '".concat(statementString, "' statement with the '").concat(combinatorString, "' combinator."), statementNode);
36
+ }
37
+ return statementUnifiedWithCombinator;
38
+ }
39
+
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmeS9zdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzdGF0ZW1lbnRXaXRoQ29tYmluYXRvclVuaWZpZXIgZnJvbSBcIi4uL3VuaWZpZXIvc3RhdGVtZW50V2l0aENvbWJpbmF0b3JcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcnMoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9ycztcblxuICBjb25zdCBjb21iaW5hdG9ycyA9IGxvY2FsQ29udGV4dC5nZXRDb21iaW5hdG9ycygpO1xuXG4gIHN0YXRlbWVudFVuaWZpZWRXaXRoQ29tYmluYXRvcnMgPSBjb21iaW5hdG9ycy5zb21lKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yID0gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb21iaW5hdG9yLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVkV2l0aENvbWJpbmF0b3IpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWRXaXRoQ29tYmluYXRvcnM7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50Tm9kZSwgY29tYmluYXRvciwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSBjb21iaW5hdG9yLmdldFN0cmluZygpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gY29tYmluYXRvci5nZXRTdGF0ZW1lbnROb2RlKCk7XG5cbiAgc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yID0gc3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyLnVuaWZ5KHN0YXRlbWVudE5vZGUsIGNvbWJpbmF0b3JTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICBpZiAoc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCwgc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VW5pZmllZFdpdGhDb21iaW5hdG9yO1xufVxuIl0sIm5hbWVzIjpbInVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3JzIiwic3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInN0YXRlbWVudFVuaWZpZWRXaXRoQ29tYmluYXRvcnMiLCJjb21iaW5hdG9ycyIsImdldENvbWJpbmF0b3JzIiwic29tZSIsImNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRVbmlmaWVkV2l0aENvbWJpbmF0b3IiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIiwic3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiY29tYmluYXRvclN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiY29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50V2l0aENvbWJpbmF0b3JVbmlmaWVyIiwidW5pZnkiLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBSUE7OztlQUF3QkE7Ozs4RUFGbUI7Ozs7OztBQUU1QixTQUFTQSw4QkFBOEJDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDckcsSUFBSUM7SUFFSixJQUFNQyxjQUFjRixhQUFhRyxjQUFjO0lBRS9DRixrQ0FBa0NDLFlBQVlFLElBQUksQ0FBQyxTQUFDQztRQUNsRCxJQUFNQyxpQ0FBaUNDLDZCQUE2QlYsZUFBZVEsWUFBWVAsYUFBYUMsU0FBU0M7UUFFckgsSUFBSU0sZ0NBQWdDO1lBQ2xDLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT0w7QUFDVDtBQUVBLFNBQVNNLDZCQUE2QlYsYUFBYSxFQUFFUSxVQUFVLEVBQUVQLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQ2pHLElBQUlNO0lBRUosSUFBTUUsa0JBQWtCUixhQUFhUyxZQUFZLENBQUNaLGdCQUM1Q2EsbUJBQW1CTCxXQUFXTSxTQUFTO0lBRTdDWCxhQUFhWSxLQUFLLENBQUMsQUFBQyxpQkFBd0RGLE9BQXhDRixpQkFBZ0IsMEJBQXlDLE9BQWpCRSxrQkFBaUIsb0JBQWtCYjtJQUUvRyxJQUFNZ0IsMEJBQTBCUixXQUFXUyxnQkFBZ0I7SUFFM0RSLGlDQUFpQ1MsZ0NBQThCLENBQUNDLEtBQUssQ0FBQ25CLGVBQWVnQix5QkFBeUJmLGFBQWFDLFNBQVNDO0lBRXBJLElBQUlNLGdDQUFnQztRQUNsQ04sYUFBYWlCLEtBQUssQ0FBQyxBQUFDLG1CQUEwRFAsT0FBeENGLGlCQUFnQiwwQkFBeUMsT0FBakJFLGtCQUFpQixrQkFBZ0JiO0lBQ2pIO0lBRUEsT0FBT1M7QUFDVCJ9