oxygen-cli 1.40.2 → 1.42.0

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 (285) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/build/core/OxygenCore.js +41 -274
  3. package/build/core/OxygenEvents.js +2 -12
  4. package/build/core/OxygenModule.js +1 -16
  5. package/build/core/OxygenService.js +1 -12
  6. package/build/core/OxygenSubModule.js +1 -10
  7. package/build/core/WebDriverModule.js +2 -32
  8. package/build/core/utils.js +2 -21
  9. package/build/errors/HookError.js +2 -8
  10. package/build/errors/ModuleError.js +2 -8
  11. package/build/errors/ModuleUnavailableError.js +1 -3
  12. package/build/errors/OxygenError.js +3 -36
  13. package/build/errors/ScriptNotFound.js +2 -8
  14. package/build/errors/helper.js +51 -82
  15. package/build/index.js +8 -22
  16. package/build/lib/cli-util.js +39 -105
  17. package/build/lib/cli.js +3 -30
  18. package/build/lib/debugger.js +2 -145
  19. package/build/lib/img-merge.js +2 -16
  20. package/build/lib/launcher.js +3 -31
  21. package/build/lib/moduleRequire.js +1 -4
  22. package/build/lib/parallel-launcher.js +44 -84
  23. package/build/lib/param-manager.js +2 -29
  24. package/build/lib/param-reader-csv.js +1 -15
  25. package/build/lib/param-reader-excel.js +1 -14
  26. package/build/lib/param-reader-json.js +1 -10
  27. package/build/lib/text-to-image.js +5 -26
  28. package/build/lib/util.js +4 -75
  29. package/build/model/case-result.js +1 -2
  30. package/build/model/failure.js +1 -2
  31. package/build/model/status.js +1 -2
  32. package/build/model/step-result.js +1 -2
  33. package/build/model/suite-result.js +1 -2
  34. package/build/model/test-result.js +1 -2
  35. package/build/model/testcase.js +1 -2
  36. package/build/model/testsuite.js +1 -2
  37. package/build/ox_modules/index.js +21 -34
  38. package/build/ox_modules/module-assert.js +9 -28
  39. package/build/ox_modules/module-date.js +3 -8
  40. package/build/ox_modules/module-db.js +8 -29
  41. package/build/ox_modules/module-email.js +14 -45
  42. package/build/ox_modules/module-eyes.js +6 -47
  43. package/build/ox_modules/module-http/ntlm-util.js +3 -7
  44. package/build/ox_modules/module-http/ntlm.js +9 -78
  45. package/build/ox_modules/module-http.js +69 -172
  46. package/build/ox_modules/module-log.js +10 -23
  47. package/build/ox_modules/module-mailinator.js +11 -33
  48. package/build/ox_modules/module-mob/commands/alertAccept.js +1 -3
  49. package/build/ox_modules/module-mob/commands/alertDismiss.js +1 -3
  50. package/build/ox_modules/module-mob/commands/assertAlert.js +1 -7
  51. package/build/ox_modules/module-mob/commands/assertText.js +1 -4
  52. package/build/ox_modules/module-mob/commands/assertTitle.js +1 -5
  53. package/build/ox_modules/module-mob/commands/assertValue.js +9 -17
  54. package/build/ox_modules/module-mob/commands/back.js +1 -3
  55. package/build/ox_modules/module-mob/commands/clear.js +1 -5
  56. package/build/ox_modules/module-mob/commands/click.js +3 -5
  57. package/build/ox_modules/module-mob/commands/clickHidden.js +3 -10
  58. package/build/ox_modules/module-mob/commands/clickLong.js +1 -3
  59. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +1 -5
  60. package/build/ox_modules/module-mob/commands/closeApp.js +1 -3
  61. package/build/ox_modules/module-mob/commands/debug.js +2 -3
  62. package/build/ox_modules/module-mob/commands/dragAndDrop.js +1 -3
  63. package/build/ox_modules/module-mob/commands/enableNetwork.js +4 -13
  64. package/build/ox_modules/module-mob/commands/execute.js +1 -3
  65. package/build/ox_modules/module-mob/commands/findElement.js +1 -4
  66. package/build/ox_modules/module-mob/commands/findElements.js +1 -5
  67. package/build/ox_modules/module-mob/commands/getAlertText.js +1 -3
  68. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +1 -3
  69. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +1 -11
  70. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +1 -3
  71. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +1 -3
  72. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +1 -10
  73. package/build/ox_modules/module-mob/commands/getDeviceTime.js +1 -3
  74. package/build/ox_modules/module-mob/commands/getLocation.js +1 -3
  75. package/build/ox_modules/module-mob/commands/getSource.js +1 -3
  76. package/build/ox_modules/module-mob/commands/getText.js +1 -5
  77. package/build/ox_modules/module-mob/commands/getTitle.js +1 -3
  78. package/build/ox_modules/module-mob/commands/getUrl.js +1 -3
  79. package/build/ox_modules/module-mob/commands/getValue.js +5 -10
  80. package/build/ox_modules/module-mob/commands/getWindowHandles.js +1 -3
  81. package/build/ox_modules/module-mob/commands/hideKeyboard.js +1 -3
  82. package/build/ox_modules/module-mob/commands/index.js +1 -148
  83. package/build/ox_modules/module-mob/commands/installApp.js +1 -3
  84. package/build/ox_modules/module-mob/commands/isAppInstalled.js +1 -3
  85. package/build/ox_modules/module-mob/commands/isCheckable.js +1 -3
  86. package/build/ox_modules/module-mob/commands/isChecked.js +1 -3
  87. package/build/ox_modules/module-mob/commands/isClickable.js +1 -3
  88. package/build/ox_modules/module-mob/commands/isExist.js +1 -4
  89. package/build/ox_modules/module-mob/commands/isSelected.js +1 -3
  90. package/build/ox_modules/module-mob/commands/isVisible.js +1 -4
  91. package/build/ox_modules/module-mob/commands/isWebViewContext.js +1 -3
  92. package/build/ox_modules/module-mob/commands/launchApp.js +1 -3
  93. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +1 -3
  94. package/build/ox_modules/module-mob/commands/open.js +1 -4
  95. package/build/ox_modules/module-mob/commands/pause.js +1 -3
  96. package/build/ox_modules/module-mob/commands/removeApp.js +1 -3
  97. package/build/ox_modules/module-mob/commands/resetApp.js +1 -3
  98. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +1 -7
  99. package/build/ox_modules/module-mob/commands/scrollIntoView.js +1 -3
  100. package/build/ox_modules/module-mob/commands/select.js +1 -5
  101. package/build/ox_modules/module-mob/commands/selectFrame.js +1 -5
  102. package/build/ox_modules/module-mob/commands/selectWindow.js +5 -27
  103. package/build/ox_modules/module-mob/commands/sendKeys.js +6 -10
  104. package/build/ox_modules/module-mob/commands/setContext.js +1 -3
  105. package/build/ox_modules/module-mob/commands/setNativeContext.js +1 -3
  106. package/build/ox_modules/module-mob/commands/setTimeout.js +1 -3
  107. package/build/ox_modules/module-mob/commands/setWebViewContext.js +3 -7
  108. package/build/ox_modules/module-mob/commands/shake.js +1 -3
  109. package/build/ox_modules/module-mob/commands/smsClickLink.js +1 -3
  110. package/build/ox_modules/module-mob/commands/smsGetText.js +3 -7
  111. package/build/ox_modules/module-mob/commands/swipe.js +1 -3
  112. package/build/ox_modules/module-mob/commands/swipeElement.js +1 -3
  113. package/build/ox_modules/module-mob/commands/swipeScreen.js +1 -3
  114. package/build/ox_modules/module-mob/commands/takeScreenshot.js +1 -3
  115. package/build/ox_modules/module-mob/commands/tap.js +1 -3
  116. package/build/ox_modules/module-mob/commands/type.js +3 -8
  117. package/build/ox_modules/module-mob/commands/unlockPattern.js +9 -11
  118. package/build/ox_modules/module-mob/commands/waitForExist.js +1 -3
  119. package/build/ox_modules/module-mob/commands/waitForInteractable.js +1 -4
  120. package/build/ox_modules/module-mob/commands/waitForVisible.js +1 -3
  121. package/build/ox_modules/module-mob.js +74 -216
  122. package/build/ox_modules/module-mongo.js +265 -0
  123. package/build/ox_modules/module-pdf.js +24 -65
  124. package/build/ox_modules/module-proxy.js +9 -69
  125. package/build/ox_modules/module-serial.js +8 -33
  126. package/build/ox_modules/module-shell.js +10 -30
  127. package/build/ox_modules/module-soap.js +17 -52
  128. package/build/ox_modules/module-twilio.js +11 -54
  129. package/build/ox_modules/module-utils.js +22 -58
  130. package/build/ox_modules/module-web/commands/alertAccept.js +1 -3
  131. package/build/ox_modules/module-web/commands/alertDismiss.js +1 -3
  132. package/build/ox_modules/module-web/commands/assertAlert.js +1 -7
  133. package/build/ox_modules/module-web/commands/assertExist.js +1 -3
  134. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +1 -5
  135. package/build/ox_modules/module-web/commands/assertSelectedValue.js +1 -4
  136. package/build/ox_modules/module-web/commands/assertText.js +1 -4
  137. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +1 -7
  138. package/build/ox_modules/module-web/commands/assertTextPresent.js +1 -7
  139. package/build/ox_modules/module-web/commands/assertTitle.js +1 -4
  140. package/build/ox_modules/module-web/commands/assertValue.js +1 -4
  141. package/build/ox_modules/module-web/commands/back.js +1 -3
  142. package/build/ox_modules/module-web/commands/clear.js +1 -6
  143. package/build/ox_modules/module-web/commands/click.js +4 -15
  144. package/build/ox_modules/module-web/commands/clickHidden.js +2 -8
  145. package/build/ox_modules/module-web/commands/closeWindow.js +1 -3
  146. package/build/ox_modules/module-web/commands/debug.js +2 -3
  147. package/build/ox_modules/module-web/commands/deleteCookies.js +1 -3
  148. package/build/ox_modules/module-web/commands/deselect.js +1 -3
  149. package/build/ox_modules/module-web/commands/doubleClick.js +3 -10
  150. package/build/ox_modules/module-web/commands/dragAndDrop.js +1 -3
  151. package/build/ox_modules/module-web/commands/execute.js +1 -3
  152. package/build/ox_modules/module-web/commands/fileBrowse.js +4 -11
  153. package/build/ox_modules/module-web/commands/findElement.js +1 -4
  154. package/build/ox_modules/module-web/commands/findElements.js +1 -5
  155. package/build/ox_modules/module-web/commands/fullscreenWindow.js +1 -3
  156. package/build/ox_modules/module-web/commands/getAlertText.js +1 -3
  157. package/build/ox_modules/module-web/commands/getAttribute.js +1 -5
  158. package/build/ox_modules/module-web/commands/getBrowserLogs.js +1 -4
  159. package/build/ox_modules/module-web/commands/getCookies.js +1 -3
  160. package/build/ox_modules/module-web/commands/getCssValue.js +1 -5
  161. package/build/ox_modules/module-web/commands/getElementCount.js +1 -3
  162. package/build/ox_modules/module-web/commands/getHTML.js +1 -3
  163. package/build/ox_modules/module-web/commands/getSource.js +1 -3
  164. package/build/ox_modules/module-web/commands/getText.js +1 -5
  165. package/build/ox_modules/module-web/commands/getTitle.js +1 -3
  166. package/build/ox_modules/module-web/commands/getUrl.js +1 -3
  167. package/build/ox_modules/module-web/commands/getValue.js +1 -6
  168. package/build/ox_modules/module-web/commands/getWindowHandles.js +1 -3
  169. package/build/ox_modules/module-web/commands/getWindowSize.js +1 -3
  170. package/build/ox_modules/module-web/commands/getXMLPageSource.js +1 -6
  171. package/build/ox_modules/module-web/commands/index.js +1 -184
  172. package/build/ox_modules/module-web/commands/isAlertPresent.js +1 -3
  173. package/build/ox_modules/module-web/commands/isChecked.js +1 -3
  174. package/build/ox_modules/module-web/commands/isExist.js +1 -4
  175. package/build/ox_modules/module-web/commands/isInteractable.js +1 -3
  176. package/build/ox_modules/module-web/commands/isSelected.js +1 -3
  177. package/build/ox_modules/module-web/commands/isVisible.js +1 -4
  178. package/build/ox_modules/module-web/commands/makeVisible.js +2 -11
  179. package/build/ox_modules/module-web/commands/maximizeWindow.js +1 -3
  180. package/build/ox_modules/module-web/commands/minimizeWindow.js +1 -3
  181. package/build/ox_modules/module-web/commands/mock.js +1 -3
  182. package/build/ox_modules/module-web/commands/mockClearAll.js +1 -3
  183. package/build/ox_modules/module-web/commands/mockRestoreAll.js +1 -3
  184. package/build/ox_modules/module-web/commands/newWindow.js +1 -3
  185. package/build/ox_modules/module-web/commands/open.js +1 -5
  186. package/build/ox_modules/module-web/commands/pause.js +1 -3
  187. package/build/ox_modules/module-web/commands/point.js +1 -3
  188. package/build/ox_modules/module-web/commands/pointJS.js +2 -9
  189. package/build/ox_modules/module-web/commands/refresh.js +1 -3
  190. package/build/ox_modules/module-web/commands/rightClick.js +3 -9
  191. package/build/ox_modules/module-web/commands/rightClickActions.js +1 -3
  192. package/build/ox_modules/module-web/commands/scrollToElement.js +1 -3
  193. package/build/ox_modules/module-web/commands/select.js +1 -6
  194. package/build/ox_modules/module-web/commands/selectFrame.js +1 -4
  195. package/build/ox_modules/module-web/commands/selectWindow.js +5 -27
  196. package/build/ox_modules/module-web/commands/sendKeys.js +3 -7
  197. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -3
  198. package/build/ox_modules/module-web/commands/setTimeout.js +1 -3
  199. package/build/ox_modules/module-web/commands/setWindowSize.js +1 -3
  200. package/build/ox_modules/module-web/commands/takeScreenshot.js +3 -6
  201. package/build/ox_modules/module-web/commands/type.js +1 -6
  202. package/build/ox_modules/module-web/commands/verifyAlert.js +1 -7
  203. package/build/ox_modules/module-web/commands/verifyExist.js +2 -7
  204. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +1 -5
  205. package/build/ox_modules/module-web/commands/verifySelectedValue.js +1 -4
  206. package/build/ox_modules/module-web/commands/verifyText.js +1 -4
  207. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +1 -7
  208. package/build/ox_modules/module-web/commands/verifyTextPresent.js +1 -7
  209. package/build/ox_modules/module-web/commands/verifyTitle.js +1 -4
  210. package/build/ox_modules/module-web/commands/verifyValue.js +1 -4
  211. package/build/ox_modules/module-web/commands/waitForAngular.js +11 -14
  212. package/build/ox_modules/module-web/commands/waitForExist.js +1 -3
  213. package/build/ox_modules/module-web/commands/waitForInteractable.js +1 -3
  214. package/build/ox_modules/module-web/commands/waitForNotExist.js +1 -9
  215. package/build/ox_modules/module-web/commands/waitForNotText.js +1 -4
  216. package/build/ox_modules/module-web/commands/waitForNotValue.js +1 -4
  217. package/build/ox_modules/module-web/commands/waitForText.js +1 -4
  218. package/build/ox_modules/module-web/commands/waitForValue.js +1 -4
  219. package/build/ox_modules/module-web/commands/waitForVisible.js +1 -3
  220. package/build/ox_modules/module-web/commands/waitForWindow.js +4 -22
  221. package/build/ox_modules/module-web/webdriver/ChromeWDM.js +287 -0
  222. package/build/ox_modules/module-web/webdriver/auto-start.js +25 -0
  223. package/build/ox_modules/module-web.js +112 -232
  224. package/build/ox_modules/module-win/commands/assertText.js +1 -4
  225. package/build/ox_modules/module-win/commands/assertTitle.js +1 -5
  226. package/build/ox_modules/module-win/commands/assertValue.js +9 -17
  227. package/build/ox_modules/module-win/commands/back.js +1 -3
  228. package/build/ox_modules/module-win/commands/clear.js +1 -5
  229. package/build/ox_modules/module-win/commands/click.js +1 -3
  230. package/build/ox_modules/module-win/commands/clickLong.js +1 -3
  231. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +1 -5
  232. package/build/ox_modules/module-win/commands/findElement.js +1 -4
  233. package/build/ox_modules/module-win/commands/findElements.js +1 -5
  234. package/build/ox_modules/module-win/commands/getAppiumLogs.js +1 -3
  235. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +1 -3
  236. package/build/ox_modules/module-win/commands/getLocation.js +1 -3
  237. package/build/ox_modules/module-win/commands/getSource.js +1 -3
  238. package/build/ox_modules/module-win/commands/getText.js +1 -5
  239. package/build/ox_modules/module-win/commands/getValue.js +5 -10
  240. package/build/ox_modules/module-win/commands/getWindowHandles.js +1 -3
  241. package/build/ox_modules/module-win/commands/index.js +1 -74
  242. package/build/ox_modules/module-win/commands/isCheckable.js +1 -3
  243. package/build/ox_modules/module-win/commands/isChecked.js +1 -3
  244. package/build/ox_modules/module-win/commands/isClickable.js +1 -3
  245. package/build/ox_modules/module-win/commands/isExist.js +1 -4
  246. package/build/ox_modules/module-win/commands/isSelected.js +1 -3
  247. package/build/ox_modules/module-win/commands/isVisible.js +1 -4
  248. package/build/ox_modules/module-win/commands/open.js +1 -3
  249. package/build/ox_modules/module-win/commands/pause.js +1 -3
  250. package/build/ox_modules/module-win/commands/rightClick.js +1 -3
  251. package/build/ox_modules/module-win/commands/selectWindow.js +1 -16
  252. package/build/ox_modules/module-win/commands/sendKeys.js +1 -5
  253. package/build/ox_modules/module-win/commands/setTimeout.js +1 -3
  254. package/build/ox_modules/module-win/commands/takeScreenshot.js +1 -3
  255. package/build/ox_modules/module-win/commands/tap.js +1 -3
  256. package/build/ox_modules/module-win/commands/type.js +1 -5
  257. package/build/ox_modules/module-win/commands/waitForExist.js +1 -3
  258. package/build/ox_modules/module-win/commands/waitForInteractable.js +1 -5
  259. package/build/ox_modules/module-win/commands/waitForVisible.js +1 -3
  260. package/build/ox_modules/module-win.js +54 -95
  261. package/build/ox_modules/utils.js +91 -79
  262. package/build/ox_reporters/reporter-excel.js +2 -59
  263. package/build/ox_reporters/reporter-html.js +2 -29
  264. package/build/ox_reporters/reporter-json.js +2 -15
  265. package/build/ox_reporters/reporter-junit.js +2 -25
  266. package/build/ox_reporters/reporter-pdf.js +2 -20
  267. package/build/ox_reporters/reporter-rp.js +2 -91
  268. package/build/ox_reporters/reporter-xml.js +2 -18
  269. package/build/ox_services/service-devtools/submodule-network.js +4 -86
  270. package/build/ox_services/service-devtools.js +2 -24
  271. package/build/reporter/FileReporterBase.js +6 -45
  272. package/build/reporter/ReportAggregator.js +14 -120
  273. package/build/reporter/ReporterBase.js +1 -6
  274. package/build/reporter/WebSocketReporter.js +1 -39
  275. package/build/runners/WorkerProcess.js +2 -107
  276. package/build/runners/cucumber/CucumberEventListener.js +4 -29
  277. package/build/runners/cucumber/CucumberReporter.js +2 -57
  278. package/build/runners/cucumber/CucumberWorker.js +3 -69
  279. package/build/runners/cucumber/index.js +2 -31
  280. package/build/runners/cucumber/worker.js +2 -19
  281. package/build/runners/index.js +4 -11
  282. package/build/runners/oxygen/OxygenWorker.js +3 -61
  283. package/build/runners/oxygen/index.js +18 -179
  284. package/build/runners/oxygen/worker.js +3 -27
  285. package/package.json +5 -1
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  var _OxygenModule = _interopRequireDefault(require("../core/OxygenModule"));
11
-
12
9
  var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
13
-
14
10
  var _helper = _interopRequireDefault(require("../errors/helper"));
15
-
16
11
  var _utils = _interopRequireDefault(require("./utils"));
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
13
  /*
21
14
  * Copyright (C) 2015-2018 CloudBeat Limited
22
15
  *
@@ -25,31 +18,32 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
18
  * the Free Software Foundation, either version 3 of the License, or
26
19
  * (at your option) any later version.
27
20
  */
21
+
28
22
  const MODULE_NAME = 'shell';
23
+
29
24
  /**
30
25
  * @name shell
31
26
  * @description Provides methods for working with operating system shell.
32
27
  */
33
-
34
28
  class ShellModule extends _OxygenModule.default {
35
29
  constructor(options, context, rs, logger, modules, services) {
36
30
  super(options, context, rs, logger, modules, services);
37
- this._alwaysInitialized = true; // pre-initialize the module
38
-
31
+ this._alwaysInitialized = true;
32
+ // pre-initialize the module
39
33
  this._isInitialized = true;
40
34
  this._lastStdout;
41
35
  this._lastStderr;
42
36
  }
37
+
43
38
  /*
44
39
  * @summary Gets module name
45
40
  * @function name
46
41
  * @return {String} Constant value "shell".
47
42
  */
48
-
49
-
50
43
  get name() {
51
44
  return MODULE_NAME;
52
45
  }
46
+
53
47
  /**
54
48
  * @summary Execute command
55
49
  * @description Spawn child process
@@ -57,14 +51,10 @@ class ShellModule extends _OxygenModule.default {
57
51
  * @param {String} command - Shell command to be executed, including arguments, if applicable.
58
52
  * @return {Object} Response object containing stdout, stderr, exit code, and signal (if process was terminated by a signal).
59
53
  */
60
-
61
-
62
54
  exec(command, options = {}) {
63
55
  this._lastStdout = null;
64
56
  this._lastStderr = null;
65
-
66
57
  const spawn = require('cross-spawn');
67
-
68
58
  options = {
69
59
  cwd: this.options.cwd,
70
60
  shell: true,
@@ -72,11 +62,9 @@ class ShellModule extends _OxygenModule.default {
72
62
  ...options
73
63
  };
74
64
  const result = spawn.sync(command, options);
75
-
76
65
  if (result.error) {
77
66
  throw new _OxygenError.default(_helper.default.errorCode.SHELL_ERROR, result.error.message, null, true, result.error);
78
67
  }
79
-
80
68
  this._lastStdout = result.stdout ? result.stdout.toString() : null;
81
69
  this._lastStderr = result.stderr ? result.stderr.toString() : null;
82
70
  return {
@@ -86,44 +74,36 @@ class ShellModule extends _OxygenModule.default {
86
74
  signal: result.signal
87
75
  };
88
76
  }
77
+
89
78
  /**
90
79
  * @summary Assert that the shell command's output (stdout) matches the specified pattern.
91
80
  * @function assertOutput
92
81
  * @param {String} pattern - Pattern to assert.
93
82
  */
94
-
95
-
96
83
  assertOutput(pattern) {
97
84
  if (!this._lastStdout) {
98
85
  return false;
99
86
  }
100
-
101
87
  if (!_utils.default.matchPattern(this._lastStdout, pattern)) {
102
88
  throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, `Expected shell command output to match: "${pattern}" but got: "${this._lastStdout}"`);
103
89
  }
104
-
105
90
  return true;
106
91
  }
92
+
107
93
  /**
108
94
  * @summary Assert that the shell command's error output (stderr) matches the specified pattern.
109
95
  * @function assertErrorOutput
110
96
  * @param {String} pattern - Pattern to assert.
111
97
  */
112
-
113
-
114
98
  assertErrorOutput(pattern) {
115
99
  if (!this._lastStderr) {
116
100
  return false;
117
101
  }
118
-
119
102
  if (!_utils.default.matchPattern(this._lastStderr, pattern)) {
120
103
  throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, `Expected shell command error output to match: "${pattern}" but got: "${this._lastStderr}"`);
121
104
  }
122
-
123
105
  return true;
124
106
  }
125
-
126
107
  }
127
-
128
108
  exports.default = ShellModule;
129
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zaGVsbC5qcyJdLCJuYW1lcyI6WyJNT0RVTEVfTkFNRSIsIlNoZWxsTW9kdWxlIiwiT3h5Z2VuTW9kdWxlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY29udGV4dCIsInJzIiwibG9nZ2VyIiwibW9kdWxlcyIsInNlcnZpY2VzIiwiX2Fsd2F5c0luaXRpYWxpemVkIiwiX2lzSW5pdGlhbGl6ZWQiLCJfbGFzdFN0ZG91dCIsIl9sYXN0U3RkZXJyIiwibmFtZSIsImV4ZWMiLCJjb21tYW5kIiwic3Bhd24iLCJyZXF1aXJlIiwiY3dkIiwic2hlbGwiLCJlbnYiLCJwcm9jZXNzIiwicmVzdWx0Iiwic3luYyIsImVycm9yIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIlNIRUxMX0VSUk9SIiwibWVzc2FnZSIsInN0ZG91dCIsInRvU3RyaW5nIiwic3RkZXJyIiwiZXhpdENvZGUiLCJzdGF0dXMiLCJzaWduYWwiLCJhc3NlcnRPdXRwdXQiLCJwYXR0ZXJuIiwibW9kVXRpbHMiLCJtYXRjaFBhdHRlcm4iLCJBU1NFUlRfRVJST1IiLCJhc3NlcnRFcnJvck91dHB1dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUEsTUFBTUEsV0FBVyxHQUFHLE9BQXBCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsV0FBTixTQUEwQkMscUJBQTFCLENBQXVDO0FBQ2xEQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUJDLE1BQXZCLEVBQStCQyxPQUEvQixFQUF3Q0MsUUFBeEMsRUFBa0Q7QUFDekQsVUFBTUwsT0FBTixFQUFlQyxPQUFmLEVBQXdCQyxFQUF4QixFQUE0QkMsTUFBNUIsRUFBb0NDLE9BQXBDLEVBQTZDQyxRQUE3QztB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KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0IE94eWdlbk1vZHVsZSBmcm9tICcuLi9jb3JlL094eWdlbk1vZHVsZSc7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcbmltcG9ydCBtb2RVdGlscyBmcm9tICcuL3V0aWxzJztcclxuXHJcbmNvbnN0IE1PRFVMRV9OQU1FID0gJ3NoZWxsJztcclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzaGVsbFxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIG9wZXJhdGluZyBzeXN0ZW0gc2hlbGwuXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGVsbE1vZHVsZSBleHRlbmRzIE94eWdlbk1vZHVsZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKTtcclxuICAgICAgICB0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgLy8gcHJlLWluaXRpYWxpemUgdGhlIG1vZHVsZVxyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQ7XHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZGVycjtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogQHN1bW1hcnkgR2V0cyBtb2R1bGUgbmFtZVxyXG4gICAgICogQGZ1bmN0aW9uIG5hbWVcclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gQ29uc3RhbnQgdmFsdWUgXCJzaGVsbFwiLlxyXG4gICAgICovXHJcbiAgICBnZXQgbmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gTU9EVUxFX05BTUU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBFeGVjdXRlIGNvbW1hbmRcclxuICAgICAqIEBkZXNjcmlwdGlvbiBTcGF3biBjaGlsZCBwcm9jZXNzXHJcbiAgICAgKiBAZnVuY3Rpb24gZXhlY1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbW1hbmQgLSBTaGVsbCBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYXJndW1lbnRzLCBpZiBhcHBsaWNhYmxlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QgY29udGFpbmluZyBzdGRvdXQsIHN0ZGVyciwgZXhpdCBjb2RlLCBhbmQgc2lnbmFsIChpZiBwcm9jZXNzIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsKS5cclxuICAgICAqL1xyXG4gICAgZXhlYyhjb21tYW5kLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICB0aGlzLl9sYXN0U3Rkb3V0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sYXN0U3RkZXJyID0gbnVsbDtcclxuXHJcbiAgICAgICAgY29uc3Qgc3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpO1xyXG4gICAgICAgIG9wdGlvbnMgPSB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCwgc2hlbGw6IHRydWUsIGVudjogcHJvY2Vzcy5lbnYsIC4uLm9wdGlvbnMgfTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBzcGF3bi5zeW5jKGNvbW1hbmQsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0hFTExfRVJST1IsIHJlc3VsdC5lcnJvci5tZXNzYWdlLCBudWxsLCB0cnVlLCByZXN1bHQuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZG91dCA9IHJlc3VsdC5zdGRvdXQgPyByZXN1bHQuc3Rkb3V0LnRvU3RyaW5nKCkgOiBudWxsO1xyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRlcnIgPSByZXN1bHQuc3RkZXJyID8gcmVzdWx0LnN0ZGVyci50b1N0cmluZygpIDogbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc3Rkb3V0OiB0aGlzLl9sYXN0U3Rkb3V0LFxyXG4gICAgICAgICAgICBzdGRlcnI6IHRoaXMuX2xhc3RTdGRlcnIsXHJcbiAgICAgICAgICAgIGV4aXRDb2RlOiByZXN1bHQuc3RhdHVzLFxyXG4gICAgICAgICAgICBzaWduYWw6IHJlc3VsdC5zaWduYWxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHRoYXQgdGhlIHNoZWxsIGNvbW1hbmQncyBvdXRwdXQgKHN0ZG91dCkgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0T3V0cHV0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0dGVybiAtIFBhdHRlcm4gdG8gYXNzZXJ0LlxyXG4gICAgICovXHJcbiAgICBhc3NlcnRPdXRwdXQocGF0dGVybikge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFN0ZG91dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbW9kVXRpbHMubWF0Y2hQYXR0ZXJuKHRoaXMuX2xhc3RTdGRvdXQsIHBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQgc2hlbGwgY29tbWFuZCBvdXRwdXQgdG8gbWF0Y2g6IFwiJHtwYXR0ZXJufVwiIGJ1dCBnb3Q6IFwiJHt0aGlzLl9sYXN0U3Rkb3V0fVwiYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHRoYXQgdGhlIHNoZWxsIGNvbW1hbmQncyBlcnJvciBvdXRwdXQgKHN0ZGVycikgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0RXJyb3JPdXRwdXRcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXR0ZXJuIC0gUGF0dGVybiB0byBhc3NlcnQuXHJcbiAgICAgKi9cclxuICAgIGFzc2VydEVycm9yT3V0cHV0KHBhdHRlcm4pIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2xhc3RTdGRlcnIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybih0aGlzLl9sYXN0U3RkZXJyLCBwYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkIHNoZWxsIGNvbW1hbmQgZXJyb3Igb3V0cHV0IHRvIG1hdGNoOiBcIiR7cGF0dGVybn1cIiBidXQgZ290OiBcIiR7dGhpcy5fbGFzdFN0ZGVycn1cImApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufSJdfQ==
109
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT3h5Z2VuTW9kdWxlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfT3h5Z2VuRXJyb3IiLCJfaGVscGVyIiwiX3V0aWxzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiTU9EVUxFX05BTUUiLCJTaGVsbE1vZHVsZSIsIk94eWdlbk1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsIl9hbHdheXNJbml0aWFsaXplZCIsIl9pc0luaXRpYWxpemVkIiwiX2xhc3RTdGRvdXQiLCJfbGFzdFN0ZGVyciIsIm5hbWUiLCJleGVjIiwiY29tbWFuZCIsInNwYXduIiwiY3dkIiwic2hlbGwiLCJlbnYiLCJwcm9jZXNzIiwicmVzdWx0Iiwic3luYyIsImVycm9yIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIlNIRUxMX0VSUk9SIiwibWVzc2FnZSIsInN0ZG91dCIsInRvU3RyaW5nIiwic3RkZXJyIiwiZXhpdENvZGUiLCJzdGF0dXMiLCJzaWduYWwiLCJhc3NlcnRPdXRwdXQiLCJwYXR0ZXJuIiwibW9kVXRpbHMiLCJtYXRjaFBhdHRlcm4iLCJBU1NFUlRfRVJST1IiLCJhc3NlcnRFcnJvck91dHB1dCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvb3hfbW9kdWxlcy9tb2R1bGUtc2hlbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcbmltcG9ydCBPeHlnZW5Nb2R1bGUgZnJvbSAnLi4vY29yZS9PeHlnZW5Nb2R1bGUnO1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgZXJySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5pbXBvcnQgbW9kVXRpbHMgZnJvbSAnLi91dGlscyc7XHJcblxyXG5jb25zdCBNT0RVTEVfTkFNRSA9ICdzaGVsbCc7XHJcblxyXG4vKipcclxuICogQG5hbWUgc2hlbGxcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBvcGVyYXRpbmcgc3lzdGVtIHNoZWxsLlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2hlbGxNb2R1bGUgZXh0ZW5kcyBPeHlnZW5Nb2R1bGUge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcyk7XHJcbiAgICAgICAgdGhpcy5fYWx3YXlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIC8vIHByZS1pbml0aWFsaXplIHRoZSBtb2R1bGVcclxuICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9sYXN0U3Rkb3V0O1xyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRlcnI7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIEBzdW1tYXJ5IEdldHMgbW9kdWxlIG5hbWVcclxuICAgICAqIEBmdW5jdGlvbiBuYW1lXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IENvbnN0YW50IHZhbHVlIFwic2hlbGxcIi5cclxuICAgICAqL1xyXG4gICAgZ2V0IG5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuIE1PRFVMRV9OQU1FO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZSBjb21tYW5kXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU3Bhd24gY2hpbGQgcHJvY2Vzc1xyXG4gICAgICogQGZ1bmN0aW9uIGV4ZWNcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb21tYW5kIC0gU2hlbGwgY29tbWFuZCB0byBiZSBleGVjdXRlZCwgaW5jbHVkaW5nIGFyZ3VtZW50cywgaWYgYXBwbGljYWJsZS5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUmVzcG9uc2Ugb2JqZWN0IGNvbnRhaW5pbmcgc3Rkb3V0LCBzdGRlcnIsIGV4aXQgY29kZSwgYW5kIHNpZ25hbCAoaWYgcHJvY2VzcyB3YXMgdGVybWluYXRlZCBieSBhIHNpZ25hbCkuXHJcbiAgICAgKi9cclxuICAgIGV4ZWMoY29tbWFuZCwgb3B0aW9ucyA9IHt9KSB7XHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZG91dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZGVyciA9IG51bGw7XHJcblxyXG4gICAgICAgIGNvbnN0IHNwYXduID0gcmVxdWlyZSgnY3Jvc3Mtc3Bhd24nKTtcclxuICAgICAgICBvcHRpb25zID0geyBjd2Q6IHRoaXMub3B0aW9ucy5jd2QsIHNoZWxsOiB0cnVlLCBlbnY6IHByb2Nlc3MuZW52LCAuLi5vcHRpb25zIH07XHJcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gc3Bhd24uc3luYyhjb21tYW5kLCBvcHRpb25zKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5lcnJvcikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNIRUxMX0VSUk9SLCByZXN1bHQuZXJyb3IubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgcmVzdWx0LmVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQgPSByZXN1bHQuc3Rkb3V0ID8gcmVzdWx0LnN0ZG91dC50b1N0cmluZygpIDogbnVsbDtcclxuICAgICAgICB0aGlzLl9sYXN0U3RkZXJyID0gcmVzdWx0LnN0ZGVyciA/IHJlc3VsdC5zdGRlcnIudG9TdHJpbmcoKSA6IG51bGw7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHN0ZG91dDogdGhpcy5fbGFzdFN0ZG91dCxcclxuICAgICAgICAgICAgc3RkZXJyOiB0aGlzLl9sYXN0U3RkZXJyLFxyXG4gICAgICAgICAgICBleGl0Q29kZTogcmVzdWx0LnN0YXR1cyxcclxuICAgICAgICAgICAgc2lnbmFsOiByZXN1bHQuc2lnbmFsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCB0aGF0IHRoZSBzaGVsbCBjb21tYW5kJ3Mgb3V0cHV0IChzdGRvdXQpIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwYXR0ZXJuLlxyXG4gICAgICogQGZ1bmN0aW9uIGFzc2VydE91dHB1dFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gLSBQYXR0ZXJuIHRvIGFzc2VydC5cclxuICAgICAqL1xyXG4gICAgYXNzZXJ0T3V0cHV0KHBhdHRlcm4pIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2xhc3RTdGRvdXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybih0aGlzLl9sYXN0U3Rkb3V0LCBwYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkIHNoZWxsIGNvbW1hbmQgb3V0cHV0IHRvIG1hdGNoOiBcIiR7cGF0dGVybn1cIiBidXQgZ290OiBcIiR7dGhpcy5fbGFzdFN0ZG91dH1cImApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCB0aGF0IHRoZSBzaGVsbCBjb21tYW5kJ3MgZXJyb3Igb3V0cHV0IChzdGRlcnIpIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBwYXR0ZXJuLlxyXG4gICAgICogQGZ1bmN0aW9uIGFzc2VydEVycm9yT3V0cHV0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0dGVybiAtIFBhdHRlcm4gdG8gYXNzZXJ0LlxyXG4gICAgICovXHJcbiAgICBhc3NlcnRFcnJvck91dHB1dChwYXR0ZXJuKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9sYXN0U3RkZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFtb2RVdGlscy5tYXRjaFBhdHRlcm4odGhpcy5fbGFzdFN0ZGVyciwgcGF0dGVybikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGBFeHBlY3RlZCBzaGVsbCBjb21tYW5kIGVycm9yIG91dHB1dCB0byBtYXRjaDogXCIke3BhdHRlcm59XCIgYnV0IGdvdDogXCIke3RoaXMuX2xhc3RTdGRlcnJ9XCJgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn0iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFK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
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
-
5
4
  var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
6
-
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
6
  /*
10
7
  * Copyright (C) 2015-present CloudBeat Limited
11
8
  *
@@ -19,18 +16,16 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
16
  * @name soap
20
17
  * @description Provides methods for working with SOAP based Web Services.
21
18
  */
22
- var errHelper = require('../errors/helper');
23
19
 
20
+ var errHelper = require('../errors/helper');
24
21
  module.exports = function () {
25
22
  var soap = require('soap');
26
-
27
23
  var auth = null;
28
24
  var proxyOptions = {};
29
25
  var options = {
30
26
  rejectUnauthorized: false
31
27
  };
32
28
  var lastResponseHeaders = null;
33
-
34
29
  module.isInitialized = function () {
35
30
  return true;
36
31
  };
@@ -39,8 +34,6 @@ module.exports = function () {
39
34
  * @function setProxy
40
35
  * @param {String} url - Proxy url. Invocation without arguments will remove any previously set url.
41
36
  */
42
-
43
-
44
37
  module.setProxy = function (url) {
45
38
  if (url) {
46
39
  proxyOptions = {
@@ -50,27 +43,26 @@ module.exports = function () {
50
43
  proxyOptions = {};
51
44
  }
52
45
  };
46
+
53
47
  /**
54
48
  * @summary Sets Basic Authentication details to be used for connections with the service.
55
49
  * @function authBasic
56
50
  * @param {String} user - Username.
57
51
  * @param {String} pass - Password.
58
52
  */
59
-
60
-
61
53
  module.authBasic = function (user, pass) {
62
54
  auth = new soap.BasicAuthSecurity(user, pass);
63
55
  };
56
+
64
57
  /**
65
58
  * @summary Sets Bearer Token Authentication details to be used for connections with the service.
66
59
  * @function authBearer
67
60
  * @param {String} token - Token.
68
61
  */
69
-
70
-
71
62
  module.authBearer = function (token) {
72
63
  auth = new soap.BearerSecurity(token);
73
64
  };
65
+
74
66
  /**
75
67
  * @summary Sets NTLM Authentication details to be used for connections with the service.
76
68
  * @function authNTLM
@@ -79,11 +71,10 @@ module.exports = function () {
79
71
  * @param {String} domain - Domain.
80
72
  * @param {String} workstation - Workstation.
81
73
  */
82
-
83
-
84
74
  module.authNTLM = function (user, pass, domain, workstation) {
85
75
  auth = new soap.NTLMSecurity(user, pass, domain, workstation);
86
76
  };
77
+
87
78
  /**
88
79
  * @summary Sets Client SSL Authentication details to be used for connections with the service.
89
80
  * @function authClientSSL
@@ -92,11 +83,10 @@ module.exports = function () {
92
83
  * @param {Buffer|String|Array} ca - CA path or a Buffer.
93
84
  * @param {Object=} options - Options.
94
85
  */
95
-
96
-
97
86
  module.authClientSSL = function (key, cert, ca, options) {
98
87
  auth = new soap.ClientSSLSecurity(key, cert, ca, options);
99
88
  };
89
+
100
90
  /**
101
91
  * @summary Sets Client SSL (PFX) Authentication details to be used for connections with the service.
102
92
  * @function authClientSSLPFX
@@ -104,11 +94,10 @@ module.exports = function () {
104
94
  * @param {Buffer|String=} passphrase - Passphrase for the PFX.
105
95
  * @param {Object=} options - Options.
106
96
  */
107
-
108
-
109
97
  module.authClientSSLPFX = function (pfx, passphrase, options) {
110
98
  auth = new soap.ClientSSLSecurityPFX(pfx, passphrase, options);
111
99
  };
100
+
112
101
  /**
113
102
  * @summary Initiates a SOAP request and returns the response.
114
103
  * @function get
@@ -128,61 +117,50 @@ module.exports = function () {
128
117
  * var result = soap.get(serviceUrl, 'NumberToWords', { 'ubiNum': 2019 });
129
118
  * log.info(result.NumberToWordsResult);
130
119
  */
131
-
132
-
133
120
  module.get = async function (wsdlUrl, method, args, wsdlHeaders = {}) {
134
121
  var resultClient = null;
135
122
  var result = null;
136
123
  await (() => {
137
124
  return new Promise((resolve, reject) => {
138
125
  soap.createClient(wsdlUrl, {
139
- wsdl_options: { ...options,
126
+ wsdl_options: {
127
+ ...options,
140
128
  ...proxyOptions
141
129
  },
142
130
  wsdl_headers: wsdlHeaders
143
131
  }, (err, client) => {
144
132
  if (client === undefined) {
145
133
  var msg = 'Error creating client';
146
-
147
134
  if (err.message) {
148
135
  var soapMsg = err.message;
149
136
  var firstBreakIndex = soapMsg.indexOf('\n');
150
-
151
137
  if (firstBreakIndex > 0) {
152
138
  soapMsg = err.message.substring(0, firstBreakIndex);
153
139
  }
154
-
155
140
  msg += ': ' + soapMsg;
156
141
  } else if (err && (typeof err === 'string' || err instanceof String)) {
157
142
  msg += ': ' + err;
158
143
  }
159
-
160
144
  resultClient = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, msg);
161
145
  resolve();
162
146
  return;
163
147
  }
164
-
165
148
  resultClient = client;
166
-
167
149
  if (typeof client[method] !== 'function') {
168
150
  resultClient = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, 'No method named ' + method + ' was found.');
169
151
  resolve();
170
152
  return;
171
153
  }
172
-
173
154
  if (auth) {
174
155
  client.setSecurity(auth);
175
156
  }
176
-
177
157
  if (wsdlHeaders) {
178
158
  for (const header in wsdlHeaders) {
179
159
  client.addHttpHeader(header, wsdlHeaders[header]);
180
160
  }
181
161
  }
182
-
183
162
  client[method](args, (err, res) => {
184
163
  lastResponseHeaders = client.lastResponseHeaders;
185
-
186
164
  if (err !== null && err.root && err.root.Envelope && err.root.Envelope.Body && err.root.Envelope.Body.Fault) {
187
165
  result = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, JSON.stringify(err.root.Envelope.Body.Fault.faultstring));
188
166
  } else if (err !== null) {
@@ -192,36 +170,33 @@ module.exports = function () {
192
170
  } else {
193
171
  result = res;
194
172
  }
195
-
196
173
  resolve();
197
174
  return;
198
- }, { ...options,
175
+ }, {
176
+ ...options,
199
177
  ...proxyOptions
200
178
  });
201
179
  });
202
180
  });
203
181
  })();
204
-
205
182
  if (resultClient.type === errHelper.errorCode.SOAP_ERROR) {
206
183
  throw resultClient;
207
184
  }
208
-
209
185
  if (result.type === errHelper.errorCode.SOAP_ERROR) {
210
186
  throw result;
211
187
  }
212
-
213
188
  return result;
214
189
  };
190
+
215
191
  /**
216
192
  * @summary Returns last response headers.
217
193
  * @function getLastResponseHeaders
218
194
  * @return {Object} IncomingHttpHeaders (https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules__types_node_http2_d_._http2_.incominghttpheaders.html).
219
195
  */
220
-
221
-
222
196
  module.getLastResponseHeaders = function () {
223
197
  return lastResponseHeaders;
224
198
  };
199
+
225
200
  /**
226
201
  * @summary Returns SOAP service description.
227
202
  * @function describe
@@ -229,57 +204,47 @@ module.exports = function () {
229
204
  * @param {Object=} wsdlHeaders - custom HTTP headers to be sent on WSDL requests.
230
205
  * @return {Object} Service description.
231
206
  */
232
-
233
-
234
207
  module.describe = async function (wsdlUrl, wsdlHeaders = {}) {
235
208
  var resultClient = null;
236
209
  await (() => {
237
210
  return new Promise((resolve, reject) => {
238
211
  soap.createClient(wsdlUrl, {
239
- wsdl_options: { ...options,
212
+ wsdl_options: {
213
+ ...options,
240
214
  ...proxyOptions
241
215
  },
242
216
  wsdl_headers: wsdlHeaders
243
217
  }, (err, client) => {
244
218
  if (client === undefined) {
245
219
  var msg = 'Error creating client';
246
-
247
220
  if (err.message) {
248
221
  var soapMsg = err.message;
249
222
  var firstBreakIndex = soapMsg.indexOf('\n');
250
-
251
223
  if (firstBreakIndex > 0) {
252
224
  soapMsg = err.message.substring(0, firstBreakIndex);
253
225
  }
254
-
255
226
  msg += ': ' + soapMsg;
256
227
  } else if (err && (typeof err === 'string' || err instanceof String)) {
257
228
  msg += ': ' + err;
258
229
  }
259
-
260
230
  resultClient = new _OxygenError.default(errHelper.errorCode.SOAP_ERROR, msg);
261
231
  resolve();
262
232
  return;
263
233
  }
264
-
265
234
  if (auth) {
266
235
  client.setSecurity(auth);
267
236
  }
268
-
269
237
  resultClient = client.describe();
270
238
  resolve();
271
239
  return;
272
240
  });
273
241
  });
274
242
  })();
275
-
276
243
  if (resultClient.type === errHelper.errorCode.SOAP_ERROR) {
277
244
  throw resultClient;
278
245
  }
279
-
280
246
  return resultClient;
281
247
  };
282
-
283
248
  return module;
284
249
  };
285
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zb2FwLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJtb2R1bGUiLCJleHBvcnRzIiwic29hcCIsImF1dGgiLCJwcm94eU9wdGlvbnMiLCJvcHRpb25zIiwicmVqZWN0VW5hdXRob3JpemVkIiwibGFzdFJlc3BvbnNlSGVhZGVycyIsImlzSW5pdGlhbGl6ZWQiLCJzZXRQcm94eSIsInVybCIsInByb3h5IiwiYXV0aEJhc2ljIiwidXNlciIsInBhc3MiLCJCYXNpY0F1dGhTZWN1cml0eSIsImF1dGhCZWFyZXIiLCJ0b2tlbiIsIkJlYXJlclNlY3VyaXR5IiwiYXV0aE5UTE0iLCJkb21haW4iLCJ3b3Jrc3RhdGlvbiIsIk5UTE1TZWN1cml0eSIsImF1dGhDbGllbnRTU0wiLCJrZXkiLCJjZXJ0IiwiY2EiLCJDbGllbnRTU0xTZWN1cml0eSIsImF1dGhDbGllbnRTU0xQRlgiLCJwZngiLCJwYXNzcGhyYXNlIiwiQ2xpZW50U1NMU2VjdXJpdHlQRlgiLCJnZXQiLCJ3c2RsVXJsIiwibWV0aG9kIiwiYXJncyIsIndzZGxIZWFkZXJzIiwicmVzdWx0Q2xpZW50IiwicmVzdWx0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJjcmVhdGVDbGllbnQiLCJ3c2RsX29wdGlvbnMiLCJ3c2RsX2hlYWRlcnMiLCJlcnIiLCJjbGllbnQiLCJ1bmRlZmluZWQiLCJtc2ciLCJtZXNzYWdlIiwic29hcE1zZyIsImZpcnN0QnJlYWtJbmRleCIsImluZGV4T2YiLCJzdWJzdHJpbmciLCJTdHJpbmciLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiU09BUF9FUlJPUiIsInNldFNlY3VyaXR5IiwiaGVhZGVyIiwiYWRkSHR0cEhlYWRlciIsInJlcyIsInJvb3QiLCJFbnZlbG9wZSIsIkJvZHkiLCJGYXVsdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmYXVsdHN0cmluZyIsImluc3BlY3QiLCJkZXB0aCIsInR5cGUi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Q0FBWXpELFNBQVMsQ0FBQzBELFNBQVYsQ0FBb0JDLFVBQWhDLEVBQTRDVCxHQUE1QyxDQUFmO0FBQ0FSLFlBQUFBLE9BQU87QUFDUDtBQUNIOztBQUVELGNBQUlyQyxJQUFKLEVBQVU7QUFDTjJDLFlBQUFBLE1BQU0sQ0FBQ1ksV0FBUCxDQUFtQnZELElBQW5CO0FBQ0g7O0FBRURrQyxVQUFBQSxZQUFZLEdBQUdTLE1BQU0sQ0FBQzJCLFFBQVAsRUFBZjtBQUNBakMsVUFBQUEsT0FBTztBQUNQO0FBQ0gsU0F6QkQ7QUEwQkgsT0EzQk0sQ0FBUDtBQTRCSCxLQTdCSyxHQUFOOztBQStCQSxRQUFJSCxZQUFZLENBQUNrQyxJQUFiLEtBQXNCekUsU0FBUyxDQUFDMEQsU0FBVixDQUFvQkMsVUFBOUMsRUFBMEQ7QUFDdEQsWUFBTXBCLFlBQU47QUFDSDs7QUFFRCxXQUFPQSxZQUFQO0FBQ0gsR0F2Q0Q7O0FBeUNBLFNBQU9yQyxNQUFQO0FBQ0gsQ0FsT0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzb2FwXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggU09BUCBiYXNlZCBXZWIgU2VydmljZXMuXHJcbiAqL1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICB2YXIgc29hcCA9IHJlcXVpcmUoJ3NvYXAnKTtcclxuICAgIHZhciBhdXRoID0gbnVsbDtcclxuICAgIHZhciBwcm94eU9wdGlvbnMgPSB7fTtcclxuICAgIHZhciBvcHRpb25zID0ge1xyXG4gICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcclxuICAgIH07XHJcbiAgICB2YXIgbGFzdFJlc3BvbnNlSGVhZGVycyA9IG51bGw7XHJcblxyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgcHJveHkgdXJsIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gc2V0UHJveHlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSBQcm94eSB1cmwuIEludm9jYXRpb24gd2l0aG91dCBhcmd1bWVudHMgd2lsbCByZW1vdmUgYW55IHByZXZpb3VzbHkgc2V0IHVybC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLnNldFByb3h5ID0gZnVuY3Rpb24odXJsKSB7XHJcbiAgICAgICAgaWYgKHVybCkge1xyXG4gICAgICAgICAgICBwcm94eU9wdGlvbnMgPSAgeyBwcm94eTogdXJsIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcHJveHlPcHRpb25zID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmFzaWMgQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhCYXNpY1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoQmFzaWMgPSBmdW5jdGlvbih1c2VyLCBwYXNzKSB7XHJcbiAgICAgICAgYXV0aCA9IG5ldyBzb2FwLkJhc2ljQXV0aFNlY3VyaXR5KHVzZXIsIHBhc3MpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQmVhcmVyIFRva2VuIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoQmVhcmVyXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdG9rZW4gLSBUb2tlbi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhCZWFyZXIgPSBmdW5jdGlvbih0b2tlbikge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5CZWFyZXJTZWN1cml0eSh0b2tlbik7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBOVExNIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoTlRMTVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVzZXIgLSBVc2VybmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzIC0gUGFzc3dvcmQuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIC0gRG9tYWluLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdvcmtzdGF0aW9uIC0gV29ya3N0YXRpb24uXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoTlRMTSA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pIHtcclxuICAgICAgICBhdXRoID0gbmV3IHNvYXAuTlRMTVNlY3VyaXR5KHVzZXIsIHBhc3MsIGRvbWFpbiwgd29ya3N0YXRpb24pO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQ2xpZW50IFNTTCBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gYXV0aENsaWVudFNTTFxyXG4gICAgICogQHBhcmFtIHtCdWZmZXJ8U3RyaW5nfSBrZXkgLSBQcml2YXRlIGtleSBwYXRoIG9yIGEgQnVmZmVyIGNvbnRhaW5pbmcgdGhlIGtleS5cclxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZ30gY2VydCAtIENlcnRpZmljYXRlIHBhdGggb3IgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgY2VydGlmaWNhdGUuXHJcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcnxTdHJpbmd8QXJyYXl9IGNhIC0gQ0EgcGF0aCBvciBhIEJ1ZmZlci5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gb3B0aW9ucyAtIE9wdGlvbnMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5hdXRoQ2xpZW50U1NMID0gZnVuY3Rpb24oa2V5LCBjZXJ0LCBjYSwgb3B0aW9ucykge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5DbGllbnRTU0xTZWN1cml0eShrZXksIGNlcnQsIGNhLCBvcHRpb25zKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZXRzIENsaWVudCBTU0wgKFBGWCkgQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhDbGllbnRTU0xQRlhcclxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZ30gcGZ4IC0gUEZYIHBhdGggb3IgYSBCdWZmZXIgY29udGFpbmluZyB0aGUgUEZYIGJ1bmRsZS5cclxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZz19IHBhc3NwaHJhc2UgLSBQYXNzcGhyYXNlIGZvciB0aGUgUEZYLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zIC0gT3B0aW9ucy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhDbGllbnRTU0xQRlggPSBmdW5jdGlvbihwZngsIHBhc3NwaHJhc2UsIG9wdGlvbnMpIHtcclxuICAgICAgICBhdXRoID0gbmV3IHNvYXAuQ2xpZW50U1NMU2VjdXJpdHlQRlgocGZ4LCBwYXNzcGhyYXNlLCBvcHRpb25zKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBJbml0aWF0ZXMgYSBTT0FQIHJlcXVlc3QgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdzZGxVcmwgLSBVUkwgcG9pbnRpbmcgdG8gdGhlIFdTREwgWE1MLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG1ldGhvZCAtIE1ldGhvZCBuYW1lIChjYXNlIHNlbnNpdGl2ZSkuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IGFyZ3MgLSBPYmplY3QgY29udGFpbmluZyB0aGUgYXJndW1lbnRzLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSB3c2RsSGVhZGVycyAtIGN1c3RvbSBIVFRQIGhlYWRlcnMgdG8gYmUgc2VudCBvbiBXU0RMIHJlcXVlc3RzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAgICAgKiAvLyBnZXQgU09BUCBzZXJ2aWNlIGRlc2NyaXB0aW9uLCBzbyB3ZSBjYW4gdW5kZXJzdGFuZCB3aGF0IG1ldGhvZHMgaXQgcHJvdmlkZXMsXHJcbiAgICAgKiAvLyB3aGF0IGlucHV0IHBhcmFtZXRlcnMgaXQgZXhwZWN0cywgYW5kIHdoYXQgaXMgdGhlIG91dHB1dCBzdHJ1Y3R1cmUuXHJcbiAgICAgKiB2YXIgc2VydmljZVVybCA9ICdodHRwOi8vd3d3LmRhdGFhY2Nlc3MuY29tL3dlYnNlcnZpY2Vzc2VydmVyL251bWJlcmNvbnZlcnNpb24ud3NvP1dTREwnO1xyXG4gICAgICogdmFyIHNlcnZpY2VEZXNjcmlwdGlvbiA9IHNvYXAuZGVzY3JpYmUoc2VydmljZVVybCk7XHJcbiAgICAgKiBsb2cuaW5mbyhzZXJ2aWNlRGVzY3JpcHRpb24pO1xyXG4gICAgICogXHJcbiAgICAgKiAvLyBOdW1iZXJUb1dvcmRzIG1ldGhvZCBpbiB0aGlzIHNlcnZpY2UgY29udmVydHMgbnVtYmVyIHRvIHdvcmRzLlxyXG4gICAgICogdmFyIHJlc3VsdCA9IHNvYXAuZ2V0KHNlcnZpY2VVcmwsICdOdW1iZXJUb1dvcmRzJywgeyAndWJpTnVtJzogMjAxOSB9KTtcclxuICAgICAqIGxvZy5pbmZvKHJlc3VsdC5OdW1iZXJUb1dvcmRzUmVzdWx0KTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldCA9IGFzeW5jIGZ1bmN0aW9uKHdzZGxVcmwsIG1ldGhvZCwgYXJncywgd3NkbEhlYWRlcnMgPSB7fSkge1xyXG4gICAgICAgIHZhciByZXN1bHRDbGllbnQgPSBudWxsO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc29hcC5jcmVhdGVDbGllbnQod3NkbFVybCwgeyB3c2RsX29wdGlvbnM6IHsgLi4ub3B0aW9ucywgLi4ucHJveHlPcHRpb25zIH0sIHdzZGxfaGVhZGVyczogd3NkbEhlYWRlcnN9LCAoZXJyLCBjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICAnRXJyb3IgY3JlYXRpbmcgY2xpZW50JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29hcE1zZyA9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0QnJlYWtJbmRleCA9IHNvYXBNc2cuaW5kZXhPZignXFxuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RCcmVha0luZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvYXBNc2cgPSBlcnIubWVzc2FnZS5zdWJzdHJpbmcoMCwgZmlyc3RCcmVha0luZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgc29hcE1zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnIHx8IGVyciBpbnN0YW5jZW9mIFN0cmluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgbXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBjbGllbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2xpZW50W21ldGhvZF0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCAnTm8gbWV0aG9kIG5hbWVkICcgKyBtZXRob2QgKyAnIHdhcyBmb3VuZC4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQuc2V0U2VjdXJpdHkoYXV0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAod3NkbEhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgaW4gd3NkbEhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5hZGRIdHRwSGVhZGVyKGhlYWRlciwgd3NkbEhlYWRlcnNbaGVhZGVyXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFttZXRob2RdKGFyZ3MsIChlcnIsIHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVzcG9uc2VIZWFkZXJzID0gY2xpZW50Lmxhc3RSZXNwb25zZUhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT09IG51bGwgJiYgZXJyLnJvb3QgJiYgZXJyLnJvb3QuRW52ZWxvcGUgJiYgZXJyLnJvb3QuRW52ZWxvcGUuQm9keSAmJiBlcnIucm9vdC5FbnZlbG9wZS5Cb2R5LkZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsIEpTT04uc3RyaW5naWZ5KGVyci5yb290LkVudmVsb3BlLkJvZHkuRmF1bHQuZmF1bHRzdHJpbmcpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgcmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZXJyLCB7IGRlcHRoOiA0IH0pKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgeyAuLi5vcHRpb25zLCAuLi5wcm94eU9wdGlvbnMgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSkoKTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdENsaWVudC50eXBlID09PSBlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IpIHtcclxuICAgICAgICAgICAgdGhyb3cgcmVzdWx0Q2xpZW50O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC50eXBlID09PSBlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IpIHtcclxuICAgICAgICAgICAgdGhyb3cgcmVzdWx0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGxhc3QgcmVzcG9uc2UgaGVhZGVycy5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRMYXN0UmVzcG9uc2VIZWFkZXJzXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IEluY29taW5nSHR0cEhlYWRlcnMgKGh0dHBzOi8vbWljcm9zb2Z0LmdpdGh1Yi5pby9Qb3dlckJJLUphdmFTY3JpcHQvaW50ZXJmYWNlcy9fbm9kZV9tb2R1bGVzX190eXBlc19ub2RlX2h0dHAyX2RfLl9odHRwMl8uaW5jb21pbmdodHRwaGVhZGVycy5odG1sKS5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmdldExhc3RSZXNwb25zZUhlYWRlcnMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gbGFzdFJlc3BvbnNlSGVhZGVycztcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIFNPQVAgc2VydmljZSBkZXNjcmlwdGlvbi5cclxuICAgICAqIEBmdW5jdGlvbiBkZXNjcmliZVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHdzZGxVcmwgLSBVUkwgcG9pbnRpbmcgdG8gdGhlIFdTREwgWE1MLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSB3c2RsSGVhZGVycyAtIGN1c3RvbSBIVFRQIGhlYWRlcnMgdG8gYmUgc2VudCBvbiBXU0RMIHJlcXVlc3RzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBTZXJ2aWNlIGRlc2NyaXB0aW9uLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZGVzY3JpYmUgPSBhc3luYyBmdW5jdGlvbih3c2RsVXJsLCB3c2RsSGVhZGVycyA9IHt9KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdENsaWVudCA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzb2FwLmNyZWF0ZUNsaWVudCh3c2RsVXJsLHsgd3NkbF9vcHRpb25zOiB7IC4uLm9wdGlvbnMsIC4uLnByb3h5T3B0aW9ucyB9LCB3c2RsX2hlYWRlcnM6IHdzZGxIZWFkZXJzfSwgKGVyciwgY2xpZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtc2cgPSAgJ0Vycm9yIGNyZWF0aW5nIGNsaWVudCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvYXBNc2cgPSBlcnIubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaXJzdEJyZWFrSW5kZXggPSBzb2FwTXNnLmluZGV4T2YoJ1xcbicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0QnJlYWtJbmRleCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2FwTXNnID0gZXJyLm1lc3NhZ2Uuc3Vic3RyaW5nKDAsIGZpcnN0QnJlYWtJbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJzogJyArIHNvYXBNc2c7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyICYmICh0eXBlb2YgZXJyID09PSAnc3RyaW5nJyB8fCBlcnIgaW5zdGFuY2VvZiBTdHJpbmcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgKz0gJzogJyArIGVycjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsIG1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGF1dGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNldFNlY3VyaXR5KGF1dGgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gY2xpZW50LmRlc2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0Q2xpZW50LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHRDbGllbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0Q2xpZW50O1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
250
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT3h5Z2VuRXJyb3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImVyckhlbHBlciIsIm1vZHVsZSIsImV4cG9ydHMiLCJzb2FwIiwiYXV0aCIsInByb3h5T3B0aW9ucyIsIm9wdGlvbnMiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJsYXN0UmVzcG9uc2VIZWFkZXJzIiwiaXNJbml0aWFsaXplZCIsInNldFByb3h5IiwidXJsIiwicHJveHkiLCJhdXRoQmFzaWMiLCJ1c2VyIiwicGFzcyIsIkJhc2ljQXV0aFNlY3VyaXR5IiwiYXV0aEJlYXJlciIsInRva2VuIiwiQmVhcmVyU2VjdXJpdHkiLCJhdXRoTlRMTSIsImRvbWFpbiIsIndvcmtzdGF0aW9uIiwiTlRMTVNlY3VyaXR5IiwiYXV0aENsaWVudFNTTCIsImtleSIsImNlcnQiLCJjYSIsIkNsaWVudFNTTFNlY3VyaXR5IiwiYXV0aENsaWVudFNTTFBGWCIsInBmeCIsInBhc3NwaHJhc2UiLCJDbGllbnRTU0xTZWN1cml0eVBGWCIsImdldCIsIndzZGxVcmwiLCJtZXRob2QiLCJhcmdzIiwid3NkbEhlYWRlcnMiLCJyZXN1bHRDbGllbnQiLCJyZXN1bHQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNyZWF0ZUNsaWVudCIsIndzZGxfb3B0aW9ucyIsIndzZGxfaGVhZGVycyIsImVyciIsImNsaWVudCIsInVuZGVmaW5lZCIsIm1zZyIsIm1lc3NhZ2UiLCJzb2FwTXNnIiwiZmlyc3RCcmVha0luZGV4IiwiaW5kZXhPZiIsInN1YnN0cmluZyIsIlN0cmluZyIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJTT0FQX0VSUk9SIiwic2V0U2VjdXJpdHkiLCJoZWFkZXIiLCJhZGRIdHRwSGVhZGVyIiwicmVzIiwicm9vdCIsIkVudmVsb3BlIiwiQm9keSIsIkZhdWx0IiwiSlNPTiIsInN0cmluZ2lmeSIsImZhdWx0c3RyaW5nIiwiaW5zcGVjdCIsImRlcHRoIiwidHlwZSIsImdldExhc3RSZXNwb25zZUhlYWRlcnMiLCJkZXNjcmliZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zb2FwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBuYW1lIHNvYXBcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBTT0FQIGJhc2VkIFdlYiBTZXJ2aWNlcy5cclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG52YXIgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBzb2FwID0gcmVxdWlyZSgnc29hcCcpO1xyXG4gICAgdmFyIGF1dGggPSBudWxsO1xyXG4gICAgdmFyIHByb3h5T3B0aW9ucyA9IHt9O1xyXG4gICAgdmFyIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIHZhciBsYXN0UmVzcG9uc2VIZWFkZXJzID0gbnVsbDtcclxuXHJcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBwcm94eSB1cmwgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBzZXRQcm94eVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIFByb3h5IHVybC4gSW52b2NhdGlvbiB3aXRob3V0IGFyZ3VtZW50cyB3aWxsIHJlbW92ZSBhbnkgcHJldmlvdXNseSBzZXQgdXJsLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuc2V0UHJveHkgPSBmdW5jdGlvbih1cmwpIHtcclxuICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgIHByb3h5T3B0aW9ucyA9ICB7IHByb3h5OiB1cmwgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwcm94eU9wdGlvbnMgPSB7fTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBCYXNpYyBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gYXV0aEJhc2ljXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXNlciAtIFVzZXJuYW1lLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhc3MgLSBQYXNzd29yZC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhCYXNpYyA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MpIHtcclxuICAgICAgICBhdXRoID0gbmV3IHNvYXAuQmFzaWNBdXRoU2VjdXJpdHkodXNlciwgcGFzcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBCZWFyZXIgVG9rZW4gQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhCZWFyZXJcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB0b2tlbiAtIFRva2VuLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuYXV0aEJlYXJlciA9IGZ1bmN0aW9uKHRva2VuKSB7XHJcbiAgICAgICAgYXV0aCA9IG5ldyBzb2FwLkJlYXJlclNlY3VyaXR5KHRva2VuKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZXRzIE5UTE0gQXV0aGVudGljYXRpb24gZGV0YWlscyB0byBiZSB1c2VkIGZvciBjb25uZWN0aW9ucyB3aXRoIHRoZSBzZXJ2aWNlLlxyXG4gICAgICogQGZ1bmN0aW9uIGF1dGhOVExNXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXNlciAtIFVzZXJuYW1lLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhc3MgLSBQYXNzd29yZC5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBkb21haW4gLSBEb21haW4uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd29ya3N0YXRpb24gLSBXb3Jrc3RhdGlvbi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhOVExNID0gZnVuY3Rpb24odXNlciwgcGFzcywgZG9tYWluLCB3b3Jrc3RhdGlvbikge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5OVExNU2VjdXJpdHkodXNlciwgcGFzcywgZG9tYWluLCB3b3Jrc3RhdGlvbik7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBDbGllbnQgU1NMIEF1dGhlbnRpY2F0aW9uIGRldGFpbHMgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBhdXRoQ2xpZW50U1NMXHJcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcnxTdHJpbmd9IGtleSAtIFByaXZhdGUga2V5IHBhdGggb3IgYSBCdWZmZXIgY29udGFpbmluZyB0aGUga2V5LlxyXG4gICAgICogQHBhcmFtIHtCdWZmZXJ8U3RyaW5nfSBjZXJ0IC0gQ2VydGlmaWNhdGUgcGF0aCBvciBhIEJ1ZmZlciBjb250YWluaW5nIHRoZSBjZXJ0aWZpY2F0ZS5cclxuICAgICAqIEBwYXJhbSB7QnVmZmVyfFN0cmluZ3xBcnJheX0gY2EgLSBDQSBwYXRoIG9yIGEgQnVmZmVyLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zIC0gT3B0aW9ucy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmF1dGhDbGllbnRTU0wgPSBmdW5jdGlvbihrZXksIGNlcnQsIGNhLCBvcHRpb25zKSB7XHJcbiAgICAgICAgYXV0aCA9IG5ldyBzb2FwLkNsaWVudFNTTFNlY3VyaXR5KGtleSwgY2VydCwgY2EsIG9wdGlvbnMpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgQ2xpZW50IFNTTCAoUEZYKSBBdXRoZW50aWNhdGlvbiBkZXRhaWxzIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gYXV0aENsaWVudFNTTFBGWFxyXG4gICAgICogQHBhcmFtIHtCdWZmZXJ8U3RyaW5nfSBwZnggLSBQRlggcGF0aCBvciBhIEJ1ZmZlciBjb250YWluaW5nIHRoZSBQRlggYnVuZGxlLlxyXG4gICAgICogQHBhcmFtIHtCdWZmZXJ8U3RyaW5nPX0gcGFzc3BocmFzZSAtIFBhc3NwaHJhc2UgZm9yIHRoZSBQRlguXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnMgLSBPcHRpb25zLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuYXV0aENsaWVudFNTTFBGWCA9IGZ1bmN0aW9uKHBmeCwgcGFzc3BocmFzZSwgb3B0aW9ucykge1xyXG4gICAgICAgIGF1dGggPSBuZXcgc29hcC5DbGllbnRTU0xTZWN1cml0eVBGWChwZngsIHBhc3NwaHJhc2UsIG9wdGlvbnMpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEluaXRpYXRlcyBhIFNPQVAgcmVxdWVzdCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd3NkbFVybCAtIFVSTCBwb2ludGluZyB0byB0aGUgV1NETCBYTUwuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWV0aG9kIC0gTWV0aG9kIG5hbWUgKGNhc2Ugc2Vuc2l0aXZlKS5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gYXJncyAtIE9iamVjdCBjb250YWluaW5nIHRoZSBhcmd1bWVudHMuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IHdzZGxIZWFkZXJzIC0gY3VzdG9tIEhUVFAgaGVhZGVycyB0byBiZSBzZW50IG9uIFdTREwgcmVxdWVzdHMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGdldCBTT0FQIHNlcnZpY2UgZGVzY3JpcHRpb24sIHNvIHdlIGNhbiB1bmRlcnN0YW5kIHdoYXQgbWV0aG9kcyBpdCBwcm92aWRlcyxcclxuICAgICAqIC8vIHdoYXQgaW5wdXQgcGFyYW1ldGVycyBpdCBleHBlY3RzLCBhbmQgd2hhdCBpcyB0aGUgb3V0cHV0IHN0cnVjdHVyZS5cclxuICAgICAqIHZhciBzZXJ2aWNlVXJsID0gJ2h0dHA6Ly93d3cuZGF0YWFjY2Vzcy5jb20vd2Vic2VydmljZXNzZXJ2ZXIvbnVtYmVyY29udmVyc2lvbi53c28/V1NETCc7XHJcbiAgICAgKiB2YXIgc2VydmljZURlc2NyaXB0aW9uID0gc29hcC5kZXNjcmliZShzZXJ2aWNlVXJsKTtcclxuICAgICAqIGxvZy5pbmZvKHNlcnZpY2VEZXNjcmlwdGlvbik7XHJcbiAgICAgKiBcclxuICAgICAqIC8vIE51bWJlclRvV29yZHMgbWV0aG9kIGluIHRoaXMgc2VydmljZSBjb252ZXJ0cyBudW1iZXIgdG8gd29yZHMuXHJcbiAgICAgKiB2YXIgcmVzdWx0ID0gc29hcC5nZXQoc2VydmljZVVybCwgJ051bWJlclRvV29yZHMnLCB7ICd1YmlOdW0nOiAyMDE5IH0pO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0Lk51bWJlclRvV29yZHNSZXN1bHQpO1xyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0ID0gYXN5bmMgZnVuY3Rpb24od3NkbFVybCwgbWV0aG9kLCBhcmdzLCB3c2RsSGVhZGVycyA9IHt9KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdENsaWVudCA9IG51bGw7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzb2FwLmNyZWF0ZUNsaWVudCh3c2RsVXJsLCB7IHdzZGxfb3B0aW9uczogeyAuLi5vcHRpb25zLCAuLi5wcm94eU9wdGlvbnMgfSwgd3NkbF9oZWFkZXJzOiB3c2RsSGVhZGVyc30sIChlcnIsIGNsaWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbXNnID0gICdFcnJvciBjcmVhdGluZyBjbGllbnQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzb2FwTXNnID0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RCcmVha0luZGV4ID0gc29hcE1zZy5pbmRleE9mKCdcXG4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEJyZWFrSW5kZXggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29hcE1zZyA9IGVyci5tZXNzYWdlLnN1YnN0cmluZygwLCBmaXJzdEJyZWFrSW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICcgKyBzb2FwTXNnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAmJiAodHlwZW9mIGVyciA9PT0gJ3N0cmluZycgfHwgZXJyIGluc3RhbmNlb2YgU3RyaW5nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnICs9ICc6ICcgKyBlcnI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q2xpZW50ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCBtc2cpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IGNsaWVudDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjbGllbnRbbWV0aG9kXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNPQVBfRVJST1IsICdObyBtZXRob2QgbmFtZWQgJyArIG1ldGhvZCArICcgd2FzIGZvdW5kLicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5zZXRTZWN1cml0eShhdXRoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh3c2RsSGVhZGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGhlYWRlciBpbiB3c2RsSGVhZGVycykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LmFkZEh0dHBIZWFkZXIoaGVhZGVyLCB3c2RsSGVhZGVyc1toZWFkZXJdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xpZW50W21ldGhvZF0oYXJncywgKGVyciwgcmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXNwb25zZUhlYWRlcnMgPSBjbGllbnQubGFzdFJlc3BvbnNlSGVhZGVycztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPT0gbnVsbCAmJiBlcnIucm9vdCAmJiBlcnIucm9vdC5FbnZlbG9wZSAmJiBlcnIucm9vdC5FbnZlbG9wZS5Cb2R5ICYmIGVyci5yb290LkVudmVsb3BlLkJvZHkuRmF1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgSlNPTi5zdHJpbmdpZnkoZXJyLnJvb3QuRW52ZWxvcGUuQm9keS5GYXVsdC5mYXVsdHN0cmluZykpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SLCByZXF1aXJlKCd1dGlsJykuaW5zcGVjdChlcnIsIHsgZGVwdGg6IDQgfSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9LCB7IC4uLm9wdGlvbnMsIC4uLnByb3h5T3B0aW9ucyB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KSgpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0Q2xpZW50LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHRDbGllbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzdWx0LnR5cGUgPT09IGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUikge1xyXG4gICAgICAgICAgICB0aHJvdyByZXN1bHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgbGFzdCByZXNwb25zZSBoZWFkZXJzLlxyXG4gICAgICogQGZ1bmN0aW9uIGdldExhc3RSZXNwb25zZUhlYWRlcnNcclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gSW5jb21pbmdIdHRwSGVhZGVycyAoaHR0cHM6Ly9taWNyb3NvZnQuZ2l0aHViLmlvL1Bvd2VyQkktSmF2YVNjcmlwdC9pbnRlcmZhY2VzL19ub2RlX21vZHVsZXNfX3R5cGVzX25vZGVfaHR0cDJfZF8uX2h0dHAyXy5pbmNvbWluZ2h0dHBoZWFkZXJzLmh0bWwpLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0TGFzdFJlc3BvbnNlSGVhZGVycyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2VIZWFkZXJzO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgU09BUCBzZXJ2aWNlIGRlc2NyaXB0aW9uLlxyXG4gICAgICogQGZ1bmN0aW9uIGRlc2NyaWJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gd3NkbFVybCAtIFVSTCBwb2ludGluZyB0byB0aGUgV1NETCBYTUwuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IHdzZGxIZWFkZXJzIC0gY3VzdG9tIEhUVFAgaGVhZGVycyB0byBiZSBzZW50IG9uIFdTREwgcmVxdWVzdHMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFNlcnZpY2UgZGVzY3JpcHRpb24uXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5kZXNjcmliZSA9IGFzeW5jIGZ1bmN0aW9uKHdzZGxVcmwsIHdzZGxIZWFkZXJzID0ge30pIHtcclxuICAgICAgICB2YXIgcmVzdWx0Q2xpZW50ID0gbnVsbDtcclxuXHJcbiAgICAgICAgYXdhaXQgKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNvYXAuY3JlYXRlQ2xpZW50KHdzZGxVcmwseyB3c2RsX29wdGlvbnM6IHsgLi4ub3B0aW9ucywgLi4ucHJveHlPcHRpb25zIH0sIHdzZGxfaGVhZGVyczogd3NkbEhlYWRlcnN9LCAoZXJyLCBjbGllbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICAnRXJyb3IgY3JlYXRpbmcgY2xpZW50JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29hcE1zZyA9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0QnJlYWtJbmRleCA9IHNvYXBNc2cuaW5kZXhPZignXFxuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RCcmVha0luZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvYXBNc2cgPSBlcnIubWVzc2FnZS5zdWJzdHJpbmcoMCwgZmlyc3RCcmVha0luZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgc29hcE1zZztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgKHR5cGVvZiBlcnIgPT09ICdzdHJpbmcnIHx8IGVyciBpbnN0YW5jZW9mIFN0cmluZykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAnOiAnICsgZXJyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdENsaWVudCA9IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU09BUF9FUlJPUiwgbXNnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoYXV0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQuc2V0U2VjdXJpdHkoYXV0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRDbGllbnQgPSBjbGllbnQuZGVzY3JpYmUoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pKCk7XHJcblxyXG4gICAgICAgIGlmIChyZXN1bHRDbGllbnQudHlwZSA9PT0gZXJySGVscGVyLmVycm9yQ29kZS5TT0FQX0VSUk9SKSB7XHJcbiAgICAgICAgICAgIHRocm93IHJlc3VsdENsaWVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHRDbGllbnQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBY0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQTRDLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBZDVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBR0EsSUFBSUcsU0FBUyxHQUFHSixPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFFM0NLLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLFlBQVc7RUFDeEIsSUFBSUMsSUFBSSxHQUFHUCxPQUFPLENBQUMsTUFBTSxDQUFDO0VBQzFCLElBQUlRLElBQUksR0FBRyxJQUFJO0VBQ2YsSUFBSUMsWUFBWSxHQUFHLENBQUMs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