@corellium/corellium-cli 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (931) hide show
  1. package/.gitlab-ci.yml +17 -3
  2. package/coverage/cobertura-coverage.xml +1 -1
  3. package/coverage/lcov-report/index.html +1 -1
  4. package/node_modules/@babel/cli/LICENSE +22 -0
  5. package/node_modules/@babel/cli/README.md +19 -0
  6. package/node_modules/@babel/cli/bin/babel-external-helpers.js +3 -0
  7. package/node_modules/@babel/cli/bin/babel.js +3 -0
  8. package/node_modules/@babel/cli/index.js +1 -0
  9. package/node_modules/@babel/cli/lib/babel/dir.js +285 -0
  10. package/node_modules/@babel/cli/lib/babel/file.js +273 -0
  11. package/node_modules/@babel/cli/lib/babel/index.js +20 -0
  12. package/node_modules/@babel/cli/lib/babel/options.js +285 -0
  13. package/node_modules/@babel/cli/lib/babel/util.js +181 -0
  14. package/node_modules/@babel/cli/lib/babel/watcher.js +162 -0
  15. package/node_modules/@babel/cli/lib/babel-external-helpers.js +43 -0
  16. package/node_modules/@babel/cli/node_modules/commander/CHANGELOG.md +436 -0
  17. package/node_modules/@babel/cli/node_modules/commander/LICENSE +22 -0
  18. package/node_modules/@babel/cli/node_modules/commander/Readme.md +713 -0
  19. package/node_modules/@babel/cli/node_modules/commander/index.js +1649 -0
  20. package/node_modules/@babel/cli/node_modules/commander/package.json +41 -0
  21. package/node_modules/@babel/cli/node_modules/commander/typings/index.d.ts +311 -0
  22. package/node_modules/@babel/cli/node_modules/make-dir/index.d.ts +39 -0
  23. package/node_modules/@babel/cli/node_modules/make-dir/index.js +139 -0
  24. package/node_modules/@babel/cli/node_modules/make-dir/license +9 -0
  25. package/node_modules/@babel/cli/node_modules/make-dir/package.json +59 -0
  26. package/node_modules/@babel/cli/node_modules/make-dir/readme.md +123 -0
  27. package/node_modules/@babel/cli/node_modules/pify/index.js +68 -0
  28. package/node_modules/@babel/cli/node_modules/pify/license +9 -0
  29. package/node_modules/@babel/cli/node_modules/pify/package.json +51 -0
  30. package/node_modules/@babel/cli/node_modules/pify/readme.md +145 -0
  31. package/node_modules/@babel/cli/node_modules/semver/CHANGELOG.md +39 -0
  32. package/node_modules/@babel/cli/node_modules/semver/LICENSE +15 -0
  33. package/node_modules/@babel/cli/node_modules/semver/README.md +412 -0
  34. package/node_modules/@babel/cli/node_modules/semver/bin/semver +160 -0
  35. package/node_modules/@babel/cli/node_modules/semver/package.json +28 -0
  36. package/node_modules/@babel/cli/node_modules/semver/range.bnf +16 -0
  37. package/node_modules/@babel/cli/node_modules/semver/semver.js +1483 -0
  38. package/node_modules/@babel/cli/node_modules/slash/index.js +11 -0
  39. package/node_modules/@babel/cli/node_modules/slash/license +9 -0
  40. package/node_modules/@babel/cli/node_modules/slash/package.json +34 -0
  41. package/node_modules/@babel/cli/node_modules/slash/readme.md +44 -0
  42. package/node_modules/@babel/cli/package.json +55 -0
  43. package/node_modules/@corellium/client-api/README.md +209 -0
  44. package/node_modules/@corellium/client-api/dist/ApiClient.js +780 -0
  45. package/node_modules/@corellium/client-api/dist/api/CorelliumApi.js +1744 -0
  46. package/node_modules/@corellium/client-api/dist/index.js +295 -0
  47. package/node_modules/@corellium/client-api/dist/model/ApiConflictError.js +114 -0
  48. package/node_modules/@corellium/client-api/dist/model/ApiError.js +101 -0
  49. package/node_modules/@corellium/client-api/dist/model/ApiNotFoundError.js +111 -0
  50. package/node_modules/@corellium/client-api/dist/model/ApiToken.js +78 -0
  51. package/node_modules/@corellium/client-api/dist/model/Bit.js +50 -0
  52. package/node_modules/@corellium/client-api/dist/model/Credentials.js +91 -0
  53. package/node_modules/@corellium/client-api/dist/model/Firmware.js +208 -0
  54. package/node_modules/@corellium/client-api/dist/model/GpioStateDefinition.js +93 -0
  55. package/node_modules/@corellium/client-api/dist/model/Image.js +249 -0
  56. package/node_modules/@corellium/client-api/dist/model/Instance.js +313 -0
  57. package/node_modules/@corellium/client-api/dist/model/InstanceBootOptions.js +134 -0
  58. package/node_modules/@corellium/client-api/dist/model/InstanceConsoleEndpoint.js +76 -0
  59. package/node_modules/@corellium/client-api/dist/model/InstanceCreateOptions.js +224 -0
  60. package/node_modules/@corellium/client-api/dist/model/InstanceNetmonState.js +75 -0
  61. package/node_modules/@corellium/client-api/dist/model/InstanceReturn.js +92 -0
  62. package/node_modules/@corellium/client-api/dist/model/InstanceServices.js +77 -0
  63. package/node_modules/@corellium/client-api/dist/model/InstanceStartOptions.js +76 -0
  64. package/node_modules/@corellium/client-api/dist/model/InstanceState.js +64 -0
  65. package/node_modules/@corellium/client-api/dist/model/InstanceStopOptions.js +76 -0
  66. package/node_modules/@corellium/client-api/dist/model/Model.js +165 -0
  67. package/node_modules/@corellium/client-api/dist/model/ModelSoftware.js +122 -0
  68. package/node_modules/@corellium/client-api/dist/model/PeripheralsData.js +147 -0
  69. package/node_modules/@corellium/client-api/dist/model/Project.js +122 -0
  70. package/node_modules/@corellium/client-api/dist/model/ProjectQuota.js +93 -0
  71. package/node_modules/@corellium/client-api/dist/model/ProjectSettings.js +93 -0
  72. package/node_modules/@corellium/client-api/dist/model/ProjectUsage.js +102 -0
  73. package/node_modules/@corellium/client-api/dist/model/Snapshot.js +145 -0
  74. package/node_modules/@corellium/client-api/dist/model/SnapshotCreationOptions.js +79 -0
  75. package/node_modules/@corellium/client-api/dist/model/SnapshotStatus.js +84 -0
  76. package/node_modules/@corellium/client-api/dist/model/Token.js +88 -0
  77. package/node_modules/@corellium/client-api/dist/model/UserError.js +114 -0
  78. package/node_modules/@corellium/client-api/dist/model/V1SetStateBody.js +80 -0
  79. package/node_modules/@corellium/client-api/dist/model/VolumeOptions.js +94 -0
  80. package/node_modules/@corellium/client-api/dist/model/VpnDefinition.js +84 -0
  81. package/node_modules/@corellium/client-api/package.json +46 -0
  82. package/node_modules/@jridgewell/resolve-uri/LICENSE +19 -0
  83. package/node_modules/@jridgewell/resolve-uri/README.md +40 -0
  84. package/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs +242 -0
  85. package/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map +1 -0
  86. package/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js +250 -0
  87. package/node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map +1 -0
  88. package/node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts +4 -0
  89. package/node_modules/@jridgewell/resolve-uri/package.json +69 -0
  90. package/node_modules/@jridgewell/sourcemap-codec/LICENSE +21 -0
  91. package/node_modules/@jridgewell/sourcemap-codec/README.md +200 -0
  92. package/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs +164 -0
  93. package/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map +1 -0
  94. package/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js +175 -0
  95. package/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map +1 -0
  96. package/node_modules/@jridgewell/sourcemap-codec/dist/types/sourcemap-codec.d.ts +6 -0
  97. package/node_modules/@jridgewell/sourcemap-codec/package.json +75 -0
  98. package/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts +198 -0
  99. package/node_modules/@jridgewell/trace-mapping/LICENSE +19 -0
  100. package/node_modules/@jridgewell/trace-mapping/README.md +252 -0
  101. package/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs +552 -0
  102. package/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map +1 -0
  103. package/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js +566 -0
  104. package/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map +1 -0
  105. package/node_modules/@jridgewell/trace-mapping/dist/types/any-map.d.ts +8 -0
  106. package/node_modules/@jridgewell/trace-mapping/dist/types/binary-search.d.ts +32 -0
  107. package/node_modules/@jridgewell/trace-mapping/dist/types/by-source.d.ts +7 -0
  108. package/node_modules/@jridgewell/trace-mapping/dist/types/resolve.d.ts +1 -0
  109. package/node_modules/@jridgewell/trace-mapping/dist/types/sort.d.ts +2 -0
  110. package/node_modules/@jridgewell/trace-mapping/dist/types/sourcemap-segment.d.ts +16 -0
  111. package/node_modules/@jridgewell/trace-mapping/dist/types/strip-filename.d.ts +4 -0
  112. package/node_modules/@jridgewell/trace-mapping/dist/types/trace-mapping.d.ts +74 -0
  113. package/node_modules/@jridgewell/trace-mapping/dist/types/types.d.ts +92 -0
  114. package/node_modules/@jridgewell/trace-mapping/package.json +75 -0
  115. package/node_modules/@nicolo-ribaudo/chokidar-2/README.md +3 -0
  116. package/node_modules/@nicolo-ribaudo/chokidar-2/build-chokidar.sh +30 -0
  117. package/node_modules/@nicolo-ribaudo/chokidar-2/dist/main.js +2086 -0
  118. package/node_modules/@nicolo-ribaudo/chokidar-2/package.json +36 -0
  119. package/node_modules/@nicolo-ribaudo/chokidar-2/types.d.ts +191 -0
  120. package/node_modules/ansi-regex/index.d.ts +37 -0
  121. package/node_modules/ansi-regex/index.js +10 -0
  122. package/node_modules/ansi-regex/license +9 -0
  123. package/node_modules/ansi-regex/package.json +55 -0
  124. package/node_modules/ansi-regex/readme.md +78 -0
  125. package/node_modules/ansi-styles/index.d.ts +345 -0
  126. package/node_modules/ansi-styles/index.js +163 -0
  127. package/node_modules/ansi-styles/license +9 -0
  128. package/node_modules/ansi-styles/package.json +56 -0
  129. package/node_modules/ansi-styles/readme.md +152 -0
  130. package/node_modules/anymatch/LICENSE +15 -0
  131. package/node_modules/anymatch/README.md +87 -0
  132. package/node_modules/anymatch/index.d.ts +19 -0
  133. package/node_modules/anymatch/index.js +104 -0
  134. package/node_modules/anymatch/package.json +48 -0
  135. package/node_modules/asynckit/LICENSE +21 -0
  136. package/node_modules/asynckit/README.md +233 -0
  137. package/node_modules/asynckit/bench.js +76 -0
  138. package/node_modules/asynckit/index.js +6 -0
  139. package/node_modules/asynckit/lib/abort.js +29 -0
  140. package/node_modules/asynckit/lib/async.js +34 -0
  141. package/node_modules/asynckit/lib/defer.js +26 -0
  142. package/node_modules/asynckit/lib/iterate.js +75 -0
  143. package/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  144. package/node_modules/asynckit/lib/readable_parallel.js +25 -0
  145. package/node_modules/asynckit/lib/readable_serial.js +25 -0
  146. package/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  147. package/node_modules/asynckit/lib/state.js +37 -0
  148. package/node_modules/asynckit/lib/streamify.js +141 -0
  149. package/node_modules/asynckit/lib/terminator.js +29 -0
  150. package/node_modules/asynckit/package.json +63 -0
  151. package/node_modules/asynckit/parallel.js +43 -0
  152. package/node_modules/asynckit/serial.js +17 -0
  153. package/node_modules/asynckit/serialOrdered.js +75 -0
  154. package/node_modules/asynckit/stream.js +21 -0
  155. package/node_modules/axios/CHANGELOG.md +943 -0
  156. package/node_modules/axios/LICENSE +19 -0
  157. package/node_modules/axios/README.md +991 -0
  158. package/node_modules/axios/SECURITY.md +5 -0
  159. package/node_modules/axios/UPGRADE_GUIDE.md +168 -0
  160. package/node_modules/axios/dist/axios.js +2595 -0
  161. package/node_modules/axios/dist/axios.map +1 -0
  162. package/node_modules/axios/dist/axios.min.js +3 -0
  163. package/node_modules/axios/dist/axios.min.map +1 -0
  164. package/node_modules/axios/index.d.ts +254 -0
  165. package/node_modules/axios/index.js +1 -0
  166. package/node_modules/axios/lib/adapters/README.md +37 -0
  167. package/node_modules/axios/lib/adapters/http.js +424 -0
  168. package/node_modules/axios/lib/adapters/xhr.js +222 -0
  169. package/node_modules/axios/lib/axios.js +64 -0
  170. package/node_modules/axios/lib/cancel/CancelToken.js +119 -0
  171. package/node_modules/axios/lib/cancel/CanceledError.js +22 -0
  172. package/node_modules/axios/lib/cancel/isCancel.js +5 -0
  173. package/node_modules/axios/lib/core/Axios.js +160 -0
  174. package/node_modules/axios/lib/core/AxiosError.js +86 -0
  175. package/node_modules/axios/lib/core/InterceptorManager.js +54 -0
  176. package/node_modules/axios/lib/core/README.md +8 -0
  177. package/node_modules/axios/lib/core/buildFullPath.js +20 -0
  178. package/node_modules/axios/lib/core/dispatchRequest.js +87 -0
  179. package/node_modules/axios/lib/core/mergeConfig.js +100 -0
  180. package/node_modules/axios/lib/core/settle.js +25 -0
  181. package/node_modules/axios/lib/core/transformData.js +22 -0
  182. package/node_modules/axios/lib/defaults/env/FormData.js +2 -0
  183. package/node_modules/axios/lib/defaults/index.js +146 -0
  184. package/node_modules/axios/lib/defaults/transitional.js +7 -0
  185. package/node_modules/axios/lib/env/README.md +3 -0
  186. package/node_modules/axios/lib/env/data.js +3 -0
  187. package/node_modules/axios/lib/helpers/README.md +7 -0
  188. package/node_modules/axios/lib/helpers/bind.js +11 -0
  189. package/node_modules/axios/lib/helpers/buildURL.js +70 -0
  190. package/node_modules/axios/lib/helpers/combineURLs.js +14 -0
  191. package/node_modules/axios/lib/helpers/cookies.js +53 -0
  192. package/node_modules/axios/lib/helpers/deprecatedMethod.js +24 -0
  193. package/node_modules/axios/lib/helpers/isAbsoluteURL.js +14 -0
  194. package/node_modules/axios/lib/helpers/isAxiosError.js +13 -0
  195. package/node_modules/axios/lib/helpers/isURLSameOrigin.js +68 -0
  196. package/node_modules/axios/lib/helpers/normalizeHeaderName.js +12 -0
  197. package/node_modules/axios/lib/helpers/null.js +2 -0
  198. package/node_modules/axios/lib/helpers/parseHeaders.js +53 -0
  199. package/node_modules/axios/lib/helpers/parseProtocol.js +6 -0
  200. package/node_modules/axios/lib/helpers/spread.js +27 -0
  201. package/node_modules/axios/lib/helpers/toFormData.js +72 -0
  202. package/node_modules/axios/lib/helpers/validator.js +86 -0
  203. package/node_modules/axios/lib/utils.js +470 -0
  204. package/node_modules/axios/package.json +87 -0
  205. package/node_modules/axios/tsconfig.json +14 -0
  206. package/node_modules/axios/tslint.json +6 -0
  207. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  208. package/node_modules/balanced-match/LICENSE.md +21 -0
  209. package/node_modules/balanced-match/README.md +97 -0
  210. package/node_modules/balanced-match/index.js +62 -0
  211. package/node_modules/balanced-match/package.json +48 -0
  212. package/node_modules/binary-extensions/binary-extensions.json +260 -0
  213. package/node_modules/binary-extensions/binary-extensions.json.d.ts +3 -0
  214. package/node_modules/binary-extensions/index.d.ts +14 -0
  215. package/node_modules/binary-extensions/index.js +1 -0
  216. package/node_modules/binary-extensions/license +9 -0
  217. package/node_modules/binary-extensions/package.json +38 -0
  218. package/node_modules/binary-extensions/readme.md +41 -0
  219. package/node_modules/brace-expansion/LICENSE +21 -0
  220. package/node_modules/brace-expansion/README.md +129 -0
  221. package/node_modules/brace-expansion/index.js +201 -0
  222. package/node_modules/brace-expansion/package.json +47 -0
  223. package/node_modules/braces/CHANGELOG.md +184 -0
  224. package/node_modules/braces/LICENSE +21 -0
  225. package/node_modules/braces/README.md +593 -0
  226. package/node_modules/braces/index.js +170 -0
  227. package/node_modules/braces/lib/compile.js +57 -0
  228. package/node_modules/braces/lib/constants.js +57 -0
  229. package/node_modules/braces/lib/expand.js +113 -0
  230. package/node_modules/braces/lib/parse.js +333 -0
  231. package/node_modules/braces/lib/stringify.js +32 -0
  232. package/node_modules/braces/lib/utils.js +112 -0
  233. package/node_modules/braces/package.json +77 -0
  234. package/node_modules/call-bind/.eslintignore +1 -0
  235. package/node_modules/call-bind/.eslintrc +17 -0
  236. package/node_modules/call-bind/.github/FUNDING.yml +12 -0
  237. package/node_modules/call-bind/.nycrc +13 -0
  238. package/node_modules/call-bind/CHANGELOG.md +42 -0
  239. package/node_modules/call-bind/LICENSE +21 -0
  240. package/node_modules/call-bind/README.md +2 -0
  241. package/node_modules/call-bind/callBound.js +15 -0
  242. package/node_modules/call-bind/index.js +47 -0
  243. package/node_modules/call-bind/package.json +80 -0
  244. package/node_modules/call-bind/test/callBound.js +55 -0
  245. package/node_modules/call-bind/test/index.js +66 -0
  246. package/node_modules/chokidar/LICENSE +21 -0
  247. package/node_modules/chokidar/README.md +308 -0
  248. package/node_modules/chokidar/index.js +973 -0
  249. package/node_modules/chokidar/lib/constants.js +65 -0
  250. package/node_modules/chokidar/lib/fsevents-handler.js +524 -0
  251. package/node_modules/chokidar/lib/nodefs-handler.js +654 -0
  252. package/node_modules/chokidar/package.json +85 -0
  253. package/node_modules/chokidar/types/index.d.ts +188 -0
  254. package/node_modules/cliui/CHANGELOG.md +121 -0
  255. package/node_modules/cliui/LICENSE.txt +14 -0
  256. package/node_modules/cliui/README.md +141 -0
  257. package/node_modules/cliui/build/index.cjs +302 -0
  258. package/node_modules/cliui/build/lib/index.js +287 -0
  259. package/node_modules/cliui/build/lib/string-utils.js +27 -0
  260. package/node_modules/cliui/index.mjs +13 -0
  261. package/node_modules/cliui/package.json +83 -0
  262. package/node_modules/color-convert/CHANGELOG.md +54 -0
  263. package/node_modules/color-convert/LICENSE +21 -0
  264. package/node_modules/color-convert/README.md +68 -0
  265. package/node_modules/color-convert/conversions.js +839 -0
  266. package/node_modules/color-convert/index.js +81 -0
  267. package/node_modules/color-convert/package.json +48 -0
  268. package/node_modules/color-convert/route.js +97 -0
  269. package/node_modules/color-name/LICENSE +8 -0
  270. package/node_modules/color-name/README.md +11 -0
  271. package/node_modules/color-name/index.js +152 -0
  272. package/node_modules/color-name/package.json +28 -0
  273. package/node_modules/combined-stream/License +19 -0
  274. package/node_modules/combined-stream/Readme.md +138 -0
  275. package/node_modules/combined-stream/lib/combined_stream.js +208 -0
  276. package/node_modules/combined-stream/package.json +25 -0
  277. package/node_modules/combined-stream/yarn.lock +17 -0
  278. package/node_modules/component-emitter/History.md +75 -0
  279. package/node_modules/component-emitter/LICENSE +24 -0
  280. package/node_modules/component-emitter/Readme.md +74 -0
  281. package/node_modules/component-emitter/index.js +175 -0
  282. package/node_modules/component-emitter/package.json +27 -0
  283. package/node_modules/concat-map/.travis.yml +4 -0
  284. package/node_modules/concat-map/LICENSE +18 -0
  285. package/node_modules/concat-map/README.markdown +62 -0
  286. package/node_modules/concat-map/example/map.js +6 -0
  287. package/node_modules/concat-map/index.js +13 -0
  288. package/node_modules/concat-map/package.json +43 -0
  289. package/node_modules/concat-map/test/map.js +39 -0
  290. package/node_modules/convert-source-map/LICENSE +23 -0
  291. package/node_modules/convert-source-map/README.md +120 -0
  292. package/node_modules/convert-source-map/index.js +136 -0
  293. package/node_modules/convert-source-map/package.json +44 -0
  294. package/node_modules/cookiejar/LICENSE +9 -0
  295. package/node_modules/cookiejar/cookiejar.js +276 -0
  296. package/node_modules/cookiejar/package.json +26 -0
  297. package/node_modules/cookiejar/readme.md +60 -0
  298. package/node_modules/debug/LICENSE +20 -0
  299. package/node_modules/debug/README.md +481 -0
  300. package/node_modules/debug/package.json +59 -0
  301. package/node_modules/debug/src/browser.js +269 -0
  302. package/node_modules/debug/src/common.js +274 -0
  303. package/node_modules/debug/src/index.js +10 -0
  304. package/node_modules/debug/src/node.js +263 -0
  305. package/node_modules/delayed-stream/.npmignore +1 -0
  306. package/node_modules/delayed-stream/License +19 -0
  307. package/node_modules/delayed-stream/Makefile +7 -0
  308. package/node_modules/delayed-stream/Readme.md +141 -0
  309. package/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  310. package/node_modules/delayed-stream/package.json +27 -0
  311. package/node_modules/dotenv/CHANGELOG.md +356 -0
  312. package/node_modules/dotenv/LICENSE +23 -0
  313. package/node_modules/dotenv/README.md +408 -0
  314. package/node_modules/dotenv/config.d.ts +1 -0
  315. package/node_modules/dotenv/config.js +9 -0
  316. package/node_modules/dotenv/lib/cli-options.js +11 -0
  317. package/node_modules/dotenv/lib/env-options.js +20 -0
  318. package/node_modules/dotenv/lib/main.d.ts +73 -0
  319. package/node_modules/dotenv/lib/main.js +109 -0
  320. package/node_modules/dotenv/package.json +56 -0
  321. package/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
  322. package/node_modules/emoji-regex/README.md +73 -0
  323. package/node_modules/emoji-regex/es2015/index.js +6 -0
  324. package/node_modules/emoji-regex/es2015/text.js +6 -0
  325. package/node_modules/emoji-regex/index.d.ts +23 -0
  326. package/node_modules/emoji-regex/index.js +6 -0
  327. package/node_modules/emoji-regex/package.json +50 -0
  328. package/node_modules/emoji-regex/text.js +6 -0
  329. package/node_modules/escalade/dist/index.js +22 -0
  330. package/node_modules/escalade/dist/index.mjs +22 -0
  331. package/node_modules/escalade/index.d.ts +3 -0
  332. package/node_modules/escalade/license +9 -0
  333. package/node_modules/escalade/package.json +61 -0
  334. package/node_modules/escalade/readme.md +211 -0
  335. package/node_modules/escalade/sync/index.d.ts +2 -0
  336. package/node_modules/escalade/sync/index.js +18 -0
  337. package/node_modules/escalade/sync/index.mjs +18 -0
  338. package/node_modules/fast-safe-stringify/.travis.yml +8 -0
  339. package/node_modules/fast-safe-stringify/CHANGELOG.md +17 -0
  340. package/node_modules/fast-safe-stringify/LICENSE +23 -0
  341. package/node_modules/fast-safe-stringify/benchmark.js +137 -0
  342. package/node_modules/fast-safe-stringify/index.d.ts +23 -0
  343. package/node_modules/fast-safe-stringify/index.js +229 -0
  344. package/node_modules/fast-safe-stringify/package.json +46 -0
  345. package/node_modules/fast-safe-stringify/readme.md +170 -0
  346. package/node_modules/fast-safe-stringify/test-stable.js +404 -0
  347. package/node_modules/fast-safe-stringify/test.js +397 -0
  348. package/node_modules/fill-range/LICENSE +21 -0
  349. package/node_modules/fill-range/README.md +237 -0
  350. package/node_modules/fill-range/index.js +249 -0
  351. package/node_modules/fill-range/package.json +69 -0
  352. package/node_modules/follow-redirects/LICENSE +18 -0
  353. package/node_modules/follow-redirects/README.md +155 -0
  354. package/node_modules/follow-redirects/debug.js +15 -0
  355. package/node_modules/follow-redirects/http.js +1 -0
  356. package/node_modules/follow-redirects/https.js +1 -0
  357. package/node_modules/follow-redirects/index.js +598 -0
  358. package/node_modules/follow-redirects/package.json +59 -0
  359. package/node_modules/form-data/License +19 -0
  360. package/node_modules/form-data/README.md.bak +358 -0
  361. package/node_modules/form-data/Readme.md +358 -0
  362. package/node_modules/form-data/index.d.ts +62 -0
  363. package/node_modules/form-data/lib/browser.js +2 -0
  364. package/node_modules/form-data/lib/form_data.js +501 -0
  365. package/node_modules/form-data/lib/populate.js +10 -0
  366. package/node_modules/form-data/package.json +68 -0
  367. package/node_modules/formidable/LICENSE +7 -0
  368. package/node_modules/formidable/Readme.md +448 -0
  369. package/node_modules/formidable/lib/file.js +81 -0
  370. package/node_modules/formidable/lib/incoming_form.js +564 -0
  371. package/node_modules/formidable/lib/index.js +3 -0
  372. package/node_modules/formidable/lib/json_parser.js +30 -0
  373. package/node_modules/formidable/lib/multipart_parser.js +332 -0
  374. package/node_modules/formidable/lib/octet_parser.js +20 -0
  375. package/node_modules/formidable/lib/querystring_parser.js +27 -0
  376. package/node_modules/formidable/package.json +29 -0
  377. package/node_modules/fs-readdir-recursive/LICENSE +22 -0
  378. package/node_modules/fs-readdir-recursive/README.md +61 -0
  379. package/node_modules/fs-readdir-recursive/index.js +29 -0
  380. package/node_modules/fs-readdir-recursive/package.json +26 -0
  381. package/node_modules/fs.realpath/LICENSE +43 -0
  382. package/node_modules/fs.realpath/README.md +33 -0
  383. package/node_modules/fs.realpath/index.js +66 -0
  384. package/node_modules/fs.realpath/old.js +303 -0
  385. package/node_modules/fs.realpath/package.json +26 -0
  386. package/node_modules/function-bind/.editorconfig +20 -0
  387. package/node_modules/function-bind/.eslintrc +15 -0
  388. package/node_modules/function-bind/.jscs.json +176 -0
  389. package/node_modules/function-bind/.npmignore +22 -0
  390. package/node_modules/function-bind/.travis.yml +168 -0
  391. package/node_modules/function-bind/LICENSE +20 -0
  392. package/node_modules/function-bind/README.md +48 -0
  393. package/node_modules/function-bind/implementation.js +52 -0
  394. package/node_modules/function-bind/index.js +5 -0
  395. package/node_modules/function-bind/package.json +63 -0
  396. package/node_modules/function-bind/test/.eslintrc +9 -0
  397. package/node_modules/function-bind/test/index.js +252 -0
  398. package/node_modules/get-caller-file/LICENSE.md +6 -0
  399. package/node_modules/get-caller-file/README.md +41 -0
  400. package/node_modules/get-caller-file/index.d.ts +2 -0
  401. package/node_modules/get-caller-file/index.js +22 -0
  402. package/node_modules/get-caller-file/index.js.map +1 -0
  403. package/node_modules/get-caller-file/package.json +42 -0
  404. package/node_modules/get-intrinsic/.eslintrc +37 -0
  405. package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
  406. package/node_modules/get-intrinsic/.nycrc +9 -0
  407. package/node_modules/get-intrinsic/CHANGELOG.md +91 -0
  408. package/node_modules/get-intrinsic/LICENSE +21 -0
  409. package/node_modules/get-intrinsic/README.md +71 -0
  410. package/node_modules/get-intrinsic/index.js +334 -0
  411. package/node_modules/get-intrinsic/package.json +88 -0
  412. package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
  413. package/node_modules/glob/LICENSE +21 -0
  414. package/node_modules/glob/README.md +378 -0
  415. package/node_modules/glob/common.js +238 -0
  416. package/node_modules/glob/glob.js +790 -0
  417. package/node_modules/glob/package.json +55 -0
  418. package/node_modules/glob/sync.js +486 -0
  419. package/node_modules/glob-parent/CHANGELOG.md +110 -0
  420. package/node_modules/glob-parent/LICENSE +15 -0
  421. package/node_modules/glob-parent/README.md +137 -0
  422. package/node_modules/glob-parent/index.js +42 -0
  423. package/node_modules/glob-parent/package.json +48 -0
  424. package/node_modules/has/LICENSE-MIT +22 -0
  425. package/node_modules/has/README.md +18 -0
  426. package/node_modules/has/package.json +48 -0
  427. package/node_modules/has/src/index.js +5 -0
  428. package/node_modules/has/test/index.js +10 -0
  429. package/node_modules/has-symbols/.eslintrc +11 -0
  430. package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
  431. package/node_modules/has-symbols/.nycrc +9 -0
  432. package/node_modules/has-symbols/CHANGELOG.md +75 -0
  433. package/node_modules/has-symbols/LICENSE +21 -0
  434. package/node_modules/has-symbols/README.md +46 -0
  435. package/node_modules/has-symbols/index.js +13 -0
  436. package/node_modules/has-symbols/package.json +101 -0
  437. package/node_modules/has-symbols/shams.js +42 -0
  438. package/node_modules/has-symbols/test/index.js +22 -0
  439. package/node_modules/has-symbols/test/shams/core-js.js +28 -0
  440. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +28 -0
  441. package/node_modules/has-symbols/test/tests.js +56 -0
  442. package/node_modules/inflight/LICENSE +15 -0
  443. package/node_modules/inflight/README.md +37 -0
  444. package/node_modules/inflight/inflight.js +54 -0
  445. package/node_modules/inflight/package.json +29 -0
  446. package/node_modules/inherits/LICENSE +16 -0
  447. package/node_modules/inherits/README.md +42 -0
  448. package/node_modules/inherits/inherits.js +9 -0
  449. package/node_modules/inherits/inherits_browser.js +27 -0
  450. package/node_modules/inherits/package.json +29 -0
  451. package/node_modules/is-binary-path/index.d.ts +17 -0
  452. package/node_modules/is-binary-path/index.js +7 -0
  453. package/node_modules/is-binary-path/license +9 -0
  454. package/node_modules/is-binary-path/package.json +40 -0
  455. package/node_modules/is-binary-path/readme.md +34 -0
  456. package/node_modules/is-extglob/LICENSE +21 -0
  457. package/node_modules/is-extglob/README.md +107 -0
  458. package/node_modules/is-extglob/index.js +20 -0
  459. package/node_modules/is-extglob/package.json +69 -0
  460. package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
  461. package/node_modules/is-fullwidth-code-point/index.js +50 -0
  462. package/node_modules/is-fullwidth-code-point/license +9 -0
  463. package/node_modules/is-fullwidth-code-point/package.json +42 -0
  464. package/node_modules/is-fullwidth-code-point/readme.md +39 -0
  465. package/node_modules/is-glob/LICENSE +21 -0
  466. package/node_modules/is-glob/README.md +206 -0
  467. package/node_modules/is-glob/index.js +150 -0
  468. package/node_modules/is-glob/package.json +81 -0
  469. package/node_modules/is-number/LICENSE +21 -0
  470. package/node_modules/is-number/README.md +187 -0
  471. package/node_modules/is-number/index.js +18 -0
  472. package/node_modules/is-number/package.json +82 -0
  473. package/node_modules/lru-cache/LICENSE +15 -0
  474. package/node_modules/lru-cache/README.md +166 -0
  475. package/node_modules/lru-cache/index.js +334 -0
  476. package/node_modules/lru-cache/package.json +34 -0
  477. package/node_modules/methods/HISTORY.md +29 -0
  478. package/node_modules/methods/LICENSE +24 -0
  479. package/node_modules/methods/README.md +51 -0
  480. package/node_modules/methods/index.js +69 -0
  481. package/node_modules/methods/package.json +36 -0
  482. package/node_modules/mime/CHANGELOG.md +296 -0
  483. package/node_modules/mime/LICENSE +21 -0
  484. package/node_modules/mime/Mime.js +97 -0
  485. package/node_modules/mime/README.md +187 -0
  486. package/node_modules/mime/cli.js +46 -0
  487. package/node_modules/mime/index.js +4 -0
  488. package/node_modules/mime/lite.js +4 -0
  489. package/node_modules/mime/package.json +52 -0
  490. package/node_modules/mime/types/other.js +1 -0
  491. package/node_modules/mime/types/standard.js +1 -0
  492. package/node_modules/mime-db/HISTORY.md +507 -0
  493. package/node_modules/mime-db/LICENSE +23 -0
  494. package/node_modules/mime-db/README.md +100 -0
  495. package/node_modules/mime-db/db.json +8519 -0
  496. package/node_modules/mime-db/index.js +12 -0
  497. package/node_modules/mime-db/package.json +60 -0
  498. package/node_modules/mime-types/HISTORY.md +397 -0
  499. package/node_modules/mime-types/LICENSE +23 -0
  500. package/node_modules/mime-types/README.md +113 -0
  501. package/node_modules/mime-types/index.js +188 -0
  502. package/node_modules/mime-types/package.json +44 -0
  503. package/node_modules/minimatch/LICENSE +15 -0
  504. package/node_modules/minimatch/README.md +230 -0
  505. package/node_modules/minimatch/minimatch.js +947 -0
  506. package/node_modules/minimatch/package.json +33 -0
  507. package/node_modules/ms/index.js +162 -0
  508. package/node_modules/ms/license.md +21 -0
  509. package/node_modules/ms/package.json +37 -0
  510. package/node_modules/ms/readme.md +60 -0
  511. package/node_modules/multi-progress/.gitattributes +17 -0
  512. package/node_modules/multi-progress/CHANGELOG.md +56 -0
  513. package/node_modules/multi-progress/LICENSE.txt +21 -0
  514. package/node_modules/multi-progress/multi-progress.js +98 -0
  515. package/node_modules/multi-progress/package.json +28 -0
  516. package/node_modules/multi-progress/readme.md +33 -0
  517. package/node_modules/normalize-path/LICENSE +21 -0
  518. package/node_modules/normalize-path/README.md +127 -0
  519. package/node_modules/normalize-path/index.js +35 -0
  520. package/node_modules/normalize-path/package.json +77 -0
  521. package/node_modules/object-inspect/.eslintrc +53 -0
  522. package/node_modules/object-inspect/.github/FUNDING.yml +12 -0
  523. package/node_modules/object-inspect/.nycrc +13 -0
  524. package/node_modules/object-inspect/CHANGELOG.md +360 -0
  525. package/node_modules/object-inspect/LICENSE +21 -0
  526. package/node_modules/object-inspect/example/all.js +23 -0
  527. package/node_modules/object-inspect/example/circular.js +6 -0
  528. package/node_modules/object-inspect/example/fn.js +5 -0
  529. package/node_modules/object-inspect/example/inspect.js +10 -0
  530. package/node_modules/object-inspect/index.js +512 -0
  531. package/node_modules/object-inspect/package-support.json +20 -0
  532. package/node_modules/object-inspect/package.json +94 -0
  533. package/node_modules/object-inspect/readme.markdown +86 -0
  534. package/node_modules/object-inspect/test/bigint.js +58 -0
  535. package/node_modules/object-inspect/test/browser/dom.js +15 -0
  536. package/node_modules/object-inspect/test/circular.js +16 -0
  537. package/node_modules/object-inspect/test/deep.js +12 -0
  538. package/node_modules/object-inspect/test/element.js +53 -0
  539. package/node_modules/object-inspect/test/err.js +48 -0
  540. package/node_modules/object-inspect/test/fakes.js +29 -0
  541. package/node_modules/object-inspect/test/fn.js +76 -0
  542. package/node_modules/object-inspect/test/has.js +15 -0
  543. package/node_modules/object-inspect/test/holes.js +15 -0
  544. package/node_modules/object-inspect/test/indent-option.js +271 -0
  545. package/node_modules/object-inspect/test/inspect.js +139 -0
  546. package/node_modules/object-inspect/test/lowbyte.js +12 -0
  547. package/node_modules/object-inspect/test/number.js +58 -0
  548. package/node_modules/object-inspect/test/quoteStyle.js +17 -0
  549. package/node_modules/object-inspect/test/toStringTag.js +40 -0
  550. package/node_modules/object-inspect/test/undef.js +12 -0
  551. package/node_modules/object-inspect/test/values.js +211 -0
  552. package/node_modules/object-inspect/test-core-js.js +26 -0
  553. package/node_modules/object-inspect/util.inspect.js +1 -0
  554. package/node_modules/once/LICENSE +15 -0
  555. package/node_modules/once/README.md +79 -0
  556. package/node_modules/once/once.js +42 -0
  557. package/node_modules/once/package.json +33 -0
  558. package/node_modules/path-is-absolute/index.js +20 -0
  559. package/node_modules/path-is-absolute/license +21 -0
  560. package/node_modules/path-is-absolute/package.json +43 -0
  561. package/node_modules/path-is-absolute/readme.md +59 -0
  562. package/node_modules/picomatch/CHANGELOG.md +136 -0
  563. package/node_modules/picomatch/LICENSE +21 -0
  564. package/node_modules/picomatch/README.md +708 -0
  565. package/node_modules/picomatch/index.js +3 -0
  566. package/node_modules/picomatch/lib/constants.js +179 -0
  567. package/node_modules/picomatch/lib/parse.js +1091 -0
  568. package/node_modules/picomatch/lib/picomatch.js +342 -0
  569. package/node_modules/picomatch/lib/scan.js +391 -0
  570. package/node_modules/picomatch/lib/utils.js +64 -0
  571. package/node_modules/picomatch/package.json +81 -0
  572. package/node_modules/progress/CHANGELOG.md +115 -0
  573. package/node_modules/progress/LICENSE +22 -0
  574. package/node_modules/progress/Makefile +8 -0
  575. package/node_modules/progress/Readme.md +146 -0
  576. package/node_modules/progress/index.js +1 -0
  577. package/node_modules/progress/lib/node-progress.js +236 -0
  578. package/node_modules/progress/package.json +26 -0
  579. package/node_modules/qs/.editorconfig +43 -0
  580. package/node_modules/qs/.eslintrc +38 -0
  581. package/node_modules/qs/.github/FUNDING.yml +12 -0
  582. package/node_modules/qs/.nycrc +13 -0
  583. package/node_modules/qs/CHANGELOG.md +546 -0
  584. package/node_modules/qs/LICENSE.md +29 -0
  585. package/node_modules/qs/README.md +625 -0
  586. package/node_modules/qs/dist/qs.js +2054 -0
  587. package/node_modules/qs/lib/formats.js +23 -0
  588. package/node_modules/qs/lib/index.js +11 -0
  589. package/node_modules/qs/lib/parse.js +263 -0
  590. package/node_modules/qs/lib/stringify.js +326 -0
  591. package/node_modules/qs/lib/utils.js +252 -0
  592. package/node_modules/qs/package.json +77 -0
  593. package/node_modules/qs/test/parse.js +855 -0
  594. package/node_modules/qs/test/stringify.js +909 -0
  595. package/node_modules/qs/test/utils.js +136 -0
  596. package/node_modules/readdirp/LICENSE +21 -0
  597. package/node_modules/readdirp/README.md +122 -0
  598. package/node_modules/readdirp/index.d.ts +43 -0
  599. package/node_modules/readdirp/index.js +287 -0
  600. package/node_modules/readdirp/package.json +122 -0
  601. package/node_modules/require-directory/.jshintrc +67 -0
  602. package/node_modules/require-directory/.npmignore +1 -0
  603. package/node_modules/require-directory/.travis.yml +3 -0
  604. package/node_modules/require-directory/LICENSE +22 -0
  605. package/node_modules/require-directory/README.markdown +184 -0
  606. package/node_modules/require-directory/index.js +86 -0
  607. package/node_modules/require-directory/package.json +40 -0
  608. package/node_modules/safe-buffer/LICENSE +21 -0
  609. package/node_modules/safe-buffer/README.md +584 -0
  610. package/node_modules/safe-buffer/index.d.ts +187 -0
  611. package/node_modules/safe-buffer/index.js +62 -0
  612. package/node_modules/safe-buffer/package.json +37 -0
  613. package/node_modules/semver/LICENSE +15 -0
  614. package/node_modules/semver/README.md +568 -0
  615. package/node_modules/semver/bin/semver.js +183 -0
  616. package/node_modules/semver/classes/comparator.js +136 -0
  617. package/node_modules/semver/classes/index.js +5 -0
  618. package/node_modules/semver/classes/range.js +519 -0
  619. package/node_modules/semver/classes/semver.js +287 -0
  620. package/node_modules/semver/functions/clean.js +6 -0
  621. package/node_modules/semver/functions/cmp.js +52 -0
  622. package/node_modules/semver/functions/coerce.js +52 -0
  623. package/node_modules/semver/functions/compare-build.js +7 -0
  624. package/node_modules/semver/functions/compare-loose.js +3 -0
  625. package/node_modules/semver/functions/compare.js +5 -0
  626. package/node_modules/semver/functions/diff.js +23 -0
  627. package/node_modules/semver/functions/eq.js +3 -0
  628. package/node_modules/semver/functions/gt.js +3 -0
  629. package/node_modules/semver/functions/gte.js +3 -0
  630. package/node_modules/semver/functions/inc.js +18 -0
  631. package/node_modules/semver/functions/lt.js +3 -0
  632. package/node_modules/semver/functions/lte.js +3 -0
  633. package/node_modules/semver/functions/major.js +3 -0
  634. package/node_modules/semver/functions/minor.js +3 -0
  635. package/node_modules/semver/functions/neq.js +3 -0
  636. package/node_modules/semver/functions/parse.js +33 -0
  637. package/node_modules/semver/functions/patch.js +3 -0
  638. package/node_modules/semver/functions/prerelease.js +6 -0
  639. package/node_modules/semver/functions/rcompare.js +3 -0
  640. package/node_modules/semver/functions/rsort.js +3 -0
  641. package/node_modules/semver/functions/satisfies.js +10 -0
  642. package/node_modules/semver/functions/sort.js +3 -0
  643. package/node_modules/semver/functions/valid.js +6 -0
  644. package/node_modules/semver/index.js +48 -0
  645. package/node_modules/semver/internal/constants.js +17 -0
  646. package/node_modules/semver/internal/debug.js +9 -0
  647. package/node_modules/semver/internal/identifiers.js +23 -0
  648. package/node_modules/semver/internal/parse-options.js +11 -0
  649. package/node_modules/semver/internal/re.js +182 -0
  650. package/node_modules/semver/package.json +75 -0
  651. package/node_modules/semver/preload.js +2 -0
  652. package/node_modules/semver/range.bnf +16 -0
  653. package/node_modules/semver/ranges/gtr.js +4 -0
  654. package/node_modules/semver/ranges/intersects.js +7 -0
  655. package/node_modules/semver/ranges/ltr.js +4 -0
  656. package/node_modules/semver/ranges/max-satisfying.js +25 -0
  657. package/node_modules/semver/ranges/min-satisfying.js +24 -0
  658. package/node_modules/semver/ranges/min-version.js +61 -0
  659. package/node_modules/semver/ranges/outside.js +80 -0
  660. package/node_modules/semver/ranges/simplify.js +47 -0
  661. package/node_modules/semver/ranges/subset.js +244 -0
  662. package/node_modules/semver/ranges/to-comparators.js +8 -0
  663. package/node_modules/semver/ranges/valid.js +11 -0
  664. package/node_modules/side-channel/.eslintignore +1 -0
  665. package/node_modules/side-channel/.eslintrc +11 -0
  666. package/node_modules/side-channel/.github/FUNDING.yml +12 -0
  667. package/node_modules/side-channel/.nycrc +13 -0
  668. package/node_modules/side-channel/CHANGELOG.md +65 -0
  669. package/node_modules/side-channel/LICENSE +21 -0
  670. package/node_modules/side-channel/README.md +2 -0
  671. package/node_modules/side-channel/index.js +124 -0
  672. package/node_modules/side-channel/package.json +67 -0
  673. package/node_modules/side-channel/test/index.js +78 -0
  674. package/node_modules/string-width/index.d.ts +29 -0
  675. package/node_modules/string-width/index.js +47 -0
  676. package/node_modules/string-width/license +9 -0
  677. package/node_modules/string-width/package.json +56 -0
  678. package/node_modules/string-width/readme.md +50 -0
  679. package/node_modules/string_decoder/.travis.yml +50 -0
  680. package/node_modules/string_decoder/LICENSE +48 -0
  681. package/node_modules/string_decoder/README.md +47 -0
  682. package/node_modules/string_decoder/lib/string_decoder.js +296 -0
  683. package/node_modules/string_decoder/package.json +31 -0
  684. package/node_modules/strip-ansi/index.d.ts +17 -0
  685. package/node_modules/strip-ansi/index.js +4 -0
  686. package/node_modules/strip-ansi/license +9 -0
  687. package/node_modules/strip-ansi/package.json +54 -0
  688. package/node_modules/strip-ansi/readme.md +46 -0
  689. package/node_modules/superagent/.browserslistrc +5 -0
  690. package/node_modules/superagent/.dist.babelrc +10 -0
  691. package/node_modules/superagent/.dist.eslintrc +35 -0
  692. package/node_modules/superagent/.editorconfig +9 -0
  693. package/node_modules/superagent/.gitattributes +1 -0
  694. package/node_modules/superagent/.lib.babelrc +11 -0
  695. package/node_modules/superagent/.lib.eslintrc +24 -0
  696. package/node_modules/superagent/.remarkignore +3 -0
  697. package/node_modules/superagent/.zuul.yml +16 -0
  698. package/node_modules/superagent/CONTRIBUTING.md +7 -0
  699. package/node_modules/superagent/HISTORY.md +692 -0
  700. package/node_modules/superagent/LICENSE +22 -0
  701. package/node_modules/superagent/Makefile +60 -0
  702. package/node_modules/superagent/README.md +266 -0
  703. package/node_modules/superagent/dist/superagent.js +2418 -0
  704. package/node_modules/superagent/dist/superagent.min.js +1 -0
  705. package/node_modules/superagent/docs/head.html +11 -0
  706. package/node_modules/superagent/docs/images/bg.png +0 -0
  707. package/node_modules/superagent/docs/index.md +736 -0
  708. package/node_modules/superagent/docs/style.css +87 -0
  709. package/node_modules/superagent/docs/tail.html +36 -0
  710. package/node_modules/superagent/docs/test.html +5072 -0
  711. package/node_modules/superagent/index.html +47 -0
  712. package/node_modules/superagent/lib/agent-base.js +42 -0
  713. package/node_modules/superagent/lib/client.js +1020 -0
  714. package/node_modules/superagent/lib/is-object.js +17 -0
  715. package/node_modules/superagent/lib/node/agent.js +113 -0
  716. package/node_modules/superagent/lib/node/http2wrapper.js +218 -0
  717. package/node_modules/superagent/lib/node/index.js +1376 -0
  718. package/node_modules/superagent/lib/node/parsers/image.js +13 -0
  719. package/node_modules/superagent/lib/node/parsers/index.js +12 -0
  720. package/node_modules/superagent/lib/node/parsers/json.js +26 -0
  721. package/node_modules/superagent/lib/node/parsers/text.js +11 -0
  722. package/node_modules/superagent/lib/node/parsers/urlencoded.js +22 -0
  723. package/node_modules/superagent/lib/node/response.js +126 -0
  724. package/node_modules/superagent/lib/node/unzip.js +72 -0
  725. package/node_modules/superagent/lib/request-base.js +757 -0
  726. package/node_modules/superagent/lib/response-base.js +131 -0
  727. package/node_modules/superagent/lib/utils.js +71 -0
  728. package/node_modules/superagent/node_modules/form-data/License +19 -0
  729. package/node_modules/superagent/node_modules/form-data/README.md.bak +356 -0
  730. package/node_modules/superagent/node_modules/form-data/Readme.md +356 -0
  731. package/node_modules/superagent/node_modules/form-data/index.d.ts +62 -0
  732. package/node_modules/superagent/node_modules/form-data/lib/browser.js +2 -0
  733. package/node_modules/superagent/node_modules/form-data/lib/form_data.js +498 -0
  734. package/node_modules/superagent/node_modules/form-data/lib/populate.js +10 -0
  735. package/node_modules/superagent/node_modules/form-data/package.json +68 -0
  736. package/node_modules/superagent/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  737. package/node_modules/superagent/node_modules/readable-stream/GOVERNANCE.md +136 -0
  738. package/node_modules/superagent/node_modules/readable-stream/LICENSE +47 -0
  739. package/node_modules/superagent/node_modules/readable-stream/README.md +106 -0
  740. package/node_modules/superagent/node_modules/readable-stream/errors-browser.js +127 -0
  741. package/node_modules/superagent/node_modules/readable-stream/errors.js +116 -0
  742. package/node_modules/superagent/node_modules/readable-stream/experimentalWarning.js +17 -0
  743. package/node_modules/superagent/node_modules/readable-stream/lib/_stream_duplex.js +139 -0
  744. package/node_modules/superagent/node_modules/readable-stream/lib/_stream_passthrough.js +39 -0
  745. package/node_modules/superagent/node_modules/readable-stream/lib/_stream_readable.js +1124 -0
  746. package/node_modules/superagent/node_modules/readable-stream/lib/_stream_transform.js +201 -0
  747. package/node_modules/superagent/node_modules/readable-stream/lib/_stream_writable.js +697 -0
  748. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/async_iterator.js +207 -0
  749. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/buffer_list.js +210 -0
  750. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/destroy.js +105 -0
  751. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +104 -0
  752. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
  753. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/from.js +64 -0
  754. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/pipeline.js +97 -0
  755. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/state.js +27 -0
  756. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  757. package/node_modules/superagent/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  758. package/node_modules/superagent/node_modules/readable-stream/package.json +68 -0
  759. package/node_modules/superagent/node_modules/readable-stream/readable-browser.js +9 -0
  760. package/node_modules/superagent/node_modules/readable-stream/readable.js +16 -0
  761. package/node_modules/superagent/package.json +222 -0
  762. package/node_modules/to-regex-range/LICENSE +21 -0
  763. package/node_modules/to-regex-range/README.md +305 -0
  764. package/node_modules/to-regex-range/index.js +288 -0
  765. package/node_modules/to-regex-range/package.json +88 -0
  766. package/node_modules/util-deprecate/History.md +16 -0
  767. package/node_modules/util-deprecate/LICENSE +24 -0
  768. package/node_modules/util-deprecate/README.md +53 -0
  769. package/node_modules/util-deprecate/browser.js +67 -0
  770. package/node_modules/util-deprecate/node.js +6 -0
  771. package/node_modules/util-deprecate/package.json +27 -0
  772. package/node_modules/uuid/CHANGELOG.md +229 -0
  773. package/node_modules/uuid/CONTRIBUTING.md +18 -0
  774. package/node_modules/uuid/LICENSE.md +9 -0
  775. package/node_modules/uuid/README.md +505 -0
  776. package/node_modules/uuid/dist/bin/uuid +2 -0
  777. package/node_modules/uuid/dist/esm-browser/index.js +9 -0
  778. package/node_modules/uuid/dist/esm-browser/md5.js +215 -0
  779. package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
  780. package/node_modules/uuid/dist/esm-browser/parse.js +35 -0
  781. package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  782. package/node_modules/uuid/dist/esm-browser/rng.js +19 -0
  783. package/node_modules/uuid/dist/esm-browser/sha1.js +96 -0
  784. package/node_modules/uuid/dist/esm-browser/stringify.js +30 -0
  785. package/node_modules/uuid/dist/esm-browser/v1.js +95 -0
  786. package/node_modules/uuid/dist/esm-browser/v3.js +4 -0
  787. package/node_modules/uuid/dist/esm-browser/v35.js +64 -0
  788. package/node_modules/uuid/dist/esm-browser/v4.js +24 -0
  789. package/node_modules/uuid/dist/esm-browser/v5.js +4 -0
  790. package/node_modules/uuid/dist/esm-browser/validate.js +7 -0
  791. package/node_modules/uuid/dist/esm-browser/version.js +11 -0
  792. package/node_modules/uuid/dist/esm-node/index.js +9 -0
  793. package/node_modules/uuid/dist/esm-node/md5.js +13 -0
  794. package/node_modules/uuid/dist/esm-node/nil.js +1 -0
  795. package/node_modules/uuid/dist/esm-node/parse.js +35 -0
  796. package/node_modules/uuid/dist/esm-node/regex.js +1 -0
  797. package/node_modules/uuid/dist/esm-node/rng.js +12 -0
  798. package/node_modules/uuid/dist/esm-node/sha1.js +13 -0
  799. package/node_modules/uuid/dist/esm-node/stringify.js +29 -0
  800. package/node_modules/uuid/dist/esm-node/v1.js +95 -0
  801. package/node_modules/uuid/dist/esm-node/v3.js +4 -0
  802. package/node_modules/uuid/dist/esm-node/v35.js +64 -0
  803. package/node_modules/uuid/dist/esm-node/v4.js +24 -0
  804. package/node_modules/uuid/dist/esm-node/v5.js +4 -0
  805. package/node_modules/uuid/dist/esm-node/validate.js +7 -0
  806. package/node_modules/uuid/dist/esm-node/version.js +11 -0
  807. package/node_modules/uuid/dist/index.js +79 -0
  808. package/node_modules/uuid/dist/md5-browser.js +223 -0
  809. package/node_modules/uuid/dist/md5.js +23 -0
  810. package/node_modules/uuid/dist/nil.js +8 -0
  811. package/node_modules/uuid/dist/parse.js +45 -0
  812. package/node_modules/uuid/dist/regex.js +8 -0
  813. package/node_modules/uuid/dist/rng-browser.js +26 -0
  814. package/node_modules/uuid/dist/rng.js +24 -0
  815. package/node_modules/uuid/dist/sha1-browser.js +104 -0
  816. package/node_modules/uuid/dist/sha1.js +23 -0
  817. package/node_modules/uuid/dist/stringify.js +39 -0
  818. package/node_modules/uuid/dist/umd/uuid.min.js +1 -0
  819. package/node_modules/uuid/dist/umd/uuidNIL.min.js +1 -0
  820. package/node_modules/uuid/dist/umd/uuidParse.min.js +1 -0
  821. package/node_modules/uuid/dist/umd/uuidStringify.min.js +1 -0
  822. package/node_modules/uuid/dist/umd/uuidValidate.min.js +1 -0
  823. package/node_modules/uuid/dist/umd/uuidVersion.min.js +1 -0
  824. package/node_modules/uuid/dist/umd/uuidv1.min.js +1 -0
  825. package/node_modules/uuid/dist/umd/uuidv3.min.js +1 -0
  826. package/node_modules/uuid/dist/umd/uuidv4.min.js +1 -0
  827. package/node_modules/uuid/dist/umd/uuidv5.min.js +1 -0
  828. package/node_modules/uuid/dist/uuid-bin.js +85 -0
  829. package/node_modules/uuid/dist/v1.js +107 -0
  830. package/node_modules/uuid/dist/v3.js +16 -0
  831. package/node_modules/uuid/dist/v35.js +78 -0
  832. package/node_modules/uuid/dist/v4.js +37 -0
  833. package/node_modules/uuid/dist/v5.js +16 -0
  834. package/node_modules/uuid/dist/validate.js +17 -0
  835. package/node_modules/uuid/dist/version.js +21 -0
  836. package/node_modules/uuid/package.json +135 -0
  837. package/node_modules/uuid/wrapper.mjs +10 -0
  838. package/node_modules/wrap-ansi/index.js +216 -0
  839. package/node_modules/wrap-ansi/license +9 -0
  840. package/node_modules/wrap-ansi/package.json +62 -0
  841. package/node_modules/wrap-ansi/readme.md +91 -0
  842. package/node_modules/wrappy/LICENSE +15 -0
  843. package/node_modules/wrappy/README.md +36 -0
  844. package/node_modules/wrappy/package.json +29 -0
  845. package/node_modules/wrappy/wrappy.js +33 -0
  846. package/node_modules/y18n/CHANGELOG.md +100 -0
  847. package/node_modules/y18n/LICENSE +13 -0
  848. package/node_modules/y18n/README.md +127 -0
  849. package/node_modules/y18n/build/index.cjs +203 -0
  850. package/node_modules/y18n/build/lib/cjs.js +6 -0
  851. package/node_modules/y18n/build/lib/index.js +174 -0
  852. package/node_modules/y18n/build/lib/platform-shims/node.js +19 -0
  853. package/node_modules/y18n/index.mjs +8 -0
  854. package/node_modules/y18n/package.json +70 -0
  855. package/node_modules/yallist/LICENSE +15 -0
  856. package/node_modules/yallist/README.md +204 -0
  857. package/node_modules/yallist/iterator.js +8 -0
  858. package/node_modules/yallist/package.json +29 -0
  859. package/node_modules/yallist/yallist.js +426 -0
  860. package/node_modules/yargs/LICENSE +21 -0
  861. package/node_modules/yargs/README.md +204 -0
  862. package/node_modules/yargs/browser.mjs +7 -0
  863. package/node_modules/yargs/build/index.cjs +1 -0
  864. package/node_modules/yargs/build/lib/argsert.js +62 -0
  865. package/node_modules/yargs/build/lib/command.js +447 -0
  866. package/node_modules/yargs/build/lib/completion-templates.js +48 -0
  867. package/node_modules/yargs/build/lib/completion.js +236 -0
  868. package/node_modules/yargs/build/lib/middleware.js +88 -0
  869. package/node_modules/yargs/build/lib/parse-command.js +32 -0
  870. package/node_modules/yargs/build/lib/typings/common-types.js +9 -0
  871. package/node_modules/yargs/build/lib/typings/yargs-parser-types.js +1 -0
  872. package/node_modules/yargs/build/lib/usage.js +579 -0
  873. package/node_modules/yargs/build/lib/utils/apply-extends.js +59 -0
  874. package/node_modules/yargs/build/lib/utils/is-promise.js +5 -0
  875. package/node_modules/yargs/build/lib/utils/levenshtein.js +34 -0
  876. package/node_modules/yargs/build/lib/utils/maybe-async-result.js +17 -0
  877. package/node_modules/yargs/build/lib/utils/obj-filter.js +10 -0
  878. package/node_modules/yargs/build/lib/utils/process-argv.js +17 -0
  879. package/node_modules/yargs/build/lib/utils/set-blocking.js +12 -0
  880. package/node_modules/yargs/build/lib/utils/which-module.js +10 -0
  881. package/node_modules/yargs/build/lib/validation.js +305 -0
  882. package/node_modules/yargs/build/lib/yargs-factory.js +1497 -0
  883. package/node_modules/yargs/build/lib/yerror.js +9 -0
  884. package/node_modules/yargs/helpers/helpers.mjs +10 -0
  885. package/node_modules/yargs/helpers/index.js +14 -0
  886. package/node_modules/yargs/helpers/package.json +3 -0
  887. package/node_modules/yargs/index.cjs +53 -0
  888. package/node_modules/yargs/index.mjs +8 -0
  889. package/node_modules/yargs/lib/platform-shims/browser.mjs +95 -0
  890. package/node_modules/yargs/lib/platform-shims/esm.mjs +73 -0
  891. package/node_modules/yargs/locales/be.json +46 -0
  892. package/node_modules/yargs/locales/de.json +46 -0
  893. package/node_modules/yargs/locales/en.json +51 -0
  894. package/node_modules/yargs/locales/es.json +46 -0
  895. package/node_modules/yargs/locales/fi.json +49 -0
  896. package/node_modules/yargs/locales/fr.json +53 -0
  897. package/node_modules/yargs/locales/hi.json +49 -0
  898. package/node_modules/yargs/locales/hu.json +46 -0
  899. package/node_modules/yargs/locales/id.json +50 -0
  900. package/node_modules/yargs/locales/it.json +46 -0
  901. package/node_modules/yargs/locales/ja.json +51 -0
  902. package/node_modules/yargs/locales/ko.json +49 -0
  903. package/node_modules/yargs/locales/nb.json +44 -0
  904. package/node_modules/yargs/locales/nl.json +49 -0
  905. package/node_modules/yargs/locales/nn.json +44 -0
  906. package/node_modules/yargs/locales/pirate.json +13 -0
  907. package/node_modules/yargs/locales/pl.json +49 -0
  908. package/node_modules/yargs/locales/pt.json +45 -0
  909. package/node_modules/yargs/locales/pt_BR.json +48 -0
  910. package/node_modules/yargs/locales/ru.json +51 -0
  911. package/node_modules/yargs/locales/th.json +46 -0
  912. package/node_modules/yargs/locales/tr.json +48 -0
  913. package/node_modules/yargs/locales/uk_UA.json +51 -0
  914. package/node_modules/yargs/locales/uz.json +52 -0
  915. package/node_modules/yargs/locales/zh_CN.json +48 -0
  916. package/node_modules/yargs/locales/zh_TW.json +51 -0
  917. package/node_modules/yargs/package.json +123 -0
  918. package/node_modules/yargs/yargs +9 -0
  919. package/node_modules/yargs/yargs.mjs +10 -0
  920. package/node_modules/yargs-parser/CHANGELOG.md +287 -0
  921. package/node_modules/yargs-parser/LICENSE.txt +14 -0
  922. package/node_modules/yargs-parser/README.md +518 -0
  923. package/node_modules/yargs-parser/browser.js +29 -0
  924. package/node_modules/yargs-parser/build/index.cjs +1048 -0
  925. package/node_modules/yargs-parser/build/lib/index.js +60 -0
  926. package/node_modules/yargs-parser/build/lib/string-utils.js +65 -0
  927. package/node_modules/yargs-parser/build/lib/tokenize-arg-string.js +40 -0
  928. package/node_modules/yargs-parser/build/lib/yargs-parser-types.js +12 -0
  929. package/node_modules/yargs-parser/build/lib/yargs-parser.js +1045 -0
  930. package/node_modules/yargs-parser/package.json +88 -0
  931. package/package.json +1 -1
@@ -0,0 +1,1020 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ /**
6
+ * Root reference for iframes.
7
+ */
8
+ var root;
9
+
10
+ if (typeof window !== 'undefined') {
11
+ // Browser window
12
+ root = window;
13
+ } else if (typeof self === 'undefined') {
14
+ // Other environments
15
+ console.warn('Using browser-only version of superagent in non-browser environment');
16
+ root = void 0;
17
+ } else {
18
+ // Web Worker
19
+ root = self;
20
+ }
21
+
22
+ var Emitter = require('component-emitter');
23
+
24
+ var safeStringify = require('fast-safe-stringify');
25
+
26
+ var RequestBase = require('./request-base');
27
+
28
+ var isObject = require('./is-object');
29
+
30
+ var ResponseBase = require('./response-base');
31
+
32
+ var Agent = require('./agent-base');
33
+ /**
34
+ * Noop.
35
+ */
36
+
37
+
38
+ function noop() {}
39
+ /**
40
+ * Expose `request`.
41
+ */
42
+
43
+
44
+ module.exports = function (method, url) {
45
+ // callback
46
+ if (typeof url === 'function') {
47
+ return new exports.Request('GET', method).end(url);
48
+ } // url first
49
+
50
+
51
+ if (arguments.length === 1) {
52
+ return new exports.Request('GET', method);
53
+ }
54
+
55
+ return new exports.Request(method, url);
56
+ };
57
+
58
+ exports = module.exports;
59
+ var request = exports;
60
+ exports.Request = Request;
61
+ /**
62
+ * Determine XHR.
63
+ */
64
+
65
+ request.getXHR = function () {
66
+ if (root.XMLHttpRequest && (!root.location || root.location.protocol !== 'file:' || !root.ActiveXObject)) {
67
+ return new XMLHttpRequest();
68
+ }
69
+
70
+ try {
71
+ return new ActiveXObject('Microsoft.XMLHTTP');
72
+ } catch (_unused) {}
73
+
74
+ try {
75
+ return new ActiveXObject('Msxml2.XMLHTTP.6.0');
76
+ } catch (_unused2) {}
77
+
78
+ try {
79
+ return new ActiveXObject('Msxml2.XMLHTTP.3.0');
80
+ } catch (_unused3) {}
81
+
82
+ try {
83
+ return new ActiveXObject('Msxml2.XMLHTTP');
84
+ } catch (_unused4) {}
85
+
86
+ throw new Error('Browser-only version of superagent could not find XHR');
87
+ };
88
+ /**
89
+ * Removes leading and trailing whitespace, added to support IE.
90
+ *
91
+ * @param {String} s
92
+ * @return {String}
93
+ * @api private
94
+ */
95
+
96
+
97
+ var trim = ''.trim ? function (s) {
98
+ return s.trim();
99
+ } : function (s) {
100
+ return s.replace(/(^\s*|\s*$)/g, '');
101
+ };
102
+ /**
103
+ * Serialize the given `obj`.
104
+ *
105
+ * @param {Object} obj
106
+ * @return {String}
107
+ * @api private
108
+ */
109
+
110
+ function serialize(obj) {
111
+ if (!isObject(obj)) return obj;
112
+ var pairs = [];
113
+
114
+ for (var key in obj) {
115
+ if (Object.prototype.hasOwnProperty.call(obj, key)) pushEncodedKeyValuePair(pairs, key, obj[key]);
116
+ }
117
+
118
+ return pairs.join('&');
119
+ }
120
+ /**
121
+ * Helps 'serialize' with serializing arrays.
122
+ * Mutates the pairs array.
123
+ *
124
+ * @param {Array} pairs
125
+ * @param {String} key
126
+ * @param {Mixed} val
127
+ */
128
+
129
+
130
+ function pushEncodedKeyValuePair(pairs, key, val) {
131
+ if (val === undefined) return;
132
+
133
+ if (val === null) {
134
+ pairs.push(encodeURI(key));
135
+ return;
136
+ }
137
+
138
+ if (Array.isArray(val)) {
139
+ val.forEach(function (v) {
140
+ pushEncodedKeyValuePair(pairs, key, v);
141
+ });
142
+ } else if (isObject(val)) {
143
+ for (var subkey in val) {
144
+ if (Object.prototype.hasOwnProperty.call(val, subkey)) pushEncodedKeyValuePair(pairs, "".concat(key, "[").concat(subkey, "]"), val[subkey]);
145
+ }
146
+ } else {
147
+ pairs.push(encodeURI(key) + '=' + encodeURIComponent(val));
148
+ }
149
+ }
150
+ /**
151
+ * Expose serialization method.
152
+ */
153
+
154
+
155
+ request.serializeObject = serialize;
156
+ /**
157
+ * Parse the given x-www-form-urlencoded `str`.
158
+ *
159
+ * @param {String} str
160
+ * @return {Object}
161
+ * @api private
162
+ */
163
+
164
+ function parseString(str) {
165
+ var obj = {};
166
+ var pairs = str.split('&');
167
+ var pair;
168
+ var pos;
169
+
170
+ for (var i = 0, len = pairs.length; i < len; ++i) {
171
+ pair = pairs[i];
172
+ pos = pair.indexOf('=');
173
+
174
+ if (pos === -1) {
175
+ obj[decodeURIComponent(pair)] = '';
176
+ } else {
177
+ obj[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(pair.slice(pos + 1));
178
+ }
179
+ }
180
+
181
+ return obj;
182
+ }
183
+ /**
184
+ * Expose parser.
185
+ */
186
+
187
+
188
+ request.parseString = parseString;
189
+ /**
190
+ * Default MIME type map.
191
+ *
192
+ * superagent.types.xml = 'application/xml';
193
+ *
194
+ */
195
+
196
+ request.types = {
197
+ html: 'text/html',
198
+ json: 'application/json',
199
+ xml: 'text/xml',
200
+ urlencoded: 'application/x-www-form-urlencoded',
201
+ form: 'application/x-www-form-urlencoded',
202
+ 'form-data': 'application/x-www-form-urlencoded'
203
+ };
204
+ /**
205
+ * Default serialization map.
206
+ *
207
+ * superagent.serialize['application/xml'] = function(obj){
208
+ * return 'generated xml here';
209
+ * };
210
+ *
211
+ */
212
+
213
+ request.serialize = {
214
+ 'application/x-www-form-urlencoded': serialize,
215
+ 'application/json': safeStringify
216
+ };
217
+ /**
218
+ * Default parsers.
219
+ *
220
+ * superagent.parse['application/xml'] = function(str){
221
+ * return { object parsed from str };
222
+ * };
223
+ *
224
+ */
225
+
226
+ request.parse = {
227
+ 'application/x-www-form-urlencoded': parseString,
228
+ 'application/json': JSON.parse
229
+ };
230
+ /**
231
+ * Parse the given header `str` into
232
+ * an object containing the mapped fields.
233
+ *
234
+ * @param {String} str
235
+ * @return {Object}
236
+ * @api private
237
+ */
238
+
239
+ function parseHeader(str) {
240
+ var lines = str.split(/\r?\n/);
241
+ var fields = {};
242
+ var index;
243
+ var line;
244
+ var field;
245
+ var val;
246
+
247
+ for (var i = 0, len = lines.length; i < len; ++i) {
248
+ line = lines[i];
249
+ index = line.indexOf(':');
250
+
251
+ if (index === -1) {
252
+ // could be empty line, just skip it
253
+ continue;
254
+ }
255
+
256
+ field = line.slice(0, index).toLowerCase();
257
+ val = trim(line.slice(index + 1));
258
+ fields[field] = val;
259
+ }
260
+
261
+ return fields;
262
+ }
263
+ /**
264
+ * Check if `mime` is json or has +json structured syntax suffix.
265
+ *
266
+ * @param {String} mime
267
+ * @return {Boolean}
268
+ * @api private
269
+ */
270
+
271
+
272
+ function isJSON(mime) {
273
+ // should match /json or +json
274
+ // but not /json-seq
275
+ return /[/+]json($|[^-\w])/.test(mime);
276
+ }
277
+ /**
278
+ * Initialize a new `Response` with the given `xhr`.
279
+ *
280
+ * - set flags (.ok, .error, etc)
281
+ * - parse header
282
+ *
283
+ * Examples:
284
+ *
285
+ * Aliasing `superagent` as `request` is nice:
286
+ *
287
+ * request = superagent;
288
+ *
289
+ * We can use the promise-like API, or pass callbacks:
290
+ *
291
+ * request.get('/').end(function(res){});
292
+ * request.get('/', function(res){});
293
+ *
294
+ * Sending data can be chained:
295
+ *
296
+ * request
297
+ * .post('/user')
298
+ * .send({ name: 'tj' })
299
+ * .end(function(res){});
300
+ *
301
+ * Or passed to `.send()`:
302
+ *
303
+ * request
304
+ * .post('/user')
305
+ * .send({ name: 'tj' }, function(res){});
306
+ *
307
+ * Or passed to `.post()`:
308
+ *
309
+ * request
310
+ * .post('/user', { name: 'tj' })
311
+ * .end(function(res){});
312
+ *
313
+ * Or further reduced to a single call for simple cases:
314
+ *
315
+ * request
316
+ * .post('/user', { name: 'tj' }, function(res){});
317
+ *
318
+ * @param {XMLHTTPRequest} xhr
319
+ * @param {Object} options
320
+ * @api private
321
+ */
322
+
323
+
324
+ function Response(req) {
325
+ this.req = req;
326
+ this.xhr = this.req.xhr; // responseText is accessible only if responseType is '' or 'text' and on older browsers
327
+
328
+ this.text = this.req.method !== 'HEAD' && (this.xhr.responseType === '' || this.xhr.responseType === 'text') || typeof this.xhr.responseType === 'undefined' ? this.xhr.responseText : null;
329
+ this.statusText = this.req.xhr.statusText;
330
+ var status = this.xhr.status; // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request
331
+
332
+ if (status === 1223) {
333
+ status = 204;
334
+ }
335
+
336
+ this._setStatusProperties(status);
337
+
338
+ this.headers = parseHeader(this.xhr.getAllResponseHeaders());
339
+ this.header = this.headers; // getAllResponseHeaders sometimes falsely returns "" for CORS requests, but
340
+ // getResponseHeader still works. so we get content-type even if getting
341
+ // other headers fails.
342
+
343
+ this.header['content-type'] = this.xhr.getResponseHeader('content-type');
344
+
345
+ this._setHeaderProperties(this.header);
346
+
347
+ if (this.text === null && req._responseType) {
348
+ this.body = this.xhr.response;
349
+ } else {
350
+ this.body = this.req.method === 'HEAD' ? null : this._parseBody(this.text ? this.text : this.xhr.response);
351
+ }
352
+ } // eslint-disable-next-line new-cap
353
+
354
+
355
+ ResponseBase(Response.prototype);
356
+ /**
357
+ * Parse the given body `str`.
358
+ *
359
+ * Used for auto-parsing of bodies. Parsers
360
+ * are defined on the `superagent.parse` object.
361
+ *
362
+ * @param {String} str
363
+ * @return {Mixed}
364
+ * @api private
365
+ */
366
+
367
+ Response.prototype._parseBody = function (str) {
368
+ var parse = request.parse[this.type];
369
+
370
+ if (this.req._parser) {
371
+ return this.req._parser(this, str);
372
+ }
373
+
374
+ if (!parse && isJSON(this.type)) {
375
+ parse = request.parse['application/json'];
376
+ }
377
+
378
+ return parse && str && (str.length > 0 || str instanceof Object) ? parse(str) : null;
379
+ };
380
+ /**
381
+ * Return an `Error` representative of this response.
382
+ *
383
+ * @return {Error}
384
+ * @api public
385
+ */
386
+
387
+
388
+ Response.prototype.toError = function () {
389
+ var req = this.req;
390
+ var method = req.method;
391
+ var url = req.url;
392
+ var msg = "cannot ".concat(method, " ").concat(url, " (").concat(this.status, ")");
393
+ var err = new Error(msg);
394
+ err.status = this.status;
395
+ err.method = method;
396
+ err.url = url;
397
+ return err;
398
+ };
399
+ /**
400
+ * Expose `Response`.
401
+ */
402
+
403
+
404
+ request.Response = Response;
405
+ /**
406
+ * Initialize a new `Request` with the given `method` and `url`.
407
+ *
408
+ * @param {String} method
409
+ * @param {String} url
410
+ * @api public
411
+ */
412
+
413
+ function Request(method, url) {
414
+ var self = this;
415
+ this._query = this._query || [];
416
+ this.method = method;
417
+ this.url = url;
418
+ this.header = {}; // preserves header name case
419
+
420
+ this._header = {}; // coerces header names to lowercase
421
+
422
+ this.on('end', function () {
423
+ var err = null;
424
+ var res = null;
425
+
426
+ try {
427
+ res = new Response(self);
428
+ } catch (err_) {
429
+ err = new Error('Parser is unable to parse the response');
430
+ err.parse = true;
431
+ err.original = err_; // issue #675: return the raw response if the response parsing fails
432
+
433
+ if (self.xhr) {
434
+ // ie9 doesn't have 'response' property
435
+ err.rawResponse = typeof self.xhr.responseType === 'undefined' ? self.xhr.responseText : self.xhr.response; // issue #876: return the http status code if the response parsing fails
436
+
437
+ err.status = self.xhr.status ? self.xhr.status : null;
438
+ err.statusCode = err.status; // backwards-compat only
439
+ } else {
440
+ err.rawResponse = null;
441
+ err.status = null;
442
+ }
443
+
444
+ return self.callback(err);
445
+ }
446
+
447
+ self.emit('response', res);
448
+ var new_err;
449
+
450
+ try {
451
+ if (!self._isResponseOK(res)) {
452
+ new_err = new Error(res.statusText || res.text || 'Unsuccessful HTTP response');
453
+ }
454
+ } catch (err_) {
455
+ new_err = err_; // ok() callback can throw
456
+ } // #1000 don't catch errors from the callback to avoid double calling it
457
+
458
+
459
+ if (new_err) {
460
+ new_err.original = err;
461
+ new_err.response = res;
462
+ new_err.status = res.status;
463
+ self.callback(new_err, res);
464
+ } else {
465
+ self.callback(null, res);
466
+ }
467
+ });
468
+ }
469
+ /**
470
+ * Mixin `Emitter` and `RequestBase`.
471
+ */
472
+ // eslint-disable-next-line new-cap
473
+
474
+
475
+ Emitter(Request.prototype); // eslint-disable-next-line new-cap
476
+
477
+ RequestBase(Request.prototype);
478
+ /**
479
+ * Set Content-Type to `type`, mapping values from `request.types`.
480
+ *
481
+ * Examples:
482
+ *
483
+ * superagent.types.xml = 'application/xml';
484
+ *
485
+ * request.post('/')
486
+ * .type('xml')
487
+ * .send(xmlstring)
488
+ * .end(callback);
489
+ *
490
+ * request.post('/')
491
+ * .type('application/xml')
492
+ * .send(xmlstring)
493
+ * .end(callback);
494
+ *
495
+ * @param {String} type
496
+ * @return {Request} for chaining
497
+ * @api public
498
+ */
499
+
500
+ Request.prototype.type = function (type) {
501
+ this.set('Content-Type', request.types[type] || type);
502
+ return this;
503
+ };
504
+ /**
505
+ * Set Accept to `type`, mapping values from `request.types`.
506
+ *
507
+ * Examples:
508
+ *
509
+ * superagent.types.json = 'application/json';
510
+ *
511
+ * request.get('/agent')
512
+ * .accept('json')
513
+ * .end(callback);
514
+ *
515
+ * request.get('/agent')
516
+ * .accept('application/json')
517
+ * .end(callback);
518
+ *
519
+ * @param {String} accept
520
+ * @return {Request} for chaining
521
+ * @api public
522
+ */
523
+
524
+
525
+ Request.prototype.accept = function (type) {
526
+ this.set('Accept', request.types[type] || type);
527
+ return this;
528
+ };
529
+ /**
530
+ * Set Authorization field value with `user` and `pass`.
531
+ *
532
+ * @param {String} user
533
+ * @param {String} [pass] optional in case of using 'bearer' as type
534
+ * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')
535
+ * @return {Request} for chaining
536
+ * @api public
537
+ */
538
+
539
+
540
+ Request.prototype.auth = function (user, pass, options) {
541
+ if (arguments.length === 1) pass = '';
542
+
543
+ if (_typeof(pass) === 'object' && pass !== null) {
544
+ // pass is optional and can be replaced with options
545
+ options = pass;
546
+ pass = '';
547
+ }
548
+
549
+ if (!options) {
550
+ options = {
551
+ type: typeof btoa === 'function' ? 'basic' : 'auto'
552
+ };
553
+ }
554
+
555
+ var encoder = function encoder(string) {
556
+ if (typeof btoa === 'function') {
557
+ return btoa(string);
558
+ }
559
+
560
+ throw new Error('Cannot use basic auth, btoa is not a function');
561
+ };
562
+
563
+ return this._auth(user, pass, options, encoder);
564
+ };
565
+ /**
566
+ * Add query-string `val`.
567
+ *
568
+ * Examples:
569
+ *
570
+ * request.get('/shoes')
571
+ * .query('size=10')
572
+ * .query({ color: 'blue' })
573
+ *
574
+ * @param {Object|String} val
575
+ * @return {Request} for chaining
576
+ * @api public
577
+ */
578
+
579
+
580
+ Request.prototype.query = function (val) {
581
+ if (typeof val !== 'string') val = serialize(val);
582
+ if (val) this._query.push(val);
583
+ return this;
584
+ };
585
+ /**
586
+ * Queue the given `file` as an attachment to the specified `field`,
587
+ * with optional `options` (or filename).
588
+ *
589
+ * ``` js
590
+ * request.post('/upload')
591
+ * .attach('content', new Blob(['<a id="a"><b id="b">hey!</b></a>'], { type: "text/html"}))
592
+ * .end(callback);
593
+ * ```
594
+ *
595
+ * @param {String} field
596
+ * @param {Blob|File} file
597
+ * @param {String|Object} options
598
+ * @return {Request} for chaining
599
+ * @api public
600
+ */
601
+
602
+
603
+ Request.prototype.attach = function (field, file, options) {
604
+ if (file) {
605
+ if (this._data) {
606
+ throw new Error("superagent can't mix .send() and .attach()");
607
+ }
608
+
609
+ this._getFormData().append(field, file, options || file.name);
610
+ }
611
+
612
+ return this;
613
+ };
614
+
615
+ Request.prototype._getFormData = function () {
616
+ if (!this._formData) {
617
+ this._formData = new root.FormData();
618
+ }
619
+
620
+ return this._formData;
621
+ };
622
+ /**
623
+ * Invoke the callback with `err` and `res`
624
+ * and handle arity check.
625
+ *
626
+ * @param {Error} err
627
+ * @param {Response} res
628
+ * @api private
629
+ */
630
+
631
+
632
+ Request.prototype.callback = function (err, res) {
633
+ if (this._shouldRetry(err, res)) {
634
+ return this._retry();
635
+ }
636
+
637
+ var fn = this._callback;
638
+ this.clearTimeout();
639
+
640
+ if (err) {
641
+ if (this._maxRetries) err.retries = this._retries - 1;
642
+ this.emit('error', err);
643
+ }
644
+
645
+ fn(err, res);
646
+ };
647
+ /**
648
+ * Invoke callback with x-domain error.
649
+ *
650
+ * @api private
651
+ */
652
+
653
+
654
+ Request.prototype.crossDomainError = function () {
655
+ var err = new Error('Request has been terminated\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.');
656
+ err.crossDomain = true;
657
+ err.status = this.status;
658
+ err.method = this.method;
659
+ err.url = this.url;
660
+ this.callback(err);
661
+ }; // This only warns, because the request is still likely to work
662
+
663
+
664
+ Request.prototype.agent = function () {
665
+ console.warn('This is not supported in browser version of superagent');
666
+ return this;
667
+ };
668
+
669
+ Request.prototype.ca = Request.prototype.agent;
670
+ Request.prototype.buffer = Request.prototype.ca; // This throws, because it can't send/receive data as expected
671
+
672
+ Request.prototype.write = function () {
673
+ throw new Error('Streaming is not supported in browser version of superagent');
674
+ };
675
+
676
+ Request.prototype.pipe = Request.prototype.write;
677
+ /**
678
+ * Check if `obj` is a host object,
679
+ * we don't want to serialize these :)
680
+ *
681
+ * @param {Object} obj host object
682
+ * @return {Boolean} is a host object
683
+ * @api private
684
+ */
685
+
686
+ Request.prototype._isHost = function (obj) {
687
+ // Native objects stringify to [object File], [object Blob], [object FormData], etc.
688
+ return obj && _typeof(obj) === 'object' && !Array.isArray(obj) && Object.prototype.toString.call(obj) !== '[object Object]';
689
+ };
690
+ /**
691
+ * Initiate request, invoking callback `fn(res)`
692
+ * with an instanceof `Response`.
693
+ *
694
+ * @param {Function} fn
695
+ * @return {Request} for chaining
696
+ * @api public
697
+ */
698
+
699
+
700
+ Request.prototype.end = function (fn) {
701
+ if (this._endCalled) {
702
+ console.warn('Warning: .end() was called twice. This is not supported in superagent');
703
+ }
704
+
705
+ this._endCalled = true; // store callback
706
+
707
+ this._callback = fn || noop; // querystring
708
+
709
+ this._finalizeQueryString();
710
+
711
+ this._end();
712
+ };
713
+
714
+ Request.prototype._setUploadTimeout = function () {
715
+ var self = this; // upload timeout it's wokrs only if deadline timeout is off
716
+
717
+ if (this._uploadTimeout && !this._uploadTimeoutTimer) {
718
+ this._uploadTimeoutTimer = setTimeout(function () {
719
+ self._timeoutError('Upload timeout of ', self._uploadTimeout, 'ETIMEDOUT');
720
+ }, this._uploadTimeout);
721
+ }
722
+ }; // eslint-disable-next-line complexity
723
+
724
+
725
+ Request.prototype._end = function () {
726
+ if (this._aborted) return this.callback(new Error('The request has been aborted even before .end() was called'));
727
+ var self = this;
728
+ this.xhr = request.getXHR();
729
+ var xhr = this.xhr;
730
+ var data = this._formData || this._data;
731
+
732
+ this._setTimeouts(); // state change
733
+
734
+
735
+ xhr.onreadystatechange = function () {
736
+ var readyState = xhr.readyState;
737
+
738
+ if (readyState >= 2 && self._responseTimeoutTimer) {
739
+ clearTimeout(self._responseTimeoutTimer);
740
+ }
741
+
742
+ if (readyState !== 4) {
743
+ return;
744
+ } // In IE9, reads to any property (e.g. status) off of an aborted XHR will
745
+ // result in the error "Could not complete the operation due to error c00c023f"
746
+
747
+
748
+ var status;
749
+
750
+ try {
751
+ status = xhr.status;
752
+ } catch (_unused5) {
753
+ status = 0;
754
+ }
755
+
756
+ if (!status) {
757
+ if (self.timedout || self._aborted) return;
758
+ return self.crossDomainError();
759
+ }
760
+
761
+ self.emit('end');
762
+ }; // progress
763
+
764
+
765
+ var handleProgress = function handleProgress(direction, e) {
766
+ if (e.total > 0) {
767
+ e.percent = e.loaded / e.total * 100;
768
+
769
+ if (e.percent === 100) {
770
+ clearTimeout(self._uploadTimeoutTimer);
771
+ }
772
+ }
773
+
774
+ e.direction = direction;
775
+ self.emit('progress', e);
776
+ };
777
+
778
+ if (this.hasListeners('progress')) {
779
+ try {
780
+ xhr.addEventListener('progress', handleProgress.bind(null, 'download'));
781
+
782
+ if (xhr.upload) {
783
+ xhr.upload.addEventListener('progress', handleProgress.bind(null, 'upload'));
784
+ }
785
+ } catch (_unused6) {// Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.
786
+ // Reported here:
787
+ // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context
788
+ }
789
+ }
790
+
791
+ if (xhr.upload) {
792
+ this._setUploadTimeout();
793
+ } // initiate request
794
+
795
+
796
+ try {
797
+ if (this.username && this.password) {
798
+ xhr.open(this.method, this.url, true, this.username, this.password);
799
+ } else {
800
+ xhr.open(this.method, this.url, true);
801
+ }
802
+ } catch (err) {
803
+ // see #1149
804
+ return this.callback(err);
805
+ } // CORS
806
+
807
+
808
+ if (this._withCredentials) xhr.withCredentials = true; // body
809
+
810
+ if (!this._formData && this.method !== 'GET' && this.method !== 'HEAD' && typeof data !== 'string' && !this._isHost(data)) {
811
+ // serialize stuff
812
+ var contentType = this._header['content-type'];
813
+
814
+ var _serialize = this._serializer || request.serialize[contentType ? contentType.split(';')[0] : ''];
815
+
816
+ if (!_serialize && isJSON(contentType)) {
817
+ _serialize = request.serialize['application/json'];
818
+ }
819
+
820
+ if (_serialize) data = _serialize(data);
821
+ } // set header fields
822
+
823
+
824
+ for (var field in this.header) {
825
+ if (this.header[field] === null) continue;
826
+ if (Object.prototype.hasOwnProperty.call(this.header, field)) xhr.setRequestHeader(field, this.header[field]);
827
+ }
828
+
829
+ if (this._responseType) {
830
+ xhr.responseType = this._responseType;
831
+ } // send stuff
832
+
833
+
834
+ this.emit('request', this); // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)
835
+ // We need null here if data is undefined
836
+
837
+ xhr.send(typeof data === 'undefined' ? null : data);
838
+ };
839
+
840
+ request.agent = function () {
841
+ return new Agent();
842
+ };
843
+
844
+ ['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE'].forEach(function (method) {
845
+ Agent.prototype[method.toLowerCase()] = function (url, fn) {
846
+ var req = new request.Request(method, url);
847
+
848
+ this._setDefaults(req);
849
+
850
+ if (fn) {
851
+ req.end(fn);
852
+ }
853
+
854
+ return req;
855
+ };
856
+ });
857
+ Agent.prototype.del = Agent.prototype.delete;
858
+ /**
859
+ * GET `url` with optional callback `fn(res)`.
860
+ *
861
+ * @param {String} url
862
+ * @param {Mixed|Function} [data] or fn
863
+ * @param {Function} [fn]
864
+ * @return {Request}
865
+ * @api public
866
+ */
867
+
868
+ request.get = function (url, data, fn) {
869
+ var req = request('GET', url);
870
+
871
+ if (typeof data === 'function') {
872
+ fn = data;
873
+ data = null;
874
+ }
875
+
876
+ if (data) req.query(data);
877
+ if (fn) req.end(fn);
878
+ return req;
879
+ };
880
+ /**
881
+ * HEAD `url` with optional callback `fn(res)`.
882
+ *
883
+ * @param {String} url
884
+ * @param {Mixed|Function} [data] or fn
885
+ * @param {Function} [fn]
886
+ * @return {Request}
887
+ * @api public
888
+ */
889
+
890
+
891
+ request.head = function (url, data, fn) {
892
+ var req = request('HEAD', url);
893
+
894
+ if (typeof data === 'function') {
895
+ fn = data;
896
+ data = null;
897
+ }
898
+
899
+ if (data) req.query(data);
900
+ if (fn) req.end(fn);
901
+ return req;
902
+ };
903
+ /**
904
+ * OPTIONS query to `url` with optional callback `fn(res)`.
905
+ *
906
+ * @param {String} url
907
+ * @param {Mixed|Function} [data] or fn
908
+ * @param {Function} [fn]
909
+ * @return {Request}
910
+ * @api public
911
+ */
912
+
913
+
914
+ request.options = function (url, data, fn) {
915
+ var req = request('OPTIONS', url);
916
+
917
+ if (typeof data === 'function') {
918
+ fn = data;
919
+ data = null;
920
+ }
921
+
922
+ if (data) req.send(data);
923
+ if (fn) req.end(fn);
924
+ return req;
925
+ };
926
+ /**
927
+ * DELETE `url` with optional `data` and callback `fn(res)`.
928
+ *
929
+ * @param {String} url
930
+ * @param {Mixed} [data]
931
+ * @param {Function} [fn]
932
+ * @return {Request}
933
+ * @api public
934
+ */
935
+
936
+
937
+ function del(url, data, fn) {
938
+ var req = request('DELETE', url);
939
+
940
+ if (typeof data === 'function') {
941
+ fn = data;
942
+ data = null;
943
+ }
944
+
945
+ if (data) req.send(data);
946
+ if (fn) req.end(fn);
947
+ return req;
948
+ }
949
+
950
+ request.del = del;
951
+ request.delete = del;
952
+ /**
953
+ * PATCH `url` with optional `data` and callback `fn(res)`.
954
+ *
955
+ * @param {String} url
956
+ * @param {Mixed} [data]
957
+ * @param {Function} [fn]
958
+ * @return {Request}
959
+ * @api public
960
+ */
961
+
962
+ request.patch = function (url, data, fn) {
963
+ var req = request('PATCH', url);
964
+
965
+ if (typeof data === 'function') {
966
+ fn = data;
967
+ data = null;
968
+ }
969
+
970
+ if (data) req.send(data);
971
+ if (fn) req.end(fn);
972
+ return req;
973
+ };
974
+ /**
975
+ * POST `url` with optional `data` and callback `fn(res)`.
976
+ *
977
+ * @param {String} url
978
+ * @param {Mixed} [data]
979
+ * @param {Function} [fn]
980
+ * @return {Request}
981
+ * @api public
982
+ */
983
+
984
+
985
+ request.post = function (url, data, fn) {
986
+ var req = request('POST', url);
987
+
988
+ if (typeof data === 'function') {
989
+ fn = data;
990
+ data = null;
991
+ }
992
+
993
+ if (data) req.send(data);
994
+ if (fn) req.end(fn);
995
+ return req;
996
+ };
997
+ /**
998
+ * PUT `url` with optional `data` and callback `fn(res)`.
999
+ *
1000
+ * @param {String} url
1001
+ * @param {Mixed|Function} [data] or fn
1002
+ * @param {Function} [fn]
1003
+ * @return {Request}
1004
+ * @api public
1005
+ */
1006
+
1007
+
1008
+ request.put = function (url, data, fn) {
1009
+ var req = request('PUT', url);
1010
+
1011
+ if (typeof data === 'function') {
1012
+ fn = data;
1013
+ data = null;
1014
+ }
1015
+
1016
+ if (data) req.send(data);
1017
+ if (fn) req.end(fn);
1018
+ return req;
1019
+ };
1020
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jbGllbnQuanMiXSwibmFtZXMiOlsicm9vdCIsIndpbmRvdyIsInNlbGYiLCJjb25zb2xlIiwid2FybiIsIkVtaXR0ZXIiLCJyZXF1aXJlIiwic2FmZVN0cmluZ2lmeSIsIlJlcXVlc3RCYXNlIiwiaXNPYmplY3QiLCJSZXNwb25zZUJhc2UiLCJBZ2VudCIsIm5vb3AiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0aG9kIiwidXJsIiwiUmVxdWVzdCIsImVuZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInJlcXVlc3QiLCJnZXRYSFIiLCJYTUxIdHRwUmVxdWVzdCIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJBY3RpdmVYT2JqZWN0IiwiRXJyb3IiLCJ0cmltIiwicyIsInJlcGxhY2UiLCJzZXJpYWxpemUiLCJvYmoiLCJwYWlycyIsImtleSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyIiwiam9pbiIsInZhbCIsInVuZGVmaW5lZCIsInB1c2giLCJlbmNvZGVVUkkiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwidiIsInN1YmtleSIsImVuY29kZVVSSUNvbXBvbmVudCIsInNlcmlhbGl6ZU9iamVjdCIsInBhcnNlU3RyaW5nIiwic3RyIiwic3BsaXQiLCJwYWlyIiwicG9zIiwiaSIsImxlbiIsImluZGV4T2YiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzbGljZSIsInR5cGVzIiwiaHRtbCIsImpzb24iLCJ4bWwiLCJ1cmxlbmNvZGVkIiwiZm9ybSIsInBhcnNlIiwiSlNPTiIsInBhcnNlSGVhZGVyIiwibGluZXMiLCJmaWVsZHMiLCJpbmRleCIsImxpbmUiLCJmaWVsZCIsInRvTG93ZXJDYXNlIiwiaXNKU09OIiwibWltZSIsInRlc3QiLCJSZXNwb25zZSIsInJlcSIsInhociIsInRleHQiLCJyZXNwb25zZVR5cGUiLCJyZXNwb25zZVRleHQiLCJzdGF0dXNUZXh0Iiwic3RhdHVzIiwiX3NldFN0YXR1c1Byb3BlcnRpZXMiLCJoZWFkZXJzIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwiaGVhZGVyIiwiZ2V0UmVzcG9uc2VIZWFkZXIiLCJfc2V0SGVhZGVyUHJvcGVydGllcyIsIl9yZXNwb25zZVR5cGUiLCJib2R5IiwicmVzcG9uc2UiLCJfcGFyc2VCb2R5IiwidHlwZSIsIl9wYXJzZXIiLCJ0b0Vycm9yIiwibXNnIiwiZXJyIiwiX3F1ZXJ5IiwiX2hlYWRlciIsIm9uIiwicmVzIiwiZXJyXyIsIm9yaWdpbmFsIiwicmF3UmVzcG9uc2UiLCJzdGF0dXNDb2RlIiwiY2FsbGJhY2siLCJlbWl0IiwibmV3X2VyciIsIl9pc1Jlc3BvbnNlT0siLCJzZXQiLCJhY2NlcHQiLCJhdXRoIiwidXNlciIsInBhc3MiLCJvcHRpb25zIiwiYnRvYSIsImVuY29kZXIiLCJzdHJpbmciLCJfYXV0aCIsInF1ZXJ5IiwiYXR0YWNoIiwiZmlsZSIsIl9kYXRhIiwiX2dldEZvcm1EYXRhIiwiYXBwZW5kIiwibmFtZSIsIl9mb3JtRGF0YSIsIkZvcm1EYXRhIiwiX3Nob3VsZFJldHJ5IiwiX3JldHJ5IiwiZm4iLCJfY2FsbGJhY2siLCJjbGVhclRpbWVvdXQiLCJfbWF4UmV0cmllcyIsInJldHJpZXMiLCJfcmV0cmllcyIsImNyb3NzRG9tYWluRXJyb3IiLCJjcm9zc0RvbWFpbiIsImFnZW50IiwiY2EiLCJidWZmZXIiLCJ3cml0ZSIsInBpcGUiLCJfaXNIb3N0IiwidG9TdHJpbmciLCJfZW5kQ2FsbGVkIiwiX2ZpbmFsaXplUXVlcnlTdHJpbmciLCJfZW5kIiwiX3NldFVwbG9hZFRpbWVvdXQiLCJfdXBsb2FkVGltZW91dCIsIl91cGxvYWRUaW1lb3V0VGltZXIiLCJzZXRUaW1lb3V0IiwiX3RpbWVvdXRFcnJvciIsIl9hYm9ydGVkIiwiZGF0YSIsIl9zZXRUaW1lb3V0cyIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlYWR5U3RhdGUiLCJfcmVzcG9uc2VUaW1lb3V0VGltZXIiLCJ0aW1lZG91dCIsImhhbmRsZVByb2dyZXNzIiwiZGlyZWN0aW9uIiwiZSIsInRvdGFsIiwicGVyY2VudCIsImxvYWRlZCIsImhhc0xpc3RlbmVycyIsImFkZEV2ZW50TGlzdGVuZXIiLCJiaW5kIiwidXBsb2FkIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIm9wZW4iLCJfd2l0aENyZWRlbnRpYWxzIiwid2l0aENyZWRlbnRpYWxzIiwiY29udGVudFR5cGUiLCJfc2VyaWFsaXplciIsInNldFJlcXVlc3RIZWFkZXIiLCJzZW5kIiwiX3NldERlZmF1bHRzIiwiZGVsIiwiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsInBhdGNoIiwicG9zdCIsInB1dCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7QUFJQSxJQUFJQSxJQUFKOztBQUNBLElBQUksT0FBT0MsTUFBUCxLQUFrQixXQUF0QixFQUFtQztBQUNqQztBQUNBRCxFQUFBQSxJQUFJLEdBQUdDLE1BQVA7QUFDRCxDQUhELE1BR08sSUFBSSxPQUFPQyxJQUFQLEtBQWdCLFdBQXBCLEVBQWlDO0FBQ3RDO0FBQ0FDLEVBQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUNFLHFFQURGO0FBR0FKLEVBQUFBLElBQUksU0FBSjtBQUNELENBTk0sTUFNQTtBQUNMO0FBQ0FBLEVBQUFBLElBQUksR0FBR0UsSUFBUDtBQUNEOztBQUVELElBQU1HLE9BQU8sR0FBR0MsT0FBTyxDQUFDLG1CQUFELENBQXZCOztBQUNBLElBQU1DLGFBQWEsR0FBR0QsT0FBTyxDQUFDLHFCQUFELENBQTdCOztBQUNBLElBQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGdCQUFELENBQTNCOztBQUNBLElBQU1HLFFBQVEsR0FBR0gsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsSUFBTUksWUFBWSxHQUFHSixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7O0FBQ0EsSUFBTUssS0FBSyxHQUFHTCxPQUFPLENBQUMsY0FBRCxDQUFyQjtBQUVBOzs7OztBQUlBLFNBQVNNLElBQVQsR0FBZ0IsQ0FBRTtBQUVsQjs7Ozs7QUFJ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cmVuY2UgZm9yIGlmcmFtZXMuXG4gKi9cblxubGV0IHJvb3Q7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgLy8gQnJvd3NlciB3aW5kb3dcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIHNlbGYgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIE90aGVyIGVudmlyb25tZW50c1xuICBjb25zb2xlLndhcm4oXG4gICAgJ1VzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnQnXG4gICk7XG4gIHJvb3QgPSB0aGlzO1xufSBlbHNlIHtcbiAgLy8gV2ViIFdvcmtlclxuICByb290ID0gc2VsZjtcbn1cblxuY29uc3QgRW1pdHRlciA9IHJlcXVpcmUoJ2NvbXBvbmVudC1lbWl0dGVyJyk7XG5jb25zdCBzYWZlU3RyaW5naWZ5ID0gcmVxdWlyZSgnZmFzdC1zYWZlLXN0cmluZ2lmeScpO1xuY29uc3QgUmVxdWVzdEJhc2UgPSByZXF1aXJlKCcuL3JlcXVlc3QtYmFzZScpO1xuY29uc3QgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzLW9iamVjdCcpO1xuY29uc3QgUmVzcG9uc2VCYXNlID0gcmVxdWlyZSgnLi9yZXNwb25zZS1iYXNlJyk7XG5jb25zdCBBZ2VudCA9IHJlcXVpcmUoJy4vYWdlbnQtYmFzZScpO1xuXG4vKipcbiAqIE5vb3AuXG4gKi9cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbi8qKlxuICogRXhwb3NlIGByZXF1ZXN0YC5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1ldGhvZCwgdXJsKSB7XG4gIC8vIGNhbGxiYWNrXG4gIGlmICh0eXBlb2YgdXJsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBleHBvcnRzLlJlcXVlc3QoJ0dFVCcsIG1ldGhvZCkuZW5kKHVybCk7XG4gIH1cblxuICAvLyB1cmwgZmlyc3RcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gbmV3IGV4cG9ydHMuUmVxdWVzdCgnR0VUJywgbWV0aG9kKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgZXhwb3J0cy5SZXF1ZXN0KG1ldGhvZCwgdXJsKTtcbn07XG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cztcblxuY29uc3QgcmVxdWVzdCA9IGV4cG9ydHM7XG5cbmV4cG9ydHMuUmVxdWVzdCA9IFJlcXVlc3Q7XG5cbi8qKlxuICogRGV0ZXJtaW5lIFhIUi5cbiAqL1xuXG5yZXF1ZXN0LmdldFhIUiA9ICgpID0+IHtcbiAgaWYgKFxuICAgIHJvb3QuWE1MSHR0cFJlcXVlc3QgJiZcbiAgICAoIXJvb3QubG9jYXRpb24gfHxcbiAgICAgIHJvb3QubG9jYXRpb24ucHJvdG9jb2wgIT09ICdmaWxlOicgfHxcbiAgICAgICFyb290LkFjdGl2ZVhPYmplY3QpXG4gICkge1xuICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpO1xuICB9IGNhdGNoIHt9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjYuMCcpO1xuICB9IGNhdGNoIHt9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjMuMCcpO1xuICB9IGNhdGNoIHt9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQJyk7XG4gIH0gY2F0Y2gge31cblxuICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgY291bGQgbm90IGZpbmQgWEhSJyk7XG59O1xuXG4vKipcbiAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYWRkZWQgdG8gc3VwcG9ydCBJRS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc1xuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuY29uc3QgdHJpbSA9ICcnLnRyaW0gPyBzID0+IHMudHJpbSgpIDogcyA9PiBzLnJlcGxhY2UoLyheXFxzKnxcXHMqJCkvZywgJycpO1xuXG4vKipcbiAqIFNlcmlhbGl6ZSB0aGUgZ2l2ZW4gYG9iamAuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICogQHJldHVybiB7U3RyaW5nfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gc2VyaWFsaXplKG9iaikge1xuICBpZiAoIWlzT2JqZWN0KG9iaikpIHJldHVybiBvYmo7XG4gIGNvbnN0IHBhaXJzID0gW107XG4gIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKVxuICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGtleSwgb2JqW2tleV0pO1xuICB9XG5cbiAgcmV0dXJuIHBhaXJzLmpvaW4oJyYnKTtcbn1cblxuLyoqXG4gKiBIZWxwcyAnc2VyaWFsaXplJyB3aXRoIHNlcmlhbGl6aW5nIGFycmF5cy5cbiAqIE11dGF0ZXMgdGhlIHBhaXJzIGFycmF5LlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqL1xuXG5mdW5jdGlvbiBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2YWwpIHtcbiAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIGlmICh2YWwgPT09IG51bGwpIHtcbiAgICBwYWlycy5wdXNoKGVuY29kZVVSSShrZXkpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgdmFsLmZvckVhY2godiA9PiB7XG4gICAgICBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihwYWlycywga2V5LCB2KTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgZm9yIChjb25zdCBzdWJrZXkgaW4gdmFsKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwgc3Via2V5KSlcbiAgICAgICAgcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIocGFpcnMsIGAke2tleX1bJHtzdWJrZXl9XWAsIHZhbFtzdWJrZXldKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcGFpcnMucHVzaChlbmNvZGVVUkkoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpKTtcbiAgfVxufVxuXG4vKipcbiAqIEV4cG9zZSBzZXJpYWxpemF0aW9uIG1ldGhvZC5cbiAqL1xuXG5yZXF1ZXN0LnNlcmlhbGl6ZU9iamVjdCA9IHNlcmlhbGl6ZTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4geC13d3ctZm9ybS11cmxlbmNvZGVkIGBzdHJgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nKHN0cikge1xuICBjb25zdCBvYmogPSB7fTtcbiAgY29uc3QgcGFpcnMgPSBzdHIuc3BsaXQoJyYnKTtcbiAgbGV0IHBhaXI7XG4gIGxldCBwb3M7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhaXJzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgcGFpciA9IHBhaXJzW2ldO1xuICAgIHBvcyA9IHBhaXIuaW5kZXhPZignPScpO1xuICAgIGlmIChwb3MgPT09IC0xKSB7XG4gICAgICBvYmpbZGVjb2RlVVJJQ29tcG9uZW50KHBhaXIpXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpbZGVjb2RlVVJJQ29tcG9uZW50KHBhaXIuc2xpY2UoMCwgcG9zKSldID0gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICBwYWlyLnNsaWNlKHBvcyArIDEpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogRXhwb3NlIHBhcnNlci5cbiAqL1xuXG5yZXF1ZXN0LnBhcnNlU3RyaW5nID0gcGFyc2VTdHJpbmc7XG5cbi8qKlxuICogRGVmYXVsdCBNSU1FIHR5cGUgbWFwLlxuICpcbiAqICAgICBzdXBlcmFnZW50LnR5cGVzLnhtbCA9ICdhcHBsaWNhdGlvbi94bWwnO1xuICpcbiAqL1xuXG5yZXF1ZXN0LnR5cGVzID0ge1xuICBodG1sOiAndGV4dC9odG1sJyxcbiAganNvbjogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICB4bWw6ICd0ZXh0L3htbCcsXG4gIHVybGVuY29kZWQ6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICBmb3JtOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgJ2Zvcm0tZGF0YSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG59O1xuXG4vKipcbiAqIERlZmF1bHQgc2VyaWFsaXphdGlvbiBtYXAuXG4gKlxuICogICAgIHN1cGVyYWdlbnQuc2VyaWFsaXplWydhcHBsaWNhdGlvbi94bWwnXSA9IGZ1bmN0aW9uKG9iail7XG4gKiAgICAgICByZXR1cm4gJ2dlbmVyYXRlZCB4bWwgaGVyZSc7XG4gKiAgICAgfTtcbiAqXG4gKi9cblxucmVxdWVzdC5zZXJpYWxpemUgPSB7XG4gICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOiBzZXJpYWxpemUsXG4gICdhcHBsaWNhdGlvbi9qc29uJzogc2FmZVN0cmluZ2lmeVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IHBhcnNlcnMuXG4gKlxuICogICAgIHN1cGVyYWdlbnQucGFyc2VbJ2FwcGxpY2F0aW9uL3htbCddID0gZnVuY3Rpb24oc3RyKXtcbiAqICAgICAgIHJldHVybiB7IG9iamVjdCBwYXJzZWQgZnJvbSBzdHIgfTtcbiAqICAgICB9O1xuICpcbiAqL1xuXG5yZXF1ZXN0LnBhcnNlID0ge1xuICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzogcGFyc2VTdHJpbmcsXG4gICdhcHBsaWNhdGlvbi9qc29uJzogSlNPTi5wYXJzZVxufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gaGVhZGVyIGBzdHJgIGludG9cbiAqIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBtYXBwZWQgZmllbGRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHJcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVyKHN0cikge1xuICBjb25zdCBsaW5lcyA9IHN0ci5zcGxpdCgvXFxyP1xcbi8pO1xuICBjb25zdCBmaWVsZHMgPSB7fTtcbiAgbGV0IGluZGV4O1xuICBsZXQgbGluZTtcbiAgbGV0IGZpZWxkO1xuICBsZXQgdmFsO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBsaW5lcy5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICAgIGxpbmUgPSBsaW5lc1tpXTtcbiAgICBpbmRleCA9IGxpbmUuaW5kZXhPZignOicpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIC8vIGNvdWxkIGJlIGVtcHR5IGxpbmUsIGp1c3Qgc2tpcCBpdFxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZmllbGQgPSBsaW5lLnNsaWNlKDAsIGluZGV4KS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhbCA9IHRyaW0obGluZS5zbGljZShpbmRleCArIDEpKTtcbiAgICBmaWVsZHNbZmllbGRdID0gdmFsO1xuICB9XG5cbiAgcmV0dXJuIGZpZWxkcztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgbWltZWAgaXMganNvbiBvciBoYXMgK2pzb24gc3RydWN0dXJlZCBzeW50YXggc3VmZml4LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtaW1lXG4gKiBAcmV0dXJuIHtCb29sZWFufVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gaXNKU09OKG1pbWUpIHtcbiAgLy8gc2hvdWxkIG1hdGNoIC9qc29uIG9yICtqc29uXG4gIC8vIGJ1dCBub3QgL2pzb24tc2VxXG4gIHJldHVybiAvWy8rXWpzb24oJHxbXi1cXHddKS8udGVzdChtaW1lKTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBSZXNwb25zZWAgd2l0aCB0aGUgZ2l2ZW4gYHhocmAuXG4gKlxuICogIC0gc2V0IGZsYWdzICgub2ssIC5lcnJvciwgZXRjKVxuICogIC0gcGFyc2UgaGVhZGVyXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogIEFsaWFzaW5nIGBzdXBlcmFnZW50YCBhcyBgcmVxdWVzdGAgaXMgbmljZTpcbiAqXG4gKiAgICAgIHJlcXVlc3QgPSBzdXBlcmFnZW50O1xuICpcbiAqICBXZSBjYW4gdXNlIHRoZSBwcm9taXNlLWxpa2UgQVBJLCBvciBwYXNzIGNhbGxiYWNrczpcbiAqXG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvJykuZW5kKGZ1bmN0aW9uKHJlcyl7fSk7XG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvJywgZnVuY3Rpb24ocmVzKXt9KTtcbiAqXG4gKiAgU2VuZGluZyBkYXRhIGNhbiBiZSBjaGFpbmVkOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0pXG4gKiAgICAgICAgLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqICBPciBwYXNzZWQgdG8gYC5zZW5kKClgOlxuICpcbiAqICAgICAgcmVxdWVzdFxuICogICAgICAgIC5wb3N0KCcvdXNlcicpXG4gKiAgICAgICAgLnNlbmQoeyBuYW1lOiAndGonIH0sIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogIE9yIHBhc3NlZCB0byBgLnBvc3QoKWA6XG4gKlxuICogICAgICByZXF1ZXN0XG4gKiAgICAgICAgLnBvc3QoJy91c2VyJywgeyBuYW1lOiAndGonIH0pXG4gKiAgICAgICAgLmVuZChmdW5jdGlvbihyZXMpe30pO1xuICpcbiAqIE9yIGZ1cnRoZXIgcmVkdWNlZCB0byBhIHNpbmdsZSBjYWxsIGZvciBzaW1wbGUgY2FzZXM6XG4gKlxuICogICAgICByZXF1ZXN0XG4gKiAgICAgICAgLnBvc3QoJy91c2VyJywgeyBuYW1lOiAndGonIH0sIGZ1bmN0aW9uKHJlcyl7fSk7XG4gKlxuICogQHBhcmFtIHtYTUxIVFRQUmVxdWVzdH0geGhyXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gUmVzcG9uc2UocmVxKSB7XG4gIHRoaXMucmVxID0gcmVxO1xuICB0aGlzLnhociA9IHRoaXMucmVxLnhocjtcbiAgLy8gcmVzcG9uc2VUZXh0IGlzIGFjY2Vzc2libGUgb25seSBpZiByZXNwb25zZVR5cGUgaXMgJycgb3IgJ3RleHQnIGFuZCBvbiBvbGRlciBicm93c2Vyc1xuICB0aGlzLnRleHQgPVxuICAgICh0aGlzLnJlcS5tZXRob2QgIT09ICdIRUFEJyAmJlxuICAgICAgKHRoaXMueGhyLnJlc3BvbnNlVHlwZSA9PT0gJycgfHwgdGhpcy54aHIucmVzcG9uc2VUeXBlID09PSAndGV4dCcpKSB8fFxuICAgIHR5cGVvZiB0aGlzLnhoci5yZXNwb25zZVR5cGUgPT09ICd1bmRlZmluZWQnXG4gICAgICA/IHRoaXMueGhyLnJlc3BvbnNlVGV4dFxuICAgICAgOiBudWxsO1xuICB0aGlzLnN0YXR1c1RleHQgPSB0aGlzLnJlcS54aHIuc3RhdHVzVGV4dDtcbiAgbGV0IHsgc3RhdHVzIH0gPSB0aGlzLnhocjtcbiAgLy8gaGFuZGxlIElFOSBidWc6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTAwNDY5NzIvbXNpZS1yZXR1cm5zLXN0YXR1cy1jb2RlLW9mLTEyMjMtZm9yLWFqYXgtcmVxdWVzdFxuICBpZiAoc3RhdHVzID09PSAxMjIzKSB7XG4gICAgc3RhdHVzID0gMjA0O1xuICB9XG5cbiAgdGhpcy5fc2V0U3RhdHVzUHJvcGVydGllcyhzdGF0dXMpO1xuICB0aGlzLmhlYWRlcnMgPSBwYXJzZUhlYWRlcih0aGlzLnhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk7XG4gIHRoaXMuaGVhZGVyID0gdGhpcy5oZWFkZXJzO1xuICAvLyBnZXRBbGxSZXNwb25zZUhlYWRlcnMgc29tZXRpbWVzIGZhbHNlbHkgcmV0dXJucyBcIlwiIGZvciBDT1JTIHJlcXVlc3RzLCBidXRcbiAgLy8gZ2V0UmVzcG9uc2VIZWFkZXIgc3RpbGwgd29ya3MuIHNvIHdlIGdldCBjb250ZW50LXR5cGUgZXZlbiBpZiBnZXR0aW5nXG4gIC8vIG90aGVyIGhlYWRlcnMgZmFpbHMuXG4gIHRoaXMuaGVhZGVyWydjb250ZW50LXR5cGUnXSA9IHRoaXMueGhyLmdldFJlc3BvbnNlSGVhZGVyKCdjb250ZW50LXR5cGUnKTtcbiAgdGhpcy5fc2V0SGVhZGVyUHJvcGVydGllcyh0aGlzLmhlYWRlcik7XG5cbiAgaWYgKHRoaXMudGV4dCA9PT0gbnVsbCAmJiByZXEuX3Jlc3BvbnNlVHlwZSkge1xuICAgIHRoaXMuYm9keSA9IHRoaXMueGhyLnJlc3BvbnNlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuYm9keSA9XG4gICAgICB0aGlzLnJlcS5tZXRob2QgPT09ICdIRUFEJ1xuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB0aGlzLl9wYXJzZUJvZHkodGhpcy50ZXh0ID8gdGhpcy50ZXh0IDogdGhpcy54aHIucmVzcG9uc2UpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG5SZXNwb25zZUJhc2UoUmVzcG9uc2UucHJvdG90eXBlKTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYm9keSBgc3RyYC5cbiAqXG4gKiBVc2VkIGZvciBhdXRvLXBhcnNpbmcgb2YgYm9kaWVzLiBQYXJzZXJzXG4gKiBhcmUgZGVmaW5lZCBvbiB0aGUgYHN1cGVyYWdlbnQucGFyc2VgIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJuIHtNaXhlZH1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cblJlc3BvbnNlLnByb3RvdHlwZS5fcGFyc2VCb2R5ID0gZnVuY3Rpb24oc3RyKSB7XG4gIGxldCBwYXJzZSA9IHJlcXVlc3QucGFyc2VbdGhpcy50eXBlXTtcbiAgaWYgKHRoaXMucmVxLl9wYXJzZXIpIHtcbiAgICByZXR1cm4gdGhpcy5yZXEuX3BhcnNlcih0aGlzLCBzdHIpO1xuICB9XG5cbiAgaWYgKCFwYXJzZSAmJiBpc0pTT04odGhpcy50eXBlKSkge1xuICAgIHBhcnNlID0gcmVxdWVzdC5wYXJzZVsnYXBwbGljYXRpb24vanNvbiddO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlICYmIHN0ciAmJiAoc3RyLmxlbmd0aCA+IDAgfHwgc3RyIGluc3RhbmNlb2YgT2JqZWN0KVxuICAgID8gcGFyc2Uoc3RyKVxuICAgIDogbnVsbDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGFuIGBFcnJvcmAgcmVwcmVzZW50YXRpdmUgb2YgdGhpcyByZXNwb25zZS5cbiAqXG4gKiBAcmV0dXJuIHtFcnJvcn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVzcG9uc2UucHJvdG90eXBlLnRvRXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgY29uc3QgeyByZXEgfSA9IHRoaXM7XG4gIGNvbnN0IHsgbWV0aG9kIH0gPSByZXE7XG4gIGNvbnN0IHsgdXJsIH0gPSByZXE7XG5cbiAgY29uc3QgbXNnID0gYGNhbm5vdCAke21ldGhvZH0gJHt1cmx9ICgke3RoaXMuc3RhdHVzfSlgO1xuICBjb25zdCBlcnIgPSBuZXcgRXJyb3IobXNnKTtcbiAgZXJyLnN0YXR1cyA9IHRoaXMuc3RhdHVzO1xuICBlcnIubWV0aG9kID0gbWV0aG9kO1xuICBlcnIudXJsID0gdXJsO1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBgUmVzcG9uc2VgLlxuICovXG5cbnJlcXVlc3QuUmVzcG9uc2UgPSBSZXNwb25zZTtcblxuLyoqXG4gKiBJbml0aWFsaXplIGEgbmV3IGBSZXF1ZXN0YCB3aXRoIHRoZSBnaXZlbiBgbWV0aG9kYCBhbmQgYHVybGAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1ldGhvZFxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBSZXF1ZXN0KG1ldGhvZCwgdXJsKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICB0aGlzLl9xdWVyeSA9IHRoaXMuX3F1ZXJ5IHx8IFtdO1xuICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgdGhpcy51cmwgPSB1cmw7XG4gIHRoaXMuaGVhZGVyID0ge307IC8vIHByZXNlcnZlcyBoZWFkZXIgbmFtZSBjYXNlXG4gIHRoaXMuX2hlYWRlciA9IHt9OyAvLyBjb2VyY2VzIGhlYWRlciBuYW1lcyB0byBsb3dlcmNhc2VcbiAgdGhpcy5vbignZW5kJywgKCkgPT4ge1xuICAgIGxldCBlcnIgPSBudWxsO1xuICAgIGxldCByZXMgPSBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIHJlcyA9IG5ldyBSZXNwb25zZShzZWxmKTtcbiAgICB9IGNhdGNoIChlcnJfKSB7XG4gICAgICBlcnIgPSBuZXcgRXJyb3IoJ1BhcnNlciBpcyB1bmFibGUgdG8gcGFyc2UgdGhlIHJlc3BvbnNlJyk7XG4gICAgICBlcnIucGFyc2UgPSB0cnVlO1xuICAgICAgZXJyLm9yaWdpbmFsID0gZXJyXztcbiAgICAgIC8vIGlzc3VlICM2NzU6IHJldHVybiB0aGUgcmF3IHJlc3BvbnNlIGlmIHRoZSByZXNwb25zZSBwYXJzaW5nIGZhaWxzXG4gICAgICBpZiAoc2VsZi54aHIpIHtcbiAgICAgICAgLy8gaWU5IGRvZXNuJ3QgaGF2ZSAncmVzcG9uc2UnIHByb3BlcnR5XG4gICAgICAgIGVyci5yYXdSZXNwb25zZSA9XG4gICAgICAgICAgdHlwZW9mIHNlbGYueGhyLnJlc3BvbnNlVHlwZSA9PT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICAgID8gc2VsZi54aHIucmVzcG9uc2VUZXh0XG4gICAgICAgICAgICA6IHNlbGYueGhyLnJlc3BvbnNlO1xuICAgICAgICAvLyBpc3N1ZSAjODc2OiByZXR1cm4gdGhlIGh0dHAgc3RhdHVzIGNvZGUgaWYgdGhlIHJlc3BvbnNlIHBhcnNpbmcgZmFpbHNcbiAgICAgICAgZXJyLnN0YXR1cyA9IHNlbGYueGhyLnN0YXR1cyA/IHNlbGYueGhyLnN0YXR1cyA6IG51bGw7XG4gICAgICAgIGVyci5zdGF0dXNDb2RlID0gZXJyLnN0YXR1czsgLy8gYmFja3dhcmRzLWNvbXBhdCBvbmx5XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnIucmF3UmVzcG9uc2UgPSBudWxsO1xuICAgICAgICBlcnIuc3RhdHVzID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGYuY2FsbGJhY2soZXJyKTtcbiAgICB9XG5cbiAgICBzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgcmVzKTtcblxuICAgIGxldCBuZXdfZXJyO1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXNlbGYuX2lzUmVzcG9uc2VPSyhyZXMpKSB7XG4gICAgICAgIG5ld19lcnIgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgcmVzLnN0YXR1c1RleHQgfHwgcmVzLnRleHQgfHwgJ1Vuc3VjY2Vzc2Z1bCBIVFRQIHJlc3BvbnNlJ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycl8pIHtcbiAgICAgIG5ld19lcnIgPSBlcnJfOyAvLyBvaygpIGNhbGxiYWNrIGNhbiB0aHJvd1xuICAgIH1cblxuICAgIC8vICMxMDAwIGRvbid0IGNhdGNoIGVycm9ycyBmcm9tIHRoZSBjYWxsYmFjayB0byBhdm9pZCBkb3VibGUgY2FsbGluZyBpdFxuICAgIGlmIChuZXdfZXJyKSB7XG4gICAgICBuZXdfZXJyLm9yaWdpbmFsID0gZXJyO1xuICAgICAgbmV3X2Vyci5yZXNwb25zZSA9IHJlcztcbiAgICAgIG5ld19lcnIuc3RhdHVzID0gcmVzLnN0YXR1cztcbiAgICAgIHNlbGYuY2FsbGJhY2sobmV3X2VyciwgcmVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZi5jYWxsYmFjayhudWxsLCByZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogTWl4aW4gYEVtaXR0ZXJgIGFuZCBgUmVxdWVzdEJhc2VgLlxuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG5FbWl0dGVyKFJlcXVlc3QucHJvdG90eXBlKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuZXctY2FwXG5SZXF1ZXN0QmFzZShSZXF1ZXN0LnByb3RvdHlwZSk7XG5cbi8qKlxuICogU2V0IENvbnRlbnQtVHlwZSB0byBgdHlwZWAsIG1hcHBpbmcgdmFsdWVzIGZyb20gYHJlcXVlc3QudHlwZXNgLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICAgc3VwZXJhZ2VudC50eXBlcy54bWwgPSAnYXBwbGljYXRpb24veG1sJztcbiAqXG4gKiAgICAgIHJlcXVlc3QucG9zdCgnLycpXG4gKiAgICAgICAgLnR5cGUoJ3htbCcpXG4gKiAgICAgICAgLnNlbmQoeG1sc3RyaW5nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqICAgICAgcmVxdWVzdC5wb3N0KCcvJylcbiAqICAgICAgICAudHlwZSgnYXBwbGljYXRpb24veG1sJylcbiAqICAgICAgICAuc2VuZCh4bWxzdHJpbmcpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS50eXBlID0gZnVuY3Rpb24odHlwZSkge1xuICB0aGlzLnNldCgnQ29udGVudC1UeXBlJywgcmVxdWVzdC50eXBlc1t0eXBlXSB8fCB0eXBlKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCBBY2NlcHQgdG8gYHR5cGVgLCBtYXBwaW5nIHZhbHVlcyBmcm9tIGByZXF1ZXN0LnR5cGVzYC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIHN1cGVyYWdlbnQudHlwZXMuanNvbiA9ICdhcHBsaWNhdGlvbi9qc29uJztcbiAqXG4gKiAgICAgIHJlcXVlc3QuZ2V0KCcvYWdlbnQnKVxuICogICAgICAgIC5hY2NlcHQoJ2pzb24nKVxuICogICAgICAgIC5lbmQoY2FsbGJhY2spO1xuICpcbiAqICAgICAgcmVxdWVzdC5nZXQoJy9hZ2VudCcpXG4gKiAgICAgICAgLmFjY2VwdCgnYXBwbGljYXRpb24vanNvbicpXG4gKiAgICAgICAgLmVuZChjYWxsYmFjayk7XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGFjY2VwdFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmFjY2VwdCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdGhpcy5zZXQoJ0FjY2VwdCcsIHJlcXVlc3QudHlwZXNbdHlwZV0gfHwgdHlwZSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBTZXQgQXV0aG9yaXphdGlvbiBmaWVsZCB2YWx1ZSB3aXRoIGB1c2VyYCBhbmQgYHBhc3NgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1c2VyXG4gKiBAcGFyYW0ge1N0cmluZ30gW3Bhc3NdIG9wdGlvbmFsIGluIGNhc2Ugb2YgdXNpbmcgJ2JlYXJlcicgYXMgdHlwZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgd2l0aCAndHlwZScgcHJvcGVydHkgJ2F1dG8nLCAnYmFzaWMnIG9yICdiZWFyZXInIChkZWZhdWx0ICdiYXNpYycpXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fSBmb3IgY2hhaW5pbmdcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuYXV0aCA9IGZ1bmN0aW9uKHVzZXIsIHBhc3MsIG9wdGlvbnMpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHBhc3MgPSAnJztcbiAgaWYgKHR5cGVvZiBwYXNzID09PSAnb2JqZWN0JyAmJiBwYXNzICE9PSBudWxsKSB7XG4gICAgLy8gcGFzcyBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlcGxhY2VkIHdpdGggb3B0aW9uc1xuICAgIG9wdGlvbnMgPSBwYXNzO1xuICAgIHBhc3MgPSAnJztcbiAgfVxuXG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7XG4gICAgICB0eXBlOiB0eXBlb2YgYnRvYSA9PT0gJ2Z1bmN0aW9uJyA/ICdiYXNpYycgOiAnYXV0bydcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZW5jb2RlciA9IHN0cmluZyA9PiB7XG4gICAgaWYgKHR5cGVvZiBidG9hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gYnRvYShzdHJpbmcpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHVzZSBiYXNpYyBhdXRoLCBidG9hIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH07XG5cbiAgcmV0dXJuIHRoaXMuX2F1dGgodXNlciwgcGFzcywgb3B0aW9ucywgZW5jb2Rlcik7XG59O1xuXG4vKipcbiAqIEFkZCBxdWVyeS1zdHJpbmcgYHZhbGAuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICByZXF1ZXN0LmdldCgnL3Nob2VzJylcbiAqICAgICAucXVlcnkoJ3NpemU9MTAnKVxuICogICAgIC5xdWVyeSh7IGNvbG9yOiAnYmx1ZScgfSlcbiAqXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IHZhbFxuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24odmFsKSB7XG4gIGlmICh0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykgdmFsID0gc2VyaWFsaXplKHZhbCk7XG4gIGlmICh2YWwpIHRoaXMuX3F1ZXJ5LnB1c2godmFsKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFF1ZXVlIHRoZSBnaXZlbiBgZmlsZWAgYXMgYW4gYXR0YWNobWVudCB0byB0aGUgc3BlY2lmaWVkIGBmaWVsZGAsXG4gKiB3aXRoIG9wdGlvbmFsIGBvcHRpb25zYCAob3IgZmlsZW5hbWUpLlxuICpcbiAqIGBgYCBqc1xuICogcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAqICAgLmF0dGFjaCgnY29udGVudCcsIG5ldyBCbG9iKFsnPGEgaWQ9XCJhXCI+PGIgaWQ9XCJiXCI+aGV5ITwvYj48L2E+J10sIHsgdHlwZTogXCJ0ZXh0L2h0bWxcIn0pKVxuICogICAuZW5kKGNhbGxiYWNrKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBmaWVsZFxuICogQHBhcmFtIHtCbG9ifEZpbGV9IGZpbGVcbiAqIEBwYXJhbSB7U3RyaW5nfE9iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7UmVxdWVzdH0gZm9yIGNoYWluaW5nXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblJlcXVlc3QucHJvdG90eXBlLmF0dGFjaCA9IGZ1bmN0aW9uKGZpZWxkLCBmaWxlLCBvcHRpb25zKSB7XG4gIGlmIChmaWxlKSB7XG4gICAgaWYgKHRoaXMuX2RhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInN1cGVyYWdlbnQgY2FuJ3QgbWl4IC5zZW5kKCkgYW5kIC5hdHRhY2goKVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChmaWVsZCwgZmlsZSwgb3B0aW9ucyB8fCBmaWxlLm5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5fZ2V0Rm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLl9mb3JtRGF0YSkge1xuICAgIHRoaXMuX2Zvcm1EYXRhID0gbmV3IHJvb3QuRm9ybURhdGEoKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9mb3JtRGF0YTtcbn07XG5cbi8qKlxuICogSW52b2tlIHRoZSBjYWxsYmFjayB3aXRoIGBlcnJgIGFuZCBgcmVzYFxuICogYW5kIGhhbmRsZSBhcml0eSBjaGVjay5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJcbiAqIEBwYXJhbSB7UmVzcG9uc2V9IHJlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2sgPSBmdW5jdGlvbihlcnIsIHJlcykge1xuICBpZiAodGhpcy5fc2hvdWxkUmV0cnkoZXJyLCByZXMpKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JldHJ5KCk7XG4gIH1cblxuICBjb25zdCBmbiA9IHRoaXMuX2NhbGxiYWNrO1xuICB0aGlzLmNsZWFyVGltZW91dCgpO1xuXG4gIGlmIChlcnIpIHtcbiAgICBpZiAodGhpcy5fbWF4UmV0cmllcykgZXJyLnJldHJpZXMgPSB0aGlzLl9yZXRyaWVzIC0gMTtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgfVxuXG4gIGZuKGVyciwgcmVzKTtcbn07XG5cbi8qKlxuICogSW52b2tlIGNhbGxiYWNrIHdpdGggeC1kb21haW4gZXJyb3IuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuUmVxdWVzdC5wcm90b3R5cGUuY3Jvc3NEb21haW5FcnJvciA9IGZ1bmN0aW9uKCkge1xuICBjb25zdCBlcnIgPSBuZXcgRXJyb3IoXG4gICAgJ1JlcXVlc3QgaGFzIGJlZW4gdGVybWluYXRlZFxcblBvc3NpYmxlIGNhdXNlczogdGhlIG5ldHdvcmsgaXMgb2ZmbGluZSwgT3JpZ2luIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbiwgdGhlIHBhZ2UgaXMgYmVpbmcgdW5sb2FkZWQsIGV0Yy4nXG4gICk7XG4gIGVyci5jcm9zc0RvbWFpbiA9IHRydWU7XG5cbiAgZXJyLnN0YXR1cyA9IHRoaXMuc3RhdHVzO1xuICBlcnIubWV0aG9kID0gdGhpcy5tZXRob2Q7XG4gIGVyci51cmwgPSB0aGlzLnVybDtcblxuICB0aGlzLmNhbGxiYWNrKGVycik7XG59O1xuXG4vLyBUaGlzIG9ubHkgd2FybnMsIGJlY2F1c2UgdGhlIHJlcXVlc3QgaXMgc3RpbGwgbGlrZWx5IHRvIHdvcmtcblJlcXVlc3QucHJvdG90eXBlLmFnZW50ID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUud2FybignVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBzdXBlcmFnZW50Jyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuY2EgPSBSZXF1ZXN0LnByb3RvdHlwZS5hZ2VudDtcblJlcXVlc3QucHJvdG90eXBlLmJ1ZmZlciA9IFJlcXVlc3QucHJvdG90eXBlLmNhO1xuXG4vLyBUaGlzIHRocm93cywgYmVjYXVzZSBpdCBjYW4ndCBzZW5kL3JlY2VpdmUgZGF0YSBhcyBleHBlY3RlZFxuUmVxdWVzdC5wcm90b3R5cGUud3JpdGUgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQnXG4gICk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5waXBlID0gUmVxdWVzdC5wcm90b3R5cGUud3JpdGU7XG5cbi8qKlxuICogQ2hlY2sgaWYgYG9iamAgaXMgYSBob3N0IG9iamVjdCxcbiAqIHdlIGRvbid0IHdhbnQgdG8gc2VyaWFsaXplIHRoZXNlIDopXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBob3N0IG9iamVjdFxuICogQHJldHVybiB7Qm9vbGVhbn0gaXMgYSBob3N0IG9iamVjdFxuICogQGFwaSBwcml2YXRlXG4gKi9cblJlcXVlc3QucHJvdG90eXBlLl9pc0hvc3QgPSBmdW5jdGlvbihvYmopIHtcbiAgLy8gTmF0aXZlIG9iamVjdHMgc3RyaW5naWZ5IHRvIFtvYmplY3QgRmlsZV0sIFtvYmplY3QgQmxvYl0sIFtvYmplY3QgRm9ybURhdGFdLCBldGMuXG4gIHJldHVybiAoXG4gICAgb2JqICYmXG4gICAgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiZcbiAgICAhQXJyYXkuaXNBcnJheShvYmopICYmXG4gICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgIT09ICdbb2JqZWN0IE9iamVjdF0nXG4gICk7XG59O1xuXG4vKipcbiAqIEluaXRpYXRlIHJlcXVlc3QsIGludm9raW5nIGNhbGxiYWNrIGBmbihyZXMpYFxuICogd2l0aCBhbiBpbnN0YW5jZW9mIGBSZXNwb25zZWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEByZXR1cm4ge1JlcXVlc3R9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbihmbikge1xuICBpZiAodGhpcy5fZW5kQ2FsbGVkKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ1dhcm5pbmc6IC5lbmQoKSB3YXMgY2FsbGVkIHR3aWNlLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3VwZXJhZ2VudCdcbiAgICApO1xuICB9XG5cbiAgdGhpcy5fZW5kQ2FsbGVkID0gdHJ1ZTtcblxuICAvLyBzdG9yZSBjYWxsYmFja1xuICB0aGlzLl9jYWxsYmFjayA9IGZuIHx8IG5vb3A7XG5cbiAgLy8gcXVlcnlzdHJpbmdcbiAgdGhpcy5fZmluYWxpemVRdWVyeVN0cmluZygpO1xuXG4gIHRoaXMuX2VuZCgpO1xufTtcblxuUmVxdWVzdC5wcm90b3R5cGUuX3NldFVwbG9hZFRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgLy8gdXBsb2FkIHRpbWVvdXQgaXQncyB3b2tycyBvbmx5IGlmIGRlYWRsaW5lIHRpbWVvdXQgaXMgb2ZmXG4gIGlmICh0aGlzLl91cGxvYWRUaW1lb3V0ICYmICF0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIpIHtcbiAgICB0aGlzLl91cGxvYWRUaW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNlbGYuX3RpbWVvdXRFcnJvcihcbiAgICAgICAgJ1VwbG9hZCB0aW1lb3V0IG9mICcsXG4gICAgICAgIHNlbGYuX3VwbG9hZFRpbWVvdXQsXG4gICAgICAgICdFVElNRURPVVQnXG4gICAgICApO1xuICAgIH0sIHRoaXMuX3VwbG9hZFRpbWVvdXQpO1xuICB9XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuUmVxdWVzdC5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uKCkge1xuICBpZiAodGhpcy5fYWJvcnRlZClcbiAgICByZXR1cm4gdGhpcy5jYWxsYmFjayhcbiAgICAgIG5ldyBFcnJvcignVGhlIHJlcXVlc3QgaGFzIGJlZW4gYWJvcnRlZCBldmVuIGJlZm9yZSAuZW5kKCkgd2FzIGNhbGxlZCcpXG4gICAgKTtcblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgdGhpcy54aHIgPSByZXF1ZXN0LmdldFhIUigpO1xuICBjb25zdCB7IHhociB9ID0gdGhpcztcbiAgbGV0IGRhdGEgPSB0aGlzLl9mb3JtRGF0YSB8fCB0aGlzLl9kYXRhO1xuXG4gIHRoaXMuX3NldFRpbWVvdXRzKCk7XG5cbiAgLy8gc3RhdGUgY2hhbmdlXG4gIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XG4gICAgY29uc3QgeyByZWFkeVN0YXRlIH0gPSB4aHI7XG4gICAgaWYgKHJlYWR5U3RhdGUgPj0gMiAmJiBzZWxmLl9yZXNwb25zZVRpbWVvdXRUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHNlbGYuX3Jlc3BvbnNlVGltZW91dFRpbWVyKTtcbiAgICB9XG5cbiAgICBpZiAocmVhZHlTdGF0ZSAhPT0gNCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIElFOSwgcmVhZHMgdG8gYW55IHByb3BlcnR5IChlLmcuIHN0YXR1cykgb2ZmIG9mIGFuIGFib3J0ZWQgWEhSIHdpbGxcbiAgICAvLyByZXN1bHQgaW4gdGhlIGVycm9yIFwiQ291bGQgbm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gZHVlIHRvIGVycm9yIGMwMGMwMjNmXCJcbiAgICBsZXQgc3RhdHVzO1xuICAgIHRyeSB7XG4gICAgICBzdGF0dXMgPSB4aHIuc3RhdHVzO1xuICAgIH0gY2F0Y2gge1xuICAgICAgc3RhdHVzID0gMDtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXR1cykge1xuICAgICAgaWYgKHNlbGYudGltZWRvdXQgfHwgc2VsZi5fYWJvcnRlZCkgcmV0dXJuO1xuICAgICAgcmV0dXJuIHNlbGYuY3Jvc3NEb21haW5FcnJvcigpO1xuICAgIH1cblxuICAgIHNlbGYuZW1pdCgnZW5kJyk7XG4gIH07XG5cbiAgLy8gcHJvZ3Jlc3NcbiAgY29uc3QgaGFuZGxlUHJvZ3Jlc3MgPSAoZGlyZWN0aW9uLCBlKSA9PiB7XG4gICAgaWYgKGUudG90YWwgPiAwKSB7XG4gICAgICBlLnBlcmNlbnQgPSAoZS5sb2FkZWQgLyBlLnRvdGFsKSAqIDEwMDtcblxuICAgICAgaWYgKGUucGVyY2VudCA9PT0gMTAwKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzZWxmLl91cGxvYWRUaW1lb3V0VGltZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGUuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgIHNlbGYuZW1pdCgncHJvZ3Jlc3MnLCBlKTtcbiAgfTtcblxuICBpZiAodGhpcy5oYXNMaXN0ZW5lcnMoJ3Byb2dyZXNzJykpIHtcbiAgICB0cnkge1xuICAgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgaGFuZGxlUHJvZ3Jlc3MuYmluZChudWxsLCAnZG93bmxvYWQnKSk7XG4gICAgICBpZiAoeGhyLnVwbG9hZCkge1xuICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgJ3Byb2dyZXNzJyxcbiAgICAgICAgICBoYW5kbGVQcm9ncmVzcy5iaW5kKG51bGwsICd1cGxvYWQnKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQWNjZXNzaW5nIHhoci51cGxvYWQgZmFpbHMgaW4gSUUgZnJvbSBhIHdlYiB3b3JrZXIsIHNvIGp1c3QgcHJldGVuZCBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAgLy8gUmVwb3J0ZWQgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vY29ubmVjdC5taWNyb3NvZnQuY29tL0lFL2ZlZWRiYWNrL2RldGFpbHMvODM3MjQ1L3htbGh0dHByZXF1ZXN0LXVwbG9hZC10aHJvd3MtaW52YWxpZC1hcmd1bWVudC13aGVuLXVzZWQtZnJvbS13ZWItd29ya2VyLWNvbnRleHRcbiAgICB9XG4gIH1cblxuICBpZiAoeGhyLnVwbG9hZCkge1xuICAgIHRoaXMuX3NldFVwbG9hZFRpbWVvdXQoKTtcbiAgfVxuXG4gIC8vIGluaXRpYXRlIHJlcXVlc3RcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy51c2VybmFtZSAmJiB0aGlzLnBhc3N3b3JkKSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUsIHRoaXMudXNlcm5hbWUsIHRoaXMucGFzc3dvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB4aHIub3Blbih0aGlzLm1ldGhvZCwgdGhpcy51cmwsIHRydWUpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gc2VlICMxMTQ5XG4gICAgcmV0dXJuIHRoaXMuY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIC8vIENPUlNcbiAgaWYgKHRoaXMuX3dpdGhDcmVkZW50aWFscykgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG5cbiAgLy8gYm9keVxuICBpZiAoXG4gICAgIXRoaXMuX2Zvcm1EYXRhICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdHRVQnICYmXG4gICAgdGhpcy5tZXRob2QgIT09ICdIRUFEJyAmJlxuICAgIHR5cGVvZiBkYXRhICE9PSAnc3RyaW5nJyAmJlxuICAgICF0aGlzLl9pc0hvc3QoZGF0YSlcbiAgKSB7XG4gICAgLy8gc2VyaWFsaXplIHN0dWZmXG4gICAgY29uc3QgY29udGVudFR5cGUgPSB0aGlzLl9oZWFkZXJbJ2NvbnRlbnQtdHlwZSddO1xuICAgIGxldCBzZXJpYWxpemUgPVxuICAgICAgdGhpcy5fc2VyaWFsaXplciB8fFxuICAgICAgcmVxdWVzdC5zZXJpYWxpemVbY29udGVudFR5cGUgPyBjb250ZW50VHlwZS5zcGxpdCgnOycpWzBdIDogJyddO1xuICAgIGlmICghc2VyaWFsaXplICYmIGlzSlNPTihjb250ZW50VHlwZSkpIHtcbiAgICAgIHNlcmlhbGl6ZSA9IHJlcXVlc3Quc2VyaWFsaXplWydhcHBsaWNhdGlvbi9qc29uJ107XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZSkgZGF0YSA9IHNlcmlhbGl6ZShkYXRhKTtcbiAgfVxuXG4gIC8vIHNldCBoZWFkZXIgZmllbGRzXG4gIGZvciAoY29uc3QgZmllbGQgaW4gdGhpcy5oZWFkZXIpIHtcbiAgICBpZiAodGhpcy5oZWFkZXJbZmllbGRdID09PSBudWxsKSBjb250aW51ZTtcblxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5oZWFkZXIsIGZpZWxkKSlcbiAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGZpZWxkLCB0aGlzLmhlYWRlcltmaWVsZF0pO1xuICB9XG5cbiAgaWYgKHRoaXMuX3Jlc3BvbnNlVHlwZSkge1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSB0aGlzLl9yZXNwb25zZVR5cGU7XG4gIH1cblxuICAvLyBzZW5kIHN0dWZmXG4gIHRoaXMuZW1pdCgncmVxdWVzdCcsIHRoaXMpO1xuXG4gIC8vIElFMTEgeGhyLnNlbmQodW5kZWZpbmVkKSBzZW5kcyAndW5kZWZpbmVkJyBzdHJpbmcgYXMgUE9TVCBwYXlsb2FkIChpbnN0ZWFkIG9mIG5vdGhpbmcpXG4gIC8vIFdlIG5lZWQgbnVsbCBoZXJlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXG4gIHhoci5zZW5kKHR5cGVvZiBkYXRhID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBkYXRhKTtcbn07XG5cbnJlcXVlc3QuYWdlbnQgPSAoKSA9PiBuZXcgQWdlbnQoKTtcblxuWydHRVQnLCAnUE9TVCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BVVCcsICdERUxFVEUnXS5mb3JFYWNoKG1ldGhvZCA9PiB7XG4gIEFnZW50LnByb3RvdHlwZVttZXRob2QudG9Mb3dlckNhc2UoKV0gPSBmdW5jdGlvbih1cmwsIGZuKSB7XG4gICAgY29uc3QgcmVxID0gbmV3IHJlcXVlc3QuUmVxdWVzdChtZXRob2QsIHVybCk7XG4gICAgdGhpcy5fc2V0RGVmYXVsdHMocmVxKTtcbiAgICBpZiAoZm4pIHtcbiAgICAgIHJlcS5lbmQoZm4pO1xuICAgIH1cblxuICAgIHJldHVybiByZXE7XG4gIH07XG59KTtcblxuQWdlbnQucHJvdG90eXBlLmRlbCA9IEFnZW50LnByb3RvdHlwZS5kZWxldGU7XG5cbi8qKlxuICogR0VUIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5nZXQgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXEgPSByZXF1ZXN0KCdHRVQnLCB1cmwpO1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICBmbiA9IGRhdGE7XG4gICAgZGF0YSA9IG51bGw7XG4gIH1cblxuICBpZiAoZGF0YSkgcmVxLnF1ZXJ5KGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBIRUFEIGB1cmxgIHdpdGggb3B0aW9uYWwgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR8RnVuY3Rpb259IFtkYXRhXSBvciBmblxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5oZWFkID0gKHVybCwgZGF0YSwgZm4pID0+IHtcbiAgY29uc3QgcmVxID0gcmVxdWVzdCgnSEVBRCcsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXEucXVlcnkoZGF0YSk7XG4gIGlmIChmbikgcmVxLmVuZChmbik7XG4gIHJldHVybiByZXE7XG59O1xuXG4vKipcbiAqIE9QVElPTlMgcXVlcnkgdG8gYHVybGAgd2l0aCBvcHRpb25hbCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZHxGdW5jdGlvbn0gW2RhdGFdIG9yIGZuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0Lm9wdGlvbnMgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXEgPSByZXF1ZXN0KCdPUFRJT05TJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBERUxFVEUgYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfSBbZGF0YV1cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGRlbCh1cmwsIGRhdGEsIGZuKSB7XG4gIGNvbnN0IHJlcSA9IHJlcXVlc3QoJ0RFTEVURScsIHVybCk7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZuID0gZGF0YTtcbiAgICBkYXRhID0gbnVsbDtcbiAgfVxuXG4gIGlmIChkYXRhKSByZXEuc2VuZChkYXRhKTtcbiAgaWYgKGZuKSByZXEuZW5kKGZuKTtcbiAgcmV0dXJuIHJlcTtcbn1cblxucmVxdWVzdC5kZWwgPSBkZWw7XG5yZXF1ZXN0LmRlbGV0ZSA9IGRlbDtcblxuLyoqXG4gKiBQQVRDSCBgdXJsYCB3aXRoIG9wdGlvbmFsIGBkYXRhYCBhbmQgY2FsbGJhY2sgYGZuKHJlcylgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSB1cmxcbiAqIEBwYXJhbSB7TWl4ZWR9IFtkYXRhXVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2ZuXVxuICogQHJldHVybiB7UmVxdWVzdH1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucmVxdWVzdC5wYXRjaCA9ICh1cmwsIGRhdGEsIGZuKSA9PiB7XG4gIGNvbnN0IHJlcSA9IHJlcXVlc3QoJ1BBVENIJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBQT1NUIGB1cmxgIHdpdGggb3B0aW9uYWwgYGRhdGFgIGFuZCBjYWxsYmFjayBgZm4ocmVzKWAuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICogQHBhcmFtIHtNaXhlZH0gW2RhdGFdXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZm5dXG4gKiBAcmV0dXJuIHtSZXF1ZXN0fVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5yZXF1ZXN0LnBvc3QgPSAodXJsLCBkYXRhLCBmbikgPT4ge1xuICBjb25zdCByZXEgPSByZXF1ZXN0KCdQT1NUJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcblxuLyoqXG4gKiBQVVQgYHVybGAgd2l0aCBvcHRpb25hbCBgZGF0YWAgYW5kIGNhbGxiYWNrIGBmbihyZXMpYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKiBAcGFyYW0ge01peGVkfEZ1bmN0aW9ufSBbZGF0YV0gb3IgZm5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtmbl1cbiAqIEByZXR1cm4ge1JlcXVlc3R9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnJlcXVlc3QucHV0ID0gKHVybCwgZGF0YSwgZm4pID0+IHtcbiAgY29uc3QgcmVxID0gcmVxdWVzdCgnUFVUJywgdXJsKTtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZm4gPSBkYXRhO1xuICAgIGRhdGEgPSBudWxsO1xuICB9XG5cbiAgaWYgKGRhdGEpIHJlcS5zZW5kKGRhdGEpO1xuICBpZiAoZm4pIHJlcS5lbmQoZm4pO1xuICByZXR1cm4gcmVxO1xufTtcbiJdfQ==