occam-nominal 1.0.581 → 1.0.583

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 (59) hide show
  1. package/lib/element/assertion/type.js +2 -2
  2. package/lib/element/assumption/implicit.js +3 -14
  3. package/lib/element/claim.js +2 -2
  4. package/lib/element/combinator.js +3 -3
  5. package/lib/element/constraint.js +3 -3
  6. package/lib/element/constructor.js +3 -3
  7. package/lib/element/derivation.js +5 -4
  8. package/lib/element/error.js +4 -3
  9. package/lib/element/fact/premise.js +23 -22
  10. package/lib/element/fact/step.js +14 -14
  11. package/lib/element/fact/supposition.js +22 -22
  12. package/lib/element/generator.js +3 -3
  13. package/lib/element/hypothesis.js +5 -4
  14. package/lib/element/label.js +3 -3
  15. package/lib/element/metaType.js +2 -8
  16. package/lib/element/metavariable.js +27 -27
  17. package/lib/element/property.js +3 -3
  18. package/lib/element/reference.js +3 -3
  19. package/lib/element/resolution/conclusion.js +5 -17
  20. package/lib/element/resolution/deduction.js +5 -17
  21. package/lib/element/resolution.js +17 -2
  22. package/lib/element/signature.js +3 -3
  23. package/lib/element/subDerivation.js +4 -4
  24. package/lib/element/substitution/statement.js +3 -3
  25. package/lib/element/substitution/term.js +3 -3
  26. package/lib/element/substitution.js +2 -3
  27. package/lib/element/type.js +5 -10
  28. package/lib/element/typePrefix.js +6 -11
  29. package/lib/element/variable.js +2 -8
  30. package/package.json +3 -3
  31. package/src/element/assertion/type.js +2 -2
  32. package/src/element/assumption/implicit.js +2 -22
  33. package/src/element/claim.js +3 -3
  34. package/src/element/combinator.js +2 -2
  35. package/src/element/constraint.js +2 -2
  36. package/src/element/constructor.js +2 -2
  37. package/src/element/derivation.js +6 -4
  38. package/src/element/error.js +5 -3
  39. package/src/element/fact/premise.js +30 -29
  40. package/src/element/fact/step.js +20 -20
  41. package/src/element/fact/supposition.js +29 -29
  42. package/src/element/generator.js +2 -2
  43. package/src/element/hypothesis.js +4 -3
  44. package/src/element/label.js +2 -2
  45. package/src/element/metaType.js +2 -13
  46. package/src/element/metavariable.js +41 -41
  47. package/src/element/property.js +2 -2
  48. package/src/element/reference.js +2 -2
  49. package/src/element/resolution/conclusion.js +5 -29
  50. package/src/element/resolution/deduction.js +5 -29
  51. package/src/element/resolution.js +28 -2
  52. package/src/element/signature.js +2 -2
  53. package/src/element/subDerivation.js +5 -4
  54. package/src/element/substitution/statement.js +2 -2
  55. package/src/element/substitution/term.js +2 -2
  56. package/src/element/substitution.js +1 -3
  57. package/src/element/type.js +4 -14
  58. package/src/element/typePrefix.js +5 -14
  59. package/src/element/variable.js +2 -13
@@ -158,7 +158,7 @@ const _default = (0, _elements.define)(class TypeAssertion extends _assertion.de
158
158
  }
159
159
  toJSON() {
160
160
  let json;
161
- const typeJSON = (0, _json.typeToTypeJSON)(this.type), name = this.getName(), string = this.getString(), type = typeJSON; ///
161
+ const name = this.getName(), string = this.getString(), typeJSON = (0, _json.typeToTypeJSON)(this.type), type = typeJSON; ///
162
162
  json = {
163
163
  name,
164
164
  string,
@@ -206,4 +206,4 @@ function typeFromTypeAssertionNode(typeAssertionNode, context) {
206
206
  return type;
207
207
  }
208
208
 
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRUeXBlQXNzZXJ0aW9uTkJvZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBkaXNjaGFyZ2UoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVR5cGUgPSB0aGlzLnZhbGlkYXRlVHlwZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVR5cGVcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVHlwZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spXG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUbyh0aGlzLnR5cGUpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzU3VwZXJUeXBlT2YodGhpcy50eXBlKTtcblxuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAvLy9cbiAgICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZUVxdWFsVG9UeXBlKSB7XG4gICAgICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgICAgICAgaWYgKHRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpLFxuICAgICAgICAgIHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZyxcbiAgICAgIHR5cGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgaWYgKCF0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICBpZiAoIXRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5mdW5jdGlvbiB0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gdHlwZUFzc2VydGlvbk5vZGUuZ2V0VHlwZU5hbWUoKSxcbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICByZXR1cm4gdHlwZTtcbn0iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRUeXBlQXNzZXJ0aW9uTkJvZGUiLCJnZXROb2RlIiwidHlwZUFzc2VydGlvbk5vZGUiLCJkaXNjaGFyZ2UiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwidHlwZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsImRlcml2ZSIsInN0YXRlIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImRlYnVnIiwidmFsaWRhdGUiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInZhbGlkYXRlVHlwZSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsImFzc2lnbiIsImFkZEFzc2VydGlvbiIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9UeXBlIiwiaXNFcXVhbFRvIiwidGVybVR5cGVTdXBlclR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwidGVybUVzdGFibGlzaGVkIiwiaXNFc3RhYmxpc2hlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJhcHBseUluZGVwZW5kZW50bHkiLCJ0cmFuc2llbnQiLCJpc1RyYW5zaWVudCIsInZhcmlhYmxlQXNzaWdtZW50IiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24iLCJhZGRBc3NpZ25tZW50IiwidG9KU09OIiwianNvbiIsInR5cGVKU09OIiwidHlwZVRvVHlwZUpTT04iLCJuYW1lIiwiZ2V0TmFtZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24iLCJ0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJ0ZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidHlwZU5hbWUiLCJnZXRUeXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBQTs7O2dDQWhCMkQ7a0VBRXJDOzBCQUVDO3lCQUNLO3NCQUNHOzZCQUNVOytCQUNJO3lCQUNFO3dCQUNLO3VCQUNNOzs7Ozs7QUFFMUQsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUU3QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHNCQUFzQkMsa0JBQVM7SUFDekQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN6RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENB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
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc2VydGlvbi90eXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5pbXBvcnQgeyB0eXBlVG9UeXBlSlNPTiB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvanNvblwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybUFuZFN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N1YnN0aXR1dGlvbnNcIjtcbmltcG9ydCB7IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgdmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9hc3NpZ25cIjtcbmltcG9ydCB7IGRlcml2ZSwgaXNEZXJpdmVkLCBpc0RlY2xhcmVkLCBpc1RyYW5zaWVudH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBhbGwsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVHlwZUFzc2VydGlvbiBleHRlbmRzIEFzc2VydGlvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgdGVybSwgdHlwZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnRlcm0gPSB0ZXJtO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuICBnZXRUZXJtKCkge1xuICAgIHJldHVybiB0aGlzLnRlcm07XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRUeXBlQXNzZXJ0aW9uTkJvZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gdHlwZUFzc2VydGlvbk5vZGU7XG4gIH1cblxuICBkaXNjaGFyZ2UoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsIC8vL1xuICAgICAgICAgIHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmRpc2NoYXJnZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICAgIH0sIGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBsZXQgYXNzZXJ0aW9uO1xuXG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgYXNzZXJ0aW9uID0gdGhpcy5maW5kQXNzZXJ0aW9uKGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZUFzc2VydGlvbiA9IGFzc2VydGlvbjsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24gaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZCh0eXBlQXNzZXJ0aW9uLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVR5cGUgPSB0aGlzLnZhbGlkYXRlVHlwZS5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGFsbChbXG4gICAgICB2YWxpZGF0ZVR5cGVcbiAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVdoZW5EZWNsYXJlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVjbGFyZWQuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZhbGlkYXRlV2hlbkRlcml2ZWQgPSB0aGlzLnZhbGlkYXRlV2hlbkRlcml2ZWQuYmluZCh0aGlzKTtcblxuICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgIHZhbGlkYXRlV2hlbkRlY2xhcmVkLFxuICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICBdLCBzdGF0ZSwgY29udGV4dCwgKHN0YXRlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgIGFzc2VydGlvbiA9IHRoaXM7IC8vL1xuXG4gICAgICAgIHRoaXMuYXNzaWduKHN0YXRlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0LmFkZEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIGNvbnN0IHR5cGVBc3NlcnRpb24gPSBhc3NlcnRpb247IC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKHR5cGVBc3NlcnRpb24sIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlVHlwZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLi4uYCk7XG5cbiAgICBjb25zdCBub21pbmFsVHlwZU5hbWUgPSB0aGlzLnR5cGUuZ2V0Tm9taW5hbFR5cGVOYW1lKCksXG4gICAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpO1xuXG4gICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0aGlzLnR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuXG4gICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24ncyB0eXBlLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spXG4gIH1cblxuICB2YWxpZGF0ZVdoZW5EZWNsYXJlZChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGRlY2xhcmVkID0gaXNEZWNsYXJlZChzdGF0ZSk7XG5cbiAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZWNsYXJlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVjbGFyZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUbyh0aGlzLnR5cGUpLFxuICAgICAgICAgICAgICB0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzU3VwZXJUeXBlT2YodGhpcy50eXBlKTtcblxuICAgICAgICBpZiAoZmFsc2UpIHtcbiAgICAgICAgICAvLy9cbiAgICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZUVxdWFsVG9UeXBlKSB7XG4gICAgICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXJtVHlwZVN1cGVyVHlwZU9mVHlwZSkge1xuICAgICAgICAgIGNvbnN0IHRlcm1Fc3RhYmxpc2hlZCA9IHRlcm0uaXNFc3RhYmxpc2hlZCgpO1xuXG4gICAgICAgICAgaWYgKHRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgICAgICAgdmFsaWRhdGVzV2hlbkRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF2YWxpZGF0ZXNXaGVuRGVjbGFyZWQpIHtcbiAgICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVjbGFyZWQgdHlwZSBhc3NlcnRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGhpcy50ZXJtLCB0aGlzLnR5cGUsIHN0YXRlLCBjb250ZXh0LCAodGVybSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy50ZXJtID0gdGVybTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZGVyaXZlZCB0eXBlIGFzc2VydGlvbi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlJbmRlcGVuZGVudGx5KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAvLy9cbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBBcHBseWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uIGluZGVwZW5kZW50bHkuLi5gKTtcblxuICAgIGNvbnN0IHRlcm0gPSB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRoaXMudGVybSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZGVyaXZlKChzdGF0ZSkgPT4ge1xuICAgICAgcmV0dXJuIHZhbGlkYXRlV2hlbkRlcml2ZWQodGVybSwgdGhpcy50eXBlLCBzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbiBpbmRlcGVuZGVudGx5LmApO1xuXG4gICAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBhc3NpZ24oc3RhdGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gaXNEZXJpdmVkKHN0YXRlKSxcbiAgICAgICAgICB0cmFuc2llbnQgPSBpc1RyYW5zaWVudChzdGF0ZSk7XG5cbiAgICBpZiAoZGVyaXZlZCB8fCB0cmFuc2llbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uID0gdGhpcywgLy8vXG4gICAgICAgICAgdmFyaWFibGVBc3NpZ21lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uLCBjb250ZXh0KTtcblxuICAgIGNvbnRleHQuYWRkQXNzaWdubWVudCh2YXJpYWJsZUFzc2lnbWVudCk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgbGV0IGpzb247XG5cbiAgICBjb25zdCBuYW1lID0gdGhpcy5nZXROYW1lKCksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0eXBlSlNPTiA9IHR5cGVUb1R5cGVKU09OKHRoaXMudHlwZSksXG4gICAgICAgICAgdHlwZSA9IHR5cGVKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgbmFtZSxcbiAgICAgIHN0cmluZyxcbiAgICAgIHR5cGVcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiVHlwZUFzc2VydGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IHR5cGVBc3NlcnRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uO1xuXG4gICAgaWYgKHRoaXMubmFtZSA9PT0gbmFtZSkge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIHR5cGVBc3NlcnRpb25Ob2RlID0gaW5zdGFudGlhdGVUeXBlQXNzZXJ0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICB0ZXJtID0gdGVybUZyb21UeXBlQXNzZXJ0aW9uTm9kZSh0eXBlQXNzZXJ0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHR5cGUgPSB0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb250ZXh0ID0gbnVsbDtcblxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gbmV3IFR5cGVBc3NlcnRpb24oY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCB0ZXJtLCB0eXBlKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgdHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xuICB9XG59KTtcblxuZnVuY3Rpb24gdmFsaWRhdGVXaGVuRGVyaXZlZCh0ZXJtLCB0eXBlLCBzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICByZXR1cm4gdGVybS52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHRlcm0sIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgaWYgKCF0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgIHJldHVybiBiYWNrKCk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVybUVzdGFibGlzaGVkID0gdGVybS5pc0VzdGFibGlzaGVkKCk7XG5cbiAgICBpZiAoIXRlcm1Fc3RhYmxpc2hlZCkge1xuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9yd2FyZCh0ZXJtLCBjb250ZXh0LCBiYWNrKTtcbiAgfSwgYmFjayk7XG59XG5cbmZ1bmN0aW9uIHRlcm1Gcm9tVHlwZUFzc2VydGlvbk5vZGUodHlwZUFzc2VydGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGVybU5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZS5nZXRUZXJtTm9kZSgpLFxuICAgICAgICB0ZXJtID0gY29udGV4dC5maW5kVGVybUJ5VGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5mdW5jdGlvbiB0eXBlRnJvbVR5cGVBc3NlcnRpb25Ob2RlKHR5cGVBc3NlcnRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gdHlwZUFzc2VydGlvbk5vZGUuZ2V0VHlwZU5hbWUoKSxcbiAgICAgICAgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICByZXR1cm4gdHlwZTtcbn0iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiYWxsIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiVHlwZUFzc2VydGlvbiIsIkFzc2VydGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInRlcm0iLCJ0eXBlIiwiZ2V0VGVybSIsImdldFR5cGUiLCJnZXRUeXBlQXNzZXJ0aW9uTkJvZGUiLCJnZXROb2RlIiwidHlwZUFzc2VydGlvbk5vZGUiLCJkaXNjaGFyZ2UiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImZvcndhcmQiLCJiYWNrIiwidHlwZUFzc2VydGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyIsImRlcml2ZSIsInN0YXRlIiwidmFsaWRhdGVXaGVuRGVyaXZlZCIsImRlYnVnIiwidmFsaWRhdGUiLCJhc3NlcnRpb24iLCJmaW5kQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInZhbGlkYXRlVHlwZSIsImJpbmQiLCJ2YWxpZGF0ZVdoZW5EZWNsYXJlZCIsImFzc2lnbiIsImFkZEFzc2VydGlvbiIsIm5vbWluYWxUeXBlTmFtZSIsImdldE5vbWluYWxUeXBlTmFtZSIsImZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwiZGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwidmFsaWRhdGVzV2hlbkRlY2xhcmVkIiwidGVybVR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9UeXBlIiwiaXNFcXVhbFRvIiwidGVybVR5cGVTdXBlclR5cGVPZlR5cGUiLCJpc1N1cGVyVHlwZU9mIiwidGVybUVzdGFibGlzaGVkIiwiaXNFc3RhYmxpc2hlZCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJhcHBseUluZGVwZW5kZW50bHkiLCJ0cmFuc2llbnQiLCJpc1RyYW5zaWVudCIsInZhcmlhYmxlQXNzaWdtZW50IiwidmFyaWFibGVBc3NpZ25tZW50RnJvbVR5cGVBc3NlcnRpb24iLCJhZGRBc3NpZ25tZW50IiwidG9KU09OIiwianNvbiIsIm5hbWUiLCJnZXROYW1lIiwidHlwZUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZVR5cGVBc3NlcnRpb24iLCJ0ZXJtRnJvbVR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUZyb21UeXBlQXNzZXJ0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlIiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJ0ZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwiZmluZFRlcm1CeVRlcm1Ob2RlIiwidHlwZU5hbWUiLCJnZXRUeXBlTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBQTs7O2dDQWhCMkQ7a0VBRXJDOzBCQUVDO3lCQUNLO3NCQUNHOzZCQUNVOytCQUNJO3lCQUNFO3dCQUNLO3VCQUNNOzs7Ozs7QUFFMUQsTUFBTSxFQUFFQSxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CLEVBQ3JDLEVBQUVDLEdBQUcsRUFBRUMsTUFBTSxFQUFFLEdBQUdDLHFDQUFxQjtNQUU3QyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLHNCQUFzQkMsa0JBQVM7SUFDekQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxJQUFJLEVBQUVDLElBQUksQ0FBRTtRQUN6RCxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtRQUNaLElBQUksQ0FBQ0MsSUFBSSxHQUFHQTtJQUNkO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0YsSUFBSTtJQUNsQjtJQUVBRyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENB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
@@ -50,7 +50,7 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
50
50
  }, back);
51
51
  });
52
52
  });
53
- validate(state, context, forward, back) {
53
+ validate = unbreakable(function(state, context, forward, back) {
54
54
  const implicitAssumptionString = this.getString(); ///
55
55
  context.trace(`Validating the '${implicitAssumptionString}' implicit assumption...`);
56
56
  return (0, _context.isolate)((state, context, forward, back)=>{
@@ -69,7 +69,7 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
69
69
  context.debug(`...validated the '${implicitAssumptionString}' implicit assumption.`);
70
70
  return forward(implicitAssumption, context, back);
71
71
  }, back);
72
- }
72
+ });
73
73
  validateStatement(state, context, forward, back) {
74
74
  const implicitAssumptionString = this.getString(); ///
75
75
  context.trace(`Validating the '${implicitAssumptionString}' implicit assumption's statement...`);
@@ -79,17 +79,6 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
79
79
  return forward(state, context, back);
80
80
  }, back);
81
81
  }
82
- unifyStatement(statement, generalContext, specificContext) {
83
- debugger;
84
- let statementUnifies;
85
- const context = specificContext, statementString = statement.getString(), proofAssertionString = this.getString(); ///
86
- context.trace(`Unifying the '${statementString}' statement with the '${proofAssertionString}' implicitAssumption's statement...`);
87
- statementUnifies = this.statement.unifyStatement(statement, generalContext, specificContext);
88
- if (statementUnifies) {
89
- context.debug(`...unified the '${statementString}' statement with the '${proofAssertionString}' implicitAssumption's statement.`);
90
- }
91
- return statementUnifies;
92
- }
93
82
  static name = "ImplicitAssumption";
94
83
  static fromStatement(statement, context) {
95
84
  let implicitAssumption;
@@ -103,4 +92,4 @@ const _default = (0, _elements.define)(class ImplicitAssumption extends _occamla
103
92
  }
104
93
  });
105
94
 
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYWJsYXRlLCBpc29sYXRlLCBhdHRlbXB0LCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wbGljaXRBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0VxdWFsVG8oaW1wbGljaXRBc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgZGVidWdnZXJcblxuICAgIGxldCBzdGF0ZW1lbnRVbmlmaWVzO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIHByb29mQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtwcm9vZkFzc2VydGlvblN0cmluZ30nIGltcGxpY2l0QXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgc3RhdGVtZW50VW5pZmllcyA9IHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke3Byb29mQXNzZXJ0aW9uU3RyaW5nfScgaW1wbGljaXRBc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkltcGxpY2l0QXNzdW1wdGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICAgIGxldCBpbXBsaWNpdEFzc3VtcHRpb247XG5cbiAgICBhYmxhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbihzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbiA9IGltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJjdXQiLCJhbGwiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJJbXBsaWNpdEFzc3VtcHRpb24iLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZ2V0SW1wbGljaXRBc3N1bXB0aW9uTm9kZSIsImdldE5vZGUiLCJpbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImlzRXF1YWxUbyIsImltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbk5vZGVNYXRjaGVzIiwibWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZXF1YWxUbyIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwiZGVidWciLCJpc29sYXRlIiwiZ2V0Q29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsImJpbmQiLCJjb21taXQiLCJ1bmlmeVN0YXRlbWVudCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0Iiwic3RhdGVtZW50VW5pZmllcyIsInN0YXRlbWVudFN0cmluZyIsInByb29mQXNzZXJ0aW9uU3RyaW5nIiwibmFtZSIsImZyb21TdGF0ZW1lbnQiLCJhYmxhdGUiLCJpbnN0YW50aWF0ZSIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQiLCJpbnN0YW50aWF0ZUltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbkZyb21JbXBsaWNpdEFzc3VtcHRpb25Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fab0U7MEJBRTdDO3VCQUNDO3lCQUM4Qjs2QkFDUjt3QkFDUTt5QkFDTztBQUU3RCxNQUFNLEVBQUVBLEdBQUcsRUFBRUMsR0FBRyxFQUFFLEdBQUdDLHFDQUFxQixFQUNwQyxFQUFFQyxXQUFXLEVBQUUsR0FBR0MsbUNBQW1CO01BRTNDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsMkJBQTJCQyx1QkFBTztJQUM1RCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMsQ0FBRTtRQUN4RCxLQUFLLENBQUNKLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtJQUNuQjtJQUVBQyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUNE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
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2Fzc3VtcHRpb24vaW1wbGljaXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgYWJsYXRlLCBpc29sYXRlLCBhdHRlbXB0LCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24gfSBmcm9tIFwiLi4vLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5jb25zdCB7IGN1dCwgYWxsIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgSW1wbGljaXRBc3N1bXB0aW9uIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50KTtcblxuICAgIHRoaXMuc3RhdGVtZW50ID0gc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldEltcGxpY2l0QXNzdW1wdGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbk5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICByZXR1cm4gaW1wbGljaXRBc3N1bXB0aW9uTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7IHJldHVybiB0aGlzLnN0YXRlbWVudC5nZXRTdGF0ZW1lbnROb2RlKCk7IH1cblxuICBpc0VxdWFsVG8oaW1wbGljaXRBc3N1bXB0aW9uKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoSW1wbGljaXRBc3N1bXB0aW9uTm9kZShpbXBsaWNpdEFzc3VtcHRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgbWF0Y2hJbXBsaWNpdEFzc3VtcHRpb25Ob2RlKGltcGxpY2l0QXNzdW1wdGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgZm9yd2FyZCA9IGN1dChmb3J3YXJkLCBiYWNrKTsgLy8vXG5cbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIGRlY2xhcmUoKHN0YXRlKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCAsIGJhY2spID0+IHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyk7XG5cbiAgICAgICAgcmV0dXJuIGFsbChbXG4gICAgICAgICAgdmFsaWRhdGVTdGF0ZW1lbnRcbiAgICAgICAgXSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgc3RhdGUsIGNvbnRleHQsIChzdGF0ZSwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uID0gdGhpczsgIC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24uYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlU3RhdGVtZW50KHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uJ3Mgc3RhdGVtZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiSW1wbGljaXRBc3N1bXB0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gICAgbGV0IGltcGxpY2l0QXNzdW1wdGlvbjtcblxuICAgIGFibGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQpLFxuICAgICAgICAgICAgICBzdHJpbmcgPSBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uTm9kZSA9IGluc3RhbnRpYXRlSW1wbGljaXRBc3N1bXB0aW9uKHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uID0gaW1wbGljaXRBc3N1bXB0aW9uRnJvbUltcGxpY2l0QXNzdW1wdGlvbk5vZGUoaW1wbGljaXRBc3N1bXB0aW9uTm9kZSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb247XG4gIH1cbn0pO1xuIl0sIm5hbWVzIjpbImN1dCIsImFsbCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkltcGxpY2l0QXNzdW1wdGlvbiIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJnZXRJbXBsaWNpdEFzc3VtcHRpb25Ob2RlIiwiZ2V0Tm9kZSIsImltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiaXNFcXVhbFRvIiwiaW1wbGljaXRBc3N1bXB0aW9uIiwiaW1wbGljaXRBc3N1bXB0aW9uTm9kZU1hdGNoZXMiLCJtYXRjaEltcGxpY2l0QXNzdW1wdGlvbk5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJkZWJ1ZyIsImlzb2xhdGUiLCJnZXRDb250ZXh0IiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50IiwiYmluZCIsImNvbW1pdCIsIm5hbWUiLCJmcm9tU3RhdGVtZW50IiwiYWJsYXRlIiwiaW5zdGFudGlhdGUiLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50IiwiaW5zdGFudGlhdGVJbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25Gcm9tSW1wbGljaXRBc3N1bXB0aW9uTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBY0E7OztlQUFBOzs7Z0NBWm9FOzBCQUU3Qzt1QkFDQzt5QkFDOEI7NkJBQ1I7d0JBQ1E7eUJBQ087QUFFN0QsTUFBTSxFQUFFQSxHQUFHLEVBQUVDLEdBQUcsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDcEMsRUFBRUMsV0FBVyxFQUFFLEdBQUdDLG1DQUFtQjtNQUUzQyxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLDJCQUEyQkMsdUJBQU87SUFDNUQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLENBQUU7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
@@ -184,7 +184,7 @@ class Claim extends _occamlanguages.Element {
184
184
  }
185
185
  toJSON() {
186
186
  let json;
187
- const labelsJSON = (0, _json.labelsToLabelsJSON)(this.labels), deductionJSON = (0, _json.deductionToDeductionJSON)(this.deduction), suppositionsJSON = (0, _json.suppositionsToSuppositionsJSON)(this.suppositions), signatureJSON = (0, _json.signatureToSignatureJSON)(this.signature), hypothesesJSON = (0, _json.hypothesesToHypothesesJSON)(this.hypotheses), string = this.getString();
187
+ const string = this.getString(), labelsJSON = (0, _json.labelsToLabelsJSON)(this.labels), deductionJSON = (0, _json.deductionToDeductionJSON)(this.deduction), suppositionsJSON = (0, _json.suppositionsToSuppositionsJSON)(this.suppositions), signatureJSON = (0, _json.signatureToSignatureJSON)(this.signature), hypothesesJSON = (0, _json.hypothesesToHypothesesJSON)(this.hypotheses);
188
188
  let breakPoint;
189
189
  breakPoint = this.getBreakPoint();
190
190
  const breakPointJSON = breakPointToBreakPointJSON(breakPoint);
@@ -207,4 +207,4 @@ class Claim extends _occamlanguages.Element {
207
207
  }
208
208
  }
209
209
 
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IGxhYmVsc0Zyb21KU09OLFxuICAgICAgICAgZGVkdWN0aW9uRnJvbUpTT04sXG4gICAgICAgICBzaWduYXR1cmVGcm9tSlNPTixcbiAgICAgICAgIGxhYmVsc1RvTGFiZWxzSlNPTixcbiAgICAgICAgIGh5cG90aGVzZXNGcm9tSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc0Zyb21KU09OLFxuICAgICAgICAgZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OLFxuICAgICAgICAgc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04sXG4gICAgICAgICBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyByZXZlcnNlIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZXZlcnksIGV4dHJhY3QsIGZvcndhcmRzRXZlcnksIGJhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsYWltIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGFiZWxzLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiwgcHJvb2YsIHNpZ25hdHVyZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxhYmVscyA9IGxhYmVscztcbiAgICB0aGlzLnN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucztcbiAgICB0aGlzLmRlZHVjdGlvbiA9IGRlZHVjdGlvbjtcbiAgICB0aGlzLnByb29mID0gcHJvb2Y7XG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldExhYmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHM7XG4gIH1cblxuICBnZXRTdXBwb3NpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VwcG9zaXRpb25zO1xuICB9XG5cbiAgZ2V0RGVkdWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbjtcbiAgfVxuXG4gIGdldFByb29mKCkge1xuICAgIHJldHVybiB0aGlzLnByb29mO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25hdHVyZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRTdXBwb3NpdGlvbihpbmRleCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uID0gdGhpcy5zdXBwb3NpdGlvbnNbaW5kZXhdIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH1cblxuICBpc1NhdGlzZmlhYmxlKCkge1xuICAgIGNvbnN0IHNhdGlzZmlhYmxlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gc2F0aXNmaWFibGU7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSB0aGlzLmxhYmVscy5zb21lKChsYWJlbCkgPT4ge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBsYWJlbC5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeUxhYmVscyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmeUxhYmVsID0gdGhpcy52ZXJpZnlMYWJlbC5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMubGFiZWxzLCB2ZXJpZnlMYWJlbCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgbGFiZWxzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbC4uLmApO1xuXG4gICAgcmV0dXJuIGxhYmVsLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVByb29mKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5wcm9vZiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBwcm9vZi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9vZi52ZXJpZnkoc3RhdGVtZW50LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBwcm9vZi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlEZWR1Y3Rpb24oY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cHBvc2l0aW9ucyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25zTGVuZ3RoID0gdGhpcy5zdXBwb3NpdGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBzdXBwb3NpdGlvbnMuLi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZiA9IHN1cHBvc2l0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcblxuICAgICAgICBjb250ZXh0LmFzc2lnbkFzc2lnbm1lbnRzKCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBzdXBwb3NpdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpcyhoeXBvdGhlc2lzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzLmRpc2NoYXJnZShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlcyA9IHRoaXMuZ2V0SHlwb3RoZXNlcygpLFxuICAgICAgICAgIGh5cG90aGVzZXNMZW5ndGggPSBoeXBvdGhlc2VzLmxlbmd0aDtcblxuICAgIGlmIChoeXBvdGhlc2VzTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeShoeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseURlZHVjdGlvbihzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gdG8gdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24uYXBwbHkoc3RlcCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gdG8gdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGV4dHJhY3QoZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgKGZhY3RPclN1YnByb29mLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi5hcHBseShmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9LCAoZmFjdE9yU3VicHJvb2ZzLCBmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gY29udGV4dC5zb2x2ZURlcml2ZWRTdWJzdGl0dXRpb25zKChiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24uYXBwbHlJbmRlcGVuZGVudGx5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFwcGx5U3VwcG9zaXRpb25zKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZhY3RPclN1YnByb29mcyA9IHJldmVyc2UoZmFjdE9yU3VicHJvb2ZzKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5hcHBseVN1cHBvc2l0aW9uKGZhY3RPclN1YnByb29mcywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGZvcndhcmQoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHNUb0xhYmVsc0pTT04odGhpcy5sYWJlbHMpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04odGhpcy5zaWduYXR1cmUpLFxuICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludCxcbiAgICAgIGxhYmVscyxcbiAgICAgIGRlZHVjdGlvbixcbiAgICAgIHN1cHBvc2l0aW9ucyxcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGh5cG90aGVzZXNcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oQ2xhc3MsIGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWR1Y3Rpb24gPSBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVscywgc2lnbmF0dXJlLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiksXG4gICAgICAgICAgc3RyaW5nID0gY2xhaW1TdHJpbmcsIC8vL1xuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgcHJvb2YgPSBudWxsLFxuICAgICAgICAgIGNsYWltID0gbmV3IENsYXNzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGFiZWxzLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiwgcHJvb2YsIHNpZ25hdHVyZSwgaHlwb3RoZXNlcyk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJDbGFpbSIsInJldmVyc2UiLCJhcnJheVV0aWxpdGllcyIsImV2ZXJ5IiwiZXh0cmFjdCIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsYWJlbHMiLCJzdXBwb3NpdGlvbnMiLCJkZWR1Y3Rpb24iLCJwcm9vZiIsInNpZ25hdHVyZSIsImh5cG90aGVzZXMiLCJnZXRMYWJlbHMiLCJnZXRTdXBwb3NpdGlvbnMiLCJnZXREZWR1Y3Rpb24iLCJnZXRQcm9vZiIsImdldFNpZ25hdHVyZSIsImdldEh5cG90aGVzZXMiLCJzZXRIeXBvdGhlc2VzIiwiZ2V0U3VwcG9zaXRpb24iLCJpbmRleCIsInN1cHBvc2l0aW9uIiwiaXNTYXRpc2ZpYWJsZSIsInNhdGlzZmlhYmxlIiwiaXNIeXBvdGhldGljYWwiLCJoeXBvdGhlc2VzTGVuZ3RoIiwibGVuZ3RoIiwiaHlwb3RoZXRpY2FsIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwic29tZSIsImxhYmVsIiwidmVyaWZ5TGFiZWxzIiwiZm9yd2FyZCIsImJhY2siLCJjbGFpbVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5TGFiZWwiLCJiaW5kIiwiZGVidWciLCJsYWJlbFN0cmluZyIsInZlcmlmeSIsInZlcmlmeVByb29mIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwidmVyaWZ5RGVkdWN0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInZlcmlmeVN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImZhY3RPclN1YnByb29mIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImRpc2NoYXJnZUh5cG90aGVzZXMiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwiYXBwbHlEZWR1Y3Rpb24iLCJzdGVwU3RyaW5nIiwiYXBwbHkiLCJhcHBseVN1cHBvc2l0aW9uIiwic29sdmVEZXJpdmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsImFwcGx5SW5kZXBlbmRlbnRseSIsImFwcGx5U3VwcG9zaXRpb25zIiwidG9KU09OIiwianNvbiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwiZnJvbUpTT04iLCJDbGFzcyIsImxhYmVsc0Zyb21KU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwiY2xhaW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFCQTs7O2VBQXFCQTs7OzJCQW5CVTtnQ0FDcUM7d0JBRUc7c0JBVXhCO0FBRS9DLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDekUsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtBQUUvRCxNQUFNVixjQUFjVyx1QkFBTztJQUN4QyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxFQUFFQyxVQUFVLENBQUU7UUFDNUcsS0FBSyxDQUFDVCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7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
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NsYWltLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IGxhYmVsc0Zyb21KU09OLFxuICAgICAgICAgZGVkdWN0aW9uRnJvbUpTT04sXG4gICAgICAgICBzaWduYXR1cmVGcm9tSlNPTixcbiAgICAgICAgIGxhYmVsc1RvTGFiZWxzSlNPTixcbiAgICAgICAgIGh5cG90aGVzZXNGcm9tSlNPTixcbiAgICAgICAgIHN1cHBvc2l0aW9uc0Zyb21KU09OLFxuICAgICAgICAgZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OLFxuICAgICAgICAgc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OLFxuICAgICAgICAgaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04sXG4gICAgICAgICBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04gfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2pzb25cIjtcblxuY29uc3QgeyByZXZlcnNlIH0gPSBhcnJheVV0aWxpdGllcyxcbiAgICAgIHsgZXZlcnksIGV4dHJhY3QsIGZvcndhcmRzRXZlcnksIGJhY2t3YXJkc0V2ZXJ5IH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENsYWltIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGFiZWxzLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiwgcHJvb2YsIHNpZ25hdHVyZSwgaHlwb3RoZXNlcykge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLmxhYmVscyA9IGxhYmVscztcbiAgICB0aGlzLnN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucztcbiAgICB0aGlzLmRlZHVjdGlvbiA9IGRlZHVjdGlvbjtcbiAgICB0aGlzLnByb29mID0gcHJvb2Y7XG4gICAgdGhpcy5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgdGhpcy5oeXBvdGhlc2VzID0gaHlwb3RoZXNlcztcbiAgfVxuXG4gIGdldExhYmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHM7XG4gIH1cblxuICBnZXRTdXBwb3NpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VwcG9zaXRpb25zO1xuICB9XG5cbiAgZ2V0RGVkdWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbjtcbiAgfVxuXG4gIGdldFByb29mKCkge1xuICAgIHJldHVybiB0aGlzLnByb29mO1xuICB9XG5cbiAgZ2V0U2lnbmF0dXJlKCkge1xuICAgIHJldHVybiB0aGlzLnNpZ25hdHVyZTtcbiAgfVxuXG4gIGdldEh5cG90aGVzZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHlwb3RoZXNlcztcbiAgfVxuXG4gIHNldEh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRTdXBwb3NpdGlvbihpbmRleCkge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uID0gdGhpcy5zdXBwb3NpdGlvbnNbaW5kZXhdIHx8IG51bGw7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH1cblxuICBpc1NhdGlzZmlhYmxlKCkge1xuICAgIGNvbnN0IHNhdGlzZmlhYmxlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gc2F0aXNmaWFibGU7XG4gIH1cblxuICBpc0h5cG90aGV0aWNhbCgpIHtcbiAgICBjb25zdCBoeXBvdGhlc2VzTGVuZ3RoID0gdGhpcy5oeXBvdGhlc2VzLmxlbmd0aCxcbiAgICAgICAgICBoeXBvdGhldGljYWwgPSAoaHlwb3RoZXNlc0xlbmd0aCA+IDApO1xuXG4gICAgcmV0dXJuIGh5cG90aGV0aWNhbDtcbiAgfVxuXG4gIG1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSB0aGlzLmxhYmVscy5zb21lKChsYWJlbCkgPT4ge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBsYWJlbC5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHZlcmlmeUxhYmVscyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBsYWJlbHMuLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmeUxhYmVsID0gdGhpcy52ZXJpZnlMYWJlbC5iaW5kKHRoaXMpO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMubGFiZWxzLCB2ZXJpZnlMYWJlbCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgbGFiZWxzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7bGFiZWxTdHJpbmd9JyBsYWJlbC4uLmApO1xuXG4gICAgcmV0dXJuIGxhYmVsLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVByb29mKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBpZiAodGhpcy5wcm9vZiA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBwcm9vZi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9vZi52ZXJpZnkoc3RhdGVtZW50LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBwcm9vZi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2ZXJpZnlEZWR1Y3Rpb24oY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uLnZlcmlmeShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHZlcmlmeVN1cHBvc2l0aW9ucyhjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25zTGVuZ3RoID0gdGhpcy5zdXBwb3NpdGlvbnMubGVuZ3RoO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uc0xlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBzdXBwb3NpdGlvbnMuLi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZlcmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICBjb25zdCBmYWN0T3JTdWJwcm9vZiA9IHN1cHBvc2l0aW9uOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEZhY3RPclN1YnByb29mKGZhY3RPclN1YnByb29mKTtcblxuICAgICAgICBjb250ZXh0LmFzc2lnbkFzc2lnbm1lbnRzKCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyBzdXBwb3NpdGlvbnMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpcyhoeXBvdGhlc2lzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJnaW5nIHRoZSAnJHtjbGFpbVN0cmluZ30nIGNsYWltJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzLmRpc2NoYXJnZShjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlcyA9IHRoaXMuZ2V0SHlwb3RoZXNlcygpLFxuICAgICAgICAgIGh5cG90aGVzZXNMZW5ndGggPSBoeXBvdGhlc2VzLmxlbmd0aDtcblxuICAgIGlmIChoeXBvdGhlc2VzTGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZm9yd2FyZChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZ2luZyB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuLi5gKTtcblxuICAgIGNvbnN0IGRpc2NoYXJnZUh5cG90aGVzaXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMuYmluZCh0aGlzKTtcblxuICAgIHJldHVybiBldmVyeShoeXBvdGhlc2VzLCBkaXNjaGFyZ2VIeXBvdGhlc2lzLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlZCB0aGUgJyR7Y2xhaW1TdHJpbmd9JyBjbGFpbSdzIGh5cG90aGVzZXMuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBhcHBseURlZHVjdGlvbihzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjbGFpbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZGVkdWN0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQXBwbHlpbmcgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gdG8gdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb24uYXBwbHkoc3RlcCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmFwcGxpZWQgdGhlICcke2NsYWltU3RyaW5nfScgY2xhaW0ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gdG8gdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGVwLCBmYWN0T3JTdWJwcm9vZnMsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgYXBwbHlTdXBwb3NpdGlvbihmYWN0T3JTdWJwcm9vZnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIGV4dHJhY3QoZmFjdE9yU3VicHJvb2ZzLFxuICAgICAgKGZhY3RPclN1YnByb29mLCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICAgIHJldHVybiBzdXBwb3NpdGlvbi5hcHBseShmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgICB9LCAoZmFjdE9yU3VicHJvb2ZzLCBmYWN0T3JTdWJwcm9vZiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gY29udGV4dC5zb2x2ZURlcml2ZWRTdWJzdGl0dXRpb25zKChiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCAoZXhjZXB0aW9uKSA9PiB7XG4gICAgICAgIGlmKGV4Y2VwdGlvbikge1xuICAgICAgICAgIHJldHVybiBiYWNrKGV4Y2VwdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3VwcG9zaXRpb24uYXBwbHlJbmRlcGVuZGVudGx5KGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFwcGx5U3VwcG9zaXRpb25zKHN0ZXAsIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZhY3RPclN1YnByb29mcyA9IHJldmVyc2UoZmFjdE9yU3VicHJvb2ZzKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5hcHBseVN1cHBvc2l0aW9uKGZhY3RPclN1YnByb29mcywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGZhY3RPclN1YnByb29mcywgY29udGV4dCwgKGZhY3RPclN1YnByb29mcywgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIGZvcndhcmQoc3RlcCwgZmFjdE9yU3VicHJvb2ZzLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsc1RvTGFiZWxzSlNPTih0aGlzLmxhYmVscyksXG4gICAgICAgICAgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTih0aGlzLmRlZHVjdGlvbiksXG4gICAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTih0aGlzLnN1cHBvc2l0aW9ucyksXG4gICAgICAgICAgc2lnbmF0dXJlSlNPTiA9IHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTih0aGlzLnNpZ25hdHVyZSksXG4gICAgICAgICAgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTih0aGlzLmh5cG90aGVzZXMpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OOyAgLy8vXG5cbiAgICBqc29uID0ge1xuICAgICAgc3RyaW5nLFxuICAgICAgYnJlYWtQb2ludCxcbiAgICAgIGxhYmVscyxcbiAgICAgIGRlZHVjdGlvbixcbiAgICAgIHN1cHBvc2l0aW9ucyxcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGh5cG90aGVzZXNcbiAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oQ2xhc3MsIGpzb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWR1Y3Rpb24gPSBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGNsYWltU3RyaW5nID0gY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVscywgc2lnbmF0dXJlLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiksXG4gICAgICAgICAgc3RyaW5nID0gY2xhaW1TdHJpbmcsIC8vL1xuICAgICAgICAgIG5vZGUgPSBudWxsLFxuICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgcHJvb2YgPSBudWxsLFxuICAgICAgICAgIGNsYWltID0gbmV3IENsYXNzKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgbGFiZWxzLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbiwgcHJvb2YsIHNpZ25hdHVyZSwgaHlwb3RoZXNlcyk7XG5cbiAgICByZXR1cm4gY2xhaW07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJDbGFpbSIsInJldmVyc2UiLCJhcnJheVV0aWxpdGllcyIsImV2ZXJ5IiwiZXh0cmFjdCIsImZvcndhcmRzRXZlcnkiLCJiYWNrd2FyZHNFdmVyeSIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrUG9pbnRGcm9tSlNPTiIsImJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJsYWJlbHMiLCJzdXBwb3NpdGlvbnMiLCJkZWR1Y3Rpb24iLCJwcm9vZiIsInNpZ25hdHVyZSIsImh5cG90aGVzZXMiLCJnZXRMYWJlbHMiLCJnZXRTdXBwb3NpdGlvbnMiLCJnZXREZWR1Y3Rpb24iLCJnZXRQcm9vZiIsImdldFNpZ25hdHVyZSIsImdldEh5cG90aGVzZXMiLCJzZXRIeXBvdGhlc2VzIiwiZ2V0U3VwcG9zaXRpb24iLCJpbmRleCIsInN1cHBvc2l0aW9uIiwiaXNTYXRpc2ZpYWJsZSIsInNhdGlzZmlhYmxlIiwiaXNIeXBvdGhldGljYWwiLCJoeXBvdGhlc2VzTGVuZ3RoIiwibGVuZ3RoIiwiaHlwb3RoZXRpY2FsIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwic29tZSIsImxhYmVsIiwidmVyaWZ5TGFiZWxzIiwiZm9yd2FyZCIsImJhY2siLCJjbGFpbVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5TGFiZWwiLCJiaW5kIiwiZGVidWciLCJsYWJlbFN0cmluZyIsInZlcmlmeSIsInZlcmlmeVByb29mIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwidmVyaWZ5RGVkdWN0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInZlcmlmeVN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc0xlbmd0aCIsImZhY3RPclN1YnByb29mIiwiYWRkRmFjdE9yU3VicHJvb2YiLCJhc3NpZ25Bc3NpZ25tZW50cyIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImRpc2NoYXJnZUh5cG90aGVzZXMiLCJzdGVwIiwiZmFjdE9yU3VicHJvb2ZzIiwiYXBwbHlEZWR1Y3Rpb24iLCJzdGVwU3RyaW5nIiwiYXBwbHkiLCJhcHBseVN1cHBvc2l0aW9uIiwic29sdmVEZXJpdmVkU3Vic3RpdHV0aW9ucyIsImV4Y2VwdGlvbiIsImFwcGx5SW5kZXBlbmRlbnRseSIsImFwcGx5U3VwcG9zaXRpb25zIiwidG9KU09OIiwianNvbiIsImxhYmVsc0pTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJkZWR1Y3Rpb25KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInNpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwiZnJvbUpTT04iLCJDbGFzcyIsImxhYmVsc0Zyb21KU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwiY2xhaW0iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFCQTs7O2VBQXFCQTs7OzJCQW5CVTtnQ0FDcUM7d0JBRUc7c0JBVXhCO0FBRS9DLE1BQU0sRUFBRUMsT0FBTyxFQUFFLEdBQUdDLHlCQUFjLEVBQzVCLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRSxHQUFHQyxxQ0FBcUIsRUFDekUsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtBQUUvRCxNQUFNVixjQUFjVyx1QkFBTztJQUN4QyxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxFQUFFQyxVQUFVLENBQUU7UUFDNUcsS0FBSyxDQUFDVCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFVBQVUsR0FBR0E7SUFDcEI7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
@@ -50,7 +50,7 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
50
50
  }, state);
51
51
  });
52
52
  });
53
- validate(state, context, forward, back) {
53
+ validate = unbreakable(function(state, context, forward, back) {
54
54
  const includeType = false, combinatorString = this.getString(includeType); ///
55
55
  context.trace(`Validating the '${combinatorString}' combinator...`);
56
56
  return (0, _context.isolate)((state, context, forward, back)=>{
@@ -68,7 +68,7 @@ const _default = (0, _elements.define)(class Combinator extends _occamlanguages.
68
68
  context.debug(`...validated the '${combinatorString}' combinator.`);
69
69
  return forward(combinator, context, back);
70
70
  }, back);
71
- }
71
+ });
72
72
  validateStatementAsCombinator(state, context, forward, back) {
73
73
  const includeType = false, combinatorString = this.getString(includeType); ///
74
74
  context.trace(`Validating the '${combinatorString}' combinator's statement...`);
@@ -117,4 +117,4 @@ function statementFromCombinatorNode(combinatorNode, context) {
117
117
  return statement;
118
118
  }
119
119
 
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb21iaW5hdG9yeU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JOb2RlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnlOb2RlID0gdGhpcy5nZXRDb21iaW5hdG9yeU5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBjb21iaW5hdG9yeU5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjYm1iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NibWJpbmF0b3JTdHJpbmd9JyBjYm1iaW5hdG9yLi4uYCk7XG5cbiAgICBjb25zdCBtYWxmb3JtZWQgPSB0aGlzLmlzTWFsZm9ybWVkKCk7XG5cbiAgICBpZiAobWFsZm9ybWVkKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjYm1iaW5hdG9yU3RyaW5nfScgY2JtYmluYXRvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY2JtYmluYXRvciwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjYm1iaW5hdG9yU3RyaW5nfScgY2JtYmluYXRvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvci5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmF0b3IgPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbWJpbmF0b3IsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3Ioc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IodGhpcy5zdGF0ZW1lbnQsIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmFkZFN0YXRlbWVudCh0aGlzLnN0YXRlbWVudCk7XG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb21iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci4uLmApO1xuXG4gICAgY29uc3QgY29tYmluYXRvciA9IHRoaXMsIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgcmV0dXJuIHVuaWZ5U3RhdGVtZW50V2l0aENvbWJpbmF0b3Ioc3RhdGVtZW50LCBjb21iaW5hdG9yLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvci5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29tYmluYXRvclwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbWJpbmF0b3I7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gaW5zdGFudGlhdGVDb21iaW5hdG9yKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb21iaW5hdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlKGNvbWJpbmF0b3JOb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb21iaW5hdG9yID0gbmV3IENvbWJpbmF0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29tYmluYXRvcjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21Db21iaW5hdG9yTm9kZShjb21iaW5hdG9yTm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29tYmluYXRvck5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJleGlzdHMiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJkZWZpbmUiLCJDb21iaW5hdG9yIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldENvbWJpbmF0b3J5Tm9kZSIsImdldE5vZGUiLCJjb21iaW5hdG9yTm9kZSIsImlzTWFsZm9ybWVkIiwiY29tYmluYXRvcnlOb2RlIiwibWFsZm9ybWVkIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJpbmNsdWRlVHlwZSIsImNibWJpbmF0b3JTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlY2xhcmUiLCJzdGF0ZSIsImRlc2lzdCIsInZhbGlkYXRlIiwiY2JtYmluYXRvciIsImRlYnVnIiwiY29tYmluYXRvclN0cmluZyIsImlzb2xhdGUiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnRBc0NvbWJpbmF0b3IiLCJiaW5kIiwiY29tbWl0IiwiY29tYmluYXRvciIsImFkZFN0YXRlbWVudCIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiZ2VuZXJhbENvbnRleHQiLCJnZXRDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwidW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciIsInRvSlNPTiIsImpzb24iLCJzZXJpYWxpc2UiLCJuYW1lIiwiZnJvbUpTT04iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVDb21iaW5hdG9yIiwic3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJmaW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQUE7OztnQ0Fab0U7MEJBRTdDO3VCQUNTOzZCQUNNO3VCQUNPOzBCQUNDO3lCQUN3QjtBQUV0RSxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxtQ0FBbUIsRUFDckMsRUFBRUMs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
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbWJpbmF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZXNpc3QsIGRlY2xhcmUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0YXRlXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbWJpbmF0b3IgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciB9IGZyb20gXCIuLi9wcm9jZXNzL3ZhbGlkYXRlXCI7XG5pbXBvcnQgeyBpc29sYXRlLCBhdHRlbXB0LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IHVuYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzLFxuICAgICAgeyBjdXQsIGV4aXN0cyB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29tYmluYXRvciBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRDb21iaW5hdG9yeU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbWJpbmF0b3JOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JOb2RlO1xuICB9XG5cbiAgaXNNYWxmb3JtZWQoKSB7XG4gICAgY29uc3QgY29tYmluYXRvcnlOb2RlID0gdGhpcy5nZXRDb21iaW5hdG9yeU5vZGUoKSxcbiAgICAgICAgICBtYWxmb3JtZWQgPSBjb21iaW5hdG9yeU5vZGUuaXNNYWxmb3JtZWQoKTtcblxuICAgIHJldHVybiBtYWxmb3JtZWQ7XG4gIH1cblxuICB2ZXJpZnkgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgaW5jbHVkZVR5cGUgPSBmYWxzZSxcbiAgICAgICAgICBjYm1iaW5hdG9yU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoaW5jbHVkZVR5cGUpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2NibWJpbmF0b3JTdHJpbmd9JyBjYm1iaW5hdG9yLi4uYCk7XG5cbiAgICBjb25zdCBtYWxmb3JtZWQgPSB0aGlzLmlzTWFsZm9ybWVkKCk7XG5cbiAgICBpZiAobWFsZm9ybWVkKSB7XG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtjYm1iaW5hdG9yU3RyaW5nfScgY2JtYmluYXRvciBiZWNhdXNlIGl0IGlzIG1hbGZvcm1lZC5gKTtcblxuICAgICAgcmV0dXJuIGJhY2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgIHJldHVybiBkZXNpc3QoKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoY2JtYmluYXRvciwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtjYm1iaW5hdG9yU3RyaW5nfScgY2JtYmluYXRvci5gKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHN0YXRlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUgPSB1bmJyZWFrYWJsZShmdW5jdGlvbiAoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBpbmNsdWRlVHlwZSA9IGZhbHNlLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZyhpbmNsdWRlVHlwZSk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvci5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBleGlzdHMoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50QXNDb21iaW5hdG9yXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IGNvbWJpbmF0b3IgPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbWJpbmF0b3IsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcihzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGluY2x1ZGVUeXBlID0gZmFsc2UsXG4gICAgICAgICAgY29tYmluYXRvclN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKGluY2x1ZGVUeXBlKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29tYmluYXRvclN0cmluZ30nIGNvbWJpbmF0b3IncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvcih0aGlzLnN0YXRlbWVudCwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkU3RhdGVtZW50KHRoaXMuc3RhdGVtZW50KTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb21iaW5hdG9yU3RyaW5nfScgY29tYmluYXRvcidzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbWJpbmF0b3JTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLi4uYCk7XG5cbiAgICBjb25zdCBjb21iaW5hdG9yID0gdGhpcywgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgICByZXR1cm4gdW5pZnlTdGF0ZW1lbnRXaXRoQ29tYmluYXRvcihzdGF0ZW1lbnQsIGNvbWJpbmF0b3IsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbWJpbmF0b3JTdHJpbmd9JyBjb21iaW5hdG9yLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZW1lbnQsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmdcbiAgICAgIH07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb21iaW5hdG9yXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29tYmluYXRvcjtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29tYmluYXRvck5vZGUgPSBpbnN0YW50aWF0ZUNvbWJpbmF0b3Ioc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbWJpbmF0b3JOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBudWxsLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUoY29tYmluYXRvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbWJpbmF0b3IgPSBuZXcgQ29tYmluYXRvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbWJpbmF0b3JOb2RlKGNvbWJpbmF0b3JOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBjb21iaW5hdG9yTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbInVuYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImN1dCIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkNvbWJpbmF0b3IiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZ2V0Q29tYmluYXRvcnlOb2RlIiwiZ2V0Tm9kZSIsImNvbWJpbmF0b3JOb2RlIiwiaXNNYWxmb3JtZWQiLCJjb21iaW5hdG9yeU5vZGUiLCJtYWxmb3JtZWQiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImluY2x1ZGVUeXBlIiwiY2JtYmluYXRvclN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwiZGVjbGFyZSIsInN0YXRlIiwiZGVzaXN0IiwidmFsaWRhdGUiLCJjYm1iaW5hdG9yIiwiZGVidWciLCJjb21iaW5hdG9yU3RyaW5nIiwiaXNvbGF0ZSIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudEFzQ29tYmluYXRvciIsImJpbmQiLCJjb21taXQiLCJjb21iaW5hdG9yIiwiYWRkU3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJnZW5lcmFsQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJ1bmlmeVN0YXRlbWVudFdpdGhDb21iaW5hdG9yIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbWJpbmF0b3IiLCJzdGF0ZW1lbnRGcm9tQ29tYmluYXRvck5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVpvRTswQkFFN0M7dUJBQ1M7NkJBQ007dUJBQ087MEJBQ0M7eUJBQ3dCO0FBRXRFLE1BQU0sRUFBRUEsV0FBVyxFQUFF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
@@ -81,7 +81,7 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
81
81
  return back();
82
82
  });
83
83
  });
84
- validate(state, context, forward, back) {
84
+ validate = unbreakable(function(state, context, forward, back) {
85
85
  let constraint;
86
86
  const constraintString = this.getString(); ///
87
87
  context.trace(`Validating the '${constraintString}' constraint...`);
@@ -108,7 +108,7 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
108
108
  context.debug(`...validated the '${constraintString}' constraint.`);
109
109
  return forward(constraint, context, back);
110
110
  }, back);
111
- }
111
+ });
112
112
  validateMetavaraible(state, context, forward, back) {
113
113
  const constraintString = this.getString(); ///
114
114
  context.trace(`Validating the '${constraintString}' constraint's metavariable...`);
@@ -259,4 +259,4 @@ function metavariableFromConstraintNode(constraintNode, context) {
259
259
  return metavariable;
260
260
  }
261
261
 
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJhaW50IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuaW1wb3J0IHsgY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgY29uc3RyYWludFN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgcGFyZSwgam9pbiwgYWJsYXRlLCBpc29sYXRlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBzb21lLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cmFpbnQgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0Q29uc3RyYWludE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnROb2RlO1xuICB9XG5cbiAgaXNFcXVhbFRvKGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IGNvbnN0cmFpbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGNvbnN0cmFpbnROb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbnN0cmFpbnROb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kQ29uc3RyYWludChjb250ZXh0KSB7XG4gICAgY29uc3QgY29uc3RyYWludE5vZGUgPSB0aGlzLmdldENvbnN0cmFpbnROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludCA9IGNvbnRleHQuZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcGFyZSgoY29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGNvbnN0cmFpbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICAgIH0sIGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICBhcHBseSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChpbXBsaWNpdEFzc3VtcHRpb25zLCBhc3N1bXB0aW9ucywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29uc3RyYWluZ1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtjb25zdHJhaW5nU3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3QgdW5pZnlBc3N1bXB0aW9ucyA9IHRoaXMudW5pZnlBc3N1bXB0aW9ucy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyA9IHRoaXMudW5pZnlJbXBsaWNpdEFzc3VtcHRpb25zLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgIHVuaWZ5QXNzdW1wdGlvbnMsXG4gICAgICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnNcbiAgICBdLCBpbXBsaWNpdEFzc3VtcHRpb25zLCBhc3N1bXB0aW9ucywgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbnMsIGFzc3VtcHRpb25zLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb25zdHJhaW5nU3RyaW5nfScgY29uc3RyYWludC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke2NvbnN0cmFpbmdTdHJpbmd9JyBjb25zdHJhaW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdHJhaW50ID0gdGhpcy5maW5kQ29uc3RyYWludChjb250ZXh0KTtcblxuICAgIGlmIChjb25zdHJhaW50ICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb25zdHJhaW50LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0cmFpbnQgPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlTWV0YXZhcmFpYmxlID0gdGhpcy52YWxpZGF0ZU1ldGF2YXJhaWJsZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICAgIHZhbGlkYXRlTWV0YXZhcmFpYmxlXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQ29uc3RyYWludChjb25zdHJhaW50KTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29uc3RyYWludCwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZU1ldGF2YXJhaWJsZShzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAobWV0YXZhcmlhYmxlLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcblxuICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIG1ldGF2YXJpYWJsZS5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKHN0YXRlbWVudCwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKHN0YXRlLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5TGluayhsaW5rLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGxpbmtTdHJpbmcgPSBsaW5rLmdldFN0cmluZygpLFxuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtsaW5rU3RyaW5nfScgbGluayB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKGxpbmssIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IGxpbmsuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUudW5pZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKVxuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgbGluaywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGxpbmssIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgbWV0YXZhcmlhYmxlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIGlzb2xhdGUoKHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgbGV0IHNwZWNpZmljU3RhdGVtZW50O1xuXG4gICAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHNwZWNpZmljU3RhdGVtZW50LCBjb250ZXh0KTsgIC8vL1xuXG4gICAgICBjb25zdCBnZW5lcmFsU3RhdGVtZW50ID0gdGhpcy5zdGF0ZW1lbnQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiBnZW5lcmFsU3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHNwZWNpZmljU3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQ7ICAvLy9cblxuICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKVxuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gICAgfSwgc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmcgPSBhc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoYXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBsaW5rID0gYXNzdW1wdGlvbi5nZXRMaW5rKCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IGFzc3VtcHRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnVuaWZ5TGluayhsaW5rLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgICAgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9yd2FyZChiYWNrKTtcbiAgICAgICAgICB9LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBhc3N1bXB0aW9uLCBjb250ZXh0LCAoYXNzdW1wdGlvbiwgY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUFzc3VtcHRpb25zKGltcGxpY2l0QXNzdW1wdGlvbnMsIGFzc3VtcHRpb25zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIHNvbWUoYXNzdW1wdGlvbnMsIChhc3N1bXB0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeUFzc3VtcHRpb24oYXNzdW1wdGlvbiwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIGZvcndhcmQoaW1wbGljaXRBc3N1bXB0aW9ucywgYXNzdW1wdGlvbnMsIGNvbnRleHQsIGJhY2spO1xuICAgICAgfSwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gIH1cblxuICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbihpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGltcGxpY2l0QXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50Q29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25Db250ZXh0ID0gaW1wbGljaXRBc3N1bXB0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnN0cmFpbnRDb250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBpbXBsaWNpdEFzc3VtcHRpb25Db250ZXh0OyAgLy8vXG5cbiAgICByZXR1cm4gam9pbigoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50ID0gaW1wbGljaXRBc3N1bXB0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7aW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlJbXBsaWNpdEFzc3VtcHRpb25zKGltcGxpY2l0QXNzdW1wdGlvbnMsIGFzc3VtcHRpb25zLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgcmV0dXJuIHNvbWUoaW1wbGljaXRBc3N1bXB0aW9ucywgKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgdGhpcy51bmlmeUltcGxpY2l0QXNzdW1wdGlvbihpbXBsaWNpdEFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gZm9yd2FyZChpbXBsaWNpdEFzc3VtcHRpb25zLCBhc3N1bXB0aW9ucywgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQ29uc3RyYWludFwiO1xuXG4gIHRvSlNPTigpIHtcbiAgICBsZXQganNvbjtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nXG4gICAgICB9O1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RyYWludE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IG51bGwsXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZUZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RyYWludCA9IG5ldyBDb25zdHJhaW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50LCBtZXRhdmFyaWFibGUpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHN0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gICAgY29uc3QgcmVmZXJlbmNlID0gc3RlcC5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSByZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCk7XG5cbiAgICBhYmxhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSBjb25zdHJhaW50U3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgICAgIHN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmcsICAvLy9cbiAgICAgICAgICAgICAgY29uc3RyYWludE5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cmFpbnQoc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdHJhaW50ID0gY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG59KTtcblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBjb25zdHJhaW50Tm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5mdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlID0gY29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG4iXSwibmFtZXMiOlsidW5icmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiY3V0IiwiYWxsIiwic29tZSIsImV4aXN0cyIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImRlZmluZSIsIkNvbnN0cmFpbnQiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwibWV0YXZhcmlhYmxlIiwiZ2V0U3RhdGVtZW50IiwiZ2V0TWV0YXZhcmlhYmxlIiwiZ2V0Q29uc3RyYWludE5vZGUiLCJnZXROb2RlIiwiY29uc3RyYWludE5vZGUiLCJpc0VxdWFsVG8iLCJjb25zdHJhaW50IiwiY29uc3RyYWludE5vZGVNYXRjaGVzIiwibWF0Y2hDb25zdHJhaW50Tm9kZSIsImVxdWFsVG8iLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsImZpbmRDb25zdHJhaW50IiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwidmVyaWZ5IiwiZm9yd2FyZCIsImJhY2siLCJjb25zdHJhaW50U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJpc29sYXRlIiwicGFyZSIsImRlY2xhcmUiLCJzdGF0ZSIsInZhbGlkYXRlIiwiZGVidWciLCJhcHBseSIsImltcGxpY2l0QXNzdW1wdGlvbnMiLCJhc3N1bXB0aW9ucyIsImNvbnN0cmFpbmdTdHJpbmciLCJ1bmlmeUFzc3VtcHRpb25zIiwiYmluZCIsInVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyIsImV4Y2VwdGlvbiIsImdldENvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJ2YWxpZGF0ZU1ldGF2YXJhaWJsZSIsImNvbW1pdCIsImFkZENvbnN0cmFpbnQiLCJ1bmlmeUxpbmsiLCJsaW5rIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJsaW5rU3RyaW5nIiwicmVjb25jaWxlIiwidW5pZnlNZXRhdmFyaWFibGUiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFN0cmluZyIsInNwZWNpZmljU3RhdGVtZW50Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQiLCJnZW5lcmFsU3RhdGVtZW50IiwidW5pZnlBc3N1bXB0aW9uIiwiYXNzdW1wdGlvbiIsImFzc3VtcHRpb25TdHJpbmciLCJnZXRMaW5rIiwidW5pZnlJbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb24iLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmciLCJjb25zdHJhaW50Q29udGV4dCIsImltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQiLCJqb2luIiwibmFtZSIsInRvSlNPTiIsImpzb24iLCJzZXJpYWxpc2UiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbnN0cmFpbnQiLCJzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUiLCJtZXRhdmFyaWFibGVGcm9tQ29uc3RyYWludE5vZGUiLCJmcm9tU3RlcCIsInN0ZXAiLCJyZWZlcmVuY2UiLCJnZXRSZWZlcmVuY2UiLCJhYmxhdGUiLCJjb25zdHJhaW50U3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsImNvbnN0cmFpbnRGcm9tQ29uc3RyYWludE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsImZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWVBOzs7ZUFBQTs7O2dDQWJvRTswQkFFN0M7dUJBQ0M7NkJBQ2M7MEJBQ0s7eUJBQ0U7d0JBQ2dCO3lCQUN3QztBQUVyRyxNQUFNLEVBQUVBLFdBQVcsRUFBRSxHQUFHQyxt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
262
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBkZWNsYXJlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdGF0ZVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJhaW50IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuaW1wb3J0IHsgY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgY29uc3RyYWludFN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgcGFyZSwgam9pbiwgYWJsYXRlLCBpc29sYXRlLCBhdHRlbXB0LCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgdW5icmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXMsXG4gICAgICB7IGN1dCwgYWxsLCBzb21lLCBleGlzdHMgfSA9IGNvbnRpbnVhdGlvblV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cmFpbnQgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgICB0aGlzLm1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0Q29uc3RyYWludE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnROb2RlO1xuICB9XG5cbiAgaXNFcXVhbFRvKGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IGNvbnN0cmFpbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGNvbnN0cmFpbnROb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbnN0cmFpbnROb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kQ29uc3RyYWludChjb250ZXh0KSB7XG4gICAgY29uc3QgY29uc3RyYWludE5vZGUgPSB0aGlzLmdldENvbnN0cmFpbnROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludCA9IGNvbnRleHQuZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgdmVyaWZ5ID0gdW5icmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBmb3J3YXJkID0gY3V0KGZvcndhcmQsIGJhY2spOyAvLy9cblxuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcGFyZSgoY29udGV4dCkgPT4ge1xuICAgICAgICByZXR1cm4gZGVjbGFyZSgoc3RhdGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZShzdGF0ZSwgY29udGV4dCwgKGNvbnN0cmFpbnQsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICAgIH0sIGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQsIChjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9KTtcblxuICBhcHBseSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChpbXBsaWNpdEFzc3VtcHRpb25zLCBhc3N1bXB0aW9ucywgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGZvcndhcmQgPSBjdXQoZm9yd2FyZCwgYmFjayk7IC8vL1xuXG4gICAgY29uc3QgY29uc3RyYWluZ1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYEFwcGx5aW5nIHRoZSAnJHtjb25zdHJhaW5nU3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgY29uc3QgdW5pZnlBc3N1bXB0aW9ucyA9IHRoaXMudW5pZnlBc3N1bXB0aW9ucy5iaW5kKHRoaXMpLFxuICAgICAgICAgIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9ucyA9IHRoaXMudW5pZnlJbXBsaWNpdEFzc3VtcHRpb25zLmJpbmQodGhpcyk7XG5cbiAgICByZXR1cm4gZXhpc3RzKFtcbiAgICAgIHVuaWZ5QXNzdW1wdGlvbnMsXG4gICAgICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnNcbiAgICBdLCBpbXBsaWNpdEFzc3VtcHRpb25zLCBhc3N1bXB0aW9ucywgY29udGV4dCwgKGltcGxpY2l0QXNzdW1wdGlvbnMsIGFzc3VtcHRpb25zLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi5hcHBsaWVkIHRoZSAnJHtjb25zdHJhaW5nU3RyaW5nfScgY29uc3RyYWludC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29udGV4dCwgYmFjayk7XG4gICAgfSwgKGV4Y2VwdGlvbikgPT4ge1xuICAgICAgaWYgKGV4Y2VwdGlvbikge1xuICAgICAgICByZXR1cm4gYmFjayhleGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmFibGUgdG8gYXBwbHkgdGhlICcke2NvbnN0cmFpbmdTdHJpbmd9JyBjb25zdHJhaW50LmApO1xuXG4gICAgICByZXR1cm4gYmFjaygpO1xuICAgIH0pO1xuICB9KTtcblxuICB2YWxpZGF0ZSA9IHVuYnJlYWthYmxlKGZ1bmN0aW9uIChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdHJhaW50ID0gdGhpcy5maW5kQ29uc3RyYWludChjb250ZXh0KTtcblxuICAgIGlmIChjb25zdHJhaW50ICE9PSBudWxsKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb25zdHJhaW50LCBjb250ZXh0LCBiYWNrKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGUsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIGNvbnN0cmFpbnQgPSB0aGlzOyAgLy8vXG5cbiAgICAgIGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgICAgcmV0dXJuIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVTdGF0ZW1lbnQgPSB0aGlzLnZhbGlkYXRlU3RhdGVtZW50LmJpbmQodGhpcyksXG4gICAgICAgICAgICAgIHZhbGlkYXRlTWV0YXZhcmFpYmxlID0gdGhpcy52YWxpZGF0ZU1ldGF2YXJhaWJsZS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHJldHVybiBhbGwoW1xuICAgICAgICAgIHZhbGlkYXRlU3RhdGVtZW50LFxuICAgICAgICAgIHZhbGlkYXRlTWV0YXZhcmFpYmxlXG4gICAgICAgIF0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIHN0YXRlLCBjb250ZXh0LCAoc3RhdGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuYWRkQ29uc3RyYWludChjb25zdHJhaW50KTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoY29uc3RyYWludCwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH0pO1xuXG4gIHZhbGlkYXRlTWV0YXZhcmFpYmxlKHN0YXRlLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGUudmFsaWRhdGUoc3RhdGUsIGNvbnRleHQsIChtZXRhdmFyaWFibGUsIGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgbWV0YXZhcmlhYmxlLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChzdGF0ZSwgY29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChzdGF0ZSwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKHN0YXRlLCBjb250ZXh0LCAoc3RhdGVtZW50LCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcblxuICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoc3RhdGUsIGNvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlMaW5rKGxpbmssIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgbGlua1N0cmluZyA9IGxpbmsuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2xpbmtTdHJpbmd9JyBsaW5rIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgbWV0YXZhcmlhYmxlLi4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgobGluaywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgZm9yd2FyZCwgYmFjaykgPT4ge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gbGluay5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZS51bmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgY29udGV4dC5jb21taXQoKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spXG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBsaW5rLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAobGluaywgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7bGlua1N0cmluZ30nIGxpbmsgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBtZXRhdmFyaWFibGUuYCk7XG5cbiAgICAgIHJldHVybiBmb3J3YXJkKGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spO1xuICAgIH0sIGJhY2spO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gaXNvbGF0ZSgoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICBsZXQgc3BlY2lmaWNTdGF0ZW1lbnQ7XG5cbiAgICAgIHNwZWNpZmljU3RhdGVtZW50ID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICAgIHNwZWNpZmljU3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3BlY2lmaWNTdGF0ZW1lbnQsIGNvbnRleHQpOyAgLy8vXG5cbiAgICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSB0aGlzLnN0YXRlbWVudDsgIC8vL1xuXG4gICAgICByZXR1cm4gcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYWxTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgIC8vL1xuXG4gICAgICAgICAgY29udGV4dC5jb21taXQoKTtcblxuICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spXG4gICAgICAgIH0sIGJhY2spO1xuICAgICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgICB9LCBzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC5gKTtcblxuICAgICAgcmV0dXJuIGZvcndhcmQoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjayk7XG4gICAgfSwgYmFjayk7XG4gIH1cblxuICB1bmlmeUFzc3VtcHRpb24oYXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgYXNzdW1wdGlvblN0cmluZyA9IGFzc3VtcHRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7YXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIHJldHVybiBpc29sYXRlKChhc3N1bXB0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICByZXR1cm4gcmVjb25jaWxlKChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBhc3N1bXB0aW9uLmdldExpbmsoKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gYXNzdW1wdGlvbi5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgLy8vXG4gICAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgICByZXR1cm4gdGhpcy51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlMaW5rKGxpbmssIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICAgICAgICBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAgLy8vXG5cbiAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3J3YXJkKGJhY2spO1xuICAgICAgICAgIH0sIGJhY2spO1xuICAgICAgICB9LCBiYWNrKTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGFzc3VtcHRpb24sIGNvbnRleHQsIChhc3N1bXB0aW9uLCBjb250ZXh0LCBiYWNrKSA9PiB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgaW1wbGljaXQgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuXG4gICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5QXNzdW1wdGlvbnMoaW1wbGljaXRBc3N1bXB0aW9ucywgYXNzdW1wdGlvbnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gc29tZShhc3N1bXB0aW9ucywgKGFzc3VtcHRpb24sIGNvbnRleHQsIGZvcndhcmQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVuaWZ5QXNzdW1wdGlvbihhc3N1bXB0aW9uLCBjb250ZXh0LCAoY29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICByZXR1cm4gZm9yd2FyZChpbXBsaWNpdEFzc3VtcHRpb25zLCBhc3N1bXB0aW9ucywgY29udGV4dCwgYmFjayk7XG4gICAgICB9LCBiYWNrKTtcbiAgICB9LCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKTtcbiAgfVxuXG4gIHVuaWZ5SW1wbGljaXRBc3N1bXB0aW9uKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjaykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAgLy8vXG4gICAgICAgICAgaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nID0gaW1wbGljaXRBc3N1bXB0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2ltcGxpY2l0QXNzdW1wdGlvblN0cmluZ30nIGltcGxpY2l0IGFzc3VtcHRpb24gd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRDb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCksIC8vL1xuICAgICAgICAgIGltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQgPSBpbXBsaWNpdEFzc3VtcHRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gY29uc3RyYWludENvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGltcGxpY2l0QXNzdW1wdGlvbkNvbnRleHQ7ICAvLy9cblxuICAgIHJldHVybiBqb2luKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBpbXBsaWNpdEFzc3VtcHRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgYmFjaykgPT4ge1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmd9JyBpbXBsaWNpdCBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICAgICAgICByZXR1cm4gZm9yd2FyZChjb250ZXh0LCBiYWNrKTtcbiAgICAgICAgfSwgYmFjayk7XG4gICAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCwgY29udGV4dCk7XG4gIH1cblxuICB1bmlmeUltcGxpY2l0QXNzdW1wdGlvbnMoaW1wbGljaXRBc3N1bXB0aW9ucywgYXNzdW1wdGlvbnMsIGNvbnRleHQsIGZvcndhcmQsIGJhY2spIHtcbiAgICByZXR1cm4gc29tZShpbXBsaWNpdEFzc3VtcHRpb25zLCAoaW1wbGljaXRBc3N1bXB0aW9uLCBjb250ZXh0LCBmb3J3YXJkLCBiYWNrKSA9PiB7XG4gICAgICB0aGlzLnVuaWZ5SW1wbGljaXRBc3N1bXB0aW9uKGltcGxpY2l0QXNzdW1wdGlvbiwgY29udGV4dCwgZm9yd2FyZCwgYmFjayk7XG4gICAgfSwgY29udGV4dCwgKGNvbnRleHQsIGJhY2spID0+IHtcbiAgICAgIHJldHVybiBmb3J3YXJkKGltcGxpY2l0QXNzdW1wdGlvbnMsIGFzc3VtcHRpb25zLCBjb250ZXh0LCBiYWNrKTtcbiAgICB9LCBiYWNrKTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJhaW50XCI7XG5cbiAgdG9KU09OKCkge1xuICAgIGxldCBqc29uO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmdcbiAgICAgIH07XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gaW5zdGFudGlhdGVDb25zdHJhaW50KHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBjb25zdHJhaW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gbnVsbCxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdHJhaW50ID0gbmV3IENvbnN0cmFpbnQoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGVwKHN0ZXAsIGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RyYWludDtcblxuICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IHJlZmVyZW5jZS5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIGFibGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gY29uc3RyYWludFN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gY29uc3RyYWludE5vZGUuZ2V0TWV0YXZhcmlhYmxlTm9kZSgpLFxuICAgICAgICBtZXRhdmFyaWFibGUgPSBjb250ZXh0LmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJjdXQiLCJhbGwiLCJzb21lIiwiZXhpc3RzIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiZGVmaW5lIiwiQ29uc3RyYWludCIsIkVsZW1lbnQiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImJyZWFrUG9pbnQiLCJzdGF0ZW1lbnQiLCJtZXRhdmFyaWFibGUiLCJnZXRTdGF0ZW1lbnQiLCJnZXRNZXRhdmFyaWFibGUiLCJnZXRDb25zdHJhaW50Tm9kZSIsImdldE5vZGUiLCJjb25zdHJhaW50Tm9kZSIsImlzRXF1YWxUbyIsImNvbnN0cmFpbnQiLCJjb25zdHJhaW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbnN0cmFpbnROb2RlIiwiZXF1YWxUbyIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwiZmluZENvbnN0cmFpbnQiLCJmaW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUiLCJ2ZXJpZnkiLCJmb3J3YXJkIiwiYmFjayIsImNvbnN0cmFpbnRTdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImlzb2xhdGUiLCJwYXJlIiwiZGVjbGFyZSIsInN0YXRlIiwidmFsaWRhdGUiLCJkZWJ1ZyIsImFwcGx5IiwiaW1wbGljaXRBc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zIiwiY29uc3RyYWluZ1N0cmluZyIsInVuaWZ5QXNzdW1wdGlvbnMiLCJiaW5kIiwidW5pZnlJbXBsaWNpdEFzc3VtcHRpb25zIiwiZXhjZXB0aW9uIiwiZ2V0Q29udGV4dCIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInZhbGlkYXRlTWV0YXZhcmFpYmxlIiwiY29tbWl0IiwiYWRkQ29uc3RyYWludCIsInVuaWZ5TGluayIsImxpbmsiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsImxpbmtTdHJpbmciLCJyZWNvbmNpbGUiLCJ1bmlmeU1ldGF2YXJpYWJsZSIsInVuaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnQiLCJ1bmlmeUFzc3VtcHRpb24iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsImdldExpbmsiLCJ1bmlmeUltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvbiIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsImNvbnN0cmFpbnRDb250ZXh0IiwiaW1wbGljaXRBc3N1bXB0aW9uQ29udGV4dCIsImpvaW4iLCJuYW1lIiwidG9KU09OIiwianNvbiIsInNlcmlhbGlzZSIsImZyb21KU09OIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlQ29uc3RyYWludCIsInN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZSIsIm1ldGF2YXJpYWJsZUZyb21Db25zdHJhaW50Tm9kZSIsImZyb21TdGVwIiwic3RlcCIsInJlZmVyZW5jZSIsImdldFJlZmVyZW5jZSIsImFibGF0ZSIsImNvbnN0cmFpbnRTdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwiY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBZUE7OztlQUFBOzs7Z0NBYm9FOzBCQUU3Qzt1QkFDQzs2QkFDYzswQkFDSzt5QkFDRTt3QkFDZ0I7eUJBQ3dDO0FBRXJHLE1B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