occam-verify-cli 1.0.192 → 1.0.198

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 (165) hide show
  1. package/lib/context/file.js +3 -3
  2. package/lib/dom/assertion/contained.js +12 -24
  3. package/lib/dom/assertion/defined.js +9 -21
  4. package/lib/dom/assertion/property.js +7 -7
  5. package/lib/dom/assertion/satisfies.js +6 -8
  6. package/lib/dom/declaration/complexType.js +3 -3
  7. package/lib/dom/declaration/constructor.js +6 -6
  8. package/lib/dom/declaration/variable.js +6 -6
  9. package/lib/dom/declaration.js +13 -13
  10. package/lib/dom/frame.js +7 -7
  11. package/lib/dom/judgement.js +7 -7
  12. package/lib/dom/propertyRelation.js +7 -7
  13. package/lib/dom/term.js +1 -3
  14. package/lib/dom/topLevelMetaAssertion.js +77 -131
  15. package/lib/dom/type.js +2 -2
  16. package/lib/equivalence.js +4 -6
  17. package/lib/mixins/term/verify.js +4 -8
  18. package/lib/node/argument.js +116 -0
  19. package/lib/node/assertion/contained.js +31 -23
  20. package/lib/node/assertion/defined.js +30 -17
  21. package/lib/node/assertion/property.js +14 -19
  22. package/lib/node/assertion/satisfies.js +20 -13
  23. package/lib/node/assertion/subproof.js +11 -11
  24. package/lib/node/assertion/type.js +12 -17
  25. package/lib/node/combinator.js +9 -4
  26. package/lib/node/conclusion.js +11 -11
  27. package/lib/node/constructor.js +9 -4
  28. package/lib/node/declaration/combinator.js +11 -11
  29. package/lib/node/declaration/complexType.js +38 -34
  30. package/lib/node/declaration/constructor.js +24 -29
  31. package/lib/node/declaration/metavariable.js +12 -17
  32. package/lib/node/declaration/property.js +19 -24
  33. package/lib/node/declaration/type.js +41 -28
  34. package/lib/node/declaration/variable.js +12 -17
  35. package/lib/node/declaration.js +12 -17
  36. package/lib/node/deduction.js +11 -11
  37. package/lib/node/derivation.js +39 -11
  38. package/lib/node/equality.js +21 -18
  39. package/lib/node/error.js +9 -4
  40. package/lib/node/frame.js +13 -30
  41. package/lib/node/judgement.js +15 -20
  42. package/lib/node/label.js +11 -11
  43. package/lib/node/labels.js +11 -11
  44. package/lib/node/metaArgument.js +116 -0
  45. package/lib/node/metaType.js +9 -8
  46. package/lib/node/metavariable.js +12 -17
  47. package/lib/node/nonTerminal.js +200 -0
  48. package/lib/node/parameter.js +9 -4
  49. package/lib/node/parenthesisedLabel.js +116 -0
  50. package/lib/node/parenthesisedLabels.js +11 -11
  51. package/lib/node/premise.js +12 -17
  52. package/lib/node/procedureCall.js +12 -17
  53. package/lib/node/proof.js +11 -11
  54. package/lib/node/property.js +9 -4
  55. package/lib/node/propertyRelation.js +12 -17
  56. package/lib/node/reference.js +11 -11
  57. package/lib/node/rule.js +44 -7
  58. package/lib/node/statement.js +92 -53
  59. package/lib/node/step.js +12 -17
  60. package/lib/node/subDerivation.js +46 -11
  61. package/lib/node/subproof.js +19 -17
  62. package/lib/node/substitution/frame.js +123 -0
  63. package/lib/node/substitution/reference.js +123 -0
  64. package/lib/node/substitution/statement.js +123 -0
  65. package/lib/node/substitution/term.js +123 -0
  66. package/lib/node/supposition.js +12 -17
  67. package/lib/node/term.js +22 -33
  68. package/lib/node/topLevelAssertion.js +14 -29
  69. package/lib/node/topLevelMetaAssertion.js +26 -41
  70. package/lib/node/type.js +9 -4
  71. package/lib/node/types.js +116 -0
  72. package/lib/node/variable.js +9 -4
  73. package/lib/nonTerminalNodeMap.js +11 -3
  74. package/lib/ruleNames.js +33 -1
  75. package/lib/substitution/frame.js +5 -7
  76. package/lib/substitution/reference.js +5 -7
  77. package/lib/substitution/term.js +5 -7
  78. package/lib/unifier/metaLevel.js +4 -4
  79. package/lib/utilities/brackets.js +5 -5
  80. package/lib/utilities/json.js +18 -1
  81. package/lib/utilities/node.js +1 -313
  82. package/lib/utilities/subproof.js +13 -4
  83. package/package.json +1 -1
  84. package/src/context/file.js +2 -2
  85. package/src/dom/assertion/contained.js +12 -34
  86. package/src/dom/assertion/defined.js +9 -30
  87. package/src/dom/assertion/property.js +6 -8
  88. package/src/dom/assertion/satisfies.js +5 -10
  89. package/src/dom/declaration/complexType.js +2 -2
  90. package/src/dom/declaration/constructor.js +6 -7
  91. package/src/dom/declaration/variable.js +6 -7
  92. package/src/dom/declaration.js +11 -15
  93. package/src/dom/frame.js +4 -6
  94. package/src/dom/judgement.js +6 -8
  95. package/src/dom/propertyRelation.js +6 -8
  96. package/src/dom/term.js +0 -3
  97. package/src/dom/topLevelMetaAssertion.js +83 -39
  98. package/src/dom/type.js +2 -2
  99. package/src/equivalence.js +3 -6
  100. package/src/mixins/term/verify.js +5 -11
  101. package/src/node/argument.js +16 -0
  102. package/src/node/assertion/contained.js +30 -22
  103. package/src/node/assertion/defined.js +28 -15
  104. package/src/node/assertion/property.js +7 -17
  105. package/src/node/assertion/satisfies.js +11 -9
  106. package/src/node/assertion/subproof.js +4 -9
  107. package/src/node/assertion/type.js +6 -16
  108. package/src/node/combinator.js +1 -1
  109. package/src/node/conclusion.js +4 -9
  110. package/src/node/constructor.js +1 -1
  111. package/src/node/declaration/combinator.js +4 -9
  112. package/src/node/declaration/complexType.js +31 -35
  113. package/src/node/declaration/constructor.js +16 -26
  114. package/src/node/declaration/metavariable.js +6 -16
  115. package/src/node/declaration/property.js +13 -23
  116. package/src/node/declaration/type.js +35 -29
  117. package/src/node/declaration/variable.js +6 -16
  118. package/src/node/declaration.js +6 -16
  119. package/src/node/deduction.js +4 -9
  120. package/src/node/derivation.js +7 -10
  121. package/src/node/equality.js +19 -18
  122. package/src/node/error.js +1 -1
  123. package/src/node/frame.js +8 -35
  124. package/src/node/judgement.js +8 -18
  125. package/src/node/label.js +4 -9
  126. package/src/node/labels.js +4 -9
  127. package/src/node/metaArgument.js +16 -0
  128. package/src/node/metaType.js +1 -5
  129. package/src/node/metavariable.js +6 -16
  130. package/src/node/nonTerminal.js +112 -0
  131. package/src/node/parameter.js +1 -1
  132. package/src/node/parenthesisedLabel.js +16 -0
  133. package/src/node/parenthesisedLabels.js +5 -10
  134. package/src/node/premise.js +6 -16
  135. package/src/node/procedureCall.js +6 -16
  136. package/src/node/proof.js +4 -9
  137. package/src/node/property.js +1 -1
  138. package/src/node/propertyRelation.js +7 -16
  139. package/src/node/reference.js +4 -9
  140. package/src/node/rule.js +40 -3
  141. package/src/node/statement.js +109 -66
  142. package/src/node/step.js +6 -16
  143. package/src/node/subDerivation.js +14 -10
  144. package/src/node/subproof.js +13 -16
  145. package/src/node/substitution/frame.js +23 -0
  146. package/src/node/substitution/reference.js +23 -0
  147. package/src/node/substitution/statement.js +23 -0
  148. package/src/node/substitution/term.js +23 -0
  149. package/src/node/supposition.js +6 -16
  150. package/src/node/term.js +15 -39
  151. package/src/node/topLevelAssertion.js +13 -33
  152. package/src/node/topLevelMetaAssertion.js +20 -39
  153. package/src/node/type.js +1 -1
  154. package/src/node/types.js +16 -0
  155. package/src/node/variable.js +1 -1
  156. package/src/nonTerminalNodeMap.js +60 -36
  157. package/src/ruleNames.js +8 -0
  158. package/src/substitution/frame.js +7 -10
  159. package/src/substitution/reference.js +7 -10
  160. package/src/substitution/term.js +7 -9
  161. package/src/unifier/metaLevel.js +2 -3
  162. package/src/utilities/brackets.js +8 -8
  163. package/src/utilities/json.js +19 -0
  164. package/src/utilities/node.js +0 -168
  165. package/src/utilities/subproof.js +22 -6
@@ -9,156 +9,6 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
- get isNodeAxiomNode () {
13
- return isNodeAxiomNode;
14
- },
15
- get isNodeCombinatorDeclarationNode () {
16
- return isNodeCombinatorDeclarationNode;
17
- },
18
- get isNodeCombinatorNode () {
19
- return isNodeCombinatorNode;
20
- },
21
- get isNodeComplexTypeDeclarationNode () {
22
- return isNodeComplexTypeDeclarationNode;
23
- },
24
- get isNodeConclusionNode () {
25
- return isNodeConclusionNode;
26
- },
27
- get isNodeConjectureNode () {
28
- return isNodeConjectureNode;
29
- },
30
- get isNodeConstructorDeclarationNode () {
31
- return isNodeConstructorDeclarationNode;
32
- },
33
- get isNodeConstructorNode () {
34
- return isNodeConstructorNode;
35
- },
36
- get isNodeContainedAssertionNode () {
37
- return isNodeContainedAssertionNode;
38
- },
39
- get isNodeDeclarationNode () {
40
- return isNodeDeclarationNode;
41
- },
42
- get isNodeDeductionNode () {
43
- return isNodeDeductionNode;
44
- },
45
- get isNodeDefinedAssertionNode () {
46
- return isNodeDefinedAssertionNode;
47
- },
48
- get isNodeDerivationNode () {
49
- return isNodeDerivationNode;
50
- },
51
- get isNodeEqualityNode () {
52
- return isNodeEqualityNode;
53
- },
54
- get isNodeErrorNode () {
55
- return isNodeErrorNode;
56
- },
57
- get isNodeFrameNode () {
58
- return isNodeFrameNode;
59
- },
60
- get isNodeJudgementNode () {
61
- return isNodeJudgementNode;
62
- },
63
- get isNodeLabelNode () {
64
- return isNodeLabelNode;
65
- },
66
- get isNodeLabelsNode () {
67
- return isNodeLabelsNode;
68
- },
69
- get isNodeLemmaNode () {
70
- return isNodeLemmaNode;
71
- },
72
- get isNodeMetaLemmaNode () {
73
- return isNodeMetaLemmaNode;
74
- },
75
- get isNodeMetaTypeNode () {
76
- return isNodeMetaTypeNode;
77
- },
78
- get isNodeMetatheoremNode () {
79
- return isNodeMetatheoremNode;
80
- },
81
- get isNodeMetavariableDeclarationNode () {
82
- return isNodeMetavariableDeclarationNode;
83
- },
84
- get isNodeMetavariableNode () {
85
- return isNodeMetavariableNode;
86
- },
87
- get isNodeParameterNode () {
88
- return isNodeParameterNode;
89
- },
90
- get isNodeParenthesisedLabelsNode () {
91
- return isNodeParenthesisedLabelsNode;
92
- },
93
- get isNodePremiseNode () {
94
- return isNodePremiseNode;
95
- },
96
- get isNodeProcedureCallNode () {
97
- return isNodeProcedureCallNode;
98
- },
99
- get isNodeProofNode () {
100
- return isNodeProofNode;
101
- },
102
- get isNodePropertyAssertionNode () {
103
- return isNodePropertyAssertionNode;
104
- },
105
- get isNodePropertyDeclarationNode () {
106
- return isNodePropertyDeclarationNode;
107
- },
108
- get isNodePropertyNode () {
109
- return isNodePropertyNode;
110
- },
111
- get isNodePropertyRelationNode () {
112
- return isNodePropertyRelationNode;
113
- },
114
- get isNodeReferenceNode () {
115
- return isNodeReferenceNode;
116
- },
117
- get isNodeRuleNode () {
118
- return isNodeRuleNode;
119
- },
120
- get isNodeSatisfiesAssertionNode () {
121
- return isNodeSatisfiesAssertionNode;
122
- },
123
- get isNodeStatementNode () {
124
- return isNodeStatementNode;
125
- },
126
- get isNodeStepNode () {
127
- return isNodeStepNode;
128
- },
129
- get isNodeSubDerivationNode () {
130
- return isNodeSubDerivationNode;
131
- },
132
- get isNodeSubproofAssertionNode () {
133
- return isNodeSubproofAssertionNode;
134
- },
135
- get isNodeSubproofNode () {
136
- return isNodeSubproofNode;
137
- },
138
- get isNodeSuppositionNode () {
139
- return isNodeSuppositionNode;
140
- },
141
- get isNodeTermNode () {
142
- return isNodeTermNode;
143
- },
144
- get isNodeTheoremNode () {
145
- return isNodeTheoremNode;
146
- },
147
- get isNodeTypeAssertionNode () {
148
- return isNodeTypeAssertionNode;
149
- },
150
- get isNodeTypeDeclarationNode () {
151
- return isNodeTypeDeclarationNode;
152
- },
153
- get isNodeTypeNode () {
154
- return isNodeTypeNode;
155
- },
156
- get isNodeVariableDeclarationNode () {
157
- return isNodeVariableDeclarationNode;
158
- },
159
- get isNodeVariableNode () {
160
- return isNodeVariableNode;
161
- },
162
12
  get statementFromStatementNode () {
163
13
  return statementFromStatementNode;
164
14
  },
@@ -171,162 +21,11 @@ _export(exports, {
171
21
  });
172
22
  var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
173
23
  var _type = require("../dom/type");
174
- var _ruleNames = require("../ruleNames");
175
24
  function _interop_require_default(obj) {
176
25
  return obj && obj.__esModule ? obj : {
177
26
  default: obj
178
27
  };
179
28
  }
180
- function isNodeRuleNode(node) {
181
- return isNodeRuleNodeByRuleName(node, _ruleNames.RULE_RULE_NAME);
182
- }
183
- function isNodeStepNode(node) {
184
- return isNodeRuleNodeByRuleName(node, _ruleNames.STEP_RULE_NAME);
185
- }
186
- function isNodeTermNode(node) {
187
- return isNodeRuleNodeByRuleName(node, _ruleNames.TERM_RULE_NAME);
188
- }
189
- function isNodeTypeNode(node) {
190
- return isNodeRuleNodeByRuleName(node, _ruleNames.TYPE_RULE_NAME);
191
- }
192
- function isNodeLemmaNode(node) {
193
- return isNodeRuleNodeByRuleName(node, _ruleNames.LEMMA_RULE_NAME);
194
- }
195
- function isNodeAxiomNode(node) {
196
- return isNodeRuleNodeByRuleName(node, _ruleNames.AXIOM_RULE_NAME);
197
- }
198
- function isNodeErrorNode(node) {
199
- return isNodeRuleNodeByRuleName(node, _ruleNames.ERROR_RULE_NAME);
200
- }
201
- function isNodeFrameNode(node) {
202
- return isNodeRuleNodeByRuleName(node, _ruleNames.FRAME_RULE_NAME);
203
- }
204
- function isNodeProofNode(node) {
205
- return isNodeRuleNodeByRuleName(node, _ruleNames.PROOF_RULE_NAME);
206
- }
207
- function isNodeLabelNode(node) {
208
- return isNodeRuleNodeByRuleName(node, _ruleNames.LABEL_RULE_NAME);
209
- }
210
- function isNodeLabelsNode(node) {
211
- return isNodeRuleNodeByRuleName(node, _ruleNames.LABELS_RULE_NAME);
212
- }
213
- function isNodeTheoremNode(node) {
214
- return isNodeRuleNodeByRuleName(node, _ruleNames.THEOREM_RULE_NAME);
215
- }
216
- function isNodePremiseNode(node) {
217
- return isNodeRuleNodeByRuleName(node, _ruleNames.PREMISE_RULE_NAME);
218
- }
219
- function isNodePropertyNode(node) {
220
- return isNodeRuleNodeByRuleName(node, _ruleNames.PROPERTY_RULE_NAME);
221
- }
222
- function isNodeEqualityNode(node) {
223
- return isNodeRuleNodeByRuleName(node, _ruleNames.EQUALITY_RULE_NAME);
224
- }
225
- function isNodeVariableNode(node) {
226
- return isNodeRuleNodeByRuleName(node, _ruleNames.VARIABLE_RULE_NAME);
227
- }
228
- function isNodeSubproofNode(node) {
229
- return isNodeRuleNodeByRuleName(node, _ruleNames.SUBPROOF_RULE_NAME);
230
- }
231
- function isNodeMetaTypeNode(node) {
232
- return isNodeRuleNodeByRuleName(node, _ruleNames.META_TYPE_RULE_NAME);
233
- }
234
- function isNodeParameterNode(node) {
235
- return isNodeRuleNodeByRuleName(node, _ruleNames.PARAMETER_RULE_NAME);
236
- }
237
- function isNodeDeductionNode(node) {
238
- return isNodeRuleNodeByRuleName(node, _ruleNames.DEDUCTION_RULE_NAME);
239
- }
240
- function isNodeJudgementNode(node) {
241
- return isNodeRuleNodeByRuleName(node, _ruleNames.JUDGEMENT_RULE_NAME);
242
- }
243
- function isNodeReferenceNode(node) {
244
- return isNodeRuleNodeByRuleName(node, _ruleNames.REFERENCE_RULE_NAME);
245
- }
246
- function isNodeStatementNode(node) {
247
- return isNodeRuleNodeByRuleName(node, _ruleNames.STATEMENT_RULE_NAME);
248
- }
249
- function isNodeMetaLemmaNode(node) {
250
- return isNodeRuleNodeByRuleName(node, _ruleNames.META_LEMMA_RULE_NAME);
251
- }
252
- function isNodeCombinatorNode(node) {
253
- return isNodeRuleNodeByRuleName(node, _ruleNames.COMBINATOR_RULE_NAME);
254
- }
255
- function isNodeConclusionNode(node) {
256
- return isNodeRuleNodeByRuleName(node, _ruleNames.CONCLUSION_RULE_NAME);
257
- }
258
- function isNodeConjectureNode(node) {
259
- return isNodeRuleNodeByRuleName(node, _ruleNames.CONJECTURE_RULE_NAME);
260
- }
261
- function isNodeDerivationNode(node) {
262
- return isNodeRuleNodeByRuleName(node, _ruleNames.DERIVATION_RULE_NAME);
263
- }
264
- function isNodeSuppositionNode(node) {
265
- return isNodeRuleNodeByRuleName(node, _ruleNames.SUPPOSITION_RULE_NAME);
266
- }
267
- function isNodeConstructorNode(node) {
268
- return isNodeRuleNodeByRuleName(node, _ruleNames.CONSTRUCTOR_RULE_NAME);
269
- }
270
- function isNodeDeclarationNode(node) {
271
- return isNodeRuleNodeByRuleName(node, _ruleNames.DECLARATION_RULE_NAME);
272
- }
273
- function isNodeMetatheoremNode(node) {
274
- return isNodeRuleNodeByRuleName(node, _ruleNames.METATHEOREM_RULE_NAME);
275
- }
276
- function isNodeMetavariableNode(node) {
277
- return isNodeRuleNodeByRuleName(node, _ruleNames.METAVARIABLE_RULE_NAME);
278
- }
279
- function isNodeProcedureCallNode(node) {
280
- return isNodeRuleNodeByRuleName(node, _ruleNames.PROCEDURE_CALL_RULE_NAME);
281
- }
282
- function isNodeSubDerivationNode(node) {
283
- return isNodeRuleNodeByRuleName(node, _ruleNames.SUB_DERIVATION_RULE_NAME);
284
- }
285
- function isNodeTypeAssertionNode(node) {
286
- return isNodeRuleNodeByRuleName(node, _ruleNames.TYPE_ASSERTION_RULE_NAME);
287
- }
288
- function isNodeTypeDeclarationNode(node) {
289
- return isNodeRuleNodeByRuleName(node, _ruleNames.TYPE_DECLARATION_RULE_NAME);
290
- }
291
- function isNodePropertyRelationNode(node) {
292
- return isNodeRuleNodeByRuleName(node, _ruleNames.PROPERTY_RELATION_RULE_NAME);
293
- }
294
- function isNodeDefinedAssertionNode(node) {
295
- return isNodeRuleNodeByRuleName(node, _ruleNames.DEFINED_ASSERTION_RULE_NAME);
296
- }
297
- function isNodePropertyAssertionNode(node) {
298
- return isNodeRuleNodeByRuleName(node, _ruleNames.PROPERTY_ASSERTION_RULE_NAME);
299
- }
300
- function isNodeSubproofAssertionNode(node) {
301
- return isNodeRuleNodeByRuleName(node, _ruleNames.SUBPROOF_ASSERTION_RULE_NAME);
302
- }
303
- function isNodeContainedAssertionNode(node) {
304
- return isNodeRuleNodeByRuleName(node, _ruleNames.CONTAINED_ASSERTION_RULE_NAME);
305
- }
306
- function isNodeSatisfiesAssertionNode(node) {
307
- return isNodeRuleNodeByRuleName(node, _ruleNames.SATISFIES_ASSERTION_RULE_NAME);
308
- }
309
- function isNodePropertyDeclarationNode(node) {
310
- return isNodeRuleNodeByRuleName(node, _ruleNames.PROPERTY_DECLARATION_RULE_NAME);
311
- }
312
- function isNodeVariableDeclarationNode(node) {
313
- return isNodeRuleNodeByRuleName(node, _ruleNames.VARIABLE_DECLARATION_RULE_NAME);
314
- }
315
- function isNodeParenthesisedLabelsNode(node) {
316
- return isNodeRuleNodeByRuleName(node, _ruleNames.PARENTHESISED_LABELS_RULE_NAME);
317
- }
318
- function isNodeCombinatorDeclarationNode(node) {
319
- return isNodeRuleNodeByRuleName(node, _ruleNames.COMBINATOR_DECLARATION_RULE_NAME);
320
- }
321
- function isNodeConstructorDeclarationNode(node) {
322
- return isNodeRuleNodeByRuleName(node, _ruleNames.CONSTRUCTOR_DECLARATION_RULE_NAME);
323
- }
324
- function isNodeComplexTypeDeclarationNode(node) {
325
- return isNodeRuleNodeByRuleName(node, _ruleNames.COMPLEX_TYPE_DECLARATION_RULE_NAME);
326
- }
327
- function isNodeMetavariableDeclarationNode(node) {
328
- return isNodeRuleNodeByRuleName(node, _ruleNames.METAVARIABLE_DECLARATION_RULE_NAME);
329
- }
330
29
  function typeFromTypeNode(typeNode) {
331
30
  var type;
332
31
  if (typeNode === null) {
@@ -345,16 +44,5 @@ function statementFromStatementNode(statementNode, context) {
345
44
  var Statement = _dom.default.Statement, node = statementNode, tokens = context.nodeAsTokens(node), string = context.tokensAsString(tokens), statement = new Statement(string, node, tokens);
346
45
  return statement;
347
46
  }
348
- function isNodeRuleNodeByRuleName(node, ruleName) {
349
- var nodeRuleNode = false;
350
- var nodeNonTerminalNode = node.isNonTerminalNode();
351
- if (nodeNonTerminalNode) {
352
- var nonTerminalNode = node, nonTerminalNodeRuleName = nonTerminalNode.getRuleName(), nonTerminalNodeRuleNameRuleName = nonTerminalNodeRuleName === ruleName;
353
- if (nonTerminalNodeRuleNameRuleName) {
354
- nodeRuleNode = true;
355
- }
356
- }
357
- return nodeRuleNode;
358
- }
359
47
 
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5cbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi4vZG9tL3R5cGVcIjtcbmltcG9ydCB7IFJVTEVfUlVMRV9OQU1FLFxuICAgICAgICAgU1RFUF9SVUxFX05BTUUsXG4gICAgICAgICBURVJNX1JVTEVfTkFNRSxcbiAgICAgICAgIFRZUEVfUlVMRV9OQU1FLFxuICAgICAgICAgTEVNTUFfUlVMRV9OQU1FLFxuICAgICAgICAgQVhJT01fUlVMRV9OQU1FLFxuICAgICAgICAgRVJST1JfUlVMRV9OQU1FLFxuICAgICAgICAgRlJBTUVfUlVMRV9OQU1FLFxuICAgICAgICAgUFJPT0ZfUlVMRV9OQU1FLFxuICAgICAgICAgTEFCRUxfUlVMRV9OQU1FLFxuICAgICAgICAgTEFCRUxTX1JVTEVfTkFNRSxcbiAgICAgICAgIFRIRU9SRU1fUlVMRV9OQU1FLFxuICAgICAgICAgUFJFTUlTRV9SVUxFX05BTUUsXG4gICAgICAgICBQUk9QRVJUWV9SVUxFX05BTUUsXG4gICAgICAgICBFUVVBTElUWV9SVUxFX05BTUUsXG4gICAgICAgICBWQVJJQUJMRV9SVUxFX05BTUUsXG4gICAgICAgICBTVUJQUk9PRl9SVUxFX05BTUUsXG4gICAgICAgICBNRVRBX1RZUEVfUlVMRV9OQU1FLFxuICAgICAgICAgUEFSQU1FVEVSX1JVTEVfTkFNRSxcbiAgICAgICAgIERFRFVDVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBKVURHRU1FTlRfUlVMRV9OQU1FLFxuICAgICAgICAgUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgIFNUQVRFTUVOVF9SVUxFX05BTUUsXG4gICAgICAgICBNRVRBX0xFTU1BX1JVTEVfTkFNRSxcbiAgICAgICAgIENPTUJJTkFUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgQ09OQ0xVU0lPTl9SVUxFX05BTUUsXG4gICAgICAgICBDT05KRUNUVVJFX1JVTEVfTkFNRSxcbiAgICAgICAgIERFUklWQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgU1VQUE9TSVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgQ09OU1RSVUNUT1JfUlVMRV9OQU1FLFxuICAgICAgICAgREVDTEFSQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVRIRU9SRU1fUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVZBUklBQkxFX1JVTEVfTkFNRSxcbiAgICAgICAgIFBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVQl9ERVJJVkFUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFRZUEVfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFRZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUFJPUEVSVFlfUkVMQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUFJPUEVSVFlfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSxcbiAgICAgICAgIFNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUFJPUEVSVFlfREVDTEFSQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgVkFSSUFCTEVfREVDTEFSQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgUEFSRU5USEVTSVNFRF9MQUJFTFNfUlVMRV9OQU1FLFxuICAgICAgICAgQ09NQklOQVRPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUsXG4gICAgICAgICBDT01QTEVYX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FLFxuICAgICAgICAgTUVUQVZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVJ1bGVOb2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBSVUxFX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVN0ZXBOb2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBTVEVQX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVRlcm1Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBURVJNX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVR5cGVOb2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBUWVBFX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUxlbW1hTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgTEVNTUFfUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlQXhpb21Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBBWElPTV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVFcnJvck5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIEVSUk9SX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUZyYW1lTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgRlJBTUVfUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlUHJvb2ZOb2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBQUk9PRl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVMYWJlbE5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIExBQkVMX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUxhYmVsc05vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIExBQkVMU19SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVUaGVvcmVtTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgVEhFT1JFTV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVQcmVtaXNlTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgUFJFTUlTRV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVQcm9wZXJ0eU5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIFBST1BFUlRZX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUVxdWFsaXR5Tm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgRVFVQUxJVFlfUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlVmFyaWFibGVOb2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBWQVJJQUJMRV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVTdWJwcm9vZk5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIFNVQlBST09GX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZU1ldGFUeXBlTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgTUVUQV9UWVBFX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVBhcmFtZXRlck5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIFBBUkFNRVRFUl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVEZWR1Y3Rpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBERURVQ1RJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlSnVkZ2VtZW50Tm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgSlVER0VNRU5UX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVJlZmVyZW5jZU5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIFJFRkVSRU5DRV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVTdGF0ZW1lbnROb2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBTVEFURU1FTlRfUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlTWV0YUxlbW1hTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgTUVUQV9MRU1NQV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVDb21iaW5hdG9yTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgQ09NQklOQVRPUl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVDb25jbHVzaW9uTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgQ09OQ0xVU0lPTl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVDb25qZWN0dXJlTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgQ09OSkVDVFVSRV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVEZXJpdmF0aW9uTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgREVSSVZBVElPTl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVTdXBwb3NpdGlvbk5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIFNVUFBPU0lUSU9OX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUNvbnN0cnVjdG9yTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgQ09OU1RSVUNUT1JfUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlRGVjbGFyYXRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBERUNMQVJBVElPTl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVNZXRhdGhlb3JlbU5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIE1FVEFUSEVPUkVNX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZU1ldGF2YXJpYWJsZU5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVQcm9jZWR1cmVDYWxsTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgUFJPQ0VEVVJFX0NBTExfUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlU3ViRGVyaXZhdGlvbk5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIFNVQl9ERVJJVkFUSU9OX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVR5cGVBc3NlcnRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBUWVBFX0FTU0VSVElPTl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVUeXBlRGVjbGFyYXRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBUWVBFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVByb3BlcnR5UmVsYXRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBQUk9QRVJUWV9SRUxBVElPTl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVEZWZpbmVkQXNzZXJ0aW9uTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlUHJvcGVydHlBc3NlcnRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBQUk9QRVJUWV9BU1NFUlRJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlU3VicHJvb2ZBc3NlcnRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBTVUJQUk9PRl9BU1NFUlRJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgQ09OVEFJTkVEX0FTU0VSVElPTl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVTYXRpc2ZpZXNBc3NlcnRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBTQVRJU0ZJRVNfQVNTRVJUSU9OX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZVByb3BlcnR5RGVjbGFyYXRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBQUk9QRVJUWV9ERUNMQVJBVElPTl9SVUxFX05BTUUpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGVWYXJpYWJsZURlY2xhcmF0aW9uTm9kZShub2RlKSB7IHJldHVybiBpc05vZGVSdWxlTm9kZUJ5UnVsZU5hbWUobm9kZSwgVkFSSUFCTEVfREVDTEFSQVRJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlUGFyZW50aGVzaXNlZExhYmVsc05vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIFBBUkVOVEhFU0lTRURfTEFCRUxTX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIENPTUJJTkFUT1JfREVDTEFSQVRJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlQ29uc3RydWN0b3JEZWNsYXJhdGlvbk5vZGUobm9kZSkgeyByZXR1cm4gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIENPTlNUUlVDVE9SX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZUNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBDT01QTEVYX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKG5vZGUpIHsgcmV0dXJuIGlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZShub2RlLCBNRVRBVkFSSUFCTEVfREVDTEFSQVRJT05fUlVMRV9OQU1FKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21UeXBlTm9kZSh0eXBlTm9kZSkge1xuICBsZXQgdHlwZTtcblxuICBpZiAodHlwZU5vZGUgPT09IG51bGwpIHtcbiAgICB0eXBlID0gb2JqZWN0VHlwZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IFR5cGUgfSA9IGRvbSxcbiAgICAgICAgICB0eXBlTmFtZSA9IHR5cGVOb2RlLmdldFR5cGVOYW1lKCksXG4gICAgICAgICAgbmFtZSA9IHR5cGVOYW1lLCAgLy8vXG4gICAgICAgICAgc3RyaW5nID0gbmFtZSwgIC8vL1xuICAgICAgICAgIHN1cGVyVHlwZXMgPSBudWxsLFxuICAgICAgICAgIHByb3BlcnRpZXMgPSBudWxsLFxuICAgICAgICAgIHByb3Zpc2lvbmFsID0gbnVsbDtcblxuICAgIHR5cGUgPSBuZXcgVHlwZShzdHJpbmcsIG5hbWUsIHN1cGVyVHlwZXMsIHByb3BlcnRpZXMsIHByb3Zpc2lvbmFsKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFRlcm0gfSA9IGRvbSxcbiAgICAgICAgbm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICB0eXBlID0gbnVsbCxcbiAgICAgICAgdGVybSA9IG5ldyBUZXJtKHN0cmluZywgbm9kZSwgdHlwZSk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBkb20sXG4gICAgICAgIG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgdG9rZW5zID0gY29udGV4dC5ub2RlQXNUb2tlbnMobm9kZSksXG4gICAgICAgIHN0cmluZyA9IGNvbnRleHQudG9rZW5zQXNTdHJpbmcodG9rZW5zKSxcbiAgICAgICAgc3RhdGVtZW50ID0gbmV3IFN0YXRlbWVudChzdHJpbmcsIG5vZGUsIHRva2Vucyk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZnVuY3Rpb24gaXNOb2RlUnVsZU5vZGVCeVJ1bGVOYW1lKG5vZGUsIHJ1bGVOYW1lKSB7XG4gIGxldCBub2RlUnVsZU5vZGUgPSBmYWxzZTtcblxuICBjb25zdCBub2RlTm9uVGVybWluYWxOb2RlID0gbm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVSdWxlTmFtZVJ1bGVOYW1lID0gKG5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID09PSBydWxlTmFtZSk7XG5cbiAgICBpZiAobm9uVGVybWluYWxOb2RlUnVsZU5hbWVSdWxlTmFtZSkge1xuICAgICAgbm9kZVJ1bGVOb2RlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9kZVJ1bGVOb2RlO1xufVxuIl0sIm5hbWVzIjpbImlzTm9kZUF4aW9tTm9kZSIsImlzTm9kZUNvbWJpbmF0b3JEZWNsYXJhdGlvbk5vZGUiLCJpc05vZGVDb21iaW5hdG9yTm9kZSIsImlzTm9kZUNvbXBsZXhUeXBlRGVjbGFyYXRpb25Ob2RlIiwiaXNOb2RlQ29uY2x1c2lvbk5vZGUiLCJpc05vZGVDb25qZWN0dXJlTm9kZSIsImlzTm9kZUNvbnN0cnVjdG9yRGVjbGFyYXRpb25Ob2RlIiwiaXNOb2RlQ29uc3RydWN0b3JOb2RlIiwiaXNOb2RlQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImlzTm9kZURlY2xhcmF0aW9uTm9kZSIsImlzTm9kZURlZHVjdGlvbk5vZGUiLCJpc05vZGVEZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImlzTm9kZURlcml2YXRpb25Ob2RlIiwiaXNOb2RlRXF1YWxpdHlOb2RlIiwiaXNOb2RlRXJyb3JOb2RlIiwiaXNOb2RlRnJhbWVOb2RlIiwiaXNOb2RlSnVkZ2VtZW50Tm9kZSIsImlzTm9kZUxhYmVsTm9kZSIsImlzTm9kZUxhYmVsc05vZGUiLCJpc05vZGVMZW1tYU5vZGUiLCJpc05vZGVNZXRhTGVtbWFOb2RlIiwiaXNOb2RlTWV0YVR5cGVOb2RlIiwiaXNOb2RlTWV0YXRoZW9yZW1Ob2RlIiwiaXNOb2RlTWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiaXNOb2RlTWV0YXZhcmlhYmxlTm9kZSIsImlzTm9kZVBhcmFtZXRlck5vZGUiLCJpc05vZGVQYXJlbnRoZXNpc2VkTGFiZWxzTm9kZSIsImlzTm9kZVByZW1pc2VOb2RlIiwiaXNOb2RlUHJvY2VkdXJlQ2FsbE5vZGUiLCJpc05vZGVQcm9vZk5vZGUiLCJpc05vZGVQcm9wZXJ0eUFzc2VydGlvbk5vZGUiLCJpc05vZGVQcm9wZXJ0eURlY2xhcmF0aW9uTm9kZSIsImlzTm9kZVByb3BlcnR5Tm9kZSIsImlzTm9kZVByb3BlcnR5UmVsYXRpb25Ob2RlIiwiaXNOb2RlUmVmZXJlbmNlTm9kZSIsImlzTm9kZVJ1bGVOb2RlIiwiaXNOb2RlU2F0aXNmaWVzQXNzZXJ0aW9uTm9kZSIsImlzTm9kZVN0YXRlbWVudE5vZGUiLCJpc05vZGVTdGVwTm9kZSIsImlzTm9kZVN1YkRlcml2YXRpb25Ob2RlIiwiaXNOb2RlU3VicHJvb2ZBc3NlcnRpb25Ob2RlIiwiaXNOb2RlU3VicHJvb2ZOb2RlIiwiaXNOb2RlU3VwcG9zaXRpb25Ob2RlIiwiaXNOb2RlVGVybU5vZGUiLCJpc05vZGVUaGVvcmVtTm9kZSIsImlzTm9kZVR5cGVBc3NlcnRpb25Ob2RlIiwiaXNOb2RlVHlwZURlY2xhcmF0aW9uTm9kZSIsImlzTm9kZVR5cGVOb2RlIiwiaXNOb2RlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUiLCJpc05vZGVWYXJpYWJsZU5vZGUiLCJzdGF0ZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSIsInRlcm1Gcm9tVGVybU5vZGUiLCJ0eXBlRnJvbVR5cGVOb2RlIiwibm9kZSIsImlzTm9kZVJ1bGVOb2RlQnlSdWxlTmFtZSIsIlJVTEVfUlVMRV9OQU1FIiwiU1RFUF9SVUxFX05BTUUiLCJURVJNX1JVTEVfTkFNRSIsIlRZUEVfUlVMRV9OQU1FIiwiTEVNTUFfUlVMRV9OQU1FIiwiQVhJT01fUlVMRV9OQU1FIiwiRVJST1JfUlVMRV9OQU1FIiwiRlJBTUVfUlVMRV9OQU1FIiwiUFJPT0ZfUlVMRV9OQU1FIiwiTEFCRUxfUlVMRV9OQU1FIiwiTEFCRUxTX1JVTEVfTkFNRSIsIlRIRU9SRU1fUlVMRV9OQU1FIiwiUFJFTUlTRV9SVUxFX05BTUUiLCJQUk9QRVJUWV9SVUxFX05BTUUiLCJFUVVBTElUWV9SVUxFX05BTUUiLCJWQVJJQUJMRV9SVUxFX05BTUUiLCJTVUJQUk9PRl9SVUxFX05BTUUiLCJNRVRBX1RZUEVfUlVMRV9OQU1FIiwiUEFSQU1FVEVSX1JVTEVfTkFNRSIsIkRFRFVDVElPTl9SVUxFX05BTUUiLCJKVURHRU1FTlRfUlVMRV9OQU1FIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJNRVRBX0xFTU1BX1JVTEVfTkFNRSIsIkNPTUJJTkFUT1JfUlVMRV9OQU1FIiwiQ09OQ0xVU0lPTl9SVUxFX05BTUUiLCJDT05KRUNUVVJFX1JVTEVfTkFNRSIsIkRFUklWQVRJT05fUlVMRV9OQU1FIiwiU1VQUE9TSVRJT05fUlVMRV9OQU1FIiwiQ09OU1RSVUNUT1JfUlVMRV9OQU1FIiwiREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiTUVUQVRIRU9SRU1fUlVMRV9OQU1FIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIlBST0NFRFVSRV9DQUxMX1JVTEVfTkFNRSIsIlNVQl9ERVJJVkFUSU9OX1JVTEVfTkFNRSIsIlRZUEVfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlRZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiUFJPUEVSVFlfUkVMQVRJT05fUlVMRV9OQU1FIiwiREVGSU5FRF9BU1NFUlRJT05fUlVMRV9OQU1FIiwiUFJPUEVSVFlfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlNVQlBST09GX0FTU0VSVElPTl9SVUxFX05BTUUiLCJDT05UQUlORURfQVNTRVJUSU9OX1JVTEVfTkFNRSIsIlNBVElTRklFU19BU1NFUlRJT05fUlVMRV9OQU1FIiwiUFJPUEVSVFlfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiVkFSSUFCTEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiUEFSRU5USEVTSVNFRF9MQUJFTFNfUlVMRV9OQU1FIiwiQ09NQklOQVRPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJDT05TVFJVQ1RPUl9ERUNMQVJBVElPTl9SVUxFX05BTUUiLCJDT01QTEVYX1RZUEVfREVDTEFSQVRJT05fUlVMRV9OQU1FIiwiTUVUQVZBUklBQkxFX0RFQ0xBUkFUSU9OX1JVTEVfTkFNRSIsInR5cGVOb2RlIiwidHlwZSIsIm9iamVjdFR5cGUiLCJUeXBlIiwiZG9tIiwidHlwZU5hbWUiLCJnZXRUeXBlTmFtZSIsIm5hbWUiLCJzdHJpbmciLCJzdXBlclR5cGVzIiwicHJvcGVydGllcyIsInByb3Zpc2lvbmFsIiwidGVybU5vZGUiLCJjb250ZXh0IiwiVGVybSIsIm5vZGVBc1N0cmluZyIsInRlcm0iLCJzdGF0ZW1lbnROb2RlIiwiU3RhdGVtZW50IiwidG9rZW5zIiwibm9kZUFzVG9rZW5zIiwidG9rZW5zQXNTdHJpbmciLCJzdGF0ZW1lbnQiLCJydWxlTmFtZSIsIm5vZGVSdWxlTm9kZSIsIm5vZGVOb25UZXJtaW5hbE5vZGUiLCJpc05vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJub25UZXJtaW5hbE5vZGVSdWxlTmFtZVJ1bGVOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFrRWdCQTtlQUFBQTs7UUFrRkFDO2VBQUFBOztRQTVDQUM7ZUFBQUE7O1FBZ0RBQztlQUFBQTs7UUE5Q0FDO2VBQUFBOztRQUVBQztlQUFBQTs7UUEwQ0FDO2VBQUFBOztRQXBDQUM7ZUFBQUE7O1FBd0JBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQXRCQUM7ZUFBQUE7O1FBc0NBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQTFCQUM7ZUFBQUE7O1FBaEJBQztlQUFBQTs7UUFFQUM7ZUFBQUE7O1FBMEJBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQUVBQztlQUFBQTs7UUFaQUM7ZUFBQUE7O1FBc0NBQztlQUFBQTs7UUFaQUM7ZUFBQUE7O1FBNEJBQztlQUFBQTs7UUFvQ0FDO2VBQUFBOztRQWxDQUM7ZUFBQUE7O1FBNUJBQztlQUFBQTs7UUFzREFDO2VBQUFBOztRQWxFQUM7ZUFBQUE7O1FBMENBQztlQUFBQTs7UUFsREFDO2VBQUFBOztRQThEQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQTVEQUM7ZUFBQUE7O1FBZ0RBQztlQUFBQTs7UUFoQ0FDO2VBQUFBOztRQTFDQUM7ZUFBQUE7O1FBb0ZBQztlQUFBQTs7UUF4Q0FDO2VBQUFBOztRQTFDQUM7ZUFBQUE7O1FBa0VBQztlQUFB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
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvbm9kZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5cbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi4vZG9tL3R5cGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tVHlwZU5vZGUodHlwZU5vZGUpIHtcbiAgbGV0IHR5cGU7XG5cbiAgaWYgKHR5cGVOb2RlID09PSBudWxsKSB7XG4gICAgdHlwZSA9IG9iamVjdFR5cGU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBUeXBlIH0gPSBkb20sXG4gICAgICAgICAgdHlwZU5hbWUgPSB0eXBlTm9kZS5nZXRUeXBlTmFtZSgpLFxuICAgICAgICAgIG5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIHN0cmluZyA9IG5hbWUsICAvLy9cbiAgICAgICAgICBzdXBlclR5cGVzID0gbnVsbCxcbiAgICAgICAgICBwcm9wZXJ0aWVzID0gbnVsbCxcbiAgICAgICAgICBwcm92aXNpb25hbCA9IG51bGw7XG5cbiAgICB0eXBlID0gbmV3IFR5cGUoc3RyaW5nLCBuYW1lLCBzdXBlclR5cGVzLCBwcm9wZXJ0aWVzLCBwcm92aXNpb25hbCk7XG4gIH1cblxuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1Gcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBUZXJtIH0gPSBkb20sXG4gICAgICAgIG5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICBzdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhub2RlKSxcbiAgICAgICAgdHlwZSA9IG51bGwsXG4gICAgICAgIHRlcm0gPSBuZXcgVGVybShzdHJpbmcsIG5vZGUsIHR5cGUpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZG9tLFxuICAgICAgICBub2RlID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgICAgIHRva2VucyA9IGNvbnRleHQubm9kZUFzVG9rZW5zKG5vZGUpLFxuICAgICAgICBzdHJpbmcgPSBjb250ZXh0LnRva2Vuc0FzU3RyaW5nKHRva2VucyksXG4gICAgICAgIHN0YXRlbWVudCA9IG5ldyBTdGF0ZW1lbnQoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwidHlwZUZyb21UeXBlTm9kZSIsInR5cGVOb2RlIiwidHlwZSIsIm9iamVjdFR5cGUiLCJUeXBlIiwiZG9tIiwidHlwZU5hbWUiLCJnZXRUeXBlTmFtZSIsIm5hbWUiLCJzdHJpbmciLCJzdXBlclR5cGVzIiwicHJvcGVydGllcyIsInByb3Zpc2lvbmFsIiwidGVybU5vZGUiLCJjb250ZXh0IiwiVGVybSIsIm5vZGUiLCJub2RlQXNTdHJpbmciLCJ0ZXJtIiwic3RhdGVtZW50Tm9kZSIsIlN0YXRlbWVudCIsInRva2VucyIsIm5vZGVBc1Rva2VucyIsInRva2Vuc0FzU3RyaW5nIiwic3RhdGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFvQ2dCQTtlQUFBQTs7UUFWQUM7ZUFBQUE7O1FBcEJBQztlQUFBQTs7OzBEQUpBO29CQUVXOzs7Ozs7QUFFcEIsU0FBU0EsaUJBQWlCQyxRQUFRO0lBQ3ZDLElBQUlDO0lBRUosSUFBSUQsYUFBYSxNQUFNO1FBQ3JCQyxPQUFPQyxnQkFBVTtJQUNuQixPQUFPO1FBQ0wsSUFBTSxBQUFFQyxPQUFTQyxZQUFHLENBQVpELE1BQ0ZFLFdBQVdMLFNBQVNNLFdBQVcsSUFDL0JDLE9BQU9GLFVBQ1BHLFNBQVNELE1BQ1RFLGFBQWEsTUFDYkMsYUFBYSxNQUNiQyxjQUFjO1FBRXBCVixPQUFPLElBQUlFLEtBQUtLLFFBQVFELE1BQU1FLFlBQVlDLFlBQVlDO0lBQ3hEO0lBRUEsT0FBT1Y7QUFDVDtBQUVPLFNBQVNILGlCQUFpQmMsUUFBUSxFQUFFQyxPQUFPO0lBQ2hELElBQU0sQUFBRUMsT0FBU1YsWUFBRyxDQUFaVSxNQUNGQyxPQUFPSCxVQUNQSixTQUFTSyxRQUFRRyxZQUFZLENBQUNELE9BQzlCZCxPQUFPLE1BQ1BnQixPQUFPLElBQUlILEtBQUtOLFFBQVFPLE1BQU1kO0lBRXBDLE9BQU9nQjtBQUNUO0FBRU8sU0FBU3BCLDJCQUEyQnFCLGFBQWEsRUFBRUwsT0FBTztJQUMvRCxJQUFNLEFBQUVNLFlBQWNmLFlBQUcsQ0FBakJlLFdBQ0ZKLE9BQU9HLGVBQ1BFLFNBQVNQLFFBQVFRLFlBQVksQ0FBQ04sT0FDOUJQLFNBQVNLLFFBQVFTLGNBQWMsQ0FBQ0YsU0FDaENHLFlBQVksSUFBSUosVUFBVVgsUUFBUU8sTUFBTUs7SUFFOUMsT0FBT0c7QUFDVCJ9
@@ -8,12 +8,21 @@ Object.defineProperty(exports, "subproofStringFromSubproofNode", {
8
8
  return subproofStringFromSubproofNode;
9
9
  }
10
10
  });
11
- var _query = require("./query");
12
11
  var _string = require("./string");
13
- var lastStepStatementNodeQuery = (0, _query.nodeQuery)("/subproof/subDerivation/step[-1]/statement"), suppositionStatementNodesQuery = (0, _query.nodesQuery)("/subproof/supposition/statement");
14
12
  function subproofStringFromSubproofNode(subproofNode, fileContext) {
15
- var tokens = fileContext.getTokens(), suppositionStatementNodes = suppositionStatementNodesQuery(subproofNode), lastStepStatementNode = lastStepStatementNodeQuery(subproofNode), suppositionStatementsString = (0, _string.nodesAsString)(suppositionStatementNodes, tokens), lastStepStatementString = (0, _string.nodeAsString)(lastStepStatementNode, tokens), subproofString = "[".concat(suppositionStatementsString, "]...").concat(lastStepStatementString);
13
+ var tokens = fileContext.getTokens(), suppositionStatementNodes = suppositionStatementNodesFromSubproofNode(subproofNode), lastStepStatementNode = lastStepStatementNodeFromSubproofNode(subproofNode), suppositionStatementsString = (0, _string.nodesAsString)(suppositionStatementNodes, tokens), lastStepStatementString = (0, _string.nodeAsString)(lastStepStatementNode, tokens), subproofString = "[".concat(suppositionStatementsString, "]...").concat(lastStepStatementString);
16
14
  return subproofString;
17
15
  }
16
+ function lastStepStatementNodeFromSubproofNode(subproofNode) {
17
+ var lastStepNode = subproofNode.getLastStepNode(), lastStepNodeStatementNode = lastStepNode.getStatementNode(), lastStepStatementNode = lastStepNodeStatementNode; ///
18
+ return lastStepStatementNode;
19
+ }
20
+ function suppositionStatementNodesFromSubproofNode(subproofNode) {
21
+ var suppositionNodes = subproofNode.getSuppositionNodes(), suppositionNodeStatementNodes = suppositionNodes.map(function(suppositionNode) {
22
+ var suppositionNodeStatementNode = suppositionNode.getStatementNode();
23
+ return suppositionNodeStatementNode;
24
+ }), suppositionStatementNodes = suppositionNodeStatementNodes; ///
25
+ return suppositionStatementNodes;
26
+ }
18
27
 
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3VicHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcsIG5vZGVzQXNTdHJpbmcgfSBmcm9tIFwiLi9zdHJpbmdcIjtcblxuY29uc3QgbGFzdFN0ZXBTdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3VicHJvb2Yvc3ViRGVyaXZhdGlvbi9zdGVwWy0xXS9zdGF0ZW1lbnRcIiksXG4gICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3N1YnByb29mL3N1cHBvc2l0aW9uL3N0YXRlbWVudFwiKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mU3RyaW5nRnJvbVN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGNvbnN0IHRva2VucyA9IGZpbGVDb250ZXh0LmdldFRva2VucygpLFxuICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzID0gc3VwcG9zaXRpb25TdGF0ZW1lbnROb2Rlc1F1ZXJ5KHN1YnByb29mTm9kZSksXG4gICAgICAgIGxhc3RTdGVwU3RhdGVtZW50Tm9kZSA9IGxhc3RTdGVwU3RhdGVtZW50Tm9kZVF1ZXJ5KHN1YnByb29mTm9kZSksXG4gICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50c1N0cmluZyA9IG5vZGVzQXNTdHJpbmcoc3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlcywgdG9rZW5zKSxcbiAgICAgICAgbGFzdFN0ZXBTdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcobGFzdFN0ZXBTdGF0ZW1lbnROb2RlLCB0b2tlbnMpLFxuICAgICAgICBzdWJwcm9vZlN0cmluZyA9IGBbJHtzdXBwb3NpdGlvblN0YXRlbWVudHNTdHJpbmd9XS4uLiR7bGFzdFN0ZXBTdGF0ZW1lbnRTdHJpbmd9YDtcblxuICByZXR1cm4gc3VicHJvb2ZTdHJpbmc7XG59XG4iXSwibmFtZXMiOlsic3VicHJvb2ZTdHJpbmdGcm9tU3VicHJvb2ZOb2RlIiwibGFzdFN0ZXBTdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5Iiwic3VicHJvb2ZOb2RlIiwiZmlsZUNvbnRleHQiLCJ0b2tlbnMiLCJnZXRUb2tlbnMiLCJzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzIiwibGFzdFN0ZXBTdGF0ZW1lbnROb2RlIiwic3VwcG9zaXRpb25TdGF0ZW1lbnRzU3RyaW5nIiwibm9kZXNBc1N0cmluZyIsImxhc3RTdGVwU3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwic3VicHJvb2ZTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFnQkE7OztlQUFBQTs7O3FCQU5zQjtzQkFDTTtBQUU1QyxJQUFNQyw2QkFBNkJDLElBQUFBLGdCQUFTLEVBQUMsK0NBQ3ZDQyxpQ0FBaUNDLElBQUFBLGlCQUFVLEVBQUM7QUFFM0MsU0FBU0osK0JBQStCSyxZQUFZLEVBQUVDLFdBQVc7SUFDdEUsSUFBTUMsU0FBU0QsWUFBWUUsU0FBUyxJQUM5QkMsNEJBQTRCTiwrQkFBK0JFLGVBQzNESyx3QkFBd0JULDJCQUEyQkksZUFDbkRNLDhCQUE4QkMsSUFBQUEscUJBQWEsRUFBQ0gsMkJBQTJCRixTQUN2RU0sMEJBQTBCQyxJQUFBQSxvQkFBWSxFQUFDSix1QkFBdUJILFNBQzlEUSxpQkFBaUIsQUFBQyxJQUFxQ0YsT0FBbENGLDZCQUE0QixRQUE4QixPQUF4QkU7SUFFN0QsT0FBT0U7QUFDVCJ9
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3VicHJvb2YuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVBc1N0cmluZywgbm9kZXNBc1N0cmluZyB9IGZyb20gXCIuL3N0cmluZ1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3VicHJvb2ZTdHJpbmdGcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgY29uc3QgdG9rZW5zID0gZmlsZUNvbnRleHQuZ2V0VG9rZW5zKCksXG4gICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXMgPSBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzRnJvbVN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUpLFxuICAgICAgICBsYXN0U3RlcFN0YXRlbWVudE5vZGUgPSBsYXN0U3RlcFN0YXRlbWVudE5vZGVGcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSksXG4gICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50c1N0cmluZyA9IG5vZGVzQXNTdHJpbmcoc3VwcG9zaXRpb25TdGF0ZW1lbnROb2RlcywgdG9rZW5zKSxcbiAgICAgICAgbGFzdFN0ZXBTdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcobGFzdFN0ZXBTdGF0ZW1lbnROb2RlLCB0b2tlbnMpLFxuICAgICAgICBzdWJwcm9vZlN0cmluZyA9IGBbJHtzdXBwb3NpdGlvblN0YXRlbWVudHNTdHJpbmd9XS4uLiR7bGFzdFN0ZXBTdGF0ZW1lbnRTdHJpbmd9YDtcblxuICByZXR1cm4gc3VicHJvb2ZTdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGxhc3RTdGVwU3RhdGVtZW50Tm9kZUZyb21TdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlKSB7XG4gIGNvbnN0IGxhc3RTdGVwTm9kZSA9IHN1YnByb29mTm9kZS5nZXRMYXN0U3RlcE5vZGUoKSxcbiAgICAgICAgbGFzdFN0ZXBOb2RlU3RhdGVtZW50Tm9kZSA9IGxhc3RTdGVwTm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIGxhc3RTdGVwU3RhdGVtZW50Tm9kZSA9IGxhc3RTdGVwTm9kZVN0YXRlbWVudE5vZGU7ICAvLy9cblxuICByZXR1cm4gbGFzdFN0ZXBTdGF0ZW1lbnROb2RlO1xufVxuXG5mdW5jdGlvbiBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzRnJvbVN1YnByb29mTm9kZShzdWJwcm9vZk5vZGUpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25Ob2RlcyA9IHN1YnByb29mTm9kZS5nZXRTdXBwb3NpdGlvbk5vZGVzKCksXG4gICAgICAgIHN1cHBvc2l0aW9uTm9kZVN0YXRlbWVudE5vZGVzID0gc3VwcG9zaXRpb25Ob2Rlcy5tYXAoKHN1cHBvc2l0aW9uTm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1cHBvc2l0aW9uTm9kZVN0YXRlbWVudE5vZGUgPSBzdXBwb3NpdGlvbk5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgICAgICAgcmV0dXJuIHN1cHBvc2l0aW9uTm9kZVN0YXRlbWVudE5vZGU7XG4gICAgICAgIH0pLFxuICAgICAgICBzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzID0gc3VwcG9zaXRpb25Ob2RlU3RhdGVtZW50Tm9kZXM7ICAvLy9cblxuICByZXR1cm4gc3VwcG9zaXRpb25TdGF0ZW1lbnROb2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZk5vZGUiLCJzdWJwcm9vZk5vZGUiLCJmaWxlQ29udGV4dCIsInRva2VucyIsImdldFRva2VucyIsInN1cHBvc2l0aW9uU3RhdGVtZW50Tm9kZXMiLCJzdXBwb3NpdGlvblN0YXRlbWVudE5vZGVzRnJvbVN1YnByb29mTm9kZSIsImxhc3RTdGVwU3RhdGVtZW50Tm9kZSIsImxhc3RTdGVwU3RhdGVtZW50Tm9kZUZyb21TdWJwcm9vZk5vZGUiLCJzdXBwb3NpdGlvblN0YXRlbWVudHNTdHJpbmciLCJub2Rlc0FzU3RyaW5nIiwibGFzdFN0ZXBTdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJzdWJwcm9vZlN0cmluZyIsImxhc3RTdGVwTm9kZSIsImdldExhc3RTdGVwTm9kZSIsImxhc3RTdGVwTm9kZVN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwic3VwcG9zaXRpb25Ob2RlcyIsImdldFN1cHBvc2l0aW9uTm9kZXMiLCJzdXBwb3NpdGlvbk5vZGVTdGF0ZW1lbnROb2RlcyIsIm1hcCIsInN1cHBvc2l0aW9uTm9kZSIsInN1cHBvc2l0aW9uTm9kZVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQUlnQkE7OztlQUFBQTs7O3NCQUY0QjtBQUVyQyxTQUFTQSwrQkFBK0JDLFlBQVksRUFBRUMsV0FBVztJQUN0RSxJQUFNQyxTQUFTRCxZQUFZRSxTQUFTLElBQzlCQyw0QkFBNEJDLDBDQUEwQ0wsZUFDdEVNLHdCQUF3QkMsc0NBQXNDUCxlQUM5RFEsOEJBQThCQyxJQUFBQSxxQkFBYSxFQUFDTCwyQkFBMkJGLFNBQ3ZFUSwwQkFBMEJDLElBQUFBLG9CQUFZLEVBQUNMLHVCQUF1QkosU0FDOURVLGlCQUFpQixBQUFDLElBQXFDRixPQUFsQ0YsNkJBQTRCLFFBQThCLE9BQXhCRTtJQUU3RCxPQUFPRTtBQUNUO0FBRUEsU0FBU0wsc0NBQXNDUCxZQUFZO0lBQ3pELElBQU1hLGVBQWViLGFBQWFjLGVBQWUsSUFDM0NDLDRCQUE0QkYsYUFBYUcsZ0JBQWdCLElBQ3pEVix3QkFBd0JTLDJCQUE0QixHQUFHO0lBRTdELE9BQU9UO0FBQ1Q7QUFFQSxTQUFTRCwwQ0FBMENMLFlBQVk7SUFDN0QsSUFBTWlCLG1CQUFtQmpCLGFBQWFrQixtQkFBbUIsSUFDbkRDLGdDQUFnQ0YsaUJBQWlCRyxHQUFHLENBQUMsU0FBQ0M7UUFDcEQsSUFBTUMsK0JBQStCRCxnQkFBZ0JMLGdCQUFnQjtRQUVyRSxPQUFPTTtJQUNULElBQ0FsQiw0QkFBNEJlLCtCQUFnQyxHQUFHO0lBRXJFLE9BQU9mO0FBQ1QifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.192",
4
+ "version": "1.0.198",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -127,9 +127,9 @@ export default class FileContext {
127
127
  });
128
128
 
129
129
  this.metatheorems.forEach((metatheorem) => {
130
- const metatheoremLabels = metatheorem.getLabels();
130
+ const metatheoremLabel = metatheorem.getLabel();
131
131
 
132
- push(labels, metatheoremLabels);
132
+ labels.push(metatheoremLabel);
133
133
  });
134
134
 
135
135
  if (includeRelease) {
@@ -3,14 +3,9 @@
3
3
  import dom from "../../dom";
4
4
  import LocalContext from "../../context/local";
5
5
 
6
- import { MISSING } from "../../constants";
7
6
  import { domAssigned } from "../../dom";
8
- import { nodeQuery, nodesQuery } from "../../utilities/query";
9
7
  import { termFromTermAndSubstitutions, frameFromFrameAndSubstitutions, statementFromStatementAndSubstitutions } from "../../utilities/substitutions";
10
8
 
11
- const terminalNodesQuery = nodesQuery("/containedAssertion/@*"),
12
- containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion");
13
-
14
9
  export default domAssigned(class ContainedAssertion {
15
10
  constructor(string, node, tokens, term, frame, negated, statement) {
16
11
  this.string = string;
@@ -87,10 +82,9 @@ export default domAssigned(class ContainedAssertion {
87
82
  let termVerified = false;
88
83
 
89
84
  if (this.term !== null) {
90
- const termString = this.term.getString(),
91
- containedAssertionString = this.string; ///
85
+ const termString = this.term.getString();
92
86
 
93
- context.trace(`Verifying the '${containedAssertionString}' contained assertion's '${termString}' term...`);
87
+ context.trace(`Verifying the '${termString}' term...`);
94
88
 
95
89
  const termSimple = this.term.isSimple();
96
90
 
@@ -104,7 +98,7 @@ export default domAssigned(class ContainedAssertion {
104
98
  });
105
99
 
106
100
  if (termVerified) {
107
- context.debug(`...verified the '${containedAssertionString}' contained assertion's '${termString}' term.`);
101
+ context.debug(`...verified the '${termString}' term.`);
108
102
  }
109
103
  }
110
104
  }
@@ -116,10 +110,9 @@ export default domAssigned(class ContainedAssertion {
116
110
  let frameVerified = false;
117
111
 
118
112
  if (this.frame !== null) {
119
- const frameString = this.frame.getString(),
120
- containedAssertionString = this.string; ///
113
+ const frameString = this.frame.getString();
121
114
 
122
- context.trace(`Verifying the '${containedAssertionString}' contained assertion's '${frameString}' frame...`);
115
+ context.trace(`Verifying the '${frameString}' frame...`);
123
116
 
124
117
  const frameSimple = this.frame.isSimple();
125
118
 
@@ -133,7 +126,7 @@ export default domAssigned(class ContainedAssertion {
133
126
  frameVerified = this.frame.verify(assignments, stated, context);
134
127
 
135
128
  if (frameVerified) {
136
- context.debug(`...verified the '${containedAssertionString}' contained assertion's '${frameString}' frame.`);
129
+ context.debug(`...verified the '${frameString}' frame.`);
137
130
  }
138
131
  }
139
132
  }
@@ -145,10 +138,9 @@ export default domAssigned(class ContainedAssertion {
145
138
  let statementVerified = false;
146
139
 
147
140
  if (this.statement !== null) {
148
- const statementString = this.statement.getString(),
149
- containedAssertionString = this.string; ///
141
+ const statementString = this.statement.getString();
150
142
 
151
- context.trace(`Verifying the '${containedAssertionString}' contained assertion's '${statementString}' statement...`);
143
+ context.trace(`Verifying the '${statementString}' statement...`);
152
144
 
153
145
  stated = true; ///
154
146
 
@@ -157,7 +149,7 @@ export default domAssigned(class ContainedAssertion {
157
149
  statementVerified = this.statement.verify(assignments, stated, context);
158
150
 
159
151
  if (statementVerified) {
160
- context.debug(`...verified the '${containedAssertionString}' contained assertion's '${statementString}' statement.`);
152
+ context.debug(`...verified the '${statementString}' statement.`);
161
153
  }
162
154
  }
163
155
 
@@ -226,17 +218,17 @@ export default domAssigned(class ContainedAssertion {
226
218
  static fromStatementNode(statementNode, context) {
227
219
  let containedAssertion = null;
228
220
 
229
- const containedAssertionNode = containedAssertionNodeQuery(statementNode);
221
+ const containedAssertionNode = statementNode.getContainedAssertionNode();
230
222
 
231
223
  if (containedAssertionNode !== null) {
232
224
  const { Term, Frame, Statement } = dom,
233
225
  node = containedAssertionNode, ///
234
226
  string = context.nodeAsString(node),
235
227
  tokens = context.nodeAsTokens(node),
228
+ negated = containedAssertionNode.isNegated(),
236
229
  term = Term.fromContainedAssertionNode(containedAssertionNode, context),
237
230
  frame = Frame.fromContainedAssertionNode(containedAssertionNode, context),
238
- statement = Statement.fromContainedAssertionNode(containedAssertionNode, context),
239
- negated = isNegated(containedAssertionNode); ///
231
+ statement = Statement.fromContainedAssertionNode(containedAssertionNode, context);
240
232
 
241
233
  containedAssertion = new ContainedAssertion(string, node, tokens, term, frame, negated, statement);
242
234
  }
@@ -245,20 +237,6 @@ export default domAssigned(class ContainedAssertion {
245
237
  }
246
238
  });
247
239
 
248
- function isNegated(definedAssertionNode) {
249
- const terminalNodes = terminalNodesQuery(definedAssertionNode),
250
- negated = terminalNodes.some((terminalNode) => { ///
251
- const content = terminalNode.getContent(),
252
- contentMessing = (content === MISSING);
253
-
254
- if (contentMessing) {
255
- return true;
256
- }
257
- });
258
-
259
- return negated;
260
- }
261
-
262
240
  function verifyWhenDerived(term, frame, statement, negated, context) {
263
241
  let verifiedWhenDerived = false;
264
242
 
@@ -3,14 +3,9 @@
3
3
  import dom from "../../dom";
4
4
  import LocalContext from "../../context/local";
5
5
 
6
- import { UNDEFINED } from "../../constants";
7
6
  import { domAssigned } from "../../dom";
8
- import { nodeQuery, nodesQuery } from "../../utilities/query";
9
7
  import { termFromTermAndSubstitutions, frameFromFrameAndSubstitutions } from "../../utilities/substitutions";
10
8
 
11
- const terminalNodesQuery = nodesQuery("/definedAssertion/@*"),
12
- definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion");
13
-
14
9
  export default domAssigned(class DefinedAssertion {
15
10
  constructor(string, node, tokens, term, frame, negated) {
16
11
  this.string = string;
@@ -81,10 +76,9 @@ export default domAssigned(class DefinedAssertion {
81
76
  let termVerified = false;
82
77
 
83
78
  if (this.term !== null) {
84
- const termString = this.term.getString(),
85
- definedAssertionString = this.string; ///
79
+ const termString = this.term.getString(); ///
86
80
 
87
- context.trace(`Verifying the '${definedAssertionString}' defined assertion's '${termString}' term...`);
81
+ context.trace(`Verifying the '${termString}' term...`);
88
82
 
89
83
  const termSimple = this.term.isSimple();
90
84
 
@@ -98,7 +92,7 @@ export default domAssigned(class DefinedAssertion {
98
92
  });
99
93
 
100
94
  if (termVerified) {
101
- context.debug(`...verified the '${definedAssertionString}' defined assertion's '${termString}' term.`);
95
+ context.debug(`...verified the '${termString}' term.`);
102
96
  }
103
97
  }
104
98
  }
@@ -110,10 +104,9 @@ export default domAssigned(class DefinedAssertion {
110
104
  let frameVerified = false;
111
105
 
112
106
  if (this.frame !== null) {
113
- const frameString = this.frame.getString(),
114
- definedAssertionString = this.string; ///
107
+ const frameString = this.frame.getString(); ///
115
108
 
116
- context.trace(`Verifying the '${definedAssertionString}' defined assertion's '${frameString}' frame...`);
109
+ context.trace(`Verifying the '${frameString}' frame...`);
117
110
 
118
111
  const frameSimple = this.frame.isSimple();
119
112
 
@@ -127,7 +120,7 @@ export default domAssigned(class DefinedAssertion {
127
120
  frameVerified = this.frame.verify(assignments, stated, context);
128
121
 
129
122
  if (frameVerified) {
130
- context.debug(`...verified the '${definedAssertionString}' defined assertion's '${frameString}' frame.`);
123
+ context.debug(`...verified the '${frameString}' frame.`);
131
124
  }
132
125
  }
133
126
  }
@@ -196,16 +189,16 @@ export default domAssigned(class DefinedAssertion {
196
189
  static fromStatementNode(statementNode, context) {
197
190
  let definedAssertion = null;
198
191
 
199
- const definedAssertionNode = definedAssertionNodeQuery(statementNode);
192
+ const definedAssertionNode = statementNode.getDefinedAssertionNode();
200
193
 
201
194
  if (definedAssertionNode !== null) {
202
195
  const { Term, Frame } = dom,
203
196
  node = definedAssertionNode, ///
204
197
  string = context.nodeAsString(node),
205
198
  tokens = context.nodeAsTokens(node),
199
+ negated = definedAssertionNode.isNegated(),
206
200
  term = Term.fromDefinedAssertionNode(definedAssertionNode, context),
207
- frame = Frame.fromDefinedAssertionNode(definedAssertionNode, context),
208
- negated = isNegated(definedAssertionNode);
201
+ frame = Frame.fromDefinedAssertionNode(definedAssertionNode, context);
209
202
 
210
203
  definedAssertion = new DefinedAssertion(string, node, tokens, term, frame, negated);
211
204
  }
@@ -214,20 +207,6 @@ export default domAssigned(class DefinedAssertion {
214
207
  }
215
208
  });
216
209
 
217
- function isNegated(definedAssertionNode) {
218
- const terminalNodes = terminalNodesQuery(definedAssertionNode),
219
- negated = terminalNodes.some((terminalNode) => { ///
220
- const content = terminalNode.getContent(),
221
- contentUndefined = (content === UNDEFINED);
222
-
223
- if (contentUndefined) {
224
- return true;
225
- }
226
- });
227
-
228
- return negated;
229
- }
230
-
231
210
  function verifyWhenDerived(term, frame, negated, context) {
232
211
  let verifiedWhenDerived = false;
233
212