occam-verify-cli 0.0.470 → 0.0.472

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.
Files changed (55) hide show
  1. package/lib/constants.js +4 -8
  2. package/lib/context/file.js +9 -9
  3. package/lib/context/metaproof.js +38 -32
  4. package/lib/context/proof.js +35 -29
  5. package/lib/equality.js +22 -0
  6. package/lib/metaSubstitution.js +12 -52
  7. package/lib/rule.js +15 -19
  8. package/lib/step/metaproof.js +114 -0
  9. package/lib/step/proof.js +68 -0
  10. package/lib/substitution.js +16 -56
  11. package/lib/utilities/array.js +2 -5
  12. package/lib/utilities/node.js +105 -0
  13. package/lib/verify/antecedent.js +4 -4
  14. package/lib/verify/derivation.js +16 -18
  15. package/lib/verify/equality.js +18 -5
  16. package/lib/verify/metaDerivation.js +16 -18
  17. package/lib/verify/metaproof.js +10 -51
  18. package/lib/verify/metastatement/qualified.js +1 -7
  19. package/lib/verify/metastatement/unqualified.js +2 -9
  20. package/lib/verify/premiseOrPremises.js +4 -4
  21. package/lib/verify/proof.js +11 -52
  22. package/lib/verify/statement/qualified.js +1 -7
  23. package/lib/verify/statement/unqualified.js +2 -9
  24. package/package.json +1 -1
  25. package/src/constants.js +1 -2
  26. package/src/context/file.js +6 -6
  27. package/src/context/metaproof.js +32 -31
  28. package/src/context/proof.js +30 -29
  29. package/src/equality.js +8 -0
  30. package/src/metaSubstitution.js +16 -87
  31. package/src/rule.js +19 -26
  32. package/src/step/metaproof.js +99 -0
  33. package/src/step/proof.js +30 -0
  34. package/src/substitution.js +19 -90
  35. package/src/utilities/array.js +1 -1
  36. package/src/utilities/node.js +149 -0
  37. package/src/verify/antecedent.js +3 -3
  38. package/src/verify/derivation.js +17 -18
  39. package/src/verify/equality.js +29 -11
  40. package/src/verify/metaDerivation.js +17 -18
  41. package/src/verify/metaproof.js +20 -91
  42. package/src/verify/metastatement/qualified.js +0 -9
  43. package/src/verify/metastatement/unqualified.js +1 -12
  44. package/src/verify/premiseOrPremises.js +3 -3
  45. package/src/verify/proof.js +21 -92
  46. package/src/verify/statement/qualified.js +0 -9
  47. package/src/verify/statement/unqualified.js +1 -13
  48. package/lib/assertion.js +0 -147
  49. package/lib/metaAssertion.js +0 -200
  50. package/lib/utilities/metastatement.js +0 -45
  51. package/lib/utilities/statement.js +0 -45
  52. package/src/assertion.js +0 -150
  53. package/src/metaAssertion.js +0 -245
  54. package/src/utilities/metastatement.js +0 -50
  55. package/src/utilities/statement.js +0 -50
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import MetaAssertion from "../metaAssertion";
3
+ import MetaproofStep from "../step/metaproof";
4
4
  import verifyMetaDerivation from "../verify/metaDerivation";
5
5
  import verifyQualifiedMetastatement from "./metastatement/qualified";
6
6
 
7
+ import { matchNode } from "../utilities/node";
7
8
  import { nodeQuery } from "../utilities/query";
8
9
 
9
- const metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
10
+ const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement/metastatement!"),
11
+ metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
10
12
  qualifiedMetastatementNodeQuery = nodeQuery("/metaproof/qualifiedMetastatement!");
11
13
 
12
14
  export default function verifyMetaproof(metaproofNode, conclusion, metaproofContext) {
@@ -25,23 +27,30 @@ export default function verifyMetaproof(metaproofNode, conclusion, metaproofCont
25
27
  }
26
28
 
27
29
  if (qualifiedMetastatementNode !== null) {
30
+ metaproofContext.setDerived();
31
+
28
32
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metaproofContext);
29
33
 
34
+ metaproofContext.resetDerived();
35
+
30
36
  if (qualifiedMetastatementVerified) {
31
- const metaAssertion = MetaAssertion.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
37
+ const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
38
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
32
39
 
33
- metaproofContext.addMetaAssertion(metaAssertion);
40
+ metaproofContext.addMetaproofStep(metaproofStep);
34
41
  }
35
42
  }
36
43
 
37
44
  if (metaDerivationVerified || qualifiedMetastatementVerified) {
38
- const lastMetaAssertion = metaproofContext.getLastMetaAssertion(),
39
- metaAssertion = lastMetaAssertion, ///
40
- metastatementNode = conclusion.getMetastatementNode(),
41
- metaAssertionMetastatementNode = metaAssertion.getMetastatementNode(),
42
- metaAssertionMetastatementNodeMatches = matchMetaProofMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
43
-
44
- metaproofVerified = metaAssertionMetastatementNodeMatches; ///
45
+ const lastMetaproofStep = metaproofContext.getLastMetaproofStep(),
46
+ metaproofStep = lastMetaproofStep, ///
47
+ metastatementNode = metaproofStep.getMetastatementNode(),
48
+ conclusionMetastatementNode = conclusion.getMetastatementNode(),
49
+ nodeA = metastatementNode, ///
50
+ nodeB = conclusionMetastatementNode, ///
51
+ nodeMatches = matchNode(nodeA, nodeB);
52
+
53
+ metaproofVerified = nodeMatches; ///
45
54
  }
46
55
 
47
56
  metaproofVerified ?
@@ -50,83 +59,3 @@ export default function verifyMetaproof(metaproofNode, conclusion, metaproofCont
50
59
 
51
60
  return metaproofVerified;
52
61
  }
53
-
54
- function matchMetaProofMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
55
- const metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
56
- nonTerminalNode = metastatementNode, ///
57
- metaAssertionNonTerminalNodeMatches = matchMetaProofNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode),
58
- metaAssertionMetastatementNodeMatches = metaAssertionNonTerminalNodeMatches; ///
59
-
60
- return metaAssertionMetastatementNodeMatches;
61
- }
62
-
63
- function matchMetaProofNode(metaAssertionNode, node) {
64
- let metaAssertionNodeMatches = false;
65
-
66
- const nodeTerminalNode = node.isTerminalNode(),
67
- ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
68
-
69
- if (nodeTerminalNode === ruleNodeTerminalNode) {
70
- if (nodeTerminalNode) {
71
- const terminalNode = node, ///
72
- metaAssertionTerminalNode = metaAssertionNode, ///
73
- metaAssertionTerminalNodeMatches = matchMetaProofTerminalNode(metaAssertionTerminalNode, terminalNode);
74
-
75
- metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
76
- } else {
77
- const nonTerminalNode = node, ///
78
- metaAssertionNonTerminalNode = metaAssertionNode, ///
79
- metaAssertionNonTerminalNodeMatches = matchMetaProofNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
80
-
81
- metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
82
- }
83
- }
84
-
85
- return metaAssertionNodeMatches;
86
- }
87
-
88
- function matchMetaProofNodes(metaAssertionNodes, nodes) {
89
- let metaAssertionNodesMatches = false;
90
-
91
- const nodesLength = nodes.length,
92
- metaAssertionNodesLength = metaAssertionNodes.length;
93
-
94
- if (nodesLength === metaAssertionNodesLength) {
95
- metaAssertionNodesMatches = nodes.every((node, index) => {
96
- const metaAssertionNode = metaAssertionNodes[index],
97
- metaAssertionNodeMatches = matchMetaProofNode(metaAssertionNode, node);
98
-
99
- if (metaAssertionNodeMatches) {
100
- return true;
101
- }
102
- })
103
- }
104
-
105
- return metaAssertionNodesMatches;
106
- }
107
-
108
- function matchMetaProofTerminalNode(metaAssertionTerminalNode, terminalNode) {
109
- const matches = metaAssertionTerminalNode.match(terminalNode),
110
- metaAssertionTerminalNodeMatches = matches; ///
111
-
112
- return metaAssertionTerminalNodeMatches;
113
- }
114
-
115
- function matchMetaProofNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
116
- let metaAssertionNonTerminalNodeMatches = false;
117
-
118
- const ruleName = nonTerminalNode.getRuleName(),
119
- metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
120
-
121
- if (ruleName === metaAssertionRuleName) {
122
- const childNodes = nonTerminalNode.getChildNodes(),
123
- metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
124
- nodes = childNodes, ///
125
- metaAssertionNodes = metaAssertionChildNodes, ///
126
- metaAssertionNodesMatches = matchMetaProofNodes(metaAssertionNodes, nodes);
127
-
128
- metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
129
- }
130
-
131
- return metaAssertionNonTerminalNodeMatches;
132
- }
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import { nodeAsString } from "../../utilities/string";
4
3
  import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
5
4
 
6
5
  const referenceNodeQuery = nodeQuery("/qualifiedMetastatement/qualification!/reference!"),
@@ -11,10 +10,6 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
11
10
 
12
11
  metaproofContext.begin(qualifiedMetastatementNode);
13
12
 
14
- const qualifiedMetastatementString = nodeAsString(qualifiedMetastatementNode);
15
-
16
- metaproofContext.debug(`Verifying the '${qualifiedMetastatementString}' qualified metastatement...`);
17
-
18
13
  const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode);
19
14
 
20
15
  if (metastatementNode !== null) {
@@ -29,10 +24,6 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
29
24
  }
30
25
  }
31
26
 
32
- if (qualifiedMetastatementVerified) {
33
- metaproofContext.info(`Verified the '${qualifiedMetastatementString}' qualified metastatement.`);
34
- }
35
-
36
27
  qualifiedMetastatementVerified ?
37
28
  metaproofContext.complete(qualifiedMetastatementNode) :
38
29
  metaproofContext.halt(qualifiedMetastatementNode);
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import MetaAssertion from "../../metaAssertion";
4
3
  import verifyMetastatement from "../../verify/metastatement";
5
4
 
6
5
  import { nodeQuery } from "../../utilities/query";
7
- import { nodeAsString } from "../../utilities/string";
8
6
 
9
7
  const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
10
8
 
@@ -13,10 +11,6 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
13
11
 
14
12
  metaproofContext.begin(unqualifiedMetastatementNode);
15
13
 
16
- const unqualifiedMetastatementString = nodeAsString(unqualifiedMetastatementNode);
17
-
18
- metaproofContext.debug(`Verifying the '${unqualifiedMetastatementString}' unqualified metastatement...`);
19
-
20
14
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
21
15
 
22
16
  if (metastatementNode !== null) {
@@ -26,8 +20,7 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
26
20
  const derived = metaproofContext.isDerived();
27
21
 
28
22
  if (derived) {
29
- const metaAssertion = MetaAssertion.fromMetastatementNode(metastatementNode),
30
- metaAssertionMatches = metaproofContext.matchMetaAssertion(metaAssertion);
23
+ const metaAssertionMatches = metaproofContext.matchMetastatement(metastatementNode);
31
24
 
32
25
  unqualifiedMetastatementVerified = metaAssertionMatches; ///
33
26
  } else {
@@ -36,10 +29,6 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
36
29
  }
37
30
  }
38
31
 
39
- if (unqualifiedMetastatementVerified) {
40
- metaproofContext.info(`Verified the '${unqualifiedMetastatementString}' unqualified metastatement.`);
41
- }
42
-
43
32
  unqualifiedMetastatementVerified ?
44
33
  metaproofContext.complete(unqualifiedMetastatementNode) :
45
34
  metaproofContext.halt(unqualifiedMetastatementNode);
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Premise from "../premise";
4
- import MetaAssertion from "../metaAssertion";
4
+ import MetaproofStep from "../step/metaproof";
5
5
  import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
6
6
 
7
7
  import { nodeQuery, nodesQuery } from "../utilities/query";
@@ -21,12 +21,12 @@ export default function verifyPremiseOrPremises(premiseOrPremisesNode, premises,
21
21
 
22
22
  if (unqualifiedMetastatementVerified) {
23
23
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
24
- metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode),
24
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode),
25
25
  premise = Premise.fromMetastatementNode(metastatementNode);
26
26
 
27
27
  premises.push(premise);
28
28
 
29
- metaproofContext.addMetaAssertion(metaAssertion);
29
+ metaproofContext.addMetaproofStep(metaproofStep);
30
30
 
31
31
  return true;
32
32
  }
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
 
3
- import Assertion from "../assertion";
3
+ import ProofStep from "../step/proof";
4
4
  import verifyDerivation from "../verify/derivation";
5
5
  import verifyQualifiedStatement from "./statement/qualified";
6
6
 
7
+ import { matchNode } from "../utilities/node";
7
8
  import { nodeQuery } from "../utilities/query";
8
9
 
9
- const derivationNodeQuery = nodeQuery("/proof/derivation!"),
10
+ const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
11
+ derivationNodeQuery = nodeQuery("/proof/derivation!"),
10
12
  qualifiedStatementNodeQuery = nodeQuery("/proof/qualifiedStatement!");
11
13
 
12
- export default function verifyProof(proofNode, consequent, proofContext) {
14
+ export default function verifyProof(proofNode, conclusion, proofContext) {
13
15
  let proofVerified = false;
14
16
 
15
17
  proofContext.begin(proofNode);
@@ -25,23 +27,30 @@ export default function verifyProof(proofNode, consequent, proofContext) {
25
27
  }
26
28
 
27
29
  if (qualifiedStatementNode !== null) {
30
+ proofContext.setDerived();
31
+
28
32
  qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, proofContext);
29
33
 
34
+ proofContext.resetDerived();
35
+
30
36
  if (qualifiedStatementVerified) {
31
- const assertion = Assertion.fromQualifiedStatementNode(qualifiedStatementNode);
37
+ const statementNode = statementNodeQuery(qualifiedStatementNode),
38
+ proofStep = ProofStep.fromStatementNode(statementNode);
32
39
 
33
- proofContext.addAssertion(assertion);
40
+ proofContext.addProofStep(proofStep);
34
41
  }
35
42
  }
36
43
 
37
44
  if (derivationVerified || qualifiedStatementVerified) {
38
- const lastAssertion = proofContext.getLastAssertion(),
39
- assertion = lastAssertion, ///
40
- statementNode = consequent.getStatementNode(),
41
- assertionStatementNode = assertion.getStatementNode(),
42
- assertionStatementNodeMatches = matchProofStatementNode(assertionStatementNode, statementNode);
43
-
44
- proofVerified = assertionStatementNodeMatches; ///
45
+ const lastProofStep = proofContext.getLastProofStep(),
46
+ proofStep = lastProofStep, ///
47
+ statementNode = proofStep.getStatementNode(),
48
+ conclusionStatementNode = conclusion.getStatementNode(),
49
+ nodeA = statementNode, ///
50
+ nodeB = conclusionStatementNode, ///
51
+ nodeMatches = matchNode(nodeA, nodeB);
52
+
53
+ proofVerified = nodeMatches; ///
45
54
  }
46
55
 
47
56
  proofVerified ?
@@ -50,83 +59,3 @@ export default function verifyProof(proofNode, consequent, proofContext) {
50
59
 
51
60
  return proofVerified;
52
61
  }
53
-
54
- function matchProofStatementNode(assertionStatementNode, statementNode) {
55
- const assertionNonTerminalNode = assertionStatementNode, ///
56
- nonTerminalNode = statementNode, ///
57
- assertionNonTerminalNodeMatches = matchProofNonTerminalNode(assertionNonTerminalNode, nonTerminalNode),
58
- assertionStatementNodeMatches = assertionNonTerminalNodeMatches; ///
59
-
60
- return assertionStatementNodeMatches;
61
- }
62
-
63
- function matchProofNode(assertionNode, node) {
64
- let assertionNodeMatches = false;
65
-
66
- const nodeTerminalNode = node.isTerminalNode(),
67
- ruleNodeTerminalNode = assertionNode.isTerminalNode();
68
-
69
- if (nodeTerminalNode === ruleNodeTerminalNode) {
70
- if (nodeTerminalNode) {
71
- const terminalNode = node, ///
72
- assertionTerminalNode = assertionNode, ///
73
- assertionTerminalNodeMatches = matchProofTerminalNode(assertionTerminalNode, terminalNode);
74
-
75
- assertionNodeMatches = assertionTerminalNodeMatches; ///
76
- } else {
77
- const nonTerminalNode = node, ///
78
- assertionNonTerminalNode = assertionNode, ///
79
- assertionNonTerminalNodeMatches = matchProofNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
80
-
81
- assertionNodeMatches = assertionNonTerminalNodeMatches; ///
82
- }
83
- }
84
-
85
- return assertionNodeMatches;
86
- }
87
-
88
- function matchProofNodes(assertionNodes, nodes) {
89
- let assertionNodesMatches = false;
90
-
91
- const nodesLength = nodes.length,
92
- assertionNodesLength = assertionNodes.length;
93
-
94
- if (nodesLength === assertionNodesLength) {
95
- assertionNodesMatches = nodes.every((node, index) => {
96
- const assertionNode = assertionNodes[index],
97
- assertionNodeMatches = matchProofNode(assertionNode, node);
98
-
99
- if (assertionNodeMatches) {
100
- return true;
101
- }
102
- })
103
- }
104
-
105
- return assertionNodesMatches;
106
- }
107
-
108
- function matchProofTerminalNode(assertionTerminalNode, terminalNode) {
109
- const matches = assertionTerminalNode.match(terminalNode),
110
- assertionTerminalNodeMatches = matches; ///
111
-
112
- return assertionTerminalNodeMatches;
113
- }
114
-
115
- function matchProofNonTerminalNode(assertionNonTerminalNode, nonTerminalNode) {
116
- let assertionNonTerminalNodeMatches = false;
117
-
118
- const ruleName = nonTerminalNode.getRuleName(),
119
- assertionRuleName = assertionNonTerminalNode.getRuleName(); ///
120
-
121
- if (ruleName === assertionRuleName) {
122
- const childNodes = nonTerminalNode.getChildNodes(),
123
- assertionChildNodes = assertionNonTerminalNode.getChildNodes(),
124
- nodes = childNodes, ///
125
- assertionNodes = assertionChildNodes, ///
126
- assertionNodesMatches = matchProofNodes(assertionNodes, nodes);
127
-
128
- assertionNonTerminalNodeMatches = assertionNodesMatches; ///
129
- }
130
-
131
- return assertionNonTerminalNodeMatches;
132
- }
@@ -2,7 +2,6 @@
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
- import { nodeAsString } from "../../utilities/string";
6
5
  import { nodeQuery, referenceNameFromReferenceNode } from "../../utilities/query";
7
6
 
8
7
  const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
@@ -13,10 +12,6 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, proofCo
13
12
 
14
13
  proofContext.begin(qualifiedStatementNode);
15
14
 
16
- const qualifiedStatementString = nodeAsString(qualifiedStatementNode);
17
-
18
- proofContext.debug(`Verifying the '${qualifiedStatementString}' qualified statement...`);
19
-
20
15
  const statementNode = statementNodeQuery(qualifiedStatementNode);
21
16
 
22
17
  if (statementNode !== null) {
@@ -33,10 +28,6 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, proofCo
33
28
  }
34
29
  }
35
30
 
36
- if (qualifiedStatementVerified) {
37
- proofContext.info(`Verified the '${qualifiedStatementString}' qualified statement.`);
38
- }
39
-
40
31
  qualifiedStatementVerified ?
41
32
  proofContext.complete(qualifiedStatementNode) :
42
33
  proofContext.halt(qualifiedStatementNode);
@@ -2,10 +2,7 @@
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
4
 
5
- import Assertion from "../../assertion";
6
-
7
5
  import { nodeQuery } from "../../utilities/query";
8
- import { nodeAsString } from "../../utilities/string";
9
6
 
10
7
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
11
8
 
@@ -14,10 +11,6 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
14
11
 
15
12
  proofContext.begin(unqualifiedStatementNode);
16
13
 
17
- const unqualifiedStatementString = nodeAsString(unqualifiedStatementNode);
18
-
19
- proofContext.debug(`Verifying the '${unqualifiedStatementString}' unqualified statement...`);
20
-
21
14
  const statementNode = statementNodeQuery(unqualifiedStatementNode);
22
15
 
23
16
  if (statementNode !== null) {
@@ -27,8 +20,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
27
20
  const derived = proofContext.isDerived();
28
21
 
29
22
  if (derived) {
30
- const assertion = Assertion.fromStatementNode(statementNode),
31
- assertionMatches = proofContext.matchAssertion(assertion);
23
+ const assertionMatches = proofContext.matchStatement(statementNode);
32
24
 
33
25
  unqualifiedStatementVerified = assertionMatches; ///
34
26
  } else {
@@ -37,10 +29,6 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
37
29
  }
38
30
  }
39
31
 
40
- if (unqualifiedStatementVerified) {
41
- proofContext.info(`Verified the '${unqualifiedStatementString}' unqualified statement.`);
42
- }
43
-
44
32
  unqualifiedStatementVerified ?
45
33
  proofContext.complete(unqualifiedStatementNode) :
46
34
  proofContext.halt(unqualifiedStatementNode);
package/lib/assertion.js DELETED
@@ -1,147 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return Assertion;
9
- }
10
- });
11
- var _query = require("./utilities/query");
12
- function _classCallCheck(instance, Constructor) {
13
- if (!(instance instanceof Constructor)) {
14
- throw new TypeError("Cannot call a class as a function");
15
- }
16
- }
17
- function _defineProperties(target, props) {
18
- for(var i = 0; i < props.length; i++){
19
- var descriptor = props[i];
20
- descriptor.enumerable = descriptor.enumerable || false;
21
- descriptor.configurable = true;
22
- if ("value" in descriptor) descriptor.writable = true;
23
- Object.defineProperty(target, descriptor.key, descriptor);
24
- }
25
- }
26
- function _createClass(Constructor, protoProps, staticProps) {
27
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
28
- if (staticProps) _defineProperties(Constructor, staticProps);
29
- return Constructor;
30
- }
31
- var statementNodeQuery = (0, _query.nodeQuery)("/*/statement!");
32
- var Assertion = /*#__PURE__*/ function() {
33
- function Assertion(subproofNode, statementNode) {
34
- _classCallCheck(this, Assertion);
35
- this.subproofNode = subproofNode;
36
- this.statementNode = statementNode;
37
- }
38
- _createClass(Assertion, [
39
- {
40
- key: "getNonTerminalNode",
41
- value: function getNonTerminalNode() {
42
- var nonTerminalNode = this.statementNode !== null ? this.statementNode : null;
43
- return nonTerminalNode;
44
- }
45
- },
46
- {
47
- key: "getSubproofNode",
48
- value: function getSubproofNode() {
49
- return this.subproofNode;
50
- }
51
- },
52
- {
53
- key: "getStatementNode",
54
- value: function getStatementNode() {
55
- return this.statementNode;
56
- }
57
- },
58
- {
59
- key: "match",
60
- value: function match(assertion) {
61
- var matches = false;
62
- var statementNode = assertion.getstatementNode();
63
- if (statementNode !== null && this.statementNode !== null) {
64
- var nonTerminalNode = this.statementNode, assertionNonTerminalNode = statementNode, assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
65
- matches = assertionNonTerminalNodeMatches; ///
66
- }
67
- return matches;
68
- }
69
- }
70
- ], [
71
- {
72
- key: "fromSubproofNode",
73
- value: function fromSubproofNode(subproofNode) {
74
- var statementNode = null, assertion = new Assertion(subproofNode, statementNode);
75
- return assertion;
76
- }
77
- },
78
- {
79
- key: "fromStatementNode",
80
- value: function fromStatementNode(statementNode) {
81
- var subproofNode = null, assertion = new Assertion(subproofNode, statementNode);
82
- return assertion;
83
- }
84
- },
85
- {
86
- key: "fromQualifiedStatementNode",
87
- value: function fromQualifiedStatementNode(qualifiedStatementNode) {
88
- var subproofNode = null, statementNode = statementNodeQuery(qualifiedStatementNode), assertion = new Assertion(subproofNode, statementNode);
89
- return assertion;
90
- }
91
- },
92
- {
93
- key: "fromUnqualifiedStatementNode",
94
- value: function fromUnqualifiedStatementNode(unqualifiedStatementNode) {
95
- var subproofNode = null, statementNode = statementNodeQuery(unqualifiedStatementNode), assertion = new Assertion(subproofNode, statementNode);
96
- return assertion;
97
- }
98
- }
99
- ]);
100
- return Assertion;
101
- }();
102
- function matchAssertionNode(assertionNode, node) {
103
- var assertionNodeMatches = false;
104
- var nodeTerminalNode = node.isTerminalNode(), ruleNodeTerminalNode = assertionNode.isTerminalNode();
105
- if (nodeTerminalNode === ruleNodeTerminalNode) {
106
- if (nodeTerminalNode) {
107
- var terminalNode = node, assertionTerminalNode = assertionNode, assertionTerminalNodeMatches = matchAssertionTerminalNode(assertionTerminalNode, terminalNode);
108
- assertionNodeMatches = assertionTerminalNodeMatches; ///
109
- } else {
110
- var nonTerminalNode = node, assertionNonTerminalNode = assertionNode, assertionNonTerminalNodeMatches = matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode);
111
- assertionNodeMatches = assertionNonTerminalNodeMatches; ///
112
- }
113
- }
114
- return assertionNodeMatches;
115
- }
116
- function matchAssertionChildNodes(assertionChildNodes, childNodes) {
117
- var assertionChildNodesMatches = false;
118
- var childNodesLength = childNodes.length, assertionChildNodesLength = assertionChildNodes.length;
119
- if (childNodesLength === assertionChildNodesLength) {
120
- assertionChildNodesMatches = childNodes.every(function(childNode, index) {
121
- var assertionChildNode = assertionChildNodes[index], assertionNode = assertionChildNode, node = childNode, assertionNodeMatches = matchAssertionNode(assertionNode, node);
122
- if (assertionNodeMatches) {
123
- return true;
124
- }
125
- });
126
- }
127
- return assertionChildNodesMatches;
128
- }
129
- function matchAssertionTerminalNode(assertionTerminalNode, terminalNode) {
130
- var assertionTerminalNodeMatches = false;
131
- var matches = assertionTerminalNode.match(terminalNode);
132
- if (matches) {
133
- assertionTerminalNodeMatches = true;
134
- }
135
- return assertionTerminalNodeMatches;
136
- }
137
- function matchAssertionNonTerminalNode(assertionNonTerminalNode, nonTerminalNode) {
138
- var assertionNonTerminalNodeMatches = false;
139
- var ruleName = nonTerminalNode.getRuleName(), assertionRuleName = assertionNonTerminalNode.getRuleName(); ///
140
- if (ruleName === assertionRuleName) {
141
- var childNodes = nonTerminalNode.getChildNodes(), assertionChildNodes = assertionNonTerminalNode.getChildNodes(), assertionChildNodesMatches = matchAssertionChildNodes(assertionChildNodes, childNodes);
142
- assertionNonTerminalNodeMatches = assertionChildNodesMatches; ///
143
- }
144
- return assertionNonTerminalNodeMatches;
145
- }
146
-
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3NlcnRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi9zdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBc3NlcnRpb24ge1xuICBjb25zdHJ1Y3RvcihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpIHtcbiAgICB0aGlzLnN1YnByb29mTm9kZSA9IHN1YnByb29mTm9kZTtcbiAgICB0aGlzLnN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0Tm9uVGVybWluYWxOb2RlKCkge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9ICh0aGlzLnN0YXRlbWVudE5vZGUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlbWVudE5vZGUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGU7XG4gIH1cblxuICBnZXRTdWJwcm9vZk5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3VicHJvb2ZOb2RlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2goYXNzZXJ0aW9uKSB7XG4gICAgbGV0IG1hdGNoZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBhc3NlcnRpb24uZ2V0c3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgaWYgKChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSAmJiAodGhpcy5zdGF0ZW1lbnROb2RlICE9PSBudWxsKSkge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGhpcy5zdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgICAgYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlKGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlKTtcblxuICAgICAgbWF0Y2hlcyA9IGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBudWxsLFxuICAgICAgICAgIGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24oc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHN1YnByb29mTm9kZSA9IG51bGwsXG4gICAgICAgICAgYXNzZXJ0aW9uID0gbmV3IEFzc2VydGlvbihzdWJwcm9vZk5vZGUsIHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUXVhbGlmaWVkU3RhdGVtZW50Tm9kZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSB7XG4gICAgY29uc3Qgc3VicHJvb2ZOb2RlID0gbnVsbCxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIGFzc2VydGlvbiA9IG5ldyBBc3NlcnRpb24oc3VicHJvb2ZOb2RlLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzdWJwcm9vZk5vZGUgPSBudWxsLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBhc3NlcnRpb24gPSBuZXcgQXNzZXJ0aW9uKHN1YnByb29mTm9kZSwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gYXNzZXJ0aW9uO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hdGNoQXNzZXJ0aW9uTm9kZShhc3NlcnRpb25Ob2RlLCBub2RlKSB7XG4gIGxldCBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCksXG4gICAgICAgIHJ1bGVOb2RlVGVybWluYWxOb2RlID0gYXNzZXJ0aW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGUgPSBhc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpO1xuXG4gICAgICBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXM7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUgPSBhc3NlcnRpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUpO1xuXG4gICAgICBhc3NlcnRpb25Ob2RlTWF0Y2hlcyA9IGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBc3NlcnRpb25DaGlsZE5vZGVzKGFzc2VydGlvbkNoaWxkTm9kZXMsIGNoaWxkTm9kZXMpIHtcbiAgbGV0IGFzc2VydGlvbkNoaWxkTm9kZXNNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgY2hpbGROb2Rlc0xlbmd0aCA9IGNoaWxkTm9kZXMubGVuZ3RoLFxuICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzTGVuZ3RoID0gYXNzZXJ0aW9uQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNoaWxkTm9kZXNMZW5ndGggPT09IGFzc2VydGlvbkNoaWxkTm9kZXNMZW5ndGgpIHtcbiAgICBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyA9IGNoaWxkTm9kZXMuZXZlcnkoKGNoaWxkTm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGFzc2VydGlvbkNoaWxkTm9kZSA9IGFzc2VydGlvbkNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgYXNzZXJ0aW9uTm9kZSA9IGFzc2VydGlvbkNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgIGFzc2VydGlvbk5vZGVNYXRjaGVzID0gbWF0Y2hBc3NlcnRpb25Ob2RlKGFzc2VydGlvbk5vZGUsIG5vZGUpO1xuXG4gICAgICBpZiAoYXNzZXJ0aW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hBc3NlcnRpb25UZXJtaW5hbE5vZGUoYXNzZXJ0aW9uVGVybWluYWxOb2RlLCB0ZXJtaW5hbE5vZGUpIHtcbiAgbGV0IGFzc2VydGlvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBtYXRjaGVzID0gYXNzZXJ0aW9uVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhc3NlcnRpb25UZXJtaW5hbE5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaEFzc2VydGlvbk5vblRlcm1pbmFsTm9kZShhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSkge1xuICBsZXQgYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGFzc2VydGlvblJ1bGVOYW1lID0gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gIGlmIChydWxlTmFtZSA9PT0gYXNzZXJ0aW9uUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzID0gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQXNzZXJ0aW9uQ2hpbGROb2Rlcyhhc3NlcnRpb25DaGlsZE5vZGVzLCBjaGlsZE5vZGVzKTtcblxuICAgIGFzc2VydGlvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG4gIH1cblxuICByZXR1cm4gYXNzZXJ0aW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cbiJdLCJuYW1lcyI6WyJBc3NlcnRpb24iLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzdWJwcm9vZk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiZ2V0U3VicHJvb2ZOb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsIm1hdGNoIiwiYXNzZXJ0aW9uIiwibWF0Y2hlcyIsImdldHN0YXRlbWVudE5vZGUiLCJhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJhc3NlcnRpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzIiwibWF0Y2hBc3NlcnRpb25Ob25UZXJtaW5hbE5vZGUiLCJmcm9tU3VicHJvb2ZOb2RlIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJmcm9tUXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJmcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwibWF0Y2hBc3NlcnRpb25Ob2RlIiwiYXNzZXJ0aW9uTm9kZSIsIm5vZGUiLCJhc3NlcnRpb25Ob2RlTWF0Y2hlcyIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInJ1bGVOb2RlVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwiYXNzZXJ0aW9uVGVybWluYWxOb2RlIiwiYXNzZXJ0aW9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQXNzZXJ0aW9uVGVybWluYWxOb2RlIiwibWF0Y2hBc3NlcnRpb25DaGlsZE5vZGVzIiwiYXNzZXJ0aW9uQ2hpbGROb2RlcyIsImNoaWxkTm9kZXMiLCJhc3NlcnRpb25DaGlsZE5vZGVzTWF0Y2hlcyIsImNoaWxkTm9kZXNMZW5ndGgiLCJsZW5ndGgiLCJhc3NlcnRpb25DaGlsZE5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJjaGlsZE5vZGUiLCJpbmRleCIsImFzc2VydGlvbkNoaWxkTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJhc3NlcnRpb25SdWxlTmFtZSIsImdldENoaWxkTm9kZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3FCQUpLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsSUFBQSxBQUFNRiwwQkFxRWxCLEFBckVZO2FBQU1BLFVBQ1BHLFlBQVksRUFBRUMsYUFBYTs4QkFEcEJKO1FBRWpCLElBQUksQ0FBQ0csWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7O2lCQUhKSjs7WUFNbkJLLEtBQUFBO21CQUFBQSxTQUFBQSxxQkFBcUI7Z0JBQ25CLElBQU1DLGtCQUFrQixBQUFDLElBQUksQ0FBQ0YsYUFBYSxLQUFLLElBQUksR0FDekIsSUFBSSxDQUFDQSxhQUFhLEdBQ2hCLElBQUk7Z0JBRWpDLE9BQU9FO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsa0JBQWtCO2dCQUNoQixPQUFPLElBQUksQ0FBQ0osWUFBWTtZQUMxQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUI7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDSixhQUFhO1lBQzNCOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBLE1BQU1DLFNBQVMsRUFBRTtnQkFDZixJQUFJQyxVQUFVLEtBQUs7Z0JBRW5CLElBQU1QLGdCQUFnQk0sVUFBVUUsZ0JBQWdCO2dCQUVoRCxJQUFJLEFBQUNSLGtCQUFrQixJQUFJLElBQU0sSUFBSSxDQUFDQSxhQUFhLEtBQUssSUFBSSxFQUFHO29CQUM3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