occam-verify-cli 0.0.960 → 0.0.962

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 (67) hide show
  1. package/lib/context/local.js +3 -9
  2. package/lib/proofStep.js +8 -5
  3. package/lib/substitution/termForVariable.js +24 -25
  4. package/lib/unifier/statementWithCombinator.js +6 -6
  5. package/lib/unify/statementAtainstStatement.js +16 -16
  6. package/lib/unify/statementWithBracketedCombinator.js +30 -0
  7. package/lib/unify/statementWithCombinators.js +40 -0
  8. package/lib/unify/statementWithMetaType.js +6 -30
  9. package/lib/unify/termWithBracketedConstructor.js +39 -0
  10. package/lib/unify/termWithConstructors.js +61 -0
  11. package/lib/unify/termWithType.js +4 -12
  12. package/lib/utilities/assignments.js +9 -12
  13. package/lib/verifier/intrinsicLevel.js +140 -0
  14. package/lib/verifier/metaLevel.js +11 -20
  15. package/lib/verifier/statementAsCombinator.js +9 -9
  16. package/lib/verifier/termAsConstructor.js +5 -5
  17. package/lib/verify/assertion/contained.js +2 -3
  18. package/lib/verify/assertion/defined.js +2 -4
  19. package/lib/verify/assertion/subproof.js +20 -18
  20. package/lib/verify/assertion/type.js +1 -2
  21. package/lib/verify/declaration.js +27 -9
  22. package/lib/verify/frame.js +25 -6
  23. package/lib/verify/premise.js +3 -3
  24. package/lib/verify/proofStep.js +23 -30
  25. package/lib/verify/statement/qualified.js +93 -137
  26. package/lib/verify/statement/unqualified.js +18 -104
  27. package/lib/verify/statement.js +95 -76
  28. package/lib/verify/statementAsCombinator.js +2 -2
  29. package/lib/verify/statementGivenMetaType.js +41 -0
  30. package/lib/verify/supposition.js +3 -3
  31. package/lib/verify/term.js +39 -65
  32. package/lib/verify/termAsConstructor.js +2 -2
  33. package/lib/verify/termGivenType.js +34 -0
  34. package/package.json +1 -1
  35. package/src/context/local.js +4 -13
  36. package/src/proofStep.js +10 -5
  37. package/src/substitution/termForVariable.js +33 -30
  38. package/src/unifier/statementWithCombinator.js +5 -5
  39. package/src/unify/statementAtainstStatement.js +13 -13
  40. package/src/unify/statementWithBracketedCombinator.js +22 -0
  41. package/src/unify/statementWithCombinators.js +38 -0
  42. package/src/unify/statementWithMetaType.js +6 -42
  43. package/src/unify/termWithBracketedConstructor.js +39 -0
  44. package/src/unify/termWithConstructors.js +63 -0
  45. package/src/unify/termWithType.js +4 -20
  46. package/src/utilities/assignments.js +6 -13
  47. package/src/verifier/intrinsicLevel.js +42 -0
  48. package/src/verifier/metaLevel.js +13 -21
  49. package/src/verifier/statementAsCombinator.js +11 -7
  50. package/src/verifier/termAsConstructor.js +4 -3
  51. package/src/verify/assertion/contained.js +1 -3
  52. package/src/verify/assertion/defined.js +1 -4
  53. package/src/verify/assertion/subproof.js +22 -18
  54. package/src/verify/assertion/type.js +0 -1
  55. package/src/verify/declaration.js +34 -11
  56. package/src/verify/frame.js +32 -5
  57. package/src/verify/premise.js +3 -3
  58. package/src/verify/proofStep.js +26 -38
  59. package/src/verify/statement/qualified.js +104 -184
  60. package/src/verify/statement/unqualified.js +19 -149
  61. package/src/verify/statement.js +126 -72
  62. package/src/verify/statementAsCombinator.js +1 -1
  63. package/src/verify/statementGivenMetaType.js +37 -0
  64. package/src/verify/supposition.js +3 -3
  65. package/src/verify/term.js +44 -93
  66. package/src/verify/termAsConstructor.js +1 -1
  67. package/src/verify/termGivenType.js +32 -0
@@ -8,192 +8,148 @@ Object.defineProperty(exports, "default", {
8
8
  return verifyQualifiedStatement;
9
9
  }
10
10
  });
11
- var _equality = /*#__PURE__*/ _interop_require_default(require("../equality"));
12
- var _judgement = /*#__PURE__*/ _interop_require_default(require("../judgement"));
13
- var _type = /*#__PURE__*/ _interop_require_default(require("../assertion/type"));
14
- var _metavariableWithStatement = /*#__PURE__*/ _interop_require_default(require("../../unify/metavariableWithStatement"));
11
+ var _statement = /*#__PURE__*/ _interop_require_default(require("../../verify/statement"));
15
12
  var _query = require("../../utilities/query");
16
13
  function _interop_require_default(obj) {
17
14
  return obj && obj.__esModule ? obj : {
18
15
  default: obj
19
16
  };
20
17
  }
21
- var statementNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement!"), equalityNodeQuery = (0, _query.nodeQuery)("/statement/equality!"), judgementNodeQuery = (0, _query.nodeQuery)("/statement/judgement!"), metavariableNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/reference/metavariable!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/statement/typeAssertion!");
22
- function verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, localContext) {
18
+ var statementNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement!"), metavariableNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/reference/metavariable!");
19
+ var unifyDerivedQualifiedStatementFunctions = [
20
+ unifyDerivedQualifiedStatementAWithRule,
21
+ unifyDerivedQualifiedStatementAWithAxiom,
22
+ unifyDerivedQualifiedStatementAWithLemma,
23
+ unifyDerivedQualifiedStatementAWithTheorem,
24
+ unifyDerivedQualifiedStatementAWithConjecture,
25
+ unifyDerivedQualifiedStatementAWithReference
26
+ ];
27
+ function verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext) {
23
28
  var qualifiedStatementVerified;
24
29
  var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
25
30
  localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement..."), qualifiedStatementNode);
26
- var unifyQualifiedStatementFunctions = [
27
- unifyQualifiedStatementAWithRule,
28
- unifyQualifiedStatementAWithAxiom,
29
- unifyQualifiedStatementAWithLemma,
30
- unifyQualifiedStatementAWithTheorem,
31
- unifyQualifiedStatementAWithConjecture,
32
- unifyQualifiedStatementAWithReference
33
- ];
34
- var qualifiedStatementUnified = unifyQualifiedStatementFunctions.some(function(unifyQualifiedStatementFunction) {
35
- var qualifiedStatementUnified = unifyQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
36
- if (qualifiedStatementUnified) {
37
- return true;
31
+ var statementNode = statementNodeQuery(qualifiedStatementNode), statementVerified = (0, _statement.default)(statementNode, assignments, derived, localContext);
32
+ if (statementVerified) {
33
+ if (derived) {
34
+ var derivedQualifiedStatementVerified = verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
35
+ qualifiedStatementVerified = derivedQualifiedStatementVerified; ///
36
+ } else {
37
+ qualifiedStatementVerified = true;
38
38
  }
39
- });
40
- if (qualifiedStatementUnified) {
41
- var derived = false, statementNode = statementNodeQuery(qualifiedStatementNode), statedStatementVerified = verifyStatedStatement(statementNode, assignments, derived, localContext);
42
- qualifiedStatementVerified = statedStatementVerified; ///
43
39
  }
44
40
  if (qualifiedStatementVerified) {
45
41
  localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement."), qualifiedStatementNode);
46
42
  }
47
43
  return qualifiedStatementVerified;
48
44
  }
49
- function unifyQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
50
- var qualifiedStatementUnifiedWithRule = false;
45
+ function verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
46
+ var derivedQualifiedStatementVerified;
47
+ var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
48
+ localContext.trace("Verifying the '".concat(qualifiedStatementString, "' derived qualified statement..."), qualifiedStatementNode);
49
+ var derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some(function(unifyDerivedQualifiedStatementFunction) {
50
+ var derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
51
+ return derivedQualifiedStatementUnified;
52
+ });
53
+ derivedQualifiedStatementVerified = derivedQualifiedStatementUnified; ///
54
+ if (derivedQualifiedStatementVerified) {
55
+ localContext.debug("...verified the '".concat(qualifiedStatementString, "' derived qualified statement."), qualifiedStatementNode);
56
+ }
57
+ return derivedQualifiedStatementVerified;
58
+ }
59
+ function unifyDerivedQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
60
+ var derivedQualifiedStatementUnifiedWithRule = false;
51
61
  var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), rule = localContext.findRuleByMetavariableNode(metavariableNode);
52
62
  if (rule !== null) {
53
63
  var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
54
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' rule..."), qualifiedStatementNode);
55
- var ruleMatchesStatement = rule.unifyStatement(statementNode, localContext);
56
- qualifiedStatementUnifiedWithRule = ruleMatchesStatement; ///
57
- if (qualifiedStatementUnifiedWithRule) {
58
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' rule."), qualifiedStatementNode);
64
+ localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' rule..."), qualifiedStatementNode);
65
+ var statementUnified = rule.unifyStatement(statementNode, localContext);
66
+ derivedQualifiedStatementUnifiedWithRule = statementUnified; ///
67
+ if (derivedQualifiedStatementUnifiedWithRule) {
68
+ localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' rule."), qualifiedStatementNode);
59
69
  }
60
70
  }
61
- return qualifiedStatementUnifiedWithRule;
71
+ return derivedQualifiedStatementUnifiedWithRule;
62
72
  }
63
- function unifyQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
64
- var qualifiedStatementUnifiedWithAxiom = false;
73
+ function unifyDerivedQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
74
+ var derivedQualifiedStatementUnifiedWithAxiom = false;
65
75
  var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), axiom = localContext.findAxiomByMetavariableNode(metavariableNode);
66
76
  if (axiom !== null) {
67
77
  var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
68
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' axiom..."), qualifiedStatementNode);
69
- var axiomMatchesStatement = axiom.unifyStatement(statementNode, localContext);
70
- qualifiedStatementUnifiedWithAxiom = axiomMatchesStatement; ///
71
- if (qualifiedStatementUnifiedWithAxiom) {
72
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' axiom."), qualifiedStatementNode);
78
+ localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' axiom..."), qualifiedStatementNode);
79
+ var statementUnified = axiom.unifyStatement(statementNode, localContext);
80
+ derivedQualifiedStatementUnifiedWithAxiom = statementUnified; ///
81
+ if (derivedQualifiedStatementUnifiedWithAxiom) {
82
+ localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' axiom."), qualifiedStatementNode);
73
83
  }
74
84
  }
75
- return qualifiedStatementUnifiedWithAxiom;
85
+ return derivedQualifiedStatementUnifiedWithAxiom;
76
86
  }
77
- function unifyQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
78
- var qualifiedStatementUnifiedWithLemma = false;
87
+ function unifyDerivedQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
88
+ var derivedQualifiedStatementUnifiedWithLemma = false;
79
89
  var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), lemma = localContext.findLemmaByMetavariableNode(metavariableNode);
80
90
  if (lemma !== null) {
81
91
  var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
82
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' lemma..."), qualifiedStatementNode);
83
- var lemmaMatchesStatement = lemma.unifyStatement(statementNode, localContext);
84
- qualifiedStatementUnifiedWithLemma = lemmaMatchesStatement; ///
85
- if (qualifiedStatementUnifiedWithLemma) {
86
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' lemma."), qualifiedStatementNode);
92
+ localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' lemma..."), qualifiedStatementNode);
93
+ var statementUnified = lemma.unifyStatement(statementNode, localContext);
94
+ derivedQualifiedStatementUnifiedWithLemma = statementUnified; ///
95
+ if (derivedQualifiedStatementUnifiedWithLemma) {
96
+ localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' lemma."), qualifiedStatementNode);
87
97
  }
88
98
  }
89
- return qualifiedStatementUnifiedWithLemma;
99
+ return derivedQualifiedStatementUnifiedWithLemma;
90
100
  }
91
- function unifyQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
92
- var qualifiedStatementUnifiedWithTheorem = false;
101
+ function unifyDerivedQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
102
+ var derivedQualifiedStatementUnifiedWithTheorem = false;
93
103
  var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), theorem = localContext.findTheoremByMetavariableNode(metavariableNode);
94
104
  if (theorem !== null) {
95
105
  var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
96
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' theorem..."), qualifiedStatementNode);
97
- var theoremMatchesStatement = theorem.unifyStatement(statementNode, localContext);
98
- qualifiedStatementUnifiedWithTheorem = theoremMatchesStatement; ///
99
- if (qualifiedStatementUnifiedWithTheorem) {
100
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' theorem."), qualifiedStatementNode);
106
+ localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' theorem..."), qualifiedStatementNode);
107
+ var statementUnified = theorem.unifyStatement(statementNode, localContext);
108
+ derivedQualifiedStatementUnifiedWithTheorem = statementUnified; ///
109
+ if (derivedQualifiedStatementUnifiedWithTheorem) {
110
+ localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' theorem."), qualifiedStatementNode);
101
111
  }
102
112
  }
103
- return qualifiedStatementUnifiedWithTheorem;
113
+ return derivedQualifiedStatementUnifiedWithTheorem;
104
114
  }
105
- function unifyQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
106
- var qualifiedStatementUnifiedWithConjecture = false;
115
+ function unifyDerivedQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
116
+ var derivedQualifiedStatementUnifiedWithConjecture = false;
107
117
  var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), conjecture = localContext.findConjectureByMetavariableNode(metavariableNode);
108
118
  if (conjecture !== null) {
109
119
  var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
110
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' conjecture..."), qualifiedStatementNode);
111
- var conjectureMatchesStatement = conjecture.unifyStatement(statementNode, localContext);
112
- qualifiedStatementUnifiedWithConjecture = conjectureMatchesStatement; ///
113
- if (qualifiedStatementUnifiedWithConjecture) {
114
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' conjecture."), qualifiedStatementNode);
120
+ localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' conjecture..."), qualifiedStatementNode);
121
+ var statementUnified = conjecture.unifyStatement(statementNode, localContext);
122
+ derivedQualifiedStatementUnifiedWithConjecture = statementUnified; ///
123
+ if (derivedQualifiedStatementUnifiedWithConjecture) {
124
+ localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' conjecture."), qualifiedStatementNode);
115
125
  }
116
126
  }
117
- return qualifiedStatementUnifiedWithConjecture;
127
+ return derivedQualifiedStatementUnifiedWithConjecture;
118
128
  }
119
- function unifyQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
120
- var qualifiedStatementUnifiedWithReference = false;
129
+ function unifyDerivedQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
130
+ var derivedQualifiedStatementUnifiedWithReference = false;
121
131
  var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
122
- localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' reference..."), qualifiedStatementNode);
132
+ localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' reference..."), qualifiedStatementNode);
123
133
  if (metavariablePresent) {
124
- var statementNode = statementNodeQuery(qualifiedStatementNode), localContextA = null, localContextB = localContext, statementNodeB = statementNode, substitutionNodeA = null, metavariableNodeA = metavariableNode, metavariableUnifiedWithStatement = (0, _metavariableWithStatement.default)(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB, function() {
125
- var verifiedAhead = true;
126
- return verifiedAhead;
127
- });
128
- qualifiedStatementUnifiedWithReference = metavariableUnifiedWithStatement; ///
129
- }
130
- if (qualifiedStatementUnifiedWithReference) {
131
- localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' reference."), qualifiedStatementNode);
132
- }
133
- return qualifiedStatementUnifiedWithReference;
134
- }
135
- function verifyStatedStatement(statementNode, assignments, derived, localContext) {
136
- var statedStatementVerified;
137
- var statementString = localContext.nodeAsString(statementNode);
138
- localContext.trace("Verifying the '".concat(statementString, "' stated statement..."), statementNode);
139
- var verifyStatedStatementFunctions = [
140
- verifyStatedStatementAsEquality,
141
- verifyStatedStatementAsJudgement,
142
- verifyStatedStatementAsTypeAssertion
143
- ];
144
- verifyStatedStatementFunctions.every(function(verifyStatedStatementFunction) {
145
- var statedStatementVerified = verifyStatedStatementFunction(statementNode, assignments, derived, localContext);
146
- if (statedStatementVerified) {
147
- return true;
148
- }
149
- });
150
- statedStatementVerified = true; ///
151
- if (statedStatementVerified) {
152
- localContext.debug("...verified the '".concat(statementString, "' stated statement."), statementNode);
134
+ debugger;
135
+ // const statementNode = statementNodeQuery(qualifiedStatementNode),
136
+ // localContextA = null,
137
+ // localContextB = localContext, ///
138
+ // statementNodeB = statementNode, ///
139
+ // substitutionNodeA = null,
140
+ // metavariableNodeA = metavariableNode, ///
141
+ // metavariableUnifiedWithStatement = unifyMetavariableWithStatement(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB, () => {
142
+ // const verifiedAhead = true;
143
+ //
144
+ // return verifiedAhead;
145
+ // });
146
+ //
147
+ // derivedQualifiedStatementUnifiedWithReference = metavariableUnifiedWithStatement; ///
153
148
  }
154
- return statedStatementVerified;
155
- }
156
- function verifyStatedStatementAsEquality(statementNode, assignments, derived, localContext) {
157
- var statedStatementVerifiedAsEquality = true; ///
158
- var equalityNode = equalityNodeQuery(statementNode);
159
- if (equalityNode !== null) {
160
- var statementString = localContext.nodeAsString(statementNode);
161
- localContext.trace("Verifying the '".concat(statementString, "' stated statement as an equality..."), statementNode);
162
- var equalityVerified = (0, _equality.default)(equalityNode, assignments, derived, localContext);
163
- statedStatementVerifiedAsEquality = equalityVerified; ///
164
- if (statedStatementVerifiedAsEquality) {
165
- localContext.debug("...verified the '".concat(statementString, "' stated statement as an equality."), statementNode);
166
- }
167
- }
168
- return statedStatementVerifiedAsEquality;
169
- }
170
- function verifyStatedStatementAsJudgement(statementNode, assignments, derived, localContext) {
171
- var statedStatementVerifiedAsJudgement = true;
172
- var judgementNode = judgementNodeQuery(statementNode);
173
- if (judgementNode !== null) {
174
- var statementString = localContext.nodeAsString(statementNode);
175
- localContext.trace("Verifying the '".concat(statementString, "' stated statement as a judgement..."), statementNode);
176
- var judgementVerified = (0, _judgement.default)(judgementNode, assignments, derived, localContext);
177
- statedStatementVerifiedAsJudgement = judgementVerified; ///
178
- if (statedStatementVerifiedAsJudgement) {
179
- localContext.debug("...verified the '".concat(statementString, "' stated statement as a judgement."), statementNode);
180
- }
181
- }
182
- return statedStatementVerifiedAsJudgement;
183
- }
184
- function verifyStatedStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
185
- var statementVerifiedAsTypeAssertion = true; ///
186
- var typeAssertionNode = typeAssertionNodeQuery(statementNode);
187
- if (typeAssertionNode !== null) {
188
- var statementString = localContext.nodeAsString(statementNode);
189
- localContext.trace("Verifying the '".concat(statementString, "' stated statement as a type assertion..."), statementNode);
190
- var typeAssertionVerified = (0, _type.default)(typeAssertionNode, assignments, derived, localContext);
191
- statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
192
- if (statementVerifiedAsTypeAssertion) {
193
- localContext.debug("...verified the '".concat(statementString, "' stated statement as a type assertion."), statementNode);
194
- }
149
+ if (derivedQualifiedStatementUnifiedWithReference) {
150
+ localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' reference."), qualifiedStatementNode);
195
151
  }
196
- return statementVerifiedAsTypeAssertion;
152
+ return derivedQualifiedStatementUnifiedWithReference;
197
153
  }
198
154
 
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeUp1ZGdlbWVudCBmcm9tIFwiLi4vanVkZ2VtZW50XCI7XG5pbXBvcnQgdmVyaWZ5VHlwZUFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uL3R5cGVcIjtcbmltcG9ydCB1bmlmeU1ldGF2YXJpYWJsZVdpdGhTdGF0ZW1lbnQgZnJvbSBcIi4uLy4uL3VuaWZ5L21ldGF2YXJpYWJsZVdpdGhTdGF0ZW1lbnRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAganVkZ2VtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9qdWRnZW1lbnQhXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9yZWZlcmVuY2UvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgYXNzaWdubWVudHMsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG5cbiAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSdWxlLFxuICAgIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbSxcbiAgICB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEsXG4gICAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0sXG4gICAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUsXG4gICAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZVxuICBdO1xuXG4gIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQgPSB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7ICAvLy9cbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkID0gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gZmFsc2UsXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlZFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVkU3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICB9XG5cbiAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGUgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBydWxlID0gbG9jYWxDb250ZXh0LmZpbmRSdWxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJ1bGUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHJ1bGVNYXRjaGVzU3RhdGVtZW50ID0gcnVsZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlID0gcnVsZU1hdGNoZXNTdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBydWxlLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQXhpb20gPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBheGlvbSA9IGxvY2FsQ29udGV4dC5maW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGF4aW9tLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBheGlvbU1hdGNoZXNTdGF0ZW1lbnQgPSBheGlvbS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSA9IGF4aW9tTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGF4aW9tLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aEF4aW9tO1xufVxuXG5mdW5jdGlvbiB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aExlbW1hID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgbGVtbWEgPSBsb2NhbENvbnRleHQuZmluZExlbW1hQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChsZW1tYSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgbGVtbWFNYXRjaGVzU3RhdGVtZW50ID0gbGVtbWEudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEgPSBsZW1tYU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhMZW1tYTtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0gPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICB0aGVvcmVtID0gbG9jYWxDb250ZXh0LmZpbmRUaGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmICh0aGVvcmVtICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHRoZW9yZW0uLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHRoZW9yZW1NYXRjaGVzU3RhdGVtZW50ID0gdGhlb3JlbS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtID0gdGhlb3JlbU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoVGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHRoZW9yZW0uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoVGhlb3JlbTtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aENvbmplY3R1cmUgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBjb25qZWN0dXJlID0gbG9jYWxDb250ZXh0LmZpbmRDb25qZWN0dXJlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChjb25qZWN0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50ID0gY29uamVjdHVyZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlID0gY29uamVjdHVyZU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGxvY2FsQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyByZWZlcmVuY2UuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbG9jYWxDb250ZXh0QSA9IG51bGwsXG4gICAgICAgICAgbG9jYWxDb250ZXh0QiA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZUIgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlQSA9IG51bGwsXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZUEgPSBtZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVVbmlmaWVkV2l0aFN0YXRlbWVudCA9IHVuaWZ5TWV0YXZhcmlhYmxlV2l0aFN0YXRlbWVudChtZXRhdmFyaWFibGVOb2RlQSwgc3RhdGVtZW50Tm9kZUIsIHN1YnN0aXR1dGlvbk5vZGVBLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJlZmVyZW5jZSA9IG1ldGF2YXJpYWJsZVVuaWZpZWRXaXRoU3RhdGVtZW50OyAvLy9cbiAgfVxuXG4gIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJlZmVyZW5jZSkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyByZWZlcmVuY2UuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2U7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlZFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5U3RhdGVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeVN0YXRlZFN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNKdWRnZW1lbnQsXG4gICAgdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uXG4gIF07XG5cbiAgdmVyaWZ5U3RhdGVkU3RhdGVtZW50RnVuY3Rpb25zLmV2ZXJ5KCh2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4geyAvLy9cbiAgICBjb25zdCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlZFN0YXRlbWVudEZ1bmN0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkID0gdHJ1ZTsgLy8vXG5cbiAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVkIHN0YXRlbWVudC5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSB0cnVlOyAvLy9cblxuICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoZXF1YWxpdHlOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBlcXVhbGl0eVZlcmlmaWVkID0gdmVyaWZ5RXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0p1ZGdlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50ID0gdHJ1ZTtcblxuICBjb25zdCBqdWRnZW1lbnROb2RlID0ganVkZ2VtZW50Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChqdWRnZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBqdWRnZW1lbnRWZXJpZmllZCA9IHZlcmlmeUp1ZGdlbWVudChqdWRnZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQgPSBqdWRnZW1lbnRWZXJpZmllZDsgIC8vL1xuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlZCBzdGF0ZW1lbnQgYXMgYSBqdWRnZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHRydWU7ICAvLy9cblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImVxdWFsaXR5Tm9kZVF1ZXJ5IiwianVkZ2VtZW50Tm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25zIiwiYXNzaWdubWVudHMiLCJsb2NhbENvbnRleHQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoUnVsZSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhMZW1tYSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhUaGVvcmVtIiwidW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoUmVmZXJlbmNlIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZCIsInNvbWUiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVyaXZlZCIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVN0YXRlZFN0YXRlbWVudCIsImRlYnVnIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlIiwibWV0YXZhcmlhYmxlTm9kZSIsInJ1bGUiLCJmaW5kUnVsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInJ1bGVNYXRjaGVzU3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aEF4aW9tIiwiYXhpb20iLCJmaW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUiLCJheGlvbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aExlbW1hIiwibGVtbWEiLCJmaW5kTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0iLCJ0aGVvcmVtIiwiZmluZFRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUiLCJ0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSIsImNvbmplY3R1cmUiLCJmaW5kQ29uamVjdHVyZUJ5TWV0YXZhcmlhYmxlTm9kZSIsImNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2UiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJzdGF0ZW1lbnROb2RlQiIsInN1YnN0aXR1dGlvbk5vZGVBIiwibWV0YXZhcmlhYmxlTm9kZUEiLCJtZXRhdmFyaWFibGVVbmlmaWVkV2l0aFN0YXRlbWVudCIsInVuaWZ5TWV0YXZhcmlhYmxlV2l0aFN0YXRlbWVudCIsInZlcmlmaWVkQWhlYWQiLCJzdGF0ZW1lbnRTdHJpbmciLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNKdWRnZW1lbnQiLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJldmVyeSIsInZlcmlmeVN0YXRlZFN0YXRlbWVudEZ1bmN0aW9uIiwic3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5IiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlWZXJpZmllZCIsInZlcmlmeUVxdWFsaXR5Iiwic3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0p1ZGdlbWVudCIsImp1ZGdlbWVudE5vZGUiLCJqdWRnZW1lbnRWZXJpZmllZCIsInZlcmlmeUp1ZGdlbWVudCIsInN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIl0sIm1h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
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVN0YXRlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvcmVmZXJlbmNlL21ldGF2YXJpYWJsZSFcIik7XG5cbmNvbnN0IHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSdWxlLFxuICB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aEF4aW9tLFxuICB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aExlbW1hLFxuICB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0sXG4gIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoQ29uamVjdHVyZSxcbiAgdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSZWZlcmVuY2Vcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudChxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudChxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZCA9IHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkID0gdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgIHJldHVybiBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZDtcbiAgfSk7XG5cbiAgZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQ7IC8vL1xuXG4gIGlmIChkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgcnVsZSA9IGxvY2FsQ29udGV4dC5maW5kUnVsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJ1bGUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZWQgPSBydWxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlID0gc3RhdGVtZW50VW5pZmllZDsgIC8vL1xuXG4gICAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJ1bGUuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoQXhpb20ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGF4aW9tID0gbG9jYWxDb250ZXh0LmZpbmRBeGlvbUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBheGlvbS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IGF4aW9tLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSA9IHN0YXRlbWVudFVuaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aEF4aW9tKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBheGlvbS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQXhpb207XG59XG5cbmZ1bmN0aW9uIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhMZW1tYSA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGxlbW1hID0gbG9jYWxDb250ZXh0LmZpbmRMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobGVtbWEgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IGxlbW1hLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhMZW1tYSA9IHN0YXRlbWVudFVuaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aExlbW1hKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWE7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoVGhlb3JlbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0gPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICB0aGVvcmVtID0gbG9jYWxDb250ZXh0LmZpbmRUaGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmICh0aGVvcmVtICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgdGhlb3JlbS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IHRoZW9yZW0udW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0gPSBzdGF0ZW1lbnRVbmlmaWVkOyAvLy9cblxuICAgIGlmIChkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyB0aGVvcmVtLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtO1xufVxuXG5mdW5jdGlvbiB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgY29uamVjdHVyZSA9IGxvY2FsQ29udGV4dC5maW5kQ29uamVjdHVyZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAoY29uamVjdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZWQgPSBjb25qZWN0dXJlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlID0gc3RhdGVtZW50VW5pZmllZDsgLy8vXG5cbiAgICBpZiAoZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgY29uamVjdHVyZS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSZWZlcmVuY2UocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2UgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gbG9jYWxDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcblxuICAgIGRlYnVnZ2VyXG5cbiAgICAvLyBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgIC8vICAgICAgIGxvY2FsQ29udGV4dEEgPSBudWxsLFxuICAgIC8vICAgICAgIGxvY2FsQ29udGV4dEIgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgIC8vICAgICAgIHN0YXRlbWVudE5vZGVCID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgLy8gICAgICAgc3Vic3RpdHV0aW9uTm9kZUEgPSBudWxsLFxuICAgIC8vICAgICAgIG1ldGF2YXJpYWJsZU5vZGVBID0gbWV0YXZhcmlhYmxlTm9kZSwgLy8vXG4gICAgLy8gICAgICAgbWV0YXZhcmlhYmxlVW5pZmllZFdpdGhTdGF0ZW1lbnQgPSB1bmlmeU1ldGF2YXJpYWJsZVdpdGhTdGF0ZW1lbnQobWV0YXZhcmlhYmxlTm9kZUEsIHN0YXRlbWVudE5vZGVCLCBzdWJzdGl0dXRpb25Ob2RlQSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0QiwgKCkgPT4ge1xuICAgIC8vICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG4gICAgLy9cbiAgICAvLyAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgIC8vICAgICAgIH0pO1xuICAgIC8vXG4gICAgLy8gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlID0gbWV0YXZhcmlhYmxlVW5pZmllZFdpdGhTdGF0ZW1lbnQ7IC8vL1xuICB9XG5cbiAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJlZmVyZW5jZSkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJlZmVyZW5jZS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2U7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwidW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zIiwidW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSdWxlIiwidW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbSIsInVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEiLCJ1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0iLCJ1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUiLCJ1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25zIiwiYXNzaWdubWVudHMiLCJkZXJpdmVkIiwibG9jYWxDb250ZXh0IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVN0YXRlbWVudCIsImRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnQiLCJkZWJ1ZyIsImRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkIiwic29tZSIsInVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUnVsZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJydWxlIiwiZmluZFJ1bGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJzdGF0ZW1lbnRVbmlmaWVkIiwidW5pZnlTdGF0ZW1lbnQiLCJkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSIsImF4aW9tIiwiZmluZEF4aW9tQnlNZXRhdmFyaWFibGVOb2RlIiwiZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEiLCJsZW1tYSIsImZpbmRMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZSIsImRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0iLCJ0aGVvcmVtIiwiZmluZFRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUiLCJkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlIiwiY29uamVjdHVyZSIsImZpbmRDb25qZWN0dXJlQnlNZXRhdmFyaWFibGVOb2RlIiwiZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBd0JBOzs7Z0VBaEJJO3FCQUVGOzs7Ozs7QUFFMUIsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLG1DQUMvQkMsd0JBQXdCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXhDLElBQU1FLDBDQUEwQztJQUM5Q0M7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Q0FDRDtBQUVjLFNBQVNWLHlCQUF5Qlcsc0JBQXNCLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDeEgsSUFBSUM7SUFFSixJQUFNQywyQkFBMkJGLGFBQWFHLFlBQVksQ0FBQ1A7SUFFM0RJLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUEwQyxPQUF6QkYsMEJBQXlCLDZCQUEyQk47SUFFekYsSUFBTVMsZ0JBQWdCbkIsbUJBQW1CVSx5QkFDbkNVLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ0YsZUFBZVAsYUFBYUMsU0FBU0M7SUFFL0UsSUFBSU0sbUJBQW1CO1FBQ3JCLElBQUlQLFNBQVM7WUFDWCxJQUFNUyxvQ0FBb0NDLGdDQUFnQ2Isd0JBQXdCQyxlQUFlRztZQUVqSEMsNkJBQTZCTyxtQ0FBbUMsR0FBRztRQUNyRSxPQUFPO1lBQ0xQLDZCQUE2QjtRQUMvQjtJQUNGO0lBRUEsSUFBSUEsNEJBQTRCO1FBQzlC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
@@ -8,128 +8,42 @@ Object.defineProperty(exports, "default", {
8
8
  return verifyUnqualifiedStatement;
9
9
  }
10
10
  });
11
- var _equality = /*#__PURE__*/ _interop_require_default(require("../../verify/equality"));
12
- var _judgement = /*#__PURE__*/ _interop_require_default(require("../../verify/judgement"));
13
11
  var _statement = /*#__PURE__*/ _interop_require_default(require("../../verify/statement"));
14
- var _type = /*#__PURE__*/ _interop_require_default(require("../assertion/type"));
15
12
  var _query = require("../../utilities/query");
16
13
  function _interop_require_default(obj) {
17
14
  return obj && obj.__esModule ? obj : {
18
15
  default: obj
19
16
  };
20
17
  }
21
- var statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!"), equalityNodeQuery = (0, _query.nodeQuery)("/statement/equality!"), judgementNodeQuery = (0, _query.nodeQuery)("/statement/judgement!"), typeAssertionNodeQuery = (0, _query.nodeQuery)("/statement/typeAssertion!");
18
+ var statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!");
22
19
  function verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
23
20
  var unqualifiedStatementVerified;
24
21
  var unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
25
22
  localContext.trace("Verifying the '".concat(unqualifiedStatementString, "' unqualified statement..."), unqualifiedStatementNode);
26
- var verifyUnqualifiedStatementFunctions = [
27
- verifyDerivedUnqualifiedStatement,
28
- verifyStatedUnqualifiedStatement
29
- ];
30
- unqualifiedStatementVerified = verifyUnqualifiedStatementFunctions.some(function(verifyUnqualifiedStatementFunction) {
31
- var unqualifiedStatementVerified = verifyUnqualifiedStatementFunction(unqualifiedStatementNode, assignments, derived, localContext);
32
- if (unqualifiedStatementVerified) {
33
- return true;
23
+ var statementNode = statementNodeQuery(unqualifiedStatementNode), statementVerified = (0, _statement.default)(statementNode, assignments, derived, localContext);
24
+ if (statementVerified) {
25
+ if (derived) {
26
+ var derivedUnqualifiedStatementVerified = verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
27
+ unqualifiedStatementVerified = derivedUnqualifiedStatementVerified; ///
28
+ } else {
29
+ unqualifiedStatementVerified = true;
34
30
  }
35
- });
31
+ }
36
32
  if (unqualifiedStatementVerified) {
37
33
  localContext.debug("...verified the '".concat(unqualifiedStatementString, "' unqualified statement."), unqualifiedStatementNode);
38
34
  }
39
35
  return unqualifiedStatementVerified;
40
36
  }
41
- function verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
42
- var derivedUnqualifiedStatementVerified = false;
43
- if (derived) {
44
- var statementNode = statementNodeQuery(unqualifiedStatementNode), unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
45
- localContext.trace("Verifying the '".concat(unqualifiedStatementString, "' derived unqualified statement..."), unqualifiedStatementNode);
46
- var statementUnified = localContext.unifyStatement(statementNode, localContext);
47
- if (statementUnified) {
48
- derivedUnqualifiedStatementVerified = true;
49
- } else {
50
- var statementNode1 = statementNodeQuery(unqualifiedStatementNode), derivedStatementVerified = verifyDerivedStatement(statementNode1, assignments, derived, localContext);
51
- derivedUnqualifiedStatementVerified = derivedStatementVerified; ///
52
- }
53
- if (derivedUnqualifiedStatementVerified) {
54
- localContext.debug("...verified the '".concat(unqualifiedStatementString, "' derived unqualified statement."), unqualifiedStatementNode);
55
- }
37
+ function verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
38
+ var derivedUnqualifiedStatementVerified;
39
+ var unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
40
+ localContext.trace("Verifying the '".concat(unqualifiedStatementString, "' derived unqualified statement..."), unqualifiedStatementNode);
41
+ var statementNode = statementNodeQuery(unqualifiedStatementNode), statementUnified = localContext.unifyStatement(statementNode, localContext);
42
+ derivedUnqualifiedStatementVerified = statementUnified; ///
43
+ if (derivedUnqualifiedStatementVerified) {
44
+ localContext.debug("...verified the '".concat(unqualifiedStatementString, "' derived unqualified statement."), unqualifiedStatementNode);
56
45
  }
57
46
  return derivedUnqualifiedStatementVerified;
58
47
  }
59
- function verifyStatedUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
60
- var statedUnqualifiedStatementVerified = false;
61
- if (!derived) {
62
- var statementNode = statementNodeQuery(unqualifiedStatementNode), unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
63
- localContext.trace("Verifying the '".concat(unqualifiedStatementString, "' stated unqualified statement..."), unqualifiedStatementNode);
64
- var statementVerified = (0, _statement.default)(statementNode, assignments, derived, localContext);
65
- statedUnqualifiedStatementVerified = statementVerified; ///
66
- if (statedUnqualifiedStatementVerified) {
67
- localContext.debug("...verified the '".concat(unqualifiedStatementString, "' stated unqualified statement."), unqualifiedStatementNode);
68
- }
69
- }
70
- return statedUnqualifiedStatementVerified;
71
- }
72
- function verifyDerivedStatement(statementNode, assignments, derived, localContext) {
73
- var derivedStatementVerified;
74
- var statementString = localContext.nodeAsString(statementNode);
75
- localContext.trace("Verifying the '".concat(statementString, "' derived statement..."), statementNode);
76
- var verifyDerivedStatementFunctions = [
77
- verifyDerivedStatementAsEquality,
78
- verifyDerivedStatementAsJudgement,
79
- verifyDerivedStatementAsTypeAssertion
80
- ];
81
- derivedStatementVerified = verifyDerivedStatementFunctions.every(function(verifyDerivedStatementFunction) {
82
- var derivedStatementVerified = verifyDerivedStatementFunction(statementNode, assignments, derived, localContext);
83
- if (derivedStatementVerified) {
84
- return true;
85
- }
86
- });
87
- if (derivedStatementVerified) {
88
- localContext.debug("...verified the '".concat(statementString, "' derived statement."), statementNode);
89
- }
90
- return derivedStatementVerified;
91
- }
92
- function verifyDerivedStatementAsEquality(statementNode, assignments, derived, localContext) {
93
- var derivedStatementVerifiedAsEquality = true; ///
94
- var equalityNode = equalityNodeQuery(statementNode);
95
- if (equalityNode !== null) {
96
- var statementString = localContext.nodeAsString(statementNode);
97
- localContext.trace("Verifying the '".concat(statementString, "' derived statement as an equality..."), statementNode);
98
- var equalityVerified = (0, _equality.default)(equalityNode, assignments, derived, localContext);
99
- derivedStatementVerifiedAsEquality = equalityVerified; ///
100
- if (derivedStatementVerifiedAsEquality) {
101
- localContext.debug("...verified the '".concat(statementString, "' derived statement as an equality."), statementNode);
102
- }
103
- }
104
- return derivedStatementVerifiedAsEquality;
105
- }
106
- function verifyDerivedStatementAsJudgement(statementNode, assignments, derived, localContext) {
107
- var derivedStatementVerifiedAsJudgement = true;
108
- var judgementNode = judgementNodeQuery(statementNode);
109
- if (judgementNode !== null) {
110
- var statementString = localContext.nodeAsString(statementNode);
111
- localContext.trace("Verifying the '".concat(statementString, "' derived statement as a judgement..."), statementNode);
112
- var judgementVerified = (0, _judgement.default)(judgementNode, assignments, derived, localContext);
113
- derivedStatementVerifiedAsJudgement = judgementVerified; ///
114
- if (derivedStatementVerifiedAsJudgement) {
115
- localContext.debug("...verified the '".concat(statementString, "' derived statement as a judgement."), statementNode);
116
- }
117
- }
118
- return derivedStatementVerifiedAsJudgement;
119
- }
120
- function verifyDerivedStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
121
- var statementVerifiedAsTypeAssertion = true; ///
122
- var typeAssertionNode = typeAssertionNodeQuery(statementNode);
123
- if (typeAssertionNode !== null) {
124
- var statementString = localContext.nodeAsString(statementNode);
125
- localContext.trace("Verifying the '".concat(statementString, "' derived statement as a type assertion..."), statementNode);
126
- var typeAssertionVerified = (0, _type.default)(typeAssertionNode, assignments, derived, localContext);
127
- statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
128
- if (statementVerifiedAsTypeAssertion) {
129
- localContext.debug("...verified the '".concat(statementString, "' derived statement as a type assertion."), statementNode);
130
- }
131
- }
132
- return statementVerifiedAsTypeAssertion;
133
- }
134
48
 
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5RXF1YWxpdHkgZnJvbSBcIi4uLy4uL3ZlcmlmeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeUp1ZGdlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L2p1ZGdlbWVudFwiO1xuaW1wb3J0IHZlcmlmeVN0YXRlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvbi90eXBlXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAganVkZ2VtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9qdWRnZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeURlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudCxcbiAgICB2ZXJpZnlTdGF0ZWRVbnF1YWxpZmllZFN0YXRlbWVudFxuICBdO1xuXG4gIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24odW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChkZXJpdmVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IGxvY2FsQ29udGV4dC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5RGVyaXZlZFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgZGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIGlmIChkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHVucXVhbGlmaWVkIHN0YXRlbWVudC5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgc3RhdGVkIHVucXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHN0YXRlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBzdGF0ZW1lbnRWZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgdW5xdWFsaWZpZWQgc3RhdGVtZW50LmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeURlcml2ZWRTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgICB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNKdWRnZW1lbnQsXG4gICAgdmVyaWZ5RGVyaXZlZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvblxuICBdO1xuXG4gIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeURlcml2ZWRTdGF0ZW1lbnRGdW5jdGlvbnMuZXZlcnkoKHZlcmlmeURlcml2ZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4geyAgLy8vXG4gICAgY29uc3QgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAoZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gdHJ1ZTsgLy8vXG5cbiAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHlOb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5LmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNKdWRnZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQgPSB0cnVlO1xuXG4gIGNvbnN0IGp1ZGdlbWVudE5vZGUgPSBqdWRnZW1lbnROb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGp1ZGdlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBqdWRnZW1lbnRWZXJpZmllZCA9IHZlcmlmeUp1ZGdlbWVudChqdWRnZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50ID0ganVkZ2VtZW50VmVyaWZpZWQ7ICAvLy9cblxuICAgIGlmIChkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0p1ZGdlbWVudCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQgYXMgYSBqdWRnZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHJ1ZTsgIC8vL1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImVxdWFsaXR5Tm9kZVF1ZXJ5IiwianVkZ2VtZW50Tm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJ2ZXJpZnlTdGF0ZWRVbnF1YWxpZmllZFN0YXRlbWVudCIsInNvbWUiLCJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVidWciLCJkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRVbmlmaWVkIiwidW5pZnlTdGF0ZW1lbnQiLCJkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlEZXJpdmVkU3RhdGVtZW50Iiwic3RhdGVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9ucyIsInZlcmlmeURlcml2ZWRTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEFzSnVkZ2VtZW50IiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbiIsImV2ZXJ5IiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5VmVyaWZpZWQiLCJ2ZXJpZnlFcXVhbGl0eSIsImRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50IiwianVkZ2VtZW50Tm9kZSIsImp1ZGdlbWVudFZlcmlmaWVkIiwidmVyaWZ5SnVkZ2VtZW50Iiwic3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBd0JBOzs7K0RBWkc7Z0VBQ0M7Z0VBQ0E7MkRBQ0k7cUJBRU47Ozs7OztBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMscUNBQy9CQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUMseUJBQzlCRSxxQkFBcUJGLElBQUFBLGdCQUFTLEVBQUMsMEJBQy9CRyx5QkFBeUJILElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsMkJBQTJCTSx3QkFBd0IsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDN0csSUFBSUM7SUFFSixJQUFNQyw2QkFBNkJGLGFBQWFHLFlBQVksQ0FBQ047SUFFN0RHLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUE0QyxPQUEzQkYsNEJBQTJCLCtCQUE2Qkw7SUFFN0YsSUFBTVEsc0NBQXNDO1FBQzFDQztRQUNBQztLQUNEO0lBRUROLCtCQUErQkksb0NBQW9DRyxJQUFJLENBQUMsU0FBQ0M7UUFDdkUsSUFBTVIsK0JBQStCUSxtQ0FBbUNaLDBCQUEwQkMsYUFBYUMsU0FBU0M7UUFFeEgsSUFBSUMsOEJBQThCO1lBQ2hDLE9BQU87UUFDVDtJQUNGO0lBRUEsSUFBSUEsOEJBQThCO1FBQ2hDRCxhQUFhVSxLQUFLLENBQUMsQUFBQyxvQkFBOEMsT0FBM0JSLDRCQUEyQiw2QkFBMkJMO0lBQy9GO0lBRUEsT0FBT0k7QUFDVDtBQUVBLFNBQVNLLGtDQUFrQ1Qsd0JBQXdCLEVBQUVDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQ3JHLElBQUlXLHNDQUFzQztJQUUxQyxJQUFJWixTQUFTO1FBQ1gsSUFBTWEsZ0JBQWdCcEIsbUJBQW1CSywyQkFDbkNLLDZCQUE2QkYsYUFBYUcsWUFBWSxDQUFDTjtRQUU3REcsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQTRDLE9BQTNCRiw0QkFBMkIsdUNBQXFDTDtRQUVyRyxJQUFNZ0IsbUJBQW1CYixhQUFhYyxjQUFjLENBQUNGLGVBQWVaO1FBRXBFLElBQUlhLGtCQUFrQjtZQUNwQkYsc0NBQXNDO1FBQ3hDLE9BQU87WUFDTCxJQUFNQyxpQkFBZ0JwQixtQkFBbUJLLDJCQUNuQ2tCLDJCQUEyQkMsdUJBQXVCSixnQkFBZWQsYUFBYUMsU0FBU0M7WUFFN0ZXLHNDQUFzQ0ksMEJBQTBCLEdBQUc7UUFDckU7UUFFQSxJQUFJSixxQ0FBcUM7WUFDdkNYLGFBQWFVLEtBQUssQ0FBQyxBQUFDLG9CQUE4QyxPQUEzQlIsNEJBQTJCLHFDQUFtQ0w7UUFDdkc7SUFDRjtJQUVBLE9BQU9jO0FBQ1Q7QUFFQSxTQUFTSixpQ0FBaUNWLHdCQUF3QixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUNwRyxJQUFJaUIscUNBQXFDO0lBRXpDLElBQUksQ0FBQ2xCLFNBQVM7UUFDWixJQUFNYSxnQkFBZ0JwQixtQkFBbUJLLDJCQUNuQ0ssNkJBQTZCRixhQUFhRyxZQUFZLENBQUNOO1FBRTdERyxhQUFhSSxLQUFLLENBQUMsQUFBQyxrQkFBNEMsT0FBM0JGLDRCQUEyQixzQ0FBb0NMO1FBRXBHLElBQU1xQixvQkFBb0JDLElBQUFBLGtCQUFlLEVBQUNQLGVBQWVkLGFBQWFDLFNBQVNDO1FBRS9FaUIscUNBQXFDQyxtQkFBbUIsR0FBRztRQUUzRCxJQUFJRCxvQ0FBb0M7WUFDdENqQixhQUFhVSxLQUFLLENBQUMsQUFBQyxvQkFBOEMsT0FBM0JSLDRCQUEyQixvQ0FBa0NMO1FBQ3RHO0lBQ0Y7SUFFQSxPQUFPb0I7QUFDVDtBQUVBLFNBQVNELHVCQUF1QkosYUFBYSxFQUFFZCxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUMvRSxJQUFJZTtJQUVKLElBQU1LLGtCQUFrQnBCLGFBQWFHLFlBQVksQ0FBQ1M7SUFFbERaLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQmdCLGlCQUFnQiwyQkFBeUJSO0lBRTlFLElBQU1TLGtDQUFrQztRQUN0Q0M7UUFDQUM7UUFDQUM7S0FDRDtJQUVEVCwyQkFBMkJNLGdDQUFnQ0ksS0FBSyxDQUFDLFNBQUNDO1FBQ2hFLElBQU1YLDJCQUEyQlcsK0JBQStCZCxlQUFlZCxhQUFhQyxTQUFTQztRQUVyRyxJQUFJZSwwQkFBMEI7WUFDNUIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxJQUFJQSwwQkFBMEI7UUFDNUJmLGFBQWFVLEtBQUssQ0FBQyxBQUFDLG9CQUFtQyxPQUFoQlUsaUJBQWdCLHlCQUF1QlI7SUFDaEY7SUFFQSxPQUFPRztBQUNUO0FBRUEsU0FBU08saUNBQWlDVixhQUFhLEVBQUVkLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQ3pGLElBQUkyQixxQ0FBcUMsTUFBTSxHQUFHO0lBRWxELElBQU1DLGVBQWVsQyxrQkFBa0JrQjtJQUV2QyxJQUFJZ0IsaUJBQWlCLE1BQU07UUFDekIsSUFBTVIsa0JBQWtCcEIsYUFBYUcsWUFBWSxDQUFDUztRQUVsRFosYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQWlDLE9BQWhCZ0IsaUJBQWdCLDBDQUF3Q1I7UUFFN0YsSUFBTWlCLG1CQUFtQkMsSUFBQUEsaUJBQWMsRUFBQ0YsY0FBYzlCLGFBQWFDLFNBQVNDO1FBRTVFMkIscUNBQXFDRSxrQkFBa0IsR0FBRztRQUUxRCxJQUFJRixvQ0FBb0M7WUFDdEMzQixhQUFhVSxLQUFLLENBQUMsQUFBQyxvQkFBbUMsT0FBaEJVLGlCQUFnQix3Q0FBc0NSO1FBQy9GO0lBQ0Y7SUFFQSxPQUFPZTtBQUNUO0FBRUEsU0FBU0osa0NBQWtDWCxhQUFhLEVBQUVkLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxZQUFZO0lBQzFGLElBQUkrQixzQ0FBc0M7SUFFMUMsSUFBTUMsZ0JBQWdCckMsbUJBQW1CaUI7SUFFekMsSUFBSW9CLGtCQUFrQixNQUFNO1FBQzFCLElBQU1aLGtCQUFrQnBCLGFBQWFHLFlBQVksQ0FBQ1M7UUFFbERaLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUFpQyxPQUFoQmdCLGlCQUFnQiwwQ0FBd0NSO1FBRTdGLElBQU1xQixvQkFBb0JDLElBQUFBLGtCQUFlLEVBQUNGLGVBQWVsQyxhQUFhQyxTQUFTQztRQUUvRStCLHNDQUFzQ0UsbUJBQW9CLEdBQUc7UUFFN0QsSUFBSUYscUNBQXFDO1lBQ3ZDL0IsYUFBYVUsS0FBSyxDQUFDLEFBQUMsb0JBQW1DLE9BQWhCVSxpQkFBZ0Isd0NBQXNDUjtRQUMvRjtJQUNGO0lBRUEsT0FBT21CO0FBQ1Q7QUFFQSxTQUFTUCxzQ0FBc0NaLGFBQWEsRUFBRWQsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDOUYsSUFBSW1DLG1DQUFtQyxNQUFPLEdBQUc7SUFFakQsSUFBTUMsb0JBQW9CeEMsdUJBQXVCZ0I7SUFFakQsSUFBSXdCLHNCQUFzQixNQUFNO1FBQzlCLElBQU1oQixrQkFBa0JwQixhQUFhRyxZQUFZLENBQUNTO1FBRWxEWixhQUFhSSxLQUFLLENBQUMsQUFBQyxrQkFBaUMsT0FBaEJnQixpQkFBZ0IsK0NBQTZDUjtRQUVsRyxJQUFNeUIsd0JBQXdCQyxJQUFBQSxhQUFtQixFQUFDRixtQkFBbUJ0QyxhQUFhQyxTQUFTQztRQUUzRm1DLG1DQUFtQ0UsdUJBQXVCLEdBQUc7UUFFN0QsSUFBSUYsa0NBQWtDO1lBQ3BDbkMsYUFBYVUsS0FBSyxDQUFDLEFBQUMsb0JBQW1DLE9BQWhCVSxpQkFBZ0IsNkNBQTJDUjtRQUNwRztJQUNGO0lBRUEsT0FBT3VCO0FBQ1QifQ==
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5RGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHVucXVhbGlmaWVkIHN0YXRlbWVudC5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeURlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgZGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IGxvY2FsQ29udGV4dC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gIGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VW5pZmllZDsgIC8vL1xuXG4gIGlmIChkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50IiwiZGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlEZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJkZWJ1ZyIsInN0YXRlbWVudFVuaWZpZWQiLCJ1bmlmeVN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUF3QkE7OztnRUFOSTtxQkFFRjs7Ozs7O0FBRTFCLElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUV0QixTQUFTRiwyQkFBMkJHLHdCQUF3QixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUM3RyxJQUFJQztJQUVKLElBQU1DLDZCQUE2QkYsYUFBYUcsWUFBWSxDQUFDTjtJQUU3REcsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQTRDLE9BQTNCRiw0QkFBMkIsK0JBQTZCTDtJQUU3RixJQUFNUSxnQkFBZ0JWLG1CQUFtQkUsMkJBQ25DUyxvQkFBb0JDLElBQUFBLGtCQUFlLEVBQUNGLGVBQWVQLGFBQWFDLFNBQVNDO0lBRS9FLElBQUlNLG1CQUFtQjtRQUNyQixJQUFJUCxTQUFTO1lBQ1gsSUFBTVMsc0NBQXNDQyxrQ0FBa0NaLDBCQUEwQkc7WUFFeEdDLCtCQUErQk8scUNBQXFDLEdBQUc7UUFDekUsT0FBTztZQUNMUCwrQkFBK0I7UUFDakM7SUFDRjtJQUVBLElBQUlBLDhCQUE4QjtRQUNoQ0QsYUFBYVUsS0FBSyxDQUFDLEFBQUMsb0JBQThDLE9BQTNCUiw0QkFBMkIsNkJBQTJCTDtJQUMvRjtJQUVBLE9BQU9JO0FBQ1Q7QUFFQSxTQUFTUSxrQ0FBa0NaLHdCQUF3QixFQUFFRyxZQUFZO0lBQy9FLElBQUlRO0lBRUosSUFBTU4sNkJBQTZCRixhQUFhRyxZQUFZLENBQUNOO0lBRTdERyxhQUFhSSxLQUFLLENBQUMsQUFBQyxrQkFBNEMsT0FBM0JGLDRCQUEyQix1Q0FBcUNMO0lBRXJHLElBQU1RLGdCQUFnQlYsbUJBQW1CRSwyQkFDbkNjLG1CQUFtQlgsYUFBYVksY0FBYyxDQUFDUCxlQUFlTDtJQUVwRVEsc0NBQXNDRyxrQkFBbUIsR0FBRztJQUU1RCxJQUFJSCxxQ0FBcUM7UUFDdkNSLGFBQWFVLEtBQUssQ0FBQyxBQUFDLG9CQUE4QyxPQUEzQlIsNEJBQTJCLHFDQUFtQ0w7SUFDdkc7SUFFQSxPQUFPVztBQUNUIn0=