occam-verify-cli 1.0.587 → 1.0.602

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 (105) hide show
  1. package/lib/context/ephemeral.js +74 -2
  2. package/lib/context/file/nominal.js +11 -9
  3. package/lib/context/liminal.js +161 -24
  4. package/lib/context/literal.js +8 -2
  5. package/lib/context/scoped.js +4 -28
  6. package/lib/context/synthetic.js +146 -0
  7. package/lib/context.js +170 -1
  8. package/lib/element/assertion/contained.js +21 -15
  9. package/lib/element/assertion/defined.js +45 -65
  10. package/lib/element/assertion/property.js +25 -19
  11. package/lib/element/assertion/satisfies.js +14 -8
  12. package/lib/element/assertion/subproof.js +12 -6
  13. package/lib/element/assertion.js +47 -1
  14. package/lib/element/assumption.js +12 -12
  15. package/lib/element/conclusion.js +2 -2
  16. package/lib/element/deduction.js +2 -2
  17. package/lib/element/frame.js +61 -29
  18. package/lib/element/judgement.js +7 -1
  19. package/lib/element/label.js +8 -8
  20. package/lib/element/metavariable.js +71 -59
  21. package/lib/element/procedureCall.js +24 -8
  22. package/lib/element/proof.js +43 -35
  23. package/lib/element/proofAssertion/premise.js +122 -97
  24. package/lib/element/proofAssertion/step.js +161 -115
  25. package/lib/element/proofAssertion/supposition.js +157 -118
  26. package/lib/element/proofAssertion.js +3 -3
  27. package/lib/element/reference.js +40 -7
  28. package/lib/element/rule.js +227 -95
  29. package/lib/element/signature.js +2 -1
  30. package/lib/element/statement.js +67 -34
  31. package/lib/element/substitution/frame.js +36 -16
  32. package/lib/element/substitution/reference.js +36 -16
  33. package/lib/element/substitution/statement.js +94 -55
  34. package/lib/element/substitution/term.js +36 -16
  35. package/lib/element/substitution.js +54 -17
  36. package/lib/element/substitutions.js +4 -276
  37. package/lib/element/term.js +60 -31
  38. package/lib/element/topLevelAssertion/axiom.js +13 -4
  39. package/lib/element/topLevelAssertion/conjecture.js +7 -2
  40. package/lib/element/topLevelAssertion/theorem.js +7 -2
  41. package/lib/element/topLevelAssertion.js +201 -134
  42. package/lib/element/topLevelMetaAssertion.js +310 -51
  43. package/lib/element/variable.js +15 -6
  44. package/lib/node/substitution/statement.js +33 -1
  45. package/lib/process/unify.js +6 -6
  46. package/lib/utilities/context.js +10 -25
  47. package/lib/utilities/element.js +34 -9
  48. package/lib/utilities/statement.js +1 -8
  49. package/lib/utilities/string.js +12 -1
  50. package/lib/utilities/substitutions.js +42 -16
  51. package/lib/utilities/unification.js +3 -1
  52. package/lib/utilities/validation.js +2 -2
  53. package/package.json +4 -4
  54. package/src/context/ephemeral.js +73 -1
  55. package/src/context/file/nominal.js +14 -11
  56. package/src/context/liminal.js +180 -25
  57. package/src/context/literal.js +3 -1
  58. package/src/context/scoped.js +3 -35
  59. package/src/context/synthetic.js +49 -0
  60. package/src/context.js +163 -1
  61. package/src/element/assertion/contained.js +28 -20
  62. package/src/element/assertion/defined.js +62 -34
  63. package/src/element/assertion/property.js +27 -19
  64. package/src/element/assertion/satisfies.js +15 -7
  65. package/src/element/assertion/subproof.js +13 -5
  66. package/src/element/assertion.js +35 -0
  67. package/src/element/assumption.js +5 -5
  68. package/src/element/conclusion.js +2 -4
  69. package/src/element/deduction.js +2 -4
  70. package/src/element/frame.js +71 -39
  71. package/src/element/judgement.js +2 -0
  72. package/src/element/label.js +4 -4
  73. package/src/element/metavariable.js +94 -75
  74. package/src/element/procedureCall.js +6 -6
  75. package/src/element/proof.js +6 -6
  76. package/src/element/proofAssertion/premise.js +101 -69
  77. package/src/element/proofAssertion/step.js +78 -39
  78. package/src/element/proofAssertion/supposition.js +141 -115
  79. package/src/element/proofAssertion.js +3 -2
  80. package/src/element/reference.js +52 -10
  81. package/src/element/rule.js +138 -76
  82. package/src/element/signature.js +2 -0
  83. package/src/element/statement.js +76 -45
  84. package/src/element/substitution/frame.js +44 -15
  85. package/src/element/substitution/reference.js +44 -15
  86. package/src/element/substitution/statement.js +124 -72
  87. package/src/element/substitution/term.js +43 -15
  88. package/src/element/substitution.js +55 -18
  89. package/src/element/substitutions.js +1 -258
  90. package/src/element/term.js +65 -34
  91. package/src/element/topLevelAssertion/axiom.js +1 -1
  92. package/src/element/topLevelAssertion/conjecture.js +1 -1
  93. package/src/element/topLevelAssertion/theorem.js +1 -1
  94. package/src/element/topLevelAssertion.js +128 -48
  95. package/src/element/topLevelMetaAssertion.js +86 -32
  96. package/src/element/variable.js +15 -5
  97. package/src/node/substitution/statement.js +33 -0
  98. package/src/process/unify.js +6 -8
  99. package/src/utilities/context.js +9 -8
  100. package/src/utilities/element.js +37 -10
  101. package/src/utilities/statement.js +0 -7
  102. package/src/utilities/string.js +14 -0
  103. package/src/utilities/substitutions.js +59 -17
  104. package/src/utilities/unification.js +4 -0
  105. package/src/utilities/validation.js +3 -1
@@ -155,6 +155,43 @@ var Substitution = /*#__PURE__*/ function(Element) {
155
155
  return primitive;
156
156
  }
157
157
  },
158
+ {
159
+ key: "getMetavariable",
160
+ value: function getMetavariable(context) {
161
+ var metavariable = null;
162
+ return metavariable;
163
+ }
164
+ },
165
+ {
166
+ key: "getSubstitutionNode",
167
+ value: function getSubstitutionNode() {
168
+ var node = this.getNode(), substitutionNode = node; ///
169
+ return substitutionNode;
170
+ }
171
+ },
172
+ {
173
+ key: "matchSubstitutionNode",
174
+ value: function matchSubstitutionNode(substitutionNode) {
175
+ var substitutionNodeA = substitutionNode; ///
176
+ substitutionNode = this.getSubstitutionNode();
177
+ var substitutionNodeB = substitutionNode, substitutionNodeAAMatchesSubstitutionBNodeB = substitutionNodeA.match(substitutionNodeB), equalTo = substitutionNodeAAMatchesSubstitutionBNodeB; ///
178
+ return equalTo;
179
+ }
180
+ },
181
+ {
182
+ key: "isValid",
183
+ value: function isValid(context) {
184
+ var substitutionNode = this.getSubstitutionNode(), substitutionPresent = context.isSubstitutionPresentBySubstitutionNode(substitutionNode), valid = substitutionPresent; ///
185
+ return valid;
186
+ }
187
+ },
188
+ {
189
+ key: "isEqualTo",
190
+ value: function isEqualTo(substitution) {
191
+ var substitutionNode = substitution.getNode(), substitutionNodeMatches = this.matchSubstitutionNode(substitutionNode), equalTo = substitutionNodeMatches; ///
192
+ return equalTo;
193
+ }
194
+ },
158
195
  {
159
196
  key: "isSimple",
160
197
  value: function isSimple() {
@@ -176,6 +213,13 @@ var Substitution = /*#__PURE__*/ function(Element) {
176
213
  return trivial;
177
214
  }
178
215
  },
216
+ {
217
+ key: "isNonTrivial",
218
+ value: function isNonTrivial() {
219
+ var trivial = this.isTrivial(), nonTrivlal = !trivial;
220
+ return nonTrivlal;
221
+ }
222
+ },
179
223
  {
180
224
  key: "isFrameEqualToFrame",
181
225
  value: function isFrameEqualToFrame(frame) {
@@ -191,17 +235,10 @@ var Substitution = /*#__PURE__*/ function(Element) {
191
235
  }
192
236
  },
193
237
  {
194
- key: "isMetavariableEqualToMetavariable",
195
- value: function isMetavariableEqualToMetavariable(metavariable) {
196
- var metavariableEqualToMetavariable = false;
197
- return metavariableEqualToMetavariable;
198
- }
199
- },
200
- {
201
- key: "isEqualTo",
202
- value: function isEqualTo(substitution) {
203
- var substitutionA = this, substitutionB = substitution, substitutionANode = substitutionA.getNode(), substitutionBNode = substitutionB.getNode(), substitutionANodeMatchesSubstitutionBNode = substitutionANode.match(substitutionBNode), equalTo = substitutionANodeMatchesSubstitutionBNode; ///
204
- return equalTo;
238
+ key: "compare",
239
+ value: function compare(substitution) {
240
+ var comparesToSubstitution = false;
241
+ return comparesToSubstitution;
205
242
  }
206
243
  },
207
244
  {
@@ -226,15 +263,15 @@ var Substitution = /*#__PURE__*/ function(Element) {
226
263
  }
227
264
  },
228
265
  {
229
- key: "compareSubstitution",
230
- value: function compareSubstitution(substitution) {
231
- var comparesToSubstitution = false;
232
- return comparesToSubstitution;
266
+ key: "compareMetavariable",
267
+ value: function compareMetavariable(metavariable) {
268
+ var compaaresToMetavariable = false;
269
+ return compaaresToMetavariable;
233
270
  }
234
271
  },
235
272
  {
236
273
  key: "resolve",
237
- value: function resolve(substitutions, context) {
274
+ value: function resolve(substitutions, generalContext, specificContext) {
238
275
  var resolved = true;
239
276
  return resolved;
240
277
  }
@@ -243,4 +280,4 @@ var Substitution = /*#__PURE__*/ function(Element) {
243
280
  return Substitution;
244
281
  }(_wrap_native_super(_occamlanguages.Element));
245
282
 
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcbmltcG9ydCB7IHByaW1pdGl2ZVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1mdXJ0bGVcIjtcblxuY29uc3QgeyBwcmltaXRpdmVGcm9tTm9kZSB9ID1wcmltaXRpdmVVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnN0aXR1dGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9uKCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZ2V0UHJpbWl0aXZlKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSB0aGlzLmdldFJlcGxhY2VtZW50Tm9kZSgpLFxuICAgICAgICAgIG5vZGUgPSByZXBsYWNlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21Ob2RlKG5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIGlzU2ltcGxlKCkge1xuICAgIGNvbnN0IHNpbXBsZSA9IHRydWU7XG5cbiAgICByZXR1cm4gc2ltcGxlO1xuICB9XG5cbiAgaXNDb21wbGV4KCkge1xuICAgIGNvbnN0IHNpbXBsZSA9IHRoaXMuaXNTaW1wbGUoKSxcbiAgICAgICAgICBjb21wbGV4ID0gIXNpbXBsZTtcblxuICAgIHJldHVybiBjb21wbGV4O1xuICB9XG5cbiAgaXNUcml2aWFsKCkge1xuICAgIGNvbnN0IHRyaXZpYWwgPSBmYWxzZTtcblxuICAgIHJldHVybiB0cml2aWFsO1xuICB9XG5cbiAgaXNGcmFtZUVxdWFsVG9GcmFtZShmcmFtZSkge1xuICAgIGNvbnN0IGZyYW1lRXF1YWxUb0ZyYW1lID0gZmFsc2U7XG5cbiAgICByZXR1cm4gZnJhbWVFcXVhbFRvRnJhbWU7XG4gIH1cblxuICBpc1JlZmVyZW5jZUVxdWFsVG9SZWZlcmVuY2UocmVmZXJlbmNlKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlRXF1YWxUb1JlZmVyZW5jZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHJlZmVyZW5jZUVxdWFsVG9SZWZlcmVuY2U7XG4gIH1cblxuICBpc01ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGU7XG4gIH1cblxuICBpc0VxdWFsVG8oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uQSA9IHRoaXMsIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbkFOb2RlID0gc3Vic3RpdHV0aW9uQS5nZXROb2RlKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uQk5vZGUgPSBzdWJzdGl0dXRpb25CLmdldE5vZGUoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25BTm9kZU1hdGNoZXNTdWJzdGl0dXRpb25CTm9kZSA9IHN1YnN0aXR1dGlvbkFOb2RlLm1hdGNoKHN1YnN0aXR1dGlvbkJOb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gc3Vic3RpdHV0aW9uQU5vZGVNYXRjaGVzU3Vic3RpdHV0aW9uQk5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBjb21wYXJlVGVybSh0ZXJtLCBjb250ZXh0KSB7XG4gICAgY29uc3QgY29tcGFyZXNUb1Rlcm0gPSBmYWxzZTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvVGVybTtcbiAgfVxuXG4gIGNvbXBhcmVTdGF0ZW1lbnQoc3RhdGVtZW50KSB7XG4gICAgY29uc3QgY29tcGFyZXNUb1N0YXRlbWVudCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdGF0ZW1lbnQ7XG4gIH1cblxuICBjb21wYXJlUGFyYW1ldGVyKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGNvbXBhcmVzVG9QYXJhbWV0ZXIgPSBmYWxzZTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW1ldGVyO1xuICB9XG5cbiAgY29tcGFyZVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24pIHtcbiAgICBjb25zdCBjb21wYXJlc1RvU3Vic3RpdHV0aW9uID0gZmFsc2U7XG5cbiAgICByZXR1cm4gY29tcGFyZXNUb1N1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHJlc29sdmUoc3Vic3RpdHV0aW9ucywgY29udGV4dCkge1xuICAgIGNvbnN0IHJlc29sdmVkID0gdHJ1ZTtcblxuICAgIHJldHVybiByZXNvbHZlZDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlN1YnN0aXR1dGlvbiIsInByaW1pdGl2ZUZyb21Ob2RlIiwicHJpbWl0aXZlVXRpbGl0aWVzIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJnZXRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJnZXRQcmltaXRpdmUiLCJnZXRDb250ZXh0IiwicmVwbGFjZW1lbnROb2RlIiwiZ2V0UmVwbGFjZW1lbnROb2RlIiwicHJpbWl0aXZlIiwiaXNTaW1wbGUiLCJzaW1wbGUiLCJpc0NvbXBsZXgiLCJjb21wbGV4IiwiaXNUcml2aWFsIiwidHJpdmlhbCIsImlzRnJhbWVFcXVhbFRvRnJhbWUiLCJmcmFtZSIsImZyYW1lRXF1YWxUb0ZyYW1lIiwiaXNSZWZlcmVuY2VFcXVhbFRvUmVmZXJlbmNlIiwicmVmZXJlbmNlIiwicmVmZXJlbmNlRXF1YWxUb1JlZmVyZW5jZSIsImlzTWV0YXZhcmlhYmxlRXF1YWxUb01ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUiLCJpc0VxdWFsVG8iLCJzdWJzdGl0dXRpb25BIiwic3Vic3RpdHV0aW9uQiIsInN1YnN0aXR1dGlvbkFOb2RlIiwiZ2V0Tm9kZSIsInN1YnN0aXR1dGlvbkJOb2RlIiwic3Vic3RpdHV0aW9uQU5vZGVNYXRjaGVzU3Vic3RpdHV0aW9uQk5vZGUiLCJtYXRjaCIsImVxdWFsVG8iLCJjb21wYXJlVGVybSIsInRlcm0iLCJjb21wYXJlc1RvVGVybSIsImNvbXBhcmVTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJjb21wYXJlc1RvU3RhdGVtZW50IiwiY29tcGFyZVBhcmFtZXRlciIsInBhcmFtZXRlciIsImNvbXBhcmVzVG9QYXJhbWV0ZXIiLCJjb21wYXJlU3Vic3RpdHV0aW9uIiwiY29tcGFyZXNUb1N1YnN0aXR1dGlvbiIsInJlc29sdmUiLCJzdWJzdGl0dXRpb25zIiwicmVzb2x2ZWQiLCJFbGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU9xQkE7Ozs4QkFMRzsyQkFDVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5DLElBQU0sQUFBRUMsb0JBQXFCQywrQkFBa0IsQ0FBdkNEO0FBRU8sSUFBQSxBQUFNRCw2QkFBTjtjQUFNQTthQUFBQSxhQUNQRyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSTtnQ0FEZEw7UUFFakIsT0FBQSxrQkFGaUJBO1lBRVhHO1lBQVNDO1lBQVFDOzs7a0JBRk5MOztZQUtuQk0sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLGVBQWU7Z0JBRXJCLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUwsVUFBVSxJQUFJLENBQUNNLFVBQVUsSUFDekJDLGtCQUFrQixJQUFJLENBQUNDLGtCQUFrQixJQUN6Q04sT0FBT0ssaUJBQ1BFLFlBQVlYLGtCQUFrQkksTUFBTUY7Z0JBRTFDLE9BQU9TO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsU0FBUztnQkFFZixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1ELFNBQVMsSUFBSSxDQUFDRCxRQUFRLElBQ3RCRyxVQUFVLENBQUNGO2dCQUVqQixPQUFPRTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLFVBQVU7Z0JBRWhCLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsb0JBQW9CQyxLQUFLO2dCQUN2QixJQUFNQyxvQkFBb0I7Z0JBRTFCLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsNEJBQTRCQyxTQUFTO2dCQUNuQyxJQUFNQyw0QkFBNEI7Z0JBRWxDLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsa0NBQWtDQyxZQUFZO2dCQUM1QyxJQUFNQyxrQ0FBa0M7Z0JBRXhDLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsVUFBVXJCLFlBQVk7Z0JBQ3BCLElBQU1zQixnQkFBZ0IsSUFBSSxFQUNwQkMsZ0JBQWdCdkIsY0FDaEJ3QixvQkFBb0JGLGNBQWNHLE9BQU8sSUFDekNDLG9CQUFvQkgsY0FBY0UsT0FBTyxJQUN6Q0UsNENBQTRDSCxrQkFBa0JJLEtBQUssQ0FBQ0Ysb0JBQ3BFRyxVQUFVRiwyQ0FBMkMsR0FBRztnQkFFOUQsT0FBT0U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxZQUFZQyxJQUFJLEVBQUVuQyxPQUFPO2dCQUN2QixJQUFNb0MsaUJBQWlCO2dCQUV2QixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQkMsU0FBUztnQkFDeEIsSUFBTUMsc0JBQXNCO2dCQUU1QixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLGlCQUFpQkMsU0FBUztnQkFDeEIsSUFBTUMsc0JBQXNCO2dCQUU1QixPQUFPQTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLG9CQUFvQnZDLFlBQVk7Z0JBQzlCLElBQU13Qyx5QkFBeUI7Z0JBRS9CLE9BQU9BO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsUUFBUUMsYUFBYSxFQUFFOUMsT0FBTztnQkFDNUIsSUFBTStDLFdBQVc7Z0JBRWpCLE9BQU9BO1lBQ1Q7OztXQWhHbUJsRDtxQkFBcUJtRCx1QkFBTyJ9
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcbmltcG9ydCB7IHByaW1pdGl2ZVV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1mdXJ0bGVcIjtcblxuY29uc3QgeyBwcmltaXRpdmVGcm9tTm9kZSB9ID1wcmltaXRpdmVVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnN0aXR1dGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuICB9XG5cbiAgZ2V0U3Vic3RpdHV0aW9uKCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgZ2V0UHJpbWl0aXZlKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSB0aGlzLmdldFJlcGxhY2VtZW50Tm9kZSgpLFxuICAgICAgICAgIG5vZGUgPSByZXBsYWNlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIHByaW1pdGl2ZSA9IHByaW1pdGl2ZUZyb21Ob2RlKG5vZGUsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZShjb250ZXh0KSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gbnVsbDtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGU7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uTm9kZTtcbiAgfVxuXG4gIG1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZUEgPSBzdWJzdGl0dXRpb25Ob2RlOyAvLy9cblxuICAgIHN1YnN0aXR1dGlvbk5vZGUgPSB0aGlzLmdldFN1YnN0aXR1dGlvbk5vZGUoKTtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVCID0gc3Vic3RpdHV0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZUFBTWF0Y2hlc1N1YnN0aXR1dGlvbkJOb2RlQiA9IHN1YnN0aXR1dGlvbk5vZGVBLm1hdGNoKHN1YnN0aXR1dGlvbk5vZGVCKSxcbiAgICAgICAgICBlcXVhbFRvID0gc3Vic3RpdHV0aW9uTm9kZUFBTWF0Y2hlc1N1YnN0aXR1dGlvbkJOb2RlQjsgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzVmFsaWQoY29udGV4dCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGUgPSB0aGlzLmdldFN1YnN0aXR1dGlvbk5vZGUoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25QcmVzZW50ID0gY29udGV4dC5pc1N1YnN0aXR1dGlvblByZXNlbnRCeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgdmFsaWQgPSBzdWJzdGl0dXRpb25QcmVzZW50OyAgLy8vXG5cbiAgICByZXR1cm4gdmFsaWQ7XG4gIH1cblxuICBpc0VxdWFsVG8oc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZSA9IHN1YnN0aXR1dGlvbi5nZXROb2RlKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgaXNTaW1wbGUoKSB7XG4gICAgY29uc3Qgc2ltcGxlID0gdHJ1ZTtcblxuICAgIHJldHVybiBzaW1wbGU7XG4gIH1cblxuICBpc0NvbXBsZXgoKSB7XG4gICAgY29uc3Qgc2ltcGxlID0gdGhpcy5pc1NpbXBsZSgpLFxuICAgICAgICAgIGNvbXBsZXggPSAhc2ltcGxlO1xuXG4gICAgcmV0dXJuIGNvbXBsZXg7XG4gIH1cblxuICBpc1RyaXZpYWwoKSB7XG4gICAgY29uc3QgdHJpdmlhbCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHRyaXZpYWw7XG4gIH1cblxuICBpc05vblRyaXZpYWwoKSB7XG4gICAgY29uc3QgdHJpdmlhbCA9IHRoaXMuaXNUcml2aWFsKCksXG4gICAgICAgICAgbm9uVHJpdmxhbCA9ICF0cml2aWFsO1xuXG4gICAgcmV0dXJuIG5vblRyaXZsYWw7XG4gIH1cblxuICBpc0ZyYW1lRXF1YWxUb0ZyYW1lKGZyYW1lKSB7XG4gICAgY29uc3QgZnJhbWVFcXVhbFRvRnJhbWUgPSBmYWxzZTtcblxuICAgIHJldHVybiBmcmFtZUVxdWFsVG9GcmFtZTtcbiAgfVxuXG4gIGlzUmVmZXJlbmNlRXF1YWxUb1JlZmVyZW5jZShyZWZlcmVuY2UpIHtcbiAgICBjb25zdCByZWZlcmVuY2VFcXVhbFRvUmVmZXJlbmNlID0gZmFsc2U7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlRXF1YWxUb1JlZmVyZW5jZTtcbiAgfVxuXG4gIGNvbXBhcmUoc3Vic3RpdHV0aW9uKSB7XG4gICAgY29uc3QgY29tcGFyZXNUb1N1YnN0aXR1dGlvbiA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdWJzdGl0dXRpb247XG4gIH1cblxuICBjb21wYXJlVGVybSh0ZXJtLCBjb250ZXh0KSB7XG4gICAgY29uc3QgY29tcGFyZXNUb1Rlcm0gPSBmYWxzZTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvVGVybTtcbiAgfVxuXG4gIGNvbXBhcmVTdGF0ZW1lbnQoc3RhdGVtZW50KSB7XG4gICAgY29uc3QgY29tcGFyZXNUb1N0YXRlbWVudCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGNvbXBhcmVzVG9TdGF0ZW1lbnQ7XG4gIH1cblxuICBjb21wYXJlUGFyYW1ldGVyKHBhcmFtZXRlcikge1xuICAgIGNvbnN0IGNvbXBhcmVzVG9QYXJhbWV0ZXIgPSBmYWxzZTtcblxuICAgIHJldHVybiBjb21wYXJlc1RvUGFyYW1ldGVyO1xuICB9XG5cbiAgY29tcGFyZU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBjb25zdCBjb21wYWFyZXNUb01ldGF2YXJpYWJsZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGNvbXBhYXJlc1RvTWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgcmVzb2x2ZShzdWJzdGl0dXRpb25zLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHJlc29sdmVkO1xuICB9XG59XG4iXSwibmFtZXMiOlsiU3Vic3RpdHV0aW9uIiwicHJpbWl0aXZlRnJvbU5vZGUiLCJwcmltaXRpdmVVdGlsaXRpZXMiLCJjb250ZXh0Iiwic3RyaW5nIiwibm9kZSIsImdldFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbiIsImdldFByaW1pdGl2ZSIsImdldENvbnRleHQiLCJyZXBsYWNlbWVudE5vZGUiLCJnZXRSZXBsYWNlbWVudE5vZGUiLCJwcmltaXRpdmUiLCJnZXRNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGUiLCJnZXRTdWJzdGl0dXRpb25Ob2RlIiwiZ2V0Tm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlQSIsInN1YnN0aXR1dGlvbk5vZGVCIiwic3Vic3RpdHV0aW9uTm9kZUFBTWF0Y2hlc1N1YnN0aXR1dGlvbkJOb2RlQiIsIm1hdGNoIiwiZXF1YWxUbyIsImlzVmFsaWQiLCJzdWJzdGl0dXRpb25QcmVzZW50IiwiaXNTdWJzdGl0dXRpb25QcmVzZW50QnlTdWJzdGl0dXRpb25Ob2RlIiwidmFsaWQiLCJpc0VxdWFsVG8iLCJzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyIsImlzU2ltcGxlIiwic2ltcGxlIiwiaXNDb21wbGV4IiwiY29tcGxleCIsImlzVHJpdmlhbCIsInRyaXZpYWwiLCJpc05vblRyaXZpYWwiLCJub25Ucml2bGFsIiwiaXNGcmFtZUVxdWFsVG9GcmFtZSIsImZyYW1lIiwiZnJhbWVFcXVhbFRvRnJhbWUiLCJpc1JlZmVyZW5jZUVxdWFsVG9SZWZlcmVuY2UiLCJyZWZlcmVuY2UiLCJyZWZlcmVuY2VFcXVhbFRvUmVmZXJlbmNlIiwiY29tcGFyZSIsImNvbXBhcmVzVG9TdWJzdGl0dXRpb24iLCJjb21wYXJlVGVybSIsInRlcm0iLCJjb21wYXJlc1RvVGVybSIsImNvbXBhcmVTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJjb21wYXJlc1RvU3RhdGVtZW50IiwiY29tcGFyZVBhcmFtZXRlciIsInBhcmFtZXRlciIsImNvbXBhcmVzVG9QYXJhbWV0ZXIiLCJjb21wYXJlTWV0YXZhcmlhYmxlIiwiY29tcGFhcmVzVG9NZXRhdmFyaWFibGUiLCJyZXNvbHZlIiwic3Vic3RpdHV0aW9ucyIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVzb2x2ZWQiLCJFbGVtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQU9xQkE7Ozs4QkFMRzsyQkFDVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRW5DLElBQU0sQUFBRUMsb0JBQXFCQywrQkFBa0IsQ0FBdkNEO0FBRU8sSUFBQSxBQUFNRCw2QkFBTjtjQUFNQTthQUFBQSxhQUNQ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
@@ -13,14 +13,6 @@ var _necessary = require("necessary");
13
13
  var _elements = require("../elements");
14
14
  var _constants = require("../constants");
15
15
  var _string = require("../utilities/string");
16
- function _array_like_to_array(arr, len) {
17
- if (len == null || len > arr.length) len = arr.length;
18
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
19
- return arr2;
20
- }
21
- function _array_without_holes(arr) {
22
- if (Array.isArray(arr)) return _array_like_to_array(arr);
23
- }
24
16
  function _assert_this_initialized(self) {
25
17
  if (self === void 0) {
26
18
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -102,12 +94,6 @@ function _inherits(subClass, superClass) {
102
94
  function _is_native_function(fn) {
103
95
  return Function.toString.call(fn).indexOf("[native code]") !== -1;
104
96
  }
105
- function _iterable_to_array(iter) {
106
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
107
- }
108
- function _non_iterable_spread() {
109
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
110
- }
111
97
  function _possible_constructor_return(self, call) {
112
98
  if (call && (_type_of(call) === "object" || typeof call === "function")) {
113
99
  return call;
@@ -121,21 +107,10 @@ function _set_prototype_of(o, p) {
121
107
  };
122
108
  return _set_prototype_of(o, p);
123
109
  }
124
- function _to_consumable_array(arr) {
125
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
126
- }
127
110
  function _type_of(obj) {
128
111
  "@swc/helpers - typeof";
129
112
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
130
113
  }
131
- function _unsupported_iterable_to_array(o, minLen) {
132
- if (!o) return;
133
- if (typeof o === "string") return _array_like_to_array(o, minLen);
134
- var n = Object.prototype.toString.call(o).slice(8, -1);
135
- if (n === "Object" && o.constructor) n = o.constructor.name;
136
- if (n === "Map" || n === "Set") return Array.from(n);
137
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
138
- }
139
114
  function _wrap_native_super(Class) {
140
115
  var _cache = typeof Map === "function" ? new Map() : undefined;
141
116
  _wrap_native_super = function wrapNativeSuper(Class) {
@@ -171,53 +146,14 @@ function _is_native_reflect_construct() {
171
146
  })();
172
147
  }
173
148
  var _Substitutions;
174
- var find = _necessary.arrayUtilities.find, first = _necessary.arrayUtilities.first, clear = _necessary.arrayUtilities.clear, prune = _necessary.arrayUtilities.prune, filter = _necessary.arrayUtilities.filter, extract = _necessary.arrayUtilities.extract, compress = _necessary.arrayUtilities.compress, correlate = _necessary.arrayUtilities.correlate;
149
+ var first = _necessary.arrayUtilities.first, extract = _necessary.arrayUtilities.extract, correlate = _necessary.arrayUtilities.correlate;
175
150
  var _default = (0, _elements.define)((_Substitutions = /*#__PURE__*/ function(Element) {
176
151
  _inherits(Substitutions, Element);
177
- function Substitutions(context, string, node, array, savedArray) {
152
+ function Substitutions() {
178
153
  _class_call_check(this, Substitutions);
179
- var _this;
180
- _this = _call_super(this, Substitutions, [
181
- context,
182
- string,
183
- node
184
- ]);
185
- _this.array = array;
186
- _this.savedArray = savedArray;
187
- return _this;
154
+ return _call_super(this, Substitutions, arguments);
188
155
  }
189
156
  _create_class(Substitutions, [
190
- {
191
- key: "getArray",
192
- value: function getArray() {
193
- return this.array;
194
- }
195
- },
196
- {
197
- key: "getSavedArray",
198
- value: function getSavedArray() {
199
- return this.savedArray;
200
- }
201
- },
202
- {
203
- key: "getMetavariables",
204
- value: function getMetavariables() {
205
- var metavariables = [];
206
- this.forEachSubstitution(function(substitution) {
207
- var metavariable = substitution.getMetavariable();
208
- if (metavariable !== null) {
209
- metavariables.push(metavariable);
210
- }
211
- });
212
- compress(metavariables, function(metavariableA, metavariableB) {
213
- var metavariableAEqualToMetavariableB = metavariableB.isEqualTo(metavariableA);
214
- if (!metavariableAEqualToMetavariableB) {
215
- return true;
216
- }
217
- });
218
- return metavariables;
219
- }
220
- },
221
157
  {
222
158
  key: "getNonTrivialLength",
223
159
  value: function getNonTrivialLength() {
@@ -242,134 +178,12 @@ var _default = (0, _elements.define)((_Substitutions = /*#__PURE__*/ function(El
242
178
  return firstSubstitution;
243
179
  }
244
180
  },
245
- {
246
- key: "getLength",
247
- value: function getLength() {
248
- return this.array.length;
249
- }
250
- },
251
- {
252
- key: "mapSubstitution",
253
- value: function mapSubstitution(callback) {
254
- return this.array.map(callback);
255
- }
256
- },
257
- {
258
- key: "someSubstitution",
259
- value: function someSubstitution(callback) {
260
- return this.array.some(callback);
261
- }
262
- },
263
- {
264
- key: "everySubstitution",
265
- value: function everySubstitution(callback) {
266
- return this.array.every(callback);
267
- }
268
- },
269
- {
270
- key: "reduceSubstitution",
271
- value: function reduceSubstitution(callback, initialValue) {
272
- return this.array.reduce(callback, initialValue);
273
- }
274
- },
275
- {
276
- key: "forEachSubstitution",
277
- value: function forEachSubstitution(callback) {
278
- this.array.forEach(callback);
279
- }
280
- },
281
181
  {
282
182
  key: "extractSubstitution",
283
183
  value: function extractSubstitution(callbcak) {
284
184
  return extract(this.array, callbcak);
285
185
  }
286
186
  },
287
- {
288
- key: "findSubstitutions",
289
- value: function findSubstitutions(callback) {
290
- var string;
291
- var array = find(this.array, callback), context = null;
292
- string = null;
293
- var node = null, savedArray = [], substitutions = new Substitutions(context, string, node, array, savedArray);
294
- string = substitutions.asString();
295
- substitutions.setString(string);
296
- return substitutions;
297
- }
298
- },
299
- {
300
- key: "findSubstitutionByVariable",
301
- value: function findSubstitutionByVariable(variable) {
302
- var substitution = this.findSubstitution(function(substitution) {
303
- var substitutionVariable = substitution.getVariable();
304
- if (substitutionVariable !== null) {
305
- var substitutionVariableEqualToVariable = substitutionVariable.isEqualTo(variable);
306
- if (substitutionVariableEqualToVariable) {
307
- return true;
308
- }
309
- }
310
- }) || null;
311
- return substitution;
312
- }
313
- },
314
- {
315
- key: "findSubstitutionsByMetavariable",
316
- value: function findSubstitutionsByMetavariable(metavariable) {
317
- var substitutions = this.findSubstitutions(function(substitution) {
318
- var substitutionMetavariableEqualToMetavariable = substitution.isMetavariableEqualToMetavariable(metavariable);
319
- if (substitutionMetavariableEqualToMetavariable) {
320
- return true;
321
- }
322
- });
323
- return substitutions;
324
- }
325
- },
326
- {
327
- key: "findComplexSubstitutionsByMetavariable",
328
- value: function findComplexSubstitutionsByMetavariable(metavariable) {
329
- var complexSubstitutions = this.findSubstitutions(function(substitution) {
330
- var substitutionComplex = substitution.isComplex();
331
- if (substitutionComplex) {
332
- var complexSubstitution = substitution, complexSubstitutionMetavariableEqualToMetavariable = complexSubstitution.isMetavariableEqualToMetavariable(metavariable);
333
- if (complexSubstitutionMetavariableEqualToMetavariable) {
334
- return true;
335
- }
336
- }
337
- });
338
- return complexSubstitutions;
339
- }
340
- },
341
- {
342
- key: "isSubstitutionPresentByVariable",
343
- value: function isSubstitutionPresentByVariable(variable) {
344
- var substitution = this.findSubstitutionByVariable(variable), substitutionPresent = substitution !== null;
345
- return substitutionPresent;
346
- }
347
- },
348
- {
349
- key: "addSubstitution",
350
- value: function addSubstitution(substitution, context) {
351
- var substitutionString = substitution.getString(), substitutionsString = this.asString(); ///
352
- this.array.push(substitution);
353
- var string = this.asString();
354
- this.setString(string);
355
- context.trace("Added the '".concat(substitutionString, "' substitution to the '").concat(substitutionsString, "' substitutions."));
356
- }
357
- },
358
- {
359
- key: "removeSubstitution",
360
- value: function removeSubstitution(substitution, context) {
361
- var substitutionA = substitution; ///
362
- prune(this.array, function(substitution) {
363
- var substitutionB = substitution; ///
364
- if (substitutionA !== substitutionB) {
365
- return true;
366
- }
367
- });
368
- var string = this.asString(), substitutionString = substitution.getString(), substitutionsString = string; ///
369
- this.setString(string);
370
- context.trace("Removed the '".concat(substitutionString, "' substitution from the '").concat(substitutionsString, "' substitutions."));
371
- }
372
- },
373
187
  {
374
188
  key: "correlateSubstitutions",
375
189
  value: function correlateSubstitutions(substitutions) {
@@ -382,84 +196,6 @@ var _default = (0, _elements.define)((_Substitutions = /*#__PURE__*/ function(El
382
196
  return correlates;
383
197
  }
384
198
  },
385
- {
386
- key: "clear",
387
- value: function clear1() {
388
- clear(this.array);
389
- this.savedArray = null;
390
- }
391
- },
392
- {
393
- key: "resolve",
394
- value: function resolve(context) {
395
- var _this = this;
396
- var metavariables = this.getMetavariables();
397
- metavariables.forEach(function(metavariable) {
398
- var complexSubstitutions = _this.findComplexSubstitutionsByMetavariable(metavariable), complexSubstitutionsResolved = complexSubstitutions.everySubstitution(function(complexSubstitution) {
399
- var resolved;
400
- var substitutions = _this, substitution = complexSubstitution; ///
401
- resolved = substitution.isResolved();
402
- if (!resolved) {
403
- substitution.resolve(substitutions, context);
404
- }
405
- });
406
- if (complexSubstitutionsResolved) {
407
- return true;
408
- }
409
- });
410
- }
411
- },
412
- {
413
- key: "areResolved",
414
- value: function areResolved() {
415
- var _this = this;
416
- var metavariables = this.getMetavariables(), resolved = metavariables.every(function(metavariable) {
417
- var complexSubstitutions = _this.findComplexSubstitutionsByMetavariable(metavariable), complexSubstitutionsResolved = complexSubstitutions.everySubstitution(function(complexSubstitution) {
418
- var complexSubstitutionResolved = complexSubstitution.isResolved();
419
- if (complexSubstitutionResolved) {
420
- return true;
421
- }
422
- });
423
- if (complexSubstitutionsResolved) {
424
- return true;
425
- }
426
- });
427
- return resolved;
428
- }
429
- },
430
- {
431
- key: "snapshot",
432
- value: function snapshot(context) {
433
- var substitutionsString = this.getString(); ///
434
- context.trace("Taking a snapshot of the '".concat(substitutionsString, "' substitutions."));
435
- this.savedArray = _to_consumable_array(this.array);
436
- }
437
- },
438
- {
439
- key: "rollback",
440
- value: function rollback(context) {
441
- var _this = this;
442
- var substitutionsString = this.getString(); ///
443
- context.trace("Rolling back the '".concat(substitutionsString, "' substitutions."));
444
- var array = _to_consumable_array(this.array);
445
- leftDifference(array, this.savedArray);
446
- array.forEach(function(substitution) {
447
- _this.removeSubstitution(substitution, context);
448
- });
449
- this.array = _to_consumable_array(this.savedArray);
450
- this.savedArray = null;
451
- var string = this.asString();
452
- this.setString(string);
453
- }
454
- },
455
- {
456
- key: "continue",
457
- value: function _continue(context) {
458
- var substitutionsString = this.getString(); ///
459
- context.trace("Continuing with the '".concat(substitutionsString, "' substitutions."));
460
- this.savedArray = null;
461
- }
462
- },
463
199
  {
464
200
  key: "asString",
465
201
  value: function asString() {
@@ -485,13 +221,5 @@ var _default = (0, _elements.define)((_Substitutions = /*#__PURE__*/ function(El
485
221
  ]);
486
222
  return Substitutions;
487
223
  }(_wrap_native_super(_occamlanguages.Element)), _define_property(_Substitutions, "name", "Substitutions"), _Substitutions));
488
- function leftDifference(arrayA, arrayB) {
489
- filter(arrayA, function(elementA) {
490
- var arrayBIncludesElementA = arrayB.includes(elementA);
491
- if (!arrayBIncludesElementA) {
492
- return true;
493
- }
494
- });
495
- }
496
224
 
497
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzdWJzdGl0dXRpb25zU3RyaW5nRnJvbVN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCB7IGZpbmQsIGZpcnN0LCBjbGVhciwgcHJ1bmUsIGZpbHRlciwgZXh0cmFjdCwgY29tcHJlc3MsIGNvcnJlbGF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBTdWJzdGl0dXRpb25zIGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYXJyYXksIHNhdmVkQXJyYXkpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUpO1xuXG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xuICAgIHRoaXMuc2F2ZWRBcnJheSA9IHNhdmVkQXJyYXk7XG4gIH1cblxuICBnZXRBcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcnJheTtcbiAgfVxuXG4gIGdldFNhdmVkQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZWRBcnJheTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZXMoKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlcyA9IFtdO1xuXG4gICAgdGhpcy5mb3JFYWNoU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgICBtZXRhdmFyaWFibGVzLnB1c2gobWV0YXZhcmlhYmxlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbXByZXNzKG1ldGF2YXJpYWJsZXMsIChtZXRhdmFyaWFibGVBLCBtZXRhdmFyaWFibGVCKSA9PiB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIgPSBtZXRhdmFyaWFibGVCLmlzRXF1YWxUbyhtZXRhdmFyaWFibGVBKTtcblxuICAgICAgaWYgKCFtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlcztcbiAgfVxuXG4gIGdldE5vblRyaXZpYWxMZW5ndGgoKSB7XG4gICAgY29uc3Qgbm9uVHJpdmlhbExlbmd0aCA9IHRoaXMucmVkdWNlU3Vic3RpdHV0aW9uKChub25Ucml2aWFsTGVuZ3RoLCBzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvblRyaXZpYWwgPSBzdWJzdGl0dXRpb24uaXNUcml2aWFsKCk7XG5cbiAgICAgIGlmICghc3Vic3RpdHV0aW9uVHJpdmlhbCkge1xuICAgICAgICBub25Ucml2aWFsTGVuZ3RoICs9IDE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub25Ucml2aWFsTGVuZ3RoO1xuICAgIH0sIDApO1xuXG4gICAgcmV0dXJuIG5vblRyaXZpYWxMZW5ndGg7XG4gIH1cblxuICBnZXRGaXJzdFN1YnN0aXR1dGlvbigpIHtcbiAgICBsZXQgZmlyc3RTdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5nZXRMZW5ndGgoKTtcblxuICAgIGlmIChsZW5ndGggPiAwKSB7XG4gICAgICBmaXJzdFN1YnN0aXR1dGlvbiA9IGZpcnN0KHRoaXMuYXJyYXkpO1xuICAgIH1cblxuICAgIHJldHVybiBmaXJzdFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGdldExlbmd0aCgpIHsgcmV0dXJuIHRoaXMuYXJyYXkubGVuZ3RoOyB9XG5cbiAgbWFwU3Vic3RpdHV0aW9uKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5Lm1hcChjYWxsYmFjayk7IH1cblxuICBzb21lU3Vic3RpdHV0aW9uKGNhbGxiYWNrKSB7IHJldHVybiB0aGlzLmFycmF5LnNvbWUoY2FsbGJhY2spOyB9XG5cbiAgZXZlcnlTdWJzdGl0dXRpb24oY2FsbGJhY2spIHsgcmV0dXJuIHRoaXMuYXJyYXkuZXZlcnkoY2FsbGJhY2spOyB9XG5cbiAgcmVkdWNlU3Vic3RpdHV0aW9uKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHsgcmV0dXJuIHRoaXMuYXJyYXkucmVkdWNlKGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpOyB9XG5cbiAgZm9yRWFjaFN1YnN0aXR1dGlvbihjYWxsYmFjaykgeyB0aGlzLmFycmF5LmZvckVhY2goY2FsbGJhY2spOyB9XG5cbiAgZXh0cmFjdFN1YnN0aXR1dGlvbihjYWxsYmNhaykgeyByZXR1cm4gZXh0cmFjdCh0aGlzLmFycmF5LCBjYWxsYmNhayk7IH1cblxuICBmaW5kU3Vic3RpdHV0aW9ucyhjYWxsYmFjaykge1xuICAgIGxldCBzdHJpbmc7XG5cbiAgICBjb25zdCBhcnJheSA9IGZpbmQodGhpcy5hcnJheSwgY2FsbGJhY2spLFxuICAgICAgICAgIGNvbnRleHQgPSBudWxsO1xuXG4gICAgc3RyaW5nID0gbnVsbDtcblxuICAgIGNvbnN0IG5vZGUgPSBudWxsLFxuICAgICAgICAgIHNhdmVkQXJyYXkgPSBbXSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zID0gbmV3IFN1YnN0aXR1dGlvbnMoY29udGV4dCwgc3RyaW5nLCBub2RlLCBhcnJheSwgc2F2ZWRBcnJheSk7XG5cbiAgICBzdHJpbmcgPSBzdWJzdGl0dXRpb25zLmFzU3RyaW5nKCk7XG5cbiAgICBzdWJzdGl0dXRpb25zLnNldFN0cmluZyhzdHJpbmcpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25WYXJpYWJsZSA9IHN1YnN0aXR1dGlvbi5nZXRWYXJpYWJsZSgpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uVmFyaWFibGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uVmFyaWFibGVFcXVhbFRvVmFyaWFibGUgPSBzdWJzdGl0dXRpb25WYXJpYWJsZS5pc0VxdWFsVG8odmFyaWFibGUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb25WYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkgfHwgbnVsbDtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH1cblxuICBmaW5kU3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSB0aGlzLmZpbmRTdWJzdGl0dXRpb25zKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUgPSBzdWJzdGl0dXRpb24uaXNNZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cblxuICBmaW5kQ29tcGxleFN1YnN0aXR1dGlvbnNCeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpIHtcbiAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9ucyA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbnMoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uQ29tcGxleCA9IHN1YnN0aXR1dGlvbi5pc0NvbXBsZXgoKTtcblxuICAgICAgaWYgKHN1YnN0aXR1dGlvbkNvbXBsZXgpIHtcbiAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgICAgIGNvbXBsZXhTdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlID0gY29tcGxleFN1YnN0aXR1dGlvbi5pc01ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKTtcblxuICAgICAgICBpZiAoY29tcGxleFN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXBsZXhTdWJzdGl0dXRpb25zO1xuICB9XG5cbiAgaXNTdWJzdGl0dXRpb25QcmVzZW50QnlWYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHRoaXMuZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGUodmFyaWFibGUpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvblByZXNlbnQgPSAoc3Vic3RpdHV0aW9uICE9PSBudWxsKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25QcmVzZW50O1xuICB9XG5cbiAgYWRkU3Vic3RpdHV0aW9uKHN1YnN0aXR1dGlvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25zU3RyaW5nID0gdGhpcy5hc1N0cmluZygpOyAgLy8vXG5cbiAgICB0aGlzLmFycmF5LnB1c2goc3Vic3RpdHV0aW9uKTtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuYXNTdHJpbmcoKTtcblxuICAgIHRoaXMuc2V0U3RyaW5nKHN0cmluZyk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBBZGRlZCB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uIHRvIHRoZSAnJHtzdWJzdGl0dXRpb25zU3RyaW5nfScgc3Vic3RpdHV0aW9ucy5gKTtcbiAgfVxuXG4gIHJlbW92ZVN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdWJzdGl0dXRpb25BID0gc3Vic3RpdHV0aW9uOyAvLy9cblxuICAgIHBydW5lKHRoaXMuYXJyYXksIChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb247IC8vL1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uQSAhPT0gc3Vic3RpdHV0aW9uQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuYXNTdHJpbmcoKSxcbiAgICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uc1N0cmluZyA9IHN0cmluZzsgLy8vXG5cbiAgICB0aGlzLnNldFN0cmluZyhzdHJpbmcpO1xuXG4gICAgY29udGV4dC50cmFjZShgUmVtb3ZlZCB0aGUgJyR7c3Vic3RpdHV0aW9uU3RyaW5nfScgc3Vic3RpdHV0aW9uIGZyb20gdGhlICcke3N1YnN0aXR1dGlvbnNTdHJpbmd9JyBzdWJzdGl0dXRpb25zLmApO1xuICB9XG5cbiAgY29ycmVsYXRlU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKSB7XG4gICAgY29uc3QgYXJyYXkgPSBzdWJzdGl0dXRpb25zLmdldEFycmF5KCksXG4gICAgICAgICAgYXJyYXlBID0gYXJyYXksIC8vL1xuICAgICAgICAgIGFycmF5QiA9IHRoaXMuYXJyYXksICAvLy9cbiAgICAgICAgICBjb3JyZWxhdGVzID0gY29ycmVsYXRlKGFycmF5QSwgYXJyYXlCLCAoc3Vic3RpdHV0aW9uQSwgc3Vic3RpdHV0aW9uQikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uQUlzRVF1YWxUb1N1YnN0aXR1dGlvbkIgPSBzdWJzdGl0dXRpb25BLmlzRXF1YWxUbyhzdWJzdGl0dXRpb25CKTtcblxuICAgICAgICAgICAgaWYgKHN1YnN0aXR1dGlvbkFJc0VRdWFsVG9TdWJzdGl0dXRpb25CKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvcnJlbGF0ZXM7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICBjbGVhcih0aGlzLmFycmF5KTtcblxuICAgIHRoaXMuc2F2ZWRBcnJheSA9IG51bGw7XG4gIH1cblxuICByZXNvbHZlKGNvbnRleHQpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVzID0gdGhpcy5nZXRNZXRhdmFyaWFibGVzKCk7XG5cbiAgICBtZXRhdmFyaWFibGVzLmZvckVhY2goKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvbnMgPSB0aGlzLmZpbmRDb21wbGV4U3Vic3RpdHV0aW9uc0J5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgICBjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkID0gY29tcGxleFN1YnN0aXR1dGlvbnMuZXZlcnlTdWJzdGl0dXRpb24oKGNvbXBsZXhTdWJzdGl0dXRpb24pID0+IHtcbiAgICAgICAgICAgICAgbGV0IHJlc29sdmVkO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSB0aGlzLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uID0gY29tcGxleFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgICAgICAgICAgICAgcmVzb2x2ZWQgPSBzdWJzdGl0dXRpb24uaXNSZXNvbHZlZCgpO1xuXG4gICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb24ucmVzb2x2ZShzdWJzdGl0dXRpb25zLCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXJlUmVzb2x2ZWQoKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlcyA9IHRoaXMuZ2V0TWV0YXZhcmlhYmxlcygpLFxuICAgICAgICAgIHJlc29sdmVkID0gbWV0YXZhcmlhYmxlcy5ldmVyeSgobWV0YXZhcmlhYmxlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wbGV4U3Vic3RpdHV0aW9ucyA9IHRoaXMuZmluZENvbXBsZXhTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlKSxcbiAgICAgICAgICAgICAgICAgIGNvbXBsZXhTdWJzdGl0dXRpb25zUmVzb2x2ZWQgPSBjb21wbGV4U3Vic3RpdHV0aW9ucy5ldmVyeVN1YnN0aXR1dGlvbigoY29tcGxleFN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcGxleFN1YnN0aXR1dGlvblJlc29sdmVkID0gY29tcGxleFN1YnN0aXR1dGlvbi5pc1Jlc29sdmVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV4U3Vic3RpdHV0aW9uUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXhTdWJzdGl0dXRpb25zUmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gIH1cblxuICBzbmFwc2hvdChjb250ZXh0KSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVGFraW5nIGEgc25hcHNob3Qgb2YgdGhlICcke3N1YnN0aXR1dGlvbnNTdHJpbmd9JyBzdWJzdGl0dXRpb25zLmApO1xuXG4gICAgdGhpcy5zYXZlZEFycmF5ID0gW1xuICAgICAgLi4udGhpcy5hcnJheVxuICAgIF07XG4gIH1cblxuICByb2xsYmFjayhjb250ZXh0KSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgUm9sbGluZyBiYWNrIHRoZSAnJHtzdWJzdGl0dXRpb25zU3RyaW5nfScgc3Vic3RpdHV0aW9ucy5gKTtcblxuICAgIGNvbnN0IGFycmF5ID0gW1xuICAgICAgLi4udGhpcy5hcnJheVxuICAgIF07XG5cbiAgICBsZWZ0RGlmZmVyZW5jZShhcnJheSwgdGhpcy5zYXZlZEFycmF5KTtcblxuICAgIGFycmF5LmZvckVhY2goKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVTdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBjb250ZXh0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYXJyYXkgPSBbXG4gICAgICAuLi50aGlzLnNhdmVkQXJyYXlcbiAgICBdO1xuXG4gICAgdGhpcy5zYXZlZEFycmF5ID0gbnVsbDtcblxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuYXNTdHJpbmcoKTtcblxuICAgIHRoaXMuc2V0U3RyaW5nKHN0cmluZyk7XG4gIH1cblxuICBjb250aW51ZShjb250ZXh0KSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uc1N0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgQ29udGludWluZyB3aXRoIHRoZSAnJHtzdWJzdGl0dXRpb25zU3RyaW5nfScgc3Vic3RpdHV0aW9ucy5gKTtcblxuICAgIHRoaXMuc2F2ZWRBcnJheSA9IG51bGw7XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBsZXQgc3RyaW5nO1xuXG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5nZXRMZW5ndGgoKTtcblxuICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgIHN0cmluZyA9IEVNUFRZX1NUUklORztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9ucyA9IHRoaXMuYXJyYXksIC8vL1xuICAgICAgICAgICAgc3Vic3RpdHV0aW9uc1N0cmluZyA9IHN1YnN0aXR1dGlvbnNTdHJpbmdGcm9tU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKTtcblxuICAgICAgc3RyaW5nID0gc3Vic3RpdHV0aW9uc1N0cmluZzsgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJTdWJzdGl0dXRpb25zXCI7XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKGNvbnRleHQpIHtcbiAgICBjb25zdCBub2RlID0gbnVsbCxcbiAgICAgICAgICBzdHJpbmcgPSBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgYXJyYXkgPSBbXSxcbiAgICAgICAgICBzYXZlZEFycmF5ID0gW10sXG4gICAgICAgICAgc3Vic3RpdHV0aW9ucyA9IG5ldyBTdWJzdGl0dXRpb25zKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYXJyYXksIHNhdmVkQXJyYXkpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBsZWZ0RGlmZmVyZW5jZShhcnJheUEsIGFycmF5Qikge1xuICBmaWx0ZXIoYXJyYXlBLCAoZWxlbWVudEEpID0+IHtcbiAgICBjb25zdCBhcnJheUJJbmNsdWRlc0VsZW1lbnRBID0gYXJyYXlCLmluY2x1ZGVzKGVsZW1lbnRBKTtcblxuICAgIGlmICghYXJyYXlCSW5jbHVkZXNFbGVtZW50QSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJmaW5kIiwiYXJyYXlVdGlsaXRpZXMiLCJmaXJzdCIsImNsZWFyIiwicHJ1bmUiLCJmaWx0ZXIiLCJleHRyYWN0IiwiY29tcHJlc3MiLCJjb3JyZWxhdGUiLCJkZWZpbmUiLCJTdWJzdGl0dXRpb25zIiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJhcnJheSIsInNhdmVkQXJyYXkiLCJnZXRBcnJheSIsImdldFNhdmVkQXJyYXkiLCJnZXRNZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlcyIsImZvckVhY2hTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGUiLCJnZXRNZXRhdmFyaWFibGUiLCJwdXNoIiwibWV0YXZhcmlhYmxlQSIsIm1ldGF2YXJpYWJsZUIiLCJtZXRhdmFyaWFibGVBRXF1YWxUb01ldGF2YXJpYWJsZUIiLCJpc0VxdWFsVG8iLCJnZXROb25Ucml2aWFsTGVuZ3RoIiwibm9uVHJpdmlhbExlbmd0aCIsInJlZHVjZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblRyaXZpYWwiLCJpc1RyaXZpYWwiLCJnZXRGaXJzdFN1YnN0aXR1dGlvbiIsImZpcnN0U3Vic3RpdHV0aW9uIiwibGVuZ3RoIiwiZ2V0TGVuZ3RoIiwibWFwU3Vic3RpdHV0aW9uIiwiY2FsbGJhY2siLCJtYXAiLCJzb21lU3Vic3RpdHV0aW9uIiwic29tZSIsImV2ZXJ5U3Vic3RpdHV0aW9uIiwiZXZlcnkiLCJpbml0aWFsVmFsdWUiLCJyZWR1Y2UiLCJmb3JFYWNoIiwiZXh0cmFjdFN1YnN0aXR1dGlvbiIsImNhbGxiY2FrIiwiZmluZFN1YnN0aXR1dGlvbnMiLCJzdWJzdGl0dXRpb25zIiwiYXNTdHJpbmciLCJzZXRTdHJpbmciLCJmaW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZSIsInZhcmlhYmxlIiwiZmluZFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblZhcmlhYmxlIiwiZ2V0VmFyaWFibGUiLCJzdWJzdGl0dXRpb25WYXJpYWJsZUVxdWFsVG9WYXJpYWJsZSIsImZpbmRTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGUiLCJzdWJzdGl0dXRpb25NZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlIiwiaXNNZXRhdmFyaWFibGVFcXVhbFRvTWV0YXZhcmlhYmxlIiwiZmluZENvbXBsZXhTdWJzdGl0dXRpb25zQnlNZXRhdmFyaWFibGUiLCJjb21wbGV4U3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbkNvbXBsZXgiLCJpc0NvbXBsZXgiLCJjb21wbGV4U3Vic3RpdHV0aW9uIiwiY29tcGxleFN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZUVxdWFsVG9NZXRhdmFyaWFibGUiLCJpc1N1YnN0aXR1dGlvblByZXNlbnRCeVZhcmlhYmxlIiwic3Vic3RpdHV0aW9uUHJlc2VudCIsImFkZFN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblN0cmluZyIsImdldFN0cmluZyIsInN1YnN0aXR1dGlvbnNTdHJpbmciLCJ0cmFjZSIsInJlbW92ZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbkEiLCJzdWJzdGl0dXRpb25CIiwiY29ycmVsYXRlU3Vic3RpdHV0aW9ucyIsImFycmF5QSIsImFycmF5QiIsImNvcnJlbGF0ZXMiLCJzdWJzdGl0dXRpb25BSXNFUXVhbFRvU3Vic3RpdHV0aW9uQiIsInJlc29sdmUiLCJjb21wbGV4U3Vic3RpdHV0aW9uc1Jlc29sdmVkIiwicmVzb2x2ZWQiLCJpc1Jlc29sdmVkIiwiYXJlUmVzb2x2ZWQiLCJjb21wbGV4U3Vic3RpdHV0aW9uUmVzb2x2ZWQiLCJzbmFwc2hvdCIsInJvbGxiYWNrIiwibGVmdERpZmZlcmVuY2UiLCJjb250aW51ZSIsIkVNUFRZX1NUUklORyIsInN1YnN0aXR1dGlvbnNTdHJpbmdGcm9tU3Vic3RpdHV0aW9ucyIsImZyb21Ob3RoaW5nIiwiRWxlbWVudCIsIm5hbWUiLCJlbGVtZW50QSIsImFycmF5QkluY2x1ZGVzRWxlbWVudEEiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0E7OztlQUFBOzs7OEJBVHdCO3lCQUNPO3dCQUVSO3lCQUNNO3NCQUN3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXJELElBQVFBLE9BQW9FQyx5QkFBYyxDQUFsRkQsTUFBTUUsUUFBOERELHlCQUFjLENBQTVFQyxPQUFPQyxRQUF1REYseUJBQWMsQ0FBckVFLE9BQU9DLFFBQWdESCx5QkFBYyxDQUE5REcsT0FBT0MsU0FBeUNKLHlCQUFjLENBQXZESSxRQUFRQyxVQUFpQ0wseUJBQWMsQ0FBL0NLLFNBQVNDLFdBQXdCTix5QkFBYyxDQUF0Q00sVUFBVUMsWUFBY1AseUJBQWMsQ0FBNUJPO0lBRTlELFdBQWVDLElBQUFBLGdCQUFNLGtDQUFDOzthQUFNQyxjQUNkQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUVDLFVBQVU7Z0NBRDFCTDs7Z0JBRXhCLGtCQUZ3QkE7WUFFbEJDO1lBQVNDO1lBQVFDOztRQUV2QixNQUFL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
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBzdWJzdGl0dXRpb25zU3RyaW5nRnJvbVN1YnN0aXR1dGlvbnMgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCB7IGZpcnN0LCBleHRyYWN0LCBjb3JyZWxhdGUgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgU3Vic3RpdHV0aW9ucyBleHRlbmRzIEVsZW1lbnQge1xuICBnZXROb25Ucml2aWFsTGVuZ3RoKCkge1xuICAgIGNvbnN0IG5vblRyaXZpYWxMZW5ndGggPSB0aGlzLnJlZHVjZVN1YnN0aXR1dGlvbigobm9uVHJpdmlhbExlbmd0aCwgc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25Ucml2aWFsID0gc3Vic3RpdHV0aW9uLmlzVHJpdmlhbCgpO1xuXG4gICAgICBpZiAoIXN1YnN0aXR1dGlvblRyaXZpYWwpIHtcbiAgICAgICAgbm9uVHJpdmlhbExlbmd0aCArPSAxO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9uVHJpdmlhbExlbmd0aDtcbiAgICB9LCAwKTtcblxuICAgIHJldHVybiBub25Ucml2aWFsTGVuZ3RoO1xuICB9XG5cbiAgZ2V0Rmlyc3RTdWJzdGl0dXRpb24oKSB7XG4gICAgbGV0IGZpcnN0U3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCk7XG5cbiAgICBpZiAobGVuZ3RoID4gMCkge1xuICAgICAgZmlyc3RTdWJzdGl0dXRpb24gPSBmaXJzdCh0aGlzLmFycmF5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3RTdWJzdGl0dXRpb247XG4gIH1cblxuICBleHRyYWN0U3Vic3RpdHV0aW9uKGNhbGxiY2FrKSB7IHJldHVybiBleHRyYWN0KHRoaXMuYXJyYXksIGNhbGxiY2FrKTsgfVxuXG4gIGNvcnJlbGF0ZVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IGFycmF5ID0gc3Vic3RpdHV0aW9ucy5nZXRBcnJheSgpLFxuICAgICAgICAgIGFycmF5QSA9IGFycmF5LCAvLy9cbiAgICAgICAgICBhcnJheUIgPSB0aGlzLmFycmF5LCAgLy8vXG4gICAgICAgICAgY29ycmVsYXRlcyA9IGNvcnJlbGF0ZShhcnJheUEsIGFycmF5QiwgKHN1YnN0aXR1dGlvbkEsIHN1YnN0aXR1dGlvbkIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbkFJc0VRdWFsVG9TdWJzdGl0dXRpb25CID0gc3Vic3RpdHV0aW9uQS5pc0VxdWFsVG8oc3Vic3RpdHV0aW9uQik7XG5cbiAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25BSXNFUXVhbFRvU3Vic3RpdHV0aW9uQikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgIHJldHVybiBjb3JyZWxhdGVzO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgbGV0IHN0cmluZztcblxuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuZ2V0TGVuZ3RoKCk7XG5cbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICBzdHJpbmcgPSBFTVBUWV9TVFJJTkc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbnMgPSB0aGlzLmFycmF5LCAvLy9cbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbnNTdHJpbmcgPSBzdWJzdGl0dXRpb25zU3RyaW5nRnJvbVN1YnN0aXR1dGlvbnMoc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIHN0cmluZyA9IHN1YnN0aXR1dGlvbnNTdHJpbmc7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiU3Vic3RpdHV0aW9uc1wiO1xuXG4gIHN0YXRpYyBmcm9tTm90aGluZyhjb250ZXh0KSB7XG4gICAgY29uc3Qgbm9kZSA9IG51bGwsXG4gICAgICAgICAgc3RyaW5nID0gRU1QVFlfU1RSSU5HLFxuICAgICAgICAgIGFycmF5ID0gW10sXG4gICAgICAgICAgc2F2ZWRBcnJheSA9IFtdLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbnMgPSBuZXcgU3Vic3RpdHV0aW9ucyhjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGFycmF5LCBzYXZlZEFycmF5KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xuICB9XG59KTtcbiJdLCJuYW1lcyI6WyJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZXh0cmFjdCIsImNvcnJlbGF0ZSIsImRlZmluZSIsIlN1YnN0aXR1dGlvbnMiLCJnZXROb25Ucml2aWFsTGVuZ3RoIiwibm9uVHJpdmlhbExlbmd0aCIsInJlZHVjZVN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblRyaXZpYWwiLCJpc1RyaXZpYWwiLCJnZXRGaXJzdFN1YnN0aXR1dGlvbiIsImZpcnN0U3Vic3RpdHV0aW9uIiwibGVuZ3RoIiwiZ2V0TGVuZ3RoIiwiYXJyYXkiLCJleHRyYWN0U3Vic3RpdHV0aW9uIiwiY2FsbGJjYWsiLCJjb3JyZWxhdGVTdWJzdGl0dXRpb25zIiwic3Vic3RpdHV0aW9ucyIsImdldEFycmF5IiwiYXJyYXlBIiwiYXJyYXlCIiwiY29ycmVsYXRlcyIsInN1YnN0aXR1dGlvbkEiLCJzdWJzdGl0dXRpb25CIiwic3Vic3RpdHV0aW9uQUlzRVF1YWxUb1N1YnN0aXR1dGlvbkIiLCJpc0VxdWFsVG8iLCJhc1N0cmluZyIsInN0cmluZyIsIkVNUFRZX1NUUklORyIsInN1YnN0aXR1dGlvbnNTdHJpbmciLCJzdWJzdGl0dXRpb25zU3RyaW5nRnJvbVN1YnN0aXR1dGlvbnMiLCJmcm9tTm90aGluZyIsImNvbnRleHQiLCJub2RlIiwic2F2ZWRBcnJheSIsIkVsZW1lbnQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFXQTs7O2VBQUE7Ozs4QkFUd0I7eUJBQ087d0JBRVI7eUJBQ007c0JBQ3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVyRCxJQUFRQSxRQUE4QkMseUJBQWMsQ0FBNUNELE9BQU9FLFVBQXVCRCx5QkFBYyxDQUFyQ0MsU0FBU0MsWUFBY0YseUJBQWMsQ0FBNUJFO0lBRXhCLFdBQWVDLElBQUFBLGdCQUFNLGtDQUFDOzthQUFNQztnQ0FBQUE7UUFBTixPQUFBLGtCQUFNQTs7OztZQUMxQkMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLG1CQUFtQixJQUFJLENBQUNDLGtCQUFrQixDQUFDLFNBQUNELGtCQUFrQkU7b0JBQ2xFLElBQU1DLHNCQUFzQkQsYUFBYUUsU0FBUztvQkFFbEQsSUFBSSxDQUFDRCxxQkFBcUI7d0JBQ3hCSCxvQkFBb0I7b0JBQ3RCO29CQUVBLE9BQU9BO2dCQUNULEdBQUc7Z0JBRUgsT0FBT0E7WUFDVDs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFJQyxvQkFBb0I7Z0JBRXhCLElBQU1DLFNBQVMsSUFBSSxDQUFDQyxTQUFTO2dCQUU3QixJQUFJRCxTQUFTLEdBQUc7b0JBQ2RELG9CQUFvQmIsTUFBTSxJQUFJLENBQUNnQixLQUFLO2dCQUN0QztnQkFFQSxPQUFPSDtZQUNUOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBLG9CQUFvQkMsUUFBUTtnQkFBSSxPQUFPaEIsUUFBUSxJQUFJLENBQUNjLEtBQUssRUFBRUU7WUFBVzs7O1lBRXRFQyxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCQyxhQUFhO2dCQUNsQyxJQUFNSixRQUFRSSxjQUFjQyxRQUFRLElBQzlCQyxTQUFTTixPQUNUTyxTQUFTLElBQUksQ0FBQ1AsS0FBSyxFQUNuQlEsYUFBYXJCLFVBQVVtQixRQUFRQyxRQUFRLFNBQUNFLGVBQWVDO29CQUNyRCxJQUFNQyxzQ0FBc0NGLGNBQWNHLFNBQVMsQ0FBQ0Y7b0JBRXBFLElBQUlDLHFDQUFxQzt3QkFDdkMsT0FBTztvQkFDVDtnQkFDRjtnQkFFTixPQUFPSDtZQUNUOzs7WUFFQUssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQUlDO2dCQUVKLElBQU1oQixTQUFTLElBQUksQ0FBQ0MsU0FBUztnQkFFN0IsSUFBSUQsV0FBVyxHQUFHO29CQUNoQmdCLFNBQVNDLHVCQUFZO2dCQUN2QixPQUFPO29CQUNMLElBQU1YLGdCQUFnQixJQUFJLENBQUNKLEtBQUssRUFDMUJnQixzQkFBc0JDLElBQUFBLDRDQUFvQyxFQUFDYjtvQkFFakVVLFNBQVNFLHFCQUFxQixHQUFHO2dCQUNuQztnQkFFQSxPQUFPRjtZQUNUOzs7O1lBSU9JLEtBQUFBO21CQUFQLFNBQU9BLFlBQVlDLE9BQU87Z0JBQ3hCLElBQU1DLE9BQU8sTUFDUE4sU0FBU0MsdUJBQVksRUFDckJmLFFBQVEsRUFBRSxFQUNWcUIsYUFBYSxFQUFFLEVBQ2ZqQixnQkFBZ0IsSUFBSWYsY0FBYzhCLFNBQVNMLFFBQVFNLE1BQU1wQixPQUFPcUI7Z0JBRXRFLE9BQU9qQjtZQUNUOzs7O3FCQXZFZ0RrQix1QkFBTyxJQTZEdkQsaUNBQU9DLFFBQU8ifQ==