occam-nominal 1.0.430 → 1.0.431
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/file/nominal.js +1 -5
- package/lib/context/mnemic.js +6 -44
- package/lib/context.js +1 -13
- package/lib/element/assertion/signature.js +10 -5
- package/lib/element/constructor/bracketed.js +1 -6
- package/lib/element/fact/step.js +2 -2
- package/lib/element/signature.js +33 -29
- package/lib/element/term.js +11 -11
- package/lib/process/unification.js +1 -2
- package/lib/process/unify.js +63 -60
- package/lib/utilities/string.js +7 -3
- package/package.json +5 -5
- package/src/context/file/nominal.js +0 -7
- package/src/context/mnemic.js +3 -69
- package/src/context.js +0 -21
- package/src/element/assertion/signature.js +11 -5
- package/src/element/constructor/bracketed.js +0 -8
- package/src/element/fact/step.js +1 -1
- package/src/element/signature.js +36 -35
- package/src/element/term.js +10 -12
- package/src/process/unification.js +0 -2
- package/src/process/unify.js +94 -83
- package/src/utilities/string.js +8 -2
package/lib/utilities/string.js
CHANGED
|
@@ -90,9 +90,13 @@ _export(exports, {
|
|
|
90
90
|
});
|
|
91
91
|
const _type = require("../utilities/type");
|
|
92
92
|
const _constants = require("../constants");
|
|
93
|
-
function termsStringFromTerms(terms) {
|
|
93
|
+
function termsStringFromTerms(terms, quoted = false) {
|
|
94
94
|
const termsString = terms.reduce((termsString, term)=>{
|
|
95
|
-
|
|
95
|
+
let termString;
|
|
96
|
+
termString = term.getString();
|
|
97
|
+
if (quoted) {
|
|
98
|
+
termString = `'${termString}'`;
|
|
99
|
+
}
|
|
96
100
|
termsString = termsString !== null ? `${termsString}, ${termString}` : termString;
|
|
97
101
|
return termsString;
|
|
98
102
|
}, null);
|
|
@@ -245,4 +249,4 @@ function statementSubstitutionStringFromStatementMetavariableAndSubstitution(sta
|
|
|
245
249
|
return statementSubstitutionString;
|
|
246
250
|
}
|
|
247
251
|
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFBST1ZJU0lPTkFMLCBQUk9WSVNJT05BTExZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtcy5yZWR1Y2UoKHRlcm1zU3RyaW5nLCB0ZXJtKSA9PiB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICB0ZXJtc1N0cmluZyA9ICh0ZXJtc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgIGAke3Rlcm1zU3RyaW5nfSwgJHt0ZXJtU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgIHRlcm1TdHJpbmc7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc1N0cmluZyA9IGxhYmVscy5yZWR1Y2UoKGxhYmVsc1N0cmluZywgbGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpO1xuXG4gICAgbGFiZWxzU3RyaW5nID0gKGxhYmVsc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30sICR7bGFiZWxTdHJpbmd9YDtcblxuICAgIHJldHVybiBsYWJlbHNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBsYWJlbHNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzLnJlZHVjZSgocHJlbWlzZXNTdHJpbmcsIHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlU3RyaW5nID0gcHJlbWlzZS5nZXRTdHJpbmcoKTtcblxuICAgIHByZW1pc2VzU3RyaW5nID0gKHByZW1pc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAke3ByZW1pc2VzU3RyaW5nfSwgJHtwcmVtaXNlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgIHByZW1pc2VTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBwcmVtaXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc1N0cmluZyA9IGh5cG90aGVzZXMucmVkdWNlKChoeXBvdGhlc2VzU3RyaW5nLCBoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBoeXBvdGhlc2VzU3RyaW5nID0gKGh5cG90aGVzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7aHlwb3RoZXNlc1N0cmluZ30sICR7aHlwb3RoZXNpc1N0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nOyAgLy8vXG5cbiAgICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMoc3VwZXJUeXBlcykge1xuICBsZXQgc3VwZXJUeXBlc1N0cmluZztcblxuICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBlclR5cGVzU3RyaW5nfSwgJyR7c3VwZXJUeXBlU3RyaW5nfSdgO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYDoke3N1cGVyVHlwZXNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLnJlZHVjZSgocGFyYW1ldGVyc1N0cmluZywgcGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVyU3RyaW5nID0gcGFyYW1ldGVyLmdldFN0cmluZygpO1xuXG4gICAgcGFyYW1ldGVyc1N0cmluZyA9IChwYXJhbWV0ZXJzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyU3RyaW5nIDogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke3BhcmFtZXRlcnNTdHJpbmd9LCAke3BhcmFtZXRlclN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpbmFsU3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke1BST1ZJU0lPTkFMfSBgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gcHJvdmlzaW5hbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsbHlTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW5hbGx5U3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCAke1BST1ZJU0lPTkFMTFl9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHByb3Zpc2luYWxseVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9ucy5yZWR1Y2UoKHN1cHBvc2l0aW9uc1N0cmluZywgc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3VwcG9zaXRpb25zU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cHBvc2l0aW9uc1N0cmluZ30sICR7c3VwcG9zaXRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgZXF1aXZhbGVuY2VTdHJpbmcgPSBgWyR7dGVybXNTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlU3RyaW5nRnJvbVNpZ25hdHVyZShzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS5nZXRTdHJpbmcoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlU3RyaW5nRnJvbU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IG5vbWluYWxUeXBlTmFtZTsgIC8vL1xuXG4gIHJldHVybiB0eXBlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudChzdGFzdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXN0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGAuIDo6ICR7c3RhdGVtZW50U3RyaW5nfWA7XG5cbiAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3Rlcm1TdHJpbmd9IGZvciAke3ZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQocmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICByZWZlcm5lY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSBgJHtyZWZlcm5lY2VTdHJpbmd9IDo6ICR7c3RhdGVtZW50U3RyaW5nfWA7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxzU3RyaW5nRnJvbUxhYmVsc1ByZW1pc2VzQW5kQ29uY2x1c2lvbihsYWJlbHMsIHByZW1pc2VzLCBjb25jbHVzaW9uKSB7XG4gIGxldCBydWxlU3RyaW5nID0gRU1QVFlfU1RSSU5HO1xuXG4gIGNvbnN0IGNvbmNsdXNpb25TdHJpbmcgPSBjb25jbHVzaW9uLmdldFN0cmluZygpLFxuICAgICAgICBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpO1xuXG4gIHJ1bGVTdHJpbmcgPSBgJHtydWxlU3RyaW5nfSR7bGFiZWxzU3RyaW5nfSA6OiBgO1xuXG4gIHJ1bGVTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7cnVsZVN0cmluZ31bJHtwcmVtaXNlc1N0cmluZ31dLi4uJHtjb25jbHVzaW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgIGAke3J1bGVTdHJpbmd9JHtjb25jbHVzaW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHJ1bGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFTdHJpbmdGcm9tTGFiZWxTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWwsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBzY2hlbWFTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHNjaGVtYVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc0RlY2xhcmF0aW9uQW5kQ2xhaW0oaHlwb3RoZXNlcywgZGVjbGFyYXRpb24sIGNsYWltKSB7XG4gIGxldCBzZWN0aW9uU3RyaW5nO1xuXG4gIGNvbnN0IGh5cG90aGVzZXNTdHJpbmcgPSBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcyk7XG5cbiAgc2VjdGlvblN0cmluZyA9IGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogYDtcblxuICBpZiAoZGVjbGFyYXRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBkZWNsYXJhdGlvblN0cmluZyA9IGRlY2xhcmF0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc2VjdGlvblN0cmluZyA9IGAke3NlY3Rpb25TdHJpbmd9JHtkZWNsYXJhdGlvblN0cmluZ31gO1xuICB9XG5cbiAgaWYgKGNsYWltICE9PSBudWxsKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKTtcblxuICAgIHNlY3Rpb25TdHJpbmcgPSBgJHtzZWN0aW9uU3RyaW5nfSR7Y2xhaW1TdHJpbmd9YDtcbiAgfVxuXG4gIHJldHVybiBzZWN0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VicHJvb2ZTdHJpbmdGcm9tU3VwcG9zaXRpb25zQW5kU3ViRGVyaXZhdGlvbihzdXBwb3NpdGlvbnMsIHN1YkRlcml2YXRpb24pIHtcbiAgY29uc3QgbGFzdFN0ZXAgPSBzdWJEZXJpdmF0aW9uLmdldExhc3RTdGVwKCksXG4gICAgICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSxcbiAgICAgICAgbGFzdFN0ZXBTdHJpbmcgPSBsYXN0U3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2xhc3RTdGVwU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHN1YnByb29mU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUoZnJhbWUsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBmcmFtZVN0cmluZyA9IGZyYW1lLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0cmluZyA9IGBbJHtmcmFtZVN0cmluZ30gZm9yIFske21ldGF2YXJpYWJsZVN0cmluZ31dXWA7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHNpZ25hdHVyZSwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgbGV0IGNsYWltU3RyaW5nID0gRU1QVFlfU1RSSU5HO1xuXG4gIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpLFxuICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSBzaWduYXR1cmVTdHJpbmdGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZSksXG4gICAgICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKTtcblxuICBjbGFpbVN0cmluZyA9IChsYWJlbHNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9JHtsYWJlbHNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYC4uYDtcblxuICBjbGFpbVN0cmluZyA9IChzaWduYXR1cmVTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9JHtzaWduYXR1cmVTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9YDtcblxuXG4gIGNsYWltU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICBgJHtjbGFpbVN0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICBgJHtjbGFpbVN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gY2xhaW1TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMocHJvY2VkdXJlUmVmZXJlbmNlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2UuZ2V0TmFtZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gYEAke3Byb2NlZHVyZVJlZmVyZW5jZU5hbWV9KCR7cGFyYW1ldGVyc1N0cmluZ30pYDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nRnJvbVR5cGVTdXBlclR5cGVzQW5kUHJvdmlzaW9uYWwodHlwZSwgc3VwZXJUeXBlcywgcHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMoc3VwZXJUeXBlcyksXG4gICAgICAgIHByb3Zpc2lvbmFsU3RyaW5nID0gcHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbChwcm92aXNpb25hbCksXG4gICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gYCR7cHJvdmlzaW9uYWxTdHJpbmd9JHt0eXBlU3RyaW5nfSR7c3VwZXJUeXBlc1N0cmluZ31gO1xuXG4gIHJldHVybiBjb3R5cGVEZWNsYXJhdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZShyZWZlcmVuY2UsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3JlZmVyZW5jZVN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwiY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQiLCJjb3R5cGVEZWNsYXJhdGlvblN0cmluZ0Zyb21UeXBlU3VwZXJUeXBlc0FuZFByb3Zpc2lvbmFsIiwiZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXMiLCJmcmFtZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQiLCJsYWJlbHNTdHJpbmdGcm9tTGFiZWxzIiwicGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzIiwicHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMiLCJwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMiLCJwcm92aXNpbmFsU3RyaW5nRnJvbVByb3Zpc2lvbmFsIiwicHJvdmlzaW9uYWxseVN0cmluZ0Zyb21Qcm92aXNpb25hbCIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUiLCJydWxzU3RyaW5nRnJvbUxhYmVsc1ByZW1pc2VzQW5kQ29uY2x1c2lvbiIsInNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc0RlY2xhcmF0aW9uQW5kQ2xhaW0iLCJzaWduYXR1cmVTdHJpbmdGcm9tU2lnbmF0dXJlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24iLCJzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uIiwic3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzIiwic3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlIiwidGVybXNTdHJpbmdGcm9tVGVybXMiLCJ0eXBlU3RyaW5nRnJvbU5vbWluYWxUeXBlTmFtZSIsInRlcm1zIiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsImxhYmVscyIsImxhYmVsc1N0cmluZyIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJwcmVtaXNlcyIsInByZW1pc2VzU3RyaW5nIiwicHJlbWlzZSIsInByZW1pc2VTdHJpbmciLCJoeXBvdGhlc2VzIiwiaHlwb3RoZXNlc1N0cmluZyIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzU3RyaW5nIiwic3VwZXJUeXBlcyIsInN1cGVyVHlwZXNTdHJpbmciLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJFTVBUWV9TVFJJTkciLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyc1N0cmluZyIsInBhcmFtZXRlciIsInBhcmFtZXRlclN0cmluZyIsInByb3Zpc2lvbmFsIiwicHJvdmlzaW5hbFN0cmluZyIsIlBST1ZJU0lPTkFMIiwicHJvdmlzaW5hbGx5U3RyaW5nIiwiUFJPVklTSU9OQUxMWSIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1N0cmluZyIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJlcXVpdmFsZW5jZVN0cmluZyIsInNpZ25hdHVyZSIsInNpZ25hdHVyZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmciLCJzdGFzdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nIiwidmFyaWFibGUiLCJ2YXJpYWJsZVN0cmluZyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmciLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJyZWZlcm5lY2VTdHJpbmciLCJjb25zdHJhaW50U3RyaW5nIiwiY29uY2x1c2lvbiIsInJ1bGVTdHJpbmciLCJjb25jbHVzaW9uU3RyaW5nIiwiZGVkdWN0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwic2NoZW1hU3RyaW5nIiwiZGVjbGFyYXRpb24iLCJjbGFpbSIsInNlY3Rpb25TdHJpbmciLCJkZWNsYXJhdGlvblN0cmluZyIsImNsYWltU3RyaW5nIiwic3ViRGVyaXZhdGlvbiIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcFN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInN0cmluZyIsInByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZU5hbWUiLCJnZXROYW1lIiwicHJvY2VkdXJlQ2FsbFN0cmluZyIsInR5cGUiLCJwcm92aXNpb25hbFN0cmluZyIsImNvdHlwZURlY2xhcmF0aW9uU3RyaW5nIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlU3RyaW5nIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nIiwic3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUErT2dCQTtlQUFBQTs7UUExRUFDO2VBQUFBOztRQTBHQUM7ZUFBQUE7O1FBOUlBQztlQUFBQTs7UUFzR0FDO2VBQUFBOztRQXhMQUM7ZUFBQUE7O1FBdUdBQztlQUFBQTs7UUFuSUFDO2VBQUFBOztRQWtFQUM7ZUFBQUE7O1FBcERBQztlQUFBQTs7UUFzT0FDO2VBQUFBOztRQXBLQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQXFMQUM7ZUFBQUE7O1FBbkhBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQVdBQztlQUFBQTs7UUFoRUFDO2VBQUFBOztRQWdKQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUExRUFDO2VBQUFBOztRQWpLQUM7ZUFBQUE7O1FBc0RBQztlQUFBQTs7UUEwQ0FDO2VBQUFBOztRQXhKQUM7ZUFBQUE7O1FBMklBQztlQUFBQTs7O3NCQTlJb0I7MkJBQ3FCO0FBRWxELFNBQVNELHFCQUFxQkUsS0FBSztJQUN4QyxNQUFNQyxjQUFjRCxNQUFNRSxNQUFNLENBQUMsQ0FBQ0QsYUFBYUU7UUFDN0MsTUFBTUMsYUFBYUQsS0FBS0UsU0FBUztRQUVqQ0osY0FBYyxBQUFDQSxnQkFBZ0IsT0FDaEIsR0FBR0EsWUFBWSxFQUFFLEVBQUVHLFlBQVksR0FDNUJBO1FBRWxCLE9BQU9IO0lBQ1QsR0FB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
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFBST1ZJU0lPTkFMLCBQUk9WSVNJT05BTExZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMsIHF1b3RlZCA9IGZhbHNlKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXMucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGxldCB0ZXJtU3RyaW5nO1xuXG4gICAgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBpZiAocXVvdGVkKSB7XG4gICAgICB0ZXJtU3RyaW5nID0gYCcke3Rlcm1TdHJpbmd9J2A7XG4gICAgfVxuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICR7dGVybVN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICB0ZXJtU3RyaW5nO1xuXG4gICAgcmV0dXJuIHRlcm1zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gdGVybXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNTdHJpbmcgPSBsYWJlbHMucmVkdWNlKChsYWJlbHNTdHJpbmcsIGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKTtcblxuICAgIGxhYmVsc1N0cmluZyA9IChsYWJlbHNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9LCAke2xhYmVsU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gbGFiZWxzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gbGFiZWxzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNTdHJpbmcgPSBwcmVtaXNlcy5yZWR1Y2UoKHByZW1pc2VzU3RyaW5nLCBwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHByZW1pc2UuZ2V0U3RyaW5nKCk7XG5cbiAgICBwcmVtaXNlc1N0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVtaXNlc1N0cmluZ30sICR7cHJlbWlzZVN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVtaXNlU3RyaW5nOyAgLy8vXG5cbiAgICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwcmVtaXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyhoeXBvdGhlc2VzKSB7XG4gIGNvbnN0IGh5cG90aGVzZXNTdHJpbmcgPSBoeXBvdGhlc2VzLnJlZHVjZSgoaHlwb3RoZXNlc1N0cmluZywgaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpO1xuXG4gICAgaHlwb3RoZXNlc1N0cmluZyA9IChoeXBvdGhlc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke2h5cG90aGVzZXNTdHJpbmd9LCAke2h5cG90aGVzaXNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHlwb3RoZXNpc1N0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpIHtcbiAgbGV0IHN1cGVyVHlwZXNTdHJpbmc7XG5cbiAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXMucmVkdWNlKChzdXBlclR5cGVzU3RyaW5nLCBzdXBlclR5cGUpID0+IHtcbiAgICBpZiAoc3VwZXJUeXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGAnJHtzdXBlclR5cGVTdHJpbmd9J2AgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3VwZXJUeXBlc1N0cmluZ30sICcke3N1cGVyVHlwZVN0cmluZ30nYDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgc3VwZXJUeXBlc1N0cmluZyA9IChzdXBlclR5cGVzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGA6JHtzdXBlclR5cGVzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzU3RyaW5nRnJvbVBhcmFtZXRlcnMocGFyYW1ldGVycykge1xuICBjb25zdCBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5yZWR1Y2UoKHBhcmFtZXRlcnNTdHJpbmcsIHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlclN0cmluZyA9IHBhcmFtZXRlci5nZXRTdHJpbmcoKTtcblxuICAgIHBhcmFtZXRlcnNTdHJpbmcgPSAocGFyYW1ldGVyc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclN0cmluZyA6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwYXJhbWV0ZXJzU3RyaW5nfSwgJHtwYXJhbWV0ZXJTdHJpbmd9YDtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2luYWxTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW5hbFN0cmluZyA9IHByb3Zpc2lvbmFsID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtQUk9WSVNJT05BTH0gYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHByb3Zpc2luYWxTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbGx5U3RyaW5nRnJvbVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2luYWxseVN0cmluZyA9IHByb3Zpc2lvbmFsID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgJHtQUk9WSVNJT05BTExZfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HO1xuXG4gIHJldHVybiBwcm92aXNpbmFsbHlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnMucmVkdWNlKChzdXBwb3NpdGlvbnNTdHJpbmcsIHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBwb3NpdGlvbnNTdHJpbmd9LCAke3N1cHBvc2l0aW9uU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIGVxdWl2YWxlbmNlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVN0cmluZ0Zyb21TaWduYXR1cmUoc2lnbmF0dXJlKSB7XG4gIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUuZ2V0U3RyaW5nKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc2lnbmF0dXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSBub21pbmFsVHlwZU5hbWU7ICAvLy9cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQoc3Rhc3RlbWVudCkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGFzdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSBgLiA6OiAke3N0YXRlbWVudFN0cmluZ31gO1xuXG4gIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdGVybVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHt0ZXJtU3RyaW5nfSBmb3IgJHt2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gdGVybVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVmZXJuZWNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gYCR7cmVmZXJuZWNlU3RyaW5nfSA6OiAke3N0YXRlbWVudFN0cmluZ31gO1xuXG4gIHJldHVybiBjb25zdHJhaW50U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24obGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbikge1xuICBsZXQgcnVsZVN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICBjb25zdCBjb25jbHVzaW9uU3RyaW5nID0gY29uY2x1c2lvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJlbWlzZXNTdHJpbmcgPSBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcyksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKTtcblxuICBydWxlU3RyaW5nID0gYCR7cnVsZVN0cmluZ30ke2xhYmVsc1N0cmluZ30gOjogYDtcblxuICBydWxlU3RyaW5nID0gKHByZW1pc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke3J1bGVTdHJpbmd9WyR7cHJlbWlzZXNTdHJpbmd9XS4uLiR7Y29uY2x1c2lvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICBgJHtydWxlU3RyaW5nfSR7Y29uY2x1c2lvblN0cmluZ31gO1xuXG4gIHJldHVybiBydWxlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSxcbiAgICAgICAgc2NoZW1hU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuXG4gIHJldHVybiBzY2hlbWFTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNEZWNsYXJhdGlvbkFuZENsYWltKGh5cG90aGVzZXMsIGRlY2xhcmF0aW9uLCBjbGFpbSkge1xuICBsZXQgc2VjdGlvblN0cmluZztcblxuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpO1xuXG4gIHNlY3Rpb25TdHJpbmcgPSBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6IGA7XG5cbiAgaWYgKGRlY2xhcmF0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25TdHJpbmcgPSBkZWNsYXJhdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHNlY3Rpb25TdHJpbmcgPSBgJHtzZWN0aW9uU3RyaW5nfSR7ZGVjbGFyYXRpb25TdHJpbmd9YDtcbiAgfVxuXG4gIGlmIChjbGFpbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCk7XG5cbiAgICBzZWN0aW9uU3RyaW5nID0gYCR7c2VjdGlvblN0cmluZ30ke2NsYWltU3RyaW5nfWA7XG4gIH1cblxuICByZXR1cm4gc2VjdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24oc3VwcG9zaXRpb25zLCBzdWJEZXJpdmF0aW9uKSB7XG4gIGNvbnN0IGxhc3RTdGVwID0gc3ViRGVyaXZhdGlvbi5nZXRMYXN0U3RlcCgpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RTdGVwU3RyaW5nID0gbGFzdFN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnByb29mU3RyaW5nID0gYFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtsYXN0U3RlcFN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGxldCBjbGFpbVN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSxcbiAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gc2lnbmF0dXJlU3RyaW5nRnJvbVNpZ25hdHVyZShzaWduYXR1cmUpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyk7XG5cbiAgY2xhaW1TdHJpbmcgPSAobGFiZWxzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke2NsYWltU3RyaW5nfSR7bGFiZWxzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgIGAuLmA7XG5cbiAgY2xhaW1TdHJpbmcgPSAoc2lnbmF0dXJlU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke2NsYWltU3RyaW5nfSR7c2lnbmF0dXJlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgIGAke2NsYWltU3RyaW5nfWA7XG5cblxuICBjbGFpbVN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIGNsYWltU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzKHByb2NlZHVyZVJlZmVyZW5jZSwgcGFyYW1ldGVycykge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOYW1lID0gcHJvY2VkdXJlUmVmZXJlbmNlLmdldE5hbWUoKSxcbiAgICAgICAgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSxcbiAgICAgICAgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IGBAJHtwcm9jZWR1cmVSZWZlcmVuY2VOYW1lfSgke3BhcmFtZXRlcnNTdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3R5cGVEZWNsYXJhdGlvblN0cmluZ0Zyb21UeXBlU3VwZXJUeXBlc0FuZFByb3Zpc2lvbmFsKHR5cGUsIHN1cGVyVHlwZXMsIHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpLFxuICAgICAgICBwcm92aXNpb25hbFN0cmluZyA9IHByb3Zpc2luYWxTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpLFxuICAgICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IGAke3Byb3Zpc2lvbmFsU3RyaW5nfSR7dHlwZVN0cmluZ30ke3N1cGVyVHlwZXNTdHJpbmd9YDtcblxuICByZXR1cm4gY290eXBlRGVjbGFyYXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUocmVmZXJlbmNlLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtyZWZlcmVuY2VTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ30ke3N1YnN0aXR1dGlvblN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50IiwiY290eXBlRGVjbGFyYXRpb25TdHJpbmdGcm9tVHlwZVN1cGVyVHlwZXNBbmRQcm92aXNpb25hbCIsImVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zIiwiZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUiLCJoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMiLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50IiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbCIsInByb3Zpc2lvbmFsbHlTdHJpbmdGcm9tUHJvdmlzaW9uYWwiLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlIiwicnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24iLCJzY2hlbWFTdHJpbmdGcm9tTGFiZWxTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNEZWNsYXJhdGlvbkFuZENsYWltIiwic2lnbmF0dXJlU3RyaW5nRnJvbVNpZ25hdHVyZSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3VicHJvb2ZTdHJpbmdGcm9tU3VwcG9zaXRpb25zQW5kU3ViRGVyaXZhdGlvbiIsInN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyIsInN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMiLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSIsInRlcm1zU3RyaW5nRnJvbVRlcm1zIiwidHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUiLCJ0ZXJtcyIsInF1b3RlZCIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJsYWJlbHMiLCJsYWJlbHNTdHJpbmciLCJsYWJlbCIsImxhYmVsU3RyaW5nIiwicHJlbWlzZXMiLCJwcmVtaXNlc1N0cmluZyIsInByZW1pc2UiLCJwcmVtaXNlU3RyaW5nIiwiaHlwb3RoZXNlcyIsImh5cG90aGVzZXNTdHJpbmciLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzU3RyaW5nIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlU3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcnNTdHJpbmciLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJTdHJpbmciLCJwcm92aXNpb25hbCIsInByb3Zpc2luYWxTdHJpbmciLCJQUk9WSVNJT05BTCIsInByb3Zpc2luYWxseVN0cmluZyIsIlBST1ZJU0lPTkFMTFkiLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNTdHJpbmciLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwiZXF1aXZhbGVuY2VTdHJpbmciLCJzaWduYXR1cmUiLCJzaWduYXR1cmVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwic3Rhc3RlbWVudCIsInN0YXRlbWVudFN0cmluZyIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsInZhcmlhYmxlIiwidmFyaWFibGVTdHJpbmciLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlIiwic3RhdGVtZW50IiwicmVmZXJuZWNlU3RyaW5nIiwiY29uc3RyYWludFN0cmluZyIsImNvbmNsdXNpb24iLCJydWxlU3RyaW5nIiwiY29uY2x1c2lvblN0cmluZyIsImRlZHVjdGlvbiIsImRlZHVjdGlvblN0cmluZyIsInNjaGVtYVN0cmluZyIsImRlY2xhcmF0aW9uIiwiY2xhaW0iLCJzZWN0aW9uU3RyaW5nIiwiZGVjbGFyYXRpb25TdHJpbmciLCJjbGFpbVN0cmluZyIsInN1YkRlcml2YXRpb24iLCJsYXN0U3RlcCIsImdldExhc3RTdGVwIiwibGFzdFN0ZXBTdHJpbmciLCJzdWJwcm9vZlN0cmluZyIsImZyYW1lIiwibWV0YXZhcmlhYmxlIiwiZnJhbWVTdHJpbmciLCJtZXRhdmFyaWFibGVTdHJpbmciLCJzdHJpbmciLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOYW1lIiwiZ2V0TmFtZSIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJ0eXBlIiwicHJvdmlzaW9uYWxTdHJpbmciLCJjb3R5cGVEZWNsYXJhdGlvblN0cmluZyIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyIsInJlZmVyZW5jZVN0cmluZyIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZyIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBcVBnQkE7ZUFBQUE7O1FBMUVBQztlQUFBQTs7UUEwR0FDO2VBQUFBOztRQTlJQUM7ZUFBQUE7O1FBc0dBQztlQUFBQTs7UUF4TEFDO2VBQUFBOztRQXVHQUM7ZUFBQUE7O1FBbklBQztlQUFBQTs7UUFrRUFDO2VBQUFBOztRQXBEQUM7ZUFBQUE7O1FBc09BQztlQUFBQTs7UUFwS0FDO2VBQUFBOztRQVFBQztlQUFBQTs7UUFxTEFDO2VBQUFBOztRQW5IQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUFXQUM7ZUFBQUE7O1FBaEVBQztlQUFBQTs7UUFnSkFDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBMUVBQztlQUFBQTs7UUFqS0FDO2VBQUFBOztRQXNEQUM7ZUFBQUE7O1FBMENBQztlQUFBQTs7UUE5SkFDO2VBQUFBOztRQWlKQUM7ZUFBQUE7OztzQkFwSm9COzJCQUNxQjtBQUVsRCxTQUFTRCxxQkFBcUJFLEtBQUssRUFBRUMsU0FBUyxLQUFLO0lBQ3hELE1BQU1DLGNBQWNGLE1BQU1HLE1BQU0sQ0FBQyxD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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.431",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.439",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.22",
|
|
16
|
-
"occam-languages": "^2.2.
|
|
16
|
+
"occam-languages": "^2.2.56",
|
|
17
17
|
"occam-query": "^4.1.203"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@swc/core": "1.13.20",
|
|
21
21
|
"decaf-cli": "^1.0.37",
|
|
22
|
-
"occam-model": "^1.0.
|
|
23
|
-
"occam-server": "^7.0.
|
|
22
|
+
"occam-model": "^1.0.573",
|
|
23
|
+
"occam-server": "^7.0.73",
|
|
24
24
|
"watchful-cli": "^1.7.102"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
@@ -632,13 +632,6 @@ export default class NominalFileContext extends FileContext {
|
|
|
632
632
|
return labelPresent;
|
|
633
633
|
}
|
|
634
634
|
|
|
635
|
-
isAxiomPresentByReference(reference) {
|
|
636
|
-
const axiom = this.findAxiomByReference(reference),
|
|
637
|
-
axiomPresent = (axiom !== null);
|
|
638
|
-
|
|
639
|
-
return axiomPresent;
|
|
640
|
-
}
|
|
641
|
-
|
|
642
635
|
isTypePresentByTypeName(typeName, includeRelease = true) {
|
|
643
636
|
const type = this.findTypeByTypeName(typeName, includeRelease),
|
|
644
637
|
typePresent = (type !== null);
|
package/src/context/mnemic.js
CHANGED
|
@@ -12,13 +12,11 @@ import { termsFromJSON,
|
|
|
12
12
|
statementsFromJSON,
|
|
13
13
|
assertionsFromJSON,
|
|
14
14
|
referencesFromJSON,
|
|
15
|
-
signaturesFromJSON,
|
|
16
15
|
assumptionsFromJSON,
|
|
17
16
|
metavariablesFromJSON,
|
|
18
17
|
substitutionsFromJSON,
|
|
19
18
|
equalitiesToEqualitiesJSON,
|
|
20
19
|
statementsToStatementsJSON,
|
|
21
|
-
signaturesToSignaturesJSON,
|
|
22
20
|
assertionsToAssertionsJSON,
|
|
23
21
|
referencesToReferencesJSON,
|
|
24
22
|
assumptionsToAssumptionsJSON,
|
|
@@ -28,7 +26,7 @@ import { termsFromJSON,
|
|
|
28
26
|
const { push, extract } = arrayUtilities;
|
|
29
27
|
|
|
30
28
|
export default class MnemicContext extends Context {
|
|
31
|
-
constructor(context, terms, frames, equalities, assertions, statements,
|
|
29
|
+
constructor(context, terms, frames, equalities, assertions, statements, references, assumptions, metavariables, substitutions) {
|
|
32
30
|
super(context);
|
|
33
31
|
|
|
34
32
|
this.terms = terms;
|
|
@@ -36,7 +34,6 @@ export default class MnemicContext extends Context {
|
|
|
36
34
|
this.equalities = equalities;
|
|
37
35
|
this.assertions = assertions;
|
|
38
36
|
this.statements = statements;
|
|
39
|
-
this.signatures = signatures;
|
|
40
37
|
this.references = references;
|
|
41
38
|
this.assumptions = assumptions;
|
|
42
39
|
this.metavariables = metavariables;
|
|
@@ -83,16 +80,6 @@ export default class MnemicContext extends Context {
|
|
|
83
80
|
return statements;
|
|
84
81
|
}
|
|
85
82
|
|
|
86
|
-
getSignatures(signatures = []) {
|
|
87
|
-
const context = this.getContext();
|
|
88
|
-
|
|
89
|
-
push(signatures, this.signatures);
|
|
90
|
-
|
|
91
|
-
context.getSignatures(signatures);
|
|
92
|
-
|
|
93
|
-
return signatures;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
83
|
getAssertions(assertions = []) {
|
|
97
84
|
const context = this.getContext();
|
|
98
85
|
|
|
@@ -273,32 +260,6 @@ export default class MnemicContext extends Context {
|
|
|
273
260
|
context.debug(`...added the '${statementString}' statement to the mnemic context.`);
|
|
274
261
|
}
|
|
275
262
|
|
|
276
|
-
addSignature(signature) {
|
|
277
|
-
const context = this, ///
|
|
278
|
-
signatureString = signature.getString();
|
|
279
|
-
|
|
280
|
-
context.trace(`Adding the '${signatureString}' signature to the mnemic context...`);
|
|
281
|
-
|
|
282
|
-
const signatureA = signature; ///
|
|
283
|
-
|
|
284
|
-
extract(this.signatures, (signature) => {
|
|
285
|
-
const signatureB = signature, ///
|
|
286
|
-
signatureAEqualToSignatureB = signatureA.isEqualTo(signatureB);
|
|
287
|
-
|
|
288
|
-
if (signatureAEqualToSignatureB) {
|
|
289
|
-
const signatureString = signature.getString();
|
|
290
|
-
|
|
291
|
-
context.trace(`Removed the existing '${signatureString}' signature from the mnemic context...`);
|
|
292
|
-
|
|
293
|
-
return true;
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
this.signatures.push(signature);
|
|
298
|
-
|
|
299
|
-
context.debug(`...added the '${signatureString}' signature to the mnemic context.`);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
263
|
addReference(reference) {
|
|
303
264
|
const context = this, ///
|
|
304
265
|
referenceString = reference.getString();
|
|
@@ -490,19 +451,6 @@ export default class MnemicContext extends Context {
|
|
|
490
451
|
return statement;
|
|
491
452
|
}
|
|
492
453
|
|
|
493
|
-
findSignatureBySignatureNode(signatureNode) {
|
|
494
|
-
const signatures = this.getSignatures(),
|
|
495
|
-
signature = signatures.find((signature) => {
|
|
496
|
-
const signatureNodeMatches = signature.matchSignatureNode(signatureNode);
|
|
497
|
-
|
|
498
|
-
if (signatureNodeMatches) {
|
|
499
|
-
return true;
|
|
500
|
-
}
|
|
501
|
-
}) || null;
|
|
502
|
-
|
|
503
|
-
return signature;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
454
|
findReferenceByReferenceNode(referenceNode) {
|
|
507
455
|
const references = this.getReferences(),
|
|
508
456
|
reference = references.find((reference) => {
|
|
@@ -603,13 +551,6 @@ export default class MnemicContext extends Context {
|
|
|
603
551
|
return statementPresent;
|
|
604
552
|
}
|
|
605
553
|
|
|
606
|
-
isSignaturePresentBySignatureNode(signatureNode) {
|
|
607
|
-
const signature = this.findSignatureBySignatureNode(signatureNode),
|
|
608
|
-
signaturePresent = (signature !== null);
|
|
609
|
-
|
|
610
|
-
return signaturePresent;
|
|
611
|
-
}
|
|
612
|
-
|
|
613
554
|
isAssumptionPresentByAssumptionNode(assumptionNode) {
|
|
614
555
|
const assumption = this.findAssumptionByAssumptionNode(assumptionNode),
|
|
615
556
|
assumptionPresent = (assumption !== null);
|
|
@@ -647,7 +588,6 @@ export default class MnemicContext extends Context {
|
|
|
647
588
|
this.frames = framesFromJSON(json, context);
|
|
648
589
|
|
|
649
590
|
this.assertions = assertionsFromJSON(json, context);
|
|
650
|
-
this.signatures = signaturesFromJSON(json, context);
|
|
651
591
|
this.substitutions = substitutionsFromJSON(json, context);
|
|
652
592
|
}
|
|
653
593
|
|
|
@@ -663,7 +603,6 @@ export default class MnemicContext extends Context {
|
|
|
663
603
|
equalities = this.getEqualities(),
|
|
664
604
|
assertions = this.getAssertions(),
|
|
665
605
|
statements = this.getStatements(),
|
|
666
|
-
signatures = this.getSignatures(),
|
|
667
606
|
references = this.getReferences(),
|
|
668
607
|
assumptions = this.getAssumptions(),
|
|
669
608
|
metavariables = this.getMetavariables(),
|
|
@@ -674,7 +613,6 @@ export default class MnemicContext extends Context {
|
|
|
674
613
|
equalitiesJSON = equalitiesToEqualitiesJSON(equalities),
|
|
675
614
|
assertionsJSON = assertionsToAssertionsJSON(assertions),
|
|
676
615
|
statementsJSON = statementsToStatementsJSON(statements),
|
|
677
|
-
signaturesJSON = signaturesToSignaturesJSON(signatures),
|
|
678
616
|
referencesJSON = referencesToReferencesJSON(references),
|
|
679
617
|
assumptionsJSON = assumptionsToAssumptionsJSON(assumptions),
|
|
680
618
|
metavariablesJSON = metavariablesToMetavariablesJSON(metavariables),
|
|
@@ -685,7 +623,6 @@ export default class MnemicContext extends Context {
|
|
|
685
623
|
equalities = equalitiesJSON; ///
|
|
686
624
|
assertions = assertionsJSON; ///
|
|
687
625
|
statements = statementsJSON; ///
|
|
688
|
-
signatures = signaturesJSON; ///
|
|
689
626
|
references = referencesJSON; ///
|
|
690
627
|
assumptions = assumptionsJSON; ///
|
|
691
628
|
metavariables = metavariablesJSON; //
|
|
@@ -697,7 +634,6 @@ export default class MnemicContext extends Context {
|
|
|
697
634
|
equalities,
|
|
698
635
|
assertions,
|
|
699
636
|
statements,
|
|
700
|
-
signatures,
|
|
701
637
|
references,
|
|
702
638
|
assumptions,
|
|
703
639
|
metavariables,
|
|
@@ -713,12 +649,11 @@ export default class MnemicContext extends Context {
|
|
|
713
649
|
equalities = null,
|
|
714
650
|
statements = null,
|
|
715
651
|
assertions = null,
|
|
716
|
-
signatures = null,
|
|
717
652
|
references = null,
|
|
718
653
|
assumptions = null,
|
|
719
654
|
metavariables = null,
|
|
720
655
|
substitutions = null,
|
|
721
|
-
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements,
|
|
656
|
+
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements, references, assumptions, metavariables, substitutions);
|
|
722
657
|
|
|
723
658
|
mnemicContext.initialise(json);
|
|
724
659
|
|
|
@@ -731,12 +666,11 @@ export default class MnemicContext extends Context {
|
|
|
731
666
|
equalities = [],
|
|
732
667
|
statements = [],
|
|
733
668
|
assertions = [],
|
|
734
|
-
signatures = [],
|
|
735
669
|
references = [],
|
|
736
670
|
assumptions = [],
|
|
737
671
|
metavariables = [],
|
|
738
672
|
substitutions = [],
|
|
739
|
-
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements,
|
|
673
|
+
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements, references, assumptions, metavariables, substitutions);
|
|
740
674
|
|
|
741
675
|
return mnemicContext;
|
|
742
676
|
}
|
package/src/context.js
CHANGED
|
@@ -305,13 +305,6 @@ export default class Context extends ContextBase {
|
|
|
305
305
|
return statement;
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
-
findSignatureBySignatureNode(signatureNode) {
|
|
309
|
-
const context = this.getContext(),
|
|
310
|
-
signature = context.findSignatureBySignatureNode(signatureNode);
|
|
311
|
-
|
|
312
|
-
return signature;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
308
|
findReferenceByReferenceNode(referenceNode) {
|
|
316
309
|
const context = this.getContext(),
|
|
317
310
|
reference = context.findReferenceByReferenceNode(referenceNode);
|
|
@@ -417,13 +410,6 @@ export default class Context extends ContextBase {
|
|
|
417
410
|
return declaredMetavariable;
|
|
418
411
|
}
|
|
419
412
|
|
|
420
|
-
isAxiomPresentByReference(reference) {
|
|
421
|
-
const context = this.getContext(),
|
|
422
|
-
axiomPresent = context.isAxiomPresentByReference(reference);
|
|
423
|
-
|
|
424
|
-
return axiomPresent;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
413
|
isTermPresentByTermNode(termNode) {
|
|
428
414
|
const context = this.getContext(),
|
|
429
415
|
termPresent = context.isTermPresentByTermNode(termNode);
|
|
@@ -466,13 +452,6 @@ export default class Context extends ContextBase {
|
|
|
466
452
|
return statementPresent;
|
|
467
453
|
}
|
|
468
454
|
|
|
469
|
-
isSignaturePresentBySignatureNode(signatureNode) {
|
|
470
|
-
const context = this.getContext(),
|
|
471
|
-
signaturePresent = context.isSignaturePresentBySignatureNode(signatureNode);
|
|
472
|
-
|
|
473
|
-
return signaturePresent;
|
|
474
|
-
}
|
|
475
|
-
|
|
476
455
|
isMetavariablePresentByMetavariableNode(metavariableNode) {
|
|
477
456
|
const context = this.getContext(),
|
|
478
457
|
metavariablePresent = context.isMetavariablePresentByMetavariableNode(metavariableNode);
|
|
@@ -145,9 +145,17 @@ export default define(class SignatureAssertion extends Assertion {
|
|
|
145
145
|
referenceValidates = this.reference.validate(state, context, (reference, context) => {
|
|
146
146
|
let validates = false;
|
|
147
147
|
|
|
148
|
-
const
|
|
148
|
+
const axiom = context.findAxiomByReference(reference);
|
|
149
149
|
|
|
150
|
-
if (
|
|
150
|
+
if (axiom !== null) {
|
|
151
|
+
const axiomSatisfiable = axiom.isSatisfiable();
|
|
152
|
+
|
|
153
|
+
if (axiomSatisfiable) {
|
|
154
|
+
validates = true;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (validates) {
|
|
151
159
|
this.reference = reference;
|
|
152
160
|
|
|
153
161
|
validates = continuation(state, context);
|
|
@@ -200,9 +208,7 @@ export default define(class SignatureAssertion extends Assertion {
|
|
|
200
208
|
return continuation(stepAndFactOrSubproofsUnify);
|
|
201
209
|
}
|
|
202
210
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
// stepAndFactOrSubproofsUnify = axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context);
|
|
211
|
+
axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context, continuation);
|
|
206
212
|
});
|
|
207
213
|
}, context);
|
|
208
214
|
}
|
|
@@ -16,10 +16,6 @@ export default define(class BracketedConstructor extends Constructor {
|
|
|
16
16
|
unifyTerm(term, state, context, continuation) {
|
|
17
17
|
let termUnifiesWithBracketedConstructor;
|
|
18
18
|
|
|
19
|
-
const termString = term.getString();
|
|
20
|
-
|
|
21
|
-
context.trace(`Unifying the '${termString}' term with the bracketed constructor...`);
|
|
22
|
-
|
|
23
19
|
termUnifiesWithBracketedConstructor = super.unifyTerm(term, context, (term, context) => {
|
|
24
20
|
let termUnifies = false;
|
|
25
21
|
|
|
@@ -52,10 +48,6 @@ export default define(class BracketedConstructor extends Constructor {
|
|
|
52
48
|
return termUnifies;
|
|
53
49
|
});
|
|
54
50
|
|
|
55
|
-
if (termUnifiesWithBracketedConstructor) {
|
|
56
|
-
context.debug(`...unified the '${termString}' term with the bracketed constructor.`);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
51
|
return termUnifiesWithBracketedConstructor;
|
|
60
52
|
}
|
|
61
53
|
|
package/src/element/fact/step.js
CHANGED
|
@@ -216,7 +216,7 @@ export default define(class Step extends Fact {
|
|
|
216
216
|
|
|
217
217
|
context.trace(`Validating the '${stepString}' step's '${signatureAssertionString}' signature assertion...`);
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
declare((state) => {
|
|
220
220
|
signatureAssertionValidates = this.signatureAssertion.validate(state, context, (signatureAssertion, contwext) => {
|
|
221
221
|
let validates;
|
|
222
222
|
|
package/src/element/signature.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { Element, breakPointUtilities } from "occam-languages";
|
|
3
|
+
import { Element, breakPointUtilities, continuationUtilities } from "occam-languages";
|
|
5
4
|
|
|
6
5
|
import { define } from "../elements";
|
|
7
6
|
import { declare } from "../utilities/state";
|
|
8
7
|
import { all, every } from "../utilities/continuation";
|
|
8
|
+
import { termsStringFromTerms } from "../utilities/string";
|
|
9
9
|
import { instantiateSignature } from "../process/instantiate";
|
|
10
10
|
import { attempt, reconcile, serialise, unserialise, instantiate } from "../utilities/context";
|
|
11
11
|
|
|
12
|
-
const {
|
|
12
|
+
const { asynchronousEvery } = continuationUtilities,
|
|
13
13
|
{ breakPointFromJSON, breakPointToBreakPointJSON } = breakPointUtilities;
|
|
14
14
|
|
|
15
15
|
export default define(class Signature extends Element {
|
|
@@ -173,49 +173,50 @@ export default define(class Signature extends Element {
|
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
unifyTerms(terms, context, continuation) {
|
|
176
|
-
let termsUnify;
|
|
176
|
+
let termsUnify = false;
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
const quoted = true,
|
|
179
|
+
termsString = termsStringFromTerms(terms, quoted),
|
|
180
|
+
signatureString = this.getString();
|
|
179
181
|
|
|
180
|
-
|
|
181
|
-
specificSignature = signature, ///
|
|
182
|
-
generalSignatureString = generalSignature.getString(),
|
|
183
|
-
specificSignatureString = specificSignature.getString();
|
|
182
|
+
context.trace(`Unifying the ${termsString} terms with the '${signatureString}' signature...`);
|
|
184
183
|
|
|
185
|
-
|
|
184
|
+
const generalTerms = this.terms, ///
|
|
185
|
+
specificTerms = terms, //
|
|
186
|
+
generalTermsLength = generalTerms.length,
|
|
187
|
+
specificTermsLength = specificTerms.length;
|
|
186
188
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
specificSignatureContext = specificSignature.getContext(),
|
|
191
|
-
generalTerms = generalSignatureTerms, ///
|
|
192
|
-
specificTerms = specificSignatureTerms, ///
|
|
193
|
-
generalContext = generalSignatureContext, ///
|
|
194
|
-
specificContext = specificSignatureContext; ///
|
|
189
|
+
if (generalTermsLength !== specificTermsLength) {
|
|
190
|
+
return continuation(termsUnify);
|
|
191
|
+
}
|
|
195
192
|
|
|
196
|
-
|
|
193
|
+
const specificContext = context; ///
|
|
197
194
|
|
|
198
|
-
|
|
199
|
-
match(generalTerms, specificTerms, (generalTerm, specificTerm) => {
|
|
200
|
-
let termUnifies;
|
|
195
|
+
context = this.getContext();
|
|
201
196
|
|
|
202
|
-
|
|
197
|
+
const generalContext = context; ///
|
|
203
198
|
|
|
204
|
-
|
|
205
|
-
return true;
|
|
206
|
-
}
|
|
207
|
-
});
|
|
199
|
+
let index = -1;
|
|
208
200
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}, specificContext);
|
|
201
|
+
return reconcile((specificContext) => {
|
|
202
|
+
return asynchronousEvery(generalTerms, (generalTerm, continuation) => {
|
|
203
|
+
index++;
|
|
213
204
|
|
|
214
|
-
|
|
215
|
-
context.debug(`...unified the '${specificSignatureString}' signature with the '${generalSignatureString}' signature.`);
|
|
216
|
-
}
|
|
205
|
+
const specificTerm = specificTerms[index];
|
|
217
206
|
|
|
218
|
-
|
|
207
|
+
generalTerm.unifyTerm(specificTerm, generalContext, specificContext, continuation);
|
|
208
|
+
}, (termsUnify) => {
|
|
209
|
+
if (termsUnify) {
|
|
210
|
+
specificContext.commit();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (termsUnify) {
|
|
214
|
+
context.debug(`...unified the ${termsString} terms with the '${signatureString}' signature.`);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return continuation(termsUnify);
|
|
218
|
+
});
|
|
219
|
+
}, specificContext);
|
|
219
220
|
}
|
|
220
221
|
|
|
221
222
|
toJSON() {
|
package/src/element/term.js
CHANGED
|
@@ -346,11 +346,9 @@ export default define(class Term extends Element {
|
|
|
346
346
|
// return term;
|
|
347
347
|
// }
|
|
348
348
|
|
|
349
|
-
unifyTerm(term, generalContext, specificContext) {
|
|
349
|
+
unifyTerm(term, generalContext, specificContext, continuation) {
|
|
350
350
|
let termUnifies = false;
|
|
351
351
|
|
|
352
|
-
debugger
|
|
353
|
-
|
|
354
352
|
const context = specificContext, ///
|
|
355
353
|
generalTerm = this, ///
|
|
356
354
|
specificTerm = term,
|
|
@@ -359,17 +357,17 @@ export default define(class Term extends Element {
|
|
|
359
357
|
|
|
360
358
|
context.trace(`Unifying the '${specifixTermString}' term with the '${generalTermString}' term...`);
|
|
361
359
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
}
|
|
360
|
+
return unifyTermIntrinsically(generalTerm, specificTerm, generalContext, specificContext, (termUnifiesIntrinsically) => {
|
|
361
|
+
if (termUnifiesIntrinsically) {
|
|
362
|
+
termUnifies = true;
|
|
363
|
+
}
|
|
367
364
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
365
|
+
if (termUnifies) {
|
|
366
|
+
context.debug(`...unified the '${specifixTermString}' term with the '${generalTermString}' term.`);
|
|
367
|
+
}
|
|
371
368
|
|
|
372
|
-
|
|
369
|
+
return continuation(termUnifies);
|
|
370
|
+
});
|
|
373
371
|
}
|
|
374
372
|
|
|
375
373
|
toJSON() {
|
|
@@ -127,8 +127,6 @@ function unifyStepWithSignatureAssertion(step, context, continuation) {
|
|
|
127
127
|
context.trace(`Unifying the '${stepString}' step with the '${signatureAssertionString}' signature assertion...`);
|
|
128
128
|
|
|
129
129
|
return signatureAssertion.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context, (stepAndFactOrSubproofsUnify) => {
|
|
130
|
-
let stepUnifiesWithSignatureAssertion = false;
|
|
131
|
-
|
|
132
130
|
if (stepAndFactOrSubproofsUnify) {
|
|
133
131
|
stepUnifiesWithSignatureAssertion = true;
|
|
134
132
|
}
|