occam-verify-cli 0.0.1111 → 0.0.1112
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/combinator/bracketed.js +15 -65
- package/lib/combinator.js +4 -8
- package/lib/constructor/bracketed.js +24 -101
- package/lib/constructor.js +4 -8
- package/lib/context/file.js +41 -12
- package/lib/context/local.js +45 -25
- package/lib/context/release.js +2 -2
- package/lib/dom/assertion/contained.js +246 -0
- package/lib/dom/assertion/defined.js +266 -0
- package/lib/dom/assertion/subproof.js +210 -0
- package/lib/dom/assertion/type.js +240 -0
- package/lib/{axiom.js → dom/axiom.js} +18 -8
- package/lib/dom/conclusion.js +171 -0
- package/lib/{conjecture.js → dom/conjecture.js} +18 -8
- package/lib/dom/consequent.js +171 -0
- package/lib/dom/declaration/combinator.js +105 -0
- package/lib/dom/declaration/constructor.js +140 -0
- package/lib/dom/declaration/metavariable.js +154 -0
- package/lib/dom/declaration/type.js +140 -0
- package/lib/dom/declaration/variable.js +155 -0
- package/lib/{declaration.js → dom/declaration.js} +62 -18
- package/lib/dom/derivation.js +137 -0
- package/lib/dom/equality.js +260 -0
- package/lib/dom/error.js +85 -0
- package/lib/dom/frame.js +372 -0
- package/lib/dom/judgement.js +198 -0
- package/lib/dom/label.js +190 -0
- package/lib/{lemma.js → dom/lemma.js} +19 -9
- package/lib/{metaLemma.js → dom/metaLemma.js} +19 -9
- package/lib/dom/metaType.js +261 -0
- package/lib/dom/metatheorem.js +273 -0
- package/lib/dom/metavariable.js +463 -0
- package/lib/dom/premise.js +221 -0
- package/lib/dom/proof.js +154 -0
- package/lib/dom/proofStep.js +239 -0
- package/lib/dom/reference.js +218 -0
- package/lib/dom/rule.js +311 -0
- package/lib/dom/statement.js +379 -0
- package/lib/dom/subDerivation.js +137 -0
- package/lib/dom/subproof.js +211 -0
- package/lib/dom/supposition.js +221 -0
- package/lib/dom/term.js +354 -0
- package/lib/{theorem.js → dom/theorem.js} +18 -8
- package/lib/dom/topLevelAssertion.js +306 -0
- package/lib/dom/type.js +327 -0
- package/lib/dom/variable.js +328 -0
- package/lib/dom.js +27 -0
- package/lib/equivalences.js +307 -0
- package/lib/index.js +40 -35
- package/lib/mixins/proofStep/unify.js +86 -0
- package/lib/mixins/statement/verify.js +27 -2
- package/lib/mixins/term/verify.js +24 -4
- package/lib/substitution/frame.js +3 -3
- package/lib/substitution/statement.js +17 -16
- package/lib/substitution/term.js +10 -7
- package/lib/substitution.js +4 -31
- package/lib/substitutions.js +24 -56
- package/lib/unifier/equality.js +2 -3
- package/lib/unifier/label.js +3 -3
- package/lib/unifier/metaLevel.js +9 -8
- package/lib/unifier/metavariable.js +3 -3
- package/lib/unifier/statementWithCombinator.js +5 -5
- package/lib/unifier/termWithConstructor.js +3 -3
- package/lib/utilities/json.js +26 -40
- package/lib/utilities/string.js +6 -8
- package/lib/utilities/subproof.js +2 -2
- package/lib/utilities/substitutions.js +7 -6
- package/lib/utilities/verification.js +22 -14
- package/lib/verifier/combinator.js +4 -4
- package/lib/verifier/constructor.js +3 -3
- package/lib/verifier/topLevel.js +15 -21
- package/package.json +1 -1
- package/src/combinator/bracketed.js +11 -4
- package/src/combinator.js +3 -10
- package/src/constructor/bracketed.js +17 -5
- package/src/constructor.js +3 -9
- package/src/context/file.js +42 -11
- package/src/context/local.js +26 -34
- package/src/context/release.js +1 -1
- package/src/{assertion → dom/assertion}/contained.js +10 -8
- package/src/{assertion → dom/assertion}/defined.js +14 -11
- package/src/{assertion → dom/assertion}/subproof.js +11 -62
- package/src/{assertion → dom/assertion}/type.js +11 -8
- package/src/{axiom.js → dom/axiom.js} +6 -9
- package/src/dom/conclusion.js +95 -0
- package/src/{conjecture.js → dom/conjecture.js} +5 -8
- package/src/dom/consequent.js +95 -0
- package/src/{declaration → dom/declaration}/combinator.js +8 -5
- package/src/{declaration → dom/declaration}/constructor.js +8 -4
- package/src/{declaration → dom/declaration}/metavariable.js +8 -5
- package/src/{declaration → dom/declaration}/type.js +8 -4
- package/src/{declaration → dom/declaration}/variable.js +9 -6
- package/src/{declaration.js → dom/declaration.js} +11 -16
- package/src/{derivation.js → dom/derivation.js} +9 -12
- package/src/{equality.js → dom/equality.js} +11 -14
- package/src/{error.js → dom/error.js} +6 -3
- package/src/{frame.js → dom/frame.js} +14 -23
- package/src/{judgement.js → dom/judgement.js} +8 -11
- package/src/{label.js → dom/label.js} +9 -16
- package/src/{lemma.js → dom/lemma.js} +5 -9
- package/src/{metaLemma.js → dom/metaLemma.js} +6 -9
- package/src/{metaType.js → dom/metaType.js} +7 -10
- package/src/{metatheorem.js → dom/metatheorem.js} +6 -10
- package/src/{metavariable.js → dom/metavariable.js} +79 -77
- package/src/dom/premise.js +173 -0
- package/src/{proof.js → dom/proof.js} +8 -11
- package/src/dom/proofStep.js +173 -0
- package/src/{reference.js → dom/reference.js} +48 -20
- package/src/{rule.js → dom/rule.js} +13 -17
- package/src/{statement.js → dom/statement.js} +142 -71
- package/src/{subDerivation.js → dom/subDerivation.js} +9 -12
- package/src/{subproof.js → dom/subproof.js} +14 -47
- package/src/dom/supposition.js +173 -0
- package/src/{term.js → dom/term.js} +24 -45
- package/src/{theorem.js → dom/theorem.js} +5 -8
- package/src/{topLevelAssertion.js → dom/topLevelAssertion.js} +12 -14
- package/src/{type.js → dom/type.js} +9 -12
- package/src/{variable.js → dom/variable.js} +20 -28
- package/src/dom.js +13 -0
- package/src/equivalences.js +278 -0
- package/src/index.js +39 -34
- package/src/mixins/proofStep/unify.js +115 -0
- package/src/mixins/statement/verify.js +33 -1
- package/src/mixins/term/verify.js +33 -3
- package/src/substitution/frame.js +2 -2
- package/src/substitution/statement.js +20 -18
- package/src/substitution/term.js +12 -5
- package/src/substitution.js +4 -29
- package/src/substitutions.js +35 -73
- package/src/unifier/equality.js +1 -2
- package/src/unifier/label.js +2 -2
- package/src/unifier/metaLevel.js +9 -7
- package/src/unifier/metavariable.js +2 -2
- package/src/unifier/statementWithCombinator.js +4 -4
- package/src/unifier/termWithConstructor.js +2 -2
- package/src/utilities/json.js +23 -42
- package/src/utilities/string.js +8 -6
- package/src/utilities/subproof.js +2 -2
- package/src/utilities/substitutions.js +7 -5
- package/src/utilities/verification.js +29 -13
- package/src/verifier/combinator.js +3 -3
- package/src/verifier/constructor.js +3 -3
- package/src/verifier/topLevel.js +20 -21
- package/lib/assertion/contained.js +0 -232
- package/lib/assertion/defined.js +0 -211
- package/lib/assertion/subproof.js +0 -203
- package/lib/assertion/type.js +0 -185
- package/lib/conclusion.js +0 -130
- package/lib/consequent.js +0 -130
- package/lib/declaration/combinator.js +0 -90
- package/lib/declaration/constructor.js +0 -90
- package/lib/declaration/metavariable.js +0 -104
- package/lib/declaration/type.js +0 -90
- package/lib/declaration/variable.js +0 -105
- package/lib/derivation.js +0 -91
- package/lib/equality.js +0 -209
- package/lib/error.js +0 -70
- package/lib/frame.js +0 -331
- package/lib/judgement.js +0 -147
- package/lib/label.js +0 -141
- package/lib/metaType.js +0 -255
- package/lib/metatheorem.js +0 -263
- package/lib/metavariable.js +0 -399
- package/lib/mixins/statement/qualified/unify.js +0 -69
- package/lib/mixins/statement/unify.js +0 -42
- package/lib/mixins/statement/unifyIndependenntly.js +0 -46
- package/lib/mixins/term/unify.js +0 -40
- package/lib/premise.js +0 -184
- package/lib/proof.js +0 -103
- package/lib/proofStep.js +0 -179
- package/lib/reference.js +0 -145
- package/lib/rule.js +0 -259
- package/lib/shim.js +0 -14
- package/lib/statement/qualified.js +0 -152
- package/lib/statement/unqualified.js +0 -175
- package/lib/statement.js +0 -270
- package/lib/subDerivation.js +0 -91
- package/lib/subproof.js +0 -181
- package/lib/supposition.js +0 -184
- package/lib/term.js +0 -318
- package/lib/topLevelAssertion.js +0 -305
- package/lib/type.js +0 -321
- package/lib/utilities/equivalences.js +0 -178
- package/lib/variable.js +0 -281
- package/src/conclusion.js +0 -96
- package/src/consequent.js +0 -96
- package/src/mixins/statement/qualified/unify.js +0 -103
- package/src/mixins/statement/unify.js +0 -41
- package/src/mixins/statement/unifyIndependenntly.js +0 -58
- package/src/mixins/term/unify.js +0 -36
- package/src/premise.js +0 -183
- package/src/proofStep.js +0 -181
- package/src/shim.js +0 -5
- package/src/statement/qualified.js +0 -133
- package/src/statement/unqualified.js +0 -166
- package/src/supposition.js +0 -183
- package/src/utilities/equivalences.js +0 -183
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return _default;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
var
|
|
11
|
+
var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
|
|
12
12
|
var _unifier = /*#__PURE__*/ _interop_require_default(require("../unifier"));
|
|
13
13
|
var _query = require("../utilities/query");
|
|
14
14
|
var _name = require("../utilities/name");
|
|
@@ -129,7 +129,7 @@ _define_property(TermWithConstructorUnifier, "maps", [
|
|
|
129
129
|
specificNodeQuery: termNodeQuery,
|
|
130
130
|
unify: function(generalTypeNode, specificTermNode, context) {
|
|
131
131
|
var unified = false;
|
|
132
|
-
var Term =
|
|
132
|
+
var Term = _dom.default.Term, typeNode = generalTypeNode, typeName = (0, _name.typeNameFromTypeNode)(typeNode), type = context.findTypeByTypeName(typeName);
|
|
133
133
|
if (type !== null) {
|
|
134
134
|
var termNode = specificTermNode, term = Term.fromTermNode(termNode, context), generalContext = context, specificContext = context, termVerifiedGivenType = term.verifyGivenType(type, generalContext, specificContext);
|
|
135
135
|
if (termVerifiedGivenType) {
|
|
@@ -143,4 +143,4 @@ _define_property(TermWithConstructorUnifier, "maps", [
|
|
|
143
143
|
var termWithConstructorUnifier = new TermWithConstructorUnifier();
|
|
144
144
|
var _default = termWithConstructorUnifier;
|
|
145
145
|
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmaWVyL3Rlcm1XaXRoQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IFVuaWZpZXIgZnJvbSBcIi4uL3VuaWZpZXJcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL25hbWVcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlXCIpO1xuXG5jbGFzcyBUZXJtV2l0aENvbnN0cnVjdG9yVW5pZmllciBleHRlbmRzIFVuaWZpZXIge1xuICB1bmlmeShjb25zdHJ1Y3RvclRlcm1Ob2RlLCB0ZXJtTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvcjtcblxuICAgIGNvbnN0IGdlbmVyYWxOb25UZXJtaW5hbE5vZGUgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSA9IHRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVVbmlmaWVkID0gdGhpcy51bmlmeU5vblRlcm1pbmFsTm9kZShnZW5lcmFsTm9uVGVybWluYWxOb2RlLCBzcGVjaWZpY05vblRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICB0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvciA9IG5vblRlcm1pbmFsTm9kZVVuaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIHRlcm1VbmlmaWVkV2l0aENvbnN0cnVjdG9yO1xuICB9O1xuXG4gIHN0YXRpYyBtYXBzID0gW1xuICAgIHtcbiAgICAgIGdlbmVyYWxOb2RlUXVlcnk6IHR5cGVOb2RlUXVlcnksXG4gICAgICBzcGVjaWZpY05vZGVRdWVyeTogdGVybU5vZGVRdWVyeSxcbiAgICAgIHVuaWZ5OiAoZ2VuZXJhbFR5cGVOb2RlLCBzcGVjaWZpY1Rlcm1Ob2RlLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGxldCB1bmlmaWVkID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeyBUZXJtIH0gPSBkb20sXG4gICAgICAgICAgICAgIHR5cGVOb2RlID0gZ2VuZXJhbFR5cGVOb2RlLCAvLy9cbiAgICAgICAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IHNwZWNpZmljVGVybU5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBjb250ZXh0LCAvLy9cbiAgICAgICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0LCAgLy8vXG4gICAgICAgICAgICAgICAgdGVybVZlcmlmaWVkR2l2ZW5UeXBlID0gdGVybS52ZXJpZnlHaXZlblR5cGUodHlwZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgICBpZiAodGVybVZlcmlmaWVkR2l2ZW5UeXBlKSB7XG4gICAgICAgICAgICB1bmlmaWVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5pZmllZDtcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IHRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyID0gbmV3IFRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyO1xuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwiVGVybVdpdGhDb25zdHJ1Y3RvclVuaWZpZXIiLCJ1bmlmeSIsImNvbnN0cnVjdG9yVGVybU5vZGUiLCJ0ZXJtTm9kZSIsImNvbnRleHQiLCJ0ZXJtVW5pZmllZFdpdGhDb25zdHJ1Y3RvciIsImdlbmVyYWxOb25UZXJtaW5hbE5vZGUiLCJzcGVjaWZpY05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVVuaWZpZWQiLCJ1bmlmeU5vblRlcm1pbmFsTm9kZSIsIlVuaWZpZXIiLCJtYXBzIiwiZ2VuZXJhbE5vZGVRdWVyeSIsInNwZWNpZmljTm9kZVF1ZXJ5IiwiZ2VuZXJhbFR5cGVOb2RlIiwic3BlY2lmaWNUZXJtTm9kZSIsInVuaWZpZWQiLCJUZXJtIiwiZG9tIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsInRlcm0iLCJmcm9tVGVybU5vZGUiLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRlcm1WZXJpZmllZEdpdmVuVHlwZSIsInZlcmlmeUdpdmVuVHlwZSIsInRlcm1XaXRoQ29uc3RydWN0b3JVbmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF3REE7OztlQUFBOzs7MERBdERnQjs4REFDSTtxQkFFTTtvQkFDVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckMsSUFBTUEsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLFVBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFaEMsSUFBQSxBQUFNRSwyQ0FBTjtjQUFNQTthQUFBQTtnQ0FBQUE7aUNBQUFBOztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxNQUFNQyxtQkFBbUIsRUFBRUMsUUFBUSxFQUFFQyxPQUFPO2dCQUMxQyxJQUFJQztnQkFFSixJQUFNQyx5QkFBeUJKLHFCQUN6QkssMEJBQTBCSixVQUMxQksseUJBQXlCLElBQUksQ0FBQ0Msb0JBQW9CLENBQUNILHdCQUF3QkMseUJBQXlCSDtnQkFFMUdDLDZCQUE2Qkcsd0JBQXdCLEdBQUc7Z0JBRXhELE9BQU9IO1lBQ1Q7OztXQVhJTDtFQUFtQ1UsZ0JBQU87QUFhOUMsaUJBYklWLDRCQWFHVyxRQUFPO0lBQ1o7UUFDRUMsa0JBQWtCYjtRQUNsQmMsbUJBQW1CaEI7UUFDbkJJLE9BQU8sU0FBQ2EsaUJBQWlCQyxrQkFBa0JYO1lBQ3pDLElBQUlZLFVBQVU7WUFFZCxJQUFNLEFBQUVDLE9BQVNDLFlBQUcsQ0FBWkQsTUFDRkUsV0FBV0wsaUJBQ1hNLFdBQVdDLElBQUFBLDBCQUFvQixFQUFDRixXQUNoQ0csT0FBT2xCLFFBQVFtQixrQkFBa0IsQ0FBQ0g7WUFFeEMsSUFBSUUsU0FBUyxNQUFNO2dCQUNqQixJQUFNbkIsV0FBV1ksa0JBQ1hTLE9BQU9QLEtBQUtRLFlBQVksQ0FBQ3RCLFVBQVVDLFVBQ25Dc0IsaUJBQWlCdEIsU0FDakJ1QixrQkFBa0J2QixTQUNsQndCLHdCQUF3QkosS0FBS0ssZUFBZSxDQUFDUCxNQUFNSSxnQkFBZ0JDO2dCQUV6RSxJQUFJQyx1QkFBdUI7b0JBQ3pCWixVQUFVO2dCQUNaO1lBQ0Y7WUFFQSxPQUFPQTtRQUNUO0lBQ0Y7Q0FDRDtBQUdILElBQU1jLDZCQUE2QixJQUFJOUI7SUFFdkMsV0FBZThCIn0=
|
package/lib/utilities/json.js
CHANGED
|
@@ -141,12 +141,6 @@ _export(exports, {
|
|
|
141
141
|
typesToTypesJSON: function() {
|
|
142
142
|
return typesToTypesJSON;
|
|
143
143
|
},
|
|
144
|
-
unqualifiedStatementFromJSON: function() {
|
|
145
|
-
return unqualifiedStatementFromJSON;
|
|
146
|
-
},
|
|
147
|
-
unqualifiedStatementToUnqualifiedStatementJSON: function() {
|
|
148
|
-
return unqualifiedStatementToUnqualifiedStatementJSON;
|
|
149
|
-
},
|
|
150
144
|
variablesFromJSON: function() {
|
|
151
145
|
return variablesFromJSON;
|
|
152
146
|
},
|
|
@@ -154,7 +148,10 @@ _export(exports, {
|
|
|
154
148
|
return variablesToVariablesJSON;
|
|
155
149
|
}
|
|
156
150
|
});
|
|
157
|
-
var
|
|
151
|
+
var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
|
|
152
|
+
var _combinator = /*#__PURE__*/ _interop_require_default(require("../combinator"));
|
|
153
|
+
var _constructor = /*#__PURE__*/ _interop_require_default(require("../constructor"));
|
|
154
|
+
var _statement = /*#__PURE__*/ _interop_require_default(require("../substitution/statement"));
|
|
158
155
|
function _interop_require_default(obj) {
|
|
159
156
|
return obj && obj.__esModule ? obj : {
|
|
160
157
|
default: obj
|
|
@@ -164,7 +161,7 @@ function termFromJSON(json, fileContext) {
|
|
|
164
161
|
var term = json.term;
|
|
165
162
|
var termJSON = term; ///
|
|
166
163
|
json = termJSON; ///
|
|
167
|
-
var Term =
|
|
164
|
+
var Term = _dom.default.Term;
|
|
168
165
|
term = Term.fromJSON(json, fileContext);
|
|
169
166
|
return term;
|
|
170
167
|
}
|
|
@@ -194,42 +191,35 @@ function superTypeFromJSON(json, fileContext) {
|
|
|
194
191
|
}
|
|
195
192
|
function statementFromJSON(json, fileContext) {
|
|
196
193
|
var statement = json.statement;
|
|
197
|
-
var Statement =
|
|
194
|
+
var Statement = _dom.default.Statement, statementJSON = statement; ///
|
|
198
195
|
json = statementJSON; ///
|
|
199
196
|
statement = Statement.fromJSON(json, fileContext);
|
|
200
197
|
return statement;
|
|
201
198
|
}
|
|
202
199
|
function conclusionFromJSON(json, fileContext) {
|
|
203
200
|
var conclusion = json.conclusion;
|
|
204
|
-
var Conclusion =
|
|
201
|
+
var Conclusion = _dom.default.Conclusion, conclusionJSON = conclusion; ///
|
|
205
202
|
json = conclusionJSON; ///
|
|
206
203
|
conclusion = Conclusion.fromJSON(json, fileContext);
|
|
207
204
|
return conclusion;
|
|
208
205
|
}
|
|
209
206
|
function consequentFromJSON(json, fileContext) {
|
|
210
207
|
var consequent = json.consequent;
|
|
211
|
-
var Consequent =
|
|
208
|
+
var Consequent = _dom.default.Consequent, consequentJSON = consequent; ///
|
|
212
209
|
json = consequentJSON; ///
|
|
213
210
|
consequent = Consequent.fromJSON(json, fileContext);
|
|
214
211
|
return consequent;
|
|
215
212
|
}
|
|
216
213
|
function metavariableFromJSON(json, fileContext) {
|
|
217
214
|
var metavariable = json.metavariable;
|
|
218
|
-
var Metavariable =
|
|
215
|
+
var Metavariable = _dom.default.Metavariable, metavariableJSON = metavariable; ///
|
|
219
216
|
json = metavariableJSON; ///
|
|
220
217
|
metavariable = Metavariable.fromJSON(json, fileContext);
|
|
221
218
|
return metavariable;
|
|
222
219
|
}
|
|
223
|
-
function unqualifiedStatementFromJSON(json, fileContext) {
|
|
224
|
-
var unqualifiedStatement = json.unqualifiedStatement;
|
|
225
|
-
var UnqualifiedStatement = _shim.default.UnqualifiedStatement, unqualifiedStatementJSON = unqualifiedStatement; ///
|
|
226
|
-
json = unqualifiedStatementJSON; ///
|
|
227
|
-
unqualifiedStatement = UnqualifiedStatement.fromJSON(json, fileContext);
|
|
228
|
-
return unqualifiedStatement;
|
|
229
|
-
}
|
|
230
220
|
function typesFromJSON(json, types, fileContext) {
|
|
231
221
|
var typesJSON = json.types;
|
|
232
|
-
var Type =
|
|
222
|
+
var Type = _dom.default.Type;
|
|
233
223
|
typesJSON.forEach(function(typeJSON) {
|
|
234
224
|
var _$json = typeJSON, type = Type.fromJSON(_$json, fileContext);
|
|
235
225
|
types.push(type);
|
|
@@ -237,7 +227,7 @@ function typesFromJSON(json, types, fileContext) {
|
|
|
237
227
|
}
|
|
238
228
|
function rulesFromJSON(json, fileContext) {
|
|
239
229
|
var rules = json.rules;
|
|
240
|
-
var Rule =
|
|
230
|
+
var Rule = _dom.default.Rule, rulesJSON = rules; ///
|
|
241
231
|
rules = rulesJSON.map(function(ruleJSON) {
|
|
242
232
|
var _$json = ruleJSON, rule = Rule.fromJSON(_$json, fileContext);
|
|
243
233
|
return rule;
|
|
@@ -246,7 +236,7 @@ function rulesFromJSON(json, fileContext) {
|
|
|
246
236
|
}
|
|
247
237
|
function labelsFromJSON(json, fileContext) {
|
|
248
238
|
var labels = json.labels;
|
|
249
|
-
var Label =
|
|
239
|
+
var Label = _dom.default.Label, labelsJSON = labels; ///
|
|
250
240
|
labels = labelsJSON.map(function(labelJSON) {
|
|
251
241
|
var _$json = labelJSON, label = Label.fromJSON(_$json, fileContext);
|
|
252
242
|
return label;
|
|
@@ -255,7 +245,7 @@ function labelsFromJSON(json, fileContext) {
|
|
|
255
245
|
}
|
|
256
246
|
function axiomsFromJSON(json, fileContext) {
|
|
257
247
|
var axioms = json.axioms;
|
|
258
|
-
var Axiom =
|
|
248
|
+
var Axiom = _dom.default.Axiom, axiomsJSON = axioms; ///
|
|
259
249
|
axioms = axiomsJSON.map(function(axiomJSON) {
|
|
260
250
|
var _$json = axiomJSON, axiom = Axiom.fromJSON(_$json, fileContext);
|
|
261
251
|
return axiom;
|
|
@@ -264,7 +254,7 @@ function axiomsFromJSON(json, fileContext) {
|
|
|
264
254
|
}
|
|
265
255
|
function premisesFromJSON(json, fileContext) {
|
|
266
256
|
var premises = json.premises;
|
|
267
|
-
var Premise =
|
|
257
|
+
var Premise = _dom.default.Premise, premisesJSON = premises; ///
|
|
268
258
|
premises = premisesJSON.map(function(premiseJSON) {
|
|
269
259
|
var _$json = premiseJSON, premise = Premise.fromJSON(_$json, fileContext);
|
|
270
260
|
return premise;
|
|
@@ -273,7 +263,7 @@ function premisesFromJSON(json, fileContext) {
|
|
|
273
263
|
}
|
|
274
264
|
function theoremsFromJSON(json, fileContext) {
|
|
275
265
|
var theorems = json.theorems;
|
|
276
|
-
var Theorem =
|
|
266
|
+
var Theorem = _dom.default.Theorem, theoremsJSON = theorems; ///
|
|
277
267
|
theorems = theoremsJSON.map(function(theoremJSON) {
|
|
278
268
|
var _$json = theoremJSON, theorem = Theorem.fromJSON(_$json, fileContext);
|
|
279
269
|
return theorem;
|
|
@@ -282,7 +272,7 @@ function theoremsFromJSON(json, fileContext) {
|
|
|
282
272
|
}
|
|
283
273
|
function variablesFromJSON(json, fileContext) {
|
|
284
274
|
var variables = json.variables;
|
|
285
|
-
var Variable =
|
|
275
|
+
var Variable = _dom.default.Variable, variablesJSON = variables; ///
|
|
286
276
|
variables = variablesJSON.map(function(variableJSON) {
|
|
287
277
|
var _$json = variableJSON, variable = Variable.fromJSON(_$json, fileContext);
|
|
288
278
|
return variable;
|
|
@@ -291,7 +281,7 @@ function variablesFromJSON(json, fileContext) {
|
|
|
291
281
|
}
|
|
292
282
|
function conjecturesFromJSON(json, fileContext) {
|
|
293
283
|
var conjectures = json.conjectures;
|
|
294
|
-
var Conjecture =
|
|
284
|
+
var Conjecture = _dom.default.Conjecture, conjecturesJSON = conjectures; ///
|
|
295
285
|
conjectures = conjecturesJSON.map(function(conjectureJSON) {
|
|
296
286
|
var _$json = conjectureJSON, conjecture = Conjecture.fromJSON(_$json, fileContext);
|
|
297
287
|
return conjecture;
|
|
@@ -300,25 +290,25 @@ function conjecturesFromJSON(json, fileContext) {
|
|
|
300
290
|
}
|
|
301
291
|
function combinatorsFromJSON(json, fileContext) {
|
|
302
292
|
var combinators = json.combinators;
|
|
303
|
-
var
|
|
293
|
+
var combinatorsJSON = combinators; ///
|
|
304
294
|
combinators = combinatorsJSON.map(function(combinatorJSON) {
|
|
305
|
-
var _$json = combinatorJSON, combinator =
|
|
295
|
+
var _$json = combinatorJSON, combinator = _combinator.default.fromJSON(_$json, fileContext);
|
|
306
296
|
return combinator;
|
|
307
297
|
});
|
|
308
298
|
return combinators;
|
|
309
299
|
}
|
|
310
300
|
function constructorsFromJSON(json, fileContext) {
|
|
311
301
|
var constructors = json.constructors;
|
|
312
|
-
var
|
|
302
|
+
var constructorsJSON = constructors; ///
|
|
313
303
|
constructors = constructorsJSON.map(function(constructorJSON) {
|
|
314
|
-
var _$json = constructorJSON, constructor =
|
|
304
|
+
var _$json = constructorJSON, constructor = _constructor.default.fromJSON(_$json, fileContext);
|
|
315
305
|
return constructor;
|
|
316
306
|
});
|
|
317
307
|
return constructors;
|
|
318
308
|
}
|
|
319
309
|
function metatheoremsFromJSON(json, fileContext) {
|
|
320
310
|
var metatheorems = json.metatheorems;
|
|
321
|
-
var Metatheorem =
|
|
311
|
+
var Metatheorem = _dom.default.Metatheorem, metatheoremsJSON = metatheorems; ///
|
|
322
312
|
metatheorems = metatheoremsJSON.map(function(metatheoremJSON) {
|
|
323
313
|
var _$json = metatheoremJSON, metatheorem = Metatheorem.fromJSON(_$json, fileContext);
|
|
324
314
|
return metatheorem;
|
|
@@ -327,7 +317,7 @@ function metatheoremsFromJSON(json, fileContext) {
|
|
|
327
317
|
}
|
|
328
318
|
function suppositionsFromJSON(json, fileContext) {
|
|
329
319
|
var suppositions = json.suppositions;
|
|
330
|
-
var Supposition =
|
|
320
|
+
var Supposition = _dom.default.Supposition, suppositionsJSON = suppositions; ///
|
|
331
321
|
suppositions = suppositionsJSON.map(function(suppositionJSON) {
|
|
332
322
|
var _$json = suppositionJSON, supposition = Supposition.fromJSON(_$json, fileContext);
|
|
333
323
|
return supposition;
|
|
@@ -336,7 +326,7 @@ function suppositionsFromJSON(json, fileContext) {
|
|
|
336
326
|
}
|
|
337
327
|
function substitutionsFromJSON(json, fileContext) {
|
|
338
328
|
var _json_substitutions = json.substitutions, substitutions = _json_substitutions === void 0 ? [] : _json_substitutions; ///
|
|
339
|
-
var
|
|
329
|
+
var substitutionsJSON = substitutions, Substitution = _statement.default; ///
|
|
340
330
|
substitutions = substitutionsJSON.map(function(substitutionJSON) {
|
|
341
331
|
var _$json = substitutionJSON, substitution = Substitution.fromJSON(_$json, fileContext);
|
|
342
332
|
return substitution;
|
|
@@ -345,7 +335,7 @@ function substitutionsFromJSON(json, fileContext) {
|
|
|
345
335
|
}
|
|
346
336
|
function metavariablesFromJSON(json, fileContext) {
|
|
347
337
|
var metavariables = json.metavariables;
|
|
348
|
-
var Metavariable =
|
|
338
|
+
var Metavariable = _dom.default.Metavariable, metavariablesJSON = metavariables; ///
|
|
349
339
|
metavariables = metavariablesJSON.map(function(metavariableJSON) {
|
|
350
340
|
var _$json = metavariableJSON, metavariable = Metavariable.fromJSON(_$json, fileContext);
|
|
351
341
|
return metavariable;
|
|
@@ -392,10 +382,6 @@ function metavariableToMetavariableJSON(metavariable) {
|
|
|
392
382
|
var metavariableJSON = metavariable.toJSON();
|
|
393
383
|
return metavariableJSON;
|
|
394
384
|
}
|
|
395
|
-
function unqualifiedStatementToUnqualifiedStatementJSON(unqualifiedStatement) {
|
|
396
|
-
var unqualifiedStatementJSON = unqualifiedStatement.toJSON();
|
|
397
|
-
return unqualifiedStatementJSON;
|
|
398
|
-
}
|
|
399
385
|
function typesToTypesJSON(types) {
|
|
400
386
|
var typesJSON = types.map(function(type) {
|
|
401
387
|
var typeJSON = type.toJSON();
|
|
@@ -505,4 +491,4 @@ function metavariablesToMetavariablesJSON(metavariables) {
|
|
|
505
491
|
return metavariablesJSON;
|
|
506
492
|
}
|
|
507
493
|
|
|
508
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHNoaW0gZnJvbSBcIi4uL3NoaW1cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyB0ZXJtIH0gPSBqc29uO1xuXG4gIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gIGpzb24gPSB0ZXJtSlNPTjsgIC8vL1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gc2hpbTtcblxuICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZSB9ID0ganNvbjtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gdHlwZSxcbiAgICAgICAgICB0eXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gbWV0YVR5cGUsXG4gICAgICAgICAgbWV0YVR5cGVOYW1lID0gbmFtZTsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgc3VwZXJUeXBlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGU7ICAvLy9cblxuICBqc29uID0gc3VwZXJUeXBlSlNPTjsgLy8vXG5cbiAgY29uc3QgeyBuYW1lIH0gPSBqc29uLFxuICAgICAgICB0eXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgc3VwZXJUeXBlID0gdHlwZTsgLy8vXG5cbiAgcmV0dXJuIHN1cGVyVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudEZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCB9ID0ganNvbjtcblxuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gc2hpbSxcbiAgICAgICAgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudDsgIC8vL1xuXG4gIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IHNoaW0sXG4gICAgICAgIGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbjsgIC8vL1xuXG4gIGpzb24gPSBjb25jbHVzaW9uSlNPTjsgIC8vL1xuXG4gIGNvbmNsdXNpb24gPSBDb25jbHVzaW9uLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnNlcXVlbnRGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBjb25zZXF1ZW50IH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uc2VxdWVudCB9ID0gc2hpbSxcbiAgICAgICAgY29uc2VxdWVudEpTT04gPSBjb25zZXF1ZW50OyAgLy8vXG5cbiAganNvbiA9IGNvbnNlcXVlbnRKU09OOyAgLy8vXG5cbiAgY29uc2VxdWVudCA9IENvbnNlcXVlbnQuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBjb25zZXF1ZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBzaGltLFxuICAgICAgICBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlOyAgLy8vXG5cbiAganNvbiA9IG1ldGF2YXJpYWJsZUpTT047IC8vL1xuXG4gIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucXVhbGlmaWVkU3RhdGVtZW50RnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdW5xdWFsaWZpZWRTdGF0ZW1lbnQgfSA9IGpzb247XG5cbiAgY29uc3QgeyBVbnF1YWxpZmllZFN0YXRlbWVudCB9ID0gc2hpbSxcbiAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRKU09OID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnQ7ICAvLy9cblxuICBqc29uID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnRKU09OOyAvLy9cblxuICB1bnF1YWxpZmllZFN0YXRlbWVudCA9IFVucXVhbGlmaWVkU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICByZXR1cm4gdW5xdWFsaWZpZWRTdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBmaWxlQ29udGV4dCkge1xuICBjb25zdCB7IHR5cGVzOiB0eXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlIH0gPSBzaGltO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IHNoaW0sXG4gICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzOyAvLy9cblxuICBydWxlcyA9IHJ1bGVzSlNPTi5tYXAoKHJ1bGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJ1bGVKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZSA9IFJ1bGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIChydWxlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IHNoaW0sXG4gICAgICAgIGxhYmVsc0pTT04gPSBsYWJlbHM7ICAvLy9cblxuICBsYWJlbHMgPSBsYWJlbHNKU09OLm1hcCgobGFiZWxKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGxhYmVsSlNPTiwgLy8vXG4gICAgICAgICAgbGFiZWwgPSBMYWJlbC5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gc2hpbSxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiAoYXhpb20pO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IHNoaW0sXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBzaGltLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiAodGhlb3JlbSk7XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFZhcmlhYmxlIH0gPSBzaGltLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuICh2YXJpYWJsZSk7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbmplY3R1cmVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29uamVjdHVyZSB9ID0gc2hpbSxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKGNvbmplY3R1cmUpO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gc2hpbSxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKGNvbWJpbmF0b3IpO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gc2hpbSxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiAoY29uc3RydWN0b3IpO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXRoZW9yZW0gfSA9IHNoaW0sXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKG1ldGF0aGVvcmVtKTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBzaGltLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1YnN0aXR1dGlvbnMgPSBbXSB9ID0ganNvbjsgIC8vL1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50U3Vic3RpdHV0aW9uIH0gPSBzaGltLFxuICAgICAgICBzdWJzdGl0dXRpb25zSlNPTiA9IHN1YnN0aXR1dGlvbnMsICAvLy9cbiAgICAgICAgU3Vic3RpdHV0aW9uID0gU3RhdGVtZW50U3Vic3RpdHV0aW9uOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gc2hpbSxcbiAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzOyAvLy9cblxuICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT04ubWFwKChtZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIChtZXRhdmFyaWFibGUpO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlbW1hc0Zyb21Ob3RoaW5nKCkge1xuICBjb25zdCBsZW1tYXMgPSBbXTtcblxuICByZXR1cm4gbGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxlbW1hc0Zyb21Ob3RoaW5nKCkge1xuICBjb25zdCBtZXRhTGVtbWFzID0gW107XG5cbiAgcmV0dXJuIG1ldGFMZW1tYXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICByZXR1cm4gdGVybUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGNvbnN0IHR5cGVKU09OID0gKHR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZVRvU3VwZXJUeXBlSlNPTihzdXBlclR5cGUpIHtcbiAgY29uc3Qgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZS50b0pTT04oKTtcblxuICByZXR1cm4gc3VwZXJUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnNlcXVlbnRUb0NvbnNlcXVlbnRKU09OKGNvbnNlcXVlbnQpIHtcbiAgY29uc3QgY29uc2VxdWVudEpTT04gPSBjb25zZXF1ZW50LnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25zZXF1ZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTihtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucXVhbGlmaWVkU3RhdGVtZW50VG9VbnF1YWxpZmllZFN0YXRlbWVudEpTT04odW5xdWFsaWZpZWRTdGF0ZW1lbnQpIHtcbiAgY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnRKU09OID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnQudG9KU09OKCk7XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgdHlwZSA9IHR5cGVKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICBydWxlID0gcnVsZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgYXhpb20gPSBheGlvbUpTT047IC8vL1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzVG9QcmVtaXNlc0pTT04ocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNKU09OID0gcHJlbWlzZXMubWFwKChwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZUpTT04gPSBwcmVtaXNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByZW1pc2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNUb1RoZW9yZW1zSlNPTih0aGVvcmVtcykge1xuICBjb25zdCB0aGVvcmVtc0pTT04gPSB0aGVvcmVtcy5tYXAoKHRoZW9yZW0pID0+IHtcbiAgICBjb25zdCB0aGVvcmVtSlNPTiA9IHRoZW9yZW0udG9KU09OKCk7XG5cbiAgICB0aGVvcmVtID0gdGhlb3JlbUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZXNUb1ZhcmlhYmxlc0pTT04odmFyaWFibGVzKSB7XG4gIGNvbnN0IHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXMubWFwKCh2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IHZhcmlhYmxlSlNPTiA9IHZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgdmFyaWFibGUgPSB2YXJpYWJsZUpTT047ICAvLy9cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIGNvbmplY3R1cmUgPSBjb25qZWN0dXJlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgY29tYmluYXRvciA9IGNvbWJpbmF0b3JKU09OOyAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIG1ldGF0aGVvcmVtID0gbWV0YXRoZW9yZW1KU09OOyAvLy9cblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXBTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuIl0sIm5hbWVzIjpbImF4aW9tc0Zyb21KU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc2VxdWVudEZyb21KU09OIiwiY29uc2VxdWVudFRvQ29uc2VxdWVudEpTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhTGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsInByZW1pc2VzRnJvbUpTT04iLCJwcmVtaXNlc1RvUHJlbWlzZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlRnJvbUpTT04iLCJzdXBlclR5cGVUb1N1cGVyVHlwZUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGVzRnJvbUpTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRGcm9tSlNPTiIsInVucXVhbGlmaWVkU3RhdGVtZW50VG9VbnF1YWxpZmllZFN0YXRlbWVudEpTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImpzb24iLCJmaWxlQ29udGV4dCIsInRlcm0iLCJ0ZXJtSlNPTiIsIlRlcm0iLCJzaGltIiwiZnJvbUpTT04iLCJ0eXBlIiwibmFtZSIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGUiLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsInN1cGVyVHlwZSIsInN1cGVyVHlwZUpTT04iLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRKU09OIiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJjb25jbHVzaW9uSlNPTiIsImNvbnNlcXVlbnQiLCJDb25zZXF1ZW50IiwiY29uc2VxdWVudEpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJVbnF1YWxpZmllZFN0YXRlbWVudCIsInVucXVhbGlmaWVkU3RhdGVtZW50SlNPTiIsInR5cGVzIiwidHlwZXNKU09OIiwiVHlwZSIsImZvckVhY2giLCJ0eXBlSlNPTiIsInB1c2giLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJtYXAiLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbHMiLCJMYWJlbCIsImxhYmVsc0pTT04iLCJsYWJlbEpTT04iLCJsYWJlbCIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJjb25qZWN0dXJlcyIsIkNvbmplY3R1cmUiLCJjb25qZWN0dXJlc0pTT04iLCJjb25qZWN0dXJlSlNPTiIsImNvbmplY3R1cmUiLCJjb21iaW5hdG9ycyIsIkNvbWJpbmF0b3IiLCJjb21iaW5hdG9yc0pTT04iLCJjb21iaW5hdG9ySlNPTiIsImNvbWJpbmF0b3IiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIm1ldGF0aGVvcmVtcyIsIk1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF0aGVvcmVtSlNPTiIsIm1ldGF0aGVvcmVtIiwic3VwcG9zaXRpb25zIiwiU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25KU09OIiwic3VwcG9zaXRpb24iLCJzdWJzdGl0dXRpb25zIiwiU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uc0pTT04iLCJTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXNKU09OIiwibGVtbWFzIiwibWV0YUxlbW1hcyIsInRvSlNPTiIsIm1ldGFUeXBlSlNPTiIsIm1hcFN1YnN0aXR1dGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBMEtnQkEsY0FBYztlQUFkQTs7SUF3UkFDLGtCQUFrQjtlQUFsQkE7O0lBeE1BQyxtQkFBbUI7ZUFBbkJBOztJQWtRQUMsNEJBQTRCO2VBQTVCQTs7SUFuYkFDLGtCQUFrQjtlQUFsQkE7O0lBK1RBQywwQkFBMEI7ZUFBMUJBOztJQTlKQUMsbUJBQW1CO2VBQW5CQTs7SUFzUUFDLDRCQUE0QjtlQUE1QkE7O0lBMVpBQyxrQkFBa0I7ZUFBbEJBOztJQXdUQUMsMEJBQTBCO2VBQTFCQTs7SUFwSUFDLG9CQUFvQjtlQUFwQkE7O0lBd1FBQyw4QkFBOEI7ZUFBOUJBOztJQXhYQUMsY0FBYztlQUFkQTs7SUE4UkFDLGtCQUFrQjtlQUFsQkE7O0lBN0ZBQyxpQkFBaUI7ZUFBakJBOztJQU1BQyxxQkFBcUI7ZUFBckJBOztJQWxVQUMsZ0JBQWdCO2VBQWhCQTs7SUFzVkFDLHNCQUFzQjtlQUF0QkE7O0lBM0ZBQyxvQkFBb0I7ZUFBcEJBOztJQW9RQUMsOEJBQThCO2VBQTlCQTs7SUEzYkFDLG9CQUFvQjtlQUFwQkE7O0lBaVRBQyw4QkFBOEI7ZUFBOUJBOztJQXpFQUMscUJBQXFCO2VBQXJCQTs7SUF5T0FDLGdDQUFn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
|
|
494
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuaW1wb3J0IFN0YXRlbWVudFN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uL3N0YXRlbWVudFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHRlcm0gfSA9IGpzb247XG5cbiAgY29uc3QgdGVybUpTT04gPSB0ZXJtOyAgLy8vXG5cbiAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgY29uc3QgeyBUZXJtIH0gPSBkb207XG5cbiAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IHR5cGUsXG4gICAgICAgICAgdHlwZU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgICB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBtZXRhVHlwZSB9ID0ganNvbjtcblxuICBpZiAobWV0YVR5cGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IG5hbWUgfSA9IG1ldGFUeXBlLFxuICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIG1ldGFUeXBlID0gZmlsZUNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUobWV0YVR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhVHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1cGVyVHlwZSB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlOyAgLy8vXG5cbiAganNvbiA9IHN1cGVyVHlwZUpTT047IC8vL1xuXG4gIGNvbnN0IHsgbmFtZSB9ID0ganNvbixcbiAgICAgICAgdHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gIHJldHVybiBzdXBlclR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnQgfSA9IGpzb247XG5cbiAgY29uc3QgeyBTdGF0ZW1lbnQgfSA9IGRvbSxcbiAgICAgICAgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudDsgIC8vL1xuXG4gIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGRvbSxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc2VxdWVudEZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbnNlcXVlbnQgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zZXF1ZW50IH0gPSBkb20sXG4gICAgICAgIGNvbnNlcXVlbnRKU09OID0gY29uc2VxdWVudDsgIC8vL1xuXG4gIGpzb24gPSBjb25zZXF1ZW50SlNPTjsgIC8vL1xuXG4gIGNvbnNlcXVlbnQgPSBDb25zZXF1ZW50LmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICByZXR1cm4gY29uc2VxdWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZSB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlOyAgLy8vXG5cbiAganNvbiA9IG1ldGF2YXJpYWJsZUpTT047IC8vL1xuXG4gIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzRnJvbUpTT04oanNvbiwgdHlwZXMsIGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGRvbTtcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBkb20sXG4gICAgICAgIHJ1bGVzSlNPTiA9IHJ1bGVzOyAvLy9cblxuICBydWxlcyA9IHJ1bGVzSlNPTi5tYXAoKHJ1bGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJ1bGVKU09OLCAgLy8vXG4gICAgICAgICAgcnVsZSA9IFJ1bGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIChydWxlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IGRvbSxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBsYWJlbDtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVscztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBkb20sXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKGF4aW9tKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgcHJlbWlzZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcmVtaXNlIH0gPSBkb20sXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBkb20sXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuICh0aGVvcmVtKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlczsgLy8vXG5cbiAgdmFyaWFibGVzID0gdmFyaWFibGVzSlNPTi5tYXAoKHZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiAodmFyaWFibGUpO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uamVjdHVyZXNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCkge1xuICBsZXQgeyBjb25qZWN0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmplY3R1cmUgfSA9IGRvbSxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKGNvbmplY3R1cmUpO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IGNvbWJpbmF0b3JzSlNPTiA9IGNvbWJpbmF0b3JzOyAvLy9cblxuICBjb21iaW5hdG9ycyA9IGNvbWJpbmF0b3JzSlNPTi5tYXAoKGNvbWJpbmF0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbWJpbmF0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIChjb21iaW5hdG9yKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbWJpbmF0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgY29uc3RydWN0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnM7IC8vL1xuXG4gIGNvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9yc0pTT04ubWFwKChjb25zdHJ1Y3RvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uc3RydWN0b3JKU09OLCAgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKGNvbnN0cnVjdG9yKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF0aGVvcmVtc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IG1ldGF0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF0aGVvcmVtIH0gPSBkb20sXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gKG1ldGF0aGVvcmVtKTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IHN1cHBvc2l0aW9ucyB9ID0ganNvbjtcblxuICBjb25zdCB7IFN1cHBvc2l0aW9uIH0gPSBkb20sXG4gICAgICAgIHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnM7ICAvLy9cblxuICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbnNKU09OLm1hcCgoc3VwcG9zaXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1cHBvc2l0aW9uSlNPTiwgLy8vXG4gICAgICAgICAgc3VwcG9zaXRpb24gPSBTdXBwb3NpdGlvbi5mcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyA9IFtdIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLCAgLy8vXG4gICAgICAgIFN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGRvbSxcbiAgICAgICAgbWV0YXZhcmlhYmxlc0pTT04gPSBtZXRhdmFyaWFibGVzOyAvLy9cblxuICBtZXRhdmFyaWFibGVzID0gbWV0YXZhcmlhYmxlc0pTT04ubWFwKChtZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGF2YXJpYWJsZUpTT04sICAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpO1xuXG4gICAgcmV0dXJuIChtZXRhdmFyaWFibGUpO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxlbW1hc0Zyb21Ob3RoaW5nKCkge1xuICBjb25zdCBsZW1tYXMgPSBbXTtcblxuICByZXR1cm4gbGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxlbW1hc0Zyb21Ob3RoaW5nKCkge1xuICBjb25zdCBtZXRhTGVtbWFzID0gW107XG5cbiAgcmV0dXJuIG1ldGFMZW1tYXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICByZXR1cm4gdGVybUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlVG9UeXBlSlNPTih0eXBlKSB7XG4gIGNvbnN0IHR5cGVKU09OID0gKHR5cGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZVRvU3VwZXJUeXBlSlNPTihzdXBlclR5cGUpIHtcbiAgY29uc3Qgc3VwZXJUeXBlSlNPTiA9IHN1cGVyVHlwZS50b0pTT04oKTtcblxuICByZXR1cm4gc3VwZXJUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICByZXR1cm4gc3RhdGVtZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnNlcXVlbnRUb0NvbnNlcXVlbnRKU09OKGNvbnNlcXVlbnQpIHtcbiAgY29uc3QgY29uc2VxdWVudEpTT04gPSBjb25zZXF1ZW50LnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25zZXF1ZW50SlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTihtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgdHlwZSA9IHR5cGVKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICBydWxlID0gcnVsZUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgYXhpb20gPSBheGlvbUpTT047IC8vL1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzVG9QcmVtaXNlc0pTT04ocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNKU09OID0gcHJlbWlzZXMubWFwKChwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZUpTT04gPSBwcmVtaXNlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByZW1pc2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNUb1RoZW9yZW1zSlNPTih0aGVvcmVtcykge1xuICBjb25zdCB0aGVvcmVtc0pTT04gPSB0aGVvcmVtcy5tYXAoKHRoZW9yZW0pID0+IHtcbiAgICBjb25zdCB0aGVvcmVtSlNPTiA9IHRoZW9yZW0udG9KU09OKCk7XG5cbiAgICB0aGVvcmVtID0gdGhlb3JlbUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYWJsZXNUb1ZhcmlhYmxlc0pTT04odmFyaWFibGVzKSB7XG4gIGNvbnN0IHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXMubWFwKCh2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IHZhcmlhYmxlSlNPTiA9IHZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgdmFyaWFibGUgPSB2YXJpYWJsZUpTT047ICAvLy9cblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIGNvbmplY3R1cmUgPSBjb25qZWN0dXJlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgY29tYmluYXRvciA9IGNvbWJpbmF0b3JKU09OOyAvLy9cblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zVG9TdXBwb3NpdGlvbnNKU09OKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbkpTT04gPSBzdXBwb3NpdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OKGNvbnN0cnVjdG9ycykge1xuICBjb25zdCBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzLm1hcCgoY29uc3RydWN0b3IpID0+IHtcbiAgICBjb25zdCBjb25zdHJ1Y3RvckpTT04gPSBjb25zdHJ1Y3Rvci50b0pTT04oKTtcblxuICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OKG1ldGF0aGVvcmVtcykge1xuICBjb25zdCBtZXRhdGhlb3JlbXNKU09OID0gbWV0YXRoZW9yZW1zLm1hcCgobWV0YXRoZW9yZW0pID0+IHtcbiAgICBjb25zdCBtZXRhdGhlb3JlbUpTT04gPSBtZXRhdGhlb3JlbS50b0pTT04oKTtcblxuICAgIG1ldGF0aGVvcmVtID0gbWV0YXRoZW9yZW1KU09OOyAvLy9cblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTihzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucy5tYXBTdWJzdGl0dXRpb24oKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbkpTT04gPSBzdWJzdGl0dXRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc1RvTWV0YXZhcmlhYmxlc0pTT04obWV0YXZhcmlhYmxlcykge1xuICBjb25zdCBtZXRhdmFyaWFibGVzSlNPTiA9IG1ldGF2YXJpYWJsZXMubWFwKChtZXRhdmFyaWFibGUpID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgbWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuIl0sIm5hbWVzIjpbImF4aW9tc0Zyb21KU09OIiwiYXhpb21zVG9BeGlvbXNKU09OIiwiY29tYmluYXRvcnNGcm9tSlNPTiIsImNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04iLCJjb25jbHVzaW9uRnJvbUpTT04iLCJjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTiIsImNvbmplY3R1cmVzRnJvbUpTT04iLCJjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OIiwiY29uc2VxdWVudEZyb21KU09OIiwiY29uc2VxdWVudFRvQ29uc2VxdWVudEpTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhTGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsInByZW1pc2VzRnJvbUpTT04iLCJwcmVtaXNlc1RvUHJlbWlzZXNKU09OIiwicnVsZXNGcm9tSlNPTiIsInJ1bGVzVG9SdWxlc0pTT04iLCJzdGF0ZW1lbnRGcm9tSlNPTiIsInN0YXRlbWVudFRvU3RhdGVtZW50SlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlRnJvbUpTT04iLCJzdXBlclR5cGVUb1N1cGVyVHlwZUpTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlVG9UeXBlSlNPTiIsInR5cGVzRnJvbUpTT04iLCJ0eXBlc1RvVHlwZXNKU09OIiwidmFyaWFibGVzRnJvbUpTT04iLCJ2YXJpYWJsZXNUb1ZhcmlhYmxlc0pTT04iLCJqc29uIiwiZmlsZUNvbnRleHQiLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZG9tIiwiZnJvbUpTT04iLCJ0eXBlIiwibmFtZSIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGUiLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsInN1cGVyVHlwZSIsInN1cGVyVHlwZUpTT04iLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRKU09OIiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJjb25jbHVzaW9uSlNPTiIsImNvbnNlcXVlbnQiLCJDb25zZXF1ZW50IiwiY29uc2VxdWVudEpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwidHlwZXMiLCJ0eXBlc0pTT04iLCJUeXBlIiwiZm9yRWFjaCIsInR5cGVKU09OIiwicHVzaCIsInJ1bGVzIiwiUnVsZSIsInJ1bGVzSlNPTiIsIm1hcCIsInJ1bGVKU09OIiwicnVsZSIsImxhYmVscyIsIkxhYmVsIiwibGFiZWxzSlNPTiIsImxhYmVsSlNPTiIsImxhYmVsIiwiYXhpb21zIiwiQXhpb20iLCJheGlvbXNKU09OIiwiYXhpb21KU09OIiwiYXhpb20iLCJwcmVtaXNlcyIsIlByZW1pc2UiLCJwcmVtaXNlc0pTT04iLCJwcmVtaXNlSlNPTiIsInByZW1pc2UiLCJ0aGVvcmVtcyIsIlRoZW9yZW0iLCJ0aGVvcmVtc0pTT04iLCJ0aGVvcmVtSlNPTiIsInRoZW9yZW0iLCJ2YXJpYWJsZXMiLCJWYXJpYWJsZSIsInZhcmlhYmxlc0pTT04iLCJ2YXJpYWJsZUpTT04iLCJ2YXJpYWJsZSIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwiQ29tYmluYXRvciIsImNvbnN0cnVjdG9ycyIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIkNvbnN0cnVjdG9yIiwibWV0YXRoZW9yZW1zIiwiTWV0YXRoZW9yZW0iLCJtZXRhdGhlb3JlbXNKU09OIiwibWV0YXRoZW9yZW1KU09OIiwibWV0YXRoZW9yZW0iLCJzdXBwb3NpdGlvbnMiLCJTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbkpTT04iLCJzdXBwb3NpdGlvbiIsInN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zSlNPTiIsIlN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlc0pTT04iLCJsZW1tYXMiLCJtZXRhTGVtbWFzIiwidG9KU09OIiwibWV0YVR5cGVKU09OIiwibWFwU3Vic3RpdHV0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFnS2dCQSxjQUFjO2VBQWRBOztJQStRQUMsa0JBQWtCO2VBQWxCQTs7SUEvTEFDLG1CQUFtQjtlQUFuQkE7O0lBeVBBQyw0QkFBNEI7ZUFBNUJBOztJQTdaQUMsa0JBQWtCO2VBQWxCQTs7SUErU0FDLDBCQUEwQjtlQUExQkE7O0lBM0pBQyxtQkFBbUI7ZUFBbkJBOztJQTZQQUMsNEJBQTRCO2VBQTVCQTs7SUFwWUFDLGtCQUFrQjtlQUFsQkE7O0lBd1NBQywwQkFBMEI7ZUFBMUJBOztJQWxJQUMsb0JBQW9CO2VBQXBCQTs7SUFnUUFDLDhCQUE4QjtlQUE5QkE7O0lBL1dBQyxjQUFjO2VBQWRBOztJQXFSQUMsa0JBQWtCO2VBQWxCQTs7SUF2RkFD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
|
package/lib/utilities/string.js
CHANGED
|
@@ -20,20 +20,14 @@ _export(exports, {
|
|
|
20
20
|
},
|
|
21
21
|
tokensAsString: function() {
|
|
22
22
|
return tokensAsString;
|
|
23
|
-
},
|
|
24
|
-
trim: function() {
|
|
25
|
-
return trim;
|
|
26
23
|
}
|
|
27
24
|
});
|
|
28
25
|
var _constants = require("../constants");
|
|
29
|
-
function trim(string) {
|
|
30
|
-
string = string.replace(/\s+$/, _constants.EMPTY_STRING); ///
|
|
31
|
-
return string;
|
|
32
|
-
}
|
|
33
26
|
function nodeAsString(node, tokens) {
|
|
34
27
|
var string;
|
|
35
28
|
tokens = nodeAsTokens(node, tokens); ///
|
|
36
29
|
string = tokensAsString(tokens);
|
|
30
|
+
string = trimString(string); ///
|
|
37
31
|
return string;
|
|
38
32
|
}
|
|
39
33
|
function nodesAsString(nodes, tokens) {
|
|
@@ -64,6 +58,10 @@ function nodeAsTokens(node, tokens) {
|
|
|
64
58
|
}
|
|
65
59
|
return tokens;
|
|
66
60
|
}
|
|
61
|
+
function trimString(string) {
|
|
62
|
+
string = string.replace(/\s+$/, _constants.EMPTY_STRING); ///
|
|
63
|
+
return string;
|
|
64
|
+
}
|
|
67
65
|
function terminalNodeAsTokens(terminalNode, tokens) {
|
|
68
66
|
var significantToken = terminalNode.getSignificantToken(), token = significantToken; ///
|
|
69
67
|
tokens = [
|
|
@@ -77,4 +75,4 @@ function nonTerminalNodeAsTokens(nonTerminalNode, tokens) {
|
|
|
77
75
|
return tokens;
|
|
78
76
|
}
|
|
79
77
|
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBDT01NQSwgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbm9kZUFzU3RyaW5nKG5vZGUsIHRva2Vucykge1xuICBsZXQgc3RyaW5nO1xuXG4gIHRva2VucyA9IG5vZGVBc1Rva2Vucyhub2RlLCB0b2tlbnMpOyAgLy8vXG5cbiAgc3RyaW5nID0gdG9rZW5zQXNTdHJpbmcodG9rZW5zKTtcblxuICBzdHJpbmcgPSB0cmltU3RyaW5nKHN0cmluZyk7ICAvLy9cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9kZXNBc1N0cmluZyhub2RlcywgdG9rZW5zKSB7XG4gIGNvbnN0IHN0cmluZyA9IG5vZGVzLnJlZHVjZSgoc3RyaW5nLCBub2RlKSA9PiB7XG4gICAgY29uc3Qgbm9kZVN0cmluZyA9IG5vZGVBc1N0cmluZyhub2RlLCB0b2tlbnMpO1xuXG4gICAgc3RyaW5nID0gKHN0cmluZyA9PT0gRU1QVFlfU1RSSU5HKSA/XG4gICAgICAgICAgICAgICBub2RlU3RyaW5nIDpcbiAgICAgICAgICAgICAgICBgJHtzdHJpbmd9JHtDT01NQX0ke25vZGVTdHJpbmd9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRva2Vuc0FzU3RyaW5nKHRva2Vucykge1xuICBjb25zdCBzdHJpbmcgPSB0b2tlbnMucmVkdWNlKChzdHJpbmcsIHRva2VuKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHRva2VuLmdldENvbnRlbnQoKTtcblxuICAgIHN0cmluZyA9IGAke3N0cmluZ30ke2NvbnRlbnR9YDtcblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH0sIEVNUFRZX1NUUklORyk7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVBc1Rva2Vucyhub2RlLCB0b2tlbnMpIHtcbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKTtcblxuICBpZiAobm9kZVRlcm1pbmFsTm9kZSkge3pcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlOyAgLy8vXG5cbiAgICB0b2tlbnMgPSB0ZXJtaW5hbE5vZGVBc1Rva2Vucyh0ZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgICB0b2tlbnMgPSBub25UZXJtaW5hbE5vZGVBc1Rva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2Vucyk7XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiB0cmltU3RyaW5nKHN0cmluZykge1xuICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvXFxzKyQvLCBFTVBUWV9TVFJJTkcpOyAgLy8vXG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gdGVybWluYWxOb2RlQXNUb2tlbnModGVybWluYWxOb2RlLCB0b2tlbnMpIHtcbiAgY29uc3Qgc2lnbmlmaWNhbnRUb2tlbiA9IHRlcm1pbmFsTm9kZS5nZXRTaWduaWZpY2FudFRva2VuKCksXG4gICAgICAgIHRva2VuID0gc2lnbmlmaWNhbnRUb2tlbjsgLy8vXG5cbiAgdG9rZW5zID0gWyAgLy8vXG4gICAgdG9rZW5cbiAgXTtcblxuICByZXR1cm4gdG9rZW5zO1xufVxuXG5mdW5jdGlvbiBub25UZXJtaW5hbE5vZGVBc1Rva2Vucyhub25UZXJtaW5hbE5vZGUsIHRva2Vucykge1xuICBjb25zdCBsYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4ID0gbm9uVGVybWluYWxOb2RlLmdldExhc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXggPSBub25UZXJtaW5hbE5vZGUuZ2V0Rmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgodG9rZW5zKSxcbiAgICAgICAgc3RhcnQgPSBmaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCwgLy8vXG4gICAgICAgIGVuZCA9IGxhc3RTaWduaWZpY2FudFRva2VuSW5kZXggKyAxO1xuXG4gIHRva2VucyA9IHRva2Vucy5zbGljZShzdGFydCwgZW5kKTsgIC8vL1xuXG4gIHJldHVybiB0b2tlbnM7XG59XG4iXSwibmFtZXMiOlsibm9kZUFzU3RyaW5nIiwibm9kZUFzVG9rZW5zIiwibm9kZXNBc1N0cmluZyIsInRva2Vuc0FzU3RyaW5nIiwibm9kZSIsInRva2VucyIsInN0cmluZyIsInRyaW1TdHJpbmciLCJub2RlcyIsInJlZHVjZSIsIm5vZGVTdHJpbmciLCJFTVBUWV9TVFJJTkciLCJDT01NQSIsInRva2VuIiwiY29udGVudCIsImdldENvbnRlbnQiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJ6IiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQXNUb2tlbnMiLCJub25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVBc1Rva2VucyIsInJlcGxhY2UiLCJzaWduaWZpY2FudFRva2VuIiwiZ2V0U2lnbmlmaWNhbnRUb2tlbiIsImxhc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRMYXN0U2lnbmlmaWNhbnRUb2tlbkluZGV4IiwiZmlyc3RTaWduaWZpY2FudFRva2VuSW5kZXgiLCJnZXRGaXJzdFNpZ25pZmljYW50VG9rZW5JbmRleCIsInN0YXJ0IiwiZW5kIiwic2xpY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQUlnQkEsWUFBWTtlQUFaQTs7SUFzQ0FDLFlBQVk7ZUFBWkE7O0lBMUJBQyxhQUFhO2VBQWJBOztJQWNBQyxjQUFjO2VBQWRBOzs7eUJBNUJvQjtBQUU3QixTQUFTSCxhQUFhSSxJQUFJLEVBQUVDLE1BQU07SUFDdkMsSUFBSUM7SUFFSkQsU0FBU0osYUFBYUcsTUFBTUMsU0FBVSxHQUFHO0lBRXpDQyxTQUFTSCxlQUFlRTtJQUV4QkMsU0FBU0MsV0FBV0QsU0FBVSxHQUFHO0lBRWpDLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTSixjQUFjTSxLQUFLLEVBQUVILE1BQU07SUFDekMsSUFBTUMsU0FBU0UsTUFBTUMsTUFBTSxDQUFDLFNBQUNILFFBQVFGO1FBQ25DLElBQU1NLGFBQWFWLGFBQWFJLE1BQU1DO1FBRXRDQyxTQUFTLEFBQUNBLFdBQVdLLHVCQUFZLEdBQ3RCRCxhQUNDLEFBQUMsR0FBV0UsT0FBVE4sUUFBaUJJLE9BQVJFLGdCQUFLLEVBQWMsT0FBWEY7UUFFaEMsT0FBT0o7SUFDVCxHQUFHSyx1QkFBWTtJQUVmLE9BQU9MO0FBQ1Q7QUFFTyxTQUFTSCxlQUFlRSxNQUFNO0lBQ25DLElBQU1DLFNBQVNELE9BQU9JLE1BQU0sQ0FBQyxTQUFDSCxRQUFRTztRQUNwQyxJQUFNQyxVQUFVRCxNQUFNRSxVQUFVO1FBRWhDVCxTQUFTLEFBQUMsR0FBV1EsT0FBVFIsUUFBaUIsT0FBUlE7UUFFckIsT0FBT1I7SUFDVCxHQUFHSyx1QkFBWTtJQUVmLE9BQU9MO0FBQ1Q7QUFFTyxTQUFTTCxhQUFhRyxJQUFJLEVBQUVDLE1BQU07SUFDdkMsSUFBTVcsbUJBQW1CWixLQUFLYSxjQUFjO0lBRTVDLElBQUlELGtCQUFrQjtRQUFDRTtRQUNyQixJQUFNQyxlQUFlZixNQUFPLEdBQUc7UUFFL0JDLFNBQVNlLHFCQUFxQkQsY0FBY2Q7SUFDOUMsT0FBTztRQUNMLElBQU1nQixrQkFBa0JqQixNQUFNLEdBQUc7UUFFakNDLFNBQVNpQix3QkFBd0JELGlCQUFpQmhCO0lBQ3BEO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNFLFdBQVdELE1BQU07SUFDeEJBLFNBQVNBLE9BQU9pQixPQUFPLENBQUMsUUFBUVosdUJBQVksR0FBSSxHQUFHO0lBRW5ELE9BQU9MO0FBQ1Q7QUFFQSxTQUFTYyxxQkFBcUJELFlBQVksRUFBRWQsTUFBTTtJQUNoRCxJQUFNbUIsbUJBQW1CTCxhQUFhTSxtQkFBbUIsSUFDbkRaLFFBQVFXLGtCQUFrQixHQUFHO0lBRW5DbkIsU0FBUztRQUNQUTtLQUNEO0lBRUQsT0FBT1I7QUFDVDtBQUVBLFNBQVNpQix3QkFBd0JELGVBQWUsRUFBRWhCLE1BQU07SUFDdEQsSUFBTXFCLDRCQUE0QkwsZ0JBQWdCTSw0QkFBNEIsQ0FBQ3RCLFNBQ3pFdUIsNkJBQTZCUCxnQkFBZ0JRLDZCQUE2QixDQUFDeEIsU0FDM0V5QixRQUFRRiw0QkFDUkcsTUFBTUwsNEJBQTRCO0lBRXhDckIsU0FBU0EsT0FBTzJCLEtBQUssQ0FBQ0YsT0FBT0MsTUFBTyxHQUFHO0lBRXZDLE9BQU8xQjtBQUNUIn0=
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "subproofStringFromSubproofNode", {
|
|
|
10
10
|
});
|
|
11
11
|
var _query = require("./query");
|
|
12
12
|
var _string = require("./string");
|
|
13
|
-
var suppositionStatementNodesQuery = (0, _query.nodesQuery)("/subproof/supposition/
|
|
13
|
+
var suppositionStatementNodesQuery = (0, _query.nodesQuery)("/subproof/supposition/statement"), lastProofStepStatementNodeQuery = (0, _query.nodeQuery)("/subproof/subDerivation/lastProofStep/statement");
|
|
14
14
|
function subproofStringFromSubproofNode(subproofNode, fileContext) {
|
|
15
15
|
var subproofString = null;
|
|
16
16
|
var tokens = fileContext.getTokens(), suppositionStatementNodes = suppositionStatementNodesQuery(subproofNode), lastProofStepStatementNode = lastProofStepStatementNodeQuery(subproofNode), suppositionStatementNodesLength = suppositionStatementNodes.length;
|
|
@@ -21,4 +21,4 @@ function subproofStringFromSubproofNode(subproofNode, fileContext) {
|
|
|
21
21
|
return subproofString;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3VicHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcsIG5vZGVzQXNTdHJpbmcgfSBmcm9tIFwiLi9zdHJpbmdcIjtcblxuY29uc3Qgc3VwcG9zaXRpb25TdGF0ZW1lbnROb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdWJwcm9vZi9zdXBwb3NpdGlvbi9zdGF0ZW1lbnRcIiksXG4gICAgICBsYXN0UHJvb2ZTdGVwU3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnByb29mL3N1YkRlcml2YXRpb24vbGFzdFByb29mU3RlcC9zdGF0ZW1lbnRcIik7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgc3VicHJvb2ZTdHJpbmcgPSBudWxsO1xuXG4gIGNvbnN0IHRva2VucyA9IGZpbGVDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzID0gc3VwcG9zaXRpb25TdGF0ZW1lbnROb2Rlc1F1ZXJ5KHN1YnByb29mTm9kZSksXG4gICAgICAgIGxhc3RQcm9vZlN0ZXBTdGF0ZW1lbnROb2RlID0gbGFzdFByb29mU3RlcFN0YXRlbWVudE5vZGVRdWVyeShzdWJwcm9vZk5vZGUpLFxuICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzTGVuZ3RoID0gc3VwcG9zaXRpb25TdGF0ZW1lbnROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKChsYXN0UHJvb2ZTdGVwU3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkgJiYgKHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGgpKSB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdGF0ZW1lbnRzU3RyaW5nID0gbm9kZXNBc1N0cmluZyhzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzLCB0b2tlbnMpLFxuICAgICAgICAgIGxhc3RQcm9vZlN0ZXBTdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcobGFzdFByb29mU3RlcFN0YXRlbWVudE5vZGUsIHRva2Vucyk7XG5cbiAgICBzdWJwcm9vZlN0cmluZyA9IGBbJHtzdXBwb3NpdGlvblN0YXRlbWVudHNTdHJpbmd9XS4uLiR7bGFzdFByb29mU3RlcFN0YXRlbWVudFN0cmluZ31gO1xuICB9XG5cbiAgcmV0dXJuIHN1YnByb29mU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbInN1YnByb29mU3RyaW5nRnJvbVN1YnByb29mTm9kZSIsInN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJsYXN0UHJvb2ZTdGVwU3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5Iiwic3VicHJvb2ZOb2RlIiwiZmlsZUNvbnRleHQiLCJzdWJwcm9vZlN0cmluZyIsInRva2VucyIsImdldFRva2VucyIsInN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXMiLCJsYXN0UHJvb2ZTdGVwU3RhdGVtZW50Tm9kZSIsInN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJzdXBwb3NpdGlvblN0YXRlbWVudHNTdHJpbmciLCJub2Rlc0FzU3RyaW5nIiwibGFzdFByb29mU3RlcFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUWdCQTs7O2VBQUFBOzs7cUJBTnNCO3NCQUNNO0FBRTVDLElBQU1DLGlDQUFpQ0MsSUFBQUEsaUJBQVUsRUFBQyxvQ0FDNUNDLGtDQUFrQ0MsSUFBQUEsZ0JBQVMsRUFBQztBQUUzQyxTQUFTSiwrQkFBK0JLLFlBQVksRUFBRUMsV0FBVztJQUN0RSxJQUFJQyxpQkFBaUI7SUFFckIsSUFBTUMsU0FBU0YsWUFBWUcsU0FBUyxJQUM5QkMsNEJBQTRCVCwrQkFBK0JJLGVBQzNETSw2QkFBNkJSLGdDQUFnQ0UsZUFDN0RPLGtDQUFrQ0YsMEJBQTBCRyxNQUFNO0lBRXhFLElBQUksQUFBQ0YsK0JBQStCLFFBQVVDLGlDQUFrQztRQUM5RSxJQUFNRSw4QkFBOEJDLElBQUFBLHFCQUFhLEVBQUNMLDJCQUEyQkYsU0FDdkVRLCtCQUErQkMsSUFBQUEsb0JBQVksRUFBQ04sNEJBQTRCSDtRQUU5RUQsaUJBQWlCLEFBQUMsSUFBcUNTLE9BQWxDRiw2QkFBNEIsUUFBbUMsT0FBN0JFO0lBQ3pEO0lBRUEsT0FBT1Q7QUFDVCJ9
|
|
@@ -19,7 +19,7 @@ _export(exports, {
|
|
|
19
19
|
return termFromTermAndSubstitutions;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
var
|
|
22
|
+
var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
|
|
23
23
|
var _term = /*#__PURE__*/ _interop_require_default(require("../substitution/term"));
|
|
24
24
|
var _frame = /*#__PURE__*/ _interop_require_default(require("../substitution/frame"));
|
|
25
25
|
function _interop_require_default(obj) {
|
|
@@ -29,7 +29,7 @@ function _interop_require_default(obj) {
|
|
|
29
29
|
}
|
|
30
30
|
function termFromTermAndSubstitutions(term, substitutions, context) {
|
|
31
31
|
if (term !== null) {
|
|
32
|
-
var Variable =
|
|
32
|
+
var Variable = _dom.default.Variable, termNode = term.getNode(), variable = Variable.fromTermNode(termNode, context);
|
|
33
33
|
if (variable !== null) {
|
|
34
34
|
var substitution = substitutions.findSubstitutionByVariable(variable);
|
|
35
35
|
if (substitution !== null) {
|
|
@@ -41,9 +41,10 @@ function termFromTermAndSubstitutions(term, substitutions, context) {
|
|
|
41
41
|
}
|
|
42
42
|
function frameFromFrameAndSubstitutions(frame, substitutions, context) {
|
|
43
43
|
if (frame !== null) {
|
|
44
|
-
var Metavariable =
|
|
44
|
+
var Metavariable = _dom.default.Metavariable, frameNode = frame.getNode(), metavariable = Metavariable.fromFrameNode(frameNode, context);
|
|
45
45
|
if (metavariable !== null) {
|
|
46
|
-
var substitution =
|
|
46
|
+
var substitution = null;
|
|
47
|
+
substitution = substitutions.findSubstitutionByMetavariableAndSubstitution(metavariable, substitution);
|
|
47
48
|
if (substitution !== null) {
|
|
48
49
|
frame = substitution.getFrame();
|
|
49
50
|
}
|
|
@@ -53,7 +54,7 @@ function frameFromFrameAndSubstitutions(frame, substitutions, context) {
|
|
|
53
54
|
}
|
|
54
55
|
function statementFromStatementAndSubstitutions(statement, substitutions, context) {
|
|
55
56
|
if (statement !== null) {
|
|
56
|
-
var Metavariable =
|
|
57
|
+
var Metavariable = _dom.default.Metavariable, statementNode = statement.getNode(), metavariable = Metavariable.fromStatementNode(statementNode, context);
|
|
57
58
|
statement = null; ///
|
|
58
59
|
if (metavariable !== null) {
|
|
59
60
|
var substitution;
|
|
@@ -68,4 +69,4 @@ function statementFromStatementAndSubstitutions(statement, substitutions, contex
|
|
|
68
69
|
return statement;
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3Vic3RpdHV0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgVGVybVN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uL3Rlcm1cIjtcbmltcG9ydCBGcmFtZVN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uL2ZyYW1lXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zKHRlcm0sIHN1YnN0aXR1dGlvbnMsIGNvbnRleHQpIHtcbiAgaWYgKHRlcm0gIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgICAgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICBpZiAodmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIHRlcm0gPSBzdWJzdGl0dXRpb24uZ2V0VGVybSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zKGZyYW1lLCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGlmIChmcmFtZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgICAgZnJhbWVOb2RlID0gZnJhbWUuZ2V0Tm9kZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBsZXQgc3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgICAgc3Vic3RpdHV0aW9uID0gc3Vic3RpdHV0aW9ucy5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24obWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgIGZyYW1lID0gc3Vic3RpdHV0aW9uLmdldEZyYW1lKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMoc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBjb250ZXh0KSB7XG4gIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgIHN0YXRlbWVudCA9IG51bGw7IC8vL1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgbGV0IHN1YnN0aXR1dGlvbjtcblxuICAgICAgY29uc3QgdGVybVN1YnN0aXR1dGlvbiA9IFRlcm1TdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbiA9IEZyYW1lU3Vic3RpdHV0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBzdWJzdGl0dXRpb24gPSAodGVybVN1YnN0aXR1dGlvbiB8fCBmcmFtZVN1YnN0aXR1dGlvbik7XG5cbiAgICAgIHN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbnMuZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKTsgLy8vXG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgc3RhdGVtZW50ID0gc3Vic3RpdHV0aW9uLmdldFN0YXRlbWVudCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwidGVybSIsInN1YnN0aXR1dGlvbnMiLCJjb250ZXh0IiwiVmFyaWFibGUiLCJkb20iLCJ0ZXJtTm9kZSIsImdldE5vZGUiLCJ2YXJpYWJsZSIsImZyb21UZXJtTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmRTdWJzdGl0dXRpb25CeVZhcmlhYmxlIiwiZ2V0VGVybSIsImZyYW1lIiwiTWV0YXZhcmlhYmxlIiwiZnJhbWVOb2RlIiwibWV0YXZhcmlhYmxlIiwiZnJvbUZyYW1lTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsImdldEZyYW1lIiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImZyb21TdGF0ZW1lbnROb2RlIiwidGVybVN1YnN0aXR1dGlvbiIsIlRlcm1TdWJzdGl0dXRpb24iLCJmcmFtZVN1YnN0aXR1dGlvbiIsIkZyYW1lU3Vic3RpdHV0aW9uIiwiZ2V0U3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUF3QmdCQSw4QkFBOEI7ZUFBOUJBOztJQW9CQUMsc0NBQXNDO2VBQXRDQTs7SUF0Q0FDLDRCQUE0QjtlQUE1QkE7OzswREFKQTsyREFDYTs0REFDQzs7Ozs7O0FBRXZCLFNBQVNBLDZCQUE2QkMsSUFBSSxFQUFFQyxhQUFhLEVBQUVDLE9BQU87SUFDdkUsSUFBSUYsU0FBUyxNQUFNO1FBQ2pCLElBQU0sQUFBRUcsV0FBYUMsWUFBRyxDQUFoQkQsVUFDRkUsV0FBV0wsS0FBS00sT0FBTyxJQUN2QkMsV0FBV0osU0FBU0ssWUFBWSxDQUFDSCxVQUFVSDtRQUVqRCxJQUFJSyxhQUFhLE1BQU07WUFDckIsSUFBTUUsZUFBZVIsY0FBY1MsMEJBQTBCLENBQUNIO1lBRTlELElBQUlFLGlCQUFpQixNQUFNO2dCQUN6QlQsT0FBT1MsYUFBYUUsT0FBTztZQUM3QjtRQUNGO0lBQ0Y7SUFFQSxPQUFPWDtBQUNUO0FBRU8sU0FBU0gsK0JBQStCZSxLQUFLLEVBQUVYLGFBQWEsRUFBRUMsT0FBTztJQUMxRSxJQUFJVSxVQUFVLE1BQU07UUFDbEIsSUFBTSxBQUFFQyxlQUFpQlQsWUFBRyxDQUFwQlMsY0FDRkMsWUFBWUYsTUFBTU4sT0FBTyxJQUN6QlMsZUFBZUYsYUFBYUcsYUFBYSxDQUFDRixXQUFXWjtRQUUzRCxJQUFJYSxpQkFBaUIsTUFBTTtZQUN6QixJQUFJTixlQUFlO1lBRW5CQSxlQUFlUixjQUFjZ0IsNkNBQTZDLENBQUNGLGNBQWNOO1lBRXpGLElBQUlBLGlCQUFpQixNQUFNO2dCQUN6QkcsUUFBUUgsYUFBYVMsUUFBUTtZQUMvQjtRQUNGO0lBQ0Y7SUFFQSxPQUFPTjtBQUNUO0FBRU8sU0FBU2QsdUNBQXVDcUIsU0FBUyxFQUFFbEIsYUFBYSxFQUFFQyxPQUFPO0lBQ3RGLElBQUlpQixjQUFjLE1BQU07UUFDdEIsSUFBTSxBQUFFTixlQUFpQlQsWUFBRyxDQUFwQlMsY0FDRk8sZ0JBQWdCRCxVQUFVYixPQUFPLElBQ2pDUyxlQUFlRixhQUFhUSxpQkFBaUIsQ0FBQ0QsZUFBZWxCO1FBRW5FaUIsWUFBWSxNQUFNLEdBQUc7UUFFckIsSUFBSUosaUJBQWlCLE1BQU07WUFDekIsSUFBSU47WUFFSixJQUFNYSxtQkFBbUJDLGFBQWdCLENBQUNGLGlCQUFpQixDQUFDRCxlQUFlbEIsVUFDckVzQixvQkFBb0JDLGNBQWlCLENBQUNKLGlCQUFpQixDQUFDRCxlQUFlbEI7WUFFN0VPLGVBQWdCYSxvQkFBb0JFO1lBRXBDZixlQUFlUixjQUFjZ0IsNkNBQTZDLENBQUNGLGNBQWNOLGVBQWUsR0FBRztZQUUzRyxJQUFJQSxpQkFBaUIsTUFBTTtnQkFDekJVLFlBQVlWLGFBQWFpQixZQUFZO1lBQ3ZDO1FBQ0Y7SUFDRjtJQUVBLE9BQU9QO0FBQ1QifQ==
|