occam-verify-cli 1.0.984 → 1.0.985
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/action/verify.js +22 -27
- package/lib/constants.js +1 -41
- package/lib/index.js +1 -2
- package/lib/utilities/fileContext.js +3 -8
- package/lib/utilities/releaseContext.js +2 -2
- package/package.json +5 -6
- package/src/action/verify.js +8 -18
- package/src/constants.js +0 -10
- package/src/index.js +0 -2
- package/src/utilities/fileContext.js +1 -2
- package/src/utilities/releaseContext.js +1 -1
- package/lib/context/aphasic.js +0 -27
- package/lib/context/bounded.js +0 -244
- package/lib/context/branching.js +0 -61
- package/lib/context/file/nominal.js +0 -586
- package/lib/context/illative.js +0 -28
- package/lib/context/liminal.js +0 -200
- package/lib/context/literal.js +0 -44
- package/lib/context/mnemic.js +0 -454
- package/lib/context/nested.js +0 -31
- package/lib/context/nominal.js +0 -57
- package/lib/context/phaneric.js +0 -44
- package/lib/context/thetic.js +0 -28
- package/lib/context.js +0 -445
- package/lib/element/assertion/contained.js +0 -218
- package/lib/element/assertion/defined.js +0 -213
- package/lib/element/assertion/property.js +0 -176
- package/lib/element/assertion/signature.js +0 -170
- package/lib/element/assertion/subproof.js +0 -220
- package/lib/element/assertion/type.js +0 -227
- package/lib/element/assertion.js +0 -49
- package/lib/element/assumption/metaLevel.js +0 -244
- package/lib/element/assumption.js +0 -252
- package/lib/element/combinator/bracketed.js +0 -36
- package/lib/element/combinator.js +0 -104
- package/lib/element/conclusion.js +0 -131
- package/lib/element/constructor/bracketed.js +0 -57
- package/lib/element/constructor.js +0 -129
- package/lib/element/declaration/combinator.js +0 -58
- package/lib/element/declaration/complexType.js +0 -180
- package/lib/element/declaration/constructor.js +0 -93
- package/lib/element/declaration/metavariable.js +0 -77
- package/lib/element/declaration/property.js +0 -88
- package/lib/element/declaration/simpleType.js +0 -148
- package/lib/element/declaration/typePrefix.js +0 -53
- package/lib/element/declaration/variable.js +0 -99
- package/lib/element/declaration.js +0 -15
- package/lib/element/deduction.js +0 -131
- package/lib/element/derivation.js +0 -46
- package/lib/element/equality.js +0 -211
- package/lib/element/equivalence.js +0 -200
- package/lib/element/error.js +0 -27
- package/lib/element/frame.js +0 -238
- package/lib/element/hypothesis.js +0 -135
- package/lib/element/judgement.js +0 -212
- package/lib/element/label.js +0 -135
- package/lib/element/metaType.js +0 -57
- package/lib/element/metavariable.js +0 -452
- package/lib/element/parameter.js +0 -69
- package/lib/element/procedureCall.js +0 -116
- package/lib/element/procedureReference.js +0 -56
- package/lib/element/proof.js +0 -52
- package/lib/element/proofAssertion/premise.js +0 -238
- package/lib/element/proofAssertion/step.js +0 -235
- package/lib/element/proofAssertion/supposition.js +0 -249
- package/lib/element/proofAssertion.js +0 -56
- package/lib/element/property.js +0 -176
- package/lib/element/propertyRelation.js +0 -132
- package/lib/element/reference.js +0 -227
- package/lib/element/rule.js +0 -242
- package/lib/element/section.js +0 -64
- package/lib/element/signature.js +0 -195
- package/lib/element/statement.js +0 -228
- package/lib/element/subDerivation.js +0 -46
- package/lib/element/subproof.js +0 -91
- package/lib/element/substitution/frame.js +0 -256
- package/lib/element/substitution/reference.js +0 -192
- package/lib/element/substitution/statement.js +0 -294
- package/lib/element/substitution/term.js +0 -266
- package/lib/element/substitution.js +0 -183
- package/lib/element/term.js +0 -217
- package/lib/element/topLevelAssertion/axiom.js +0 -158
- package/lib/element/topLevelAssertion/conjecture.js +0 -42
- package/lib/element/topLevelAssertion/lemma.js +0 -39
- package/lib/element/topLevelAssertion/theorem.js +0 -42
- package/lib/element/topLevelAssertion.js +0 -286
- package/lib/element/topLevelMetaAssertion/metaLemma.js +0 -42
- package/lib/element/topLevelMetaAssertion/metatheorem.js +0 -42
- package/lib/element/topLevelMetaAssertion.js +0 -179
- package/lib/element/type.js +0 -240
- package/lib/element/typePrefix.js +0 -85
- package/lib/element/variable.js +0 -206
- package/lib/elements.js +0 -27
- package/lib/metaTypeNames.js +0 -26
- package/lib/metaTypes.js +0 -66
- package/lib/node/argument.js +0 -31
- package/lib/node/assertion/contained.js +0 -51
- package/lib/node/assertion/defined.js +0 -47
- package/lib/node/assertion/property.js +0 -36
- package/lib/node/assertion/signature.js +0 -32
- package/lib/node/assertion/subproof.js +0 -28
- package/lib/node/assertion/type.js +0 -32
- package/lib/node/assertion.js +0 -18
- package/lib/node/assumption/metaLevel.js +0 -27
- package/lib/node/assumption.js +0 -27
- package/lib/node/body/axiom.js +0 -23
- package/lib/node/body/conjecture.js +0 -23
- package/lib/node/body/lemma.js +0 -23
- package/lib/node/body/metaLemma.js +0 -23
- package/lib/node/body/metatheorem.js +0 -23
- package/lib/node/body/rule.js +0 -44
- package/lib/node/body/theorem.js +0 -23
- package/lib/node/body.js +0 -31
- package/lib/node/combinator.js +0 -23
- package/lib/node/conclusion.js +0 -27
- package/lib/node/constructor.js +0 -23
- package/lib/node/declaration/combinator.js +0 -28
- package/lib/node/declaration/complexType.js +0 -72
- package/lib/node/declaration/constructor.js +0 -47
- package/lib/node/declaration/metavariable.js +0 -36
- package/lib/node/declaration/property.js +0 -44
- package/lib/node/declaration/simpleType.js +0 -72
- package/lib/node/declaration/typePrefix.js +0 -32
- package/lib/node/declaration/variable.js +0 -51
- package/lib/node/declaration.js +0 -18
- package/lib/node/deduction.js +0 -27
- package/lib/node/derivation.js +0 -26
- package/lib/node/document.js +0 -18
- package/lib/node/equality.js +0 -33
- package/lib/node/equivalence.js +0 -23
- package/lib/node/equivalences.js +0 -18
- package/lib/node/error.js +0 -18
- package/lib/node/frame.js +0 -38
- package/lib/node/header/axiom.js +0 -28
- package/lib/node/header/conjecture.js +0 -23
- package/lib/node/header/lemma.js +0 -23
- package/lib/node/header/metaLemma.js +0 -23
- package/lib/node/header/metatheorem.js +0 -23
- package/lib/node/header/rule.js +0 -23
- package/lib/node/header/theorem.js +0 -23
- package/lib/node/header.js +0 -47
- package/lib/node/hypothesis.js +0 -27
- package/lib/node/judgement.js +0 -31
- package/lib/node/label.js +0 -23
- package/lib/node/labels.js +0 -23
- package/lib/node/metaArgument.js +0 -23
- package/lib/node/metaType.js +0 -30
- package/lib/node/metavariable.js +0 -39
- package/lib/node/parameter.js +0 -47
- package/lib/node/parenthesisedLabel.js +0 -23
- package/lib/node/parenthesisedLabels.js +0 -27
- package/lib/node/placeholder.js +0 -18
- package/lib/node/procedureCall.js +0 -31
- package/lib/node/procedureReference.js +0 -30
- package/lib/node/proof.js +0 -23
- package/lib/node/proofAssertion/premise.js +0 -28
- package/lib/node/proofAssertion/step.js +0 -52
- package/lib/node/proofAssertion/supposition.js +0 -28
- package/lib/node/proofAssertion.js +0 -27
- package/lib/node/property.js +0 -30
- package/lib/node/propertyRelation.js +0 -31
- package/lib/node/qualification.js +0 -27
- package/lib/node/reference.js +0 -23
- package/lib/node/rule.js +0 -43
- package/lib/node/section.js +0 -39
- package/lib/node/signature.js +0 -23
- package/lib/node/statement.js +0 -103
- package/lib/node/subDerivation.js +0 -26
- package/lib/node/subproof.js +0 -35
- package/lib/node/substitution/frame.js +0 -40
- package/lib/node/substitution/reference.js +0 -40
- package/lib/node/substitution/statement.js +0 -60
- package/lib/node/substitution/term.js +0 -40
- package/lib/node/substitution.js +0 -18
- package/lib/node/term.js +0 -60
- package/lib/node/topLevelAssertion/axiom.js +0 -26
- package/lib/node/topLevelAssertion/conjecture.js +0 -26
- package/lib/node/topLevelAssertion/lemma.js +0 -26
- package/lib/node/topLevelAssertion/theorem.js +0 -26
- package/lib/node/topLevelAssertion.js +0 -46
- package/lib/node/topLevelMetaAssertion/metaLemma.js +0 -26
- package/lib/node/topLevelMetaAssertion/metatheorem.js +0 -26
- package/lib/node/topLevelMetaAssertion.js +0 -42
- package/lib/node/type.js +0 -60
- package/lib/node/typePrefix.js +0 -30
- package/lib/node/types.js +0 -23
- package/lib/node/variable.js +0 -30
- package/lib/nominal/lexer.js +0 -15
- package/lib/nominal/parser.js +0 -24
- package/lib/nonTerminalNodeMap.js +0 -189
- package/lib/pass/zip.js +0 -23
- package/lib/preamble.js +0 -73
- package/lib/process/assign.js +0 -62
- package/lib/process/discharge.js +0 -38
- package/lib/process/equate.js +0 -73
- package/lib/process/instantiate.js +0 -261
- package/lib/process/unification.js +0 -228
- package/lib/process/unify.js +0 -336
- package/lib/process/validate.js +0 -135
- package/lib/process/validation.js +0 -291
- package/lib/process/verify.js +0 -205
- package/lib/ruleNames.js +0 -350
- package/lib/tokenTypes.js +0 -22
- package/lib/utilities/assignment.js +0 -47
- package/lib/utilities/bnf.js +0 -21
- package/lib/utilities/brackets.js +0 -77
- package/lib/utilities/breakPoint.js +0 -38
- package/lib/utilities/context.js +0 -220
- package/lib/utilities/element.js +0 -1851
- package/lib/utilities/equivalence.js +0 -27
- package/lib/utilities/equivalences.js +0 -134
- package/lib/utilities/instance.js +0 -44
- package/lib/utilities/json.js +0 -1109
- package/lib/utilities/string.js +0 -231
- package/lib/utilities/substitutions.js +0 -86
- package/lib/utilities/synoptic.js +0 -159
- package/lib/utilities/type.js +0 -27
- package/src/context/aphasic.js +0 -15
- package/src/context/bounded.js +0 -362
- package/src/context/branching.js +0 -69
- package/src/context/file/nominal.js +0 -955
- package/src/context/illative.js +0 -17
- package/src/context/liminal.js +0 -280
- package/src/context/literal.js +0 -42
- package/src/context/mnemic.js +0 -778
- package/src/context/nested.js +0 -21
- package/src/context/nominal.js +0 -62
- package/src/context/phaneric.js +0 -43
- package/src/context/thetic.js +0 -17
- package/src/context.js +0 -722
- package/src/element/assertion/contained.js +0 -313
- package/src/element/assertion/defined.js +0 -310
- package/src/element/assertion/property.js +0 -252
- package/src/element/assertion/signature.js +0 -239
- package/src/element/assertion/subproof.js +0 -335
- package/src/element/assertion/type.js +0 -328
- package/src/element/assertion.js +0 -65
- package/src/element/assumption/metaLevel.js +0 -373
- package/src/element/assumption.js +0 -374
- package/src/element/combinator/bracketed.js +0 -32
- package/src/element/combinator.js +0 -145
- package/src/element/conclusion.js +0 -185
- package/src/element/constructor/bracketed.js +0 -68
- package/src/element/constructor.js +0 -188
- package/src/element/declaration/combinator.js +0 -66
- package/src/element/declaration/complexType.js +0 -257
- package/src/element/declaration/constructor.js +0 -122
- package/src/element/declaration/metavariable.js +0 -93
- package/src/element/declaration/property.js +0 -108
- package/src/element/declaration/simpleType.js +0 -208
- package/src/element/declaration/typePrefix.js +0 -58
- package/src/element/declaration/variable.js +0 -130
- package/src/element/declaration.js +0 -7
- package/src/element/deduction.js +0 -185
- package/src/element/derivation.js +0 -57
- package/src/element/equality.js +0 -325
- package/src/element/equivalence.js +0 -276
- package/src/element/error.js +0 -26
- package/src/element/frame.js +0 -356
- package/src/element/hypothesis.js +0 -186
- package/src/element/judgement.js +0 -303
- package/src/element/label.js +0 -186
- package/src/element/metaType.js +0 -75
- package/src/element/metavariable.js +0 -662
- package/src/element/parameter.js +0 -90
- package/src/element/procedureCall.js +0 -159
- package/src/element/procedureReference.js +0 -71
- package/src/element/proof.js +0 -61
- package/src/element/proofAssertion/premise.js +0 -354
- package/src/element/proofAssertion/step.js +0 -271
- package/src/element/proofAssertion/supposition.js +0 -377
- package/src/element/proofAssertion.js +0 -74
- package/src/element/property.js +0 -258
- package/src/element/propertyRelation.js +0 -193
- package/src/element/reference.js +0 -345
- package/src/element/rule.js +0 -358
- package/src/element/section.js +0 -78
- package/src/element/signature.js +0 -292
- package/src/element/statement.js +0 -358
- package/src/element/subDerivation.js +0 -56
- package/src/element/subproof.js +0 -116
- package/src/element/substitution/frame.js +0 -392
- package/src/element/substitution/reference.js +0 -274
- package/src/element/substitution/statement.js +0 -452
- package/src/element/substitution/term.js +0 -407
- package/src/element/substitution.js +0 -261
- package/src/element/term.js +0 -339
- package/src/element/topLevelAssertion/axiom.js +0 -244
- package/src/element/topLevelAssertion/conjecture.js +0 -40
- package/src/element/topLevelAssertion/lemma.js +0 -42
- package/src/element/topLevelAssertion/theorem.js +0 -40
- package/src/element/topLevelAssertion.js +0 -436
- package/src/element/topLevelMetaAssertion/metaLemma.js +0 -40
- package/src/element/topLevelMetaAssertion/metatheorem.js +0 -40
- package/src/element/topLevelMetaAssertion.js +0 -276
- package/src/element/type.js +0 -374
- package/src/element/typePrefix.js +0 -113
- package/src/element/variable.js +0 -259
- package/src/elements.js +0 -13
- package/src/metaTypeNames.js +0 -5
- package/src/metaTypes.js +0 -71
- package/src/node/argument.js +0 -30
- package/src/node/assertion/contained.js +0 -53
- package/src/node/assertion/defined.js +0 -46
- package/src/node/assertion/property.js +0 -30
- package/src/node/assertion/signature.js +0 -23
- package/src/node/assertion/subproof.js +0 -16
- package/src/node/assertion/type.js +0 -23
- package/src/node/assertion.js +0 -7
- package/src/node/assumption/metaLevel.js +0 -23
- package/src/node/assumption.js +0 -23
- package/src/node/body/axiom.js +0 -7
- package/src/node/body/conjecture.js +0 -7
- package/src/node/body/lemma.js +0 -7
- package/src/node/body/metaLemma.js +0 -7
- package/src/node/body/metatheorem.js +0 -7
- package/src/node/body/rule.js +0 -42
- package/src/node/body/theorem.js +0 -7
- package/src/node/body.js +0 -30
- package/src/node/combinator.js +0 -16
- package/src/node/conclusion.js +0 -23
- package/src/node/constructor.js +0 -16
- package/src/node/declaration/combinator.js +0 -16
- package/src/node/declaration/complexType.js +0 -88
- package/src/node/declaration/constructor.js +0 -46
- package/src/node/declaration/metavariable.js +0 -30
- package/src/node/declaration/property.js +0 -42
- package/src/node/declaration/simpleType.js +0 -87
- package/src/node/declaration/typePrefix.js +0 -24
- package/src/node/declaration/variable.js +0 -53
- package/src/node/declaration.js +0 -7
- package/src/node/deduction.js +0 -23
- package/src/node/derivation.js +0 -19
- package/src/node/document.js +0 -7
- package/src/node/equality.js +0 -35
- package/src/node/equivalence.js +0 -16
- package/src/node/equivalences.js +0 -7
- package/src/node/error.js +0 -7
- package/src/node/frame.js +0 -40
- package/src/node/header/axiom.js +0 -16
- package/src/node/header/conjecture.js +0 -7
- package/src/node/header/lemma.js +0 -7
- package/src/node/header/metaLemma.js +0 -7
- package/src/node/header/metatheorem.js +0 -7
- package/src/node/header/rule.js +0 -7
- package/src/node/header/theorem.js +0 -7
- package/src/node/header.js +0 -54
- package/src/node/hypothesis.js +0 -23
- package/src/node/judgement.js +0 -30
- package/src/node/label.js +0 -16
- package/src/node/labels.js +0 -16
- package/src/node/metaArgument.js +0 -16
- package/src/node/metaType.js +0 -26
- package/src/node/metavariable.js +0 -42
- package/src/node/parameter.js +0 -51
- package/src/node/parenthesisedLabel.js +0 -16
- package/src/node/parenthesisedLabels.js +0 -23
- package/src/node/placeholder.js +0 -7
- package/src/node/procedureCall.js +0 -30
- package/src/node/procedureReference.js +0 -26
- package/src/node/proof.js +0 -16
- package/src/node/proofAssertion/premise.js +0 -16
- package/src/node/proofAssertion/step.js +0 -52
- package/src/node/proofAssertion/supposition.js +0 -16
- package/src/node/proofAssertion.js +0 -23
- package/src/node/property.js +0 -28
- package/src/node/propertyRelation.js +0 -30
- package/src/node/qualification.js +0 -23
- package/src/node/reference.js +0 -16
- package/src/node/rule.js +0 -51
- package/src/node/section.js +0 -44
- package/src/node/signature.js +0 -16
- package/src/node/statement.js +0 -167
- package/src/node/subDerivation.js +0 -19
- package/src/node/subproof.js +0 -35
- package/src/node/substitution/frame.js +0 -37
- package/src/node/substitution/reference.js +0 -38
- package/src/node/substitution/statement.js +0 -70
- package/src/node/substitution/term.js +0 -38
- package/src/node/substitution.js +0 -7
- package/src/node/term.js +0 -75
- package/src/node/topLevelAssertion/axiom.js +0 -13
- package/src/node/topLevelAssertion/conjecture.js +0 -13
- package/src/node/topLevelAssertion/lemma.js +0 -13
- package/src/node/topLevelAssertion/theorem.js +0 -13
- package/src/node/topLevelAssertion.js +0 -58
- package/src/node/topLevelMetaAssertion/metaLemma.js +0 -13
- package/src/node/topLevelMetaAssertion/metatheorem.js +0 -13
- package/src/node/topLevelMetaAssertion.js +0 -51
- package/src/node/type.js +0 -74
- package/src/node/typePrefix.js +0 -26
- package/src/node/types.js +0 -16
- package/src/node/variable.js +0 -26
- package/src/nominal/lexer.js +0 -5
- package/src/nominal/parser.js +0 -12
- package/src/nonTerminalNodeMap.js +0 -261
- package/src/pass/zip.js +0 -19
- package/src/preamble.js +0 -64
- package/src/process/assign.js +0 -53
- package/src/process/discharge.js +0 -33
- package/src/process/equate.js +0 -94
- package/src/process/instantiate.js +0 -198
- package/src/process/unification.js +0 -332
- package/src/process/unify.js +0 -504
- package/src/process/validate.js +0 -174
- package/src/process/validation.js +0 -410
- package/src/process/verify.js +0 -299
- package/src/ruleNames.js +0 -86
- package/src/tokenTypes.js +0 -4
- package/src/utilities/assignment.js +0 -57
- package/src/utilities/bnf.js +0 -20
- package/src/utilities/brackets.js +0 -87
- package/src/utilities/breakPoint.js +0 -29
- package/src/utilities/context.js +0 -223
- package/src/utilities/element.js +0 -2293
- package/src/utilities/equivalence.js +0 -25
- package/src/utilities/equivalences.js +0 -158
- package/src/utilities/instance.js +0 -40
- package/src/utilities/json.js +0 -1273
- package/src/utilities/string.js +0 -282
- package/src/utilities/substitutions.js +0 -93
- package/src/utilities/synoptic.js +0 -135
- package/src/utilities/type.js +0 -19
package/lib/utilities/json.js
DELETED
|
@@ -1,1109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
get ariableToVariableJSON () {
|
|
13
|
-
return ariableToVariableJSON;
|
|
14
|
-
},
|
|
15
|
-
get assertionsFromJSON () {
|
|
16
|
-
return assertionsFromJSON;
|
|
17
|
-
},
|
|
18
|
-
get assertionsToAssertionsJSON () {
|
|
19
|
-
return assertionsToAssertionsJSON;
|
|
20
|
-
},
|
|
21
|
-
get assumptionsFromJSON () {
|
|
22
|
-
return assumptionsFromJSON;
|
|
23
|
-
},
|
|
24
|
-
get assumptionsToAssumptionsJSON () {
|
|
25
|
-
return assumptionsToAssumptionsJSON;
|
|
26
|
-
},
|
|
27
|
-
get axiomsFromJSON () {
|
|
28
|
-
return axiomsFromJSON;
|
|
29
|
-
},
|
|
30
|
-
get axiomsToAxiomsJSON () {
|
|
31
|
-
return axiomsToAxiomsJSON;
|
|
32
|
-
},
|
|
33
|
-
get combinatorsFromJSON () {
|
|
34
|
-
return combinatorsFromJSON;
|
|
35
|
-
},
|
|
36
|
-
get combinatorsToCombinatorsJSON () {
|
|
37
|
-
return combinatorsToCombinatorsJSON;
|
|
38
|
-
},
|
|
39
|
-
get conclusionFromJSON () {
|
|
40
|
-
return conclusionFromJSON;
|
|
41
|
-
},
|
|
42
|
-
get conclusionToConclusionJSON () {
|
|
43
|
-
return conclusionToConclusionJSON;
|
|
44
|
-
},
|
|
45
|
-
get conjecturesFromJSON () {
|
|
46
|
-
return conjecturesFromJSON;
|
|
47
|
-
},
|
|
48
|
-
get conjecturesToConjecturesJSON () {
|
|
49
|
-
return conjecturesToConjecturesJSON;
|
|
50
|
-
},
|
|
51
|
-
get constructorsFromJSON () {
|
|
52
|
-
return constructorsFromJSON;
|
|
53
|
-
},
|
|
54
|
-
get constructorsToConstructorsJSON () {
|
|
55
|
-
return constructorsToConstructorsJSON;
|
|
56
|
-
},
|
|
57
|
-
get declaredMetavariableToDEclaredMetavariableJSON () {
|
|
58
|
-
return declaredMetavariableToDEclaredMetavariableJSON;
|
|
59
|
-
},
|
|
60
|
-
get declaredMetavariablesFromJSON () {
|
|
61
|
-
return declaredMetavariablesFromJSON;
|
|
62
|
-
},
|
|
63
|
-
get declaredMetavariablesToDeclaredMetavariablesJSON () {
|
|
64
|
-
return declaredMetavariablesToDeclaredMetavariablesJSON;
|
|
65
|
-
},
|
|
66
|
-
get declaredVariablesFromJSON () {
|
|
67
|
-
return declaredVariablesFromJSON;
|
|
68
|
-
},
|
|
69
|
-
get declaredVariablesToDeclaredVariablesJSON () {
|
|
70
|
-
return declaredVariablesToDeclaredVariablesJSON;
|
|
71
|
-
},
|
|
72
|
-
get deductionFromJSON () {
|
|
73
|
-
return deductionFromJSON;
|
|
74
|
-
},
|
|
75
|
-
get deductionToDeductionJSON () {
|
|
76
|
-
return deductionToDeductionJSON;
|
|
77
|
-
},
|
|
78
|
-
get equalitiesFromJSON () {
|
|
79
|
-
return equalitiesFromJSON;
|
|
80
|
-
},
|
|
81
|
-
get equalitiesToEqualitiesJSON () {
|
|
82
|
-
return equalitiesToEqualitiesJSON;
|
|
83
|
-
},
|
|
84
|
-
get frameFromJSON () {
|
|
85
|
-
return frameFromJSON;
|
|
86
|
-
},
|
|
87
|
-
get frameToFrameJSON () {
|
|
88
|
-
return frameToFrameJSON;
|
|
89
|
-
},
|
|
90
|
-
get framesFromJSON () {
|
|
91
|
-
return framesFromJSON;
|
|
92
|
-
},
|
|
93
|
-
get framesToFramesJSON () {
|
|
94
|
-
return framesToFramesJSON;
|
|
95
|
-
},
|
|
96
|
-
get hypothesesFromJSON () {
|
|
97
|
-
return hypothesesFromJSON;
|
|
98
|
-
},
|
|
99
|
-
get hypothesesToHypothesesJSON () {
|
|
100
|
-
return hypothesesToHypothesesJSON;
|
|
101
|
-
},
|
|
102
|
-
get identifierFromJSON () {
|
|
103
|
-
return identifierFromJSON;
|
|
104
|
-
},
|
|
105
|
-
get identifierToIdentifierJSON () {
|
|
106
|
-
return identifierToIdentifierJSON;
|
|
107
|
-
},
|
|
108
|
-
get judgementsFromJSON () {
|
|
109
|
-
return judgementsFromJSON;
|
|
110
|
-
},
|
|
111
|
-
get judgementsToJudgementsJSON () {
|
|
112
|
-
return judgementsToJudgementsJSON;
|
|
113
|
-
},
|
|
114
|
-
get labelFromJSON () {
|
|
115
|
-
return labelFromJSON;
|
|
116
|
-
},
|
|
117
|
-
get labelToLabelJSON () {
|
|
118
|
-
return labelToLabelJSON;
|
|
119
|
-
},
|
|
120
|
-
get labelsFromJSON () {
|
|
121
|
-
return labelsFromJSON;
|
|
122
|
-
},
|
|
123
|
-
get labelsToLabelsJSON () {
|
|
124
|
-
return labelsToLabelsJSON;
|
|
125
|
-
},
|
|
126
|
-
get metaLevelAssumptionsFromJSON () {
|
|
127
|
-
return metaLevelAssumptionsFromJSON;
|
|
128
|
-
},
|
|
129
|
-
get metaLevelAssumptionsToMetaLevelAssumptionsJSON () {
|
|
130
|
-
return metaLevelAssumptionsToMetaLevelAssumptionsJSON;
|
|
131
|
-
},
|
|
132
|
-
get metaTypeFromJSON () {
|
|
133
|
-
return metaTypeFromJSON;
|
|
134
|
-
},
|
|
135
|
-
get metaTypeToMetaTypeJSON () {
|
|
136
|
-
return metaTypeToMetaTypeJSON;
|
|
137
|
-
},
|
|
138
|
-
get metatheoremsFromJSON () {
|
|
139
|
-
return metatheoremsFromJSON;
|
|
140
|
-
},
|
|
141
|
-
get metatheoremsToMetatheoremsJSON () {
|
|
142
|
-
return metatheoremsToMetatheoremsJSON;
|
|
143
|
-
},
|
|
144
|
-
get metavariableFromJSON () {
|
|
145
|
-
return metavariableFromJSON;
|
|
146
|
-
},
|
|
147
|
-
get metavariableToMetavariableJSON () {
|
|
148
|
-
return metavariableToMetavariableJSON;
|
|
149
|
-
},
|
|
150
|
-
get metavariablesFromJSON () {
|
|
151
|
-
return metavariablesFromJSON;
|
|
152
|
-
},
|
|
153
|
-
get metavariablesToMetavariablesJSON () {
|
|
154
|
-
return metavariablesToMetavariablesJSON;
|
|
155
|
-
},
|
|
156
|
-
get mnemicContextFromJSON () {
|
|
157
|
-
return mnemicContextFromJSON;
|
|
158
|
-
},
|
|
159
|
-
get mnemicContextToMnemicContextJSON () {
|
|
160
|
-
return mnemicContextToMnemicContextJSON;
|
|
161
|
-
},
|
|
162
|
-
get mnemicContextsFromJSON () {
|
|
163
|
-
return mnemicContextsFromJSON;
|
|
164
|
-
},
|
|
165
|
-
get mnemicContextsToMnemicContextsJSON () {
|
|
166
|
-
return mnemicContextsToMnemicContextsJSON;
|
|
167
|
-
},
|
|
168
|
-
get nameFromJSON () {
|
|
169
|
-
return nameFromJSON;
|
|
170
|
-
},
|
|
171
|
-
get nameToNameJSON () {
|
|
172
|
-
return nameToNameJSON;
|
|
173
|
-
},
|
|
174
|
-
get negatedFromJSON () {
|
|
175
|
-
return negatedFromJSON;
|
|
176
|
-
},
|
|
177
|
-
get negatedToNegatedJSON () {
|
|
178
|
-
return negatedToNegatedJSON;
|
|
179
|
-
},
|
|
180
|
-
get parametersFromJSON () {
|
|
181
|
-
return parametersFromJSON;
|
|
182
|
-
},
|
|
183
|
-
get parametersToParametersJSON () {
|
|
184
|
-
return parametersToParametersJSON;
|
|
185
|
-
},
|
|
186
|
-
get prefixNameFromJSON () {
|
|
187
|
-
return prefixNameFromJSON;
|
|
188
|
-
},
|
|
189
|
-
get prefixnameToPrevixNameJSON () {
|
|
190
|
-
return prefixnameToPrevixNameJSON;
|
|
191
|
-
},
|
|
192
|
-
get premisesFromJSON () {
|
|
193
|
-
return premisesFromJSON;
|
|
194
|
-
},
|
|
195
|
-
get premisesToPremisesJSON () {
|
|
196
|
-
return premisesToPremisesJSON;
|
|
197
|
-
},
|
|
198
|
-
get procedureCallFromJSON () {
|
|
199
|
-
return procedureCallFromJSON;
|
|
200
|
-
},
|
|
201
|
-
get procedureCallToProcedureCallJSON () {
|
|
202
|
-
return procedureCallToProcedureCallJSON;
|
|
203
|
-
},
|
|
204
|
-
get procedureReferenceFromJSON () {
|
|
205
|
-
return procedureReferenceFromJSON;
|
|
206
|
-
},
|
|
207
|
-
get procedureReferenceToProcedureReferenceJSON () {
|
|
208
|
-
return procedureReferenceToProcedureReferenceJSON;
|
|
209
|
-
},
|
|
210
|
-
get propertiesFromJSON () {
|
|
211
|
-
return propertiesFromJSON;
|
|
212
|
-
},
|
|
213
|
-
get propertiesToPropertiesJSON () {
|
|
214
|
-
return propertiesToPropertiesJSON;
|
|
215
|
-
},
|
|
216
|
-
get propertyRelationsFromJSON () {
|
|
217
|
-
return propertyRelationsFromJSON;
|
|
218
|
-
},
|
|
219
|
-
get propertyRelationsToPropertyRelationsJSON () {
|
|
220
|
-
return propertyRelationsToPropertyRelationsJSON;
|
|
221
|
-
},
|
|
222
|
-
get provisionalFromJSON () {
|
|
223
|
-
return provisionalFromJSON;
|
|
224
|
-
},
|
|
225
|
-
get provisionalToProvisionalJSON () {
|
|
226
|
-
return provisionalToProvisionalJSON;
|
|
227
|
-
},
|
|
228
|
-
get referenceFromJSON () {
|
|
229
|
-
return referenceFromJSON;
|
|
230
|
-
},
|
|
231
|
-
get referenceToReferenceJSON () {
|
|
232
|
-
return referenceToReferenceJSON;
|
|
233
|
-
},
|
|
234
|
-
get referencesFromJSON () {
|
|
235
|
-
return referencesFromJSON;
|
|
236
|
-
},
|
|
237
|
-
get referencesToReferencesJSON () {
|
|
238
|
-
return referencesToReferencesJSON;
|
|
239
|
-
},
|
|
240
|
-
get rulesFromJSON () {
|
|
241
|
-
return rulesFromJSON;
|
|
242
|
-
},
|
|
243
|
-
get rulesToRulesJSON () {
|
|
244
|
-
return rulesToRulesJSON;
|
|
245
|
-
},
|
|
246
|
-
get signatureFromJSON () {
|
|
247
|
-
return signatureFromJSON;
|
|
248
|
-
},
|
|
249
|
-
get signatureToSignatureJSON () {
|
|
250
|
-
return signatureToSignatureJSON;
|
|
251
|
-
},
|
|
252
|
-
get signaturesFromJSON () {
|
|
253
|
-
return signaturesFromJSON;
|
|
254
|
-
},
|
|
255
|
-
get signaturesToSignaturesJSON () {
|
|
256
|
-
return signaturesToSignaturesJSON;
|
|
257
|
-
},
|
|
258
|
-
get statementFromJSON () {
|
|
259
|
-
return statementFromJSON;
|
|
260
|
-
},
|
|
261
|
-
get statementToStatementJSON () {
|
|
262
|
-
return statementToStatementJSON;
|
|
263
|
-
},
|
|
264
|
-
get statementsFromJSON () {
|
|
265
|
-
return statementsFromJSON;
|
|
266
|
-
},
|
|
267
|
-
get statementsToStatementsJSON () {
|
|
268
|
-
return statementsToStatementsJSON;
|
|
269
|
-
},
|
|
270
|
-
get substitutionFromSubstitutionJSON () {
|
|
271
|
-
return substitutionFromSubstitutionJSON;
|
|
272
|
-
},
|
|
273
|
-
get substitutionsFromJSON () {
|
|
274
|
-
return substitutionsFromJSON;
|
|
275
|
-
},
|
|
276
|
-
get substitutionsToSubstitutionsJSON () {
|
|
277
|
-
return substitutionsToSubstitutionsJSON;
|
|
278
|
-
},
|
|
279
|
-
get superTypesFromJSON () {
|
|
280
|
-
return superTypesFromJSON;
|
|
281
|
-
},
|
|
282
|
-
get superTypesToSuperTypesJSON () {
|
|
283
|
-
return superTypesToSuperTypesJSON;
|
|
284
|
-
},
|
|
285
|
-
get suppositionsFromJSON () {
|
|
286
|
-
return suppositionsFromJSON;
|
|
287
|
-
},
|
|
288
|
-
get suppositionsToSuppositionsJSON () {
|
|
289
|
-
return suppositionsToSuppositionsJSON;
|
|
290
|
-
},
|
|
291
|
-
get termFromJSON () {
|
|
292
|
-
return termFromJSON;
|
|
293
|
-
},
|
|
294
|
-
get termToTermJSON () {
|
|
295
|
-
return termToTermJSON;
|
|
296
|
-
},
|
|
297
|
-
get termsFromJSON () {
|
|
298
|
-
return termsFromJSON;
|
|
299
|
-
},
|
|
300
|
-
get termsToTermsJSON () {
|
|
301
|
-
return termsToTermsJSON;
|
|
302
|
-
},
|
|
303
|
-
get theoremsFromJSON () {
|
|
304
|
-
return theoremsFromJSON;
|
|
305
|
-
},
|
|
306
|
-
get theoremsToTheoremsJSON () {
|
|
307
|
-
return theoremsToTheoremsJSON;
|
|
308
|
-
},
|
|
309
|
-
get typeFromJSON () {
|
|
310
|
-
return typeFromJSON;
|
|
311
|
-
},
|
|
312
|
-
get typePrefixesFromJSON () {
|
|
313
|
-
return typePrefixesFromJSON;
|
|
314
|
-
},
|
|
315
|
-
get typePrefixesToTypePrefixesJSON () {
|
|
316
|
-
return typePrefixesToTypePrefixesJSON;
|
|
317
|
-
},
|
|
318
|
-
get typeToTypeJSON () {
|
|
319
|
-
return typeToTypeJSON;
|
|
320
|
-
},
|
|
321
|
-
get typesFromJSON () {
|
|
322
|
-
return typesFromJSON;
|
|
323
|
-
},
|
|
324
|
-
get typesToTypesJSON () {
|
|
325
|
-
return typesToTypesJSON;
|
|
326
|
-
},
|
|
327
|
-
get variablesFromJSON () {
|
|
328
|
-
return variablesFromJSON;
|
|
329
|
-
},
|
|
330
|
-
get variablesToVariablesJSON () {
|
|
331
|
-
return variablesToVariablesJSON;
|
|
332
|
-
}
|
|
333
|
-
});
|
|
334
|
-
const _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
|
|
335
|
-
const _mnemic = /*#__PURE__*/ _interop_require_default(require("../context/mnemic"));
|
|
336
|
-
function _interop_require_default(obj) {
|
|
337
|
-
return obj && obj.__esModule ? obj : {
|
|
338
|
-
default: obj
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
function nameFromJSON(json, context) {
|
|
342
|
-
let { name } = json;
|
|
343
|
-
const nameJSON = name; ///
|
|
344
|
-
name = nameJSON; ///
|
|
345
|
-
return name;
|
|
346
|
-
}
|
|
347
|
-
function termFromJSON(json, context) {
|
|
348
|
-
let { term } = json;
|
|
349
|
-
if (term !== null) {
|
|
350
|
-
const termJSON = term; ///
|
|
351
|
-
json = termJSON; ///
|
|
352
|
-
const { Term } = _elements.default;
|
|
353
|
-
term = Term.fromJSON(json, context);
|
|
354
|
-
}
|
|
355
|
-
return term;
|
|
356
|
-
}
|
|
357
|
-
function typeFromJSON(json, context) {
|
|
358
|
-
let { type } = json;
|
|
359
|
-
if (type !== null) {
|
|
360
|
-
json = type; ///
|
|
361
|
-
const { string } = json, name = string; ///
|
|
362
|
-
type = findTypeByName(name, context);
|
|
363
|
-
}
|
|
364
|
-
return type;
|
|
365
|
-
}
|
|
366
|
-
function labelFromJSON(json, context) {
|
|
367
|
-
let { label } = json;
|
|
368
|
-
const { Label } = _elements.default, labelJSON = label; ///
|
|
369
|
-
json = labelJSON; ///
|
|
370
|
-
label = Label.fromJSON(json, context);
|
|
371
|
-
return label;
|
|
372
|
-
}
|
|
373
|
-
function frameFromJSON(json, context) {
|
|
374
|
-
let { frame } = json;
|
|
375
|
-
if (frame !== null) {
|
|
376
|
-
const frameJSON = frame; ///
|
|
377
|
-
json = frameJSON; ///
|
|
378
|
-
const { Frame } = _elements.default;
|
|
379
|
-
frame = Frame.fromJSON(json, context);
|
|
380
|
-
}
|
|
381
|
-
return frame;
|
|
382
|
-
}
|
|
383
|
-
function negatedFromJSON(json, context) {
|
|
384
|
-
const { negated } = json;
|
|
385
|
-
return negated;
|
|
386
|
-
}
|
|
387
|
-
function metaTypeFromJSON(json, context) {
|
|
388
|
-
let { metaType } = json;
|
|
389
|
-
if (metaType !== null) {
|
|
390
|
-
json = metaType; ///
|
|
391
|
-
const { string } = json, name = string; ///
|
|
392
|
-
metaType = findMetaTypeByName(name, context);
|
|
393
|
-
}
|
|
394
|
-
return metaType;
|
|
395
|
-
}
|
|
396
|
-
function statementFromJSON(json, context) {
|
|
397
|
-
let { statement = null } = json;
|
|
398
|
-
if (statement !== null) {
|
|
399
|
-
const { Statement } = _elements.default, statementJSON = statement; ///
|
|
400
|
-
json = statementJSON; ///
|
|
401
|
-
statement = Statement.fromJSON(json, context);
|
|
402
|
-
}
|
|
403
|
-
return statement;
|
|
404
|
-
}
|
|
405
|
-
function deductionFromJSON(json, context) {
|
|
406
|
-
let { deduction } = json;
|
|
407
|
-
const { Deduction } = _elements.default, deductionJSON = deduction; ///
|
|
408
|
-
json = deductionJSON; ///
|
|
409
|
-
deduction = Deduction.fromJSON(json, context);
|
|
410
|
-
return deduction;
|
|
411
|
-
}
|
|
412
|
-
function signatureFromJSON(json, context) {
|
|
413
|
-
let { signature = null } = json;
|
|
414
|
-
if (signature !== null) {
|
|
415
|
-
const { Signature } = _elements.default, signatureJSON = signature; ///
|
|
416
|
-
json = signatureJSON; ///
|
|
417
|
-
signature = Signature.fromJSON(json, context);
|
|
418
|
-
}
|
|
419
|
-
return signature;
|
|
420
|
-
}
|
|
421
|
-
function referenceFromJSON(json, context) {
|
|
422
|
-
let { reference } = json;
|
|
423
|
-
const { Reference } = _elements.default, referenceJSON = reference; ///
|
|
424
|
-
json = referenceJSON; ///
|
|
425
|
-
reference = Reference.fromJSON(json, context);
|
|
426
|
-
return reference;
|
|
427
|
-
}
|
|
428
|
-
function identifierFromJSON(json, context) {
|
|
429
|
-
let { identifier } = json;
|
|
430
|
-
const identifierJSON = identifier; ///
|
|
431
|
-
identifier = identifierJSON; ///
|
|
432
|
-
return identifier;
|
|
433
|
-
}
|
|
434
|
-
function conclusionFromJSON(json, context) {
|
|
435
|
-
let { conclusion } = json;
|
|
436
|
-
const { Conclusion } = _elements.default, conclusionJSON = conclusion; ///
|
|
437
|
-
json = conclusionJSON; ///
|
|
438
|
-
conclusion = Conclusion.fromJSON(json, context);
|
|
439
|
-
return conclusion;
|
|
440
|
-
}
|
|
441
|
-
function provisionalFromJSON(json, context) {
|
|
442
|
-
const { provisional } = json;
|
|
443
|
-
return provisional;
|
|
444
|
-
}
|
|
445
|
-
function metavariableFromJSON(json, context) {
|
|
446
|
-
let { metavariable } = json;
|
|
447
|
-
const { Metavariable } = _elements.default, metavariableJSON = metavariable; ///
|
|
448
|
-
json = metavariableJSON; ///
|
|
449
|
-
metavariable = Metavariable.fromJSON(json, context);
|
|
450
|
-
return metavariable;
|
|
451
|
-
}
|
|
452
|
-
function mnemicContextFromJSON(json, context) {
|
|
453
|
-
const releaseContext = context; ///
|
|
454
|
-
({ context } = json);
|
|
455
|
-
json = context; ///
|
|
456
|
-
context = releaseContext; ///
|
|
457
|
-
const mnemicContext = _mnemic.default.fromJSON(json, context);
|
|
458
|
-
return mnemicContext;
|
|
459
|
-
}
|
|
460
|
-
function procedureCallFromJSON(json, context) {
|
|
461
|
-
let { procedureCall = null } = json;
|
|
462
|
-
if (procedureCall !== null) {
|
|
463
|
-
const { ProcedureCall } = _elements.default, procedureCallJSON = procedureCall; ///
|
|
464
|
-
json = procedureCallJSON; ///
|
|
465
|
-
procedureCall = ProcedureCall.fromJSON(json, context);
|
|
466
|
-
}
|
|
467
|
-
return procedureCall;
|
|
468
|
-
}
|
|
469
|
-
function procedureReferenceFromJSON(json, context) {
|
|
470
|
-
let { procedureReference } = json;
|
|
471
|
-
const { ProcedureReference } = _elements.default, procedureReferenceJSON = procedureReference; ///
|
|
472
|
-
json = procedureReferenceJSON; ///
|
|
473
|
-
procedureReference = ProcedureReference.fromJSON(json, context);
|
|
474
|
-
return procedureReference;
|
|
475
|
-
}
|
|
476
|
-
function typesFromJSON(json, types, context) {
|
|
477
|
-
const { types: typesJSON } = json;
|
|
478
|
-
const { Type } = _elements.default;
|
|
479
|
-
typesJSON.forEach((typeJSON)=>{
|
|
480
|
-
const json = typeJSON, type = Type.fromJSON(json, context);
|
|
481
|
-
types.push(type);
|
|
482
|
-
});
|
|
483
|
-
}
|
|
484
|
-
function termsFromJSON(json, context) {
|
|
485
|
-
let { terms } = json;
|
|
486
|
-
const { Term } = _elements.default, termsJSON = terms; ///
|
|
487
|
-
terms = termsJSON.map((termJSON)=>{
|
|
488
|
-
const json = termJSON, term = Term.fromJSON(json, context);
|
|
489
|
-
return term;
|
|
490
|
-
});
|
|
491
|
-
return terms;
|
|
492
|
-
}
|
|
493
|
-
function rulesFromJSON(json, context) {
|
|
494
|
-
let { rules } = json;
|
|
495
|
-
const { Rule } = _elements.default, rulesJSON = rules; ///
|
|
496
|
-
rules = rulesJSON.map((ruleJSON)=>{
|
|
497
|
-
const json = ruleJSON, rule = Rule.fromJSON(json, context);
|
|
498
|
-
return rule;
|
|
499
|
-
});
|
|
500
|
-
return rules;
|
|
501
|
-
}
|
|
502
|
-
function framesFromJSON(json, context) {
|
|
503
|
-
let { frames } = json;
|
|
504
|
-
const { Frame } = _elements.default, framesJSON = frames; ///
|
|
505
|
-
frames = framesJSON.map((frameJSON)=>{
|
|
506
|
-
const json = frameJSON, frame = Frame.fromJSON(json, context);
|
|
507
|
-
return frame;
|
|
508
|
-
});
|
|
509
|
-
return frames;
|
|
510
|
-
}
|
|
511
|
-
function labelsFromJSON(json, context) {
|
|
512
|
-
let { labels } = json;
|
|
513
|
-
const { Label } = _elements.default, labelsJSON = labels; ///
|
|
514
|
-
labels = labelsJSON.map((labelJSON)=>{
|
|
515
|
-
const json = labelJSON, label = Label.fromJSON(json, context);
|
|
516
|
-
return label;
|
|
517
|
-
});
|
|
518
|
-
return labels;
|
|
519
|
-
}
|
|
520
|
-
function axiomsFromJSON(json, context) {
|
|
521
|
-
let { axioms } = json;
|
|
522
|
-
const { Axiom } = _elements.default, axiomsJSON = axioms; ///
|
|
523
|
-
axioms = axiomsJSON.map((axiomJSON)=>{
|
|
524
|
-
const json = axiomJSON, axiom = Axiom.fromJSON(json, context);
|
|
525
|
-
return axiom;
|
|
526
|
-
});
|
|
527
|
-
return axioms;
|
|
528
|
-
}
|
|
529
|
-
function premisesFromJSON(json, context) {
|
|
530
|
-
let { premises } = json;
|
|
531
|
-
const { Premise } = _elements.default, premisesJSON = premises; ///
|
|
532
|
-
premises = premisesJSON.map((premiseJSON)=>{
|
|
533
|
-
const json = premiseJSON, premise = Premise.fromJSON(json, context);
|
|
534
|
-
return premise;
|
|
535
|
-
});
|
|
536
|
-
return premises;
|
|
537
|
-
}
|
|
538
|
-
function theoremsFromJSON(json, context) {
|
|
539
|
-
let { theorems } = json;
|
|
540
|
-
const { Theorem } = _elements.default, theoremsJSON = theorems; ///
|
|
541
|
-
theorems = theoremsJSON.map((theoremJSON)=>{
|
|
542
|
-
const json = theoremJSON, theorem = Theorem.fromJSON(json, context);
|
|
543
|
-
return theorem;
|
|
544
|
-
});
|
|
545
|
-
return theorems;
|
|
546
|
-
}
|
|
547
|
-
function variablesFromJSON(json, context) {
|
|
548
|
-
let { variables } = json;
|
|
549
|
-
const { Variable } = _elements.default, variablesJSON = variables; ///
|
|
550
|
-
variables = variablesJSON.map((variableJSON)=>{
|
|
551
|
-
const json = variableJSON, variable = Variable.fromJSON(json, context);
|
|
552
|
-
return variable;
|
|
553
|
-
});
|
|
554
|
-
return variables;
|
|
555
|
-
}
|
|
556
|
-
function propertiesFromJSON(json, context) {
|
|
557
|
-
let { properties } = json;
|
|
558
|
-
const { Property } = _elements.default, propertiesJSON = properties; ///
|
|
559
|
-
properties = propertiesJSON.map((propertyJSON)=>{
|
|
560
|
-
const json = propertyJSON, property = Property.fromJSON(json, context);
|
|
561
|
-
return property;
|
|
562
|
-
});
|
|
563
|
-
return properties;
|
|
564
|
-
}
|
|
565
|
-
function equalitiesFromJSON(json, context) {
|
|
566
|
-
let { equalities } = json;
|
|
567
|
-
const { Equality } = _elements.default, equalitiesJSON = equalities; ///
|
|
568
|
-
equalities = equalitiesJSON.map((equalityJSON)=>{
|
|
569
|
-
const json = equalityJSON, equality = Equality.fromJSON(json, context);
|
|
570
|
-
return equality;
|
|
571
|
-
});
|
|
572
|
-
return equalities;
|
|
573
|
-
}
|
|
574
|
-
function prefixNameFromJSON(json, context) {
|
|
575
|
-
const { prefixName } = json;
|
|
576
|
-
return prefixName;
|
|
577
|
-
}
|
|
578
|
-
function superTypesFromJSON(json, context) {
|
|
579
|
-
const { superTypes: superTypesJSON } = json;
|
|
580
|
-
const superTypes = superTypesJSON.map((superTypeJSON)=>{
|
|
581
|
-
const json = superTypeJSON, { string } = json, name = string, type = findTypeByName(name, context), superType = type; ///
|
|
582
|
-
return superType;
|
|
583
|
-
});
|
|
584
|
-
return superTypes;
|
|
585
|
-
}
|
|
586
|
-
function hypothesesFromJSON(json, context) {
|
|
587
|
-
let { hypotheses } = json;
|
|
588
|
-
const { Hypothesis } = _elements.default, hypothesesJSON = hypotheses; ///
|
|
589
|
-
hypotheses = hypothesesJSON.map((hypothesisJSON)=>{
|
|
590
|
-
const json = hypothesisJSON, hypothesis = Hypothesis.fromJSON(json, context);
|
|
591
|
-
return hypothesis;
|
|
592
|
-
});
|
|
593
|
-
return hypotheses;
|
|
594
|
-
}
|
|
595
|
-
function parametersFromJSON(json, context) {
|
|
596
|
-
let { parameters } = json;
|
|
597
|
-
const { Parameter } = _elements.default, parametersJSON = parameters; ///
|
|
598
|
-
parameters = parametersJSON.map((parameterJSON)=>{
|
|
599
|
-
const json = parameterJSON, parameter = Parameter.fromJSON(json, context);
|
|
600
|
-
return parameter;
|
|
601
|
-
});
|
|
602
|
-
return parameters;
|
|
603
|
-
}
|
|
604
|
-
function judgementsFromJSON(json, context) {
|
|
605
|
-
let { judgements } = json;
|
|
606
|
-
const { Judgement } = _elements.default, judgementsJSON = judgements; ///
|
|
607
|
-
judgements = judgementsJSON.map((judgementJSON)=>{
|
|
608
|
-
const json = judgementJSON, judgement = Judgement.fromJSON(json, context);
|
|
609
|
-
return judgement;
|
|
610
|
-
});
|
|
611
|
-
return judgements;
|
|
612
|
-
}
|
|
613
|
-
function statementsFromJSON(json, context) {
|
|
614
|
-
let { statements } = json;
|
|
615
|
-
const { Statement } = _elements.default, statementsJSON = statements; ///
|
|
616
|
-
statements = statementsJSON.map((statementJSON)=>{
|
|
617
|
-
const json = statementJSON, statement = Statement.fromJSON(json, context);
|
|
618
|
-
return statement;
|
|
619
|
-
});
|
|
620
|
-
return statements;
|
|
621
|
-
}
|
|
622
|
-
function assertionsFromJSON(json, context) {
|
|
623
|
-
let { assertions } = json;
|
|
624
|
-
const { TypeAssertion, DefinedAssertion, PropertyAssertion, SubproofAssertion, SignatureAssertion, ContainedAssertion } = _elements.default, assertionsJSON = assertions; ///
|
|
625
|
-
assertions = assertionsJSON.map((assertionJSON)=>{
|
|
626
|
-
const json = assertionJSON, assertion = TypeAssertion.fromJSON(json, context) || DefinedAssertion.fromJSON(json, context) || PropertyAssertion.fromJSON(json, context) || SubproofAssertion.fromJSON(json, context) || SignatureAssertion.fromJSON(json, context) || ContainedAssertion.fromJSON(json, context);
|
|
627
|
-
return assertion;
|
|
628
|
-
});
|
|
629
|
-
return assertions;
|
|
630
|
-
}
|
|
631
|
-
function referencesFromJSON(json, context) {
|
|
632
|
-
let { references } = json;
|
|
633
|
-
const { Reference } = _elements.default, referencesJSON = references; ///
|
|
634
|
-
references = referencesJSON.map((referenceJSON)=>{
|
|
635
|
-
const json = referenceJSON, reference = Reference.fromJSON(json, context);
|
|
636
|
-
return reference;
|
|
637
|
-
});
|
|
638
|
-
return references;
|
|
639
|
-
}
|
|
640
|
-
function signaturesFromJSON(json, context) {
|
|
641
|
-
let { signatures } = json;
|
|
642
|
-
const { Signature } = _elements.default, signaturesJSON = signatures; ///
|
|
643
|
-
signatures = signaturesJSON.map((signatureJSON)=>{
|
|
644
|
-
const json = signatureJSON, signature = Signature.fromJSON(json, context);
|
|
645
|
-
return signature;
|
|
646
|
-
});
|
|
647
|
-
return signatures;
|
|
648
|
-
}
|
|
649
|
-
function conjecturesFromJSON(json, context) {
|
|
650
|
-
let { conjectures } = json;
|
|
651
|
-
const { Conjecture } = _elements.default, conjecturesJSON = conjectures; ///
|
|
652
|
-
conjectures = conjecturesJSON.map((conjectureJSON)=>{
|
|
653
|
-
const json = conjectureJSON, conjecture = Conjecture.fromJSON(json, context);
|
|
654
|
-
return conjecture;
|
|
655
|
-
});
|
|
656
|
-
return conjectures;
|
|
657
|
-
}
|
|
658
|
-
function combinatorsFromJSON(json, context) {
|
|
659
|
-
let { combinators } = json;
|
|
660
|
-
const { Combinator } = _elements.default, combinatorsJSON = combinators; ///
|
|
661
|
-
combinators = combinatorsJSON.map((combinatorJSON)=>{
|
|
662
|
-
const json = combinatorJSON, combinator = Combinator.fromJSON(json, context);
|
|
663
|
-
return combinator;
|
|
664
|
-
});
|
|
665
|
-
return combinators;
|
|
666
|
-
}
|
|
667
|
-
function assumptionsFromJSON(json, context) {
|
|
668
|
-
let { assumptions } = json;
|
|
669
|
-
const { Assumption } = _elements.default, assumptionsJSON = assumptions; ///
|
|
670
|
-
assumptions = assumptionsJSON.map((assumptionJSON)=>{
|
|
671
|
-
const json = assumptionJSON, assumption = Assumption.fromJSON(json, context);
|
|
672
|
-
return assumption;
|
|
673
|
-
});
|
|
674
|
-
return assumptions;
|
|
675
|
-
}
|
|
676
|
-
function typePrefixesFromJSON(json, context) {
|
|
677
|
-
let { typePrefixes } = json;
|
|
678
|
-
const { TypePrefix } = _elements.default, typePrefixesJSON = typePrefixes; ///
|
|
679
|
-
typePrefixes = typePrefixesJSON.map((typePrefixJSON)=>{
|
|
680
|
-
const json = typePrefixJSON, typePrefix = TypePrefix.fromJSON(json, context);
|
|
681
|
-
return typePrefix;
|
|
682
|
-
});
|
|
683
|
-
return typePrefixes;
|
|
684
|
-
}
|
|
685
|
-
function constructorsFromJSON(json, context) {
|
|
686
|
-
let { constructors } = json;
|
|
687
|
-
const { Constructor } = _elements.default, constructorsJSON = constructors; ///
|
|
688
|
-
constructors = constructorsJSON.map((constructorJSON)=>{
|
|
689
|
-
const json = constructorJSON, constructor = Constructor.fromJSON(json, context);
|
|
690
|
-
return constructor;
|
|
691
|
-
});
|
|
692
|
-
return constructors;
|
|
693
|
-
}
|
|
694
|
-
function metatheoremsFromJSON(json, context) {
|
|
695
|
-
let { metatheorems } = json;
|
|
696
|
-
const { Metatheorem } = _elements.default, metatheoremsJSON = metatheorems; ///
|
|
697
|
-
metatheorems = metatheoremsJSON.map((metatheoremJSON)=>{
|
|
698
|
-
const json = metatheoremJSON, metatheorem = Metatheorem.fromJSON(json, context);
|
|
699
|
-
return metatheorem;
|
|
700
|
-
});
|
|
701
|
-
return metatheorems;
|
|
702
|
-
}
|
|
703
|
-
function suppositionsFromJSON(json, context) {
|
|
704
|
-
let { suppositions } = json;
|
|
705
|
-
const { Supposition } = _elements.default, suppositionsJSON = suppositions; ///
|
|
706
|
-
suppositions = suppositionsJSON.map((suppositionJSON)=>{
|
|
707
|
-
const json = suppositionJSON, supposition = Supposition.fromJSON(json, context);
|
|
708
|
-
return supposition;
|
|
709
|
-
});
|
|
710
|
-
return suppositions;
|
|
711
|
-
}
|
|
712
|
-
function substitutionsFromJSON(json, context) {
|
|
713
|
-
let { substitutions } = json; ///
|
|
714
|
-
const substitutionsJSON = substitutions; ///
|
|
715
|
-
substitutions = substitutionsJSON.map((substitutionJSON)=>{
|
|
716
|
-
const json = substitutionJSON, substitution = substitutionFromSubstitutionJSON(json, context);
|
|
717
|
-
return substitution;
|
|
718
|
-
});
|
|
719
|
-
return substitutions;
|
|
720
|
-
}
|
|
721
|
-
function metavariablesFromJSON(json, context) {
|
|
722
|
-
let { metavariables } = json;
|
|
723
|
-
const { Metavariable } = _elements.default, metavariablesJSON = metavariables; ///
|
|
724
|
-
metavariables = metavariablesJSON.map((metavariableJSON)=>{
|
|
725
|
-
const json = metavariableJSON, metavariable = Metavariable.fromJSON(json, context);
|
|
726
|
-
return metavariable;
|
|
727
|
-
});
|
|
728
|
-
return metavariables;
|
|
729
|
-
}
|
|
730
|
-
function mnemicContextsFromJSON(json, context) {
|
|
731
|
-
const releaseContext = context; ///
|
|
732
|
-
const { contexts } = json;
|
|
733
|
-
const mnemicContexts = contexts.map((context)=>{
|
|
734
|
-
json = context; ///
|
|
735
|
-
context = releaseContext; ///
|
|
736
|
-
const mnemicContext = _mnemic.default.fromJSON(json, context);
|
|
737
|
-
return mnemicContext; ///
|
|
738
|
-
});
|
|
739
|
-
return mnemicContexts;
|
|
740
|
-
}
|
|
741
|
-
function declaredVariablesFromJSON(json, context) {
|
|
742
|
-
let { declaredVariables } = json;
|
|
743
|
-
const { Variable } = _elements.default, declaredVariablesJSON = declaredVariables; ///
|
|
744
|
-
declaredVariables = declaredVariablesJSON.map((declaredVariableJSON)=>{
|
|
745
|
-
const json = declaredVariableJSON, variable = Variable.fromJSON(json, context), declaredVariable = variable; ///
|
|
746
|
-
return declaredVariable;
|
|
747
|
-
});
|
|
748
|
-
return declaredVariables;
|
|
749
|
-
}
|
|
750
|
-
function propertyRelationsFromJSON(json, context) {
|
|
751
|
-
let { propertyRelations } = json;
|
|
752
|
-
const { PropertyRelation } = _elements.default, propertyRelationsJSON = propertyRelations; ///
|
|
753
|
-
propertyRelations = propertyRelationsJSON.map((propertyRelationJSON)=>{
|
|
754
|
-
const json = propertyRelationJSON, propertyRelation = PropertyRelation.fromJSON(json, context);
|
|
755
|
-
return propertyRelation;
|
|
756
|
-
});
|
|
757
|
-
return propertyRelations;
|
|
758
|
-
}
|
|
759
|
-
function metaLevelAssumptionsFromJSON(json, context) {
|
|
760
|
-
let { metaLevelAssumptions } = json;
|
|
761
|
-
const { MetaLevelAssumption } = _elements.default, metaLevelAssumptionsJSON = metaLevelAssumptions; ///
|
|
762
|
-
metaLevelAssumptions = metaLevelAssumptionsJSON.map((metaLevelAssumptionJSON)=>{
|
|
763
|
-
const json = metaLevelAssumptionJSON, metaLevelAssumption = MetaLevelAssumption.fromJSON(json, context);
|
|
764
|
-
return metaLevelAssumption;
|
|
765
|
-
});
|
|
766
|
-
return metaLevelAssumptions;
|
|
767
|
-
}
|
|
768
|
-
function declaredMetavariablesFromJSON(json, context) {
|
|
769
|
-
let { declaredMetavariables } = json;
|
|
770
|
-
const { Metavariable } = _elements.default, declaredMetavariablesJSON = declaredMetavariables; ///
|
|
771
|
-
declaredMetavariables = declaredMetavariablesJSON.map((declaredMetavariableJSON)=>{
|
|
772
|
-
const json = declaredMetavariableJSON, metavariable = Metavariable.fromJSON(json, context), declaredMetavariable = metavariable; ///
|
|
773
|
-
return declaredMetavariable;
|
|
774
|
-
});
|
|
775
|
-
return declaredMetavariables;
|
|
776
|
-
}
|
|
777
|
-
function nameToNameJSON(name) {
|
|
778
|
-
const nameJSON = name; ///
|
|
779
|
-
return nameJSON;
|
|
780
|
-
}
|
|
781
|
-
function termToTermJSON(term) {
|
|
782
|
-
const termJSON = term !== null ? term.toJSON() : null;
|
|
783
|
-
return termJSON;
|
|
784
|
-
}
|
|
785
|
-
function typeToTypeJSON(type) {
|
|
786
|
-
let typeJSON = null;
|
|
787
|
-
if (type !== null) {
|
|
788
|
-
const abridged = true;
|
|
789
|
-
typeJSON = type.toJSON(abridged);
|
|
790
|
-
}
|
|
791
|
-
return typeJSON;
|
|
792
|
-
}
|
|
793
|
-
function frameToFrameJSON(frame) {
|
|
794
|
-
const frameJSON = frame !== null ? frame.toJSON() : null;
|
|
795
|
-
return frameJSON;
|
|
796
|
-
}
|
|
797
|
-
function labelToLabelJSON(label) {
|
|
798
|
-
const labelJSON = label.toJSON();
|
|
799
|
-
return labelJSON;
|
|
800
|
-
}
|
|
801
|
-
function negatedToNegatedJSON(negated) {
|
|
802
|
-
const negatedJSON = negated; ///
|
|
803
|
-
return negatedJSON;
|
|
804
|
-
}
|
|
805
|
-
function ariableToVariableJSON(ariable) {
|
|
806
|
-
const ariableJSON = ariable.toJSON();
|
|
807
|
-
return ariableJSON;
|
|
808
|
-
}
|
|
809
|
-
function metaTypeToMetaTypeJSON(metaType) {
|
|
810
|
-
const metaTypeJSON = metaType !== null ? metaType.toJSON() : null;
|
|
811
|
-
return metaTypeJSON;
|
|
812
|
-
}
|
|
813
|
-
function referenceToReferenceJSON(reference) {
|
|
814
|
-
const referenceJSON = reference.toJSON();
|
|
815
|
-
return referenceJSON;
|
|
816
|
-
}
|
|
817
|
-
function statementToStatementJSON(statement) {
|
|
818
|
-
const statementJSON = statement !== null ? statement.toJSON() : null;
|
|
819
|
-
return statementJSON;
|
|
820
|
-
}
|
|
821
|
-
function deductionToDeductionJSON(deduction) {
|
|
822
|
-
const deductionJSON = deduction.toJSON();
|
|
823
|
-
return deductionJSON;
|
|
824
|
-
}
|
|
825
|
-
function signatureToSignatureJSON(signature) {
|
|
826
|
-
const signatureJSON = signature !== null ? signature.toJSON() : null;
|
|
827
|
-
return signatureJSON;
|
|
828
|
-
}
|
|
829
|
-
function identifierToIdentifierJSON(identifier) {
|
|
830
|
-
const identifierJSON = identifier; ///
|
|
831
|
-
return identifierJSON;
|
|
832
|
-
}
|
|
833
|
-
function conclusionToConclusionJSON(conclusion) {
|
|
834
|
-
const conclusionJSON = conclusion.toJSON();
|
|
835
|
-
return conclusionJSON;
|
|
836
|
-
}
|
|
837
|
-
function provisionalToProvisionalJSON(provisional) {
|
|
838
|
-
const provisionalJSON = provisional; ///
|
|
839
|
-
return provisionalJSON;
|
|
840
|
-
}
|
|
841
|
-
function metavariableToMetavariableJSON(metavariable) {
|
|
842
|
-
const metavariableJSON = metavariable.toJSON();
|
|
843
|
-
return metavariableJSON;
|
|
844
|
-
}
|
|
845
|
-
function procedureCallToProcedureCallJSON(procedureCall) {
|
|
846
|
-
const procedureCallJSON = procedureCall !== null ? procedureCall.toJSON() : null;
|
|
847
|
-
return procedureCallJSON;
|
|
848
|
-
}
|
|
849
|
-
function mnemicContextToMnemicContextJSON(mnemicContext) {
|
|
850
|
-
const mnemicContextJSON = mnemicContext.toJSON();
|
|
851
|
-
return mnemicContextJSON;
|
|
852
|
-
}
|
|
853
|
-
function procedureReferenceToProcedureReferenceJSON(procedureReference) {
|
|
854
|
-
const procedureReferenceJSON = procedureReference.toJSON();
|
|
855
|
-
return procedureReferenceJSON;
|
|
856
|
-
}
|
|
857
|
-
function declaredMetavariableToDEclaredMetavariableJSON(declaredMetavariable) {
|
|
858
|
-
const declaredMetavariableJSON = declaredMetavariable.toJSON();
|
|
859
|
-
return declaredMetavariableJSON;
|
|
860
|
-
}
|
|
861
|
-
function substitutionFromSubstitutionJSON(json, context) {
|
|
862
|
-
const { TermSubstitution, FrameSubstitution, StatementSubstitution, ReferenceSubstitution } = _elements.default, substitution = TermSubstitution.fromJSON(json, context) || FrameSubstitution.fromJSON(json, context) || StatementSubstitution.fromJSON(json, context) || ReferenceSubstitution.fromJSON(json, context);
|
|
863
|
-
return substitution;
|
|
864
|
-
}
|
|
865
|
-
function termsToTermsJSON(terms) {
|
|
866
|
-
const termsJSON = terms.map((term)=>{
|
|
867
|
-
const termJSON = term.toJSON();
|
|
868
|
-
return termJSON;
|
|
869
|
-
});
|
|
870
|
-
return termsJSON;
|
|
871
|
-
}
|
|
872
|
-
function typesToTypesJSON(types) {
|
|
873
|
-
const typesJSON = types.map((type)=>{
|
|
874
|
-
const typeJSON = type.toJSON();
|
|
875
|
-
return typeJSON;
|
|
876
|
-
});
|
|
877
|
-
return typesJSON;
|
|
878
|
-
}
|
|
879
|
-
function rulesToRulesJSON(rules) {
|
|
880
|
-
const rulesJSON = rules.map((rule)=>{
|
|
881
|
-
const ruleJSON = rule.toJSON();
|
|
882
|
-
return ruleJSON;
|
|
883
|
-
});
|
|
884
|
-
return rulesJSON;
|
|
885
|
-
}
|
|
886
|
-
function labelsToLabelsJSON(labels) {
|
|
887
|
-
const labelsJSON = labels.map((label)=>{
|
|
888
|
-
const labelJSON = label.toJSON();
|
|
889
|
-
return labelJSON;
|
|
890
|
-
});
|
|
891
|
-
return labelsJSON;
|
|
892
|
-
}
|
|
893
|
-
function framesToFramesJSON(frames) {
|
|
894
|
-
const framesJSON = frames.map((frame)=>{
|
|
895
|
-
const frameJSON = frame.toJSON();
|
|
896
|
-
return frameJSON;
|
|
897
|
-
});
|
|
898
|
-
return framesJSON;
|
|
899
|
-
}
|
|
900
|
-
function axiomsToAxiomsJSON(axioms) {
|
|
901
|
-
const axiomsJSON = axioms.map((axiom)=>{
|
|
902
|
-
const axiomJSON = axiom.toJSON();
|
|
903
|
-
return axiomJSON;
|
|
904
|
-
});
|
|
905
|
-
return axiomsJSON;
|
|
906
|
-
}
|
|
907
|
-
function premisesToPremisesJSON(premises) {
|
|
908
|
-
const premisesJSON = premises.map((premise)=>{
|
|
909
|
-
const premiseJSON = premise.toJSON();
|
|
910
|
-
return premiseJSON;
|
|
911
|
-
});
|
|
912
|
-
return premisesJSON;
|
|
913
|
-
}
|
|
914
|
-
function theoremsToTheoremsJSON(theorems) {
|
|
915
|
-
const theoremsJSON = theorems.map((theorem)=>{
|
|
916
|
-
const theoremJSON = theorem.toJSON();
|
|
917
|
-
return theoremJSON;
|
|
918
|
-
});
|
|
919
|
-
return theoremsJSON;
|
|
920
|
-
}
|
|
921
|
-
function variablesToVariablesJSON(variables) {
|
|
922
|
-
const variablesJSON = variables.map((variable)=>{
|
|
923
|
-
const variableJSON = variable.toJSON();
|
|
924
|
-
return variableJSON;
|
|
925
|
-
});
|
|
926
|
-
return variablesJSON;
|
|
927
|
-
}
|
|
928
|
-
function hypothesesToHypothesesJSON(hypotheses) {
|
|
929
|
-
const hypothesesJSON = hypotheses.map((hypothesis)=>{
|
|
930
|
-
const hypothesisJSON = hypothesis.toJSON();
|
|
931
|
-
return hypothesisJSON;
|
|
932
|
-
});
|
|
933
|
-
return hypothesesJSON;
|
|
934
|
-
}
|
|
935
|
-
function prefixnameToPrevixNameJSON(prefixname) {
|
|
936
|
-
const prefixNameJSON = prefixname; ///
|
|
937
|
-
return prefixNameJSON;
|
|
938
|
-
}
|
|
939
|
-
function superTypesToSuperTypesJSON(superTypes) {
|
|
940
|
-
const superTypesJSON = superTypes.map((superType)=>{
|
|
941
|
-
const abridged = true, superTypeJSON = superType.toJSON(abridged);
|
|
942
|
-
return superTypeJSON;
|
|
943
|
-
});
|
|
944
|
-
return superTypesJSON;
|
|
945
|
-
}
|
|
946
|
-
function parametersToParametersJSON(parameters) {
|
|
947
|
-
const parametersJSON = parameters.map((parameter)=>{
|
|
948
|
-
const parameterJSON = parameter.toJSON();
|
|
949
|
-
return parameterJSON;
|
|
950
|
-
});
|
|
951
|
-
return parametersJSON;
|
|
952
|
-
}
|
|
953
|
-
function propertiesToPropertiesJSON(properties) {
|
|
954
|
-
const propertiesJSON = properties.map((property)=>{
|
|
955
|
-
const propertyJSON = property.toJSON();
|
|
956
|
-
return propertyJSON;
|
|
957
|
-
});
|
|
958
|
-
return propertiesJSON;
|
|
959
|
-
}
|
|
960
|
-
function judgementsToJudgementsJSON(judgements) {
|
|
961
|
-
const judgementsJSON = judgements.map((judgement)=>{
|
|
962
|
-
const judgementJSON = judgement.toJSON();
|
|
963
|
-
return judgementJSON;
|
|
964
|
-
});
|
|
965
|
-
return judgementsJSON;
|
|
966
|
-
}
|
|
967
|
-
function equalitiesToEqualitiesJSON(equalities) {
|
|
968
|
-
const equalitiesJSON = equalities.map((equality)=>{
|
|
969
|
-
const equalityJSON = equality.toJSON();
|
|
970
|
-
return equalityJSON;
|
|
971
|
-
});
|
|
972
|
-
return equalitiesJSON;
|
|
973
|
-
}
|
|
974
|
-
function statementsToStatementsJSON(statements) {
|
|
975
|
-
const statementsJSON = statements.map((statement)=>{
|
|
976
|
-
const statementJSON = statement.toJSON();
|
|
977
|
-
return statementJSON;
|
|
978
|
-
});
|
|
979
|
-
return statementsJSON;
|
|
980
|
-
}
|
|
981
|
-
function signaturesToSignaturesJSON(signatures) {
|
|
982
|
-
const signaturesJSON = signatures.map((signature)=>{
|
|
983
|
-
const signatureJSON = signature.toJSON();
|
|
984
|
-
return signatureJSON;
|
|
985
|
-
});
|
|
986
|
-
return signaturesJSON;
|
|
987
|
-
}
|
|
988
|
-
function assertionsToAssertionsJSON(assertions) {
|
|
989
|
-
const assertionsJSON = assertions.map((assertion)=>{
|
|
990
|
-
const assertionJSON = assertion.toJSON();
|
|
991
|
-
return assertionJSON;
|
|
992
|
-
});
|
|
993
|
-
return assertionsJSON;
|
|
994
|
-
}
|
|
995
|
-
function referencesToReferencesJSON(references) {
|
|
996
|
-
const referencesJSON = references.map((reference)=>{
|
|
997
|
-
const referenceJSON = reference.toJSON();
|
|
998
|
-
return referenceJSON;
|
|
999
|
-
});
|
|
1000
|
-
return referencesJSON;
|
|
1001
|
-
}
|
|
1002
|
-
function conjecturesToConjecturesJSON(conjectures) {
|
|
1003
|
-
const conjecturesJSON = conjectures.map((conjecture)=>{
|
|
1004
|
-
const conjectureJSON = conjecture.toJSON();
|
|
1005
|
-
return conjectureJSON;
|
|
1006
|
-
});
|
|
1007
|
-
return conjecturesJSON;
|
|
1008
|
-
}
|
|
1009
|
-
function combinatorsToCombinatorsJSON(combinators) {
|
|
1010
|
-
const combinatorsJSON = combinators.map((combinator)=>{
|
|
1011
|
-
const combinatorJSON = combinator.toJSON();
|
|
1012
|
-
return combinatorJSON;
|
|
1013
|
-
});
|
|
1014
|
-
return combinatorsJSON;
|
|
1015
|
-
}
|
|
1016
|
-
function assumptionsToAssumptionsJSON(assumptions) {
|
|
1017
|
-
const assumptionsJSON = assumptions.map((assumption)=>{
|
|
1018
|
-
const assumptionJSON = assumption.toJSON();
|
|
1019
|
-
return assumptionJSON;
|
|
1020
|
-
});
|
|
1021
|
-
return assumptionsJSON;
|
|
1022
|
-
}
|
|
1023
|
-
function suppositionsToSuppositionsJSON(suppositions) {
|
|
1024
|
-
const suppositionsJSON = suppositions.map((supposition)=>{
|
|
1025
|
-
const suppositionJSON = supposition.toJSON();
|
|
1026
|
-
return suppositionJSON;
|
|
1027
|
-
});
|
|
1028
|
-
return suppositionsJSON;
|
|
1029
|
-
}
|
|
1030
|
-
function constructorsToConstructorsJSON(constructors) {
|
|
1031
|
-
const constructorsJSON = constructors.map((constructor)=>{
|
|
1032
|
-
const constructorJSON = constructor.toJSON();
|
|
1033
|
-
return constructorJSON;
|
|
1034
|
-
});
|
|
1035
|
-
return constructorsJSON;
|
|
1036
|
-
}
|
|
1037
|
-
function metatheoremsToMetatheoremsJSON(metatheorems) {
|
|
1038
|
-
const metatheoremsJSON = metatheorems.map((metatheorem)=>{
|
|
1039
|
-
const metatheoremJSON = metatheorem.toJSON();
|
|
1040
|
-
return metatheoremJSON;
|
|
1041
|
-
});
|
|
1042
|
-
return metatheoremsJSON;
|
|
1043
|
-
}
|
|
1044
|
-
function typePrefixesToTypePrefixesJSON(typePrefixes) {
|
|
1045
|
-
const typePrefixesJSON = typePrefixes.map((typePrefix)=>{
|
|
1046
|
-
const typePrefixJSON = typePrefix.toJSON();
|
|
1047
|
-
return typePrefixJSON;
|
|
1048
|
-
});
|
|
1049
|
-
return typePrefixesJSON;
|
|
1050
|
-
}
|
|
1051
|
-
function substitutionsToSubstitutionsJSON(substitutions) {
|
|
1052
|
-
const substitutionsJSON = substitutions.map((substitution)=>{
|
|
1053
|
-
const substitutionJSON = substitution.toJSON();
|
|
1054
|
-
return substitutionJSON;
|
|
1055
|
-
});
|
|
1056
|
-
return substitutionsJSON;
|
|
1057
|
-
}
|
|
1058
|
-
function metavariablesToMetavariablesJSON(metavariables) {
|
|
1059
|
-
const metavariablesJSON = metavariables.map((metavariable)=>{
|
|
1060
|
-
const metavariableJSON = metavariable.toJSON();
|
|
1061
|
-
return metavariableJSON;
|
|
1062
|
-
});
|
|
1063
|
-
return metavariablesJSON;
|
|
1064
|
-
}
|
|
1065
|
-
function mnemicContextsToMnemicContextsJSON(mnemicContexts) {
|
|
1066
|
-
const mnemicContextsJSON = mnemicContexts.map((mnemicContext)=>{
|
|
1067
|
-
const mnemicContextJSON = mnemicContext.toJSON();
|
|
1068
|
-
return mnemicContextJSON;
|
|
1069
|
-
});
|
|
1070
|
-
return mnemicContextsJSON;
|
|
1071
|
-
}
|
|
1072
|
-
function propertyRelationsToPropertyRelationsJSON(propertyRelations) {
|
|
1073
|
-
const propertyRelationsJSON = propertyRelations.map((propertyRelation)=>{
|
|
1074
|
-
const propertyRelationJSON = propertyRelation.toJSON();
|
|
1075
|
-
return propertyRelationJSON;
|
|
1076
|
-
});
|
|
1077
|
-
return propertyRelationsJSON;
|
|
1078
|
-
}
|
|
1079
|
-
function declaredVariablesToDeclaredVariablesJSON(declaredVariables) {
|
|
1080
|
-
const declaredVariablesJSON = declaredVariables.map((declaredVariable)=>{
|
|
1081
|
-
const declaredVariableJSON = declaredVariable.toJSON();
|
|
1082
|
-
return declaredVariableJSON;
|
|
1083
|
-
});
|
|
1084
|
-
return declaredVariablesJSON;
|
|
1085
|
-
}
|
|
1086
|
-
function metaLevelAssumptionsToMetaLevelAssumptionsJSON(metaLevelAssumptions) {
|
|
1087
|
-
const metaLevelAssumptionsJSON = metaLevelAssumptions.map((metaLevelAssumption)=>{
|
|
1088
|
-
const metaLevelAssumptionJSON = metaLevelAssumption.toJSON();
|
|
1089
|
-
return metaLevelAssumptionJSON;
|
|
1090
|
-
});
|
|
1091
|
-
return metaLevelAssumptionsJSON;
|
|
1092
|
-
}
|
|
1093
|
-
function declaredMetavariablesToDeclaredMetavariablesJSON(declaredMetavariables) {
|
|
1094
|
-
const declaredMetavariablesJSON = declaredMetavariables.map((declaredMetavariable)=>{
|
|
1095
|
-
const declaredMetavariableJSON = declaredMetavariable.toJSON();
|
|
1096
|
-
return declaredMetavariableJSON;
|
|
1097
|
-
});
|
|
1098
|
-
return declaredMetavariablesJSON;
|
|
1099
|
-
}
|
|
1100
|
-
function findTypeByName(name, context) {
|
|
1101
|
-
const typeName = name, type = context.findTypeByTypeName(typeName);
|
|
1102
|
-
return type;
|
|
1103
|
-
}
|
|
1104
|
-
function findMetaTypeByName(name, context) {
|
|
1105
|
-
const metaTypeName = name, metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
1106
|
-
return metaType;
|
|
1107
|
-
}
|
|
1108
|
-
|
|
1109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBuYW1lIH0gPSBqc29uO1xuXG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIG5hbWUgPSBuYW1lSlNPTjsgIC8vL1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gICAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzO1xuXG4gICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgKHsgY29udGV4dCB9ID0ganNvbik7XG5cbiAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbW5lbWljQ29udGV4dCA9IE1uZW1pY0NvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICBmcmFtZXNKU09OID0gZnJhbWVzOyAvLy9cblxuICBmcmFtZXMgPSBmcmFtZXNKU09OLm1hcCgoZnJhbWVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGZyYW1lSlNPTiwgIC8vL1xuICAgICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVscyB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeE5hbWVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gcHJlZml4TmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgIG5hbWUgPSBzdHJpbmcsICAvLy9cbiAgICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSxcbiAgICAgIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlczsgIC8vL1xuXG4gIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTi5tYXAoKGh5cG90aGVzaXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGh5cG90aGVzaXNKU09OLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzID0gSHlwb3RoZXNpcy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnM7IC8vL1xuXG4gIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTi5tYXAoKHBhcmFtZXRlckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcGFyYW1ldGVySlNPTiwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlciA9IFBhcmFtZXRlci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsganVkZ2VtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50czsgLy8vXG5cbiAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OLm1hcCgoanVkZ2VtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqdWRnZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzOyAvLy9cblxuICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0pTT04ubWFwKChzdGF0ZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc2VydGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIFNpZ25hdHVyZUFzc2VydGlvbiwgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIERlZmluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzOyAvLy9cblxuICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT04ubWFwKChyZWZlcmVuY2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJlZmVyZW5jZUpTT04sICAvLy9cbiAgICAgIHJlZmVyZW5jZSA9IFJlZmVyZW5jZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHNpZ25hdHVyZXNKU09OID0gc2lnbmF0dXJlczsgLy8vXG5cbiAgc2lnbmF0dXJlcyA9IHNpZ25hdHVyZXNKU09OLm1hcCgoc2lnbmF0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29tYmluYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb21iaW5hdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzdW1wdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICBjb25zdCB7IGNvbnRleHRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG4gICAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkVmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZFZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZFZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnR5UmVsYXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHlSZWxhdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zOyAvLy9cblxuICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTi5tYXAoKHByb3BlcnR5UmVsYXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5UmVsYXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbiA9IFByb3BlcnR5UmVsYXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxldmVsQXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFMZXZlbEFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YUxldmVsQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb25zOyAvLy9cblxuICBtZXRhTGV2ZWxBc3N1bXB0aW9ucyA9IG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTi5tYXAoKG1ldGFMZXZlbEFzc3VtcHRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGFMZXZlbEFzc3VtcHRpb25KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbiA9IE1ldGFMZXZlbEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzOyAvLy9cblxuICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZVRvTmFtZUpTT04obmFtZSkge1xuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gbmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gKHRlcm0gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHRlcm0udG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0ZXJtSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgbGV0IHR5cGVKU09OID0gbnVsbDtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZTtcblxuICAgIHR5cGVKU09OID0gdHlwZS50b0pTT04oYWJyaWRnZWQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVUb0ZyYW1lSlNPTihmcmFtZSkge1xuICBjb25zdCBmcmFtZUpTT04gPSAoZnJhbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICBmcmFtZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBmcmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkVG9OZWdhdGVkSlNPTihuZWdhdGVkKSB7XG4gIGNvbnN0IG5lZ2F0ZWRKU09OID0gbmVnYXRlZDsgIC8vL1xuXG4gIHJldHVybiBuZWdhdGVkSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyaWFibGVUb1ZhcmlhYmxlSlNPTihhcmlhYmxlKSB7XG4gIGNvbnN0IGFyaWFibGVKU09OID0gYXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gYXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTihyZWZlcmVuY2UpIHtcbiAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyVG9JZGVudGlmaWVySlNPTihpZGVudGlmaWVyKSB7XG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVySlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04ocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW9uYWxKU09OID0gcHJvdmlzaW9uYWw7ICAvLy9cblxuICByZXR1cm4gcHJvdmlzaW9uYWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04ocHJvY2VkdXJlQ2FsbCkge1xuICBjb25zdCBwcm9jZWR1cmVDYWxsSlNPTiA9IChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZWR1cmVDYWxsLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTihtbmVtaWNDb250ZXh0KSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04ocHJvY2VkdXJlUmVmZXJlbmNlKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZUpTT04gPSBwcm9jZWR1cmVSZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZVRvREVjbGFyZWRNZXRhdmFyaWFibGVKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24sIFN0YXRlbWVudFN1YnN0aXR1dGlvbiwgUmVmZXJlbmNlU3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBGcmFtZVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNUb0ZyYW1lc0pTT04oZnJhbWVzKSB7XG4gIGNvbnN0IGZyYW1lc0pTT04gPSBmcmFtZXMubWFwKChmcmFtZSkgPT4ge1xuICAgIGNvbnN0IGZyYW1lSlNPTiA9IGZyYW1lLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGZyYW1lSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGF4aW9tSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzVG9WYXJpYWJsZXNKU09OKHZhcmlhYmxlcykge1xuICBjb25zdCB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzLm1hcCgodmFyaWFibGUpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUpTT04gPSB2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiB2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04oaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXMubWFwKChoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc0pTT04gPSBoeXBvdGhlc2lzLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTihwcmVmaXhuYW1lKSB7XG4gIGNvbnN0IHByZWZpeE5hbWVKU09OID0gcHJlZml4bmFtZTsgIC8vL1xuXG4gIHJldHVybiBwcmVmaXhOYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWJyaWRnZWQgPSB0cnVlLFxuICAgICAgICAgICAgICAgIHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKGFicmlkZ2VkKTtcblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGVKU09OO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04ocHJvcGVydGllcykge1xuICBjb25zdCBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXMubWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5SlNPTiA9IHByb3BlcnR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04oanVkZ2VtZW50cykge1xuICBjb25zdCBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHMubWFwKChqdWRnZW1lbnQpID0+IHtcbiAgICBjb25zdCBqdWRnZW1lbnRKU09OID0ganVkZ2VtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OKGVxdWFsaXRpZXMpIHtcbiAgY29uc3QgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzLm1hcCgoZXF1YWxpdHkpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eUpTT04gPSBlcXVhbGl0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBlcXVhbGl0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpIHtcbiAgY29uc3Qgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVzVG9TaWduYXR1cmVzSlNPTihzaWduYXR1cmVzKSB7XG4gIGNvbnN0IHNpZ25hdHVyZXNKU09OID0gc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZSkgPT4ge1xuICAgIGNvbnN0IHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OKHJlZmVyZW5jZXMpIHtcbiAgY29uc3QgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzLm1hcCgocmVmZXJlbmNlKSA9PiB7XG4gICAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICAgIHJldHVybiByZWZlcmVuY2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTihhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9ucy5tYXAoKGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uSlNPTiA9IGFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04obWV0YXRoZW9yZW1zKSB7XG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXMubWFwKChtZXRhdGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IG1ldGF0aGVvcmVtSlNPTiA9IG1ldGF0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTihtbmVtaWNDb250ZXh0cykge1xuICBjb25zdCBtbmVtaWNDb250ZXh0c0pTT04gPSBtbmVtaWNDb250ZXh0cy5tYXAoKG1uZW1pY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCBtbmVtaWNDb250ZXh0SlNPTiA9IG1uZW1pY0NvbnRleHQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OKHByb3BlcnR5UmVsYXRpb25zKSB7XG4gIGNvbnN0IHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zLm1hcCgocHJvcGVydHlSZWxhdGlvbikgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb25KU09OID0gcHJvcGVydHlSZWxhdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04oZGVjbGFyZWRWYXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXMubWFwKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUpTT04gPSBkZWNsYXJlZFZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxldmVsQXNzdW1wdGlvbnNUb01ldGFMZXZlbEFzc3VtcHRpb25zSlNPTihtZXRhTGV2ZWxBc3N1bXB0aW9ucykge1xuICBjb25zdCBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04gPSBtZXRhTGV2ZWxBc3N1bXB0aW9ucy5tYXAoKG1ldGFMZXZlbEFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04oZGVjbGFyZWRNZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMubWFwKChkZWNsYXJlZE1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIGZpbmRNZXRhVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1ldGFUeXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuIl0sIm5hbWVzIjpbImFyaWFibGVUb1ZhcmlhYmxlSlNPTiIsImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVUb0RFY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsImVxdWFsaXRpZXNGcm9tSlNPTiIsImVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OIiwiZnJhbWVGcm9tSlNPTiIsImZyYW1lVG9GcmFtZUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiaWRlbnRpZmllckZyb21KU09OIiwiaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9uc0Zyb21KU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbnNUb01ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiIsIm1ldGFUeXBlRnJvbUpTT04iLCJtZXRhVHlwZVRvTWV0YVR5cGVKU09OIiwibWV0YXRoZW9yZW1zRnJvbUpTT04iLCJtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibW5lbWljQ29udGV4dEZyb21KU09OIiwibW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04iLCJtbmVtaWNDb250ZXh0c0Zyb21KU09OIiwibW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTiIsIm5hbWVGcm9tSlNPTiIsIm5hbWVUb05hbWVKU09OIiwibmVnYXRlZEZyb21KU09OIiwibmVnYXRlZFRvTmVnYXRlZEpTT04iLCJwYXJhbWV0ZXJzRnJvbUpTT04iLCJwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiIsInByZWZpeE5hbWVGcm9tSlNPTiIsInByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicmVmZXJlbmNlRnJvbUpTT04iLCJyZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04iLCJyZWZlcmVuY2VzRnJvbUpTT04iLCJyZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJydWxlc1RvUnVsZXNKU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVzRnJvbUpTT04iLCJzaWduYXR1cmVzVG9TaWduYXR1cmVzSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInZhcmlhYmxlc0Zyb21KU09OIiwidmFyaWFibGVzVG9WYXJpYWJsZXNKU09OIiwianNvbiIsImNvbnRleHQiLCJuYW1lIiwibmFtZUpTT04iLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tSlNPTiIsInR5cGUiLCJzdHJpbmciLCJmaW5kVHlwZUJ5TmFtZSIsImxhYmVsIiwiTGFiZWwiLCJsYWJlbEpTT04iLCJmcmFtZSIsImZyYW1lSlNPTiIsIkZyYW1lIiwibmVnYXRlZCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImlkZW50aWZpZXIiLCJpZGVudGlmaWVySlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJwcm92aXNpb25hbCIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUpTT04iLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJmcmFtZXMiLCJmcmFtZXNKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5IiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsInN0YXRlbWVudHNKU09OIiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzSlNPTiIsInNpZ25hdHVyZXMiLCJzaWduYXR1cmVzSlNPTiIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsImNvbnRleHRzIiwibW5lbWljQ29udGV4dHMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVKU09OIiwiZGVjbGFyZWRWYXJpYWJsZSIsInByb3BlcnR5UmVsYXRpb25zIiwiUHJvcGVydHlSZWxhdGlvbiIsInByb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3BlcnR5UmVsYXRpb25KU09OIiwicHJvcGVydHlSZWxhdGlvbiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zIiwiTWV0YUxldmVsQXNzdW1wdGlvbiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiIsIm1ldGFMZXZlbEFzc3VtcHRpb25KU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsInRvSlNPTiIsImFicmlkZ2VkIiwibmVnYXRlZEpTT04iLCJhcmlhYmxlIiwiYXJpYWJsZUpTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJtbmVtaWNDb250ZXh0SlNPTiIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsIlJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsInByZWZpeG5hbWUiLCJwcmVmaXhOYW1lSlNPTiIsIm1uZW1pY0NvbnRleHRzSlNPTiIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXF6QmdCQTtlQUFBQTs7UUF0VUFDO2VBQUFBOztRQTZsQkFDO2VBQUFBOztRQXhnQkFDO2VBQUFBOztRQWdqQkFDO2VBQUFBOztRQTN6QkFDO2VBQUFBOztRQW9wQkFDO2VBQUFBOztRQXpaQUM7ZUFBQUE7O1FBc2pCQUM7ZUFBQUE7O1FBeDhCQUM7ZUFBQUE7O1FBbXNCQUM7ZUFBQUE7O1FBalVBQztlQUFBQTs7UUE0akJBQztlQUFBQTs7UUE1ZkFDO2VBQUFBOztRQW9pQkFDO2VBQUFBOztRQTdQQUM7ZUFBQUE7O1FBckpBQztlQUFBQTs7UUE0ZUFDO2VBQUFBOztRQTdoQkFDO2VBQUFBOztRQXlnQkFDO2VBQUFBOztRQS9sQ0FDO2VBQUFBOztRQWt1QkFDO2VBQUFBOztRQXhjQUM7ZUFBQUE7O1FBcXFCQUM7ZUFBQUE7O1FBbi9CQUM7ZUFBQUE7O1FBc3VCQUM7ZUFBQUE7O1FBeGdCQUM7ZUFBQUE7O1FBMHFCQUM7ZUFBQUE7O1FBcGhCQUM7ZUFBQUE7O1FBc2tCQUM7ZUFBQUE7O1FBNzFCQUM7ZUFBQUE7O1FBdXNCQUM7ZUFBQUE7O1FBaFpBQztlQUFBQTs7UUFxbEJBQztlQUFBQTs7UUF0L0JBQztlQUFBQTs7UUEydkJBQztlQUFBQTs7UUFoZ0JBQztlQUFBQTs7UUFncEJBQztlQUFBQTs7UUFuTkFDO2VBQUFBOztRQWtmQUM7ZUFBQUE7O1FBdm9DQUM7ZUFBQUE7O1FBMHVCQUM7ZUFBQUE7O1FBdk1BQztlQUFBQTs7UUE4aEJBQztlQUFBQTs7UUE3OUJBQztlQUFBQTs7UUE0ckJBQztlQUFBQTs7UUE5TUFDO2VBQUFBOztRQTZnQkFDO2VBQUFBOztRQTkrQkFDO2VBQUFBOztRQTZyQkFDO2VBQUFBOztRQTVNQUM7ZUFB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
|