occam-verify-cli 0.0.913 → 0.0.915
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/assignment/frameAssertion.js +4 -4
- package/lib/axiomLemmaTheoremConjecture.js +4 -3
- package/lib/conclusion.js +5 -5
- package/lib/context/file.js +3 -3
- package/lib/context/local/intrinsicLevel.js +326 -0
- package/lib/context/local/metaLevel.js +290 -0
- package/lib/metaConsequent.js +4 -4
- package/lib/metaLemmaMetatheorem.js +11 -11
- package/lib/metaSupposition.js +7 -7
- package/lib/metavariable.js +5 -5
- package/lib/premise.js +12 -12
- package/lib/rule.js +12 -12
- package/lib/verifier/node/metaLevel.js +214 -0
- package/lib/verifier/node/statementAsCombinator.js +9 -9
- package/lib/verifier/node/termAsConstructor.js +7 -7
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/conclusion.js +7 -7
- package/lib/verify/conjecture.js +3 -3
- package/lib/verify/containedAssertion.js +23 -4
- package/lib/verify/declaration.js +15 -15
- package/lib/verify/definedAssertion.js +18 -4
- package/lib/verify/derivation.js +3 -3
- package/lib/verify/frame.js +16 -16
- package/lib/verify/frameAssertion.js +33 -33
- package/lib/verify/lemma.js +3 -3
- package/lib/verify/metaConsequent.js +7 -7
- package/lib/verify/metaDerivation.js +3 -3
- package/lib/verify/metaLemma.js +6 -6
- package/lib/verify/metaSubDerivation.js +3 -3
- package/lib/verify/metaSubproof.js +7 -6
- package/lib/verify/metaSupposition.js +9 -9
- package/lib/verify/metaSuppositions.js +3 -3
- package/lib/verify/metaproof.js +7 -6
- package/lib/verify/metaproofStep.js +23 -23
- package/lib/verify/metastatement/qualified.js +22 -22
- package/lib/verify/metastatement/unqualified.js +7 -7
- package/lib/verify/metastatement.js +26 -26
- package/lib/verify/metatheorem.js +6 -6
- package/lib/verify/metavariable.js +6 -6
- package/lib/verify/premise.js +9 -9
- package/lib/verify/premises.js +3 -3
- package/lib/verify/proof.js +4 -3
- package/lib/verify/rule.js +6 -6
- package/lib/verify/ruleDerivation.js +3 -3
- package/lib/verify/ruleProof.js +7 -6
- package/lib/verify/ruleProofStep.js +26 -25
- package/lib/verify/ruleSubDerivation.js +3 -3
- package/lib/verify/ruleSubproof.js +7 -6
- package/lib/verify/statement.js +4 -17
- package/lib/verify/subDerivation.js +3 -3
- package/lib/verify/subproof.js +4 -3
- package/lib/verify/termAsConstructor.js +3 -3
- package/lib/verify/theorem.js +4 -4
- package/package.json +2 -2
- package/src/assignment/frameAssertion.js +5 -5
- package/src/axiomLemmaTheoremConjecture.js +4 -2
- package/src/conclusion.js +7 -7
- package/src/context/file.js +2 -2
- package/src/context/{local.js → local/intrinsicLevel.js} +25 -20
- package/src/context/{localMeta.js → local/metaLevel.js} +21 -16
- package/src/metaConsequent.js +7 -7
- package/src/metaLemmaMetatheorem.js +11 -11
- package/src/metaSupposition.js +13 -13
- package/src/metavariable.js +6 -7
- package/src/premise.js +26 -26
- package/src/rule.js +12 -12
- package/src/verifier/node/{metastatement.js → metaLevel.js} +19 -21
- package/src/verifier/node/statementAsCombinator.js +8 -8
- package/src/verifier/node/termAsConstructor.js +6 -6
- package/src/verify/axiom.js +4 -3
- package/src/verify/conclusion.js +5 -6
- package/src/verify/conjecture.js +4 -3
- package/src/verify/containedAssertion.js +24 -3
- package/src/verify/declaration.js +15 -15
- package/src/verify/definedAssertion.js +23 -3
- package/src/verify/derivation.js +2 -2
- package/src/verify/frame.js +15 -15
- package/src/verify/frameAssertion.js +33 -33
- package/src/verify/lemma.js +4 -3
- package/src/verify/metaConsequent.js +5 -6
- package/src/verify/metaDerivation.js +2 -2
- package/src/verify/metaLemma.js +8 -7
- package/src/verify/metaSubDerivation.js +2 -2
- package/src/verify/metaSubproof.js +7 -5
- package/src/verify/metaSupposition.js +7 -8
- package/src/verify/metaSuppositions.js +2 -2
- package/src/verify/metaproof.js +7 -5
- package/src/verify/metaproofStep.js +21 -25
- package/src/verify/metastatement/qualified.js +24 -24
- package/src/verify/metastatement/unqualified.js +6 -6
- package/src/verify/metastatement.js +25 -25
- package/src/verify/metatheorem.js +8 -7
- package/src/verify/metavariable.js +5 -5
- package/src/verify/premise.js +7 -8
- package/src/verify/premises.js +2 -2
- package/src/verify/proof.js +4 -2
- package/src/verify/rule.js +8 -7
- package/src/verify/ruleDerivation.js +2 -2
- package/src/verify/ruleProof.js +7 -5
- package/src/verify/ruleProofStep.js +22 -25
- package/src/verify/ruleSubDerivation.js +2 -2
- package/src/verify/ruleSubproof.js +7 -5
- package/src/verify/statement.js +2 -22
- package/src/verify/subDerivation.js +2 -2
- package/src/verify/subproof.js +4 -2
- package/src/verify/termAsConstructor.js +4 -3
- package/src/verify/theorem.js +5 -4
- package/lib/context/local.js +0 -320
- package/lib/context/localMeta.js +0 -284
- package/lib/verifier/node/metastatement.js +0 -214
package/lib/context/localMeta.js
DELETED
|
@@ -1,284 +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 _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
|
|
12
|
-
var _array = require("../utilities/array");
|
|
13
|
-
function _array_like_to_array(arr, len) {
|
|
14
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
15
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
16
|
-
return arr2;
|
|
17
|
-
}
|
|
18
|
-
function _array_without_holes(arr) {
|
|
19
|
-
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
20
|
-
}
|
|
21
|
-
function _assert_this_initialized(self) {
|
|
22
|
-
if (self === void 0) {
|
|
23
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
24
|
-
}
|
|
25
|
-
return self;
|
|
26
|
-
}
|
|
27
|
-
function _class_call_check(instance, Constructor) {
|
|
28
|
-
if (!(instance instanceof Constructor)) {
|
|
29
|
-
throw new TypeError("Cannot call a class as a function");
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
function _defineProperties(target, props) {
|
|
33
|
-
for(var i = 0; i < props.length; i++){
|
|
34
|
-
var descriptor = props[i];
|
|
35
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
36
|
-
descriptor.configurable = true;
|
|
37
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
38
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
42
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
43
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
44
|
-
return Constructor;
|
|
45
|
-
}
|
|
46
|
-
function _get_prototype_of(o) {
|
|
47
|
-
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
48
|
-
return o.__proto__ || Object.getPrototypeOf(o);
|
|
49
|
-
};
|
|
50
|
-
return _get_prototype_of(o);
|
|
51
|
-
}
|
|
52
|
-
function _inherits(subClass, superClass) {
|
|
53
|
-
if (typeof superClass !== "function" && superClass !== null) {
|
|
54
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
55
|
-
}
|
|
56
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
57
|
-
constructor: {
|
|
58
|
-
value: subClass,
|
|
59
|
-
writable: true,
|
|
60
|
-
configurable: true
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
if (superClass) _set_prototype_of(subClass, superClass);
|
|
64
|
-
}
|
|
65
|
-
function _interop_require_default(obj) {
|
|
66
|
-
return obj && obj.__esModule ? obj : {
|
|
67
|
-
default: obj
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
function _iterable_to_array(iter) {
|
|
71
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
72
|
-
}
|
|
73
|
-
function _non_iterable_spread() {
|
|
74
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
75
|
-
}
|
|
76
|
-
function _possible_constructor_return(self, call) {
|
|
77
|
-
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
78
|
-
return call;
|
|
79
|
-
}
|
|
80
|
-
return _assert_this_initialized(self);
|
|
81
|
-
}
|
|
82
|
-
function _set_prototype_of(o, p) {
|
|
83
|
-
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
84
|
-
o.__proto__ = p;
|
|
85
|
-
return o;
|
|
86
|
-
};
|
|
87
|
-
return _set_prototype_of(o, p);
|
|
88
|
-
}
|
|
89
|
-
function _to_consumable_array(arr) {
|
|
90
|
-
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
91
|
-
}
|
|
92
|
-
function _type_of(obj) {
|
|
93
|
-
"@swc/helpers - typeof";
|
|
94
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
95
|
-
}
|
|
96
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
97
|
-
if (!o) return;
|
|
98
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
99
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
100
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
101
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
102
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
103
|
-
}
|
|
104
|
-
function _is_native_reflect_construct() {
|
|
105
|
-
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
106
|
-
if (Reflect.construct.sham) return false;
|
|
107
|
-
if (typeof Proxy === "function") return true;
|
|
108
|
-
try {
|
|
109
|
-
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
110
|
-
return true;
|
|
111
|
-
} catch (e) {
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
function _create_super(Derived) {
|
|
116
|
-
var hasNativeReflectConstruct = _is_native_reflect_construct();
|
|
117
|
-
return function _createSuperInternal() {
|
|
118
|
-
var Super = _get_prototype_of(Derived), result;
|
|
119
|
-
if (hasNativeReflectConstruct) {
|
|
120
|
-
var NewTarget = _get_prototype_of(this).constructor;
|
|
121
|
-
result = Reflect.construct(Super, arguments, NewTarget);
|
|
122
|
-
} else {
|
|
123
|
-
result = Super.apply(this, arguments);
|
|
124
|
-
}
|
|
125
|
-
return _possible_constructor_return(this, result);
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
var LocalMetaContext = /*#__PURE__*/ function(LocalContext) {
|
|
129
|
-
_inherits(LocalMetaContext, LocalContext);
|
|
130
|
-
var _super = _create_super(LocalMetaContext);
|
|
131
|
-
function LocalMetaContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions) {
|
|
132
|
-
_class_call_check(this, LocalMetaContext);
|
|
133
|
-
var _this;
|
|
134
|
-
_this = _super.call(this, context, variables, proofSteps, equivalences);
|
|
135
|
-
_this.metavariables = metavariables;
|
|
136
|
-
_this.metaproofSteps = metaproofSteps;
|
|
137
|
-
_this.frameAssertions = frameAssertions;
|
|
138
|
-
return _this;
|
|
139
|
-
}
|
|
140
|
-
_create_class(LocalMetaContext, [
|
|
141
|
-
{
|
|
142
|
-
key: "getMetavariables",
|
|
143
|
-
value: function getMetavariables() {
|
|
144
|
-
var metavariables = this.context.getMetavariables();
|
|
145
|
-
metavariables = _to_consumable_array(this.metavariables).concat(_to_consumable_array(metavariables));
|
|
146
|
-
return metavariables;
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
key: "getMetaproofSteps",
|
|
151
|
-
value: function getMetaproofSteps() {
|
|
152
|
-
var metaproofSteps = this.context.getMetaproofSteps();
|
|
153
|
-
metaproofSteps = _to_consumable_array(metaproofSteps).concat(_to_consumable_array(this.metaproofSteps));
|
|
154
|
-
return metaproofSteps;
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
key: "getFrameAssertions",
|
|
159
|
-
value: function getFrameAssertions() {
|
|
160
|
-
var frameAssertions = this.context.getFrameAssertions();
|
|
161
|
-
frameAssertions = _to_consumable_array(this.frameAssertions).concat(_to_consumable_array(frameAssertions));
|
|
162
|
-
return frameAssertions;
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
key: "getLastMetaproofStep",
|
|
167
|
-
value: function getLastMetaproofStep() {
|
|
168
|
-
var lastMetaproofStep = null;
|
|
169
|
-
var metaproofStepsLength = this.metaproofSteps.length;
|
|
170
|
-
if (metaproofStepsLength > 0) {
|
|
171
|
-
lastMetaproofStep = (0, _array.last)(this.metaproofSteps);
|
|
172
|
-
}
|
|
173
|
-
return lastMetaproofStep;
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
key: "addFrameAssertion",
|
|
178
|
-
value: function addFrameAssertion(frameAssertion) {
|
|
179
|
-
var frameAssertionAdded = false;
|
|
180
|
-
var metavariableNode = frameAssertion.getMetavariableNode(), frameAssertionPresent = this.isFrameAssertionPresentByMetavariableNode(metavariableNode);
|
|
181
|
-
if (!frameAssertionPresent) {
|
|
182
|
-
this.frameAssertions.push(frameAssertion);
|
|
183
|
-
frameAssertionAdded = true;
|
|
184
|
-
}
|
|
185
|
-
return frameAssertionAdded;
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
key: "addMetavariable",
|
|
190
|
-
value: function addMetavariable(metavariable) {
|
|
191
|
-
var metavariableAdded = false;
|
|
192
|
-
var node = metavariable.getName(), metavariablePresent = this.metavariables.some(function(metavariable) {
|
|
193
|
-
var metavariableMatchesNode = metavariable.matchNode(node);
|
|
194
|
-
if (metavariableMatchesNode) {
|
|
195
|
-
return true;
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
if (!metavariablePresent) {
|
|
199
|
-
this.metavariables.push(metavariable);
|
|
200
|
-
metavariableAdded = true;
|
|
201
|
-
}
|
|
202
|
-
return metavariableAdded;
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
key: "addMetaproofStep",
|
|
207
|
-
value: function addMetaproofStep(metaproofStep) {
|
|
208
|
-
this.metaproofSteps.push(metaproofStep);
|
|
209
|
-
}
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
key: "matchMetastatementNode",
|
|
213
|
-
value: function matchMetastatementNode(metastatementNode) {
|
|
214
|
-
var metaproofSteps = this.getMetaproofSteps();
|
|
215
|
-
metaproofSteps = (0, _array.reverse)(metaproofSteps); ///
|
|
216
|
-
var matchesMetastatementNode = metaproofSteps.some(function(metaproofStep) {
|
|
217
|
-
var metaproofStepMatchesMetastatementNode = metaproofStep.matchMetastatementNode(metastatementNode);
|
|
218
|
-
if (metaproofStepMatchesMetastatementNode) {
|
|
219
|
-
return true;
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
return matchesMetastatementNode;
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
key: "findMetavariableByMetavariableNode",
|
|
227
|
-
value: function findMetavariableByMetavariableNode(metavariableNode, localMetaContext) {
|
|
228
|
-
var node = metavariableNode, metavariables = this.getMetavariables(), metavariable = metavariables.find(function(metavariable) {
|
|
229
|
-
var matches = metavariable.matchNode(node, localMetaContext);
|
|
230
|
-
if (matches) {
|
|
231
|
-
return true;
|
|
232
|
-
}
|
|
233
|
-
}) || null;
|
|
234
|
-
return metavariable;
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
key: "findFrameAssertionByMetavariableNode",
|
|
239
|
-
value: function findFrameAssertionByMetavariableNode(metavariableNode) {
|
|
240
|
-
var frameAssertions = this.getFrameAssertions(), frameAssertion = frameAssertions.find(function(frameAssertion) {
|
|
241
|
-
var frameAssertionMatchesMetavariableNode = frameAssertion.matchMetavariableNode(metavariableNode);
|
|
242
|
-
if (frameAssertionMatchesMetavariableNode) {
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
}) || null;
|
|
246
|
-
return frameAssertion;
|
|
247
|
-
}
|
|
248
|
-
},
|
|
249
|
-
{
|
|
250
|
-
key: "isMetavariablePresentByMetavariableNode",
|
|
251
|
-
value: function isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext) {
|
|
252
|
-
var metavariable = this.findMetavariableByMetavariableNode(metavariableNode, localMetaContext), metavariablePresent = metavariable !== null;
|
|
253
|
-
return metavariablePresent;
|
|
254
|
-
}
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
key: "isFrameAssertionPresentByMetavariableNode",
|
|
258
|
-
value: function isFrameAssertionPresentByMetavariableNode(metavariableNode) {
|
|
259
|
-
var frameAssertion = this.findFrameAssertionByMetavariableNode(metavariableNode), frameAssertionPresent = frameAssertion !== null;
|
|
260
|
-
return frameAssertionPresent;
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
], [
|
|
264
|
-
{
|
|
265
|
-
key: "fromFileContext",
|
|
266
|
-
value: function fromFileContext(fileContext) {
|
|
267
|
-
var context = fileContext, variables = [], proofSteps = [], equivalences = [], metavariables = [], metaproofSteps = [], frameAssertions = [], localMetaContext = new LocalMetaContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions);
|
|
268
|
-
return localMetaContext;
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
key: "fromLocalMetaContext",
|
|
273
|
-
value: function fromLocalMetaContext(localMetaContext) {
|
|
274
|
-
var context = localMetaContext, variables = [], proofSteps = [], equivalences = [], metavariables = [], metaproofSteps = [], frameAssertions = [];
|
|
275
|
-
localMetaContext = new LocalMetaContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions); ///
|
|
276
|
-
return localMetaContext;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
]);
|
|
280
|
-
return LocalMetaContext;
|
|
281
|
-
}(_local.default);
|
|
282
|
-
var _default = LocalMetaContext;
|
|
283
|
-
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0L2xvY2FsTWV0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IExvY2FsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9sb2NhbFwiO1xuXG5pbXBvcnQgeyBsYXN0LCByZXZlcnNlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuXG5jbGFzcyBMb2NhbE1ldGFDb250ZXh0IGV4dGVuZHMgTG9jYWxDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgdmFyaWFibGVzLCBwcm9vZlN0ZXBzLCBlcXVpdmFsZW5jZXMsIG1ldGF2YXJpYWJsZXMsIG1ldGFwcm9vZlN0ZXBzLCBmcmFtZUFzc2VydGlvbnMpIHtcbiAgICBzdXBlcihjb250ZXh0LCB2YXJpYWJsZXMsIHByb29mU3RlcHMsIGVxdWl2YWxlbmNlcyk7XG5cbiAgICB0aGlzLm1ldGF2YXJpYWJsZXMgPSBtZXRhdmFyaWFibGVzO1xuICAgIHRoaXMubWV0YXByb29mU3RlcHMgPSBtZXRhcHJvb2ZTdGVwcztcbiAgICB0aGlzLmZyYW1lQXNzZXJ0aW9ucyA9IGZyYW1lQXNzZXJ0aW9ucztcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZXMgPSB0aGlzLmNvbnRleHQuZ2V0TWV0YXZhcmlhYmxlcygpO1xuXG4gICAgbWV0YXZhcmlhYmxlcyA9IFsgLy8vXG4gICAgICAuLi50aGlzLm1ldGF2YXJpYWJsZXMsXG4gICAgICAuLi5tZXRhdmFyaWFibGVzXG4gICAgXVxuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG4gIH1cblxuICBnZXRNZXRhcHJvb2ZTdGVwcygpIHtcbiAgICBsZXQgbWV0YXByb29mU3RlcHMgPSB0aGlzLmNvbnRleHQuZ2V0TWV0YXByb29mU3RlcHMoKTtcblxuICAgIG1ldGFwcm9vZlN0ZXBzID0gWyAgLy8vXG4gICAgICAuLi5tZXRhcHJvb2ZTdGVwcyxcbiAgICAgIC4uLnRoaXMubWV0YXByb29mU3RlcHNcbiAgICBdO1xuXG4gICAgcmV0dXJuIG1ldGFwcm9vZlN0ZXBzO1xuICB9XG5cbiAgZ2V0RnJhbWVBc3NlcnRpb25zKCkge1xuICAgIGxldCBmcmFtZUFzc2VydGlvbnMgPSB0aGlzLmNvbnRleHQuZ2V0RnJhbWVBc3NlcnRpb25zKCk7XG5cbiAgICBmcmFtZUFzc2VydGlvbnMgPSBbIC8vL1xuICAgICAgLi4udGhpcy5mcmFtZUFzc2VydGlvbnMsXG4gICAgICAuLi5mcmFtZUFzc2VydGlvbnNcbiAgICBdXG5cbiAgICByZXR1cm4gZnJhbWVBc3NlcnRpb25zO1xuICB9XG5cbiAgZ2V0TGFzdE1ldGFwcm9vZlN0ZXAoKSB7XG4gICAgbGV0IGxhc3RNZXRhcHJvb2ZTdGVwID0gbnVsbDtcblxuICAgIGNvbnN0IG1ldGFwcm9vZlN0ZXBzTGVuZ3RoID0gdGhpcy5tZXRhcHJvb2ZTdGVwcy5sZW5ndGg7XG5cbiAgICBpZiAobWV0YXByb29mU3RlcHNMZW5ndGggPiAwKSB7XG4gICAgICBsYXN0TWV0YXByb29mU3RlcCA9IGxhc3QodGhpcy5tZXRhcHJvb2ZTdGVwcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RNZXRhcHJvb2ZTdGVwO1xuICB9XG5cbiAgYWRkRnJhbWVBc3NlcnRpb24oZnJhbWVBc3NlcnRpb24pIHtcbiAgICBsZXQgZnJhbWVBc3NlcnRpb25BZGRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lQXNzZXJ0aW9uLmdldE1ldGF2YXJpYWJsZU5vZGUoKSxcbiAgICAgICAgICBmcmFtZUFzc2VydGlvblByZXNlbnQgPSB0aGlzLmlzRnJhbWVBc3NlcnRpb25QcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKCFmcmFtZUFzc2VydGlvblByZXNlbnQpIHtcbiAgICAgIHRoaXMuZnJhbWVBc3NlcnRpb25zLnB1c2goZnJhbWVBc3NlcnRpb24pO1xuXG4gICAgICBmcmFtZUFzc2VydGlvbkFkZGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVBc3NlcnRpb25BZGRlZDtcbiAgfVxuXG4gIGFkZE1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlQWRkZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG5vZGUgPSBtZXRhdmFyaWFibGUuZ2V0TmFtZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVByZXNlbnQgPSB0aGlzLm1ldGF2YXJpYWJsZXMuc29tZSgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSA9IG1ldGF2YXJpYWJsZS5tYXRjaE5vZGUobm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVNYXRjaGVzTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIGlmICghbWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgdGhpcy5tZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcblxuICAgICAgbWV0YXZhcmlhYmxlQWRkZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVBZGRlZDtcbiAgfVxuXG4gIGFkZE1ldGFwcm9vZlN0ZXAobWV0YXByb29mU3RlcCkge1xuICAgIHRoaXMubWV0YXByb29mU3RlcHMucHVzaChtZXRhcHJvb2ZTdGVwKTtcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBsZXQgbWV0YXByb29mU3RlcHMgPSB0aGlzLmdldE1ldGFwcm9vZlN0ZXBzKCk7XG5cbiAgICBtZXRhcHJvb2ZTdGVwcyA9IHJldmVyc2UobWV0YXByb29mU3RlcHMpOyAvLy9cblxuICAgIGNvbnN0IG1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFwcm9vZlN0ZXBzLnNvbWUoKG1ldGFwcm9vZlN0ZXApID0+IHtcbiAgICAgIGNvbnN0IG1ldGFwcm9vZlN0ZXBNYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUgPSBtZXRhcHJvb2ZTdGVwLm1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAobWV0YXByb29mU3RlcE1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtYXRjaGVzTWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsTWV0YUNvbnRleHQpIHtcbiAgICBjb25zdCBub2RlID0gbWV0YXZhcmlhYmxlTm9kZSwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZXMgPSB0aGlzLmdldE1ldGF2YXJpYWJsZXMoKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVzLmZpbmQoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hlcyA9IG1ldGF2YXJpYWJsZS5tYXRjaE5vZGUobm9kZSwgbG9jYWxNZXRhQ29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pIHx8IG51bGw7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZmluZEZyYW1lQXNzZXJ0aW9uQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBmcmFtZUFzc2VydGlvbnMgPSB0aGlzLmdldEZyYW1lQXNzZXJ0aW9ucygpLFxuICAgICAgICAgIGZyYW1lQXNzZXJ0aW9uID0gZnJhbWVBc3NlcnRpb25zLmZpbmQoKGZyYW1lQXNzZXJ0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmcmFtZUFzc2VydGlvbk1hdGNoZXNNZXRhdmFyaWFibGVOb2RlID0gZnJhbWVBc3NlcnRpb24ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICAgICAgICBpZiAoZnJhbWVBc3NlcnRpb25NYXRjaGVzTWV0YXZhcmlhYmxlTm9kZSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgcmV0dXJuIGZyYW1lQXNzZXJ0aW9uO1xuICB9XG5cbiAgaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsTWV0YUNvbnRleHQpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmZpbmRNZXRhdmFyaWFibGVCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxNZXRhQ29udGV4dCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IChtZXRhdmFyaWFibGUgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZVByZXNlbnQ7XG4gIH1cblxuICBpc0ZyYW1lQXNzZXJ0aW9uUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgY29uc3QgZnJhbWVBc3NlcnRpb24gPSB0aGlzLmZpbmRGcmFtZUFzc2VydGlvbkJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBmcmFtZUFzc2VydGlvblByZXNlbnQgPSAoZnJhbWVBc3NlcnRpb24gIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIGZyYW1lQXNzZXJ0aW9uUHJlc2VudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRmlsZUNvbnRleHQoZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gZmlsZUNvbnRleHQsICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICBwcm9vZlN0ZXBzID0gW10sXG4gICAgICAgICAgZXF1aXZhbGVuY2VzID0gW10sXG4gICAgICAgICAgbWV0YXZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIG1ldGFwcm9vZlN0ZXBzID0gW10sXG4gICAgICAgICAgZnJhbWVBc3NlcnRpb25zID0gW10sXG4gICAgICAgICAgbG9jYWxNZXRhQ29udGV4dCA9IG5ldyBMb2NhbE1ldGFDb250ZXh0KGNvbnRleHQsIHZhcmlhYmxlcywgcHJvb2ZTdGVwcywgZXF1aXZhbGVuY2VzLCBtZXRhdmFyaWFibGVzLCBtZXRhcHJvb2ZTdGVwcywgZnJhbWVBc3NlcnRpb25zKTtcblxuICAgIHJldHVybiBsb2NhbE1ldGFDb250ZXh0O1xuICB9XG5cbiAgc3RhdGljIGZyb21Mb2NhbE1ldGFDb250ZXh0KGxvY2FsTWV0YUNvbnRleHQpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gbG9jYWxNZXRhQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICAgIHByb29mU3RlcHMgPSBbXSxcbiAgICAgICAgICBlcXVpdmFsZW5jZXMgPSBbXSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgbWV0YXByb29mU3RlcHMgPSBbXSxcbiAgICAgICAgICBmcmFtZUFzc2VydGlvbnMgPSBbXTtcblxuICAgIGxvY2FsTWV0YUNvbnRleHQgPSBuZXcgTG9jYWxNZXRhQ29udGV4dChjb250ZXh0LCB2YXJpYWJsZXMsIHByb29mU3RlcHMsIGVxdWl2YWxlbmNlcywgbWV0YXZhcmlhYmxlcywgbWV0YXByb29mU3RlcHMsIGZyYW1lQXNzZXJ0aW9ucyk7ICAvLy9cblxuICAgIHJldHVybiBsb2NhbE1ldGFDb250ZXh0O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvY2FsTWV0YUNvbnRleHQ7Il0sIm5hbWVzIjpbIkxvY2FsTWV0YUNvbnRleHQiLCJjb250ZXh0IiwidmFyaWFibGVzIiwicHJvb2ZTdGVwcyIsImVxdWl2YWxlbmNlcyIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhcHJvb2ZTdGVwcyIsImZyYW1lQXNzZXJ0aW9ucyIsImdldE1ldGF2YXJpYWJsZXMiLCJnZXRNZXRhcHJvb2ZTdGVwcyIsImdldEZyYW1lQXNzZXJ0aW9ucyIsImdldExhc3RNZXRhcHJvb2ZTdGVwIiwibGFzdE1ldGFwcm9vZlN0ZXAiLCJtZXRhcHJvb2ZTdGVwc0xlbmd0aCIsImxlbmd0aCIsImxhc3QiLCJhZGRGcmFtZUFzc2VydGlvbiIsImZyYW1lQXNzZXJ0aW9uIiwiZnJhbWVBc3NlcnRpb25BZGRlZCIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZnJhbWVBc3NlcnRpb25QcmVzZW50IiwiaXNGcmFtZUFzc2VydGlvblByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJwdXNoIiwiYWRkTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlQWRkZWQiLCJub2RlIiwiZ2V0TmFtZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJzb21lIiwibWV0YXZhcmlhYmxlTWF0Y2hlc05vZGUiLCJtYXRjaE5vZGUiLCJhZGRNZXRhcHJvb2ZTdGVwIiwibWV0YXByb29mU3RlcCIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhc3RhdGVtZW50Tm9kZSIsInJldmVyc2UiLCJtYXRjaGVzTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhcHJvb2ZTdGVwTWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsImxvY2FsTWV0YUNvbnRleHQiLCJmaW5kIiwibWF0Y2hlcyIsImZpbmRGcmFtZUFzc2VydGlvbkJ5TWV0YXZhcmlhYmxlTm9kZSIsImZyYW1lQXNzZXJ0aW9uTWF0Y2hlc01ldGF2YXJpYWJsZU5vZGUiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tRmlsZUNvbnRleHQiLCJmaWxlQ29udGV4dCIsImZyb21Mb2NhbE1ldGFDb250ZXh0IiwiTG9jYWxDb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkF5TEE7OztlQUFBOzs7NERBdkx5QjtxQkFFSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFOUIsSUFBQSxBQUFNQSxpQ0FBRCxBQUFMO2NBQU1BOytCQUFBQTthQUFBQSxpQkFDUUMsT0FBTyxFQUFFQyxTQUFTLEVBQUVDLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLEVBQUVDLGNBQWMsRUFBRUMsZUFBZTtnQ0FEcEdQOztrQ0FFSUMsU0FBU0MsV0FBV0MsWUFBWUM7UUFFdEMsTUFBS0MsYUFBYSxHQUFHQTtRQUNyQixNQUFLQyxjQUFjLEdBQUdBO1FBQ3RCLE1BQUtDLGVBQWUsR0FBR0E7OztrQkFOckJQOztZQVNKUSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSUgsZ0JBQWdCLElBQUksQ0FBQ0osT0FBTyxDQUFDTyxnQkFBZ0I7Z0JBRWpESCxnQkFBZ0IsQUFDZCxxQkFBRyxJQUFJLENBQUNBLGFBQWEsU0FDckIscUJBQUdBO2dCQUdMLE9BQU9BO1lBQ1Q7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBSUgsaUJBQWlCLElBQUksQ0FBQ0wsT0FBTyxDQUFDUSxpQkFBaUI7Z0JBRW5ESCxpQkFBaUIsQUFDZixxQkFBR0EsdUJBQ0gscUJBQUcsSUFBSSxDQUFDQSxjQUFjO2dCQUd4QixPQUFPQTtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUlILGtCQUFrQixJQUFJLENBQUNOLE9BQU8sQ0FBQ1Msa0JBQWtCO2dC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
|
|
@@ -1,214 +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 _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _node = /*#__PURE__*/ _interop_require_default(require("../../verifier/node"));
|
|
12
|
-
var _query = require("../../utilities/query");
|
|
13
|
-
var _verifier = require("../../utilities/verifier");
|
|
14
|
-
var _term = require("../../verify/term");
|
|
15
|
-
var _variable = require("../../verify/variable");
|
|
16
|
-
var _metavariable = require("../../verify/metavariable");
|
|
17
|
-
function _assert_this_initialized(self) {
|
|
18
|
-
if (self === void 0) {
|
|
19
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
20
|
-
}
|
|
21
|
-
return self;
|
|
22
|
-
}
|
|
23
|
-
function _class_call_check(instance, Constructor) {
|
|
24
|
-
if (!(instance instanceof Constructor)) {
|
|
25
|
-
throw new TypeError("Cannot call a class as a function");
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function _defineProperties(target, props) {
|
|
29
|
-
for(var i = 0; i < props.length; i++){
|
|
30
|
-
var descriptor = props[i];
|
|
31
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
32
|
-
descriptor.configurable = true;
|
|
33
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
34
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
38
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
39
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
40
|
-
return Constructor;
|
|
41
|
-
}
|
|
42
|
-
function _get(target, property, receiver) {
|
|
43
|
-
if (typeof Reflect !== "undefined" && Reflect.get) {
|
|
44
|
-
_get = Reflect.get;
|
|
45
|
-
} else {
|
|
46
|
-
_get = function get(target, property, receiver) {
|
|
47
|
-
var base = _super_prop_base(target, property);
|
|
48
|
-
if (!base) return;
|
|
49
|
-
var desc = Object.getOwnPropertyDescriptor(base, property);
|
|
50
|
-
if (desc.get) {
|
|
51
|
-
return desc.get.call(receiver || target);
|
|
52
|
-
}
|
|
53
|
-
return desc.value;
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
return _get(target, property, receiver || target);
|
|
57
|
-
}
|
|
58
|
-
function _get_prototype_of(o) {
|
|
59
|
-
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
60
|
-
return o.__proto__ || Object.getPrototypeOf(o);
|
|
61
|
-
};
|
|
62
|
-
return _get_prototype_of(o);
|
|
63
|
-
}
|
|
64
|
-
function _inherits(subClass, superClass) {
|
|
65
|
-
if (typeof superClass !== "function" && superClass !== null) {
|
|
66
|
-
throw new TypeError("Super expression must either be null or a function");
|
|
67
|
-
}
|
|
68
|
-
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
69
|
-
constructor: {
|
|
70
|
-
value: subClass,
|
|
71
|
-
writable: true,
|
|
72
|
-
configurable: true
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
if (superClass) _set_prototype_of(subClass, superClass);
|
|
76
|
-
}
|
|
77
|
-
function _interop_require_default(obj) {
|
|
78
|
-
return obj && obj.__esModule ? obj : {
|
|
79
|
-
default: obj
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
function _possible_constructor_return(self, call) {
|
|
83
|
-
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
84
|
-
return call;
|
|
85
|
-
}
|
|
86
|
-
return _assert_this_initialized(self);
|
|
87
|
-
}
|
|
88
|
-
function _set_prototype_of(o, p) {
|
|
89
|
-
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
90
|
-
o.__proto__ = p;
|
|
91
|
-
return o;
|
|
92
|
-
};
|
|
93
|
-
return _set_prototype_of(o, p);
|
|
94
|
-
}
|
|
95
|
-
function _super_prop_base(object, property) {
|
|
96
|
-
while(!Object.prototype.hasOwnProperty.call(object, property)){
|
|
97
|
-
object = _get_prototype_of(object);
|
|
98
|
-
if (object === null) break;
|
|
99
|
-
}
|
|
100
|
-
return object;
|
|
101
|
-
}
|
|
102
|
-
function _type_of(obj) {
|
|
103
|
-
"@swc/helpers - typeof";
|
|
104
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
105
|
-
}
|
|
106
|
-
function _is_native_reflect_construct() {
|
|
107
|
-
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
108
|
-
if (Reflect.construct.sham) return false;
|
|
109
|
-
if (typeof Proxy === "function") return true;
|
|
110
|
-
try {
|
|
111
|
-
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
112
|
-
return true;
|
|
113
|
-
} catch (e) {
|
|
114
|
-
return false;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function _create_super(Derived) {
|
|
118
|
-
var hasNativeReflectConstruct = _is_native_reflect_construct();
|
|
119
|
-
return function _createSuperInternal() {
|
|
120
|
-
var Super = _get_prototype_of(Derived), result;
|
|
121
|
-
if (hasNativeReflectConstruct) {
|
|
122
|
-
var NewTarget = _get_prototype_of(this).constructor;
|
|
123
|
-
result = Reflect.construct(Super, arguments, NewTarget);
|
|
124
|
-
} else {
|
|
125
|
-
result = Super.apply(this, arguments);
|
|
126
|
-
}
|
|
127
|
-
return _possible_constructor_return(this, result);
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
var termNodeQuery = (0, _query.nodeQuery)("/term!"), variableNodeQuery = (0, _query.nodeQuery)("/variable!"), nonTerminalNodeQuery = (0, _query.nodeQuery)("/*"), metavariableNodeQuery = (0, _query.nodeQuery)("/metavariable!");
|
|
131
|
-
var MetastatementNodeVerifier = /*#__PURE__*/ function(NodeVerifier) {
|
|
132
|
-
_inherits(MetastatementNodeVerifier, NodeVerifier);
|
|
133
|
-
var _super = _create_super(MetastatementNodeVerifier);
|
|
134
|
-
function MetastatementNodeVerifier() {
|
|
135
|
-
_class_call_check(this, MetastatementNodeVerifier);
|
|
136
|
-
return _super.apply(this, arguments);
|
|
137
|
-
}
|
|
138
|
-
_create_class(MetastatementNodeVerifier, [
|
|
139
|
-
{
|
|
140
|
-
key: "verifyNonTerminalNode",
|
|
141
|
-
value: function verifyNonTerminalNode(nonTerminalNode, localMetaContext, verifyAhead) {
|
|
142
|
-
var _this = this;
|
|
143
|
-
var nonTerminalNodeVerified;
|
|
144
|
-
var nodeQueryMaps = [
|
|
145
|
-
{
|
|
146
|
-
nodeQuery: termNodeQuery,
|
|
147
|
-
verifyNode: function(node, localMetaContext, verifyAhead) {
|
|
148
|
-
var nonTerminalNodeVerified;
|
|
149
|
-
var termNode = node, termNodeVerified = _this.verifyTermNode(termNode, localMetaContext, verifyAhead);
|
|
150
|
-
nonTerminalNodeVerified = termNodeVerified; ///
|
|
151
|
-
return nonTerminalNodeVerified;
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
nodeQuery: variableNodeQuery,
|
|
156
|
-
verifyNode: function(node, localMetaContext, verifyAhead) {
|
|
157
|
-
var nonTerminalNodeVerified;
|
|
158
|
-
var variableNode = node, variableNodeVerified = _this.verifyVariableNode(variableNode, localMetaContext, verifyAhead);
|
|
159
|
-
nonTerminalNodeVerified = variableNodeVerified; ///
|
|
160
|
-
return nonTerminalNodeVerified;
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
nodeQuery: metavariableNodeQuery,
|
|
165
|
-
verifyNode: function(node, localMetaContext, verifyAhead) {
|
|
166
|
-
var nonTerminalNodeVerified;
|
|
167
|
-
var metavariableNode = node, metavariableNodeVerified = _this.verifyMetavariableNode(metavariableNode, localMetaContext, verifyAhead);
|
|
168
|
-
nonTerminalNodeVerified = metavariableNodeVerified; ///
|
|
169
|
-
return nonTerminalNodeVerified;
|
|
170
|
-
}
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
nodeQuery: nonTerminalNodeQuery,
|
|
174
|
-
verifyNode: function(node, localMetaContext, verifyAhead) {
|
|
175
|
-
var nonTerminalNodeVerified;
|
|
176
|
-
var _$nonTerminalNode = node; ///
|
|
177
|
-
nonTerminalNodeVerified = _get(_get_prototype_of(MetastatementNodeVerifier.prototype), "verifyNonTerminalNode", _this).call(_this, _$nonTerminalNode, localMetaContext, verifyAhead);
|
|
178
|
-
return nonTerminalNodeVerified;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
];
|
|
182
|
-
var nodeVerified = (0, _verifier.verifyNode)(nodeQueryMaps, nonTerminalNode, localMetaContext, verifyAhead);
|
|
183
|
-
nonTerminalNodeVerified = nodeVerified; ///
|
|
184
|
-
return nonTerminalNodeVerified;
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
{
|
|
188
|
-
key: "verifyMetavariableNode",
|
|
189
|
-
value: function verifyMetavariableNode(metavariableNode, localMetaContext, verifyAhead) {
|
|
190
|
-
var standaloneMetavariableVerified = (0, _metavariable.verifyStandaloneMetavariable)(metavariableNode, localMetaContext, verifyAhead), metavariableNodeVerified = standaloneMetavariableVerified; ///
|
|
191
|
-
return metavariableNodeVerified;
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
key: "verifyVariableNode",
|
|
196
|
-
value: function verifyVariableNode(variableNode, localMetaContext, verifyAhead) {
|
|
197
|
-
var localContext = localMetaContext, standaloneVariableVerified = (0, _variable.verifyStandaloneVariable)(variableNode, localContext, verifyAhead), variableNodeVerified = standaloneVariableVerified; ///
|
|
198
|
-
return variableNodeVerified;
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
{
|
|
202
|
-
key: "verifyTermNode",
|
|
203
|
-
value: function verifyTermNode(termNode, localMetaContext, verifyAhead) {
|
|
204
|
-
var localContext = localMetaContext, standaloneTermVerified = (0, _term.verifyStandaloneTerm)(termNode, localContext, verifyAhead), termNodeVerified = standaloneTermVerified; ///
|
|
205
|
-
return termNodeVerified;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
]);
|
|
209
|
-
return MetastatementNodeVerifier;
|
|
210
|
-
}(_node.default);
|
|
211
|
-
var metastatementNodeVerifier = new MetastatementNodeVerifier();
|
|
212
|
-
var _default = metastatementNodeVerifier;
|
|
213
|
-
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZmllci9ub2RlL21ldGFzdGF0ZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBOb2RlVmVyaWZpZXIgZnJvbSBcIi4uLy4uL3ZlcmlmaWVyL25vZGVcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgdmVyaWZ5Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvdmVyaWZpZXJcIjtcbmltcG9ydCB7IHZlcmlmeVN0YW5kYWxvbmVUZXJtIH0gZnJvbSBcIi4uLy4uL3ZlcmlmeS90ZXJtXCI7XG5pbXBvcnQgeyB2ZXJpZnlTdGFuZGFsb25lVmFyaWFibGUgfSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3ZhcmlhYmxlXCI7XG5pbXBvcnQgeyB2ZXJpZnlTdGFuZGFsb25lTWV0YXZhcmlhYmxlIH0gZnJvbSBcIi4uLy4uL3ZlcmlmeS9tZXRhdmFyaWFibGVcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtIVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3ZhcmlhYmxlIVwiKSxcbiAgICAgIG5vblRlcm1pbmFsTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiLypcIiksXG4gICAgICBtZXRhdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlIVwiKTtcblxuY2xhc3MgTWV0YXN0YXRlbWVudE5vZGVWZXJpZmllciBleHRlbmRzIE5vZGVWZXJpZmllciB7XG4gIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gICAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuXG4gICAgY29uc3Qgbm9kZVF1ZXJ5TWFwcyA9IFtcbiAgICAgIHtcbiAgICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgICB2ZXJpZnlOb2RlOiAobm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpID0+IHtcbiAgICAgICAgICBsZXQgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG5cbiAgICAgICAgICBjb25zdCB0ZXJtTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgICAgIHRlcm1Ob2RlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeVRlcm1Ob2RlKHRlcm1Ob2RlLCBsb2NhbE1ldGFDb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRlcm1Ob2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBub2RlUXVlcnk6IHZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgICB2ZXJpZnlOb2RlOiAobm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpID0+IHtcbiAgICAgICAgICBsZXQgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG5cbiAgICAgICAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgICAgICB2YXJpYWJsZU5vZGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5VmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB2YXJpYWJsZU5vZGVWZXJpZmllZDsgLy8vXG5cbiAgICAgICAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5vZGVRdWVyeTogbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5LFxuICAgICAgICB2ZXJpZnlOb2RlOiAobm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpID0+IHtcbiAgICAgICAgICBsZXQgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG5cbiAgICAgICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkID0gdGhpcy52ZXJpZnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gbWV0YXZhcmlhYmxlTm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgICAgIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbm9kZVF1ZXJ5OiBub25UZXJtaW5hbE5vZGVRdWVyeSxcbiAgICAgICAgdmVyaWZ5Tm9kZTogKG5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKSA9PiB7XG4gICAgICAgICAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuXG4gICAgICAgICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZTsgLy8vXG5cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9XG5cbiAgICAgICAgICAgIHN1cGVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgICAgICAgIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG5cbiAgICBjb25zdCBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGVRdWVyeU1hcHMsIG5vblRlcm1pbmFsTm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBub2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBsb2NhbE1ldGFDb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICAgIGNvbnN0IHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmeVN0YW5kYWxvbmVNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVWZXJpZmllZCA9IHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZDsgIC8vL1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVWZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeVZhcmlhYmxlTm9kZSh2YXJpYWJsZU5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gICAgY29uc3QgbG9jYWxDb250ZXh0ID0gbG9jYWxNZXRhQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YW5kYWxvbmVWYXJpYWJsZVZlcmlmaWVkID0gdmVyaWZ5U3RhbmRhbG9uZVZhcmlhYmxlKHZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCksXG4gICAgICAgICAgdmFyaWFibGVOb2RlVmVyaWZpZWQgPSBzdGFuZGFsb25lVmFyaWFibGVWZXJpZmllZDsgIC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlTm9kZVZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5VGVybU5vZGUodGVybU5vZGUsIGxvY2FsTWV0YUNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gICAgY29uc3QgbG9jYWxDb250ZXh0ID0gbG9jYWxNZXRhQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YW5kYWxvbmVUZXJtVmVyaWZpZWQgPSB2ZXJpZnlTdGFuZGFsb25lVGVybSh0ZXJtTm9kZSwgbG9jYWxDb250ZXh0LCB2ZXJpZnlBaGVhZCksXG4gICAgICAgICAgdGVybU5vZGVWZXJpZmllZCA9IHN0YW5kYWxvbmVUZXJtVmVyaWZpZWQ7ICAvLy9cblxuICAgIHJldHVybiB0ZXJtTm9kZVZlcmlmaWVkO1xuICB9XG59XG5cbmNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlVmVyaWZpZXIgPSBuZXcgTWV0YXN0YXRlbWVudE5vZGVWZXJpZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBtZXRhc3RhdGVtZW50Tm9kZVZlcmlmaWVyO1xuIl0sIm5hbWVzIjpbInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIm5vblRlcm1pbmFsTm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwiTWV0YXN0YXRlbWVudE5vZGVWZXJpZmllciIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImxvY2FsTWV0YUNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwibm9kZVF1ZXJ5TWFwcyIsInZlcmlmeU5vZGUiLCJub2RlIiwidGVybU5vZGUiLCJ0ZXJtTm9kZVZlcmlmaWVkIiwidmVyaWZ5VGVybU5vZGUiLCJ2YXJpYWJsZU5vZGUiLCJ2YXJpYWJsZU5vZGVWZXJpZmllZCIsInZlcmlmeVZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhdmFyaWFibGVOb2RlIiwibm9kZVZlcmlmaWVkIiwic3RhbmRhbG9uZU1ldGF2YXJpYWJsZVZlcmlmaWVkIiwidmVyaWZ5U3RhbmRhbG9uZU1ldGF2YXJpYWJsZSIsImxvY2FsQ29udGV4dCIsInN0YW5kYWxvbmVWYXJpYWJsZVZlcmlmaWVkIiwidmVyaWZ5U3RhbmRhbG9uZVZhcmlhYmxlIiwic3RhbmRhbG9uZVRlcm1WZXJpZmllZCIsInZlcmlmeVN0YW5kYWxvbmVUZXJtIiwiTm9kZVZlcmlmaWVyIiwibWV0YXN0YXRlbWVudE5vZGVWZXJpZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBNEdBOzs7ZUFBQTs7OzJEQTFHeUI7cUJBRUM7d0JBQ0M7b0JBQ1U7d0JBQ0k7NEJBQ0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU3QyxJQUFNQSxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsV0FDMUJDLG9CQUFvQkQsSUFBQUEsZ0JBQVMsRUFBQyxlQUM5QkUsdUJBQXVCRixJQUFBQSxnQkFBUyxFQUFDLE9BQ2pDRyx3QkFBd0JILElBQUFBLGdCQUFTLEVBQUM7QUFFeEMsSUFBQSxBQUFNSSwwQ0FBRCxBQUFMO2NBQU1BOytCQUFBQTthQUFBQTtnQ0FBQUE7OztrQkFBQUE7O1lBQ0pDLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JDLGVBQWUsRUFBRUMsZ0JBQWdCLEVBQUVDLFdBQVc7O2dCQUNsRSxJQUFJQztnQkFFSixJQUFNQyxnQkFBZ0I7b0JBQ3BCO3dCQUNFVixXQUFXRDt3QkFDWFksWUFBWSxTQUFDQyxNQUFNTCxrQkFBa0JDOzRCQUNuQyxJQUFJQzs0QkFFSixJQUFNSSxXQUFXRCxNQUNYRSxtQkFBbUIsTUFBS0MsY0FBYyxDQUFDRixVQUFVTixrQkFBa0JDOzRCQUV6RUMsMEJBQTBCSyxrQkFBa0IsR0FBRzs0QkFFL0MsT0FBT0w7d0JBQ1Q7b0JBQ0Y7b0JBQ0E7d0JBQ0VULFdBQVdDO3dCQUNYVSxZQUFZLFNBQUNDLE1BQU1MLGtCQUFrQkM7NEJBQ25DLElBQUlDOzRCQUVKLElBQU1PLGVBQWVKLE1BQ2ZLLHVCQUF1QixNQUFLQyxrQkFBa0IsQ0FBQ0YsY0FBY1Qsa0JBQWtCQzs0QkFFckZDLDBCQUEwQlEsc0JBQXNCLEdBQUc7NEJBRW5ELE9BQU9SO3dCQUNUO29CQUNGO29CQUNBO3dCQUNFVCxXQUFXRzt3QkFDWFEsWUFBWSxTQUFDQyxNQUFNTCxrQkFBa0JDOzRCQUNuQyxJQUFJQzs0QkFFSixJQUFNVSxtQkFBbUJQLE1BQ25CUSwyQkFBMkIsTUFBS0Msc0JBQXNCLENBQUNGLGtCQUFrQlosa0JBQWtCQzs0QkFFakdDLDBCQUEwQlcsMEJBQTBCLEdBQUc7NEJBRXZELE9BQU9YO3dCQUNUO29CQUNGO29CQUNBO3dCQUNFVCxXQUFXRTt3QkFDWFMsWUFBWSxTQUFDQyxNQUFNTCxrQkFBa0JDOzRCQUNuQyxJQUFJQzs0QkFFSixJQUFNSCxvQkFBa0JNLE1BQU0sR0FBRzs0QkFFakNILDBCQUVFLHVCQXJETkwsc0NBcURZQyw0Q0FBc0JDLG1CQUFpQkMsa0JBQWtCQzs0QkFFakUsT0FBT0M7d0JBQ1Q7b0JBQ0Y7aUJBQ0Q7Z0JBRUQsSUFBTWEsZUFBZVgsSUFBQUEsb0JBQVUsRUFBQ0QsZUFBZUosaUJBQWlCQyxrQkFBa0JDO2dCQUVsRkMsMEJBQTBCYSxjQUFjLEdBQUc7Z0JBRTNDLE9BQU9iO1lBQ1Q7OztZQUVBWSxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCRixnQkFBZ0IsRUFBRVosZ0JBQWdCLEVBQUVDLFdBQVc7Z0JBQ3BFLElBQU1lLGlDQUFpQ0MsSUFBQUEsMENBQTRCLEVBQUNMLGtCQUFrQlosa0JBQWtCQyxjQUNsR1ksMkJBQTJCRyxnQ0FBaUMsR0FBRztnQkFFckUsT0FBT0g7WUFDVDs7O1lBRUFGLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUJGLFlBQVksRUFBRVQsZ0JBQWdCLEVBQUVDLFdBQVc7Z0JBQzVELElBQU1pQixlQUFlbEIsa0JBQ2ZtQiw2QkFBNkJDLElBQUFBLGtDQUF3QixFQUFDWCxjQUFjUyxjQUFjakIsY0FDbEZTLHVCQUF1QlMsNEJBQTZCLEdBQUc7Z0JBRTdELE9BQU9UO1lBQ1Q7OztZQUVBRixLQUFBQTttQkFBQUEsU0FBQUEsZUFBZUYsUUFBUSxFQUFFTixnQkFBZ0IsRUFBRUMsV0FBVztnQkFDcEQsSUFBTWlCLGVBQWVsQixrQkFDZnFCLHlCQUF5QkMsSUFBQUEsMEJBQW9CLEVBQUNoQixVQUFVWSxjQUFjakIsY0FDdEVNLG1CQUFtQmMsd0JBQXlCLEdBQUc7Z0JBRXJELE9BQU9kO1lBQ1Q7OztXQXhGSVY7RUFBa0MwQixhQUFZO0FBMkZwRCxJQUFNQyw0QkFBNEIsSUFBSTNCO0lBRXRDLFdBQWUyQiJ9
|