occam-verify-cli 0.0.865 → 0.0.866
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/axiomLemmaTheoremConjecture.js +7 -7
- package/lib/context/file.js +128 -68
- package/lib/context/local.js +4 -4
- package/lib/context/release.js +13 -1
- package/lib/label.js +6 -6
- package/lib/metaConsequent.js +88 -0
- package/lib/metaLemma.js +126 -0
- package/lib/metaLemmaMetatheorem.js +196 -0
- package/lib/metaSupposition.js +140 -0
- package/lib/metaType.js +33 -3
- package/lib/metaTypeNames.js +13 -4
- package/lib/metaTypes.js +9 -4
- package/lib/metatheorem.js +9 -9
- package/lib/mixins/context.js +30 -22
- package/lib/rule.js +7 -7
- package/lib/ruleNames.js +5 -1
- package/lib/step/metaproof.js +18 -4
- package/lib/type.js +9 -1
- package/lib/utilities/name.js +52 -0
- package/lib/utilities/query.js +1 -38
- package/lib/verifier/node/metastatement.js +3 -3
- package/lib/verifier/nodes/statementAgainstCombinator.js +4 -4
- package/lib/verifier/nodes/termAgainstConstructor.js +3 -3
- package/lib/verify/declaration/topLevel.js +11 -3
- package/lib/verify/givenMetavariable.js +31 -0
- package/lib/verify/givenType.js +2 -3
- package/lib/verify/label.js +3 -4
- package/lib/verify/metaConsequent.js +36 -0
- package/lib/verify/metaDerivation.js +111 -0
- package/lib/verify/metaLemma.js +51 -0
- package/lib/verify/metaSupposition.js +40 -0
- package/lib/verify/metaSuppositions.js +28 -0
- package/lib/verify/metaproof.js +34 -0
- package/lib/verify/metastatement/qualified.js +2 -2
- package/lib/verify/metatheorem.js +50 -0
- package/lib/verify/metavariable.js +30 -10
- package/lib/verify/proof.js +3 -3
- package/lib/verify/statement/qualified.js +28 -28
- package/lib/verify/termAsConstructor.js +4 -5
- package/lib/verify/type.js +18 -20
- package/lib/verify/variable.js +13 -16
- package/package.json +4 -4
- package/src/axiomLemmaTheoremConjecture.js +6 -6
- package/src/context/file.js +132 -61
- package/src/context/local.js +1 -1
- package/src/context/release.js +13 -0
- package/src/label.js +4 -6
- package/src/metaConsequent.js +58 -0
- package/src/metaLemma.js +9 -0
- package/src/metaLemmaMetatheorem.js +194 -0
- package/src/metaSupposition.js +103 -0
- package/src/metaType.js +23 -3
- package/src/metaTypeNames.js +1 -0
- package/src/metaTypes.js +8 -1
- package/src/metatheorem.js +4 -4
- package/src/mixins/context.js +20 -14
- package/src/rule.js +6 -6
- package/src/ruleNames.js +1 -0
- package/src/step/metaproof.js +20 -4
- package/src/type.js +10 -0
- package/src/utilities/name.js +50 -0
- package/src/utilities/query.js +0 -47
- package/src/verifier/node/metastatement.js +2 -1
- package/src/verifier/nodes/statementAgainstCombinator.js +3 -3
- package/src/verifier/nodes/termAgainstConstructor.js +3 -4
- package/src/verify/declaration/topLevel.js +14 -0
- package/src/verify/givenMetavariable.js +31 -0
- package/src/verify/givenType.js +1 -4
- package/src/verify/label.js +2 -5
- package/src/verify/metaConsequent.js +36 -0
- package/src/verify/metaDerivation.js +151 -0
- package/src/verify/metaLemma.js +67 -0
- package/src/verify/metaSupposition.js +44 -0
- package/src/verify/metaSuppositions.js +17 -0
- package/src/verify/metaproof.js +32 -0
- package/src/verify/metastatement/qualified.js +2 -3
- package/src/verify/metatheorem.js +62 -0
- package/src/verify/metavariable.js +46 -16
- package/src/verify/proof.js +2 -2
- package/src/verify/statement/qualified.js +27 -23
- package/src/verify/termAsConstructor.js +4 -6
- package/src/verify/type.js +20 -22
- package/src/verify/variable.js +14 -17
- package/lib/ruleMetatheorem.js +0 -253
- package/src/ruleMetatheorem.js +0 -274
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return verifyMetaSupposition;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _metaproof = /*#__PURE__*/ _interop_require_default(require("../step/metaproof"));
|
|
12
|
+
var _metaSupposition = /*#__PURE__*/ _interop_require_default(require("../metaSupposition"));
|
|
13
|
+
var _unqualified = /*#__PURE__*/ _interop_require_default(require("../verify/metastatement/unqualified"));
|
|
14
|
+
var _query = require("../utilities/query");
|
|
15
|
+
var _assignments = require("../utilities/assignments");
|
|
16
|
+
function _interop_require_default(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
var metastatementNodeQuery = (0, _query.nodeQuery)("/unqualifiedMetastatement/metastatement!"), unqualifiedMetastatementNodeQuery = (0, _query.nodeQuery)("/metaSupposition/unqualifiedMetastatement!");
|
|
22
|
+
function verifyMetaSupposition(metaSuppositionNode, metaSuppositions, localContext) {
|
|
23
|
+
var metaSuppositionVerified = false;
|
|
24
|
+
var metaSuppositionString = localContext.nodeAsString(metaSuppositionNode);
|
|
25
|
+
localContext.trace("Verifying the '".concat(metaSuppositionString, "' meta-supposition..."), metaSuppositionNode);
|
|
26
|
+
var derived = false, assignments = [], unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaSuppositionNode), unqualifiedMetastatementVerified = (0, _unqualified.default)(unqualifiedMetastatementNode, assignments, derived, localContext);
|
|
27
|
+
if (unqualifiedMetastatementVerified) {
|
|
28
|
+
var assignmentAssigned = (0, _assignments.assignAssignment)(assignments, localContext);
|
|
29
|
+
metaSuppositionVerified = assignmentAssigned; ///
|
|
30
|
+
}
|
|
31
|
+
if (metaSuppositionVerified) {
|
|
32
|
+
var metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode), metaSupposition = _metaSupposition.default.fromMetastatementNode(metastatementNode), metaproofStep = _metaproof.default.fromMetastatementNode(metastatementNode);
|
|
33
|
+
metaSuppositions.push(metaSupposition);
|
|
34
|
+
localContext.addMetaproofStep(metaproofStep);
|
|
35
|
+
localContext.debug("...verified the '".concat(metaSuppositionString, "' meta-supposition."), metaSuppositionNode);
|
|
36
|
+
}
|
|
37
|
+
return metaSuppositionVerified;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YVN1cHBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXByb29mU3RlcCBmcm9tIFwiLi4vc3RlcC9tZXRhcHJvb2ZcIjtcbmltcG9ydCBNZXRhU3VwcG9zaXRpb24gZnJvbSBcIi4uL21ldGFTdXBwb3NpdGlvblwiO1xuaW1wb3J0IHZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCBmcm9tIFwiLi4vdmVyaWZ5L21ldGFzdGF0ZW1lbnQvdW5xdWFsaWZpZWRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgYXNzaWduQXNzaWdubWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXNzaWdubWVudHNcIjtcblxuY29uc3QgbWV0YXN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi91bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQvbWV0YXN0YXRlbWVudCFcIiksXG4gICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YVN1cHBvc2l0aW9uL3VucXVhbGlmaWVkTWV0YXN0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeU1ldGFTdXBwb3NpdGlvbihtZXRhU3VwcG9zaXRpb25Ob2RlLCBtZXRhU3VwcG9zaXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YVN1cHBvc2l0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhU3VwcG9zaXRpb25Ob2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YVN1cHBvc2l0aW9uU3RyaW5nfScgbWV0YS1zdXBwb3NpdGlvbi4uLmAsIG1ldGFTdXBwb3NpdGlvbk5vZGUpO1xuXG4gIGNvbnN0IGRlcml2ZWQgPSBmYWxzZSxcbiAgICAgICAgYXNzaWdubWVudHMgPSBbXSxcbiAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSA9IHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeShtZXRhU3VwcG9zaXRpb25Ob2RlKSxcbiAgICAgICAgdW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgY29uc3QgYXNzaWdubWVudEFzc2lnbmVkID0gYXNzaWduQXNzaWdubWVudChhc3NpZ25tZW50cywgbG9jYWxDb250ZXh0KTtcblxuICAgIG1ldGFTdXBwb3NpdGlvblZlcmlmaWVkID0gYXNzaWdubWVudEFzc2lnbmVkOyAvLy9cbiAgfVxuXG4gIGlmIChtZXRhU3VwcG9zaXRpb25WZXJpZmllZCkge1xuICAgIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhU3VwcG9zaXRpb24gPSBNZXRhU3VwcG9zaXRpb24uZnJvbU1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhcHJvb2ZTdGVwID0gTWV0YXByb29mU3RlcC5mcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgbWV0YVN1cHBvc2l0aW9ucy5wdXNoKG1ldGFTdXBwb3NpdGlvbik7XG5cbiAgICBsb2NhbENvbnRleHQuYWRkTWV0YXByb29mU3RlcChtZXRhcHJvb2ZTdGVwKTtcblxuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGFTdXBwb3NpdGlvblN0cmluZ30nIG1ldGEtc3VwcG9zaXRpb24uYCwgbWV0YVN1cHBvc2l0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5TWV0YVN1cHBvc2l0aW9uIiwibWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm1ldGFTdXBwb3NpdGlvbk5vZGUiLCJtZXRhU3VwcG9zaXRpb25zIiwibG9jYWxDb250ZXh0IiwibWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQiLCJtZXRhU3VwcG9zaXRpb25TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsImRlcml2ZWQiLCJhc3NpZ25tZW50cyIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJ1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCIsImFzc2lnbm1lbnRBc3NpZ25lZCIsImFzc2lnbkFzc2lnbm1lbnQiLCJtZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFTdXBwb3NpdGlvbiIsIk1ldGFTdXBwb3NpdGlvbiIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFwcm9vZlN0ZXAiLCJNZXRhcHJvb2ZTdGVwIiwicHVzaCIsImFkZE1ldGFwcm9vZlN0ZXAiLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7OztnRUFWRTtzRUFDRTtrRUFDZTtxQkFFakI7MkJBQ087Ozs7OztBQUVqQyxJQUFNQyx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMsNkNBQ25DQyxvQ0FBb0NELElBQUFBLGdCQUFTLEVBQUM7QUFFckMsU0FBU0Ysc0JBQXNCSSxtQkFBbUIsRUFBRUMsZ0JBQWdCLEVBQUVDLFlBQVk7SUFDL0YsSUFBSUMsMEJBQTBCO0lBRTlCLElBQU1DLHdCQUF3QkYsYUFBYUcsWUFBWSxDQUFDTDtJQUV4REUsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQXVDLE9BQXRCRix1QkFBc0IsMEJBQXdCSjtJQUVuRixJQUFNTyxVQUFVLE9BQ1ZDLGNBQWMsRUFBRSxFQUNoQkMsK0JBQStCVixrQ0FBa0NDLHNCQUNqRVUsbUNBQW1DQyxJQUFBQSxvQkFBOEIsRUFBQ0YsOEJBQThCRCxhQUFhRCxTQUFTTDtJQUU1SCxJQUFJUSxrQ0FBa0M7UUFDcEMsSUFBTUUscUJBQXFCQyxJQUFBQSw2QkFBZ0IsRUFBQ0wsYUFBYU47UUFFekRDLDBCQUEwQlMsb0JBQW9CLEdBQUc7SUFDbkQ7SUFFQSxJQUFJVCx5QkFBeUI7UUFDM0IsSUFBTVcsb0JBQW9CakIsdUJBQXVCWSwrQkFDM0NNLGtCQUFrQkMsd0JBQWUsQ0FBQ0MscUJBQXFCLENBQUNILG9CQUN4REksZ0JBQWdCQyxrQkFBYSxDQUFDRixxQkFBcUIsQ0FBQ0g7UUFFMURiLGlCQUFpQm1CLElBQUksQ0FBQ0w7UUFFdEJiLGFBQWFtQixnQkFBZ0IsQ0FBQ0g7UUFFOUJoQixhQUFhb0IsS0FBSyxDQUFDLEFBQUMsb0JBQXlDLE9BQXRCbEIsdUJBQXNCLHdCQUFzQko7SUFDckY7SUFFQSxPQUFPRztBQUNUIn0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return verifyMetaSuppositions;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _metaSupposition = /*#__PURE__*/ _interop_require_default(require("../verify/metaSupposition"));
|
|
12
|
+
function _interop_require_default(obj) {
|
|
13
|
+
return obj && obj.__esModule ? obj : {
|
|
14
|
+
default: obj
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, localContext) {
|
|
18
|
+
var metaSuppositionsVerified;
|
|
19
|
+
metaSuppositionsVerified = metaSuppositionNodes.every(function(metaSuppositionNode) {
|
|
20
|
+
var metaSuppositionVerified = (0, _metaSupposition.default)(metaSuppositionNode, metaSuppositions, localContext);
|
|
21
|
+
if (metaSuppositionVerified) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return metaSuppositionsVerified;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YVN1cHBvc2l0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeU1ldGFTdXBwb3NpdGlvbiBmcm9tIFwiLi4vdmVyaWZ5L21ldGFTdXBwb3NpdGlvblwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhU3VwcG9zaXRpb25zKG1ldGFTdXBwb3NpdGlvbk5vZGVzLCBtZXRhU3VwcG9zaXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IG1ldGFTdXBwb3NpdGlvbnNWZXJpZmllZDtcblxuICBtZXRhU3VwcG9zaXRpb25zVmVyaWZpZWQgPSBtZXRhU3VwcG9zaXRpb25Ob2Rlcy5ldmVyeSgobWV0YVN1cHBvc2l0aW9uTm9kZSkgPT4ge1xuICAgIGNvbnN0IG1ldGFTdXBwb3NpdGlvblZlcmlmaWVkID0gdmVyaWZ5TWV0YVN1cHBvc2l0aW9uKG1ldGFTdXBwb3NpdGlvbk5vZGUsIG1ldGFTdXBwb3NpdGlvbnMsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFTdXBwb3NpdGlvbnNWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhU3VwcG9zaXRpb25zIiwibWV0YVN1cHBvc2l0aW9uTm9kZXMiLCJtZXRhU3VwcG9zaXRpb25zIiwibG9jYWxDb250ZXh0IiwibWV0YVN1cHBvc2l0aW9uc1ZlcmlmaWVkIiwiZXZlcnkiLCJtZXRhU3VwcG9zaXRpb25Ob2RlIiwibWV0YVN1cHBvc2l0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhU3VwcG9zaXRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlBOzs7ZUFBd0JBOzs7c0VBRlU7Ozs7OztBQUVuQixTQUFTQSx1QkFBdUJDLG9CQUFvQixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWTtJQUNqRyxJQUFJQztJQUVKQSwyQkFBMkJILHFCQUFxQkksS0FBSyxDQUFDLFNBQUNDO1FBQ3JELElBQU1DLDBCQUEwQkMsSUFBQUEsd0JBQXFCLEVBQUNGLHFCQUFxQkosa0JBQWtCQztRQUU3RixJQUFJSSx5QkFBeUI7WUFDM0IsT0FBTztRQUNUO0lBQ0Y7SUFFQSxPQUFPSDtBQUNUIn0=
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return verifyMetaproof;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
|
|
12
|
+
var _metaDerivation = /*#__PURE__*/ _interop_require_default(require("../verify/metaDerivation"));
|
|
13
|
+
var _query = require("../utilities/query");
|
|
14
|
+
function _interop_require_default(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var metaDerivationNodeQuery = (0, _query.nodeQuery)("/metaproof/metaDerivation!");
|
|
20
|
+
function verifyMetaproof(metaproofNode, conclusion, localContext) {
|
|
21
|
+
var metaproofVerified = false;
|
|
22
|
+
localContext = _local.default.fromLocalContext(localContext); ///
|
|
23
|
+
var metaDerivationNode = metaDerivationNodeQuery(metaproofNode), metaDerivationVerified = (0, _metaDerivation.default)(metaDerivationNode, localContext);
|
|
24
|
+
if (metaDerivationVerified) {
|
|
25
|
+
var lastMetaproofStep = localContext.getLastMetaproofStep();
|
|
26
|
+
if (lastMetaproofStep !== null) {
|
|
27
|
+
var metaproofStep = lastMetaproofStep, metastatementNode = metaproofStep.getMetastatementNode(), conclusionMetastatementNode = conclusion.getMetastatementNode(), metastatementNodeMatchesConclusionMetastatementNode = metastatementNode.match(conclusionMetastatementNode);
|
|
28
|
+
metaproofVerified = metastatementNodeMatchesConclusionMetastatementNode; ///
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return metaproofVerified;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXByb29mLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsXCI7XG5pbXBvcnQgdmVyaWZ5TWV0YURlcml2YXRpb24gZnJvbSBcIi4uL3ZlcmlmeS9tZXRhRGVyaXZhdGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IG1ldGFEZXJpdmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGFwcm9vZi9tZXRhRGVyaXZhdGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeU1ldGFwcm9vZihtZXRhcHJvb2ZOb2RlLCBjb25jbHVzaW9uLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IG1ldGFwcm9vZlZlcmlmaWVkID0gZmFsc2U7XG5cbiAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Mb2NhbENvbnRleHQobG9jYWxDb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgbWV0YURlcml2YXRpb25Ob2RlID0gbWV0YURlcml2YXRpb25Ob2RlUXVlcnkobWV0YXByb29mTm9kZSksXG4gICAgICAgIG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQgPSB2ZXJpZnlNZXRhRGVyaXZhdGlvbihtZXRhRGVyaXZhdGlvbk5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKG1ldGFEZXJpdmF0aW9uVmVyaWZpZWQpIHtcbiAgICBjb25zdCBsYXN0TWV0YXByb29mU3RlcCA9IGxvY2FsQ29udGV4dC5nZXRMYXN0TWV0YXByb29mU3RlcCgpO1xuXG4gICAgaWYgKGxhc3RNZXRhcHJvb2ZTdGVwICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBtZXRhcHJvb2ZTdGVwID0gbGFzdE1ldGFwcm9vZlN0ZXAsIC8vL1xuICAgICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhcHJvb2ZTdGVwLmdldE1ldGFzdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUgPSBjb25jbHVzaW9uLmdldE1ldGFzdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXNDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZS5tYXRjaChjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBtZXRhcHJvb2ZWZXJpZmllZCA9IG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlc0NvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZTsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZXRhcHJvb2ZWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhcHJvb2YiLCJtZXRhRGVyaXZhdGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsIm1ldGFwcm9vZk5vZGUiLCJjb25jbHVzaW9uIiwibG9jYWxDb250ZXh0IiwibWV0YXByb29mVmVyaWZpZWQiLCJMb2NhbENvbnRleHQiLCJmcm9tTG9jYWxDb250ZXh0IiwibWV0YURlcml2YXRpb25Ob2RlIiwibWV0YURlcml2YXRpb25WZXJpZmllZCIsInZlcmlmeU1ldGFEZXJpdmF0aW9uIiwibGFzdE1ldGFwcm9vZlN0ZXAiLCJnZXRMYXN0TWV0YXByb29mU3RlcCIsIm1ldGFwcm9vZlN0ZXAiLCJtZXRhc3RhdGVtZW50Tm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwiY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2giXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVNBOzs7ZUFBd0JBOzs7NERBUEM7cUVBQ1E7cUJBRVA7Ozs7OztBQUUxQixJQUFNQywwQkFBMEJDLElBQUFBLGdCQUFTLEVBQUM7QUFFM0IsU0FBU0YsZ0JBQWdCRyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsWUFBWTtJQUM3RSxJQUFJQyxvQkFBb0I7SUFFeEJELGVBQWVFLGNBQVksQ0FBQ0MsZ0JBQWdCLENBQUNILGVBQWUsR0FBRztJQUUvRCxJQUFNSSxxQkFBcUJSLHdCQUF3QkUsZ0JBQzdDTyx5QkFBeUJDLElBQUFBLHVCQUFvQixFQUFDRixvQkFBb0JKO0lBRXhFLElBQUlLLHdCQUF3QjtRQUMxQixJQUFNRSxvQkFBb0JQLGFBQWFRLG9CQUFvQjtRQUUzRCxJQUFJRCxzQkFBc0IsTUFBTTtZQUM5QixJQUFNRSxnQkFBZ0JGLG1CQUNoQkcsb0JBQW9CRCxjQUFjRSxvQkFBb0IsSUFDdERDLDhCQUE4QmIsV0FBV1ksb0JBQW9CLElBQzdERSxzREFBc0RILGtCQUFrQkksS0FBSyxDQUFDRjtZQUVwRlgsb0JBQW9CWSxxREFBc0QsR0FBRztRQUMvRTtJQUNGO0lBRUEsT0FBT1o7QUFDVCJ9
|
|
@@ -16,7 +16,7 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, d
|
|
|
16
16
|
if (metastatementNode !== null) {
|
|
17
17
|
var metastatementString = localMetaContext.nodeAsString(metastatementNode), metastatementLocalMetaContext = localMetaContext; ///
|
|
18
18
|
localMetaContext.trace("Verifying the '".concat(metastatementString, "' qualified metastatement..."), qualifiedMetastatementNode);
|
|
19
|
-
var referenceNode = referenceNodeQuery(qualifiedMetastatementNode),
|
|
19
|
+
var referenceNode = referenceNodeQuery(qualifiedMetastatementNode), rule = localMetaContext.findRuleByReferenceNode(referenceNode);
|
|
20
20
|
if (rule !== null) {
|
|
21
21
|
var ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, metastatementLocalMetaContext);
|
|
22
22
|
qualifiedMetastatementVerified = ruleMatchesMetastatement; ///
|
|
@@ -28,4 +28,4 @@ function verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, d
|
|
|
28
28
|
return qualifiedMetastatementVerified;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvbWV0YXN0YXRlbWVudC9xdWFsaWZpZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZE1ldGFzdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIG1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkTWV0YXN0YXRlbWVudC9tZXRhc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkTWV0YXN0YXRlbWVudChxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsTWV0YUNvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKG1ldGFzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YXN0YXRlbWVudFN0cmluZyA9IGxvY2FsTWV0YUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhc3RhdGVtZW50TG9jYWxNZXRhQ29udGV4dCA9IGxvY2FsTWV0YUNvbnRleHQ7IC8vL1xuXG4gICAgbG9jYWxNZXRhQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhc3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIG1ldGFzdGF0ZW1lbnQuLi5gLCBxdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBydWxlID0gbG9jYWxNZXRhQ29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICAgIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBydWxlTWF0Y2hlc01ldGFzdGF0ZW1lbnQgPSBydWxlLm1hdGNoTWV0YXN0YXRlbWVudChtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudExvY2FsTWV0YUNvbnRleHQpO1xuXG4gICAgICBxdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQgPSBydWxlTWF0Y2hlc01ldGFzdGF0ZW1lbnQ7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAocXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBsb2NhbE1ldGFDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7bWV0YXN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBtZXRhc3RhdGVtZW50LmAsIHF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZE1ldGFzdGF0ZW1lbnQiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUiLCJhc3NpZ25tZW50cyIsImRlcml2ZWQiLCJsb2NhbE1ldGFDb250ZXh0IiwicXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwibWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwibWV0YXN0YXRlbWVudExvY2FsTWV0YUNvbnRleHQiLCJ0cmFjZSIsInJlZmVyZW5jZU5vZGUiLCJydWxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZU5vZGUiLCJydWxlTWF0Y2hlc01ldGFzdGF0ZW1lbnQiLCJtYXRjaE1ldGFzdGF0ZW1lbnQiLCJkZWJ1ZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBT0E7OztlQUF3QkE7OztxQkFMRTtBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsc0RBQy9CQyx5QkFBeUJELElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsNkJBQTZCSSwwQkFBMEIsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLGdCQUFnQjtJQUNySCxJQUFJQyxpQ0FBaUM7SUFFckMsSUFBTUMsb0JBQW9CTix1QkFBdUJDO0lBRWpELElBQUlLLHNCQUFzQixNQUFNO1FBQzlCLElBQU1DLHNCQUFzQkgsaUJBQWlCSSxZQUFZLENBQUNGLG9CQUNwREcsZ0NBQWdDTCxrQkFBa0IsR0FBRztRQUUzREEsaUJBQWlCTSxLQUFLLENBQUMsQUFBQyxrQkFBcUMsT0FBcEJILHFCQUFvQixpQ0FBK0JOO1FBRTVGLElBQU1VLGdCQUFnQmIsbUJBQW1CRyw2QkFDbkNXLE9BQU9SLGlCQUFpQlMsdUJBQXVCLENBQUNGO1FBRXRELElBQUlDLFNBQVMsTUFBTTtZQUNqQixJQUFNRSwyQkFBMkJGLEtBQUtHLGtCQUFrQixDQUFDVCxtQkFBbUJHO1lBRTVFSixpQ0FBaUNTLDBCQUEyQixHQUFHO1FBQ2pFO1FBRUEsSUFBSVQsZ0NBQWdDO1lBQ2xDRCxpQkFBaUJZLEtBQUssQ0FBQyxBQUFDLG9CQUF1QyxPQUFwQlQscUJBQW9CLCtCQUE2Qk47UUFDOUY7SUFDRjtJQUVBLE9BQU9JO0FBQ1QifQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return verifyMetatheorem;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _metatheorem = /*#__PURE__*/ _interop_require_default(require("../metatheorem"));
|
|
12
|
+
var _labels = /*#__PURE__*/ _interop_require_default(require("../verify/labels"));
|
|
13
|
+
var _metaproof = /*#__PURE__*/ _interop_require_default(require("../verify/metaproof"));
|
|
14
|
+
var _localMeta = /*#__PURE__*/ _interop_require_default(require("../context/localMeta"));
|
|
15
|
+
var _metaConsequent = /*#__PURE__*/ _interop_require_default(require("../verify/metaConsequent"));
|
|
16
|
+
var _metaSuppositions = /*#__PURE__*/ _interop_require_default(require("../verify/metaSuppositions"));
|
|
17
|
+
var _array = require("../utilities/array");
|
|
18
|
+
var _query = require("../utilities/query");
|
|
19
|
+
function _interop_require_default(obj) {
|
|
20
|
+
return obj && obj.__esModule ? obj : {
|
|
21
|
+
default: obj
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
var labelNodesQuery = (0, _query.nodesQuery)("/metatheorem//labels/label"), metaproofNodeQuery = (0, _query.nodeQuery)("/metatheorem/metaproof!"), metaConsequentNodeQuery = (0, _query.nodeQuery)("/metatheorem/metaConsequent!"), metaSuppositionsNodeQuery = (0, _query.nodesQuery)("/metatheorem/metaSupposition");
|
|
25
|
+
function verifyMetatheorem(metatheoremNode, fileContext) {
|
|
26
|
+
var metatheoremVerified = false;
|
|
27
|
+
var labelNodes = labelNodesQuery(metatheoremNode), labelsString = fileContext.nodesAsString(labelNodes), localMetaContext = _localMeta.default.fromFileContext(fileContext);
|
|
28
|
+
fileContext.trace("Verifying the '".concat(labelsString, "' metatheorem..."), metatheoremNode);
|
|
29
|
+
var labels = [], labelsVerified = (0, _labels.default)(labelNodes, labels, fileContext);
|
|
30
|
+
if (labelsVerified) {
|
|
31
|
+
var metaSuppositions = [], metaSuppositionNodes = metaSuppositionsNodeQuery(metatheoremNode), metaSuppositionsVerified = (0, _metaSuppositions.default)(metaSuppositionNodes, metaSuppositions, localMetaContext);
|
|
32
|
+
if (metaSuppositionsVerified) {
|
|
33
|
+
var metaConsequents = [], metaConsequentNode = metaConsequentNodeQuery(metatheoremNode), metaConsequentVerified = (0, _metaConsequent.default)(metaConsequentNode, metaConsequents, localMetaContext);
|
|
34
|
+
if (metaConsequentVerified) {
|
|
35
|
+
var metaproofNode = metaproofNodeQuery(metatheoremNode), firstMetaConsequent = (0, _array.first)(metaConsequents), metaConsequent = firstMetaConsequent, metaproofVerified = (0, _metaproof.default)(metaproofNode, metaConsequent, localMetaContext);
|
|
36
|
+
if (metaproofVerified) {
|
|
37
|
+
var metatheorem = _metatheorem.default.fromLabelsMetaSuppositionsMetaConsequentAndLocalMetaContext(labels, metaSuppositions, metaConsequent, localMetaContext);
|
|
38
|
+
fileContext.addMetatheorem(metatheorem);
|
|
39
|
+
metatheoremVerified = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (metatheoremVerified) {
|
|
45
|
+
fileContext.debug("...verified the '".concat(labelsString, "' metatheorem."), metatheoremNode);
|
|
46
|
+
}
|
|
47
|
+
return metatheoremVerified;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXRoZW9yZW0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBNZXRhdGhlb3JlbSBmcm9tIFwiLi4vbWV0YXRoZW9yZW1cIjtcbmltcG9ydCB2ZXJpZnlMYWJlbHMgZnJvbSBcIi4uL3ZlcmlmeS9sYWJlbHNcIjtcbmltcG9ydCB2ZXJpZnlNZXRhcHJvb2YgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhcHJvb2ZcIjtcbmltcG9ydCBMb2NhbE1ldGFDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsTWV0YVwiO1xuaW1wb3J0IHZlcmlmeU1ldGFDb25zZXF1ZW50IGZyb20gXCIuLi92ZXJpZnkvbWV0YUNvbnNlcXVlbnRcIjtcbmltcG9ydCB2ZXJpZnlNZXRhU3VwcG9zaXRpb25zIGZyb20gXCIuLi92ZXJpZnkvbWV0YVN1cHBvc2l0aW9uc1wiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgbGFiZWxOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhdGhlb3JlbS8vbGFiZWxzL2xhYmVsXCIpLFxuICAgICAgbWV0YXByb29mTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF0aGVvcmVtL21ldGFwcm9vZiFcIiksXG4gICAgICBtZXRhQ29uc2VxdWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdGhlb3JlbS9tZXRhQ29uc2VxdWVudCFcIiksXG4gICAgICBtZXRhU3VwcG9zaXRpb25zTm9kZVF1ZXJ5ID0gbm9kZXNRdWVyeShcIi9tZXRhdGhlb3JlbS9tZXRhU3VwcG9zaXRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeU1ldGF0aGVvcmVtKG1ldGF0aGVvcmVtTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG1ldGF0aGVvcmVtVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBsYWJlbE5vZGVzID0gbGFiZWxOb2Rlc1F1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVzQXNTdHJpbmcobGFiZWxOb2RlcyksXG4gICAgICAgIGxvY2FsTWV0YUNvbnRleHQgPSBMb2NhbE1ldGFDb250ZXh0LmZyb21GaWxlQ29udGV4dChmaWxlQ29udGV4dCk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bGFiZWxzU3RyaW5nfScgbWV0YXRoZW9yZW0uLi5gLCBtZXRhdGhlb3JlbU5vZGUpO1xuXG4gIGNvbnN0IGxhYmVscyA9IFtdLFxuICAgICAgICBsYWJlbHNWZXJpZmllZCA9IHZlcmlmeUxhYmVscyhsYWJlbE5vZGVzLCBsYWJlbHMsIGZpbGVDb250ZXh0KTtcblxuICBpZiAobGFiZWxzVmVyaWZpZWQpIHtcbiAgICBjb25zdCBtZXRhU3VwcG9zaXRpb25zID0gW10sXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9uTm9kZXMgPSBtZXRhU3VwcG9zaXRpb25zTm9kZVF1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgICAgbWV0YVN1cHBvc2l0aW9uc1ZlcmlmaWVkID0gdmVyaWZ5TWV0YVN1cHBvc2l0aW9ucyhtZXRhU3VwcG9zaXRpb25Ob2RlcywgbWV0YVN1cHBvc2l0aW9ucywgbG9jYWxNZXRhQ29udGV4dCk7XG5cbiAgICBpZiAobWV0YVN1cHBvc2l0aW9uc1ZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBtZXRhQ29uc2VxdWVudHMgPSBbXSxcbiAgICAgICAgICAgIG1ldGFDb25zZXF1ZW50Tm9kZSA9IG1ldGFDb25zZXF1ZW50Tm9kZVF1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICBtZXRhQ29uc2VxdWVudFZlcmlmaWVkID0gdmVyaWZ5TWV0YUNvbnNlcXVlbnQobWV0YUNvbnNlcXVlbnROb2RlLCBtZXRhQ29uc2VxdWVudHMsIGxvY2FsTWV0YUNvbnRleHQpO1xuXG4gICAgICBpZiAobWV0YUNvbnNlcXVlbnRWZXJpZmllZCkge1xuICAgICAgICBjb25zdCBtZXRhcHJvb2ZOb2RlID0gbWV0YXByb29mTm9kZVF1ZXJ5KG1ldGF0aGVvcmVtTm9kZSksXG4gICAgICAgICAgICAgIGZpcnN0TWV0YUNvbnNlcXVlbnQgPSBmaXJzdChtZXRhQ29uc2VxdWVudHMpLFxuICAgICAgICAgICAgICBtZXRhQ29uc2VxdWVudCA9IGZpcnN0TWV0YUNvbnNlcXVlbnQsIC8vL1xuICAgICAgICAgICAgICBtZXRhcHJvb2ZWZXJpZmllZCA9IHZlcmlmeU1ldGFwcm9vZihtZXRhcHJvb2ZOb2RlLCBtZXRhQ29uc2VxdWVudCwgbG9jYWxNZXRhQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKG1ldGFwcm9vZlZlcmlmaWVkKSB7XG4gICAgICAgICAgY29uc3QgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tTGFiZWxzTWV0YVN1cHBvc2l0aW9uc01ldGFDb25zZXF1ZW50QW5kTG9jYWxNZXRhQ29udGV4dChsYWJlbHMsIG1ldGFTdXBwb3NpdGlvbnMsIG1ldGFDb25zZXF1ZW50LCBsb2NhbE1ldGFDb250ZXh0KTtcblxuICAgICAgICAgIGZpbGVDb250ZXh0LmFkZE1ldGF0aGVvcmVtKG1ldGF0aGVvcmVtKTtcblxuICAgICAgICAgIG1ldGF0aGVvcmVtVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldGF0aGVvcmVtVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2xhYmVsc1N0cmluZ30nIG1ldGF0aGVvcmVtLmAsIG1ldGF0aGVvcmVtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbWV0YXRoZW9yZW1WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhdGhlb3JlbSIsImxhYmVsTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJtZXRhcHJvb2ZOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJtZXRhQ29uc2VxdWVudE5vZGVRdWVyeSIsIm1ldGFTdXBwb3NpdGlvbnNOb2RlUXVlcnkiLCJtZXRhdGhlb3JlbU5vZGUiLCJmaWxlQ29udGV4dCIsIm1ldGF0aGVvcmVtVmVyaWZpZWQiLCJsYWJlbE5vZGVzIiwibGFiZWxzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsImxvY2FsTWV0YUNvbnRleHQiLCJMb2NhbE1ldGFDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwidHJhY2UiLCJsYWJlbHMiLCJsYWJlbHNWZXJpZmllZCIsInZlcmlmeUxhYmVscyIsIm1ldGFTdXBwb3NpdGlvbnMiLCJtZXRhU3VwcG9zaXRpb25Ob2RlcyIsIm1ldGFTdXBwb3NpdGlvbnNWZXJpZmllZCIsInZlcmlmeU1ldGFTdXBwb3NpdGlvbnMiLCJtZXRhQ29uc2VxdWVudHMiLCJtZXRhQ29uc2VxdWVudE5vZGUiLCJtZXRhQ29uc2VxdWVudFZlcmlmaWVkIiwidmVyaWZ5TWV0YUNvbnNlcXVlbnQiLCJtZXRhcHJvb2ZOb2RlIiwiZmlyc3RNZXRhQ29uc2VxdWVudCIsImZpcnN0IiwibWV0YUNvbnNlcXVlbnQiLCJtZXRhcHJvb2ZWZXJpZmllZCIsInZlcmlmeU1ldGFwcm9vZiIsIm1ldGF0aGVvcmVtIiwiTWV0YXRoZW9yZW0iLCJmcm9tTGFiZWxzTWV0YVN1cHBvc2l0aW9uc01ldGFDb25zZXF1ZW50QW5kTG9jYWxNZXRhQ29udGV4dCIsImFkZE1ldGF0aGVvcmVtIiwiZGVidWciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWlCQTs7O2VBQXdCQTs7O2tFQWZBOzZEQUNDO2dFQUNHO2dFQUNDO3FFQUNJO3VFQUNFO3FCQUViO3FCQUNnQjs7Ozs7O0FBRXRDLElBQU1DLGtCQUFrQkMsSUFBQUEsaUJBQVUsRUFBQywrQkFDN0JDLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQyw0QkFDL0JDLDBCQUEwQkQsSUFBQUEsZ0JBQVMsRUFBQyxpQ0FDcENFLDRCQUE0QkosSUFBQUEsaUJBQVUsRUFBQztBQUU5QixTQUFTRixrQkFBa0JPLGVBQWUsRUFBRUMsV0FBVztJQUNwRSxJQUFJQyxzQkFBc0I7SUFFMUIsSUFBTUMsYUFBYVQsZ0JBQWdCTSxrQkFDN0JJLGVBQWVILFlBQVlJLGFBQWEsQ0FBQ0YsYUFDekNHLG1CQUFtQkMsa0JBQWdCLENBQUNDLGVBQWUsQ0FBQ1A7SUFFMURBLFlBQVlRLEtBQUssQ0FBQyxBQUFDLGtCQUE4QixPQUFiTCxjQUFhLHFCQUFtQko7SUFFcEUsSUFBTVUsU0FBUyxFQUFFLEVBQ1hDLGlCQUFpQkMsSUFBQUEsZUFBWSxFQUFDVCxZQUFZTyxRQUFRVDtJQUV4RCxJQUFJVSxnQkFBZ0I7UUFDbEIsSUFBTUUsbUJBQW1CLEVBQUUsRUFDckJDLHVCQUF1QmYsMEJBQTBCQyxrQkFDakRlLDJCQUEyQkMsSUFBQUEseUJBQXNCLEVBQUNGLHNCQUFzQkQsa0JBQWtCUDtRQUVoRyxJQUFJUywwQkFBMEI7WUFDNUIsSUFBTUUsa0JBQWtCLEVBQUUsRUFDcEJDLHFCQUFxQnBCLHdCQUF3QkUsa0JBQzdDbUIseUJBQXlCQyxJQUFBQSx1QkFBb0IsRUFBQ0Ysb0JBQW9CRCxpQkFBaUJYO1lBRXpGLElBQUlhLHdCQUF3QjtnQkFDMUIsSUFBTUUsZ0JBQWdCekIsbUJBQW1CSSxrQkFDbkNzQixzQkFBc0JDLElBQUFBLFlBQUssRUFBQ04sa0JBQzVCTyxpQkFBaUJGLHFCQUNqQkcsb0JBQW9CQyxJQUFBQSxrQkFBZSxFQUFDTCxlQUFlRyxnQkFBZ0JsQjtnQkFFekUsSUFBSW1CLG1CQUFtQjtvQkFDckIsSUFBTUUsY0FBY0Msb0JBQVcsQ0FBQ0MsMkRBQTJELENBQUNuQixRQUFRRyxrQkFBa0JXLGdCQUFnQmxCO29CQUV0SUwsWUFBWTZCLGNBQWMsQ0FBQ0g7b0JBRTNCekIsc0JBQXNCO2dCQUN4QjtZQUNGO1FBQ0Y7SUFDRjtJQUVBLElBQUlBLHFCQUFxQjtRQUN2QkQsWUFBWThCLEtBQUssQ0FBQyxBQUFDLG9CQUFnQyxPQUFiM0IsY0FBYSxtQkFBaUJKO0lBQ3RFO0lBRUEsT0FBT0U7QUFDVCJ9
|
|
@@ -18,12 +18,14 @@ _export(exports, {
|
|
|
18
18
|
});
|
|
19
19
|
var _metavariable = /*#__PURE__*/ _interop_require_default(require("../metavariable"));
|
|
20
20
|
var _metavariable1 = /*#__PURE__*/ _interop_require_default(require("../assignment/metavariable"));
|
|
21
|
+
var _givenMetavariable = /*#__PURE__*/ _interop_require_default(require("../verify/givenMetavariable"));
|
|
21
22
|
var _query = require("../utilities/query");
|
|
22
23
|
function _interop_require_default(obj) {
|
|
23
24
|
return obj && obj.__esModule ? obj : {
|
|
24
25
|
default: obj
|
|
25
26
|
};
|
|
26
27
|
}
|
|
28
|
+
var typeNodeQuery = (0, _query.nodeQuery)("/argument/type"), argumentNodeQuery = (0, _query.nodeQuery)("/metavariable/argument!");
|
|
27
29
|
function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
28
30
|
var metavariableVerified = false;
|
|
29
31
|
var metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
@@ -32,9 +34,12 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
|
32
34
|
if (metavariablePresent) {
|
|
33
35
|
fileContext.debug("The metavariable '".concat(metavariableString, "' is already present."), metavariableNode);
|
|
34
36
|
} else {
|
|
35
|
-
var
|
|
36
|
-
if (
|
|
37
|
-
|
|
37
|
+
var argumentNode = argumentNodeQuery(metavariableNode), argumentVerified = verifyArgument(metavariableNode, argumentNode, fileContext);
|
|
38
|
+
if (argumentVerified) {
|
|
39
|
+
var metaType = fileContext.findMetaTypeByMetaTypeNode(metaTypeNode), metavariable = _metavariable.default.fromMetavariableNodeAndMetaType(metavariableNode, metaType), metavariableAssignment = _metavariable1.default.fromMetavariable(metavariable), metavariableAssigned = metavariableAssignment.assign(fileContext);
|
|
40
|
+
if (metavariableAssigned) {
|
|
41
|
+
metavariableVerified = true;
|
|
42
|
+
}
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
45
|
if (metavariableVerified) {
|
|
@@ -43,18 +48,33 @@ function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
|
43
48
|
return metavariableVerified;
|
|
44
49
|
}
|
|
45
50
|
function verifyStandaloneMetavariable(metavariableNode, localMetaContext, verifyAhead) {
|
|
46
|
-
var standaloneMetavariableVerified
|
|
51
|
+
var standaloneMetavariableVerified;
|
|
47
52
|
var metavariableString = localMetaContext.nodeAsString(metavariableNode);
|
|
48
53
|
localMetaContext.trace("Verifying the '".concat(metavariableString, "' standalone metavariable..."), metavariableNode);
|
|
49
|
-
var
|
|
50
|
-
|
|
51
|
-
var verifiedAhead = verifyAhead();
|
|
52
|
-
standaloneMetavariableVerified = verifiedAhead; ///
|
|
53
|
-
}
|
|
54
|
+
var metavariables = [], givenMetavariableVerified = (0, _givenMetavariable.default)(metavariableNode, metavariables, localMetaContext, verifyAhead);
|
|
55
|
+
standaloneMetavariableVerified = givenMetavariableVerified; ///
|
|
54
56
|
if (standaloneMetavariableVerified) {
|
|
55
57
|
localMetaContext.debug("...verified the '".concat(metavariableString, "' standalone metavariable."), metavariableNode);
|
|
56
58
|
}
|
|
57
59
|
return standaloneMetavariableVerified;
|
|
58
60
|
}
|
|
61
|
+
function verifyArgument(metavariableNode, argumentNode, fileContext) {
|
|
62
|
+
var argumentVerified = false;
|
|
63
|
+
if (argumentNode === null) {
|
|
64
|
+
argumentVerified = true;
|
|
65
|
+
} else {
|
|
66
|
+
var typeNode = typeNodeQuery(argumentNode);
|
|
67
|
+
if (typeNode !== null) {
|
|
68
|
+
var type = fileContext.findTypeByTypeNode(typeNode);
|
|
69
|
+
if (type !== null) {
|
|
70
|
+
argumentVerified = true;
|
|
71
|
+
} else {
|
|
72
|
+
var typeString = fileContext.nodeAsString(typeNode), metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
73
|
+
fileContext.debug("The '".concat(metavariableString, "' metavariable's '").concat(typeString, "' type is not present."), metavariableNode);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return argumentVerified;
|
|
78
|
+
}
|
|
59
79
|
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuaW1wb3J0IHZlcmlmeUdpdmVuTWV0YXZhcmlhYmxlIGZyb20gXCIuLi92ZXJpZnkvZ2l2ZW5NZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGVcIiksXG4gICAgICBhcmd1bWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGUvYXJndW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgbWV0YXZhcmlhYmxlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGlzIGFscmVhZHkgcHJlc2VudC5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcmd1bWVudE5vZGUgPSBhcmd1bWVudE5vZGVRdWVyeShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBhcmd1bWVudFZlcmlmaWVkID0gdmVyaWZ5QXJndW1lbnQobWV0YXZhcmlhYmxlTm9kZSwgYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAoYXJndW1lbnRWZXJpZmllZCkge1xuICAgICAgY29uc3QgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21NZXRhdmFyaWFibGVOb2RlQW5kTWV0YVR5cGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWdubWVudCA9IE1ldGF2YXJpYWJsZUFzc2lnbm1lbnQuZnJvbU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWduZWQgPSBtZXRhdmFyaWFibGVBc3NpZ25tZW50LmFzc2lnbihmaWxlQ29udGV4dCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBc3NpZ25lZCkge1xuICAgICAgICBtZXRhdmFyaWFibGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gbWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlTdGFuZGFsb25lTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxNZXRhQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgbG9jYWxNZXRhQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBzdGFuZGFsb25lIG1ldGF2YXJpYWJsZS4uLmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgZ2l2ZW5NZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmeUdpdmVuTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGF2YXJpYWJsZXMsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBnaXZlbk1ldGF2YXJpYWJsZVZlcmlmaWVkOyAvLy9cblxuICBpZiAoc3RhbmRhbG9uZU1ldGF2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgbG9jYWxNZXRhQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHN0YW5kYWxvbmUgbWV0YXZhcmlhYmxlLmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXJndW1lbnQobWV0YXZhcmlhYmxlTm9kZSwgYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgYXJndW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChhcmd1bWVudE5vZGUgPT09IG51bGwpIHtcbiAgICBhcmd1bWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICAgIGlmICh0eXBlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIGFyZ3VtZW50VmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSdzICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudFZlcmlmaWVkO1xufSJdLCJuYW1lcyI6WyJ2ZXJpZnlNZXRhdmFyaWFibGUiLCJ2ZXJpZnlTdGFuZGFsb25lTWV0YXZhcmlhYmxlIiwidHlwZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImFyZ3VtZW50Tm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFUeXBlTm9kZSIsImZpbGVDb250ZXh0IiwibWV0YXZhcmlhYmxlVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJkZWJ1ZyIsImFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50VmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5vZGUiLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJmcm9tTWV0YXZhcmlhYmxlTm9kZUFuZE1ldGFUeXBlIiwibWV0YXZhcmlhYmxlQXNzaWdubWVudCIsIk1ldGF2YXJpYWJsZUFzc2lnbm1lbnQiLCJmcm9tTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlQXNzaWduZWQiLCJhc3NpZ24iLCJsb2NhbE1ldGFDb250ZXh0IiwidmVyaWZ5QWhlYWQiLCJzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQiLCJtZXRhdmFyaWFibGVzIiwiZ2l2ZW5NZXRhdmFyaWFibGVWZXJpZmllZCIsInZlcmlmeUdpdmVuTWV0YXZhcmlhYmxlIiwidHlwZU5vZGUiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOb2RlIiwidHlwZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBV0EsT0FnQ0M7ZUFoQ3VCQTs7SUFrQ1JDLDRCQUE0QjtlQUE1QkE7OzttRUEzQ1M7b0VBQ1U7d0VBQ0M7cUJBRVY7Ozs7OztBQUUxQixJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsbUJBQzFCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUM7QUFFckIsU0FBU0gsbUJBQW1CSyxnQkFBZ0IsRUFBRUMsWUFBWSxFQUFFQyxXQUFXO0lBQ3BGLElBQUlDLHVCQUF1QjtJQUUzQixJQUFNQyxxQkFBcUJGLFlBQVlHLFlBQVksQ0FBQ0w7SUFFcERFLFlBQVlJLEtBQUssQ0FBQyxBQUFDLGtCQUFvQyxPQUFuQkYsb0JBQW1CLHNCQUFvQko7SUFFM0UsSUFBTU8sc0JBQXNCTCxZQUFZTSx1Q0FBdUMsQ0FBQ1I7SUFFaEYsSUFBSU8scUJBQXFCO1FBQ3ZCTCxZQUFZTyxLQUFLLENBQUMsQUFBQyxxQkFBdUMsT0FBbkJMLG9CQUFtQiwwQkFBd0JKO0lBQ3BGLE9BQU87UUFDTCxJQUFNVSxlQUFlWCxrQkFBa0JDLG1CQUNqQ1csbUJBQW1CQyxlQUFlWixrQkFBa0JVLGNBQWNSO1FBRXhFLElBQUlTLGtCQUFrQjtZQUNwQixJQUFNRSxXQUFXWCxZQUFZWSwwQkFBMEIsQ0FBQ2IsZUFDbERjLGVBQWVDLHFCQUFZLENBQUNDLCtCQUErQixDQUFDakIsa0JBQWtCYSxXQUM5RUsseUJBQXlCQyxzQkFBc0IsQ0FBQ0MsZ0JBQWdCLENBQUNMLGVBQ2pFTSx1QkFBdUJILHVCQUF1QkksTUFBTSxDQUFDcEI7WUFFM0QsSUFBSW1CLHNCQUFzQjtnQkFDeEJsQix1QkFBdUI7WUFDekI7UUFDRjtJQUNGO0lBRUEsSUFBSUEsc0JBQXNCO1FBQ3hCRCxZQUFZTyxLQUFLLENBQUMsQUFBQyxvQkFBc0MsT0FBbkJMLG9CQUFtQixvQkFBa0JKO0lBQzdFO0lBRUEsT0FBT0c7QUFDVDtBQUVPLFNBQVNQLDZCQUE2QkksZ0JBQWdCLEVBQUV1QixnQkFBZ0IsRUFBRUMsV0FBVztJQUMxRixJQUFJQztJQUVKLElBQU1yQixxQkFBcUJtQixpQkFBaUJsQixZQUFZLENBQUNMO0lBRXpEdUIsaUJBQWlCakIsS0FBSyxDQUFDLEFBQUMsa0JBQW9DLE9BQW5CRixvQkFBbUIsaUNBQStCSjtJQUUzRixJQUFNMEIsZ0JBQWdCLEVBQUUsRUFDbEJDLDRCQUE0QkMsSUFBQUEsMEJBQXVCLEVBQUM1QixrQkFBa0IwQixlQUFlSCxrQkFBa0JDO0lBRTdHQyxpQ0FBaUNFLDJCQUEyQixHQUFHO0lBRS9ELElBQUlGLGdDQUFnQztRQUNsQ0YsaUJBQWlCZCxLQUFLLENBQUMsQUFBQyxvQkFBc0MsT0FBbkJMLG9CQUFtQiwrQkFBNkJKO0lBQzdGO0lBRUEsT0FBT3lCO0FBQ1Q7QUFFQSxTQUFTYixlQUFlWixnQkFBZ0IsRUFBRVUsWUFBWSxFQUFFUixXQUFXO0lBQ2pFLElBQUlTLG1CQUFtQjtJQUV2QixJQUFJRCxpQkFBaUIsTUFBTTtRQUN6QkMsbUJBQW1CO0lBQ3JCLE9BQU87UUFDTCxJQUFNa0IsV0FBV2hDLGNBQWNhO1FBRS9CLElBQUltQixhQUFhLE1BQU07WUFDckIsSUFBTUMsT0FBTzVCLFlBQVk2QixrQkFBa0IsQ0FBQ0Y7WUFFNUMsSUFBSUMsU0FBUyxNQUFNO2dCQUNqQm5CLG1CQUFtQjtZQUNyQixPQUFPO2dCQUNMLElBQU1xQixhQUFhOUIsWUFBWUcsWUFBWSxDQUFDd0IsV0FDdEN6QixxQkFBcUJGLFlBQVlHLFlBQVksQ0FBQ0w7Z0JBRXBERSxZQUFZTyxLQUFLLENBQUMsQUFBQyxRQUE4Q3VCLE9BQXZDNUIsb0JBQW1CLHNCQUErQixPQUFYNEIsWUFBVywyQkFBeUJoQztZQUN2RztRQUNGO0lBQ0Y7SUFFQSxPQUFPVztBQUNUIn0=
|
package/lib/verify/proof.js
CHANGED
|
@@ -24,11 +24,11 @@ function verifyProof(proofNode, conclusion, localContext) {
|
|
|
24
24
|
if (derivationVerified) {
|
|
25
25
|
var lastProofStep = localContext.getLastProofStep();
|
|
26
26
|
if (lastProofStep !== null) {
|
|
27
|
-
var proofStep = lastProofStep, statementNode = proofStep.getStatementNode(), conclusionStatementNode = conclusion.getStatementNode(),
|
|
28
|
-
proofVerified =
|
|
27
|
+
var proofStep = lastProofStep, statementNode = proofStep.getStatementNode(), conclusionStatementNode = conclusion.getStatementNode(), statementNodeMatchesConclusionStatementNode = statementNode.match(conclusionStatementNode);
|
|
28
|
+
proofVerified = statementNodeMatchesConclusionStatementNode; ///
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
return proofVerified;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvcHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBMb2NhbENvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCB2ZXJpZnlEZXJpdmF0aW9uIGZyb20gXCIuLi92ZXJpZnkvZGVyaXZhdGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGRlcml2YXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcHJvb2YvZGVyaXZhdGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVByb29mKHByb29mTm9kZSwgY29uY2x1c2lvbiwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBwcm9vZlZlcmlmaWVkID0gZmFsc2U7XG5cbiAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Mb2NhbENvbnRleHQobG9jYWxDb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgZGVyaXZhdGlvbk5vZGUgPSBkZXJpdmF0aW9uTm9kZVF1ZXJ5KHByb29mTm9kZSksXG4gICAgICAgIGRlcml2YXRpb25WZXJpZmllZCA9IHZlcmlmeURlcml2YXRpb24oZGVyaXZhdGlvbk5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKGRlcml2YXRpb25WZXJpZmllZCkge1xuICAgIGNvbnN0IGxhc3RQcm9vZlN0ZXAgPSBsb2NhbENvbnRleHQuZ2V0TGFzdFByb29mU3RlcCgpO1xuXG4gICAgaWYgKGxhc3RQcm9vZlN0ZXAgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHByb29mU3RlcCA9IGxhc3RQcm9vZlN0ZXAsIC8vL1xuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHByb29mU3RlcC5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uU3RhdGVtZW50Tm9kZSA9IGNvbmNsdXNpb24uZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoZXNDb25jbHVzaW9uU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGUubWF0Y2goY29uY2x1c2lvblN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBwcm9vZlZlcmlmaWVkID0gc3RhdGVtZW50Tm9kZU1hdGNoZXNDb25jbHVzaW9uU3RhdGVtZW50Tm9kZTsgIC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9vZlZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVByb29mIiwiZGVyaXZhdGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInByb29mTm9kZSIsImNvbmNsdXNpb24iLCJsb2NhbENvbnRleHQiLCJwcm9vZlZlcmlmaWVkIiwiTG9jYWxDb250ZXh0IiwiZnJvbUxvY2FsQ29udGV4dCIsImRlcml2YXRpb25Ob2RlIiwiZGVyaXZhdGlvblZlcmlmaWVkIiwidmVyaWZ5RGVyaXZhdGlvbiIsImxhc3RQcm9vZlN0ZXAiLCJnZXRMYXN0UHJvb2ZTdGVwIiwicHJvb2ZTdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJjb25jbHVzaW9uU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzQ29uY2x1c2lvblN0YXRlbWVudE5vZGUiLCJtYXRjaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBU0E7OztlQUF3QkE7Ozs0REFQQztpRUFDSTtxQkFFSDs7Ozs7O0FBRTFCLElBQU1DLHNCQUFzQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUV2QixTQUFTRixZQUFZRyxTQUFTLEVBQUVDLFVBQVUsRUFBRUMsWUFBWTtJQUNyRSxJQUFJQyxnQkFBZ0I7SUFFcEJELGVBQWVFLGNBQVksQ0FBQ0MsZ0JBQWdCLENBQUNILGVBQWUsR0FBRztJQUUvRCxJQUFNSSxpQkFBaUJSLG9CQUFvQkUsWUFDckNPLHFCQUFxQkMsSUFBQUEsbUJBQWdCLEVBQUNGLGdCQUFnQko7SUFFNUQsSUFBSUssb0JBQW9CO1FBQ3RCLElBQU1FLGdCQUFnQlAsYUFBYVEsZ0JBQWdCO1FBRW5ELElBQUlELGtCQUFrQixNQUFNO1lBQzFCLElBQU1FLFlBQVlGLGVBQ1pHLGdCQUFnQkQsVUFBVUUsZ0JBQWdCLElBQzFDQywwQkFBMEJiLFdBQVdZLGdCQUFnQixJQUNyREUsOENBQThDSCxjQUFjSSxLQUFLLENBQUNGO1lBRXhFWCxnQkFBZ0JZLDZDQUE4QyxHQUFHO1FBQ25FO0lBQ0Y7SUFFQSxPQUFPWjtBQUNUIn0=
|
|
@@ -23,7 +23,7 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
|
|
|
23
23
|
if (statementNode !== null) {
|
|
24
24
|
var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
25
25
|
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement..."), qualifiedStatementNode);
|
|
26
|
-
var referenceNode = referenceNodeQuery(qualifiedStatementNode),
|
|
26
|
+
var referenceNode = referenceNodeQuery(qualifiedStatementNode), verifyQualifiedStatementFunctions = [
|
|
27
27
|
verifyQualifiedStatementAAgainstRule,
|
|
28
28
|
verifyQualifiedStatementAAgainstAxiom,
|
|
29
29
|
verifyQualifiedStatementAAgainstLemma,
|
|
@@ -31,7 +31,7 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
|
|
|
31
31
|
verifyQualifiedStatementAAgainstConjecture
|
|
32
32
|
];
|
|
33
33
|
qualifiedStatementVerified = verifyQualifiedStatementFunctions.some(function(verifyQualifiedStatementFunction) {
|
|
34
|
-
var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode,
|
|
34
|
+
var qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, referenceNode, localContext);
|
|
35
35
|
if (qualifiedStatementVerified) {
|
|
36
36
|
return true;
|
|
37
37
|
}
|
|
@@ -58,72 +58,72 @@ function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived,
|
|
|
58
58
|
}
|
|
59
59
|
return qualifiedStatementVerified;
|
|
60
60
|
}
|
|
61
|
-
function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode,
|
|
61
|
+
function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode, referenceNode, localContext) {
|
|
62
62
|
var qualifiedStatementVerifiedAgainstRule = false;
|
|
63
|
-
var rule = localContext.
|
|
63
|
+
var rule = localContext.findRuleByReferenceNode(referenceNode);
|
|
64
64
|
if (rule !== null) {
|
|
65
|
-
var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
66
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
65
|
+
var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
66
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' rule..."), statementNode);
|
|
67
67
|
var ruleMatchesStatement = rule.matchStatement(statementNode, statementLocalContext);
|
|
68
68
|
qualifiedStatementVerifiedAgainstRule = ruleMatchesStatement; ///
|
|
69
69
|
if (qualifiedStatementVerifiedAgainstRule) {
|
|
70
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
70
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' rule."), statementNode);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
return qualifiedStatementVerifiedAgainstRule;
|
|
74
74
|
}
|
|
75
|
-
function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode,
|
|
75
|
+
function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode, referenceNode, localContext) {
|
|
76
76
|
var qualifiedStatementVerifiedAgainstAxiom = false;
|
|
77
|
-
var axiom = localContext.
|
|
77
|
+
var axiom = localContext.findAxiomByReferenceNode(referenceNode);
|
|
78
78
|
if (axiom !== null) {
|
|
79
|
-
var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
80
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
79
|
+
var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
80
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' axiom..."), statementNode);
|
|
81
81
|
var axiomMatchesStatement = axiom.matchStatement(statementNode, statementLocalContext);
|
|
82
82
|
qualifiedStatementVerifiedAgainstAxiom = axiomMatchesStatement; ///
|
|
83
83
|
if (qualifiedStatementVerifiedAgainstAxiom) {
|
|
84
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
84
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' axiom."), statementNode);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
return qualifiedStatementVerifiedAgainstAxiom;
|
|
88
88
|
}
|
|
89
|
-
function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode,
|
|
89
|
+
function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode, referenceNode, localContext) {
|
|
90
90
|
var qualifiedStatementVerifiedAgainstLemma = false;
|
|
91
|
-
var lemma = localContext.
|
|
91
|
+
var lemma = localContext.findLemmaByReferenceNode(referenceNode);
|
|
92
92
|
if (lemma !== null) {
|
|
93
|
-
var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
94
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
93
|
+
var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
94
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' lemma..."), statementNode);
|
|
95
95
|
var lemmaMatchesStatement = lemma.matchStatement(statementNode, statementLocalContext);
|
|
96
96
|
qualifiedStatementVerifiedAgainstLemma = lemmaMatchesStatement; ///
|
|
97
97
|
if (qualifiedStatementVerifiedAgainstLemma) {
|
|
98
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
98
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' lemma."), statementNode);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
return qualifiedStatementVerifiedAgainstLemma;
|
|
102
102
|
}
|
|
103
|
-
function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode,
|
|
103
|
+
function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode, referenceNode, localContext) {
|
|
104
104
|
var qualifiedStatementVerifiedAgainstTheorem = false;
|
|
105
|
-
var theorem = localContext.
|
|
105
|
+
var theorem = localContext.findTheoremByReferenceNode(referenceNode);
|
|
106
106
|
if (theorem !== null) {
|
|
107
|
-
var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
108
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
107
|
+
var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
108
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' theorem..."), statementNode);
|
|
109
109
|
var theoremMatchesStatement = theorem.matchStatement(statementNode, statementLocalContext);
|
|
110
110
|
qualifiedStatementVerifiedAgainstTheorem = theoremMatchesStatement; ///
|
|
111
111
|
if (qualifiedStatementVerifiedAgainstTheorem) {
|
|
112
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
112
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' theorem."), statementNode);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
return qualifiedStatementVerifiedAgainstTheorem;
|
|
116
116
|
}
|
|
117
|
-
function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode,
|
|
117
|
+
function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, referenceNode, localContext) {
|
|
118
118
|
var qualifiedStatementVerifiedAgainstConjecture = false;
|
|
119
|
-
var conjecture = localContext.
|
|
119
|
+
var conjecture = localContext.findConjectureByReferenceNode(referenceNode);
|
|
120
120
|
if (conjecture !== null) {
|
|
121
|
-
var statementNode = statementNodeQuery(qualifiedStatementNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
122
|
-
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
121
|
+
var statementNode = statementNodeQuery(qualifiedStatementNode), referenceString = localContext.nodeAsString(referenceNode), statementLocalContext = localContext, qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
122
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' conjecture..."), statementNode);
|
|
123
123
|
var conjectureMatchesStatement = conjecture.matchStatement(statementNode, statementLocalContext);
|
|
124
124
|
qualifiedStatementVerifiedAgainstConjecture = conjectureMatchesStatement; ///
|
|
125
125
|
if (qualifiedStatementVerifiedAgainstConjecture) {
|
|
126
|
-
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(
|
|
126
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement against the '").concat(referenceString, "' conjecture."), statementNode);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
return qualifiedStatementVerifiedAgainstConjecture;
|
|
@@ -157,4 +157,4 @@ function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignm
|
|
|
157
157
|
return statementVerifiedAsTypeAssertion;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5LCByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IGVxdWFsaXR5Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgcmVmZXJlbmNlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9xdWFsaWZpY2F0aW9uIS9yZWZlcmVuY2UhXCIpLFxuICAgICAgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9zdGF0ZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50L3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCByZWZlcmVuY2VOb2RlID0gcmVmZXJlbmNlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSByZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSksXG4gICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEsXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0sXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmVcbiAgICAgICAgICBdO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuc29tZSgodmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24pID0+IHsgIC8vL1xuICAgICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VOYW1lLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGRlcml2ZWQgPSBmYWxzZTsgIC8vL1xuXG4gICAgICBjb25zdCB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvblxuICAgICAgICAgICAgXTtcblxuICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMuZXZlcnkoKHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7IC8vL1xuICAgICAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZSA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGUgPSBsb2NhbENvbnRleHQuZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHJ1bGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBydWxlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBydWxlTWF0Y2hlc1N0YXRlbWVudCA9IHJ1bGUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUgPSBydWxlTWF0Y2hlc1N0YXRlbWVudDsgIC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIHJ1bGUuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0QXhpb20ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTmFtZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSA9IGZhbHNlO1xuXG4gIGNvbnN0IGF4aW9tID0gbG9jYWxDb250ZXh0LmZpbmRBeGlvbUJ5UmVmZXJlbmNlTmFtZShyZWZlcmVuY2VOYW1lKTtcblxuICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBheGlvbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgYXhpb20uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdExlbW1hKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEgPSBmYWxzZTtcblxuICBjb25zdCBsZW1tYSA9IGxvY2FsQ29udGV4dC5maW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGxlbW1hICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgbGVtbWEuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGxlbW1hTWF0Y2hlc1N0YXRlbWVudCA9IGxlbW1hLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGxlbW1hTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlTmFtZX0nIGxlbW1hLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RUaGVvcmVtKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSA9IGZhbHNlO1xuXG4gIGNvbnN0IHRoZW9yZW0gPSBsb2NhbENvbnRleHQuZmluZFRoZW9yZW1CeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKHRoZW9yZW0gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyB0aGVvcmVtLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCA9IHRoZW9yZW0ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0gPSB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgdGhlb3JlbS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RDb25qZWN0dXJlKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5hbWUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbmplY3R1cmUgPSBsb2NhbENvbnRleHQuZmluZENvbmplY3R1cmVCeVJlZmVyZW5jZU5hbWUocmVmZXJlbmNlTmFtZSk7XG5cbiAgaWYgKGNvbmplY3R1cmUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudExvY2FsQ29udGV4dCA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFnYWluc3QgdGhlICcke3JlZmVyZW5jZU5hbWV9JyBjb25qZWN0dXJlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCA9IGNvbmplY3R1cmUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VOYW1lfScgY29uamVjdHVyZS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gdHJ1ZTsgLy8vXG5cbiAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHlOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgZXF1YWxpdHlWZXJpZmllZCA9IHZlcmlmeUVxdWFsaXR5KGVxdWFsaXR5Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gZXF1YWxpdHlWZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5KSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5LmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHk7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0cnVlOyAgLy8vXG5cbiAgY29uc3QgdHlwZUFzc2VydGlvbk5vZGUgPSB0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGlmICh0eXBlQXNzZXJ0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHR5cGVBc3NlcnRpb25WZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24pIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYSB0eXBlIGFzc2VydGlvbi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb247XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50IiwiZXF1YWxpdHlOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJyZWZlcmVuY2VOb2RlUXVlcnkiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZVF1ZXJ5IiwicXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwic3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwicmVmZXJlbmNlTm9kZSIsInJlZmVyZW5jZU5hbWUiLCJyZWZlcmVuY2VOYW1lRnJvbVJlZmVyZW5jZU5vZGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdEF4aW9tIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0VGhlb3JlbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0Q29uamVjdHVyZSIsInNvbWUiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbiIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFzRXF1YWxpdHkiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJldmVyeSIsInZlcmlmaWVkQWhlYWQiLCJkZWJ1ZyIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUiLCJydWxlIiwiZmluZFJ1bGVCeVJlZmVyZW5jZU5hbWUiLCJzdGF0ZW1lbnRMb2NhbENvbnRleHQiLCJydWxlTWF0Y2hlc1N0YXRlbWVudCIsIm1hdGNoU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb20iLCJheGlvbSIsImZpbmRBeGlvbUJ5UmVmZXJlbmNlTmFtZSIsImF4aW9tTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hIiwibGVtbWEiLCJmaW5kTGVtbWFCeVJlZmVyZW5jZU5hbWUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtIiwidGhlb3JlbSIsImZpbmRUaGVvcmVtQnlSZWZlcmVuY2VOYW1lIiwidGhlb3JlbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlIiwiY29uamVjdHVyZSIsImZpbmRDb25qZWN0dXJlQnlSZWZlcmVuY2VOYW1lIiwiY29uamVjdHVyZU1hdGNoZXNTdGF0ZW1lbnQiLCJ2ZXJpZnlBaGVhZCIsInN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5VmVyaWZpZWQiLCJ2ZXJpZnlFcXVhbGl0eSIsInN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFZQTs7O2VBQXdCQTs7OytEQVZHO29FQUNLO3FCQUUwQjs7Ozs7O0FBRTFELElBQU1DLG9CQUFvQkMs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
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL3R5cGVBc3NlcnRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50L2VxdWFsaXR5IVwiKSxcbiAgICAgIHJlZmVyZW5jZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvcXVhbGlmaWNhdGlvbiEvcmVmZXJlbmNlIVwiKSxcbiAgICAgIHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudC90eXBlQXNzZXJ0aW9uIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50KHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IHJlZmVyZW5jZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMgPSBbXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUsXG4gICAgICAgICAgICB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdEF4aW9tLFxuICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RMZW1tYSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0VGhlb3JlbSxcbiAgICAgICAgICAgIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0Q29uamVjdHVyZVxuICAgICAgICAgIF07XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4geyAgLy8vXG4gICAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIHJlZmVyZW5jZU5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgZGVyaXZlZCA9IGZhbHNlOyAgLy8vXG5cbiAgICAgIGNvbnN0IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgICAgICAgICAgICAgdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uXG4gICAgICAgICAgICBdO1xuXG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5ldmVyeSgodmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24pID0+IHsgLy8vXG4gICAgICAgIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlID0gZmFsc2U7XG5cbiAgY29uc3QgcnVsZSA9IGxvY2FsQ29udGV4dC5maW5kUnVsZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBydWxlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBydWxlTWF0Y2hlc1N0YXRlbWVudCA9IHJ1bGUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUgPSBydWxlTWF0Y2hlc1N0YXRlbWVudDsgIC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgcnVsZS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0UnVsZTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCByZWZlcmVuY2VOb2RlLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gZmFsc2U7XG5cbiAgY29uc3QgYXhpb20gPSBsb2NhbENvbnRleHQuZmluZEF4aW9tQnlSZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpO1xuXG4gIGlmIChheGlvbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBheGlvbS4uLmAsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgYXhpb21NYXRjaGVzU3RhdGVtZW50ID0gYXhpb20ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tID0gYXhpb21NYXRjaGVzU3RhdGVtZW50OyAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBheGlvbS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0QXhpb207XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGZhbHNlO1xuXG4gIGNvbnN0IGxlbW1hID0gbG9jYWxDb250ZXh0LmZpbmRMZW1tYUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAobGVtbWEgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocmVmZXJlbmNlTm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50TG9jYWxDb250ZXh0ID0gbG9jYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgbGVtbWEuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGxlbW1hTWF0Y2hlc1N0YXRlbWVudCA9IGxlbW1hLm1hdGNoU3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHN0YXRlbWVudExvY2FsQ29udGV4dCk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSA9IGxlbW1hTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0TGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYWdhaW5zdCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgbGVtbWEuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdExlbW1hO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtID0gZmFsc2U7XG5cbiAgY29uc3QgdGhlb3JlbSA9IGxvY2FsQ29udGV4dC5maW5kVGhlb3JlbUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAodGhlb3JlbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyB0aGVvcmVtLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCA9IHRoZW9yZW0ubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdFRoZW9yZW0gPSB0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyB0aGVvcmVtLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RUaGVvcmVtO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgcmVmZXJlbmNlTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlID0gZmFsc2U7XG5cbiAgY29uc3QgY29uamVjdHVyZSA9IGxvY2FsQ29udGV4dC5maW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlTm9kZShyZWZlcmVuY2VOb2RlKTtcblxuICBpZiAoY29uamVjdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgcmVmZXJlbmNlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhyZWZlcmVuY2VOb2RlKSxcbiAgICAgICAgICBzdGF0ZW1lbnRMb2NhbENvbnRleHQgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBjb25qZWN0dXJlLi4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudCA9IGNvbmplY3R1cmUubWF0Y2hTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50TG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdENvbmplY3R1cmUgPSBjb25qZWN0dXJlTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhZ2FpbnN0IHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyBjb25qZWN0dXJlLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RDb25qZWN0dXJlO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc0VxdWFsaXR5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSB0cnVlOyAvLy9cblxuICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoZXF1YWxpdHlOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBlcXVhbGl0eVZlcmlmaWVkID0gdmVyaWZ5RXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICBzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSBlcXVhbGl0eVZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHF1YWxpZmllZCBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eTtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHRydWU7ICAvLy9cblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvblZlcmlmaWVkOyAvLy9cblxuICAgIGlmIChzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbikge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQiLCJlcXVhbGl0eU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInJlZmVyZW5jZU5vZGVRdWVyeSIsInN0YXRlbWVudE5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlUXVlcnkiLCJxdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwiYXNzaWdubWVudHMiLCJkZXJpdmVkIiwibG9jYWxDb250ZXh0IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJzdGF0ZW1lbnROb2RlIiwicXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJyZWZlcmVuY2VOb2RlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RSdWxlIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QUFnYWluc3RBeGlvbSIsInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudEFBZ2FpbnN0TGVtbWEiLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdFRoZW9yZW0iLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBQWdhaW5zdENvbmplY3R1cmUiLCJzb21lIiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24iLCJ2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uIiwiZXZlcnkiLCJ2ZXJpZmllZEFoZWFkIiwiZGVidWciLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RSdWxlIiwicnVsZSIsImZpbmRSdWxlQnlSZWZlcmVuY2VOb2RlIiwicmVmZXJlbmNlU3RyaW5nIiwic3RhdGVtZW50TG9jYWxDb250ZXh0IiwicnVsZU1hdGNoZXNTdGF0ZW1lbnQiLCJtYXRjaFN0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkQWdhaW5zdEF4aW9tIiwiYXhpb20iLCJmaW5kQXhpb21CeVJlZmVyZW5jZU5vZGUiLCJheGlvbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZEFnYWluc3RMZW1tYSIsImxlbW1hIiwiZmluZExlbW1hQnlSZWZlcmVuY2VOb2RlIiwibGVtbWFNYXRjaGVzU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0VGhlb3JlbSIsInRoZW9yZW0iLCJmaW5kVGhlb3JlbUJ5UmVmZXJlbmNlTm9kZSIsInRoZW9yZW1NYXRjaGVzU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWRBZ2FpbnN0Q29uamVjdHVyZSIsImNvbmplY3R1cmUiLCJmaW5kQ29uamVjdHVyZUJ5UmVmZXJlbmNlTm9kZSIsImNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50IiwidmVyaWZ5QWhlYWQiLCJzdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkiLCJlcXVhbGl0eU5vZGUiLCJlcXVhbGl0eVZlcmlmaWVkIiwidmVyaWZ5RXF1YWxpdHkiLCJzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiIsInR5cGVBc3NlcnRpb25Ob2RlIiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidmVyaWZ5VHlwZUFzc2VydGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7OzsrREFWRztvRUFDSztxQkFFTjs7Ozs7O0FBRTFCLElBQU1DLG9CQUFvQkMsSUFBQUEsZ0JBQVMsRUFBQyw0Q0FDOUJDLHFCQUFxQkQsSUFBQUEsZ0JBQVMsRUFBQyxrREFDL0JFLHFCQUFxQkYsSUFBQUEsZ0JBQVMsRUFBQyxtQ0FDL0JHLHlCQUF5QkgsSUFBQUEsZ0JBQVMsRUFBQztBQUUxQixTQUFTRix5QkFBeUJNLHNCQUFzQixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUN6RyxJQUFJQyw2QkFBNkI7SUFFakMsSUFBTUMsZ0JBQWdCUCxtQkFBbUJFO0lBRXpDLElBQUlLLGtCQUFrQixNQUFNO1FBQzFCLElBQU1DLDJCQUEyQkgsYUFBYUksWUFBWSxDQUFDUDtRQUUzREcsYUFBYUssS0FBSyxDQUFDLEFBQUMsa0JBQTBDLE9BQXpCRiwwQkFBeUIsNkJBQTJCTjtRQUV6RixJQUFNUyxnQkFBZ0JaLG1CQUFtQkcseUJBQ25DVSxvQ0FBb0M7WUFDbENDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1NBQ0Q7UUFFUFgsNkJBQTZCTSxrQ0FBa0NNLElBQUksQ0FBQyxTQUFDQztZQUNuRSxJQUFNYiw2QkFBNkJhLGlDQUFpQ2pCLHdCQUF3QlMsZUFBZU47WUFFM0csSUFBSUMsNEJBQTRCO2dCQUM5QixPQUFPO1lBQ1Q7UUFDRjtRQUVBLElBQUlBLDRCQUE0QjtZQUM5QkYsVUFBVSxPQUFRLEdBQUc7WUFFckIsSUFBTVEscUNBQW9DO2dCQUNsQ1E7Z0JBQ0FDO2FBQ0Q7WUFFUGYsNkJBQTZCTSxtQ0FBa0NVLEtBQUssQ0FBQyxTQUFDSDtnQkFD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
|