occam-verify-cli 1.0.913 → 1.0.920
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/bounded.js +1 -4
- package/lib/element/assertion/signature.js +37 -31
- package/lib/element/deduction.js +1 -14
- package/lib/element/proofAssertion/step.js +27 -40
- package/lib/element/signature.js +26 -59
- package/lib/element/subproof.js +1 -23
- package/lib/element/topLevelAssertion/axiom.js +71 -100
- package/lib/element/topLevelAssertion.js +13 -36
- package/lib/node/proofAssertion/step.js +5 -5
- package/lib/node/qualification.js +4 -4
- package/lib/node/statement.js +4 -4
- package/lib/process/unify.js +21 -5
- package/lib/utilities/context.js +6 -1
- package/lib/utilities/element.js +3 -3
- package/lib/utilities/equivalences.js +1 -13
- package/lib/utilities/unification.js +95 -116
- package/package.json +4 -4
- package/src/context/bounded.js +1 -3
- package/src/element/assertion/signature.js +47 -34
- package/src/element/deduction.js +0 -25
- package/src/element/proofAssertion/step.js +36 -59
- package/src/element/signature.js +37 -91
- package/src/element/subproof.js +0 -35
- package/src/element/topLevelAssertion/axiom.js +95 -131
- package/src/element/topLevelAssertion.js +11 -45
- package/src/node/proofAssertion/step.js +4 -4
- package/src/node/qualification.js +3 -3
- package/src/node/statement.js +3 -3
- package/src/process/unify.js +28 -3
- package/src/utilities/context.js +6 -0
- package/src/utilities/element.js +2 -2
- package/src/utilities/equivalences.js +0 -12
- package/src/utilities/unification.js +117 -145
|
@@ -12,9 +12,6 @@ _export(exports, {
|
|
|
12
12
|
get equivalencesFromEquality () {
|
|
13
13
|
return equivalencesFromEquality;
|
|
14
14
|
},
|
|
15
|
-
get findEquivalenceByTerm () {
|
|
16
|
-
return findEquivalenceByTerm;
|
|
17
|
-
},
|
|
18
15
|
get findEquivalenceByTermNodes () {
|
|
19
16
|
return findEquivalenceByTermNodes;
|
|
20
17
|
},
|
|
@@ -43,15 +40,6 @@ function mergeEquivalences(equivalencesA, equivalencesB, context) {
|
|
|
43
40
|
});
|
|
44
41
|
return equivalencesA;
|
|
45
42
|
}
|
|
46
|
-
function findEquivalenceByTerm(equivalences, term) {
|
|
47
|
-
const equivalence = equivalences.find((equivalence)=>{
|
|
48
|
-
const equivalenceEqualToTerm = equivalence.isEqualTo(term);
|
|
49
|
-
if (equivalenceEqualToTerm) {
|
|
50
|
-
return true;
|
|
51
|
-
}
|
|
52
|
-
}) || null;
|
|
53
|
-
return equivalence;
|
|
54
|
-
}
|
|
55
43
|
function equivalencesFromEquality(equality, context) {
|
|
56
44
|
const { Equivalence } = _elements.default, eaulivalence = Equivalence.fromEquality(equality, context), equivalences = [
|
|
57
45
|
eaulivalence
|
|
@@ -143,4 +131,4 @@ function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquiva
|
|
|
143
131
|
});
|
|
144
132
|
}
|
|
145
133
|
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRFcXVpdmFsZW5jZUJ5VGVybShlcXVpdmFsZW5jZXMsIHRlcm0pIHtcbiAgY29uc3QgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZXMuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUVxdWFsVG9UZXJtID0gZXF1aXZhbGVuY2UuaXNFcXVhbFRvKHRlcm0pO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlRXF1YWxUb1Rlcm0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSkgfHwgbnVsbDtcblxuICByZXR1cm4gZXF1aXZhbGVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkoZXF1YWxpdHksIGNvbnRleHQpIHtcbiAgY29uc3QgeyBFcXVpdmFsZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGVhdWxpdmFsZW5jZSA9IEVxdWl2YWxlbmNlLmZyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCksXG4gICAgICAgIGVxdWl2YWxlbmNlcyA9IFtcbiAgICAgICAgICBlYXVsaXZhbGVuY2VcbiAgICAgICAgXTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEVxdWl2YWxlbmNlQnlUZXJtTm9kZXMoZXF1aXZhbGVuY2VzLCB0ZXJtTm9kZXMpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZXMuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCB0ZXJtTm9kZU1hdGNoZXMgPSBlcXVpdmFsZW5jZS5tYXRjaFRlcm1Ob2Rlcyh0ZXJtTm9kZXMpO1xuXG4gICAgaWYgKHRlcm1Ob2RlTWF0Y2hlcykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KSB8fCBudWxsO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMoZXF1aXZhbGVuY2VzLCBncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIGxldCBncm91bmRlZEVxdWl2YWxlbmNlcyxcbiAgICAgIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyxcbiAgICAgIGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzO1xuXG4gIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyA9IFtdO1xuXG4gIGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzID0gW107XG5cbiAgc2VwYXJhdGVJbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMubGVuZ3RoO1xuXG4gIGlmIChpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA+IDApIHtcbiAgICBncm91bmRlZEVxdWl2YWxlbmNlcyA9IGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgIGxldCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSAxO1xuXG4gICAgd2hpbGUgKGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGxldCBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gMCxcbiAgICAgICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IC0xO1xuXG4gICAgICB3aGlsZSAoZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA+IHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCkge1xuICAgICAgICBwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoOyAgLy8vXG5cbiAgICAgICAgZ3JvdW5kZWRUZXJtc0Zyb21Hcm91bmRlZEVxdWl2YWxlbmNlc0FuZERlZmluZWRWYXJpYWJsZXMoZ3JvdW5kZWRFcXVpdmFsZW5jZXMsIGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyhncm91bmRlZFRlcm1zLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgICBkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gZGVmaW5lZFZhcmlhYmxlcy5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIGVxdWl2YWxlbmNlcyA9IHJlbWFpbmluZ0VxdWl2YWxlbmNlczsgLy8vXG5cbiAgICAgIHJlbWFpbmluZ0VxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICAgICAgc2VwYXJhdGVJbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzLCByZW1haW5pbmdFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICAgIHB1c2goZ3JvdW5kZWRFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyk7XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7ICAvLy9cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpIHtcbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2VzID0gW107XG5cbiAgZXF1aXZhbGVuY2VzQS5mb3JFYWNoKChlcXVpdmFsZW5jZUEpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUJEaXNqb2ludEZyb21FcXVpdmFsZW5jZUEgPSBlcXVpdmFsZW5jZUIuaXNEaXNqb2ludEZyb20oZXF1aXZhbGVuY2VBKTtcblxuICAgIGlmIChlcXVpdmFsZW5jZUJEaXNqb2ludEZyb21FcXVpdmFsZW5jZUEpIHtcbiAgICAgIGNvbnN0IG1lcmdlZEVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VCOyAgLy8vXG5cbiAgICAgIG1lcmdlZEVxdWl2YWxlbmNlcy5wdXNoKG1lcmdlZEVxdWl2YWxlbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXF1aXZhbGVuY2VCID0gZXF1aXZhbGVuY2VCLm1lcmdlZFdpdGgoZXF1aXZhbGVuY2VBLCBjb250ZXh0KTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IG1lcmdlZEVxdWl2YWxlbmNlID0gZXF1aXZhbGVuY2VCOyAgLy8vXG5cbiAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuXG4gIGVxdWl2YWxlbmNlc0EgPSBtZXJnZWRFcXVpdmFsZW5jZXM7ICAvLy9cblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZnVuY3Rpb24gZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgZ3JvdW5kZWRUZXJtcy5mb3JFYWNoKChncm91bmRlZFRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtID0gZ3JvdW5kZWRUZXJtLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGVzID0gdmFyaWFibGVzRnJvbVRlcm0odGVybSwgY29udGV4dCk7XG5cbiAgICB2YXJpYWJsZXMuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSA9IGRlZmluZWRWYXJpYWJsZXMuaW5jbHVkZXModmFyaWFibGUpO1xuXG4gICAgICBpZiAoIWRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSkge1xuICAgICAgICBjb25zdCBkZWZpbmVkVmFyaWFibGUgPSB2YXJpYWJsZTsgIC8vL1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXMucHVzaChkZWZpbmVkVmFyaWFibGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VwYXJhdGVJbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIGNvbnRleHQpIHtcbiAgc2VwYXJhdGUoZXF1aXZhbGVuY2VzLCByZW1haW5pbmdFcXVpdmFsZW5jZXMsIGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCAoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbml0aWFsbHlHcm91bmRlZChjb250ZXh0KTtcblxuICAgIGlmICghZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VwYXJhdGVJbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMoZXF1aXZhbGVuY2VzLCByZW1haW5pbmdFcXVpdmFsZW5jZXMsIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCAoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCBlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCA9IGVxdWl2YWxlbmNlLmlzSW1wbGljaXRseUdyb3VuZGVkKGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ3JvdW5kZWRUZXJtc0Zyb21Hcm91bmRlZEVxdWl2YWxlbmNlc0FuZERlZmluZWRWYXJpYWJsZXMoZ3JvdW5kZWRFcXVpdmFsZW5jZXMsIGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpIHtcbiAgZ3JvdW5kZWRFcXVpdmFsZW5jZXMuZm9yRWFjaCgoZ3JvdW5kZWRFcXVpdmFsZW5jZSkgPT4ge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2UuZ2V0R3JvdW5kZWRUZXJtcyhkZWZpbmVkVmFyaWFibGVzLCBncm91bmRlZFRlcm1zLCBjb250ZXh0KTtcbiAgfSk7XG59XG4iXSwibmFtZXMiOlsiZXF1aXZhbGVuY2VzRnJvbUVxdWFsaXR5IiwiZmluZEVxdWl2YWxlbmNlQnlUZXJtIiwiZmluZEVxdWl2YWxlbmNlQnlUZXJtTm9kZXMiLCJtZXJnZUVxdWl2YWxlbmNlcyIsInNlcGFyYXRlR3JvdW5kZWRUZXJtc0FuZERlZmluZWRWYXJpYWJsZXMiLCJwdXNoIiwic2VwYXJhdGUiLCJhcnJheVV0aWxpdGllcyIsImVxdWl2YWxlbmNlc0EiLCJlcXVpdmFsZW5jZXNCIiwiY29udGV4dCIsImZvckVhY2giLCJlcXVpdmFsZW5jZUIiLCJtZXJnZUVxdWl2YWxlbmNlIiwiZXF1aXZhbGVuY2VzIiwidGVybSIsImVxdWl2YWxlbmNlIiwiZmluZCIsImVxdWl2YWxlbmNlRXF1YWxUb1Rlcm0iLCJpc0VxdWFsVG8iLCJlcXVhbGl0eSIsIkVxdWl2YWxlbmNlIiwiZWxlbWVudHMiLCJlYXVsaXZhbGVuY2UiLCJmcm9tRXF1YWxpdHkiLCJ0ZXJtTm9kZXMiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJyZW1haW5pbmdFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsInNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImxlbmd0aCIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImRlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyIsImRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyIsInNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwibWVyZ2VkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VBIiwiZXF1aXZhbGVuY2VCRGlzam9pbnRGcm9tRXF1aXZhbGVuY2VBIiwiaXNEaXNqb2ludEZyb20iLCJtZXJnZWRFcXVpdmFsZW5jZSIsIm1lcmdlZFdpdGgiLCJncm91bmRlZFRlcm0iLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlIiwiaW5jbHVkZXMiLCJkZWZpbmVkVmFyaWFibGUiLCJlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsImVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJncm91bmRlZEVxdWl2YWxlbmNlIiwiZ2V0R3JvdW5kZWRUZXJtcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBa0NnQkE7ZUFBQUE7O1FBWkFDO2VBQUFBOztRQXNCQUM7ZUFBQUE7O1FBbENBQztlQUFBQTs7UUE4Q0FDO2VBQUFBOzs7MkJBdERlO2lFQUVWOzZCQUVhOzs7Ozs7QUFFbEMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBRSxHQUFHQyx5QkFBYztBQUVsQyxTQUFTSixrQkFBa0JLLGFBQWEsRUFBRUMsYUFBYSxFQUFFQyxPQUFPO0lBQ3JFRixnQkFBZ0I7V0FDWEE7S0FDSjtJQUVEQyxjQUFjRSxPQUFPLENBQUMsQ0FBQ0M7UUFDckJKLGdCQUFnQkssaUJBQWlCTCxlQUFlSSxjQUFjRjtJQUNoRTtJQUVBLE9BQU9GO0FBQ1Q7QUFFTyxTQUFT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
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlc0Zyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCkge1xuICBjb25zdCB7IEVxdWl2YWxlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZWF1bGl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgZXF1aXZhbGVuY2VzID0gW1xuICAgICAgICAgIGVhdWxpdmFsZW5jZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyhlcXVpdmFsZW5jZXMsIHRlcm1Ob2Rlcykge1xuICBjb25zdCBlcXVpdmFsZW5jZSA9IGVxdWl2YWxlbmNlcy5maW5kKChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IGVxdWl2YWxlbmNlLm1hdGNoVGVybU5vZGVzKHRlcm1Ob2Rlcyk7XG5cbiAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IGdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzLFxuICAgICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7XG5cbiAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7XG5cbiAgaWYgKGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgbGV0IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IDE7XG5cbiAgICB3aGlsZSAoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAwLFxuICAgICAgICAgICAgcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gLTE7XG5cbiAgICAgIHdoaWxlIChkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID4gcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoKSB7XG4gICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IGRlZmluZWRWYXJpYWJsZXNMZW5ndGg7ICAvLy9cblxuICAgICAgICBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCk7XG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZXF1aXZhbGVuY2VzID0gcmVtYWluaW5nRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgcHVzaChncm91bmRlZEVxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKTtcblxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLmxlbmd0aDsgIC8vL1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlQiwgY29udGV4dCkge1xuICBjb25zdCBtZXJnZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBlcXVpdmFsZW5jZXNBLmZvckVhY2goKGVxdWl2YWxlbmNlQSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSA9IGVxdWl2YWxlbmNlQi5pc0Rpc2pvaW50RnJvbShlcXVpdmFsZW5jZUEpO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSkge1xuICAgICAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICAgICAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcXVpdmFsZW5jZUIgPSBlcXVpdmFsZW5jZUIubWVyZ2VkV2l0aChlcXVpdmFsZW5jZUEsIGNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICBtZXJnZWRFcXVpdmFsZW5jZXMucHVzaChtZXJnZWRFcXVpdmFsZW5jZSk7XG5cbiAgZXF1aXZhbGVuY2VzQSA9IG1lcmdlZEVxdWl2YWxlbmNlczsgIC8vL1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXNBO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBncm91bmRlZFRlcm1zLmZvckVhY2goKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm0gPSBncm91bmRlZFRlcm0sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIHZhcmlhYmxlcy5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5pbmNsdWRlcyh2YXJpYWJsZSk7XG5cbiAgICAgIGlmICghZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcy5wdXNoKGRlZmluZWRWYXJpYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW5pdGlhbGx5R3JvdW5kZWQgPSBlcXVpdmFsZW5jZS5pc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIHNlcGFyYXRlKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCkge1xuICBncm91bmRlZEVxdWl2YWxlbmNlcy5mb3JFYWNoKChncm91bmRlZEVxdWl2YWxlbmNlKSA9PiB7XG4gICAgZ3JvdW5kZWRFcXVpdmFsZW5jZS5nZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyIsIm1lcmdlRXF1aXZhbGVuY2VzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInB1c2giLCJzZXBhcmF0ZSIsImFycmF5VXRpbGl0aWVzIiwiZXF1aXZhbGVuY2VzQSIsImVxdWl2YWxlbmNlc0IiLCJjb250ZXh0IiwiZm9yRWFjaCIsImVxdWl2YWxlbmNlQiIsIm1lcmdlRXF1aXZhbGVuY2UiLCJlcXVhbGl0eSIsIkVxdWl2YWxlbmNlIiwiZWxlbWVudHMiLCJlYXVsaXZhbGVuY2UiLCJmcm9tRXF1YWxpdHkiLCJlcXVpdmFsZW5jZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJyZW1haW5pbmdFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsInNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImxlbmd0aCIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImRlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyIsImRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyIsInNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwibWVyZ2VkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VBIiwiZXF1aXZhbGVuY2VCRGlzam9pbnRGcm9tRXF1aXZhbGVuY2VBIiwiaXNEaXNqb2ludEZyb20iLCJtZXJnZWRFcXVpdmFsZW5jZSIsIm1lcmdlZFdpdGgiLCJncm91bmRlZFRlcm0iLCJ0ZXJtIiwidmFyaWFibGVzIiwidmFyaWFibGVzRnJvbVRlcm0iLCJ2YXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSIsImluY2x1ZGVzIiwiZGVmaW5lZFZhcmlhYmxlIiwiZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZSIsImdldEdyb3VuZGVkVGVybXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNCZ0JBO2VBQUFBOztRQVVBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQWtDQUM7ZUFBQUE7OzsyQkExQ2U7aUVBRVY7NkJBRWE7Ozs7OztBQUVsQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFLEdBQUdDLHlCQUFjO0FBRWxDLFNBQVNKLGtCQUFrQkssYUFBYSxFQUFFQyxhQUFhLEVBQUVDLE9BQU87SUFDckVGLGdCQUFnQjtXQUNYQTtLQUNKO0lBRURDLGNBQWNFLE9BQU8sQ0FBQyxDQUFDQztRQUNyQkosZ0JBQWdCSyxpQkFBaUJMLGVBQWVJLGNBQWNGO0lBQ2hFO0lBRUEsT0FBT0Y7QUFDVDtBQUVPLFNBQVNQLHlCQUF5QmEsUUFBUSxFQUFFSixPQUFPO0lBQ3hELE1BQU0sRUFBRUssV0FBVyxFQUFFLEdBQUdDLGlCQUFRLEVBQzFCQyxlQUFlRixZQUFZRyxZQUFZLENBQUNKLFVBQVVKLFVBQ2xEUyxlQUFlO1FBQ2JGO0tBQ0Q7SUFFUCxPQUFPRTtBQUNUO0FBRU8sU0FBU2pCLDJCQUEyQmlCLFlBQVksRUFBRUMsU0FBUztJQUNoRSxNQUFNQyxjQUFjRixhQUFhRyxJQUFJLENBQUMsQ0FBQ0Q7UUFDckMsTUFBTUUsa0JBQWtCRixZQUFZRyxjQUFjLENBQUNKO1FBRW5ELElBQUlHLGlCQUFpQjtZQUNuQixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRU4sT0FBT0Y7QUFDVDtBQUVPLFNBQVNqQix5Q0FBeUNlLFlBQVksRUFBRU0sYUFBYSxFQUFFQyxnQkFBZ0IsRUFBRWhC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
|
|
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "unifySteps", {
|
|
|
8
8
|
return unifySteps;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
const _necessary = require("necessary");
|
|
12
11
|
const _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
|
|
13
12
|
const _context = require("./context");
|
|
14
13
|
function _interop_require_default(obj) {
|
|
@@ -16,12 +15,11 @@ function _interop_require_default(obj) {
|
|
|
16
15
|
default: obj
|
|
17
16
|
};
|
|
18
17
|
}
|
|
19
|
-
const { backwardsSome } = _necessary.arrayUtilities;
|
|
20
18
|
async function unifyStepWithRule(step, context) {
|
|
21
19
|
let stepUnifiesWithRule = false;
|
|
22
|
-
const
|
|
23
|
-
if (
|
|
24
|
-
const
|
|
20
|
+
const reference = step.getReference();
|
|
21
|
+
if (reference !== null) {
|
|
22
|
+
const rule = context.findRuleByReference(reference);
|
|
25
23
|
if (rule !== null) {
|
|
26
24
|
const stepString = step.getString(), ruleString = rule.getString();
|
|
27
25
|
context.trace(`Unifying the '${stepString}' step with the '${ruleString}' rule...`);
|
|
@@ -38,9 +36,9 @@ async function unifyStepWithRule(step, context) {
|
|
|
38
36
|
}
|
|
39
37
|
async function unifyStepWithReference(step, context) {
|
|
40
38
|
let stepUnifiesWithReference = false;
|
|
41
|
-
const
|
|
42
|
-
if (
|
|
43
|
-
const
|
|
39
|
+
const reference = step.getReference();
|
|
40
|
+
if (reference !== null) {
|
|
41
|
+
const stepString = step.getString(), referenceString = reference.getString();
|
|
44
42
|
context.trace(`Unifying the '${stepString}' step with the '${referenceString}' reference...`);
|
|
45
43
|
const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
46
44
|
if (topLevelAssertion !== null) {
|
|
@@ -64,57 +62,11 @@ async function unifyStepWithReference(step, context) {
|
|
|
64
62
|
}
|
|
65
63
|
return stepUnifiesWithReference;
|
|
66
64
|
}
|
|
67
|
-
async function unifyStepAsSignatureAssertion(step, context) {
|
|
68
|
-
let stepUnifiesAsSignatureAssertion = false;
|
|
69
|
-
const { SignatureAssertion } = _elements.default;
|
|
70
|
-
const signatureAssertion = SignatureAssertion.fromStep(step, context);
|
|
71
|
-
if (signatureAssertion !== null) {
|
|
72
|
-
const stepString = step.getString();
|
|
73
|
-
context.trace(`Unifying the '${stepString}' step as a signature assertion...`);
|
|
74
|
-
(0, _context.descend)((context)=>{
|
|
75
|
-
signatureAssertion.verifySignature(context);
|
|
76
|
-
}, context);
|
|
77
|
-
const unqualified = step.isUnqualified();
|
|
78
|
-
if (unqualified) {
|
|
79
|
-
const subproofOrProofAssertions = context.getSubproofOrProofAssertions();
|
|
80
|
-
stepUnifiesAsSignatureAssertion = backwardsSome(subproofOrProofAssertions, (stepsOrSubproof)=>{
|
|
81
|
-
const stepOrSubProofUnifiesWIthSignatureAssertion = stepsOrSubproof.unifyWithSignatureAssertion(signatureAssertion, context);
|
|
82
|
-
if (stepOrSubProofUnifiesWIthSignatureAssertion) {
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
} else {
|
|
87
|
-
const reference = signatureAssertion.getReference(), topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
88
|
-
if (topLevelAssertion !== null) {
|
|
89
|
-
const axiom = context.findAxiomByReference(reference);
|
|
90
|
-
if (axiom !== null) {
|
|
91
|
-
const satisfiable = axiom.isSatisfiable();
|
|
92
|
-
if (satisfiable) {
|
|
93
|
-
const topLevelAssertionUnifies = axiom.unifyTopLevelAssertion(topLevelAssertion, context);
|
|
94
|
-
if (topLevelAssertionUnifies) {
|
|
95
|
-
const substitutionsCorrelates = signatureAssertion.correlateSubstitutions(substitutions, context);
|
|
96
|
-
if (substitutionsCorrelates) {
|
|
97
|
-
stepUnifiesAsSignatureAssertion = true;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
} else {
|
|
101
|
-
const axiomString = axiom.getString();
|
|
102
|
-
context.debug(`Unable to unify with the '${axiomString}' because it is not satisfiable.`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
if (stepUnifiesAsSignatureAssertion) {
|
|
108
|
-
context.debug(`...unified the '${stepString}' step as a signature assertion.`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return stepUnifiesAsSignatureAssertion;
|
|
112
|
-
}
|
|
113
65
|
async function unifyStepWithTopLevelAssertion(step, context) {
|
|
114
66
|
let stepUnifiesWithTopLevelAssertion = false;
|
|
115
|
-
const
|
|
116
|
-
if (
|
|
117
|
-
const
|
|
67
|
+
const reference = step.getReference();
|
|
68
|
+
if (reference !== null) {
|
|
69
|
+
const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
118
70
|
if (topLevelAssertion !== null) {
|
|
119
71
|
const stepString = step.getString(), topLevelAssertionString = reference.getString();
|
|
120
72
|
context.trace(`Unifying the '${stepString}' step with the '${topLevelAssertionString}' top level assertion...`);
|
|
@@ -129,97 +81,123 @@ async function unifyStepWithTopLevelAssertion(step, context) {
|
|
|
129
81
|
}
|
|
130
82
|
return stepUnifiesWithTopLevelAssertion;
|
|
131
83
|
}
|
|
132
|
-
async function
|
|
133
|
-
let
|
|
84
|
+
async function unifyStepWithSignatureAssertion(step, context) {
|
|
85
|
+
let stepUnifiesWithSignatureAssertion = false;
|
|
86
|
+
const signatureAssertion = step.getSignatureAssertion();
|
|
87
|
+
if (signatureAssertion !== null) {
|
|
88
|
+
const stepString = step.getString(), signatureAssertionString = signatureAssertion.getString();
|
|
89
|
+
context.trace(`Unifying the '${stepString}' step with the '${signatureAssertionString}' signature assertion...`);
|
|
90
|
+
const subproofOrProofAssertions = context.getSubproofOrProofAssertions(), stepAndSubproofOrProofAssertionsUnify = await signatureAssertion.unifyStepAndSubproofOrProofAssertions(step, subproofOrProofAssertions, context);
|
|
91
|
+
if (stepAndSubproofOrProofAssertionsUnify) {
|
|
92
|
+
stepUnifiesWithSignatureAssertion = true;
|
|
93
|
+
}
|
|
94
|
+
if (stepUnifiesWithSignatureAssertion) {
|
|
95
|
+
context.debug(`...unified the '${stepString}' step with the '${signatureAssertionString}' signature assertion.`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return stepUnifiesWithSignatureAssertion;
|
|
99
|
+
}
|
|
100
|
+
async function unifyStepAsUnqualifiedEquality(step, context) {
|
|
101
|
+
let stepUnifiesAUnqualifiedEquality = false;
|
|
134
102
|
const unqualified = step.isUnqualified();
|
|
135
103
|
if (unqualified) {
|
|
136
104
|
const { Equality } = _elements.default, statement = step.getStatement(), equality = Equality.fromStatement(statement, context);
|
|
137
105
|
if (equality !== null) {
|
|
138
106
|
const stepString = step.getString();
|
|
139
|
-
context.trace(`Unifying the '${stepString}' step as an equality...`);
|
|
140
|
-
|
|
141
|
-
if (
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
if (stepUnifiesAEquality) {
|
|
145
|
-
context.debug(`...unified the '${stepString}' step as an equality.`);
|
|
107
|
+
context.trace(`Unifying the '${stepString}' step as an unqualified equality...`);
|
|
108
|
+
stepUnifiesAUnqualifiedEquality = true;
|
|
109
|
+
if (stepUnifiesAUnqualifiedEquality) {
|
|
110
|
+
context.debug(`...unified the '${stepString}' step as an unqualified equality.`);
|
|
146
111
|
}
|
|
147
112
|
}
|
|
148
113
|
}
|
|
149
|
-
return
|
|
114
|
+
return stepUnifiesAUnqualifiedEquality;
|
|
150
115
|
}
|
|
151
|
-
async function
|
|
152
|
-
let
|
|
116
|
+
async function unifyStepAsUNqualifiedJudgement(step, context) {
|
|
117
|
+
let stepUnifiesAsUnqualifiedJudgement = false;
|
|
153
118
|
const unqualified = step.isUnqualified();
|
|
154
119
|
if (unqualified) {
|
|
155
120
|
const { Judgement } = _elements.default, statement = step.getStatement(), judgement = Judgement.fromStatement(statement, context);
|
|
156
121
|
if (judgement !== null) {
|
|
157
122
|
const stepString = step.getString();
|
|
158
|
-
context.trace(`Unifying the '${stepString}' step as
|
|
159
|
-
|
|
160
|
-
if (
|
|
161
|
-
context.debug(`...unified the '${stepString}' step as
|
|
123
|
+
context.trace(`Unifying the '${stepString}' step as an unqualified judgement...`);
|
|
124
|
+
stepUnifiesAsUnqualifiedJudgement = true;
|
|
125
|
+
if (stepUnifiesAsUnqualifiedJudgement) {
|
|
126
|
+
context.debug(`...unified the '${stepString}' step as an unqualified judgement.`);
|
|
162
127
|
}
|
|
163
128
|
}
|
|
164
129
|
}
|
|
165
|
-
return
|
|
130
|
+
return stepUnifiesAsUnqualifiedJudgement;
|
|
166
131
|
}
|
|
167
|
-
async function
|
|
168
|
-
let
|
|
132
|
+
async function unifyStepAsUnqualifiedTypeAssertion(step, context) {
|
|
133
|
+
let stepUnifiesAsUnqualifiedTypeAssertion = false;
|
|
169
134
|
const unqualified = step.isUnqualified();
|
|
170
135
|
if (unqualified) {
|
|
171
136
|
const { TypeAssertion } = _elements.default, statement = step.getStatement(), typeAssertion = TypeAssertion.fromStatement(statement, context);
|
|
172
137
|
if (typeAssertion !== null) {
|
|
173
138
|
const stepString = step.getString();
|
|
174
|
-
context.trace(`Unifying the '${stepString}' step as
|
|
175
|
-
|
|
176
|
-
|
|
139
|
+
context.trace(`Unifying the '${stepString}' step as an unqualified type assertion...`);
|
|
140
|
+
stepUnifiesAsUnqualifiedTypeAssertion = true;
|
|
141
|
+
if (stepUnifiesAsUnqualifiedTypeAssertion) {
|
|
142
|
+
context.debug(`...unified the '${stepString}' step as an unqualified type assertion.`);
|
|
143
|
+
}
|
|
177
144
|
}
|
|
178
145
|
}
|
|
179
|
-
return
|
|
146
|
+
return stepUnifiesAsUnqualifiedTypeAssertion;
|
|
180
147
|
}
|
|
181
|
-
async function
|
|
182
|
-
let
|
|
148
|
+
async function unifyStepAsUnqualifiedPropertyAssertion(step, context) {
|
|
149
|
+
let stepUnifiesAsUnqualifiedPropertyAssertion = false;
|
|
183
150
|
const unqualified = step.isUnqualified();
|
|
184
151
|
if (unqualified) {
|
|
185
152
|
const { PropertyAssertion } = _elements.default, statement = step.getStatement(), propertyAssertion = PropertyAssertion.fromStatement(statement, context);
|
|
186
153
|
if (propertyAssertion !== null) {
|
|
187
154
|
const stepString = step.getString();
|
|
188
|
-
context.trace(`Unifying the '${stepString}' step as
|
|
189
|
-
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
const propertyRelation = propertyAssertion.getPropertyRelation(), comparesToTermAndPropertyRelation = context.compareTermAndPropertyRelation(term, propertyRelation);
|
|
193
|
-
if (comparesToTermAndPropertyRelation) {
|
|
194
|
-
return true;
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
if (propertyAssertionMatches) {
|
|
198
|
-
stepUnifiesAsPropertyAssertion = true;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
if (stepUnifiesAsPropertyAssertion) {
|
|
202
|
-
context.debug(`...unified the '${stepString}' step as a property assertion.`);
|
|
155
|
+
context.trace(`Unifying the '${stepString}' step as an unqualified property assertion...`);
|
|
156
|
+
stepUnifiesAsUnqualifiedPropertyAssertion = true;
|
|
157
|
+
if (stepUnifiesAsUnqualifiedPropertyAssertion) {
|
|
158
|
+
context.debug(`...unified the '${stepString}' step as an unqualified property assertion.`);
|
|
203
159
|
}
|
|
204
160
|
}
|
|
205
161
|
}
|
|
206
|
-
return
|
|
162
|
+
return stepUnifiesAsUnqualifiedPropertyAssertion;
|
|
207
163
|
}
|
|
208
|
-
async function
|
|
209
|
-
let
|
|
210
|
-
const
|
|
211
|
-
if (
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
164
|
+
async function unifyStepAsUnqualifiedSignatureAssertion(step, context) {
|
|
165
|
+
let stepUnifiesAsUnqualifiedSignatureAssertion = false;
|
|
166
|
+
const unqualified = step.isUnqualified();
|
|
167
|
+
if (unqualified) {
|
|
168
|
+
const { SignatureAssertion } = _elements.default, statement = step.getStatement(), signatureAssertion = SignatureAssertion.fromStatement(statement, context);
|
|
169
|
+
if (signatureAssertion !== null) {
|
|
170
|
+
const stepString = step.getString();
|
|
171
|
+
context.trace(`Unifying the '${stepString}' step as a signature assertion...`);
|
|
172
|
+
stepUnifiesAsUnqualifiedSignatureAssertion = true;
|
|
173
|
+
if (stepUnifiesAsUnqualifiedSignatureAssertion) {
|
|
174
|
+
context.debug(`...unified the '${stepString}' step as a signature assertion.`);
|
|
175
|
+
}
|
|
217
176
|
}
|
|
218
|
-
|
|
219
|
-
|
|
177
|
+
}
|
|
178
|
+
return stepUnifiesAsUnqualifiedSignatureAssertion;
|
|
179
|
+
}
|
|
180
|
+
async function unifyStepAsSignatureAssertionWithReference(step, context) {
|
|
181
|
+
let stepUnifiesAsSignatureAssertionWithReference = false;
|
|
182
|
+
const reference = step.getReference();
|
|
183
|
+
if (reference !== null) {
|
|
184
|
+
const topLevelAssertion = context.findTopLevelAssertionByReference(reference);
|
|
185
|
+
if (topLevelAssertion !== null) {
|
|
186
|
+
const statementNode = step.getStatementNode(), signatureAssertionNode = statementNode.getSignatureAssertionNode();
|
|
187
|
+
if (signatureAssertionNode !== null) {
|
|
188
|
+
const stepString = step.getString(), referenceString = reference.getString(), signatureAssertion = context.findAssertionByAssertionNode(signatureAssertionNode);
|
|
189
|
+
context.trace(`Unifying the '${stepString}' step as a signature assertion with the '${referenceString}' reference...`);
|
|
190
|
+
const unifyTopLevelAssertion = await signatureAssertion.unifyTopLevelAssertion(topLevelAssertion, context);
|
|
191
|
+
if (unifyTopLevelAssertion) {
|
|
192
|
+
stepUnifiesAsSignatureAssertionWithReference = true;
|
|
193
|
+
}
|
|
194
|
+
if (stepUnifiesAsSignatureAssertionWithReference) {
|
|
195
|
+
context.debug(`...unified the '${stepString}' step as a signature assertion with the '${referenceString}' reference.`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
220
198
|
}
|
|
221
199
|
}
|
|
222
|
-
return
|
|
200
|
+
return stepUnifiesAsSignatureAssertionWithReference;
|
|
223
201
|
}
|
|
224
202
|
async function compareStepWithSubproofOrProofAssertions(step, context) {
|
|
225
203
|
let stepComparesToSubproofOrProofAssertions = false;
|
|
@@ -240,14 +218,15 @@ async function compareStepWithSubproofOrProofAssertions(step, context) {
|
|
|
240
218
|
const unifySteps = [
|
|
241
219
|
unifyStepWithRule,
|
|
242
220
|
unifyStepWithReference,
|
|
243
|
-
unifyStepAsSignatureAssertion,
|
|
244
221
|
unifyStepWithTopLevelAssertion,
|
|
245
|
-
unifyStepAsEquality,
|
|
246
|
-
unifyStepAsJudgement,
|
|
247
|
-
unifyStepAsTypeAssertion,
|
|
248
|
-
unifyStepAsPropertyAssertion,
|
|
249
222
|
unifyStepWithSignatureAssertion,
|
|
223
|
+
unifyStepAsUnqualifiedEquality,
|
|
224
|
+
unifyStepAsUNqualifiedJudgement,
|
|
225
|
+
unifyStepAsUnqualifiedTypeAssertion,
|
|
226
|
+
unifyStepAsUnqualifiedPropertyAssertion,
|
|
227
|
+
unifyStepAsUnqualifiedSignatureAssertion,
|
|
228
|
+
unifyStepAsSignatureAssertionWithReference,
|
|
250
229
|
compareStepWithSubproofOrProofAssertions
|
|
251
230
|
];
|
|
252
231
|
|
|
253
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdW5pZmljYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgZWxlbWVudHMgZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5cbmltcG9ydCB7IGRlc2NlbmQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYmFja3dhcmRzU29tZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcFdpdGhSdWxlKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzV2l0aFJ1bGUgPSBmYWxzZTtcblxuICBjb25zdCBxdWFsaWZpZWQgPSBzdGVwLmlzUXVhbGlmaWVkKCk7XG5cbiAgaWYgKHF1YWxpZmllZCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgICAgcnVsZSA9IGNvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgICAgcnVsZVN0cmluZyA9IHJ1bGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtydWxlU3RyaW5nfScgcnVsZS4uLmApO1xuXG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgcnVsZS51bmlmeVN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN0ZXAsIHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSkge1xuICAgICAgICBzdGVwVW5pZmllc1dpdGhSdWxlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzV2l0aFJ1bGUpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzV2l0aFJ1bGU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcFdpdGhSZWZlcmVuY2Uoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlID0gZmFsc2U7XG5cbiAgY29uc3QgcXVhbGlmaWVkID0gc3RlcC5pc1F1YWxpZmllZCgpO1xuXG4gIGlmIChxdWFsaWZpZWQpIHtcbiAgICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpLFxuICAgICAgICAgIHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uID0gY29udGV4dC5maW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKHRvcExldmVsQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgdG9wTGV2ZWxBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgICBpZiAobWV0YUxldmVsKSB7XG4gICAgICAgIGRlc2NlbmQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCB7IE1ldGFMZXZlbEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb24gPSBNZXRhTGV2ZWxBc3N1bXB0aW9uLmZyb21TdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbi52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgICAgIHN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IHRydWU7XG4gICAgICAgIH0sIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhSZWZlcmVuY2UpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgeyBTaWduYXR1cmVBc3NlcnRpb24gfSA9IGVsZW1lbnRzO1xuXG4gIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IFNpZ25hdHVyZUFzc2VydGlvbi5mcm9tU3RlcChzdGVwLCBjb250ZXh0KTtcblxuICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICBzaWduYXR1cmVBc3NlcnRpb24udmVyaWZ5U2lnbmF0dXJlKGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICAgIGlmICh1bnF1YWxpZmllZCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpO1xuXG4gICAgICBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uID0gYmFja3dhcmRzU29tZShzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCAoc3RlcHNPclN1YnByb29mKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBPclN1YlByb29mVW5pZmllc1dJdGhTaWduYXR1cmVBc3NlcnRpb24gPSBzdGVwc09yU3VicHJvb2YudW5pZnlXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uKHNpZ25hdHVyZUFzc2VydGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0ZXBPclN1YlByb29mVW5pZmllc1dJdGhTaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlZmVyZW5jZSA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHRvcExldmVsQXNzZXJ0aW9uID0gY29udGV4dC5maW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgICBpZiAodG9wTGV2ZWxBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgYXhpb20gPSBjb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICAgICAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3Qgc2F0aXNmaWFibGUgPSBheGlvbS5pc1NhdGlzZmlhYmxlKCk7XG5cbiAgICAgICAgICBpZiAoc2F0aXNmaWFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uVW5pZmllcyA9IGF4aW9tLnVuaWZ5VG9wTGV2ZWxBc3NlcnRpb24odG9wTGV2ZWxBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgICAgICBpZiAodG9wTGV2ZWxBc3NlcnRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnNDb3JyZWxhdGVzID0gc2lnbmF0dXJlQXNzZXJ0aW9uLmNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucywgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbnNDb3JyZWxhdGVzKSB7XG4gICAgICAgICAgICAgICAgc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXhpb21TdHJpbmcgPSBheGlvbS5nZXRTdHJpbmcoKTtcblxuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIHVuaWZ5IHdpdGggdGhlICcke2F4aW9tU3RyaW5nfScgYmVjYXVzZSBpdCBpcyBub3Qgc2F0aXNmaWFibGUuYClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbikge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoVG9wTGV2ZWxBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCBxdWFsaWZpZWQgPSBzdGVwLmlzUXVhbGlmaWVkKCk7XG5cbiAgaWYgKHF1YWxpZmllZCkge1xuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCksXG4gICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRUb3BMZXZlbEFzc2VydGlvbkJ5UmVmZXJlbmNlKHJlZmVyZW5jZSk7XG5cbiAgICBpZiAodG9wTGV2ZWxBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ30nIHRvcCBsZXZlbCBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgICAgc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSA9IGF3YWl0IHRvcExldmVsQXNzZXJ0aW9uLnVuaWZ5U3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RlcCwgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCk7XG5cbiAgICAgIGlmIChzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5KSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzRXF1YWxpdHkoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gZXF1YWxpdHkuLi5gKTtcblxuICAgICAgY29uc3QgZXF1YWxpdHlFcXVhbCA9IGVxdWFsaXR5LmlzRXF1YWwoY29udGV4dCk7XG5cbiAgICAgIGlmIChlcXVhbGl0eUVxdWFsKSB7XG4gICAgICAgIHN0ZXBVbmlmaWVzQUVxdWFsaXR5ID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQUVxdWFsaXR5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGFuIGVxdWFsaXR5LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FFcXVhbGl0eTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNKdWRnZW1lbnQoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc0p1ZGdlbWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBqdWRnZW1lbnQuLi5gKTtcblxuICAgICAgc3RlcFVuaWZpZXNBc0p1ZGdlbWVudCA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FzSnVkZ2VtZW50KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEganVkZ2VtZW50LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzSnVkZ2VtZW50O1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1R5cGVBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1R5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgVHlwZUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAodHlwZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIHN0ZXBVbmlmaWVzQXNUeXBlQXNzZXJ0aW9uID0gdHJ1ZTtcblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSB0eXBlIGFzc2VydGlvbi5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNBc1R5cGVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzUHJvcGVydHlBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1Byb3BlcnR5QXNzZXJ0aW9uID0gZmFsc2U7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICBpZiAodW5xdWFsaWZpZWQpIHtcbiAgICBjb25zdCB7IFByb3BlcnR5QXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uID0gUHJvcGVydHlBc3NlcnRpb24uZnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpO1xuXG4gICAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgcHJvcGVydHkgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICAgIGNvbnN0IHRlcm0gPSBwcm9wZXJ0eUFzc2VydGlvbi5nZXRUZXJtKCksXG4gICAgICAgICAgICBlcXVpdmFsZW5jZSA9IGNvbnRleHQuZmluZEVxdWl2YWxlbmNlQnlUZXJtKHRlcm0pO1xuXG4gICAgICBpZiAoZXF1aXZhbGVuY2UgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgcHJvcGVydHlBc3NlcnRpb25NYXRjaGVzID0gZXF1aXZhbGVuY2Uuc29tZU90aGVyVGVybSh0ZXJtLCAodGVybSkgPT4geyAgLy8vXG4gICAgICAgICAgY29uc3QgcHJvcGVydHlSZWxhdGlvbiA9IHByb3BlcnR5QXNzZXJ0aW9uLmdldFByb3BlcnR5UmVsYXRpb24oKSxcbiAgICAgICAgICAgICAgICBjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb24gPSBjb250ZXh0LmNvbXBhcmVUZXJtQW5kUHJvcGVydHlSZWxhdGlvbih0ZXJtLCBwcm9wZXJ0eVJlbGF0aW9uKTtcblxuICAgICAgICAgIGlmIChjb21wYXJlc1RvVGVybUFuZFByb3BlcnR5UmVsYXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHByb3BlcnR5QXNzZXJ0aW9uTWF0Y2hlcykge1xuICAgICAgICAgIHN0ZXBVbmlmaWVzQXNQcm9wZXJ0eUFzc2VydGlvbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNQcm9wZXJ0eUFzc2VydGlvbikge1xuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhIHByb3BlcnR5IGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNBc1Byb3BlcnR5QXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzV2l0aFNpZ25hdHVyZUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHNpZ25hdHVyZUFzc2VydGlvbiA9IHN0ZXAuZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uKCk7XG5cbiAgaWYgKHNpZ25hdHVyZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvblN0cmluZyA9IHNpZ25hdHVyZUFzc2VydGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgc3RlcFVuaWZpZXMgPSBzaWduYXR1cmVBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGVwVW5pZmllcykge1xuICAgICAgc3RlcFVuaWZpZXNXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoc3RlcFVuaWZpZXNXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtzaWduYXR1cmVBc3NlcnRpb25TdHJpbmd9JyBzaWduYXR1cmUgYXNzZXJ0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbXBhcmVTdGVwV2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcENvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gZmFsc2U7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWQgPSBzdGVwLmlzVW5xdWFsaWZpZWQoKTtcblxuICBpZiAodW5xdWFsaWZpZWQpIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYENvbXBhcmluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgc3VicHJvb2ZzIG9yIHByb29mIGFzc3NlcnRpb25zLi4uYCk7XG5cbiAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgY29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBzdGVwLmNvbXBhcmVTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMsIGNvbnRleHQpO1xuXG4gICAgaWYgKGNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKSB7XG4gICAgICBzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLmNvbXBhcmVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSBzdWJwcm9vZnMgb3IgcHJvb2YgYXNzc2VydGlvbnMuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IHVuaWZ5U3RlcHMgPSBbXG4gIHVuaWZ5U3RlcFdpdGhSdWxlLFxuICB1bmlmeVN0ZXBXaXRoUmVmZXJlbmNlLFxuICB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbixcbiAgdW5pZnlTdGVwV2l0aFRvcExldmVsQXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc0VxdWFsaXR5LFxuICB1bmlmeVN0ZXBBc0p1ZGdlbWVudCxcbiAgdW5pZnlTdGVwQXNUeXBlQXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc1Byb3BlcnR5QXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uLFxuICBjb21wYXJlU3RlcFdpdGhTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zXG5dO1xuIl0sIm5hbWVzIjpbInVuaWZ5U3RlcHMiLCJiYWNrd2FyZHNTb21lIiwiYXJyYXlVdGlsaXRpZXMiLCJ1bmlmeVN0ZXBXaXRoUnVsZSIsInN0ZXAiLCJjb250ZXh0Iiwic3RlcFVuaWZpZXNXaXRoUnVsZSIsInF1YWxpZmllZCIsImlzUXVhbGlmaWVkIiwicmVmZXJlbmNlIiwiZ2V0UmVmZXJlbmNlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJzdGVwU3RyaW5nIiwiZ2V0U3RyaW5nIiwicnVsZVN0cmluZyIsInRyYWNlIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5IiwidW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImRlYnVnIiwidW5pZnlTdGVwV2l0aFJlZmVyZW5jZSIsInN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInRvcExldmVsQXNzZXJ0aW9uIiwiZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UiLCJtZXRhTGV2ZWwiLCJpc01ldGFMZXZlbCIsImRlc2NlbmQiLCJNZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJtZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZnJvbVN0ZXAiLCJ2YWxpZGF0ZSIsInVuaWZ5U3RlcEFzU2lnbmF0dXJlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsInNpZ25hdHVyZUFzc2VydGlvbiIsInZlcmlmeVNpZ25hdHVyZSIsInVucXVhbGlmaWVkIiwiaXNVbnF1YWxpZmllZCIsInN0ZXBzT3JTdWJwcm9vZiIsInN0ZXBPclN1YlByb29mVW5pZmllc1dJdGhTaWduYXR1cmVBc3NlcnRpb24iLCJ1bmlmeVdpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlIiwic2F0aXNmaWFibGUiLCJpc1NhdGlzZmlhYmxlIiwidG9wTGV2ZWxBc3NlcnRpb25VbmlmaWVzIiwidW5pZnlUb3BMZXZlbEFzc2VydGlvbiIsInN1YnN0aXR1dGlvbnNDb3JyZWxhdGVzIiwiY29ycmVsYXRlU3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnMiLCJheGlvbVN0cmluZyIsInVuaWZ5U3RlcFdpdGhUb3BMZXZlbEFzc2VydGlvbiIsInN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJ1bmlmeVN0ZXBBc0VxdWFsaXR5Iiwic3RlcFVuaWZpZXNBRXF1YWxpdHkiLCJFcXVhbGl0eSIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImVxdWFsaXR5IiwiZnJvbVN0YXRlbWVudCIsImVxdWFsaXR5RXF1YWwiLCJpc0VxdWFsIiwidW5pZnlTdGVwQXNKdWRnZW1lbnQiLCJzdGVwVW5pZmllc0FzSnVkZ2VtZW50IiwiSnVkZ2VtZW50IiwianVkZ2VtZW50IiwidW5pZnlTdGVwQXNUeXBlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1R5cGVBc3NlcnRpb24iLCJUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsInVuaWZ5U3RlcEFzUHJvcGVydHlBc3NlcnRpb24iLCJzdGVwVW5pZmllc0FzUHJvcGVydHlBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uIiwidGVybSIsImdldFRlcm0iLCJlcXVpdmFsZW5jZSIsImZpbmRFcXVpdmFsZW5jZUJ5VGVybSIsInByb3BlcnR5QXNzZXJ0aW9uTWF0Y2hlcyIsInNvbWVPdGhlclRlcm0iLCJwcm9wZXJ0eVJlbGF0aW9uIiwiZ2V0UHJvcGVydHlSZWxhdGlvbiIsImNvbXBhcmVzVG9UZXJtQW5kUHJvcGVydHlSZWxhdGlvbiIsImNvbXBhcmVUZXJtQW5kUHJvcGVydHlSZWxhdGlvbiIsInVuaWZ5U3RlcFdpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24iLCJnZXRTaWduYXR1cmVBc3NlcnRpb24iLCJzaWduYXR1cmVBc3NlcnRpb25TdHJpbmciLCJzdGVwVW5pZmllcyIsImNvbXBhcmVTdGVwV2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJjb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImNvbXBhcmVTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFrV2FBOzs7ZUFBQUE7OzsyQkFoV2tCO2lFQUVWO3lCQUVHOzs7Ozs7QUFFeEIsTUFBTSxFQUFFQyxhQUFhLEVBQUUsR0FBR0MseUJBQWM7QUFFeEMsZUFBZUMsa0JBQWtCQyxJQUFJLEVBQUVDLE9BQU87SUFDNUMsSUFBSUMsc0JBQXNCO0lBRTFCLE1BQU1DLFlBQVlILEtBQUtJLFdBQVc7SUFFbEMsSUFBSUQsV0FBVztRQUNiLE1BQU1FLFlBQVlMLEtBQUtNLFlBQVksSUFDN0JDLE9BQU9OLFFBQVFPLG1CQUFtQixDQUFDSDtRQUV6QyxJQUFJRSxTQUFTLE1BQU07WUFDakIsTUFBTUUsYUFBYVQsS0FBS1UsU0FBUyxJQUMzQkMsYUFBYUosS0FBS0csU0FBUztZQUVqQ1QsUUFBUVcsS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFSCxXQUFXLGlCQUFpQixFQUFFRSxXQUFXLFNBQVMsQ0FBQztZQUVsRixNQUFNRSw0QkFBNEJaLFFBQVFhLDRCQUE0QixJQUNoRUMsd0NBQXdDLE1BQU1SLEtBQUtTLHFDQUFxQyxDQUFDaEIsTUFBTWEsMkJBQTJC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
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdW5pZmljYXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBlbGVtZW50cyBmcm9tIFwiLi4vZWxlbWVudHNcIjtcblxuaW1wb3J0IHsgZGVzY2VuZCB9IGZyb20gXCIuL2NvbnRleHRcIjtcblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwV2l0aFJ1bGUoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoUnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJ1bGUgPSBjb250ZXh0LmZpbmRSdWxlQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIHJ1bGVTdHJpbmcgPSBydWxlLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7cnVsZVN0cmluZ30nIHJ1bGUuLi5gKTtcblxuICAgICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgICAgc3RlcEFuZFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNVbmlmeSA9IGF3YWl0IHJ1bGUudW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoUnVsZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc1dpdGhSdWxlKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3J1bGVTdHJpbmd9JyBydWxlLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc1dpdGhSdWxlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoUmVmZXJlbmNlKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHN0ZXAuZ2V0UmVmZXJlbmNlKCk7XG5cbiAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IHRvcExldmVsQXNzZXJ0aW9uID0gY29udGV4dC5maW5kVG9wTGV2ZWxBc3NlcnRpb25CeVJlZmVyZW5jZShyZWZlcmVuY2UpO1xuXG4gICAgaWYgKHRvcExldmVsQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgdG9wTGV2ZWxBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWV0YUxldmVsID0gY29udGV4dC5pc01ldGFMZXZlbCgpO1xuXG4gICAgICBpZiAobWV0YUxldmVsKSB7XG4gICAgICAgIGRlc2NlbmQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCB7IE1ldGFMZXZlbEFzc3VtcHRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICAgICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb24gPSBNZXRhTGV2ZWxBc3N1bXB0aW9uLmZyb21TdGVwKHN0ZXAsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbi52YWxpZGF0ZShjb250ZXh0KTtcblxuICAgICAgICAgIHN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSA9IHRydWU7XG4gICAgICAgIH0sIGNvbnRleHQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhSZWZlcmVuY2UpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNXaXRoUmVmZXJlbmNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBXaXRoVG9wTGV2ZWxBc3NlcnRpb24oc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gIGlmIChyZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IGNvbnRleHQuZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmICh0b3BMZXZlbEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3RvcExldmVsQXNzZXJ0aW9uU3RyaW5nfScgdG9wIGxldmVsIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBjb25zdCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zID0gY29udGV4dC5nZXRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zKCksXG4gICAgICAgICAgICBzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5ID0gYXdhaXQgdG9wTGV2ZWxBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgICAgaWYgKHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkpIHtcbiAgICAgICAgc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNXaXRoVG9wTGV2ZWxBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7dG9wTGV2ZWxBc3NlcnRpb25TdHJpbmd9JyB0b3AgbGV2ZWwgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc1dpdGhUb3BMZXZlbEFzc2VydGlvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwV2l0aFNpZ25hdHVyZUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCBzaWduYXR1cmVBc3NlcnRpb24gPSBzdGVwLmdldFNpZ25hdHVyZUFzc2VydGlvbigpO1xuXG4gIGlmIChzaWduYXR1cmVBc3NlcnRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb25TdHJpbmcgPSBzaWduYXR1cmVBc3NlcnRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7c2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nfScgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgY29uc3Qgc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IGNvbnRleHQuZ2V0U3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucygpLFxuICAgICAgICAgIHN0ZXBBbmRTdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zVW5pZnkgPSBhd2FpdCBzaWduYXR1cmVBc3NlcnRpb24udW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBzdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zLCBjb250ZXh0KTtcblxuICAgIGlmIChzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5KSB7XG4gICAgICBzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChzdGVwVW5pZmllc1dpdGhTaWduYXR1cmVBc3NlcnRpb24pIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke3NpZ25hdHVyZUFzc2VydGlvblN0cmluZ30nIHNpZ25hdHVyZSBhc3NlcnRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzV2l0aFNpZ25hdHVyZUFzc2VydGlvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNVbnF1YWxpZmllZEVxdWFsaXR5KHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQVVucXVhbGlmaWVkRXF1YWxpdHkgPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoZXF1YWxpdHkgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQgZXF1YWxpdHkuLi5gKTtcblxuICAgICAgc3RlcFVuaWZpZXNBVW5xdWFsaWZpZWRFcXVhbGl0eSA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FVbnF1YWxpZmllZEVxdWFsaXR5KSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGFuIHVucXVhbGlmaWVkIGVxdWFsaXR5LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FVbnF1YWxpZmllZEVxdWFsaXR5O1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1VOcXVhbGlmaWVkSnVkZ2VtZW50KHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudCA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChqdWRnZW1lbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQganVkZ2VtZW50Li4uYCk7XG5cbiAgICAgIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudCA9IHRydWU7XG5cbiAgICAgIGlmIChzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRKdWRnZW1lbnQpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQganVkZ2VtZW50LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRKdWRnZW1lbnQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRUeXBlQXNzZXJ0aW9uKHN0ZXAsIGNvbnRleHQpIHtcbiAgbGV0IHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgVHlwZUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAodHlwZUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCB0eXBlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRUeXBlQXNzZXJ0aW9uID0gdHJ1ZTtcblxuICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQgdHlwZSBhc3NlcnRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFR5cGVBc3NlcnRpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IHVucXVhbGlmaWVkID0gc3RlcC5pc1VucXVhbGlmaWVkKCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkKSB7XG4gICAgY29uc3QgeyBQcm9wZXJ0eUFzc2VydGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTtcblxuICAgIGlmIChwcm9wZXJ0eUFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RlcFN0cmluZyA9IHN0ZXAuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCBhcyBhbiB1bnF1YWxpZmllZCBwcm9wZXJ0eSBhc3NlcnRpb24uLi5gKTtcblxuICAgICAgc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkUHJvcGVydHlBc3NlcnRpb24gPSB0cnVlO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkUHJvcGVydHlBc3NlcnRpb24pIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYW4gdW5xdWFsaWZpZWQgcHJvcGVydHkgYXNzZXJ0aW9uLmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRQcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdW5pZnlTdGVwQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbihzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb24gPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHsgU2lnbmF0dXJlQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpLFxuICAgICAgICAgIHNpZ25hdHVyZUFzc2VydGlvbiA9IFNpZ25hdHVyZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7XG5cbiAgICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbi4uLmApO1xuXG4gICAgICBzdGVwVW5pZmllc0FzVW5xdWFsaWZpZWRTaWduYXR1cmVBc3NlcnRpb24gPSB0cnVlO1xuXG4gICAgICBpZiAoc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkU2lnbmF0dXJlQXNzZXJ0aW9uKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbi5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkU2lnbmF0dXJlQXNzZXJ0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2Uoc3RlcCwgY29udGV4dCkge1xuICBsZXQgc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2UgPSBmYWxzZTtcblxuICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gIGlmIChyZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IGNvbnRleHQuZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UocmVmZXJlbmNlKTtcblxuICAgIGlmICh0b3BMZXZlbEFzc2VydGlvbiAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgICAgc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSgpO1xuXG4gICAgICBpZiAoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICAgICAgICBzaWduYXR1cmVBc3NlcnRpb24gPSBjb250ZXh0LmZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUoc2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIGFzIGEgc2lnbmF0dXJlIGFzc2VydGlvbiB3aXRoIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyByZWZlcmVuY2UuLi5gKTtcblxuICAgICAgICBjb25zdCB1bmlmeVRvcExldmVsQXNzZXJ0aW9uID0gYXdhaXQgc2lnbmF0dXJlQXNzZXJ0aW9uLnVuaWZ5VG9wTGV2ZWxBc3NlcnRpb24odG9wTGV2ZWxBc3NlcnRpb24sIGNvbnRleHQpO1xuXG4gICAgICAgIGlmICh1bmlmeVRvcExldmVsQXNzZXJ0aW9uKSB7XG4gICAgICAgICAgc3RlcFVuaWZpZXNBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2UgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0ZXBVbmlmaWVzQXNTaWduYXR1cmVBc3NlcnRpb25XaXRoUmVmZXJlbmNlKSB7XG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgYXMgYSBzaWduYXR1cmUgYXNzZXJ0aW9uIHdpdGggdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZS5gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGVwVW5pZmllc0FzU2lnbmF0dXJlQXNzZXJ0aW9uV2l0aFJlZmVyZW5jZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29tcGFyZVN0ZXBXaXRoU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyhzdGVwLCBjb250ZXh0KSB7XG4gIGxldCBzdGVwQ29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBmYWxzZTtcblxuICBjb25zdCB1bnF1YWxpZmllZCA9IHN0ZXAuaXNVbnF1YWxpZmllZCgpO1xuXG4gIGlmICh1bnF1YWxpZmllZCkge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgQ29tcGFyaW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSBzdWJwcm9vZnMgb3IgcHJvb2YgYXNzc2VydGlvbnMuLi5gKTtcblxuICAgIGNvbnN0IHN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMgPSBjb250ZXh0LmdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoKSxcbiAgICAgICAgICBjb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IHN0ZXAuY29tcGFyZVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMoc3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucywgY29udGV4dCk7XG5cbiAgICBpZiAoY29tcGFyZXNUb1N1YnByb29mT3JQcm9vZkFzc2VydGlvbnMpIHtcbiAgICAgIHN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4uY29tcGFyZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlIHN1YnByb29mcyBvciBwcm9vZiBhc3NzZXJ0aW9ucy5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RlcENvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zO1xufVxuXG5leHBvcnQgY29uc3QgdW5pZnlTdGVwcyA9IFtcbiAgdW5pZnlTdGVwV2l0aFJ1bGUsXG4gIHVuaWZ5U3RlcFdpdGhSZWZlcmVuY2UsXG4gIHVuaWZ5U3RlcFdpdGhUb3BMZXZlbEFzc2VydGlvbixcbiAgdW5pZnlTdGVwV2l0aFNpZ25hdHVyZUFzc2VydGlvbixcbiAgdW5pZnlTdGVwQXNVbnF1YWxpZmllZEVxdWFsaXR5LFxuICB1bmlmeVN0ZXBBc1VOcXVhbGlmaWVkSnVkZ2VtZW50LFxuICB1bmlmeVN0ZXBBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbixcbiAgdW5pZnlTdGVwQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc1VucXVhbGlmaWVkU2lnbmF0dXJlQXNzZXJ0aW9uLFxuICB1bmlmeVN0ZXBBc1NpZ25hdHVyZUFzc2VydGlvbldpdGhSZWZlcmVuY2UsXG4gIGNvbXBhcmVTdGVwV2l0aFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnNcbl07XG4iXSwibmFtZXMiOlsidW5pZnlTdGVwcyIsInVuaWZ5U3RlcFdpdGhSdWxlIiwic3RlcCIsImNvbnRleHQiLCJzdGVwVW5pZmllc1dpdGhSdWxlIiwicmVmZXJlbmNlIiwiZ2V0UmVmZXJlbmNlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2UiLCJzdGVwU3RyaW5nIiwiZ2V0U3RyaW5nIiwicnVsZVN0cmluZyIsInRyYWNlIiwic3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImdldFN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiLCJzdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9uc1VuaWZ5IiwidW5pZnlTdGVwQW5kU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImRlYnVnIiwidW5pZnlTdGVwV2l0aFJlZmVyZW5jZSIsInN0ZXBVbmlmaWVzV2l0aFJlZmVyZW5jZSIsInJlZmVyZW5jZVN0cmluZyIsInRvcExldmVsQXNzZXJ0aW9uIiwiZmluZFRvcExldmVsQXNzZXJ0aW9uQnlSZWZlcmVuY2UiLCJtZXRhTGV2ZWwiLCJpc01ldGFMZXZlbCIsImRlc2NlbmQiLCJNZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZWxlbWVudHMiLCJtZXRhTGV2ZWxBc3N1bXB0aW9uIiwiZnJvbVN0ZXAiLCJ2YWxpZGF0ZSIsInVuaWZ5U3RlcFdpdGhUb3BMZXZlbEFzc2VydGlvbiIsInN0ZXBVbmlmaWVzV2l0aFRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJ1bmlmeVN0ZXBXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNXaXRoU2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uIiwic2lnbmF0dXJlQXNzZXJ0aW9uU3RyaW5nIiwidW5pZnlTdGVwQXNVbnF1YWxpZmllZEVxdWFsaXR5Iiwic3RlcFVuaWZpZXNBVW5xdWFsaWZpZWRFcXVhbGl0eSIsInVucXVhbGlmaWVkIiwiaXNVbnF1YWxpZmllZCIsIkVxdWFsaXR5Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZXF1YWxpdHkiLCJmcm9tU3RhdGVtZW50IiwidW5pZnlTdGVwQXNVTnF1YWxpZmllZEp1ZGdlbWVudCIsInN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZEp1ZGdlbWVudCIsIkp1ZGdlbWVudCIsImp1ZGdlbWVudCIsInVuaWZ5U3RlcEFzVW5xdWFsaWZpZWRUeXBlQXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkVHlwZUFzc2VydGlvbiIsIlR5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwidW5pZnlTdGVwQXNVbnF1YWxpZmllZFByb3BlcnR5QXNzZXJ0aW9uIiwic3RlcFVuaWZpZXNBc1VucXVhbGlmaWVkUHJvcGVydHlBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uIiwidW5pZnlTdGVwQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbiIsInN0ZXBVbmlmaWVzQXNVbnF1YWxpZmllZFNpZ25hdHVyZUFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsInVuaWZ5U3RlcEFzU2lnbmF0dXJlQXNzZXJ0aW9uV2l0aFJlZmVyZW5jZSIsInN0ZXBVbmlmaWVzQXNTaWduYXR1cmVBc3NlcnRpb25XaXRoUmVmZXJlbmNlIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJzaWduYXR1cmVBc3NlcnRpb25Ob2RlIiwiZ2V0U2lnbmF0dXJlQXNzZXJ0aW9uTm9kZSIsImZpbmRBc3NlcnRpb25CeUFzc2VydGlvbk5vZGUiLCJ1bmlmeVRvcExldmVsQXNzZXJ0aW9uIiwiY29tcGFyZVN0ZXBXaXRoU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsInN0ZXBDb21wYXJlc1RvU3VicHJvb2ZPclByb29mQXNzZXJ0aW9ucyIsImNvbXBhcmVzVG9TdWJwcm9vZk9yUHJvb2ZBc3NlcnRpb25zIiwiY29tcGFyZVN1YnByb29mT3JQcm9vZkFzc2VydGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQXFVYUE7OztlQUFBQTs7O2lFQW5VUTt5QkFFRzs7Ozs7O0FBRXhCLGVBQWVDLGtCQUFrQkMsSUFBSSxFQUFFQyxPQUFPO0lBQzVDLElBQUlDLHNCQUFzQjtJQUUxQixNQUFNQyxZQUFZSCxLQUFLSSxZQUFZO0lBRW5DLElBQUlELGNBQWMsTUFBTTtRQUN0QixNQUFNRSxPQUFPSixRQUFRSyxtQkFBbUIsQ0FBQ0g7UUFFekMsSUFBSUUsU0FBUyxN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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.920",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"argumentative": "^2.0.47",
|
|
14
14
|
"necessary": "^17.1.7",
|
|
15
|
-
"occam-furtle": "^3.0.
|
|
15
|
+
"occam-furtle": "^3.0.197",
|
|
16
16
|
"occam-grammars": "^1.3.524",
|
|
17
|
-
"occam-languages": "^0.0.
|
|
17
|
+
"occam-languages": "^0.0.202",
|
|
18
18
|
"occam-lexers": "^23.1.44",
|
|
19
19
|
"occam-model": "^1.0.506",
|
|
20
|
-
"occam-nominal": "^1.0.
|
|
20
|
+
"occam-nominal": "^1.0.105",
|
|
21
21
|
"occam-parsers": "^23.1.50",
|
|
22
22
|
"occam-server": "^7.0.7"
|
|
23
23
|
},
|
package/src/context/bounded.js
CHANGED
|
@@ -4,7 +4,7 @@ import { arrayUtilities } from "necessary";
|
|
|
4
4
|
|
|
5
5
|
import Context from "../context";
|
|
6
6
|
|
|
7
|
-
import { mergeEquivalences,
|
|
7
|
+
import { mergeEquivalences, equivalencesFromEquality, separateGroundedTermsAndDefinedVariables } from "../utilities/equivalences";
|
|
8
8
|
|
|
9
9
|
const { last, filter } = arrayUtilities;
|
|
10
10
|
|
|
@@ -240,8 +240,6 @@ class BoundedContext extends Context {
|
|
|
240
240
|
return comparesToTermAndPropertyRelation;
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
-
findEquivalenceByTerm(term) { return findEquivalenceByTerm(this.equivalences, term); }
|
|
244
|
-
|
|
245
243
|
findDeclaredJudgementByMetavariableNode(metavariableNode) {
|
|
246
244
|
const declaredJudgements = this.getDeclaredJudgements(),
|
|
247
245
|
declaredJudgement = declaredJudgements.find((declaredJudgement) => {
|