occam-nominal 1.0.310 → 1.0.317
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/liminal.js +17 -15
- package/lib/context/phaneric.js +3 -3
- package/lib/context.js +3 -3
- package/lib/element/assertion/contained.js +19 -17
- package/lib/element/assertion/defined.js +16 -14
- package/lib/element/conclusion.js +10 -11
- package/lib/element/declaration/variable.js +2 -2
- package/lib/element/deduction.js +7 -7
- package/lib/element/equality.js +3 -3
- package/lib/element/frame.js +8 -3
- package/lib/element/goal.js +7 -8
- package/lib/element/judgement.js +8 -10
- package/lib/element/metavariable.js +44 -40
- package/lib/element/proof.js +2 -2
- package/lib/element/proofAssertion/premise.js +17 -21
- package/lib/element/proofAssertion/step.js +5 -5
- package/lib/element/proofAssertion/supposition.js +39 -35
- package/lib/element/rule.js +24 -22
- package/lib/element/statement.js +56 -32
- package/lib/element/substitution/frame.js +71 -62
- package/lib/element/substitution/reference.js +21 -21
- package/lib/element/substitution/statement.js +81 -98
- package/lib/element/substitution/term.js +76 -67
- package/lib/element/substitution.js +5 -5
- package/lib/element/term.js +2 -2
- package/lib/element/topLevelAssertion/axiom.js +4 -5
- package/lib/element/topLevelAssertion/conjecture.js +3 -3
- package/lib/element/topLevelAssertion/lemma.js +3 -3
- package/lib/element/topLevelAssertion/theorem.js +3 -3
- package/lib/element/topLevelAssertion.js +59 -69
- package/lib/node/metavariable.js +18 -1
- package/lib/process/unify.js +5 -7
- package/lib/process/validation.js +5 -2
- package/lib/utilities/element.js +34 -56
- package/package.json +2 -2
- package/src/context/liminal.js +18 -16
- package/src/context/phaneric.js +3 -3
- package/src/context.js +2 -2
- package/src/element/assertion/contained.js +19 -18
- package/src/element/assertion/defined.js +16 -16
- package/src/element/conclusion.js +9 -11
- package/src/element/declaration/variable.js +1 -1
- package/src/element/deduction.js +6 -6
- package/src/element/equality.js +2 -2
- package/src/element/frame.js +10 -2
- package/src/element/goal.js +6 -8
- package/src/element/judgement.js +7 -11
- package/src/element/metavariable.js +56 -52
- package/src/element/proof.js +1 -1
- package/src/element/proofAssertion/premise.js +17 -25
- package/src/element/proofAssertion/step.js +4 -4
- package/src/element/proofAssertion/supposition.js +44 -43
- package/src/element/rule.js +27 -25
- package/src/element/statement.js +71 -41
- package/src/element/substitution/frame.js +88 -82
- package/src/element/substitution/reference.js +30 -32
- package/src/element/substitution/statement.js +97 -132
- package/src/element/substitution/term.js +95 -89
- package/src/element/substitution.js +6 -6
- package/src/element/term.js +1 -1
- package/src/element/topLevelAssertion/axiom.js +3 -5
- package/src/element/topLevelAssertion/conjecture.js +2 -2
- package/src/element/topLevelAssertion/lemma.js +2 -2
- package/src/element/topLevelAssertion/theorem.js +2 -2
- package/src/element/topLevelAssertion.js +61 -80
- package/src/node/metavariable.js +28 -1
- package/src/process/unify.js +7 -16
- package/src/process/validation.js +5 -4
- package/src/utilities/element.js +49 -64
|
@@ -33,16 +33,15 @@ const _default = (0, _elements.define)(class Axiom extends _topLevelAssertion.de
|
|
|
33
33
|
const signatureVerifies = this.verifySignature(context);
|
|
34
34
|
if (signatureVerifies) {
|
|
35
35
|
const verifies = false;
|
|
36
|
-
continuation(verifies);
|
|
37
|
-
return;
|
|
36
|
+
return continuation(verifies);
|
|
38
37
|
}
|
|
39
|
-
this.verifyEx(context, (verifies)=>{
|
|
38
|
+
return this.verifyEx(context, (verifies)=>{
|
|
40
39
|
if (verifies) {
|
|
41
40
|
const axiom = this; ///
|
|
42
41
|
context.addAxiom(axiom);
|
|
43
42
|
context.debug(`...verified the '${axiomString}' axiom.`);
|
|
44
43
|
}
|
|
45
|
-
continuation(verifies);
|
|
44
|
+
return continuation(verifies);
|
|
46
45
|
});
|
|
47
46
|
});
|
|
48
47
|
verifySignature(context) {
|
|
@@ -157,4 +156,4 @@ const _default = (0, _elements.define)(class Axiom extends _topLevelAssertion.de
|
|
|
157
156
|
}
|
|
158
157
|
});
|
|
159
158
|
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBUb3BMZXZlbEFzc2VydGlvbiBmcm9tIFwiLi4vdG9wTGV2ZWxBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBeGlvbSBleHRlbmRzIFRvcExldmVsQXNzZXJ0aW9uIHtcbiAgZ2V0QXhpb21Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBheGlvbU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBheGlvbU5vZGU7XG4gIH1cblxuICBpc1NhdGlzZmlhYmxlKCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCksXG4gICAgICAgICAgc2F0aXNmaWFibGUgPSAoc2lnbmF0dXJlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzYXRpc2ZpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVNpZ25hdHVyZShjb250ZXh0KTtcblxuICAgIGlmIChzaWduYXR1cmVWZXJpZmllcykge1xuICAgICAgY29uc3QgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgY29udGludWF0aW9uKHZlcmlmaWVzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudmVyaWZ5RXgoY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3QgYXhpb20gPSB0aGlzOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEF4aW9tKGF4aW9tKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcbiAgICAgIH1cblxuICAgICAgY29udGludWF0aW9uKHZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmVyaWZ5U2lnbmF0dXJlKGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVmVyaWZpZXM7XG5cbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IHRoaXMuaXNTYXRpc2ZpYWJsZSgpO1xuXG4gICAgaWYgKHNhdGlzZmlhYmxlKSB7XG4gICAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyBzaWduYXR1cmUuLi5gKTtcblxuICAgICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKTtcblxuICAgICAgc2lnbmF0dXJlVmVyaWZpZXMgPSBzaWduYXR1cmUudmVyaWZ5KGNvbnRleHQpO1xuXG4gICAgICBpZiAoc2lnbmF0dXJlVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyBzaWduYXR1cmUuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpZ25hdHVyZVZlcmlmaWVzID0gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVWZXJpZmllcztcbiAgfVxuXG4gIHVuaWZ5U2lnbmF0dXJlKHNpZ25hdHVyZSwgY29udGV4dCkge1xuICAgIGxldCBzaWduYXR1cmVVbmlmaWVzO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSBzaWduYXR1cmUuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uLi5gKTtcblxuICAgIGNvbnN0IHNwZWNpZmljU2lnbmF0dXJlID0gc2lnbmF0dXJlOyAgLy8vXG5cbiAgICBzaWduYXR1cmUgPSB0aGlzLmdldFNpZ25hdHVyZSgpO1xuXG4gICAgY29uc3QgZ2VuZXJhbFNpZ25hdHVyZSA9IHNpZ25hdHVyZTsgLy8vXG5cbiAgICBzaWduYXR1cmVVbmlmaWVzID0gZ2VuZXJhbFNpZ25hdHVyZS51bmlmeVNpZ25hdHVyZShzcGVjaWZpY1NpZ25hdHVyZSwgY29udGV4dCk7XG5cbiAgICBpZiAoc2lnbmF0dXJlVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c2lnbmF0dXJlU3RyaW5nfScgc2lnbmF0dXJlIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVVuaWZpZXM7XG4gIH1cblxuICB1bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZGVkdWN0aW9uVW5pZmllcztcblxuICAgIHRoaXMuYnJlYWsoY29udGV4dCk7XG5cbiAgICBjb25zdCBheGlvbVN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb24gPSB0aGlzLmRlZHVjdGlvbiwgIC8vL1xuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uID0gZGVkdWN0aW9uLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbERlZHVjdGlvblN0cmluZyA9IGdlbmVyYWxEZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmcgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY0RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3MgJyR7Z2VuZXJhbERlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBnZW5lcmFsRGVkdWN0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0OyAvLy9cblxuICAgIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgICBzdGF0ZW1lbnQgPSBzcGVjaWZpY0RlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgY29uc3Qgc3BlY2lmaWNTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgICAgc3RhdGVtZW50ID0gZ2VuZXJhbERlZHVjdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudCA9IHN0YXRlbWVudCwgLy8vXG4gICAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gZ2VuZXJhbFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzcGVjaWZpY1N0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgZGVkdWN0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzcGVjaWZpY0RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3MgJyR7Z2VuZXJhbERlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVkdWN0aW9uVW5pZmllcztcbiAgfVxuXG4gIHVuaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGluZGV4LCBjb250ZXh0KSB7XG4gICAgbGV0IHN1cHBvc2l0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3BlY2lmaWNTdXBwb3NpdGlvbiA9IHN1cHBvc2l0aW9uOyAgLy8vXG5cbiAgICBzdXBwb3NpdGlvbiA9IHRoaXMuZ2V0U3VwcG9zaXRpb24oaW5kZXgpO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsU3VwcG9zaXRpb24gPSBzdXBwb3NpdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nID0gc3BlY2lmaWNTdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzcGVjaWZpY1N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzICcke2dlbmVyYWxTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0ID0gZ2VuZXJhbFN1cHBvc2l0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBzcGVjaWZpY1N1cHBvc2l0aW9uQ29udGV4dCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZ2VuZXJhbFN1cHBvc2l0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQ7IC8vL1xuXG4gICAgcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICAgIHN0YXRlbWVudCA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIGNvbnN0IHNwZWNpZmljU3RhdGVtZW50ID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICAgIHN0YXRlbWVudCA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRTdGF0ZW1lbnQoKTtcblxuICAgICAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudCA9IHN0YXRlbWVudCwgLy8vXG4gICAgICAgICAgICBzdGF0ZW1lbnRVbmlmaWVzID0gZ2VuZXJhbFN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzcGVjaWZpY1N0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN1cHBvc2l0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBwb3NpdGlvblVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMsIGNvbnRleHQpIHtcbiAgICBsZXQgc3VwcG9zaXRpb25zVW5pZnk7XG5cbiAgICBjb25zdCBzcGVjaWZpY1N1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gICAgc3VwcG9zaXRpb25zID0gdGhpcy5nZXRTdXBwb3NpdGlvbnMoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7IC8vL1xuXG4gICAgc3VwcG9zaXRpb25zVW5pZnkgPSBtYXRjaChnZW5lcmFsU3VwcG9zaXRpb25zLCBzcGVjaWZpY1N1cHBvc2l0aW9ucywgKGdlbmVyYWxTdXBwb3NpdGlvbiwgc3BlY2lmaWNTdXBwb3NpdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uID0gc3BlY2lmaWNTdXBwb3NpdGlvbiwgIC8vL1xuICAgICAgICAgICAgc3VwcG9zaXRpb25VbmlmaWVzID0gdGhpcy51bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBpbmRleCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25zVW5pZnk7XG4gIH1cblxuICB1bmlmeVRvcExldmVsQXNzZXJ0aW9uKHRvcExldmVsQXNzZXJ0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHRvcExldmVsQXNzZXJ0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICBjb25zdCBkZWR1Y3Rpb24gPSB0b3BMZXZlbEFzc2VydGlvbi5nZXREZWR1Y3Rpb24oKSxcbiAgICAgICAgICBkZWR1Y3Rpb25VbmlmaWVzID0gdGhpcy51bmlmeURlZHVjdGlvbihkZWR1Y3Rpb24sIGNvbnRleHQpO1xuXG4gICAgaWYgKGRlZHVjdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnN0IGh5cG90aGVzZXNEaXNjaGFyZ2VzID0gdG9wTGV2ZWxBc3NlcnRpb24uZGlzY2hhcmdlSHlwb3RoZXNlcyhjb250ZXh0KTtcblxuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgIGNvbnN0IHN1cHBvc2l0aW9ucyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN1cHBvc2l0aW9ucygpLFxuICAgICAgICAgICAgICBzdXBwb3NpdGlvbnNVbmlmeSA9IHRoaXMudW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3VwcG9zaXRpb25zVW5pZnkpIHtcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvcExldmVsQXNzZXJ0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvcExldmVsQXNzZXJ0aW9uVW5pZmllcztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJBeGlvbVwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7IHJldHVybiBUb3BMZXZlbEFzc2VydGlvbi5mcm9tSlNPTihBeGlvbSwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbIm1hdGNoIiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWthYmxlIiwiYnJlYWtQb2ludFV0aWxpdGllcyIsImRlZmluZSIsIkF4aW9tIiwiVG9wTGV2ZWxBc3NlcnRpb24iLCJnZXRBeGlvbU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsImF4aW9tTm9kZSIsImlzU2F0aXNmaWFibGUiLCJzaWduYXR1cmUiLCJnZXRTaWduYXR1cmUiLCJzYXRpc2ZpYWJsZSIsInZlcmlmeSIsImNvbnRleHQiLCJjb250aW51YXRpb24iLCJheGlvbVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwic2lnbmF0dXJlVmVyaWZpZXMiLCJ2ZXJpZnlTaWduYXR1cmUiLCJ2ZXJpZmllcyIsInZlcmlmeUV4IiwiYXhpb20iLCJhZGRBeGlvbSIsImRlYnVnIiwidW5pZnlTaWduYXR1cmUiLCJzaWduYXR1cmVVbmlmaWVzIiwic2lnbmF0dXJlU3RyaW5nIiwic3BlY2lmaWNTaWduYXR1cmUiLCJnZW5lcmFsU2lnbmF0dXJlIiwidW5pZnlEZWR1Y3Rpb24iLCJkZWR1Y3Rpb24iLCJkZWR1Y3Rpb25VbmlmaWVzIiwiYnJlYWsiLCJnZW5lcmFsRGVkdWN0aW9uIiwic3BlY2lmaWNEZWR1Y3Rpb24iLCJnZW5lcmFsRGVkdWN0aW9uU3RyaW5nIiwic3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmciLCJnZW5lcmFsRGVkdWN0aW9uQ29udGV4dCIsImdldENvbnRleHQiLCJzcGVjaWZpY0RlZHVjdGlvbkNvbnRleHQiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInJlY29uY2lsZSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsInNwZWNpZmljU3RhdGVtZW50IiwiZ2VuZXJhbFN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeVN0YXRlbWVudCIsImNvbW1pdCIsInVuaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb25VbmlmaWVzIiwic3BlY2lmaWNTdXBwb3NpdGlvbiIsImdldFN1cHBvc2l0aW9uIiwiZ2VuZXJhbFN1cHBvc2l0aW9uIiwiZ2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nIiwic3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZyIsImdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQiLCJzcGVjaWZpY1N1cHBvc2l0aW9uQ29udGV4dCIsInVuaWZ5U3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zIiwic3VwcG9zaXRpb25zVW5pZnkiLCJzcGVjaWZpY1N1cHBvc2l0aW9ucyIsImdldFN1cHBvc2l0aW9ucyIsImdlbmVyYWxTdXBwb3NpdGlvbnMiLCJ1bmlmeVRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb24iLCJ0b3BMZXZlbEFzc2VydGlvblVuaWZpZXMiLCJ0b3BMZXZlbEFzc2VydGlvblN0cmluZyIsImdldERlZHVjdGlvbiIsImh5cG90aGVzZXNEaXNjaGFyZ2VzIiwiZGlzY2hh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
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uL2F4aW9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzLCBjb250aW51YXRpb25VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBUb3BMZXZlbEFzc2VydGlvbiBmcm9tIFwiLi4vdG9wTGV2ZWxBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyByZWNvbmNpbGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBtYXRjaCB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha2FibGUgfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBBeGlvbSBleHRlbmRzIFRvcExldmVsQXNzZXJ0aW9uIHtcbiAgZ2V0QXhpb21Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBheGlvbU5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBheGlvbU5vZGU7XG4gIH1cblxuICBpc1NhdGlzZmlhYmxlKCkge1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCksXG4gICAgICAgICAgc2F0aXNmaWFibGUgPSAoc2lnbmF0dXJlICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzYXRpc2ZpYWJsZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgY29uc3Qgc2lnbmF0dXJlVmVyaWZpZXMgPSB0aGlzLnZlcmlmeVNpZ25hdHVyZShjb250ZXh0KTtcblxuICAgIGlmIChzaWduYXR1cmVWZXJpZmllcykge1xuICAgICAgY29uc3QgdmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmVyaWZ5RXgoY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3QgYXhpb20gPSB0aGlzOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZEF4aW9tKGF4aW9tKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHZlcmlmeVNpZ25hdHVyZShjb250ZXh0KSB7XG4gICAgbGV0IHNpZ25hdHVyZVZlcmlmaWVzO1xuXG4gICAgY29uc3Qgc2F0aXNmaWFibGUgPSB0aGlzLmlzU2F0aXNmaWFibGUoKTtcblxuICAgIGlmIChzYXRpc2ZpYWJsZSkge1xuICAgICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3Mgc2lnbmF0dXJlLi4uYCk7XG5cbiAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZ2V0U2lnbmF0dXJlKCk7XG5cbiAgICAgIHNpZ25hdHVyZVZlcmlmaWVzID0gc2lnbmF0dXJlLnZlcmlmeShjb250ZXh0KTtcblxuICAgICAgaWYgKHNpZ25hdHVyZVZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZlcmlmaWVkIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3Mgc2lnbmF0dXJlLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzaWduYXR1cmVWZXJpZmllcyA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlVmVyaWZpZXM7XG4gIH1cblxuICB1bmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIGNvbnRleHQpIHtcbiAgICBsZXQgc2lnbmF0dXJlVW5pZmllcztcblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gc2lnbmF0dXJlLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLi4uYCk7XG5cbiAgICBjb25zdCBzcGVjaWZpY1NpZ25hdHVyZSA9IHNpZ25hdHVyZTsgIC8vL1xuXG4gICAgc2lnbmF0dXJlID0gdGhpcy5nZXRTaWduYXR1cmUoKTtcblxuICAgIGNvbnN0IGdlbmVyYWxTaWduYXR1cmUgPSBzaWduYXR1cmU7IC8vL1xuXG4gICAgc2lnbmF0dXJlVW5pZmllcyA9IGdlbmVyYWxTaWduYXR1cmUudW5pZnlTaWduYXR1cmUoc3BlY2lmaWNTaWduYXR1cmUsIGNvbnRleHQpO1xuXG4gICAgaWYgKHNpZ25hdHVyZVVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NpZ25hdHVyZVN0cmluZ30nIHNpZ25hdHVyZSB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuICAgIH1cblxuICAgIHJldHVybiBzaWduYXR1cmVVbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IGRlZHVjdGlvblVuaWZpZXM7XG5cbiAgICB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgYXhpb21TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsRGVkdWN0aW9uID0gdGhpcy5kZWR1Y3Rpb24sICAvLy9cbiAgICAgICAgICBzcGVjaWZpY0RlZHVjdGlvbiA9IGRlZHVjdGlvbiwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxEZWR1Y3Rpb25TdHJpbmcgPSBnZW5lcmFsRGVkdWN0aW9uLmdldFN0cmluZygpLFxuICAgICAgICAgIHNwZWNpZmljRGVkdWN0aW9uU3RyaW5nID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzICcke2dlbmVyYWxEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IGdlbmVyYWxEZWR1Y3Rpb25Db250ZXh0ID0gZ2VuZXJhbERlZHVjdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0ID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHNwZWNpZmljRGVkdWN0aW9uQ29udGV4dDsgLy8vXG5cbiAgICByZWNvbmNpbGUoKHNwZWNpZmljQ29udGV4dCkgPT4ge1xuICAgICAgbGV0IHN0YXRlbWVudDtcblxuICAgICAgc3RhdGVtZW50ID0gc3BlY2lmaWNEZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIGNvbnN0IHNwZWNpZmljU3RhdGVtZW50ID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICAgIHN0YXRlbWVudCA9IGdlbmVyYWxEZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IGdlbmVyYWxTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIGRlZHVjdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICBpZiAoZGVkdWN0aW9uVW5pZmllcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3BlY2lmaWNEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbSdzICcke2dlbmVyYWxEZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZHVjdGlvblVuaWZpZXM7XG4gIH1cblxuICB1bmlmeVN1cHBvc2l0aW9uKHN1cHBvc2l0aW9uLCBpbmRleCwgY29udGV4dCkge1xuICAgIGxldCBzdXBwb3NpdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHNwZWNpZmljU3VwcG9zaXRpb24gPSBzdXBwb3NpdGlvbjsgIC8vL1xuXG4gICAgc3VwcG9zaXRpb24gPSB0aGlzLmdldFN1cHBvc2l0aW9uKGluZGV4KTtcblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgZ2VuZXJhbFN1cHBvc2l0aW9uID0gc3VwcG9zaXRpb24sICAvLy9cbiAgICAgICAgICBnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmcgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZyA9IHNwZWNpZmljU3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3BlY2lmaWNTdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uIHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYXhpb20ncyAnJHtnZW5lcmFsU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbFN1cHBvc2l0aW9uQ29udGV4dCA9IGdlbmVyYWxTdXBwb3NpdGlvbi5nZXRDb250ZXh0KCksXG4gICAgICAgICAgc3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldENvbnRleHQoKSxcbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGdlbmVyYWxTdXBwb3NpdGlvbkNvbnRleHQsIC8vL1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IHNwZWNpZmljU3VwcG9zaXRpb25Db250ZXh0OyAvLy9cblxuICAgIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgICBzdGF0ZW1lbnQgPSBzcGVjaWZpY1N1cHBvc2l0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICBjb25zdCBzcGVjaWZpY1N0YXRlbWVudCA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAgICBzdGF0ZW1lbnQgPSBnZW5lcmFsU3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIGNvbnN0IGdlbmVyYWxTdGF0ZW1lbnQgPSBzdGF0ZW1lbnQsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50VW5pZmllcyA9IGdlbmVyYWxTdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICBzcGVjaWZpY0NvbnRleHQuY29tbWl0KGNvbnRleHQpO1xuXG4gICAgICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgIGlmIChzdXBwb3NpdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3NwZWNpZmljU3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tJ3MgJyR7Z2VuZXJhbFN1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlTdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1cHBvc2l0aW9uc1VuaWZ5O1xuXG4gICAgY29uc3Qgc3BlY2lmaWNTdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7ICAvLy9cblxuICAgIHN1cHBvc2l0aW9ucyA9IHRoaXMuZ2V0U3VwcG9zaXRpb25zKCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zOyAvLy9cblxuICAgIHN1cHBvc2l0aW9uc1VuaWZ5ID0gbWF0Y2goZ2VuZXJhbFN1cHBvc2l0aW9ucywgc3BlY2lmaWNTdXBwb3NpdGlvbnMsIChnZW5lcmFsU3VwcG9zaXRpb24sIHNwZWNpZmljU3VwcG9zaXRpb24sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHNwZWNpZmljU3VwcG9zaXRpb24sICAvLy9cbiAgICAgICAgICAgIHN1cHBvc2l0aW9uVW5pZmllcyA9IHRoaXMudW5pZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgaW5kZXgsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1VuaWZ5O1xuICB9XG5cbiAgdW5pZnlUb3BMZXZlbEFzc2VydGlvbih0b3BMZXZlbEFzc2VydGlvbiwgY29udGV4dCkge1xuICAgIGxldCB0b3BMZXZlbEFzc2VydGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGF4aW9tU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSwgLy8vXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0b3BMZXZlbEFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24gd2l0aCB0aGUgJyR7YXhpb21TdHJpbmd9JyBheGlvbS4uLmApO1xuXG4gICAgY29uc3QgZGVkdWN0aW9uID0gdG9wTGV2ZWxBc3NlcnRpb24uZ2V0RGVkdWN0aW9uKCksXG4gICAgICAgICAgZGVkdWN0aW9uVW5pZmllcyA9IHRoaXMudW5pZnlEZWR1Y3Rpb24oZGVkdWN0aW9uLCBjb250ZXh0KTtcblxuICAgIGlmIChkZWR1Y3Rpb25VbmlmaWVzKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlcyA9IHRvcExldmVsQXNzZXJ0aW9uLmRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCk7XG5cbiAgICAgIGlmIChoeXBvdGhlc2VzRGlzY2hhcmdlcykge1xuICAgICAgICBjb25zdCBzdXBwb3NpdGlvbnMgPSB0b3BMZXZlbEFzc2VydGlvbi5nZXRTdXBwb3NpdGlvbnMoKSxcbiAgICAgICAgICAgICAgc3VwcG9zaXRpb25zVW5pZnkgPSB0aGlzLnVuaWZ5U3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN1cHBvc2l0aW9uc1VuaWZ5KSB7XG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25VbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b3BMZXZlbEFzc2VydGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtheGlvbVN0cmluZ30nIGF4aW9tLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0b3BMZXZlbEFzc2VydGlvblVuaWZpZXM7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiQXhpb21cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkgeyByZXR1cm4gVG9wTGV2ZWxBc3NlcnRpb24uZnJvbUpTT04oQXhpb20sIGpzb24sIGNvbnRleHQpOyB9XG59KTtcbiJdLCJuYW1lcyI6WyJtYXRjaCIsImNvbnRpbnVhdGlvblV0aWxpdGllcyIsImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJBeGlvbSIsIlRvcExldmVsQXNzZXJ0aW9uIiwiZ2V0QXhpb21Ob2RlIiwibm9kZSIsImdldE5vZGUiLCJheGlvbU5vZGUiLCJpc1NhdGlzZmlhYmxlIiwic2lnbmF0dXJlIiwiZ2V0U2lnbmF0dXJlIiwic2F0aXNmaWFibGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiY29udGludWF0aW9uIiwiYXhpb21TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInNpZ25hdHVyZVZlcmlmaWVzIiwidmVyaWZ5U2lnbmF0dXJlIiwidmVyaWZpZXMiLCJ2ZXJpZnlFeCIsImF4aW9tIiwiYWRkQXhpb20iLCJkZWJ1ZyIsInVuaWZ5U2lnbmF0dXJlIiwic2lnbmF0dXJlVW5pZmllcyIsInNpZ25hdHVyZVN0cmluZyIsInNwZWNpZmljU2lnbmF0dXJlIiwiZ2VuZXJhbFNpZ25hdHVyZSIsInVuaWZ5RGVkdWN0aW9uIiwiZGVkdWN0aW9uIiwiZGVkdWN0aW9uVW5pZmllcyIsImJyZWFrIiwiZ2VuZXJhbERlZHVjdGlvbiIsInNwZWNpZmljRGVkdWN0aW9uIiwiZ2VuZXJhbERlZHVjdGlvblN0cmluZyIsInNwZWNpZmljRGVkdWN0aW9uU3RyaW5nIiwiZ2VuZXJhbERlZHVjdGlvbkNvbnRleHQiLCJnZXRDb250ZXh0Iiwic3BlY2lmaWNEZWR1Y3Rpb25Db250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJzdGF0ZW1lbnQiLCJnZXRTdGF0ZW1lbnQiLCJzcGVjaWZpY1N0YXRlbWVudCIsImdlbmVyYWxTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwidW5pZnlTdGF0ZW1lbnQiLCJjb21taXQiLCJ1bmlmeVN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb24iLCJpbmRleCIsInN1cHBvc2l0aW9uVW5pZmllcyIsInNwZWNpZmljU3VwcG9zaXRpb24iLCJnZXRTdXBwb3NpdGlvbiIsImdlbmVyYWxTdXBwb3NpdGlvbiIsImdlbmVyYWxTdXBwb3NpdGlvblN0cmluZyIsInNwZWNpZmljU3VwcG9zaXRpb25TdHJpbmciLCJnZW5lcmFsU3VwcG9zaXRpb25Db250ZXh0Iiwic3BlY2lmaWNTdXBwb3NpdGlvbkNvbnRleHQiLCJ1bmlmeVN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1VuaWZ5Iiwic3BlY2lmaWNTdXBwb3NpdGlvbnMiLCJnZXRTdXBwb3NpdGlvbnMiLCJnZW5lcmFsU3VwcG9zaXRpb25zIiwidW5pZnlUb3BMZXZlbEFzc2VydGlvbiIsInRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25VbmlmaWVzIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJnZXREZWR1Y3Rpb24iLCJoeXBvdGhlc2VzRGlzY2hhcmdlcyIsImRp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
|
|
@@ -25,13 +25,13 @@ const _default = (0, _elements.define)(class Conjecture extends _topLevelAsserti
|
|
|
25
25
|
verify = breakable(function(context, continuation) {
|
|
26
26
|
const conjectureString = this.getString(); ///
|
|
27
27
|
context.trace(`Verifying the '${conjectureString}' conjecture...`);
|
|
28
|
-
this.verifyEx(context, (verifies)=>{
|
|
28
|
+
return this.verifyEx(context, (verifies)=>{
|
|
29
29
|
if (verifies) {
|
|
30
30
|
const conjecture = this; ///
|
|
31
31
|
context.addConjecture(conjecture);
|
|
32
32
|
context.debug(`...verified the '${conjectureString}' conjecture.`);
|
|
33
33
|
}
|
|
34
|
-
continuation(verifies);
|
|
34
|
+
return continuation(verifies);
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
static name = "Conjecture";
|
|
@@ -40,4 +40,4 @@ const _default = (0, _elements.define)(class Conjecture extends _topLevelAsserti
|
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uL2NvbmplY3R1cmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBUb3BMZXZlbEFzc2VydGlvbiBmcm9tIFwiLi4vdG9wTGV2ZWxBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgQ29uamVjdHVyZSBleHRlbmRzIFRvcExldmVsQXNzZXJ0aW9uIHtcbiAgZ2V0Q29uamVjdHVyZU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbmplY3R1cmVOb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmVOb2RlO1xuICB9XG5cbiAgdmVyaWZ5ID0gYnJlYWthYmxlKGZ1bmN0aW9uIChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb25qZWN0dXJlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtjb25qZWN0dXJlU3RyaW5nfScgY29uamVjdHVyZS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudmVyaWZ5RXgoY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3QgY29uamVjdHVyZSA9IHRoaXM7ICAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZENvbmplY3R1cmUoY29uamVjdHVyZSk7XG5cbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2NvbmplY3R1cmVTdHJpbmd9JyBjb25qZWN0dXJlLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbmplY3R1cmVcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkgeyByZXR1cm4gVG9wTGV2ZWxBc3NlcnRpb24uZnJvbUpTT04oQ29uamVjdHVyZSwganNvbiwgY29udGV4dCk7IH1cbn0pO1xuIl0sIm5hbWVzIjpbImJyZWFrYWJsZSIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25qZWN0dXJlIiwiVG9wTGV2ZWxBc3NlcnRpb24iLCJnZXRDb25qZWN0dXJlTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwiY29uamVjdHVyZU5vZGUiLCJ2ZXJpZnkiLCJjb250ZXh0IiwiY29udGludWF0aW9uIiwiY29uamVjdHVyZVN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZ5RXgiLCJ2ZXJpZmllcyIsImNvbmplY3R1cmUiLCJhZGRDb25qZWN0dXJlIiwiZGVidWciLCJuYW1lIiwiZnJvbUpTT04iLCJqc29uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQUE7OztnQ0FSb0M7MEVBRU47MEJBRVA7Ozs7OztBQUV2QixNQUFNLEVBQUVBLFNBQVMsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekMsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxtQkFBbUJDLDBCQUFpQjtJQUM5REMsb0JBQW9CO1FBQ2xCLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQyxpQkFBaUJGLE1BQU8sR0FBRztRQUVqQyxPQUFPRTtJQUNUO0lBRUFDLFNBQVNULFVBQVUsU0FBVVUsT0FBTyxFQUFFQyxZQUFZO1FBQ2hELE1BQU1DLG1CQUFtQixJQUFJLENBQUNDLFNBQVMsSUFBSyxHQUFHO1FBRS9DSCxRQUFRSSxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLGlCQUFpQixlQUFlLENBQUM7UUFFakUsT0FBTyxJQUFJLENBQUNHLFFBQVEsQ0FBQ0wsU0FBUyxDQUFDTTtZQUM3QixJQUFJQSxVQUFVO2dCQUNaLE1BQU1DLGFBQWEsSUFBSSxFQUFHLEdBQUc7Z0JBRTdCUCxRQUFRUSxhQUFhLENBQUNEO2dCQUV0QlAsUUFBUVMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVQLGlCQUFpQixhQUFhLENBQUM7WUFDbkU7WUFFQSxPQUFPRCxhQUFhSztRQUN0QjtJQUNGLEdBQUc7SUFFSCxPQUFPSSxPQUFPLGFBQWE7SUFFM0IsT0FBT0MsU0FBU0MsSUFBSSxFQUFFWixPQUFPLEVBQUU7UUFBRSxPQUFPTiwwQkFBaUIsQ0FBQ2lCLFFBQVEsQ0FBQ2xCLFlBQVltQixNQUFNWjtJQUFVO0FBQ2pHIn0=
|
|
@@ -25,16 +25,16 @@ const _default = (0, _elements.define)(class Lemma extends _topLevelAssertion.de
|
|
|
25
25
|
verify = breakable(function(context, continuation) {
|
|
26
26
|
const lemmaString = this.getString(); ///
|
|
27
27
|
lemmaString === null ? context.trace(`Verifying a lemma...`) : context.trace(`Verifying the '${lemmaString}' lemma...`);
|
|
28
|
-
this.verifyEx(context, (verifies)=>{
|
|
28
|
+
return this.verifyEx(context, (verifies)=>{
|
|
29
29
|
if (verifies) {
|
|
30
30
|
const lemma = this; ///
|
|
31
31
|
context.addLemma(lemma);
|
|
32
32
|
lemmaString === null ? context.debug(`...verified a lemma.`) : context.debug(`...verified the '${lemmaString}' lemma.`);
|
|
33
33
|
}
|
|
34
|
-
continuation(verifies);
|
|
34
|
+
return continuation(verifies);
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
static name = "Lemma";
|
|
38
38
|
});
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uL2xlbW1hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBicmVha1BvaW50VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuXG5pbXBvcnQgVG9wTGV2ZWxBc3NlcnRpb24gZnJvbSBcIi4uL3RvcExldmVsQXNzZXJ0aW9uXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi8uLi9lbGVtZW50c1wiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIExlbW1hIGV4dGVuZHMgVG9wTGV2ZWxBc3NlcnRpb24ge1xuICBnZXRMZW1tYU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGxlbW1hTm9kZSA9IG5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGxlbW1hTm9kZTtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgbGVtbWFTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIChsZW1tYVN0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIGEgbGVtbWEuLi5gKSA6XG4gICAgICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bGVtbWFTdHJpbmd9JyBsZW1tYS4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMudmVyaWZ5RXgoY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3QgbGVtbWEgPSB0aGlzOyAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZExlbW1hKGxlbW1hKTtcblxuICAgICAgICAobGVtbWFTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCBhIGxlbW1hLmApIDpcbiAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtsZW1tYVN0cmluZ30nIGxlbW1hLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgc3RhdGljIG5hbWUgPSBcIkxlbW1hXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiTGVtbWEiLCJUb3BMZXZlbEFzc2VydGlvbiIsImdldExlbW1hTm9kZSIsIm5vZGUiLCJnZXROb2RlIiwibGVtbWFOb2RlIiwidmVyaWZ5IiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsImxlbW1hU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2ZXJpZnlFeCIsInZlcmlmaWVzIiwibGVtbWEiLCJhZGRMZW1tYSIsImRlYnVnIiwibmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7Z0NBUm9DOzBFQUVOOzBCQUVQOzs7Ozs7QUFFdkIsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsY0FBY0MsMEJBQWlCO0lBQ3pEQyxlQUFlO1FBQ2IsTUFBTUMsT0FBTyxJQUFJLENBQUNDLE9BQU8sSUFDbkJDLFlBQVlGLE1BQU0sR0FBRztRQUUzQixPQUFPRTtJQUNUO0lBRUFDLFNBQVNULFVBQVUsU0FBVVUsT0FBTyxFQUFFQyxZQUFZO1FBQ2hELE1BQU1DLGNBQWMsSUFBSSxDQUFDQyxTQUFTLElBQUksR0FBRztRQUV4Q0QsZ0JBQWdCLE9BQ2ZGLFFBQVFJLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQ2xDSixRQUFRSSxLQUFLLENBQUMsQ0FBQyxlQUFlLEVBQUVGLFlBQVksVUFBVSxDQUFDO1FBRTNELE9BQU8sSUFBSSxDQUFDRyxRQUFRLENBQUNMLFNBQVMsQ0FBQ007WUFDN0IsSUFBSUEsVUFBVTtnQkFDWixNQUFNQyxRQUFRLElBQUksRUFBRSxHQUFHO2dCQUV2QlAsUUFBUVEsUUFBUSxDQUFDRDtnQkFFaEJMLGdCQUFnQixPQUNmRixRQUFRUyxLQUFLLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUNsQ1QsUUFBUVMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUVQLFlBQVksUUFBUSxDQUFDO1lBQzdEO1lBRUEsT0FBT0QsYUFBYUs7UUFDdEI7SUFDRixHQUFHO0lBRUgsT0FBT0ksT0FBTyxRQUFRO0FBQ3hCIn0=
|
|
@@ -25,13 +25,13 @@ const _default = (0, _elements.define)(class Theorem extends _topLevelAssertion.
|
|
|
25
25
|
verify = breakable(function(context, continuation) {
|
|
26
26
|
const theoremString = this.getString(); ///
|
|
27
27
|
context.trace(`Verifying the '${theoremString}' theorem...`);
|
|
28
|
-
this.verifyEx(context, (verifies)=>{
|
|
28
|
+
return this.verifyEx(context, (verifies)=>{
|
|
29
29
|
if (verifies) {
|
|
30
30
|
const theorem = this; ///
|
|
31
31
|
context.addTheorem(theorem);
|
|
32
32
|
context.debug(`...verified the '${theoremString}' theorem.`);
|
|
33
33
|
}
|
|
34
|
-
continuation(verifies);
|
|
34
|
+
return continuation(verifies);
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
static name = "Theorem";
|
|
@@ -40,4 +40,4 @@ const _default = (0, _elements.define)(class Theorem extends _topLevelAssertion.
|
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uL3RoZW9yZW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCBUb3BMZXZlbEFzc2VydGlvbiBmcm9tIFwiLi4vdG9wTGV2ZWxBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzXCI7XG5cbmNvbnN0IHsgYnJlYWthYmxlIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgVGhlb3JlbSBleHRlbmRzIFRvcExldmVsQXNzZXJ0aW9uIHtcbiAgZ2V0VGhvZXJlbU5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRoZW9yZW1Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gdGhlb3JlbU5vZGU7XG4gIH1cblxuICB2ZXJpZnkgPSBicmVha2FibGUoZnVuY3Rpb24gKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHRoZW9yZW1TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RoZW9yZW1TdHJpbmd9JyB0aGVvcmVtLi4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy52ZXJpZnlFeChjb250ZXh0LCAodmVyaWZpZXMpID0+IHtcbiAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICBjb25zdCB0aGVvcmVtID0gdGhpczsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRUaGVvcmVtKHRoZW9yZW0pO1xuXG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0aGVvcmVtU3RyaW5nfScgdGhlb3JlbS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHN0YXRpYyBuYW1lID0gXCJUaGVvcmVtXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHsgcmV0dXJuIFRvcExldmVsQXNzZXJ0aW9uLmZyb21KU09OKFRoZW9yZW0sIGpzb24sIGNvbnRleHQpOyB9XG59KTtcbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiVGhlb3JlbSIsIlRvcExldmVsQXNzZXJ0aW9uIiwiZ2V0VGhvZXJlbU5vZGUiLCJub2RlIiwiZ2V0Tm9kZSIsInRoZW9yZW1Ob2RlIiwidmVyaWZ5IiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsInRoZW9yZW1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmeUV4IiwidmVyaWZpZXMiLCJ0aGVvcmVtIiwiYWRkVGhlb3JlbSIsImRlYnVnIiwibmFtZSIsImZyb21KU09OIiwianNvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7Z0NBUm9DOzBFQUVOOzBCQUVQOzs7Ozs7QUFFdkIsTUFBTSxFQUFFQSxTQUFTLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpDLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsZ0JBQWdCQywwQkFBaUI7SUFDM0RDLGlCQUFpQjtRQUNmLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQyxjQUFjRixNQUFNLEdBQUc7UUFFN0IsT0FBT0U7SUFDVDtJQUVBQyxTQUFTVCxVQUFVLFNBQVVVLE9BQU8sRUFBRUMsWUFBWTtRQUNoRCxNQUFNQyxnQkFBZ0IsSUFBSSxDQUFDQyxTQUFTLElBQUssR0FBRztRQUU1Q0gsUUFBUUksS0FBSyxDQUFDLENBQUMsZUFBZSxFQUFFRixjQUFjLFlBQVksQ0FBQztRQUUzRCxPQUFPLElBQUksQ0FBQ0csUUFBUSxDQUFDTCxTQUFTLENBQUNNO1lBQzdCLElBQUlBLFVBQVU7Z0JBQ1osTUFBTUMsVUFBVSxJQUFJLEVBQUUsR0FBRztnQkFFekJQLFFBQVFRLFVBQVUsQ0FBQ0Q7Z0JBRW5CUCxRQUFRUyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRVAsY0FBYyxVQUFVLENBQUM7WUFDN0Q7WUFFQSxPQUFPRCxhQUFhSztRQUN0QjtJQUNGLEdBQUc7SUFFSCxPQUFPSSxPQUFPLFVBQVU7SUFFeEIsT0FBT0MsU0FBU0MsSUFBSSxFQUFFWixPQUFPLEVBQUU7UUFBRSxPQUFPTiwwQkFBaUIsQ0FBQ2lCLFFBQVEsQ0FBQ2xCLFNBQVNtQixNQUFNWjtJQUFVO0FBQzlGIn0=
|
|
@@ -72,7 +72,7 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
72
72
|
context.trace(`Verifying the '${topLevelAssertionString}' top level assertion...`);
|
|
73
73
|
(0, _context.enclose)((context)=>{
|
|
74
74
|
const verifyProof = this.verifyProof.bind(this), verifyLabels = this.verifyLabels.bind(this), verifyDeduction = this.verifyDeduction.bind(this), verifySuppositions = this.verifySuppositions.bind(this);
|
|
75
|
-
(0, _continuation.all)([
|
|
75
|
+
return (0, _continuation.all)([
|
|
76
76
|
verifyLabels,
|
|
77
77
|
verifySuppositions,
|
|
78
78
|
verifyDeduction,
|
|
@@ -81,7 +81,7 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
81
81
|
if (verifies) {
|
|
82
82
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion.`);
|
|
83
83
|
}
|
|
84
|
-
continuation(verifies);
|
|
84
|
+
return continuation(verifies);
|
|
85
85
|
});
|
|
86
86
|
}, context);
|
|
87
87
|
}
|
|
@@ -94,49 +94,48 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
94
94
|
if (labelsVerify) {
|
|
95
95
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's labels.`);
|
|
96
96
|
}
|
|
97
|
-
continuation(labelsVerify);
|
|
97
|
+
return continuation(labelsVerify);
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
100
|
verifyLabel(label, context, continuation) {
|
|
101
101
|
const labelString = label.getString(), topLevelAssertionString = this.getString(); ///
|
|
102
102
|
context.trace(`Verifying the '${topLevelAssertionString}' top level assertion's '${labelString}' label...`);
|
|
103
|
-
label.verify((labelVerifies)=>{
|
|
103
|
+
return label.verify((labelVerifies)=>{
|
|
104
104
|
if (labelVerifies) {
|
|
105
105
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's '${labelString}' label.`);
|
|
106
106
|
}
|
|
107
|
-
continuation(labelVerifies);
|
|
107
|
+
return continuation(labelVerifies);
|
|
108
108
|
});
|
|
109
109
|
}
|
|
110
110
|
verifyProof(context, continuation) {
|
|
111
111
|
if (this.proof === null) {
|
|
112
112
|
const proofVerifies = true; ///
|
|
113
|
-
continuation(proofVerifies);
|
|
114
|
-
return;
|
|
113
|
+
return continuation(proofVerifies);
|
|
115
114
|
}
|
|
116
115
|
const topLevelAssertionString = this.getString(); ///
|
|
117
116
|
context.trace(`Verifying the '${topLevelAssertionString}' top level assertion's proof...`);
|
|
118
117
|
const statement = this.deduction.getStatement();
|
|
119
|
-
this.proof.verify(statement, context, (proofVerifies)=>{
|
|
118
|
+
return this.proof.verify(statement, context, (proofVerifies)=>{
|
|
120
119
|
if (proofVerifies) {
|
|
121
120
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's proof.`);
|
|
122
121
|
}
|
|
123
|
-
continuation(proofVerifies);
|
|
122
|
+
return continuation(proofVerifies);
|
|
124
123
|
});
|
|
125
124
|
}
|
|
126
125
|
verifyDeduction(context, continuation) {
|
|
127
126
|
const deductionString = this.deduction.getString(), topLevelAssertionString = this.getString(); ///
|
|
128
127
|
context.trace(`Verifying the '${topLevelAssertionString}' top level assertion's '${deductionString}' deduction...`);
|
|
129
|
-
this.deduction.verify(context, (deductionVerifies)=>{
|
|
128
|
+
return this.deduction.verify(context, (deductionVerifies)=>{
|
|
130
129
|
if (deductionVerifies) {
|
|
131
130
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's '${deductionString}' deduction.`);
|
|
132
131
|
}
|
|
133
|
-
continuation(deductionVerifies);
|
|
132
|
+
return continuation(deductionVerifies);
|
|
134
133
|
});
|
|
135
134
|
}
|
|
136
135
|
verifySupposition(supposition, context, continuation) {
|
|
137
136
|
const suppositionString = supposition.getString(), topLevelAssertionString = this.getString(); ///
|
|
138
137
|
context.trace(`Verifying the '${topLevelAssertionString}' top level assertion's '${suppositionString}' supposition...`);
|
|
139
|
-
supposition.verify(context, (suppositionVerifies)=>{
|
|
138
|
+
return supposition.verify(context, (suppositionVerifies)=>{
|
|
140
139
|
if (suppositionVerifies) {
|
|
141
140
|
const subproofOrProofAssertion = supposition; ////
|
|
142
141
|
context.assignAssignments();
|
|
@@ -145,7 +144,7 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
145
144
|
if (suppositionVerifies) {
|
|
146
145
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's '${suppositionString}' supposition.`);
|
|
147
146
|
}
|
|
148
|
-
continuation(suppositionVerifies);
|
|
147
|
+
return continuation(suppositionVerifies);
|
|
149
148
|
});
|
|
150
149
|
}
|
|
151
150
|
verifySuppositions(context, continuation) {
|
|
@@ -157,7 +156,7 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
157
156
|
if (suppositionsVerify) {
|
|
158
157
|
context.debug(`...verified the '${topLevelAssertionString}' top level assertion's suppositions.`);
|
|
159
158
|
}
|
|
160
|
-
continuation(suppositionsVerify);
|
|
159
|
+
return continuation(suppositionsVerify);
|
|
161
160
|
});
|
|
162
161
|
}
|
|
163
162
|
dischargeHypothesis(hypothesis, context) {
|
|
@@ -172,78 +171,69 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
172
171
|
return hypothesisDischarges;
|
|
173
172
|
}
|
|
174
173
|
dischargeHypotheses(context) {
|
|
175
|
-
const hypotheses = this.getHypotheses(),
|
|
174
|
+
const hypotheses = this.getHypotheses(), hypothesesDischarge = every(hypotheses, (hypothesis)=>{
|
|
176
175
|
const hypothesisDischarges = this.dischargeHypothesis(hypothesis, context);
|
|
177
176
|
if (hypothesisDischarges) {
|
|
178
177
|
return true;
|
|
179
178
|
}
|
|
180
179
|
});
|
|
181
|
-
return
|
|
180
|
+
return hypothesesDischarge;
|
|
182
181
|
}
|
|
183
|
-
unifyStepWithDeduction(step, context) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
182
|
+
unifyStepWithDeduction(step, context, continuation) {
|
|
183
|
+
const ruleString = this.getString(), stepString = step.getString(), conclusionString = this.conclusion.getString();
|
|
184
|
+
context.trace(`Unifying the '${stepString}' step with the '${ruleString}' rule's '${conclusionString}' conclusion...`);
|
|
185
|
+
return this.conclusion.unifyStep(step, context, (stepUnifies)=>{
|
|
186
|
+
let stepUnifiesWithDeduction = false;
|
|
187
|
+
if (stepUnifies) {
|
|
188
|
+
stepUnifiesWithDeduction = true;
|
|
189
|
+
}
|
|
190
|
+
if (stepUnifiesWithDeduction) {
|
|
191
|
+
context.debug(`...unified the '${stepString}' step with the '${ruleString}' rule's '${conclusionString}' conclusion.`);
|
|
192
|
+
}
|
|
193
|
+
return continuation(stepUnifiesWithDeduction);
|
|
194
|
+
});
|
|
196
195
|
}
|
|
197
|
-
unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context) {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
196
|
+
unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context, continuation) {
|
|
197
|
+
return this.unifyStepWithDeduction(step, context, (statementUnifiesWithDeduction)=>{
|
|
198
|
+
if (!statementUnifiesWithDeduction) {
|
|
199
|
+
const stepAndSubproofOrProofAssertionsUnify = false;
|
|
200
|
+
return continuation(stepAndSubproofOrProofAssertionsUnify);
|
|
201
|
+
}
|
|
202
|
+
const hypothesesDischarge = this.dischargeHypotheses(context);
|
|
203
|
+
if (hypothesesDischarge) {
|
|
204
|
+
const stepAndSubproofOrProofAssertionsUnify = false;
|
|
205
|
+
return continuation(stepAndSubproofOrProofAssertionsUnify);
|
|
206
|
+
}
|
|
207
|
+
this.unifySubproofOrProofAssertionsWithSuppositions(subproofOrProofAssertions, context, (subproofOrProofAssertionsUnifiesWithSuppositions)=>{
|
|
208
|
+
let stepAndSubproofOrProofAssertionsUnify = false;
|
|
204
209
|
if (subproofOrProofAssertionsUnifiesWithSuppositions) {
|
|
205
210
|
const derivedSubstitutionsResolved = context.areDerivedSubstitutionsResolved();
|
|
206
211
|
if (derivedSubstitutionsResolved) {
|
|
207
212
|
stepAndSubproofOrProofAssertionsUnify = true;
|
|
208
213
|
}
|
|
209
214
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
215
|
+
return continuation(stepAndSubproofOrProofAssertionsUnify);
|
|
216
|
+
});
|
|
217
|
+
});
|
|
213
218
|
}
|
|
214
|
-
unifySubproofOrProofAssertionsWithSupposition(subproofOrProofAssertions, supposition, context) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
const subproofOrProofAssertion = extract(subproofOrProofAssertions, (subproofOrProofAssertion)=>{
|
|
219
|
-
const subproofOrProofAssertionUnifies = supposition.unifySubproofOrProofAssertion(subproofOrProofAssertion, context);
|
|
220
|
-
if (subproofOrProofAssertionUnifies) {
|
|
221
|
-
context.resolveDerivedSubstitutions();
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
}) || null;
|
|
219
|
+
unifySubproofOrProofAssertionsWithSupposition(subproofOrProofAssertions, supposition, context, continuation) {
|
|
220
|
+
return extract(subproofOrProofAssertions, (subproofOrProofAssertion, continuation)=>{
|
|
221
|
+
return supposition.unifySubproofOrProofAssertion(subproofOrProofAssertion, context, continuation);
|
|
222
|
+
}, (subproofOrProofAssertion = null)=>{
|
|
225
223
|
if (subproofOrProofAssertion !== null) {
|
|
226
|
-
subproofOrProofAssertionsUnifiesWithSupposition = true;
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
const suppositionUnifiesIndependently = supposition.unifyIndependently(context);
|
|
231
|
-
if (suppositionUnifiesIndependently) {
|
|
232
|
-
subproofOrProofAssertionsUnifiesWithSupposition = true;
|
|
224
|
+
const subproofOrProofAssertionsUnifiesWithSupposition = true;
|
|
225
|
+
return context.resolveDerivedSubstitutions(()=>{
|
|
226
|
+
return continuation(subproofOrProofAssertionsUnifiesWithSupposition);
|
|
227
|
+
});
|
|
233
228
|
}
|
|
234
|
-
|
|
235
|
-
|
|
229
|
+
return supposition.unifyIndependently(context, continuation);
|
|
230
|
+
});
|
|
236
231
|
}
|
|
237
|
-
unifySubproofOrProofAssertionsWithSuppositions(subproofOrProofAssertions, context) {
|
|
238
|
-
let subproofOrProofAssertionsUnifiesWithSuppositions;
|
|
232
|
+
unifySubproofOrProofAssertionsWithSuppositions(subproofOrProofAssertions, context, continuation) {
|
|
239
233
|
subproofOrProofAssertions = reverse(subproofOrProofAssertions); ///
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
return subproofOrProofAssertionsUnifiesWithSuppositions;
|
|
234
|
+
return backwardsEvery(this.suppositions, (supposition, continuation)=>{
|
|
235
|
+
return this.unifySubproofOrProofAssertionsWithSupposition(subproofOrProofAssertions, supposition, context, continuation);
|
|
236
|
+
}, continuation);
|
|
247
237
|
}
|
|
248
238
|
toJSON() {
|
|
249
239
|
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();
|
|
@@ -268,4 +258,4 @@ class TopLevelAssertion extends _occamlanguages.Element {
|
|
|
268
258
|
}
|
|
269
259
|
}
|
|
270
260
|
|
|
271
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgYWxsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGVuY2xvc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBsYWJlbHNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvbkZyb21KU09OLFxuICAgICAgICAgc2lnbmF0dXJlRnJvbUpTT04sXG4gICAgICAgICBsYWJlbHNUb0xhYmVsc0pTT04sXG4gICAgICAgICBoeXBvdGhlc2VzRnJvbUpTT04sXG4gICAgICAgICBzdXBwb3NpdGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTixcbiAgICAgICAgIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcmV2ZXJzZSB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb3BMZXZlbEFzc2VydGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICBhbGwoW1xuICAgICAgICB2ZXJpZnlMYWJlbHMsXG4gICAgICAgIHZlcmlmeVN1cHBvc2l0aW9ucyxcbiAgICAgICAgdmVyaWZ5RGVkdWN0aW9uLFxuICAgICAgICB2ZXJpZnlQcm9vZlxuICAgICAgXSwgY29udGV4dCwgKHZlcmlmaWVzKSA9PiB7XG4gICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2ZXJpZnlMYWJlbHMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIGxhYmVscy4uLmApO1xuXG4gICAgcmV0dXJuIGV2ZXJ5KHRoaXMubGFiZWxzLCAobGFiZWwsIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5TGFiZWwobGFiZWwsIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgKGxhYmVsc1ZlcmlmeSkgPT4ge1xuICAgICAgaWYgKGxhYmVsc1ZlcmlmeSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgbGFiZWxzLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24obGFiZWxzVmVyaWZ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIGxhYmVsLnZlcmlmeSgobGFiZWxWZXJpZmllcykgPT4ge1xuICAgICAgaWYgKGxhYmVsVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihsYWJlbFZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeVByb29mKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGlmICh0aGlzLnByb29mID09PSBudWxsKSB7XG4gICAgICBjb25zdCBwcm9vZlZlcmlmaWVzID0gdHJ1ZTsgLy8vXG5cbiAgICAgIGNvbnRpbnVhdGlvbihwcm9vZlZlcmlmaWVzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBwcm9vZi4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcy5kZWR1Y3Rpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICB0aGlzLnByb29mLnZlcmlmeShzdGF0ZW1lbnQsIGNvbnRleHQsIChwcm9vZlZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAocHJvb2ZWZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgcHJvb2YuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihwcm9vZlZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeURlZHVjdGlvbihjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHRoaXMuZGVkdWN0aW9uLnZlcmlmeShjb250ZXh0LCAoZGVkdWN0aW9uVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChkZWR1Y3Rpb25WZXJpZmllcykge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oZGVkdWN0aW9uVmVyaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke3N1cHBvc2l0aW9uU3RyaW5nfScgc3VwcG9zaXRpb24uLi5gKTtcblxuICAgIHN1cHBvc2l0aW9uLnZlcmlmeShjb250ZXh0LCAoc3VwcG9zaXRpb25WZXJpZmllcykgPT4ge1xuICAgICAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIGNvbnRleHQuYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3NpdGlvblZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24oc3VwcG9zaXRpb25WZXJpZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbnMoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzIHN1cHBvc2l0aW9ucy4uLmApO1xuXG4gICAgcmV0dXJuIGZvcndhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCAoc3VwcG9zaXRpb25zVmVyaWZ5KSA9PiB7XG4gICAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZ5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBzdXBwb3NpdGlvbnMuYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVhdGlvbihzdXBwb3NpdGlvbnNWZXJpZnkpO1xuICAgIH0pO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNpcyhoeXBvdGhlc2lzLCBjb250ZXh0KSB7XG4gICAgbGV0IGh5cG90aGVzaXNEaXNjaGFyZ2VzO1xuXG4gICAgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBEaXNjaGFyZGluZyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuLi5gKTtcblxuICAgIGh5cG90aGVzaXNEaXNjaGFyZ2VzID0gaHlwb3RoZXNpcy5kaXNjaGFyZ2UoY29udGV4dCk7XG5cbiAgICBpZiAoaHlwb3RoZXNpc0Rpc2NoYXJnZXMpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLmRpc2NoYXJnZXMgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2h5cG90aGVzaXNTdHJpbmd9JyBoeXBvdGhlc2lzLmApO1xuICAgIH1cblxuICAgIHJldHVybiBoeXBvdGhlc2lzRGlzY2hhcmdlcztcbiAgfVxuXG4gIGRpc2NoYXJnZUh5cG90aGVzZXMoY29udGV4dCkge1xuICAgIGNvbnN0IGh5cG90aGVzZXMgPSB0aGlzLmdldEh5cG90aGVzZXMoKSxcbiAgICAgICAgICBoeXBvdGhlc2VzRGlzY2hhcmdlcyA9IGV2ZXJ5KGh5cG90aGVzZXMsIChoeXBvdGhlc2lzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoeXBvdGhlc2lzRGlzY2hhcmdlcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNpcyhoeXBvdGhlc2lzLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKGh5cG90aGVzaXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNEaXNjaGFyZ2VzO1xuICB9XG5cbiAgdW5pZnlTdGVwV2l0aERlZHVjdGlvbihzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5icmVhayhjb250ZXh0KTtcblxuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwVW5pZmllcyA9IHRoaXMuZGVkdWN0aW9uLnVuaWZ5U3RlcChzdGVwLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGVwVW5pZmllcykge1xuICAgICAgc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBkZWR1Y3Rpb24uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbjtcbiAgfVxuXG4gIHVuaWZ5U3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RlcCwgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCkge1xuICAgIGxldCBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGVwVW5pZmllc1dpdGhEZWR1Y3Rpb24gPSB0aGlzLnVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCk7XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlcyA9IHRoaXMuZGlzY2hhcmdlSHlwb3RoZXNlcyhjb250ZXh0KTtcblxuICAgICAgaWYgKGh5cG90aGVzZXNEaXNjaGFyZ2VzKSB7XG4gICAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucyA9IHRoaXMudW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9ucyhzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCA9IGNvbnRleHQuYXJlRGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgIHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5O1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIHN1cHBvc2l0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgaWYgKCFzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbikge1xuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gZXh0cmFjdChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvblVuaWZpZXMgPSBzdXBwb3NpdGlvbi51bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbihzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgY29udGV4dC5yZXNvbHZlRGVyaXZlZFN1YnN0aXR1dGlvbnMoKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KSB8fCBudWxsO1xuXG4gICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uKSB7XG4gICAgICBjb25zdCBzdXBwb3NpdGlvblVuaWZpZXNJbmRlcGVuZGVudGx5ID0gc3VwcG9zaXRpb24udW5pZnlJbmRlcGVuZGVudGx5KGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3VwcG9zaXRpb25VbmlmaWVzSW5kZXBlbmRlbnRseSkge1xuICAgICAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9ucyhzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KSB7XG4gICAgbGV0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucztcblxuICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSByZXZlcnNlKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMpOyAvLy9cblxuICAgIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9ucyA9IGJhY2t3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gdGhpcy51bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgc3VwcG9zaXRpb24sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNXaXRoU3VwcG9zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHNUb0xhYmVsc0pTT04odGhpcy5sYWJlbHMpLFxuICAgICAgICAgIGRlZHVjdGlvbkpTT04gPSBkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04odGhpcy5kZWR1Y3Rpb24pLFxuICAgICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04odGhpcy5zdXBwb3NpdGlvbnMpLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04odGhpcy5zaWduYXR1cmUpLFxuICAgICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04odGhpcy5oeXBvdGhlc2VzKSxcbiAgICAgICAgICBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICBjb25zdCBsYWJlbHMgPSBsYWJlbHNKU09OLCAgLy8vXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04sICAvLy9cbiAgICAgICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNKU09OLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgIGJyZWFrUG9pbnQsXG4gICAgICAgICAgICBsYWJlbHMsXG4gICAgICAgICAgICBkZWR1Y3Rpb24sXG4gICAgICAgICAgICBzdXBwb3NpdGlvbnMsXG4gICAgICAgICAgICBzaWduYXR1cmUsXG4gICAgICAgICAgICBoeXBvdGhlc2VzXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKENsYXNzLCBqc29uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVkdWN0aW9uID0gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgaHlwb3RoZXNlcyA9IGh5cG90aGVzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHNpZ25hdHVyZSwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pLFxuICAgICAgICAgIHN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nLCAvLy9cbiAgICAgICAgICBub2RlID0gbnVsbCxcbiAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgIHByb29mID0gbnVsbCxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvbiA9IG5ldyBDbGFzcyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpO1xuXG4gICAgcmV0dXJuIHRvcExldmVsQXNzZXJ0aW9uO1xuICB9XG59XG4iXSwibmFtZXMiOlsiVG9wTGV2ZWxBc3NlcnRpb24iLCJyZXZlcnNlIiwiYXJyYXlVdGlsaXRpZXMiLCJldmVyeSIsImV4dHJhY3QiLCJmb3J3YXJkc0V2ZXJ5IiwiYmFja3dhcmRzRXZlcnkiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50IiwibGFiZWxzIiwic3VwcG9zaXRpb25zIiwiZGVkdWN0aW9uIiwicHJvb2YiLCJzaWduYXR1cmUiLCJoeXBvdGhlc2VzIiwiZ2V0TGFiZWxzIiwiZ2V0U3VwcG9zaXRpb25zIiwiZ2V0RGVkdWN0aW9uIiwiZ2V0UHJvb2YiLCJnZXRTaWduYXR1cmUiLCJnZXRIeXBvdGhlc2VzIiwic2V0SHlwb3RoZXNlcyIsImdldFN1cHBvc2l0aW9uIiwiaW5kZXgiLCJzdXBwb3NpdGlvbiIsImlzU2F0aXNmaWFibGUiLCJzYXRpc2ZpYWJsZSIsImlzSHlwb3RoZXRpY2FsIiwiaHlwb3RoZXNlc0xlbmd0aCIsImxlbmd0aCIsImh5cG90aGV0aWNhbCIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsInNvbWUiLCJsYWJlbCIsInZlcmlmeUV4IiwiY29udGludWF0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImVuY2xvc2UiLCJ2ZXJpZnlQcm9vZiIsImJpbmQiLCJ2ZXJpZnlMYWJlbHMiLCJ2ZXJpZnlEZWR1Y3Rpb24iLCJ2ZXJpZnlTdXBwb3NpdGlvbnMiLCJhbGwiLCJ2ZXJpZmllcyIsImRlYnVnIiwidmVyaWZ5TGFiZWwiLCJsYWJlbHNWZXJpZnkiLCJsYWJlbFN0cmluZyIsInZlcmlmeSIsImxhYmVsVmVyaWZpZXMiLCJwcm9vZlZlcmlmaWVzIiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZGVkdWN0aW9uU3RyaW5nIiwiZGVkdWN0aW9uVmVyaWZpZXMiLCJ2ZXJpZnlTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwic3VwcG9zaXRpb25WZXJpZmllcyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsImFzc2lnbkFzc2lnbm1lbnRzIiwiYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uIiwic3VwcG9zaXRpb25zVmVyaWZ5IiwiZGlzY2hhcmdlSHlwb3RoZXNpcyIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzRGlzY2hhcmdlcyIsImJyZWFrIiwiaHlwb3RoZXNpc1N0cmluZyIsImRpc2NoYXJnZSIsImRpc2NoYXJnZUh5cG90aGVzZXMiLCJoeXBvdGhlc2VzRGlzY2hhcmdlcyIsInVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24iLCJzdGVwIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwic3RlcFN0cmluZyIsInN0ZXBVbmlmaWVzIiwidW5pZnlTdGVwIiwidW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5Iiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zIiwidW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9ucyIsImRlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQiLCJhcmVEZXJpdmVkU3Vic3RpdHV0aW9uc1Jlc29sdmVkIiwidW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9uIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb24iLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25VbmlmaWVzIiwidW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJyZXNvbHZlRGVyaXZlZFN1YnN0aXR1dGlvbnMiLCJzdXBwb3NpdGlvblVuaWZpZXNJbmRlcGVuZGVudGx5IiwidW5pZnlJbmRlcGVuZGVudGx5Iiwic3RlcFVuaWZpZXNXaXRoU3VwcG9zaXRpb24iLCJ0b0pTT04iLCJsYWJlbHNKU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwiZGVkdWN0aW9uSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJzaWduYXR1cmVKU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwiaHlwb3RoZXNlc0pTT04iLCJoeXBvdGhlc2VzVG9IeXBvdGhlc2VzSlNPTiIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJmcm9tSlNPTiIsIkNsYXNzIiwibGFiZWxzRnJvbUpTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsInN1cHBvc2l0aW9uc0Zyb21KU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJoeXBvdGhlc2VzRnJvbUpTT04iLCJ0b3BMZXZlbEFzc2VydGlvblN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJ0b3BMZXZlbEFzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBdUJBOzs7ZUFBcUJBOzs7MkJBckJVO2dDQUNxQzs4QkFFaEQ7eUJBQ0k7d0JBQzJEO3NCQVVwQztBQUUvQyxNQUFNLEVBQUVDLE9BQU8sRUFBRSxHQUFHQyx5QkFBYyxFQUM1QixFQUFFQyxLQUFLLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxjQUFjLEVBQUUsR0FBR0MscUNBQXFCLEVBQ3pFLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7QUFFL0QsTUFBTVYsMEJBQTBCVyx1QkFBTztJQUNwRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsU0FBUyxFQUFFQyxVQUFVLENBQUU7UUFDNUcsS0FBSyxDQUFDVCxTQUFTQyxRQUFRQyxNQUFNQztRQUU3QixJQUFJLENBQUNDLE1BQU0sR0FBR0E7UUFDZCxJQUFJLENBQUNDLFlBQVksR0FBR0E7UUFDcEIsSUFBSSxDQUFDQyxTQUFTLEdBQUdBO1FBQ2pCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQTtRQUNiLElBQUksQ0FBQ0MsU0FBUyxH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
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3RvcExldmVsQXNzZXJ0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgYWxsIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250aW51YXRpb25cIjtcbmltcG9ydCB7IGVuY2xvc2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcbmltcG9ydCB7IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBsYWJlbHNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvbkZyb21KU09OLFxuICAgICAgICAgc2lnbmF0dXJlRnJvbUpTT04sXG4gICAgICAgICBsYWJlbHNUb0xhYmVsc0pTT04sXG4gICAgICAgICBoeXBvdGhlc2VzRnJvbUpTT04sXG4gICAgICAgICBzdXBwb3NpdGlvbnNGcm9tSlNPTixcbiAgICAgICAgIGRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTixcbiAgICAgICAgIHNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTixcbiAgICAgICAgIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OLFxuICAgICAgICAgc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9qc29uXCI7XG5cbmNvbnN0IHsgcmV2ZXJzZSB9ID0gYXJyYXlVdGlsaXRpZXMsXG4gICAgICB7IGV2ZXJ5LCBleHRyYWN0LCBmb3J3YXJkc0V2ZXJ5LCBiYWNrd2FyZHNFdmVyeSB9ID0gY29udGludWF0aW9uVXRpbGl0aWVzLFxuICAgICAgeyBicmVha1BvaW50RnJvbUpTT04sIGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OIH0gPSBicmVha1BvaW50VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb3BMZXZlbEFzc2VydGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIGxhYmVscywgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24sIHByb29mLCBzaWduYXR1cmUsIGh5cG90aGVzZXMpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5sYWJlbHMgPSBsYWJlbHM7XG4gICAgdGhpcy5zdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnM7XG4gICAgdGhpcy5kZWR1Y3Rpb24gPSBkZWR1Y3Rpb247XG4gICAgdGhpcy5wcm9vZiA9IHByb29mO1xuICAgIHRoaXMuc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuaHlwb3RoZXNlcyA9IGh5cG90aGVzZXM7XG4gIH1cblxuICBnZXRMYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLnN1cHBvc2l0aW9ucztcbiAgfVxuXG4gIGdldERlZHVjdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5kZWR1Y3Rpb247XG4gIH1cblxuICBnZXRQcm9vZigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9vZjtcbiAgfVxuXG4gIGdldFNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmU7XG4gIH1cblxuICBnZXRIeXBvdGhlc2VzKCkge1xuICAgIHJldHVybiB0aGlzLmh5cG90aGVzZXM7XG4gIH1cblxuICBzZXRIeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgICB0aGlzLmh5cG90aGVzZXMgPSBoeXBvdGhlc2VzO1xuICB9XG5cbiAgZ2V0U3VwcG9zaXRpb24oaW5kZXgpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IHRoaXMuc3VwcG9zaXRpb25zW2luZGV4XSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9XG5cbiAgaXNTYXRpc2ZpYWJsZSgpIHtcbiAgICBjb25zdCBzYXRpc2ZpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHNhdGlzZmlhYmxlO1xuICB9XG5cbiAgaXNIeXBvdGhldGljYWwoKSB7XG4gICAgY29uc3QgaHlwb3RoZXNlc0xlbmd0aCA9IHRoaXMuaHlwb3RoZXNlcy5sZW5ndGgsXG4gICAgICAgICAgaHlwb3RoZXRpY2FsID0gKGh5cG90aGVzZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBoeXBvdGhldGljYWw7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5sYWJlbHMuc29tZSgobGFiZWwpID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbGFiZWwubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG4gIH1cblxuICB2ZXJpZnlFeChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uLi5gKTtcblxuICAgIGVuY2xvc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHZlcmlmeVByb29mID0gdGhpcy52ZXJpZnlQcm9vZi5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgdmVyaWZ5TGFiZWxzID0gdGhpcy52ZXJpZnlMYWJlbHMuYmluZCh0aGlzKSxcbiAgICAgICAgICAgIHZlcmlmeURlZHVjdGlvbiA9IHRoaXMudmVyaWZ5RGVkdWN0aW9uLmJpbmQodGhpcyksXG4gICAgICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMgPSB0aGlzLnZlcmlmeVN1cHBvc2l0aW9ucy5iaW5kKHRoaXMpO1xuXG4gICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgdmVyaWZ5TGFiZWxzLFxuICAgICAgICB2ZXJpZnlTdXBwb3NpdGlvbnMsXG4gICAgICAgIHZlcmlmeURlZHVjdGlvbixcbiAgICAgICAgdmVyaWZ5UHJvb2ZcbiAgICAgIF0sIGNvbnRleHQsICh2ZXJpZmllcykgPT4ge1xuICAgICAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgICB9KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHZlcmlmeUxhYmVscyhjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgbGFiZWxzLi4uYCk7XG5cbiAgICByZXR1cm4gZXZlcnkodGhpcy5sYWJlbHMsIChsYWJlbCwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52ZXJpZnlMYWJlbChsYWJlbCwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCAobGFiZWxzVmVyaWZ5KSA9PiB7XG4gICAgICBpZiAobGFiZWxzVmVyaWZ5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBsYWJlbHMuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24obGFiZWxzVmVyaWZ5KTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeUxhYmVsKGxhYmVsLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2xhYmVsU3RyaW5nfScgbGFiZWwuLi5gKTtcblxuICAgIHJldHVybiBsYWJlbC52ZXJpZnkoKGxhYmVsVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChsYWJlbFZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtsYWJlbFN0cmluZ30nIGxhYmVsLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGxhYmVsVmVyaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5UHJvb2YoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgaWYgKHRoaXMucHJvb2YgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb29mVmVyaWZpZXMgPSB0cnVlOyAvLy9cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihwcm9vZlZlcmlmaWVzKTtcbiAgICB9XG5cbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgcHJvb2YuLi5gKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuZGVkdWN0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvb2YudmVyaWZ5KHN0YXRlbWVudCwgY29udGV4dCwgKHByb29mVmVyaWZpZXMpID0+IHtcbiAgICAgIGlmIChwcm9vZlZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBwcm9vZi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihwcm9vZlZlcmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZlcmlmeURlZHVjdGlvbihjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmRlZHVjdGlvbi52ZXJpZnkoY29udGV4dCwgKGRlZHVjdGlvblZlcmlmaWVzKSA9PiB7XG4gICAgICBpZiAoZGVkdWN0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbidzICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihkZWR1Y3Rpb25WZXJpZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7c3VwcG9zaXRpb25TdHJpbmd9JyBzdXBwb3NpdGlvbi4uLmApO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uLnZlcmlmeShjb250ZXh0LCAoc3VwcG9zaXRpb25WZXJpZmllcykgPT4ge1xuICAgICAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZXMpIHtcbiAgICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uID0gc3VwcG9zaXRpb247ICAvLy8vXG5cbiAgICAgICAgY29udGV4dC5hc3NpZ25Bc3NpZ25tZW50cygpO1xuXG4gICAgICAgIGNvbnRleHQuYWRkU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3NpdGlvblZlcmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtzdXBwb3NpdGlvblN0cmluZ30nIHN1cHBvc2l0aW9uLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uVmVyaWZpZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmVyaWZ5U3VwcG9zaXRpb25zKGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyBzdXBwb3NpdGlvbnMuLi5gKTtcblxuICAgIHJldHVybiBmb3J3YXJkc0V2ZXJ5KHRoaXMuc3VwcG9zaXRpb25zLCAoc3VwcG9zaXRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U3VwcG9zaXRpb24oc3VwcG9zaXRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgKHN1cHBvc2l0aW9uc1ZlcmlmeSkgPT4ge1xuICAgICAgaWYgKHN1cHBvc2l0aW9uc1ZlcmlmeSkge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3Mgc3VwcG9zaXRpb25zLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN1cHBvc2l0aW9uc1ZlcmlmeSk7XG4gICAgfSk7XG4gIH1cblxuICBkaXNjaGFyZ2VIeXBvdGhlc2lzKGh5cG90aGVzaXMsIGNvbnRleHQpIHtcbiAgICBsZXQgaHlwb3RoZXNpc0Rpc2NoYXJnZXM7XG5cbiAgICB0aGlzLmJyZWFrKGNvbnRleHQpO1xuXG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYERpc2NoYXJkaW5nIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24ncyAnJHtoeXBvdGhlc2lzU3RyaW5nfScgaHlwb3RoZXNpcy4uLmApO1xuXG4gICAgaHlwb3RoZXNpc0Rpc2NoYXJnZXMgPSBoeXBvdGhlc2lzLmRpc2NoYXJnZShjb250ZXh0KTtcblxuICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlcykge1xuICAgICAgY29udGV4dC50cmFjZShgLi4uZGlzY2hhcmdlcyB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uJ3MgJyR7aHlwb3RoZXNpc1N0cmluZ30nIGh5cG90aGVzaXMuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNEaXNjaGFyZ2VzO1xuICB9XG5cbiAgZGlzY2hhcmdlSHlwb3RoZXNlcyhjb250ZXh0KSB7XG4gICAgY29uc3QgaHlwb3RoZXNlcyA9IHRoaXMuZ2V0SHlwb3RoZXNlcygpLFxuICAgICAgICAgIGh5cG90aGVzZXNEaXNjaGFyZ2UgPSBldmVyeShoeXBvdGhlc2VzLCAoaHlwb3RoZXNpcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaHlwb3RoZXNpc0Rpc2NoYXJnZXMgPSB0aGlzLmRpc2NoYXJnZUh5cG90aGVzaXMoaHlwb3RoZXNpcywgY29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChoeXBvdGhlc2lzRGlzY2hhcmdlcykge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2VzRGlzY2hhcmdlO1xuICB9XG5cbiAgdW5pZnlTdGVwV2l0aERlZHVjdGlvbihzdGVwLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBydWxlU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25jbHVzaW9uU3RyaW5nID0gdGhpcy5jb25jbHVzaW9uLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3J1bGVTdHJpbmd9JyBydWxlJ3MgJyR7Y29uY2x1c2lvblN0cmluZ30nIGNvbmNsdXNpb24uLi5gKTtcblxuICAgIHJldHVybiB0aGlzLmNvbmNsdXNpb24udW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQsIChzdGVwVW5pZmllcykgPT4ge1xuICAgICAgbGV0IHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbiA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXMpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZSdzICcke2NvbmNsdXNpb25TdHJpbmd9JyBjb25jbHVzaW9uLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBVbmlmaWVzV2l0aERlZHVjdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICB1bmlmeVN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0ZXAsIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIHJldHVybiB0aGlzLnVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24oc3RlcCwgY29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSA9PiB7XG4gICAgICBpZiAoIXN0YXRlbWVudFVuaWZpZXNXaXRoRGVkdWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBoeXBvdGhlc2VzRGlzY2hhcmdlID0gdGhpcy5kaXNjaGFyZ2VIeXBvdGhlc2VzKGNvbnRleHQpO1xuXG4gICAgICBpZiAoaHlwb3RoZXNlc0Rpc2NoYXJnZSkge1xuICAgICAgICBjb25zdCBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb25zKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQsIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZmllc1dpdGhTdXBwb3NpdGlvbnMpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zKSB7XG4gICAgICAgICAgY29uc3QgZGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCA9IGNvbnRleHQuYXJlRGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCgpO1xuXG4gICAgICAgICAgaWYgKGRlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgIHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1dpdGhTdXBwb3NpdGlvbihzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBzdXBwb3NpdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgcmV0dXJuIGV4dHJhY3Qoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gc3VwcG9zaXRpb24udW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uLCBjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0sIChzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24gPSBudWxsKSA9PiB7XG4gICAgICBpZiAoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uID0gdHJ1ZTtcblxuICAgICAgICByZXR1cm4gY29udGV4dC5yZXNvbHZlRGVyaXZlZFN1YnN0aXR1dGlvbnMoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uLnVuaWZ5SW5kZXBlbmRlbnRseShjb250ZXh0LCBjb250aW51YXRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zV2l0aFN1cHBvc2l0aW9ucyhzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gcmV2ZXJzZShzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKTsgLy8vXG5cbiAgICByZXR1cm4gYmFja3dhcmRzRXZlcnkodGhpcy5zdXBwb3NpdGlvbnMsIChzdXBwb3NpdGlvbiwgY29udGludWF0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb24oc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgc3VwcG9zaXRpb24sIGNvbnRleHQsIGNvbnRpbnVhdGlvbik7XG4gICAgfSwgY29udGludWF0aW9uKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBsYWJlbHNKU09OID0gbGFiZWxzVG9MYWJlbHNKU09OKHRoaXMubGFiZWxzKSxcbiAgICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKHRoaXMuZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHRoaXMuc3VwcG9zaXRpb25zKSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHRoaXMuc2lnbmF0dXJlKSxcbiAgICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKHRoaXMuaHlwb3RoZXNlcyksXG4gICAgICAgICAgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgY29uc3QgbGFiZWxzID0gbGFiZWxzSlNPTiwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTiwgIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBicmVha1BvaW50LFxuICAgICAgICAgICAgbGFiZWxzLFxuICAgICAgICAgICAgZGVkdWN0aW9uLFxuICAgICAgICAgICAgc3VwcG9zaXRpb25zLFxuICAgICAgICAgICAgc2lnbmF0dXJlLFxuICAgICAgICAgICAgaHlwb3RoZXNlc1xuICAgICAgICAgIH07XG5cbiAgICByZXR1cm4ganNvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihDbGFzcywganNvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGxhYmVscyA9IGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGRlZHVjdGlvbiA9IGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpLFxuICAgICAgICAgIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSB0b3BMZXZlbEFzc2VydGlvblN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSxcbiAgICAgICAgICBzdHJpbmcgPSB0b3BMZXZlbEFzc2VydGlvblN0cmluZywgLy8vXG4gICAgICAgICAgbm9kZSA9IG51bGwsXG4gICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICBwcm9vZiA9IG51bGwsXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb24gPSBuZXcgQ2xhc3MoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCBsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uLCBwcm9vZiwgc2lnbmF0dXJlLCBoeXBvdGhlc2VzKTtcblxuICAgIHJldHVybiB0b3BMZXZlbEFzc2VydGlvbjtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlRvcExldmVsQXNzZXJ0aW9uIiwicmV2ZXJzZSIsImFycmF5VXRpbGl0aWVzIiwiZXZlcnkiLCJleHRyYWN0IiwiZm9yd2FyZHNFdmVyeSIsImJhY2t3YXJkc0V2ZXJ5IiwiY29udGludWF0aW9uVXRpbGl0aWVzIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsImxhYmVscyIsInN1cHBvc2l0aW9ucyIsImRlZHVjdGlvbiIsInByb29mIiwic2lnbmF0dXJlIiwiaHlwb3RoZXNlcyIsImdldExhYmVscyIsImdldFN1cHBvc2l0aW9ucyIsImdldERlZHVjdGlvbiIsImdldFByb29mIiwiZ2V0U2lnbmF0dXJlIiwiZ2V0SHlwb3RoZXNlcyIsInNldEh5cG90aGVzZXMiLCJnZXRTdXBwb3NpdGlvbiIsImluZGV4Iiwic3VwcG9zaXRpb24iLCJpc1NhdGlzZmlhYmxlIiwic2F0aXNmaWFibGUiLCJpc0h5cG90aGV0aWNhbCIsImh5cG90aGVzZXNMZW5ndGgiLCJsZW5ndGgiLCJoeXBvdGhldGljYWwiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJzb21lIiwibGFiZWwiLCJ2ZXJpZnlFeCIsImNvbnRpbnVhdGlvbiIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJlbmNsb3NlIiwidmVyaWZ5UHJvb2YiLCJiaW5kIiwidmVyaWZ5TGFiZWxzIiwidmVyaWZ5RGVkdWN0aW9uIiwidmVyaWZ5U3VwcG9zaXRpb25zIiwiYWxsIiwidmVyaWZpZXMiLCJkZWJ1ZyIsInZlcmlmeUxhYmVsIiwibGFiZWxzVmVyaWZ5IiwibGFiZWxTdHJpbmciLCJ2ZXJpZnkiLCJsYWJlbFZlcmlmaWVzIiwicHJvb2ZWZXJpZmllcyIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImRlZHVjdGlvblN0cmluZyIsImRlZHVjdGlvblZlcmlmaWVzIiwidmVyaWZ5U3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvblN0cmluZyIsInN1cHBvc2l0aW9uVmVyaWZpZXMiLCJzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb24iLCJhc3NpZ25Bc3NpZ25tZW50cyIsImFkZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsInN1cHBvc2l0aW9uc1ZlcmlmeSIsImRpc2NoYXJnZUh5cG90aGVzaXMiLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc0Rpc2NoYXJnZXMiLCJicmVhayIsImh5cG90aGVzaXNTdHJpbmciLCJkaXNjaGFyZ2UiLCJkaXNjaGFyZ2VIeXBvdGhlc2VzIiwiaHlwb3RoZXNlc0Rpc2NoYXJnZSIsInVuaWZ5U3RlcFdpdGhEZWR1Y3Rpb24iLCJzdGVwIiwicnVsZVN0cmluZyIsInN0ZXBTdHJpbmciLCJjb25jbHVzaW9uU3RyaW5nIiwiY29uY2x1c2lvbiIsInVuaWZ5U3RlcCIsInN0ZXBVbmlmaWVzIiwic3RlcFVuaWZpZXNXaXRoRGVkdWN0aW9uIiwidW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGF0ZW1lbnRVbmlmaWVzV2l0aERlZHVjdGlvbiIsInN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkiLCJ1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb25zIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZpZXNXaXRoU3VwcG9zaXRpb25zIiwiZGVyaXZlZFN1YnN0aXR1dGlvbnNSZXNvbHZlZCIsImFyZURlcml2ZWRTdWJzdGl0dXRpb25zUmVzb2x2ZWQiLCJ1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNXaXRoU3VwcG9zaXRpb24iLCJ1bmlmeVN1YnByb29mT3JQcm9vZkFzc2VydGlvbiIsInN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmaWVzV2l0aFN1cHBvc2l0aW9uIiwicmVzb2x2ZURlcml2ZWRTdWJzdGl0dXRpb25zIiwidW5pZnlJbmRlcGVuZGVudGx5IiwidG9KU09OIiwibGFiZWxzSlNPTiIsImxhYmVsc1RvTGFiZWxzSlNPTiIsImRlZHVjdGlvbkpTT04iLCJkZWR1Y3Rpb25Ub0RlZHVjdGlvbkpTT04iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OIiwic2lnbmF0dXJlSlNPTiIsInNpZ25hdHVyZVRvU2lnbmF0dXJlSlNPTiIsImh5cG90aGVzZXNKU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwiZnJvbUpTT04iLCJDbGFzcyIsImxhYmVsc0Zyb21KU09OIiwiZGVkdWN0aW9uRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXVCQTs7O2VBQXFCQTs7OzJCQXJCVTtnQ0FDcUM7OEJBRWhEO3lCQUNJO3dCQUMyRDtzQkFVcEM7QUFFL0MsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0MseUJBQWMsRUFDNUIsRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUVDLGFBQWEsRUFBRUMsY0FBYyxFQUFFLEdBQUdDLHFDQUFxQixFQUN6RSxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO0FBRS9ELE1BQU1WLDBCQUEwQlcsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFlBQVksRUFBRUMsU0FBUyxFQUFFQyxLQUFLLEVBQUVDLFNBQVMsRUFBRUMsVUFBVSxDQUFFO1FBQzVHLEtBQUssQ0FBQ1QsU0FBU0MsUUFBUUMsTUFBTUM7UUFFN0IsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxZQUFZLEdBQUdBO1FBQ3BCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLEtBQUssR0FBR0E7UUFDYixJQUFJLENBQUNDLFNBQVMsR0FBR0E7UUFDakIsSUFBSSxDQUFDQyxVQUFVLEdBQUdBO0lBQ3BCO0lBRUFDLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ04sTUFBTTtJQUNwQjtJQUVBTyxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUNOLFlBQVk7SUFDMUI7SUFFQU8sZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDTixTQUFT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
|