occam-verify-cli 1.0.383 → 1.0.385

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 (223) hide show
  1. package/lib/action/verify.js +2 -1
  2. package/lib/context/file.js +2 -2
  3. package/lib/context/release.js +2 -2
  4. package/lib/mixins/statement/verify.js +3 -3
  5. package/lib/mixins/step/unify.js +4 -4
  6. package/lib/mixins/term/verify.js +4 -4
  7. package/lib/ontology/assertion/contained.js +316 -0
  8. package/lib/ontology/assertion/defined.js +290 -0
  9. package/lib/ontology/assertion/property.js +271 -0
  10. package/lib/ontology/assertion/satisfies.js +254 -0
  11. package/lib/ontology/assertion/subproof.js +186 -0
  12. package/lib/ontology/assertion/type.js +252 -0
  13. package/lib/{dom → ontology}/axiom.js +3 -3
  14. package/lib/{dom → ontology}/combinator/bracketed.js +4 -4
  15. package/lib/ontology/combinator.js +141 -0
  16. package/lib/ontology/conclusion.js +172 -0
  17. package/lib/{dom → ontology}/conjecture.js +3 -3
  18. package/lib/{dom → ontology}/constructor/bracketed.js +5 -5
  19. package/lib/ontology/constructor.js +171 -0
  20. package/lib/ontology/declaration/combinator.js +168 -0
  21. package/lib/ontology/declaration/complexType.js +346 -0
  22. package/lib/ontology/declaration/constructor.js +199 -0
  23. package/lib/ontology/declaration/metavariable.js +209 -0
  24. package/lib/ontology/declaration/simpleType.js +243 -0
  25. package/lib/ontology/declaration/typePrefix.js +181 -0
  26. package/lib/ontology/declaration/variable.js +197 -0
  27. package/lib/ontology/declaration.js +360 -0
  28. package/lib/ontology/deduction.js +186 -0
  29. package/lib/ontology/derivation.js +155 -0
  30. package/lib/ontology/equality.js +288 -0
  31. package/lib/{dom → ontology}/error.js +3 -3
  32. package/lib/ontology/frame.js +362 -0
  33. package/lib/ontology/hypothesis.js +190 -0
  34. package/lib/ontology/judgement.js +241 -0
  35. package/lib/ontology/label.js +199 -0
  36. package/lib/{dom → ontology}/lemma.js +3 -3
  37. package/lib/{dom → ontology}/metaLemma.js +3 -3
  38. package/lib/{dom → ontology}/metaType.js +3 -3
  39. package/lib/{dom → ontology}/metatheorem.js +3 -3
  40. package/lib/ontology/metavariable.js +504 -0
  41. package/lib/{dom → ontology}/parameter.js +3 -3
  42. package/lib/ontology/premise.js +271 -0
  43. package/lib/ontology/procedureCall.js +243 -0
  44. package/lib/{dom → ontology}/procedureReference.js +3 -3
  45. package/lib/{dom → ontology}/proof.js +4 -4
  46. package/lib/ontology/property.js +166 -0
  47. package/lib/ontology/propertyRelation.js +202 -0
  48. package/lib/ontology/reference.js +293 -0
  49. package/lib/ontology/rule.js +375 -0
  50. package/lib/ontology/section.js +255 -0
  51. package/lib/ontology/signature.js +220 -0
  52. package/lib/{dom → ontology}/statement.js +3 -3
  53. package/lib/ontology/step.js +283 -0
  54. package/lib/ontology/subDerivation.js +147 -0
  55. package/lib/ontology/subproof.js +266 -0
  56. package/lib/ontology/substitution/frame.js +216 -0
  57. package/lib/{dom → ontology}/substitution/reference.js +3 -3
  58. package/lib/{dom → ontology}/substitution/statement.js +3 -3
  59. package/lib/ontology/substitution/term.js +230 -0
  60. package/lib/ontology/substitution.js +207 -0
  61. package/lib/ontology/supposition.js +283 -0
  62. package/lib/ontology/term.js +339 -0
  63. package/lib/{dom → ontology}/theorem.js +3 -3
  64. package/lib/ontology/topLevelAssertion.js +432 -0
  65. package/lib/ontology/topLevelMetaAssertion.js +235 -0
  66. package/lib/ontology/type.js +556 -0
  67. package/lib/ontology/typePrefix.js +99 -0
  68. package/lib/ontology/variable.js +331 -0
  69. package/lib/ontology.js +27 -0
  70. package/lib/preamble.js +60 -60
  71. package/lib/unifier/intrinsicLevel.js +3 -3
  72. package/lib/unifier/metaLevel.js +7 -7
  73. package/lib/unifier/metavariable.js +3 -3
  74. package/lib/unifier/statementWithCombinator.js +5 -5
  75. package/lib/unifier/termWithConstructor.js +3 -3
  76. package/lib/utilities/brackets.js +5 -5
  77. package/lib/utilities/context.js +12 -12
  78. package/lib/utilities/fileSystem.js +2 -2
  79. package/lib/utilities/json.js +30 -30
  80. package/lib/utilities/node.js +7 -7
  81. package/lib/utilities/release.js +12 -4
  82. package/lib/utilities/releaseContext.js +1 -1
  83. package/lib/utilities/substitutions.js +6 -6
  84. package/lib/utilities/type.js +2 -2
  85. package/lib/verifier/combinator.js +4 -4
  86. package/lib/verifier/constructor.js +3 -3
  87. package/lib/verifier/topLevel.js +18 -18
  88. package/package.json +1 -1
  89. package/src/action/verify.js +2 -0
  90. package/src/context/file.js +1 -1
  91. package/src/context/release.js +1 -1
  92. package/src/mixins/statement/verify.js +2 -2
  93. package/src/mixins/step/unify.js +3 -3
  94. package/src/mixins/term/verify.js +3 -3
  95. package/src/{dom → ontology}/assertion/contained.js +4 -4
  96. package/src/{dom → ontology}/assertion/defined.js +6 -6
  97. package/src/{dom → ontology}/assertion/property.js +5 -5
  98. package/src/{dom → ontology}/assertion/satisfies.js +5 -5
  99. package/src/{dom → ontology}/assertion/subproof.js +4 -4
  100. package/src/{dom → ontology}/assertion/type.js +5 -5
  101. package/src/{dom → ontology}/axiom.js +2 -2
  102. package/src/{dom → ontology}/combinator/bracketed.js +4 -4
  103. package/src/{dom → ontology}/combinator.js +4 -4
  104. package/src/{dom → ontology}/conclusion.js +4 -4
  105. package/src/{dom → ontology}/conjecture.js +2 -2
  106. package/src/{dom → ontology}/constructor/bracketed.js +5 -5
  107. package/src/{dom → ontology}/constructor.js +5 -5
  108. package/src/{dom → ontology}/declaration/combinator.js +4 -4
  109. package/src/{dom → ontology}/declaration/complexType.js +4 -4
  110. package/src/{dom → ontology}/declaration/constructor.js +4 -4
  111. package/src/{dom → ontology}/declaration/metavariable.js +5 -5
  112. package/src/{dom → ontology}/declaration/simpleType.js +4 -4
  113. package/src/{dom → ontology}/declaration/typePrefix.js +4 -4
  114. package/src/{dom → ontology}/declaration/variable.js +4 -4
  115. package/src/{dom → ontology}/declaration.js +5 -5
  116. package/src/{dom → ontology}/deduction.js +4 -4
  117. package/src/{dom → ontology}/derivation.js +4 -4
  118. package/src/{dom → ontology}/equality.js +6 -6
  119. package/src/{dom → ontology}/error.js +2 -2
  120. package/src/{dom → ontology}/frame.js +6 -6
  121. package/src/{dom → ontology}/hypothesis.js +5 -6
  122. package/src/{dom → ontology}/judgement.js +5 -5
  123. package/src/{dom → ontology}/label.js +4 -4
  124. package/src/{dom → ontology}/lemma.js +2 -2
  125. package/src/{dom → ontology}/metaLemma.js +2 -2
  126. package/src/{dom → ontology}/metaType.js +2 -2
  127. package/src/{dom → ontology}/metatheorem.js +2 -2
  128. package/src/{dom → ontology}/metavariable.js +8 -8
  129. package/src/{dom → ontology}/parameter.js +2 -2
  130. package/src/{dom → ontology}/premise.js +5 -5
  131. package/src/{dom → ontology}/procedureCall.js +5 -5
  132. package/src/{dom → ontology}/procedureReference.js +2 -2
  133. package/src/{dom → ontology}/proof.js +4 -4
  134. package/src/{dom → ontology}/property.js +4 -4
  135. package/src/{dom → ontology}/propertyRelation.js +4 -4
  136. package/src/{dom → ontology}/reference.js +6 -6
  137. package/src/{dom → ontology}/rule.js +7 -7
  138. package/src/{dom → ontology}/section.js +8 -8
  139. package/src/{dom → ontology}/signature.js +4 -4
  140. package/src/{dom → ontology}/statement.js +2 -2
  141. package/src/{dom → ontology}/step.js +4 -4
  142. package/src/{dom → ontology}/subDerivation.js +4 -4
  143. package/src/{dom → ontology}/subproof.js +5 -5
  144. package/src/{dom → ontology}/substitution/frame.js +4 -4
  145. package/src/{dom → ontology}/substitution/reference.js +2 -2
  146. package/src/{dom → ontology}/substitution/statement.js +2 -2
  147. package/src/{dom → ontology}/substitution/term.js +5 -5
  148. package/src/{dom → ontology}/supposition.js +5 -5
  149. package/src/{dom → ontology}/term.js +6 -6
  150. package/src/{dom → ontology}/theorem.js +2 -2
  151. package/src/{dom → ontology}/topLevelAssertion.js +6 -6
  152. package/src/{dom → ontology}/topLevelMetaAssertion.js +2 -2
  153. package/src/{dom → ontology}/type.js +4 -4
  154. package/src/{dom → ontology}/typePrefix.js +3 -5
  155. package/src/{dom → ontology}/variable.js +6 -6
  156. package/src/ontology.js +13 -0
  157. package/src/preamble.js +59 -59
  158. package/src/unifier/intrinsicLevel.js +2 -2
  159. package/src/unifier/metaLevel.js +6 -6
  160. package/src/unifier/metavariable.js +2 -2
  161. package/src/unifier/statementWithCombinator.js +4 -4
  162. package/src/unifier/termWithConstructor.js +2 -2
  163. package/src/utilities/brackets.js +4 -4
  164. package/src/utilities/context.js +11 -11
  165. package/src/utilities/fileSystem.js +1 -1
  166. package/src/utilities/json.js +29 -29
  167. package/src/utilities/node.js +6 -6
  168. package/src/utilities/release.js +1 -1
  169. package/src/utilities/releaseContext.js +3 -3
  170. package/src/utilities/substitutions.js +5 -5
  171. package/src/utilities/type.js +1 -1
  172. package/src/verifier/combinator.js +3 -3
  173. package/src/verifier/constructor.js +2 -2
  174. package/src/verifier/topLevel.js +17 -17
  175. package/lib/dom/assertion/contained.js +0 -316
  176. package/lib/dom/assertion/defined.js +0 -290
  177. package/lib/dom/assertion/property.js +0 -271
  178. package/lib/dom/assertion/satisfies.js +0 -254
  179. package/lib/dom/assertion/subproof.js +0 -186
  180. package/lib/dom/assertion/type.js +0 -252
  181. package/lib/dom/combinator.js +0 -141
  182. package/lib/dom/conclusion.js +0 -172
  183. package/lib/dom/constructor.js +0 -171
  184. package/lib/dom/declaration/combinator.js +0 -168
  185. package/lib/dom/declaration/complexType.js +0 -346
  186. package/lib/dom/declaration/constructor.js +0 -199
  187. package/lib/dom/declaration/metavariable.js +0 -209
  188. package/lib/dom/declaration/simpleType.js +0 -243
  189. package/lib/dom/declaration/typePrefix.js +0 -181
  190. package/lib/dom/declaration/variable.js +0 -197
  191. package/lib/dom/declaration.js +0 -360
  192. package/lib/dom/deduction.js +0 -186
  193. package/lib/dom/derivation.js +0 -155
  194. package/lib/dom/equality.js +0 -288
  195. package/lib/dom/frame.js +0 -362
  196. package/lib/dom/hypothesis.js +0 -191
  197. package/lib/dom/judgement.js +0 -241
  198. package/lib/dom/label.js +0 -199
  199. package/lib/dom/metavariable.js +0 -504
  200. package/lib/dom/premise.js +0 -271
  201. package/lib/dom/procedureCall.js +0 -243
  202. package/lib/dom/property.js +0 -166
  203. package/lib/dom/propertyRelation.js +0 -202
  204. package/lib/dom/reference.js +0 -293
  205. package/lib/dom/rule.js +0 -375
  206. package/lib/dom/section.js +0 -255
  207. package/lib/dom/signature.js +0 -220
  208. package/lib/dom/step.js +0 -283
  209. package/lib/dom/subDerivation.js +0 -147
  210. package/lib/dom/subproof.js +0 -266
  211. package/lib/dom/substitution/frame.js +0 -216
  212. package/lib/dom/substitution/term.js +0 -230
  213. package/lib/dom/substitution.js +0 -207
  214. package/lib/dom/supposition.js +0 -283
  215. package/lib/dom/term.js +0 -339
  216. package/lib/dom/topLevelAssertion.js +0 -432
  217. package/lib/dom/topLevelMetaAssertion.js +0 -235
  218. package/lib/dom/type.js +0 -556
  219. package/lib/dom/typePrefix.js +0 -100
  220. package/lib/dom/variable.js +0 -331
  221. package/lib/dom.js +0 -27
  222. package/src/dom.js +0 -13
  223. /package/src/{dom → ontology}/substitution.js +0 -0
@@ -40,7 +40,7 @@ _export(exports, {
40
40
  return typeAssertionFromStatement;
41
41
  }
42
42
  });
43
- var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
43
+ var _ontology = /*#__PURE__*/ _interop_require_default(require("../ontology"));
44
44
  var _local = /*#__PURE__*/ _interop_require_default(require("../context/local"));
45
45
  function _interop_require_default(obj) {
46
46
  return obj && obj.__esModule ? obj : {
@@ -49,52 +49,52 @@ function _interop_require_default(obj) {
49
49
  }
50
50
  function metavariableFromFrame(frame, context) {
51
51
  context = contextFromFrame(frame, context); ///
52
- var Metavariable = _dom.default.Metavariable, frameNode = frame.getNode(), metavariable = Metavariable.fromFrameNode(frameNode, context);
52
+ var Metavariable = _ontology.default.Metavariable, frameNode = frame.getNode(), metavariable = Metavariable.fromFrameNode(frameNode, context);
53
53
  return metavariable;
54
54
  }
55
55
  function equalityFromStatement(statement, context) {
56
56
  context = contextFromStatement(statement, context); ///
57
- var Equality = _dom.default.Equality, statementNode = statement.getNode(), equality = Equality.fromStatementNode(statementNode, context);
57
+ var Equality = _ontology.default.Equality, statementNode = statement.getNode(), equality = Equality.fromStatementNode(statementNode, context);
58
58
  return equality;
59
59
  }
60
60
  function judgementFromStatement(statement, context) {
61
61
  context = contextFromStatement(statement, context); ///
62
- var Judgement = _dom.default.Judgement, statementNode = statement.getNode(), judgement = Judgement.fromStatementNode(statementNode, context);
62
+ var Judgement = _ontology.default.Judgement, statementNode = statement.getNode(), judgement = Judgement.fromStatementNode(statementNode, context);
63
63
  return judgement;
64
64
  }
65
65
  function metavariableFromStatement(statement, context) {
66
66
  context = contextFromStatement(statement, context); ///
67
- var Metavariable = _dom.default.Metavariable, statementNode = statement.getNode(), metavariable = Metavariable.fromStatementNode(statementNode, context);
67
+ var Metavariable = _ontology.default.Metavariable, statementNode = statement.getNode(), metavariable = Metavariable.fromStatementNode(statementNode, context);
68
68
  return metavariable;
69
69
  }
70
70
  function typeAssertionFromStatement(statement, context) {
71
71
  context = contextFromStatement(statement, context); ///
72
- var TypeAssertion = _dom.default.TypeAssertion, statementNode = statement.getNode(), typeAssertion = TypeAssertion.fromStatementNode(statementNode, context);
72
+ var TypeAssertion = _ontology.default.TypeAssertion, statementNode = statement.getNode(), typeAssertion = TypeAssertion.fromStatementNode(statementNode, context);
73
73
  return typeAssertion;
74
74
  }
75
75
  function definedAssertionFromStatement(statement, context) {
76
76
  context = contextFromStatement(statement, context); ///
77
- var DefinedAssertion = _dom.default.DefinedAssertion, statementNode = statement.getNode(), definedAssertion = DefinedAssertion.fromStatementNode(statementNode, context);
77
+ var DefinedAssertion = _ontology.default.DefinedAssertion, statementNode = statement.getNode(), definedAssertion = DefinedAssertion.fromStatementNode(statementNode, context);
78
78
  return definedAssertion;
79
79
  }
80
80
  function propertyAssertionFromStatement(statement, context) {
81
81
  context = contextFromStatement(statement, context); ///
82
- var PropertyAssertion = _dom.default.PropertyAssertion, statementNode = statement.getNode(), propertyAssertion = PropertyAssertion.fromStatementNode(statementNode, context);
82
+ var PropertyAssertion = _ontology.default.PropertyAssertion, statementNode = statement.getNode(), propertyAssertion = PropertyAssertion.fromStatementNode(statementNode, context);
83
83
  return propertyAssertion;
84
84
  }
85
85
  function subproofAssertionFromStatement(statement, context) {
86
86
  context = contextFromStatement(statement, context); ///
87
- var SubproofAssertion = _dom.default.SubproofAssertion, statementNode = statement.getNode(), subproofAssertion = SubproofAssertion.fromStatementNode(statementNode, context);
87
+ var SubproofAssertion = _ontology.default.SubproofAssertion, statementNode = statement.getNode(), subproofAssertion = SubproofAssertion.fromStatementNode(statementNode, context);
88
88
  return subproofAssertion;
89
89
  }
90
90
  function containedAssertionFromStatement(statement, context) {
91
91
  context = contextFromStatement(statement, context); ///
92
- var ContainedAssertion = _dom.default.ContainedAssertion, statementNode = statement.getNode(), containedAssertion = ContainedAssertion.fromStatementNode(statementNode, context);
92
+ var ContainedAssertion = _ontology.default.ContainedAssertion, statementNode = statement.getNode(), containedAssertion = ContainedAssertion.fromStatementNode(statementNode, context);
93
93
  return containedAssertion;
94
94
  }
95
95
  function satisfiesAssertionFromStatement(statement, context) {
96
96
  context = contextFromStatement(statement, context); ///
97
- var SatisfiesAssertion = _dom.default.SatisfiesAssertion, statementNode = statement.getNode(), satisfiesAssertion = SatisfiesAssertion.fromStatementNode(statementNode, context);
97
+ var SatisfiesAssertion = _ontology.default.SatisfiesAssertion, statementNode = statement.getNode(), satisfiesAssertion = SatisfiesAssertion.fromStatementNode(statementNode, context);
98
98
  return satisfiesAssertion;
99
99
  }
100
100
  function contextFromFrame(frame, context) {
@@ -108,4 +108,4 @@ function contextFromStatement(statement, context) {
108
108
  return context;
109
109
  }
110
110
 
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L2xvY2FsXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tRnJhbWUoZnJhbWUsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tRnJhbWUoZnJhbWUsIGNvbnRleHQpOyAvLy9cblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICBmcmFtZU5vZGUgPSBmcmFtZS5nZXROb2RlKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXR5RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgRXF1YWxpdHkgfSA9IGRvbSxcbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGVxdWFsaXR5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgSnVkZ2VtZW50IH0gPSBkb20sXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBqdWRnZW1lbnQgPSBKdWRnZW1lbnQuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnRleHQgPSBjb250ZXh0RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiB9ID0gZG9tLFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgdHlwZUFzc2VydGlvbiA9IFR5cGVBc3NlcnRpb24uZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHR5cGVBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgRGVmaW5lZEFzc2VydGlvbiB9ID0gZG9tLFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgZGVmaW5lZEFzc2VydGlvbiA9IERlZmluZWRBc3NlcnRpb24uZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZmluZWRBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnRleHQgPSBjb250ZXh0RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICBjb25zdCB7IFByb3BlcnR5QXNzZXJ0aW9uIH0gPSBkb20sXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgU3VicHJvb2ZBc3NlcnRpb24gfSA9IGRvbSxcbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gU3VicHJvb2ZBc3NlcnRpb24uZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN1YnByb29mQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBkb20sXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBjb250YWluZWRBc3NlcnRpb24gPSBDb250YWluZWRBc3NlcnRpb24uZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdGlzZmllc0Fzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnRleHQgPSBjb250ZXh0RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAvLy9cblxuICBjb25zdCB7IFNhdGlzZmllc0Fzc2VydGlvbiB9ID0gZG9tLFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uID0gU2F0aXNmaWVzQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBzYXRpc2ZpZXNBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIGNvbnRleHRGcm9tRnJhbWUoZnJhbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgZnJhbWVUb2tlbnMgPSBmcmFtZS5nZXRUb2tlbnMoKSxcbiAgICAgICAgdG9rZW5zID0gZnJhbWVUb2tlbnMsIC8vL1xuICAgICAgICBsb2NhbENvbnRleHQgPSBMb2NhbENvbnRleHQuZnJvbUNvbnRleHRBbmRUb2tlbnMoY29udGV4dCwgdG9rZW5zKTtcblxuICBjb250ZXh0ID0gbG9jYWxDb250ZXh0OyAvLy9cblxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZnVuY3Rpb24gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudFRva2VucyA9IHN0YXRlbWVudC5nZXRUb2tlbnMoKSxcbiAgICAgICAgdG9rZW5zID0gc3RhdGVtZW50VG9rZW5zLCAvLy9cbiAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Db250ZXh0QW5kVG9rZW5zKGNvbnRleHQsIHRva2Vucyk7XG5cbiAgY29udGV4dCA9IGxvY2FsQ29udGV4dDsgLy8vXG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iXSwibmFtZXMiOlsiY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsImRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwiZXF1YWxpdHlGcm9tU3RhdGVtZW50IiwianVkZ2VtZW50RnJvbVN0YXRlbWVudCIsIm1ldGF2YXJpYWJsZUZyb21GcmFtZSIsIm1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnQiLCJwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJmcmFtZSIsImNvbnRleHQiLCJjb250ZXh0RnJvbUZyYW1lIiwiTWV0YXZhcmlhYmxlIiwiZG9tIiwiZnJhbWVOb2RlIiwiZ2V0Tm9kZSIsIm1ldGF2YXJpYWJsZSIsImZyb21GcmFtZU5vZGUiLCJzdGF0ZW1lbnQiLCJjb250ZXh0RnJvbVN0YXRlbWVudCIsIkVxdWFsaXR5Iiwic3RhdGVtZW50Tm9kZSIsImVxdWFsaXR5IiwiZnJvbVN0YXRlbWVudE5vZGUiLCJKdWRnZW1lbnQiLCJqdWRnZW1lbnQiLCJUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbiIsIkRlZmluZWRBc3NlcnRpb24iLCJkZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbiIsIlN1YnByb29mQXNzZXJ0aW9uIiwic3VicHJvb2ZBc3NlcnRpb24iLCJDb250YWluZWRBc3NlcnRpb24iLCJjb250YWluZWRBc3NlcnRpb24iLCJTYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJmcmFtZVRva2VucyIsImdldFRva2VucyIsInRva2VucyIsImxvY2FsQ29udGV4dCIsIkxvY2FsQ29udGV4dCIsImZyb21Db250ZXh0QW5kVG9rZW5zIiwic3RhdGVtZW50VG9rZW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFxRmdCQTtlQUFBQTs7UUE5QkFDO2VBQUFBOztRQXhDQUM7ZUFBQUE7O1FBVUFDO2VBQUFBOztRQXBCQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUE4QkFDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBcEJBQztlQUFBQTs7UUE5QkFDO2VBQUFBOzs7MERBM0NBOzREQUNTOzs7Ozs7QUFFbEIsU0FBU0wsc0JBQXNCTSxLQUFLLEVBQUVDLE9BQU87SUFDbERBLFVBQVVDLGlCQUFpQkYsT0FBT0MsVUFBVSxHQUFHO0lBRS9DLElBQU0sQUFBRUUsZUFBaUJDLFlBQUcsQ0FBcEJELGNBQ0ZFLFlBQVlMLE1BQU1NLE9BQU8sSUFDekJDLGVBQWVKLGFBQWFLLGFBQWEsQ0FBQ0gsV0FBV0o7SUFFM0QsT0FBT007QUFDVDtBQUVPLFNBQVNmLHNCQUFzQmlCLFNBQVMsRUFBRVIsT0FBTztJQUN0REEsVUFBVVMscUJBQXFCRCxXQUFXUixVQUFVLEdBQUc7SUFFdkQsSUFBTSxBQUFFVSxXQUFhUCxZQUFHLENBQWhCTyxVQUNGQyxnQkFBZ0JILFVBQVVILE9BQU8sSUFDakNPLFdBQVdGLFNBQVNHLGlCQUFpQixDQUFDRixlQUFlWDtJQUUzRCxPQUFPWTtBQUNUO0FBRU8sU0FBU3BCLHVCQUF1QmdCLFNBQVMsRUFB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
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvY29udGV4dC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG9udG9sb2d5IGZyb20gXCIuLi9vbnRvbG9neVwiO1xuaW1wb3J0IExvY2FsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9sb2NhbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlRnJvbUZyYW1lKGZyYW1lLCBjb250ZXh0KSB7XG4gIGNvbnRleHQgPSBjb250ZXh0RnJvbUZyYW1lKGZyYW1lLCBjb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IG9udG9sb2d5LFxuICAgICAgICBmcmFtZU5vZGUgPSBmcmFtZS5nZXROb2RlKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXR5RnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgRXF1YWxpdHkgfSA9IG9udG9sb2d5LFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gZXF1YWxpdHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgeyBKdWRnZW1lbnQgfSA9IG9udG9sb2d5LFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBqdWRnZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IG9udG9sb2d5LFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgVHlwZUFzc2VydGlvbiB9ID0gb250b2xvZ3ksXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gVHlwZUFzc2VydGlvbi5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gdHlwZUFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgeyBEZWZpbmVkQXNzZXJ0aW9uIH0gPSBvbnRvbG9neSxcbiAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIGRlZmluZWRBc3NlcnRpb24gPSBEZWZpbmVkQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgeyBQcm9wZXJ0eUFzc2VydGlvbiB9ID0gb250b2xvZ3ksXG4gICAgICAgIHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBwcm9wZXJ0eUFzc2VydGlvbiA9IFByb3BlcnR5QXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IGNvbnRleHRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gIGNvbnN0IHsgU3VicHJvb2ZBc3NlcnRpb24gfSA9IG9udG9sb2d5LFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc3VicHJvb2ZBc3NlcnRpb24gPSBTdWJwcm9vZkFzc2VydGlvbi5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgeyBDb250YWluZWRBc3NlcnRpb24gfSA9IG9udG9sb2d5LFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gQ29udGFpbmVkQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBjb250YWluZWRBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgY29uc3QgeyBTYXRpc2ZpZXNBc3NlcnRpb24gfSA9IG9udG9sb2d5LFxuICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgc2F0aXNmaWVzQXNzZXJ0aW9uID0gU2F0aXNmaWVzQXNzZXJ0aW9uLmZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBzYXRpc2ZpZXNBc3NlcnRpb247XG59XG5cbmZ1bmN0aW9uIGNvbnRleHRGcm9tRnJhbWUoZnJhbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgZnJhbWVUb2tlbnMgPSBmcmFtZS5nZXRUb2tlbnMoKSxcbiAgICAgICAgdG9rZW5zID0gZnJhbWVUb2tlbnMsIC8vL1xuICAgICAgICBsb2NhbENvbnRleHQgPSBMb2NhbENvbnRleHQuZnJvbUNvbnRleHRBbmRUb2tlbnMoY29udGV4dCwgdG9rZW5zKTtcblxuICBjb250ZXh0ID0gbG9jYWxDb250ZXh0OyAvLy9cblxuICByZXR1cm4gY29udGV4dDtcbn1cblxuZnVuY3Rpb24gY29udGV4dEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudFRva2VucyA9IHN0YXRlbWVudC5nZXRUb2tlbnMoKSxcbiAgICAgICAgdG9rZW5zID0gc3RhdGVtZW50VG9rZW5zLCAvLy9cbiAgICAgICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Db250ZXh0QW5kVG9rZW5zKGNvbnRleHQsIHRva2Vucyk7XG5cbiAgY29udGV4dCA9IGxvY2FsQ29udGV4dDsgLy8vXG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG4iXSwibmFtZXMiOlsiY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsImRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwiZXF1YWxpdHlGcm9tU3RhdGVtZW50IiwianVkZ2VtZW50RnJvbVN0YXRlbWVudCIsIm1ldGF2YXJpYWJsZUZyb21GcmFtZSIsIm1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnQiLCJwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJmcmFtZSIsImNvbnRleHQiLCJjb250ZXh0RnJvbUZyYW1lIiwiTWV0YXZhcmlhYmxlIiwib250b2xvZ3kiLCJmcmFtZU5vZGUiLCJnZXROb2RlIiwibWV0YXZhcmlhYmxlIiwiZnJvbUZyYW1lTm9kZSIsInN0YXRlbWVudCIsImNvbnRleHRGcm9tU3RhdGVtZW50IiwiRXF1YWxpdHkiLCJzdGF0ZW1lbnROb2RlIiwiZXF1YWxpdHkiLCJmcm9tU3RhdGVtZW50Tm9kZSIsIkp1ZGdlbWVudCIsImp1ZGdlbWVudCIsIlR5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uIiwiRGVmaW5lZEFzc2VydGlvbiIsImRlZmluZWRBc3NlcnRpb24iLCJQcm9wZXJ0eUFzc2VydGlvbiIsInByb3BlcnR5QXNzZXJ0aW9uIiwiU3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImNvbnRhaW5lZEFzc2VydGlvbiIsIlNhdGlzZmllc0Fzc2VydGlvbiIsInNhdGlzZmllc0Fzc2VydGlvbiIsImZyYW1lVG9rZW5zIiwiZ2V0VG9rZW5zIiwidG9rZW5zIiwibG9jYWxDb250ZXh0IiwiTG9jYWxDb250ZXh0IiwiZnJvbUNvbnRleHRBbmRUb2tlbnMiLCJzdGF0ZW1lbnRUb2tlbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXFGZ0JBO2VBQUFBOztRQTlCQUM7ZUFBQUE7O1FBeENBQztlQUFBQTs7UUFVQUM7ZUFBQUE7O1FBcEJBQztlQUFBQTs7UUE4QkFDO2VBQUFBOztRQThCQUM7ZUFBQUE7O1FBOEJBQztlQUFBQTs7UUFwQkFDO2VBQUFBOztRQTlCQUM7ZUFBQUE7OzsrREEzQ0s7NERBQ0k7Ozs7OztBQUVsQixTQUFTTCxzQkFBc0JNLEtBQUssRUFBRUMsT0FBTztJQUNsREEsVUFBVUMsaUJBQWlCRixPQUFPQyxVQUFVLEdBQUc7SUFFL0MsSUFBTSxBQUFFRSxlQUFpQkMsaUJBQVEsQ0FBekJELGNBQ0ZFLFlBQVlMLE1BQU1NLE9BQU8sSUFDekJDLGVBQWVKLGFBQWFLLGFBQWEsQ0FBQ0gsV0FBV0o7SUFFM0QsT0FBT007QUFDVDtBQUVPLFNBQVNmLHNCQUFzQmlCLFNBQVMsRUFBRVIsT0FBTztJQUN0REEsVUFBVVMscUJBQXFCRCxXQUFXUixVQUFVLEdBQUc7SUFFdkQsSUFBTSxBQUFFVSxXQUFhUCxpQkFBUSxDQUFyQk8sVUFDRkMsZ0JBQWdCSCxVQUFVSCxPQUFPLElBQ2pDTyxXQUFXRixTQUFT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
@@ -36,7 +36,7 @@ function releaseContextFromDependency(dependency, context, callback) {
36
36
  } else {
37
37
  var projectName = dependencyName, project = loadProject(projectName, projectsDirectoryPath);
38
38
  if (project !== null) {
39
- releaseContext1 = releaseContextFromProject(project, context);
39
+ releaseContext1 = (0, _releaseContext.releaseContextFromProject)(project, context);
40
40
  }
41
41
  }
42
42
  } catch (error) {
@@ -50,4 +50,4 @@ var _default = {
50
50
  releaseContextFromDependency: releaseContextFromDependency
51
51
  };
52
52
 
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlsZVN5c3RlbVV0aWxpdGllcyBhcyBvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tZmlsZS1zeXN0ZW1cIjtcbmltcG9ydCB7IHBhdGhVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgYXMgbmVjZXNzYXJ5RmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgcmVsZWFzZUNvbnRleHRGcm9tSlNPTiB9IGZyb20gXCIuLi91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHRcIjtcblxuY29uc3QgeyBsb2FkUHJvamVjdCB9ID0gb2NjYW1GaWxlU3lzdGVtVXRpbGl0aWVzLFxuICAgICAgeyBjb25jYXRlbmF0ZVBhdGhzIH0gPSBwYXRoVXRpbGl0aWVzLFxuICAgICAgeyByZWFkRmlsZSwgaXNFbnRyeUZpbGUsIGNoZWNrRW50cnlFeGlzdHMgfSA9IG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IHByb2Nlc3MuY3dkKCksIC8vL1xuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBlbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBlbnRyeUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoZW50cnlQYXRoKTtcblxuICBpZiAoIWVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKGVycm9yLCByZWxlYXNlQ29udGV4dCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgcmVsZWFzZUNvbnRleHQgPSBudWxsO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoZW50cnlQYXRoKTtcblxuICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gZW50cnlQYXRoLCAvLy9cbiAgICAgICAgICAgIGNvbnRlbnQgPSByZWFkRmlsZShmaWxlUGF0aCksXG4gICAgICAgICAgICBqc29uU3RyaW5nID0gY29udGVudCwgLy8vXG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblxuICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcm9qZWN0TmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHByb2plY3ROYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xuXG4gICAgICBpZiAocHJvamVjdCAhPT0gbnVsbCkge1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0RnJvbVByb2plY3QocHJvamVjdCwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNhbGxiYWNrKGVycm9yLCByZWxlYXNlQ29udGV4dCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgY2FsbGJhY2soZXJyb3IsIHJlbGVhc2VDb250ZXh0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5XG59O1xuIl0sIm5hbWVzIjpbInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJsb2FkUHJvamVjdCIsIm9jY2FtRmlsZVN5c3RlbVV0aWxpdGllcyIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwicmVhZEZpbGUiLCJuZWNlc3NhcnlGaWxlU3lzdGVtVXRpbGl0aWVzIiwiaXNFbnRyeUZpbGUiLCJjaGVja0VudHJ5RXhpc3RzIiwiZGVwZW5kZW5jeSIsImNvbnRleHQiLCJjYWxsYmFjayIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsInByb2Nlc3MiLCJjd2QiLCJkZXBlbmRlbmN5TmFtZSIsImdldE5hbWUiLCJlbnRyeVBhdGgiLCJlbnRyeUV4aXN0cyIsImVycm9yIiwicmVsZWFzZUNvbnRleHQiLCJlbnRyeUZpbGUiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJqc29uU3RyaW5nIiwianNvbiIsIkpTT04iLCJwYXJzZSIsInJlbGVhc2VDb250ZXh0RnJvbUpTT04iLCJwcm9qZWN0TmFtZSIsInByb2plY3QiLCJyZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF5REE7ZUFBQTs7UUE5Q2dCQTtlQUFBQTs7OytCQVRnRDt5QkFDbUI7OEJBRTVDO0FBRXZDLElBQU0sQUFBRUMsY0FBZ0JDLG9DQUF3QixDQUF4Q0QsYUFDRixBQUFFRSxtQkFBcUJDLHdCQUFhLENBQWxDRCxrQkFDQUUsV0FBNENDLDhCQUE0QixDQUF4RUQsVUFBVUUsY0FBa0NELDhCQUE0QixDQUE5REMsYUFBYUMsbUJBQXFCRiw4QkFBNEIsQ0FBakRFO0FBRXhCLFNBQVNSLDZCQUE2QlMsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7SUFDeEUsSUFBTUMsd0JBQXdCQyxRQUFRQyxHQUFHLElBQ25DQyxpQkFBaUJOLFdBQVdPLE9BQU8sSUFDbkNDLFlBQVlkLGlCQUFpQlMsdUJBQXVCRyxpQkFDcERHLGNBQWNWLGlCQUFpQlM7SUFFckMsSUFBSSxDQUFDQyxhQUFhO1FBQ2hCLElBQU1DLFVBQVEsTUFDUkMsaUJBQWlCO1FBRXZCVCxTQUFTUSxTQUFPQztRQUVoQjtJQUNGO0lBRUEsSUFBSUEsa0JBQWlCO0lBRXJCLElBQUk7UUFDRixJQUFNQyxZQUFZZCxZQUFZVTtRQUU5QixJQUFJSSxXQUFXO1lBQ2IsSUFBTUMsV0FBV0wsV0FDWE0sVUFBVWxCLFNBQVNpQixXQUNuQkUsYUFBYUQsU0FDYkUsT0FBT0MsS0FBS0MsS0FBSyxDQUFDSDtZQUV4Qkosa0JBQWlCUSxJQUFBQSxzQ0FBc0IsRUFBQ0gsTUFBTWY7UUFDaEQsT0FBTztZQUNMLElBQU1tQixjQUFjZCxnQkFDbEJlLFVBQVU3QixZQUFZNEIsYUFBYWpCO1lBRXJDLElBQUlrQixZQUFZLE1BQU07Z0JBQ3BCVixrQkFBaUJXLDBCQUEwQkQsU0FBU3BCO1lBQ3REO1FBQ0Y7SUFDRixFQUFFLE9BQU9TLE9BQU87UUFDZFIsU0FBU1EsT0FBT0M7UUFFaEI7SUFDRjtJQUVBLElBQU1ELFdBQVE7SUFFZFIsU0FBU1EsVUFBT0M7QUFDbEI7SUFFQSxXQUFlO0lBQ2JwQiw4QkFBQUE7QUFDRiJ9
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlsZVN5c3RlbVV0aWxpdGllcyBhcyBvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tZmlsZS1zeXN0ZW1cIjtcbmltcG9ydCB7IHBhdGhVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgYXMgbmVjZXNzYXJ5RmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgcmVsZWFzZUNvbnRleHRGcm9tSlNPTiwgcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHRcIjtcblxuY29uc3QgeyBsb2FkUHJvamVjdCB9ID0gb2NjYW1GaWxlU3lzdGVtVXRpbGl0aWVzLFxuICAgICAgeyBjb25jYXRlbmF0ZVBhdGhzIH0gPSBwYXRoVXRpbGl0aWVzLFxuICAgICAgeyByZWFkRmlsZSwgaXNFbnRyeUZpbGUsIGNoZWNrRW50cnlFeGlzdHMgfSA9IG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyZWN0b3J5UGF0aCA9IHByb2Nlc3MuY3dkKCksIC8vL1xuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBlbnRyeVBhdGggPSBjb25jYXRlbmF0ZVBhdGhzKHByb2plY3RzRGlyZWN0b3J5UGF0aCwgZGVwZW5kZW5jeU5hbWUpLFxuICAgICAgICBlbnRyeUV4aXN0cyA9IGNoZWNrRW50cnlFeGlzdHMoZW50cnlQYXRoKTtcblxuICBpZiAoIWVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZXJyb3IgPSBudWxsLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gbnVsbDtcblxuICAgIGNhbGxiYWNrKGVycm9yLCByZWxlYXNlQ29udGV4dCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgcmVsZWFzZUNvbnRleHQgPSBudWxsO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoZW50cnlQYXRoKTtcblxuICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gZW50cnlQYXRoLCAvLy9cbiAgICAgICAgICAgIGNvbnRlbnQgPSByZWFkRmlsZShmaWxlUGF0aCksXG4gICAgICAgICAgICBqc29uU3RyaW5nID0gY29udGVudCwgLy8vXG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcblxuICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dEZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwcm9qZWN0TmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcHJvamVjdCA9IGxvYWRQcm9qZWN0KHByb2plY3ROYW1lLCBwcm9qZWN0c0RpcmVjdG9yeVBhdGgpO1xuXG4gICAgICBpZiAocHJvamVjdCAhPT0gbnVsbCkge1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0RnJvbVByb2plY3QocHJvamVjdCwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNhbGxiYWNrKGVycm9yLCByZWxlYXNlQ29udGV4dCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlcnJvciA9IG51bGw7XG5cbiAgY2FsbGJhY2soZXJyb3IsIHJlbGVhc2VDb250ZXh0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5XG59O1xuIl0sIm5hbWVzIjpbInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJsb2FkUHJvamVjdCIsIm9jY2FtRmlsZVN5c3RlbVV0aWxpdGllcyIsImNvbmNhdGVuYXRlUGF0aHMiLCJwYXRoVXRpbGl0aWVzIiwicmVhZEZpbGUiLCJuZWNlc3NhcnlGaWxlU3lzdGVtVXRpbGl0aWVzIiwiaXNFbnRyeUZpbGUiLCJjaGVja0VudHJ5RXhpc3RzIiwiZGVwZW5kZW5jeSIsImNvbnRleHQiLCJjYWxsYmFjayIsInByb2plY3RzRGlyZWN0b3J5UGF0aCIsInByb2Nlc3MiLCJjd2QiLCJkZXBlbmRlbmN5TmFtZSIsImdldE5hbWUiLCJlbnRyeVBhdGgiLCJlbnRyeUV4aXN0cyIsImVycm9yIiwicmVsZWFzZUNvbnRleHQiLCJlbnRyeUZpbGUiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJqc29uU3RyaW5nIiwianNvbiIsIkpTT04iLCJwYXJzZSIsInJlbGVhc2VDb250ZXh0RnJvbUpTT04iLCJwcm9qZWN0TmFtZSIsInByb2plY3QiLCJyZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUF5REE7ZUFBQTs7UUE5Q2dCQTtlQUFBQTs7OytCQVRnRDt5QkFDbUI7OEJBRWpCO0FBRWxFLElBQU0sQUFBRUMsY0FBZ0JDLG9DQUF3QixDQUF4Q0QsYUFDRixBQUFFRSxtQkFBcUJDLHdCQUFhLENBQWxDRCxrQkFDQUUsV0FBNENDLDhCQUE0QixDQUF4RUQsVUFBVUUsY0FBa0NELDhCQUE0QixDQUE5REMsYUFBYUMsbUJBQXFCRiw4QkFBNEIsQ0FBakRFO0FBRXhCLFNBQVNSLDZCQUE2QlMsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLFFBQVE7SUFDeEUsSUFBTUMsd0JBQXdCQyxRQUFRQyxHQUFHLElBQ25DQyxpQkFBaUJOLFdBQVdPLE9BQU8sSUFDbkNDLFlBQVlkLGlCQUFpQlMsdUJBQXVCRyxpQkFDcERHLGNBQWNWLGlCQUFpQlM7SUFFckMsSUFBSSxDQUFDQyxhQUFhO1FBQ2hCLElBQU1DLFVBQVEsTUFDUkMsaUJBQWlCO1FBRXZCVCxTQUFTUSxTQUFPQztRQUVoQjtJQUNGO0lBRUEsSUFBSUEsa0JBQWlCO0lBRXJCLElBQUk7UUFDRixJQUFNQyxZQUFZZCxZQUFZVTtRQUU5QixJQUFJSSxXQUFXO1lBQ2IsSUFBTUMsV0FBV0wsV0FDWE0sVUFBVWxCLFNBQVNpQixXQUNuQkUsYUFBYUQsU0FDYkUsT0FBT0MsS0FBS0MsS0FBSyxDQUFDSDtZQUV4Qkosa0JBQWlCUSxJQUFBQSxzQ0FBc0IsRUFBQ0gsTUFBTWY7UUFDaEQsT0FBTztZQUNMLElBQU1tQixjQUFjZCxnQkFDbEJlLFVBQVU3QixZQUFZNEIsYUFBYWpCO1lBRXJDLElBQUlrQixZQUFZLE1BQU07Z0JBQ3BCVixrQkFBaUJXLElBQUFBLHlDQUF5QixFQUFDRCxTQUFTcEI7WUFDdEQ7UUFDRjtJQUNGLEVBQUUsT0FBT1MsT0FBTztRQUNkUixTQUFTUSxPQUFPQztRQUVoQjtJQUNGO0lBRUEsSUFBTUQsV0FBUTtJQUVkUixTQUFTUSxVQUFPQztBQUNsQjtJQUVBLFdBQWU7SUFDYnBCLDhCQUFBQTtBQUNGIn0=
@@ -202,7 +202,7 @@ _export(exports, {
202
202
  return variablesToVariablesJSON;
203
203
  }
204
204
  });
205
- var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
205
+ var _ontology = /*#__PURE__*/ _interop_require_default(require("../ontology"));
206
206
  function _interop_require_default(obj) {
207
207
  return obj && obj.__esModule ? obj : {
208
208
  default: obj
@@ -212,7 +212,7 @@ function termFromJSON(json, context) {
212
212
  var term = json.term;
213
213
  var termJSON = term; ///
214
214
  json = termJSON; ///
215
- var Term = _dom.default.Term;
215
+ var Term = _ontology.default.Term;
216
216
  term = Term.fromJSON(json, context);
217
217
  return term;
218
218
  }
@@ -237,7 +237,7 @@ function metaTypeFromJSON(json, context) {
237
237
  function statementFromJSON(json, context) {
238
238
  var _json_statement = json.statement, statement = _json_statement === void 0 ? null : _json_statement;
239
239
  if (statement !== null) {
240
- var Statement = _dom.default.Statement, statementJSON = statement; ///
240
+ var Statement = _ontology.default.Statement, statementJSON = statement; ///
241
241
  json = statementJSON; ///
242
242
  statement = Statement.fromJSON(json, context);
243
243
  }
@@ -245,7 +245,7 @@ function statementFromJSON(json, context) {
245
245
  }
246
246
  function deductionFromJSON(json, context) {
247
247
  var deduction = json.deduction;
248
- var Deduction = _dom.default.Deduction, deductionJSON = deduction; ///
248
+ var Deduction = _ontology.default.Deduction, deductionJSON = deduction; ///
249
249
  json = deductionJSON; ///
250
250
  deduction = Deduction.fromJSON(json, context);
251
251
  return deduction;
@@ -253,7 +253,7 @@ function deductionFromJSON(json, context) {
253
253
  function signatureFromJSON(json, context) {
254
254
  var _json_signature = json.signature, signature = _json_signature === void 0 ? null : _json_signature;
255
255
  if (signature !== null) {
256
- var Signature = _dom.default.Signature, signatureJSON = signature; ///
256
+ var Signature = _ontology.default.Signature, signatureJSON = signature; ///
257
257
  json = signatureJSON; ///
258
258
  signature = Signature.fromJSON(json, context);
259
259
  }
@@ -261,14 +261,14 @@ function signatureFromJSON(json, context) {
261
261
  }
262
262
  function conclusionFromJSON(json, context) {
263
263
  var conclusion = json.conclusion;
264
- var Conclusion = _dom.default.Conclusion, conclusionJSON = conclusion; ///
264
+ var Conclusion = _ontology.default.Conclusion, conclusionJSON = conclusion; ///
265
265
  json = conclusionJSON; ///
266
266
  conclusion = Conclusion.fromJSON(json, context);
267
267
  return conclusion;
268
268
  }
269
269
  function metavariableFromJSON(json, context) {
270
270
  var metavariable = json.metavariable;
271
- var Metavariable = _dom.default.Metavariable, metavariableJSON = metavariable; ///
271
+ var Metavariable = _ontology.default.Metavariable, metavariableJSON = metavariable; ///
272
272
  json = metavariableJSON; ///
273
273
  metavariable = Metavariable.fromJSON(json, context);
274
274
  return metavariable;
@@ -276,7 +276,7 @@ function metavariableFromJSON(json, context) {
276
276
  function procedureCallFromJSON(json, context) {
277
277
  var _json_procedureCall = json.procedureCall, procedureCall = _json_procedureCall === void 0 ? null : _json_procedureCall;
278
278
  if (procedureCall !== null) {
279
- var ProcedureCall = _dom.default.ProcedureCall, procedureCallJSON = procedureCall; ///
279
+ var ProcedureCall = _ontology.default.ProcedureCall, procedureCallJSON = procedureCall; ///
280
280
  json = procedureCallJSON; ///
281
281
  procedureCall = ProcedureCall.fromJSON(json, context);
282
282
  }
@@ -284,14 +284,14 @@ function procedureCallFromJSON(json, context) {
284
284
  }
285
285
  function procedureReferenceFromJSON(json, context) {
286
286
  var procedureReference = json.procedureReference;
287
- var ProcedureReference = _dom.default.ProcedureReference, procedureReferenceJSON = procedureReference; ///
287
+ var ProcedureReference = _ontology.default.ProcedureReference, procedureReferenceJSON = procedureReference; ///
288
288
  json = procedureReferenceJSON; ///
289
289
  procedureReference = ProcedureReference.fromJSON(json, context);
290
290
  return procedureReference;
291
291
  }
292
292
  function typesFromJSON(json, types, context) {
293
293
  var typesJSON = json.types;
294
- var Type = _dom.default.Type;
294
+ var Type = _ontology.default.Type;
295
295
  typesJSON.forEach(function(typeJSON) {
296
296
  var _$json = typeJSON, type = Type.fromJSON(_$json, context);
297
297
  types.push(type);
@@ -299,7 +299,7 @@ function typesFromJSON(json, types, context) {
299
299
  }
300
300
  function termsFromJSON(json, context) {
301
301
  var terms = json.terms;
302
- var Term = _dom.default.Term, termsJSON = terms; ///
302
+ var Term = _ontology.default.Term, termsJSON = terms; ///
303
303
  terms = termsJSON.map(function(termJSON) {
304
304
  var _$json = termJSON, term = Term.fromJSON(_$json, context);
305
305
  return term;
@@ -308,7 +308,7 @@ function termsFromJSON(json, context) {
308
308
  }
309
309
  function rulesFromJSON(json, context) {
310
310
  var rules = json.rules;
311
- var Rule = _dom.default.Rule, rulesJSON = rules; ///
311
+ var Rule = _ontology.default.Rule, rulesJSON = rules; ///
312
312
  rules = rulesJSON.map(function(ruleJSON) {
313
313
  var _$json = ruleJSON, rule = Rule.fromJSON(_$json, context);
314
314
  return rule;
@@ -317,14 +317,14 @@ function rulesFromJSON(json, context) {
317
317
  }
318
318
  function labelFromJSON(json, context) {
319
319
  var label = json.label;
320
- var Label = _dom.default.Label, labelJSON = label; ///
320
+ var Label = _ontology.default.Label, labelJSON = label; ///
321
321
  json = labelJSON; ///
322
322
  label = Label.fromJSON(json, context);
323
323
  return label;
324
324
  }
325
325
  function labelsFromJSON(json, context) {
326
326
  var labels = json.labels;
327
- var Label = _dom.default.Label, labelsJSON = labels; ///
327
+ var Label = _ontology.default.Label, labelsJSON = labels; ///
328
328
  labels = labelsJSON.map(function(labelJSON) {
329
329
  var _$json = labelJSON, label = Label.fromJSON(_$json, context);
330
330
  return label;
@@ -333,7 +333,7 @@ function labelsFromJSON(json, context) {
333
333
  }
334
334
  function axiomsFromJSON(json, context) {
335
335
  var axioms = json.axioms;
336
- var Axiom = _dom.default.Axiom, axiomsJSON = axioms; ///
336
+ var Axiom = _ontology.default.Axiom, axiomsJSON = axioms; ///
337
337
  axioms = axiomsJSON.map(function(axiomJSON) {
338
338
  var _$json = axiomJSON, axiom = Axiom.fromJSON(_$json, context);
339
339
  return axiom;
@@ -342,7 +342,7 @@ function axiomsFromJSON(json, context) {
342
342
  }
343
343
  function premisesFromJSON(json, context) {
344
344
  var premises = json.premises;
345
- var Premise = _dom.default.Premise, premisesJSON = premises; ///
345
+ var Premise = _ontology.default.Premise, premisesJSON = premises; ///
346
346
  premises = premisesJSON.map(function(premiseJSON) {
347
347
  var _$json = premiseJSON, premise = Premise.fromJSON(_$json, context);
348
348
  return premise;
@@ -351,7 +351,7 @@ function premisesFromJSON(json, context) {
351
351
  }
352
352
  function theoremsFromJSON(json, context) {
353
353
  var theorems = json.theorems;
354
- var Theorem = _dom.default.Theorem, theoremsJSON = theorems; ///
354
+ var Theorem = _ontology.default.Theorem, theoremsJSON = theorems; ///
355
355
  theorems = theoremsJSON.map(function(theoremJSON) {
356
356
  var _$json = theoremJSON, theorem = Theorem.fromJSON(_$json, context);
357
357
  return theorem;
@@ -360,7 +360,7 @@ function theoremsFromJSON(json, context) {
360
360
  }
361
361
  function variablesFromJSON(json, context) {
362
362
  var variables = json.variables;
363
- var Variable = _dom.default.Variable, variablesJSON = variables; ///
363
+ var Variable = _ontology.default.Variable, variablesJSON = variables; ///
364
364
  variables = variablesJSON.map(function(variableJSON) {
365
365
  var _$json = variableJSON, variable = Variable.fromJSON(_$json, context);
366
366
  return variable;
@@ -369,7 +369,7 @@ function variablesFromJSON(json, context) {
369
369
  }
370
370
  function propertiesFromJSON(json, context) {
371
371
  var properties = json.properties;
372
- var Property = _dom.default.Property, propertiesJSON = properties; ///
372
+ var Property = _ontology.default.Property, propertiesJSON = properties; ///
373
373
  properties = propertiesJSON.map(function(propertyJSON) {
374
374
  var _$json = propertyJSON, property = Property.fromJSON(_$json, context);
375
375
  return property;
@@ -386,7 +386,7 @@ function superTypesFromJSON(json, context) {
386
386
  }
387
387
  function hypothesesFromJSON(json, context) {
388
388
  var hypotheses = json.hypotheses;
389
- var Hypothesis = _dom.default.Hypothesis, hypothesesJSON = hypotheses; ///
389
+ var Hypothesis = _ontology.default.Hypothesis, hypothesesJSON = hypotheses; ///
390
390
  hypotheses = hypothesesJSON.map(function(hypothesisJSON) {
391
391
  var _$json = hypothesisJSON, hypothesis = Hypothesis.fromJSON(_$json, context);
392
392
  return hypothesis;
@@ -395,7 +395,7 @@ function hypothesesFromJSON(json, context) {
395
395
  }
396
396
  function parametersFromJSON(json, context) {
397
397
  var parameters = json.parameters;
398
- var Parameter = _dom.default.Parameter, parametersJSON = parameters; ///
398
+ var Parameter = _ontology.default.Parameter, parametersJSON = parameters; ///
399
399
  parameters = parametersJSON.map(function(parameterJSON) {
400
400
  var _$json = parameterJSON, parameter = Parameter.fromJSON(_$json, context);
401
401
  return parameter;
@@ -404,7 +404,7 @@ function parametersFromJSON(json, context) {
404
404
  }
405
405
  function conjecturesFromJSON(json, context) {
406
406
  var conjectures = json.conjectures;
407
- var Conjecture = _dom.default.Conjecture, conjecturesJSON = conjectures; ///
407
+ var Conjecture = _ontology.default.Conjecture, conjecturesJSON = conjectures; ///
408
408
  conjectures = conjecturesJSON.map(function(conjectureJSON) {
409
409
  var _$json = conjectureJSON, conjecture = Conjecture.fromJSON(_$json, context);
410
410
  return conjecture;
@@ -413,7 +413,7 @@ function conjecturesFromJSON(json, context) {
413
413
  }
414
414
  function combinatorsFromJSON(json, context) {
415
415
  var combinators = json.combinators;
416
- var Combinator = _dom.default.Combinator, combinatorsJSON = combinators; ///
416
+ var Combinator = _ontology.default.Combinator, combinatorsJSON = combinators; ///
417
417
  combinators = combinatorsJSON.map(function(combinatorJSON) {
418
418
  var _$json = combinatorJSON, combinator = Combinator.fromJSON(_$json, context);
419
419
  return combinator;
@@ -422,7 +422,7 @@ function combinatorsFromJSON(json, context) {
422
422
  }
423
423
  function typePrefixesFromJSON(json, context) {
424
424
  var typePrefixes = json.typePrefixes;
425
- var TypePrefix = _dom.default.TypePrefix, typePrefixesJSON = typePrefixes; ///
425
+ var TypePrefix = _ontology.default.TypePrefix, typePrefixesJSON = typePrefixes; ///
426
426
  typePrefixes = typePrefixesJSON.map(function(typePrefixJSON) {
427
427
  var _$json = typePrefixJSON, typePrefix = TypePrefix.fromJSON(_$json, context);
428
428
  return typePrefix;
@@ -431,7 +431,7 @@ function typePrefixesFromJSON(json, context) {
431
431
  }
432
432
  function constructorsFromJSON(json, context) {
433
433
  var constructors = json.constructors;
434
- var Constructor = _dom.default.Constructor, constructorsJSON = constructors; ///
434
+ var Constructor = _ontology.default.Constructor, constructorsJSON = constructors; ///
435
435
  constructors = constructorsJSON.map(function(constructorJSON) {
436
436
  var _$json = constructorJSON, constructor = Constructor.fromJSON(_$json, context);
437
437
  return constructor;
@@ -440,7 +440,7 @@ function constructorsFromJSON(json, context) {
440
440
  }
441
441
  function metatheoremsFromJSON(json, context) {
442
442
  var metatheorems = json.metatheorems;
443
- var Metatheorem = _dom.default.Metatheorem, metatheoremsJSON = metatheorems; ///
443
+ var Metatheorem = _ontology.default.Metatheorem, metatheoremsJSON = metatheorems; ///
444
444
  metatheorems = metatheoremsJSON.map(function(metatheoremJSON) {
445
445
  var _$json = metatheoremJSON, metatheorem = Metatheorem.fromJSON(_$json, context);
446
446
  return metatheorem;
@@ -449,7 +449,7 @@ function metatheoremsFromJSON(json, context) {
449
449
  }
450
450
  function suppositionsFromJSON(json, context) {
451
451
  var suppositions = json.suppositions;
452
- var Supposition = _dom.default.Supposition, suppositionsJSON = suppositions; ///
452
+ var Supposition = _ontology.default.Supposition, suppositionsJSON = suppositions; ///
453
453
  suppositions = suppositionsJSON.map(function(suppositionJSON) {
454
454
  var _$json = suppositionJSON, supposition = Supposition.fromJSON(_$json, context);
455
455
  return supposition;
@@ -458,7 +458,7 @@ function suppositionsFromJSON(json, context) {
458
458
  }
459
459
  function substitutionsFromJSON(json, context) {
460
460
  var _json_substitutions = json.substitutions, substitutions = _json_substitutions === void 0 ? [] : _json_substitutions; ///
461
- var StatementSubstitution = _dom.default.StatementSubstitution, substitutionsJSON = substitutions, Substitution = StatementSubstitution; ///
461
+ var StatementSubstitution = _ontology.default.StatementSubstitution, substitutionsJSON = substitutions, Substitution = StatementSubstitution; ///
462
462
  substitutions = substitutionsJSON.map(function(substitutionJSON) {
463
463
  var _$json = substitutionJSON, substitution = Substitution.fromJSON(_$json, context);
464
464
  return substitution;
@@ -467,7 +467,7 @@ function substitutionsFromJSON(json, context) {
467
467
  }
468
468
  function metavariablesFromJSON(json, context) {
469
469
  var metavariables = json.metavariables;
470
- var Metavariable = _dom.default.Metavariable, metavariablesJSON = metavariables; ///
470
+ var Metavariable = _ontology.default.Metavariable, metavariablesJSON = metavariables; ///
471
471
  metavariables = metavariablesJSON.map(function(metavariableJSON) {
472
472
  var _$json = metavariableJSON, metavariable = Metavariable.fromJSON(_$json, context);
473
473
  return metavariable;
@@ -683,4 +683,4 @@ function metavariablesToMetavariablesJSON(metavariables) {
683
683
  return metavariablesJSON;
684
684
  }
685
685
 
686
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGRvbSBmcm9tIFwiLi4vZG9tXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0ZXJtIH0gPSBqc29uO1xuXG4gIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gIGpzb24gPSB0ZXJtSlNPTjsgIC8vL1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZG9tO1xuXG4gIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZSB9ID0ganNvbjtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSB0eXBlOyAgLy8vXG5cbiAgICBjb25zdCB7IG5hbWUsIHByZWZpeE5hbWUgfSA9IGpzb24sXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gKHByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVmaXhOYW1lfSR7bmFtZX1gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOyAvLy9cblxuICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uLFxuICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnQgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFN0YXRlbWVudCB9ID0gZG9tLFxuICAgICAgICAgIHN0YXRlbWVudEpTT04gPSBzdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGpzb24gPSBzdGF0ZW1lbnRKU09OOyAvLy9cblxuICAgIHN0YXRlbWVudCA9IFN0YXRlbWVudC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWR1Y3Rpb25Gcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlZHVjdGlvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IERlZHVjdGlvbiB9ID0gZG9tLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGRvbSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlOyAgLy8vXG5cbiAgICBqc29uID0gc2lnbmF0dXJlSlNPTjsgLy8vXG5cbiAgICBzaWduYXR1cmUgPSBTaWduYXR1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGRvbSxcbiAgICAgICAgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uOyAgLy8vXG5cbiAganNvbiA9IGNvbmNsdXNpb25KU09OOyAgLy8vXG5cbiAgY29uY2x1c2lvbiA9IENvbmNsdXNpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbmNsdXNpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF2YXJpYWJsZSB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlOyAgLy8vXG5cbiAganNvbiA9IG1ldGF2YXJpYWJsZUpTT047IC8vL1xuXG4gIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlQ2FsbCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHByb2NlZHVyZUNhbGwgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFByb2NlZHVyZUNhbGwgfSA9IGRvbSxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsSlNPTiA9IHByb2NlZHVyZUNhbGw7ICAvLy9cblxuICAgIGpzb24gPSBwcm9jZWR1cmVDYWxsSlNPTjsgLy8vXG5cbiAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGRvbSxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGRvbTtcblxuICB0eXBlc0pTT04uZm9yRWFjaCgodHlwZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZUpTT04sICAvLy9cbiAgICAgICAgICB0eXBlID0gVHlwZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRlcm1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGVybSB9ID0gZG9tLFxuICAgICAgICB0ZXJtc0pTT04gPSB0ZXJtczsgLy8vXG5cbiAgdGVybXMgPSB0ZXJtc0pTT04ubWFwKCh0ZXJtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0ZXJtSlNPTiwgIC8vL1xuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IGRvbSxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZG9tLFxuICAgICAgICBsYWJlbEpTT04gPSBsYWJlbDsgIC8vL1xuXG4gIGpzb24gPSBsYWJlbEpTT047IC8vL1xuXG4gIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGxhYmVsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbHMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZG9tLFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBkb20sXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGRvbSxcbiAgICAgICAgcHJlbWlzZXNKU09OID0gcHJlbWlzZXM7ICAvLy9cblxuICBwcmVtaXNlcyA9IHByZW1pc2VzSlNPTi5tYXAoKHByZW1pc2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByZW1pc2VKU09OLCAvLy9cbiAgICAgICAgICBwcmVtaXNlID0gUHJlbWlzZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcmVtaXNlO1xuICB9KTtcblxuICByZXR1cm4gcHJlbWlzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUaGVvcmVtIH0gPSBkb20sXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGRvbSxcbiAgICAgICAgcHJvcGVydGllc0pTT04gPSBwcm9wZXJ0aWVzOyAvLy9cblxuICBwcm9wZXJ0aWVzID0gcHJvcGVydGllc0pTT04ubWFwKChwcm9wZXJ0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJvcGVydHlKU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHkgPSBQcm9wZXJ0eS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHN1cGVyVHlwZXM6IHN1cGVyVHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHN1cGVyVHlwZXMgPSBzdXBlclR5cGVzSlNPTi5tYXAoKHN1cGVyVHlwZUpTT04pID0+IHtcbiAgICAgICAgICBjb25zdCBqc29uID0gc3VwZXJUeXBlSlNPTiwgIC8vL1xuICAgICAgICAgICAgICAgIHsgbmFtZSwgcHJlZml4TmFtZSB9ID0ganNvbixcbiAgICAgICAgICAgICAgICBub21pbmFsU3VwZXJUeXBlTmFtZSA9IChwcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3ByZWZpeE5hbWV9JHtuYW1lfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCAvLy9cbiAgICAgICAgICAgICAgICBzdXBlclR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFN1cGVyVHlwZU5hbWUpO1xuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZG9tLFxuICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXM7ICAvLy9cblxuICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04ubWFwKChoeXBvdGhlc2lzSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBoeXBvdGhlc2lzSlNPTiwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpcyA9IEh5cG90aGVzaXMuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwYXJhbWV0ZXJzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUGFyYW1ldGVyIH0gPSBkb20sXG4gICAgICAgIHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVyczsgLy8vXG5cbiAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnNKU09OLm1hcCgocGFyYW1ldGVySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwYXJhbWV0ZXJKU09OLCAgLy8vXG4gICAgICAgICAgcGFyYW1ldGVyID0gUGFyYW1ldGVyLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBkb20sXG4gICAgICAgIGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzOyAvLy9cblxuICBjb25qZWN0dXJlcyA9IGNvbmplY3R1cmVzSlNPTi5tYXAoKGNvbmplY3R1cmVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbmplY3R1cmVKU09OLCAgLy8vXG4gICAgICAgICAgY29uamVjdHVyZSA9IENvbmplY3R1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uamVjdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbWJpbmF0b3JzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgQ29tYmluYXRvciB9ID0gZG9tLFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZG9tLFxuICAgICAgICB0eXBlUHJlZml4ZXNKU09OID0gdHlwZVByZWZpeGVzOyAvLy9cblxuICB0eXBlUHJlZml4ZXMgPSB0eXBlUHJlZml4ZXNKU09OLm1hcCgodHlwZVByZWZpeEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdHlwZVByZWZpeEpTT04sICAvLy9cbiAgICAgICAgICB0eXBlUHJlZml4ID0gVHlwZVByZWZpeC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25zdHJ1Y3RvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25zdHJ1Y3RvciB9ID0gZG9tLFxuICAgICAgICBjb25zdHJ1Y3RvcnNKU09OID0gY29uc3RydWN0b3JzOyAvLy9cblxuICBjb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnNKU09OLm1hcCgoY29uc3RydWN0b3JKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGNvbnN0cnVjdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RydWN0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb25zdHJ1Y3RvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGF0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF0aGVvcmVtIH0gPSBkb20sXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGRvbSxcbiAgICAgICAgc3VwcG9zaXRpb25zSlNPTiA9IHN1cHBvc2l0aW9uczsgIC8vL1xuXG4gIHN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9uc0pTT04ubWFwKChzdXBwb3NpdGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3VwcG9zaXRpb25KU09OLCAvLy9cbiAgICAgICAgICBzdXBwb3NpdGlvbiA9IFN1cHBvc2l0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uO1xuICB9KTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic3RpdHV0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3Vic3RpdHV0aW9ucyA9IFtdIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3QgeyBTdGF0ZW1lbnRTdWJzdGl0dXRpb24gfSA9IGRvbSxcbiAgICAgICAgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLCAgLy8vXG4gICAgICAgIFN1YnN0aXR1dGlvbiA9IFN0YXRlbWVudFN1YnN0aXR1dGlvbjsgLy8vXG5cbiAgc3Vic3RpdHV0aW9ucyA9IHN1YnN0aXR1dGlvbnNKU09OLm1hcCgoc3Vic3RpdHV0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdWJzdGl0dXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgc3Vic3RpdHV0aW9uID0gU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHN1YnN0aXR1dGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1YnN0aXR1dGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBkb20sXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVRvVGVybUpTT04odGVybSkge1xuICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgcmV0dXJuIHRlcm1KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9ICh0eXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9MYWJlbEpTT04obGFiZWwpIHtcbiAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgcmV0dXJuIGxhYmVsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04obWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTihwcm9jZWR1cmVDYWxsKSB7XG4gIGNvbnN0IHByb2NlZHVyZUNhbGxKU09OID0gKHByb2NlZHVyZUNhbGwgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZVRvUHJvY2VkdXJlUmVmZXJlbmNlSlNPTihwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgdHlwZSA9IHR5cGVKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICB0ZXJtID0gdGVybUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1RvUnVsZXNKU09OKHJ1bGVzKSB7XG4gIGNvbnN0IHJ1bGVzSlNPTiA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVKU09OID0gcnVsZS50b0pTT04oKTtcblxuICAgIHJ1bGUgPSBydWxlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICBheGlvbSA9IGF4aW9tSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHRoZW9yZW0gPSB0aGVvcmVtSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIGh5cG90aGVzaXMgPSBoeXBvdGhlc2lzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgc3VwZXJUeXBlID0gc3VwZXJUeXBlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5SlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgY29uamVjdHVyZSA9IGNvbmplY3R1cmVKU09OOyAvLy9cblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICBjb21iaW5hdG9yID0gY29tYmluYXRvckpTT047IC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvckpTT047ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04obWV0YXRoZW9yZW1zKSB7XG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXMubWFwKChtZXRhdGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IG1ldGF0aGVvcmVtSlNPTiA9IG1ldGF0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgbWV0YXRoZW9yZW0gPSBtZXRhdGhlb3JlbUpTT047IC8vL1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG4iXSwibmFtZXMiOlsiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhTGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJydWxlc0Zyb21KU09OIiwicnVsZXNUb1J1bGVzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50RnJvbUpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtRnJvbUpTT04iLCJ0ZXJtVG9UZXJtSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImpzb24iLCJjb250ZXh0IiwidGVybSIsInRlcm1KU09OIiwiVGVybSIsImRvbSIsImZyb21KU09OIiwidHlwZSIsIm5hbWUiLCJwcmVmaXhOYW1lIiwibm9taW5hbFR5cGVOYW1lIiwiZmluZFR5cGVCeU5vbWluYWxUeXBlTmFtZSIsIm1ldGFUeXBlIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiLCJzdGF0ZW1lbnQiLCJTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRKU09OIiwiZGVkdWN0aW9uIiwiRGVkdWN0aW9uIiwiZGVkdWN0aW9uSlNPTiIsInNpZ25hdHVyZSIsIlNpZ25hdHVyZSIsInNpZ25hdHVyZUpTT04iLCJjb25jbHVzaW9uIiwiQ29uY2x1c2lvbiIsImNvbmNsdXNpb25KU09OIiwibWV0YXZhcmlhYmxlIiwiTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlSlNPTiIsInByb2NlZHVyZUNhbGwiLCJQcm9jZWR1cmVDYWxsIiwicHJvY2VkdXJlQ2FsbEpTT04iLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJQcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwidHlwZXMiLCJ0eXBlc0pTT04iLCJUeXBlIiwiZm9yRWFjaCIsInR5cGVKU09OIiwicHVzaCIsInRlcm1zIiwidGVybXNKU09OIiwibWFwIiwicnVsZXMiLCJSdWxlIiwicnVsZXNKU09OIiwicnVsZUpTT04iLCJydWxlIiwibGFiZWwiLCJMYWJlbCIsImxhYmVsSlNPTiIsImxhYmVscyIsImxhYmVsc0pTT04iLCJheGlvbXMiLCJBeGlvbSIsImF4aW9tc0pTT04iLCJheGlvbUpTT04iLCJheGlvbSIsInByZW1pc2VzIiwiUHJlbWlzZSIsInByZW1pc2VzSlNPTiIsInByZW1pc2VKU09OIiwicHJlbWlzZSIsInRoZW9yZW1zIiwiVGhlb3JlbSIsInRoZW9yZW1zSlNPTiIsInRoZW9yZW1KU09OIiwidGhlb3JlbSIsInZhcmlhYmxlcyIsIlZhcmlhYmxlIiwidmFyaWFibGVzSlNPTiIsInZhcmlhYmxlSlNPTiIsInZhcmlhYmxlIiwicHJvcGVydGllcyIsIlByb3BlcnR5IiwicHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eUpTT04iLCJwcm9wZXJ0eSIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzSlNPTiIsInN1cGVyVHlwZUpTT04iLCJub21pbmFsU3VwZXJUeXBlTmFtZSIsInN1cGVyVHlwZSIsImh5cG90aGVzZXMiLCJIeXBvdGhlc2lzIiwiaHlwb3RoZXNlc0pTT04iLCJoeXBvdGhlc2lzSlNPTiIsImh5cG90aGVzaXMiLCJwYXJhbWV0ZXJzIiwiUGFyYW1ldGVyIiwicGFyYW1ldGVyc0pTT04iLCJwYXJhbWV0ZXJKU09OIiwicGFyYW1ldGVyIiwiY29uamVjdHVyZXMiLCJDb25qZWN0dXJlIiwiY29uamVjdHVyZXNKU09OIiwiY29uamVjdHVyZUpTT04iLCJjb25qZWN0dXJlIiwiY29tYmluYXRvcnMiLCJDb21iaW5hdG9yIiwiY29tYmluYXRvcnNKU09OIiwiY29tYmluYXRvckpTT04iLCJjb21iaW5hdG9yIiwidHlwZVByZWZpeGVzIiwiVHlwZVByZWZpeCIsInR5cGVQcmVmaXhlc0pTT04iLCJ0eXBlUHJlZml4SlNPTiIsInR5cGVQcmVmaXgiLCJjb25zdHJ1Y3RvcnMiLCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yc0pTT04iLCJjb25zdHJ1Y3RvckpTT04iLCJjb25zdHJ1Y3RvciIsIm1ldGF0aGVvcmVtcyIsIk1ldGF0aGVvcmVtIiwibWV0YXRoZW9yZW1zSlNPTiIsIm1ldGF0aGVvcmVtSlNPTiIsIm1ldGF0aGVvcmVtIiwic3VwcG9zaXRpb25zIiwiU3VwcG9zaXRpb24iLCJzdXBwb3NpdGlvbnNKU09OIiwic3VwcG9zaXRpb25KU09OIiwic3VwcG9zaXRpb24iLCJzdWJzdGl0dXRpb25zIiwiU3RhdGVtZW50U3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uc0pTT04iLCJTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25KU09OIiwic3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlcyIsIm1ldGF2YXJpYWJsZXNKU09OIiwibGVtbWFzIiwibWV0YUxlbW1hcyIsInRvSlNPTiIsIm1ldGFUeXBlSlNPTiIsIm1hcFN1YnN0aXR1dGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBNk5nQkE7ZUFB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
686
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IG9udG9sb2d5IGZyb20gXCIuLi9vbnRvbG9neVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBjb25zdCB0ZXJtSlNPTiA9IHRlcm07ICAvLy9cblxuICBqc29uID0gdGVybUpTT047ICAvLy9cblxuICBjb25zdCB7IFRlcm0gfSA9IG9udG9sb2d5O1xuXG4gIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZSB9ID0ganNvbjtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSB0eXBlOyAgLy8vXG5cbiAgICBjb25zdCB7IG5hbWUsIHByZWZpeE5hbWUgfSA9IGpzb24sXG4gICAgICAgICAgbm9taW5hbFR5cGVOYW1lID0gKHByZWZpeE5hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVmaXhOYW1lfSR7bmFtZX1gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOyAvLy9cblxuICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlOb21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBqc29uLFxuICAgICAgICAgIG1ldGFUeXBlTmFtZSA9IG5hbWU7ICAvLy9cblxuICAgIG1ldGFUeXBlID0gY29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZShtZXRhVHlwZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50RnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnQgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IFN0YXRlbWVudCB9ID0gb250b2xvZ3ksXG4gICAgICAgICAgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudDsgIC8vL1xuXG4gICAganNvbiA9IHN0YXRlbWVudEpTT047IC8vL1xuXG4gICAgc3RhdGVtZW50ID0gU3RhdGVtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVjdGlvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgZGVkdWN0aW9uIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgRGVkdWN0aW9uIH0gPSBvbnRvbG9neSxcbiAgICAgICAgZGVkdWN0aW9uSlNPTiA9IGRlZHVjdGlvbjsgIC8vL1xuXG4gIGpzb24gPSBkZWR1Y3Rpb25KU09OOyAgLy8vXG5cbiAgZGVkdWN0aW9uID0gRGVkdWN0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHNpZ25hdHVyZSA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHNpZ25hdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU2lnbmF0dXJlIH0gPSBvbnRvbG9neSxcbiAgICAgICAgICBzaWduYXR1cmVKU09OID0gc2lnbmF0dXJlOyAgLy8vXG5cbiAgICBqc29uID0gc2lnbmF0dXJlSlNPTjsgLy8vXG5cbiAgICBzaWduYXR1cmUgPSBTaWduYXR1cmUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IG9udG9sb2d5LFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBvbnRvbG9neSxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZUNhbGxGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb2NlZHVyZUNhbGwgPSBudWxsIH0gPSBqc29uO1xuXG4gIGlmIChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBQcm9jZWR1cmVDYWxsIH0gPSBvbnRvbG9neSxcbiAgICAgICAgICBwcm9jZWR1cmVDYWxsSlNPTiA9IHByb2NlZHVyZUNhbGw7ICAvLy9cblxuICAgIGpzb24gPSBwcm9jZWR1cmVDYWxsSlNPTjsgLy8vXG5cbiAgICBwcm9jZWR1cmVDYWxsID0gUHJvY2VkdXJlQ2FsbC5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlUmVmZXJlbmNlRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVSZWZlcmVuY2UgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9jZWR1cmVSZWZlcmVuY2UgfSA9IG9udG9sb2d5LFxuICAgICAgICBwcm9jZWR1cmVSZWZlcmVuY2VKU09OID0gcHJvY2VkdXJlUmVmZXJlbmNlOyAgLy8vXG5cbiAganNvbiA9IHByb2NlZHVyZVJlZmVyZW5jZUpTT047ICAvLy9cblxuICBwcm9jZWR1cmVSZWZlcmVuY2UgPSBQcm9jZWR1cmVSZWZlcmVuY2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzRnJvbUpTT04oanNvbiwgdHlwZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgeyB0eXBlczogdHlwZXNKU09OIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZSB9ID0gb250b2xvZ3k7XG5cbiAgdHlwZXNKU09OLmZvckVhY2goKHR5cGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHR5cGVKU09OLCAgLy8vXG4gICAgICAgICAgdHlwZSA9IFR5cGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0ZXJtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRlcm0gfSA9IG9udG9sb2d5LFxuICAgICAgICB0ZXJtc0pTT04gPSB0ZXJtczsgLy8vXG5cbiAgdGVybXMgPSB0ZXJtc0pTT04ubWFwKCh0ZXJtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0ZXJtSlNPTiwgIC8vL1xuICAgICAgICAgIHRlcm0gPSBUZXJtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBydWxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJ1bGUgfSA9IG9udG9sb2d5LFxuICAgICAgICBydWxlc0pTT04gPSBydWxlczsgLy8vXG5cbiAgcnVsZXMgPSBydWxlc0pTT04ubWFwKChydWxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBydWxlSlNPTiwgIC8vL1xuICAgICAgICAgIHJ1bGUgPSBSdWxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHJ1bGU7XG4gIH0pO1xuXG4gIHJldHVybiBydWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBsYWJlbCB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBvbnRvbG9neSxcbiAgICAgICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWxzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTGFiZWwgfSA9IG9udG9sb2d5LFxuICAgICAgICBsYWJlbHNKU09OID0gbGFiZWxzOyAgLy8vXG5cbiAgbGFiZWxzID0gbGFiZWxzSlNPTi5tYXAoKGxhYmVsSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBsYWJlbEpTT04sIC8vL1xuICAgICAgICAgIGxhYmVsID0gTGFiZWwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBsYWJlbHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGF4aW9tcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEF4aW9tIH0gPSBvbnRvbG9neSxcbiAgICAgICAgYXhpb21zSlNPTiA9IGF4aW9tczsgLy8vXG5cbiAgYXhpb21zID0gYXhpb21zSlNPTi5tYXAoKGF4aW9tSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBheGlvbUpTT04sICAvLy9cbiAgICAgICAgICBheGlvbSA9IEF4aW9tLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGF4aW9tO1xuICB9KTtcblxuICByZXR1cm4gYXhpb21zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByZW1pc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJlbWlzZSB9ID0gb250b2xvZ3ksXG4gICAgICAgIHByZW1pc2VzSlNPTiA9IHByZW1pc2VzOyAgLy8vXG5cbiAgcHJlbWlzZXMgPSBwcmVtaXNlc0pTT04ubWFwKChwcmVtaXNlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcmVtaXNlSlNPTiwgLy8vXG4gICAgICAgICAgcHJlbWlzZSA9IFByZW1pc2UuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlb3JlbXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHRoZW9yZW1zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVGhlb3JlbSB9ID0gb250b2xvZ3ksXG4gICAgICAgIHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zOyAvLy9cblxuICB0aGVvcmVtcyA9IHRoZW9yZW1zSlNPTi5tYXAoKHRoZW9yZW1KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgdGhlb3JlbSA9IFRoZW9yZW0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBWYXJpYWJsZSB9ID0gb250b2xvZ3ksXG4gICAgICAgIHZhcmlhYmxlc0pTT04gPSB2YXJpYWJsZXM7IC8vL1xuXG4gIHZhcmlhYmxlcyA9IHZhcmlhYmxlc0pTT04ubWFwKCh2YXJpYWJsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHZhcmlhYmxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3BlcnRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQcm9wZXJ0eSB9ID0gb250b2xvZ3ksXG4gICAgICAgIHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllczsgLy8vXG5cbiAgcHJvcGVydGllcyA9IHByb3BlcnRpZXNKU09OLm1hcCgocHJvcGVydHlKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5SlNPTiwgIC8vL1xuICAgICAgICAgIHByb3BlcnR5ID0gUHJvcGVydHkuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHk7XG4gIH0pO1xuXG4gIHJldHVybiBwcm9wZXJ0aWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzdXBlclR5cGVzOiBzdXBlclR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCBzdXBlclR5cGVzID0gc3VwZXJUeXBlc0pTT04ubWFwKChzdXBlclR5cGVKU09OKSA9PiB7XG4gICAgICAgICAgY29uc3QganNvbiA9IHN1cGVyVHlwZUpTT04sICAvLy9cbiAgICAgICAgICAgICAgICB7IG5hbWUsIHByZWZpeE5hbWUgfSA9IGpzb24sXG4gICAgICAgICAgICAgICAgbm9taW5hbFN1cGVyVHlwZU5hbWUgPSAocHJlZml4TmFtZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVmaXhOYW1lfSR7bmFtZX1gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgLy8vXG4gICAgICAgICAgICAgICAgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxTdXBlclR5cGVOYW1lKTtcblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGU7XG4gICAgICAgIH0pO1xuXG4gIHJldHVybiBzdXBlclR5cGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgaHlwb3RoZXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEh5cG90aGVzaXMgfSA9IG9udG9sb2d5LFxuICAgICAgICBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXM7ICAvLy9cblxuICBoeXBvdGhlc2VzID0gaHlwb3RoZXNlc0pTT04ubWFwKChoeXBvdGhlc2lzSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBoeXBvdGhlc2lzSlNPTiwgLy8vXG4gICAgICAgICAgaHlwb3RoZXNpcyA9IEh5cG90aGVzaXMuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwYXJhbWV0ZXJzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUGFyYW1ldGVyIH0gPSBvbnRvbG9neSxcbiAgICAgICAgcGFyYW1ldGVyc0pTT04gPSBwYXJhbWV0ZXJzOyAvLy9cblxuICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc0pTT04ubWFwKChwYXJhbWV0ZXJKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHBhcmFtZXRlckpTT04sICAvLy9cbiAgICAgICAgICBwYXJhbWV0ZXIgPSBQYXJhbWV0ZXIuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb25qZWN0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmplY3R1cmUgfSA9IG9udG9sb2d5LFxuICAgICAgICBjb25qZWN0dXJlc0pTT04gPSBjb25qZWN0dXJlczsgLy8vXG5cbiAgY29uamVjdHVyZXMgPSBjb25qZWN0dXJlc0pTT04ubWFwKChjb25qZWN0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25qZWN0dXJlSlNPTiwgIC8vL1xuICAgICAgICAgIGNvbmplY3R1cmUgPSBDb25qZWN0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbmplY3R1cmU7XG4gIH0pO1xuXG4gIHJldHVybiBjb25qZWN0dXJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBjb21iaW5hdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbWJpbmF0b3IgfSA9IG9udG9sb2d5LFxuICAgICAgICBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9yczsgLy8vXG5cbiAgY29tYmluYXRvcnMgPSBjb21iaW5hdG9yc0pTT04ubWFwKChjb21iaW5hdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb21iaW5hdG9ySlNPTiwgIC8vL1xuICAgICAgICAgIGNvbWJpbmF0b3IgPSBDb21iaW5hdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gb250b2xvZ3ksXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBvbnRvbG9neSxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gb250b2xvZ3ksXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IG9udG9sb2d5LFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zID0gW10gfSA9IGpzb247ICAvLy9cblxuICBjb25zdCB7IFN0YXRlbWVudFN1YnN0aXR1dGlvbiB9ID0gb250b2xvZ3ksXG4gICAgICAgIHN1YnN0aXR1dGlvbnNKU09OID0gc3Vic3RpdHV0aW9ucywgIC8vL1xuICAgICAgICBTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRTdWJzdGl0dXRpb247IC8vL1xuXG4gIHN1YnN0aXR1dGlvbnMgPSBzdWJzdGl0dXRpb25zSlNPTi5tYXAoKHN1YnN0aXR1dGlvbkpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gc3Vic3RpdHV0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IFN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gb250b2xvZ3ksXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbGVtbWFzID0gW107XG5cbiAgcmV0dXJuIGxlbW1hcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFMZW1tYXNGcm9tTm90aGluZygpIHtcbiAgY29uc3QgbWV0YUxlbW1hcyA9IFtdO1xuXG4gIHJldHVybiBtZXRhTGVtbWFzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybVRvVGVybUpTT04odGVybSkge1xuICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgcmV0dXJuIHRlcm1KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVRvVHlwZUpTT04odHlwZSkge1xuICBjb25zdCB0eXBlSlNPTiA9ICh0eXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0eXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsVG9MYWJlbEpTT04obGFiZWwpIHtcbiAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgcmV0dXJuIGxhYmVsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGFUeXBlVG9NZXRhVHlwZUpTT04obWV0YVR5cGUpIHtcbiAgY29uc3QgbWV0YVR5cGVKU09OID0gKG1ldGFUeXBlICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgbWV0YVR5cGUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jbHVzaW9uVG9Db25jbHVzaW9uSlNPTihjb25jbHVzaW9uKSB7XG4gIGNvbnN0IGNvbmNsdXNpb25KU09OID0gY29uY2x1c2lvbi50b0pTT04oKTtcblxuICByZXR1cm4gY29uY2x1c2lvbkpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04obWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTihwcm9jZWR1cmVDYWxsKSB7XG4gIGNvbnN0IHByb2NlZHVyZUNhbGxKU09OID0gKHByb2NlZHVyZUNhbGwgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NlZHVyZUNhbGwudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZVRvUHJvY2VkdXJlUmVmZXJlbmNlSlNPTihwcm9jZWR1cmVSZWZlcmVuY2UpIHtcbiAgY29uc3QgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcHJvY2VkdXJlUmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgdHlwZSA9IHR5cGVKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNUb1Rlcm1zSlNPTih0ZXJtcykge1xuICBjb25zdCB0ZXJtc0pTT04gPSB0ZXJtcy5tYXAoKHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtSlNPTiA9IHRlcm0udG9KU09OKCk7XG5cbiAgICB0ZXJtID0gdGVybUpTT047IC8vL1xuXG4gICAgcmV0dXJuIHRlcm07XG4gIH0pO1xuXG4gIHJldHVybiB0ZXJtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc1RvUnVsZXNKU09OKHJ1bGVzKSB7XG4gIGNvbnN0IHJ1bGVzSlNPTiA9IHJ1bGVzLm1hcCgocnVsZSkgPT4ge1xuICAgIGNvbnN0IHJ1bGVKU09OID0gcnVsZS50b0pTT04oKTtcblxuICAgIHJ1bGUgPSBydWxlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gcnVsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJ1bGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1RvTGFiZWxzSlNPTihsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzSlNPTiA9IGxhYmVscy5tYXAoKGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxKU09OID0gbGFiZWwudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbGFiZWxKU09OO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGF4aW9tc1RvQXhpb21zSlNPTihheGlvbXMpIHtcbiAgY29uc3QgYXhpb21zSlNPTiA9IGF4aW9tcy5tYXAoKGF4aW9tKSA9PiB7XG4gICAgY29uc3QgYXhpb21KU09OID0gYXhpb20udG9KU09OKCk7XG5cbiAgICBheGlvbSA9IGF4aW9tSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gYXhpb207XG4gIH0pO1xuXG4gIHJldHVybiBheGlvbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNUb1ByZW1pc2VzSlNPTihwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc0pTT04gPSBwcmVtaXNlcy5tYXAoKHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlSlNPTiA9IHByZW1pc2UudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcHJlbWlzZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVvcmVtc1RvVGhlb3JlbXNKU09OKHRoZW9yZW1zKSB7XG4gIGNvbnN0IHRoZW9yZW1zSlNPTiA9IHRoZW9yZW1zLm1hcCgodGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IHRoZW9yZW1KU09OID0gdGhlb3JlbS50b0pTT04oKTtcblxuICAgIHRoZW9yZW0gPSB0aGVvcmVtSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTih2YXJpYWJsZXMpIHtcbiAgY29uc3QgdmFyaWFibGVzSlNPTiA9IHZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgdmFyaWFibGVKU09OID0gdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICB2YXJpYWJsZSA9IHZhcmlhYmxlSlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gdmFyaWFibGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc0pTT04gPSBoeXBvdGhlc2VzLm1hcCgoaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNKU09OID0gaHlwb3RoZXNpcy50b0pTT04oKTtcblxuICAgIGh5cG90aGVzaXMgPSBoeXBvdGhlc2lzSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gaHlwb3RoZXNpcztcbiAgfSk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04oc3VwZXJUeXBlcykge1xuICBjb25zdCBzdXBlclR5cGVzSlNPTiA9IHN1cGVyVHlwZXMubWFwKChzdXBlclR5cGUpID0+IHtcbiAgICBjb25zdCBzdXBlclR5cGVKU09OID0gc3VwZXJUeXBlLnRvSlNPTigpO1xuXG4gICAgc3VwZXJUeXBlID0gc3VwZXJUeXBlSlNPTjsgLy8vXG5cbiAgICByZXR1cm4gc3VwZXJUeXBlO1xuICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gcGFyYW1ldGVyO1xuICB9KTtcblxuICByZXR1cm4gcGFyYW1ldGVyc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzVG9Qcm9wZXJ0aWVzSlNPTihwcm9wZXJ0aWVzKSB7XG4gIGNvbnN0IHByb3BlcnRpZXNKU09OID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7XG4gICAgY29uc3QgcHJvcGVydHlKU09OID0gcHJvcGVydHkudG9KU09OKCk7XG5cbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5SlNPTjsgIC8vL1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgdHlwZVByZWZpeCA9IHR5cGVQcmVmaXhKU09OOyAvLy9cblxuICAgIHJldHVybiB0eXBlUHJlZml4O1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04oY29uamVjdHVyZXMpIHtcbiAgY29uc3QgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXMubWFwKChjb25qZWN0dXJlKSA9PiB7XG4gICAgY29uc3QgY29uamVjdHVyZUpTT04gPSBjb25qZWN0dXJlLnRvSlNPTigpO1xuXG4gICAgY29uamVjdHVyZSA9IGNvbmplY3R1cmVKU09OOyAvLy9cblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTihjb21iaW5hdG9ycykge1xuICBjb25zdCBjb21iaW5hdG9yc0pTT04gPSBjb21iaW5hdG9ycy5tYXAoKGNvbWJpbmF0b3IpID0+IHtcbiAgICBjb25zdCBjb21iaW5hdG9ySlNPTiA9IGNvbWJpbmF0b3IudG9KU09OKCk7XG5cbiAgICBjb21iaW5hdG9yID0gY29tYmluYXRvckpTT047IC8vL1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3I7XG4gIH0pO1xuXG4gIHJldHVybiBjb21iaW5hdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvckpTT047ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJ1Y3RvcjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04obWV0YXRoZW9yZW1zKSB7XG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXMubWFwKChtZXRhdGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IG1ldGF0aGVvcmVtSlNPTiA9IG1ldGF0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgbWV0YXRoZW9yZW0gPSBtZXRhdGhlb3JlbUpTT047IC8vL1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXRoZW9yZW1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcFN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVKU09OOyAgLy8vXG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlc0pTT047XG59XG4iXSwibmFtZXMiOlsiYXhpb21zRnJvbUpTT04iLCJheGlvbXNUb0F4aW9tc0pTT04iLCJjb21iaW5hdG9yc0Zyb21KU09OIiwiY29tYmluYXRvcnNUb0NvbWJpbmF0b3JzSlNPTiIsImNvbmNsdXNpb25Gcm9tSlNPTiIsImNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OIiwiY29uamVjdHVyZXNGcm9tSlNPTiIsImNvbmplY3R1cmVzVG9Db25qZWN0dXJlc0pTT04iLCJjb25zdHJ1Y3RvcnNGcm9tSlNPTiIsImNvbnN0cnVjdG9yc1RvQ29uc3RydWN0b3JzSlNPTiIsImRlZHVjdGlvbkZyb21KU09OIiwiZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OIiwiaHlwb3RoZXNlc0Zyb21KU09OIiwiaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04iLCJsYWJlbEZyb21KU09OIiwibGFiZWxUb0xhYmVsSlNPTiIsImxhYmVsc0Zyb21KU09OIiwibGFiZWxzVG9MYWJlbHNKU09OIiwibGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhTGVtbWFzRnJvbU5vdGhpbmciLCJtZXRhVHlwZUZyb21KU09OIiwibWV0YVR5cGVUb01ldGFUeXBlSlNPTiIsIm1ldGF0aGVvcmVtc0Zyb21KU09OIiwibWV0YXRoZW9yZW1zVG9NZXRhdGhlb3JlbXNKU09OIiwibWV0YXZhcmlhYmxlRnJvbUpTT04iLCJtZXRhdmFyaWFibGVUb01ldGF2YXJpYWJsZUpTT04iLCJtZXRhdmFyaWFibGVzRnJvbUpTT04iLCJtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTiIsInBhcmFtZXRlcnNGcm9tSlNPTiIsInBhcmFtZXRlcnNUb1BhcmFtZXRlcnNKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJydWxlc0Zyb21KU09OIiwicnVsZXNUb1J1bGVzSlNPTiIsInNpZ25hdHVyZUZyb21KU09OIiwic2lnbmF0dXJlVG9TaWduYXR1cmVKU09OIiwic3RhdGVtZW50RnJvbUpTT04iLCJzdGF0ZW1lbnRUb1N0YXRlbWVudEpTT04iLCJzdWJzdGl0dXRpb25zRnJvbUpTT04iLCJzdWJzdGl0dXRpb25zVG9TdWJzdGl0dXRpb25zSlNPTiIsInN1cGVyVHlwZXNGcm9tSlNPTiIsInN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OIiwic3VwcG9zaXRpb25zRnJvbUpTT04iLCJzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04iLCJ0ZXJtRnJvbUpTT04iLCJ0ZXJtVG9UZXJtSlNPTiIsInRlcm1zRnJvbUpTT04iLCJ0ZXJtc1RvVGVybXNKU09OIiwidGhlb3JlbXNGcm9tSlNPTiIsInRoZW9yZW1zVG9UaGVvcmVtc0pTT04iLCJ0eXBlRnJvbUpTT04iLCJ0eXBlUHJlZml4ZXNGcm9tSlNPTiIsInR5cGVQcmVmaXhlc1RvVHlwZVByZWZpeGVzSlNPTiIsInR5cGVUb1R5cGVKU09OIiwidHlwZXNGcm9tSlNPTiIsInR5cGVzVG9UeXBlc0pTT04iLCJ2YXJpYWJsZXNGcm9tSlNPTiIsInZhcmlhYmxlc1RvVmFyaWFibGVzSlNPTiIsImpzb24iLCJjb250ZXh0IiwidGVybSIsInRlcm1KU09OIiwiVGVybSIsIm9udG9sb2d5IiwiZnJvbUpTT04iLCJ0eXBlIiwibmFtZSIsInByZWZpeE5hbWUiLCJub21pbmFsVHlwZU5hbWUiLCJmaW5kVHlwZUJ5Tm9taW5hbFR5cGVOYW1lIiwibWV0YVR5cGUiLCJtZXRhVHlwZU5hbWUiLCJmaW5kTWV0YVR5cGVCeU1ldGFUeXBlTmFtZSIsInN0YXRlbWVudCIsIlN0YXRlbWVudCIsInN0YXRlbWVudEpTT04iLCJkZWR1Y3Rpb24iLCJEZWR1Y3Rpb24iLCJkZWR1Y3Rpb25KU09OIiwic2lnbmF0dXJlIiwiU2lnbmF0dXJlIiwic2lnbmF0dXJlSlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJtZXRhdmFyaWFibGUiLCJNZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVKU09OIiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJsYWJlbCIsIkxhYmVsIiwibGFiZWxKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5Iiwic3VwZXJUeXBlcyIsInN1cGVyVHlwZXNKU09OIiwic3VwZXJUeXBlSlNPTiIsIm5vbWluYWxTdXBlclR5cGVOYW1lIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJjb25qZWN0dXJlcyIsIkNvbmplY3R1cmUiLCJjb25qZWN0dXJlc0pTT04iLCJjb25qZWN0dXJlSlNPTiIsImNvbmplY3R1cmUiLCJjb21iaW5hdG9ycyIsIkNvbWJpbmF0b3IiLCJjb21iaW5hdG9yc0pTT04iLCJjb21iaW5hdG9ySlNPTiIsImNvbWJpbmF0b3IiLCJ0eXBlUHJlZml4ZXMiLCJUeXBlUHJlZml4IiwidHlwZVByZWZpeGVzSlNPTiIsInR5cGVQcmVmaXhKU09OIiwidHlwZVByZWZpeCIsImNvbnN0cnVjdG9ycyIsIkNvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JzSlNPTiIsImNvbnN0cnVjdG9ySlNPTiIsImNvbnN0cnVjdG9yIiwibWV0YXRoZW9yZW1zIiwiTWV0YXRoZW9yZW0iLCJtZXRhdGhlb3JlbXNKU09OIiwibWV0YXRoZW9yZW1KU09OIiwibWV0YXRoZW9yZW0iLCJzdXBwb3NpdGlvbnMiLCJTdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uc0pTT04iLCJzdXBwb3NpdGlvbkpTT04iLCJzdXBwb3NpdGlvbiIsInN1YnN0aXR1dGlvbnMiLCJTdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25zSlNPTiIsIlN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvbkpTT04iLCJzdWJzdGl0dXRpb24iLCJtZXRhdmFyaWFibGVzIiwibWV0YXZhcmlhYmxlc0pTT04iLCJsZW1tYXMiLCJtZXRhTGVtbWFzIiwidG9KU09OIiwibWV0YVR5cGVKU09OIiwibWFwU3Vic3RpdHV0aW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUE2TmdCQTtlQUFBQTs7UUF1WUFDO2VBQUFBOztRQXRQQUM7ZUFBQUE7O1FBNFdBQztlQUFBQTs7UUE3bkJBQztlQUFBQTs7UUErYkFDO2VBQUFBOztRQTlMQUM7ZUFBQUE7O1FBZ1hBQztlQUFBQTs7UUFoVUFDO2VBQUFBOztRQWtXQUM7ZUFBQUE7O1FBL3FCQUM7ZUFBQUE7O1FBNmNBQztlQUFBQTs7UUFoTkFDO2VBQUFBOztRQW9WQUM7ZUFBQUE7O1FBbGRBQztlQUFBQTs7UUF5VEFDO2VBQUFBOztRQTVTQUM7ZUFBQUE7O1FBNllBQztlQUFBQTs7UUEzSEFDO2VBQUFBOztRQU1BQztlQUFBQTs7UUFsY0FDO2VBQUFBOztRQTRkQUM7ZUFBQUE7O1FBakdBQztlQUFBQTs7UUE4VkFDO2VBQUFBOztRQWxwQkFDO2VBQUFBOztRQXdiQUM7ZUFBQUE7O1FBbkZBQztlQUFBQTs7UUFtVUFDO2VBQUFBOztRQXBjQUM7ZUFBQUE7O1FBNFZBQztlQUFBQTs7UUE3YkFDO2VBQUFBOztRQW1ZQUM7ZUFBQUE7O1FBemZBQztlQUFBQTs7UUFpYkFDO2VBQUFBOztRQWxhQUM7ZUFBQUE7O1FBMGFBQztlQUFBQTs7UUFuUkFDO2VBQUFBOztRQXlaQUM7ZUFBQUE7O1FBdGdCQUM7ZUFBQUE7O1FBOFpBQztlQUFBQTs7UUFoZ0JBQztlQUFBQTs7UUFzY0FDO2VBQUFBOztRQWxlQUM7ZUFBQUE7O1FBb2RBQztlQUFBQTs7UUF4RUFDO2VBQUFBOztRQTBVQUM7ZUFBQUE7O1FBM2RBQztlQUFBQTs7UUFpWEFDO2VBQUFBOztRQWhQQUM7ZUFBQUE7O1FBd1RBQztlQUFBQTs7UUFsdUJBQztlQUFBQTs7UUF1ZUFDO2VBQUFBOztRQTNVQUM7ZUFBQUE7O1FBa2FBQztl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