tnp-helpers 18.0.25 → 19.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (502) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/fesm2022/tnp-helpers.mjs +468 -431
  4. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  5. package/browser/lib/base/classes/{base-cli-worker-config.d.ts → base-cli-worker/base-cli-worker-config.d.ts} +2 -2
  6. package/browser/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.d.ts +40 -0
  7. package/{websql/lib/base/classes → browser/lib/base/classes/base-cli-worker}/base-cli-worker.d.ts +23 -45
  8. package/browser/lib/base/classes/base-cli-worker/index.d.ts +5 -0
  9. package/browser/lib/base/classes/base-git.d.ts +1 -1
  10. package/browser/lib/base/classes/base-node-modules.d.ts +1 -1
  11. package/browser/lib/base/classes/index.d.ts +0 -2
  12. package/browser/lib/base/tcp-udp-ports/ports.controller.d.ts +2 -2
  13. package/browser/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  14. package/browser/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.d.ts +20 -0
  15. package/browser/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +6 -22
  16. package/browser/lib/models.d.ts +3 -1
  17. package/client/README.md +24 -24
  18. package/client/fesm2022/tnp-helpers.mjs +468 -431
  19. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  20. package/client/lib/base/classes/{base-cli-worker-config.d.ts → base-cli-worker/base-cli-worker-config.d.ts} +2 -2
  21. package/client/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.d.ts +40 -0
  22. package/client/lib/base/classes/{base-cli-worker.d.ts → base-cli-worker/base-cli-worker.d.ts} +23 -45
  23. package/client/lib/base/classes/base-cli-worker/index.d.ts +5 -0
  24. package/client/lib/base/classes/base-git.d.ts +1 -1
  25. package/client/lib/base/classes/base-node-modules.d.ts +1 -1
  26. package/client/lib/base/classes/index.d.ts +0 -2
  27. package/client/lib/base/tcp-udp-ports/ports.controller.d.ts +2 -2
  28. package/client/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  29. package/client/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.d.ts +20 -0
  30. package/client/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +6 -22
  31. package/client/lib/models.d.ts +3 -1
  32. package/index.js.map +1 -1
  33. package/lib/base/classes/base-bower-json.js.map +1 -1
  34. package/lib/base/classes/{base-cli-worker-config.d.ts → base-cli-worker/base-cli-worker-config.d.ts} +1 -1
  35. package/lib/base/classes/base-cli-worker/base-cli-worker-config.js.map +1 -0
  36. package/lib/base/classes/base-cli-worker/base-cli-worker-controller.js.map +1 -0
  37. package/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.d.ts +39 -0
  38. package/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.js +148 -0
  39. package/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.js.map +1 -0
  40. package/lib/base/classes/{base-cli-worker.d.ts → base-cli-worker/base-cli-worker.d.ts} +21 -43
  41. package/lib/base/classes/{base-cli-worker.js → base-cli-worker/base-cli-worker.js} +93 -173
  42. package/lib/base/classes/base-cli-worker/base-cli-worker.js.map +1 -0
  43. package/lib/base/classes/base-cli-worker/index.d.ts +4 -0
  44. package/lib/base/classes/base-cli-worker/index.js +21 -0
  45. package/lib/base/classes/base-cli-worker/index.js.map +1 -0
  46. package/lib/base/classes/base-command-line-feature.backend.js.map +1 -1
  47. package/lib/base/classes/base-compiler-for-project.js.map +1 -1
  48. package/lib/base/classes/base-db.js.map +1 -1
  49. package/lib/base/classes/base-debounce-compiler-for-project.js.map +1 -1
  50. package/lib/base/classes/base-feature-for-project.js.map +1 -1
  51. package/lib/base/classes/base-git.js.map +1 -1
  52. package/lib/base/classes/base-global-command-line.backend.d.ts +2 -0
  53. package/lib/base/classes/base-global-command-line.backend.js +36 -1
  54. package/lib/base/classes/base-global-command-line.backend.js.map +1 -1
  55. package/lib/base/classes/base-ignore-hide.js.map +1 -1
  56. package/lib/base/classes/base-json-file-reader.js.map +1 -1
  57. package/lib/base/classes/base-library-build.js.map +1 -1
  58. package/lib/base/classes/base-linked-projects.js.map +1 -1
  59. package/lib/base/classes/base-node-modules.d.ts +1 -1
  60. package/lib/base/classes/base-node-modules.js.map +1 -1
  61. package/lib/base/classes/base-npm-helpers.js.map +1 -1
  62. package/lib/base/classes/base-package-json.js.map +1 -1
  63. package/lib/base/classes/base-powershell.js.map +1 -1
  64. package/lib/base/classes/base-process-manager.js.map +1 -1
  65. package/lib/base/classes/base-project-resolver.js.map +1 -1
  66. package/lib/base/classes/base-project.d.ts +1 -1
  67. package/lib/base/classes/base-project.js.map +1 -1
  68. package/lib/base/classes/base-quick-fixes.js.map +1 -1
  69. package/lib/base/classes/base-release-process.js.map +1 -1
  70. package/lib/base/classes/base-start-config.backend.js.map +1 -1
  71. package/lib/base/classes/base-static-pages.js.map +1 -1
  72. package/lib/base/classes/base-vscode.js +8 -12
  73. package/lib/base/classes/base-vscode.js.map +1 -1
  74. package/lib/base/classes/index.d.ts +0 -2
  75. package/lib/base/classes/index.js +0 -2
  76. package/lib/base/classes/index.js.map +1 -1
  77. package/lib/base/commit-data.js.map +1 -1
  78. package/lib/base/config-database.js.map +1 -1
  79. package/lib/base/core-project.js.map +1 -1
  80. package/lib/base/gh-temp-code.js.map +1 -1
  81. package/lib/base/index-rebuilder.backend.js.map +1 -1
  82. package/lib/base/index.js.map +1 -1
  83. package/lib/base/linked-project.js.map +1 -1
  84. package/lib/base/project-database.js.map +1 -1
  85. package/lib/base/tcp-udp-ports/index.js.map +1 -1
  86. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js +2 -2
  87. package/lib/base/tcp-udp-ports/not-assignable-port.entity.js.map +1 -1
  88. package/lib/base/tcp-udp-ports/ports.controller.d.ts +2 -2
  89. package/lib/base/tcp-udp-ports/ports.controller.js +2 -2
  90. package/lib/base/tcp-udp-ports/ports.controller.js.map +1 -1
  91. package/lib/base/tcp-udp-ports/ports.entity.js.map +1 -1
  92. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  93. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js +2 -2
  94. package/lib/base/tcp-udp-ports/tcp-udp-ports.context.js.map +1 -1
  95. package/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.d.ts +32 -0
  96. package/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.js +256 -0
  97. package/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.js.map +1 -0
  98. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +6 -35
  99. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js +4 -284
  100. package/lib/base/tcp-udp-ports/tcp-upd-ports.worker.js.map +1 -1
  101. package/lib/base/translate.js.map +1 -1
  102. package/lib/build-info._auto-generated_.js.map +1 -1
  103. package/lib/helpers/for-backend/helpers-cli-tool.backend.js.map +1 -1
  104. package/lib/helpers/for-backend/helpers-console-gui.js.map +1 -1
  105. package/lib/helpers/for-backend/helpers-dependencies.backend.js.map +1 -1
  106. package/lib/helpers/for-backend/helpers-file-folders.js.map +1 -1
  107. package/lib/helpers/for-backend/helpers-git.backend.d.ts +2 -0
  108. package/lib/helpers/for-backend/helpers-git.backend.js +34 -23
  109. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  110. package/lib/helpers/for-backend/helpers-network.backend.js.map +1 -1
  111. package/lib/helpers/for-backend/helpers-npm.backend.js.map +1 -1
  112. package/lib/helpers/for-backend/helpers-path.backend.js.map +1 -1
  113. package/lib/helpers/for-backend/helpers-process.js.map +1 -1
  114. package/lib/helpers/for-backend/helpers-system-terminal.backend.js.map +1 -1
  115. package/lib/helpers/for-backend/helpers-vscode.backend.js.map +1 -1
  116. package/lib/helpers/for-browser/angular.helper.js +2 -2
  117. package/lib/helpers/for-browser/angular.helper.js.map +1 -1
  118. package/lib/helpers/for-browser/helpers-browser.js.map +1 -1
  119. package/lib/helpers/helpers-array-obj.js.map +1 -1
  120. package/lib/helpers/helpers-json5.backend.js.map +1 -1
  121. package/lib/helpers/helpers-numbers.js.map +1 -1
  122. package/lib/helpers/helpers-strings-regexes.js.map +1 -1
  123. package/lib/helpers/helpers-strings.js.map +1 -1
  124. package/lib/helpers/helpers.js.map +1 -1
  125. package/lib/index._auto-generated_.js.map +1 -1
  126. package/lib/index.js.map +1 -1
  127. package/lib/lowdb/adapters/Memory.js.map +1 -1
  128. package/lib/lowdb/adapters/browser/LocalStorage.js.map +1 -1
  129. package/lib/lowdb/adapters/browser/SessionStorage.js.map +1 -1
  130. package/lib/lowdb/adapters/browser/WebStorage.js.map +1 -1
  131. package/lib/lowdb/adapters/node/DataFile.js.map +1 -1
  132. package/lib/lowdb/adapters/node/JSONFile.js.map +1 -1
  133. package/lib/lowdb/adapters/node/TextFile.js.map +1 -1
  134. package/lib/lowdb/adapters/node/steno.js.map +1 -1
  135. package/lib/lowdb/browser.js.map +1 -1
  136. package/lib/lowdb/core/Low.js.map +1 -1
  137. package/lib/lowdb/examples/browser.js.map +1 -1
  138. package/lib/lowdb/examples/cli.js.map +1 -1
  139. package/lib/lowdb/examples/in-memory.js.map +1 -1
  140. package/lib/lowdb/examples/server.js.map +1 -1
  141. package/lib/lowdb/index.js.map +1 -1
  142. package/lib/lowdb/node.js.map +1 -1
  143. package/lib/lowdb/presets/browser.js.map +1 -1
  144. package/lib/lowdb/presets/node.js.map +1 -1
  145. package/lib/models.d.ts +2 -0
  146. package/lib/models.js.map +1 -1
  147. package/lib/old/base-component.js +2 -2
  148. package/lib/old/base-component.js.map +1 -1
  149. package/lib/old/base-formly-component.js +2 -2
  150. package/lib/old/base-formly-component.js.map +1 -1
  151. package/lib/old/condition-wait.js.map +1 -1
  152. package/lib/old/dual-component-ctrl.js +2 -2
  153. package/lib/old/dual-component-ctrl.js.map +1 -1
  154. package/lib/old/execute-command.js.map +1 -1
  155. package/lib/old/helpers.js.map +1 -1
  156. package/lib/old/models.js.map +1 -1
  157. package/lib/utils.js.map +1 -1
  158. package/lib/validators/validators-firedev.js.map +1 -1
  159. package/lib/validators/validators-git.js.map +1 -1
  160. package/lib/validators/validators-network.js.map +1 -1
  161. package/lib/validators/validators.js.map +1 -1
  162. package/migrations/1736198527297_init.js.map +1 -1
  163. package/migrations/1736199486472_addingNotAssignablePorts.js.map +1 -1
  164. package/migrations/1736454437350_addFreePorts.js.map +1 -1
  165. package/migrations/index.js.map +1 -1
  166. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  167. package/package.json +5 -5
  168. package/tmp-environment.json +2 -2
  169. package/websql/README.md +24 -24
  170. package/websql/fesm2022/tnp-helpers.mjs +468 -431
  171. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  172. package/websql/lib/base/classes/{base-cli-worker-config.d.ts → base-cli-worker/base-cli-worker-config.d.ts} +2 -2
  173. package/websql/lib/base/classes/base-cli-worker/base-cli-worker-terminal-ui.d.ts +40 -0
  174. package/{browser/lib/base/classes → websql/lib/base/classes/base-cli-worker}/base-cli-worker.d.ts +23 -45
  175. package/websql/lib/base/classes/base-cli-worker/index.d.ts +5 -0
  176. package/websql/lib/base/classes/base-git.d.ts +1 -1
  177. package/websql/lib/base/classes/base-node-modules.d.ts +1 -1
  178. package/websql/lib/base/classes/index.d.ts +0 -2
  179. package/websql/lib/base/tcp-udp-ports/ports.controller.d.ts +2 -2
  180. package/websql/lib/base/tcp-udp-ports/tcp-udp-ports.context.d.ts +10 -43
  181. package/websql/lib/base/tcp-udp-ports/tcp-upd-ports-terminal-ui.d.ts +20 -0
  182. package/websql/lib/base/tcp-udp-ports/tcp-upd-ports.worker.d.ts +6 -22
  183. package/websql/lib/models.d.ts +3 -1
  184. package/browser/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  185. package/browser/esm2022/lib/base/classes/base-cli-worker-config.mjs +0 -37
  186. package/browser/esm2022/lib/base/classes/base-cli-worker-controller.mjs +0 -125
  187. package/browser/esm2022/lib/base/classes/base-cli-worker.mjs +0 -523
  188. package/browser/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  189. package/browser/esm2022/lib/base/classes/base-db.mjs +0 -31
  190. package/browser/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  191. package/browser/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  192. package/browser/esm2022/lib/base/classes/base-git.mjs +0 -1175
  193. package/browser/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  194. package/browser/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  195. package/browser/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  196. package/browser/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  197. package/browser/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  198. package/browser/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  199. package/browser/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  200. package/browser/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  201. package/browser/esm2022/lib/base/classes/base-project.mjs +0 -922
  202. package/browser/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  203. package/browser/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  204. package/browser/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  205. package/browser/esm2022/lib/base/classes/base-vscode.mjs +0 -534
  206. package/browser/esm2022/lib/base/classes/index.mjs +0 -26
  207. package/browser/esm2022/lib/base/commit-data.mjs +0 -633
  208. package/browser/esm2022/lib/base/config-database.mjs +0 -46
  209. package/browser/esm2022/lib/base/core-project.mjs +0 -115
  210. package/browser/esm2022/lib/base/index.mjs +0 -10
  211. package/browser/esm2022/lib/base/linked-project.mjs +0 -90
  212. package/browser/esm2022/lib/base/project-database.mjs +0 -18
  213. package/browser/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  214. package/browser/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  215. package/browser/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  216. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  217. package/browser/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -298
  218. package/browser/esm2022/lib/base/translate.mjs +0 -566
  219. package/browser/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  220. package/browser/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  221. package/browser/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  222. package/browser/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  223. package/browser/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  224. package/browser/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  225. package/browser/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  226. package/browser/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  227. package/browser/esm2022/lib/helpers/helpers.mjs +0 -428
  228. package/browser/esm2022/lib/index.mjs +0 -13
  229. package/browser/esm2022/lib/models.mjs +0 -175
  230. package/browser/esm2022/lib/utils.mjs +0 -952
  231. package/browser/esm2022/lib/validators/validators-git.mjs +0 -12
  232. package/browser/esm2022/lib/validators/validators-network.mjs +0 -18
  233. package/browser/esm2022/lib/validators/validators.mjs +0 -10
  234. package/browser/esm2022/migrations/1736198527297_init.mjs +0 -41
  235. package/browser/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  236. package/browser/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  237. package/browser/esm2022/migrations/index.mjs +0 -5
  238. package/browser/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  239. package/browser/esm2022/public-api.mjs +0 -2
  240. package/browser/esm2022/tnp-helpers.mjs +0 -5
  241. package/cli.d.ts +0 -6
  242. package/client/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  243. package/client/esm2022/lib/base/classes/base-cli-worker-config.mjs +0 -37
  244. package/client/esm2022/lib/base/classes/base-cli-worker-controller.mjs +0 -125
  245. package/client/esm2022/lib/base/classes/base-cli-worker.mjs +0 -523
  246. package/client/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  247. package/client/esm2022/lib/base/classes/base-db.mjs +0 -31
  248. package/client/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  249. package/client/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  250. package/client/esm2022/lib/base/classes/base-git.mjs +0 -1175
  251. package/client/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  252. package/client/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  253. package/client/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  254. package/client/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  255. package/client/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  256. package/client/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  257. package/client/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  258. package/client/esm2022/lib/base/classes/base-project-resolver.mjs +0 -282
  259. package/client/esm2022/lib/base/classes/base-project.mjs +0 -922
  260. package/client/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  261. package/client/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  262. package/client/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  263. package/client/esm2022/lib/base/classes/base-vscode.mjs +0 -534
  264. package/client/esm2022/lib/base/classes/index.mjs +0 -26
  265. package/client/esm2022/lib/base/commit-data.mjs +0 -633
  266. package/client/esm2022/lib/base/config-database.mjs +0 -46
  267. package/client/esm2022/lib/base/core-project.mjs +0 -115
  268. package/client/esm2022/lib/base/index.mjs +0 -10
  269. package/client/esm2022/lib/base/linked-project.mjs +0 -90
  270. package/client/esm2022/lib/base/project-database.mjs +0 -18
  271. package/client/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  272. package/client/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  273. package/client/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -33
  274. package/client/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  275. package/client/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -298
  276. package/client/esm2022/lib/base/translate.mjs +0 -566
  277. package/client/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  278. package/client/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  279. package/client/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  280. package/client/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  281. package/client/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  282. package/client/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  283. package/client/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  284. package/client/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  285. package/client/esm2022/lib/helpers/helpers.mjs +0 -428
  286. package/client/esm2022/lib/index.mjs +0 -13
  287. package/client/esm2022/lib/models.mjs +0 -175
  288. package/client/esm2022/lib/utils.mjs +0 -952
  289. package/client/esm2022/lib/validators/validators-git.mjs +0 -12
  290. package/client/esm2022/lib/validators/validators-network.mjs +0 -18
  291. package/client/esm2022/lib/validators/validators.mjs +0 -10
  292. package/client/esm2022/migrations/1736198527297_init.mjs +0 -41
  293. package/client/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  294. package/client/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  295. package/client/esm2022/migrations/index.mjs +0 -5
  296. package/client/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  297. package/client/esm2022/public-api.mjs +0 -2
  298. package/client/esm2022/tnp-helpers.mjs +0 -5
  299. package/env.d.ts +0 -3
  300. package/environments/angular-node-app/env.angular-node-app.__.d.ts +0 -3
  301. package/environments/angular-node-app/env.angular-node-app.prod.d.ts +0 -3
  302. package/environments/docs-webapp/env.docs-webapp.__.d.ts +0 -3
  303. package/environments/electron-app/env.electron-app.__.d.ts +0 -3
  304. package/environments/electron-app/env.electron-app.prod.d.ts +0 -3
  305. package/environments/mobile-app/env.mobile-app.__.d.ts +0 -3
  306. package/environments/mobile-app/env.mobile-app.prod.d.ts +0 -3
  307. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.__.d.ts +0 -3
  308. package/environments/npm-lib-and-cli-tool/env.npm-lib-and-cli-tool.prod.d.ts +0 -3
  309. package/environments/vscode-plugin/env.vscode-plugin.__.d.ts +0 -6
  310. package/environments/vscode-plugin/env.vscode-plugin.prod.d.ts +0 -4
  311. package/global-typings.d.ts +0 -41
  312. package/lib/base/classes/base-cli-worker-config.js.map +0 -1
  313. package/lib/base/classes/base-cli-worker-controller.js.map +0 -1
  314. package/lib/base/classes/base-cli-worker.js.map +0 -1
  315. package/lib/base/classes/base-detached-service.d.ts +0 -5
  316. package/lib/base/classes/base-detached-service.js +0 -12
  317. package/lib/base/classes/base-detached-service.js.map +0 -1
  318. package/lib/base/classes/base-github-pages.d.ts +0 -14
  319. package/lib/constants.d.ts +0 -77
  320. package/lib/helpers/for-backend/helpers-file-folders.backend.d.ts +0 -104
  321. package/lib/helpers/for-backend/helpers-file-folders.backend.js +0 -956
  322. package/lib/helpers/for-backend/helpers-file-folders.backend.js.map +0 -1
  323. package/lib/helpers/for-backend/helpers-process.backend.d.ts +0 -87
  324. package/lib/helpers/for-backend/helpers-process.backend.js +0 -496
  325. package/lib/helpers/for-backend/helpers-process.backend.js.map +0 -1
  326. package/lib/helpers/for-backend/ts-code/index.d.ts +0 -1
  327. package/lib/helpers/for-backend/ts-code/ts-import-export-extractor.d.ts +0 -29
  328. package/lib/helpers.d.ts +0 -0
  329. package/lib/options.d.ts +0 -252
  330. package/lib/project/abstract/artifacts/__helpers__/artifacts-helpers.d.ts +0 -28
  331. package/lib/project/abstract/artifacts/__helpers__/branding.d.ts +0 -13
  332. package/lib/project/abstract/artifacts/__helpers__/environment-config/environment-config.d.ts +0 -26
  333. package/lib/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.d.ts +0 -53
  334. package/lib/project/abstract/artifacts/angular-node-app/index.d.ts +0 -1
  335. package/lib/project/abstract/artifacts/angular-node-app/tools/assets-list-file-generator.d.ts +0 -19
  336. package/lib/project/abstract/artifacts/angular-node-app/tools/assets-manager.d.ts +0 -5
  337. package/lib/project/abstract/artifacts/angular-node-app/tools/basename-manager.d.ts +0 -17
  338. package/lib/project/abstract/artifacts/angular-node-app/tools/docs-app-build-config.d.ts +0 -21
  339. package/lib/project/abstract/artifacts/angular-node-app/tools/inside-struct-angular13-app.d.ts +0 -6
  340. package/lib/project/abstract/artifacts/angular-node-app/tools/migrations-helper.d.ts +0 -18
  341. package/lib/project/abstract/artifacts/artifacts-manager.d.ts +0 -39
  342. package/lib/project/abstract/artifacts/base-artifact.d.ts +0 -52
  343. package/lib/project/abstract/artifacts/docs-webapp/artifact-docs-webapp.d.ts +0 -27
  344. package/lib/project/abstract/artifacts/docs-webapp/docs.d.ts +0 -55
  345. package/lib/project/abstract/artifacts/docs-webapp/index.d.ts +0 -1
  346. package/lib/project/abstract/artifacts/electron-app/artifact-electron-app.d.ts +0 -22
  347. package/lib/project/abstract/artifacts/electron-app/index.d.ts +0 -1
  348. package/lib/project/abstract/artifacts/mobile-app/artifact-mobile-app.d.ts +0 -16
  349. package/lib/project/abstract/artifacts/mobile-app/index.d.ts +0 -1
  350. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/artifact-npm-lib-and-cli-tool.d.ts +0 -82
  351. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/index.d.ts +0 -1
  352. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/browser-code-cut.d.ts +0 -102
  353. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/code-cut.d.ts +0 -41
  354. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/code-split-process.enum.d.ts +0 -44
  355. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/cut-fn.d.ts +0 -1
  356. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/file-split-process.d.ts +0 -14
  357. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/compilation-backend.d.ts +0 -60
  358. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/compilation-browser.d.ts +0 -41
  359. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/incremental-build-process.d.ts +0 -23
  360. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/base-copy-manager.d.ts +0 -85
  361. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager-helpers.d.ts +0 -12
  362. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager-organization.d.ts +0 -0
  363. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager-standalone.d.ts +0 -77
  364. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager.d.ts +0 -7
  365. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/mjs-fesm-module-spliter.d.ts +0 -46
  366. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/source-maping-url.d.ts +0 -11
  367. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/typescript-dts-fixer.d.ts +0 -25
  368. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/files-recreation/files-recreator.d.ts +0 -133
  369. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/files-recreation/files-templates.d.ts +0 -8
  370. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/files-recreation/index.d.ts +0 -2
  371. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/index-autogen-provider.d.ts +0 -15
  372. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-struct-angular13-lib.d.ts +0 -6
  373. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/inside-struct.d.ts +0 -44
  374. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/inside-structures.d.ts +0 -17
  375. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/base-inside-struct.d.ts +0 -12
  376. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/inside-struct-constants.d.ts +0 -2
  377. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/inside-struct-helpers.d.ts +0 -12
  378. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/image-loader.d.ts +0 -1
  379. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-default.d.ts +0 -1
  380. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-ellipsis.d.ts +0 -1
  381. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-facebook.d.ts +0 -1
  382. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-grid.d.ts +0 -1
  383. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-heart.d.ts +0 -1
  384. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loader-ids-ripple.d.ts +0 -1
  385. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-structures/structs/loaders/loaders.d.ts +0 -2
  386. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/lib-project/lib-project-base.d.ts +0 -9
  387. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/lib-project/lib-project-standalone.d.ts +0 -9
  388. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/singular-build.d.ts +0 -0
  389. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/cypress-test-runner.d.ts +0 -7
  390. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/index.d.ts +0 -3
  391. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/jest-test-runner.d.ts +0 -8
  392. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/test-runner/mocha-test-runner.d.ts +0 -7
  393. package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/webpack-backend-compilation.d.ts +0 -0
  394. package/lib/project/abstract/artifacts/vscode-plugin/artifact-vscode-plugin.d.ts +0 -33
  395. package/lib/project/abstract/artifacts/vscode-plugin/index.d.ts +0 -1
  396. package/lib/project/abstract/framework.d.ts +0 -61
  397. package/lib/project/abstract/git.d.ts +0 -26
  398. package/lib/project/abstract/library-build.d.ts +0 -9
  399. package/lib/project/abstract/linked-projects.d.ts +0 -4
  400. package/lib/project/abstract/linter.d.ts +0 -9
  401. package/lib/project/abstract/node-modules.d.ts +0 -35
  402. package/lib/project/abstract/npm-helpers.d.ts +0 -22
  403. package/lib/project/abstract/package-json.d.ts +0 -14
  404. package/lib/project/abstract/packages-recognition.d.ts +0 -16
  405. package/lib/project/abstract/project-resolve.d.ts +0 -37
  406. package/lib/project/abstract/project.d.ts +0 -63
  407. package/lib/project/abstract/quick-fixes.d.ts +0 -18
  408. package/lib/project/abstract/release-process/index.d.ts +0 -1
  409. package/lib/project/abstract/release-process/release-config.d.ts +0 -0
  410. package/lib/project/abstract/release-process/release-process.d.ts +0 -26
  411. package/lib/project/abstract/taon-worker/taon-build.controller.d.ts +0 -5
  412. package/lib/project/abstract/taon-worker/taon-build.entity.d.ts +0 -8
  413. package/lib/project/abstract/taon-worker/taon-env.entity.d.ts +0 -10
  414. package/lib/project/abstract/taon-worker/taon-project.entity.d.ts +0 -8
  415. package/lib/project/abstract/taon-worker/taon.context.d.ts +0 -56
  416. package/lib/project/abstract/taon-worker/taon.controller.d.ts +0 -7
  417. package/lib/project/abstract/taon-worker/taon.worker.d.ts +0 -40
  418. package/lib/project/abstract/taonJson.d.ts +0 -49
  419. package/lib/project/abstract/vscode.d.ts +0 -80
  420. package/lib/project/cli/base-cli.d.ts +0 -8
  421. package/lib/project/cli/cli-BRANDING.d.ts +0 -23
  422. package/lib/project/cli/cli-BUILD.d.ts +0 -4
  423. package/lib/project/cli/cli-DOCS.d.ts +0 -4
  424. package/lib/project/cli/cli-INIT.d.ts +0 -13
  425. package/lib/project/cli/cli-LINK.d.ts +0 -23
  426. package/lib/project/cli/cli-MIGRATION.d.ts +0 -4
  427. package/lib/project/cli/cli-NEW.d.ts +0 -15
  428. package/lib/project/cli/cli-OPEN.d.ts +0 -15
  429. package/lib/project/cli/cli-RELEASE.d.ts +0 -4
  430. package/lib/project/cli/cli-TEST.d.ts +0 -23
  431. package/lib/project/cli/cli-VERSION.d.ts +0 -16
  432. package/lib/project/cli/cli-VSCODE.d.ts +0 -17
  433. package/lib/project/cli/cli-_GLOBAL_.d.ts +0 -85
  434. package/lib/project/cli/index.d.ts +0 -29
  435. package/lib/project/index.d.ts +0 -0
  436. package/lib/templates.d.ts +0 -1
  437. package/migrations/1737301724542_addingSampleData.d.ts +0 -14
  438. package/start.backend.d.ts +0 -2
  439. package/taon.jsonc +0 -34
  440. package/websql/esm2022/lib/base/classes/base-bower-json.mjs +0 -14
  441. package/websql/esm2022/lib/base/classes/base-cli-worker-config.mjs +0 -37
  442. package/websql/esm2022/lib/base/classes/base-cli-worker-controller.mjs +0 -125
  443. package/websql/esm2022/lib/base/classes/base-cli-worker.mjs +0 -523
  444. package/websql/esm2022/lib/base/classes/base-compiler-for-project.mjs +0 -61
  445. package/websql/esm2022/lib/base/classes/base-db.mjs +0 -31
  446. package/websql/esm2022/lib/base/classes/base-debounce-compiler-for-project.mjs +0 -56
  447. package/websql/esm2022/lib/base/classes/base-feature-for-project.mjs +0 -11
  448. package/websql/esm2022/lib/base/classes/base-git.mjs +0 -1175
  449. package/websql/esm2022/lib/base/classes/base-json-file-reader.mjs +0 -114
  450. package/websql/esm2022/lib/base/classes/base-library-build.mjs +0 -613
  451. package/websql/esm2022/lib/base/classes/base-linked-projects.mjs +0 -323
  452. package/websql/esm2022/lib/base/classes/base-node-modules.mjs +0 -417
  453. package/websql/esm2022/lib/base/classes/base-npm-helpers.mjs +0 -266
  454. package/websql/esm2022/lib/base/classes/base-package-json.mjs +0 -340
  455. package/websql/esm2022/lib/base/classes/base-process-manager.mjs +0 -285
  456. package/websql/esm2022/lib/base/classes/base-project-resolver.mjs +0 -272
  457. package/websql/esm2022/lib/base/classes/base-project.mjs +0 -891
  458. package/websql/esm2022/lib/base/classes/base-quick-fixes.mjs +0 -88
  459. package/websql/esm2022/lib/base/classes/base-release-process.mjs +0 -599
  460. package/websql/esm2022/lib/base/classes/base-static-pages.mjs +0 -110
  461. package/websql/esm2022/lib/base/classes/base-vscode.mjs +0 -534
  462. package/websql/esm2022/lib/base/classes/index.mjs +0 -26
  463. package/websql/esm2022/lib/base/commit-data.mjs +0 -633
  464. package/websql/esm2022/lib/base/config-database.mjs +0 -46
  465. package/websql/esm2022/lib/base/core-project.mjs +0 -115
  466. package/websql/esm2022/lib/base/index.mjs +0 -10
  467. package/websql/esm2022/lib/base/linked-project.mjs +0 -90
  468. package/websql/esm2022/lib/base/project-database.mjs +0 -18
  469. package/websql/esm2022/lib/base/tcp-udp-ports/index.mjs +0 -6
  470. package/websql/esm2022/lib/base/tcp-udp-ports/ports.controller.mjs +0 -260
  471. package/websql/esm2022/lib/base/tcp-udp-ports/ports.entity.mjs +0 -56
  472. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-udp-ports.context.mjs +0 -32
  473. package/websql/esm2022/lib/base/tcp-udp-ports/tcp-upd-ports.worker.mjs +0 -298
  474. package/websql/esm2022/lib/base/translate.mjs +0 -566
  475. package/websql/esm2022/lib/helpers/for-backend/helpers-file-folders.mjs +0 -1008
  476. package/websql/esm2022/lib/helpers/for-backend/helpers-process.mjs +0 -493
  477. package/websql/esm2022/lib/helpers/for-browser/angular.helper.mjs +0 -89
  478. package/websql/esm2022/lib/helpers/for-browser/helpers-browser.mjs +0 -47
  479. package/websql/esm2022/lib/helpers/helpers-array-obj.mjs +0 -118
  480. package/websql/esm2022/lib/helpers/helpers-numbers.mjs +0 -12
  481. package/websql/esm2022/lib/helpers/helpers-strings-regexes.mjs +0 -51
  482. package/websql/esm2022/lib/helpers/helpers-strings.mjs +0 -258
  483. package/websql/esm2022/lib/helpers/helpers.mjs +0 -428
  484. package/websql/esm2022/lib/index.mjs +0 -13
  485. package/websql/esm2022/lib/models.mjs +0 -175
  486. package/websql/esm2022/lib/utils.mjs +0 -952
  487. package/websql/esm2022/lib/validators/validators-git.mjs +0 -12
  488. package/websql/esm2022/lib/validators/validators-network.mjs +0 -18
  489. package/websql/esm2022/lib/validators/validators.mjs +0 -10
  490. package/websql/esm2022/migrations/1736198527297_init.mjs +0 -41
  491. package/websql/esm2022/migrations/1736199486472_addingNotAssignablePorts.mjs +0 -63
  492. package/websql/esm2022/migrations/1736454437350_addFreePorts.mjs +0 -50
  493. package/websql/esm2022/migrations/index.mjs +0 -5
  494. package/websql/esm2022/migrations/migrations_index._auto-generated_.mjs +0 -16
  495. package/websql/esm2022/public-api.mjs +0 -2
  496. package/websql/esm2022/tnp-helpers.mjs +0 -5
  497. /package/browser/lib/base/classes/{base-cli-worker-controller.d.ts → base-cli-worker/base-cli-worker-controller.d.ts} +0 -0
  498. /package/client/lib/base/classes/{base-cli-worker-controller.d.ts → base-cli-worker/base-cli-worker-controller.d.ts} +0 -0
  499. /package/lib/base/classes/{base-cli-worker-config.js → base-cli-worker/base-cli-worker-config.js} +0 -0
  500. /package/lib/base/classes/{base-cli-worker-controller.d.ts → base-cli-worker/base-cli-worker-controller.d.ts} +0 -0
  501. /package/lib/base/classes/{base-cli-worker-controller.js → base-cli-worker/base-cli-worker-controller.js} +0 -0
  502. /package/websql/lib/base/classes/{base-cli-worker-controller.d.ts → base-cli-worker/base-cli-worker-controller.d.ts} +0 -0
@@ -1,952 +0,0 @@
1
- import { CoreModels, Utils } from 'tnp-core/websql';
2
- import { isExportDeclaration, isImportDeclaration, isNamedImports, isNamedExports, } from 'typescript'; /* */
3
- export var UtilsNpm;
4
- (function (UtilsNpm) {
5
- UtilsNpm.isSpecialVersion = (version) => {
6
- return CoreModels.NpmSpecialVersions.includes(version);
7
- };
8
- UtilsNpm.clearVersion = (version, options) => {
9
- const { removePrefixes, removeSuffix } = options || {};
10
- if (!version || UtilsNpm.isSpecialVersion(version)) {
11
- return version;
12
- }
13
- version = (version || '')
14
- .trim()
15
- .replace(new RegExp(Utils.escapeStringForRegEx('undefined'), 'g'), '0');
16
- if (removePrefixes) {
17
- version = version.replace('^', '').replace('~', '');
18
- }
19
- let [major, minor, patch, alphaOrBetaOrRc] = version.split('.');
20
- if (removeSuffix) {
21
- alphaOrBetaOrRc = '';
22
- }
23
- return UtilsNpm.fixMajorVerNumber(`${major}.${minor}.${patch}${alphaOrBetaOrRc ? '.' + alphaOrBetaOrRc : ''}`);
24
- };
25
- UtilsNpm.fixMajorVerNumber = (version) => {
26
- if (!version || UtilsNpm.isSpecialVersion(version)) {
27
- return version;
28
- }
29
- version = (version || '')
30
- .trim()
31
- .replace(new RegExp(Utils.escapeStringForRegEx('undefined'), 'g'), '0');
32
- const splited = version.split('.');
33
- let [major, minor, patch, alphaOrBetaOrRc] = splited;
34
- if (splited.length === 1) {
35
- minor = '0';
36
- patch = '0';
37
- }
38
- else if (splited.length === 2) {
39
- patch = '0';
40
- }
41
- return `${major}.${minor}.${patch}${alphaOrBetaOrRc ? '.' + alphaOrBetaOrRc : ''}`;
42
- };
43
- })(UtilsNpm || (UtilsNpm = {}));
44
- export var UtilsTypescript;
45
- (function (UtilsTypescript) {
46
- /**
47
- * Remove TypeScript region blocks by their name, including nested regions.
48
- *
49
- * @param sourceCode - The TypeScript source code as a string.
50
- * @param regionName - The name of the region to remove.
51
- * @returns Modified TypeScript code without the specified regions.
52
- */
53
- UtilsTypescript.removeRegionByName = (sourceCode, regionName) => {
54
- /* */
55
- /* */
56
- /* */
57
- /* */
58
- /* */
59
- /* */
60
- /* */
61
- /* */
62
- /* */
63
- /* */
64
- /* */
65
- /* */
66
- /* */
67
- /* */
68
- /* */
69
- /* */
70
- /* */
71
- /* */
72
- /* */
73
- /* */
74
- /* */
75
- /* */
76
- /* */
77
- /* */
78
- /* */
79
- /* */
80
- /* */
81
- /* */
82
- /* */
83
- /* */
84
- /* */
85
- /* */
86
- /* */
87
- /* */
88
- /* */
89
- /* */
90
- /* */
91
- /* */
92
- /* */
93
- /* */
94
- /* */
95
- /* */
96
- /* */
97
- /* */
98
- /* */
99
- /* */
100
- /* */
101
- /* */
102
- /* */
103
- /* */
104
- /* */
105
- /* */
106
- /* */
107
- /* */
108
- /* */
109
- /* */
110
- /* */
111
- /* */
112
- /* */
113
- /* */
114
- /* */
115
- /* */
116
- /* */
117
- /* */
118
- /* */
119
- /* */
120
- /* */
121
- /* */
122
- /* */
123
- /* */
124
- /* */
125
- /* */
126
- /* */
127
- /* */
128
- /* */
129
- /* */
130
- /* */
131
- /* */
132
- /* */
133
- /* */
134
- /* */
135
- /* */
136
- /* */
137
- /* */
138
- /* */
139
- /* */
140
- /* */
141
- /* */
142
- /* */
143
- /* */
144
- /* */
145
- /* */
146
- /* */
147
- /* */
148
- /* */
149
- /* */
150
- /* */
151
- /* */
152
- /* */
153
- /* */
154
- /* */
155
- /* */
156
- /* */
157
- /* */
158
- /* */
159
- /* */
160
- /* */
161
- /* */
162
- /* */
163
- /* */
164
- /* */
165
- /* */
166
- /* */
167
- /* */
168
- /* */
169
- /* */
170
- return (void 0);
171
- };
172
- const isExported = (node) => {
173
- /* */
174
- /* */
175
- /* */
176
- /* */
177
- /* */
178
- return (void 0);
179
- };
180
- /**
181
- * Function to extract exports from a TypeScript file
182
- */
183
- UtilsTypescript.exportsFromFile = (filePath) => {
184
- /* */
185
- /* */
186
- /* */
187
- /* */
188
- /* */
189
- /* */
190
- return (void 0);
191
- };
192
- /**
193
- * Function to extract exports from a TypeScript file
194
- */
195
- UtilsTypescript.exportsFromContent = (fileContent) => {
196
- /* */
197
- /* */
198
- /* */
199
- /* */
200
- /* */
201
- /* */
202
- /* */
203
- /* */
204
- /* */
205
- /* */
206
- /* */
207
- /* */
208
- /* */
209
- /* */
210
- /* */
211
- /* */
212
- /* */
213
- /* */
214
- /* */
215
- /* */
216
- /* */
217
- /* */
218
- /* */
219
- /* */
220
- /* */
221
- /* */
222
- /* */
223
- /* */
224
- /* */
225
- /* */
226
- /* */
227
- /* */
228
- /* */
229
- /* */
230
- /* */
231
- /* */
232
- /* */
233
- /* */
234
- /* */
235
- /* */
236
- /* */
237
- /* */
238
- /* */
239
- /* */
240
- /* */
241
- /* */
242
- /* */
243
- /* */
244
- /* */
245
- /* */
246
- /* */
247
- /* */
248
- /* */
249
- /* */
250
- /* */
251
- /* */
252
- /* */
253
- /* */
254
- /* */
255
- /* */
256
- /* */
257
- /* */
258
- /* */
259
- /* */
260
- /* */
261
- /* */
262
- /* */
263
- /* */
264
- /* */
265
- /* */
266
- /* */
267
- /* */
268
- /* */
269
- return (void 0);
270
- };
271
- UtilsTypescript.extractDefaultClassNameFromString = (sourceCode) => {
272
- /* */
273
- /* */
274
- /* */
275
- /* */
276
- /* */
277
- /* */
278
- /* */
279
- /* */
280
- /* */
281
- /* */
282
- /* */
283
- /* */
284
- /* */
285
- /* */
286
- /* */
287
- /* */
288
- /* */
289
- /* */
290
- /* */
291
- /* */
292
- /* */
293
- return (void 0);
294
- };
295
- UtilsTypescript.extractClassNameFromString = (sourceCode) => {
296
- /* */
297
- /* */
298
- /* */
299
- /* */
300
- /* */
301
- /* */
302
- /* */
303
- /* */
304
- /* */
305
- /* */
306
- /* */
307
- /* */
308
- /* */
309
- /* */
310
- /* */
311
- /* */
312
- /* */
313
- /* */
314
- return (void 0);
315
- };
316
- UtilsTypescript.extractClassNamesFromFile = (absoluteFilePath) => {
317
- /* */
318
- /* */
319
- /* */
320
- /* */
321
- /* */
322
- /* */
323
- return (void 0);
324
- };
325
- UtilsTypescript.extractDefaultClassNameFromFile = (absoluteFilePath) => {
326
- /* */
327
- /* */
328
- /* */
329
- return (void 0);
330
- };
331
- UtilsTypescript.formatFile = (absPathToFile) => {
332
- /* */
333
- /* */
334
- /* */
335
- /* */
336
- /* */
337
- /* */
338
- /* */
339
- /* */
340
- /* */
341
- /* */
342
- /* */
343
- /* */
344
- /* */
345
- return (void 0);
346
- };
347
- UtilsTypescript.formatAllFilesInsideFolder = (absPathToFolder) => {
348
- /* */
349
- /* */
350
- /* */
351
- /* */
352
- /* */
353
- /* */
354
- /* */
355
- /* */
356
- /* */
357
- return (void 0);
358
- };
359
- UtilsTypescript.getTaonContextFromContent = (fileContent) => {
360
- /* */
361
- /* */
362
- /* */
363
- /* */
364
- /* */
365
- /* */
366
- /* */
367
- /* */
368
- /* */
369
- /* */
370
- /* */
371
- /* */
372
- /* */
373
- /* */
374
- /* */
375
- /* */
376
- /* */
377
- /* */
378
- /* */
379
- /* */
380
- /* */
381
- /* */
382
- /* */
383
- /* */
384
- /* */
385
- /* */
386
- /* */
387
- /* */
388
- /* */
389
- /* */
390
- /* */
391
- /* */
392
- /* */
393
- /* */
394
- /* */
395
- /* */
396
- /* */
397
- /* */
398
- /* */
399
- /* */
400
- /* */
401
- /* */
402
- /* */
403
- /* */
404
- /* */
405
- /* */
406
- /* */
407
- /* */
408
- /* */
409
- /* */
410
- /* */
411
- /* */
412
- return (void 0);
413
- };
414
- UtilsTypescript.getTaonContextsNamesFromFile = (tsAbsFilePath) => {
415
- /* */
416
- /* */
417
- return (void 0);
418
- };
419
- UtilsTypescript.extractAngularComponentSelectors = (fileAbsPath) => {
420
- /* */
421
- /* */
422
- /* */
423
- /* */
424
- /* */
425
- /* */
426
- /* */
427
- /* */
428
- /* */
429
- /* */
430
- /* */
431
- /* */
432
- /* */
433
- /* */
434
- /* */
435
- /* */
436
- /* */
437
- /* */
438
- /* */
439
- /* */
440
- /* */
441
- /* */
442
- /* */
443
- /* */
444
- /* */
445
- /* */
446
- /* */
447
- /* */
448
- /* */
449
- /* */
450
- /* */
451
- /* */
452
- /* */
453
- /* */
454
- /* */
455
- /* */
456
- /* */
457
- /* */
458
- /* */
459
- /* */
460
- /* */
461
- /* */
462
- /* */
463
- /* */
464
- /* */
465
- /* */
466
- /* */
467
- return (void 0);
468
- };
469
- UtilsTypescript.wrapWithComment = (oneLineComment, absDestFilePath) => {
470
- /* */
471
- /* */
472
- /* */
473
- /* */
474
- /* */
475
- /* */
476
- /* */
477
- /* */
478
- /* */
479
- /* */
480
- /* */
481
- /* */
482
- /* */
483
- /* */
484
- /* */
485
- /* */
486
- /* */
487
- /* */
488
- /* */
489
- /* */
490
- /* */
491
- /* */
492
- /* */
493
- /* */
494
- return (void 0);
495
- };
496
- /**
497
- * Attempts to set or add an exported const with given name and value.
498
- */
499
- UtilsTypescript.setValueToVariableInTsFile = (tsAbsFilePath, variableName, valueOfVariable, addIfNotExists = true) => {
500
- /* */
501
- /* */
502
- /* */
503
- /* */
504
- /* */
505
- /* */
506
- /* */
507
- /* */
508
- /* */
509
- /* */
510
- /* */
511
- /* */
512
- /* */
513
- /* */
514
- /* */
515
- /* */
516
- /* */
517
- /* */
518
- /* */
519
- /* */
520
- /* */
521
- /* */
522
- /* */
523
- /* */
524
- /* */
525
- /* */
526
- /* */
527
- /* */
528
- /* */
529
- /* */
530
- /* */
531
- /* */
532
- /* */
533
- /* */
534
- /* */
535
- /* */
536
- /* */
537
- /* */
538
- /* */
539
- /* */
540
- /* */
541
- /* */
542
- /* */
543
- /* */
544
- /* */
545
- /* */
546
- /* */
547
- /* */
548
- /* */
549
- /* */
550
- /* */
551
- /* */
552
- /* */
553
- /* */
554
- /* */
555
- /* */
556
- /* */
557
- /* */
558
- /* */
559
- /* */
560
- /* */
561
- /* */
562
- /* */
563
- /* */
564
- /* */
565
- /* */
566
- /* */
567
- /* */
568
- /* */
569
- /* */
570
- /* */
571
- /* */
572
- /* */
573
- /* */
574
- /* */
575
- /* */
576
- /* */
577
- /* */
578
- /* */
579
- /* */
580
- /* */
581
- /* */
582
- /* */
583
- /* */
584
- /* */
585
- /* */
586
- /* */
587
- /* */
588
- /* */
589
- /* */
590
- /* */
591
- /* */
592
- /* */
593
- /* */
594
- /* */
595
- /* */
596
- /* */
597
- /* */
598
- /* */
599
- /* */
600
- /* */
601
- /* */
602
- /* */
603
- /* */
604
- /* */
605
- /* */
606
- /* */
607
- /* */
608
- /* */
609
- /* */
610
- /* */
611
- /* */
612
- /* */
613
- /* */
614
- /* */
615
- /* */
616
- return (void 0);
617
- };
618
- class TsImportExport {
619
- removeStartEndQuotes(str) {
620
- return str.replace(/^['"`]/, '').replace(/['"`]$/, '');
621
- }
622
- /**
623
- * it will extract part of the file content
624
- * that is between startRow, startCol and endRow, endCol
625
- * and contains import/export/require statement
626
- */
627
- getStringPartFrom(wholeContentOfFile) {
628
- const lines = wholeContentOfFile.split('\n');
629
- const startRowIndex = this.startRow - 1;
630
- const endRowIndex = this.endRow - 1;
631
- if (startRowIndex >= lines.length || endRowIndex >= lines.length) {
632
- throw new Error('Row index out of bounds.');
633
- }
634
- let extractedLines = [];
635
- for (let i = startRowIndex; i <= endRowIndex; i++) {
636
- let line = lines[i];
637
- if (i === startRowIndex && i === endRowIndex) {
638
- extractedLines.push(line.substring(this.startCol - 1, this.endCol));
639
- }
640
- else if (i === startRowIndex) {
641
- extractedLines.push(line.substring(this.startCol - 1));
642
- }
643
- else if (i === endRowIndex) {
644
- extractedLines.push(line.substring(0, this.endCol));
645
- }
646
- else {
647
- extractedLines.push(line);
648
- }
649
- }
650
- return extractedLines.join('\n');
651
- }
652
- wrapInParenthesis(str) {
653
- return this.parenthesisType === 'single'
654
- ? `'${str}'`
655
- : this.parenthesisType === 'double'
656
- ? `"${str}"`
657
- : `\`${str}\``;
658
- }
659
- constructor(type, embeddedPathToFile, start, end, parenthesisType, importElements = []) {
660
- this.importElements = [];
661
- this.type = type;
662
- this.isIsomorphic = false;
663
- this.embeddedPathToFile = embeddedPathToFile;
664
- this.cleanEmbeddedPathToFile =
665
- this.removeStartEndQuotes(embeddedPathToFile);
666
- this.embeddedPathToFileResult = embeddedPathToFile;
667
- this.startRow = start.line + 1; // TypeScript lines are zero-based
668
- this.startCol = start.character + 1;
669
- this.endRow = end.line + 1;
670
- this.endCol = end.character + 1;
671
- this.parenthesisType = parenthesisType;
672
- this.importElements = importElements;
673
- }
674
- }
675
- UtilsTypescript.TsImportExport = TsImportExport;
676
- const getQuoteType = (text) => {
677
- if (text.startsWith('`'))
678
- return 'tics';
679
- if (text.startsWith("'"))
680
- return 'single';
681
- return 'double';
682
- };
683
- const extractImportExportElements = (node) => {
684
- const elements = [];
685
- if (isImportDeclaration(node) && node.importClause) {
686
- if (node.importClause.namedBindings &&
687
- isNamedImports(node.importClause.namedBindings)) {
688
- elements.push(...node.importClause.namedBindings.elements.map(el => el.name.text));
689
- }
690
- }
691
- else if (isExportDeclaration(node) && node.exportClause) {
692
- if (isNamedExports(node.exportClause)) {
693
- elements.push(...node.exportClause.elements.map(el => el.name.text));
694
- }
695
- }
696
- return elements;
697
- };
698
- UtilsTypescript.recognizeImportsFromFile = (fileAbsPAth) => {
699
- /* */
700
- /* */
701
- /* */
702
- return (void 0);
703
- };
704
- UtilsTypescript.recognizeImportsFromContent = (fileContent) => {
705
- /* */
706
- /* */
707
- /* */
708
- /* */
709
- /* */
710
- /* */
711
- /* */
712
- /* */
713
- /* */
714
- /* */
715
- /* */
716
- /* */
717
- /* */
718
- /* */
719
- /* */
720
- /* */
721
- /* */
722
- /* */
723
- /* */
724
- /* */
725
- /* */
726
- /* */
727
- /* */
728
- /* */
729
- /* */
730
- /* */
731
- /* */
732
- /* */
733
- /* */
734
- /* */
735
- /* */
736
- /* */
737
- /* */
738
- /* */
739
- /* */
740
- /* */
741
- /* */
742
- /* */
743
- /* */
744
- /* */
745
- /* */
746
- /* */
747
- /* */
748
- /* */
749
- /* */
750
- /* */
751
- /* */
752
- /* */
753
- /* */
754
- /* */
755
- /* */
756
- /* */
757
- /* */
758
- /* */
759
- /* */
760
- /* */
761
- /* */
762
- /* */
763
- /* */
764
- /* */
765
- /* */
766
- /* */
767
- /* */
768
- /* */
769
- /* */
770
- /* */
771
- /* */
772
- /* */
773
- /* */
774
- /* */
775
- /* */
776
- /* */
777
- /* */
778
- /* */
779
- /* */
780
- /* */
781
- /* */
782
- /* */
783
- /* */
784
- /* */
785
- /* */
786
- /* */
787
- /* */
788
- /* */
789
- return (void 0);
790
- };
791
- })(UtilsTypescript || (UtilsTypescript = {}));
792
- export var UtilsHttp;
793
- (function (UtilsHttp) {
794
- UtilsHttp.startHttpServer = async (cwd, port) => {
795
- /* */
796
- /* */
797
- /* */
798
- /* */
799
- /* */
800
- /* */
801
- /* */
802
- /* */
803
- /* */
804
- /* */
805
- /* */
806
- /* */
807
- /* */
808
- /* */
809
- /* */
810
- /* */
811
- /* */
812
- /* */
813
- /* */
814
- /* */
815
- /* */
816
- /* */
817
- /* */
818
- /* */
819
- /* */
820
- /* */
821
- /* */
822
- return (void 0);
823
- };
824
- })(UtilsHttp || (UtilsHttp = {}));
825
- export var UtilsMd;
826
- (function (UtilsMd) {
827
- /**
828
- * extract assets pathes from .md file
829
- */
830
- UtilsMd.getAssets = (mdfileContent) => {
831
- /* */
832
- /* */
833
- /* */
834
- /* */
835
- /* */
836
- /* */
837
- /* */
838
- /* */
839
- /* */
840
- /* */
841
- /* */
842
- /* */
843
- /* */
844
- /* */
845
- /* */
846
- /* */
847
- /* */
848
- /* */
849
- /* */
850
- /* */
851
- return (void 0);
852
- };
853
- /**
854
- * Extract links to other Markdown files from a given Markdown content.
855
- * @param mdfileContent
856
- */
857
- UtilsMd.getLinksToOtherMdFiles = (mdfileContent) => {
858
- /* */
859
- /* */
860
- /* */
861
- /* */
862
- /* */
863
- /* */
864
- /* */
865
- /* */
866
- /* */
867
- /* */
868
- /* */
869
- /* */
870
- /* */
871
- /* */
872
- /* */
873
- /* */
874
- /* */
875
- /* */
876
- /* */
877
- return (void 0);
878
- };
879
- /**
880
- * Move asset paths to a higher directory level by adding "../" before each path.
881
- *
882
- * @param mdfileContent - The content of the .md file.
883
- * @param level - The number of levels to go up (default is 1).
884
- * @returns The modified content with updated asset paths.
885
- */
886
- UtilsMd.moveAssetsPathesToLevel = (mdfileContent, level = 1) => {
887
- /* */
888
- /* */
889
- /* */
890
- /* */
891
- /* */
892
- /* */
893
- /* */
894
- /* */
895
- /* */
896
- /* */
897
- /* */
898
- /* */
899
- /* */
900
- /* */
901
- /* */
902
- /* */
903
- /* */
904
- /* */
905
- /* */
906
- /* */
907
- /* */
908
- /* */
909
- /* */
910
- /* */
911
- /* */
912
- /* */
913
- /* */
914
- /* */
915
- return (void 0);
916
- };
917
- })(UtilsMd || (UtilsMd = {}));
918
- export var UtilsQuickFixes;
919
- (function (UtilsQuickFixes) {
920
- /**
921
- *
922
- * @param node_modules/sql.js/dist/sql-wasm.js
923
- */
924
- UtilsQuickFixes.replaceSQLliteFaultyCode = (contentofSQLWasmJS) => {
925
- /* */
926
- /* */
927
- /* */
928
- /* */
929
- /* */
930
- /* */
931
- /* */
932
- /* */
933
- /* */
934
- /* */
935
- /* */
936
- /* */
937
- /* */
938
- /* */
939
- return (void 0);
940
- };
941
- /**
942
- * for some reason electron is being bundled - and it is not needed for cli
943
- */
944
- UtilsQuickFixes.replaceElectronWithNothing = (jsContent) => {
945
- /* */
946
- /* */
947
- return (void 0);
948
- };
949
- })(UtilsQuickFixes || (UtilsQuickFixes = {}));
950
- ;
951
- ({}); // @--end-of-file-for-module=tnp-helpers lib/utils.ts
952
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWhlbHBlcnMvcHJvamVjdHMvdG5wLWhlbHBlcnMvc3JjL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUssVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBOHRCLG1CQUFtQixFQUFJLG1CQUFtQixFQUFrQixjQUFjLEVBQUksY0FBYyxHQUFHLE1BQU0sWUFBWSxDQUFDLENBQUEsS0FBSztBQWlENTFCLE1BQU0sS0FBVyxRQUFRLENBNER4QjtBQTVERCxXQUFpQixRQUFRO0lBRVYseUJBQWdCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUNsRCxPQUFPLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDO0lBSVcscUJBQVksR0FBRyxDQUMxQixPQUFlLEVBQ2YsT0FNQyxFQUNELEVBQUU7UUFDRixNQUFNLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdkQsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFBLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7YUFDdEIsSUFBSSxFQUFFO2FBQ04sT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUUxRSxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFF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LEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNVLGtDQUFrQixHQUFHLENBQUMsV0FBbUIsRUFBZ0IsRUFBRTtRQUMxRSxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBT1csaURBQWlDLEdBQUcsQ0FDL0MsVUFBa0IsRUFDRSxFQUFFO1FBQzFCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUVXLDBDQUEwQixHQUFHLENBQUMsVUFBa0IsRUFBWSxFQUFFO1FBQzdFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUVXLHlDQUF5QixHQUFHLENBQ3ZDLGdCQUF3QixFQUNkLEVBQUU7UUFDaEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRVcsK0NBQStCLEdBQUcsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO1FBQzlFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLDBCQUFVLEdBQUcsQ0FBQyxhQUFxQixFQUFRLEVBQUU7UUFDNUQsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUVXLDBDQUEwQixHQUFHLENBQUMsZUFBdUIsRUFBUSxFQUFFO1FBQzlFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLHlDQUF5QixHQUFHLENBQUMsV0FBbUIsRUFBWSxFQUFFO1FBQzdFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFVyw0Q0FBNEIsR0FBRyxDQUMxQyxhQUFxQixFQUNYLEVBQUU7UUFDaEIsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFLVyxnREFBZ0MsR0FBRyxDQUM5QyxXQUFtQixFQUN3QixFQUFFO1FBQ2pELEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsK0JBQWUsR0FBRyxDQUM3QixjQUFzQixFQUN0QixlQUF1QixFQUN2QixFQUFFO1FBQ04sS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBYUY7O09BRUc7SUFDVSwwQ0FBMEIsR0FBRyxDQUN4QyxhQUFxQixFQUNyQixZQUFvQixFQUNwQixlQUFvQixFQUNwQixjQUFjLEdBQUcsSUFBSSxFQUNmLEVBQUU7UUFDWixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FB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QUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUVXLDJDQUEyQixHQUFHLENBQ3pDLFdBQW1CLEVBQ0QsRUFBRTtRQUN4QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0ws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QUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUdGOztPQUVHO0lBQ1UsMENBQTBCLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUU7UUFDMUUsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7QUFDSixDQUFDLEVBbkNnQixlQUFlLEtBQWYsZUFBZSxRQW1DL0I7QUFHQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFEQUFxRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IGZzZSwgSGVscGVycywgcGF0aCB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBfLCBDb3JlTW9kZWxzLCBVdGlscyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyAgIGNyZWF0ZVByaW50ZXIsICAgY3JlYXRlU291cmNlRmlsZSwgICBmYWN0b3J5LCAgIGdldExlYWRpbmdDb21tZW50UmFuZ2VzLCAgIGlzQ2xhc3NEZWNsYXJhdGlvbiwgICBpc1NvdXJjZUZpbGUsICAgTm9kZUFycmF5LCAgIFNjcmlwdEtpbmQsICAgU2NyaXB0VGFyZ2V0LCAgIFNvdXJjZUZpbGUsICAgU3RhdGVtZW50LCAgIHRyYW5zZm9ybSwgICBUcmFuc2Zvcm1hdGlvbkNvbnRleHQsICAgdmlzaXRFYWNoQ2hpbGQsICAgTm9kZSwgICBpc0Z1bmN0aW9uRGVjbGFyYXRpb24sICAgaXNWYXJpYWJsZVN0YXRlbWVudCwgICBpc0lkZW50aWZpZXIsICAgTm9kZUZsYWdzLCAgIGlzRW51bURlY2xhcmF0aW9uLCAgIGlzVHlwZUFsaWFzRGVjbGFyYXRpb24sICAgaXNJbnRlcmZhY2VEZWNsYXJhdGlvbiwgICBpc01vZHVsZURlY2xhcmF0aW9uLCAgIGlzRXhwb3J0QXNzaWdubWVudCwgICBmb3JFYWNoQ2hpbGQsICAgRGVjbGFyYXRpb24sICAgZ2V0Q29tYmluZWRNb2RpZmllckZsYWdzLCAgIE1vZGlmaWVyRmxhZ3MsICAgU3ludGF4S2luZCwgICBpc1ZhcmlhYmxlRGVjbGFyYXRpb24sICAgaXNDYWxsRXhwcmVzc2lvbiwgICBpc1Byb3BlcnR5QWNjZXNzRXhwcmVzc2lvbiwgICBpc09iamVjdExpdGVyYWxFeHByZXNzaW9uLCAgIGlzUHJvcGVydHlBc3NpZ25tZW50LCAgIGlzU3RyaW5nTGl0ZXJhbCwgICBjYW5IYXZlRGVjb3JhdG9ycywgICBnZXREZWNvcmF0b3JzLCAgIHZpc2l0Tm9kZSwgICBpc0V4cG9ydERlY2xhcmF0aW9uLCAgIGlzSW1wb3J0RGVjbGFyYXRpb24sICAgRXhwcmVzc2lvbiwgICBpc05hbWVkSW1wb3J0cywgICBpc05hbWVkRXhwb3J0cywgfSBmcm9tICd0eXBlc2NyaXB0JzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHR5cGUgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNOcG0ge1xuXG4gIGV4cG9ydCBjb25zdCBpc1NwZWNpYWxWZXJzaW9uID0gKHZlcnNpb246IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBDb3JlTW9kZWxzLk5wbVNwZWNpYWxWZXJzaW9ucy5pbmNsdWRlcyh2ZXJzaW9uKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGNsZWFyVmVyc2lvbiA9IChcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgcmVtb3ZlUHJlZml4ZXM/OiBib29sZWFuO1xuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgYWxwaGEsIGJldGEsIHJjLCBsYXRlc3QsIG5leHQgZXRjLlxuICAgICAgICovXG4gICAgICByZW1vdmVTdWZmaXg/OiBib29sZWFuO1xuICAgIH0sXG4gICkgPT4ge1xuICAgIGNvbnN0IHsgcmVtb3ZlUHJlZml4ZXMsIHJlbW92ZVN1ZmZpeCB9ID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIGlmICghdmVyc2lvbiB8fCBpc1NwZWNpYWxWZXJzaW9uKHZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICB9XG5cbiAgICB2ZXJzaW9uID0gKHZlcnNpb24gfHwgJycpXG4gICAgICAudHJpbSgpXG4gICAgICAucmVwbGFjZShuZXcgUmVnRXhwKFV0aWxzLmVzY2FwZVN0cmluZ0ZvclJlZ0V4KCd1bmRlZmluZWQnKSwgJ2cnKSwgJzAnKTtcblxuICAgIGlmIChyZW1vdmVQcmVmaXhlcykge1xuICAgICAgdmVyc2lvbiA9IHZlcnNpb24ucmVwbGFjZSgnXicsICcnKS5yZXBsYWNlKCd+JywgJycpO1xuICAgIH1cbiAgICBsZXQgW21ham9yLCBtaW5vciwgcGF0Y2gsIGFscGhhT3JCZXRhT3JSY10gPSB2ZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgaWYgKHJlbW92ZVN1ZmZpeCkge1xuICAgICAgYWxwaGFPckJldGFPclJjID0gJyc7XG4gICAgfVxuICAgIHJldHVybiBmaXhNYWpvclZlck51bWJlcihcbiAgICAgIGAke21ham9yfS4ke21pbm9yfS4ke3BhdGNofSR7YWxwaGFPckJldGFPclJjID8gJy4nICsgYWxwaGFPckJldGFPclJjIDogJyd9YCxcbiAgICApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZml4TWFqb3JWZXJOdW1iZXIgPSAodmVyc2lvbjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCF2ZXJzaW9uIHx8IGlzU3BlY2lhbFZlcnNpb24odmVyc2lvbikpIHtcbiAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH1cbiAgICB2ZXJzaW9uID0gKHZlcnNpb24gfHwgJycpXG4gICAgICAudHJpbSgpXG4gICAgICAucmVwbGFjZShuZXcgUmVnRXhwKFV0aWxzLmVzY2FwZVN0cmluZ0ZvclJlZ0V4KCd1bmRlZmluZWQnKSwgJ2cnKSwgJzAnKTtcbiAgICBjb25zdCBzcGxpdGVkID0gdmVyc2lvbi5zcGxpdCgnLicpO1xuICAgIGxldCBbbWFqb3IsIG1pbm9yLCBwYXRjaCwgYWxwaGFPckJldGFPclJjXSA9IHNwbGl0ZWQ7XG4gICAgaWYgKHNwbGl0ZWQubGVuZ3RoID09PSAxKSB7XG4gICAgICBtaW5vciA9ICcwJztcbiAgICAgIHBhdGNoID0gJzAnO1xuICAgIH0gZWxzZSBpZiAoc3BsaXRlZC5sZW5ndGggPT09IDIpIHtcbiAgICAgIHBhdGNoID0gJzAnO1xuICAgIH1cbiAgICByZXR1cm4gYCR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9JHthbHBoYU9yQmV0YU9yUmMgPyAnLicgKyBhbHBoYU9yQmV0YU9yUmMgOiAnJ31gO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzVHlwZXNjcmlwdCB7XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBUeXBlU2NyaXB0IHJlZ2lvbiBibG9ja3MgYnkgdGhlaXIgbmFtZSwgaW5jbHVkaW5nIG5lc3RlZCByZWdpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlQ29kZSAtIFRoZSBUeXBlU2NyaXB0IHNvdXJjZSBjb2RlIGFzIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0gcmVnaW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSByZWdpb24gdG8gcmVtb3ZlLlxuICAgKiBAcmV0dXJucyBNb2RpZmllZCBUeXBlU2NyaXB0IGNvZGUgd2l0aG91dCB0aGUgc3BlY2lmaWVkIHJlZ2lvbnMuXG4gICAqL1xuICBleHBvcnQgY29uc3QgcmVtb3ZlUmVnaW9uQnlOYW1lID0gKFxuICAgIHNvdXJjZUNvZGU6IHN0cmluZyxcbiAgICByZWdpb25OYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cblxuICBjb25zdCBpc0V4cG9ydGVkID0gKG5vZGU6IE5vZGUpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cblxuICBpbnRlcmZhY2UgRXhwb3J0SW5mbyB7XG4gICAgdHlwZTpcbiAgICAgIHwgJ2NsYXNzJ1xuICAgICAgfCAnZnVuY3Rpb24nXG4gICAgICB8ICdjb25zdCdcbiAgICAgIHwgJ2xldCdcbiAgICAgIHwgJ3ZhcidcbiAgICAgIHwgJ2VudW0nXG4gICAgICB8ICd0eXBlJ1xuICAgICAgfCAnaW50ZXJmYWNlJ1xuICAgICAgfCAnZGVmYXVsdCdcbiAgICAgIHwgJ21vZHVsZSdcbiAgICAgIHwgJ25hbWVzcGFjZSc7XG4gICAgbmFtZTogc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIGV4dHJhY3QgZXhwb3J0cyBmcm9tIGEgVHlwZVNjcmlwdCBmaWxlXG4gICAqL1xuICBleHBvcnQgY29uc3QgZXhwb3J0c0Zyb21GaWxlID0gKGZpbGVQYXRoOiBzdHJpbmcpOiBFeHBvcnRJbmZvW10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gZXh0cmFjdCBleHBvcnRzIGZyb20gYSBUeXBlU2NyaXB0IGZpbGVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBleHBvcnRzRnJvbUNvbnRlbnQgPSAoZmlsZUNvbnRlbnQ6IHN0cmluZyk6IEV4cG9ydEluZm9bXSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cblxuXG5cbiAgZXhwb3J0IGNvbnN0IGV4dHJhY3REZWZhdWx0Q2xhc3NOYW1lRnJvbVN0cmluZyA9IChcbiAgICBzb3VyY2VDb2RlOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBleHRyYWN0Q2xhc3NOYW1lRnJvbVN0cmluZyA9IChzb3VyY2VDb2RlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBleHRyYWN0Q2xhc3NOYW1lc0Zyb21GaWxlID0gKFxuICAgIGFic29sdXRlRmlsZVBhdGg6IHN0cmluZyxcbiAgKTogc3RyaW5nW10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICBleHBvcnQgY29uc3QgZXh0cmFjdERlZmF1bHRDbGFzc05hbWVGcm9tRmlsZSA9IChhYnNvbHV0ZUZpbGVQYXRoOiBzdHJpbmcpID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBmb3JtYXRGaWxlID0gKGFic1BhdGhUb0ZpbGU6IHN0cmluZyk6IHZvaWQgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdEFsbEZpbGVzSW5zaWRlRm9sZGVyID0gKGFic1BhdGhUb0ZvbGRlcjogc3RyaW5nKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0VGFvbkNvbnRleHRGcm9tQ29udGVudCA9IChmaWxlQ29udGVudDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldFRhb25Db250ZXh0c05hbWVzRnJvbUZpbGUgPSAoXG4gICAgdHNBYnNGaWxlUGF0aDogc3RyaW5nLFxuICApOiBzdHJpbmdbXSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cbiAgZXhwb3J0IGNvbnN0IGV4dHJhY3RBbmd1bGFyQ29tcG9uZW50U2VsZWN0b3JzID0gKFxuICAgIGZpbGVBYnNQYXRoOiBzdHJpbmcsXG4gICk6IHsgY2xhc3NOYW1lOiBzdHJpbmc7IHNlbGVjdG9yOiBzdHJpbmcgfVtdID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IHdyYXBXaXRoQ29tbWVudCA9IChcbiAgICBvbmVMaW5lQ29tbWVudDogc3RyaW5nLFxuICAgIGFic0Rlc3RGaWxlUGF0aDogc3RyaW5nLFxuICApID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBzZXQgb3IgYWRkIGFuIGV4cG9ydGVkIGNvbnN0IHdpdGggZ2l2ZW4gbmFtZSBhbmQgdmFsdWUuXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc2V0VmFsdWVUb1ZhcmlhYmxlSW5Uc0ZpbGUgPSAoXG4gICAgdHNBYnNGaWxlUGF0aDogc3RyaW5nLFxuICAgIHZhcmlhYmxlTmFtZTogc3RyaW5nLFxuICAgIHZhbHVlT2ZWYXJpYWJsZTogYW55LFxuICAgIGFkZElmTm90RXhpc3RzID0gdHJ1ZSxcbiAgKTogdm9pZCA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG5cblxuXG4gIGV4cG9ydCBjbGFzcyBUc0ltcG9ydEV4cG9ydCB7XG4gICAgdHlwZTogJ2V4cG9ydCcgfCAnaW1wb3J0JyB8ICdhc3luYy1pbXBvcnQnIHwgJ3JlcXVpcmUnO1xuICAgIC8qKlxuICAgICAqIE9SSUdOQUxcbiAgICAgKiBOYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgaW1wb3J0ZWQvZXhwb3J0ZWRcbiAgICAgKiB3aXRoIHBhcmVudGhlc2lzIGluY2x1ZGVkXG4gICAgICovXG4gICAgZW1iZWRkZWRQYXRoVG9GaWxlOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogc2FtZSBhcyBjbGVhbkVtYmVkZGVkUGF0aFRvRmlsZSBidXQgd2l0aG91dCBxdW90ZXMgKHBhcmVudGhlc2lzKVxuICAgICAqL1xuICAgIGNsZWFuRW1iZWRkZWRQYXRoVG9GaWxlOiBzdHJpbmc7XG4gICAgcmVtb3ZlU3RhcnRFbmRRdW90ZXMoc3RyOiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvXlsnXCJgXS8sICcnKS5yZXBsYWNlKC9bJ1wiYF0kLywgJycpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSRVNVTFQgT0YgUFJPQ0VTU0lOR1xuICAgICAqL1xuICAgIGVtYmVkZGVkUGF0aFRvRmlsZVJlc3VsdDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBjbGVhbkVtYmVkZGVkUGF0aFRvRmlsZVxuICAgICAqL1xuICAgIHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gICAgaXNJc29tb3JwaGljPzogYm9vbGVhbjtcbiAgICBzdGFydFJvdzogbnVtYmVyO1xuICAgIHN0YXJ0Q29sOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBpdCB3aWxsIGV4dHJhY3QgcGFydCBvZiB0aGUgZmlsZSBjb250ZW50XG4gICAgICogdGhhdCBpcyBiZXR3ZWVuIHN0YXJ0Um93LCBzdGFydENvbCBhbmQgZW5kUm93LCBlbmRDb2xcbiAgICAgKiBhbmQgY29udGFpbnMgaW1wb3J0L2V4cG9ydC9yZXF1aXJlIHN0YXRlbWVudFxuICAgICAqL1xuICAgIGdldFN0cmluZ1BhcnRGcm9tKHdob2xlQ29udGVudE9mRmlsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IGxpbmVzID0gd2hvbGVDb250ZW50T2ZGaWxlLnNwbGl0KCdcXG4nKTtcblxuXG4gICAgICBjb25zdCBzdGFydFJvd0luZGV4ID0gdGhpcy5zdGFydFJvdyAtIDE7XG4gICAgICBjb25zdCBlbmRSb3dJbmRleCA9IHRoaXMuZW5kUm93IC0gMTtcblxuXG4gICAgICBpZiAoc3RhcnRSb3dJbmRleCA+PSBsaW5lcy5sZW5ndGggfHwgZW5kUm93SW5kZXggPj0gbGluZXMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUm93IGluZGV4IG91dCBvZiBib3VuZHMuJyk7XG4gICAgICB9XG5cbiAgICAgIGxldCBleHRyYWN0ZWRMaW5lczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0Um93SW5kZXg7IGkgPD0gZW5kUm93SW5kZXg7IGkrKykge1xuICAgICAgICBsZXQgbGluZSA9IGxpbmVzW2ldO1xuXG4gICAgICAgIGlmIChpID09PSBzdGFydFJvd0luZGV4ICYmIGkgPT09IGVuZFJvd0luZGV4KSB7XG5cbiAgICAgICAgICBleHRyYWN0ZWRMaW5lcy5wdXNoKGxpbmUuc3Vic3RyaW5nKHRoaXMuc3RhcnRDb2wgLSAxLCB0aGlzLmVuZENvbCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IHN0YXJ0Um93SW5kZXgpIHtcblxuICAgICAgICAgIGV4dHJhY3RlZExpbmVzLnB1c2gobGluZS5zdWJzdHJpbmcodGhpcy5zdGFydENvbCAtIDEpKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSBlbmRSb3dJbmRleCkge1xuXG4gICAgICAgICAgZXh0cmFjdGVkTGluZXMucHVzaChsaW5lLnN1YnN0cmluZygwLCB0aGlzLmVuZENvbCkpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgZXh0cmFjdGVkTGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXh0cmFjdGVkTGluZXMuam9pbignXFxuJyk7XG4gICAgfVxuXG4gICAgZW5kUm93OiBudW1iZXI7XG4gICAgZW5kQ29sOiBudW1iZXI7XG4gICAgcGFyZW50aGVzaXNUeXBlOiAnc2luZ2xlJyB8ICdkb3VibGUnIHwgJ3RpY3MnO1xuICAgIHdyYXBJblBhcmVudGhlc2lzKHN0cjogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJlbnRoZXNpc1R5cGUgPT09ICdzaW5nbGUnXG4gICAgICAgID8gYCcke3N0cn0nYFxuICAgICAgICA6IHRoaXMucGFyZW50aGVzaXNUeXBlID09PSAnZG91YmxlJ1xuICAgICAgICAgID8gYFwiJHtzdHJ9XCJgXG4gICAgICAgICAgOiBgXFxgJHtzdHJ9XFxgYDtcbiAgICB9XG5cbiAgICBpbXBvcnRFbGVtZW50czogc3RyaW5nW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgdHlwZTogJ2V4cG9ydCcgfCAnaW1wb3J0JyB8ICdhc3luYy1pbXBvcnQnIHwgJ3JlcXVpcmUnLFxuICAgICAgZW1iZWRkZWRQYXRoVG9GaWxlOiBzdHJpbmcsXG4gICAgICBzdGFydDogdHMuTGluZUFuZENoYXJhY3RlcixcbiAgICAgIGVuZDogdHMuTGluZUFuZENoYXJhY3RlcixcbiAgICAgIHBhcmVudGhlc2lzVHlwZTogJ3NpbmdsZScgfCAnZG91YmxlJyB8ICd0aWNzJyxcbiAgICAgIGltcG9ydEVsZW1lbnRzOiBzdHJpbmdbXSA9IFtdLFxuICAgICkge1xuICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgIHRoaXMuaXNJc29tb3JwaGljID0gZmFsc2U7XG4gICAgICB0aGlzLmVtYmVkZGVkUGF0aFRvRmlsZSA9IGVtYmVkZGVkUGF0aFRvRmlsZTtcbiAgICAgIHRoaXMuY2xlYW5FbWJlZGRlZFBhdGhUb0ZpbGUgPVxuICAgICAgICB0aGlzLnJlbW92ZVN0YXJ0RW5kUXVvdGVzKGVtYmVkZGVkUGF0aFRvRmlsZSk7XG4gICAgICB0aGlzLmVtYmVkZGVkUGF0aFRvRmlsZVJlc3VsdCA9IGVtYmVkZGVkUGF0aFRvRmlsZTtcbiAgICAgIHRoaXMuc3RhcnRSb3cgPSBzdGFydC5saW5lICsgMTsgLy8gVHlwZVNjcmlwdCBsaW5lcyBhcmUgemVyby1iYXNlZFxuICAgICAgdGhpcy5zdGFydENvbCA9IHN0YXJ0LmNoYXJhY3RlciArIDE7XG4gICAgICB0aGlzLmVuZFJvdyA9IGVuZC5saW5lICsgMTtcbiAgICAgIHRoaXMuZW5kQ29sID0gZW5kLmNoYXJhY3RlciArIDE7XG4gICAgICB0aGlzLnBhcmVudGhlc2lzVHlwZSA9IHBhcmVudGhlc2lzVHlwZTtcbiAgICAgIHRoaXMuaW1wb3J0RWxlbWVudHMgPSBpbXBvcnRFbGVtZW50cztcbiAgICB9XG4gIH1cblxuXG5cbiAgY29uc3QgZ2V0UXVvdGVUeXBlID0gKHRleHQ6IHN0cmluZyk6ICdzaW5nbGUnIHwgJ2RvdWJsZScgfCAndGljcycgPT4ge1xuICAgIGlmICh0ZXh0LnN0YXJ0c1dpdGgoJ2AnKSkgcmV0dXJuICd0aWNzJztcbiAgICBpZiAodGV4dC5zdGFydHNXaXRoKFwiJ1wiKSkgcmV0dXJuICdzaW5nbGUnO1xuICAgIHJldHVybiAnZG91YmxlJztcbiAgfTtcblxuXG4gIGNvbnN0IGV4dHJhY3RJbXBvcnRFeHBvcnRFbGVtZW50cyA9IChub2RlOiB0cy5Ob2RlKTogc3RyaW5nW10gPT4ge1xuICAgIGNvbnN0IGVsZW1lbnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGlzSW1wb3J0RGVjbGFyYXRpb24obm9kZSkgJiYgbm9kZS5pbXBvcnRDbGF1c2UpIHtcblxuICAgICAgaWYgKFxuICAgICAgICBub2RlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzICYmXG4gICAgICAgIGlzTmFtZWRJbXBvcnRzKG5vZGUuaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpXG4gICAgICApIHtcbiAgICAgICAgZWxlbWVudHMucHVzaChcbiAgICAgICAgICAuLi5ub2RlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzLmVsZW1lbnRzLm1hcChlbCA9PiBlbC5uYW1lLnRleHQpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNFeHBvcnREZWNsYXJhdGlvbihub2RlKSAmJiBub2RlLmV4cG9ydENsYXVzZSkge1xuXG4gICAgICBpZiAoaXNOYW1lZEV4cG9ydHMobm9kZS5leHBvcnRDbGF1c2UpKSB7XG4gICAgICAgIGVsZW1lbnRzLnB1c2goLi4ubm9kZS5leHBvcnRDbGF1c2UuZWxlbWVudHMubWFwKGVsID0+IGVsLm5hbWUudGV4dCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50cztcbiAgfTtcblxuICBleHBvcnQgY29uc3QgcmVjb2duaXplSW1wb3J0c0Zyb21GaWxlID0gKFxuICAgIGZpbGVBYnNQQXRoOiBzdHJpbmcsXG4gICk6IFRzSW1wb3J0RXhwb3J0W10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuICBleHBvcnQgY29uc3QgcmVjb2duaXplSW1wb3J0c0Zyb21Db250ZW50ID0gKFxuICAgIGZpbGVDb250ZW50OiBzdHJpbmcsXG4gICk6IFRzSW1wb3J0RXhwb3J0W10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxufVxuXG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzSHR0cCB7XG5cbiAgZXhwb3J0IGNvbnN0IHN0YXJ0SHR0cFNlcnZlciA9IGFzeW5jIChjd2Q6IHN0cmluZywgcG9ydDogbnVtYmVyKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzTWQge1xuICAvKipcbiAgICogZXh0cmFjdCBhc3NldHMgcGF0aGVzIGZyb20gLm1kIGZpbGVcbiAgICovXG4gIGV4cG9ydCBjb25zdCBnZXRBc3NldHMgPSAobWRmaWxlQ29udGVudDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGxpbmtzIHRvIG90aGVyIE1hcmtkb3duIGZpbGVzIGZyb20gYSBnaXZlbiBNYXJrZG93biBjb250ZW50LlxuICAgKiBAcGFyYW0gbWRmaWxlQ29udGVudFxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGdldExpbmtzVG9PdGhlck1kRmlsZXMgPSAobWRmaWxlQ29udGVudDogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1vdmUgYXNzZXQgcGF0aHMgdG8gYSBoaWdoZXIgZGlyZWN0b3J5IGxldmVsIGJ5IGFkZGluZyBcIi4uL1wiIGJlZm9yZSBlYWNoIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSBtZGZpbGVDb250ZW50IC0gVGhlIGNvbnRlbnQgb2YgdGhlIC5tZCBmaWxlLlxuICAgKiBAcGFyYW0gbGV2ZWwgLSBUaGUgbnVtYmVyIG9mIGxldmVscyB0byBnbyB1cCAoZGVmYXVsdCBpcyAxKS5cbiAgICogQHJldHVybnMgVGhlIG1vZGlmaWVkIGNvbnRlbnQgd2l0aCB1cGRhdGVkIGFzc2V0IHBhdGhzLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IG1vdmVBc3NldHNQYXRoZXNUb0xldmVsID0gKFxuICAgIG1kZmlsZUNvbnRlbnQ6IHN0cmluZyxcbiAgICBsZXZlbCA9IDEsXG4gICk6IHN0cmluZyA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcbn1cblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNRdWlja0ZpeGVzIHtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIG5vZGVfbW9kdWxlcy9zcWwuanMvZGlzdC9zcWwtd2FzbS5qc1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IHJlcGxhY2VTUUxsaXRlRmF1bHR5Q29kZSA9IChcbiAgICBjb250ZW50b2ZTUUxXYXNtSlM6IHN0cmluZyxcbiAgKTogc3RyaW5nID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiBmb3Igc29tZSByZWFzb24gZWxlY3Ryb24gaXMgYmVpbmcgYnVuZGxlZCAtIGFuZCBpdCBpcyBub3QgbmVlZGVkIGZvciBjbGlcbiAgICovXG4gIGV4cG9ydCBjb25zdCByZXBsYWNlRWxlY3Ryb25XaXRoTm90aGluZyA9IChqc0NvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi91dGlscy50cyJdfQ==