@jerryan/just-bash 3.6.1 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +15 -5
  3. package/dist/AGENTS.md +2 -2
  4. package/dist/Bash.d.ts +4 -2
  5. package/dist/bin/chunks/{awk2-KO7ZE3P7.js → awk2-NTRVFXRA.js} +1 -1
  6. package/dist/bin/chunks/chmod-GX5SYTRL.js +3 -0
  7. package/dist/bin/chunks/chunk-2NJJXU4K.js +27 -0
  8. package/dist/bin/{shell/chunks/chunk-ZMGLTHSU.js → chunks/chunk-3ROYEBJI.js} +1 -1
  9. package/dist/bin/chunks/chunk-6FGMEZZP.js +20 -0
  10. package/dist/bin/chunks/chunk-6JUPBMCR.js +13 -0
  11. package/dist/bin/{shell/chunks/chunk-3DWQCLNP.js → chunks/chunk-7WBCA2BB.js} +1 -1
  12. package/dist/bin/chunks/{chunk-LE2XKKGQ.js → chunk-ABP4OLJV.js} +1 -1
  13. package/dist/bin/{shell/chunks/chunk-7PUOS2OO.js → chunks/chunk-ANX7U57Q.js} +1 -1
  14. package/dist/bin/chunks/{chunk-B2GCIQI2.js → chunk-BB5VTPMQ.js} +1 -1
  15. package/dist/bin/chunks/chunk-CN4JKMTR.js +8 -0
  16. package/dist/bin/chunks/{chunk-WFHYGSLJ.js → chunk-CNVNOT67.js} +1 -1
  17. package/dist/bin/{shell/chunks/chunk-6ESRNSO7.js → chunks/chunk-DRPHNXG7.js} +1 -1
  18. package/dist/bin/chunks/chunk-F2PYTUMR.js +9 -0
  19. package/dist/bin/{shell/chunks/chunk-OXLC2WWX.js → chunks/chunk-H7PD6FLC.js} +10 -10
  20. package/dist/bin/chunks/chunk-HWK7KFGB.js +3 -0
  21. package/dist/bin/{shell/chunks/chunk-QYZN33JA.js → chunks/chunk-IOKQFPM6.js} +1 -1
  22. package/dist/bin/chunks/{chunk-M7SIPZZZ.js → chunk-KMYJMEON.js} +1 -1
  23. package/dist/bin/chunks/chunk-KNTDFP7X.js +12 -0
  24. package/dist/bin/{shell/chunks/chunk-RPUFEP5O.js → chunks/chunk-M3Z5NZXT.js} +1 -1
  25. package/dist/bin/chunks/chunk-MBREBDZQ.js +3 -0
  26. package/dist/bin/{shell/chunks/chunk-L345YZ6R.js → chunks/chunk-MF3GVFLC.js} +1 -1
  27. package/dist/bin/{shell/chunks/chunk-YCOJCFGU.js → chunks/chunk-MPFNZYEA.js} +1 -1
  28. package/dist/bin/chunks/chunk-OHFB3M3X.js +3 -0
  29. package/dist/bin/{shell/chunks/chunk-F3UDTTI7.js → chunks/chunk-ONF4KUYV.js} +1 -1
  30. package/dist/bin/chunks/chunk-PPVF2N6C.js +3 -0
  31. package/dist/bin/chunks/{chunk-V2XF3TTW.js → chunk-PRVPFKTC.js} +1 -1
  32. package/dist/bin/{shell/chunks/chunk-7VWOECJ3.js → chunks/chunk-PTUQEN6I.js} +1 -1
  33. package/dist/bin/chunks/{chunk-R2J5MJOM.js → chunk-QFOXSCOD.js} +1 -1
  34. package/dist/bin/{shell/chunks/chunk-6TUILMPB.js → chunks/chunk-QFTZKD5O.js} +1 -1
  35. package/dist/bin/chunks/{chunk-HQ63MFHG.js → chunk-QJWFCA7P.js} +1 -1
  36. package/dist/bin/chunks/chunk-RTN6X652.js +11 -0
  37. package/dist/bin/chunks/{chunk-67XYNGRV.js → chunk-T6OIISUC.js} +1 -1
  38. package/dist/bin/{shell/chunks/chunk-JELR4642.js → chunks/chunk-U5JLGI56.js} +13 -13
  39. package/dist/bin/chunks/{chunk-7PPAWLUI.js → chunk-V4S4A7M6.js} +1 -1
  40. package/dist/bin/{shell/chunks/chunk-DZAFUADN.js → chunks/chunk-VPSBWWXM.js} +1 -1
  41. package/dist/bin/chunks/{chunk-GA5TPRMF.js → chunk-YXPSX3SI.js} +11 -11
  42. package/dist/bin/chunks/{chunk-472JZJ2D.js → chunk-ZVG47PYA.js} +1 -1
  43. package/dist/bin/chunks/cp-YLP7ULVT.js +3 -0
  44. package/dist/bin/{shell/chunks/diff-YXZZCUSQ.js → chunks/diff-JSJ56EOK.js} +1 -1
  45. package/dist/bin/chunks/du-DH76GZJ3.js +3 -0
  46. package/dist/bin/chunks/{expr-NNMDHOCN.js → expr-PQEPO5TE.js} +1 -1
  47. package/dist/bin/chunks/{file-4T64QNLS.js → file-JA7QI2YT.js} +1 -1
  48. package/dist/bin/chunks/find-MHC4QV6H.js +3 -0
  49. package/dist/bin/chunks/flag-coverage-2H5CPEM6.js +3 -0
  50. package/dist/bin/chunks/{grep-CVU5V66H.js → grep-VXWNMIDD.js} +1 -1
  51. package/dist/bin/chunks/gzip-UQZL4R74.js +3 -0
  52. package/dist/bin/chunks/{jq-V7OTAVU5.js → jq-YS4PR46D.js} +1 -1
  53. package/dist/bin/chunks/js-exec-T3SAB2B6.js +1651 -0
  54. package/dist/bin/chunks/ln-XVC53673.js +3 -0
  55. package/dist/bin/chunks/ls-5Z45FV4U.js +3 -0
  56. package/dist/bin/chunks/mkdir-YJ3SOVRP.js +3 -0
  57. package/dist/bin/chunks/mv-EOOP2TO3.js +3 -0
  58. package/dist/bin/chunks/python3-3ERN3L6S.js +23 -0
  59. package/dist/bin/chunks/readlink-EJ3IKLWW.js +3 -0
  60. package/dist/bin/chunks/rg-WHVR3YDT.js +3 -0
  61. package/dist/bin/chunks/rm-B4LVIG7A.js +3 -0
  62. package/dist/bin/chunks/rmdir-PRNISPBA.js +3 -0
  63. package/dist/bin/{shell/chunks/sed-4LVDFHIJ.js → chunks/sed-SY63U2YX.js} +1 -1
  64. package/dist/bin/{shell/chunks/sleep-MOJQBZMY.js → chunks/sleep-DVFE2GSF.js} +1 -1
  65. package/dist/bin/chunks/split-HIFKSV2A.js +3 -0
  66. package/dist/bin/chunks/sqlite3-KNN6V2W6.js +3 -0
  67. package/dist/bin/{shell/chunks/tar-7HGZIMZD.js → chunks/tar-7XOP7VOX.js} +1 -1
  68. package/dist/bin/chunks/{timeout-RQOWSWYG.js → timeout-YGFHQJKX.js} +1 -1
  69. package/dist/bin/chunks/worker.js +120 -109
  70. package/dist/bin/chunks/{xan-WW53ETXT.js → xan-RMH6JEXM.js} +1 -1
  71. package/dist/bin/chunks/{yq-MYZOS2WN.js → yq-CWBZMGUV.js} +1 -1
  72. package/dist/bin/just-bash.js +355 -350
  73. package/dist/bin/shell/chunks/{awk2-KO7ZE3P7.js → awk2-NTRVFXRA.js} +1 -1
  74. package/dist/bin/shell/chunks/chmod-GX5SYTRL.js +3 -0
  75. package/dist/bin/shell/chunks/chunk-2NJJXU4K.js +27 -0
  76. package/dist/bin/{chunks/chunk-ZMGLTHSU.js → shell/chunks/chunk-3ROYEBJI.js} +1 -1
  77. package/dist/bin/shell/chunks/chunk-6FGMEZZP.js +20 -0
  78. package/dist/bin/shell/chunks/chunk-6JUPBMCR.js +13 -0
  79. package/dist/bin/{chunks/chunk-3DWQCLNP.js → shell/chunks/chunk-7WBCA2BB.js} +1 -1
  80. package/dist/bin/shell/chunks/{chunk-LE2XKKGQ.js → chunk-ABP4OLJV.js} +1 -1
  81. package/dist/bin/{chunks/chunk-7PUOS2OO.js → shell/chunks/chunk-ANX7U57Q.js} +1 -1
  82. package/dist/bin/shell/chunks/{chunk-B2GCIQI2.js → chunk-BB5VTPMQ.js} +1 -1
  83. package/dist/bin/shell/chunks/chunk-CN4JKMTR.js +8 -0
  84. package/dist/bin/shell/chunks/{chunk-WFHYGSLJ.js → chunk-CNVNOT67.js} +1 -1
  85. package/dist/bin/{chunks/chunk-6ESRNSO7.js → shell/chunks/chunk-DRPHNXG7.js} +1 -1
  86. package/dist/bin/shell/chunks/chunk-F2PYTUMR.js +9 -0
  87. package/dist/bin/{chunks/chunk-OXLC2WWX.js → shell/chunks/chunk-H7PD6FLC.js} +10 -10
  88. package/dist/bin/shell/chunks/chunk-HWK7KFGB.js +3 -0
  89. package/dist/bin/{chunks/chunk-QYZN33JA.js → shell/chunks/chunk-IOKQFPM6.js} +1 -1
  90. package/dist/bin/shell/chunks/{chunk-M7SIPZZZ.js → chunk-KMYJMEON.js} +1 -1
  91. package/dist/bin/shell/chunks/chunk-KNTDFP7X.js +12 -0
  92. package/dist/bin/{chunks/chunk-RPUFEP5O.js → shell/chunks/chunk-M3Z5NZXT.js} +1 -1
  93. package/dist/bin/shell/chunks/chunk-MBREBDZQ.js +3 -0
  94. package/dist/bin/{chunks/chunk-L345YZ6R.js → shell/chunks/chunk-MF3GVFLC.js} +1 -1
  95. package/dist/bin/{chunks/chunk-YCOJCFGU.js → shell/chunks/chunk-MPFNZYEA.js} +1 -1
  96. package/dist/bin/shell/chunks/chunk-OHFB3M3X.js +3 -0
  97. package/dist/bin/{chunks/chunk-F3UDTTI7.js → shell/chunks/chunk-ONF4KUYV.js} +1 -1
  98. package/dist/bin/shell/chunks/chunk-PPVF2N6C.js +3 -0
  99. package/dist/bin/shell/chunks/{chunk-V2XF3TTW.js → chunk-PRVPFKTC.js} +1 -1
  100. package/dist/bin/{chunks/chunk-7VWOECJ3.js → shell/chunks/chunk-PTUQEN6I.js} +1 -1
  101. package/dist/bin/shell/chunks/{chunk-R2J5MJOM.js → chunk-QFOXSCOD.js} +1 -1
  102. package/dist/bin/{chunks/chunk-6TUILMPB.js → shell/chunks/chunk-QFTZKD5O.js} +1 -1
  103. package/dist/bin/shell/chunks/{chunk-HQ63MFHG.js → chunk-QJWFCA7P.js} +1 -1
  104. package/dist/bin/shell/chunks/chunk-RTN6X652.js +11 -0
  105. package/dist/bin/shell/chunks/{chunk-67XYNGRV.js → chunk-T6OIISUC.js} +1 -1
  106. package/dist/bin/{chunks/chunk-JELR4642.js → shell/chunks/chunk-U5JLGI56.js} +13 -13
  107. package/dist/bin/shell/chunks/{chunk-7PPAWLUI.js → chunk-V4S4A7M6.js} +1 -1
  108. package/dist/bin/{chunks/chunk-DZAFUADN.js → shell/chunks/chunk-VPSBWWXM.js} +1 -1
  109. package/dist/bin/shell/chunks/{chunk-GA5TPRMF.js → chunk-YXPSX3SI.js} +11 -11
  110. package/dist/bin/shell/chunks/{chunk-472JZJ2D.js → chunk-ZVG47PYA.js} +1 -1
  111. package/dist/bin/shell/chunks/cp-YLP7ULVT.js +3 -0
  112. package/dist/bin/{chunks/diff-YXZZCUSQ.js → shell/chunks/diff-JSJ56EOK.js} +1 -1
  113. package/dist/bin/shell/chunks/du-DH76GZJ3.js +3 -0
  114. package/dist/bin/shell/chunks/{expr-NNMDHOCN.js → expr-PQEPO5TE.js} +1 -1
  115. package/dist/bin/shell/chunks/{file-4T64QNLS.js → file-JA7QI2YT.js} +1 -1
  116. package/dist/bin/shell/chunks/find-MHC4QV6H.js +3 -0
  117. package/dist/bin/shell/chunks/flag-coverage-2H5CPEM6.js +3 -0
  118. package/dist/bin/shell/chunks/{grep-CVU5V66H.js → grep-VXWNMIDD.js} +1 -1
  119. package/dist/bin/shell/chunks/gzip-UQZL4R74.js +3 -0
  120. package/dist/bin/shell/chunks/{jq-V7OTAVU5.js → jq-YS4PR46D.js} +1 -1
  121. package/dist/bin/shell/chunks/js-exec-T3SAB2B6.js +1651 -0
  122. package/dist/bin/shell/chunks/ln-XVC53673.js +3 -0
  123. package/dist/bin/shell/chunks/ls-5Z45FV4U.js +3 -0
  124. package/dist/bin/shell/chunks/mkdir-YJ3SOVRP.js +3 -0
  125. package/dist/bin/shell/chunks/mv-EOOP2TO3.js +3 -0
  126. package/dist/bin/shell/chunks/python3-3ERN3L6S.js +23 -0
  127. package/dist/bin/shell/chunks/readlink-EJ3IKLWW.js +3 -0
  128. package/dist/bin/shell/chunks/rg-WHVR3YDT.js +3 -0
  129. package/dist/bin/shell/chunks/rm-B4LVIG7A.js +3 -0
  130. package/dist/bin/shell/chunks/rmdir-PRNISPBA.js +3 -0
  131. package/dist/bin/{chunks/sed-4LVDFHIJ.js → shell/chunks/sed-SY63U2YX.js} +1 -1
  132. package/dist/bin/{chunks/sleep-MOJQBZMY.js → shell/chunks/sleep-DVFE2GSF.js} +1 -1
  133. package/dist/bin/shell/chunks/split-HIFKSV2A.js +3 -0
  134. package/dist/bin/shell/chunks/sqlite3-KNN6V2W6.js +3 -0
  135. package/dist/bin/{chunks/tar-7HGZIMZD.js → shell/chunks/tar-7XOP7VOX.js} +1 -1
  136. package/dist/bin/shell/chunks/{timeout-RQOWSWYG.js → timeout-YGFHQJKX.js} +1 -1
  137. package/dist/bin/shell/chunks/{xan-WW53ETXT.js → xan-RMH6JEXM.js} +1 -1
  138. package/dist/bin/shell/chunks/{yq-MYZOS2WN.js → yq-CWBZMGUV.js} +1 -1
  139. package/dist/bin/shell/shell.js +397 -392
  140. package/dist/bundle/browser.js +693 -669
  141. package/dist/bundle/chunks/{awk2-W6BNZEJN.js → awk2-VS5QVYHU.js} +1 -1
  142. package/dist/bundle/chunks/chmod-TEY5MD2W.js +2 -0
  143. package/dist/bundle/chunks/{chunk-26GP3ACY.js → chunk-35MBA3VY.js} +1 -1
  144. package/dist/bundle/chunks/chunk-3CIDHL5V.js +11 -0
  145. package/dist/bundle/chunks/chunk-3OBCZP7T.js +12 -0
  146. package/dist/bundle/chunks/{chunk-F6XU52K3.js → chunk-45QZRGYF.js} +1 -1
  147. package/dist/bundle/chunks/chunk-4CC3OZPU.js +2 -0
  148. package/dist/bundle/chunks/{chunk-73JQKNZT.js → chunk-4KZT23KR.js} +11 -11
  149. package/dist/bundle/chunks/{chunk-PJM5C3HZ.js → chunk-5EI7WSRV.js} +10 -10
  150. package/dist/bundle/chunks/{chunk-T6DNSPYO.js → chunk-6BSOPPZH.js} +1 -1
  151. package/dist/bundle/chunks/{chunk-DAKEIWT3.js → chunk-6HO6HX7V.js} +1 -1
  152. package/dist/bundle/chunks/{chunk-XVSR5HHH.js → chunk-6QAM55HM.js} +1 -1
  153. package/dist/bundle/chunks/chunk-A257L6QO.js +7 -0
  154. package/dist/bundle/chunks/{chunk-UC76ZOWM.js → chunk-ATGOUOX2.js} +1 -1
  155. package/dist/bundle/chunks/chunk-B6OSJB22.js +26 -0
  156. package/dist/bundle/chunks/{chunk-2TSZPVPI.js → chunk-BLPYR4TN.js} +1 -1
  157. package/dist/bundle/chunks/{chunk-VJ6UXG2R.js → chunk-CH7SUFFO.js} +1 -1
  158. package/dist/bundle/chunks/{chunk-FQUVK4Q5.js → chunk-DDPD7SIB.js} +1 -1
  159. package/dist/bundle/chunks/{chunk-TLPMB3FO.js → chunk-DMWNBCXJ.js} +1 -1
  160. package/dist/bundle/chunks/{chunk-ZXFELXJH.js → chunk-FSKXIFYT.js} +1 -1
  161. package/dist/bundle/chunks/{chunk-KEMO3CBM.js → chunk-GNPLDVBD.js} +1 -1
  162. package/dist/bundle/chunks/{chunk-FZZL53S2.js → chunk-GRUZ4SBY.js} +1 -1
  163. package/dist/bundle/chunks/{chunk-RPKJJFGZ.js → chunk-HCKTU6IR.js} +1 -1
  164. package/dist/bundle/chunks/{chunk-4EDQZIAN.js → chunk-LGIJSCWH.js} +1 -1
  165. package/dist/bundle/chunks/chunk-LRFR25IP.js +8 -0
  166. package/dist/bundle/chunks/chunk-MWL2I5BV.js +19 -0
  167. package/dist/bundle/chunks/{chunk-6IA4DXG2.js → chunk-N3A4JVFJ.js} +1 -1
  168. package/dist/bundle/chunks/{chunk-PPEXVPHR.js → chunk-O452S4KX.js} +1 -1
  169. package/dist/bundle/chunks/chunk-RWQWFXMH.js +10 -0
  170. package/dist/bundle/chunks/chunk-S6DNKKUL.js +2 -0
  171. package/dist/bundle/chunks/{chunk-NBNI7G66.js → chunk-SE23TEGG.js} +1 -1
  172. package/dist/bundle/chunks/chunk-T5ZEIOJ3.js +2 -0
  173. package/dist/bundle/chunks/{chunk-ULXTDFQC.js → chunk-U57DSHID.js} +1 -1
  174. package/dist/bundle/chunks/{chunk-6DDRR56B.js → chunk-WE7BJ7YU.js} +1 -1
  175. package/dist/bundle/chunks/chunk-WXPNKIIH.js +2 -0
  176. package/dist/bundle/chunks/{chunk-5I5U6IYI.js → chunk-XQ2ZZFO6.js} +1 -1
  177. package/dist/bundle/chunks/{chunk-YFFU74KY.js → chunk-XV2V56NQ.js} +1 -1
  178. package/dist/bundle/chunks/{chunk-FIMF2TLE.js → chunk-Y6JBSHCM.js} +13 -13
  179. package/dist/bundle/chunks/cp-UR762VVT.js +2 -0
  180. package/dist/bundle/chunks/{diff-CSARC7WF.js → diff-VDB6RXHO.js} +1 -1
  181. package/dist/bundle/chunks/du-EQKH3UNA.js +2 -0
  182. package/dist/bundle/chunks/{expr-XSBELPAC.js → expr-A5XITHQD.js} +1 -1
  183. package/dist/bundle/chunks/{file-URNAD6FQ.js → file-6AYYTULJ.js} +1 -1
  184. package/dist/bundle/chunks/find-RLKBCGJR.js +2 -0
  185. package/dist/bundle/chunks/flag-coverage-UMQ3BWDP.js +2 -0
  186. package/dist/bundle/chunks/{grep-4AYF3A5J.js → grep-Q2O5EIXQ.js} +1 -1
  187. package/dist/bundle/chunks/gzip-KC5ENBD2.js +2 -0
  188. package/dist/bundle/chunks/{jq-NY7PCVMH.js → jq-UKAA3QWU.js} +1 -1
  189. package/dist/bundle/chunks/js-exec-ZQMIYQTH.js +1650 -0
  190. package/dist/bundle/chunks/ln-CEM7GDB5.js +2 -0
  191. package/dist/bundle/chunks/ls-WH5S4PPL.js +2 -0
  192. package/dist/bundle/chunks/mkdir-Z6MMWH3D.js +2 -0
  193. package/dist/bundle/chunks/mv-WE7DBLEK.js +2 -0
  194. package/dist/bundle/chunks/python3-QB7OE256.js +22 -0
  195. package/dist/bundle/chunks/readlink-JSRKXLLQ.js +2 -0
  196. package/dist/bundle/chunks/rg-JKB7DR66.js +2 -0
  197. package/dist/bundle/chunks/rm-IGPLE632.js +2 -0
  198. package/dist/bundle/chunks/rmdir-3WTXMVKI.js +2 -0
  199. package/dist/bundle/chunks/{sed-LIRH26EA.js → sed-6G32B25J.js} +1 -1
  200. package/dist/bundle/chunks/{sleep-25QUPVDK.js → sleep-PPRBTSVR.js} +1 -1
  201. package/dist/bundle/chunks/split-HUKVGJTW.js +2 -0
  202. package/dist/bundle/chunks/sqlite3-KB3MXTTM.js +2 -0
  203. package/dist/bundle/chunks/{tar-B72KU357.js → tar-LE7LAAIX.js} +1 -1
  204. package/dist/bundle/chunks/{timeout-37GM7IIL.js → timeout-C6WDYPLV.js} +1 -1
  205. package/dist/bundle/chunks/worker.js +120 -109
  206. package/dist/bundle/chunks/{xan-UIGVJCMA.js → xan-UIL24CGT.js} +1 -1
  207. package/dist/bundle/chunks/{yq-FGNXZCGX.js → yq-ZRNZKDLE.js} +1 -1
  208. package/dist/bundle/index.cjs +2677 -1101
  209. package/dist/bundle/index.js +346 -341
  210. package/dist/commands/diff/format.d.ts +46 -0
  211. package/dist/commands/js-exec/js-exec.d.ts +1 -14
  212. package/dist/commands/js-exec/run-runtime.d.ts +10 -0
  213. package/dist/commands/worker-bridge/bridge-handler.d.ts +0 -3
  214. package/dist/commands/worker-bridge/protocol.d.ts +57 -23
  215. package/dist/fs/fs-error.d.ts +43 -0
  216. package/dist/fs/interface.d.ts +13 -0
  217. package/dist/fs/mountable-fs/mountable-fs.d.ts +20 -0
  218. package/dist/fs/overlay-fs/apply.d.ts +2 -1
  219. package/dist/fs/overlay-fs/index.d.ts +0 -1
  220. package/dist/fs/overlay-fs/overlay-fs.d.ts +14 -0
  221. package/dist/fs/path-utils.d.ts +5 -0
  222. package/dist/fs/traversal.d.ts +9 -0
  223. package/dist/fs/vfs-template.d.ts +38 -15
  224. package/dist/index.d.cts +2 -1
  225. package/dist/index.d.ts +2 -1
  226. package/dist/interpreter/builtin-dispatch.d.ts +10 -0
  227. package/dist/interpreter/builtin-manifest.d.ts +273 -0
  228. package/dist/interpreter/builtins/help.d.ts +6 -0
  229. package/dist/interpreter/builtins/shopt.d.ts +3 -0
  230. package/dist/interpreter/helpers/shell-constants.d.ts +0 -20
  231. package/dist/interpreter/helpers/substitution-status.d.ts +34 -0
  232. package/dist/interpreter/interpreter.d.ts +1 -1
  233. package/dist/interpreter/types.d.ts +8 -1
  234. package/dist/limits.d.ts +2 -0
  235. package/dist/timers.d.ts +0 -9
  236. package/dist/types.d.ts +4 -3
  237. package/package.json +8 -8
  238. package/dist/bin/chunks/chmod-WYYTXGVB.js +0 -3
  239. package/dist/bin/chunks/chunk-23OI2XDJ.js +0 -20
  240. package/dist/bin/chunks/chunk-43E7AR6A.js +0 -3
  241. package/dist/bin/chunks/chunk-AI7JUA46.js +0 -13
  242. package/dist/bin/chunks/chunk-CL7IYCGG.js +0 -20
  243. package/dist/bin/chunks/chunk-GQKQEK5N.js +0 -11
  244. package/dist/bin/chunks/chunk-JHEAT7AR.js +0 -12
  245. package/dist/bin/chunks/chunk-OLEQNRKX.js +0 -8
  246. package/dist/bin/chunks/chunk-QKJAAJ7J.js +0 -3
  247. package/dist/bin/chunks/chunk-SE7JHGP3.js +0 -9
  248. package/dist/bin/chunks/chunk-WEHA3JFD.js +0 -3
  249. package/dist/bin/chunks/chunk-YQEKKZTU.js +0 -12
  250. package/dist/bin/chunks/cp-OMVKM35F.js +0 -3
  251. package/dist/bin/chunks/du-LUFPVLNW.js +0 -3
  252. package/dist/bin/chunks/find-AWH2KOY7.js +0 -3
  253. package/dist/bin/chunks/flag-coverage-FYJ2V7J4.js +0 -3
  254. package/dist/bin/chunks/gzip-FDPA6EKG.js +0 -3
  255. package/dist/bin/chunks/js-exec-5QZZCOR7.js +0 -99
  256. package/dist/bin/chunks/js-exec-worker.js +0 -4931
  257. package/dist/bin/chunks/ln-B35EKC2Q.js +0 -3
  258. package/dist/bin/chunks/ls-Q6ZZ6SQ2.js +0 -3
  259. package/dist/bin/chunks/mkdir-74BP5NTG.js +0 -3
  260. package/dist/bin/chunks/mv-76LAHXFR.js +0 -3
  261. package/dist/bin/chunks/python3-TMFYDQAP.js +0 -14
  262. package/dist/bin/chunks/readlink-EHXJNW62.js +0 -3
  263. package/dist/bin/chunks/rg-PXNKNIMY.js +0 -3
  264. package/dist/bin/chunks/rm-NLG5344W.js +0 -3
  265. package/dist/bin/chunks/rmdir-7ZIVFZJX.js +0 -3
  266. package/dist/bin/chunks/split-ZNNNHKSP.js +0 -3
  267. package/dist/bin/chunks/sqlite3-3EUPHVEZ.js +0 -3
  268. package/dist/bin/shell/chunks/chmod-WYYTXGVB.js +0 -3
  269. package/dist/bin/shell/chunks/chunk-23OI2XDJ.js +0 -20
  270. package/dist/bin/shell/chunks/chunk-43E7AR6A.js +0 -3
  271. package/dist/bin/shell/chunks/chunk-AI7JUA46.js +0 -13
  272. package/dist/bin/shell/chunks/chunk-CL7IYCGG.js +0 -20
  273. package/dist/bin/shell/chunks/chunk-GQKQEK5N.js +0 -11
  274. package/dist/bin/shell/chunks/chunk-JHEAT7AR.js +0 -12
  275. package/dist/bin/shell/chunks/chunk-OLEQNRKX.js +0 -8
  276. package/dist/bin/shell/chunks/chunk-QKJAAJ7J.js +0 -3
  277. package/dist/bin/shell/chunks/chunk-SE7JHGP3.js +0 -9
  278. package/dist/bin/shell/chunks/chunk-WEHA3JFD.js +0 -3
  279. package/dist/bin/shell/chunks/chunk-YQEKKZTU.js +0 -12
  280. package/dist/bin/shell/chunks/cp-OMVKM35F.js +0 -3
  281. package/dist/bin/shell/chunks/du-LUFPVLNW.js +0 -3
  282. package/dist/bin/shell/chunks/find-AWH2KOY7.js +0 -3
  283. package/dist/bin/shell/chunks/flag-coverage-FYJ2V7J4.js +0 -3
  284. package/dist/bin/shell/chunks/gzip-FDPA6EKG.js +0 -3
  285. package/dist/bin/shell/chunks/js-exec-5QZZCOR7.js +0 -99
  286. package/dist/bin/shell/chunks/ln-B35EKC2Q.js +0 -3
  287. package/dist/bin/shell/chunks/ls-Q6ZZ6SQ2.js +0 -3
  288. package/dist/bin/shell/chunks/mkdir-74BP5NTG.js +0 -3
  289. package/dist/bin/shell/chunks/mv-76LAHXFR.js +0 -3
  290. package/dist/bin/shell/chunks/python3-TMFYDQAP.js +0 -14
  291. package/dist/bin/shell/chunks/readlink-EHXJNW62.js +0 -3
  292. package/dist/bin/shell/chunks/rg-PXNKNIMY.js +0 -3
  293. package/dist/bin/shell/chunks/rm-NLG5344W.js +0 -3
  294. package/dist/bin/shell/chunks/rmdir-7ZIVFZJX.js +0 -3
  295. package/dist/bin/shell/chunks/split-ZNNNHKSP.js +0 -3
  296. package/dist/bin/shell/chunks/sqlite3-3EUPHVEZ.js +0 -3
  297. package/dist/bundle/chunks/chmod-WM2JFFQC.js +0 -2
  298. package/dist/bundle/chunks/chunk-7IJWBG4I.js +0 -2
  299. package/dist/bundle/chunks/chunk-FSJ6TTCC.js +0 -19
  300. package/dist/bundle/chunks/chunk-G3IRZ4FN.js +0 -8
  301. package/dist/bundle/chunks/chunk-MLIO3BK2.js +0 -7
  302. package/dist/bundle/chunks/chunk-PS2RJNZZ.js +0 -2
  303. package/dist/bundle/chunks/chunk-TBVD66LC.js +0 -10
  304. package/dist/bundle/chunks/chunk-ULXGGWAD.js +0 -11
  305. package/dist/bundle/chunks/chunk-UTKGYVUZ.js +0 -7
  306. package/dist/bundle/chunks/chunk-W2Z6LYL6.js +0 -11
  307. package/dist/bundle/chunks/chunk-WN54B5NQ.js +0 -12
  308. package/dist/bundle/chunks/chunk-YUSFCOM7.js +0 -2
  309. package/dist/bundle/chunks/cp-2KZIPZJS.js +0 -2
  310. package/dist/bundle/chunks/du-7AZCLKR6.js +0 -2
  311. package/dist/bundle/chunks/find-END3EAHV.js +0 -2
  312. package/dist/bundle/chunks/flag-coverage-XSPWRCVG.js +0 -2
  313. package/dist/bundle/chunks/gzip-RQOBR22H.js +0 -2
  314. package/dist/bundle/chunks/js-exec-57QMXJG5.js +0 -98
  315. package/dist/bundle/chunks/js-exec-worker.js +0 -4931
  316. package/dist/bundle/chunks/ln-OPY2ZVGQ.js +0 -2
  317. package/dist/bundle/chunks/ls-ZPXGZX63.js +0 -2
  318. package/dist/bundle/chunks/mkdir-WDDKK2P3.js +0 -2
  319. package/dist/bundle/chunks/mv-ZF6UBVRB.js +0 -2
  320. package/dist/bundle/chunks/python3-NNONJINM.js +0 -13
  321. package/dist/bundle/chunks/readlink-U5OM5A3M.js +0 -2
  322. package/dist/bundle/chunks/rg-NAMXBYKS.js +0 -2
  323. package/dist/bundle/chunks/rm-R2ZENNSN.js +0 -2
  324. package/dist/bundle/chunks/rmdir-YJKPQVCK.js +0 -2
  325. package/dist/bundle/chunks/split-JICLAMP6.js +0 -2
  326. package/dist/bundle/chunks/sqlite3-M4UZPXDO.js +0 -2
  327. package/dist/commands/js-exec/js-exec-worker.d.ts +0 -33
  328. package/dist/fs/overlay-fs/merge.d.ts +0 -24
@@ -1,57 +1,57 @@
1
1
  #!/usr/bin/env node
2
2
  import{createRequire} from"node:module";const require=createRequire(import.meta.url);
3
- import{a as Rn,b as Dn,c as qt}from"./chunks/chunk-O2BCKSMK.js";import{a as Nr}from"./chunks/chunk-3PCPQIUD.js";import{c as Zs,e as ya}from"./chunks/chunk-TW2IJRUF.js";import{a as pa,b as ha,d as Qn,e as Kn}from"./chunks/chunk-QKJAAJ7J.js";import{a as Ut}from"./chunks/chunk-K27FY3ES.js";import{a as zt,b as Ue,c as Hs}from"./chunks/chunk-MROECM42.js";import{a as Xn,b as ma}from"./chunks/chunk-42AMF6EE.js";import{a as he}from"./chunks/chunk-GA5TPRMF.js";import{a as Ir,b as Or}from"./chunks/chunk-GR4ZHKXI.js";import{a as Cr,b as He}from"./chunks/chunk-HWI42GQO.js";import"./chunks/chunk-YERKK5B3.js";import{c as Vt,d as $n}from"./chunks/chunk-I57EACSL.js";import"./chunks/chunk-7JZKVC3F.js";import{a as z,b as Ot,c as K,d as Pn,e as Cn,f as _t,g as Nn}from"./chunks/chunk-43E7AR6A.js";import{a as Mt,b as Ze,c as Qe,d as Oe,e as We,f as Ve,g as U,h as ae,i as Ke,j as Bt,k as Rr,l as P,m as Xe,n as $e,o as Wt,p as Dr,q as rt}from"./chunks/chunk-FUT3X2GJ.js";import{a as M,c as dn,e as xn,f as Ft,g as Gs}from"./chunks/chunk-CPKBPQ2C.js";import{a as ze}from"./chunks/chunk-PBOVSFTJ.js";import{a as It}from"./chunks/chunk-I4IRHQDW.js";import"./chunks/chunk-DN2YCFOR.js";import{resolve as jf}from"node:path";var In=[{name:"echo",load:async()=>(await import("./chunks/echo-NYDCCFWB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-BQ7FQTN5.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-YXCSED2H.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-Q6ZZ6SQ2.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-74BP5NTG.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-7ZIVFZJX.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TVQAUQOG.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-NLG5344W.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-OMVKM35F.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-76LAHXFR.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-B35EKC2Q.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-WYYTXGVB.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-YKLNXWZI.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EHXJNW62.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-QKVY3SIO.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-UOTUV25D.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-3KLVOCI2.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-LROLDXHH.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-CVU5V66H.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-CVU5V66H.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-CVU5V66H.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-PXNKNIMY.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-4LVDFHIJ.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-KO7ZE3P7.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-HBOCBBJQ.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-JMHDIJXT.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-URDMZCXL.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-42X6363P.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-DWWA3JTW.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-PVFO6FRY.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-CZTQCNOZ.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-4IZRRT7U.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-YEY7X54W.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-IQRKKT7D.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-JPOQORZF.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-CNUK76JL.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-ZNNNHKSP.js")).split},{name:"column",load:async()=>(await import("./chunks/column-AJFK3TWF.js")).column},{name:"join",load:async()=>(await import("./chunks/join-34DX7YK5.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-L4HKV5PD.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-AWH2KOY7.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-C4CRGDXP.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-TPUFCYF6.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-ZGP6NPGS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-LUFPVLNW.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-2TSVF4W7.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-2TSVF4W7.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3R4G6HQY.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3R4G6HQY.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-3HAU45KT.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4AMMXFXL.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-KFTJGQLQ.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-KFTJGQLQ.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-OE52K3TM.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-CFCBBWVH.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-CFCBBWVH.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-V7OTAVU5.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-TQ5KOCNW.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-YXZZCUSQ.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-6MQGVWDY.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-MOJQBZMY.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-RQOWSWYG.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-LF7BTSK5.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-X2EAOGV5.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-NNMDHOCN.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-Z6KAYGDK.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-CATBXX76.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-YGSNBVY3.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-4T64QNLS.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-XUMA42ZC.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-HVIDHJ6M.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-4TPGVSBZ.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-DG4BMYM5.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-2I76DUQL.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-B5HDVKW6.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-2GXD4D5K.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-FDPA6EKG.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-FDPA6EKG.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-FDPA6EKG.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(In.push({name:"tar",load:async()=>(await import("./chunks/tar-7HGZIMZD.js")).tarCommand}),In.push({name:"yq",load:async()=>(await import("./chunks/yq-MYZOS2WN.js")).yqCommand}),In.push({name:"xan",load:async()=>(await import("./chunks/xan-WW53ETXT.js")).xanCommand}),In.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-3EUPHVEZ.js")).sqlite3Command}));var Qs=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Qs.push({name:"python3",load:async()=>(await import("./chunks/python3-TMFYDQAP.js")).python3Command}),Qs.push({name:"python",load:async()=>(await import("./chunks/python3-TMFYDQAP.js")).pythonCommand}));var Ks=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ks.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-5QZZCOR7.js")).jsExecCommand}),Ks.push({name:"node",load:async()=>(await import("./chunks/js-exec-5QZZCOR7.js")).nodeStubCommand}));var Zf=[{name:"curl",load:async()=>(await import("./chunks/curl-NHNZ46BU.js")).curlCommand}],ga=new Map;function _r(e){return{name:e.name,async execute(t,n){let r=ga.get(e.name);if(r||(r=await He.runTrustedAsync(()=>e.load()),ga.set(e.name,r)),n.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:s}=await import("./chunks/flag-coverage-FYJ2V7J4.js");s(n.coverage,e.name,t)}return r.execute(t,n)}}}function wa(e){return(e?In.filter(n=>e.includes(n.name)):In).map(_r)}function Ea(){return Zf.map(_r)}function ba(){return Qs.map(_r)}function Sa(){return Ks.map(_r)}var Aa=new WeakMap,va=new WeakSet;function Xs(e){let t=Aa.get(e);return t===void 0&&(t=Object.freeze(Object.create(null)),Aa.set(e,t),va.add(t)),t}function ka(e){return va.has(e)}var xa={maxSourceBytes:67108864,maxExecDepth:64,maxCallDepth:100,maxCommandCount:1e5,maxLoopIterations:1e5,maxAwkIterations:1e5,maxSedIterations:1e5,maxJqIterations:1e7,maxQueryTokens:1e5,maxQueryDepth:1e3,maxQueryElements:1e6,maxAwkParserTokens:1e5,maxAwkParserDepth:256,maxAwkParserOperations:1e6,maxCsvRows:1e6,maxCsvCells:1e7,maxWorkUnits:1e8,maxTraversalEntries:1e6,maxTraversalDepth:1e3,maxTraversalWork:1e6,maxLiveBytes:536870912,maxInputBytes:536870912,maxFileSystemBytes:1073741824,maxDatabaseBytes:1073741824,maxDatabaseResultBytes:268435456,maxArchiveBytes:1073741824,maxArchiveCompressedBytes:536870912,maxArchiveEntryBytes:536870912,maxArchiveEntries:1e6,maxWorkerMessageBytes:67108864,maxExecutionTimeMs:36e5,maxExtensionCleanupTimeMs:100,maxSqliteTimeoutMs:3e4,maxPythonTimeoutMs:3e4,maxJsTimeoutMs:3e4,maxGlobOperations:1e6,maxStringLength:67108864,maxArrayElements:1e6,maxHeredocSize:67108864,maxSubstitutionDepth:50,maxBraceExpansionResults:1e5,maxOutputSize:268435456,maxFileDescriptors:4096,maxSourceDepth:100},Qf={...xa,maxSourceBytes:8*1024*1024,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxExtensionCleanupTimeMs:25,maxGlobOperations:1e5,maxStringLength:10*1024*1024,maxArrayElements:1e5,maxHeredocSize:10*1024*1024,maxBraceExpansionResults:1e4,maxOutputSize:10*1024*1024,maxFileDescriptors:1024,maxQueryTokens:25e3,maxQueryDepth:256,maxQueryElements:1e5,maxAwkParserTokens:25e3,maxAwkParserDepth:128,maxAwkParserOperations:1e5,maxCsvRows:1e5,maxCsvCells:1e6,maxWorkUnits:1e5,maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxLiveBytes:64*1024*1024,maxInputBytes:32*1024*1024,maxFileSystemBytes:128*1024*1024,maxDatabaseBytes:64*1024*1024,maxDatabaseResultBytes:16*1024*1024,maxArchiveBytes:128*1024*1024,maxArchiveCompressedBytes:64*1024*1024,maxArchiveEntryBytes:64*1024*1024,maxArchiveEntries:1e5,maxWorkerMessageBytes:16*1024*1024,maxExecutionTimeMs:3e4};function Ys(e,t="normal"){if(t!=="normal"&&t!=="hardened")throw new RangeError('executionLimitProfile must be "normal" or "hardened"');let n=t==="hardened"?Qf:xa;if(!e)return{...n};let r={maxSourceBytes:e.maxSourceBytes??n.maxSourceBytes,maxExecDepth:e.maxExecDepth??n.maxExecDepth,maxCallDepth:e.maxCallDepth??n.maxCallDepth,maxCommandCount:e.maxCommandCount??n.maxCommandCount,maxLoopIterations:e.maxLoopIterations??n.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??n.maxAwkIterations,maxSedIterations:e.maxSedIterations??n.maxSedIterations,maxJqIterations:e.maxJqIterations??n.maxJqIterations,maxQueryTokens:e.maxQueryTokens??n.maxQueryTokens,maxQueryDepth:e.maxQueryDepth??n.maxQueryDepth,maxQueryElements:e.maxQueryElements??n.maxQueryElements,maxAwkParserTokens:e.maxAwkParserTokens??n.maxAwkParserTokens,maxAwkParserDepth:e.maxAwkParserDepth??n.maxAwkParserDepth,maxAwkParserOperations:e.maxAwkParserOperations??n.maxAwkParserOperations,maxCsvRows:e.maxCsvRows??n.maxCsvRows,maxCsvCells:e.maxCsvCells??n.maxCsvCells,maxWorkUnits:e.maxWorkUnits??n.maxWorkUnits,maxTraversalEntries:e.maxTraversalEntries??n.maxTraversalEntries,maxTraversalDepth:e.maxTraversalDepth??n.maxTraversalDepth,maxTraversalWork:e.maxTraversalWork??n.maxTraversalWork,maxLiveBytes:e.maxLiveBytes??n.maxLiveBytes,maxInputBytes:e.maxInputBytes??n.maxInputBytes,maxFileSystemBytes:e.maxFileSystemBytes??n.maxFileSystemBytes,maxDatabaseBytes:e.maxDatabaseBytes??n.maxDatabaseBytes,maxDatabaseResultBytes:e.maxDatabaseResultBytes??n.maxDatabaseResultBytes,maxArchiveBytes:e.maxArchiveBytes??n.maxArchiveBytes,maxArchiveCompressedBytes:e.maxArchiveCompressedBytes??n.maxArchiveCompressedBytes,maxArchiveEntryBytes:e.maxArchiveEntryBytes??n.maxArchiveEntryBytes,maxArchiveEntries:e.maxArchiveEntries??n.maxArchiveEntries,maxWorkerMessageBytes:e.maxWorkerMessageBytes??n.maxWorkerMessageBytes,maxExecutionTimeMs:e.maxExecutionTimeMs??n.maxExecutionTimeMs,maxExtensionCleanupTimeMs:e.maxExtensionCleanupTimeMs??n.maxExtensionCleanupTimeMs,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??n.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??n.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??n.maxJsTimeoutMs,maxGlobOperations:e.maxGlobOperations??n.maxGlobOperations,maxStringLength:e.maxStringLength??n.maxStringLength,maxArrayElements:e.maxArrayElements??n.maxArrayElements,maxHeredocSize:e.maxHeredocSize??n.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??n.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??n.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??n.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??n.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??n.maxSourceDepth};for(let s of Object.keys(r)){let i=r[s];if(i!==Number.POSITIVE_INFINITY&&(!Number.isSafeInteger(i)||i<0))throw new RangeError(`${s} must be a non-negative safe integer or positive Infinity`)}return r}function $a(e){return"load"in e&&typeof e.load=="function"}function Pa(e){let t=null,n=null;return{name:e.name,trusted:e.trusted!==!1,async execute(r,s){if(!t){let o=n;o||(o=e.load().then(a=>(t=a,a)),n=o);try{t=await o}catch(a){throw n===o&&(n=null),a}}let i=t;if(!i)throw new Error(`Failed to load command: ${e.name}`);return i.execute(r,s)}}}var Ca=Object.freeze(Object.create(null)),Lr=class{limits;signal;abortOnUnresolvedCommands;commandCount=0;workUnits=0;liveBytes=0;inputBytes=0;outputBytes=0;countersByKind=new Map;bytesByKind=new Map;depthByKind=new Map;cleanupCallbacks=[];poisoned;closed=!1;startedAt=Date.now();unresolvedCommands=new Set;get remainingLiveBytes(){return Math.max(0,this.limits.maxLiveBytes-this.liveBytes)}get outputBytesUsed(){return this.outputBytes}constructor(t,n=void 0,r=!1){this.limits=t,this.signal=n,this.abortOnUnresolvedCommands=r}recordUnresolvedCommand(t){this.unresolvedCommands.add(t)}get unresolvedCommandNames(){return[...this.unresolvedCommands]}fail(t){throw this.poisoned??=t,this.poisoned}poisonAfterAbort(t){this.poisoned??=t}assertUsable(){if(this.poisoned)throw this.poisoned;if(this.closed)throw new Error("execution budget is already closed");this.throwIfAborted()}chargeCommand(){return this.consume("commands",1,"execution")}consumeWork(t=1,n="execution"){return this.consume("work",t,n)}consumeLimited(t,n,r,s=t){this.assertUsable();let i=this.countersByKind.get(t)??0;return(!Number.isSafeInteger(n)||n<0||!Number.isSafeInteger(r)||r<0||n>r-i)&&this.fail(new P(`${s}: ${t} work limit exceeded (${r})`,"iterations")),n>this.limits.maxWorkUnits-this.workUnits&&this.fail(new P(`${s}: aggregate work limit exceeded (${this.limits.maxWorkUnits})`,"iterations")),this.countersByKind.set(t,i+n),this.workUnits+=n,i+n}consumeInput(t,n="execution"){return this.assertUsable(),(!Number.isSafeInteger(t)||t<0||t>this.limits.maxInputBytes-this.inputBytes)&&this.fail(new P(`${n}: aggregate input size limit exceeded (${this.limits.maxInputBytes} bytes)`,"string_length")),this.inputBytes+=t,this.inputBytes}consume(t,n=1,r=t){this.assertUsable();let s=this.countersByKind.get(t)??0,i=t==="commands"?this.commandCount:this.workUnits,o=t==="commands"?this.limits.maxCommandCount:this.limits.maxWorkUnits;(!Number.isSafeInteger(n)||n<0||n>o-i)&&this.fail(new P(t==="commands"?`too many commands executed (>${o}), increase executionLimits.maxCommandCount`:`${r}: ${t} work limit exceeded (${o})`,t==="commands"?"commands":"iterations"));let a=i+n;return t==="commands"?this.commandCount=a:this.workUnits=a,this.countersByKind.set(t,s+n),a}reserveBytes(t,n,r){this.assertUsable();let s=typeof t=="string"?t:"live",i=typeof t=="string"?n:t,o=typeof t=="string"?r??s:n??"execution";(!Number.isSafeInteger(i)||i<0||i>this.limits.maxLiveBytes-this.liveBytes)&&this.fail(new P(`${o}: live byte limit exceeded (${this.limits.maxLiveBytes} bytes)`,"string_length")),this.liveBytes+=i,this.bytesByKind.set(s,(this.bytesByKind.get(s)??0)+i);let a=!1;return{release:()=>{if(a)return;a=!0,this.liveBytes-=i;let l=(this.bytesByKind.get(s)??i)-i;l<=0?this.bytesByKind.delete(s):this.bytesByKind.set(s,l)}}}appendOutput(t,n,r="execution",s=0,i="text"){this.assertUsable();let o=i==="bytes"?n.length:M(n);(!Number.isSafeInteger(s)||s<0||s>o)&&this.fail(new P(`${r}: invalid ${t} accounting`,"output_size"));let a=o-s;return a>this.limits.maxOutputSize-this.outputBytes&&this.fail(new P(`${r}: total output size exceeded (>${this.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size")),this.outputBytes+=a,o}accountResult(t,n="execution",r=Number.POSITIVE_INFINITY){let s=t.internalOutputAccounting,i=Math.min(s?.stdout??0,r),o=Math.min(s?.stderr??0,Math.max(0,r-i)),a=this.appendOutput("stdout",t.stdout,n,i,t.stdoutKind==="bytes"||t.stdoutEncoding==="binary"?"bytes":"text"),l=this.appendOutput("stderr",t.stderr,n,o);return Object.isExtensible(t)?(t.internalOutputAccounting={stdout:a,stderr:l},t):a===0&&l===0?t:{...t,internalOutputAccounting:{stdout:a,stderr:l}}}relinquishOutput(t,n,r){this.assertUsable(),r!==Ca&&this.fail(new P(`${n}: unauthorized output accounting release`,"output_size")),(!Number.isSafeInteger(t)||t<0||t>this.outputBytes)&&this.fail(new P(`${n}: invalid output accounting release`,"output_size")),this.outputBytes-=t}enterDepth(t,n=this.limits.maxCallDepth,r){this.assertUsable();let s=typeof n=="number"?n:this.limits.maxCallDepth,i=typeof n=="string"?n:r??t,o=this.depthByKind.get(t)??0;o>=s&&this.fail(new P(`${i}: maximum depth (${s}) exceeded`,"recursion")),this.depthByKind.set(t,o+1);let a=!1;return{release:()=>{if(a)return;a=!0;let l=(this.depthByKind.get(t)??1)-1;l<=0?this.depthByKind.delete(t):this.depthByKind.set(t,l)}}}throwIfAborted(t="execution"){this.signal?.aborted&&this.fail(new Xe("",`bash: ${t} aborted
4
- `)),Date.now()-this.startedAt>this.limits.maxExecutionTimeMs&&this.fail(new Xe("",`bash: ${t} exceeded execution deadline (${this.limits.maxExecutionTimeMs}ms)
5
- `))}remainingTimeMs(){return Math.max(0,this.limits.maxExecutionTimeMs-(Date.now()-this.startedAt))}registerCleanup(t){this.assertUsable(),this.cleanupCallbacks.push(t);let n=!0;return()=>{if(!n)return;n=!1;let r=this.cleanupCallbacks.indexOf(t);r>=0&&this.cleanupCallbacks.splice(r,1)}}async close(){if(this.closed)return;this.closed=!0;let t=[],n=Date.now()+this.limits.maxExtensionCleanupTimeMs;for(let r=this.cleanupCallbacks.length-1;r>=0;r--)try{let s=n-Date.now();if(s<=0){t.push(new Error("execution cleanup grace period exceeded"));break}let i,o=await Promise.race([Promise.resolve().then(this.cleanupCallbacks[r]).then(()=>({ok:!0}),a=>({ok:!1,error:a})),new Promise(a=>{i=Qn(()=>a({ok:!1,error:new Error("execution cleanup grace period exceeded")}),s)})]);if(Kn(i),!o.ok&&(t.push(o.error),Date.now()>=n))break}catch(s){t.push(s)}if(this.cleanupCallbacks.length=0,this.depthByKind.clear(),this.bytesByKind.clear(),this.liveBytes=0,t.length>0)throw new AggregateError(t,"execution cleanup failed")}assertExecDepth(t){this.assertUsable(),t>this.limits.maxExecDepth&&this.fail(new P(`maximum nested execution depth (${this.limits.maxExecDepth}) exceeded`,"recursion"))}};function Na(e){let t=Object.create(null);return Object.defineProperties(t,{remainingLiveBytes:{enumerable:!0,get:()=>e.remainingLiveBytes},consumeWork:{enumerable:!0,value:e.consumeWork.bind(e)},consumeLimited:{enumerable:!0,value:e.consumeLimited.bind(e)},consumeInput:{enumerable:!0,value:e.consumeInput.bind(e)},reserveBytes:{enumerable:!0,value:e.reserveBytes.bind(e)},enterDepth:{enumerable:!0,value:e.enterDepth.bind(e)},throwIfAborted:{enumerable:!0,value:e.throwIfAborted.bind(e)},remainingTimeMs:{enumerable:!0,value:e.remainingTimeMs.bind(e)},registerCleanup:{enumerable:!0,value:e.registerCleanup.bind(e)}}),Object.freeze(t)}function Ra(e,t,n="pipeline"){e.relinquishOutput(t,n,Ca)}var pn=new TextEncoder;function Kf(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var St=class{data=new Map;entryIdentities=new WeakMap;nextEntryIdentity=1;maxTotalBytes;retainedBytes=0;contentReferences=new WeakMap;materializedContent(t){return t?.type==="file"&&"content"in t?t.content:null}storedByteLength(t){return t===null?0:t instanceof Uint8Array?t.byteLength:M(t)}wouldReleaseBytes(t){let n=this.materializedContent(t);return n===null?0:n instanceof Uint8Array?this.contentReferences.get(n)===1?n.byteLength:0:this.storedByteLength(n)}assertCanAllocate(t,n){let r=this.wouldReleaseBytes(this.data.get(t));if(!Number.isSafeInteger(n)||n<0||n>this.maxTotalBytes-this.retainedBytes+r)throw new Error(`ENOSPC: in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`)}setEntry(t,n){let r=this.data.get(t),s=this.materializedContent(r),i=this.materializedContent(n);if(s===i){this.data.set(t,n);return}let o=this.wouldReleaseBytes(r),a=i instanceof Uint8Array?this.contentReferences.has(i)?0:i.byteLength:this.storedByteLength(i);if(a>this.maxTotalBytes-this.retainedBytes+o)throw new Error(`ENOSPC: in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`);if(s instanceof Uint8Array){let l=this.contentReferences.get(s)??0;l<=1?this.contentReferences.delete(s):this.contentReferences.set(s,l-1)}i instanceof Uint8Array&&this.contentReferences.set(i,(this.contentReferences.get(i)??0)+1),this.retainedBytes+=a-o,this.data.set(t,n)}deleteEntry(t){let n=this.data.get(t);if(!n)return!1;let r=this.materializedContent(n),s=this.wouldReleaseBytes(n);if(r instanceof Uint8Array){let i=this.contentReferences.get(r)??0;i<=1?this.contentReferences.delete(r):this.contentReferences.set(r,i-1)}return this.retainedBytes-=s,this.data.delete(t)}contentByteLength(t,n){if(t instanceof Uint8Array)return t.byteLength;if(n==="hex")return Math.floor(t.length/2);if(n==="base64"){let r=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.max(0,Math.floor(t.length*3/4)-r)}return n==="binary"||n==="latin1"?t.length:M(t)}identityFor(t){let n=this.entryIdentities.get(t);return n||(n=`memfs:${this.nextEntryIdentity++}`,this.entryIdentities.set(t,n)),n}constructor(t,n={}){if(this.maxTotalBytes=n.maxTotalBytes??1024*1024*1024,!Number.isSafeInteger(this.maxTotalBytes)||this.maxTotalBytes<0)throw new Error("InMemoryFs: invalid maxTotalBytes");if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[r,s]of Object.entries(t))typeof s=="function"?this.writeFileLazy(r,s):Kf(s)?this.writeFileSync(r,s.content,void 0,{mode:s.mode,mtime:s.mtime}):this.writeFileSync(r,s)}ensureParentDirs(t){let n=Pn(t);n!=="/"&&(this.data.has(n)||(this.ensureParentDirs(n),this.data.set(n,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,n,r,s){K(t,"write");let i=z(t);this.ensureParentDirs(i);let o=qt(r);this.assertCanAllocate(i,this.contentByteLength(n,o));let a=Rn(n,o);this.setEntry(i,{type:"file",content:a,mode:s?.mode??420,mtime:s?.mtime??new Date})}writeFileLazy(t,n,r){K(t,"write");let s=z(t);this.ensureParentDirs(s),this.setEntry(s,{type:"file",lazy:n,mode:r?.mode??420,mtime:r?.mtime??new Date})}async materializeLazy(t,n){let r=await n.lazy(),s=typeof r=="string"?pn.encode(r):r,i={type:"file",content:s,mode:n.mode,mtime:n.mtime};return this.assertCanAllocate(t,s.byteLength),this.setEntry(t,i),i}async readFile(t,n){let r=await this.readFileBuffer(t),s=qt(n);return Dn(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Dn(n,"binary")}async readFileBuffer(t){K(t,"open");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if("lazy"in r){let s=await this.materializeLazy(n,r);return s.content instanceof Uint8Array?s.content:pn.encode(s.content)}return r.content instanceof Uint8Array?r.content:pn.encode(r.content)}async writeFile(t,n,r){this.writeFileSync(t,n,r)}async appendFile(t,n,r){K(t,"append");let s=z(t),i=this.data.get(s);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=qt(r),a=this.contentByteLength(n,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(s,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:pn.encode("content"in l?l.content:"");this.assertCanAllocate(s,c.byteLength+a);let u=Rn(n,o),f=new Uint8Array(c.length+u.length);f.set(c),f.set(u,c.length),this.setEntry(s,{type:"file",content:f,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,n,r)}async exists(t){if(t.includes("\0"))return!1;try{let n=this.resolvePathWithSymlinks(t);return this.data.has(n)}catch{return!1}}async stat(t){K(t,"stat");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=pn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}async lstat(t){K(t,"lstat");let n=this.resolveIntermediateSymlinks(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=pn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}resolveIntermediateSymlinks(t){let n=z(t);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let s="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];s=`${s}/${a}`;let l=this.data.get(s),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(s),s=Nn(s,l.target),l=this.data.get(s),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${s}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let n=z(t);if(n==="/")return"/";let r=n.slice(1).split("/"),s="",i=new Set;for(let o of r){s=`${s}/${o}`;let a=this.data.get(s),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(s))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(s),s=Nn(s,a.target),a=this.data.get(s),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return s}async mkdir(t,n){this.mkdirSync(t,n)}mkdirSync(t,n){K(t,"mkdir");let r=z(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!n?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let s=Pn(r);if(s!=="/"&&!this.data.has(s))if(n?.recursive)this.mkdirSync(s,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){K(t,"scandir");let n=z(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let s=new Set;for(;r&&r.type==="symlink";){if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);s.add(n),n=Nn(n,r.target),r=this.data.get(n)}if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=n==="/"?"/":`${n}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==n&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,n){K(t,"rm");let r=z(t),s=this.data.get(r);if(!s){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(s.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!n?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=_t(r,o);await this.rm(a,n)}}}this.deleteEntry(r)}async cp(t,n,r){K(t,"cp"),K(n,"cp");let s=z(t),i=z(n),o=this.data.get(s);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?o.content.byteLength:pn.encode(o.content).byteLength;this.assertCanAllocate(i,a);let l=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.setEntry(i,{...o,content:l})}else this.setEntry(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);if(Ot(s,i))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(s);for(let l of a){let c=_t(s,l),u=_t(i,l);await this.cp(c,u,r)}}}async mv(t,n){K(t,"mv"),K(n,"mv");let r=z(t),s=z(n);if(r===s)return;let i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, mv '${t}'`);if(i.type==="directory"&&Ot(r,s))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);if(i.type==="directory"){await this.mkdir(s,{recursive:!0});let o=await this.readdir(r);for(let a of o)await this.mv(_t(r,a),_t(s,a));this.deleteEntry(r);return}this.ensureParentDirs(s),this.setEntry(s,i),this.deleteEntry(r)}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,n){return Cn(t,n)}async chmod(t,n){K(t,"chmod");let r=z(t),s=this.data.get(r);if(!s)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);s.mode=n}async symlink(t,n){K(n,"symlink");let r=z(n);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,n){K(t,"link"),K(n,"link");let r=z(t),s=z(n),i=this.data.get(r);if(!i)throw new Error(`ENOENT: no such file or directory, link '${t}'`);if(i.type!=="file")throw new Error(`EPERM: operation not permitted, link '${t}'`);if(this.data.has(s))throw new Error(`EEXIST: file already exists, link '${n}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(s);let a={type:"file",content:o.content,mode:o.mode,mtime:o.mtime};this.entryIdentities.set(a,this.identityFor(o)),this.setEntry(s,a)}async readlink(t){K(t,"readlink");let n=z(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return r.target}async realpath(t){K(t,"realpath");let n=this.resolvePathWithSymlinks(t);if(!this.data.has(n))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return n}async utimes(t,n,r){K(t,"utimes");let s=z(t),i=this.resolvePathWithSymlinks(s),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};var Ia="5.1.0(1)-release",Oa="Linux version 5.15.0-generic (just-bash) #1 SMP PREEMPT";function ei(e){let{pid:t,ppid:n,uid:r,gid:s}=e;return`Name: bash
3
+ import{a as On,b as _n,c as Gt}from"./chunks/chunk-O2BCKSMK.js";import{a as _r}from"./chunks/chunk-3PCPQIUD.js";import{c as si,e as ka}from"./chunks/chunk-TW2IJRUF.js";import{a as ba,b as Sa,c as Jn,d as er}from"./chunks/chunk-PPVF2N6C.js";import{a as Ht}from"./chunks/chunk-K27FY3ES.js";import{a as jt,b as je,c as ri}from"./chunks/chunk-MROECM42.js";import{a as nr,b as va}from"./chunks/chunk-42AMF6EE.js";import{a as me}from"./chunks/chunk-YXPSX3SI.js";import{a as Fr,b as Mr}from"./chunks/chunk-GR4ZHKXI.js";import{a as Or,b as Te}from"./chunks/chunk-HWI42GQO.js";import"./chunks/chunk-YERKK5B3.js";import{c as Ut,d as Nn}from"./chunks/chunk-I57EACSL.js";import"./chunks/chunk-7JZKVC3F.js";import{a as tr,b as pt,c as qt,d as Br,e as U,f as Lt,g as X,h as Rn,i as Dn,j as Aa,k as Tt,l as In}from"./chunks/chunk-HWK7KFGB.js";import{a as Wt,b as Qe,c as Ke,d as _e,e as ze,f as Ue,g as q,h as le,i as Xe,j as Vt,k as Lr,l as P,m as Ye,n as Pe,o as zt,p as Tr,q as st}from"./chunks/chunk-FUT3X2GJ.js";import{a as B,c as mn,e as Cn,f as Bt,g as ni}from"./chunks/chunk-CPKBPQ2C.js";import{a as N,c as yn}from"./chunks/chunk-OHFB3M3X.js";import{a as qe}from"./chunks/chunk-PBOVSFTJ.js";import{a as _t}from"./chunks/chunk-I4IRHQDW.js";import"./chunks/chunk-DN2YCFOR.js";import{resolve as sd}from"node:path";var Ln=[{name:"echo",load:async()=>(await import("./chunks/echo-NYDCCFWB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-BQ7FQTN5.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-YXCSED2H.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-5Z45FV4U.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-YJ3SOVRP.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-PRNISPBA.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TVQAUQOG.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-B4LVIG7A.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-YLP7ULVT.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-EOOP2TO3.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-XVC53673.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-GX5SYTRL.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-YKLNXWZI.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EJ3IKLWW.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-QKVY3SIO.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-UOTUV25D.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-3KLVOCI2.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-LROLDXHH.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-VXWNMIDD.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-VXWNMIDD.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-VXWNMIDD.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-WHVR3YDT.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-SY63U2YX.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-NTRVFXRA.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-HBOCBBJQ.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-JMHDIJXT.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-URDMZCXL.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-42X6363P.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-DWWA3JTW.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-PVFO6FRY.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-CZTQCNOZ.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-4IZRRT7U.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-YEY7X54W.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-IQRKKT7D.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-JPOQORZF.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-CNUK76JL.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-HIFKSV2A.js")).split},{name:"column",load:async()=>(await import("./chunks/column-AJFK3TWF.js")).column},{name:"join",load:async()=>(await import("./chunks/join-34DX7YK5.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-L4HKV5PD.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-MHC4QV6H.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-C4CRGDXP.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-TPUFCYF6.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-ZGP6NPGS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-DH76GZJ3.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-2TSVF4W7.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-2TSVF4W7.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-3R4G6HQY.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-3R4G6HQY.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-3HAU45KT.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4AMMXFXL.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-KFTJGQLQ.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-KFTJGQLQ.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-OE52K3TM.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-CFCBBWVH.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-CFCBBWVH.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-YS4PR46D.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-TQ5KOCNW.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-JSJ56EOK.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-6MQGVWDY.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-DVFE2GSF.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-YGFHQJKX.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-LF7BTSK5.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-X2EAOGV5.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-PQEPO5TE.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-Z6KAYGDK.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-CATBXX76.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-YGSNBVY3.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-JA7QI2YT.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-XUMA42ZC.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-HVIDHJ6M.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-4TPGVSBZ.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-DG4BMYM5.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-2I76DUQL.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-B5HDVKW6.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-2GXD4D5K.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-UQZL4R74.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-UQZL4R74.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-UQZL4R74.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Ln.push({name:"tar",load:async()=>(await import("./chunks/tar-7XOP7VOX.js")).tarCommand}),Ln.push({name:"yq",load:async()=>(await import("./chunks/yq-CWBZMGUV.js")).yqCommand}),Ln.push({name:"xan",load:async()=>(await import("./chunks/xan-RMH6JEXM.js")).xanCommand}),Ln.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-KNN6V2W6.js")).sqlite3Command}));var ii=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(ii.push({name:"python3",load:async()=>(await import("./chunks/python3-3ERN3L6S.js")).python3Command}),ii.push({name:"python",load:async()=>(await import("./chunks/python3-3ERN3L6S.js")).pythonCommand}));var oi=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(oi.push({name:"js-exec",load:async()=>(await import("./chunks/js-exec-T3SAB2B6.js")).jsExecCommand}),oi.push({name:"node",load:async()=>(await import("./chunks/js-exec-T3SAB2B6.js")).nodeStubCommand}));var ad=[{name:"curl",load:async()=>(await import("./chunks/curl-NHNZ46BU.js")).curlCommand}],xa=new Map;function Wr(e){return{name:e.name,async execute(t,n){let r=xa.get(e.name);if(r||(r=await Te.runTrustedAsync(()=>e.load()),xa.set(e.name,r)),n.coverage&&(typeof __BROWSER__>"u"||!__BROWSER__)){let{emitFlagCoverage:s}=await import("./chunks/flag-coverage-2H5CPEM6.js");s(n.coverage,e.name,t)}return r.execute(t,n)}}}function $a(e){return(e?Ln.filter(n=>e.includes(n.name)):Ln).map(Wr)}function Pa(){return ad.map(Wr)}function Ca(){return ii.map(Wr)}function Na(){return oi.map(Wr)}var Ra=new WeakMap,Da=new WeakSet;function ai(e){let t=Ra.get(e);return t===void 0&&(t=Object.freeze(Object.create(null)),Ra.set(e,t),Da.add(t)),t}function Ia(e){return Da.has(e)}var Oa={maxSourceBytes:67108864,maxExecDepth:64,maxCallDepth:100,maxCommandCount:1e5,maxLoopIterations:1e5,maxAwkIterations:1e5,maxSedIterations:1e5,maxJqIterations:1e7,maxQueryTokens:1e5,maxQueryDepth:1e3,maxQueryElements:1e6,maxAwkParserTokens:1e5,maxAwkParserDepth:256,maxAwkParserOperations:1e6,maxCsvRows:1e6,maxCsvCells:1e7,maxWorkUnits:1e8,maxTraversalEntries:1e6,maxTraversalDepth:1e3,maxTraversalWork:1e6,maxLiveBytes:536870912,maxInputBytes:536870912,maxFileSystemBytes:1073741824,maxDatabaseBytes:1073741824,maxDatabaseResultBytes:268435456,maxArchiveBytes:1073741824,maxArchiveCompressedBytes:536870912,maxArchiveEntryBytes:536870912,maxArchiveEntries:1e6,maxWorkerMessageBytes:67108864,maxExecutionTimeMs:36e5,maxExtensionCleanupTimeMs:100,maxSqliteTimeoutMs:3e4,maxPythonTimeoutMs:3e4,maxJsTimeoutMs:3e4,maxJsBridgeRequests:1e6,maxGlobOperations:1e6,maxStringLength:67108864,maxArrayElements:1e6,maxHeredocSize:67108864,maxSubstitutionDepth:50,maxBraceExpansionResults:1e5,maxOutputSize:268435456,maxFileDescriptors:4096,maxSourceDepth:100},ld={...Oa,maxSourceBytes:8*1024*1024,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:1e4,maxJsTimeoutMs:1e4,maxJsBridgeRequests:1e5,maxExtensionCleanupTimeMs:25,maxGlobOperations:1e5,maxStringLength:10*1024*1024,maxArrayElements:1e5,maxHeredocSize:10*1024*1024,maxBraceExpansionResults:1e4,maxOutputSize:10*1024*1024,maxFileDescriptors:1024,maxQueryTokens:25e3,maxQueryDepth:256,maxQueryElements:1e5,maxAwkParserTokens:25e3,maxAwkParserDepth:128,maxAwkParserOperations:1e5,maxCsvRows:1e5,maxCsvCells:1e6,maxWorkUnits:1e5,maxTraversalEntries:1e5,maxTraversalDepth:256,maxTraversalWork:1e5,maxLiveBytes:64*1024*1024,maxInputBytes:32*1024*1024,maxFileSystemBytes:128*1024*1024,maxDatabaseBytes:64*1024*1024,maxDatabaseResultBytes:16*1024*1024,maxArchiveBytes:128*1024*1024,maxArchiveCompressedBytes:64*1024*1024,maxArchiveEntryBytes:64*1024*1024,maxArchiveEntries:1e5,maxWorkerMessageBytes:16*1024*1024,maxExecutionTimeMs:3e4};function li(e,t="normal"){if(t!=="normal"&&t!=="hardened")throw new RangeError('executionLimitProfile must be "normal" or "hardened"');let n=t==="hardened"?ld:Oa;if(!e)return{...n};let r={maxSourceBytes:e.maxSourceBytes??n.maxSourceBytes,maxExecDepth:e.maxExecDepth??n.maxExecDepth,maxCallDepth:e.maxCallDepth??n.maxCallDepth,maxCommandCount:e.maxCommandCount??n.maxCommandCount,maxLoopIterations:e.maxLoopIterations??n.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??n.maxAwkIterations,maxSedIterations:e.maxSedIterations??n.maxSedIterations,maxJqIterations:e.maxJqIterations??n.maxJqIterations,maxQueryTokens:e.maxQueryTokens??n.maxQueryTokens,maxQueryDepth:e.maxQueryDepth??n.maxQueryDepth,maxQueryElements:e.maxQueryElements??n.maxQueryElements,maxAwkParserTokens:e.maxAwkParserTokens??n.maxAwkParserTokens,maxAwkParserDepth:e.maxAwkParserDepth??n.maxAwkParserDepth,maxAwkParserOperations:e.maxAwkParserOperations??n.maxAwkParserOperations,maxCsvRows:e.maxCsvRows??n.maxCsvRows,maxCsvCells:e.maxCsvCells??n.maxCsvCells,maxWorkUnits:e.maxWorkUnits??n.maxWorkUnits,maxTraversalEntries:e.maxTraversalEntries??n.maxTraversalEntries,maxTraversalDepth:e.maxTraversalDepth??n.maxTraversalDepth,maxTraversalWork:e.maxTraversalWork??n.maxTraversalWork,maxLiveBytes:e.maxLiveBytes??n.maxLiveBytes,maxInputBytes:e.maxInputBytes??n.maxInputBytes,maxFileSystemBytes:e.maxFileSystemBytes??n.maxFileSystemBytes,maxDatabaseBytes:e.maxDatabaseBytes??n.maxDatabaseBytes,maxDatabaseResultBytes:e.maxDatabaseResultBytes??n.maxDatabaseResultBytes,maxArchiveBytes:e.maxArchiveBytes??n.maxArchiveBytes,maxArchiveCompressedBytes:e.maxArchiveCompressedBytes??n.maxArchiveCompressedBytes,maxArchiveEntryBytes:e.maxArchiveEntryBytes??n.maxArchiveEntryBytes,maxArchiveEntries:e.maxArchiveEntries??n.maxArchiveEntries,maxWorkerMessageBytes:e.maxWorkerMessageBytes??n.maxWorkerMessageBytes,maxExecutionTimeMs:e.maxExecutionTimeMs??n.maxExecutionTimeMs,maxExtensionCleanupTimeMs:e.maxExtensionCleanupTimeMs??n.maxExtensionCleanupTimeMs,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??n.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??n.maxPythonTimeoutMs,maxJsTimeoutMs:e.maxJsTimeoutMs??n.maxJsTimeoutMs,maxJsBridgeRequests:e.maxJsBridgeRequests??n.maxJsBridgeRequests,maxGlobOperations:e.maxGlobOperations??n.maxGlobOperations,maxStringLength:e.maxStringLength??n.maxStringLength,maxArrayElements:e.maxArrayElements??n.maxArrayElements,maxHeredocSize:e.maxHeredocSize??n.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??n.maxSubstitutionDepth,maxBraceExpansionResults:e.maxBraceExpansionResults??n.maxBraceExpansionResults,maxOutputSize:e.maxOutputSize??n.maxOutputSize,maxFileDescriptors:e.maxFileDescriptors??n.maxFileDescriptors,maxSourceDepth:e.maxSourceDepth??n.maxSourceDepth};for(let s of Object.keys(r)){let i=r[s];if(i!==Number.POSITIVE_INFINITY&&(!Number.isSafeInteger(i)||i<0))throw new RangeError(`${s} must be a non-negative safe integer or positive Infinity`)}return r}function _a(e){return"load"in e&&typeof e.load=="function"}function La(e){let t=null,n=null;return{name:e.name,trusted:e.trusted!==!1,async execute(r,s){if(!t){let o=n;o||(o=e.load().then(a=>(t=a,a)),n=o);try{t=await o}catch(a){throw n===o&&(n=null),a}}let i=t;if(!i)throw new Error(`Failed to load command: ${e.name}`);return i.execute(r,s)}}}var Ta=Object.freeze(Object.create(null)),Vr=class{limits;signal;abortOnUnresolvedCommands;commandCount=0;workUnits=0;liveBytes=0;inputBytes=0;outputBytes=0;countersByKind=new Map;bytesByKind=new Map;depthByKind=new Map;cleanupCallbacks=[];poisoned;closed=!1;startedAt=Date.now();unresolvedCommands=new Set;get remainingLiveBytes(){return Math.max(0,this.limits.maxLiveBytes-this.liveBytes)}get outputBytesUsed(){return this.outputBytes}constructor(t,n=void 0,r=!1){this.limits=t,this.signal=n,this.abortOnUnresolvedCommands=r}recordUnresolvedCommand(t){this.unresolvedCommands.add(t)}get unresolvedCommandNames(){return[...this.unresolvedCommands]}fail(t){throw this.poisoned??=t,this.poisoned}poisonAfterAbort(t){this.poisoned??=t}assertUsable(){if(this.poisoned)throw this.poisoned;if(this.closed)throw new Error("execution budget is already closed");this.throwIfAborted()}chargeCommand(){return this.consume("commands",1,"execution")}consumeWork(t=1,n="execution"){return this.consume("work",t,n)}consumeLimited(t,n,r,s=t){this.assertUsable();let i=this.countersByKind.get(t)??0;return(!Number.isSafeInteger(n)||n<0||!Number.isSafeInteger(r)||r<0||n>r-i)&&this.fail(new P(`${s}: ${t} work limit exceeded (${r})`,"iterations")),n>this.limits.maxWorkUnits-this.workUnits&&this.fail(new P(`${s}: aggregate work limit exceeded (${this.limits.maxWorkUnits})`,"iterations")),this.countersByKind.set(t,i+n),this.workUnits+=n,i+n}consumeInput(t,n="execution"){return this.assertUsable(),(!Number.isSafeInteger(t)||t<0||t>this.limits.maxInputBytes-this.inputBytes)&&this.fail(new P(`${n}: aggregate input size limit exceeded (${this.limits.maxInputBytes} bytes)`,"string_length")),this.inputBytes+=t,this.inputBytes}consume(t,n=1,r=t){this.assertUsable();let s=this.countersByKind.get(t)??0,i=t==="commands"?this.commandCount:this.workUnits,o=t==="commands"?this.limits.maxCommandCount:this.limits.maxWorkUnits;(!Number.isSafeInteger(n)||n<0||n>o-i)&&this.fail(new P(t==="commands"?`too many commands executed (>${o}), increase executionLimits.maxCommandCount`:`${r}: ${t} work limit exceeded (${o})`,t==="commands"?"commands":"iterations"));let a=i+n;return t==="commands"?this.commandCount=a:this.workUnits=a,this.countersByKind.set(t,s+n),a}reserveBytes(t,n,r){this.assertUsable();let s=typeof t=="string"?t:"live",i=typeof t=="string"?n:t,o=typeof t=="string"?r??s:n??"execution";(!Number.isSafeInteger(i)||i<0||i>this.limits.maxLiveBytes-this.liveBytes)&&this.fail(new P(`${o}: live byte limit exceeded (${this.limits.maxLiveBytes} bytes)`,"string_length")),this.liveBytes+=i,this.bytesByKind.set(s,(this.bytesByKind.get(s)??0)+i);let a=!1;return{release:()=>{if(a)return;a=!0,this.liveBytes-=i;let l=(this.bytesByKind.get(s)??i)-i;l<=0?this.bytesByKind.delete(s):this.bytesByKind.set(s,l)}}}appendOutput(t,n,r="execution",s=0,i="text"){this.assertUsable();let o=i==="bytes"?n.length:B(n);(!Number.isSafeInteger(s)||s<0||s>o)&&this.fail(new P(`${r}: invalid ${t} accounting`,"output_size"));let a=o-s;return a>this.limits.maxOutputSize-this.outputBytes&&this.fail(new P(`${r}: total output size exceeded (>${this.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size")),this.outputBytes+=a,o}accountResult(t,n="execution",r=Number.POSITIVE_INFINITY){let s=t.internalOutputAccounting,i=Math.min(s?.stdout??0,r),o=Math.min(s?.stderr??0,Math.max(0,r-i)),a=this.appendOutput("stdout",t.stdout,n,i,t.stdoutKind==="bytes"||t.stdoutEncoding==="binary"?"bytes":"text"),l=this.appendOutput("stderr",t.stderr,n,o);return Object.isExtensible(t)?(t.internalOutputAccounting={stdout:a,stderr:l},t):a===0&&l===0?t:{...t,internalOutputAccounting:{stdout:a,stderr:l}}}relinquishOutput(t,n,r){this.assertUsable(),r!==Ta&&this.fail(new P(`${n}: unauthorized output accounting release`,"output_size")),(!Number.isSafeInteger(t)||t<0||t>this.outputBytes)&&this.fail(new P(`${n}: invalid output accounting release`,"output_size")),this.outputBytes-=t}enterDepth(t,n=this.limits.maxCallDepth,r){this.assertUsable();let s=typeof n=="number"?n:this.limits.maxCallDepth,i=typeof n=="string"?n:r??t,o=this.depthByKind.get(t)??0;o>=s&&this.fail(new P(`${i}: maximum depth (${s}) exceeded`,"recursion")),this.depthByKind.set(t,o+1);let a=!1;return{release:()=>{if(a)return;a=!0;let l=(this.depthByKind.get(t)??1)-1;l<=0?this.depthByKind.delete(t):this.depthByKind.set(t,l)}}}throwIfAborted(t="execution"){this.signal?.aborted&&this.fail(new Ye("",`bash: ${t} aborted
4
+ `)),Date.now()-this.startedAt>this.limits.maxExecutionTimeMs&&this.fail(new Ye("",`bash: ${t} exceeded execution deadline (${this.limits.maxExecutionTimeMs}ms)
5
+ `))}remainingTimeMs(){return Math.max(0,this.limits.maxExecutionTimeMs-(Date.now()-this.startedAt))}registerCleanup(t){this.assertUsable(),this.cleanupCallbacks.push(t);let n=!0;return()=>{if(!n)return;n=!1;let r=this.cleanupCallbacks.indexOf(t);r>=0&&this.cleanupCallbacks.splice(r,1)}}async close(){if(this.closed)return;this.closed=!0;let t=[],n=Date.now()+this.limits.maxExtensionCleanupTimeMs;for(let r=this.cleanupCallbacks.length-1;r>=0;r--)try{let s=n-Date.now();if(s<=0){t.push(new Error("execution cleanup grace period exceeded"));break}let i,o=await Promise.race([Promise.resolve().then(this.cleanupCallbacks[r]).then(()=>({ok:!0}),a=>({ok:!1,error:a})),new Promise(a=>{i=Jn(()=>a({ok:!1,error:new Error("execution cleanup grace period exceeded")}),s)})]);if(er(i),!o.ok&&(t.push(o.error),Date.now()>=n))break}catch(s){t.push(s)}if(this.cleanupCallbacks.length=0,this.depthByKind.clear(),this.bytesByKind.clear(),this.liveBytes=0,t.length>0)throw new AggregateError(t,"execution cleanup failed")}assertExecDepth(t){this.assertUsable(),t>this.limits.maxExecDepth&&this.fail(new P(`maximum nested execution depth (${this.limits.maxExecDepth}) exceeded`,"recursion"))}};function Fa(e){let t=Object.create(null);return Object.defineProperties(t,{remainingLiveBytes:{enumerable:!0,get:()=>e.remainingLiveBytes},consumeWork:{enumerable:!0,value:e.consumeWork.bind(e)},consumeLimited:{enumerable:!0,value:e.consumeLimited.bind(e)},consumeInput:{enumerable:!0,value:e.consumeInput.bind(e)},reserveBytes:{enumerable:!0,value:e.reserveBytes.bind(e)},enterDepth:{enumerable:!0,value:e.enterDepth.bind(e)},throwIfAborted:{enumerable:!0,value:e.throwIfAborted.bind(e)},remainingTimeMs:{enumerable:!0,value:e.remainingTimeMs.bind(e)},registerCleanup:{enumerable:!0,value:e.registerCleanup.bind(e)}}),Object.freeze(t)}function Ma(e,t,n="pipeline"){e.relinquishOutput(t,n,Ta)}var gn=new TextEncoder;function cd(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var At=class{data=new Map;entryIdentities=new WeakMap;nextEntryIdentity=1;maxTotalBytes;retainedBytes=0;contentReferences=new WeakMap;materializedContent(t){return t?.type==="file"&&"content"in t?t.content:null}storedByteLength(t){return t===null?0:t instanceof Uint8Array?t.byteLength:B(t)}wouldReleaseBytes(t){let n=this.materializedContent(t);return n===null?0:n instanceof Uint8Array?this.contentReferences.get(n)===1?n.byteLength:0:this.storedByteLength(n)}assertCanAllocate(t,n){let r=this.wouldReleaseBytes(this.data.get(t));if(!Number.isSafeInteger(n)||n<0||n>this.maxTotalBytes-this.retainedBytes+r)throw new N("ENOSPC",`in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`)}setEntry(t,n){let r=this.data.get(t),s=this.materializedContent(r),i=this.materializedContent(n);if(s===i){this.data.set(t,n);return}let o=this.wouldReleaseBytes(r),a=i instanceof Uint8Array?this.contentReferences.has(i)?0:i.byteLength:this.storedByteLength(i);if(a>this.maxTotalBytes-this.retainedBytes+o)throw new N("ENOSPC",`in-memory filesystem byte limit exceeded (${this.maxTotalBytes} bytes)`);if(s instanceof Uint8Array){let l=this.contentReferences.get(s)??0;l<=1?this.contentReferences.delete(s):this.contentReferences.set(s,l-1)}i instanceof Uint8Array&&this.contentReferences.set(i,(this.contentReferences.get(i)??0)+1),this.retainedBytes+=a-o,this.data.set(t,n)}deleteEntry(t){let n=this.data.get(t);if(!n)return!1;let r=this.materializedContent(n),s=this.wouldReleaseBytes(n);if(r instanceof Uint8Array){let i=this.contentReferences.get(r)??0;i<=1?this.contentReferences.delete(r):this.contentReferences.set(r,i-1)}return this.retainedBytes-=s,this.data.delete(t)}contentByteLength(t,n){if(t instanceof Uint8Array)return t.byteLength;if(n==="hex")return Math.floor(t.length/2);if(n==="base64"){let r=t.endsWith("==")?2:t.endsWith("=")?1:0;return Math.max(0,Math.floor(t.length*3/4)-r)}return n==="binary"||n==="latin1"?t.length:B(t)}identityFor(t){let n=this.entryIdentities.get(t);return n||(n=`memfs:${this.nextEntryIdentity++}`,this.entryIdentities.set(t,n)),n}constructor(t,n={}){if(this.maxTotalBytes=n.maxTotalBytes??1024*1024*1024,!Number.isSafeInteger(this.maxTotalBytes)||this.maxTotalBytes<0)throw new Error("InMemoryFs: invalid maxTotalBytes");if(this.data.set("/",{type:"directory",mode:pt,mtime:new Date}),t)for(let[r,s]of Object.entries(t))typeof s=="function"?this.writeFileLazy(r,s):cd(s)?this.writeFileSync(r,s.content,void 0,{mode:s.mode,mtime:s.mtime}):this.writeFileSync(r,s)}ensureParentDirs(t){let n=Rn(t);n!=="/"&&(this.data.has(n)||(this.ensureParentDirs(n),this.data.set(n,{type:"directory",mode:pt,mtime:new Date})))}writeFileSync(t,n,r,s){X(t,"write");let i=U(t);this.ensureParentDirs(i);let o=Gt(r);this.assertCanAllocate(i,this.contentByteLength(n,o));let a=On(n,o);this.setEntry(i,{type:"file",content:a,mode:s?.mode??qt,mtime:s?.mtime??new Date})}writeFileLazy(t,n,r){X(t,"write");let s=U(t);this.ensureParentDirs(s),this.setEntry(s,{type:"file",lazy:n,mode:r?.mode??qt,mtime:r?.mtime??new Date})}async materializeLazy(t,n){let r=await Te.runTrustedAsync(async()=>n.lazy()),s=typeof r=="string"?gn.encode(r):r,i={type:"file",content:s,mode:n.mode,mtime:n.mtime};return this.assertCanAllocate(t,s.byteLength),this.setEntry(t,i),i}async readFile(t,n){let r=await this.readFileBuffer(t),s=Gt(n);return _n(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return _n(n,"binary")}async readFileBuffer(t){X(t,"open");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new N("ENOENT",`no such file or directory, open '${t}'`);if(r.type!=="file")throw new N("EISDIR",`illegal operation on a directory, read '${t}'`);if("lazy"in r){let s=await this.materializeLazy(n,r);return s.content instanceof Uint8Array?s.content:gn.encode(s.content)}return r.content instanceof Uint8Array?r.content:gn.encode(r.content)}async writeFile(t,n,r){this.writeFileSync(t,n,r)}async appendFile(t,n,r){X(t,"append");let s=U(t),i=this.data.get(s);if(i&&i.type==="directory")throw new N("EISDIR",`illegal operation on a directory, write '${t}'`);let o=Gt(r),a=this.contentByteLength(n,o);if(i?.type==="file"){let l=i;"lazy"in l&&(l=await this.materializeLazy(s,l));let c="content"in l&&l.content instanceof Uint8Array?l.content:gn.encode("content"in l?l.content:"");this.assertCanAllocate(s,c.byteLength+a);let u=On(n,o),f=new Uint8Array(c.length+u.length);f.set(c),f.set(u,c.length),this.setEntry(s,{type:"file",content:f,mode:l.mode,mtime:new Date})}else this.writeFileSync(t,n,r)}async exists(t){if(t.includes("\0"))return!1;try{let n=this.resolvePathWithSymlinks(t);return this.data.has(n)}catch{return!1}}async stat(t){X(t,"stat");let n=this.resolvePathWithSymlinks(t),r=this.data.get(n);if(!r)throw new N("ENOENT",`no such file or directory, stat '${t}'`);r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=gn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}async lstat(t){X(t,"lstat");let n=this.resolveIntermediateSymlinks(t),r=this.data.get(n);if(!r)throw new N("ENOENT",`no such file or directory, lstat '${t}'`);if(r.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:r.mode,size:r.target.length,mtime:r.mtime||new Date};r.type==="file"&&"lazy"in r&&(r=await this.materializeLazy(n,r));let s=0;return r.type==="file"&&"content"in r&&r.content&&(r.content instanceof Uint8Array?s=r.content.length:s=gn.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:s,mtime:r.mtime||new Date,identity:this.identityFor(r)}}resolveIntermediateSymlinks(t){let n=U(t);if(n==="/")return"/";let r=n.slice(1).split("/");if(r.length<=1)return n;let s="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];s=`${s}/${a}`;let l=this.data.get(s),c=0,u=tr;for(;l&&l.type==="symlink"&&c<u;){if(i.has(s))throw new N("ELOOP",`too many levels of symbolic links, lstat '${t}'`);i.add(s),s=In(s,l.target),l=this.data.get(s),c++}if(c>=u)throw new N("ELOOP",`too many levels of symbolic links, lstat '${t}'`)}return`${s}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let n=U(t);if(n==="/")return"/";let r=n.slice(1).split("/"),s="",i=new Set;for(let o of r){s=`${s}/${o}`;let a=this.data.get(s),l=0,c=tr;for(;a&&a.type==="symlink"&&l<c;){if(i.has(s))throw new N("ELOOP",`too many levels of symbolic links, open '${t}'`);i.add(s),s=In(s,a.target),a=this.data.get(s),l++}if(l>=c)throw new N("ELOOP",`too many levels of symbolic links, open '${t}'`)}return s}async mkdir(t,n){this.mkdirSync(t,n)}mkdirSync(t,n){X(t,"mkdir");let r=U(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new N("EEXIST",`file already exists, mkdir '${t}'`);if(!n?.recursive)throw new N("EEXIST",`directory already exists, mkdir '${t}'`);return}let s=Rn(r);if(s!=="/"&&!this.data.has(s))if(n?.recursive)this.mkdirSync(s,{recursive:!0});else throw new N("ENOENT",`no such file or directory, mkdir '${t}'`);this.data.set(r,{type:"directory",mode:pt,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(r=>r.name)}async readdirWithFileTypes(t){X(t,"scandir");let n=U(t),r=this.data.get(n);if(!r)throw new N("ENOENT",`no such file or directory, scandir '${t}'`);let s=new Set;for(;r&&r.type==="symlink";){if(s.has(n))throw new N("ELOOP",`too many levels of symbolic links, scandir '${t}'`);s.add(n),n=In(n,r.target),r=this.data.get(n)}if(!r)throw new N("ENOENT",`no such file or directory, scandir '${t}'`);if(r.type!=="directory")throw new N("ENOTDIR",`not a directory, scandir '${t}'`);let i=n==="/"?"/":`${n}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==n&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!c.includes("/",u.length)&&!o.has(u)&&o.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}return Array.from(o.values()).sort((a,l)=>a.name<l.name?-1:a.name>l.name?1:0)}async rm(t,n){X(t,"rm");let r=U(t),s=this.data.get(r);if(!s){if(n?.force)return;throw new N("ENOENT",`no such file or directory, rm '${t}'`)}if(s.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!n?.recursive)throw new N("ENOTEMPTY",`directory not empty, rm '${t}'`);for(let o of i){let a=Tt(r,o);await this.rm(a,n)}}}this.deleteEntry(r)}async cp(t,n,r){X(t,"cp"),X(n,"cp");let s=U(t),i=U(n),o=this.data.get(s);if(!o)throw new N("ENOENT",`no such file or directory, cp '${t}'`);if(o.type==="file")if(this.ensureParentDirs(i),"content"in o){let a=o.content instanceof Uint8Array?o.content.byteLength:gn.encode(o.content).byteLength;this.assertCanAllocate(i,a);let l=o.content instanceof Uint8Array?new Uint8Array(o.content):o.content;this.setEntry(i,{...o,content:l})}else this.setEntry(i,{...o});else if(o.type==="symlink")this.ensureParentDirs(i),this.data.set(i,{...o});else if(o.type==="directory"){if(!r?.recursive)throw new N("EISDIR",`is a directory, cp '${t}'`);if(Lt(s,i))throw new N("EINVAL",`cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(s);for(let l of a){let c=Tt(s,l),u=Tt(i,l);await this.cp(c,u,r)}}}async mv(t,n){X(t,"mv"),X(n,"mv");let r=U(t),s=U(n);if(r===s)return;let i=this.data.get(r);if(!i)throw new N("ENOENT",`no such file or directory, mv '${t}'`);if(i.type==="directory"&&Lt(r,s))throw new N("EINVAL",`cannot move '${t}' into itself, '${n}'`);if(i.type==="directory"){await this.mkdir(s,{recursive:!0});let o=await this.readdir(r);for(let a of o)await this.mv(Tt(r,a),Tt(s,a));this.deleteEntry(r);return}this.ensureParentDirs(s),this.setEntry(s,i),this.deleteEntry(r)}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,n){return Dn(t,n)}async chmod(t,n){X(t,"chmod");let r=U(t),s=this.data.get(r);if(!s)throw new N("ENOENT",`no such file or directory, chmod '${t}'`);s.mode=n}async symlink(t,n){X(n,"symlink");let r=U(n);if(this.data.has(r))throw new N("EEXIST",`file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:Br,mtime:new Date})}async link(t,n){X(t,"link"),X(n,"link");let r=U(t),s=U(n),i=this.data.get(r);if(!i)throw new N("ENOENT",`no such file or directory, link '${t}'`);if(i.type!=="file")throw new N("EPERM",`operation not permitted, link '${t}'`);if(this.data.has(s))throw new N("EEXIST",`file already exists, link '${n}'`);let o=i;"lazy"in o&&(o=await this.materializeLazy(r,o)),this.ensureParentDirs(s);let a={type:"file",content:o.content,mode:o.mode,mtime:o.mtime};this.entryIdentities.set(a,this.identityFor(o)),this.setEntry(s,a)}async readlink(t){X(t,"readlink");let n=U(t),r=this.data.get(n);if(!r)throw new N("ENOENT",`no such file or directory, readlink '${t}'`);if(r.type!=="symlink")throw new N("EINVAL",`invalid argument, readlink '${t}'`);return r.target}async realpath(t){X(t,"realpath");let n=this.resolvePathWithSymlinks(t);if(!this.data.has(n))throw new N("ENOENT",`no such file or directory, realpath '${t}'`);return n}async utimes(t,n,r){X(t,"utimes");let s=U(t),i=this.resolvePathWithSymlinks(s),o=this.data.get(i);if(!o)throw new N("ENOENT",`no such file or directory, utimes '${t}'`);o.mtime=r}};var Wa="5.1.0(1)-release",Va="Linux version 5.15.0-generic (just-bash) #1 SMP PREEMPT";function ci(e){let{pid:t,ppid:n,uid:r,gid:s}=e;return`Name: bash
6
6
  State: R (running)
7
7
  Pid: ${t}
8
8
  PPid: ${n}
9
9
  Uid: ${r} ${r} ${r} ${r}
10
10
  Gid: ${s} ${s} ${s} ${s}
11
- `}function Xf(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Yf(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function Jf(e){e.mkdirSync("/dev",{recursive:!0}),e.mkdirSync("/dev/fd",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function ed(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Oa}
11
+ `}function ud(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function fd(e,t){e.mkdirSync("/bin",{recursive:!0}),e.mkdirSync("/usr/bin",{recursive:!0}),t&&(e.mkdirSync("/home/user",{recursive:!0}),e.mkdirSync("/tmp",{recursive:!0}))}function dd(e){e.mkdirSync("/dev",{recursive:!0}),e.mkdirSync("/dev/fd",{recursive:!0}),e.writeFileSync("/dev/null",""),e.writeFileSync("/dev/zero",new Uint8Array(0)),e.writeFileSync("/dev/stdin",""),e.writeFileSync("/dev/stdout",""),e.writeFileSync("/dev/stderr","")}function pd(e,t){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Va}
12
12
  `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
13
- `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>ei(t)):e.writeFileSync("/proc/self/status",ei(t)),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function _a(e,t,n={pid:1,ppid:0,uid:1e3,gid:1e3}){Xf(e)&&(Yf(e,t),Jf(e),ed(e,n))}function La(e){let t={commands:new Set,definedFunctions:new Set,definedAliases:new Set};return ti(e,t),{commands:[...t.commands],definedFunctions:t.definedFunctions,definedAliases:t.definedAliases}}function td(e){return e.parts.length===1&&e.parts[0].type==="Literal"?e.parts[0].value:null}function nd(e,t){for(let n of e){let r=n.parts[0];if(r?.type!=="Literal")continue;let s=/^([A-Za-z_][A-Za-z0-9_]*)=/.exec(r.value);s&&t.definedAliases.add(s[1])}}function ti(e,t){for(let n of e.statements)At(n,t)}function At(e,t){for(let n of e.pipelines)rd(n,t)}function rd(e,t){for(let n of e.commands)Ta(n,t)}function Ta(e,t){switch(e.type){case"SimpleCommand":if(e.name){let n=td(e.name);n&&(t.commands.add(n),n==="alias"&&nd(e.args,t)),Le(e.name.parts,t)}for(let n of e.args)Le(n.parts,t);for(let n of e.assignments)if(n.value&&Le(n.value.parts,t),n.array)for(let r of n.array)Le(r.parts,t);for(let n of e.redirections)n.target.type==="Word"?Le(n.target.parts,t):n.target.type==="HereDoc"&&!n.target.quoted&&Le(n.target.content.parts,t);break;case"If":for(let n of e.clauses){for(let r of n.condition)At(r,t);for(let r of n.body)At(r,t)}if(e.elseBody)for(let n of e.elseBody)At(n,t);break;case"For":if(e.words)for(let n of e.words)Le(n.parts,t);for(let n of e.body)At(n,t);break;case"CStyleFor":for(let n of e.body)At(n,t);break;case"While":case"Until":for(let n of e.condition)At(n,t);for(let n of e.body)At(n,t);break;case"Case":Le(e.word.parts,t);for(let n of e.items)for(let r of n.body)At(r,t);break;case"Subshell":case"Group":for(let n of e.body)At(n,t);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":t.definedFunctions.add(e.name),Ta(e.body,t);break}}function Le(e,t){for(let n of e)switch(n.type){case"CommandSubstitution":ti(n.body,t);break;case"ProcessSubstitution":ti(n.body,t);break;case"DoubleQuoted":Le(n.parts,t);break;case"ParameterExpansion":n.operation&&Fa(n.operation,t);break}}function Fa(e,t){switch(e.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":Le(e.word.parts,t);break;case"ErrorIfUnset":e.word&&Le(e.word.parts,t);break;case"PatternRemoval":Le(e.pattern.parts,t);break;case"PatternReplacement":Le(e.pattern.parts,t),e.replacement&&Le(e.replacement.parts,t);break;case"CaseModification":e.pattern&&Le(e.pattern.parts,t);break;case"Indirection":e.innerOp&&Fa(e.innerOp,t);break}}function Fr(e,t){return e===`/bin/${t}`||e===`/usr/bin/${t}`}async function Mr(e,t,n){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};try{let a=await e.fs.stat(o);if(a.isDirectory)return{error:"permission_denied",path:o};let l=o.split("/").pop()||t,c=e.commands.get(l);return c&&Fr(o,l)?{cmd:c,path:o}:(a.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!n&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o){try{let a=await e.fs.stat(o);if(!a.isDirectory){let l=e.commands.get(t);if(l&&Fr(o,t))return{cmd:l,path:o};if((a.mode&73)!==0)return{script:!0,path:o}}}catch{}e.state.hashTable.delete(t)}}let s=(n??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of s){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=Fr(l,t);if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function Br(e,t){let n=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&n.push(t)}catch{}return n}let s=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of s){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(Fr(a,t)&&e.commands.has(t)){n.push(a);continue}if(await e.fs.exists(a)){try{let l=await e.fs.stat(a);if(l.isDirectory||(l.mode&73)===0)continue}catch{continue}n.push(i.startsWith("/")?a:`${i}/${t}`)}}return n}function Te(e){return{kind:e.kind,elements:new Map(e.elements)}}function st(e){return new Map(Array.from(e??[],([t,n])=>[t,Te(n)]))}function ve(e,t){return e.state.arrays?.get(t)}function Yn(e,t,n="indexed"){e.state.arrays??=new Map;let r=e.state.arrays.get(t);return r||(r={kind:n,elements:new Map},e.state.arrays.set(t,r)),r}function jt(e,t,n){let r=Yn(e,t,n);return r.kind=n,r}function Pe(e,t){return e.state.arrays?.has(t)??!1}function oe(e,t,n){return ve(e,t)?.elements.get(String(n))}function Gt(e,t,n){return ve(e,t)?.elements.has(String(n))??!1}function q(e,t,n,r,s){let i=Yn(e,t,s),o=String(n);if(!i.elements.has(o)&&i.elements.size>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(M(r)>e.limits.maxStringLength)throw new P(`array value string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");i.elements.set(o,r)}function mn(e,t,n,r=!1){let s=new Set(r?[]:ve(e,t)?.elements.keys()??[]);for(let i of n)if(s.add(String(i)),s.size>e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements")}function yn(e,t,n){return ve(e,t)?.elements.delete(String(n))??!1}function Jn(e,t){e.state.arrays?.delete(t),e.state.associativeArrays?.delete(t)}function be(e,t){return Array.from(ve(e,t)?.elements.keys()??[]).filter(r=>/^(0|[1-9]\d*)$/.test(r)).map(Number).sort((r,s)=>r-s)}function ye(e,t){Yn(e,t,e.state.associativeArrays?.has(t)?"associative":"indexed").elements.clear()}function vt(e,t){return Array.from(ve(e,t)?.elements.keys()??[]).sort()}function Wr(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function ni(e){if(e.parts.length<2)return null;let t=e.parts[0],n=e.parts[1];if(t.type!=="Glob"||!t.pattern.startsWith("["))return null;let r,s=n,i=1;if(n.type==="Literal"&&n.value.startsWith("]")){let f=n.value.slice(1);if(f.startsWith("+=")||f.startsWith("="))r=t.pattern.slice(1);else if(f===""){if(e.parts.length<3)return null;let d=e.parts[2];if(d.type!=="Literal"||!d.value.startsWith("=")&&!d.value.startsWith("+="))return null;r=t.pattern.slice(1),s=d,i=2}else return null}else if(t.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(e.parts.length<3)return null;let f=e.parts[2];if(f.type!=="Literal"||!f.value.startsWith("]=")&&!f.value.startsWith("]+="))return null;if(n.type==="SingleQuoted")r=n.value;else{r="";for(let d of n.parts)(d.type==="Literal"||d.type==="Escaped")&&(r+=d.value)}s=f,i=2}else if(t.pattern.endsWith("]")){if(n.type!=="Literal"||!n.value.startsWith("=")&&!n.value.startsWith("+="))return null;r=t.pattern.slice(1,-1)}else return null;r=Wr(r);let o;if(s.type!=="Literal")return null;s.value.startsWith("]=")||s.value.startsWith("]+=")?o=s.value.slice(1):o=s.value;let a=o.startsWith("+=");if(!a&&!o.startsWith("="))return null;let l=[],c=a?2:1,u=o.slice(c);u&&l.push({type:"Literal",value:u});for(let f=i+1;f<e.parts.length;f++){let d=e.parts[f];d.type==="BraceExpansion"?l.push({type:"Literal",value:sd(d)}):l.push(d)}return{key:r,valueParts:l,append:a}}function sd(e){return`{${e.items.map(n=>{if(n.type==="Range"){let r=n.startStr??String(n.start),s=n.endStr??String(n.end),i=`${r}..${s}`;return n.step&&(i+=`..${n.step}`),i}return On(n.word)}).join(",")}}`}function On(e){let t="";for(let n of e.parts)switch(n.type){case"Literal":t+=n.value;break;case"Glob":t+=n.pattern;break;case"SingleQuoted":t+=n.value;break;case"DoubleQuoted":for(let r of n.parts)(r.type==="Literal"||r.type==="Escaped")&&(t+=r.value);break;case"Escaped":t+=n.value;break;case"BraceExpansion":t+="{",t+=n.items.map(r=>r.type==="Range"?`${r.startStr}..${r.endStr}${r.step?`..${r.step}`:""}`:On(r.word)).join(","),t+="}";break;case"TildeExpansion":t+="~",n.user&&(t+=n.user);break}return t}var er=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Ma(e){return er.has(e)}var ri=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),Ht=new Set([":","true","false","cd","export","unset","exit","local","set","break","continue","return","eval","shift","getopts","compgen","complete","compopt","pushd","popd","dirs","source",".","read","mapfile","readarray","declare","typeset","readonly","let","command","shopt","exec","test","[","echo","printf","pwd","alias","unalias","type","hash","ulimit","umask","trap","times","wait","kill","jobs","fg","bg","disown","suspend","fc","history","help","enable","builtin","caller"]),Ba=new Set(["bg","caller","disown","enable","fc","fg","jobs","kill","suspend","times","trap","ulimit","umask"]);var id=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],od=["braceexpand","hashall","interactive-comments"];function si(e){let t=[],n=[...od.map(r=>({name:r,enabled:!0})),...id.map(r=>({name:r,enabled:e[r]}))].sort((r,s)=>r.name.localeCompare(s.name));for(let r of n)r.enabled&&t.push(r.name);return t.join(":")}function _n(e){e.state.env.set("SHELLOPTS",si(e.state.options))}var ad=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function ii(e){let t=[];for(let n of ad)e[n]&&t.push(n);return t.join(":")}function oi(e){e.state.env.set("BASHOPTS",ii(e.state.shoptOptions))}var T={script(e){return{type:"Script",statements:e}},statement(e,t=[],n=!1,r,s){let i={type:"Statement",pipelines:e,operators:t,background:n};return r&&(i.deferredError=r),s!==void 0&&(i.sourceText=s),i},pipeline(e,t=!1,n=!1,r=!1,s){return{type:"Pipeline",commands:e,negated:t,timed:n,timePosix:r,pipeStderr:s}},simpleCommand(e,t=[],n=[],r=[]){return{type:"SimpleCommand",name:e,args:t,assignments:n,redirections:r}},word(e){return{type:"Word",parts:e}},literal(e){return{type:"Literal",value:e}},singleQuoted(e){return{type:"SingleQuoted",value:e}},doubleQuoted(e){return{type:"DoubleQuoted",parts:e}},escaped(e){return{type:"Escaped",value:e}},parameterExpansion(e,t=null){return{type:"ParameterExpansion",parameter:e,operation:t}},commandSubstitution(e,t=!1){return{type:"CommandSubstitution",body:e,legacy:t}},arithmeticExpansion(e){return{type:"ArithmeticExpansion",expression:e}},processSubstitution(e,t){return{type:"ProcessSubstitution",body:e,direction:t}},assignment(e,t,n=!1,r=null){return{type:"Assignment",name:e,value:t,append:n,array:r}},redirection(e,t,n=null,r){let s={type:"Redirection",fd:n,operator:e,target:t};return r&&(s.fdVariable=r),s},hereDoc(e,t,n=!1,r=!1,s){let i={type:"HereDoc",delimiter:e,content:t,stripTabs:n,quoted:r};return s!==void 0&&(i.terminated=s),i},ifNode(e,t=null,n=[]){return{type:"If",clauses:e,elseBody:t,redirections:n}},forNode(e,t,n,r=[]){return{type:"For",variable:e,words:t,body:n,redirections:r}},whileNode(e,t,n=[]){return{type:"While",condition:e,body:t,redirections:n}},untilNode(e,t,n=[]){return{type:"Until",condition:e,body:t,redirections:n}},caseNode(e,t,n=[]){return{type:"Case",word:e,items:t,redirections:n}},caseItem(e,t,n=";;"){return{type:"CaseItem",patterns:e,body:t,terminator:n}},subshell(e,t=[]){return{type:"Subshell",body:e,redirections:t}},group(e,t=[]){return{type:"Group",body:e,redirections:t}},functionDef(e,t,n=[],r){return{type:"FunctionDef",name:e,body:t,redirections:n,sourceFile:r}},conditionalCommand(e,t=[],n){return{type:"ConditionalCommand",expression:e,redirections:t,line:n}},arithmeticCommand(e,t=[],n){return{type:"ArithmeticCommand",expression:e,redirections:t,line:n}}};function Wa(e,t){let n=e.length,r=t+3,s=2,i=!1,o=!1;for(;r<n&&s>0;){let a=e[r];if(i){a==="'"&&(i=!1),r++;continue}if(o){if(a==="\\"){r+=2;continue}a==='"'&&(o=!1),r++;continue}if(a==="'"){i=!0,r++;continue}if(a==='"'){o=!0,r++;continue}if(a==="\\"){r+=2;continue}if(a==="("){s++,r++;continue}if(a===")"){if(s--,s===1){let l=r+1;return!(l<n&&e[l]===")")}if(s===0)return!1;r++;continue}if(s===1&&(a==="|"&&r+1<n&&e[r+1]==="|"||a==="&"&&r+1<n&&e[r+1]==="&"||a==="|"&&r+1<n&&e[r+1]!=="|"))return!0;r++}return!1}function Vr(e,t){let n="",r=t,s=0,i=!1,o,a=l=>l===" "||l===" "||l===`
13
+ `),e.writeFileLazy?e.writeFileLazy("/proc/self/status",()=>ci(t)):e.writeFileSync("/proc/self/status",ci(t)),e.writeFileSync("/proc/self/fd/0","/dev/stdin"),e.writeFileSync("/proc/self/fd/1","/dev/stdout"),e.writeFileSync("/proc/self/fd/2","/dev/stderr")}function za(e,t,n={pid:1,ppid:0,uid:1e3,gid:1e3}){ud(e)&&(fd(e,t),dd(e),pd(e,n))}var ui={export:{kind:"handler",phase:"early"},unset:{kind:"handler",phase:"early"},exit:{kind:"handler",phase:"early"},local:{kind:"handler",phase:"early"},set:{kind:"handler",phase:"early"},break:{kind:"handler",phase:"early"},continue:{kind:"handler",phase:"early"},return:{kind:"handler",phase:"early"},shift:{kind:"handler",phase:"early"},getopts:{kind:"handler",phase:"early"},compgen:{kind:"handler",phase:"early"},complete:{kind:"handler",phase:"early"},compopt:{kind:"handler",phase:"early"},pushd:{kind:"handler",phase:"early"},popd:{kind:"handler",phase:"early"},dirs:{kind:"handler",phase:"early"},source:{kind:"handler",phase:"early"},".":{kind:"handler",phase:"early"},read:{kind:"handler",phase:"early"},mapfile:{kind:"handler",phase:"early"},readarray:{kind:"handler",phase:"early"},declare:{kind:"handler",phase:"early"},typeset:{kind:"handler",phase:"early"},readonly:{kind:"handler",phase:"early"},eval:{kind:"handler",phase:"late",posixEarly:!0},cd:{kind:"handler",phase:"late"},":":{kind:"handler",phase:"late"},true:{kind:"handler",phase:"late"},false:{kind:"handler",phase:"late"},let:{kind:"handler",phase:"late"},command:{kind:"handler",phase:"late"},builtin:{kind:"handler",phase:"late"},shopt:{kind:"handler",phase:"late"},exec:{kind:"handler",phase:"late"},wait:{kind:"handler",phase:"late"},type:{kind:"handler",phase:"late"},hash:{kind:"handler",phase:"late"},help:{kind:"handler",phase:"late"},"[":{kind:"handler",phase:"late"},test:{kind:"handler",phase:"late"},echo:{kind:"registry"},printf:{kind:"registry"},pwd:{kind:"registry"},alias:{kind:"registry"},unalias:{kind:"registry"},history:{kind:"registry"},bg:{kind:"unimplemented"},caller:{kind:"unimplemented"},disown:{kind:"unimplemented"},enable:{kind:"unimplemented"},fc:{kind:"unimplemented"},fg:{kind:"unimplemented"},jobs:{kind:"unimplemented"},kill:{kind:"unimplemented"},suspend:{kind:"unimplemented"},times:{kind:"unimplemented"},trap:{kind:"unimplemented"},ulimit:{kind:"unimplemented"},umask:{kind:"unimplemented"}};for(let e of Object.values(ui))Object.freeze(e);Object.freeze(ui);var fi=ui,vt=new Set(Object.keys(fi)),Ua=new Set(Object.entries(fi).filter(([,e])=>e.kind==="unimplemented").map(([e])=>e)),zr=fi;function qa(e){let t=Object.hasOwn(zr,e)?zr[e]:void 0;return t?.kind==="handler"?t.phase:void 0}function ja(e){let t=Object.hasOwn(zr,e)?zr[e]:void 0;return t?.kind==="handler"&&t.posixEarly===!0}function Ha(e){let t={commands:new Set,definedFunctions:new Set,definedAliases:new Set};return di(e,t),{commands:[...t.commands],definedFunctions:t.definedFunctions,definedAliases:t.definedAliases}}function hd(e){return e.parts.length===1&&e.parts[0].type==="Literal"?e.parts[0].value:null}function md(e,t){for(let n of e){let r=n.parts[0];if(r?.type!=="Literal")continue;let s=/^([A-Za-z_][A-Za-z0-9_]*)=/.exec(r.value);s&&t.definedAliases.add(s[1])}}function di(e,t){for(let n of e.statements)kt(n,t)}function kt(e,t){for(let n of e.pipelines)yd(n,t)}function yd(e,t){for(let n of e.commands)Ga(n,t)}function Ga(e,t){switch(e.type){case"SimpleCommand":if(e.name){let n=hd(e.name);n&&(t.commands.add(n),n==="alias"&&md(e.args,t)),Fe(e.name.parts,t)}for(let n of e.args)Fe(n.parts,t);for(let n of e.assignments)if(n.value&&Fe(n.value.parts,t),n.array)for(let r of n.array)Fe(r.parts,t);for(let n of e.redirections)n.target.type==="Word"?Fe(n.target.parts,t):n.target.type==="HereDoc"&&!n.target.quoted&&Fe(n.target.content.parts,t);break;case"If":for(let n of e.clauses){for(let r of n.condition)kt(r,t);for(let r of n.body)kt(r,t)}if(e.elseBody)for(let n of e.elseBody)kt(n,t);break;case"For":if(e.words)for(let n of e.words)Fe(n.parts,t);for(let n of e.body)kt(n,t);break;case"CStyleFor":for(let n of e.body)kt(n,t);break;case"While":case"Until":for(let n of e.condition)kt(n,t);for(let n of e.body)kt(n,t);break;case"Case":Fe(e.word.parts,t);for(let n of e.items)for(let r of n.body)kt(r,t);break;case"Subshell":case"Group":for(let n of e.body)kt(n,t);break;case"ArithmeticCommand":case"ConditionalCommand":break;case"FunctionDef":t.definedFunctions.add(e.name),Ga(e.body,t);break}}function Fe(e,t){for(let n of e)switch(n.type){case"CommandSubstitution":di(n.body,t);break;case"ProcessSubstitution":di(n.body,t);break;case"DoubleQuoted":Fe(n.parts,t);break;case"ParameterExpansion":n.operation&&Za(n.operation,t);break}}function Za(e,t){switch(e.type){case"DefaultValue":case"AssignDefault":case"UseAlternative":Fe(e.word.parts,t);break;case"ErrorIfUnset":e.word&&Fe(e.word.parts,t);break;case"PatternRemoval":Fe(e.pattern.parts,t);break;case"PatternReplacement":Fe(e.pattern.parts,t),e.replacement&&Fe(e.replacement.parts,t);break;case"CaseModification":e.pattern&&Fe(e.pattern.parts,t);break;case"Indirection":e.innerOp&&Za(e.innerOp,t);break}}function Ur(e,t){return e===`/bin/${t}`||e===`/usr/bin/${t}`}async function qr(e,t,n){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};try{let a=await e.fs.stat(o);if(a.isDirectory)return{error:"permission_denied",path:o};let l=o.split("/").pop()||t,c=e.commands.get(l);return c&&Ur(o,l)?{cmd:c,path:o}:(a.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!n&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o){try{let a=await e.fs.stat(o);if(!a.isDirectory){let l=e.commands.get(t);if(l&&Ur(o,t))return{cmd:l,path:o};if((a.mode&73)!==0)return{script:!0,path:o}}}catch{}e.state.hashTable.delete(t)}}let s=(n??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of s){if(!o)continue;let l=`${o.startsWith("/")?o:e.fs.resolvePath(e.state.cwd,o)}/${t}`;if(await e.fs.exists(l))try{let c=await e.fs.stat(l);if(c.isDirectory)continue;let u=(c.mode&73)!==0,f=e.commands.get(t),d=Ur(l,t);if(f&&d)return{cmd:f,path:l};if(u){if(f&&!d)return{script:!0,path:l};if(!f)return{script:!0,path:l}}}catch{}}if(!await e.fs.exists("/usr/bin")){let o=e.commands.get(t);if(o)return{cmd:o,path:`/usr/bin/${t}`}}return null}async function jr(e,t){let n=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let o=await e.fs.stat(i);o.isDirectory||(o.mode&73)!==0&&n.push(t)}catch{}return n}let s=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of s){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(Ur(a,t)&&e.commands.has(t)){n.push(a);continue}if(await e.fs.exists(a)){try{let l=await e.fs.stat(a);if(l.isDirectory||(l.mode&73)===0)continue}catch{continue}n.push(i.startsWith("/")?a:`${i}/${t}`)}}return n}function Me(e){return{kind:e.kind,elements:new Map(e.elements)}}function it(e){return new Map(Array.from(e??[],([t,n])=>[t,Me(n)]))}function ke(e,t){return e.state.arrays?.get(t)}function rr(e,t,n="indexed"){e.state.arrays??=new Map;let r=e.state.arrays.get(t);return r||(r={kind:n,elements:new Map},e.state.arrays.set(t,r)),r}function Zt(e,t,n){let r=rr(e,t,n);return r.kind=n,r}function Ce(e,t){return e.state.arrays?.has(t)??!1}function ae(e,t,n){return ke(e,t)?.elements.get(String(n))}function Qt(e,t,n){return ke(e,t)?.elements.has(String(n))??!1}function j(e,t,n,r,s){let i=rr(e,t,s),o=String(n);if(!i.elements.has(o)&&i.elements.size>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(r)>e.limits.maxStringLength)throw new P(`array value string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");i.elements.set(o,r)}function wn(e,t,n,r=!1){let s=new Set(r?[]:ke(e,t)?.elements.keys()??[]);for(let i of n)if(s.add(String(i)),s.size>e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements")}function En(e,t,n){return ke(e,t)?.elements.delete(String(n))??!1}function sr(e,t){e.state.arrays?.delete(t),e.state.associativeArrays?.delete(t)}function Se(e,t){return Array.from(ke(e,t)?.elements.keys()??[]).filter(r=>/^(0|[1-9]\d*)$/.test(r)).map(Number).sort((r,s)=>r-s)}function ge(e,t){rr(e,t,e.state.associativeArrays?.has(t)?"associative":"indexed").elements.clear()}function xt(e,t){return Array.from(ke(e,t)?.elements.keys()??[]).sort()}function Hr(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function pi(e){if(e.parts.length<2)return null;let t=e.parts[0],n=e.parts[1];if(t.type!=="Glob"||!t.pattern.startsWith("["))return null;let r,s=n,i=1;if(n.type==="Literal"&&n.value.startsWith("]")){let f=n.value.slice(1);if(f.startsWith("+=")||f.startsWith("="))r=t.pattern.slice(1);else if(f===""){if(e.parts.length<3)return null;let d=e.parts[2];if(d.type!=="Literal"||!d.value.startsWith("=")&&!d.value.startsWith("+="))return null;r=t.pattern.slice(1),s=d,i=2}else return null}else if(t.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(e.parts.length<3)return null;let f=e.parts[2];if(f.type!=="Literal"||!f.value.startsWith("]=")&&!f.value.startsWith("]+="))return null;if(n.type==="SingleQuoted")r=n.value;else{r="";for(let d of n.parts)(d.type==="Literal"||d.type==="Escaped")&&(r+=d.value)}s=f,i=2}else if(t.pattern.endsWith("]")){if(n.type!=="Literal"||!n.value.startsWith("=")&&!n.value.startsWith("+="))return null;r=t.pattern.slice(1,-1)}else return null;r=Hr(r);let o;if(s.type!=="Literal")return null;s.value.startsWith("]=")||s.value.startsWith("]+=")?o=s.value.slice(1):o=s.value;let a=o.startsWith("+=");if(!a&&!o.startsWith("="))return null;let l=[],c=a?2:1,u=o.slice(c);u&&l.push({type:"Literal",value:u});for(let f=i+1;f<e.parts.length;f++){let d=e.parts[f];d.type==="BraceExpansion"?l.push({type:"Literal",value:gd(d)}):l.push(d)}return{key:r,valueParts:l,append:a}}function gd(e){return`{${e.items.map(n=>{if(n.type==="Range"){let r=n.startStr??String(n.start),s=n.endStr??String(n.end),i=`${r}..${s}`;return n.step&&(i+=`..${n.step}`),i}return Tn(n.word)}).join(",")}}`}function Tn(e){let t="";for(let n of e.parts)switch(n.type){case"Literal":t+=n.value;break;case"Glob":t+=n.pattern;break;case"SingleQuoted":t+=n.value;break;case"DoubleQuoted":for(let r of n.parts)(r.type==="Literal"||r.type==="Escaped")&&(t+=r.value);break;case"Escaped":t+=n.value;break;case"BraceExpansion":t+="{",t+=n.items.map(r=>r.type==="Range"?`${r.startStr}..${r.endStr}${r.step?`..${r.step}`:""}`:Tn(r.word)).join(","),t+="}";break;case"TildeExpansion":t+="~",n.user&&(t+=n.user);break}return t}var ir=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Qa(e){return ir.has(e)}var or=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]);var wd=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Ed=["braceexpand","hashall","interactive-comments"];function hi(e){let t=[],n=[...Ed.map(r=>({name:r,enabled:!0})),...wd.map(r=>({name:r,enabled:e[r]}))].sort((r,s)=>r.name.localeCompare(s.name));for(let r of n)r.enabled&&t.push(r.name);return t.join(":")}function Fn(e){e.state.env.set("SHELLOPTS",hi(e.state.options))}var bd=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function mi(e){let t=[];for(let n of bd)e[n]&&t.push(n);return t.join(":")}function yi(e){e.state.env.set("BASHOPTS",mi(e.state.shoptOptions))}var F={script(e){return{type:"Script",statements:e}},statement(e,t=[],n=!1,r,s){let i={type:"Statement",pipelines:e,operators:t,background:n};return r&&(i.deferredError=r),s!==void 0&&(i.sourceText=s),i},pipeline(e,t=!1,n=!1,r=!1,s){return{type:"Pipeline",commands:e,negated:t,timed:n,timePosix:r,pipeStderr:s}},simpleCommand(e,t=[],n=[],r=[]){return{type:"SimpleCommand",name:e,args:t,assignments:n,redirections:r}},word(e){return{type:"Word",parts:e}},literal(e){return{type:"Literal",value:e}},singleQuoted(e){return{type:"SingleQuoted",value:e}},doubleQuoted(e){return{type:"DoubleQuoted",parts:e}},escaped(e){return{type:"Escaped",value:e}},parameterExpansion(e,t=null){return{type:"ParameterExpansion",parameter:e,operation:t}},commandSubstitution(e,t=!1){return{type:"CommandSubstitution",body:e,legacy:t}},arithmeticExpansion(e){return{type:"ArithmeticExpansion",expression:e}},processSubstitution(e,t){return{type:"ProcessSubstitution",body:e,direction:t}},assignment(e,t,n=!1,r=null){return{type:"Assignment",name:e,value:t,append:n,array:r}},redirection(e,t,n=null,r){let s={type:"Redirection",fd:n,operator:e,target:t};return r&&(s.fdVariable=r),s},hereDoc(e,t,n=!1,r=!1,s){let i={type:"HereDoc",delimiter:e,content:t,stripTabs:n,quoted:r};return s!==void 0&&(i.terminated=s),i},ifNode(e,t=null,n=[]){return{type:"If",clauses:e,elseBody:t,redirections:n}},forNode(e,t,n,r=[]){return{type:"For",variable:e,words:t,body:n,redirections:r}},whileNode(e,t,n=[]){return{type:"While",condition:e,body:t,redirections:n}},untilNode(e,t,n=[]){return{type:"Until",condition:e,body:t,redirections:n}},caseNode(e,t,n=[]){return{type:"Case",word:e,items:t,redirections:n}},caseItem(e,t,n=";;"){return{type:"CaseItem",patterns:e,body:t,terminator:n}},subshell(e,t=[]){return{type:"Subshell",body:e,redirections:t}},group(e,t=[]){return{type:"Group",body:e,redirections:t}},functionDef(e,t,n=[],r){return{type:"FunctionDef",name:e,body:t,redirections:n,sourceFile:r}},conditionalCommand(e,t=[],n){return{type:"ConditionalCommand",expression:e,redirections:t,line:n}},arithmeticCommand(e,t=[],n){return{type:"ArithmeticCommand",expression:e,redirections:t,line:n}}};function Ka(e,t){let n=e.length,r=t+3,s=2,i=!1,o=!1;for(;r<n&&s>0;){let a=e[r];if(i){a==="'"&&(i=!1),r++;continue}if(o){if(a==="\\"){r+=2;continue}a==='"'&&(o=!1),r++;continue}if(a==="'"){i=!0,r++;continue}if(a==='"'){o=!0,r++;continue}if(a==="\\"){r+=2;continue}if(a==="("){s++,r++;continue}if(a===")"){if(s--,s===1){let l=r+1;return!(l<n&&e[l]===")")}if(s===0)return!1;r++;continue}if(s===1&&(a==="|"&&r+1<n&&e[r+1]==="|"||a==="&"&&r+1<n&&e[r+1]==="&"||a==="|"&&r+1<n&&e[r+1]!=="|"))return!0;r++}return!1}function Gr(e,t){let n="",r=t,s=0,i=!1,o,a=l=>l===" "||l===" "||l===`
14
14
  `||l===";"||l==="&"||l==="|"||l==="<"||l===">"||l==="("||l===")";for(;r<e.length;){let l=e[r];if(l==="'"){let c=s>0;for(c||(i=!0),c&&(n+=l),r++;r<e.length&&e[r]!=="'";)n+=e[r],r++;r<e.length?(c&&(n+=e[r]),r++):o=l;continue}if(l==='"'){let c=s>0;for(c||(i=!0),c&&(n+=l),r++;r<e.length&&e[r]!=='"';){if(e[r]==="\\"&&r+1<e.length){if(c){n+=e.slice(r,r+2),r+=2;continue}let u=e[r+1];if(u==="$"||u==="`"||u==='"'||u==="\\"||u===`
15
15
  `){r+=2,u!==`
16
16
  `&&(n+=u);continue}}n+=e[r],r++}r<e.length?(c&&(n+=e[r]),r++):o=l;continue}if(l==="\\"&&r+1<e.length){if(s>0){n+=e.slice(r,r+2),r+=2;continue}i=!0;let c=e[r+1];c!==`
17
- `&&(n+=c),r+=2;continue}if(s===0&&(l==="$"||l==="<"||l===">")&&e[r+1]==="("){n+=`${l}(`,s=1,r+=2;continue}if(s===0&&a(l))break;s>0&&(l==="("?s++:l===")"&&s--),n+=l,r++}return{delim:n,endPos:r,quoted:i,unclosedQuote:o,unclosedSubstitution:s>0}}function ld(e,t,n){let r=t+1;for(let{delim:s,stripTabs:i}of n)for(;;){if(r>=e.length)return e.length;let o=e.indexOf(`
18
- `,r);o===-1&&(o=e.length);let a=e.slice(r,o);if(i&&(a=a.replace(/^\t+/,"")),a===s){r=o+1;break}if(o>=e.length)return e.length;r=o+1}return Math.min(r,e.length)}function Va(e,t,n){let r=1,s=t,i=!1,o=!1,a=0,l=!1,c="",u=[],f=0;for(;s<e.length&&r>0;){let d=e[s];if(i)d==="'"&&(i=!1);else if(o)d==="\\"&&s+1<e.length?s++:d==='"'&&(o=!1);else{if(d==="("&&e[s+1]==="("?f++:d===")"&&e[s+1]===")"&&f>0&&f--,f===0&&d==="<"&&e[s+1]==="<"&&e[s+2]!=="<"){let p=s+2,h=!1;for(e[p]==="-"&&(h=!0,p++);e[p]===" "||e[p]===" ";)p++;let{delim:m,endPos:E,unclosedQuote:S,unclosedSubstitution:g}=Vr(e,p);if(S&&n(`unexpected EOF while looking for matching \`${S}'`),g&&n("unexpected EOF while looking for matching `)'"),m.length>0){u.push({delim:m,stripTabs:h}),c="",s=E;continue}}if(d===`
19
- `&&u.length>0){let p=ld(e,s,u);u.length=0,c="",s=p;continue}d==="'"?(i=!0,c=""):d==='"'?(o=!0,c=""):d==="\\"&&s+1<e.length?(s++,c=""):/[a-zA-Z_]/.test(d)?c+=d:(c==="case"?(a++,l=!1):c==="in"&&a>0?l=!0:c==="esac"&&a>0&&(a--,l=!1),c="",d==="("?s>0&&e[s-1]==="$"?r++:l||r++:d===")"?l?l=!1:r--:d===";"&&a>0&&s+1<e.length&&e[s+1]===";"&&(l=!0))}r>0&&s++}return r>0&&n("unexpected EOF while looking for matching `)'"),s}function za(e,t,n,r){let s=t+2,i=Va(e,s,r),o=e.slice(s,i),l=n().parse(o);return{part:T.commandSubstitution(l,!1),endIndex:i+1}}function Ua(e,t,n,r){let s=e[t]==="<"?"input":"output",i=t+2,o=Va(e,i,r),a=n().parse(e.slice(i,o));return{part:T.processSubstitution(a,s),endIndex:o+1}}function qa(e,t,n,r,s){let o=t+1,a="";for(;o<e.length&&e[o]!=="`";)if(e[o]==="\\"){let u=e[o+1];u==="$"||u==="`"||u==="\\"||u===`
17
+ `&&(n+=c),r+=2;continue}if(s===0&&(l==="$"||l==="<"||l===">")&&e[r+1]==="("){n+=`${l}(`,s=1,r+=2;continue}if(s===0&&a(l))break;s>0&&(l==="("?s++:l===")"&&s--),n+=l,r++}return{delim:n,endPos:r,quoted:i,unclosedQuote:o,unclosedSubstitution:s>0}}function Sd(e,t,n){let r=t+1;for(let{delim:s,stripTabs:i}of n)for(;;){if(r>=e.length)return e.length;let o=e.indexOf(`
18
+ `,r);o===-1&&(o=e.length);let a=e.slice(r,o);if(i&&(a=a.replace(/^\t+/,"")),a===s){r=o+1;break}if(o>=e.length)return e.length;r=o+1}return Math.min(r,e.length)}function Xa(e,t,n){let r=1,s=t,i=!1,o=!1,a=0,l=!1,c="",u=[],f=0;for(;s<e.length&&r>0;){let d=e[s];if(i)d==="'"&&(i=!1);else if(o)d==="\\"&&s+1<e.length?s++:d==='"'&&(o=!1);else{if(d==="("&&e[s+1]==="("?f++:d===")"&&e[s+1]===")"&&f>0&&f--,f===0&&d==="<"&&e[s+1]==="<"&&e[s+2]!=="<"){let p=s+2,h=!1;for(e[p]==="-"&&(h=!0,p++);e[p]===" "||e[p]===" ";)p++;let{delim:y,endPos:E,unclosedQuote:S,unclosedSubstitution:g}=Gr(e,p);if(S&&n(`unexpected EOF while looking for matching \`${S}'`),g&&n("unexpected EOF while looking for matching `)'"),y.length>0){u.push({delim:y,stripTabs:h}),c="",s=E;continue}}if(d===`
19
+ `&&u.length>0){let p=Sd(e,s,u);u.length=0,c="",s=p;continue}d==="'"?(i=!0,c=""):d==='"'?(o=!0,c=""):d==="\\"&&s+1<e.length?(s++,c=""):/[a-zA-Z_]/.test(d)?c+=d:(c==="case"?(a++,l=!1):c==="in"&&a>0?l=!0:c==="esac"&&a>0&&(a--,l=!1),c="",d==="("?s>0&&e[s-1]==="$"?r++:l||r++:d===")"?l?l=!1:r--:d===";"&&a>0&&s+1<e.length&&e[s+1]===";"&&(l=!0))}r>0&&s++}return r>0&&n("unexpected EOF while looking for matching `)'"),s}function Ya(e,t,n,r){let s=t+2,i=Xa(e,s,r),o=e.slice(s,i),l=n().parse(o);return{part:F.commandSubstitution(l,!1),endIndex:i+1}}function Ja(e,t,n,r){let s=e[t]==="<"?"input":"output",i=t+2,o=Xa(e,i,r),a=n().parse(e.slice(i,o));return{part:F.processSubstitution(a,s),endIndex:o+1}}function el(e,t,n,r,s){let o=t+1,a="";for(;o<e.length&&e[o]!=="`";)if(e[o]==="\\"){let u=e[o+1];u==="$"||u==="`"||u==="\\"||u===`
20
20
  `||n&&u==='"'?(u!==`
21
- `&&(a+=u),o+=2):(a+=e[o],o++)}else a+=e[o],o++;o>=e.length&&s("unexpected EOF while looking for matching ``'");let c=r().parse(a);return{part:T.commandSubstitution(c,!0),endIndex:o+1}}var cd=10485760,w;(function(e){e.EOF="EOF",e.NEWLINE="NEWLINE",e.SEMICOLON="SEMICOLON",e.AMP="AMP",e.PIPE="PIPE",e.PIPE_AMP="PIPE_AMP",e.AND_AND="AND_AND",e.OR_OR="OR_OR",e.BANG="BANG",e.LESS="LESS",e.GREAT="GREAT",e.DLESS="DLESS",e.DGREAT="DGREAT",e.LESSAND="LESSAND",e.GREATAND="GREATAND",e.LESSGREAT="LESSGREAT",e.DLESSDASH="DLESSDASH",e.CLOBBER="CLOBBER",e.TLESS="TLESS",e.AND_GREAT="AND_GREAT",e.AND_DGREAT="AND_DGREAT",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.DSEMI="DSEMI",e.SEMI_AND="SEMI_AND",e.SEMI_SEMI_AND="SEMI_SEMI_AND",e.DBRACK_START="DBRACK_START",e.DBRACK_END="DBRACK_END",e.DPAREN_START="DPAREN_START",e.DPAREN_END="DPAREN_END",e.IF="IF",e.THEN="THEN",e.ELSE="ELSE",e.ELIF="ELIF",e.FI="FI",e.FOR="FOR",e.WHILE="WHILE",e.UNTIL="UNTIL",e.DO="DO",e.DONE="DONE",e.CASE="CASE",e.ESAC="ESAC",e.IN="IN",e.FUNCTION="FUNCTION",e.SELECT="SELECT",e.TIME="TIME",e.COPROC="COPROC",e.WORD="WORD",e.NAME="NAME",e.NUMBER="NUMBER",e.ASSIGNMENT_WORD="ASSIGNMENT_WORD",e.FD_VARIABLE="FD_VARIABLE",e.COMMENT="COMMENT",e.HEREDOC_CONTENT="HEREDOC_CONTENT"})(w||(w={}));var Ye=class extends Error{line;column;constructor(t,n,r){super(`line ${n}: ${t}`),this.line=n,this.column=r,this.name="LexerError"}},ai=new Map([["if",w.IF],["then",w.THEN],["else",w.ELSE],["elif",w.ELIF],["fi",w.FI],["for",w.FOR],["while",w.WHILE],["until",w.UNTIL],["do",w.DO],["done",w.DONE],["case",w.CASE],["esac",w.ESAC],["in",w.IN],["function",w.FUNCTION],["select",w.SELECT],["time",w.TIME],["coproc",w.COPROC]]),ud=new Set(ai.values());function li(e){return ud.has(e)}function ja(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return!1;let n=e.slice(t[0].length);if(n===""||n==="+")return!0;if(n[0]==="["){let r=0,s=0;for(;s<n.length;s++)if(n[s]==="[")r++;else if(n[s]==="]"&&(r--,r===0))break;if(r!==0||s>=n.length)return!1;let i=n.slice(s+1);return i===""||i==="+"}return!1}function Ga(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];if(r==="[")t++;else if(r==="]")t--;else{if(t===0&&r==="=")return n;if(t===0&&r==="+"&&e[n+1]==="=")return n+1}}return-1}var fd=[[";",";","&",w.SEMI_SEMI_AND],["<","<","<",w.TLESS],["&",">",">",w.AND_DGREAT]],dd=[["[","[",w.DBRACK_START],["]","]",w.DBRACK_END],["(","(",w.DPAREN_START],[")",")",w.DPAREN_END],["&","&",w.AND_AND],["|","|",w.OR_OR],[";",";",w.DSEMI],[";","&",w.SEMI_AND],["|","&",w.PIPE_AMP],[">",">",w.DGREAT],["<","&",w.LESSAND],[">","&",w.GREATAND],["<",">",w.LESSGREAT],[">","|",w.CLOBBER],["&",">",w.AND_GREAT]],pd=new Map([["|",w.PIPE],["&",w.AMP],[";",w.SEMICOLON],["(",w.LPAREN],[")",w.RPAREN],["<",w.LESS],[">",w.GREAT]]);function hd(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Ha(e){return e===" "||e===" "||e===`
22
- `||e===";"||e==="&"||e==="|"||e==="("||e===")"||e==="<"||e===">"}var zr=class{input;pos=0;line=1;column=1;tokens=[];pendingHeredocs=[];pendingHeredocDelimiterMode;dparenDepth=0;maxHeredocSize;constructor(t,n){this.input=t,this.maxHeredocSize=n?.maxHeredocSize??cd}tokenize(){let n=this.input.length,r=this.tokens,s=this.pendingHeredocs;for(;this.pos<n;){if(s.length>0&&r.length>0&&r[r.length-1].type===w.NEWLINE){this.readHeredocContent();continue}if(this.skipWhitespace(),this.pos>=n)break;let i=this.nextToken();i&&r.push(i)}return s.length>0&&this.readHeredocContent(),r.push({type:w.EOF,value:"",start:this.pos,end:this.pos,line:this.line,column:this.column}),r}skipWhitespace(){let t=this.input,n=t.length,r=this.pos,s=this.column,i=this.line;for(;r<n;){let o=t[r];if(o===" "||o===" ")r++,s++;else if(o==="\\"&&t[r+1]===`
21
+ `&&(a+=u),o+=2):(a+=e[o],o++)}else a+=e[o],o++;o>=e.length&&s("unexpected EOF while looking for matching ``'");let c=r().parse(a);return{part:F.commandSubstitution(c,!0),endIndex:o+1}}var Ad=10485760,w;(function(e){e.EOF="EOF",e.NEWLINE="NEWLINE",e.SEMICOLON="SEMICOLON",e.AMP="AMP",e.PIPE="PIPE",e.PIPE_AMP="PIPE_AMP",e.AND_AND="AND_AND",e.OR_OR="OR_OR",e.BANG="BANG",e.LESS="LESS",e.GREAT="GREAT",e.DLESS="DLESS",e.DGREAT="DGREAT",e.LESSAND="LESSAND",e.GREATAND="GREATAND",e.LESSGREAT="LESSGREAT",e.DLESSDASH="DLESSDASH",e.CLOBBER="CLOBBER",e.TLESS="TLESS",e.AND_GREAT="AND_GREAT",e.AND_DGREAT="AND_DGREAT",e.LPAREN="LPAREN",e.RPAREN="RPAREN",e.LBRACE="LBRACE",e.RBRACE="RBRACE",e.DSEMI="DSEMI",e.SEMI_AND="SEMI_AND",e.SEMI_SEMI_AND="SEMI_SEMI_AND",e.DBRACK_START="DBRACK_START",e.DBRACK_END="DBRACK_END",e.DPAREN_START="DPAREN_START",e.DPAREN_END="DPAREN_END",e.IF="IF",e.THEN="THEN",e.ELSE="ELSE",e.ELIF="ELIF",e.FI="FI",e.FOR="FOR",e.WHILE="WHILE",e.UNTIL="UNTIL",e.DO="DO",e.DONE="DONE",e.CASE="CASE",e.ESAC="ESAC",e.IN="IN",e.FUNCTION="FUNCTION",e.SELECT="SELECT",e.TIME="TIME",e.COPROC="COPROC",e.WORD="WORD",e.NAME="NAME",e.NUMBER="NUMBER",e.ASSIGNMENT_WORD="ASSIGNMENT_WORD",e.FD_VARIABLE="FD_VARIABLE",e.COMMENT="COMMENT",e.HEREDOC_CONTENT="HEREDOC_CONTENT"})(w||(w={}));var Je=class extends Error{line;column;constructor(t,n,r){super(`line ${n}: ${t}`),this.line=n,this.column=r,this.name="LexerError"}},gi=new Map([["if",w.IF],["then",w.THEN],["else",w.ELSE],["elif",w.ELIF],["fi",w.FI],["for",w.FOR],["while",w.WHILE],["until",w.UNTIL],["do",w.DO],["done",w.DONE],["case",w.CASE],["esac",w.ESAC],["in",w.IN],["function",w.FUNCTION],["select",w.SELECT],["time",w.TIME],["coproc",w.COPROC]]),vd=new Set(gi.values());function wi(e){return vd.has(e)}function tl(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return!1;let n=e.slice(t[0].length);if(n===""||n==="+")return!0;if(n[0]==="["){let r=0,s=0;for(;s<n.length;s++)if(n[s]==="[")r++;else if(n[s]==="]"&&(r--,r===0))break;if(r!==0||s>=n.length)return!1;let i=n.slice(s+1);return i===""||i==="+"}return!1}function nl(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];if(r==="[")t++;else if(r==="]")t--;else{if(t===0&&r==="=")return n;if(t===0&&r==="+"&&e[n+1]==="=")return n+1}}return-1}var kd=[[";",";","&",w.SEMI_SEMI_AND],["<","<","<",w.TLESS],["&",">",">",w.AND_DGREAT]],xd=[["[","[",w.DBRACK_START],["]","]",w.DBRACK_END],["(","(",w.DPAREN_START],[")",")",w.DPAREN_END],["&","&",w.AND_AND],["|","|",w.OR_OR],[";",";",w.DSEMI],[";","&",w.SEMI_AND],["|","&",w.PIPE_AMP],[">",">",w.DGREAT],["<","&",w.LESSAND],[">","&",w.GREATAND],["<",">",w.LESSGREAT],[">","|",w.CLOBBER],["&",">",w.AND_GREAT]],$d=new Map([["|",w.PIPE],["&",w.AMP],[";",w.SEMICOLON],["(",w.LPAREN],[")",w.RPAREN],["<",w.LESS],[">",w.GREAT]]);function Pd(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function rl(e){return e===" "||e===" "||e===`
22
+ `||e===";"||e==="&"||e==="|"||e==="("||e===")"||e==="<"||e===">"}var Zr=class{input;pos=0;line=1;column=1;tokens=[];pendingHeredocs=[];pendingHeredocDelimiterMode;dparenDepth=0;maxHeredocSize;constructor(t,n){this.input=t,this.maxHeredocSize=n?.maxHeredocSize??Ad}tokenize(){let n=this.input.length,r=this.tokens,s=this.pendingHeredocs;for(;this.pos<n;){if(s.length>0&&r.length>0&&r[r.length-1].type===w.NEWLINE){this.readHeredocContent();continue}if(this.skipWhitespace(),this.pos>=n)break;let i=this.nextToken();i&&r.push(i)}return s.length>0&&this.readHeredocContent(),r.push({type:w.EOF,value:"",start:this.pos,end:this.pos,line:this.line,column:this.column}),r}skipWhitespace(){let t=this.input,n=t.length,r=this.pos,s=this.column,i=this.line;for(;r<n;){let o=t[r];if(o===" "||o===" ")r++,s++;else if(o==="\\"&&t[r+1]===`
23
23
  `)r+=2,i++,s=1;else break}this.pos=r,this.column=s,this.line=i}nextToken(){let t=this.input,n=this.pos,r=this.line,s=this.column,i=t[n],o=t[n+1],a=t[n+2],l=this.pendingHeredocDelimiterMode;if(this.pendingHeredocDelimiterMode=void 0,l!==void 0&&i!==`
24
24
  `&&!(i==="#"&&this.dparenDepth===0))return this.readHeredocDelimiterToken(n,r,s,l);if(i==="#"&&this.dparenDepth===0)return this.readComment(n,r,s);if(i===`
25
25
  `)return this.pos=n+1,this.line++,this.column=1,{type:w.NEWLINE,value:`
26
- `,start:n,end:n+1,line:r,column:s};if(i==="<"&&o==="<"&&a==="-")return this.pos=n+3,this.column=s+3,this.pendingHeredocDelimiterMode=!0,this.makeToken(w.DLESSDASH,"<<-",n,r,s);for(let[u,f,d,p]of fd)if(i===u&&o===f&&a===d)return this.pos=n+3,this.column=s+3,this.makeToken(p,u+f+d,n,r,s);if(i==="<"&&o==="<")return this.pos=n+2,this.column=s+2,this.pendingHeredocDelimiterMode=!1,this.makeToken(w.DLESS,"<<",n,r,s);if(i==="("&&o==="("){let u=this.tokens[this.tokens.length-1];return this.dparenDepth===0&&u?.end===n&&(u.type===w.LESS||u.type===w.GREAT)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):this.dparenDepth>0?(this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s)):this.looksLikeNestedSubshells(n+2)||this.dparenClosesWithSpacedParens(n+2)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):(this.pos=n+2,this.column=s+2,this.dparenDepth=1,this.makeToken(w.DPAREN_START,"((",n,r,s))}if(i===")"&&o===")")return this.dparenDepth===1?(this.pos=n+2,this.column=s+2,this.dparenDepth=0,this.makeToken(w.DPAREN_END,"))",n,r,s)):this.dparenDepth>1?(this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.RPAREN,")",n,r,s));for(let[u,f,d]of dd)if(!(u==="("&&f==="("||u===")"&&f===")")&&!(this.dparenDepth>0&&u===";"&&(d===w.DSEMI||d===w.SEMI_AND||d===w.SEMI_SEMI_AND))&&i===u&&o===f){if(d===w.DBRACK_START||d===w.DBRACK_END){let p=t[n+2];if(p!==void 0&&p!==" "&&p!==" "&&p!==`
27
- `&&p!==";"&&p!=="&"&&p!=="|"&&p!=="("&&p!==")"&&p!=="<"&&p!==">")break}return this.pos=n+2,this.column=s+2,this.makeToken(d,u+f,n,r,s)}if(i==="("&&this.dparenDepth>0)return this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s);if(i===")"&&this.dparenDepth>1)return this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s);let c=pd.get(i);if(c!==void 0)return this.pos=n+1,this.column=s+1,this.makeToken(c,i,n,r,s);if(i==="{"){let u=this.scanFdVariable(n);return u!==null?(this.pos=u.end,this.column=s+(u.end-n),{type:w.FD_VARIABLE,value:u.varname,start:n,end:u.end,line:r,column:s}):o==="}"?(this.pos=n+2,this.column=s+2,{type:w.WORD,value:"{}",start:n,end:n+2,line:r,column:s,quoted:!1,singleQuoted:!1}):this.scanBraceExpansion(n)!==null?this.readWordWithBraceExpansion(n,r,s):this.scanLiteralBraceWord(n)!==null?this.readWordWithBraceExpansion(n,r,s):o!==void 0&&o!==" "&&o!==" "&&o!==`
26
+ `,start:n,end:n+1,line:r,column:s};if(i==="<"&&o==="<"&&a==="-")return this.pos=n+3,this.column=s+3,this.pendingHeredocDelimiterMode=!0,this.makeToken(w.DLESSDASH,"<<-",n,r,s);for(let[u,f,d,p]of kd)if(i===u&&o===f&&a===d)return this.pos=n+3,this.column=s+3,this.makeToken(p,u+f+d,n,r,s);if(i==="<"&&o==="<")return this.pos=n+2,this.column=s+2,this.pendingHeredocDelimiterMode=!1,this.makeToken(w.DLESS,"<<",n,r,s);if(i==="("&&o==="("){let u=this.tokens[this.tokens.length-1];return this.dparenDepth===0&&u?.end===n&&(u.type===w.LESS||u.type===w.GREAT)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):this.dparenDepth>0?(this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s)):this.looksLikeNestedSubshells(n+2)||this.dparenClosesWithSpacedParens(n+2)?(this.pos=n+1,this.column=s+1,this.makeToken(w.LPAREN,"(",n,r,s)):(this.pos=n+2,this.column=s+2,this.dparenDepth=1,this.makeToken(w.DPAREN_START,"((",n,r,s))}if(i===")"&&o===")")return this.dparenDepth===1?(this.pos=n+2,this.column=s+2,this.dparenDepth=0,this.makeToken(w.DPAREN_END,"))",n,r,s)):this.dparenDepth>1?(this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.RPAREN,")",n,r,s));for(let[u,f,d]of xd)if(!(u==="("&&f==="("||u===")"&&f===")")&&!(this.dparenDepth>0&&u===";"&&(d===w.DSEMI||d===w.SEMI_AND||d===w.SEMI_SEMI_AND))&&i===u&&o===f){if(d===w.DBRACK_START||d===w.DBRACK_END){let p=t[n+2];if(p!==void 0&&p!==" "&&p!==" "&&p!==`
27
+ `&&p!==";"&&p!=="&"&&p!=="|"&&p!=="("&&p!==")"&&p!=="<"&&p!==">")break}return this.pos=n+2,this.column=s+2,this.makeToken(d,u+f,n,r,s)}if(i==="("&&this.dparenDepth>0)return this.pos=n+1,this.column=s+1,this.dparenDepth++,this.makeToken(w.LPAREN,"(",n,r,s);if(i===")"&&this.dparenDepth>1)return this.pos=n+1,this.column=s+1,this.dparenDepth--,this.makeToken(w.RPAREN,")",n,r,s);let c=$d.get(i);if(c!==void 0)return this.pos=n+1,this.column=s+1,this.makeToken(c,i,n,r,s);if(i==="{"){let u=this.scanFdVariable(n);return u!==null?(this.pos=u.end,this.column=s+(u.end-n),{type:w.FD_VARIABLE,value:u.varname,start:n,end:u.end,line:r,column:s}):o==="}"?(this.pos=n+2,this.column=s+2,{type:w.WORD,value:"{}",start:n,end:n+2,line:r,column:s,quoted:!1,singleQuoted:!1}):this.scanBraceExpansion(n)!==null?this.readWordWithBraceExpansion(n,r,s):this.scanLiteralBraceWord(n)!==null?this.readWordWithBraceExpansion(n,r,s):o!==void 0&&o!==" "&&o!==" "&&o!==`
28
28
  `?this.readWord(n,r,s):(this.pos=n+1,this.column=s+1,this.makeToken(w.LBRACE,"{",n,r,s))}return i==="}"?this.isWordCharFollowing(n+1)?this.readWord(n,r,s):(this.pos=n+1,this.column=s+1,this.makeToken(w.RBRACE,"}",n,r,s)):i==="!"?o==="="?(this.pos=n+2,this.column=s+2,this.makeToken(w.WORD,"!=",n,r,s)):(this.pos=n+1,this.column=s+1,this.makeToken(w.BANG,"!",n,r,s)):this.readWord(n,r,s)}looksLikeNestedSubshells(t){let n=this.input,r=n.length,s=t;for(;s<r&&(n[s]===" "||n[s]===" ");)s++;if(s>=r)return!1;let i=n[s];if(i==="(")return this.looksLikeNestedSubshells(s+1);let o=/[a-zA-Z_]/.test(i),a=i==="!"||i==="[";if(!o&&!a)return!1;let l=s;for(;l<r&&/[a-zA-Z0-9_\-.]/.test(n[l]);)l++;if(l===s)return a;let c=l;for(;c<r&&(n[c]===" "||n[c]===" ");)c++;if(c>=r)return!1;let u=n[c];if(u==="="&&n[c+1]!=="="||u===`
29
29
  `||l===c&&/[+\-*/%<>&|^!~?:]/.test(u)&&u!=="-"||u===")"&&n[c+1]===")")return!1;if(c>l&&(u==="-"||u==='"'||u==="'"||u==="$"||/[a-zA-Z_/.]/.test(u))){let f=c;for(;f<r&&n[f]!==`
30
30
  `;){if(n[f]===")")return!0;f++}return!1}if(u===")"){let f=c+1;for(;f<r&&(n[f]===" "||n[f]===" ");)f++;if(n[f]==="|"&&n[f+1]==="|"||n[f]==="&"&&n[f+1]==="&"||n[f]===";"||n[f]==="|"&&n[f+1]!=="|")return!0}return!1}makeToken(t,n,r,s,i){return{type:t,value:n,start:r,end:this.pos,line:s,column:i}}readComment(t,n,r){let s=this.input,i=s.length,o=this.pos;for(;o<i&&s[o]!==`
31
- `;)o++;let a=s.slice(t,o);return this.pos=o,this.column=r+(o-t),{type:w.COMMENT,value:a,start:t,end:o,line:n,column:r}}readWord(t,n,r){let s=this.input,i=s.length,o=this.pos,a=o;for(;o<i;){let y=s[o];if(y===" "||y===" "||y===`
32
- `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">"||y==="'"||y==='"'||y==="\\"||y==="$"||y==="`"||y==="{"||y==="}"||y==="~"||y==="*"||y==="?"||y==="[")break;o++}if(o>a){let y=s[o];if(!(y==="("&&o>a&&"@*+?!".includes(s[o-1]))){if(o>=i||y===" "||y===" "||y===`
33
- `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">"){let b=s.slice(a,o);this.pos=o,this.column=r+(o-a);let A=ai.get(b);if(A!==void 0)return{type:A,value:b,start:t,end:o,line:n,column:r};let k=Ga(b);return k>0&&ja(b.slice(0,k))?{type:w.ASSIGNMENT_WORD,value:b,start:t,end:o,line:n,column:r}:/^[0-9]+$/.test(b)?{type:w.NUMBER,value:b,start:t,end:o,line:n,column:r}:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)?{type:w.NAME,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}:{type:w.WORD,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}}}o=this.pos;let l=this.column,c=this.line,u="",f=!1,d=!1,p=!1,h=!1,m=s[o]==='"'||s[o]==="'",E=!1,S=0;for(;o<i;){let y=s[o];if(!p&&!h){if(y==="("&&u.length>0&&"@*+?!".includes(u[u.length-1])){let b=this.scanExtglobPattern(o);if(b!==null){u+=b.content,o=b.end,l+=b.content.length;continue}}if(y==="["&&S===0){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){let b=o+1<i?s[o+1]:"";if(b==="^"||b==="!"){u+=y,o++,l++;continue}S=1,u+=y,o++,l++;continue}}else if(y==="["&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S++,u+=y,o++,l++;continue}else if(y==="]"&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S--,u+=y,o++,l++;continue}if(S>0){if(y===`
34
- `)break;u+=y,o++,l++;continue}if(y===" "||y===" "||y===`
35
- `||y===";"||y==="&"||y==="|"||y==="("||y===")"||y==="<"||y===">")break}if(y==="$"&&o+1<i&&s[o+1]==="'"&&!p&&!h){for(u+="$'",o+=2,l+=2;o<i&&s[o]!=="'";)s[o]==="\\"&&o+1<i?(u+=s[o]+s[o+1],o+=2,l+=2):(u+=s[o],o++,l++);o<i&&(u+="'",o++,l++);continue}if(y==="$"&&o+1<i&&s[o+1]==='"'&&!p&&!h){o++,l++,h=!0,f=!0,u===""&&(m=!0),o++,l++;continue}if(y==="'"&&!h){if(p)if(p=!1,!m||E)u+=y;else{let b=o+1<i?s[o+1]:"";b&&!Ha(b)&&b!=="'"&&(b==='"'?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else p=!0,m&&!E?(d=!0,f=!0):u+=y;o++,l++;continue}if(y==='"'&&!p){if(h)if(h=!1,!m||E)u+=y;else{let b=o+1<i?s[o+1]:"";b&&!Ha(b)&&b!=='"'&&(b==="'"?(E=!0,u+=y,d=!1,f=!1):(E=!0,u+=y))}else h=!0,m&&!E?f=!0:u+=y;o++,l++;continue}if(y==="\\"&&!p&&o+1<i){let b=s[o+1];if(b===`
31
+ `;)o++;let a=s.slice(t,o);return this.pos=o,this.column=r+(o-t),{type:w.COMMENT,value:a,start:t,end:o,line:n,column:r}}readWord(t,n,r){let s=this.input,i=s.length,o=this.pos,a=o;for(;o<i;){let m=s[o];if(m===" "||m===" "||m===`
32
+ `||m===";"||m==="&"||m==="|"||m==="("||m===")"||m==="<"||m===">"||m==="'"||m==='"'||m==="\\"||m==="$"||m==="`"||m==="{"||m==="}"||m==="~"||m==="*"||m==="?"||m==="[")break;o++}if(o>a){let m=s[o];if(!(m==="("&&o>a&&"@*+?!".includes(s[o-1]))){if(o>=i||m===" "||m===" "||m===`
33
+ `||m===";"||m==="&"||m==="|"||m==="("||m===")"||m==="<"||m===">"){let b=s.slice(a,o);this.pos=o,this.column=r+(o-a);let A=gi.get(b);if(A!==void 0)return{type:A,value:b,start:t,end:o,line:n,column:r};let k=nl(b);return k>0&&tl(b.slice(0,k))?{type:w.ASSIGNMENT_WORD,value:b,start:t,end:o,line:n,column:r}:/^[0-9]+$/.test(b)?{type:w.NUMBER,value:b,start:t,end:o,line:n,column:r}:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(b)?{type:w.NAME,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}:{type:w.WORD,value:b,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}}}o=this.pos;let l=this.column,c=this.line,u="",f=!1,d=!1,p=!1,h=!1,y=s[o]==='"'||s[o]==="'",E=!1,S=0;for(;o<i;){let m=s[o];if(!p&&!h){if(m==="("&&u.length>0&&"@*+?!".includes(u[u.length-1])){let b=this.scanExtglobPattern(o);if(b!==null){u+=b.content,o=b.end,l+=b.content.length;continue}}if(m==="["&&S===0){if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){let b=o+1<i?s[o+1]:"";if(b==="^"||b==="!"){u+=m,o++,l++;continue}S=1,u+=m,o++,l++;continue}}else if(m==="["&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S++,u+=m,o++,l++;continue}else if(m==="]"&&S>0){u.length>0&&u[u.length-1]!=="\\"&&S--,u+=m,o++,l++;continue}if(S>0){if(m===`
34
+ `)break;u+=m,o++,l++;continue}if(m===" "||m===" "||m===`
35
+ `||m===";"||m==="&"||m==="|"||m==="("||m===")"||m==="<"||m===">")break}if(m==="$"&&o+1<i&&s[o+1]==="'"&&!p&&!h){for(u+="$'",o+=2,l+=2;o<i&&s[o]!=="'";)s[o]==="\\"&&o+1<i?(u+=s[o]+s[o+1],o+=2,l+=2):(u+=s[o],o++,l++);o<i&&(u+="'",o++,l++);continue}if(m==="$"&&o+1<i&&s[o+1]==='"'&&!p&&!h){o++,l++,h=!0,f=!0,u===""&&(y=!0),o++,l++;continue}if(m==="'"&&!h){if(p)if(p=!1,!y||E)u+=m;else{let b=o+1<i?s[o+1]:"";b&&!rl(b)&&b!=="'"&&(b==='"'?(E=!0,u+=m,d=!1,f=!1):(E=!0,u+=m))}else p=!0,y&&!E?(d=!0,f=!0):u+=m;o++,l++;continue}if(m==='"'&&!p){if(h)if(h=!1,!y||E)u+=m;else{let b=o+1<i?s[o+1]:"";b&&!rl(b)&&b!=='"'&&(b==="'"?(E=!0,u+=m,d=!1,f=!1):(E=!0,u+=m))}else h=!0,y&&!E?f=!0:u+=m;o++,l++;continue}if(m==="\\"&&!p&&o+1<i){let b=s[o+1];if(b===`
36
36
  `){o+=2,c++,l=1;continue}if(h){if(b==='"'||b==="\\"||b==="$"||b==="`"||b===`
37
37
  `){if(b===`
38
- `){o+=2,l=1,c++;continue}u+=y+b,o+=2,l+=2;continue}}else{u+=y+b,o+=2,l+=2;continue}}if(y==="$"&&o+1<i&&s[o+1]==="("&&!p){u+=y,o++,l++,u+=s[o],o++,l++;let b=1,A=!1,k=!1,v=0,$=!1,R="",x=[],C=s[o]==="("&&!this.dollarDparenIsSubshell(o),D=C?1:0;for(;b>0&&o<i;){let B=s[o];if(u+=B,A)B==="'"&&(A=!1);else if(k)B==="\\"&&o+1<i?(u+=s[o+1],o++,l++):B==='"'&&(k=!1);else{if(B==="("&&s[o+1]==="("?D++:B===")"&&s[o+1]===")"&&D>0&&D--,D===0&&B==="<"&&s[o+1]==="<"&&s[o+2]!=="<"){let H=o+2,N=!1;for(s[H]==="-"&&(N=!0,H++);s[H]===" "||s[H]===" ";)H++;let{delim:W,endPos:V,unclosedQuote:I,unclosedSubstitution:O}=Vr(s,H);if(I)throw new Ye(`unexpected EOF while looking for matching \`${I}'`,c,l);if(O)throw new Ye("unexpected EOF while looking for matching `)'",c,l);if(W.length>0){u+=s.slice(o+1,V),l+=V-o,x.push({delim:W,stripTabs:N}),o=V;continue}}if(B===`
39
- `&&x.length>0){c++,l=0;let H=o+1;for(let{delim:N,stripTabs:W}of x)for(;!(H>=i);){let V=s.indexOf(`
40
- `,H);V===-1&&(V=i);let I=s.slice(H,V),O=W?I.replace(/^\t+/,""):I;u+=s.slice(H,Math.min(V+1,i)),V<i&&c++;let F=V>=i;if(H=V+1,O===N||F)break}x.length=0,l=0,o=Math.min(H,i);continue}if(B==="'")A=!0,R="";else if(B==='"')k=!0,R="";else if(B==="\\"&&o+1<i)u+=s[o+1],o++,l++,R="";else if(B==="$"&&o+1<i&&s[o+1]==="{"){o++,l++,u+=s[o],o++,l++;let H=1,N=!1,W=!1;for(;H>0&&o<i;){let V=s[o];if(V==="\\"&&o+1<i&&!N){u+=V,o++,l++,u+=s[o],o++,l++;continue}u+=V,N?V==="'"&&(N=!1):W?V==='"'&&(W=!1):V==="'"?N=!0:V==='"'?W=!0:V==="{"?H++:V==="}"&&H--,V===`
41
- `?(c++,l=0):l++,o++}R="";continue}else if(B==="#"&&!C&&(R===""||/\s/.test(s[o-1]||""))){for(;o+1<i&&s[o+1]!==`
42
- `;)o++,l++,u+=s[o];R=""}else/[a-zA-Z_]/.test(B)?R+=B:(R==="case"?(v++,$=!1):R==="in"&&v>0?$=!0:R==="esac"&&v>0&&(v--,$=!1),R="",B==="("?o>0&&s[o-1]==="$"?b++:$||b++:B===")"?$?$=!1:b--:B===";"&&v>0&&(o+1<i&&s[o+1]===";"||o+1<i&&s[o+1]==="&")&&($=!0))}B===`
43
- `&&(c++,l=0,R=""),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="["&&!p){u+=y,o++,l++,u+=s[o],o++,l++;let b=1;for(;b>0&&o<i;){let A=s[o];u+=A,A==="["?b++:A==="]"?b--:A===`
44
- `&&(c++,l=0),o++,l++}continue}if(y==="$"&&o+1<i&&s[o+1]==="{"&&!p){u+=y,o++,l++,u+=s[o],o++,l++;let b=1,A=!1,k=!1,v=c,$=l,R=c,x=l;for(;b>0&&o<i;){let C=s[o];if(C==="\\"&&o+1<i&&s[o+1]===`
45
- `){o+=2,c++,l=1;continue}if(C==="\\"&&o+1<i&&!A){u+=C,o++,l++,u+=s[o],o++,l++;continue}u+=C,A?C==="'"&&(A=!1):k?C==='"'&&(k=!1):C==="'"?(A=!0,v=c,$=l):C==='"'?(k=!0,R=c,x=l):C==="{"?b++:C==="}"&&b--,C===`
46
- `&&(c++,l=0),o++,l++}if(A)throw new Ye("unexpected EOF while looking for matching `''",v,$);if(k)throw new Ye("unexpected EOF while looking for matching `\"'",R,x);continue}if(y==="$"&&o+1<i&&!p){let b=s[o+1];if(b==="#"||b==="?"||b==="$"||b==="!"||b==="@"||b==="*"||b==="-"||b>="0"&&b<="9"){u+=y+b,o+=2,l+=2;continue}}if(y==="`"&&!p){for(u+=y,o++,l++;o<i&&s[o]!=="`";){let b=s[o];u+=b,b==="\\"&&o+1<i&&(u+=s[o+1],o++,l++),b===`
47
- `&&(c++,l=0),o++,l++}o<i&&(u+=s[o],o++,l++);continue}u+=y,o++,y===`
48
- `?(c++,l=1):l++}if(this.pos=o,this.column=l,this.line=c,E&&m&&(u=s[t]+u,f=!1,d=!1),p||h){let y=p?"'":'"';throw new Ye(`unexpected EOF while looking for matching \`${y}'`,n,r)}if(!m&&u.length>=2){if(u[0]==="'"&&u[u.length-1]==="'"){let y=u.slice(1,-1);!y.includes("'")&&!y.includes('"')&&(u=y,f=!0,d=!0)}else if(u[0]==='"'&&u[u.length-1]==='"'){let y=u.slice(1,-1),b=!1;for(let A=0;A<y.length;A++){if(y[A]==='"'){b=!0;break}y[A]==="\\"&&A+1<y.length&&A++}b||(u=y,f=!0,d=!1)}}if(u==="")return{type:w.WORD,value:"",start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d};let g=ai.get(u);if(!f&&g!==void 0)return{type:g,value:u,start:t,end:o,line:n,column:r};if(!m){let y=Ga(u);if(y>0&&ja(u.slice(0,y)))return{type:w.ASSIGNMENT_WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}return/^[0-9]+$/.test(u)?{type:w.NUMBER,value:u,start:t,end:o,line:n,column:r}:hd(u)?{type:w.NAME,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}:{type:w.WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}readHeredocContent(){for(;this.pendingHeredocs.length>0;){let t=this.pendingHeredocs.shift();if(!t)break;let n=this.pos,r=this.line,s=this.column,i="",o=!1;for(;this.pos<this.input.length;){let a="",l="",c="";for(;;){for(a="";this.pos<this.input.length&&this.input[this.pos]!==`
38
+ `){o+=2,l=1,c++;continue}u+=m+b,o+=2,l+=2;continue}}else{u+=m+b,o+=2,l+=2;continue}}if(m==="$"&&o+1<i&&s[o+1]==="("&&!p){u+=m,o++,l++,u+=s[o],o++,l++;let b=1,A=!1,k=!1,v=0,$=!1,D="",x=[],C=s[o]==="("&&!this.dollarDparenIsSubshell(o),I=C?1:0;for(;b>0&&o<i;){let W=s[o];if(u+=W,A)W==="'"&&(A=!1);else if(k)W==="\\"&&o+1<i?(u+=s[o+1],o++,l++):W==='"'&&(k=!1);else{if(W==="("&&s[o+1]==="("?I++:W===")"&&s[o+1]===")"&&I>0&&I--,I===0&&W==="<"&&s[o+1]==="<"&&s[o+2]!=="<"){let Z=o+2,R=!1;for(s[Z]==="-"&&(R=!0,Z++);s[Z]===" "||s[Z]===" ";)Z++;let{delim:V,endPos:z,unclosedQuote:O,unclosedSubstitution:_}=Gr(s,Z);if(O)throw new Je(`unexpected EOF while looking for matching \`${O}'`,c,l);if(_)throw new Je("unexpected EOF while looking for matching `)'",c,l);if(V.length>0){u+=s.slice(o+1,z),l+=z-o,x.push({delim:V,stripTabs:R}),o=z;continue}}if(W===`
39
+ `&&x.length>0){c++,l=0;let Z=o+1;for(let{delim:R,stripTabs:V}of x)for(;!(Z>=i);){let z=s.indexOf(`
40
+ `,Z);z===-1&&(z=i);let O=s.slice(Z,z),_=V?O.replace(/^\t+/,""):O;u+=s.slice(Z,Math.min(z+1,i)),z<i&&c++;let M=z>=i;if(Z=z+1,_===R||M)break}x.length=0,l=0,o=Math.min(Z,i);continue}if(W==="'")A=!0,D="";else if(W==='"')k=!0,D="";else if(W==="\\"&&o+1<i)u+=s[o+1],o++,l++,D="";else if(W==="$"&&o+1<i&&s[o+1]==="{"){o++,l++,u+=s[o],o++,l++;let Z=1,R=!1,V=!1;for(;Z>0&&o<i;){let z=s[o];if(z==="\\"&&o+1<i&&!R){u+=z,o++,l++,u+=s[o],o++,l++;continue}u+=z,R?z==="'"&&(R=!1):V?z==='"'&&(V=!1):z==="'"?R=!0:z==='"'?V=!0:z==="{"?Z++:z==="}"&&Z--,z===`
41
+ `?(c++,l=0):l++,o++}D="";continue}else if(W==="#"&&!C&&(D===""||/\s/.test(s[o-1]||""))){for(;o+1<i&&s[o+1]!==`
42
+ `;)o++,l++,u+=s[o];D=""}else/[a-zA-Z_]/.test(W)?D+=W:(D==="case"?(v++,$=!1):D==="in"&&v>0?$=!0:D==="esac"&&v>0&&(v--,$=!1),D="",W==="("?o>0&&s[o-1]==="$"?b++:$||b++:W===")"?$?$=!1:b--:W===";"&&v>0&&(o+1<i&&s[o+1]===";"||o+1<i&&s[o+1]==="&")&&($=!0))}W===`
43
+ `&&(c++,l=0,D=""),o++,l++}continue}if(m==="$"&&o+1<i&&s[o+1]==="["&&!p){u+=m,o++,l++,u+=s[o],o++,l++;let b=1;for(;b>0&&o<i;){let A=s[o];u+=A,A==="["?b++:A==="]"?b--:A===`
44
+ `&&(c++,l=0),o++,l++}continue}if(m==="$"&&o+1<i&&s[o+1]==="{"&&!p){u+=m,o++,l++,u+=s[o],o++,l++;let b=1,A=!1,k=!1,v=c,$=l,D=c,x=l;for(;b>0&&o<i;){let C=s[o];if(C==="\\"&&o+1<i&&s[o+1]===`
45
+ `){o+=2,c++,l=1;continue}if(C==="\\"&&o+1<i&&!A){u+=C,o++,l++,u+=s[o],o++,l++;continue}u+=C,A?C==="'"&&(A=!1):k?C==='"'&&(k=!1):C==="'"?(A=!0,v=c,$=l):C==='"'?(k=!0,D=c,x=l):C==="{"?b++:C==="}"&&b--,C===`
46
+ `&&(c++,l=0),o++,l++}if(A)throw new Je("unexpected EOF while looking for matching `''",v,$);if(k)throw new Je("unexpected EOF while looking for matching `\"'",D,x);continue}if(m==="$"&&o+1<i&&!p){let b=s[o+1];if(b==="#"||b==="?"||b==="$"||b==="!"||b==="@"||b==="*"||b==="-"||b>="0"&&b<="9"){u+=m+b,o+=2,l+=2;continue}}if(m==="`"&&!p){for(u+=m,o++,l++;o<i&&s[o]!=="`";){let b=s[o];u+=b,b==="\\"&&o+1<i&&(u+=s[o+1],o++,l++),b===`
47
+ `&&(c++,l=0),o++,l++}o<i&&(u+=s[o],o++,l++);continue}u+=m,o++,m===`
48
+ `?(c++,l=1):l++}if(this.pos=o,this.column=l,this.line=c,E&&y&&(u=s[t]+u,f=!1,d=!1),p||h){let m=p?"'":'"';throw new Je(`unexpected EOF while looking for matching \`${m}'`,n,r)}if(!y&&u.length>=2){if(u[0]==="'"&&u[u.length-1]==="'"){let m=u.slice(1,-1);!m.includes("'")&&!m.includes('"')&&(u=m,f=!0,d=!0)}else if(u[0]==='"'&&u[u.length-1]==='"'){let m=u.slice(1,-1),b=!1;for(let A=0;A<m.length;A++){if(m[A]==='"'){b=!0;break}m[A]==="\\"&&A+1<m.length&&A++}b||(u=m,f=!0,d=!1)}}if(u==="")return{type:w.WORD,value:"",start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d};let g=gi.get(u);if(!f&&g!==void 0)return{type:g,value:u,start:t,end:o,line:n,column:r};if(!y){let m=nl(u);if(m>0&&tl(u.slice(0,m)))return{type:w.ASSIGNMENT_WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}return/^[0-9]+$/.test(u)?{type:w.NUMBER,value:u,start:t,end:o,line:n,column:r}:Pd(u)?{type:w.NAME,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}:{type:w.WORD,value:u,start:t,end:o,line:n,column:r,quoted:f,singleQuoted:d}}readHeredocContent(){for(;this.pendingHeredocs.length>0;){let t=this.pendingHeredocs.shift();if(!t)break;let n=this.pos,r=this.line,s=this.column,i="",o=!1;for(;this.pos<this.input.length;){let a="",l="",c="";for(;;){for(a="";this.pos<this.input.length&&this.input[this.pos]!==`
49
49
  `;)a+=this.input[this.pos],this.pos++,this.column++;let f=0;for(let d=a.length-1;a[d]==="\\";d-=1)f+=1;if(c+=a,t.quoted||f%2===0||this.pos+1>=this.input.length)break;c=c.slice(0,-1),l+=`${a}
50
50
  `,this.pos++,this.line++,this.column=1}if((t.stripTabs?c.replace(/^\t+/,""):c)===t.delimiter){o=!0,this.pos<this.input.length&&this.input[this.pos]===`
51
51
  `&&(this.pos++,this.line++,this.column=1);break}if(i+=l,i+=a,this.pos<this.input.length&&this.input[this.pos]===`
52
52
  `?(i+=`
53
53
  `,this.pos++,this.line++,this.column=1):a.length>0&&(i+=`
54
- `),i.length>this.maxHeredocSize)throw new Ye(`Heredoc size limit exceeded (${this.maxHeredocSize} bytes)`,r,s)}this.tokens.push({type:w.HEREDOC_CONTENT,value:i,start:n,end:this.pos,line:r,column:s,heredocTerminated:o})}}readHeredocDelimiterToken(t,n,r,s){let i=this.input,{delim:o,endPos:a,quoted:l,unclosedQuote:c,unclosedSubstitution:u}=Vr(i,t);if(c)throw new Ye(`unexpected EOF while looking for matching \`${c}'`,n,r);if(u)throw new Ye("unexpected EOF while looking for matching `)'",n,r);if(a===t)throw new Ye("Expected here-document delimiter",n,r);let f=n,d=r;for(let p=t;p<a;p++)i[p]===`
54
+ `),i.length>this.maxHeredocSize)throw new Je(`Heredoc size limit exceeded (${this.maxHeredocSize} bytes)`,r,s)}this.tokens.push({type:w.HEREDOC_CONTENT,value:i,start:n,end:this.pos,line:r,column:s,heredocTerminated:o})}}readHeredocDelimiterToken(t,n,r,s){let i=this.input,{delim:o,endPos:a,quoted:l,unclosedQuote:c,unclosedSubstitution:u}=Gr(i,t);if(c)throw new Je(`unexpected EOF while looking for matching \`${c}'`,n,r);if(u)throw new Je("unexpected EOF while looking for matching `)'",n,r);if(a===t)throw new Je("Expected here-document delimiter",n,r);let f=n,d=r;for(let p=t;p<a;p++)i[p]===`
55
55
  `?(f+=1,d=1):d+=1;return this.pos=a,this.line=f,this.column=d,this.pendingHeredocs.push({delimiter:o,stripTabs:s,quoted:l}),{type:w.WORD,value:i.slice(t,a),start:t,end:a,line:n,column:r,quoted:l,heredocDelimiter:o}}isWordCharFollowing(t){if(t>=this.input.length)return!1;let n=this.input[t];return!(n===" "||n===" "||n===`
56
56
  `||n===";"||n==="&"||n==="|"||n==="("||n===")"||n==="<"||n===">")}readWordWithBraceExpansion(t,n,r){let s=this.input,i=s.length,o=t,a=r;for(;o<i;){let c=s[o];if(c===" "||c===" "||c===`
57
57
  `||c===";"||c==="&"||c==="|"||c==="("||c===")"||c==="<"||c===">")break;if(c==="{"){if(this.scanBraceExpansion(o)!==null){let f=1;for(o++,a++;o<i&&f>0;)s[o]==="{"?f++:s[o]==="}"&&f--,o++,a++;continue}o++,a++;continue}if(c==="}"){o++,a++;continue}if(c==="$"&&o+1<i&&s[o+1]==="("){o++,a++,o++,a++;let u=1;for(;u>0&&o<i;)s[o]==="("?u++:s[o]===")"&&u--,o++,a++;continue}if(c==="$"&&o+1<i&&s[o+1]==="{"){o++,a++,o++,a++;let u=1;for(;u>0&&o<i;)s[o]==="{"?u++:s[o]==="}"&&u--,o++,a++;continue}if(c==="`"){for(o++,a++;o<i&&s[o]!=="`";)s[o]==="\\"&&o+1<i?(o+=2,a+=2):(o++,a++);o<i&&(o++,a++);continue}o++,a++}let l=s.slice(t,o);return this.pos=o,this.column=a,{type:w.WORD,value:l,start:t,end:o,line:n,column:r,quoted:!1,singleQuoted:!1}}scanBraceExpansion(t){let n=this.input,r=n.length,s=t+1,i=1,o=!1,a=!1;for(;s<r&&i>0;){let l=n[s];if(l==="{")i++,s++;else if(l==="}")i--,s++;else if(l===","&&i===1)o=!0,s++;else if(l==="."&&s+1<r&&n[s+1]===".")a=!0,s+=2;else{if(l===" "||l===" "||l===`
@@ -62,213 +62,229 @@ Gid: ${s} ${s} ${s} ${s}
62
62
  `&&(l=!0),s++;continue}if(c==="'"){o=!0,s++;continue}if(c==='"'){a=!0,s++;continue}if(c==="\\"){s+=2;continue}if(c===`
63
63
  `&&(l=!0),c==="("){i++,s++;continue}if(c===")"){if(i--,i===1){let u=s+1;if(u<r&&n[u]===")")return!1;let f=u,d=!1;for(;f<r&&(n[f]===" "||n[f]===" "||n[f]===`
64
64
  `);)d=!0,f++;if(d&&f<r&&n[f]===")"||l)return!0}if(i===0)return!1;s++;continue}s++}return!1}dparenClosesWithSpacedParens(t){let n=this.input,r=n.length,s=t,i=2,o=!1,a=!1;for(;s<r&&i>0;){let l=n[s];if(o){l==="'"&&(o=!1),s++;continue}if(a){if(l==="\\"){s+=2;continue}l==='"'&&(a=!1),s++;continue}if(l==="'"){o=!0,s++;continue}if(l==='"'){a=!0,s++;continue}if(l==="\\"){s+=2;continue}if(l==="("){i++,s++;continue}if(l===")"){if(i--,i===1){let c=s+1;if(c<r&&n[c]===")")return!1;let u=c,f=!1;for(;u<r&&(n[u]===" "||n[u]===" "||n[u]===`
65
- `);)f=!0,u++;if(f&&u<r&&n[u]===")")return!0}if(i===0)return!1;s++;continue}if(i===1&&(l==="|"&&s+1<r&&n[s+1]==="|"||l==="&"&&s+1<r&&n[s+1]==="&"||l==="|"&&s+1<r&&n[s+1]!=="|"))return!0;s++}return!1}};var ci=1e6,tr=1e5,md=1e6,Za=200,Ce;(function(e){e[e.Default=0]="Default",e[e.Assignment=1]="Assignment",e[e.NoBraceExpansion=2]="NoBraceExpansion",e[e.Regex=4]="Regex"})(Ce||(Ce={}));var Qa=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),Ka=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS]),Xa=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),ke=class extends Error{line;column;token;constructor(t,n,r,s=void 0){super(`Parse error at ${n}:${r}: ${t}`),this.line=n,this.column=r,this.token=s,this.name="ParseException"}},Ur=class{iterations=0;tokens=0;depth=0;reset(){this.iterations=0,this.tokens=0,this.depth=0}chargeIteration(t,n){if(this.iterations++,this.iterations>md)throw new ke("Maximum parse iterations exceeded (possible infinite loop)",t,n)}chargeTokens(t,n=1,r=1){if(this.tokens+=t,this.tokens>tr)throw new ke(`Too many tokens: cumulative count exceeds limit of ${tr}`,n,r)}enter(t,n){if(this.depth++,this.depth>Za)throw this.depth--,new ke(`Maximum parser nesting depth exceeded (${Za})`,t,n);let r=!0;return()=>{r&&(r=!1,this.depth--)}}};function pe(e,t){for(;t<e.length;){if(e[t]==="\\"&&e[t+1]===`
66
- `){t+=2;continue}if(/\s/.test(e[t])){t++;continue}break}return t}var qr=["=","+=","-=","*=","/=","%=","<<=",">>=","&=","|=","^="];function nr(e){if(e.includes("#")){let n=e.split("#");if(n.length!==2)return Number.NaN;let[r,s]=n;if(!/^\d+$/.test(r)||s.length===0)return Number.NaN;let i=Number.parseInt(r,10);if(i<2||i>64)return Number.NaN;let o=0;for(let a of s){let l;if(/[0-9]/.test(a))l=a.charCodeAt(0)-48;else if(/[a-z]/.test(a))l=a.charCodeAt(0)-97+10;else if(/[A-Z]/.test(a))l=a.charCodeAt(0)-65+(i<=36?10:36);else if(a==="@")l=62;else if(a==="_")l=63;else return Number.NaN;if(l>=i)return Number.NaN;if(o=o*i+l,o>Number.MAX_SAFE_INTEGER)return Number.MAX_SAFE_INTEGER}return o}if(e.startsWith("0x")||e.startsWith("0X")){let n=Number.parseInt(e.slice(2),16);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}if(e.startsWith("0")&&e.length>1&&/^[0-9]+$/.test(e)){if(/[89]/.test(e))return Number.NaN;let n=Number.parseInt(e,8);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}let t=Number.parseInt(e,10);return t>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:t}function Ya(e,t,n,r){if(n.slice(r,r+3)!=="$((")return null;let s=r+3,i=1,o=s;for(;s<n.length-1&&i>0;)n[s]==="("&&n[s+1]==="("?(i++,s+=2):n[s]===")"&&n[s+1]===")"?(i--,i>0&&(s+=2)):s++;let a=n.slice(o,s),{expr:l}=e(t,a,0);return s+=2,{expr:{type:"ArithNested",expression:l},pos:s}}function Ja(e,t){if(e.slice(t,t+2)!=="$'")return null;let n=t+2,r="";for(;n<e.length&&e[n]!=="'";)if(e[n]==="\\"&&n+1<e.length){let i=e[n+1];switch(i){case"n":r+=`
67
- `;break;case"t":r+=" ";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"'":r+="'";break;default:r+=i}n+=2}else r+=e[n],n++;e[n]==="'"&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function el(e,t){if(e.slice(t,t+2)!=='$"')return null;let n=t+2,r="";for(;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(r+=e[n+1],n+=2):(r+=e[n],n++);e[n]==='"'&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function yd(e){let t="",n=0;for(;n<e.length;)if(e[n]==='"'){for(n++;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);n<e.length&&n++}else t+=e[n],n++;return t}function re(e,t){let n=yd(t),{expr:r,pos:s}=Ln(e,n,0),i=pe(n,s);if(i<n.length){let o=t.slice(i).trim();if(o)return{type:"ArithmeticExpression",originalText:t,expression:{type:"ArithSyntaxError",errorToken:o,message:`${o}: syntax error: invalid arithmetic operator (error token is "${o}")`}}}return{type:"ArithmeticExpression",expression:r,originalText:t}}function qe(e,t){return{expr:{type:"ArithSyntaxError",errorToken:e,message:`syntax error: operand expected (error token is "${e}")`},pos:t}}function je(e,t){return pe(e,t)>=e.length}function Ln(e,t,n){return gd(e,t,n)}function gn(e,t,n){return e.withDepth(()=>Ln(e,t,n))}function gd(e,t,n){let{expr:r,pos:s}=rr(e,t,n);for(s=pe(t,s);t[s]===",";){if(s++,je(t,s))return qe(",",s);let{expr:o,pos:a}=rr(e,t,s);r={type:"ArithBinary",operator:",",left:r,right:o},s=pe(t,a)}return{expr:r,pos:s}}function rr(e,t,n){let{expr:r,pos:s}=wd(e,t,n);if(s=pe(t,s),t[s]==="?"){s++;let{expr:i,pos:o}=gn(e,t,s);if(s=pe(t,o),t[s]===":"){s++;let{expr:a,pos:l}=gn(e,t,s);return{expr:{type:"ArithTernary",condition:r,consequent:i,alternate:a},pos:l}}}return{expr:r,pos:s}}function wd(e,t,n){let{expr:r,pos:s}=tl(e,t,n);for(;s=pe(t,s),t.slice(s,s+2)==="||";){if(s+=2,je(t,s))return qe("||",s);let{expr:o,pos:a}=tl(e,t,s);r={type:"ArithBinary",operator:"||",left:r,right:o},s=a}return{expr:r,pos:s}}function tl(e,t,n){let{expr:r,pos:s}=nl(e,t,n);for(;s=pe(t,s),t.slice(s,s+2)==="&&";){if(s+=2,je(t,s))return qe("&&",s);let{expr:o,pos:a}=nl(e,t,s);r={type:"ArithBinary",operator:"&&",left:r,right:o},s=a}return{expr:r,pos:s}}function nl(e,t,n){let{expr:r,pos:s}=rl(e,t,n);for(;s=pe(t,s),t[s]==="|"&&t[s+1]!=="|";){if(s++,je(t,s))return qe("|",s);let{expr:o,pos:a}=rl(e,t,s);r={type:"ArithBinary",operator:"|",left:r,right:o},s=a}return{expr:r,pos:s}}function rl(e,t,n){let{expr:r,pos:s}=sl(e,t,n);for(;s=pe(t,s),t[s]==="^";){if(s++,je(t,s))return qe("^",s);let{expr:o,pos:a}=sl(e,t,s);r={type:"ArithBinary",operator:"^",left:r,right:o},s=a}return{expr:r,pos:s}}function sl(e,t,n){let{expr:r,pos:s}=il(e,t,n);for(;s=pe(t,s),t[s]==="&"&&t[s+1]!=="&";){if(s++,je(t,s))return qe("&",s);let{expr:o,pos:a}=il(e,t,s);r={type:"ArithBinary",operator:"&",left:r,right:o},s=a}return{expr:r,pos:s}}function il(e,t,n){let{expr:r,pos:s}=ol(e,t,n);for(;s=pe(t,s),t.slice(s,s+2)==="=="||t.slice(s,s+2)==="!=";){let i=t.slice(s,s+2);if(s+=2,je(t,s))return qe(i,s);let{expr:o,pos:a}=ol(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function ol(e,t,n){let{expr:r,pos:s}=ui(e,t,n);for(;;)if(s=pe(t,s),t.slice(s,s+2)==="<="||t.slice(s,s+2)===">="){let i=t.slice(s,s+2);if(s+=2,je(t,s))return qe(i,s);let{expr:o,pos:a}=ui(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else if(t[s]==="<"||t[s]===">"){let i=t[s];if(s++,je(t,s))return qe(i,s);let{expr:o,pos:a}=ui(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function ui(e,t,n){let{expr:r,pos:s}=al(e,t,n);for(;s=pe(t,s),t.slice(s,s+2)==="<<"||t.slice(s,s+2)===">>";){let i=t.slice(s,s+2);if(s+=2,je(t,s))return qe(i,s);let{expr:o,pos:a}=al(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function al(e,t,n){let{expr:r,pos:s}=ll(e,t,n);for(;s=pe(t,s),(t[s]==="+"||t[s]==="-")&&t[s+1]!==t[s];){let i=t[s];if(s++,je(t,s))return qe(i,s);let{expr:o,pos:a}=ll(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function ll(e,t,n){let{expr:r,pos:s}=jr(e,t,n);for(;;)if(s=pe(t,s),t[s]==="*"&&t[s+1]!=="*"){if(s++,je(t,s))return qe("*",s);let{expr:o,pos:a}=jr(e,t,s);r={type:"ArithBinary",operator:"*",left:r,right:o},s=a}else if(t[s]==="/"||t[s]==="%"){let i=t[s];if(s++,je(t,s))return qe(i,s);let{expr:o,pos:a}=jr(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function jr(e,t,n){let{expr:r,pos:s}=fi(e,t,n),i=pe(t,s);if(t.slice(i,i+2)==="**"){if(i+=2,je(t,i))return qe("**",i);let{expr:a,pos:l}=e.withDepth(()=>jr(e,t,i));return{expr:{type:"ArithBinary",operator:"**",left:r,right:a},pos:l}}return{expr:r,pos:s}}function fi(e,t,n){let r=pe(t,n);if(t.slice(r,r+2)==="++"||t.slice(r,r+2)==="--"){let s=t.slice(r,r+2);r+=2;let{expr:i,pos:o}=e.withDepth(()=>fi(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}if(t[r]==="+"||t[r]==="-"||t[r]==="!"||t[r]==="~"){let s=t[r];r++;let{expr:i,pos:o}=e.withDepth(()=>fi(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}return bd(e,t,r)}function Ed(e,t){let n=e[t];return n==="$"||n==="`"}function bd(e,t,n){let{expr:r,pos:s}=cl(e,t,n,!1),i=[r];for(;Ed(t,s);){let{expr:a,pos:l}=cl(e,t,s,!0);i.push(a),s=l}i.length>1&&(r={type:"ArithConcat",parts:i});let o;if(t[s]==="["&&r.type==="ArithConcat"){s++;let{expr:a,pos:l}=gn(e,t,s);o=a,s=l,t[s]==="]"&&s++}if(o&&r.type==="ArithConcat"&&(r={type:"ArithDynamicElement",nameExpr:r,subscript:o},o=void 0),s=pe(t,s),r.type==="ArithConcat"||r.type==="ArithVariable"||r.type==="ArithDynamicElement"){for(let a of qr)if(t.slice(s,s+a.length)===a&&t.slice(s,s+a.length+1)!=="=="){s+=a.length;let{expr:l,pos:c}=e.withDepth(()=>rr(e,t,s));return r.type==="ArithDynamicElement"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r.nameExpr,subscript:r.subscript,value:l},pos:c}:r.type==="ArithConcat"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r,value:l},pos:c}:{expr:{type:"ArithAssignment",operator:a,variable:r.name,value:l},pos:c}}}if(t.slice(s,s+2)==="++"||t.slice(s,s+2)==="--"){let a=t.slice(s,s+2);return s+=2,{expr:{type:"ArithUnary",operator:a,operand:r,prefix:!1},pos:s}}return{expr:r,pos:s}}function cl(e,t,n,r=!1){let s=pe(t,n),i=Ya(gn,e,t,s);if(i)return i;let o=Ja(t,s);if(o)return o;let a=el(t,s);if(a)return a;if(t.slice(s,s+2)==="$("&&t[s+2]!=="("){s+=2;let c=1,u=s;for(;s<t.length&&c>0;)t[s]==="("?c++:t[s]===")"&&c--,c>0&&s++;let f=t.slice(u,s);return s++,{expr:{type:"ArithCommandSubst",command:f},pos:s}}if(t[s]==="`"){s++;let c=s;for(;s<t.length&&t[s]!=="`";)s++;let u=t.slice(c,s);return t[s]==="`"&&s++,{expr:{type:"ArithCommandSubst",command:u},pos:s}}if(t[s]==="("){s++;let{expr:c,pos:u}=gn(e,t,s);return s=pe(t,u),t[s]===")"&&s++,{expr:{type:"ArithGroup",expression:c},pos:s}}if(t[s]==="'"){s++;let c="";for(;s<t.length&&t[s]!=="'";)c+=t[s],s++;t[s]==="'"&&s++;let u=Number.parseInt(c,10);return{expr:{type:"ArithSingleQuote",content:c,value:Number.isNaN(u)?0:u},pos:s}}if(t[s]==='"'){s++;let c="";for(;s<t.length&&t[s]!=='"';)t[s]==="\\"&&s+1<t.length?(c+=t[s+1],s+=2):(c+=t[s],s++);t[s]==='"'&&s++;let u=c.trim();if(!u)return{expr:{type:"ArithNumber",value:0},pos:s};let{expr:f}=gn(e,u,0);return{expr:f,pos:s}}if(/[0-9]/.test(t[s])){let c="",u=!1,f=!1;for(;s<t.length;){let p=t[s];if(u)if(/[0-9a-zA-Z@_]/.test(p))c+=p,s++;else break;else if(p==="#")u=!0,c+=p,s++;else if(c==="0"&&(p==="x"||p==="X")&&s+1<t.length&&/[0-9a-fA-F]/.test(t[s+1]))f=!0,c+=p,s++;else if(f&&/[0-9a-fA-F]/.test(p))c+=p,s++;else if(!f&&/[0-9]/.test(p))c+=p,s++;else break}if(s<t.length&&/[a-zA-Z_]/.test(t[s])){let p=c;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)p+=t[s],s++;return{expr:{type:"ArithSyntaxError",errorToken:p,message:`${p}: value too great for base (error token is "${p}")`},pos:s}}if(t[s]==="."&&/[0-9]/.test(t[s+1]))throw new ae(`${c}.${t[s+1]}...: syntax error: invalid arithmetic operator`);if(t[s]==="["){let p=t.slice(s).trim();return{expr:{type:"ArithNumberSubscript",number:c,errorToken:p},pos:t.length}}return{expr:{type:"ArithNumber",value:nr(c)},pos:s}}if(t[s]==="$"&&t[s+1]==="{"){let c=s+2,u=1,f=c;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;let d=t.slice(c,f),p=f+1;if(t[p]==="#"){let h=p+1;for(;h<t.length&&/[0-9a-zA-Z@_]/.test(t[h]);)h++;let m=t.slice(p+1,h);return{expr:{type:"ArithDynamicBase",baseExpr:d,value:m},pos:h}}if(/[0-9]/.test(t[p])||t[p]==="x"||t[p]==="X"){let h=p;if(t[p]==="x"||t[p]==="X")for(h++;h<t.length&&/[0-9a-fA-F]/.test(t[h]);)h++;else for(;h<t.length&&/[0-9]/.test(t[h]);)h++;let m=t.slice(p,h);return{expr:{type:"ArithDynamicNumber",prefix:d,suffix:m},pos:h}}return s=p,{expr:{type:"ArithBracedExpansion",content:d},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[0-9]/.test(t[s+1])){s++;let c="";for(;s<t.length&&/[0-9]/.test(t[s]);)c+=t[s],s++;return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:!0},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[*@#?\-!$]/.test(t[s+1])){let c=t[s+1];return s+=2,{expr:{type:"ArithSpecialVar",name:c},pos:s}}let l=!1;if(t[s]==="$"&&s+1<t.length&&/[a-zA-Z_]/.test(t[s+1])&&(l=!0,s++),s<t.length&&/[a-zA-Z_]/.test(t[s])){let c="";for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)c+=t[s],s++;if(t[s]==="["&&!r){s++;let u;if(t[s]==="'"||t[s]==='"'){let d=t[s];for(s++,u="";s<t.length&&t[s]!==d;)u+=t[s],s++;t[s]===d&&s++,s=pe(t,s),t[s]==="]"&&s++}let f;if(u===void 0){let{expr:d,pos:p}=gn(e,t,s);f=d,s=p,t[s]==="]"&&s++}if(s=pe(t,s),t[s]==="["&&f)return{expr:{type:"ArithDoubleSubscript",array:c,index:f},pos:s};if(!r){for(let d of qr)if(t.slice(s,s+d.length)===d&&t.slice(s,s+d.length+1)!=="=="){s+=d.length;let{expr:p,pos:h}=e.withDepth(()=>rr(e,t,s));return{expr:{type:"ArithAssignment",operator:d,variable:c,subscript:f,stringKey:u,value:p},pos:h}}}return{expr:{type:"ArithArrayElement",array:c,index:f,stringKey:u},pos:s}}if(s=pe(t,s),!r){for(let u of qr)if(t.slice(s,s+u.length)===u&&t.slice(s,s+u.length+1)!=="=="){s+=u.length;let{expr:f,pos:d}=e.withDepth(()=>rr(e,t,s));return{expr:{type:"ArithAssignment",operator:u,variable:c,value:f},pos:d}}}return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:l},pos:s}}if(t[s]==="#"){let c=s+1;for(;c<t.length&&t[c]!==`
68
- `;)c++;let u=t.slice(s,c).trim()||"#";return{expr:{type:"ArithSyntaxError",errorToken:u,message:`${u}: syntax error: invalid arithmetic operator (error token is "${u}")`},pos:t.length}}return{expr:{type:"ArithNumber",value:0},pos:s}}var Gr=e=>{let t,n="";for(let r=0;r<e.length;r++){let s=e[r];if(s==="\\"&&t==='"'&&r+1<e.length){n+=s+e[r+1],r+=1;continue}if(s==="'"||s==='"'){t===s?t=void 0:t||(t=s),n+=s;continue}if(s==="\\"&&!t&&r+1<e.length){let i=e[r+1];n+=i==="$"||i==="`"?`\\${i}`:i,r+=1;continue}n+=s}return n};function Sd(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r<128){t+=String.fromCharCode(r),n++;continue}if((r&224)===192){if(n+1<e.length&&(e[n+1]&192)===128&&r>=194){let s=(r&31)<<6|e[n+1]&63;t+=String.fromCharCode(s),n+=2;continue}t+=String.fromCharCode(r),n++;continue}if((r&240)===224){if(n+2<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128){if(r===224&&e[n+1]<160){t+=String.fromCharCode(r),n++;continue}let s=(r&15)<<12|(e[n+1]&63)<<6|e[n+2]&63;if(s>=55296&&s<=57343){t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(s),n+=3;continue}t+=String.fromCharCode(r),n++;continue}if((r&248)===240&&r<=244){if(n+3<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128&&(e[n+3]&192)===128){if(r===240&&e[n+1]<144){t+=String.fromCharCode(r),n++;continue}let s=(r&7)<<18|(e[n+1]&63)<<12|(e[n+2]&63)<<6|e[n+3]&63;if(s>1114111){t+=String.fromCharCode(r),n++;continue}t+=String.fromCodePoint(s),n+=4;continue}t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(r),n++}return t}function dl(e,t,n){let r=n+1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;return r}function di(e,t,n,r,s){let i=1,o=n+1;for(;o<t.length&&i>0;)t[o]===r?i++:t[o]===s&&i--,i>0&&o++;return i===0?o:-1}function wn(e,t,n){let r=n,s=1;for(;r<t.length&&s>0;){let i=t[r];if(i==="\\"&&r+1<t.length){r+=2;continue}if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++;continue}i==="{"?s++:i==="}"&&s--,s>0&&r++}return r}function pl(e,t,n){let r=n,s=!1;for(;r<t.length;){let i=t[r];if(i==="/"&&s||i==="}")break;if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1,s=!0;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++,s=!0;continue}i==="\\"?(r+=2,s=!0):(r++,s=!0)}return r}function hl(e,t,n){let r=n,s="";for(;r<t.length;){let i=t[r];if(i==="*"||i==="?")s+=i,r++;else if(i==="["){let o=Ad(t,r);o===-1?(s+=i,r++):(s+=t.slice(r,o+1),r=o+1)}else break}return{pattern:s,endIndex:r}}function Ad(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){let r=e[n];if(r==="\\"&&n+1<e.length){let s=e[n+1];if(s==='"'||s==="'")return-1;n+=2;continue}if(r==="]")return n;if(r==='"'||r==="$"||r==="`")return-1;if(r==="'"){let s=e.indexOf("'",n+1);if(s!==-1){n=s+1;continue}}if(r==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){n=s+2;continue}}if(r==="["&&n+1<e.length&&(e[n+1]==="."||e[n+1]==="=")){let i=`${e[n+1]}]`,o=e.indexOf(i,n+2);if(o!==-1){n=o+2;continue}}n++}return-1}function ml(e,t,n){let r="",s=n;for(;s<t.length&&t[s]!=="'";){let i=t[s];if(i==="\\"&&s+1<t.length)switch(t[s+1]){case"n":r+=`
69
- `,s+=2;break;case"t":r+=" ",s+=2;break;case"r":r+="\r",s+=2;break;case"\\":r+="\\",s+=2;break;case"'":r+="'",s+=2;break;case'"':r+='"',s+=2;break;case"a":r+="\x07",s+=2;break;case"b":r+="\b",s+=2;break;case"e":case"E":r+="\x1B",s+=2;break;case"f":r+="\f",s+=2;break;case"v":r+="\v",s+=2;break;case"x":{let a=[],l=s;for(;l+1<t.length&&t[l]==="\\"&&t[l+1]==="x";){let c=t.slice(l+2,l+4),u=parseInt(c,16);if(!Number.isNaN(u)&&c.length>0)a.push(u),l+=2+c.length;else break}a.length>0?(r+=Sd(a),s=l):(r+="\\x",s+=2);break}case"u":{let a=t.slice(s+2,s+6),l=parseInt(a,16);Number.isNaN(l)?(r+="\\u",s+=2):(r+=String.fromCharCode(l),s+=6);break}case"c":{if(s+2<t.length){let l=t[s+2].charCodeAt(0)&31;r+=String.fromCharCode(l),s+=3}else r+="\\c",s+=2;break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let a="",l=s+1;for(;l<t.length&&l<s+4&&/[0-7]/.test(t[l]);)a+=t[l],l++;let c=parseInt(a,8);r+=String.fromCharCode(c),s=l;break}default:r+=i,s++}else r+=i,s++}return s<t.length&&t[s]==="'"&&s++,{part:T.literal(r),endIndex:s}}function pi(e,t){let n=t.trim();return n===""?{type:"ArithmeticExpression",expression:{type:"ArithNumber",value:0}}:re(e,n)}function fl(e){let t=[],n="",r=0;for(let s=0;s<e.length;s++){let i=e[s];i==="{"?(r++,n+=i):i==="}"?(r--,n+=i):i===","&&r===0?(t.push(n),n=""):n+=i}return t.push(n),t}function yl(e,t,n,r){let s=di(e,t,n,"{","}");if(s===-1)return null;let i=t.slice(n+1,s),o=i.match(/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/);if(o)return{part:{type:"BraceExpansion",items:[{type:"Range",start:Number.parseInt(o[1],10),end:Number.parseInt(o[2],10),step:o[3]?Number.parseInt(o[3],10):void 0,startStr:o[1],endStr:o[2]}]},endIndex:s+1};let a=i.match(/^([a-zA-Z])\.\.([a-zA-Z])(?:\.\.(-?\d+))?$/);return a?{part:{type:"BraceExpansion",items:[{type:"Range",start:a[1],end:a[2],step:a[3]?Number.parseInt(a[3],10):void 0}]},endIndex:s+1}:i.includes(",")&&r?{part:{type:"BraceExpansion",items:fl(i).map(u=>e.withDepth(()=>({type:"Word",word:T.word(r(e,u,!1,!1,!1))})))},endIndex:s+1}:i.includes(",")?{part:{type:"BraceExpansion",items:fl(i).map(u=>({type:"Word",word:T.word([T.literal(u)])}))},endIndex:s+1}:null}function hi(e,t){let n="";for(let r of t.parts)switch(r.type){case"Literal":n+=r.value;break;case"SingleQuoted":n+=`'${r.value}'`;break;case"Escaped":n+=r.value;break;case"DoubleQuoted":n+='"';for(let s of r.parts)s.type==="Literal"||s.type==="Escaped"?n+=s.value:s.type==="ParameterExpansion"&&(n+=`\${${s.parameter}}`);n+='"';break;case"ParameterExpansion":n+=`\${${r.parameter}}`;break;case"Glob":n+=r.pattern;break;case"TildeExpansion":n+="~",r.user&&(n+=r.user);break;case"BraceExpansion":{n+="{";let s=[];for(let i of r.items)if(i.type==="Range"){let o=i.startStr??String(i.start),a=i.endStr??String(i.end);i.step!==void 0?s.push(`${o}..${a}..${i.step}`):s.push(`${o}..${a}`)}else s.push(hi(e,i.word));s.length===1&&r.items[0].type==="Range"?n+=s[0]:n+=s.join(","),n+="}";break}default:n+=r.type}return n}function gl(e,t){return{[w.LESS]:"<",[w.GREAT]:">",[w.DGREAT]:">>",[w.LESSAND]:"<&",[w.GREATAND]:">&",[w.LESSGREAT]:"<>",[w.CLOBBER]:">|",[w.TLESS]:"<<<",[w.AND_GREAT]:"&>",[w.AND_DGREAT]:"&>>",[w.DLESS]:"<",[w.DLESSDASH]:"<"}[t]||">"}function sr(e){let t=e.current(),n=t.type;if(n===w.NUMBER){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:Ka.has(r.type)}if(n===w.FD_VARIABLE){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:Xa.has(r.type)}return!e.isProcessSubstitutionStart()&&Qa.has(n)}function Hr(e){let t=null,n;e.check(w.NUMBER)?t=Number.parseInt(e.advance().value,10):e.check(w.FD_VARIABLE)&&(n=e.advance().value);let r=e.advance(),s=gl(e,r.type);if(r.type===w.DLESS||r.type===w.DLESSDASH)return vd(e,t,n,r.type===w.DLESSDASH);e.isWord()||e.error("Expected redirection target");let i=e.parseWord();return T.redirection(s,i,t,n)}function vd(e,t,n,r){e.isWord()||e.error("Expected here-document delimiter");let s=e.advance(),i=s.heredocDelimiter??s.value,o=s.quoted||!1,a=T.redirection(r?"<<-":"<<",T.hereDoc(i,T.word([]),r,o),t,n);return e.addPendingHeredoc(a,i,r,o),a}function yi(e){let t=e.getSourceLine(),n=[],r=null,s=[],i=[];for(;e.check(w.ASSIGNMENT_WORD)||sr(e);)e.checkIterationLimit(),e.check(w.ASSIGNMENT_WORD)?n.push(kd(e)):i.push(Hr(e));if(e.isWord())r=e.parseWord();else if(n.length>0&&(e.check(w.DBRACK_START)||e.check(w.DPAREN_START))){let a=e.advance();r=T.word([T.literal(a.value)])}for(;(!e.isStatementEnd()||e.check(w.RBRACE))&&!e.check(w.PIPE,w.PIPE_AMP);)if(e.checkIterationLimit(),sr(e))i.push(Hr(e));else if(e.check(w.ASSIGNMENT_WORD)){let a=e.advance(),l=a.value,c=l.endsWith("="),u=l.endsWith("=(");if((c||u)&&(u||e.check(w.LPAREN))){let f=u?l.slice(0,-2):l.slice(0,-1);u||e.expect(w.LPAREN);let d=mi(e);e.expect(w.RPAREN);let p=d.map(m=>hi(e,m)),h=`${f}=(${p.join(" ")})`;s.push(e.parseWordFromString(h,!1,!1,!0))}else{let f=e.parseWordFromString(l,a.quoted,a.singleQuoted,!0);s.push(e.parseAdjacentWordParts(f.parts,a.end,Ce.Assignment))}}else if(e.isWord())s.push(e.parseWord());else if(e.check(w.RBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.DBRACK_END)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LPAREN))e.error("syntax error near unexpected token `('");else break;let o=T.simpleCommand(r,s,n,i);return o.line=t,o}function kd(e){let t=e.expect(w.ASSIGNMENT_WORD),n=t.value,r=n.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);r||e.error(`Invalid assignment: ${n}`);let s=r[0],i,o=s.length;if(n[o]==="["){let f=0,d=o+1;for(;o<n.length;o++)if(n[o]==="[")f++;else if(n[o]==="]"&&(f--,f===0))break;f!==0&&e.error(`Invalid assignment: ${n}`),i=Gr(n.slice(d,o)),o++}let a=n[o]==="+";a&&o++,n[o]!=="="&&e.error(`Invalid assignment: ${n}`),o++;let l=n.slice(o);if(l==="("){let f=mi(e);e.expect(w.RPAREN);let d=i!==void 0?`${s}[${i}]`:s;return T.assignment(d,null,a,f)}if(l===""&&e.check(w.LPAREN)){let f=e.current();if(t.end===f.start){e.advance();let d=mi(e);e.expect(w.RPAREN);let p=i!==void 0?`${s}[${i}]`:s;return T.assignment(p,null,a,d)}}let c=l?e.parseWordFromString(l,t.quoted,t.singleQuoted,!0):null;t.end===e.current().start&&e.isProcessSubstitutionStart()&&(c=e.parseAdjacentWordParts(c?.parts??[],t.end,Ce.Assignment));let u=i!==void 0?`${s}[${i}]`:s;return T.assignment(u,c,a,null)}var xd=new Set([w.AMP,w.PIPE,w.PIPE_AMP,w.SEMICOLON,w.AND_AND,w.OR_OR,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND]);function mi(e){let t=[];for(e.skipNewlines();!e.check(w.RPAREN,w.EOF);)e.checkIterationLimit(),e.isWord()?t.push(e.parseWord()):xd.has(e.current().type)?e.error(`syntax error near unexpected token \`${e.current().value}'`):e.advance(),e.skipNewlines();return t}function gi(e,t){e.expect(w.IF);let n=[],r=e.parseCompoundList();e.expect(w.THEN);let s=e.parseCompoundList();if(s.length===0){let a=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${a}'`)}for(n.push({condition:r,body:s});e.check(w.ELIF);){e.advance();let a=e.parseCompoundList();e.expect(w.THEN);let l=e.parseCompoundList();if(l.length===0){let c=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${c}'`)}n.push({condition:a,body:l})}let i=null;e.check(w.ELSE)&&(e.advance(),i=e.parseCompoundList(),i.length===0&&e.error("syntax error near unexpected token `fi'")),e.expect(w.FI);let o=t?.skipRedirections?[]:e.parseOptionalRedirections();return T.ifNode(n,i,o)}function wi(e,t){let n=e.expect(w.FOR);if(e.check(w.DPAREN_START))return Pd(e,t,e.getSourceLine(n));e.isWord()||e.error("Expected variable name in for loop");let s=e.advance().value,i=null;if(e.skipNewlines(),e.check(w.IN))for(e.advance(),i=[];!e.check(w.SEMICOLON,w.NEWLINE,w.DO,w.EOF)&&e.isWord();)i.push(e.parseWord());e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines(),e.expect(w.DO);let o=e.parseCompoundList();e.expect(w.DONE);let a=t?.skipRedirections?[]:e.parseOptionalRedirections();return T.forNode(s,i,o,a)}function Pd(e,t,n){e.expect(w.DPAREN_START);let r=null,s=null,i=null,o=["","",""],a=0,l=0;for(;!e.check(w.DPAREN_END,w.EOF);){let f=e.advance();if(f.type===w.SEMICOLON&&l===0){if(a++,a>2)break}else f.value==="("&&l++,f.value===")"&&l--,o[a]+=f.value}e.expect(w.DPAREN_END),o[0].trim()&&(r=re(e,o[0].trim())),o[1].trim()&&(s=re(e,o[1].trim())),o[2].trim()&&(i=re(e,o[2].trim())),e.skipNewlines(),e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines();let c;e.check(w.LBRACE)?(e.advance(),c=e.parseCompoundList(),e.expect(w.RBRACE)):(e.expect(w.DO),c=e.parseCompoundList(),e.expect(w.DONE));let u=t?.skipRedirections?[]:e.parseOptionalRedirections();return{type:"CStyleFor",init:r,condition:s,update:i,body:c,redirections:u,line:n}}function Ei(e,t){e.expect(w.WHILE);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return T.whileNode(n,r,s)}function bi(e,t){e.expect(w.UNTIL);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return T.untilNode(n,r,s)}function Si(e,t){e.expect(w.CASE),e.isWord()||e.error("Expected word after 'case'");let n=e.parseWord();e.skipNewlines(),e.expect(w.IN),e.skipNewlines();let r=[];for(;!e.check(w.ESAC,w.EOF);){e.checkIterationLimit();let i=e.getPos(),o=Cd(e);if(o&&r.push(o),e.skipNewlines(),e.getPos()===i&&!o)break}e.expect(w.ESAC);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return T.caseNode(n,r,s)}function Cd(e){e.check(w.LPAREN)&&e.advance();let t=[];for(;e.isWord()&&(t.push(e.parseWord()),e.check(w.PIPE));)e.advance();if(t.length===0)return null;e.expect(w.RPAREN),e.skipNewlines();let n=[];for(;!e.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND,w.ESAC,w.EOF);){e.checkIterationLimit(),e.isWord()&&e.peek(1).type===w.RPAREN&&e.error("syntax error near unexpected token `)'"),e.check(w.LPAREN)&&e.peek(1).type===w.WORD&&e.error(`syntax error near unexpected token \`${e.peek(1).value}'`);let s=e.getPos(),i=e.parseStatement();if(i&&n.push(i),e.skipSeparators(!1),e.getPos()===s&&!i)break}let r=";;";return e.check(w.DSEMI)?(e.advance(),r=";;"):e.check(w.SEMI_AND)?(e.advance(),r=";&"):e.check(w.SEMI_SEMI_AND)&&(e.advance(),r=";;&"),T.caseItem(t,n,r)}function Ai(e,t){e.expect(w.LPAREN);let n=e.parseCompoundList();e.expect(w.RPAREN);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return T.subshell(n,r)}function vi(e,t){e.expect(w.LBRACE);let n=e.parseCompoundList();e.expect(w.RBRACE);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return T.group(n,r)}var Rd=["-a","-b","-c","-d","-e","-f","-g","-h","-k","-p","-r","-s","-t","-u","-w","-x","-G","-L","-N","-O","-S","-z","-n","-o","-v","-R"],Dd=["==","!=","=~","<",">","-eq","-ne","-lt","-le","-gt","-ge","-nt","-ot","-ef"];function El(e){return e.isWord()||e.check(w.LBRACE)||e.check(w.RBRACE)||e.check(w.ASSIGNMENT_WORD)}function bl(e){if(e.check(w.BANG)&&e.peek(1).type===w.LPAREN){e.advance(),e.advance();let t=1,n="!(";for(;t>0&&!e.check(w.EOF);)if(e.check(w.LPAREN))t++,n+="(",e.advance();else if(e.check(w.RPAREN))t--,t>0&&(n+=")"),e.advance();else if(e.isWord())n+=e.advance().value;else if(e.check(w.PIPE))n+="|",e.advance();else break;return n+=")",e.parseWordFromString(n,!1,!1,!1,!1,!0)}return e.parseWordNoBraceExpansion()}function xi(e){return e.skipNewlines(),Id(e)}function Id(e){let t=Sl(e);for(e.skipNewlines();e.check(w.OR_OR);){e.advance(),e.skipNewlines();let n=Sl(e);t={type:"CondOr",left:t,right:n},e.skipNewlines()}return t}function Sl(e){let t=ki(e);for(e.skipNewlines();e.check(w.AND_AND);){e.advance(),e.skipNewlines();let n=ki(e);t={type:"CondAnd",left:t,right:n},e.skipNewlines()}return t}function ki(e){return e.skipNewlines(),e.check(w.BANG)?(e.advance(),e.skipNewlines(),{type:"CondNot",operand:e.withDepth(()=>ki(e))}):Od(e)}function Od(e){if(e.check(w.LPAREN)){e.advance();let t=e.withDepth(()=>xi(e));return e.expect(w.RPAREN),{type:"CondGroup",expression:t}}if(El(e)){let t=e.current(),n=t.value;if(Rd.includes(n)&&!t.quoted){if(e.advance(),e.check(w.DBRACK_END)&&e.error(`Expected operand after ${n}`),El(e)){let i=e.parseWordNoBraceExpansion();return{type:"CondUnary",operator:n,operand:i}}let s=e.current();e.error(`unexpected argument \`${s.value}' to conditional unary operator`)}let r=e.parseWordNoBraceExpansion();if(e.isWord()&&Dd.includes(e.current().value)){let s=e.advance().value,i;return s==="=~"?i=_d(e):s==="=="||s==="!="?i=bl(e):i=e.parseWordNoBraceExpansion(),{type:"CondBinary",operator:s,left:r,right:i}}if(e.check(w.LESS)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:"<",left:r,right:s}}if(e.check(w.GREAT)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:">",left:r,right:s}}if(e.isWord()&&e.current().value==="="){e.advance();let s=bl(e);return{type:"CondBinary",operator:"==",left:r,right:s}}return{type:"CondWord",word:r}}e.error("Expected conditional expression")}function _d(e){let t=[],n=0,r=-1,s=e.getInput(),i=()=>e.check(w.DBRACK_END)||e.check(w.AND_AND)||e.check(w.OR_OR)||e.check(w.NEWLINE)||e.check(w.EOF);for(;!i();){let o=e.current(),a=r>=0&&o.start>r;if(n===0&&a)break;if(n>0&&a){let l=s.slice(r,o.start);t.push({type:"Literal",value:l})}if(e.isWord()||e.check(w.ASSIGNMENT_WORD)){let l=e.parseWordForRegex();t.push(...l.parts),r=e.peek(-1).end}else if(e.check(w.LPAREN)){let l=e.advance();t.push({type:"Literal",value:"("}),n++,r=l.end}else if(e.check(w.DPAREN_START)){let l=e.advance();t.push({type:"Literal",value:"(("}),n+=2,r=l.end}else if(e.check(w.DPAREN_END))if(n>=2){let l=e.advance();t.push({type:"Literal",value:"))"}),n-=2,r=l.end}else{if(n===1)break;break}else if(e.check(w.RPAREN))if(n>0){let l=e.advance();t.push({type:"Literal",value:")"}),n--,r=l.end}else break;else if(e.check(w.PIPE)){let l=e.advance();t.push({type:"Literal",value:"|"}),r=l.end}else if(e.check(w.SEMICOLON))if(n>0){let l=e.advance();t.push({type:"Literal",value:";"}),r=l.end}else break;else if(n>0&&e.check(w.LESS)){let l=e.advance();t.push({type:"Literal",value:"<"}),r=l.end}else if(n>0&&e.check(w.GREAT)){let l=e.advance();t.push({type:"Literal",value:">"}),r=l.end}else if(n>0&&e.check(w.DGREAT)){let l=e.advance();t.push({type:"Literal",value:">>"}),r=l.end}else if(n>0&&e.check(w.DLESS)){let l=e.advance();t.push({type:"Literal",value:"<<"}),r=l.end}else if(n>0&&e.check(w.LESSAND)){let l=e.advance();t.push({type:"Literal",value:"<&"}),r=l.end}else if(n>0&&e.check(w.GREATAND)){let l=e.advance();t.push({type:"Literal",value:">&"}),r=l.end}else if(n>0&&e.check(w.LESSGREAT)){let l=e.advance();t.push({type:"Literal",value:"<>"}),r=l.end}else if(n>0&&e.check(w.CLOBBER)){let l=e.advance();t.push({type:"Literal",value:">|"}),r=l.end}else if(n>0&&e.check(w.TLESS)){let l=e.advance();t.push({type:"Literal",value:"<<<"}),r=l.end}else if(n>0&&e.check(w.AMP)){let l=e.advance();t.push({type:"Literal",value:"&"}),r=l.end}else if(n>0&&e.check(w.LBRACE)){let l=e.advance();t.push({type:"Literal",value:"{"}),r=l.end}else if(n>0&&e.check(w.RBRACE)){let l=e.advance();t.push({type:"Literal",value:"}"}),r=l.end}else break}return t.length===0&&e.error("Expected regex pattern after =~"),{type:"Word",parts:t}}function Td(e){let t="";for(let n=0;n<e.length;n++){let r=e[n],s=e[n+1];if(r!=="\\"||s===void 0){t+=r;continue}"\\[]^-".includes(s)&&(t+="\\"),t+=s,n++}return t}function ir(e){return e.length>0?e:[T.literal("")]}function Fd(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if("@*+?!".includes(s)&&r+1<e.length&&e[r+1]==="("){r++,n++,r++;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Md(e,t,n){let r=n+1,s=t[r];if("@*#?$!-0123456789".includes(s))return{part:T.parameterExpansion(s),endIndex:r+1};let i="";for(;r<t.length&&/[a-zA-Z0-9_]/.test(t[r]);)i+=t[r],r++;return{part:T.parameterExpansion(i),endIndex:r}}function Bd(e,t,n,r=!1){let s=n+2,i=!1;t[s]==="!"&&(i=!0,s++);let o=!1;t[s]==="#"&&!/[}:#%/^,]/.test(t[s+1]||"}")&&(o=!0,s++);let a="",l=t[s];if(/[@*#?$!-]/.test(l)&&!/[a-zA-Z0-9_]/.test(t[s+1]||""))a=l,s++;else for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)a+=t[s],s++;if(t[s]==="["){let u=di(e,t,s,"[","]");if(a+=`[${Gr(t.slice(s+1,u))}]`,s=u+1,t[s]==="["){let f=1,d=s;for(;d<t.length&&f>0;)t[d]==="{"?f++:t[d]==="}"&&f--,f>0&&d++;let p=t.slice(n+2,d);return{part:T.parameterExpansion("",{type:"BadSubstitution",text:p}),endIndex:d+1}}}if(a===""&&!i&&!o&&t[s]!=="}"){let u=1,f=s;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;if(u>0)throw new ke("unexpected EOF while looking for matching '}'",0,0);let d=t.slice(n+2,f);return{part:T.parameterExpansion("",{type:"BadSubstitution",text:d}),endIndex:f+1}}let c=null;if(i){let u=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(u)if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=$i(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):(c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="")}else c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="";else if(t[s]==="*"||t[s]==="@"&&!/[QPaAEKkuUL]/.test(t[s+1]||"")){let f=t[s];s++,c={type:"VarNamePrefix",prefix:a,star:f==="*"},a=""}else if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=$i(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):c={type:"Indirection"}}else c={type:"Indirection"}}else if(o)if(t[s]===":")for(c={type:"LengthSliceError"};s<t.length&&t[s]!=="}";)s++;else t[s]!=="}"&&/[-+=?]/.test(t[s])?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):t[s]==="/"?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):c={type:"Length"};if(!c&&s<t.length&&t[s]!=="}"){let u=$i(e,t,s,a,r);c=u.operation,s=u.endIndex}if(s<t.length&&t[s]!=="}"){let u=t[s];if(!/[:\-+=?#%/^,@[]/.test(u)){let f=s;for(;f<t.length&&t[f]!=="}";)f++;let d=t.slice(n,f+1);e.error(`\${${d.slice(2,-1)}}: bad substitution`)}}for(;s<t.length&&t[s]!=="}";)s++;if(s>=t.length)throw new ke("unexpected EOF while looking for matching '}'",0,0);return{part:T.parameterExpansion(a,c),endIndex:s+1}}function $i(e,t,n,r,s=!1){let i=n,o=t[i],a=t[i+1]||"";if(o===":"){let l=a;if("-=?+".includes(l)){i+=2;let S=wn(e,t,i),g=t.slice(i,S),y=e.withDepth(()=>Zt(e,g,!1,!1,!0,!1,s,!1,!1,!0)),b=T.word(ir(y));if(l==="-")return{operation:{type:"DefaultValue",word:b,checkEmpty:!0},endIndex:S};if(l==="=")return{operation:{type:"AssignDefault",word:b,checkEmpty:!0},endIndex:S};if(l==="?")return{operation:{type:"ErrorIfUnset",word:b,checkEmpty:!0},endIndex:S};if(l==="+")return{operation:{type:"UseAlternative",word:b,checkEmpty:!0},endIndex:S}}i++;let c=wn(e,t,i),u=t.slice(i,c),f=-1,d=0,p=0;for(let E=0;E<u.length;E++){let S=u[E];if(S==="("||S==="[")d++;else if(S===")"||S==="]")d--;else if(S==="?"&&d===0)p++;else if(S===":"&&d===0)if(p>0)p--;else{f=E;break}}let h=f>=0?u.slice(0,f):u,m=f>=0?u.slice(f+1):null;return{operation:{type:"Substring",offset:pi(e,h),length:m!==null?pi(e,m):null},endIndex:c}}if("-=?+".includes(o)){i++;let l=wn(e,t,i),c=t.slice(i,l),u=e.withDepth(()=>Zt(e,c,!1,!1,!0,!1,s,!1,!1,!0)),f=T.word(ir(u));if(o==="-")return{operation:{type:"DefaultValue",word:f,checkEmpty:!1},endIndex:l};if(o==="=")return{operation:{type:"AssignDefault",word:f,checkEmpty:!1},endIndex:l};if(o==="?")return{operation:{type:"ErrorIfUnset",word:c?f:null,checkEmpty:!1},endIndex:l};if(o==="+")return{operation:{type:"UseAlternative",word:f,checkEmpty:!1},endIndex:l}}if(o==="#"||o==="%"){let l=a===o,c=o==="#"?"prefix":"suffix";i+=l?2:1;let u=wn(e,t,i),f=t.slice(i,u),d=e.withDepth(()=>Zt(e,f,!1,!1,!1));return{operation:{type:"PatternRemoval",pattern:T.word(ir(d)),side:c,greedy:l},endIndex:u}}if(o==="/"){let l=a==="/";i+=l?2:1;let c=null;t[i]==="#"?(c="start",i++):t[i]==="%"&&(c="end",i++);let u;c!==null&&(t[i]==="/"||t[i]==="}")?u=i:u=pl(e,t,i);let f=t.slice(i,u),d=e.withDepth(()=>Zt(e,f,!1,!1,!1)),p=T.word(ir(d)),h=null,m=u;if(t[u]==="/"){let E=u+1,S=wn(e,t,E),g=t.slice(E,S),y=e.withDepth(()=>Zt(e,g,!1,!1,!1));h=T.word(ir(y)),m=S}return{operation:{type:"PatternReplacement",pattern:p,replacement:h,all:l,anchor:c},endIndex:m}}if(o==="^"||o===","){let l=a===o,c=o==="^"?"upper":"lower";i+=l?2:1;let u=wn(e,t,i),f=t.slice(i,u),d=f?T.word([T.literal(f)]):null;return{operation:{type:"CaseModification",direction:c,all:l,pattern:d},endIndex:u}}return o==="@"&&/[QPaAEKkuUL]/.test(a)?{operation:{type:"Transform",operator:a},endIndex:i+2}:{operation:null,endIndex:i}}function Pi(e,t,n,r=!1){let s=n+1;if(s>=t.length)return{part:T.literal("$"),endIndex:s};let i=t[s];if(i==="("&&t[s+1]==="(")return e.isDollarDparenSubshell(t,n)?e.parseCommandSubstitution(t,n):e.parseArithmeticExpansion(t,n);if(i==="["){let o=1,a=s+1;for(;a<t.length&&o>0;)t[a]==="["?o++:t[a]==="]"&&o--,o>0&&a++;if(o===0){let l=t.slice(s+1,a),c=re(e,l);return{part:T.arithmeticExpansion(c),endIndex:a+1}}}return i==="("?e.parseCommandSubstitution(t,n):i==="{"?Bd(e,t,n,r):/[a-zA-Z_0-9@*#?$!-]/.test(i)?Md(e,t,n):{part:T.literal("$"),endIndex:s}}function Al(e,t){let n=[],r=0,s="",i=()=>{s&&(n.push(T.literal(s)),s="")};for(;r<t.length;){let o=t[r];if(o==="\\"&&r+1<t.length){let a=t[r+1];if(a==="$"||a==="`"||a==='"'||a==="\\"){s+=a,r+=2;continue}s+=o,r++;continue}if(o==="$"){i();let{part:a,endIndex:l}=Pi(e,t,r,!0);a&&n.push(a),r=l;continue}if(o==="`"){i();let{part:a,endIndex:l}=e.parseBacktickSubstitution(t,r,!0);n.push(a),r=l;continue}s+=o,r++}return i(),n}function Wd(e,t,n){let r=[],s=n,i="",o=()=>{i&&(r.push(T.literal(i)),i="")};for(;s<t.length&&t[s]!=='"';){let a=t[s];if(a==="\\"&&s+1<t.length){let l=t[s+1];if('"\\$`\n'.includes(l)){i+=l,s+=2;continue}i+=a,s++;continue}if(a==="$"){o();let{part:l,endIndex:c}=Pi(e,t,s,!0);l&&r.push(l),s=c;continue}if(a==="`"){o();let{part:l,endIndex:c}=e.parseBacktickSubstitution(t,s,!0);r.push(l),s=c;continue}i+=a,s++}return o(),{part:T.doubleQuoted(r),endIndex:s}}function Zt(e,t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!0){if(r)return[T.singleQuoted(t)];if(n){let m=Al(e,t);return[T.doubleQuoted(m)]}if(t.length>=2&&t[0]==='"'&&t[t.length-1]==='"'){let m=t.slice(1,-1),E=!1;for(let S=0;S<m.length;S++){if(m[S]==='"'){E=!0;break}m[S]==="\\"&&S+1<m.length&&S++}if(!E){let S=Al(e,m);return[T.doubleQuoted(S)]}}let f=[],d=0,p="",h=()=>{p&&(f.push(T.literal(p)),p="")};for(;d<t.length;){let m=t[d];if(m==="\\"&&d+1<t.length){let E=t[d+1];if(l){h(),f.push(T.escaped(E)),d+=2;continue}if(!i&&!o){E!==`
70
- `&&(h(),f.push(T.escaped(E))),d+=2;continue}let S=i?E==="$"||E==="`"||E===`
65
+ `);)f=!0,u++;if(f&&u<r&&n[u]===")")return!0}if(i===0)return!1;s++;continue}if(i===1&&(l==="|"&&s+1<r&&n[s+1]==="|"||l==="&"&&s+1<r&&n[s+1]==="&"||l==="|"&&s+1<r&&n[s+1]!=="|"))return!0;s++}return!1}};var Ei=1e6,ar=1e5,Cd=1e6,sl=200,Ne;(function(e){e[e.Default=0]="Default",e[e.Assignment=1]="Assignment",e[e.NoBraceExpansion=2]="NoBraceExpansion",e[e.Regex=4]="Regex"})(Ne||(Ne={}));var il=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),ol=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS]),al=new Set([w.LESS,w.GREAT,w.DLESS,w.DGREAT,w.LESSAND,w.GREATAND,w.LESSGREAT,w.DLESSDASH,w.CLOBBER,w.TLESS,w.AND_GREAT,w.AND_DGREAT]),xe=class extends Error{line;column;token;constructor(t,n,r,s=void 0){super(`Parse error at ${n}:${r}: ${t}`),this.line=n,this.column=r,this.token=s,this.name="ParseException"}},Qr=class{iterations=0;tokens=0;depth=0;reset(){this.iterations=0,this.tokens=0,this.depth=0}chargeIteration(t,n){if(this.iterations++,this.iterations>Cd)throw new xe("Maximum parse iterations exceeded (possible infinite loop)",t,n)}chargeTokens(t,n=1,r=1){if(this.tokens+=t,this.tokens>ar)throw new xe(`Too many tokens: cumulative count exceeds limit of ${ar}`,n,r)}enter(t,n){if(this.depth++,this.depth>sl)throw this.depth--,new xe(`Maximum parser nesting depth exceeded (${sl})`,t,n);let r=!0;return()=>{r&&(r=!1,this.depth--)}}};function he(e,t){for(;t<e.length;){if(e[t]==="\\"&&e[t+1]===`
66
+ `){t+=2;continue}if(/\s/.test(e[t])){t++;continue}break}return t}var Kr=["=","+=","-=","*=","/=","%=","<<=",">>=","&=","|=","^="];function lr(e){if(e.includes("#")){let n=e.split("#");if(n.length!==2)return Number.NaN;let[r,s]=n;if(!/^\d+$/.test(r)||s.length===0)return Number.NaN;let i=Number.parseInt(r,10);if(i<2||i>64)return Number.NaN;let o=0;for(let a of s){let l;if(/[0-9]/.test(a))l=a.charCodeAt(0)-48;else if(/[a-z]/.test(a))l=a.charCodeAt(0)-97+10;else if(/[A-Z]/.test(a))l=a.charCodeAt(0)-65+(i<=36?10:36);else if(a==="@")l=62;else if(a==="_")l=63;else return Number.NaN;if(l>=i)return Number.NaN;if(o=o*i+l,o>Number.MAX_SAFE_INTEGER)return Number.MAX_SAFE_INTEGER}return o}if(e.startsWith("0x")||e.startsWith("0X")){let n=Number.parseInt(e.slice(2),16);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}if(e.startsWith("0")&&e.length>1&&/^[0-9]+$/.test(e)){if(/[89]/.test(e))return Number.NaN;let n=Number.parseInt(e,8);return n>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:n}let t=Number.parseInt(e,10);return t>Number.MAX_SAFE_INTEGER?Number.MAX_SAFE_INTEGER:t}function ll(e,t,n,r){if(n.slice(r,r+3)!=="$((")return null;let s=r+3,i=1,o=s;for(;s<n.length-1&&i>0;)n[s]==="("&&n[s+1]==="("?(i++,s+=2):n[s]===")"&&n[s+1]===")"?(i--,i>0&&(s+=2)):s++;let a=n.slice(o,s),{expr:l}=e(t,a,0);return s+=2,{expr:{type:"ArithNested",expression:l},pos:s}}function cl(e,t){if(e.slice(t,t+2)!=="$'")return null;let n=t+2,r="";for(;n<e.length&&e[n]!=="'";)if(e[n]==="\\"&&n+1<e.length){let i=e[n+1];switch(i){case"n":r+=`
67
+ `;break;case"t":r+=" ";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"'":r+="'";break;default:r+=i}n+=2}else r+=e[n],n++;e[n]==="'"&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function ul(e,t){if(e.slice(t,t+2)!=='$"')return null;let n=t+2,r="";for(;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(r+=e[n+1],n+=2):(r+=e[n],n++);e[n]==='"'&&n++;let s=Number.parseInt(r,10);return{expr:{type:"ArithNumber",value:Number.isNaN(s)?0:s},pos:n}}function Nd(e){let t="",n=0;for(;n<e.length;)if(e[n]==='"'){for(n++;n<e.length&&e[n]!=='"';)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);n<e.length&&n++}else t+=e[n],n++;return t}function se(e,t){let n=Nd(t),{expr:r,pos:s}=Mn(e,n,0),i=he(n,s);if(i<n.length){let o=t.slice(i).trim();if(o)return{type:"ArithmeticExpression",originalText:t,expression:{type:"ArithSyntaxError",errorToken:o,message:`${o}: syntax error: invalid arithmetic operator (error token is "${o}")`}}}return{type:"ArithmeticExpression",expression:r,originalText:t}}function He(e,t){return{expr:{type:"ArithSyntaxError",errorToken:e,message:`syntax error: operand expected (error token is "${e}")`},pos:t}}function Ge(e,t){return he(e,t)>=e.length}function Mn(e,t,n){return Rd(e,t,n)}function bn(e,t,n){return e.withDepth(()=>Mn(e,t,n))}function Rd(e,t,n){let{expr:r,pos:s}=cr(e,t,n);for(s=he(t,s);t[s]===",";){if(s++,Ge(t,s))return He(",",s);let{expr:o,pos:a}=cr(e,t,s);r={type:"ArithBinary",operator:",",left:r,right:o},s=he(t,a)}return{expr:r,pos:s}}function cr(e,t,n){let{expr:r,pos:s}=Dd(e,t,n);if(s=he(t,s),t[s]==="?"){s++;let{expr:i,pos:o}=bn(e,t,s);if(s=he(t,o),t[s]===":"){s++;let{expr:a,pos:l}=bn(e,t,s);return{expr:{type:"ArithTernary",condition:r,consequent:i,alternate:a},pos:l}}}return{expr:r,pos:s}}function Dd(e,t,n){let{expr:r,pos:s}=fl(e,t,n);for(;s=he(t,s),t.slice(s,s+2)==="||";){if(s+=2,Ge(t,s))return He("||",s);let{expr:o,pos:a}=fl(e,t,s);r={type:"ArithBinary",operator:"||",left:r,right:o},s=a}return{expr:r,pos:s}}function fl(e,t,n){let{expr:r,pos:s}=dl(e,t,n);for(;s=he(t,s),t.slice(s,s+2)==="&&";){if(s+=2,Ge(t,s))return He("&&",s);let{expr:o,pos:a}=dl(e,t,s);r={type:"ArithBinary",operator:"&&",left:r,right:o},s=a}return{expr:r,pos:s}}function dl(e,t,n){let{expr:r,pos:s}=pl(e,t,n);for(;s=he(t,s),t[s]==="|"&&t[s+1]!=="|";){if(s++,Ge(t,s))return He("|",s);let{expr:o,pos:a}=pl(e,t,s);r={type:"ArithBinary",operator:"|",left:r,right:o},s=a}return{expr:r,pos:s}}function pl(e,t,n){let{expr:r,pos:s}=hl(e,t,n);for(;s=he(t,s),t[s]==="^";){if(s++,Ge(t,s))return He("^",s);let{expr:o,pos:a}=hl(e,t,s);r={type:"ArithBinary",operator:"^",left:r,right:o},s=a}return{expr:r,pos:s}}function hl(e,t,n){let{expr:r,pos:s}=ml(e,t,n);for(;s=he(t,s),t[s]==="&"&&t[s+1]!=="&";){if(s++,Ge(t,s))return He("&",s);let{expr:o,pos:a}=ml(e,t,s);r={type:"ArithBinary",operator:"&",left:r,right:o},s=a}return{expr:r,pos:s}}function ml(e,t,n){let{expr:r,pos:s}=yl(e,t,n);for(;s=he(t,s),t.slice(s,s+2)==="=="||t.slice(s,s+2)==="!=";){let i=t.slice(s,s+2);if(s+=2,Ge(t,s))return He(i,s);let{expr:o,pos:a}=yl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function yl(e,t,n){let{expr:r,pos:s}=bi(e,t,n);for(;;)if(s=he(t,s),t.slice(s,s+2)==="<="||t.slice(s,s+2)===">="){let i=t.slice(s,s+2);if(s+=2,Ge(t,s))return He(i,s);let{expr:o,pos:a}=bi(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else if(t[s]==="<"||t[s]===">"){let i=t[s];if(s++,Ge(t,s))return He(i,s);let{expr:o,pos:a}=bi(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function bi(e,t,n){let{expr:r,pos:s}=gl(e,t,n);for(;s=he(t,s),t.slice(s,s+2)==="<<"||t.slice(s,s+2)===">>";){let i=t.slice(s,s+2);if(s+=2,Ge(t,s))return He(i,s);let{expr:o,pos:a}=gl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function gl(e,t,n){let{expr:r,pos:s}=wl(e,t,n);for(;s=he(t,s),(t[s]==="+"||t[s]==="-")&&t[s+1]!==t[s];){let i=t[s];if(s++,Ge(t,s))return He(i,s);let{expr:o,pos:a}=wl(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}return{expr:r,pos:s}}function wl(e,t,n){let{expr:r,pos:s}=Xr(e,t,n);for(;;)if(s=he(t,s),t[s]==="*"&&t[s+1]!=="*"){if(s++,Ge(t,s))return He("*",s);let{expr:o,pos:a}=Xr(e,t,s);r={type:"ArithBinary",operator:"*",left:r,right:o},s=a}else if(t[s]==="/"||t[s]==="%"){let i=t[s];if(s++,Ge(t,s))return He(i,s);let{expr:o,pos:a}=Xr(e,t,s);r={type:"ArithBinary",operator:i,left:r,right:o},s=a}else break;return{expr:r,pos:s}}function Xr(e,t,n){let{expr:r,pos:s}=Si(e,t,n),i=he(t,s);if(t.slice(i,i+2)==="**"){if(i+=2,Ge(t,i))return He("**",i);let{expr:a,pos:l}=e.withDepth(()=>Xr(e,t,i));return{expr:{type:"ArithBinary",operator:"**",left:r,right:a},pos:l}}return{expr:r,pos:s}}function Si(e,t,n){let r=he(t,n);if(t.slice(r,r+2)==="++"||t.slice(r,r+2)==="--"){let s=t.slice(r,r+2);r+=2;let{expr:i,pos:o}=e.withDepth(()=>Si(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}if(t[r]==="+"||t[r]==="-"||t[r]==="!"||t[r]==="~"){let s=t[r];r++;let{expr:i,pos:o}=e.withDepth(()=>Si(e,t,r));return{expr:{type:"ArithUnary",operator:s,operand:i,prefix:!0},pos:o}}return Od(e,t,r)}function Id(e,t){let n=e[t];return n==="$"||n==="`"}function Od(e,t,n){let{expr:r,pos:s}=El(e,t,n,!1),i=[r];for(;Id(t,s);){let{expr:a,pos:l}=El(e,t,s,!0);i.push(a),s=l}i.length>1&&(r={type:"ArithConcat",parts:i});let o;if(t[s]==="["&&r.type==="ArithConcat"){s++;let{expr:a,pos:l}=bn(e,t,s);o=a,s=l,t[s]==="]"&&s++}if(o&&r.type==="ArithConcat"&&(r={type:"ArithDynamicElement",nameExpr:r,subscript:o},o=void 0),s=he(t,s),r.type==="ArithConcat"||r.type==="ArithVariable"||r.type==="ArithDynamicElement"){for(let a of Kr)if(t.slice(s,s+a.length)===a&&t.slice(s,s+a.length+1)!=="=="){s+=a.length;let{expr:l,pos:c}=e.withDepth(()=>cr(e,t,s));return r.type==="ArithDynamicElement"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r.nameExpr,subscript:r.subscript,value:l},pos:c}:r.type==="ArithConcat"?{expr:{type:"ArithDynamicAssignment",operator:a,target:r,value:l},pos:c}:{expr:{type:"ArithAssignment",operator:a,variable:r.name,value:l},pos:c}}}if(t.slice(s,s+2)==="++"||t.slice(s,s+2)==="--"){let a=t.slice(s,s+2);return s+=2,{expr:{type:"ArithUnary",operator:a,operand:r,prefix:!1},pos:s}}return{expr:r,pos:s}}function El(e,t,n,r=!1){let s=he(t,n),i=ll(bn,e,t,s);if(i)return i;let o=cl(t,s);if(o)return o;let a=ul(t,s);if(a)return a;if(t.slice(s,s+2)==="$("&&t[s+2]!=="("){s+=2;let c=1,u=s;for(;s<t.length&&c>0;)t[s]==="("?c++:t[s]===")"&&c--,c>0&&s++;let f=t.slice(u,s);return s++,{expr:{type:"ArithCommandSubst",command:f},pos:s}}if(t[s]==="`"){s++;let c=s;for(;s<t.length&&t[s]!=="`";)s++;let u=t.slice(c,s);return t[s]==="`"&&s++,{expr:{type:"ArithCommandSubst",command:u},pos:s}}if(t[s]==="("){s++;let{expr:c,pos:u}=bn(e,t,s);return s=he(t,u),t[s]===")"&&s++,{expr:{type:"ArithGroup",expression:c},pos:s}}if(t[s]==="'"){s++;let c="";for(;s<t.length&&t[s]!=="'";)c+=t[s],s++;t[s]==="'"&&s++;let u=Number.parseInt(c,10);return{expr:{type:"ArithSingleQuote",content:c,value:Number.isNaN(u)?0:u},pos:s}}if(t[s]==='"'){s++;let c="";for(;s<t.length&&t[s]!=='"';)t[s]==="\\"&&s+1<t.length?(c+=t[s+1],s+=2):(c+=t[s],s++);t[s]==='"'&&s++;let u=c.trim();if(!u)return{expr:{type:"ArithNumber",value:0},pos:s};let{expr:f}=bn(e,u,0);return{expr:f,pos:s}}if(/[0-9]/.test(t[s])){let c="",u=!1,f=!1;for(;s<t.length;){let p=t[s];if(u)if(/[0-9a-zA-Z@_]/.test(p))c+=p,s++;else break;else if(p==="#")u=!0,c+=p,s++;else if(c==="0"&&(p==="x"||p==="X")&&s+1<t.length&&/[0-9a-fA-F]/.test(t[s+1]))f=!0,c+=p,s++;else if(f&&/[0-9a-fA-F]/.test(p))c+=p,s++;else if(!f&&/[0-9]/.test(p))c+=p,s++;else break}if(s<t.length&&/[a-zA-Z_]/.test(t[s])){let p=c;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)p+=t[s],s++;return{expr:{type:"ArithSyntaxError",errorToken:p,message:`${p}: value too great for base (error token is "${p}")`},pos:s}}if(t[s]==="."&&/[0-9]/.test(t[s+1]))throw new le(`${c}.${t[s+1]}...: syntax error: invalid arithmetic operator`);if(t[s]==="["){let p=t.slice(s).trim();return{expr:{type:"ArithNumberSubscript",number:c,errorToken:p},pos:t.length}}return{expr:{type:"ArithNumber",value:lr(c)},pos:s}}if(t[s]==="$"&&t[s+1]==="{"){let c=s+2,u=1,f=c;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;let d=t.slice(c,f),p=f+1;if(t[p]==="#"){let h=p+1;for(;h<t.length&&/[0-9a-zA-Z@_]/.test(t[h]);)h++;let y=t.slice(p+1,h);return{expr:{type:"ArithDynamicBase",baseExpr:d,value:y},pos:h}}if(/[0-9]/.test(t[p])||t[p]==="x"||t[p]==="X"){let h=p;if(t[p]==="x"||t[p]==="X")for(h++;h<t.length&&/[0-9a-fA-F]/.test(t[h]);)h++;else for(;h<t.length&&/[0-9]/.test(t[h]);)h++;let y=t.slice(p,h);return{expr:{type:"ArithDynamicNumber",prefix:d,suffix:y},pos:h}}return s=p,{expr:{type:"ArithBracedExpansion",content:d},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[0-9]/.test(t[s+1])){s++;let c="";for(;s<t.length&&/[0-9]/.test(t[s]);)c+=t[s],s++;return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:!0},pos:s}}if(t[s]==="$"&&s+1<t.length&&/[*@#?\-!$]/.test(t[s+1])){let c=t[s+1];return s+=2,{expr:{type:"ArithSpecialVar",name:c},pos:s}}let l=!1;if(t[s]==="$"&&s+1<t.length&&/[a-zA-Z_]/.test(t[s+1])&&(l=!0,s++),s<t.length&&/[a-zA-Z_]/.test(t[s])){let c="";for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)c+=t[s],s++;if(t[s]==="["&&!r){s++;let u;if(t[s]==="'"||t[s]==='"'){let d=t[s];for(s++,u="";s<t.length&&t[s]!==d;)u+=t[s],s++;t[s]===d&&s++,s=he(t,s),t[s]==="]"&&s++}let f;if(u===void 0){let{expr:d,pos:p}=bn(e,t,s);f=d,s=p,t[s]==="]"&&s++}if(s=he(t,s),t[s]==="["&&f)return{expr:{type:"ArithDoubleSubscript",array:c,index:f},pos:s};if(!r){for(let d of Kr)if(t.slice(s,s+d.length)===d&&t.slice(s,s+d.length+1)!=="=="){s+=d.length;let{expr:p,pos:h}=e.withDepth(()=>cr(e,t,s));return{expr:{type:"ArithAssignment",operator:d,variable:c,subscript:f,stringKey:u,value:p},pos:h}}}return{expr:{type:"ArithArrayElement",array:c,index:f,stringKey:u},pos:s}}if(s=he(t,s),!r){for(let u of Kr)if(t.slice(s,s+u.length)===u&&t.slice(s,s+u.length+1)!=="=="){s+=u.length;let{expr:f,pos:d}=e.withDepth(()=>cr(e,t,s));return{expr:{type:"ArithAssignment",operator:u,variable:c,value:f},pos:d}}}return{expr:{type:"ArithVariable",name:c,hasDollarPrefix:l},pos:s}}if(t[s]==="#"){let c=s+1;for(;c<t.length&&t[c]!==`
68
+ `;)c++;let u=t.slice(s,c).trim()||"#";return{expr:{type:"ArithSyntaxError",errorToken:u,message:`${u}: syntax error: invalid arithmetic operator (error token is "${u}")`},pos:t.length}}return{expr:{type:"ArithNumber",value:0},pos:s}}var Yr=e=>{let t,n="";for(let r=0;r<e.length;r++){let s=e[r];if(s==="\\"&&t==='"'&&r+1<e.length){n+=s+e[r+1],r+=1;continue}if(s==="'"||s==='"'){t===s?t=void 0:t||(t=s),n+=s;continue}if(s==="\\"&&!t&&r+1<e.length){let i=e[r+1];n+=i==="$"||i==="`"?`\\${i}`:i,r+=1;continue}n+=s}return n};function _d(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r<128){t+=String.fromCharCode(r),n++;continue}if((r&224)===192){if(n+1<e.length&&(e[n+1]&192)===128&&r>=194){let s=(r&31)<<6|e[n+1]&63;t+=String.fromCharCode(s),n+=2;continue}t+=String.fromCharCode(r),n++;continue}if((r&240)===224){if(n+2<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128){if(r===224&&e[n+1]<160){t+=String.fromCharCode(r),n++;continue}let s=(r&15)<<12|(e[n+1]&63)<<6|e[n+2]&63;if(s>=55296&&s<=57343){t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(s),n+=3;continue}t+=String.fromCharCode(r),n++;continue}if((r&248)===240&&r<=244){if(n+3<e.length&&(e[n+1]&192)===128&&(e[n+2]&192)===128&&(e[n+3]&192)===128){if(r===240&&e[n+1]<144){t+=String.fromCharCode(r),n++;continue}let s=(r&7)<<18|(e[n+1]&63)<<12|(e[n+2]&63)<<6|e[n+3]&63;if(s>1114111){t+=String.fromCharCode(r),n++;continue}t+=String.fromCodePoint(s),n+=4;continue}t+=String.fromCharCode(r),n++;continue}t+=String.fromCharCode(r),n++}return t}function Al(e,t,n){let r=n+1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;return r}function Ai(e,t,n,r,s){let i=1,o=n+1;for(;o<t.length&&i>0;)t[o]===r?i++:t[o]===s&&i--,i>0&&o++;return i===0?o:-1}function Sn(e,t,n){let r=n,s=1;for(;r<t.length&&s>0;){let i=t[r];if(i==="\\"&&r+1<t.length){r+=2;continue}if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++;continue}i==="{"?s++:i==="}"&&s--,s>0&&r++}return r}function vl(e,t,n){let r=n,s=!1;for(;r<t.length;){let i=t[r];if(i==="/"&&s||i==="}")break;if(i==="'"){let o=t.indexOf("'",r+1);if(o!==-1){r=o+1,s=!0;continue}}if(i==='"'){for(r++;r<t.length&&t[r]!=='"';)t[r]==="\\"&&r+1<t.length?r+=2:r++;r<t.length&&r++,s=!0;continue}i==="\\"?(r+=2,s=!0):(r++,s=!0)}return r}function kl(e,t,n){let r=n,s="";for(;r<t.length;){let i=t[r];if(i==="*"||i==="?")s+=i,r++;else if(i==="["){let o=Ld(t,r);o===-1?(s+=i,r++):(s+=t.slice(r,o+1),r=o+1)}else break}return{pattern:s,endIndex:r}}function Ld(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){let r=e[n];if(r==="\\"&&n+1<e.length){let s=e[n+1];if(s==='"'||s==="'")return-1;n+=2;continue}if(r==="]")return n;if(r==='"'||r==="$"||r==="`")return-1;if(r==="'"){let s=e.indexOf("'",n+1);if(s!==-1){n=s+1;continue}}if(r==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){n=s+2;continue}}if(r==="["&&n+1<e.length&&(e[n+1]==="."||e[n+1]==="=")){let i=`${e[n+1]}]`,o=e.indexOf(i,n+2);if(o!==-1){n=o+2;continue}}n++}return-1}function xl(e,t,n){let r="",s=n;for(;s<t.length&&t[s]!=="'";){let i=t[s];if(i==="\\"&&s+1<t.length)switch(t[s+1]){case"n":r+=`
69
+ `,s+=2;break;case"t":r+=" ",s+=2;break;case"r":r+="\r",s+=2;break;case"\\":r+="\\",s+=2;break;case"'":r+="'",s+=2;break;case'"':r+='"',s+=2;break;case"a":r+="\x07",s+=2;break;case"b":r+="\b",s+=2;break;case"e":case"E":r+="\x1B",s+=2;break;case"f":r+="\f",s+=2;break;case"v":r+="\v",s+=2;break;case"x":{let a=[],l=s;for(;l+1<t.length&&t[l]==="\\"&&t[l+1]==="x";){let c=t.slice(l+2,l+4),u=parseInt(c,16);if(!Number.isNaN(u)&&c.length>0)a.push(u),l+=2+c.length;else break}a.length>0?(r+=_d(a),s=l):(r+="\\x",s+=2);break}case"u":{let a=t.slice(s+2,s+6),l=parseInt(a,16);Number.isNaN(l)?(r+="\\u",s+=2):(r+=String.fromCharCode(l),s+=6);break}case"c":{if(s+2<t.length){let l=t[s+2].charCodeAt(0)&31;r+=String.fromCharCode(l),s+=3}else r+="\\c",s+=2;break}case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":{let a="",l=s+1;for(;l<t.length&&l<s+4&&/[0-7]/.test(t[l]);)a+=t[l],l++;let c=parseInt(a,8);r+=String.fromCharCode(c),s=l;break}default:r+=i,s++}else r+=i,s++}return s<t.length&&t[s]==="'"&&s++,{part:F.literal(r),endIndex:s}}function vi(e,t){let n=t.trim();return n===""?{type:"ArithmeticExpression",expression:{type:"ArithNumber",value:0}}:se(e,n)}function Sl(e){let t=[],n="",r=0;for(let s=0;s<e.length;s++){let i=e[s];i==="{"?(r++,n+=i):i==="}"?(r--,n+=i):i===","&&r===0?(t.push(n),n=""):n+=i}return t.push(n),t}function $l(e,t,n,r){let s=Ai(e,t,n,"{","}");if(s===-1)return null;let i=t.slice(n+1,s),o=i.match(/^(-?\d+)\.\.(-?\d+)(?:\.\.(-?\d+))?$/);if(o)return{part:{type:"BraceExpansion",items:[{type:"Range",start:Number.parseInt(o[1],10),end:Number.parseInt(o[2],10),step:o[3]?Number.parseInt(o[3],10):void 0,startStr:o[1],endStr:o[2]}]},endIndex:s+1};let a=i.match(/^([a-zA-Z])\.\.([a-zA-Z])(?:\.\.(-?\d+))?$/);return a?{part:{type:"BraceExpansion",items:[{type:"Range",start:a[1],end:a[2],step:a[3]?Number.parseInt(a[3],10):void 0}]},endIndex:s+1}:i.includes(",")&&r?{part:{type:"BraceExpansion",items:Sl(i).map(u=>e.withDepth(()=>({type:"Word",word:F.word(r(e,u,!1,!1,!1))})))},endIndex:s+1}:i.includes(",")?{part:{type:"BraceExpansion",items:Sl(i).map(u=>({type:"Word",word:F.word([F.literal(u)])}))},endIndex:s+1}:null}function ki(e,t){let n="";for(let r of t.parts)switch(r.type){case"Literal":n+=r.value;break;case"SingleQuoted":n+=`'${r.value}'`;break;case"Escaped":n+=r.value;break;case"DoubleQuoted":n+='"';for(let s of r.parts)s.type==="Literal"||s.type==="Escaped"?n+=s.value:s.type==="ParameterExpansion"&&(n+=`\${${s.parameter}}`);n+='"';break;case"ParameterExpansion":n+=`\${${r.parameter}}`;break;case"Glob":n+=r.pattern;break;case"TildeExpansion":n+="~",r.user&&(n+=r.user);break;case"BraceExpansion":{n+="{";let s=[];for(let i of r.items)if(i.type==="Range"){let o=i.startStr??String(i.start),a=i.endStr??String(i.end);i.step!==void 0?s.push(`${o}..${a}..${i.step}`):s.push(`${o}..${a}`)}else s.push(ki(e,i.word));s.length===1&&r.items[0].type==="Range"?n+=s[0]:n+=s.join(","),n+="}";break}default:n+=r.type}return n}function Pl(e,t){return{[w.LESS]:"<",[w.GREAT]:">",[w.DGREAT]:">>",[w.LESSAND]:"<&",[w.GREATAND]:">&",[w.LESSGREAT]:"<>",[w.CLOBBER]:">|",[w.TLESS]:"<<<",[w.AND_GREAT]:"&>",[w.AND_DGREAT]:"&>>",[w.DLESS]:"<",[w.DLESSDASH]:"<"}[t]||">"}function ur(e){let t=e.current(),n=t.type;if(n===w.NUMBER){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:ol.has(r.type)}if(n===w.FD_VARIABLE){let r=e.peek(1);return t.end!==r.start||e.isProcessSubstitutionStart(1)?!1:al.has(r.type)}return!e.isProcessSubstitutionStart()&&il.has(n)}function Jr(e){let t=null,n;e.check(w.NUMBER)?t=Number.parseInt(e.advance().value,10):e.check(w.FD_VARIABLE)&&(n=e.advance().value);let r=e.advance(),s=Pl(e,r.type);if(r.type===w.DLESS||r.type===w.DLESSDASH)return Td(e,t,n,r.type===w.DLESSDASH);e.isWord()||e.error("Expected redirection target");let i=e.parseWord();return F.redirection(s,i,t,n)}function Td(e,t,n,r){e.isWord()||e.error("Expected here-document delimiter");let s=e.advance(),i=s.heredocDelimiter??s.value,o=s.quoted||!1,a=F.redirection(r?"<<-":"<<",F.hereDoc(i,F.word([]),r,o),t,n);return e.addPendingHeredoc(a,i,r,o),a}function $i(e){let t=e.getSourceLine(),n=[],r=null,s=[],i=[];for(;e.check(w.ASSIGNMENT_WORD)||ur(e);)e.checkIterationLimit(),e.check(w.ASSIGNMENT_WORD)?n.push(Fd(e)):i.push(Jr(e));if(e.isWord())r=e.parseWord();else if(n.length>0&&(e.check(w.DBRACK_START)||e.check(w.DPAREN_START))){let a=e.advance();r=F.word([F.literal(a.value)])}for(;(!e.isStatementEnd()||e.check(w.RBRACE))&&!e.check(w.PIPE,w.PIPE_AMP);)if(e.checkIterationLimit(),ur(e))i.push(Jr(e));else if(e.check(w.ASSIGNMENT_WORD)){let a=e.advance(),l=a.value,c=l.endsWith("="),u=l.endsWith("=(");if((c||u)&&(u||e.check(w.LPAREN))){let f=u?l.slice(0,-2):l.slice(0,-1);u||e.expect(w.LPAREN);let d=xi(e);e.expect(w.RPAREN);let p=d.map(y=>ki(e,y)),h=`${f}=(${p.join(" ")})`;s.push(e.parseWordFromString(h,!1,!1,!0))}else{let f=e.parseWordFromString(l,a.quoted,a.singleQuoted,!0);s.push(e.parseAdjacentWordParts(f.parts,a.end,Ne.Assignment))}}else if(e.isWord())s.push(e.parseWord());else if(e.check(w.RBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LBRACE)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.DBRACK_END)){let a=e.advance();s.push(e.parseWordFromString(a.value,!1,!1))}else if(e.check(w.LPAREN))e.error("syntax error near unexpected token `('");else break;let o=F.simpleCommand(r,s,n,i);return o.line=t,o}function Fd(e){let t=e.expect(w.ASSIGNMENT_WORD),n=t.value,r=n.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);r||e.error(`Invalid assignment: ${n}`);let s=r[0],i,o=s.length;if(n[o]==="["){let f=0,d=o+1;for(;o<n.length;o++)if(n[o]==="[")f++;else if(n[o]==="]"&&(f--,f===0))break;f!==0&&e.error(`Invalid assignment: ${n}`),i=Yr(n.slice(d,o)),o++}let a=n[o]==="+";a&&o++,n[o]!=="="&&e.error(`Invalid assignment: ${n}`),o++;let l=n.slice(o);if(l==="("){let f=xi(e);e.expect(w.RPAREN);let d=i!==void 0?`${s}[${i}]`:s;return F.assignment(d,null,a,f)}if(l===""&&e.check(w.LPAREN)){let f=e.current();if(t.end===f.start){e.advance();let d=xi(e);e.expect(w.RPAREN);let p=i!==void 0?`${s}[${i}]`:s;return F.assignment(p,null,a,d)}}let c=l?e.parseWordFromString(l,t.quoted,t.singleQuoted,!0):null;t.end===e.current().start&&e.isProcessSubstitutionStart()&&(c=e.parseAdjacentWordParts(c?.parts??[],t.end,Ne.Assignment));let u=i!==void 0?`${s}[${i}]`:s;return F.assignment(u,c,a,null)}var Md=new Set([w.AMP,w.PIPE,w.PIPE_AMP,w.SEMICOLON,w.AND_AND,w.OR_OR,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND]);function xi(e){let t=[];for(e.skipNewlines();!e.check(w.RPAREN,w.EOF);)e.checkIterationLimit(),e.isWord()?t.push(e.parseWord()):Md.has(e.current().type)?e.error(`syntax error near unexpected token \`${e.current().value}'`):e.advance(),e.skipNewlines();return t}function Pi(e,t){e.expect(w.IF);let n=[],r=e.parseCompoundList();e.expect(w.THEN);let s=e.parseCompoundList();if(s.length===0){let a=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${a}'`)}for(n.push({condition:r,body:s});e.check(w.ELIF);){e.advance();let a=e.parseCompoundList();e.expect(w.THEN);let l=e.parseCompoundList();if(l.length===0){let c=e.check(w.FI)?"fi":e.check(w.ELSE)?"else":e.check(w.ELIF)?"elif":"fi";e.error(`syntax error near unexpected token \`${c}'`)}n.push({condition:a,body:l})}let i=null;e.check(w.ELSE)&&(e.advance(),i=e.parseCompoundList(),i.length===0&&e.error("syntax error near unexpected token `fi'")),e.expect(w.FI);let o=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.ifNode(n,i,o)}function Ci(e,t){let n=e.expect(w.FOR);if(e.check(w.DPAREN_START))return Wd(e,t,e.getSourceLine(n));e.isWord()||e.error("Expected variable name in for loop");let s=e.advance().value,i=null;if(e.skipNewlines(),e.check(w.IN))for(e.advance(),i=[];!e.check(w.SEMICOLON,w.NEWLINE,w.DO,w.EOF)&&e.isWord();)i.push(e.parseWord());e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines(),e.expect(w.DO);let o=e.parseCompoundList();e.expect(w.DONE);let a=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.forNode(s,i,o,a)}function Wd(e,t,n){e.expect(w.DPAREN_START);let r=null,s=null,i=null,o=["","",""],a=0,l=0;for(;!e.check(w.DPAREN_END,w.EOF);){let f=e.advance();if(f.type===w.SEMICOLON&&l===0){if(a++,a>2)break}else f.value==="("&&l++,f.value===")"&&l--,o[a]+=f.value}e.expect(w.DPAREN_END),o[0].trim()&&(r=se(e,o[0].trim())),o[1].trim()&&(s=se(e,o[1].trim())),o[2].trim()&&(i=se(e,o[2].trim())),e.skipNewlines(),e.check(w.SEMICOLON)&&e.advance(),e.skipNewlines();let c;e.check(w.LBRACE)?(e.advance(),c=e.parseCompoundList(),e.expect(w.RBRACE)):(e.expect(w.DO),c=e.parseCompoundList(),e.expect(w.DONE));let u=t?.skipRedirections?[]:e.parseOptionalRedirections();return{type:"CStyleFor",init:r,condition:s,update:i,body:c,redirections:u,line:n}}function Ni(e,t){e.expect(w.WHILE);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.whileNode(n,r,s)}function Ri(e,t){e.expect(w.UNTIL);let n=e.parseCompoundList();e.expect(w.DO);let r=e.parseCompoundList();r.length===0&&e.error("syntax error near unexpected token `done'"),e.expect(w.DONE);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.untilNode(n,r,s)}function Di(e,t){e.expect(w.CASE),e.isWord()||e.error("Expected word after 'case'");let n=e.parseWord();e.skipNewlines(),e.expect(w.IN),e.skipNewlines();let r=[];for(;!e.check(w.ESAC,w.EOF);){e.checkIterationLimit();let i=e.getPos(),o=Vd(e);if(o&&r.push(o),e.skipNewlines(),e.getPos()===i&&!o)break}e.expect(w.ESAC);let s=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.caseNode(n,r,s)}function Vd(e){e.check(w.LPAREN)&&e.advance();let t=[];for(;e.isWord()&&(t.push(e.parseWord()),e.check(w.PIPE));)e.advance();if(t.length===0)return null;e.expect(w.RPAREN),e.skipNewlines();let n=[];for(;!e.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND,w.ESAC,w.EOF);){e.checkIterationLimit(),e.isWord()&&e.peek(1).type===w.RPAREN&&e.error("syntax error near unexpected token `)'"),e.check(w.LPAREN)&&e.peek(1).type===w.WORD&&e.error(`syntax error near unexpected token \`${e.peek(1).value}'`);let s=e.getPos(),i=e.parseStatement();if(i&&n.push(i),e.skipSeparators(!1),e.getPos()===s&&!i)break}let r=";;";return e.check(w.DSEMI)?(e.advance(),r=";;"):e.check(w.SEMI_AND)?(e.advance(),r=";&"):e.check(w.SEMI_SEMI_AND)&&(e.advance(),r=";;&"),F.caseItem(t,n,r)}function Ii(e,t){e.expect(w.LPAREN);let n=e.parseCompoundList();e.expect(w.RPAREN);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.subshell(n,r)}function Oi(e,t){e.expect(w.LBRACE);let n=e.parseCompoundList();e.expect(w.RBRACE);let r=t?.skipRedirections?[]:e.parseOptionalRedirections();return F.group(n,r)}var Ud=["-a","-b","-c","-d","-e","-f","-g","-h","-k","-p","-r","-s","-t","-u","-w","-x","-G","-L","-N","-O","-S","-z","-n","-o","-v","-R"],qd=["==","!=","=~","<",">","-eq","-ne","-lt","-le","-gt","-ge","-nt","-ot","-ef"];function Nl(e){return e.isWord()||e.check(w.LBRACE)||e.check(w.RBRACE)||e.check(w.ASSIGNMENT_WORD)}function Rl(e){if(e.check(w.BANG)&&e.peek(1).type===w.LPAREN){e.advance(),e.advance();let t=1,n="!(";for(;t>0&&!e.check(w.EOF);)if(e.check(w.LPAREN))t++,n+="(",e.advance();else if(e.check(w.RPAREN))t--,t>0&&(n+=")"),e.advance();else if(e.isWord())n+=e.advance().value;else if(e.check(w.PIPE))n+="|",e.advance();else break;return n+=")",e.parseWordFromString(n,!1,!1,!1,!1,!0)}return e.parseWordNoBraceExpansion()}function Li(e){return e.skipNewlines(),jd(e)}function jd(e){let t=Dl(e);for(e.skipNewlines();e.check(w.OR_OR);){e.advance(),e.skipNewlines();let n=Dl(e);t={type:"CondOr",left:t,right:n},e.skipNewlines()}return t}function Dl(e){let t=_i(e);for(e.skipNewlines();e.check(w.AND_AND);){e.advance(),e.skipNewlines();let n=_i(e);t={type:"CondAnd",left:t,right:n},e.skipNewlines()}return t}function _i(e){return e.skipNewlines(),e.check(w.BANG)?(e.advance(),e.skipNewlines(),{type:"CondNot",operand:e.withDepth(()=>_i(e))}):Hd(e)}function Hd(e){if(e.check(w.LPAREN)){e.advance();let t=e.withDepth(()=>Li(e));return e.expect(w.RPAREN),{type:"CondGroup",expression:t}}if(Nl(e)){let t=e.current(),n=t.value;if(Ud.includes(n)&&!t.quoted){if(e.advance(),e.check(w.DBRACK_END)&&e.error(`Expected operand after ${n}`),Nl(e)){let i=e.parseWordNoBraceExpansion();return{type:"CondUnary",operator:n,operand:i}}let s=e.current();e.error(`unexpected argument \`${s.value}' to conditional unary operator`)}let r=e.parseWordNoBraceExpansion();if(e.isWord()&&qd.includes(e.current().value)){let s=e.advance().value,i;return s==="=~"?i=Gd(e):s==="=="||s==="!="?i=Rl(e):i=e.parseWordNoBraceExpansion(),{type:"CondBinary",operator:s,left:r,right:i}}if(e.check(w.LESS)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:"<",left:r,right:s}}if(e.check(w.GREAT)){e.advance();let s=e.parseWordNoBraceExpansion();return{type:"CondBinary",operator:">",left:r,right:s}}if(e.isWord()&&e.current().value==="="){e.advance();let s=Rl(e);return{type:"CondBinary",operator:"==",left:r,right:s}}return{type:"CondWord",word:r}}e.error("Expected conditional expression")}function Gd(e){let t=[],n=0,r=-1,s=e.getInput(),i=()=>e.check(w.DBRACK_END)||e.check(w.AND_AND)||e.check(w.OR_OR)||e.check(w.NEWLINE)||e.check(w.EOF);for(;!i();){let o=e.current(),a=r>=0&&o.start>r;if(n===0&&a)break;if(n>0&&a){let l=s.slice(r,o.start);t.push({type:"Literal",value:l})}if(e.isWord()||e.check(w.ASSIGNMENT_WORD)){let l=e.parseWordForRegex();t.push(...l.parts),r=e.peek(-1).end}else if(e.check(w.LPAREN)){let l=e.advance();t.push({type:"Literal",value:"("}),n++,r=l.end}else if(e.check(w.DPAREN_START)){let l=e.advance();t.push({type:"Literal",value:"(("}),n+=2,r=l.end}else if(e.check(w.DPAREN_END))if(n>=2){let l=e.advance();t.push({type:"Literal",value:"))"}),n-=2,r=l.end}else{if(n===1)break;break}else if(e.check(w.RPAREN))if(n>0){let l=e.advance();t.push({type:"Literal",value:")"}),n--,r=l.end}else break;else if(e.check(w.PIPE)){let l=e.advance();t.push({type:"Literal",value:"|"}),r=l.end}else if(e.check(w.SEMICOLON))if(n>0){let l=e.advance();t.push({type:"Literal",value:";"}),r=l.end}else break;else if(n>0&&e.check(w.LESS)){let l=e.advance();t.push({type:"Literal",value:"<"}),r=l.end}else if(n>0&&e.check(w.GREAT)){let l=e.advance();t.push({type:"Literal",value:">"}),r=l.end}else if(n>0&&e.check(w.DGREAT)){let l=e.advance();t.push({type:"Literal",value:">>"}),r=l.end}else if(n>0&&e.check(w.DLESS)){let l=e.advance();t.push({type:"Literal",value:"<<"}),r=l.end}else if(n>0&&e.check(w.LESSAND)){let l=e.advance();t.push({type:"Literal",value:"<&"}),r=l.end}else if(n>0&&e.check(w.GREATAND)){let l=e.advance();t.push({type:"Literal",value:">&"}),r=l.end}else if(n>0&&e.check(w.LESSGREAT)){let l=e.advance();t.push({type:"Literal",value:"<>"}),r=l.end}else if(n>0&&e.check(w.CLOBBER)){let l=e.advance();t.push({type:"Literal",value:">|"}),r=l.end}else if(n>0&&e.check(w.TLESS)){let l=e.advance();t.push({type:"Literal",value:"<<<"}),r=l.end}else if(n>0&&e.check(w.AMP)){let l=e.advance();t.push({type:"Literal",value:"&"}),r=l.end}else if(n>0&&e.check(w.LBRACE)){let l=e.advance();t.push({type:"Literal",value:"{"}),r=l.end}else if(n>0&&e.check(w.RBRACE)){let l=e.advance();t.push({type:"Literal",value:"}"}),r=l.end}else break}return t.length===0&&e.error("Expected regex pattern after =~"),{type:"Word",parts:t}}function Qd(e){let t="";for(let n=0;n<e.length;n++){let r=e[n],s=e[n+1];if(r!=="\\"||s===void 0){t+=r;continue}"\\[]^-".includes(s)&&(t+="\\"),t+=s,n++}return t}function fr(e){return e.length>0?e:[F.literal("")]}function Kd(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if("@*+?!".includes(s)&&r+1<e.length&&e[r+1]==="("){r++,n++,r++;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Xd(e,t,n){let r=n+1,s=t[r];if("@*#?$!-0123456789".includes(s))return{part:F.parameterExpansion(s),endIndex:r+1};let i="";for(;r<t.length&&/[a-zA-Z0-9_]/.test(t[r]);)i+=t[r],r++;return{part:F.parameterExpansion(i),endIndex:r}}function Yd(e,t,n,r=!1){let s=n+2,i=!1;t[s]==="!"&&(i=!0,s++);let o=!1;t[s]==="#"&&!/[}:#%/^,]/.test(t[s+1]||"}")&&(o=!0,s++);let a="",l=t[s];if(/[@*#?$!-]/.test(l)&&!/[a-zA-Z0-9_]/.test(t[s+1]||""))a=l,s++;else for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)a+=t[s],s++;if(t[s]==="["){let u=Ai(e,t,s,"[","]");if(a+=`[${Yr(t.slice(s+1,u))}]`,s=u+1,t[s]==="["){let f=1,d=s;for(;d<t.length&&f>0;)t[d]==="{"?f++:t[d]==="}"&&f--,f>0&&d++;let p=t.slice(n+2,d);return{part:F.parameterExpansion("",{type:"BadSubstitution",text:p}),endIndex:d+1}}}if(a===""&&!i&&!o&&t[s]!=="}"){let u=1,f=s;for(;f<t.length&&u>0;)t[f]==="{"?u++:t[f]==="}"&&u--,u>0&&f++;if(u>0)throw new xe("unexpected EOF while looking for matching '}'",0,0);let d=t.slice(n+2,f);return{part:F.parameterExpansion("",{type:"BadSubstitution",text:d}),endIndex:f+1}}let c=null;if(i){let u=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(u)if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=Ti(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):(c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="")}else c={type:"ArrayKeys",array:u[1],star:u[2]==="*"},a="";else if(t[s]==="*"||t[s]==="@"&&!/[QPaAEKkuUL]/.test(t[s+1]||"")){let f=t[s];s++,c={type:"VarNamePrefix",prefix:a,star:f==="*"},a=""}else if(s<t.length&&t[s]!=="}"&&/[:=\-+?#%/^,@]/.test(t[s])){let f=Ti(e,t,s,a,r);f.operation?(c={type:"Indirection",innerOp:f.operation},s=f.endIndex):c={type:"Indirection"}}else c={type:"Indirection"}}else if(o)if(t[s]===":")for(c={type:"LengthSliceError"};s<t.length&&t[s]!=="}";)s++;else t[s]!=="}"&&/[-+=?]/.test(t[s])?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):t[s]==="/"?e.error(`\${#${a}${t.slice(s,t.indexOf("}",s))}}: bad substitution`):c={type:"Length"};if(!c&&s<t.length&&t[s]!=="}"){let u=Ti(e,t,s,a,r);c=u.operation,s=u.endIndex}if(s<t.length&&t[s]!=="}"){let u=t[s];if(!/[:\-+=?#%/^,@[]/.test(u)){let f=s;for(;f<t.length&&t[f]!=="}";)f++;let d=t.slice(n,f+1);e.error(`\${${d.slice(2,-1)}}: bad substitution`)}}for(;s<t.length&&t[s]!=="}";)s++;if(s>=t.length)throw new xe("unexpected EOF while looking for matching '}'",0,0);return{part:F.parameterExpansion(a,c),endIndex:s+1}}function Ti(e,t,n,r,s=!1){let i=n,o=t[i],a=t[i+1]||"";if(o===":"){let l=a;if("-=?+".includes(l)){i+=2;let S=Sn(e,t,i),g=t.slice(i,S),m=e.withDepth(()=>Kt(e,g,!1,!1,!0,!1,s,!1,!1,!0)),b=F.word(fr(m));if(l==="-")return{operation:{type:"DefaultValue",word:b,checkEmpty:!0},endIndex:S};if(l==="=")return{operation:{type:"AssignDefault",word:b,checkEmpty:!0},endIndex:S};if(l==="?")return{operation:{type:"ErrorIfUnset",word:b,checkEmpty:!0},endIndex:S};if(l==="+")return{operation:{type:"UseAlternative",word:b,checkEmpty:!0},endIndex:S}}i++;let c=Sn(e,t,i),u=t.slice(i,c),f=-1,d=0,p=0;for(let E=0;E<u.length;E++){let S=u[E];if(S==="("||S==="[")d++;else if(S===")"||S==="]")d--;else if(S==="?"&&d===0)p++;else if(S===":"&&d===0)if(p>0)p--;else{f=E;break}}let h=f>=0?u.slice(0,f):u,y=f>=0?u.slice(f+1):null;return{operation:{type:"Substring",offset:vi(e,h),length:y!==null?vi(e,y):null},endIndex:c}}if("-=?+".includes(o)){i++;let l=Sn(e,t,i),c=t.slice(i,l),u=e.withDepth(()=>Kt(e,c,!1,!1,!0,!1,s,!1,!1,!0)),f=F.word(fr(u));if(o==="-")return{operation:{type:"DefaultValue",word:f,checkEmpty:!1},endIndex:l};if(o==="=")return{operation:{type:"AssignDefault",word:f,checkEmpty:!1},endIndex:l};if(o==="?")return{operation:{type:"ErrorIfUnset",word:c?f:null,checkEmpty:!1},endIndex:l};if(o==="+")return{operation:{type:"UseAlternative",word:f,checkEmpty:!1},endIndex:l}}if(o==="#"||o==="%"){let l=a===o,c=o==="#"?"prefix":"suffix";i+=l?2:1;let u=Sn(e,t,i),f=t.slice(i,u),d=e.withDepth(()=>Kt(e,f,!1,!1,!1));return{operation:{type:"PatternRemoval",pattern:F.word(fr(d)),side:c,greedy:l},endIndex:u}}if(o==="/"){let l=a==="/";i+=l?2:1;let c=null;t[i]==="#"?(c="start",i++):t[i]==="%"&&(c="end",i++);let u;c!==null&&(t[i]==="/"||t[i]==="}")?u=i:u=vl(e,t,i);let f=t.slice(i,u),d=e.withDepth(()=>Kt(e,f,!1,!1,!1)),p=F.word(fr(d)),h=null,y=u;if(t[u]==="/"){let E=u+1,S=Sn(e,t,E),g=t.slice(E,S),m=e.withDepth(()=>Kt(e,g,!1,!1,!1));h=F.word(fr(m)),y=S}return{operation:{type:"PatternReplacement",pattern:p,replacement:h,all:l,anchor:c},endIndex:y}}if(o==="^"||o===","){let l=a===o,c=o==="^"?"upper":"lower";i+=l?2:1;let u=Sn(e,t,i),f=t.slice(i,u),d=f?F.word([F.literal(f)]):null;return{operation:{type:"CaseModification",direction:c,all:l,pattern:d},endIndex:u}}return o==="@"&&/[QPaAEKkuUL]/.test(a)?{operation:{type:"Transform",operator:a},endIndex:i+2}:{operation:null,endIndex:i}}function Fi(e,t,n,r=!1){let s=n+1;if(s>=t.length)return{part:F.literal("$"),endIndex:s};let i=t[s];if(i==="("&&t[s+1]==="(")return e.isDollarDparenSubshell(t,n)?e.parseCommandSubstitution(t,n):e.parseArithmeticExpansion(t,n);if(i==="["){let o=1,a=s+1;for(;a<t.length&&o>0;)t[a]==="["?o++:t[a]==="]"&&o--,o>0&&a++;if(o===0){let l=t.slice(s+1,a),c=se(e,l);return{part:F.arithmeticExpansion(c),endIndex:a+1}}}return i==="("?e.parseCommandSubstitution(t,n):i==="{"?Yd(e,t,n,r):/[a-zA-Z_0-9@*#?$!-]/.test(i)?Xd(e,t,n):{part:F.literal("$"),endIndex:s}}function Il(e,t){let n=[],r=0,s="",i=()=>{s&&(n.push(F.literal(s)),s="")};for(;r<t.length;){let o=t[r];if(o==="\\"&&r+1<t.length){let a=t[r+1];if(a==="$"||a==="`"||a==='"'||a==="\\"){s+=a,r+=2;continue}s+=o,r++;continue}if(o==="$"){i();let{part:a,endIndex:l}=Fi(e,t,r,!0);a&&n.push(a),r=l;continue}if(o==="`"){i();let{part:a,endIndex:l}=e.parseBacktickSubstitution(t,r,!0);n.push(a),r=l;continue}s+=o,r++}return i(),n}function Jd(e,t,n){let r=[],s=n,i="",o=()=>{i&&(r.push(F.literal(i)),i="")};for(;s<t.length&&t[s]!=='"';){let a=t[s];if(a==="\\"&&s+1<t.length){let l=t[s+1];if('"\\$`\n'.includes(l)){i+=l,s+=2;continue}i+=a,s++;continue}if(a==="$"){o();let{part:l,endIndex:c}=Fi(e,t,s,!0);l&&r.push(l),s=c;continue}if(a==="`"){o();let{part:l,endIndex:c}=e.parseBacktickSubstitution(t,s,!0);r.push(l),s=c;continue}i+=a,s++}return o(),{part:F.doubleQuoted(r),endIndex:s}}function Kt(e,t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!0){if(r)return[F.singleQuoted(t)];if(n){let y=Il(e,t);return[F.doubleQuoted(y)]}if(t.length>=2&&t[0]==='"'&&t[t.length-1]==='"'){let y=t.slice(1,-1),E=!1;for(let S=0;S<y.length;S++){if(y[S]==='"'){E=!0;break}y[S]==="\\"&&S+1<y.length&&S++}if(!E){let S=Il(e,y);return[F.doubleQuoted(S)]}}let f=[],d=0,p="",h=()=>{p&&(f.push(F.literal(p)),p="")};for(;d<t.length;){let y=t[d];if(y==="\\"&&d+1<t.length){let E=t[d+1];if(l){h(),f.push(F.escaped(E)),d+=2;continue}if(!i&&!o){E!==`
70
+ `&&(h(),f.push(F.escaped(E))),d+=2;continue}let S=i?E==="$"||E==="`"||E===`
71
71
  `:E==="$"||E==="`"||E==='"'||E==="'"||E===`
72
72
  `||c&&E==="}",g=o?"*?[]\\".includes(E):"*?[]\\(){}.^+".includes(E);S?E!==`
73
- `&&(p+=E):g?(h(),f.push(T.escaped(E))):p+=`\\${E}`,d+=2;continue}if(m==="'"&&!o&&!i){h();let E=t.indexOf("'",d+1);if(E===-1){p+=t.slice(d);break}f.push(T.singleQuoted(t.slice(d+1,E))),d=E+1;continue}if(m==='"'&&!i){h();let{part:E,endIndex:S}=Wd(e,t,d+1);f.push(E),d=S+1;continue}if(m==="$"&&t[d+1]==="'"){h();let{part:E,endIndex:S}=ml(e,t,d+2);f.push(E),d=S;continue}if(m==="$"){h();let{part:E,endIndex:S}=Pi(e,t,d);E&&f.push(E),d=S;continue}if(m==="`"){h();let{part:E,endIndex:S}=e.parseBacktickSubstitution(t,d);f.push(E),d=S;continue}if((m==="<"||m===">")&&t[d+1]==="("&&!i&&!o){h();let{part:E,endIndex:S}=e.parseProcessSubstitutionFromString(t,d);f.push(E),d=S;continue}if(m==="~"){let E=d>0?t[d-1]:"";if(d===0&&u||E==="="||s&&E===":"){let g=dl(e,t,d),y=t[g];if(y===void 0||y==="/"||y===":"){h();let b=t.slice(d+1,g)||null;f.push({type:"TildeExpansion",user:b}),d=g;continue}}}if("@*+?!".includes(m)&&d+1<t.length&&t[d+1]==="("){let E=Fd(t,d+1);if(E!==-1){h();let S=t.slice(d,E+1);f.push({type:"Glob",pattern:S}),d=E+1;continue}}if(m==="*"||m==="?"||m==="["){h();let{pattern:E,endIndex:S}=hl(e,t,d);f.push({type:"Glob",pattern:l?Td(E):E}),d=S;continue}if(m==="{"&&!s&&!a&&!i){let E=yl(e,t,d,Zt);if(E){h(),f.push(E.part),d=E.endIndex;continue}}p+=m,d++}return h(),f}var j=class e{tokens=[];pos=0;pendingHeredocs=[];parseBudget;ownsParseBudget;_input="";processLineState;constructor(t){this.parseBudget=t??new Ur,this.ownsParseBudget=t===void 0}getInput(){return this._input}checkIterationLimit(){let t=this.current();this.parseBudget.chargeIteration(t?.line??1,t?.column??1)}enterDepth(){let t=this.current();return this.parseBudget.enter(t?.line??1,t?.column??1)}withDepth(t){let n=this.enterDepth();try{return t()}finally{n()}}parse(t,n){this.ownsParseBudget&&this.parseBudget.reset();let r=this.ownsParseBudget?void 0:this.enterDepth();try{if(t.length>ci)throw new ke(`Input too large: ${t.length} bytes exceeds limit of ${ci}`,1,1);this._input=t,this.processLineState=void 0;let s=new zr(t,n);if(this.tokens=s.tokenize(),this.tokens.length>tr)throw new ke(`Too many tokens: ${this.tokens.length} exceeds limit of ${tr}`,1,1);return this.pos=0,this.pendingHeredocs=[],this.parseBudget.chargeTokens(this.tokens.length),this.parseScript()}finally{r?.()}}parseTokens(t){this.ownsParseBudget&&this.parseBudget.reset();let n=this.ownsParseBudget?void 0:this.enterDepth();try{return this.tokens=t,this.pos=0,this.pendingHeredocs=[],this.processLineState=void 0,this.parseBudget.chargeTokens(t.length),this.parseScript()}finally{n?.()}}current(){return this.tokens[this.pos]||this.tokens[this.tokens.length-1]}peek(t=0){return this.tokens[this.pos+t]||this.tokens[this.tokens.length-1]}advance(){let t=this.current();return this.pos<this.tokens.length-1&&this.pos++,t}getPos(){return this.pos}getSourceLine(t=this.current()){let n=this.processLineState;return n?(n.currentPhysicalLine===void 0?n.currentPhysicalLine=t.line:t.line>n.currentPhysicalLine&&(n.currentPhysicalLine=t.line,n.currentLogicalLine+=1),n.currentLogicalLine):t.line}check(t,n,r,s,...i){let o=this.tokens[this.pos]?.type;return o===t||n!==void 0&&o===n||r!==void 0&&o===r||s!==void 0&&o===s?!0:i.length>0?i.includes(o):!1}expect(t,n){if(this.check(t))return this.advance();let r=this.current();throw new ke(n||`Expected ${t}, got ${r.type}`,r.line,r.column,r)}error(t){let n=this.current();throw new ke(t,n.line,n.column,n)}skipNewlines(){for(;this.check(w.NEWLINE,w.COMMENT);)this.check(w.NEWLINE)?(this.advance(),this.processHeredocs()):this.advance()}skipSeparators(t=!0){for(;;){if(this.check(w.NEWLINE)){this.advance(),this.processHeredocs();continue}if(this.check(w.SEMICOLON,w.COMMENT)){this.advance();continue}if(t&&this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)){this.advance();continue}break}}addPendingHeredoc(t,n,r,s){this.pendingHeredocs.push({redirect:t,delimiter:n,stripTabs:r,quoted:s})}processHeredocs(){for(let t of this.pendingHeredocs)if(this.check(w.HEREDOC_CONTENT)){let n=this.advance(),r;t.quoted?r=T.word([T.literal(n.value)]):r=this.parseWordFromString(n.value,!1,!1,!1,!0),t.redirect.target=T.hereDoc(t.delimiter,r,t.stripTabs,t.quoted,n.heredocTerminated??!1)}this.pendingHeredocs=[]}isStatementEnd(){return this.check(w.EOF,w.NEWLINE,w.SEMICOLON,w.AMP,w.AND_AND,w.OR_OR,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)}isCommandStart(){let t=this.current().type;return this.isWord()||t===w.ASSIGNMENT_WORD||t===w.FD_VARIABLE||t===w.LPAREN||t===w.LBRACE||t===w.DPAREN_START||t===w.DBRACK_START||sr(this)}parseScript(){let t=[],r=0;for(this.skipNewlines();!this.check(w.EOF);){r++,r>1e4&&this.error("Parser stuck: too many iterations (>10000)");let s=this.checkUnexpectedToken();if(s){t.push(s),this.skipSeparators(!1);continue}let i=this.pos,o=this.parseStatement();o&&t.push(o),this.check(w.HEREDOC_CONTENT)&&this.processHeredocs(),this.skipSeparators(!1),this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${this.current().value}'`),this.pos===i&&!this.check(w.EOF)&&this.error(`syntax error near unexpected token \`${this.current().value}'`)}return T.script(t)}checkUnexpectedToken(){let t=this.current().type,n=this.current().value;if(this.currentTokenJoinsProcessSubstitution())return null;if((t===w.DO||t===w.DONE||t===w.THEN||t===w.ELSE||t===w.ELIF||t===w.FI||t===w.ESAC)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.RBRACE||t===w.RPAREN){let r=`syntax error near unexpected token \`${n}'`;return this.advance(),T.statement([T.pipeline([T.simpleCommand(null,[],[],[])])],[],!1,{message:r,token:n})}return(t===w.DSEMI||t===w.SEMI_AND||t===w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.SEMICOLON&&this.error(`syntax error near unexpected token \`${n}'`),(t===w.AMP||t===w.AND_AND||t===w.OR_OR||t===w.PIPE||t===w.PIPE_AMP)&&this.error(`syntax error near unexpected token \`${n}'`),null}parseStatement(){if(this.skipNewlines(),!this.isCommandStart())return null;let t=this.current().start,n=[],r=[],s=!1,i=this.parsePipeline();for(n.push(i);this.check(w.AND_AND,w.OR_OR);){let l=this.advance();r.push(l.type===w.AND_AND?"&&":"||"),this.skipNewlines();let c=this.parsePipeline();n.push(c)}this.check(w.AMP)&&(this.advance(),s=!0);let o=this.pos>0?this.tokens[this.pos-1].end:t,a=this._input.slice(t,o);return T.statement(n,r,s,void 0,a)}parseTimePrefix(){if(!this.check(w.TIME)||this.currentTokenJoinsProcessSubstitution())return;this.advance();let t=!1;return this.check(w.WORD,w.NAME)&&this.current().value==="-p"&&(this.advance(),t=!0),t}parsePipeline(){let t=!1,n=!1,r=0;for(;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++;if(r===0){let l=this.parseTimePrefix();if(l!==void 0)for(t=!0,n=l;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++}let s=r%2===1,i=[],o=[],a=this.parseCommand();for(i.push(a);this.check(w.PIPE,w.PIPE_AMP);){let l=this.advance();this.skipNewlines(),o.push(l.type===w.PIPE_AMP);let c=this.parseCommand();i.push(c)}return T.pipeline(i,s,t,n,o.length>0?o:void 0)}parseCommand(){if(this.currentTokenJoinsProcessSubstitution())return yi(this);let t=this.current();switch(t.type){case w.IF:return gi(this);case w.FOR:return wi(this);case w.WHILE:return Ei(this);case w.UNTIL:return bi(this);case w.CASE:return Si(this);case w.LPAREN:return Ai(this);case w.LBRACE:return vi(this);case w.DPAREN_START:return this.dparenClosesWithSpacedParens()?this.parseNestedSubshellsFromDparen():this.parseArithmeticCommand();case w.DBRACK_START:return this.parseConditionalCommand();case w.FUNCTION:return this.parseFunctionDef();case w.TIME:break;case w.BANG:this.error(`syntax error near unexpected token \`${t.value}'`);break;default:li(t.type)&&this.error(`syntax error near unexpected token \`${t.value}'`)}return this.check(w.NAME,w.WORD)&&this.peek(1).type===w.LPAREN&&this.peek(2).type===w.RPAREN?this.parseFunctionDef():yi(this)}dparenClosesWithSpacedParens(){let t=1,n=1;for(;n<this.tokens.length-this.pos;){let r=this.peek(n);if(r.type===w.EOF)return!1;if(r.type===w.DPAREN_START||r.type===w.LPAREN)t++;else if(r.type===w.DPAREN_END){if(t-=2,t<=0)return!1}else if(r.type===w.RPAREN&&(t--,t===0&&this.peek(n+1).type===w.RPAREN))return!0;n++}return!1}parseNestedSubshellsFromDparen(){this.advance();let t=this.parseCompoundList();this.expect(w.RPAREN),this.expect(w.RPAREN);let n=this.parseOptionalRedirections(),r=T.subshell(t,[]);return T.subshell([T.statement([T.pipeline([r],!1,!1,!1)])],n)}isWord(){return this.isWordToken(Ce.Default)||this.isProcessSubstitutionStart()||this.currentTokenJoinsProcessSubstitution()}isWordToken(t){let n=this.current().type;return n===w.WORD||n===w.NAME||n===w.NUMBER||li(n)||n===w.BANG||n===w.ASSIGNMENT_WORD&&(t&Ce.Regex)!==0}isProcessSubstitutionStart(t=0){let n=this.peek(t),r=this.peek(t+1);return(n.type===w.LESS||n.type===w.GREAT)&&r.type===w.LPAREN&&n.end===r.start}currentTokenJoinsProcessSubstitution(){return this.current().type===w.COMMENT||!this.isAdjacentWordToken(Ce.Default)?!1:this.current().end===this.peek(1).start&&this.isProcessSubstitutionStart(1)}isAdjacentWordToken(t){let n=this.current().type;return this.isWordToken(t)||n===w.ASSIGNMENT_WORD||n===w.COMMENT||n===w.LBRACE||n===w.RBRACE||n===w.DBRACK_START||n===w.DBRACK_END||n===w.FD_VARIABLE}parseWord(t=Ce.Default){if(this.isProcessSubstitutionStart())return this.parseAdjacentWordParts([],this.current().start,t);let n=this.advance(),r=this.parseWordToken(n,t);return this.parseAdjacentWordParts(r.parts,n.end,t)}parseAdjacentWordParts(t,n,r=Ce.Default){for(;n===this.current().start;){if(this.isProcessSubstitutionStart()){t.push(this.parseProcessSubstitution()),n=this.tokens[this.pos-1].end;continue}if(!this.isAdjacentWordToken(r))break;let s=this.advance();t.push(...this.parseWordToken(s,r,t.length===0).parts),n=s.end}return T.word(t)}parseWordNoBraceExpansion(){return this.parseWord(Ce.NoBraceExpansion)}parseWordForRegex(){return this.parseWord(Ce.NoBraceExpansion|Ce.Regex)}parseWordToken(t,n,r=!0){return t.type===w.LBRACE||t.type===w.RBRACE||t.type===w.DBRACK_START||t.type===w.DBRACK_END||t.type===w.FD_VARIABLE?T.word([T.literal(t.type===w.FD_VARIABLE?`{${t.value}}`:t.value)]):this.parseWordFromString(t.value,t.quoted,t.singleQuoted,(n&Ce.Assignment)!==0,!1,(n&Ce.NoBraceExpansion)!==0,(n&Ce.Regex)!==0,r)}parseWordFromString(t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!0){let c=Zt(this,t,n,r,s,i,!1,o,a,!1,l);return T.word(c)}parseCommandSubstitution(t,n){return za(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitutionFromString(t,n){return Ua(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitution(){let t=this.advance();this.expect(w.LPAREN);let n=this.processLineState,r=this.getSourceLine(t);this.processLineState={currentLogicalLine:r};let s;try{s=T.script(this.parseCompoundList())}finally{this.processLineState=n}return this.check(w.EOF)&&this.error("unexpected EOF while looking for matching `)'"),this.expect(w.RPAREN),T.processSubstitution(s,t.type===w.LESS?"input":"output")}parseBacktickSubstitution(t,n,r=!1){return qa(t,n,r,()=>new e(this.parseBudget),s=>this.error(s))}isDollarDparenSubshell(t,n){return Wa(t,n)}parseArithmeticExpansion(t,n){let r=n+3,s=1,i=0,o=r;for(;o<t.length-1&&s>0;)t[o]==="$"&&t[o+1]==="("?t[o+2]==="("?(s++,o+=3):(i++,o+=2):t[o]==="("&&t[o+1]==="("?(s++,o+=2):t[o]===")"&&t[o+1]===")"?i>0?(i--,o++):(s--,s>0&&(o+=2)):t[o]==="("?(i++,o++):(t[o]===")"&&i>0&&i--,o++);let a=t.slice(r,o),l=this.parseArithmeticExpression(a);return{part:T.arithmeticExpansion(l),endIndex:o+2}}parseArithmeticCommand(){let t=this.expect(w.DPAREN_START),n="",r=1,s=0,i=!1,o=!1;for(;r>0&&!this.check(w.EOF);){if(i){if(i=!1,s>0){s--,n+=")";continue}if(this.check(w.RPAREN)){r--,o=!0,this.advance();continue}if(this.check(w.DPAREN_END)){r--,o=!0;continue}n+=")";continue}if(this.check(w.DPAREN_START))r++,n+="((",this.advance();else if(this.check(w.DPAREN_END))s>=2?(s-=2,n+="))",this.advance()):s===1?(s--,n+=")",i=!0,this.advance()):(r--,o=!0,r>0&&(n+="))"),this.advance());else if(this.check(w.LPAREN))s++,n+="(",this.advance();else if(this.check(w.RPAREN))s>0&&s--,n+=")",this.advance();else{let c=this.current().value,u=n.length>0?n[n.length-1]:"";n.length>0&&!n.endsWith(" ")&&!(c==="="&&/[|&^+\-*/%<>]$/.test(n))&&!(c==="<"&&u==="<")&&!(c===">"&&u===">")&&(n+=" "),n+=c,this.advance()}}o||this.expect(w.DPAREN_END);let a=this.parseArithmeticExpression(n.trim()),l=this.parseOptionalRedirections();return T.arithmeticCommand(a,l,this.getSourceLine(t))}parseConditionalCommand(){let t=this.expect(w.DBRACK_START),n=xi(this);this.expect(w.DBRACK_END);let r=this.parseOptionalRedirections();return T.conditionalCommand(n,r,this.getSourceLine(t))}parseFunctionDef(){let t;if(this.check(w.FUNCTION)){if(this.advance(),this.check(w.NAME)||this.check(w.WORD))t=this.advance().value;else{let s=this.current();throw new ke("Expected function name",s.line,s.column,s)}this.check(w.LPAREN)&&(this.advance(),this.expect(w.RPAREN))}else t=this.advance().value,t.includes("$")&&this.error(`\`${t}': not a valid identifier`),this.expect(w.LPAREN),this.expect(w.RPAREN);this.skipNewlines();let n=this.parseCompoundCommandBody({forFunctionBody:!0}),r=this.parseOptionalRedirections();return T.functionDef(t,n,r)}parseCompoundCommandBody(t){let n=t?.forFunctionBody;if(this.check(w.LBRACE))return vi(this,{skipRedirections:n});if(this.check(w.LPAREN))return Ai(this,{skipRedirections:n});if(this.check(w.IF))return gi(this,{skipRedirections:n});if(this.check(w.FOR))return wi(this,{skipRedirections:n});if(this.check(w.WHILE))return Ei(this,{skipRedirections:n});if(this.check(w.UNTIL))return bi(this,{skipRedirections:n});if(this.check(w.CASE))return Si(this,{skipRedirections:n});this.error("Expected compound command for function body")}parseCompoundList(){let t=this.enterDepth();try{let n=[];for(this.skipNewlines();(this.currentTokenJoinsProcessSubstitution()||!this.check(w.EOF,w.FI,w.ELSE,w.ELIF,w.THEN,w.DO,w.DONE,w.ESAC,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND))&&this.isCommandStart();){this.checkIterationLimit();let r=this.pos,s=this.parseStatement();if(s&&n.push(s),this.skipSeparators(),this.pos===r&&!s)break}return n}finally{t()}}parseOptionalRedirections(){let t=[];for(;sr(this);){this.checkIterationLimit();let n=this.pos;if(t.push(Hr(this)),this.pos===n)break}return t}parseArithmeticExpression(t){return re(this,t)}};function it(e,t){return new j().parse(e,t)}function vl(e){return bn(e)}function bn(e){return e.statements.map(kl).join(`
74
- `)}function kl(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(zd(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let n=t.join(" ");return e.background&&(n+=" &"),n}function zd(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let n=[];for(let s=0;s<e.commands.length;s++)if(n.push(xl(e.commands[s])),s<e.commands.length-1){let i=e.pipeStderr?.[s];n.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+n.join(" ")}function xl(e){switch(e.type){case"SimpleCommand":return Ud(e);case"If":return Yd(e);case"For":return Jd(e);case"CStyleFor":return ep(e);case"While":return tp(e);case"Until":return np(e);case"Case":return rp(e);case"Subshell":return ip(e);case"Group":return op(e);case"ArithmeticCommand":return ap(e);case"ConditionalCommand":return lp(e);case"FunctionDef":return cp(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function Ud(e){let t=[];for(let n of e.assignments)t.push(qd(n));e.name&&t.push(Se(e.name));for(let n of e.args)t.push(Se(n));for(let n of e.redirections)t.push(Cl(n));return t.join(" ")}function qd(e){let t=e.append?"+=":"=";if(e.array){let n=e.array.map(Se).join(" ");return`${e.name}${t}(${n})`}return e.value?`${e.name}${t}${Se(e.value)}`:`${e.name}${t}`}function Se(e){return e.parts.map(t=>Zr(t,!1)).join("")}function Qt(e){return e.parts.map(t=>Zr(t,!0)).join("")}function Zr(e,t){switch(e.type){case"Literal":return t?Gd(e.value):jd(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(n=>Zr(n,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return $l(e);case"CommandSubstitution":return e.legacy?`\`${bn(e.body)}\``:`$(${bn(e.body)})`;case"ArithmeticExpansion":return`$((${fe(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${bn(e.body)})`:`>(${bn(e.body)})`;case"BraceExpansion":return Kd(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let n=e;throw new Error(`Unsupported word part type: ${n.type}`)}}}function jd(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function Gd(e){return e.replace(/[$`"\\]/g,"\\$&")}function Hd(e,t){return e.parts.map(n=>Zd(n,t)).join("")}function Zd(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return $l(e);case"CommandSubstitution":return e.legacy?`\`${bn(e.body)}\``:`$(${bn(e.body)})`;case"ArithmeticExpansion":return`$((${fe(e.expression.expression)}))`;default:return Zr(e,!1)}}function $l(e){return e.operation?`\${${Pl(e.parameter,e.operation)}}`:Qd(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function Qd(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Pl(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${Qt(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${Qt(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?Qt(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${Qt(t.word)}`;case"Substring":{let n=fe(t.offset.expression);return t.length?`${e}:${n}:${fe(t.length.expression)}`:`${e}:${n}`}case"PatternRemoval":{let n=t.side==="prefix"?"#":"%",r=t.greedy?`${n}${n}`:n;return`${e}${r}${Qt(t.pattern)}`}case"PatternReplacement":{let n="/";t.all?n="//":t.anchor==="start"?n="/#":t.anchor==="end"&&(n="/%");let r=t.replacement?`/${Qt(t.replacement)}`:"";return`${e}${n}${Qt(t.pattern)}${r}`}case"CaseModification":{let n=t.direction==="upper"?"^":",",r=t.all?`${n}${n}`:n,s=t.pattern?Qt(t.pattern):"";return`${e}${r}${s}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Pl(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let n=t;throw new Error(`Unsupported parameter operation type: ${n.type}`)}}}function Kd(e){return`{${e.items.map(Xd).join(",")}}`}function Xd(e){if(e.type==="Word")return Se(e.word);let t=e.startStr??String(e.start),n=e.endStr??String(e.end);return e.step!==void 0?`${t}..${n}..${e.step}`:`${t}..${n}`}function Cl(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let n=e.target;if(n.terminated===!1)throw new Error("Cannot serialize an unterminated here-document");let r=n.quoted?`'${n.delimiter}'`:n.delimiter,s=Hd(n.content,n.quoted);return`${t}${e.operator}${r}
75
- ${s}${n.delimiter}`}return e.operator==="<<<"?`${t}<<< ${Se(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${Se(e.target)}`:`${t}${e.operator} ${Se(e.target)}`}function dt(e){return e.length===0?"":` ${e.map(Cl).join(" ")}`}function ot(e){return e.map(kl).join(`
76
- `)}function Yd(e){let t=[];for(let n=0;n<e.clauses.length;n++){let r=e.clauses[n],s=n===0?"if":"elif";t.push(`${s} ${ot(r.condition)}; then
77
- ${ot(r.body)}`)}return e.elseBody&&t.push(`else
78
- ${ot(e.elseBody)}`),`${t.join(`
73
+ `&&(p+=E):g?(h(),f.push(F.escaped(E))):p+=`\\${E}`,d+=2;continue}if(y==="'"&&!o&&!i){h();let E=t.indexOf("'",d+1);if(E===-1){p+=t.slice(d);break}f.push(F.singleQuoted(t.slice(d+1,E))),d=E+1;continue}if(y==='"'&&!i){h();let{part:E,endIndex:S}=Jd(e,t,d+1);f.push(E),d=S+1;continue}if(y==="$"&&t[d+1]==="'"){h();let{part:E,endIndex:S}=xl(e,t,d+2);f.push(E),d=S;continue}if(y==="$"){h();let{part:E,endIndex:S}=Fi(e,t,d);E&&f.push(E),d=S;continue}if(y==="`"){h();let{part:E,endIndex:S}=e.parseBacktickSubstitution(t,d);f.push(E),d=S;continue}if((y==="<"||y===">")&&t[d+1]==="("&&!i&&!o){h();let{part:E,endIndex:S}=e.parseProcessSubstitutionFromString(t,d);f.push(E),d=S;continue}if(y==="~"){let E=d>0?t[d-1]:"";if(d===0&&u||E==="="||s&&E===":"){let g=Al(e,t,d),m=t[g];if(m===void 0||m==="/"||m===":"){h();let b=t.slice(d+1,g)||null;f.push({type:"TildeExpansion",user:b}),d=g;continue}}}if("@*+?!".includes(y)&&d+1<t.length&&t[d+1]==="("){let E=Kd(t,d+1);if(E!==-1){h();let S=t.slice(d,E+1);f.push({type:"Glob",pattern:S}),d=E+1;continue}}if(y==="*"||y==="?"||y==="["){h();let{pattern:E,endIndex:S}=kl(e,t,d);f.push({type:"Glob",pattern:l?Qd(E):E}),d=S;continue}if(y==="{"&&!s&&!a&&!i){let E=$l(e,t,d,Kt);if(E){h(),f.push(E.part),d=E.endIndex;continue}}p+=y,d++}return h(),f}var H=class e{tokens=[];pos=0;pendingHeredocs=[];parseBudget;ownsParseBudget;_input="";processLineState;constructor(t){this.parseBudget=t??new Qr,this.ownsParseBudget=t===void 0}getInput(){return this._input}checkIterationLimit(){let t=this.current();this.parseBudget.chargeIteration(t?.line??1,t?.column??1)}enterDepth(){let t=this.current();return this.parseBudget.enter(t?.line??1,t?.column??1)}withDepth(t){let n=this.enterDepth();try{return t()}finally{n()}}parse(t,n){this.ownsParseBudget&&this.parseBudget.reset();let r=this.ownsParseBudget?void 0:this.enterDepth();try{if(t.length>Ei)throw new xe(`Input too large: ${t.length} bytes exceeds limit of ${Ei}`,1,1);this._input=t,this.processLineState=void 0;let s=new Zr(t,n);if(this.tokens=s.tokenize(),this.tokens.length>ar)throw new xe(`Too many tokens: ${this.tokens.length} exceeds limit of ${ar}`,1,1);return this.pos=0,this.pendingHeredocs=[],this.parseBudget.chargeTokens(this.tokens.length),this.parseScript()}finally{r?.()}}parseTokens(t){this.ownsParseBudget&&this.parseBudget.reset();let n=this.ownsParseBudget?void 0:this.enterDepth();try{return this.tokens=t,this.pos=0,this.pendingHeredocs=[],this.processLineState=void 0,this.parseBudget.chargeTokens(t.length),this.parseScript()}finally{n?.()}}current(){return this.tokens[this.pos]||this.tokens[this.tokens.length-1]}peek(t=0){return this.tokens[this.pos+t]||this.tokens[this.tokens.length-1]}advance(){let t=this.current();return this.pos<this.tokens.length-1&&this.pos++,t}getPos(){return this.pos}getSourceLine(t=this.current()){let n=this.processLineState;return n?(n.currentPhysicalLine===void 0?n.currentPhysicalLine=t.line:t.line>n.currentPhysicalLine&&(n.currentPhysicalLine=t.line,n.currentLogicalLine+=1),n.currentLogicalLine):t.line}check(t,n,r,s,...i){let o=this.tokens[this.pos]?.type;return o===t||n!==void 0&&o===n||r!==void 0&&o===r||s!==void 0&&o===s?!0:i.length>0?i.includes(o):!1}expect(t,n){if(this.check(t))return this.advance();let r=this.current();throw new xe(n||`Expected ${t}, got ${r.type}`,r.line,r.column,r)}error(t){let n=this.current();throw new xe(t,n.line,n.column,n)}skipNewlines(){for(;this.check(w.NEWLINE,w.COMMENT);)this.check(w.NEWLINE)?(this.advance(),this.processHeredocs()):this.advance()}skipSeparators(t=!0){for(;;){if(this.check(w.NEWLINE)){this.advance(),this.processHeredocs();continue}if(this.check(w.SEMICOLON,w.COMMENT)){this.advance();continue}if(t&&this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)){this.advance();continue}break}}addPendingHeredoc(t,n,r,s){this.pendingHeredocs.push({redirect:t,delimiter:n,stripTabs:r,quoted:s})}processHeredocs(){for(let t of this.pendingHeredocs)if(this.check(w.HEREDOC_CONTENT)){let n=this.advance(),r;t.quoted?r=F.word([F.literal(n.value)]):r=this.parseWordFromString(n.value,!1,!1,!1,!0),t.redirect.target=F.hereDoc(t.delimiter,r,t.stripTabs,t.quoted,n.heredocTerminated??!1)}this.pendingHeredocs=[]}isStatementEnd(){return this.check(w.EOF,w.NEWLINE,w.SEMICOLON,w.AMP,w.AND_AND,w.OR_OR,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)}isCommandStart(){let t=this.current().type;return this.isWord()||t===w.ASSIGNMENT_WORD||t===w.FD_VARIABLE||t===w.LPAREN||t===w.LBRACE||t===w.DPAREN_START||t===w.DBRACK_START||ur(this)}parseScript(){let t=[],r=0;for(this.skipNewlines();!this.check(w.EOF);){r++,r>1e4&&this.error("Parser stuck: too many iterations (>10000)");let s=this.checkUnexpectedToken();if(s){t.push(s),this.skipSeparators(!1);continue}let i=this.pos,o=this.parseStatement();o&&t.push(o),this.check(w.HEREDOC_CONTENT)&&this.processHeredocs(),this.skipSeparators(!1),this.check(w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${this.current().value}'`),this.pos===i&&!this.check(w.EOF)&&this.error(`syntax error near unexpected token \`${this.current().value}'`)}return F.script(t)}checkUnexpectedToken(){let t=this.current().type,n=this.current().value;if(this.currentTokenJoinsProcessSubstitution())return null;if((t===w.DO||t===w.DONE||t===w.THEN||t===w.ELSE||t===w.ELIF||t===w.FI||t===w.ESAC)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.RBRACE||t===w.RPAREN){let r=`syntax error near unexpected token \`${n}'`;return this.advance(),F.statement([F.pipeline([F.simpleCommand(null,[],[],[])])],[],!1,{message:r,token:n})}return(t===w.DSEMI||t===w.SEMI_AND||t===w.SEMI_SEMI_AND)&&this.error(`syntax error near unexpected token \`${n}'`),t===w.SEMICOLON&&this.error(`syntax error near unexpected token \`${n}'`),(t===w.AMP||t===w.AND_AND||t===w.OR_OR||t===w.PIPE||t===w.PIPE_AMP)&&this.error(`syntax error near unexpected token \`${n}'`),null}parseStatement(){if(this.skipNewlines(),!this.isCommandStart())return null;let t=this.current().start,n=[],r=[],s=!1,i=this.parsePipeline();for(n.push(i);this.check(w.AND_AND,w.OR_OR);){let l=this.advance();r.push(l.type===w.AND_AND?"&&":"||"),this.skipNewlines();let c=this.parsePipeline();n.push(c)}this.check(w.AMP)&&(this.advance(),s=!0);let o=this.pos>0?this.tokens[this.pos-1].end:t,a=this._input.slice(t,o);return F.statement(n,r,s,void 0,a)}parseTimePrefix(){if(!this.check(w.TIME)||this.currentTokenJoinsProcessSubstitution())return;this.advance();let t=!1;return this.check(w.WORD,w.NAME)&&this.current().value==="-p"&&(this.advance(),t=!0),t}parsePipeline(){let t=!1,n=!1,r=0;for(;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++;if(r===0){let l=this.parseTimePrefix();if(l!==void 0)for(t=!0,n=l;this.check(w.BANG)&&!this.currentTokenJoinsProcessSubstitution();)this.advance(),r++}let s=r%2===1,i=[],o=[],a=this.parseCommand();for(i.push(a);this.check(w.PIPE,w.PIPE_AMP);){let l=this.advance();this.skipNewlines(),o.push(l.type===w.PIPE_AMP);let c=this.parseCommand();i.push(c)}return F.pipeline(i,s,t,n,o.length>0?o:void 0)}parseCommand(){if(this.currentTokenJoinsProcessSubstitution())return $i(this);let t=this.current();switch(t.type){case w.IF:return Pi(this);case w.FOR:return Ci(this);case w.WHILE:return Ni(this);case w.UNTIL:return Ri(this);case w.CASE:return Di(this);case w.LPAREN:return Ii(this);case w.LBRACE:return Oi(this);case w.DPAREN_START:return this.dparenClosesWithSpacedParens()?this.parseNestedSubshellsFromDparen():this.parseArithmeticCommand();case w.DBRACK_START:return this.parseConditionalCommand();case w.FUNCTION:return this.parseFunctionDef();case w.TIME:break;case w.BANG:this.error(`syntax error near unexpected token \`${t.value}'`);break;default:wi(t.type)&&this.error(`syntax error near unexpected token \`${t.value}'`)}return this.check(w.NAME,w.WORD)&&this.peek(1).type===w.LPAREN&&this.peek(2).type===w.RPAREN?this.parseFunctionDef():$i(this)}dparenClosesWithSpacedParens(){let t=1,n=1;for(;n<this.tokens.length-this.pos;){let r=this.peek(n);if(r.type===w.EOF)return!1;if(r.type===w.DPAREN_START||r.type===w.LPAREN)t++;else if(r.type===w.DPAREN_END){if(t-=2,t<=0)return!1}else if(r.type===w.RPAREN&&(t--,t===0&&this.peek(n+1).type===w.RPAREN))return!0;n++}return!1}parseNestedSubshellsFromDparen(){this.advance();let t=this.parseCompoundList();this.expect(w.RPAREN),this.expect(w.RPAREN);let n=this.parseOptionalRedirections(),r=F.subshell(t,[]);return F.subshell([F.statement([F.pipeline([r],!1,!1,!1)])],n)}isWord(){return this.isWordToken(Ne.Default)||this.isProcessSubstitutionStart()||this.currentTokenJoinsProcessSubstitution()}isWordToken(t){let n=this.current().type;return n===w.WORD||n===w.NAME||n===w.NUMBER||wi(n)||n===w.BANG||n===w.ASSIGNMENT_WORD&&(t&Ne.Regex)!==0}isProcessSubstitutionStart(t=0){let n=this.peek(t),r=this.peek(t+1);return(n.type===w.LESS||n.type===w.GREAT)&&r.type===w.LPAREN&&n.end===r.start}currentTokenJoinsProcessSubstitution(){return this.current().type===w.COMMENT||!this.isAdjacentWordToken(Ne.Default)?!1:this.current().end===this.peek(1).start&&this.isProcessSubstitutionStart(1)}isAdjacentWordToken(t){let n=this.current().type;return this.isWordToken(t)||n===w.ASSIGNMENT_WORD||n===w.COMMENT||n===w.LBRACE||n===w.RBRACE||n===w.DBRACK_START||n===w.DBRACK_END||n===w.FD_VARIABLE}parseWord(t=Ne.Default){if(this.isProcessSubstitutionStart())return this.parseAdjacentWordParts([],this.current().start,t);let n=this.advance(),r=this.parseWordToken(n,t);return this.parseAdjacentWordParts(r.parts,n.end,t)}parseAdjacentWordParts(t,n,r=Ne.Default){for(;n===this.current().start;){if(this.isProcessSubstitutionStart()){t.push(this.parseProcessSubstitution()),n=this.tokens[this.pos-1].end;continue}if(!this.isAdjacentWordToken(r))break;let s=this.advance();t.push(...this.parseWordToken(s,r,t.length===0).parts),n=s.end}return F.word(t)}parseWordNoBraceExpansion(){return this.parseWord(Ne.NoBraceExpansion)}parseWordForRegex(){return this.parseWord(Ne.NoBraceExpansion|Ne.Regex)}parseWordToken(t,n,r=!0){return t.type===w.LBRACE||t.type===w.RBRACE||t.type===w.DBRACK_START||t.type===w.DBRACK_END||t.type===w.FD_VARIABLE?F.word([F.literal(t.type===w.FD_VARIABLE?`{${t.value}}`:t.value)]):this.parseWordFromString(t.value,t.quoted,t.singleQuoted,(n&Ne.Assignment)!==0,!1,(n&Ne.NoBraceExpansion)!==0,(n&Ne.Regex)!==0,r)}parseWordFromString(t,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1,l=!0){let c=Kt(this,t,n,r,s,i,!1,o,a,!1,l);return F.word(c)}parseCommandSubstitution(t,n){return Ya(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitutionFromString(t,n){return Ja(t,n,()=>new e(this.parseBudget),r=>this.error(r))}parseProcessSubstitution(){let t=this.advance();this.expect(w.LPAREN);let n=this.processLineState,r=this.getSourceLine(t);this.processLineState={currentLogicalLine:r};let s;try{s=F.script(this.parseCompoundList())}finally{this.processLineState=n}return this.check(w.EOF)&&this.error("unexpected EOF while looking for matching `)'"),this.expect(w.RPAREN),F.processSubstitution(s,t.type===w.LESS?"input":"output")}parseBacktickSubstitution(t,n,r=!1){return el(t,n,r,()=>new e(this.parseBudget),s=>this.error(s))}isDollarDparenSubshell(t,n){return Ka(t,n)}parseArithmeticExpansion(t,n){let r=n+3,s=1,i=0,o=r;for(;o<t.length-1&&s>0;)t[o]==="$"&&t[o+1]==="("?t[o+2]==="("?(s++,o+=3):(i++,o+=2):t[o]==="("&&t[o+1]==="("?(s++,o+=2):t[o]===")"&&t[o+1]===")"?i>0?(i--,o++):(s--,s>0&&(o+=2)):t[o]==="("?(i++,o++):(t[o]===")"&&i>0&&i--,o++);let a=t.slice(r,o),l=this.parseArithmeticExpression(a);return{part:F.arithmeticExpansion(l),endIndex:o+2}}parseArithmeticCommand(){let t=this.expect(w.DPAREN_START),n="",r=1,s=0,i=!1,o=!1;for(;r>0&&!this.check(w.EOF);){if(i){if(i=!1,s>0){s--,n+=")";continue}if(this.check(w.RPAREN)){r--,o=!0,this.advance();continue}if(this.check(w.DPAREN_END)){r--,o=!0;continue}n+=")";continue}if(this.check(w.DPAREN_START))r++,n+="((",this.advance();else if(this.check(w.DPAREN_END))s>=2?(s-=2,n+="))",this.advance()):s===1?(s--,n+=")",i=!0,this.advance()):(r--,o=!0,r>0&&(n+="))"),this.advance());else if(this.check(w.LPAREN))s++,n+="(",this.advance();else if(this.check(w.RPAREN))s>0&&s--,n+=")",this.advance();else{let c=this.current().value,u=n.length>0?n[n.length-1]:"";n.length>0&&!n.endsWith(" ")&&!(c==="="&&/[|&^+\-*/%<>]$/.test(n))&&!(c==="<"&&u==="<")&&!(c===">"&&u===">")&&(n+=" "),n+=c,this.advance()}}o||this.expect(w.DPAREN_END);let a=this.parseArithmeticExpression(n.trim()),l=this.parseOptionalRedirections();return F.arithmeticCommand(a,l,this.getSourceLine(t))}parseConditionalCommand(){let t=this.expect(w.DBRACK_START),n=Li(this);this.expect(w.DBRACK_END);let r=this.parseOptionalRedirections();return F.conditionalCommand(n,r,this.getSourceLine(t))}parseFunctionDef(){let t;if(this.check(w.FUNCTION)){if(this.advance(),this.check(w.NAME)||this.check(w.WORD))t=this.advance().value;else{let s=this.current();throw new xe("Expected function name",s.line,s.column,s)}this.check(w.LPAREN)&&(this.advance(),this.expect(w.RPAREN))}else t=this.advance().value,t.includes("$")&&this.error(`\`${t}': not a valid identifier`),this.expect(w.LPAREN),this.expect(w.RPAREN);this.skipNewlines();let n=this.parseCompoundCommandBody({forFunctionBody:!0}),r=this.parseOptionalRedirections();return F.functionDef(t,n,r)}parseCompoundCommandBody(t){let n=t?.forFunctionBody;if(this.check(w.LBRACE))return Oi(this,{skipRedirections:n});if(this.check(w.LPAREN))return Ii(this,{skipRedirections:n});if(this.check(w.IF))return Pi(this,{skipRedirections:n});if(this.check(w.FOR))return Ci(this,{skipRedirections:n});if(this.check(w.WHILE))return Ni(this,{skipRedirections:n});if(this.check(w.UNTIL))return Ri(this,{skipRedirections:n});if(this.check(w.CASE))return Di(this,{skipRedirections:n});this.error("Expected compound command for function body")}parseCompoundList(){let t=this.enterDepth();try{let n=[];for(this.skipNewlines();(this.currentTokenJoinsProcessSubstitution()||!this.check(w.EOF,w.FI,w.ELSE,w.ELIF,w.THEN,w.DO,w.DONE,w.ESAC,w.RPAREN,w.RBRACE,w.DSEMI,w.SEMI_AND,w.SEMI_SEMI_AND))&&this.isCommandStart();){this.checkIterationLimit();let r=this.pos,s=this.parseStatement();if(s&&n.push(s),this.skipSeparators(),this.pos===r&&!s)break}return n}finally{t()}}parseOptionalRedirections(){let t=[];for(;ur(this);){this.checkIterationLimit();let n=this.pos;if(t.push(Jr(this)),this.pos===n)break}return t}parseArithmeticExpression(t){return se(this,t)}};function ot(e,t){return new H().parse(e,t)}function Ol(e){return vn(e)}function vn(e){return e.statements.map(_l).join(`
74
+ `)}function _l(e){let t=[];for(let r=0;r<e.pipelines.length;r++)t.push(tp(e.pipelines[r])),r<e.operators.length&&t.push(e.operators[r]);let n=t.join(" ");return e.background&&(n+=" &"),n}function tp(e){let t=[];e.timed&&t.push(e.timePosix?"time -p":"time"),e.negated&&t.push("!");let n=[];for(let s=0;s<e.commands.length;s++)if(n.push(Ll(e.commands[s])),s<e.commands.length-1){let i=e.pipeStderr?.[s];n.push(i?"|&":"|")}return(t.length>0?`${t.join(" ")} `:"")+n.join(" ")}function Ll(e){switch(e.type){case"SimpleCommand":return np(e);case"If":return fp(e);case"For":return dp(e);case"CStyleFor":return pp(e);case"While":return hp(e);case"Until":return mp(e);case"Case":return yp(e);case"Subshell":return wp(e);case"Group":return Ep(e);case"ArithmeticCommand":return bp(e);case"ConditionalCommand":return Sp(e);case"FunctionDef":return Ap(e);default:{let t=e;throw new Error(`Unsupported command type: ${t.type}`)}}}function np(e){let t=[];for(let n of e.assignments)t.push(rp(n));e.name&&t.push(Ae(e.name));for(let n of e.args)t.push(Ae(n));for(let n of e.redirections)t.push(Ml(n));return t.join(" ")}function rp(e){let t=e.append?"+=":"=";if(e.array){let n=e.array.map(Ae).join(" ");return`${e.name}${t}(${n})`}return e.value?`${e.name}${t}${Ae(e.value)}`:`${e.name}${t}`}function Ae(e){return e.parts.map(t=>es(t,!1)).join("")}function Xt(e){return e.parts.map(t=>es(t,!0)).join("")}function es(e,t){switch(e.type){case"Literal":return t?ip(e.value):sp(e.value);case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(n=>es(n,!0)).join("")}"`;case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Tl(e);case"CommandSubstitution":return e.legacy?`\`${vn(e.body)}\``:`$(${vn(e.body)})`;case"ArithmeticExpansion":return`$((${de(e.expression.expression)}))`;case"ProcessSubstitution":return e.direction==="input"?`<(${vn(e.body)})`:`>(${vn(e.body)})`;case"BraceExpansion":return cp(e);case"TildeExpansion":return e.user!==null?`~${e.user}`:"~";case"Glob":return e.pattern;default:{let n=e;throw new Error(`Unsupported word part type: ${n.type}`)}}}function sp(e){return e.replace(/[\s\\'"`!|&;()<>{}[\]*?~#]/g,"\\$&")}function ip(e){return e.replace(/[$`"\\]/g,"\\$&")}function op(e,t){return e.parts.map(n=>ap(n,t)).join("")}function ap(e,t){switch(e.type){case"Literal":return t?e.value:e.value.replace(/[$`]/g,"\\$&");case"Escaped":return`\\${e.value}`;case"ParameterExpansion":return Tl(e);case"CommandSubstitution":return e.legacy?`\`${vn(e.body)}\``:`$(${vn(e.body)})`;case"ArithmeticExpansion":return`$((${de(e.expression.expression)}))`;default:return es(e,!1)}}function Tl(e){return e.operation?`\${${Fl(e.parameter,e.operation)}}`:lp(e.parameter)?`\${${e.parameter}}`:`$${e.parameter}`}function lp(e){return!(/^[?#@*$!\-0-9]$/.test(e)||/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e))}function Fl(e,t){switch(t.type){case"Length":return`#${e}`;case"LengthSliceError":return`#${e}:`;case"BadSubstitution":return t.text;case"DefaultValue":return`${e}${t.checkEmpty?":":""}-${Xt(t.word)}`;case"AssignDefault":return`${e}${t.checkEmpty?":":""}=${Xt(t.word)}`;case"ErrorIfUnset":return`${e}${t.checkEmpty?":":""}?${t.word?Xt(t.word):""}`;case"UseAlternative":return`${e}${t.checkEmpty?":":""}+${Xt(t.word)}`;case"Substring":{let n=de(t.offset.expression);return t.length?`${e}:${n}:${de(t.length.expression)}`:`${e}:${n}`}case"PatternRemoval":{let n=t.side==="prefix"?"#":"%",r=t.greedy?`${n}${n}`:n;return`${e}${r}${Xt(t.pattern)}`}case"PatternReplacement":{let n="/";t.all?n="//":t.anchor==="start"?n="/#":t.anchor==="end"&&(n="/%");let r=t.replacement?`/${Xt(t.replacement)}`:"";return`${e}${n}${Xt(t.pattern)}${r}`}case"CaseModification":{let n=t.direction==="upper"?"^":",",r=t.all?`${n}${n}`:n,s=t.pattern?Xt(t.pattern):"";return`${e}${r}${s}`}case"Transform":return`${e}@${t.operator}`;case"Indirection":return t.innerOp?`!${Fl(e,t.innerOp)}`:`!${e}`;case"ArrayKeys":return`!${t.array}[${t.star?"*":"@"}]`;case"VarNamePrefix":return`!${t.prefix}${t.star?"*":"@"}`;default:{let n=t;throw new Error(`Unsupported parameter operation type: ${n.type}`)}}}function cp(e){return`{${e.items.map(up).join(",")}}`}function up(e){if(e.type==="Word")return Ae(e.word);let t=e.startStr??String(e.start),n=e.endStr??String(e.end);return e.step!==void 0?`${t}..${n}..${e.step}`:`${t}..${n}`}function Ml(e){let t=e.fdVariable?`{${e.fdVariable}}`:e.fd!==null?String(e.fd):"";if(e.operator==="<<"||e.operator==="<<-"){let n=e.target;if(n.terminated===!1)throw new Error("Cannot serialize an unterminated here-document");let r=n.quoted?`'${n.delimiter}'`:n.delimiter,s=op(n.content,n.quoted);return`${t}${e.operator}${r}
75
+ ${s}${n.delimiter}`}return e.operator==="<<<"?`${t}<<< ${Ae(e.target)}`:e.operator==="&>"||e.operator==="&>>"?`${e.operator} ${Ae(e.target)}`:`${t}${e.operator} ${Ae(e.target)}`}function ht(e){return e.length===0?"":` ${e.map(Ml).join(" ")}`}function at(e){return e.map(_l).join(`
76
+ `)}function fp(e){let t=[];for(let n=0;n<e.clauses.length;n++){let r=e.clauses[n],s=n===0?"if":"elif";t.push(`${s} ${at(r.condition)}; then
77
+ ${at(r.body)}`)}return e.elseBody&&t.push(`else
78
+ ${at(e.elseBody)}`),`${t.join(`
79
79
  `)}
80
- fi${dt(e.redirections)}`}function Jd(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let n=e.words.map(Se).join(" ");t=`for ${e.variable} in ${n}`}return`${t}; do
81
- ${ot(e.body)}
82
- done${dt(e.redirections)}`}function ep(e){let t=e.init?fe(e.init.expression):"",n=e.condition?fe(e.condition.expression):"",r=e.update?fe(e.update.expression):"";return`for ((${t}; ${n}; ${r})); do
83
- ${ot(e.body)}
84
- done${dt(e.redirections)}`}function tp(e){return`while ${ot(e.condition)}; do
85
- ${ot(e.body)}
86
- done${dt(e.redirections)}`}function np(e){return`until ${ot(e.condition)}; do
87
- ${ot(e.body)}
88
- done${dt(e.redirections)}`}function rp(e){let t=e.items.map(sp).join(`
89
- `);return`case ${Se(e.word)} in
80
+ fi${ht(e.redirections)}`}function dp(e){let t;if(e.words===null)t=`for ${e.variable}`;else{let n=e.words.map(Ae).join(" ");t=`for ${e.variable} in ${n}`}return`${t}; do
81
+ ${at(e.body)}
82
+ done${ht(e.redirections)}`}function pp(e){let t=e.init?de(e.init.expression):"",n=e.condition?de(e.condition.expression):"",r=e.update?de(e.update.expression):"";return`for ((${t}; ${n}; ${r})); do
83
+ ${at(e.body)}
84
+ done${ht(e.redirections)}`}function hp(e){return`while ${at(e.condition)}; do
85
+ ${at(e.body)}
86
+ done${ht(e.redirections)}`}function mp(e){return`until ${at(e.condition)}; do
87
+ ${at(e.body)}
88
+ done${ht(e.redirections)}`}function yp(e){let t=e.items.map(gp).join(`
89
+ `);return`case ${Ae(e.word)} in
90
90
  ${t}
91
- esac${dt(e.redirections)}`}function sp(e){let t=e.patterns.map(Se).join(" | "),n=ot(e.body);return n?`${t})
91
+ esac${ht(e.redirections)}`}function gp(e){let t=e.patterns.map(Ae).join(" | "),n=at(e.body);return n?`${t})
92
92
  ${n}
93
93
  ${e.terminator}`:`${t})
94
- ${e.terminator}`}function ip(e){return`(${ot(e.body)})${dt(e.redirections)}`}function op(e){return`{ ${ot(e.body)}; }${dt(e.redirections)}`}function ap(e){return`((${fe(e.expression.expression)}))${dt(e.redirections)}`}function lp(e){return`[[ ${En(e.expression)} ]]${dt(e.redirections)}`}function cp(e){let t=xl(e.body);return`${e.name}() ${t}${dt(e.redirections)}`}function fe(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${fe(e.left)} ${e.operator} ${fe(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${fe(e.operand)}`:`${fe(e.operand)}${e.operator}`;case"ArithTernary":return`${fe(e.condition)} ? ${fe(e.consequent)} : ${fe(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${fe(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${fe(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${fe(e.target)}[${fe(e.subscript)}]`:fe(e.target)} ${e.operator} ${fe(e.value)}`;case"ArithDynamicElement":return`${fe(e.nameExpr)}[${fe(e.subscript)}]`;case"ArithGroup":return`(${fe(e.expression)})`;case"ArithNested":return`$((${fe(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${fe(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(fe).join("");case"ArithDoubleSubscript":return`${e.array}[${fe(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function En(e){switch(e.type){case"CondBinary":return`${Se(e.left)} ${e.operator} ${Se(e.right)}`;case"CondUnary":return`${e.operator} ${Se(e.operand)}`;case"CondNot":return`! ${En(e.operand)}`;case"CondAnd":return`${En(e.left)} && ${En(e.right)}`;case"CondOr":return`${En(e.left)} || ${En(e.right)}`;case"CondGroup":return`( ${En(e.expression)} )`;case"CondWord":return Se(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var up="BASH_ALIAS_";function Qr(e,t,n,r){let s=M(t);if(s>n-r.value)throw new P(`alias expansion exceeds string length limit (${n} bytes)`,"string_length");return r.value+=s,e+t}function Nl(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function Rl(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Dl(e,t){return e.env.get(`${up}${t}`)}function Ol(e,t,n){return _l(e,t,n)}function _l(e,t,n,r=!0){if(!t.name||!Nl(t.name))return t;let s=Rl(t.name);if(!s)return t;let i=Dl(e,s);if(!i||n.has(s))return t;try{n.add(s);let o=new j,a={value:0},l=Qr("",i,e.limits.maxStringLength,a),c=i.endsWith(" ");if(!c)for(let p of t.args){let h=Se(p);l=Qr(l,` ${h}`,e.limits.maxStringLength,a)}let u;try{u=o.parse(l)}catch(p){if(p instanceof ke)throw p;return t}if(u.statements.length!==1||u.statements[0].pipelines.length!==1||u.statements[0].pipelines[0].commands.length!==1)return Il(e,t,i);let f=u.statements[0].pipelines[0].commands[0];if(f.type!=="SimpleCommand")return Il(e,t,i);let d={...f,assignments:[...t.assignments,...f.assignments],redirections:[...f.redirections,...t.redirections],line:t.line};if(c&&t.args.length>0){d={...d,args:[...d.args,...t.args]};let p=1;for(;r&&d.args.length>0;){let h=d.args[0];if(!Nl(h))break;let m=Rl(h),E=m?Dl(e,m):null;if(!E)break;if(p>=e.limits.maxCallDepth)throw new P(`alias expansion depth limit exceeded (${e.limits.maxCallDepth})`,"recursion");p++;let S={type:"SimpleCommand",name:h,args:d.args.slice(1),assignments:[],redirections:[]},g=_l(e,S,n,!1);if(g===S||(d={...d,name:g.name,args:[...g.args]},!E.endsWith(" ")))break}}return d}catch(o){throw n.delete(s),o}}function Il(e,t,n){let r={value:0},s=Qr("",n,e.limits.maxStringLength,r);for(let c of t.args){let u=Se(c);s=Qr(s,` ${u}`,e.limits.maxStringLength,r)}let i=new j,o=i.parseWordFromString("eval",!1,!1),a=0;for(let c of s)c==="'"&&a++;if(r.value+2+a*3>e.limits.maxStringLength)throw new P(`alias expansion exceeds string length limit (${e.limits.maxStringLength} bytes)`,"string_length");let l=i.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:o,args:[l],assignments:t.assignments,redirections:t.redirections,line:t.line}}var fp=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9a-fA-F"]]);function Ci(e){return fp.get(e)??""}function Ll(e){let t=[],n="",r=0;for(;r<e.length;){let s=e[r];if(s==="["){for(n+=s,r++,r<e.length&&(e[r]==="!"||e[r]==="^")&&(n+=e[r],r++),r<e.length&&e[r]==="]"&&(n+=e[r],r++);r<e.length&&e[r]!=="]";){if(e[r]==="["&&r+1<e.length&&e[r+1]===":"){let i=e.indexOf(":]",r+2);if(i!==-1){n+=e.slice(r,i+2),r=i+2;continue}}if(e[r]==="\\"&&r+1<e.length){n+=e[r]+e[r+1],r+=2;continue}n+=e[r],r++}r<e.length&&e[r]==="]"&&(n+=e[r],r++)}else s===":"?(n!==""&&t.push(n),n="",r++):s==="\\"&&r+1<e.length?(n+=s+e[r+1],r+=2):(n+=s,r++)}return n!==""&&t.push(n),t}function Tl(e){let t="^";for(let n=0;n<e.length;n++){let r=e[n];if(r==="*")t+="[^/]*";else if(r==="?")t+="[^/]";else if(r==="["){let s=n+1,i="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(i+="^",s++),s<e.length&&e[s]==="]"&&(i+="\\]",s++);let o=s;for(;o<e.length;){if(e[o]==="\\"&&o+1<e.length){o+=2;continue}if(e[o]==="["&&o+1<e.length&&e[o+1]===":"){let l=e.indexOf(":]",o+2);if(l!==-1){o=l+2;continue}}if(e[o]==="]")break;o++}let a=s;for(;s<e.length&&e[s]!=="]";){if(e[s]==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let c=e.slice(s+2,l),u=Ci(c);i+=u,s=l+2;continue}}if(e[s]==="\\"&&s+1<e.length){i+=`\\${e[s+1]}`,s+=2;continue}if(e[s]==="-"){let l=s===a,c=s+1===o;l||c?i+="\\-":i+="-"}else i+=e[s];s++}i+="]",t+=i,n=s}else if(r==="\\"&&n+1<e.length){let s=e[n+1];/[.+^${}()|\\*?[\]]/.test(s)?t+=`\\${s}`:t+=s,n++}else/[.+^${}()|]/.test(r)?t+=`\\${r}`:t+=r}return t+="$",he(t)}function Ni(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Ri(e){let t=[],n="",r=0,s=!1,i=0;for(;i<e.length;){let o=e[i];if(o==="'"&&!s){s=!0,n+="\0QUOTE_START\0",i++;continue}if(o==="'"&&s){s=!1,n+="\0QUOTE_END\0",i++;continue}if(s){n+=o,i++;continue}if(o==="\\"){n+=o,i+1<e.length?(n+=e[i+1],i+=2):i++;continue}o==="("?(r++,n+=o):o===")"?(r--,n+=o):o==="|"&&r===0?(t.push(n),n=""):n+=o,i++}return t.push(n),t}var Fl=5,Kt=class{fs;cwd;globignorePatterns=[];hasGlobignore=!1;globstar=!1;nullglob=!1;failglob=!1;dotglob=!1;extglob=!1;globskipdots=!0;ops={count:0};maxOps;consumeOperation;constructor(t,n,r,s){this.fs=t,this.cwd=n,typeof s=="boolean"?(this.globstar=s,this.maxOps=1e5):s?(this.globstar=s.globstar??!1,this.nullglob=s.nullglob??!1,this.failglob=s.failglob??!1,this.dotglob=s.dotglob??!1,this.extglob=s.extglob??!1,this.globskipdots=s.globskipdots??!0,this.maxOps=s.maxGlobOperations??1e5,this.consumeOperation=s.consumeOperation):this.maxOps=1e5;let i=r?.get("GLOBIGNORE");i!==void 0&&i!==""&&(this.hasGlobignore=!0,this.globignorePatterns=Ll(i))}checkOpsLimit(){if(++this.ops.count>this.maxOps)throw new P(`Glob operation limit exceeded (${this.maxOps})`,"glob_operations");this.consumeOperation?.()}hasNullglob(){return this.nullglob}hasFailglob(){return this.failglob}filterGlobignore(t){return!this.hasGlobignore&&!this.globskipdots?t:t.filter(n=>{let r=n.split("/").pop()||n;if((this.hasGlobignore||this.globskipdots)&&(r==="."||r===".."))return!1;if(this.hasGlobignore){for(let s of this.globignorePatterns)if(this.matchGlobignorePattern(n,s))return!1}return!0})}matchGlobignorePattern(t,n){return Tl(n).test(t)}isGlobPattern(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandArgs(t,n){let r=t.map((o,a)=>(n?.[a]??!1)||!this.isGlobPattern(o)?null:this.expand(o)),s=await Promise.all(r.map(o=>o||Promise.resolve(null))),i=[];for(let o=0;o<t.length;o++){let a=s[o];a===null?i.push(t[o]):a.length>0?i.push(...a):i.push(t[o])}return i}async expand(t){if(this.globstar){let r=t.split("/"),s=0;for(let i of r)if(i==="**"&&(s++,s>Fl))throw new P(`Glob pattern has too many ** segments (max ${Fl})`,"glob_operations")}let n;if(t.includes("**")&&this.globstar&&this.isGlobstarValid(t))n=await this.expandRecursive(t);else{let r=t.replace(/\*\*+/g,"*");n=await this.expandSimple(r)}return this.filterGlobignore(n)}isGlobstarValid(t){let n=t.split("/");for(let r of n)if(r.includes("**")&&r!=="**")return!1;return!0}hasGlobChars(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandSimple(t){let n=t.startsWith("/"),r=t.split("/").filter(c=>c!==""),s=-1;for(let c=0;c<r.length;c++)if(this.hasGlobChars(r[c])){s=c;break}if(s===-1)return[t];let i,o;if(s===0)n?(i="/",o="/"):(i=this.cwd,o="");else{let c=r.slice(0,s);n?(i=`/${c.join("/")}`,o=`/${c.join("/")}`):(i=this.fs.resolvePath(this.cwd,c.join("/")),o=c.join("/"))}let a=r.slice(s);return(await this.expandSegments(i,o,a)).sort()}async expandSegments(t,n,r){if(this.checkOpsLimit(),r.length===0)return[n];let[s,...i]=r,o=[];try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let a=await this.fs.readdirWithFileTypes(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;if(s.startsWith(".")||this.dotglob){let d=a.some(h=>h.name==="."),p=a.some(h=>h.name==="..");d||c.push({name:".",isFile:!1,isDirectory:!0,isSymbolicLink:!1}),p||c.push({name:"..",isFile:!1,isDirectory:!0,isSymbolicLink:!1})}for(let d of c)if(!(d.name.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d.name,s)){let p=t==="/"?`/${d.name}`:`${t}/${d.name}`,h;n===""?h=d.name:n==="/"?h=`/${d.name}`:h=`${n}/${d.name}`,i.length===0?l.push(Promise.resolve([h])):d.isDirectory&&l.push(this.expandSegments(p,h,i))}let f=await Promise.all(l);for(let d of f)o.push(...d)}else{this.checkOpsLimit();let a=await this.fs.readdir(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;(s.startsWith(".")||this.dotglob)&&(a.includes(".")||c.push("."),a.includes("..")||c.push(".."));for(let d of c)if(!(d.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d,s)){let p=t==="/"?`/${d}`:`${t}/${d}`,h;n===""?h=d:n==="/"?h=`/${d}`:h=`${n}/${d}`,i.length===0?l.push(Promise.resolve([h])):l.push((async()=>{try{if(this.checkOpsLimit(),(await this.fs.stat(p)).isDirectory)return this.expandSegments(p,h,i)}catch(m){if(m instanceof P)throw m}return[]})())}let f=await Promise.all(l);for(let d of f)o.push(...d)}}catch(a){if(a instanceof P)throw a}return o}async expandRecursive(t){let n=[],r=t.indexOf("**"),s=t.slice(0,r).replace(/\/$/,"")||".",o=t.slice(r+2).replace(/^\//,"");return o.includes("**")&&this.isGlobstarValid(o)?(await this.walkDirectoryMultiGlobstar(s,o,n),[...new Set(n)].sort()):(await this.walkDirectory(s,o,n),n.sort())}async walkDirectoryMultiGlobstar(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{this.checkOpsLimit();let i=this.fs.readdirWithFileTypes?await this.fs.readdirWithFileTypes(s):null;if(i){let o=[];for(let c of i){let u=t==="."?c.name:`${t}/${c.name}`;c.isDirectory&&o.push(u)}let a=t==="."?n:`${t}/${n}`,l=await this.expandRecursive(a);r.push(...l);for(let c=0;c<o.length;c+=100){let u=o.slice(c,c+100);await Promise.all(u.map(f=>this.walkDirectoryMultiGlobstar(f,n,r)))}}else{this.checkOpsLimit();let o=await this.fs.readdir(s),a=[];for(let u of o){let f=t==="."?u:`${t}/${u}`,d=this.fs.resolvePath(this.cwd,f);try{this.checkOpsLimit(),(await this.fs.stat(d)).isDirectory&&a.push(f)}catch(p){if(p instanceof P)throw p}}let l=t==="."?n:`${t}/${n}`,c=await this.expandRecursive(l);r.push(...c);for(let u=0;u<a.length;u+=100){let f=a.slice(u,u+100);await Promise.all(f.map(d=>this.walkDirectoryMultiGlobstar(d,n,r)))}}}catch(i){if(i instanceof P)throw i}}async walkDirectory(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let i=await this.fs.readdirWithFileTypes(s),o=[],a=[];for(let l of i){let c=t==="."?l.name:`${t}/${l.name}`;l.isDirectory?a.push(c):n&&this.matchPattern(l.name,n)&&o.push(c)}r.push(...o);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u,n,r)))}}else{this.checkOpsLimit();let i=await this.fs.readdir(s),o=[];for(let l=0;l<i.length;l+=100){let c=i.slice(l,l+100),u=await Promise.all(c.map(async f=>{let d=t==="."?f:`${t}/${f}`,p=this.fs.resolvePath(this.cwd,d);try{this.checkOpsLimit();let h=await this.fs.stat(p);return{name:f,path:d,isDirectory:h.isDirectory}}catch(h){if(h instanceof P)throw h;return null}}));o.push(...u.filter(f=>f!==null))}for(let l of o)!l.isDirectory&&n&&this.matchPattern(l.name,n)&&r.push(l.path);let a=o.filter(l=>l.isDirectory);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u.path,n,r)))}}}catch(i){if(i instanceof P)throw i}}matchPattern(t,n){return this.patternToRegex(n).test(t)}patternToRegex(t){let n=this.patternToRegexStr(t);return he(`^${n}$`)}patternToRegexStr(t){let n="",r=!1;for(let s=0;s<t.length;s++){if(t.slice(s,s+13)==="\0QUOTE_START\0"){r=!0,s+=12;continue}if(t.slice(s,s+11)==="\0QUOTE_END\0"){r=!1,s+=10;continue}let i=t[s];if(r){/[.+^${}()|\\*?[\]]/.test(i)?n+=`\\${i}`:n+=i;continue}if(this.extglob&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<t.length&&t[s+1]==="("){let o=Ni(t,s+1);if(o!==-1){let a=t.slice(s+2,o),l=Ri(a),c=l.map(f=>this.patternToRegexStr(f)),u=c.length>0?c.join("|"):"(?:)";if(i==="@")n+=`(?:${u})`;else if(i==="*")n+=`(?:${u})*`;else if(i==="+")n+=`(?:${u})+`;else if(i==="?")n+=`(?:${u})?`;else if(i==="!")if(o<t.length-1){let d=l.map(h=>this.computePatternLength(h));if(d.every(h=>h!==null)&&d.every(h=>h===d[0])&&d[0]!==null){let h=d[0];if(h===0)n+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${u})).{${h}}`),n+=`(?:${m.join("|")})`}}else n+=`(?:(?!(?:${u})).)*?`}else n+=`(?!(?:${u})$).*`;s=o;continue}}if(i==="*")n+=".*";else if(i==="?")n+=".";else if(i==="["){let o=s+1,a="[";o<t.length&&(t[o]==="^"||t[o]==="!")&&(a+="^",o++),o<t.length&&t[o]==="]"&&(a+="\\]",o++);let l=o;for(;l<t.length;){if(t[l]==="\\"&&l+1<t.length){l+=2;continue}if(t[l]==="["&&l+1<t.length&&t[l+1]===":"){let u=t.indexOf(":]",l+2);if(u!==-1){l=u+2;continue}}if(t[l]==="]")break;l++}let c=o;for(;o<t.length&&t[o]!=="]";){if(t[o]==="["&&o+1<t.length&&t[o+1]===":"){let u=t.indexOf(":]",o+2);if(u!==-1){let f=t.slice(o+2,u),d=Ci(f);a+=d,o=u+2;continue}}if(t[o]==="\\"&&o+1<t.length){a+=`\\${t[o+1]}`,o+=2;continue}if(t[o]==="-"){let u=o===c,f=o+1===l;u||f?a+="\\-":a+="-"}else a+=t[o];o++}a+="]",n+=a,s=o}else if(i==="\\"&&s+1<t.length){let o=t[s+1];/[.+^${}()|\\*?[\]]/.test(o)?n+=`\\${o}`:n+=o,s++}else/[.+^${}()|]/.test(i)?n+=`\\${i}`:n+=i}return n}computePatternLength(t){let n=0,r=0,s=!1;for(;r<t.length;){if(t.slice(r,r+13)==="\0QUOTE_START\0"){s=!0,r+=13;continue}if(t.slice(r,r+11)==="\0QUOTE_END\0"){s=!1,r+=11;continue}let i=t[r];if(s){n+=1,r++;continue}if((i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&r+1<t.length&&t[r+1]==="("){let o=Ni(t,r+1);if(o!==-1){if(i==="@"){let a=t.slice(r+2,o),c=Ri(a).map(u=>this.computePatternLength(u));if(c.every(u=>u!==null)&&c.every(u=>u===c[0])){n+=c[0],r=o+1;continue}return null}return null}}if(i==="*")return null;if(i==="?"){n+=1,r++;continue}if(i==="["){let o=t.indexOf("]",r+1);if(o!==-1){n+=1,r=o+1;continue}n+=1,r++;continue}if(i==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}};function Di(e){for(let t=0;t<e.length;t++){if(e[t]==="\\"){t++;continue}if(e[t]==="$"){let n=e[t+1];if(n==="{"||n&&/[a-zA-Z_]/.test(n))return!0}}return!1}function dp(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n)return!1;for(let r of n)if(r.type==="DoubleQuoted"||r.type==="SingleQuoted")return!0;return!1}function Ml(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n||n.length===0)return!1;for(let r of n)if(r.type!=="DoubleQuoted"&&r.type!=="SingleQuoted")return!1;return!0}function or(e){let t=!1,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1;for(let l of e){if((l.type==="SingleQuoted"||l.type==="DoubleQuoted")&&(t=!0,l.type==="DoubleQuoted"))for(let c of l.parts)c.type==="ParameterExpansion"&&(c.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/)&&(!c.operation||c.operation.type==="PatternRemoval"||c.operation.type==="PatternReplacement")&&(s=!0),(c.operation?.type==="VarNamePrefix"||c.operation?.type==="ArrayKeys")&&(o=!0),c.operation?.type==="Indirection"&&(a=!0));l.type==="CommandSubstitution"&&(n=!0),l.type==="ParameterExpansion"&&(i=!0,(l.parameter==="@"||l.parameter==="*")&&(r=!0),dp(l)&&(t=!0),(l.operation?.type==="VarNamePrefix"||l.operation?.type==="ArrayKeys")&&(o=!0),l.operation?.type==="Indirection"&&(a=!0)),l.type==="Glob"&&Di(l.pattern)&&(i=!0)}return{hasQuoted:t,hasCommandSub:n,hasArrayVar:r,hasArrayAtExpansion:s,hasParamExpansion:i,hasVarNamePrefixExpansion:o,hasIndirection:a}}var pp=`
95
- `;function Sn(e,t){if(e>=t)throw new P(`array element limit exceeded (${t})`,"array_elements")}function Ii(e,t,n,r,s){Sn(e.length,s),Sn(t.length,s),e.push(n),t.push(r)}function Ae(e){return e.get("IFS")??pp}function Ne(e){return e.get("IFS")===""}function Kr(e){let t=Ae(e);if(t==="")return!0;for(let n of t)if(n!==" "&&n!==" "&&n!==`
96
- `)return!1;return!0}function Bl(e){let t=!1,n=[];for(let r of e.split(""))r==="-"?t=!0:/[\\^$.*+?()[\]{}|]/.test(r)?n.push(`\\${r}`):r===" "?n.push("\\t"):r===`
97
- `?n.push("\\n"):n.push(r);return t&&n.push("\\-"),n.join("")}function Z(e){let t=e.get("IFS");return t===void 0?" ":t[0]||""}var hp=`
98
- `;function mp(e){return hp.includes(e)}function Oi(e){let t=new Set,n=new Set;for(let r of e)mp(r)?t.add(r):n.add(r);return{whitespace:t,nonWhitespace:n}}function _i(e,t,n,r,s){if(t==="")return e===""?{words:[],wordStarts:[]}:(Sn(0,n),{words:[e],wordStarts:[0]});let{whitespace:i,nonWhitespace:o}=Oi(t),a=[],l=[],c=0;for(;c<e.length&&i.has(e[c]);)c++;if(c>=e.length)return{words:[],wordStarts:[]};if(o.has(e[c]))for(Ii(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&!(r!==void 0&&a.length>=r);){let u=c;for(;c<e.length;){let f=e[c];if(!s&&f==="\\"){c++,c<e.length&&c++;continue}if(i.has(f)||o.has(f))break;c++}if(Ii(a,l,e.substring(u,c),u,n),c>=e.length)break;for(;c<e.length&&i.has(e[c]);)c++;if(c<e.length&&o.has(e[c])){for(c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&o.has(e[c])&&!(r!==void 0&&a.length>=r);)for(Ii(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++}}return{words:a,wordStarts:l}}function Xr(e,t,n){if(t==="")return e&&Sn(0,n),{words:e?[e]:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};if(e==="")return{words:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};let{whitespace:r,nonWhitespace:s}=Oi(t),i=[],o=0,a=!1,l=!1,c=o;for(;o<e.length&&r.has(e[o]);)o++;if(o>c&&(a=!0),o>=e.length)return{words:[],hadLeadingDelimiter:!0,hadTrailingDelimiter:!0};if(s.has(e[o]))for(Sn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length;){let u=o;for(;o<e.length;){let d=e[o];if(r.has(d)||s.has(d))break;o++}if(Sn(i.length,n),i.push(e.substring(u,o)),o>=e.length){l=!1;break}let f=o;for(;o<e.length&&r.has(e[o]);)o++;if(o<e.length&&s.has(e[o])){for(o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length&&s.has(e[o]);)for(Sn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++}o>=e.length&&o>f&&(l=!0)}return{words:i,hadLeadingDelimiter:a,hadTrailingDelimiter:l}}function ue(e,t,n){return Xr(e,t,n).words}function yp(e,t){for(let n of e)if(t.has(n))return!0;return!1}function Wl(e,t,n){if(t==="")return e;let{whitespace:r,nonWhitespace:s}=Oi(t),i=e.length;for(;i>0&&r.has(e[i-1]);){if(!n&&i>=2){let a=0,l=i-2;for(;l>=0&&e[l]==="\\";)a++,l--;if(a%2===1)break}i--}let o=e.substring(0,i);if(o.length>=1&&s.has(o[o.length-1])){if(!n&&o.length>=2){let l=0,c=o.length-2;for(;c>=0&&o[c]==="\\";)l++,c--;if(l%2===1)return o}let a=o.substring(0,o.length-1);if(!yp(a,s))return a}return o}function le(e,t){return e.state.namerefs?.has(t)??!1}function Lt(e,t){e.state.namerefs??=new Set,e.state.namerefs.add(t)}function Vl(e,t){e.state.namerefs?.delete(t),e.state.boundNamerefs?.delete(t),e.state.invalidNamerefs?.delete(t)}function zl(e,t){e.state.invalidNamerefs??=new Set,e.state.invalidNamerefs.add(t)}function Ul(e,t){return e.state.invalidNamerefs?.has(t)??!1}function Li(e,t){e.state.boundNamerefs??=new Set,e.state.boundNamerefs.add(t)}function Yr(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let s=n[1],i=Pe(e,s),o=e.state.associativeArrays?.has(s)??!1;return i||o}return Pe(e,t)?!0:e.state.env.has(t)}function Fe(e,t,n=100){if(!le(e,t)||Ul(e,t))return t;let r=new Set,s=t;for(;n-- >0;){if(r.has(s))return;if(r.add(s),!le(e,s))return s;let i=e.state.env.get(s);if(i===void 0||i===""||!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(i))return s;s=i}}function An(e,t){if(le(e,t))return e.state.env.get(t)}function Jr(e,t,n,r=100){if(!le(e,t)||Ul(e,t))return t;let s=new Set,i=t;for(;r-- >0;){if(s.has(i))return;if(s.add(i),!le(e,i))return i;let o=e.state.env.get(i);if(o===void 0||o==="")return n!==void 0?/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)&&Yr(e,n)?i:null:i;if(!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(o))return i;i=o}}function ql(e,t){let n=t.replace(/\$\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g,(r,s)=>e.state.env.get(s)??"");return n=n.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(r,s)=>e.state.env.get(s)??""),n}function G(e,t){return t==="FUNCNAME"?(e.state.funcNameStack??[]).map((i,o)=>[o,i]):t==="BASH_LINENO"?(e.state.callLineStack??[]).map((i,o)=>[o,String(i)]):t==="BASH_SOURCE"?(e.state.sourceStack??[]).map((i,o)=>[o,i]):e.state.associativeArrays?.has(t)?vt(e,t).map(i=>[i,oe(e,t,i)??""]):be(e,t).map(s=>[s,oe(e,t,s)??""])}function pt(e,t){return t==="FUNCNAME"?(e.state.funcNameStack?.length??0)>0:t==="BASH_LINENO"?(e.state.callLineStack?.length??0)>0:t==="BASH_SOURCE"?(e.state.sourceStack?.length??0)>0:e.state.associativeArrays?.has(t)?Pe(e,t):Pe(e,t)}async function ie(e,t,n=!0,r=!1){switch(t){case"?":return String(e.state.lastExitCode);case"$":return String(e.state.virtualPid);case"#":return e.state.env.get("#")||"0";case"@":return e.state.env.get("@")||"";case"_":return e.state.lastArg;case"-":{let o="";return o+="h",e.state.options.errexit&&(o+="e"),e.state.options.noglob&&(o+="f"),e.state.options.nounset&&(o+="u"),e.state.options.verbose&&(o+="v"),e.state.options.xtrace&&(o+="x"),o+="B",e.state.options.noclobber&&(o+="C"),o+="s",o}case"*":{let o=Number.parseInt(e.state.env.get("#")||"0",10);if(o===0)return"";let a=[];for(let l=1;l<=o;l++)a.push(e.state.env.get(String(l))||"");return a.join(Z(e.state.env))}case"0":return e.state.env.get("0")||"bash";case"PWD":return e.state.env.get("PWD")??"";case"OLDPWD":return e.state.env.get("OLDPWD")??"";case"PPID":return String(e.state.virtualPpid);case"UID":return String(e.state.virtualUid);case"EUID":return String(e.state.virtualUid);case"RANDOM":return String(Math.floor(Math.random()*32768));case"SECONDS":return String(Math.floor((Date.now()-e.state.startTime)/1e3));case"BASH_VERSION":return Ia;case"!":return String(e.state.lastBackgroundPid);case"BASHPID":return String(e.state.bashPid);case"LINENO":return String(e.state.currentLine);case"FUNCNAME":{let o=e.state.funcNameStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ve("FUNCNAME");return""}case"BASH_LINENO":{let o=e.state.callLineStack?.[0];if(o!==void 0)return String(o);if(n&&e.state.options.nounset)throw new Ve("BASH_LINENO");return""}case"BASH_SOURCE":{let o=e.state.sourceStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ve("BASH_SOURCE");return""}}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[\]$/.test(t))throw new Ke(`\${${t}}`);let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let o=s[1],a=s[2];if(le(e,o)){let f=Fe(e,o);if(f&&f!==o){if(f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return"";o=f}}if(a==="@"||a==="*"){let f=G(e,o);if(f.length>0)return f.map(([,p])=>p).join(" ");let d=e.state.env.get(o);return d!==void 0?d:""}if(o==="FUNCNAME"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.funcNameStack?.[f]??"":""}if(o==="BASH_LINENO"){let f=Number.parseInt(a,10);if(!Number.isNaN(f)&&f>=0){let d=e.state.callLineStack?.[f];return d!==void 0?String(d):""}return""}if(o==="BASH_SOURCE"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.sourceStack?.[f]??"":""}if(e.state.associativeArrays?.has(o)){let f=Wr(a);f=ql(e,f);let d=oe(e,o,f);if(d===void 0&&n&&e.state.options.nounset)throw new Ve(`${o}[${a}]`);return d||""}let c;if(/^-?\d+$/.test(a))c=Number.parseInt(a,10);else try{let f=new j,d=re(f,a);c=await X(e,d.expression)}catch{let f=e.state.env.get(a);c=f?Number.parseInt(f,10):0,Number.isNaN(c)&&(c=0)}if(c<0){let f=G(e,o),d=e.state.currentLine;if(f.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
94
+ ${e.terminator}`}function wp(e){return`(${at(e.body)})${ht(e.redirections)}`}function Ep(e){return`{ ${at(e.body)}; }${ht(e.redirections)}`}function bp(e){return`((${de(e.expression.expression)}))${ht(e.redirections)}`}function Sp(e){return`[[ ${An(e.expression)} ]]${ht(e.redirections)}`}function Ap(e){let t=Ll(e.body);return`${e.name}() ${t}${ht(e.redirections)}`}function de(e){switch(e.type){case"ArithNumber":return String(e.value);case"ArithVariable":return e.hasDollarPrefix?`$${e.name}`:e.name;case"ArithSpecialVar":return`$${e.name}`;case"ArithBinary":return`${de(e.left)} ${e.operator} ${de(e.right)}`;case"ArithUnary":return e.prefix?`${e.operator}${de(e.operand)}`:`${de(e.operand)}${e.operator}`;case"ArithTernary":return`${de(e.condition)} ? ${de(e.consequent)} : ${de(e.alternate)}`;case"ArithAssignment":return`${e.subscript?`${e.variable}[${de(e.subscript)}]`:e.stringKey!==void 0?`${e.variable}[${e.stringKey}]`:e.variable} ${e.operator} ${de(e.value)}`;case"ArithDynamicAssignment":return`${e.subscript?`${de(e.target)}[${de(e.subscript)}]`:de(e.target)} ${e.operator} ${de(e.value)}`;case"ArithDynamicElement":return`${de(e.nameExpr)}[${de(e.subscript)}]`;case"ArithGroup":return`(${de(e.expression)})`;case"ArithNested":return`$((${de(e.expression)}))`;case"ArithCommandSubst":return`$(${e.command})`;case"ArithBracedExpansion":return`\${${e.content}}`;case"ArithArrayElement":return e.stringKey!==void 0?`${e.array}[${e.stringKey}]`:e.index?`${e.array}[${de(e.index)}]`:e.array;case"ArithDynamicBase":return`\${${e.baseExpr}}#${e.value}`;case"ArithDynamicNumber":return`\${${e.prefix}}${e.suffix}`;case"ArithConcat":return e.parts.map(de).join("");case"ArithDoubleSubscript":return`${e.array}[${de(e.index)}]`;case"ArithNumberSubscript":return`${e.number}[${e.errorToken}]`;case"ArithSyntaxError":return e.errorToken;case"ArithSingleQuote":return`'${e.content}'`;default:{let t=e;throw new Error(`Unsupported arithmetic expression type: ${t.type}`)}}}function An(e){switch(e.type){case"CondBinary":return`${Ae(e.left)} ${e.operator} ${Ae(e.right)}`;case"CondUnary":return`${e.operator} ${Ae(e.operand)}`;case"CondNot":return`! ${An(e.operand)}`;case"CondAnd":return`${An(e.left)} && ${An(e.right)}`;case"CondOr":return`${An(e.left)} || ${An(e.right)}`;case"CondGroup":return`( ${An(e.expression)} )`;case"CondWord":return Ae(e.word);default:{let t=e;throw new Error(`Unsupported conditional expression type: ${t.type}`)}}}var vp="BASH_ALIAS_";function ts(e,t,n,r){let s=B(t);if(s>n-r.value)throw new P(`alias expansion exceeds string length limit (${n} bytes)`,"string_length");return r.value+=s,e+t}function Bl(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function Wl(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Vl(e,t){return e.env.get(`${vp}${t}`)}function Ul(e,t,n){return ql(e,t,n)}function ql(e,t,n,r=!0){if(!t.name||!Bl(t.name))return t;let s=Wl(t.name);if(!s)return t;let i=Vl(e,s);if(!i||n.has(s))return t;try{n.add(s);let o=new H,a={value:0},l=ts("",i,e.limits.maxStringLength,a),c=i.endsWith(" ");if(!c)for(let p of t.args){let h=Ae(p);l=ts(l,` ${h}`,e.limits.maxStringLength,a)}let u;try{u=o.parse(l)}catch(p){if(p instanceof xe)throw p;return t}if(u.statements.length!==1||u.statements[0].pipelines.length!==1||u.statements[0].pipelines[0].commands.length!==1)return zl(e,t,i);let f=u.statements[0].pipelines[0].commands[0];if(f.type!=="SimpleCommand")return zl(e,t,i);let d={...f,assignments:[...t.assignments,...f.assignments],redirections:[...f.redirections,...t.redirections],line:t.line};if(c&&t.args.length>0){d={...d,args:[...d.args,...t.args]};let p=1;for(;r&&d.args.length>0;){let h=d.args[0];if(!Bl(h))break;let y=Wl(h),E=y?Vl(e,y):null;if(!E)break;if(p>=e.limits.maxCallDepth)throw new P(`alias expansion depth limit exceeded (${e.limits.maxCallDepth})`,"recursion");p++;let S={type:"SimpleCommand",name:h,args:d.args.slice(1),assignments:[],redirections:[]},g=ql(e,S,n,!1);if(g===S||(d={...d,name:g.name,args:[...g.args]},!E.endsWith(" ")))break}}return d}catch(o){throw n.delete(s),o}}function zl(e,t,n){let r={value:0},s=ts("",n,e.limits.maxStringLength,r);for(let c of t.args){let u=Ae(c);s=ts(s,` ${u}`,e.limits.maxStringLength,r)}let i=new H,o=i.parseWordFromString("eval",!1,!1),a=0;for(let c of s)c==="'"&&a++;if(r.value+2+a*3>e.limits.maxStringLength)throw new P(`alias expansion exceeds string length limit (${e.limits.maxStringLength} bytes)`,"string_length");let l=i.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:o,args:[l],assignments:t.assignments,redirections:t.redirections,line:t.line}}var kp=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9a-fA-F"]]);function Mi(e){return kp.get(e)??""}function jl(e){let t=[],n="",r=0;for(;r<e.length;){let s=e[r];if(s==="["){for(n+=s,r++,r<e.length&&(e[r]==="!"||e[r]==="^")&&(n+=e[r],r++),r<e.length&&e[r]==="]"&&(n+=e[r],r++);r<e.length&&e[r]!=="]";){if(e[r]==="["&&r+1<e.length&&e[r+1]===":"){let i=e.indexOf(":]",r+2);if(i!==-1){n+=e.slice(r,i+2),r=i+2;continue}}if(e[r]==="\\"&&r+1<e.length){n+=e[r]+e[r+1],r+=2;continue}n+=e[r],r++}r<e.length&&e[r]==="]"&&(n+=e[r],r++)}else s===":"?(n!==""&&t.push(n),n="",r++):s==="\\"&&r+1<e.length?(n+=s+e[r+1],r+=2):(n+=s,r++)}return n!==""&&t.push(n),t}function Hl(e){let t="^";for(let n=0;n<e.length;n++){let r=e[n];if(r==="*")t+="[^/]*";else if(r==="?")t+="[^/]";else if(r==="["){let s=n+1,i="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(i+="^",s++),s<e.length&&e[s]==="]"&&(i+="\\]",s++);let o=s;for(;o<e.length;){if(e[o]==="\\"&&o+1<e.length){o+=2;continue}if(e[o]==="["&&o+1<e.length&&e[o+1]===":"){let l=e.indexOf(":]",o+2);if(l!==-1){o=l+2;continue}}if(e[o]==="]")break;o++}let a=s;for(;s<e.length&&e[s]!=="]";){if(e[s]==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let c=e.slice(s+2,l),u=Mi(c);i+=u,s=l+2;continue}}if(e[s]==="\\"&&s+1<e.length){i+=`\\${e[s+1]}`,s+=2;continue}if(e[s]==="-"){let l=s===a,c=s+1===o;l||c?i+="\\-":i+="-"}else i+=e[s];s++}i+="]",t+=i,n=s}else if(r==="\\"&&n+1<e.length){let s=e[n+1];/[.+^${}()|\\*?[\]]/.test(s)?t+=`\\${s}`:t+=s,n++}else/[.+^${}()|]/.test(r)?t+=`\\${r}`:t+=r}return t+="$",me(t)}function Bi(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Wi(e){let t=[],n="",r=0,s=!1,i=0;for(;i<e.length;){let o=e[i];if(o==="'"&&!s){s=!0,n+="\0QUOTE_START\0",i++;continue}if(o==="'"&&s){s=!1,n+="\0QUOTE_END\0",i++;continue}if(s){n+=o,i++;continue}if(o==="\\"){n+=o,i+1<e.length?(n+=e[i+1],i+=2):i++;continue}o==="("?(r++,n+=o):o===")"?(r--,n+=o):o==="|"&&r===0?(t.push(n),n=""):n+=o,i++}return t.push(n),t}var Gl=5,Yt=class{fs;cwd;globignorePatterns=[];hasGlobignore=!1;globstar=!1;nullglob=!1;failglob=!1;dotglob=!1;extglob=!1;globskipdots=!0;ops={count:0};maxOps;consumeOperation;constructor(t,n,r,s){this.fs=t,this.cwd=n,typeof s=="boolean"?(this.globstar=s,this.maxOps=1e5):s?(this.globstar=s.globstar??!1,this.nullglob=s.nullglob??!1,this.failglob=s.failglob??!1,this.dotglob=s.dotglob??!1,this.extglob=s.extglob??!1,this.globskipdots=s.globskipdots??!0,this.maxOps=s.maxGlobOperations??1e5,this.consumeOperation=s.consumeOperation):this.maxOps=1e5;let i=r?.get("GLOBIGNORE");i!==void 0&&i!==""&&(this.hasGlobignore=!0,this.globignorePatterns=jl(i))}checkOpsLimit(){if(++this.ops.count>this.maxOps)throw new P(`Glob operation limit exceeded (${this.maxOps})`,"glob_operations");this.consumeOperation?.()}hasNullglob(){return this.nullglob}hasFailglob(){return this.failglob}filterGlobignore(t){return!this.hasGlobignore&&!this.globskipdots?t:t.filter(n=>{let r=n.split("/").pop()||n;if((this.hasGlobignore||this.globskipdots)&&(r==="."||r===".."))return!1;if(this.hasGlobignore){for(let s of this.globignorePatterns)if(this.matchGlobignorePattern(n,s))return!1}return!0})}matchGlobignorePattern(t,n){return Hl(n).test(t)}isGlobPattern(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandArgs(t,n){let r=t.map((o,a)=>(n?.[a]??!1)||!this.isGlobPattern(o)?null:this.expand(o)),s=await Promise.all(r.map(o=>o||Promise.resolve(null))),i=[];for(let o=0;o<t.length;o++){let a=s[o];a===null?i.push(t[o]):a.length>0?i.push(...a):i.push(t[o])}return i}async expand(t){if(this.globstar){let r=t.split("/"),s=0;for(let i of r)if(i==="**"&&(s++,s>Gl))throw new P(`Glob pattern has too many ** segments (max ${Gl})`,"glob_operations")}let n;if(t.includes("**")&&this.globstar&&this.isGlobstarValid(t))n=await this.expandRecursive(t);else{let r=t.replace(/\*\*+/g,"*");n=await this.expandSimple(r)}return this.filterGlobignore(n)}isGlobstarValid(t){let n=t.split("/");for(let r of n)if(r.includes("**")&&r!=="**")return!1;return!0}hasGlobChars(t){return!!(t.includes("*")||t.includes("?")||/\[.*\]/.test(t)||this.extglob&&/[@*+?!]\(/.test(t))}async expandSimple(t){let n=t.startsWith("/"),r=t.split("/").filter(c=>c!==""),s=-1;for(let c=0;c<r.length;c++)if(this.hasGlobChars(r[c])){s=c;break}if(s===-1)return[t];let i,o;if(s===0)n?(i="/",o="/"):(i=this.cwd,o="");else{let c=r.slice(0,s);n?(i=`/${c.join("/")}`,o=`/${c.join("/")}`):(i=this.fs.resolvePath(this.cwd,c.join("/")),o=c.join("/"))}let a=r.slice(s);return(await this.expandSegments(i,o,a)).sort()}async expandSegments(t,n,r){if(this.checkOpsLimit(),r.length===0)return[n];let[s,...i]=r,o=[];try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let a=await this.fs.readdirWithFileTypes(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;if(s.startsWith(".")||this.dotglob){let d=a.some(h=>h.name==="."),p=a.some(h=>h.name==="..");d||c.push({name:".",isFile:!1,isDirectory:!0,isSymbolicLink:!1}),p||c.push({name:"..",isFile:!1,isDirectory:!0,isSymbolicLink:!1})}for(let d of c)if(!(d.name.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d.name,s)){let p=t==="/"?`/${d.name}`:`${t}/${d.name}`,h;n===""?h=d.name:n==="/"?h=`/${d.name}`:h=`${n}/${d.name}`,i.length===0?l.push(Promise.resolve([h])):d.isDirectory&&l.push(this.expandSegments(p,h,i))}let f=await Promise.all(l);for(let d of f)o.push(...d)}else{this.checkOpsLimit();let a=await this.fs.readdir(t),l=[],c=[...a],u=this.dotglob||this.hasGlobignore;(s.startsWith(".")||this.dotglob)&&(a.includes(".")||c.push("."),a.includes("..")||c.push(".."));for(let d of c)if(!(d.startsWith(".")&&!s.startsWith(".")&&!u)&&this.matchPattern(d,s)){let p=t==="/"?`/${d}`:`${t}/${d}`,h;n===""?h=d:n==="/"?h=`/${d}`:h=`${n}/${d}`,i.length===0?l.push(Promise.resolve([h])):l.push((async()=>{try{if(this.checkOpsLimit(),(await this.fs.stat(p)).isDirectory)return this.expandSegments(p,h,i)}catch(y){if(y instanceof P)throw y}return[]})())}let f=await Promise.all(l);for(let d of f)o.push(...d)}}catch(a){if(a instanceof P)throw a}return o}async expandRecursive(t){let n=[],r=t.indexOf("**"),s=t.slice(0,r).replace(/\/$/,"")||".",o=t.slice(r+2).replace(/^\//,"");return o.includes("**")&&this.isGlobstarValid(o)?(await this.walkDirectoryMultiGlobstar(s,o,n),[...new Set(n)].sort()):(await this.walkDirectory(s,o,n),n.sort())}async walkDirectoryMultiGlobstar(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{this.checkOpsLimit();let i=this.fs.readdirWithFileTypes?await this.fs.readdirWithFileTypes(s):null;if(i){let o=[];for(let c of i){let u=t==="."?c.name:`${t}/${c.name}`;c.isDirectory&&o.push(u)}let a=t==="."?n:`${t}/${n}`,l=await this.expandRecursive(a);r.push(...l);for(let c=0;c<o.length;c+=100){let u=o.slice(c,c+100);await Promise.all(u.map(f=>this.walkDirectoryMultiGlobstar(f,n,r)))}}else{this.checkOpsLimit();let o=await this.fs.readdir(s),a=[];for(let u of o){let f=t==="."?u:`${t}/${u}`,d=this.fs.resolvePath(this.cwd,f);try{this.checkOpsLimit(),(await this.fs.stat(d)).isDirectory&&a.push(f)}catch(p){if(p instanceof P)throw p}}let l=t==="."?n:`${t}/${n}`,c=await this.expandRecursive(l);r.push(...c);for(let u=0;u<a.length;u+=100){let f=a.slice(u,u+100);await Promise.all(f.map(d=>this.walkDirectoryMultiGlobstar(d,n,r)))}}}catch(i){if(i instanceof P)throw i}}async walkDirectory(t,n,r){this.checkOpsLimit();let s=this.fs.resolvePath(this.cwd,t);try{if(this.fs.readdirWithFileTypes){this.checkOpsLimit();let i=await this.fs.readdirWithFileTypes(s),o=[],a=[];for(let l of i){let c=t==="."?l.name:`${t}/${l.name}`;l.isDirectory?a.push(c):n&&this.matchPattern(l.name,n)&&o.push(c)}r.push(...o);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u,n,r)))}}else{this.checkOpsLimit();let i=await this.fs.readdir(s),o=[];for(let l=0;l<i.length;l+=100){let c=i.slice(l,l+100),u=await Promise.all(c.map(async f=>{let d=t==="."?f:`${t}/${f}`,p=this.fs.resolvePath(this.cwd,d);try{this.checkOpsLimit();let h=await this.fs.stat(p);return{name:f,path:d,isDirectory:h.isDirectory}}catch(h){if(h instanceof P)throw h;return null}}));o.push(...u.filter(f=>f!==null))}for(let l of o)!l.isDirectory&&n&&this.matchPattern(l.name,n)&&r.push(l.path);let a=o.filter(l=>l.isDirectory);for(let l=0;l<a.length;l+=100){let c=a.slice(l,l+100);await Promise.all(c.map(u=>this.walkDirectory(u.path,n,r)))}}}catch(i){if(i instanceof P)throw i}}matchPattern(t,n){return this.patternToRegex(n).test(t)}patternToRegex(t){let n=this.patternToRegexStr(t);return me(`^${n}$`)}patternToRegexStr(t){let n="",r=!1;for(let s=0;s<t.length;s++){if(t.slice(s,s+13)==="\0QUOTE_START\0"){r=!0,s+=12;continue}if(t.slice(s,s+11)==="\0QUOTE_END\0"){r=!1,s+=10;continue}let i=t[s];if(r){/[.+^${}()|\\*?[\]]/.test(i)?n+=`\\${i}`:n+=i;continue}if(this.extglob&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<t.length&&t[s+1]==="("){let o=Bi(t,s+1);if(o!==-1){let a=t.slice(s+2,o),l=Wi(a),c=l.map(f=>this.patternToRegexStr(f)),u=c.length>0?c.join("|"):"(?:)";if(i==="@")n+=`(?:${u})`;else if(i==="*")n+=`(?:${u})*`;else if(i==="+")n+=`(?:${u})+`;else if(i==="?")n+=`(?:${u})?`;else if(i==="!")if(o<t.length-1){let d=l.map(h=>this.computePatternLength(h));if(d.every(h=>h!==null)&&d.every(h=>h===d[0])&&d[0]!==null){let h=d[0];if(h===0)n+="(?:.+)";else{let y=[];h>0&&y.push(`.{0,${h-1}}`),y.push(`.{${h+1},}`),y.push(`(?!(?:${u})).{${h}}`),n+=`(?:${y.join("|")})`}}else n+=`(?:(?!(?:${u})).)*?`}else n+=`(?!(?:${u})$).*`;s=o;continue}}if(i==="*")n+=".*";else if(i==="?")n+=".";else if(i==="["){let o=s+1,a="[";o<t.length&&(t[o]==="^"||t[o]==="!")&&(a+="^",o++),o<t.length&&t[o]==="]"&&(a+="\\]",o++);let l=o;for(;l<t.length;){if(t[l]==="\\"&&l+1<t.length){l+=2;continue}if(t[l]==="["&&l+1<t.length&&t[l+1]===":"){let u=t.indexOf(":]",l+2);if(u!==-1){l=u+2;continue}}if(t[l]==="]")break;l++}let c=o;for(;o<t.length&&t[o]!=="]";){if(t[o]==="["&&o+1<t.length&&t[o+1]===":"){let u=t.indexOf(":]",o+2);if(u!==-1){let f=t.slice(o+2,u),d=Mi(f);a+=d,o=u+2;continue}}if(t[o]==="\\"&&o+1<t.length){a+=`\\${t[o+1]}`,o+=2;continue}if(t[o]==="-"){let u=o===c,f=o+1===l;u||f?a+="\\-":a+="-"}else a+=t[o];o++}a+="]",n+=a,s=o}else if(i==="\\"&&s+1<t.length){let o=t[s+1];/[.+^${}()|\\*?[\]]/.test(o)?n+=`\\${o}`:n+=o,s++}else/[.+^${}()|]/.test(i)?n+=`\\${i}`:n+=i}return n}computePatternLength(t){let n=0,r=0,s=!1;for(;r<t.length;){if(t.slice(r,r+13)==="\0QUOTE_START\0"){s=!0,r+=13;continue}if(t.slice(r,r+11)==="\0QUOTE_END\0"){s=!1,r+=11;continue}let i=t[r];if(s){n+=1,r++;continue}if((i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&r+1<t.length&&t[r+1]==="("){let o=Bi(t,r+1);if(o!==-1){if(i==="@"){let a=t.slice(r+2,o),c=Wi(a).map(u=>this.computePatternLength(u));if(c.every(u=>u!==null)&&c.every(u=>u===c[0])){n+=c[0],r=o+1;continue}return null}return null}}if(i==="*")return null;if(i==="?"){n+=1,r++;continue}if(i==="["){let o=t.indexOf("]",r+1);if(o!==-1){n+=1,r=o+1;continue}n+=1,r++;continue}if(i==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}};function Vi(e){for(let t=0;t<e.length;t++){if(e[t]==="\\"){t++;continue}if(e[t]==="$"){let n=e[t+1];if(n==="{"||n&&/[a-zA-Z_]/.test(n))return!0}}return!1}function xp(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n)return!1;for(let r of n)if(r.type==="DoubleQuoted"||r.type==="SingleQuoted")return!0;return!1}function Zl(e){if(!e.operation)return!1;let t=e.operation,n;if((t.type==="DefaultValue"||t.type==="AssignDefault"||t.type==="UseAlternative"||t.type==="ErrorIfUnset")&&(n=t.word?.parts),!n||n.length===0)return!1;for(let r of n)if(r.type!=="DoubleQuoted"&&r.type!=="SingleQuoted")return!1;return!0}function dr(e){let t=!1,n=!1,r=!1,s=!1,i=!1,o=!1,a=!1;for(let l of e){if((l.type==="SingleQuoted"||l.type==="DoubleQuoted")&&(t=!0,l.type==="DoubleQuoted"))for(let c of l.parts)c.type==="ParameterExpansion"&&(c.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/)&&(!c.operation||c.operation.type==="PatternRemoval"||c.operation.type==="PatternReplacement")&&(s=!0),(c.operation?.type==="VarNamePrefix"||c.operation?.type==="ArrayKeys")&&(o=!0),c.operation?.type==="Indirection"&&(a=!0));l.type==="CommandSubstitution"&&(n=!0),l.type==="ParameterExpansion"&&(i=!0,(l.parameter==="@"||l.parameter==="*")&&(r=!0),xp(l)&&(t=!0),(l.operation?.type==="VarNamePrefix"||l.operation?.type==="ArrayKeys")&&(o=!0),l.operation?.type==="Indirection"&&(a=!0)),l.type==="Glob"&&Vi(l.pattern)&&(i=!0)}return{hasQuoted:t,hasCommandSub:n,hasArrayVar:r,hasArrayAtExpansion:s,hasParamExpansion:i,hasVarNamePrefixExpansion:o,hasIndirection:a}}var $p=`
95
+ `;function kn(e,t){if(e>=t)throw new P(`array element limit exceeded (${t})`,"array_elements")}function zi(e,t,n,r,s){kn(e.length,s),kn(t.length,s),e.push(n),t.push(r)}function ve(e){return e.get("IFS")??$p}function Re(e){return e.get("IFS")===""}function ns(e){let t=ve(e);if(t==="")return!0;for(let n of t)if(n!==" "&&n!==" "&&n!==`
96
+ `)return!1;return!0}function Ql(e){let t=!1,n=[];for(let r of e.split(""))r==="-"?t=!0:/[\\^$.*+?()[\]{}|]/.test(r)?n.push(`\\${r}`):r===" "?n.push("\\t"):r===`
97
+ `?n.push("\\n"):n.push(r);return t&&n.push("\\-"),n.join("")}function Q(e){let t=e.get("IFS");return t===void 0?" ":t[0]||""}var Pp=`
98
+ `;function Cp(e){return Pp.includes(e)}function Ui(e){let t=new Set,n=new Set;for(let r of e)Cp(r)?t.add(r):n.add(r);return{whitespace:t,nonWhitespace:n}}function qi(e,t,n,r,s){if(t==="")return e===""?{words:[],wordStarts:[]}:(kn(0,n),{words:[e],wordStarts:[0]});let{whitespace:i,nonWhitespace:o}=Ui(t),a=[],l=[],c=0;for(;c<e.length&&i.has(e[c]);)c++;if(c>=e.length)return{words:[],wordStarts:[]};if(o.has(e[c]))for(zi(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&!(r!==void 0&&a.length>=r);){let u=c;for(;c<e.length;){let f=e[c];if(!s&&f==="\\"){c++,c<e.length&&c++;continue}if(i.has(f)||o.has(f))break;c++}if(zi(a,l,e.substring(u,c),u,n),c>=e.length)break;for(;c<e.length&&i.has(e[c]);)c++;if(c<e.length&&o.has(e[c])){for(c++;c<e.length&&i.has(e[c]);)c++;for(;c<e.length&&o.has(e[c])&&!(r!==void 0&&a.length>=r);)for(zi(a,l,"",c,n),c++;c<e.length&&i.has(e[c]);)c++}}return{words:a,wordStarts:l}}function rs(e,t,n){if(t==="")return e&&kn(0,n),{words:e?[e]:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};if(e==="")return{words:[],hadLeadingDelimiter:!1,hadTrailingDelimiter:!1};let{whitespace:r,nonWhitespace:s}=Ui(t),i=[],o=0,a=!1,l=!1,c=o;for(;o<e.length&&r.has(e[o]);)o++;if(o>c&&(a=!0),o>=e.length)return{words:[],hadLeadingDelimiter:!0,hadTrailingDelimiter:!0};if(s.has(e[o]))for(kn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length;){let u=o;for(;o<e.length;){let d=e[o];if(r.has(d)||s.has(d))break;o++}if(kn(i.length,n),i.push(e.substring(u,o)),o>=e.length){l=!1;break}let f=o;for(;o<e.length&&r.has(e[o]);)o++;if(o<e.length&&s.has(e[o])){for(o++;o<e.length&&r.has(e[o]);)o++;for(;o<e.length&&s.has(e[o]);)for(kn(i.length,n),i.push(""),o++;o<e.length&&r.has(e[o]);)o++}o>=e.length&&o>f&&(l=!0)}return{words:i,hadLeadingDelimiter:a,hadTrailingDelimiter:l}}function fe(e,t,n){return rs(e,t,n).words}function Np(e,t){for(let n of e)if(t.has(n))return!0;return!1}function Kl(e,t,n){if(t==="")return e;let{whitespace:r,nonWhitespace:s}=Ui(t),i=e.length;for(;i>0&&r.has(e[i-1]);){if(!n&&i>=2){let a=0,l=i-2;for(;l>=0&&e[l]==="\\";)a++,l--;if(a%2===1)break}i--}let o=e.substring(0,i);if(o.length>=1&&s.has(o[o.length-1])){if(!n&&o.length>=2){let l=0,c=o.length-2;for(;c>=0&&o[c]==="\\";)l++,c--;if(l%2===1)return o}let a=o.substring(0,o.length-1);if(!Np(a,s))return a}return o}function ce(e,t){return e.state.namerefs?.has(t)??!1}function Ft(e,t){e.state.namerefs??=new Set,e.state.namerefs.add(t)}function Xl(e,t){e.state.namerefs?.delete(t),e.state.boundNamerefs?.delete(t),e.state.invalidNamerefs?.delete(t)}function Yl(e,t){e.state.invalidNamerefs??=new Set,e.state.invalidNamerefs.add(t)}function Jl(e,t){return e.state.invalidNamerefs?.has(t)??!1}function ji(e,t){e.state.boundNamerefs??=new Set,e.state.boundNamerefs.add(t)}function ss(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let s=n[1],i=Ce(e,s),o=e.state.associativeArrays?.has(s)??!1;return i||o}return Ce(e,t)?!0:e.state.env.has(t)}function Be(e,t,n=100){if(!ce(e,t)||Jl(e,t))return t;let r=new Set,s=t;for(;n-- >0;){if(r.has(s))return;if(r.add(s),!ce(e,s))return s;let i=e.state.env.get(s);if(i===void 0||i===""||!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(i))return s;s=i}}function xn(e,t){if(ce(e,t))return e.state.env.get(t)}function is(e,t,n,r=100){if(!ce(e,t)||Jl(e,t))return t;let s=new Set,i=t;for(;r-- >0;){if(s.has(i))return;if(s.add(i),!ce(e,i))return i;let o=e.state.env.get(i);if(o===void 0||o==="")return n!==void 0?/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)&&ss(e,n)?i:null:i;if(!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(o))return i;i=o}}function ec(e,t){let n=t.replace(/\$\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g,(r,s)=>e.state.env.get(s)??"");return n=n.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(r,s)=>e.state.env.get(s)??""),n}function G(e,t){return t==="FUNCNAME"?(e.state.funcNameStack??[]).map((i,o)=>[o,i]):t==="BASH_LINENO"?(e.state.callLineStack??[]).map((i,o)=>[o,String(i)]):t==="BASH_SOURCE"?(e.state.sourceStack??[]).map((i,o)=>[o,i]):e.state.associativeArrays?.has(t)?xt(e,t).map(i=>[i,ae(e,t,i)??""]):Se(e,t).map(s=>[s,ae(e,t,s)??""])}function mt(e,t){return t==="FUNCNAME"?(e.state.funcNameStack?.length??0)>0:t==="BASH_LINENO"?(e.state.callLineStack?.length??0)>0:t==="BASH_SOURCE"?(e.state.sourceStack?.length??0)>0:e.state.associativeArrays?.has(t)?Ce(e,t):Ce(e,t)}async function oe(e,t,n=!0,r=!1){switch(t){case"?":return String(e.state.lastExitCode);case"$":return String(e.state.virtualPid);case"#":return e.state.env.get("#")||"0";case"@":return e.state.env.get("@")||"";case"_":return e.state.lastArg;case"-":{let o="";return o+="h",e.state.options.errexit&&(o+="e"),e.state.options.noglob&&(o+="f"),e.state.options.nounset&&(o+="u"),e.state.options.verbose&&(o+="v"),e.state.options.xtrace&&(o+="x"),o+="B",e.state.options.noclobber&&(o+="C"),o+="s",o}case"*":{let o=Number.parseInt(e.state.env.get("#")||"0",10);if(o===0)return"";let a=[];for(let l=1;l<=o;l++)a.push(e.state.env.get(String(l))||"");return a.join(Q(e.state.env))}case"0":return e.state.env.get("0")||"bash";case"PWD":return e.state.env.get("PWD")??"";case"OLDPWD":return e.state.env.get("OLDPWD")??"";case"PPID":return String(e.state.virtualPpid);case"UID":return String(e.state.virtualUid);case"EUID":return String(e.state.virtualUid);case"RANDOM":return String(Math.floor(Math.random()*32768));case"SECONDS":return String(Math.floor((Date.now()-e.state.startTime)/1e3));case"BASH_VERSION":return Wa;case"!":return String(e.state.lastBackgroundPid);case"BASHPID":return String(e.state.bashPid);case"LINENO":return String(e.state.currentLine);case"FUNCNAME":{let o=e.state.funcNameStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ue("FUNCNAME");return""}case"BASH_LINENO":{let o=e.state.callLineStack?.[0];if(o!==void 0)return String(o);if(n&&e.state.options.nounset)throw new Ue("BASH_LINENO");return""}case"BASH_SOURCE":{let o=e.state.sourceStack?.[0];if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ue("BASH_SOURCE");return""}}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[\]$/.test(t))throw new Xe(`\${${t}}`);let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let o=s[1],a=s[2];if(ce(e,o)){let f=Be(e,o);if(f&&f!==o){if(f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return"";o=f}}if(a==="@"||a==="*"){let f=G(e,o);if(f.length>0)return f.map(([,p])=>p).join(" ");let d=e.state.env.get(o);return d!==void 0?d:""}if(o==="FUNCNAME"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.funcNameStack?.[f]??"":""}if(o==="BASH_LINENO"){let f=Number.parseInt(a,10);if(!Number.isNaN(f)&&f>=0){let d=e.state.callLineStack?.[f];return d!==void 0?String(d):""}return""}if(o==="BASH_SOURCE"){let f=Number.parseInt(a,10);return!Number.isNaN(f)&&f>=0?e.state.sourceStack?.[f]??"":""}if(e.state.associativeArrays?.has(o)){let f=Hr(a);f=ec(e,f);let d=ae(e,o,f);if(d===void 0&&n&&e.state.options.nounset)throw new Ue(`${o}[${a}]`);return d||""}let c;if(/^-?\d+$/.test(a))c=Number.parseInt(a,10);else try{let f=new H,d=se(f,a);c=await Y(e,d.expression)}catch{let f=e.state.env.get(a);c=f?Number.parseInt(f,10):0,Number.isNaN(c)&&(c=0)}if(c<0){let f=G(e,o),d=e.state.currentLine;if(f.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
99
99
  `,"";let h=Math.max(...f.map(([E])=>typeof E=="number"?E:0))+1+c;return h<0?(e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${d}: ${o}: bad array subscript
100
- `,""):oe(e,o,h)||""}let u=oe(e,o,c);if(u!==void 0)return u;if(c===0){let f=e.state.env.get(o);if(f!==void 0)return f}if(n&&e.state.options.nounset)throw new Ve(`${o}[${c}]`);return""}if(/^[1-9][0-9]*$/.test(t)){let o=e.state.env.get(t);if(o===void 0&&n&&e.state.options.nounset)throw new Ve(t);return o||""}if(le(e,t)){let o=Fe(e,t);if(o===void 0)return"";if(o!==t)return await ie(e,o,n,r);let a=e.state.env.get(t);if((a===void 0||a==="")&&n&&e.state.options.nounset)throw new Ve(t);return a||""}let i=e.state.env.get(t);if(i!==void 0)return e.state.tempEnvBindings?.some(o=>o.has(t))&&(e.state.accessedTempEnvVars=e.state.accessedTempEnvVars||new Set,e.state.accessedTempEnvVars.add(t)),i;if(pt(e,t)){let o=oe(e,t,0);if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ve(t);return""}if(n&&e.state.options.nounset)throw new Ve(t);return""}async function xt(e,t){if(new Set(["?","$","#","_","-","0","PPID","UID","EUID","RANDOM","SECONDS","BASH_VERSION","!","BASHPID","LINENO"]).has(t))return!0;if(t==="@"||t==="*")return Number.parseInt(e.state.env.get("#")||"0",10)>0;if(t==="PWD"||t==="OLDPWD")return e.state.env.has(t);let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(r){let s=r[1],i=r[2];if(le(e,s)){let l=Fe(e,s);if(l&&l!==s){if(l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return!1;s=l}}if(i==="@"||i==="*")return G(e,s).length>0?!0:e.state.env.has(s);if(e.state.associativeArrays?.has(s)){let l=ql(e,Wr(i));return Gt(e,s,l)}let a;if(/^-?\d+$/.test(i))a=Number.parseInt(i,10);else try{let l=new j,c=re(l,i);a=await X(e,c.expression)}catch{let l=e.state.env.get(i);a=l?Number.parseInt(l,10):0,Number.isNaN(a)&&(a=0)}if(a<0){let l=G(e,s);if(l.length===0)return!1;let u=Math.max(...l.map(([f])=>typeof f=="number"?f:0))+1+a;return u<0?!1:Gt(e,s,u)}return Gt(e,s,a)}if(le(e,t)){let s=Fe(e,t);return s===void 0||s===t?e.state.env.has(t):xt(e,s)}return e.state.env.has(t)?!0:pt(e,t)?Gt(e,t,0):!1}async function jl(e,t){let n="",r=0;for(;r<t.length;){if(t[r]==="$"){if(t[r+1]==="{"){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="{"?s++:t[i]==="}"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(t[r+1]==="("){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="("?s++:t[i]===")"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ie(e,i);n+=o,r=s;continue}if(/[0-9]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[0-9]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ie(e,i);n+=o,r=s;continue}if(/[*@#?\-!$]/.test(t[r+1]||"")){let s=t[r+1],i=await ie(e,s);n+=i,r+=2;continue}}if(t[r]==='"'){for(n+='"',r++;r<t.length&&t[r]!=='"';)if(t[r]==="$"&&/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await ie(e,i);n+=o,r=s}else t[r]==="\\"?(n+=t[r],r++,r<t.length&&(n+=t[r],r++)):(n+=t[r],r++);r<t.length&&(n+='"',r++);continue}n+=t[r],r++}return n}async function Ti(e,t){let n=t,r=t.startsWith('"')&&t.endsWith('"'),s=t.startsWith("'")&&t.endsWith("'");if((r||s)&&(n=t.slice(1,-1)),s)return n;let i="",o=0;for(;o<n.length;)if(n[o]==="$")if(n[o+1]==="("){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="("&&n[l-1]==="$"||n[l]==="("?a++:n[l]===")"&&a--,l++;let c=n.slice(o+2,l-1);if(e.execFn){let u=await e.execFn(c,{signal:e.state.signal});i+=u.stdout.replace(/\n+$/,""),u.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+u.stderr)}o=l}else if(n[o+1]==="{"){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="{"?a++:n[l]==="}"&&a--,l++;let c=n.slice(o+2,l-1),u=await ie(e,c);i+=u,o=l}else if(/[a-zA-Z_]/.test(n[o+1]||"")){let a=o+1;for(;a<n.length&&/[a-zA-Z0-9_]/.test(n[a]);)a++;let l=n.slice(o+1,a),c=await ie(e,l);i+=c,o=a}else i+=n[o],o++;else if(n[o]==="`"){let a=o+1;for(;a<n.length&&n[a]!=="`";)a++;let l=n.slice(o+1,a);if(e.execFn){let c=await e.execFn(l,{signal:e.state.signal});i+=c.stdout.replace(/\n+$/,""),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr)}o=a+1}else i+=n[o],o++;return i}var ar=1e4,Fi={maxResults:ar,maxStringBytes:10*1024*1024};function es(e,t,n,r){if(e.length>=n.maxResults)return!1;let s=M(t);if(s>n.maxStringBytes-r.value)throw new P(`brace expansion string limit exceeded (${n.maxStringBytes} bytes)`,"string_length");return e.push(t),r.value+=s,!0}function gp(e,t,n,r,s,i=Fi){let o=n??1;o===0&&(o=1);let a=Math.abs(o),l=[],c=0;if(r?.match(/^-?0\d/)&&(c=Math.max(c,r.replace(/^-/,"").length)),s?.match(/^-?0\d/)&&(c=Math.max(c,s.replace(/^-/,"").length)),c>i.maxStringBytes)throw new P(`brace expansion padding limit exceeded (${i.maxStringBytes} bytes)`,"string_length");let u={value:0},f=d=>{if(c>0){let p=d<0,h=String(Math.abs(d)).padStart(c,"0");return p?`-${h}`:h}return String(d)};if(e<=t)for(let d=e,p=0;d<=t&&p<ar&&es(l,f(d),i,u);d+=a,p++);else for(let d=e,p=0;d>=t&&p<ar&&es(l,f(d),i,u);d-=a,p++);return l}function wp(e,t,n,r=Fi){let s=n??1;s===0&&(s=1);let i=e.charCodeAt(0),o=t.charCodeAt(0),a=Math.abs(s),l=e>="A"&&e<="Z",c=e>="a"&&e<="z",u=t>="A"&&t<="Z",f=t>="a"&&t<="z";if(l&&f||c&&u){let h=n!==void 0?`..${n}`:"";throw new Rr(`{${e}..${t}${h}}: invalid sequence`)}let d=[],p={value:0};if(i<=o)for(let h=i,m=0;h<=o&&m<ar&&es(d,String.fromCharCode(h),r,p);h+=a,m++);else for(let h=i,m=0;h>=o&&m<ar&&es(d,String.fromCharCode(h),r,p);h-=a,m++);return d}function Mi(e,t,n,r,s,i=Fi){let o=n!==void 0?`..${n}`:"";return typeof e=="number"&&typeof t=="number"?{expanded:gp(e,t,n,r,s,i),literal:`{${e}..${t}${o}}`}:typeof e=="string"&&typeof t=="string"?{expanded:wp(e,t,n,i),literal:`{${e}..${t}${o}}`}:{expanded:null,literal:`{${e}..${t}${o}}`}}function Gl(e){if(e.statements.length!==1)return null;let t=e.statements[0];if(t.operators.length!==0||t.pipelines.length!==1)return null;let n=t.pipelines[0];if(n.negated||n.commands.length!==1)return null;let r=n.commands[0];if(r.type!=="SimpleCommand")return null;let s=r;if(s.name!==null||s.args.length!==0||s.assignments.length!==0||s.redirections.length!==1)return null;let i=s.redirections[0];return i.operator!=="<"||i.target.type!=="Word"?null:{target:i.target}}function $t(e,t){return!!(/[*?[]/.test(e)||t&&/[@*+?!]\(/.test(e))}function Bi(e){let t="",n=0;for(;n<e.length;)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);return t}function Je(e){return e.replace(/([*?[\]\\()|])/g,"\\$1")}function Tn(e){return e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}function ee(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Y(e,t,n=!1){let r="",s=0;for(;s<e.length;){let i=e[s];if(n&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<e.length&&e[s+1]==="("){let o=Ep(e,s+1);if(o!==-1){let a=e.slice(s+2,o),c=bp(a).map(f=>Y(f,t,n)),u=c.length>0?c.join("|"):"(?:)";i==="@"?r+=`(?:${u})`:i==="*"?r+=`(?:${u})*`:i==="+"?r+=`(?:${u})+`:i==="?"?r+=`(?:${u})?`:i==="!"&&(r+=`(?!(?:${u})$).*`),s=o+1;continue}}if(i==="\\")if(s+1<e.length){let o=e[s+1];/[\\^$.|+(){}[\]*?]/.test(o)?r+=`\\${o}`:r+=o,s+=2}else r+="\\\\",s++;else if(i==="*")r+=t?".*":".*?",s++;else if(i==="?")r+=".",s++;else if(i==="["){let o=Sp(e,s);if(o===-1)r+="\\[",s++;else{let a=e.slice(s+1,o);r+=Ap(a),s=o+1}}else/[\^$.|+(){}]/.test(i)?(r+=`\\${i}`,s++):(r+=i,s++)}return r}function Ep(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function bp(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function Sp(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==="]")return n;if(e[n]==="'"){let r=e.indexOf("'",n+1);if(r!==-1){n=r+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let r=e.indexOf(":]",n+2);if(r!==-1){n=r+2;continue}}n++}return-1}function Ap(e){let t="[",n=0;for((e[0]==="^"||e[0]==="!")&&(t+="^",n++);n<e.length;){if(e[n]==="'"){let s=e.indexOf("'",n+1);if(s!==-1){let i=e.slice(n+1,s);for(let o of i)o==="\\"?t+="\\\\":o==="]"?t+="\\]":o==="^"&&t==="["?t+="\\^":t+=o;n=s+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){let i=e.slice(n+2,s);t+=kp(i),n=s+2;continue}}let r=e[n];r==="\\"?n+1<e.length?(t+=`\\${e[n+1]}`,n+=2):(t+="\\\\",n++):r==="-"&&n>0&&n<e.length-1?(t+="-",n++):r==="^"&&n===0?(t+="^",n++):(r==="]"&&n===0?t+="\\]":t+=r,n++)}return t+="]",t}var vp=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]);function kp(e){return vp.get(e)??""}function ht(e,t,n,r,s){if(r==="prefix")return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),he(`^${n}`,"s").replace(t,"");let i=he(`${n}$`,"s");if(s)return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),i.replace(t,"");e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal");let o=he(`^(?:.*)(${n})$`,"s").exec(t);if(!o)return t;let a=o[1]??"";return t.slice(0,t.length-a.length)}function Fn(e,t){let n=new Set;for(let r of e.state.env.keys())r.startsWith(t)&&n.add(r);for(let r of e.state.arrays?.keys()??[])r.startsWith(t)&&n.add(r);return[...n].sort()}function ts(e,t,n,r,s){let i=new $n(e.limits.maxStringLength,"pattern replacement",()=>new P(`pattern replacement: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length"));n.lastIndex=0;let o=0,a=n.exec(t);for(;a!==null&&(e.executionScope.consumeLimited("pattern_operations",1,e.limits.maxGlobOperations,"pattern replacement"),!(s&&a[0].length===0&&a.index===t.length||(i.append(t.slice(o,a.index)),i.append(r),o=a.index+a[0].length,!s)));)a[0].length===0&&(o++,n.lastIndex<=a.index&&(n.lastIndex=a.index+1)),a=n.exec(t);return i.append(t.slice(o)),n.lastIndex=0,i.build()}function Hl(e){let t=[],n=0;return{append(r){let s=M(r);if(s>e-n)throw new P(`prompt expansion exceeds string length limit (${e} bytes)`,"string_length");r&&t.push(r),n+=s},build:()=>t.join("")}}function xp(e,t,n){let r=(o,a=2)=>String(o).padStart(a,"0");if(e===""){let o=r(t.getHours()),a=r(t.getMinutes()),l=r(t.getSeconds());return`${o}:${a}:${l}`}let s=Hl(n),i=0;for(;i<e.length;)if(e[i]==="%"){if(i+1>=e.length){s.append("%"),i++;continue}let o=e[i+1];switch(o){case"H":s.append(r(t.getHours()));break;case"M":s.append(r(t.getMinutes()));break;case"S":s.append(r(t.getSeconds()));break;case"d":s.append(r(t.getDate()));break;case"m":s.append(r(t.getMonth()+1));break;case"Y":s.append(String(t.getFullYear()));break;case"y":s.append(r(t.getFullYear()%100));break;case"I":{let a=t.getHours()%12;a===0&&(a=12),s.append(r(a));break}case"p":s.append(t.getHours()<12?"AM":"PM");break;case"P":s.append(t.getHours()<12?"am":"pm");break;case"%":s.append("%");break;case"a":{let a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];s.append(a[t.getDay()]);break}case"b":{let a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];s.append(a[t.getMonth()]);break}default:s.append(`%${o}`)}i+=2}else s.append(e[i]),i++;return s.build()}function lr(e,t){let n=Hl(e.limits.maxStringLength),r=0,s=e.state.env.get("USER")||e.state.env.get("LOGNAME")||"user",i=e.state.env.get("HOSTNAME")||"localhost",o=i.split(".")[0],a=e.state.env.get("PWD")||"/",l=e.state.env.get("HOME")||"/",c=a.startsWith(l)?`~${a.slice(l.length)}`:a,u=a.split("/").pop()||a,f=new Date,d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],h=e.state.env.get("__COMMAND_NUMBER")||"1";for(;r<t.length;){let m=t[r];if(m==="\\"){if(r+1>=t.length){n.append("\\"),r++;continue}let E=t[r+1];if(E>="0"&&E<="7"){let S="",g=r+1;for(;g<t.length&&g<r+4&&t[g]>="0"&&t[g]<="7";)S+=t[g],g++;let y=Number.parseInt(S,8)%256;n.append(String.fromCharCode(y)),r=g;continue}switch(E){case"\\":n.append("\\"),r+=2;break;case"a":n.append("\x07"),r+=2;break;case"e":n.append("\x1B"),r+=2;break;case"n":n.append(`
101
- `),r+=2;break;case"r":n.append("\r"),r+=2;break;case"$":n.append("$"),r+=2;break;case"[":case"]":r+=2;break;case"u":n.append(s),r+=2;break;case"h":n.append(o),r+=2;break;case"H":n.append(i),r+=2;break;case"w":n.append(c),r+=2;break;case"W":n.append(u),r+=2;break;case"d":{let S=String(f.getDate()).padStart(2," ");n.append(`${d[f.getDay()]} ${p[f.getMonth()]} ${S}`),r+=2;break}case"t":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0"),y=String(f.getSeconds()).padStart(2,"0");n.append(`${S}:${g}:${y}`),r+=2;break}case"T":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),b=String(f.getSeconds()).padStart(2,"0");n.append(`${g}:${y}:${b}`),r+=2;break}case"@":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),y=String(f.getMinutes()).padStart(2,"0"),b=f.getHours()<12?"AM":"PM";n.append(`${g}:${y} ${b}`),r+=2;break}case"A":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0");n.append(`${S}:${g}`),r+=2;break}case"D":if(r+2<t.length&&t[r+2]==="{"){let S=t.indexOf("}",r+3);if(S!==-1){let g=t.slice(r+3,S);n.append(xp(g,f,e.limits.maxStringLength)),r=S+1}else n.append("\\D"),r+=2}else n.append("\\D"),r+=2;break;case"s":n.append("bash"),r+=2;break;case"v":n.append("5.0"),r+=2;break;case"V":n.append("5.0.0"),r+=2;break;case"j":n.append("0"),r+=2;break;case"l":n.append("tty"),r+=2;break;case"#":n.append(h),r+=2;break;case"!":n.append(h),r+=2;break;case"x":n.append("\\x"),r+=2;break;default:n.append(`\\${E}`),r+=2}}else n.append(m),r++}return n.build()}function Xt(e){if(e==="")return"''";if(/[\n\r\t\x00-\x1f\x7f']/.test(e)){let n="$'";for(let r of e)switch(r){case"'":n+="\\'";break;case"\\":n+="\\\\";break;case`
102
- `:n+="\\n";break;case"\r":n+="\\r";break;case" ":n+="\\t";break;default:{let s=r.charCodeAt(0);s<32||s===127?n+=`\\${s.toString(8).padStart(3,"0")}`:n+=r}}return`${n}'`}return`'${e}'`}function Ge(e,t){e.state.readonlyVars=e.state.readonlyVars||new Set,e.state.readonlyVars.add(t)}function Me(e,t){return e.state.readonlyVars?.has(t)??!1}function ce(e,t,n="bash"){if(Me(e,t)){let r=`${n}: ${t}: readonly variable
103
- `;throw new U(1,"",r)}return null}function mt(e,t){let n=e.state.exportedVars?.has(t)??!1;if(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(t),e.state.localScopes.length>0&&e.state.localScopes[e.state.localScopes.length-1].has(t)&&!n){for(e.state.localExportedVars||(e.state.localExportedVars=[]);e.state.localExportedVars.length<e.state.localScopes.length;)e.state.localExportedVars.push(new Set);e.state.localExportedVars[e.state.localExportedVars.length-1].add(t)}}function ns(e,t){e.state.exportedVars?.delete(t)}function Yt(e,t){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t))return"";let n="",r=ve(e,t)?.kind==="indexed",s=e.state.associativeArrays?.has(t)??!1;return r&&!s&&(n+="a"),s&&(n+="A"),e.state.integerVars?.has(t)&&(n+="i"),le(e,t)&&(n+="n"),Me(e,t)&&(n+="r"),e.state.exportedVars?.has(t)&&(n+="x"),n}async function Zl(e,t,n,r){return e.coverage?.hit("bash:expansion:default_value"),(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):n.effectiveValue}async function Ql(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:assign_default"),(r.isUnset||n.checkEmpty&&r.isEmpty)&&n.word){let o=await s(e,n.word.parts,r.inDoubleQuotes),a=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let[,l,c]=a,u;if(/^\d+$/.test(c))u=Number.parseInt(c,10);else{try{let f=new j,d=re(f,c);u=await X(e,d.expression)}catch{let f=e.state.env.get(c);u=f?Number.parseInt(f,10):0}Number.isNaN(u)&&(u=0)}q(e,l,u,o)}else e.state.env.set(t,o);return o}return r.effectiveValue}async function Kl(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:error_if_unset"),r.isUnset||n.checkEmpty&&r.isEmpty){let o=n.word?await s(e,n.word.parts,r.inDoubleQuotes):`${t}: parameter null or not set`;throw new U(1,"",`bash: ${o}
104
- `)}return r.effectiveValue}async function Xl(e,t,n,r){return e.coverage?.hit("bash:expansion:use_alternative"),!(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):""}async function Yl(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_removal");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let a of n.pattern.parts)if(a.type==="Glob")i+=Y(a.pattern,n.greedy,o);else if(a.type==="Literal")i+=Y(a.value,n.greedy,o);else if(a.type==="SingleQuoted"||a.type==="Escaped")i+=ee(a.value);else if(a.type==="DoubleQuoted"){let l=await r(e,a.parts);i+=ee(l)}else if(a.type==="ParameterExpansion"){let l=await s(e,a);i+=Y(l,n.greedy,o)}else{let l=await s(e,a);i+=ee(l)}return ht(e,t,i,n.side,n.greedy)}async function Jl(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_replacement");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let c of n.pattern.parts)if(c.type==="Glob")i+=Y(c.pattern,!0,o);else if(c.type==="Literal")i+=Y(c.value,!0,o);else if(c.type==="SingleQuoted"||c.type==="Escaped")i+=ee(c.value);else if(c.type==="DoubleQuoted"){let u=await r(e,c.parts);i+=ee(u)}else if(c.type==="ParameterExpansion"){let u=await s(e,c);i+=Y(u,!0,o)}else{let u=await s(e,c);i+=ee(u)}let a=n.replacement?await r(e,n.replacement.parts):"";if(n.anchor==="start"?i=`^${i}`:n.anchor==="end"&&(i=`${i}$`),i==="")return t;let l=n.all?"gs":"s";try{let c=he(i,l);return ts(e,t,c,a,n.all)}catch(c){if(c instanceof P)throw c;return t}}function ec(e,t,n){e.coverage?.hit("bash:expansion:length");let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(r){let s=r[1],i=G(e,s);return i.length>0?String(i.length):e.state.env.get(s)!==void 0?"1":"0"}if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&pt(e,t)){if(t==="FUNCNAME"){let i=e.state.funcNameStack?.[0]||"";return String([...i].length)}if(t==="BASH_LINENO"){let i=e.state.callLineStack?.[0];return String(i!==void 0?[...String(i)].length:0)}let s=oe(e,t,0)||"";return String([...s].length)}return String([...n].length)}async function tc(e,t,n,r){e.coverage?.hit("bash:expansion:substring");let s=await X(e,r.offset.expression),i=r.length?await X(e,r.length.expression):void 0;if(t==="@"||t==="*"){let c=Number.parseInt(e.state.env.get("#")||"0",10),u=[];for(let h=1;h<=c;h++)u.push(e.state.env.get(String(h))||"");let f=e.state.env.get("0")||"bash",d,p;if(s<=0)if(d=[f,...u],s<0){if(p=d.length+s,p<0)return""}else p=0;else d=u,p=s-1;if(p<0||p>=d.length)return"";if(i!==void 0){let h=i<0?d.length+i:p+i;return d.slice(p,Math.max(p,h)).join(" ")}return d.slice(p).join(" ")}let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(o){let c=o[1];if(e.state.associativeArrays?.has(c))throw new U(1,"",`bash: \${${c}[@]: 0: 3}: bad substitution
105
- `);let u=G(e,c),f=0;if(s<0){if(u.length>0){let d=u[u.length-1][0],h=(typeof d=="number"?d:0)+1+s;if(h<0||(f=u.findIndex(([m])=>typeof m=="number"&&m>=h),f<0))return""}}else if(f=u.findIndex(([d])=>typeof d=="number"&&d>=s),f<0)return"";if(i!==void 0){if(i<0)throw new ae(`${o[1]}[@]: substring expression < 0`);return u.slice(f,f+i).map(([,d])=>d).join(" ")}return u.slice(f).map(([,d])=>d).join(" ")}let a=[...n],l=s;if(l<0&&(l=Math.max(0,a.length+l)),i!==void 0){if(i<0){let c=a.length+i;return a.slice(l,Math.max(l,c)).join("")}return a.slice(l,l+i).join("")}return a.slice(l).join("")}async function nc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:case_modification"),n.pattern){let i=e.state.shoptOptions.extglob,o="";for(let f of n.pattern.parts)if(f.type==="Glob")o+=Y(f.pattern,!0,i);else if(f.type==="Literal")o+=Y(f.value,!0,i);else if(f.type==="SingleQuoted"||f.type==="Escaped")o+=ee(f.value);else if(f.type==="DoubleQuoted"){let d=await r(e,f.parts);o+=ee(d)}else if(f.type==="ParameterExpansion"){let d=await s(e,f);o+=Y(d,!0,i)}let a=he(`^(?:${o})$`),l=n.direction==="upper"?f=>f.toUpperCase():f=>f.toLowerCase(),c="",u=!1;for(let f of t)!n.all&&u?c+=f:a.test(f)?(c+=l(f),u=!0):c+=f;return c}return n.direction==="upper"?n.all?t.toUpperCase():t.charAt(0).toUpperCase()+t.slice(1):n.all?t.toLowerCase():t.charAt(0).toLowerCase()+t.slice(1)}function rc(e,t,n,r,s){e.coverage?.hit("bash:expansion:transform");let i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(i&&s.operator==="Q")return G(e,i[1]).map(([,c])=>Xt(c)).join(" ");if(i&&s.operator==="a")return Yt(e,i[1]);let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[.+\]$/);if(o&&s.operator==="a")return Yt(e,o[1]);switch(s.operator){case"Q":return r?"":Xt(n);case"P":return lr(e,n);case"a":return Yt(e,t);case"A":return r?"":`${t}=${Xt(n)}`;case"E":return n.replace(/\\([\\abefnrtv'"?])/g,(a,l)=>{switch(l){case"\\":return"\\";case"a":return"\x07";case"b":return"\b";case"e":return"\x1B";case"f":return"\f";case"n":return`
106
- `;case"r":return"\r";case"t":return" ";case"v":return"\v";case"'":return"'";case'"':return'"';case"?":return"?";default:return l}});case"K":case"k":return r?"":Xt(n);case"u":return n.charAt(0).toUpperCase()+n.slice(1);case"U":return n.toUpperCase();case"L":return n.toLowerCase();default:return n}}async function sc(e,t,n,r,s,i,o=!1){if(e.coverage?.hit("bash:expansion:indirection"),le(e,t))return An(e,t)||"";let a=/^[a-zA-Z_][a-zA-Z0-9_]*\[([@*])\]$/.test(t);if(r){if(s.innerOp?.type==="UseAlternative")return"";throw new Ke(`\${!${t}}`)}let l=n;if(a&&(l===""||l.includes(" ")))throw new Ke(`\${!${t}}`);let c=l.match(/^[a-zA-Z_][a-zA-Z0-9_]*\[(.+)\]$/);if(c&&c[1].includes("~"))throw new Ke(`\${!${t}}`);if(s.innerOp){let u={type:"ParameterExpansion",parameter:l,operation:s.innerOp};return i(e,u,o)}return await ie(e,l)}function ic(e,t){e.coverage?.hit("bash:expansion:array_keys");let r=G(e,t.array).map(([s])=>String(s));return t.star?r.join(Z(e.state.env)):r.join(" ")}function oc(e,t){e.coverage?.hit("bash:expansion:var_name_prefix");let n=Fn(e,t.prefix);return t.star?n.join(Z(e.state.env)):n.join(" ")}function ac(e,t,n,r){let s=Number.parseInt(e.state.env.get("#")||"0",10),i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(t==="*")return{isEmpty:s===0,effectiveValue:n};if(t==="@")return{isEmpty:s===0||s===1&&e.state.env.get("1")==="",effectiveValue:n};if(i){let[,o,a]=i,l=G(e,o);if(l.length===0)return{isEmpty:!0,effectiveValue:""};if(a==="*"){let c=Z(e.state.env),u=l.map(([,f])=>f).join(c);return{isEmpty:r?u==="":!1,effectiveValue:u}}return{isEmpty:l.length===1&&l.every(([,c])=>c===""),effectiveValue:l.map(([,c])=>c).join(" ")}}return{isEmpty:n==="",effectiveValue:n}}function lc(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="\\"&&t+1<e.length){t+=2;continue}if(n==="'"){let r=e.indexOf("'",t+1);if(r!==-1){t=r+1;continue}}if(n==="$"&&t+1<e.length&&e[t+1]==="("||n==="`")return!0;t++}return!1}function cc(e,t){let n=1,r=t,s=!1,i=!1;for(;r<e.length&&n>0;){let o=e[r];if(o==="\\"&&!s&&r+1<e.length){r+=2;continue}if(o==="'"&&!i){s=!s,r++;continue}if(o==='"'&&!s){i=!i,r++;continue}if(!s&&!i){if(o==="(")n++;else if(o===")"&&(n--,n===0))return r}r++}return-1}async function rs(e,t){let n=new j,r;try{r=n.parse(t)}catch{return""}let s=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let i=new Map(e.state.env),o=st(e.state.arrays),a=e.state.cwd,l=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let c=await e.executeScript(r),u=c.exitCode;return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.suppressVerbose=l,e.state.lastExitCode=u,e.state.env.set("?",String(u)),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr),e.state.bashPid=s,c.stdout.replace(/\n+$/,"")}catch(c){return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.bashPid=s,e.state.suppressVerbose=l,Or(c),c instanceof U?(e.state.lastExitCode=c.exitCode,e.state.env.set("?",String(c.exitCode)),c.stdout?.replace(/\n+$/,"")??""):""}}function Wi(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=Je(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=$p(e,a);n+=Je(l),r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}function $p(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}async function uc(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=Je(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=await Pp(e,a);n+=Je(l),r=i+1;continue}}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=cc(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await rs(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await rs(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}async function Pp(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=cc(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await rs(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await rs(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}function Vi(e,t){if(!t.startsWith("~"))return t;e.coverage?.hit("bash:expansion:tilde");let n=e.state.env.get("HOME")!==void 0?e.state.env.get("HOME"):"/home/user";if(t==="~"||t.startsWith("~/"))return n+t.slice(1);let r=1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;let s=t.slice(1,r),i=t.slice(r);return i!==""&&!i.startsWith("/")?t:s==="root"?`/root${i}`:t}function Jt(e,t){return t.split(":").map(n=>Vi(e,n)).join(":")}function Re(e,t,n,r){if(e.length>n-t.length)throw new P(`${r} element limit exceeded (${n})`,"array_elements");for(let s of t)e.push(s)}async function Cp(e,t,n,r){let s="";for(let i of t.parts)if(i.type==="Glob")s+=Y(i.pattern,!0,e.state.shoptOptions.extglob);else if(i.type==="Literal")s+=Y(i.value,!0,e.state.shoptOptions.extglob);else if(i.type==="SingleQuoted"||i.type==="Escaped")s+=ee(i.value);else if(i.type==="DoubleQuoted"){let o=await n(e,i.parts);s+=ee(o)}else if(i.type==="ParameterExpansion"){let o=await r(e,i);s+=Y(o,!0,e.state.shoptOptions.extglob)}else{let o=await r(e,i);s+=ee(o)}return s}async function fc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternReplacement")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=G(e,a),f=u.map(([,E])=>E);if(u.length===0){let E=e.state.env.get(a);E!==void 0&&f.push(E)}if(f.length===0)return{values:[],quoted:!0};let d="";c.pattern&&(d=await Cp(e,c.pattern,n,r));let p=c.replacement?await n(e,c.replacement.parts):"",h=d;c.anchor==="start"?h=`^${d}`:c.anchor==="end"&&(h=`${d}$`);let m=[];try{let E=he(h,c.all?"g":"");for(let S of f)m.push(E.replace(S,p))}catch{m.push(...f)}if(l){let E=Z(e.state.env);return{values:[m.join(E)],quoted:!0}}return{values:m,quoted:!0}}async function dc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternRemoval")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=G(e,a),f=u.map(([,m])=>m);if(u.length===0){let m=e.state.env.get(a);m!==void 0&&f.push(m)}if(f.length===0)return{values:[],quoted:!0};let d="",p=e.state.shoptOptions.extglob;if(c.pattern)for(let m of c.pattern.parts)if(m.type==="Glob")d+=Y(m.pattern,c.greedy,p);else if(m.type==="Literal")d+=Y(m.value,c.greedy,p);else if(m.type==="SingleQuoted"||m.type==="Escaped")d+=ee(m.value);else if(m.type==="DoubleQuoted"){let E=await n(e,m.parts);d+=ee(E)}else if(m.type==="ParameterExpansion"){let E=await r(e,m);d+=Y(E,c.greedy,p)}else{let E=await r(e,m);d+=ee(E)}let h=[];for(let m of f)h.push(ht(e,m,d,c.side,c.greedy));if(l){let m=Z(e.state.env);return{values:[h.join(m)],quoted:!0}}return{values:h,quoted:!0}}async function pc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="DefaultValue"&&n.parts[0].operation?.type!=="UseAlternative"&&n.parts[0].operation?.type!=="AssignDefault")return null;let r=n.parts[0],s=r.operation,i=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/),o,a=!1;if(i){let l=i[1];a=i[2]==="*";let c=G(e,l),u=c.length>0||e.state.env.has(l),f=c.length===0||c.length===1&&c.every(([,p])=>p===""),d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=u&&!(d&&f):o=!u||d&&f,!o){if(c.length>0){let h=c.map(([,m])=>m);if(a){let m=Z(e.state.env);return{values:[h.join(m)],quoted:!0}}return{values:h,quoted:!0}}let p=e.state.env.get(l);return p!==void 0?{values:[p],quoted:!0}:{values:[],quoted:!0}}}else{let l=r.parameter,c=await xt(e,l),u=await ie(e,l),f=u==="",d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=c&&!(d&&f):o=!c||d&&f,!o)return{values:[u],quoted:!0}}if(o&&s.word){let l=s.word.parts,c=null,u=!1;for(let f of l)if(f.type==="ParameterExpansion"&&!f.operation){let d=f.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(d){c=d[1],u=d[2]==="*";break}}if(c){let f=G(e,c);if(f.length>0){let p=f.map(([,h])=>h);if(u||a){let h=Z(e.state.env);return{values:[p.join(h)],quoted:!0}}return{values:p,quoted:!0}}let d=e.state.env.get(c);return d!==void 0?{values:[d],quoted:!0}:{values:[],quoted:!0}}}return null}async function hc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0],o=-1,a="",l=!1,c=null;for(let m=0;m<i.parts.length;m++){let E=i.parts[m];if(E.type==="ParameterExpansion"&&(E.operation?.type==="PatternRemoval"||E.operation?.type==="PatternReplacement")){let S=E.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(S){o=m,a=S[1],l=S[2]==="*",c=E.operation;break}}}if(o===-1||o===0&&o===i.parts.length-1)return null;let u="";for(let m=0;m<o;m++)u+=await r(e,i.parts[m]);let f="";for(let m=o+1;m<i.parts.length;m++)f+=await r(e,i.parts[m]);let d=G(e,a),p=d.map(([,m])=>m);if(d.length===0){let m=e.state.env.get(a);if(m!==void 0)p=[m];else{if(l)return{values:[u+f],quoted:!0};let E=u+f;return{values:E?[E]:[],quoted:!0}}}if(c?.type==="PatternRemoval"){let m=c,E="",S=e.state.shoptOptions.extglob;if(m.pattern)for(let g of m.pattern.parts)if(g.type==="Glob")E+=Y(g.pattern,m.greedy,S);else if(g.type==="Literal")E+=Y(g.value,m.greedy,S);else if(g.type==="SingleQuoted"||g.type==="Escaped")E+=ee(g.value);else if(g.type==="DoubleQuoted"){let y=await s(e,g.parts);E+=ee(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);E+=Y(y,m.greedy,S)}else{let y=await r(e,g);E+=ee(y)}p=p.map(g=>ht(e,g,E,m.side,m.greedy))}else if(c?.type==="PatternReplacement"){let m=c,E="";if(m.pattern)for(let y of m.pattern.parts)if(y.type==="Glob")E+=Y(y.pattern,!0,e.state.shoptOptions.extglob);else if(y.type==="Literal")E+=Y(y.value,!0,e.state.shoptOptions.extglob);else if(y.type==="SingleQuoted"||y.type==="Escaped")E+=ee(y.value);else if(y.type==="DoubleQuoted"){let b=await s(e,y.parts);E+=ee(b)}else if(y.type==="ParameterExpansion"){let b=await r(e,y);E+=Y(b,!0,e.state.shoptOptions.extglob)}else{let b=await r(e,y);E+=ee(b)}let S=m.replacement?await s(e,m.replacement.parts):"",g=E;m.anchor==="start"?g=`^${E}`:m.anchor==="end"&&(g=`${E}$`);try{let y=he(g,m.all?"g":"");p=p.map(b=>y.replace(b,S))}catch{}}if(l){let m=Z(e.state.env);return{values:[u+p.join(m)+f],quoted:!0}}return p.length===1?{values:[u+p[0]+f],quoted:!0}:{values:[u+p[0],...p.slice(1,-1),p[p.length-1]+f],quoted:!0}}async function mc(e,t,n,r){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o="",a=!1;for(let p=0;p<s.parts.length;p++){let h=s.parts[p];if(h.type==="ParameterExpansion"&&!h.operation){let m=h.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(m){i=p,o=m[1],a=m[2]==="*";break}}}if(i===-1)return null;let l="";for(let p=0;p<i;p++)l+=await r(e,s.parts[p]);let c="";for(let p=i+1;p<s.parts.length;p++)c+=await r(e,s.parts[p]);let u=G(e,o),f=u.map(([,p])=>p);if(u.length===0){let p=e.state.env.get(o);if(p!==void 0)return{values:[l+p+c],quoted:!0};if(a)return{values:[l+c],quoted:!0};let h=l+c;return{values:h?[h]:[],quoted:!0}}if(a){let p=Z(e.state.env);return{values:[l+f.join(p)+c],quoted:!0}}return f.length===1?{values:[l+f[0]+c],quoted:!0}:{values:[l+f[0],...f.slice(1,-1),f[f.length-1]+c],quoted:!0}}async function yc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0];if(r.parts.length!==1||r.parts[0].type!=="ParameterExpansion"||r.parts[0].operation?.type!=="Substring")return null;let s=r.parts[0],i=s.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!i)return null;let o=i[1],a=i[2]==="*",l=s.operation;if(e.state.associativeArrays?.has(o))throw new U(1,"",`bash: \${${o}[@]: 0: 3}: bad substitution
107
- `);let c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=G(e,o);if(f.length>e.limits.maxArrayElements)throw new P(`array transform element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let d=0;if(c<0){if(f.length>0){let h=f[f.length-1][0],E=(typeof h=="number"?h:0)+1+c;if(E<0)return{values:[],quoted:!0};d=f.findIndex(([S])=>typeof S=="number"&&S>=E),d<0&&(d=f.length)}}else d=f.findIndex(([h])=>typeof h=="number"&&h>=c),d<0&&(d=f.length);let p;if(u!==void 0){if(u<0)throw new ae(`${o}[@]: substring expression < 0`);p=f.slice(d,d+u).map(([,h])=>h)}else p=f.slice(d).map(([,h])=>h);if(p.length===0)return{values:[],quoted:!0};if(a){let h=Z(e.state.env);return{values:[p.join(h)],quoted:!0}}return{values:p,quoted:!0}}function gc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="Transform")return null;let r=n.parts[0],s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!s)return null;let i=s[1],o=s[2]==="*",a=r.operation,l=G(e,i);if(l.length===0){let d=e.state.env.get(i);if(d!==void 0){let p;switch(a.operator){case"a":p="";break;case"P":p=lr(e,d);break;case"Q":p=Xt(d);break;default:p=d}if(M(p)>e.limits.maxStringLength)throw new P(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[p],quoted:!0}}return o?{values:[""],quoted:!0}:{values:[],quoted:!0}}let c=Yt(e,i),u=[],f=0;for(let[,d]of l){let p;switch(a.operator){case"a":p=c;break;case"P":p=lr(e,d);break;case"Q":p=Xt(d);break;case"u":p=d.charAt(0).toUpperCase()+d.slice(1);break;case"U":p=d.toUpperCase();break;case"L":p=d.toLowerCase();break;default:p=d}let h=M(p);if(h>e.limits.maxStringLength-f)throw new P(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");u.push(p),f+=h}if(o){let d=Z(e.state.env);if(Math.max(0,u.length-1)*M(d)>e.limits.maxStringLength-f)throw new P(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u.join(d)],quoted:!0}}return{values:u,quoted:!0}}function wc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion")return null;let r=n.parts[0];if(r.operation)return null;let s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!s)return null;let i=s[1];if(le(e,i)){let l=An(e,i);if(l?.endsWith("[@]")||l?.endsWith("[*]"))return{values:[],quoted:!0}}let o=G(e,i);if(o.length>0)return{values:o.map(([,l])=>l),quoted:!0};let a=e.state.env.get(i);return a!==void 0?{values:[a],quoted:!0}:{values:[],quoted:!0}}function Ec(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation)return null;let s=n.parts[0].parameter;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)||!le(e,s))return null;let i=An(e,s);if(!i)return null;let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!o)return null;let a=o[1],l=G(e,a);if(l.length>0)return{values:l.map(([,u])=>u),quoted:!0};let c=e.state.env.get(a);return c!==void 0?{values:[c],quoted:!0}:{values:[],quoted:!0}}async function bc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],a=o.operation,l=await ie(e,o.parameter),c=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c){if(!a.innerOp&&(l==="@"||l==="*")){let h=Number.parseInt(e.state.env.get("#")||"0",10),m=[];for(let E=1;E<=h;E++)m.push(e.state.env.get(String(E))||"");return l==="*"?{values:[m.join(Z(e.state.env))],quoted:!0}:{values:m,quoted:!0}}return null}let u=c[1],f=c[2]==="*",d=G(e,u);if(a.innerOp){if(a.innerOp.type==="Substring")return Np(e,d,u,f,a.innerOp);if(a.innerOp.type==="DefaultValue"||a.innerOp.type==="UseAlternative"||a.innerOp.type==="AssignDefault"||a.innerOp.type==="ErrorIfUnset")return Rp(e,d,u,f,a.innerOp,s);if(a.innerOp.type==="Transform"&&a.innerOp.operator==="a"){let m=Yt(e,u),E=d.map(()=>m);return f?{values:[E.join(Z(e.state.env))],quoted:!0}:{values:E,quoted:!0}}let h=[];for(let[,m]of d){let E={type:"ParameterExpansion",parameter:"_indirect_elem_",operation:a.innerOp},S=e.state.env.get("_indirect_elem_");e.state.env.set("_indirect_elem_",m);try{let g=await r(e,E,!0);h.push(g)}finally{S!==void 0?e.state.env.set("_indirect_elem_",S):e.state.env.delete("_indirect_elem_")}}return f?{values:[h.join(Z(e.state.env))],quoted:!0}:{values:h,quoted:!0}}if(d.length>0){let h=d.map(([,m])=>m);return f?{values:[h.join(Z(e.state.env))],quoted:!0}:{values:h,quoted:!0}}let p=e.state.env.get(u);return p!==void 0?{values:[p],quoted:!0}:{values:[],quoted:!0}}async function Np(e,t,n,r,s){let i=s.offset?await X(e,s.offset.expression):0,o=s.length?await X(e,s.length.expression):void 0,a=0;if(i<0){if(t.length>0){let u=t[t.length-1][0],d=(typeof u=="number"?u:0)+1+i;if(d<0)return{values:[],quoted:!0};if(a=t.findIndex(([p])=>typeof p=="number"&&p>=d),a<0)return{values:[],quoted:!0}}}else if(a=t.findIndex(([u])=>typeof u=="number"&&u>=i),a<0)return{values:[],quoted:!0};let l;if(o!==void 0){if(o<0)throw new ae(`${n}[@]: substring expression < 0`);l=t.slice(a,a+o)}else l=t.slice(a);let c=l.map(([,u])=>u);return r?{values:[c.join(Z(e.state.env))],quoted:!0}:{values:c,quoted:!0}}async function Rp(e,t,n,r,s,i){let o=s.checkEmpty??!1,a=t.map(([,u])=>u),l=t.length===0,c=t.length===0;if(s.type==="UseAlternative")return!c&&!(o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:{values:[],quoted:!0};if(s.type==="DefaultValue")return(c||o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:r?{values:[a.join(Z(e.state.env))],quoted:!0}:{values:a,quoted:!0};if(s.type==="AssignDefault"){if((c||o&&l)&&s.word){let f=await i(e,s.word.parts,!0);return q(e,n,0,f),{values:[f],quoted:!0}}return r?{values:[a.join(Z(e.state.env))],quoted:!0}:{values:a,quoted:!0}}return r?{values:[a.join(Z(e.state.env))],quoted:!0}:{values:a,quoted:!0}}async function Sc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="UseAlternative"&&t[0].operation?.type!=="DefaultValue")return null;let n=t[0],r=n.operation,s=r?.word;if(!s||s.parts.length!==1||s.parts[0].type!=="DoubleQuoted")return null;let i=s.parts[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],l=(await ie(e,o.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!l)return null;let c=await xt(e,n.parameter),u=await ie(e,n.parameter)==="",f=r.checkEmpty??!1,d;if(r.type==="UseAlternative"?d=c&&!(f&&u):d=!c||f&&u,d){let p=l[1],h=l[2]==="*",m=G(e,p);if(m.length>0){let S=m.map(([,g])=>g);return h?{values:[S.join(Z(e.state.env))],quoted:!0}:{values:S,quoted:!0}}let E=e.state.env.get(p);return E!==void 0?{values:[E],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}async function Ac(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="Indirection")return null;let n=t[0],s=n.operation.innerOp;if(!s||s.type!=="UseAlternative"&&s.type!=="DefaultValue")return null;let i=s.word;if(!i||i.parts.length!==1||i.parts[0].type!=="DoubleQuoted")return null;let o=i.parts[0];if(o.parts.length!==1||o.parts[0].type!=="ParameterExpansion"||o.parts[0].operation?.type!=="Indirection")return null;let a=o.parts[0],c=(await ie(e,a.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c)return null;let u=await ie(e,n.parameter),f=await xt(e,n.parameter),d=u==="",p=s.checkEmpty??!1,h;if(s.type==="UseAlternative"?h=f&&!(p&&d):h=!f||p&&d,h){let m=c[1],E=c[2]==="*",S=G(e,m);if(S.length>0){let y=S.map(([,b])=>b);return E?{values:[y.join(Z(e.state.env))],quoted:!0}:{values:y,quoted:!0}}let g=e.state.env.get(m);return g!==void 0?{values:[g],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}function vc(e){let t=Number.parseInt(e.state.env.get("#")||"0",10);if(t>e.limits.maxArrayElements)throw new P(`positional parameter element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let n=[],r=0;for(let s=1;s<=t;s++){let i=e.state.env.get(String(s))||"",o=M(i);if(o>e.limits.maxStringLength-r)throw new P(`positional parameter string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n.push(i),r+=o}return n}function ss(e,t,n){if(M(t)>n-M(e))throw new P(`positional expansion string limit exceeded (${n} bytes)`,"string_length");return e+t}function zi(e,t,n,r){if(e.length>=r.limits.maxArrayElements)throw new P(`positional expansion element limit exceeded (${r.limits.maxArrayElements})`,"array_elements");let s=M(t);if(s>r.limits.maxStringLength-n.value)throw new P(`positional expansion string limit exceeded (${r.limits.maxStringLength} bytes)`,"string_length");e.push(t),n.value+=s}async function kc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="Substring"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=Number.parseInt(e.state.env.get("#")||"0",10),d=[];for(let g=1;g<=f;g++)d.push(e.state.env.get(String(g))||"");let p=e.state.env.get("0")||"bash",h;if(c<=0){let g=[p,...d],y=g.length+c;if(y<0)h=[];else{let b=c<0?y:0;if(u!==void 0){let A=u<0?g.length+u:b+u;h=g.slice(b,Math.max(b,A))}else h=g.slice(b)}}else{let g=c-1;if(g>=d.length)h=[];else if(u!==void 0){let y=u<0?d.length+u:g+u;h=d.slice(g,Math.max(g,y))}else h=d.slice(g)}let m="";for(let g=0;g<i;g++)m+=await r(e,s.parts[g]);let E="";for(let g=i+1;g<s.parts.length;g++)E+=await r(e,s.parts[g]);if(h.length===0){let g=m+E;return{values:g?[g]:[],quoted:!0}}if(o){let g=Z(e.state.env);return{values:[m+h.join(g)+E],quoted:!0}}return h.length===1?{values:[m+h[0]+E],quoted:!0}:{values:[m+h[0],...h.slice(1,-1),h[h.length-1]+E],quoted:!0}}async function xc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let y=s.parts[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternReplacement"){i=g,o=y.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=vc(e),u="";for(let g=0;g<i;g++)u=ss(u,await n(e,s.parts[g]),e.limits.maxStringLength);let f="";for(let g=i+1;g<s.parts.length;g++)f=ss(f,await n(e,s.parts[g]),e.limits.maxStringLength);if(c.length===0){let g=u+f;return{values:g?[g]:[],quoted:!0}}let d="";if(l.pattern)for(let g of l.pattern.parts)if(g.type==="Glob")d+=Y(g.pattern,!0,e.state.shoptOptions.extglob);else if(g.type==="Literal")d+=Y(g.value,!0,e.state.shoptOptions.extglob);else if(g.type==="SingleQuoted"||g.type==="Escaped")d+=ee(g.value);else if(g.type==="DoubleQuoted"){let y=await r(e,g.parts);d+=ee(y)}else if(g.type==="ParameterExpansion"){let y=await n(e,g);d+=Y(y,!0,e.state.shoptOptions.extglob)}else{let y=await n(e,g);d+=ee(y)}let p=l.replacement?await r(e,l.replacement.parts):"",h=d;l.anchor==="start"?h=`^${d}`:l.anchor==="end"&&(h=`${d}$`);let m=[],E={value:0};try{let g=he(h,l.all?"g":"");for(let y of c){let b=0;g.lastIndex=0;for(let x=g.exec(y);x&&(b++,!!l.all);x=g.exec(y))x[0].length===0&&g.lastIndex++;let A=M(y),k=M(p),v=0,$=/\$(?:\$|&|\d+|<[^>]+>|`|')/g;for(;$.exec(p)!==null;)v++;if(A+b*k+b*v*A>e.limits.maxStringLength-E.value)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");zi(m,g.replace(y,p),E,e)}}catch(g){if(g instanceof P)throw g;for(let y of c)zi(m,y,E,e)}if(o){let g=Z(e.state.env);if(E.value+Math.max(0,m.length-1)*M(g)+M(u)+M(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+m.join(g)+f],quoted:!0}}if(M(u)+E.value+M(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return m.length===1?{values:[u+m[0]+f],quoted:!0}:{values:[u+m[0],...m.slice(1,-1),m[m.length-1]+f],quoted:!0}}async function $c(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let S=0;S<s.parts.length;S++){let g=s.parts[S];if(g.type==="ParameterExpansion"&&(g.parameter==="@"||g.parameter==="*")&&g.operation?.type==="PatternRemoval"){i=S,o=g.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=vc(e),u="";for(let S=0;S<i;S++)u=ss(u,await n(e,s.parts[S]),e.limits.maxStringLength);let f="";for(let S=i+1;S<s.parts.length;S++)f=ss(f,await n(e,s.parts[S]),e.limits.maxStringLength);if(c.length===0){let S=u+f;return{values:S?[S]:[],quoted:!0}}let d="",p=e.state.shoptOptions.extglob;if(l.pattern)for(let S of l.pattern.parts)if(S.type==="Glob")d+=Y(S.pattern,l.greedy,p);else if(S.type==="Literal")d+=Y(S.value,l.greedy,p);else if(S.type==="SingleQuoted"||S.type==="Escaped")d+=ee(S.value);else if(S.type==="DoubleQuoted"){let g=await r(e,S.parts);d+=ee(g)}else if(S.type==="ParameterExpansion"){let g=await n(e,S);d+=Y(g,l.greedy,p)}else{let g=await n(e,S);d+=ee(g)}let h=[],m={value:0};for(let S of c)zi(h,ht(e,S,d,l.side,l.greedy),m,e);if(o){let S=Z(e.state.env);if(m.value+Math.max(0,h.length-1)*M(S)+M(u)+M(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+h.join(S)+f],quoted:!0}}if(M(u)+m.value+M(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return h.length===1?{values:[u+h[0]+f],quoted:!0}:{values:[u+h[0],...h.slice(1,-1),h[h.length-1]+f],quoted:!0}}async function Pc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0],s=-1,i=!1;for(let d=0;d<r.parts.length;d++){let p=r.parts[d];if(p.type==="ParameterExpansion"&&(p.parameter==="@"||p.parameter==="*")){s=d,i=p.parameter==="*";break}}if(s===-1)return null;let o=r.parts[s];if(o.type==="ParameterExpansion"&&o.operation)return null;let a=Number.parseInt(e.state.env.get("#")||"0",10),l="";for(let d=0;d<s;d++)l+=await n(e,r.parts[d]);let c="";for(let d=s+1;d<r.parts.length;d++)c+=await n(e,r.parts[d]);if(a===0){if(i)return{values:[l+c],quoted:!0};let d=l+c;return{values:d?[d]:[],quoted:!0}}let u=[];for(let d=1;d<=a;d++)u.push(e.state.env.get(String(d))||"");if(i){let d=Z(e.state.env);return{values:[l+u.join(d)+c],quoted:!0}}return u.length===1?{values:[l+u[0]+c],quoted:!0}:{values:[l+u[0],...u.slice(1,-1),u[u.length-1]+c],quoted:!0}}function Pt(e,t,n,r){if(t.length>=e.limits.maxArrayElements)throw new P(`unquoted expansion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let s=M(n);if(s>e.limits.maxStringLength-r.value)throw new P(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");t.push(n),r.value+=s}function Ui(e,t,n,r){let s=M(n),i=Math.max(0,t.length-1);if(s>0&&i>Math.floor((e.limits.maxStringLength-r)/s))throw new P(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return t.join(n)}function Dp(e){return new Kt(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")})}async function is(e,t){if(e.state.options.noglob)return t;let n=Dp(e),r=[];for(let s of t)if($t(s,e.state.shoptOptions.extglob)){let i=await n.expand(s);if(i.length>0)Re(r,i,e.limits.maxArrayElements,"unquoted glob expansion");else{if(n.hasFailglob())throw new Bt(s);n.hasNullglob()||r.push(s)}}else r.push(s);return r}async function Cc(e,t,n,r){let s=-1,i="",o=!1;for(let b=0;b<t.length;b++){let A=t[b];if(A.type==="ParameterExpansion"&&A.operation?.type==="PatternReplacement"){let k=A.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(k){s=b,i=k[1],o=k[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=G(e,i),u=c.map(([,b])=>b);if(c.length===0){let b=e.state.env.get(i);b!==void 0&&(u=[b])}if(u.length===0)return{values:[],quoted:!1};let f="";if(l.pattern)for(let b of l.pattern.parts)if(b.type==="Glob")f+=Y(b.pattern,!0,e.state.shoptOptions.extglob);else if(b.type==="Literal")f+=Y(b.value,!0,e.state.shoptOptions.extglob);else if(b.type==="SingleQuoted"||b.type==="Escaped")f+=ee(b.value);else if(b.type==="DoubleQuoted"){let A=await n(e,b.parts);f+=ee(A)}else if(b.type==="ParameterExpansion"){let A=await r(e,b);f+=Y(A,!0,e.state.shoptOptions.extglob)}else{let A=await r(e,b);f+=ee(A)}let d=l.replacement?await n(e,l.replacement.parts):"",p=f;l.anchor==="start"?p=`^${f}`:l.anchor==="end"&&(p=`${f}$`);let h=[],m={value:0};try{let b=he(p,l.all?"g":"");for(let A of u)Pt(e,h,ts(e,A,b,d,l.all),m)}catch(b){if(b instanceof P)throw b;for(let A of u)Pt(e,h,A,m)}let E=Ae(e.state.env),S=Ne(e.state.env);if(o){let b=Z(e.state.env),A=Ui(e,h,b,m.value);return S?{values:A?[A]:[],quoted:!1}:{values:ue(A,E,e.limits.maxArrayElements),quoted:!1}}if(S)return{values:h,quoted:!1};let g=[],y={value:0};for(let b of h)if(b==="")Pt(e,g,"",y);else for(let A of ue(b,E,e.limits.maxArrayElements))Pt(e,g,A,y);return{values:g,quoted:!1}}async function Nc(e,t,n,r){let s=-1,i="",o=!1;for(let y=0;y<t.length;y++){let b=t[y];if(b.type==="ParameterExpansion"&&b.operation?.type==="PatternRemoval"){let A=b.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(A){s=y,i=A[1],o=A[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=G(e,i),u=c.map(([,y])=>y);if(c.length===0){let y=e.state.env.get(i);y!==void 0&&(u=[y])}if(u.length===0)return{values:[],quoted:!1};let f="",d=e.state.shoptOptions.extglob;if(l.pattern)for(let y of l.pattern.parts)if(y.type==="Glob")f+=Y(y.pattern,l.greedy,d);else if(y.type==="Literal")f+=Y(y.value,l.greedy,d);else if(y.type==="SingleQuoted"||y.type==="Escaped")f+=ee(y.value);else if(y.type==="DoubleQuoted"){let b=await n(e,y.parts);f+=ee(b)}else if(y.type==="ParameterExpansion"){let b=await r(e,y);f+=Y(b,l.greedy,d)}else{let b=await r(e,y);f+=ee(b)}let p=[],h={value:0};for(let y of u)Pt(e,p,ht(e,y,f,l.side,l.greedy),h);let m=Ae(e.state.env),E=Ne(e.state.env);if(o){let y=Z(e.state.env),b=Ui(e,p,y,h.value);return E?{values:b?[b]:[],quoted:!1}:{values:ue(b,m,e.limits.maxArrayElements),quoted:!1}}if(E)return{values:p,quoted:!1};let S=[],g={value:0};for(let y of p)if(y==="")Pt(e,S,"",g);else for(let b of ue(y,m,e.limits.maxArrayElements))Pt(e,S,b,g);return{values:S,quoted:!1}}async function Rc(e,t,n,r){let s=-1,i=!1;for(let g=0;g<t.length;g++){let y=t[g];if(y.type==="ParameterExpansion"&&(y.parameter==="@"||y.parameter==="*")&&y.operation?.type==="PatternRemoval"){s=g,i=y.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=Number.parseInt(e.state.env.get("#")||"0",10),c=[];for(let g=1;g<=l;g++)c.push(e.state.env.get(String(g))||"");if(c.length===0)return{values:[],quoted:!1};let u="",f=e.state.shoptOptions.extglob;if(a.pattern)for(let g of a.pattern.parts)if(g.type==="Glob")u+=Y(g.pattern,a.greedy,f);else if(g.type==="Literal")u+=Y(g.value,a.greedy,f);else if(g.type==="SingleQuoted"||g.type==="Escaped")u+=ee(g.value);else if(g.type==="DoubleQuoted"){let y=await n(e,g.parts);u+=ee(y)}else if(g.type==="ParameterExpansion"){let y=await r(e,g);u+=Y(y,a.greedy,f)}else{let y=await r(e,g);u+=ee(y)}let d=[],p={value:0};for(let g of c)Pt(e,d,ht(e,g,u,a.side,a.greedy),p);let h=Ae(e.state.env),m=Ne(e.state.env);if(i){let g=Z(e.state.env),y=Ui(e,d,g,p.value);return m?{values:y?[y]:[],quoted:!1}:{values:ue(y,h,e.limits.maxArrayElements),quoted:!1}}if(m)return{values:d,quoted:!1};let E=[],S={value:0};for(let g of d)if(g==="")Pt(e,E,"",S);else for(let y of ue(g,h,e.limits.maxArrayElements))Pt(e,E,y,S);return{values:E,quoted:!1}}async function Dc(e,t,n,r){let s=-1,i=!1;for(let y=0;y<t.length;y++){let b=t[y];if(b.type==="ParameterExpansion"&&(b.parameter==="@"||b.parameter==="*")&&b.operation?.type==="Substring"){s=y,i=b.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=a.offset?await n(e,a.offset.expression):0,c=a.length?await n(e,a.length.expression):void 0,u=Number.parseInt(e.state.env.get("#")||"0",10),f=[];for(let y=1;y<=u;y++)f.push(e.state.env.get(String(y))||"");let d=e.state.env.get("0")||"bash",p;if(l<=0){let y=[d,...f],b=y.length+l;if(b<0)p=[];else{let A=l<0?b:0;if(c!==void 0){let k=c<0?y.length+c:A+c;p=y.slice(A,Math.max(A,k))}else p=y.slice(A)}}else{let y=l-1;if(y>=f.length)p=[];else if(c!==void 0){let b=c<0?f.length+c:y+c;p=f.slice(y,Math.max(y,b))}else p=f.slice(y)}let h="";for(let y=0;y<s;y++)h+=await r(e,t[y]);let m="";for(let y=s+1;y<t.length;y++)m+=await r(e,t[y]);let E=Ae(e.state.env),S=Ne(e.state.env);if(p.length===0){let y=h+m;return y?S?{values:[y],quoted:!1}:{values:ue(y,E,e.limits.maxArrayElements),quoted:!1}:{values:[],quoted:!1}}let g;if(i){let y=Z(e.state.env),b=h+p.join(y)+m;S?g=b?[b]:[]:g=ue(b,E,e.limits.maxArrayElements)}else if(S)p.length===1?g=[h+p[0]+m]:g=[h+p[0],...p.slice(1,-1),p[p.length-1]+m];else{g=[];for(let y=0;y<p.length;y++){let b=p[y];if(y===0&&(b=h+b),y===p.length-1&&(b=b+m),b==="")g.push("");else{let A=ue(b,E,e.limits.maxArrayElements);Re(g,A,e.limits.maxArrayElements,"unquoted expansion")}}}return{values:await is(e,g),quoted:!1}}async function Ic(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].parameter!=="@"&&t[0].parameter!=="*"||t[0].operation)return null;let n=t[0].parameter==="*",r=Number.parseInt(e.state.env.get("#")||"0",10);if(r===0)return{values:[],quoted:!1};let s=[];for(let c=1;c<=r;c++)s.push(e.state.env.get(String(c))||"");let i=Ae(e.state.env),o=Ne(e.state.env),a=Kr(e.state.env),l;if(n)if(o)l=s.filter(c=>c!=="");else{let c=Z(e.state.env),u=s.join(c);l=ue(u,i,e.limits.maxArrayElements)}else if(o)l=s.filter(c=>c!=="");else if(a){l=[];for(let c of s){if(c==="")continue;let u=ue(c,i,e.limits.maxArrayElements);Re(l,u,e.limits.maxArrayElements,"unquoted expansion")}}else{l=[];for(let c of s)if(c==="")l.push("");else{let u=ue(c,i,e.limits.maxArrayElements);Re(l,u,e.limits.maxArrayElements,"unquoted expansion")}for(;l.length>0&&l[l.length-1]==="";)l.pop()}return{values:await is(e,l),quoted:!1}}async function Oc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation)return null;let n=t[0].parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!n)return null;let r=n[1],s=n[2]==="*",i=G(e,r),o;if(i.length===0){let f=e.state.env.get(r);if(f!==void 0)o=[f];else return{values:[],quoted:!1}}else o=i.map(([,f])=>f);let a=Ae(e.state.env),l=Ne(e.state.env),c=Kr(e.state.env),u;if(s)if(l)u=o.filter(f=>f!=="");else{let f=Z(e.state.env),d=o.join(f);u=ue(d,a,e.limits.maxArrayElements)}else if(l)u=o.filter(f=>f!=="");else if(c){u=[];for(let f of o){if(f==="")continue;let d=ue(f,a,e.limits.maxArrayElements);Re(u,d,e.limits.maxArrayElements,"unquoted expansion")}}else{u=[];for(let f of o)if(f==="")u.push("");else{let d=ue(f,a,e.limits.maxArrayElements);Re(u,d,e.limits.maxArrayElements,"unquoted expansion")}for(;u.length>0&&u[u.length-1]==="";)u.pop()}return{values:await is(e,u),quoted:!1}}function _c(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="VarNamePrefix")return null;let n=t[0].operation,r=Fn(e,n.prefix);if(r.length===0)return{values:[],quoted:!1};let s=Ae(e.state.env),i=Ne(e.state.env),o;if(n.star)if(i)o=r;else{let a=Z(e.state.env),l=r.join(a);o=ue(l,s,e.limits.maxArrayElements)}else if(i)o=r;else{o=[];for(let a of r){let l=ue(a,s,e.limits.maxArrayElements);Re(o,l,e.limits.maxArrayElements,"unquoted expansion")}}return{values:o,quoted:!1}}function Lc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="ArrayKeys")return null;let n=t[0].operation,s=G(e,n.array).map(([l])=>String(l));if(s.length===0)return{values:[],quoted:!1};let i=Ae(e.state.env),o=Ne(e.state.env),a;if(n.star)if(o)a=s;else{let l=Z(e.state.env),c=s.join(l);a=ue(c,i,e.limits.maxArrayElements)}else if(o)a=s;else{a=[];for(let l of s){let c=ue(l,i,e.limits.maxArrayElements);Re(a,c,e.limits.maxArrayElements,"unquoted expansion")}}return{values:a,quoted:!1}}async function Tc(e,t,n){let r=-1;for(let d=0;d<t.length;d++){let p=t[d];if(p.type==="ParameterExpansion"&&(p.parameter==="@"||p.parameter==="*")&&!p.operation){r=d;break}}if(r===-1||t.length<=1)return null;let s=Number.parseInt(e.state.env.get("#")||"0",10),i=[];for(let d=1;d<=s;d++)i.push(e.state.env.get(String(d))||"");let o="";for(let d=0;d<r;d++)o+=await n(e,t[d]);let a="";for(let d=r+1;d<t.length;d++)a+=await n(e,t[d]);let l=Ae(e.state.env),c=Ne(e.state.env),u=Kr(e.state.env);if(s===0){let d=o+a;return{values:d?[d]:[],quoted:!1}}let f;{let d=[];for(let p=0;p<i.length;p++){let h=i[p];p===0&&(h=o+h),p===i.length-1&&(h=h+a),d.push(h)}if(c)f=d.filter(p=>p!=="");else if(u){f=[];for(let p of d){if(p==="")continue;let h=ue(p,l,e.limits.maxArrayElements);Re(f,h,e.limits.maxArrayElements,"unquoted expansion")}}else{f=[];for(let p of d)if(p==="")f.push("");else{let h=ue(p,l,e.limits.maxArrayElements);Re(f,h,e.limits.maxArrayElements,"unquoted expansion")}for(;f.length>0&&f[f.length-1]==="";)f.pop()}}return f.length===0?{values:[],quoted:!1}:{values:await is(e,f),quoted:!1}}async function Bc(e,t,n){e.coverage?.hit("bash:expansion:word_glob");let r=t.parts,{hasQuoted:s,hasCommandSub:i,hasArrayVar:o,hasArrayAtExpansion:a,hasParamExpansion:l,hasVarNamePrefixExpansion:c,hasIndirection:u}=or(r),d=n.hasBraceExpansion(r)?await n.expandWordWithBracesAsync(e,t):null;if(d&&d.length>1)return Ip(e,d,s);let p=await Op(e,r,a,c,u,n);if(p!==null)return p;let h=await Lp(e,r,n);if(h!==null)return h;let m=await Tp(e,r,n);if(m!==null)return m;let E=await Mp(e,r,n.expandPart);if(E!==null)return Mc(e,E);if((i||o||l)&&!Ne(e.state.env)){let g=Ae(e.state.env),y=n.buildIfsCharClassPattern(g),b=await n.smartWordSplit(e,r,g,y,n.expandPart);return Mc(e,b)}let S=await n.expandWordAsync(e,t);return Bp(e,t,r,S,s,n.expandWordForGlobbing)}async function Ip(e,t,n){let r=[];for(let s of t)if(!(!n&&s===""))if(!n&&!e.state.options.noglob&&$t(s,e.state.shoptOptions.extglob)){let i=await os(e,s);Re(r,i,e.limits.maxArrayElements,"brace/glob expansion")}else r.push(s);return{values:r,quoted:!1}}async function Op(e,t,n,r,s,i){if(n){let o=wc(e,t);if(o!==null)return o}{let o=Ec(e,t);if(o!==null)return o}{let o=await pc(e,t);if(o!==null)return o}{let o=await hc(e,t,n,i.expandPart,i.expandWordPartsAsync);if(o!==null)return o}{let o=await mc(e,t,n,i.expandPart);if(o!==null)return o}{let o=await yc(e,t,i.evaluateArithmetic);if(o!==null)return o}{let o=gc(e,t);if(o!==null)return o}{let o=await fc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}{let o=await dc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}if(r&&t.length===1&&t[0].type==="DoubleQuoted"){let o=_p(e,t);if(o!==null)return o}{let o=await bc(e,t,s,i.expandParameterAsync,i.expandWordPartsAsync);if(o!==null)return o}{let o=await Sc(e,t);if(o!==null)return o}{let o=await Ac(e,t);if(o!==null)return o}return null}function _p(e,t){let n=t[0];if(n.type!=="DoubleQuoted")return null;if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="VarNamePrefix"){let r=n.parts[0].operation,s=Fn(e,r.prefix);return r.star?{values:[s.join(Z(e.state.env))],quoted:!0}:{values:s,quoted:!0}}if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="ArrayKeys"){let r=n.parts[0].operation,i=G(e,r.array).map(([o])=>String(o));return r.star?{values:[i.join(Z(e.state.env))],quoted:!0}:{values:i,quoted:!0}}return null}async function Lp(e,t,n){{let r=await kc(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await xc(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await $c(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await Pc(e,t,n.expandPart);if(r!==null)return r}return null}async function Tp(e,t,n){{let r=await Cc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Nc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Rc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Dc(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await Ic(e,t);if(r!==null)return r}{let r=await Oc(e,t);if(r!==null)return r}{let r=_c(e,t);if(r!==null)return r}{let r=Lc(e,t);if(r!==null)return r}{let r=await Tc(e,t,n.expandPart);if(r!==null)return r}return null}function Fc(e){if(e.type!=="DoubleQuoted")return null;for(let t=0;t<e.parts.length;t++){let n=e.parts[t];if(n.type!=="ParameterExpansion"||n.operation)continue;let r=n.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(r)return{type:"array",name:r[1],atIndex:t,isStar:r[2]==="*"};if(n.parameter==="@"||n.parameter==="*")return{type:"positional",atIndex:t,isStar:n.parameter==="*"}}return null}async function Fp(e,t,n,r){let s="";for(let a=0;a<n.atIndex;a++)s+=await r(e,t.parts[a]);let i="";for(let a=n.atIndex+1;a<t.parts.length;a++)i+=await r(e,t.parts[a]);let o;if(n.type==="array"){if(o=G(e,n.name).map(([,l])=>l),o.length===0){let l=e.state.env.get(n.name);l!==void 0&&(o=[l])}}else{let a=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let l=1;l<=a;l++)o.push(e.state.env.get(String(l))||"")}if(n.isStar){let a=Z(e.state.env),l=o.join(a);return[s+l+i]}if(o.length===0){let a=s+i;return a?[a]:[]}return o.length===1?[s+o[0]+i]:[s+o[0],...o.slice(1,-1),o[o.length-1]+i]}async function Mp(e,t,n){if(t.length<2)return null;let r=!1;for(let l of t)if(Fc(l)){r=!0;break}if(!r)return null;let s=Ae(e.state.env),i=Ne(e.state.env),o=[];for(let l of t){let c=Fc(l);if(c&&l.type==="DoubleQuoted"){let u=await Fp(e,l,c,n);o.push(u)}else if(l.type==="DoubleQuoted"||l.type==="SingleQuoted"){let u=await n(e,l);o.push([u])}else if(l.type==="Literal")o.push([l.value]);else if(l.type==="ParameterExpansion"){let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=ue(u,s,e.limits.maxArrayElements);o.push(f)}}else{let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=ue(u,s,e.limits.maxArrayElements);o.push(f)}}}let a=[];for(let l of o)if(l.length!==0)if(a.length===0)Re(a,l,e.limits.maxArrayElements,"word expansion");else{let c=a.length-1;a[c]=a[c]+l[0];for(let u=1;u<l.length;u++)a.push(l[u])}return a}async function Mc(e,t){if(e.state.options.noglob)return{values:t,quoted:!1};let n=[];for(let r of t)if($t(r,e.state.shoptOptions.extglob)){let s=await os(e,r);Re(n,s,e.limits.maxArrayElements,"glob expansion")}else n.push(r);return{values:n,quoted:!1}}async function os(e,t){let n=new Kt(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),r=await n.expand(t);if(r.length>0)return r;if(n.hasFailglob())throw new Bt(t);return n.hasNullglob()?[]:[t]}async function Bp(e,t,n,r,s,i){let o=n.some(a=>a.type==="Glob");if(!e.state.options.noglob&&o){let a=await i(e,t);if($t(a,e.state.shoptOptions.extglob)){let c=await os(e,a);if(c.length>0&&c[0]!==a)return{values:c,quoted:!1};if(c.length===0)return{values:[],quoted:!1}}let l=Bi(r);if(!Ne(e.state.env)){let c=Ae(e.state.env);return{values:ue(l,c,e.limits.maxArrayElements),quoted:!1}}return{values:[l],quoted:!1}}if(!s&&!e.state.options.noglob&&$t(r,e.state.shoptOptions.extglob)){let a=await i(e,t);if($t(a,e.state.shoptOptions.extglob)){let l=await os(e,a);if(l.length>0&&l[0]!==a)return{values:l,quoted:!1}}}if(r===""&&!s)return{values:[],quoted:!1};if(o&&!s){let a=Bi(r);if(!Ne(e.state.env)){let l=Ae(e.state.env);return{values:ue(a,l,e.limits.maxArrayElements),quoted:!1}}return{values:[a],quoted:!1}}return{values:[r],quoted:s}}function _e(e,t,n){if(t.length>=e.limits.maxArrayElements)throw new P(`word splitting element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");t.push(n)}async function Vc(e,t){let n=t.operation;if(!n||n.type!=="DefaultValue"&&n.type!=="AssignDefault"&&n.type!=="UseAlternative")return null;let r=n.word;if(!r||r.parts.length===0)return null;let s=await xt(e,t.parameter),o=await ie(e,t.parameter,!1)==="",a=n.checkEmpty??!1,l;return n.type==="UseAlternative"?l=s&&!(a&&o):l=!s||a&&o,l?r.parts:null}function Wp(e){return e.type==="SingleQuoted"?!0:e.type==="DoubleQuoted"?e.parts.every(n=>n.type==="Literal"):!1}async function Vp(e,t){if(t.type!=="ParameterExpansion")return null;let n=await Vc(e,t);if(!n||n.length<=1)return null;let r=n.some(i=>Wp(i)),s=n.some(i=>i.type==="Literal"||i.type==="ParameterExpansion"||i.type==="CommandSubstitution"||i.type==="ArithmeticExpansion");return r&&s?n:null}function zp(e){return e.type==="DoubleQuoted"||e.type==="SingleQuoted"||e.type==="Literal"?!1:e.type==="Glob"?Di(e.pattern):!(!(e.type==="ParameterExpansion"||e.type==="CommandSubstitution"||e.type==="ArithmeticExpansion")||e.type==="ParameterExpansion"&&Ml(e))}async function zc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:word_split"),t.length===1&&t[0].type==="ParameterExpansion"){let d=t[0],p=await Vc(e,d);if(p&&p.length>0&&p.length>1&&p.some(m=>m.type==="DoubleQuoted"||m.type==="SingleQuoted")&&p.some(m=>m.type==="Literal"||m.type==="ParameterExpansion"||m.type==="CommandSubstitution"||m.type==="ArithmeticExpansion"))return Wc(e,p,n,r,s)}let i=[],o=!1;for(let d of t){let p=zp(d),h=d.type==="DoubleQuoted"||d.type==="SingleQuoted",m=p?await Vp(e,d):null,E=await s(e,d);i.push({value:E,isSplittable:p,isQuoted:h,mixedDefaultParts:m??void 0}),p&&(o=!0)}if(!o){let d=i.map(p=>p.value).join("");return d?[d]:[]}let a=[],l="",c=!1,u=!1,f=!1;for(let d of i)if(!d.isSplittable)u?d.isQuoted&&d.value===""?(l!==""&&_e(e,a,l),_e(e,a,""),c=!0,l="",u=!1,f=!0):d.value!==""?(l!==""&&_e(e,a,l),l=d.value,u=!1,f=!1):(l+=d.value,f=!1):(l+=d.value,f=d.isQuoted&&d.value==="");else if(d.mixedDefaultParts){let p=await Wc(e,d.mixedDefaultParts,n,r,s);if(p.length!==0)if(p.length===1)l+=p[0],c=!0;else{l+=p[0],_e(e,a,l),c=!0;for(let h=1;h<p.length-1;h++)_e(e,a,p[h]);l=p[p.length-1]}u=!1,f=!1}else{let{words:p,hadLeadingDelimiter:h,hadTrailingDelimiter:m}=Xr(d.value,n,e.limits.maxArrayElements);if(f&&h&&l===""&&(_e(e,a,""),c=!0),p.length===0)m&&(u=!0);else if(p.length===1)l+=p[0],c=!0,u=m;else{l+=p[0],_e(e,a,l),c=!0;for(let E=1;E<p.length-1;E++)_e(e,a,p[E]);l=p[p.length-1],u=m}f=!1}return l!==""?_e(e,a,l):a.length===0&&c&&_e(e,a,""),a}function Up(e,t){return e.length>0&&t.includes(e[0])}async function Wc(e,t,n,r,s){let i=[];for(let u of t){let d=!(u.type==="DoubleQuoted"||u.type==="SingleQuoted"),p=await s(e,u);i.push({value:p,isSplittable:d})}let o=[],a="",l=!1,c=!1;for(let u of i)if(!u.isSplittable)c&&u.value!==""?(a!==""&&_e(e,o,a),a=u.value,c=!1):a+=u.value;else{Up(u.value,n)&&a!==""&&(_e(e,o,a),a="",l=!0);let{words:d,hadTrailingDelimiter:p}=Xr(u.value,n,e.limits.maxArrayElements);if(d.length===0)p&&(c=!0);else if(d.length===1)a+=d[0],l=!0,c=p;else{a+=d[0],_e(e,o,a),l=!0;for(let h=1;h<d.length-1;h++)_e(e,o,d[h]);a=d[d.length-1],c=p}}return a!==""?_e(e,o,a):o.length===0&&l&&_e(e,o,""),o}function Uc(e){switch(e.type){case"Literal":return e.value;case"SingleQuoted":return e.value;case"Escaped":return e.value;default:return null}}function qc(e){switch(e.type){case"SingleQuoted":case"Escaped":case"DoubleQuoted":return!0;case"Literal":return e.value==="";default:return!1}}var cr=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new St,t?.mounts)for(let{mountPoint:n,filesystem:r}of t.mounts)this.mount(n,r)}mount(t,n){this.validateMountPath(t);let r=z(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:n})}unmount(t){let n=z(t);if(!this.mounts.has(n))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(n)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}isMountPoint(t){let n=z(t);return this.mounts.has(n)}validateMountPath(t){let n=t.split("/");for(let r of n)if(r==="."||r==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let n of this.mounts.keys())if(n!==t){if(t.startsWith(`${n}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${n}'`);if(n.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${n}'`)}}routePath(t){K(t,"access");let n=z(t),r=null,s=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(n===o)return{fs:i.filesystem,relativePath:"/"};n.startsWith(`${o}/`)&&o.length>s&&(r=i,s=o.length)}if(r){let i=n.slice(s);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:n}}getChildMountPoints(t){let n=z(t),r=n==="/"?"/":`${n}/`,s=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!s.includes(a)&&s.push(a)}return s}async readFile(t,n){let{fs:r,relativePath:s}=this.routePath(t);return r.readFile(s,n)}async readFileBytes(t){let{fs:n,relativePath:r}=this.routePath(t);return xn(n,r)}async readFileBuffer(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readFileBuffer(r)}async writeFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.writeFile(i,n,r)}async appendFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.appendFile(i,n,r)}async exists(t){let n=z(t);if(this.mounts.has(n)||this.getChildMountPoints(n).length>0)return!0;let{fs:s,relativePath:i}=this.routePath(t);return s.exists(i)}async stat(t){let n=z(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.stat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.stat(o)}async lstat(t){let n=z(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.lstat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:493,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,n){let r=z(t);if(this.mounts.has(r)){if(n?.recursive)return;throw new Error(`EEXIST: directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&n?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,n)}async readdir(t){let n=z(t),r=new Set,s=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){let c=l.code,u=l.message||"";if(c!=="ENOENT"&&!u.includes("ENOENT"))throw l;s=l}let a=this.getChildMountPoints(n);for(let l of a)r.add(l);if(r.size===0&&s&&!this.mounts.has(n))throw s;return Array.from(r).sort()}async rm(t,n){let r=z(t);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new Error(`EBUSY: contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,n)}async cp(t,n,r){if((await this.stat(t)).isDirectory&&Ot(t,n))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);let i=this.routePath(t),o=this.routePath(n);return i.fs===o.fs?i.fs.cp(i.relativePath,o.relativePath,r):this.crossMountCopy(t,n,r)}async mv(t,n){let r=z(t);if((await this.stat(t)).isDirectory&&Ot(t,n))throw new Error(`EINVAL: cannot move '${t}' into itself, '${n}'`);if(this.mounts.has(r))throw new Error(`EBUSY: mount point, cannot move '${t}'`);let i=this.routePath(t),o=this.routePath(n);if(i.fs===o.fs)return i.fs.mv(i.relativePath,o.relativePath);await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return Cn(t,n)}getAllPaths(){let t=new Set;for(let n of this.baseFs.getAllPaths())t.add(n);for(let n of this.mounts.keys()){let r=n.split("/").filter(Boolean),s="";for(let o of r)s=`${s}/${o}`,t.add(s);let i=this.mounts.get(n);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(n):t.add(`${n}${o}`)}return Array.from(t).sort()}async chmod(t,n){let r=z(t),s=this.mounts.get(r);if(s)return s.filesystem.chmod("/",n);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,n)}async symlink(t,n){let{fs:r,relativePath:s}=this.routePath(n);return r.symlink(t,s)}async link(t,n){let r=this.routePath(t),s=this.routePath(n);if(r.fs!==s.fs)throw new Error(`EXDEV: cross-device link not permitted, link '${t}' -> '${n}'`);return r.fs.link(r.relativePath,s.relativePath)}async readlink(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readlink(r)}async realpath(t){let n=z(t);if(this.mounts.get(n))return n;let{fs:s,relativePath:i}=this.routePath(t),o=await s.realpath(i);for(let[a,l]of this.mounts)if(n===a||n.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,n,r){let s=await this.lstat(t);if(s.isFile){let i=await this.readFileBuffer(t);await this.writeFile(n,i),await this.chmod(n,s.mode)}else if(s.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(n,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=_t(t,o),l=_t(n,o);await this.crossMountCopy(a,l,r)}}else if(s.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,n)}}async utimes(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.utimes(i,n,r)}};var as="/dev/fd",Gc=63,qp=10,jc=Gc-qp+1,qi=class extends St{isLiveDescriptor;constructor(t){super(),this.isLiveDescriptor=t}assertLiveDescriptor(t,n){this.isLiveDescriptor(t)||this.refuse(t,n)}refuse(t,n){throw new Error(`EROFS: read-only file system, ${n} '${as}${t}'`)}async writeFile(t,n,r){return this.assertLiveDescriptor(t,"write"),super.writeFile(t,n,r)}async appendFile(t,n,r){return this.assertLiveDescriptor(t,"append"),super.appendFile(t,n,r)}async rm(t,n){return this.assertLiveDescriptor(t,"rm"),super.rm(t,n)}async mkdir(t,n){this.refuse(t,"mkdir")}async cp(t,n){this.refuse(n,"cp")}async mv(t,n){this.refuse(n,"mv")}async symlink(t,n){this.refuse(n,"symlink")}async link(t,n){this.refuse(n,"link")}async chmod(t,n){this.refuse(t,"chmod")}async utimes(t,n,r){this.refuse(t,"utimes")}};function jp(e){let t=new qi(n=>Hc(e).some(r=>r.path===`${as}${n}`));e.fs=new cr({base:e.fs,mounts:[{mountPoint:as,filesystem:t}]}),e.state.processSubstitutionFsMounted=!0}async function Gp(e,t,n){try{await e.fs.writeFile(t,n,"binary");return}catch(r){if(e.state.processSubstitutionFsMounted)throw r;jp(e)}await e.fs.writeFile(t,n,"binary")}async function Hp(e,t){try{await e.fs.rm(t,{force:!0})}catch{}}function Hc(e){let t=e.state.processSubstitutions;if(t)return t;let n=[];return e.state.processSubstitutions=n,n}async function Zc(e,t,n){let r=e.substitutionDepth??0,s=e.limits.maxSubstitutionDepth;if(r>=s)throw new P(`Process substitution nesting limit exceeded (${s})`,"substitution_depth");let i=e.substitutionDepth,o=new Map(e.state.env),a=st(e.state.arrays),l=e.state.cwd,c=e.state.bashPid,u=e.state.suppressVerbose,f=e.state.groupStdin,d=e.state.lastExitCode,p=e.state.env.get("?");e.substitutionDepth=r+1,e.state.bashPid=e.state.nextVirtualPid++,e.state.suppressVerbose=!0,n!==void 0&&(e.state.groupStdin=n);let h;try{h=await e.executeScript(t)}catch(m){if(m instanceof P)throw m;if(m instanceof U)return{stdout:m.stdout,stderr:m.stderr,exitCode:m.exitCode};throw m}finally{e.substitutionDepth=i,e.state.env=o,e.state.arrays=a,e.state.cwd=l,e.state.bashPid=c,e.state.suppressVerbose=u,e.state.groupStdin=f,e.state.lastExitCode=d,p!==void 0?e.state.env.set("?",p):e.state.env.delete("?")}return h}async function Qc(e,t){let n=Hc(e);if(n.length>=jc)throw new P(`Process substitution limit exceeded (${jc} concurrent)`,"file_descriptors");let r="";if(t.direction==="input"){let o=await Zc(e,t.body,void 0);if(o.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+o.stderr),r=Ft(o),r.length>e.limits.maxStringLength)throw new P(`process substitution: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")}let s=Gc-n.length,i=`${as}/${s}`;n.push({fd:s,path:i,direction:t.direction,body:t.body});try{await Gp(e,i,r)}catch(o){throw n.pop(),o}return i}function Kc(e){return e.state.processSubstitutions?.length??0}var Zp={stdout:"",stderr:""};async function ji(e,t){let n=e.state.processSubstitutions;if(!n||n.length<=t)return Zp;let r="",s="";for(;n.length>t;){let i=n[n.length-1],o="";if(i.direction==="output")try{o=await xn(e.fs,i.path)}catch{}if(await Hp(e,i.path),n.pop(),i.direction==="output"){let a=await Zc(e,i.body,o);r+=Ft(a),s+=a.stderr}}return{stdout:r,stderr:s}}function en(e,t,n){if(e.length>t)throw new P(`${n}: string length limit exceeded (${t} bytes)`,"string_length")}async function yt(e,t,n=!1){let r=[];for(let s of t)r.push(await et(e,s,n));return r.join("")}function Qp(e){return qc(e)}function Yc(e){if(e.parts.length===0)return!0;for(let t of e.parts)if(!Qp(t))return!1;return!0}function Kp(e,t,n=!1){let r=Uc(t);if(r!==null)return r;switch(t.type){case"TildeExpansion":return n?t.user===null?"~":`~${t.user}`:(e.coverage?.hit("bash:expansion:tilde"),t.user===null?e.state.env.get("HOME")??"/home/user":t.user==="root"?"/root":`~${t.user}`);case"Glob":return Wi(e,t.pattern);default:return null}}async function se(e,t){return Hi(e,t)}async function Jc(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped")n.push(Tn(r.value));else if(r.type==="SingleQuoted")n.push(r.value);else if(r.type==="DoubleQuoted"){let s=await yt(e,r.parts);n.push(s)}else if(r.type==="TildeExpansion"){let s=await et(e,r);n.push(Tn(s))}else n.push(await et(e,r));return n.join("")}async function eu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped"){let s=r.value;"()|*?[]".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="SingleQuoted")n.push(Je(r.value));else if(r.type==="DoubleQuoted"){let s=await yt(e,r.parts);n.push(Je(s))}else n.push(await et(e,r));return n.join("")}async function tu(e,t){let n=[];for(let r of t.parts)if(r.type==="SingleQuoted")n.push(Je(r.value));else if(r.type==="Escaped"){let s=r.value;"*?[]\\()|".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="DoubleQuoted"){let s=await yt(e,r.parts);n.push(Je(s))}else r.type==="Glob"?lc(r.pattern)?n.push(await uc(e,r.pattern)):n.push(Wi(e,r.pattern)):r.type==="Literal"?n.push(r.value):n.push(await et(e,r));return n.join("")}function cs(e){for(let t of e)if(t.type==="BraceExpansion"||t.type==="DoubleQuoted"&&cs(t.parts))return!0;return!1}var Xc=1e5;async function nu(e,t,n={count:0}){let r=()=>{n.count++,e.executionScope.consumeLimited("brace_operations",1,Math.min(Xc,e.limits.maxBraceExpansionResults),"brace expansion")},s=(o,a)=>{if(o.length>=e.limits.maxBraceExpansionResults)throw new P(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),o.push(a)},i=[[]];for(let o of t)if(o.type==="BraceExpansion"){let a=[],l=!1,c="";for(let d of o.items)if(d.type==="Range"){let p=Mi(d.start,d.end,d.step,d.startStr,d.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(p.expanded)for(let h of p.expanded)s(a,h);else{l=!0,c=p.literal;break}}else{let p=await nu(e,d.word.parts,n);for(let h of p){let m=[];for(let E of h)typeof E=="string"?m.push(E):m.push(await et(e,E));s(a,m.join(""))}}if(l){for(let d of i)r(),d.push(c);continue}if(i.length*a.length>e.limits.maxBraceExpansionResults||n.count>Xc)throw new P(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");let f=[];for(let d of i)for(let p of a){if(f.length>=e.limits.maxBraceExpansionResults)throw new P(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),f.push([...d,p])}i=f}else for(let a of i)r(),a.push(o);return i}async function ru(e,t){let n=t.parts;if(!cs(n))return[await se(e,t)];let r=await nu(e,n),s=[];for(let i of r){let o=[];for(let a of i)typeof a=="string"?o.push(a):o.push(await et(e,a));s.push(Vi(e,o.join("")))}return s}function Xp(){return{expandWordAsync:Hi,expandWordForGlobbing:tu,expandWordWithBracesAsync:ru,expandWordPartsAsync:yt,expandPart:et,expandParameterAsync:ls,hasBraceExpansion:cs,evaluateArithmetic:X,buildIfsCharClassPattern:Bl,smartWordSplit:zc}}async function gt(e,t){return Bc(e,t,Xp())}function Yp(e){for(let t of e){if(t.type==="ParameterExpansion")return t.parameter;if(t.type==="Literal")return t.value}return""}function Gi(e,t){if(Number.parseInt(e.state.env.get("#")||"0",10)<2)return!1;function r(s){for(let i of s)if(i.type==="DoubleQuoted"){for(let o of i.parts)if(o.type==="ParameterExpansion"&&o.parameter==="@"&&!o.operation)return!0}return!1}return r(t.parts)}async function su(e,t){if(Gi(e,t))return{error:`bash: $@: ambiguous redirect
108
- `};let n=t.parts,{hasQuoted:r}=or(n);if(cs(n)&&(await ru(e,t)).length>1)return{error:`bash: ${n.map(p=>p.type==="Literal"?p.value:p.type==="BraceExpansion"?`{${p.items.map(m=>{if(m.type==="Range"){let E=m.step?`..${m.step}`:"";return`${m.startStr??m.start}..${m.endStr??m.end}${E}`}return m.word.parts.map(E=>E.type==="Literal"?E.value:"").join("")}).join(",")}}`:"").join("")}: ambiguous redirect
109
- `};let s=await Hi(e,t),{hasParamExpansion:i,hasCommandSub:o}=or(n);if((i||o)&&!r&&!Ne(e.state.env)){let f=Ae(e.state.env);if(ue(s,f,e.limits.maxArrayElements).length>1)return{error:`bash: $${Yp(n)}: ambiguous redirect
110
- `}}if(r||e.state.options.noglob||n.some(f=>f.type==="ProcessSubstitution"))return{target:s};let l=await tu(e,t);if(!$t(l,e.state.shoptOptions.extglob))return{target:s};let c=new Kt(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),u=await c.expand(l);return u.length===0?c.hasFailglob()?{error:`bash: no match: ${s}
100
+ `,""):ae(e,o,h)||""}let u=ae(e,o,c);if(u!==void 0)return u;if(c===0){let f=e.state.env.get(o);if(f!==void 0)return f}if(n&&e.state.options.nounset)throw new Ue(`${o}[${c}]`);return""}if(/^[1-9][0-9]*$/.test(t)){let o=e.state.env.get(t);if(o===void 0&&n&&e.state.options.nounset)throw new Ue(t);return o||""}if(ce(e,t)){let o=Be(e,t);if(o===void 0)return"";if(o!==t)return await oe(e,o,n,r);let a=e.state.env.get(t);if((a===void 0||a==="")&&n&&e.state.options.nounset)throw new Ue(t);return a||""}let i=e.state.env.get(t);if(i!==void 0)return e.state.tempEnvBindings?.some(o=>o.has(t))&&(e.state.accessedTempEnvVars=e.state.accessedTempEnvVars||new Set,e.state.accessedTempEnvVars.add(t)),i;if(mt(e,t)){let o=ae(e,t,0);if(o!==void 0)return o;if(n&&e.state.options.nounset)throw new Ue(t);return""}if(n&&e.state.options.nounset)throw new Ue(t);return""}async function Pt(e,t){if(new Set(["?","$","#","_","-","0","PPID","UID","EUID","RANDOM","SECONDS","BASH_VERSION","!","BASHPID","LINENO"]).has(t))return!0;if(t==="@"||t==="*")return Number.parseInt(e.state.env.get("#")||"0",10)>0;if(t==="PWD"||t==="OLDPWD")return e.state.env.has(t);let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(r){let s=r[1],i=r[2];if(ce(e,s)){let l=Be(e,s);if(l&&l!==s){if(l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/))return!1;s=l}}if(i==="@"||i==="*")return G(e,s).length>0?!0:e.state.env.has(s);if(e.state.associativeArrays?.has(s)){let l=ec(e,Hr(i));return Qt(e,s,l)}let a;if(/^-?\d+$/.test(i))a=Number.parseInt(i,10);else try{let l=new H,c=se(l,i);a=await Y(e,c.expression)}catch{let l=e.state.env.get(i);a=l?Number.parseInt(l,10):0,Number.isNaN(a)&&(a=0)}if(a<0){let l=G(e,s);if(l.length===0)return!1;let u=Math.max(...l.map(([f])=>typeof f=="number"?f:0))+1+a;return u<0?!1:Qt(e,s,u)}return Qt(e,s,a)}if(ce(e,t)){let s=Be(e,t);return s===void 0||s===t?e.state.env.has(t):Pt(e,s)}return e.state.env.has(t)?!0:mt(e,t)?Qt(e,t,0):!1}async function tc(e,t){let n="",r=0;for(;r<t.length;){if(t[r]==="$"){if(t[r+1]==="{"){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="{"?s++:t[i]==="}"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(t[r+1]==="("){let s=1,i=r+2;for(;i<t.length&&s>0;)t[i]==="("?s++:t[i]===")"&&s--,i++;n+=t.slice(r,i),r=i;continue}if(/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await oe(e,i);n+=o,r=s;continue}if(/[0-9]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[0-9]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await oe(e,i);n+=o,r=s;continue}if(/[*@#?\-!$]/.test(t[r+1]||"")){let s=t[r+1],i=await oe(e,s);n+=i,r+=2;continue}}if(t[r]==='"'){for(n+='"',r++;r<t.length&&t[r]!=='"';)if(t[r]==="$"&&/[a-zA-Z_]/.test(t[r+1]||"")){let s=r+1;for(;s<t.length&&/[a-zA-Z0-9_]/.test(t[s]);)s++;let i=t.slice(r+1,s),o=await oe(e,i);n+=o,r=s}else t[r]==="\\"?(n+=t[r],r++,r<t.length&&(n+=t[r],r++)):(n+=t[r],r++);r<t.length&&(n+='"',r++);continue}n+=t[r],r++}return n}async function Hi(e,t){let n=t,r=t.startsWith('"')&&t.endsWith('"'),s=t.startsWith("'")&&t.endsWith("'");if((r||s)&&(n=t.slice(1,-1)),s)return n;let i="",o=0;for(;o<n.length;)if(n[o]==="$")if(n[o+1]==="("){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="("&&n[l-1]==="$"||n[l]==="("?a++:n[l]===")"&&a--,l++;let c=n.slice(o+2,l-1);if(e.execFn){let u=await e.execFn(c,{signal:e.state.signal});i+=u.stdout.replace(/\n+$/,""),u.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+u.stderr)}o=l}else if(n[o+1]==="{"){let a=1,l=o+2;for(;l<n.length&&a>0;)n[l]==="{"?a++:n[l]==="}"&&a--,l++;let c=n.slice(o+2,l-1),u=await oe(e,c);i+=u,o=l}else if(/[a-zA-Z_]/.test(n[o+1]||"")){let a=o+1;for(;a<n.length&&/[a-zA-Z0-9_]/.test(n[a]);)a++;let l=n.slice(o+1,a),c=await oe(e,l);i+=c,o=a}else i+=n[o],o++;else if(n[o]==="`"){let a=o+1;for(;a<n.length&&n[a]!=="`";)a++;let l=n.slice(o+1,a);if(e.execFn){let c=await e.execFn(l,{signal:e.state.signal});i+=c.stdout.replace(/\n+$/,""),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr)}o=a+1}else i+=n[o],o++;return i}var pr=1e4,Gi={maxResults:pr,maxStringBytes:10*1024*1024};function os(e,t,n,r){if(e.length>=n.maxResults)return!1;let s=B(t);if(s>n.maxStringBytes-r.value)throw new P(`brace expansion string limit exceeded (${n.maxStringBytes} bytes)`,"string_length");return e.push(t),r.value+=s,!0}function Rp(e,t,n,r,s,i=Gi){let o=n??1;o===0&&(o=1);let a=Math.abs(o),l=[],c=0;if(r?.match(/^-?0\d/)&&(c=Math.max(c,r.replace(/^-/,"").length)),s?.match(/^-?0\d/)&&(c=Math.max(c,s.replace(/^-/,"").length)),c>i.maxStringBytes)throw new P(`brace expansion padding limit exceeded (${i.maxStringBytes} bytes)`,"string_length");let u={value:0},f=d=>{if(c>0){let p=d<0,h=String(Math.abs(d)).padStart(c,"0");return p?`-${h}`:h}return String(d)};if(e<=t)for(let d=e,p=0;d<=t&&p<pr&&os(l,f(d),i,u);d+=a,p++);else for(let d=e,p=0;d>=t&&p<pr&&os(l,f(d),i,u);d-=a,p++);return l}function Dp(e,t,n,r=Gi){let s=n??1;s===0&&(s=1);let i=e.charCodeAt(0),o=t.charCodeAt(0),a=Math.abs(s),l=e>="A"&&e<="Z",c=e>="a"&&e<="z",u=t>="A"&&t<="Z",f=t>="a"&&t<="z";if(l&&f||c&&u){let h=n!==void 0?`..${n}`:"";throw new Lr(`{${e}..${t}${h}}: invalid sequence`)}let d=[],p={value:0};if(i<=o)for(let h=i,y=0;h<=o&&y<pr&&os(d,String.fromCharCode(h),r,p);h+=a,y++);else for(let h=i,y=0;h>=o&&y<pr&&os(d,String.fromCharCode(h),r,p);h-=a,y++);return d}function Zi(e,t,n,r,s,i=Gi){let o=n!==void 0?`..${n}`:"";return typeof e=="number"&&typeof t=="number"?{expanded:Rp(e,t,n,r,s,i),literal:`{${e}..${t}${o}}`}:typeof e=="string"&&typeof t=="string"?{expanded:Dp(e,t,n,i),literal:`{${e}..${t}${o}}`}:{expanded:null,literal:`{${e}..${t}${o}}`}}function nc(e){if(e.statements.length!==1)return null;let t=e.statements[0];if(t.operators.length!==0||t.pipelines.length!==1)return null;let n=t.pipelines[0];if(n.negated||n.commands.length!==1)return null;let r=n.commands[0];if(r.type!=="SimpleCommand")return null;let s=r;if(s.name!==null||s.args.length!==0||s.assignments.length!==0||s.redirections.length!==1)return null;let i=s.redirections[0];return i.operator!=="<"||i.target.type!=="Word"?null:{target:i.target}}function Ct(e,t){return!!(/[*?[]/.test(e)||t&&/[@*+?!]\(/.test(e))}function Qi(e){let t="",n=0;for(;n<e.length;)e[n]==="\\"&&n+1<e.length?(t+=e[n+1],n+=2):(t+=e[n],n++);return t}function et(e){return e.replace(/([*?[\]\\()|])/g,"\\$1")}function Bn(e){return e.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&")}function te(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J(e,t,n=!1){let r="",s=0;for(;s<e.length;){let i=e[s];if(n&&(i==="@"||i==="*"||i==="+"||i==="?"||i==="!")&&s+1<e.length&&e[s+1]==="("){let o=Ip(e,s+1);if(o!==-1){let a=e.slice(s+2,o),c=Op(a).map(f=>J(f,t,n)),u=c.length>0?c.join("|"):"(?:)";i==="@"?r+=`(?:${u})`:i==="*"?r+=`(?:${u})*`:i==="+"?r+=`(?:${u})+`:i==="?"?r+=`(?:${u})?`:i==="!"&&(r+=`(?!(?:${u})$).*`),s=o+1;continue}}if(i==="\\")if(s+1<e.length){let o=e[s+1];/[\\^$.|+(){}[\]*?]/.test(o)?r+=`\\${o}`:r+=o,s+=2}else r+="\\\\",s++;else if(i==="*")r+=t?".*":".*?",s++;else if(i==="?")r+=".",s++;else if(i==="["){let o=_p(e,s);if(o===-1)r+="\\[",s++;else{let a=e.slice(s+1,o);r+=Lp(a),s=o+1}}else/[\^$.|+(){}]/.test(i)?(r+=`\\${i}`,s++):(r+=i,s++)}return r}function Ip(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Op(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function _p(e,t){let n=t+1;for(n<e.length&&e[n]==="^"&&n++,n<e.length&&e[n]==="]"&&n++;n<e.length;){if(e[n]==="\\"&&n+1<e.length){n+=2;continue}if(e[n]==="]")return n;if(e[n]==="'"){let r=e.indexOf("'",n+1);if(r!==-1){n=r+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let r=e.indexOf(":]",n+2);if(r!==-1){n=r+2;continue}}n++}return-1}function Lp(e){let t="[",n=0;for((e[0]==="^"||e[0]==="!")&&(t+="^",n++);n<e.length;){if(e[n]==="'"){let s=e.indexOf("'",n+1);if(s!==-1){let i=e.slice(n+1,s);for(let o of i)o==="\\"?t+="\\\\":o==="]"?t+="\\]":o==="^"&&t==="["?t+="\\^":t+=o;n=s+1;continue}}if(e[n]==="["&&n+1<e.length&&e[n+1]===":"){let s=e.indexOf(":]",n+2);if(s!==-1){let i=e.slice(n+2,s);t+=Fp(i),n=s+2;continue}}let r=e[n];r==="\\"?n+1<e.length?(t+=`\\${e[n+1]}`,n+=2):(t+="\\\\",n++):r==="-"&&n>0&&n<e.length-1?(t+="-",n++):r==="^"&&n===0?(t+="^",n++):(r==="]"&&n===0?t+="\\]":t+=r,n++)}return t+="]",t}var Tp=new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]);function Fp(e){return Tp.get(e)??""}function yt(e,t,n,r,s){if(r==="prefix")return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),me(`^${n}`,"s").replace(t,"");let i=me(`${n}$`,"s");if(s)return e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal"),i.replace(t,"");e.executionScope.consumeLimited("pattern-removal",Math.max(1,t.length),e.limits.maxGlobOperations,"pattern removal");let o=me(`^(?:.*)(${n})$`,"s").exec(t);if(!o)return t;let a=o[1]??"";return t.slice(0,t.length-a.length)}function Wn(e,t){let n=new Set;for(let r of e.state.env.keys())r.startsWith(t)&&n.add(r);for(let r of e.state.arrays?.keys()??[])r.startsWith(t)&&n.add(r);return[...n].sort()}function as(e,t,n,r,s){let i=new Nn(e.limits.maxStringLength,"pattern replacement",()=>new P(`pattern replacement: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length"));n.lastIndex=0;let o=0,a=n.exec(t);for(;a!==null&&(e.executionScope.consumeLimited("pattern_operations",1,e.limits.maxGlobOperations,"pattern replacement"),!(s&&a[0].length===0&&a.index===t.length||(i.append(t.slice(o,a.index)),i.append(r),o=a.index+a[0].length,!s)));)a[0].length===0&&(o++,n.lastIndex<=a.index&&(n.lastIndex=a.index+1)),a=n.exec(t);return i.append(t.slice(o)),n.lastIndex=0,i.build()}function rc(e){let t=[],n=0;return{append(r){let s=B(r);if(s>e-n)throw new P(`prompt expansion exceeds string length limit (${e} bytes)`,"string_length");r&&t.push(r),n+=s},build:()=>t.join("")}}function Mp(e,t,n){let r=(o,a=2)=>String(o).padStart(a,"0");if(e===""){let o=r(t.getHours()),a=r(t.getMinutes()),l=r(t.getSeconds());return`${o}:${a}:${l}`}let s=rc(n),i=0;for(;i<e.length;)if(e[i]==="%"){if(i+1>=e.length){s.append("%"),i++;continue}let o=e[i+1];switch(o){case"H":s.append(r(t.getHours()));break;case"M":s.append(r(t.getMinutes()));break;case"S":s.append(r(t.getSeconds()));break;case"d":s.append(r(t.getDate()));break;case"m":s.append(r(t.getMonth()+1));break;case"Y":s.append(String(t.getFullYear()));break;case"y":s.append(r(t.getFullYear()%100));break;case"I":{let a=t.getHours()%12;a===0&&(a=12),s.append(r(a));break}case"p":s.append(t.getHours()<12?"AM":"PM");break;case"P":s.append(t.getHours()<12?"am":"pm");break;case"%":s.append("%");break;case"a":{let a=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];s.append(a[t.getDay()]);break}case"b":{let a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];s.append(a[t.getMonth()]);break}default:s.append(`%${o}`)}i+=2}else s.append(e[i]),i++;return s.build()}function hr(e,t){let n=rc(e.limits.maxStringLength),r=0,s=e.state.env.get("USER")||e.state.env.get("LOGNAME")||"user",i=e.state.env.get("HOSTNAME")||"localhost",o=i.split(".")[0],a=e.state.env.get("PWD")||"/",l=e.state.env.get("HOME")||"/",c=a.startsWith(l)?`~${a.slice(l.length)}`:a,u=a.split("/").pop()||a,f=new Date,d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],p=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],h=e.state.env.get("__COMMAND_NUMBER")||"1";for(;r<t.length;){let y=t[r];if(y==="\\"){if(r+1>=t.length){n.append("\\"),r++;continue}let E=t[r+1];if(E>="0"&&E<="7"){let S="",g=r+1;for(;g<t.length&&g<r+4&&t[g]>="0"&&t[g]<="7";)S+=t[g],g++;let m=Number.parseInt(S,8)%256;n.append(String.fromCharCode(m)),r=g;continue}switch(E){case"\\":n.append("\\"),r+=2;break;case"a":n.append("\x07"),r+=2;break;case"e":n.append("\x1B"),r+=2;break;case"n":n.append(`
101
+ `),r+=2;break;case"r":n.append("\r"),r+=2;break;case"$":n.append("$"),r+=2;break;case"[":case"]":r+=2;break;case"u":n.append(s),r+=2;break;case"h":n.append(o),r+=2;break;case"H":n.append(i),r+=2;break;case"w":n.append(c),r+=2;break;case"W":n.append(u),r+=2;break;case"d":{let S=String(f.getDate()).padStart(2," ");n.append(`${d[f.getDay()]} ${p[f.getMonth()]} ${S}`),r+=2;break}case"t":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0"),m=String(f.getSeconds()).padStart(2,"0");n.append(`${S}:${g}:${m}`),r+=2;break}case"T":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),m=String(f.getMinutes()).padStart(2,"0"),b=String(f.getSeconds()).padStart(2,"0");n.append(`${g}:${m}:${b}`),r+=2;break}case"@":{let S=f.getHours()%12;S===0&&(S=12);let g=String(S).padStart(2,"0"),m=String(f.getMinutes()).padStart(2,"0"),b=f.getHours()<12?"AM":"PM";n.append(`${g}:${m} ${b}`),r+=2;break}case"A":{let S=String(f.getHours()).padStart(2,"0"),g=String(f.getMinutes()).padStart(2,"0");n.append(`${S}:${g}`),r+=2;break}case"D":if(r+2<t.length&&t[r+2]==="{"){let S=t.indexOf("}",r+3);if(S!==-1){let g=t.slice(r+3,S);n.append(Mp(g,f,e.limits.maxStringLength)),r=S+1}else n.append("\\D"),r+=2}else n.append("\\D"),r+=2;break;case"s":n.append("bash"),r+=2;break;case"v":n.append("5.0"),r+=2;break;case"V":n.append("5.0.0"),r+=2;break;case"j":n.append("0"),r+=2;break;case"l":n.append("tty"),r+=2;break;case"#":n.append(h),r+=2;break;case"!":n.append(h),r+=2;break;case"x":n.append("\\x"),r+=2;break;default:n.append(`\\${E}`),r+=2}}else n.append(y),r++}return n.build()}function Jt(e){if(e==="")return"''";if(/[\n\r\t\x00-\x1f\x7f']/.test(e)){let n="$'";for(let r of e)switch(r){case"'":n+="\\'";break;case"\\":n+="\\\\";break;case`
102
+ `:n+="\\n";break;case"\r":n+="\\r";break;case" ":n+="\\t";break;default:{let s=r.charCodeAt(0);s<32||s===127?n+=`\\${s.toString(8).padStart(3,"0")}`:n+=r}}return`${n}'`}return`'${e}'`}function Ze(e,t){e.state.readonlyVars=e.state.readonlyVars||new Set,e.state.readonlyVars.add(t)}function We(e,t){return e.state.readonlyVars?.has(t)??!1}function ue(e,t,n="bash"){if(We(e,t)){let r=`${n}: ${t}: readonly variable
103
+ `;throw new q(1,"",r)}return null}function gt(e,t){let n=e.state.exportedVars?.has(t)??!1;if(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(t),e.state.localScopes.length>0&&e.state.localScopes[e.state.localScopes.length-1].has(t)&&!n){for(e.state.localExportedVars||(e.state.localExportedVars=[]);e.state.localExportedVars.length<e.state.localScopes.length;)e.state.localExportedVars.push(new Set);e.state.localExportedVars[e.state.localExportedVars.length-1].add(t)}}function ls(e,t){e.state.exportedVars?.delete(t)}function en(e,t){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t))return"";let n="",r=ke(e,t)?.kind==="indexed",s=e.state.associativeArrays?.has(t)??!1;return r&&!s&&(n+="a"),s&&(n+="A"),e.state.integerVars?.has(t)&&(n+="i"),ce(e,t)&&(n+="n"),We(e,t)&&(n+="r"),e.state.exportedVars?.has(t)&&(n+="x"),n}async function sc(e,t,n,r){return e.coverage?.hit("bash:expansion:default_value"),(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):n.effectiveValue}async function ic(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:assign_default"),(r.isUnset||n.checkEmpty&&r.isEmpty)&&n.word){let o=await s(e,n.word.parts,r.inDoubleQuotes),a=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let[,l,c]=a,u;if(/^\d+$/.test(c))u=Number.parseInt(c,10);else{try{let f=new H,d=se(f,c);u=await Y(e,d.expression)}catch{let f=e.state.env.get(c);u=f?Number.parseInt(f,10):0}Number.isNaN(u)&&(u=0)}j(e,l,u,o)}else e.state.env.set(t,o);return o}return r.effectiveValue}async function oc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:error_if_unset"),r.isUnset||n.checkEmpty&&r.isEmpty){let o=n.word?await s(e,n.word.parts,r.inDoubleQuotes):`${t}: parameter null or not set`;throw new q(1,"",`bash: ${o}
104
+ `)}return r.effectiveValue}async function ac(e,t,n,r){return e.coverage?.hit("bash:expansion:use_alternative"),!(n.isUnset||t.checkEmpty&&n.isEmpty)&&t.word?r(e,t.word.parts,n.inDoubleQuotes):""}async function lc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_removal");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let a of n.pattern.parts)if(a.type==="Glob")i+=J(a.pattern,n.greedy,o);else if(a.type==="Literal")i+=J(a.value,n.greedy,o);else if(a.type==="SingleQuoted"||a.type==="Escaped")i+=te(a.value);else if(a.type==="DoubleQuoted"){let l=await r(e,a.parts);i+=te(l)}else if(a.type==="ParameterExpansion"){let l=await s(e,a);i+=J(l,n.greedy,o)}else{let l=await s(e,a);i+=te(l)}return yt(e,t,i,n.side,n.greedy)}async function cc(e,t,n,r,s){e.coverage?.hit("bash:expansion:pattern_replacement");let i="",o=e.state.shoptOptions.extglob;if(n.pattern)for(let c of n.pattern.parts)if(c.type==="Glob")i+=J(c.pattern,!0,o);else if(c.type==="Literal")i+=J(c.value,!0,o);else if(c.type==="SingleQuoted"||c.type==="Escaped")i+=te(c.value);else if(c.type==="DoubleQuoted"){let u=await r(e,c.parts);i+=te(u)}else if(c.type==="ParameterExpansion"){let u=await s(e,c);i+=J(u,!0,o)}else{let u=await s(e,c);i+=te(u)}let a=n.replacement?await r(e,n.replacement.parts):"";if(n.anchor==="start"?i=`^${i}`:n.anchor==="end"&&(i=`${i}$`),i==="")return t;let l=n.all?"gs":"s";try{let c=me(i,l);return as(e,t,c,a,n.all)}catch(c){if(c instanceof P)throw c;return t}}function uc(e,t,n){e.coverage?.hit("bash:expansion:length");let r=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(r){let s=r[1],i=G(e,s);return i.length>0?String(i.length):e.state.env.get(s)!==void 0?"1":"0"}if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&mt(e,t)){if(t==="FUNCNAME"){let i=e.state.funcNameStack?.[0]||"";return String([...i].length)}if(t==="BASH_LINENO"){let i=e.state.callLineStack?.[0];return String(i!==void 0?[...String(i)].length:0)}let s=ae(e,t,0)||"";return String([...s].length)}return String([...n].length)}async function fc(e,t,n,r){e.coverage?.hit("bash:expansion:substring");let s=await Y(e,r.offset.expression),i=r.length?await Y(e,r.length.expression):void 0;if(t==="@"||t==="*"){let c=Number.parseInt(e.state.env.get("#")||"0",10),u=[];for(let h=1;h<=c;h++)u.push(e.state.env.get(String(h))||"");let f=e.state.env.get("0")||"bash",d,p;if(s<=0)if(d=[f,...u],s<0){if(p=d.length+s,p<0)return""}else p=0;else d=u,p=s-1;if(p<0||p>=d.length)return"";if(i!==void 0){let h=i<0?d.length+i:p+i;return d.slice(p,Math.max(p,h)).join(" ")}return d.slice(p).join(" ")}let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(o){let c=o[1];if(e.state.associativeArrays?.has(c))throw new q(1,"",`bash: \${${c}[@]: 0: 3}: bad substitution
105
+ `);let u=G(e,c),f=0;if(s<0){if(u.length>0){let d=u[u.length-1][0],h=(typeof d=="number"?d:0)+1+s;if(h<0||(f=u.findIndex(([y])=>typeof y=="number"&&y>=h),f<0))return""}}else if(f=u.findIndex(([d])=>typeof d=="number"&&d>=s),f<0)return"";if(i!==void 0){if(i<0)throw new le(`${o[1]}[@]: substring expression < 0`);return u.slice(f,f+i).map(([,d])=>d).join(" ")}return u.slice(f).map(([,d])=>d).join(" ")}let a=[...n],l=s;if(l<0&&(l=Math.max(0,a.length+l)),i!==void 0){if(i<0){let c=a.length+i;return a.slice(l,Math.max(l,c)).join("")}return a.slice(l,l+i).join("")}return a.slice(l).join("")}async function dc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:case_modification"),n.pattern){let i=e.state.shoptOptions.extglob,o="";for(let f of n.pattern.parts)if(f.type==="Glob")o+=J(f.pattern,!0,i);else if(f.type==="Literal")o+=J(f.value,!0,i);else if(f.type==="SingleQuoted"||f.type==="Escaped")o+=te(f.value);else if(f.type==="DoubleQuoted"){let d=await r(e,f.parts);o+=te(d)}else if(f.type==="ParameterExpansion"){let d=await s(e,f);o+=J(d,!0,i)}let a=me(`^(?:${o})$`),l=n.direction==="upper"?f=>f.toUpperCase():f=>f.toLowerCase(),c="",u=!1;for(let f of t)!n.all&&u?c+=f:a.test(f)?(c+=l(f),u=!0):c+=f;return c}return n.direction==="upper"?n.all?t.toUpperCase():t.charAt(0).toUpperCase()+t.slice(1):n.all?t.toLowerCase():t.charAt(0).toLowerCase()+t.slice(1)}function pc(e,t,n,r,s){e.coverage?.hit("bash:expansion:transform");let i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(i&&s.operator==="Q")return G(e,i[1]).map(([,c])=>Jt(c)).join(" ");if(i&&s.operator==="a")return en(e,i[1]);let o=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[.+\]$/);if(o&&s.operator==="a")return en(e,o[1]);switch(s.operator){case"Q":return r?"":Jt(n);case"P":return hr(e,n);case"a":return en(e,t);case"A":return r?"":`${t}=${Jt(n)}`;case"E":return n.replace(/\\([\\abefnrtv'"?])/g,(a,l)=>{switch(l){case"\\":return"\\";case"a":return"\x07";case"b":return"\b";case"e":return"\x1B";case"f":return"\f";case"n":return`
106
+ `;case"r":return"\r";case"t":return" ";case"v":return"\v";case"'":return"'";case'"':return'"';case"?":return"?";default:return l}});case"K":case"k":return r?"":Jt(n);case"u":return n.charAt(0).toUpperCase()+n.slice(1);case"U":return n.toUpperCase();case"L":return n.toLowerCase();default:return n}}async function hc(e,t,n,r,s,i,o=!1){if(e.coverage?.hit("bash:expansion:indirection"),ce(e,t))return xn(e,t)||"";let a=/^[a-zA-Z_][a-zA-Z0-9_]*\[([@*])\]$/.test(t);if(r){if(s.innerOp?.type==="UseAlternative")return"";throw new Xe(`\${!${t}}`)}let l=n;if(a&&(l===""||l.includes(" ")))throw new Xe(`\${!${t}}`);let c=l.match(/^[a-zA-Z_][a-zA-Z0-9_]*\[(.+)\]$/);if(c&&c[1].includes("~"))throw new Xe(`\${!${t}}`);if(s.innerOp){let u={type:"ParameterExpansion",parameter:l,operation:s.innerOp};return i(e,u,o)}return await oe(e,l)}function mc(e,t){e.coverage?.hit("bash:expansion:array_keys");let r=G(e,t.array).map(([s])=>String(s));return t.star?r.join(Q(e.state.env)):r.join(" ")}function yc(e,t){e.coverage?.hit("bash:expansion:var_name_prefix");let n=Wn(e,t.prefix);return t.star?n.join(Q(e.state.env)):n.join(" ")}function gc(e,t,n,r){let s=Number.parseInt(e.state.env.get("#")||"0",10),i=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(t==="*")return{isEmpty:s===0,effectiveValue:n};if(t==="@")return{isEmpty:s===0||s===1&&e.state.env.get("1")==="",effectiveValue:n};if(i){let[,o,a]=i,l=G(e,o);if(l.length===0)return{isEmpty:!0,effectiveValue:""};if(a==="*"){let c=Q(e.state.env),u=l.map(([,f])=>f).join(c);return{isEmpty:r?u==="":!1,effectiveValue:u}}return{isEmpty:l.length===1&&l.every(([,c])=>c===""),effectiveValue:l.map(([,c])=>c).join(" ")}}return{isEmpty:n==="",effectiveValue:n}}function tn(e,t){e.lastExitCode=t,e.env.set("?",String(t)),e.lastSubstitutionExitCode=t}function Bp(e){switch(e.operator){case"<":case"<&":case"<<":case"<<-":case"<<<":case"<>":return e.fd===null||e.fd===0;default:return!1}}function cs(e,t){return t.some(Bp)?0:e.lastSubstitutionExitCode??0}function wc(e){let t=0;for(;t<e.length;){let n=e[t];if(n==="\\"&&t+1<e.length){t+=2;continue}if(n==="'"){let r=e.indexOf("'",t+1);if(r!==-1){t=r+1;continue}}if(n==="$"&&t+1<e.length&&e[t+1]==="("||n==="`")return!0;t++}return!1}function Ec(e,t){let n=1,r=t,s=!1,i=!1;for(;r<e.length&&n>0;){let o=e[r];if(o==="\\"&&!s&&r+1<e.length){r+=2;continue}if(o==="'"&&!i){s=!s,r++;continue}if(o==='"'&&!s){i=!i,r++;continue}if(!s&&!i){if(o==="(")n++;else if(o===")"&&(n--,n===0))return r}r++}return-1}async function us(e,t){let n=new H,r;try{r=n.parse(t)}catch{return""}let s=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let i=new Map(e.state.env),o=it(e.state.arrays),a=e.state.cwd,l=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let c=await e.executeScript(r),u=c.exitCode;return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.suppressVerbose=l,tn(e.state,u),c.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+c.stderr),e.state.bashPid=s,c.stdout.replace(/\n+$/,"")}catch(c){return e.state.env=i,e.state.arrays=o,e.state.cwd=a,e.state.bashPid=s,e.state.suppressVerbose=l,Mr(c),c instanceof q?(tn(e.state,c.exitCode),c.stdout?.replace(/\n+$/,"")??""):""}}function Ki(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=et(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=Wp(e,a);n+=et(l),r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}function Wp(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}async function bc(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="'"){let i=t.indexOf("'",r+1);if(i!==-1){let o=t.slice(r+1,i);n+=et(o),r=i+1;continue}}if(s==='"'){let i=-1,o=r+1;for(;o<t.length;){if(t[o]==="\\"){o+=2;continue}if(t[o]==='"'){i=o;break}o++}if(i!==-1){let a=t.slice(r+1,i),l=await Vp(e,a);n+=et(l),r=i+1;continue}}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=Ec(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await us(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await us(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}if(s==="\\"&&r+1<t.length){n+=s+t[r+1],r+=2;continue}n+=s,r++}return n}async function Vp(e,t){let n="",r=0;for(;r<t.length;){let s=t[r];if(s==="\\"&&r+1<t.length){let i=t[r+1];if(i==="$"||i==="`"||i==="\\"||i==='"'){n+=i,r+=2;continue}n+=s,r++;continue}if(s==="$"&&r+1<t.length&&t[r+1]==="("){let i=Ec(t,r+2);if(i!==-1){let o=t.slice(r+2,i),a=await us(e,o);n+=a,r=i+1;continue}}if(s==="`"){let i=t.indexOf("`",r+1);if(i!==-1){let o=t.slice(r+1,i),a=await us(e,o);n+=a,r=i+1;continue}}if(s==="$"&&r+1<t.length){let i=t[r+1];if(i==="{"){let o=t.indexOf("}",r+2);if(o!==-1){let a=t.slice(r+2,o);n+=e.state.env.get(a)??"",r=o+1;continue}}else if(/[a-zA-Z_]/.test(i)){let o=r+1;for(;o<t.length&&/[a-zA-Z0-9_]/.test(t[o]);)o++;let a=t.slice(r+1,o);n+=e.state.env.get(a)??"",r=o;continue}}n+=s,r++}return n}function Xi(e,t){if(!t.startsWith("~"))return t;e.coverage?.hit("bash:expansion:tilde");let n=e.state.env.get("HOME")!==void 0?e.state.env.get("HOME"):"/home/user";if(t==="~"||t.startsWith("~/"))return n+t.slice(1);let r=1;for(;r<t.length&&/[a-zA-Z0-9_-]/.test(t[r]);)r++;let s=t.slice(1,r),i=t.slice(r);return i!==""&&!i.startsWith("/")?t:s==="root"?`/root${i}`:t}function nn(e,t){return t.split(":").map(n=>Xi(e,n)).join(":")}function De(e,t,n,r){if(e.length>n-t.length)throw new P(`${r} element limit exceeded (${n})`,"array_elements");for(let s of t)e.push(s)}async function zp(e,t,n,r){let s="";for(let i of t.parts)if(i.type==="Glob")s+=J(i.pattern,!0,e.state.shoptOptions.extglob);else if(i.type==="Literal")s+=J(i.value,!0,e.state.shoptOptions.extglob);else if(i.type==="SingleQuoted"||i.type==="Escaped")s+=te(i.value);else if(i.type==="DoubleQuoted"){let o=await n(e,i.parts);s+=te(o)}else if(i.type==="ParameterExpansion"){let o=await r(e,i);s+=J(o,!0,e.state.shoptOptions.extglob)}else{let o=await r(e,i);s+=te(o)}return s}async function Sc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternReplacement")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=G(e,a),f=u.map(([,E])=>E);if(u.length===0){let E=e.state.env.get(a);E!==void 0&&f.push(E)}if(f.length===0)return{values:[],quoted:!0};let d="";c.pattern&&(d=await zp(e,c.pattern,n,r));let p=c.replacement?await n(e,c.replacement.parts):"",h=d;c.anchor==="start"?h=`^${d}`:c.anchor==="end"&&(h=`${d}$`);let y=[];try{let E=me(h,c.all?"g":"");for(let S of f)y.push(E.replace(S,p))}catch{y.push(...f)}if(l){let E=Q(e.state.env);return{values:[y.join(E)],quoted:!0}}return{values:y,quoted:!0}}async function Ac(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0];if(s.parts.length!==1||s.parts[0].type!=="ParameterExpansion"||s.parts[0].operation?.type!=="PatternRemoval")return null;let i=s.parts[0],o=i.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!o)return null;let a=o[1],l=o[2]==="*",c=i.operation,u=G(e,a),f=u.map(([,y])=>y);if(u.length===0){let y=e.state.env.get(a);y!==void 0&&f.push(y)}if(f.length===0)return{values:[],quoted:!0};let d="",p=e.state.shoptOptions.extglob;if(c.pattern)for(let y of c.pattern.parts)if(y.type==="Glob")d+=J(y.pattern,c.greedy,p);else if(y.type==="Literal")d+=J(y.value,c.greedy,p);else if(y.type==="SingleQuoted"||y.type==="Escaped")d+=te(y.value);else if(y.type==="DoubleQuoted"){let E=await n(e,y.parts);d+=te(E)}else if(y.type==="ParameterExpansion"){let E=await r(e,y);d+=J(E,c.greedy,p)}else{let E=await r(e,y);d+=te(E)}let h=[];for(let y of f)h.push(yt(e,y,d,c.side,c.greedy));if(l){let y=Q(e.state.env);return{values:[h.join(y)],quoted:!0}}return{values:h,quoted:!0}}async function vc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="DefaultValue"&&n.parts[0].operation?.type!=="UseAlternative"&&n.parts[0].operation?.type!=="AssignDefault")return null;let r=n.parts[0],s=r.operation,i=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/),o,a=!1;if(i){let l=i[1];a=i[2]==="*";let c=G(e,l),u=c.length>0||e.state.env.has(l),f=c.length===0||c.length===1&&c.every(([,p])=>p===""),d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=u&&!(d&&f):o=!u||d&&f,!o){if(c.length>0){let h=c.map(([,y])=>y);if(a){let y=Q(e.state.env);return{values:[h.join(y)],quoted:!0}}return{values:h,quoted:!0}}let p=e.state.env.get(l);return p!==void 0?{values:[p],quoted:!0}:{values:[],quoted:!0}}}else{let l=r.parameter,c=await Pt(e,l),u=await oe(e,l),f=u==="",d=s.checkEmpty??!1;if(s.type==="UseAlternative"?o=c&&!(d&&f):o=!c||d&&f,!o)return{values:[u],quoted:!0}}if(o&&s.word){let l=s.word.parts,c=null,u=!1;for(let f of l)if(f.type==="ParameterExpansion"&&!f.operation){let d=f.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(d){c=d[1],u=d[2]==="*";break}}if(c){let f=G(e,c);if(f.length>0){let p=f.map(([,h])=>h);if(u||a){let h=Q(e.state.env);return{values:[p.join(h)],quoted:!0}}return{values:p,quoted:!0}}let d=e.state.env.get(c);return d!==void 0?{values:[d],quoted:!0}:{values:[],quoted:!0}}}return null}async function kc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0],o=-1,a="",l=!1,c=null;for(let y=0;y<i.parts.length;y++){let E=i.parts[y];if(E.type==="ParameterExpansion"&&(E.operation?.type==="PatternRemoval"||E.operation?.type==="PatternReplacement")){let S=E.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(S){o=y,a=S[1],l=S[2]==="*",c=E.operation;break}}}if(o===-1||o===0&&o===i.parts.length-1)return null;let u="";for(let y=0;y<o;y++)u+=await r(e,i.parts[y]);let f="";for(let y=o+1;y<i.parts.length;y++)f+=await r(e,i.parts[y]);let d=G(e,a),p=d.map(([,y])=>y);if(d.length===0){let y=e.state.env.get(a);if(y!==void 0)p=[y];else{if(l)return{values:[u+f],quoted:!0};let E=u+f;return{values:E?[E]:[],quoted:!0}}}if(c?.type==="PatternRemoval"){let y=c,E="",S=e.state.shoptOptions.extglob;if(y.pattern)for(let g of y.pattern.parts)if(g.type==="Glob")E+=J(g.pattern,y.greedy,S);else if(g.type==="Literal")E+=J(g.value,y.greedy,S);else if(g.type==="SingleQuoted"||g.type==="Escaped")E+=te(g.value);else if(g.type==="DoubleQuoted"){let m=await s(e,g.parts);E+=te(m)}else if(g.type==="ParameterExpansion"){let m=await r(e,g);E+=J(m,y.greedy,S)}else{let m=await r(e,g);E+=te(m)}p=p.map(g=>yt(e,g,E,y.side,y.greedy))}else if(c?.type==="PatternReplacement"){let y=c,E="";if(y.pattern)for(let m of y.pattern.parts)if(m.type==="Glob")E+=J(m.pattern,!0,e.state.shoptOptions.extglob);else if(m.type==="Literal")E+=J(m.value,!0,e.state.shoptOptions.extglob);else if(m.type==="SingleQuoted"||m.type==="Escaped")E+=te(m.value);else if(m.type==="DoubleQuoted"){let b=await s(e,m.parts);E+=te(b)}else if(m.type==="ParameterExpansion"){let b=await r(e,m);E+=J(b,!0,e.state.shoptOptions.extglob)}else{let b=await r(e,m);E+=te(b)}let S=y.replacement?await s(e,y.replacement.parts):"",g=E;y.anchor==="start"?g=`^${E}`:y.anchor==="end"&&(g=`${E}$`);try{let m=me(g,y.all?"g":"");p=p.map(b=>m.replace(b,S))}catch{}}if(l){let y=Q(e.state.env);return{values:[u+p.join(y)+f],quoted:!0}}return p.length===1?{values:[u+p[0]+f],quoted:!0}:{values:[u+p[0],...p.slice(1,-1),p[p.length-1]+f],quoted:!0}}async function xc(e,t,n,r){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o="",a=!1;for(let p=0;p<s.parts.length;p++){let h=s.parts[p];if(h.type==="ParameterExpansion"&&!h.operation){let y=h.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(y){i=p,o=y[1],a=y[2]==="*";break}}}if(i===-1)return null;let l="";for(let p=0;p<i;p++)l+=await r(e,s.parts[p]);let c="";for(let p=i+1;p<s.parts.length;p++)c+=await r(e,s.parts[p]);let u=G(e,o),f=u.map(([,p])=>p);if(u.length===0){let p=e.state.env.get(o);if(p!==void 0)return{values:[l+p+c],quoted:!0};if(a)return{values:[l+c],quoted:!0};let h=l+c;return{values:h?[h]:[],quoted:!0}}if(a){let p=Q(e.state.env);return{values:[l+f.join(p)+c],quoted:!0}}return f.length===1?{values:[l+f[0]+c],quoted:!0}:{values:[l+f[0],...f.slice(1,-1),f[f.length-1]+c],quoted:!0}}async function $c(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0];if(r.parts.length!==1||r.parts[0].type!=="ParameterExpansion"||r.parts[0].operation?.type!=="Substring")return null;let s=r.parts[0],i=s.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!i)return null;let o=i[1],a=i[2]==="*",l=s.operation;if(e.state.associativeArrays?.has(o))throw new q(1,"",`bash: \${${o}[@]: 0: 3}: bad substitution
107
+ `);let c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=G(e,o);if(f.length>e.limits.maxArrayElements)throw new P(`array transform element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let d=0;if(c<0){if(f.length>0){let h=f[f.length-1][0],E=(typeof h=="number"?h:0)+1+c;if(E<0)return{values:[],quoted:!0};d=f.findIndex(([S])=>typeof S=="number"&&S>=E),d<0&&(d=f.length)}}else d=f.findIndex(([h])=>typeof h=="number"&&h>=c),d<0&&(d=f.length);let p;if(u!==void 0){if(u<0)throw new le(`${o}[@]: substring expression < 0`);p=f.slice(d,d+u).map(([,h])=>h)}else p=f.slice(d).map(([,h])=>h);if(p.length===0)return{values:[],quoted:!0};if(a){let h=Q(e.state.env);return{values:[p.join(h)],quoted:!0}}return{values:p,quoted:!0}}function Pc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation?.type!=="Transform")return null;let r=n.parts[0],s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!s)return null;let i=s[1],o=s[2]==="*",a=r.operation,l=G(e,i);if(l.length===0){let d=e.state.env.get(i);if(d!==void 0){let p;switch(a.operator){case"a":p="";break;case"P":p=hr(e,d);break;case"Q":p=Jt(d);break;default:p=d}if(B(p)>e.limits.maxStringLength)throw new P(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[p],quoted:!0}}return o?{values:[""],quoted:!0}:{values:[],quoted:!0}}let c=en(e,i),u=[],f=0;for(let[,d]of l){let p;switch(a.operator){case"a":p=c;break;case"P":p=hr(e,d);break;case"Q":p=Jt(d);break;case"u":p=d.charAt(0).toUpperCase()+d.slice(1);break;case"U":p=d.toUpperCase();break;case"L":p=d.toLowerCase();break;default:p=d}let h=B(p);if(h>e.limits.maxStringLength-f)throw new P(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");u.push(p),f+=h}if(o){let d=Q(e.state.env);if(Math.max(0,u.length-1)*B(d)>e.limits.maxStringLength-f)throw new P(`array transform string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u.join(d)],quoted:!0}}return{values:u,quoted:!0}}function Cc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion")return null;let r=n.parts[0];if(r.operation)return null;let s=r.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!s)return null;let i=s[1];if(ce(e,i)){let l=xn(e,i);if(l?.endsWith("[@]")||l?.endsWith("[*]"))return{values:[],quoted:!0}}let o=G(e,i);if(o.length>0)return{values:o.map(([,l])=>l),quoted:!0};let a=e.state.env.get(i);return a!==void 0?{values:[a],quoted:!0}:{values:[],quoted:!0}}function Nc(e,t){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let n=t[0];if(n.parts.length!==1||n.parts[0].type!=="ParameterExpansion"||n.parts[0].operation)return null;let s=n.parts[0].parameter;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)||!ce(e,s))return null;let i=xn(e,s);if(!i)return null;let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(@)\]$/);if(!o)return null;let a=o[1],l=G(e,a);if(l.length>0)return{values:l.map(([,u])=>u),quoted:!0};let c=e.state.env.get(a);return c!==void 0?{values:[c],quoted:!0}:{values:[],quoted:!0}}async function Rc(e,t,n,r,s){if(!n||t.length!==1||t[0].type!=="DoubleQuoted")return null;let i=t[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],a=o.operation,l=await oe(e,o.parameter),c=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c){if(!a.innerOp&&(l==="@"||l==="*")){let h=Number.parseInt(e.state.env.get("#")||"0",10),y=[];for(let E=1;E<=h;E++)y.push(e.state.env.get(String(E))||"");return l==="*"?{values:[y.join(Q(e.state.env))],quoted:!0}:{values:y,quoted:!0}}return null}let u=c[1],f=c[2]==="*",d=G(e,u);if(a.innerOp){if(a.innerOp.type==="Substring")return Up(e,d,u,f,a.innerOp);if(a.innerOp.type==="DefaultValue"||a.innerOp.type==="UseAlternative"||a.innerOp.type==="AssignDefault"||a.innerOp.type==="ErrorIfUnset")return qp(e,d,u,f,a.innerOp,s);if(a.innerOp.type==="Transform"&&a.innerOp.operator==="a"){let y=en(e,u),E=d.map(()=>y);return f?{values:[E.join(Q(e.state.env))],quoted:!0}:{values:E,quoted:!0}}let h=[];for(let[,y]of d){let E={type:"ParameterExpansion",parameter:"_indirect_elem_",operation:a.innerOp},S=e.state.env.get("_indirect_elem_");e.state.env.set("_indirect_elem_",y);try{let g=await r(e,E,!0);h.push(g)}finally{S!==void 0?e.state.env.set("_indirect_elem_",S):e.state.env.delete("_indirect_elem_")}}return f?{values:[h.join(Q(e.state.env))],quoted:!0}:{values:h,quoted:!0}}if(d.length>0){let h=d.map(([,y])=>y);return f?{values:[h.join(Q(e.state.env))],quoted:!0}:{values:h,quoted:!0}}let p=e.state.env.get(u);return p!==void 0?{values:[p],quoted:!0}:{values:[],quoted:!0}}async function Up(e,t,n,r,s){let i=s.offset?await Y(e,s.offset.expression):0,o=s.length?await Y(e,s.length.expression):void 0,a=0;if(i<0){if(t.length>0){let u=t[t.length-1][0],d=(typeof u=="number"?u:0)+1+i;if(d<0)return{values:[],quoted:!0};if(a=t.findIndex(([p])=>typeof p=="number"&&p>=d),a<0)return{values:[],quoted:!0}}}else if(a=t.findIndex(([u])=>typeof u=="number"&&u>=i),a<0)return{values:[],quoted:!0};let l;if(o!==void 0){if(o<0)throw new le(`${n}[@]: substring expression < 0`);l=t.slice(a,a+o)}else l=t.slice(a);let c=l.map(([,u])=>u);return r?{values:[c.join(Q(e.state.env))],quoted:!0}:{values:c,quoted:!0}}async function qp(e,t,n,r,s,i){let o=s.checkEmpty??!1,a=t.map(([,u])=>u),l=t.length===0,c=t.length===0;if(s.type==="UseAlternative")return!c&&!(o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:{values:[],quoted:!0};if(s.type==="DefaultValue")return(c||o&&l)&&s.word?{values:[await i(e,s.word.parts,!0)],quoted:!0}:r?{values:[a.join(Q(e.state.env))],quoted:!0}:{values:a,quoted:!0};if(s.type==="AssignDefault"){if((c||o&&l)&&s.word){let f=await i(e,s.word.parts,!0);return j(e,n,0,f),{values:[f],quoted:!0}}return r?{values:[a.join(Q(e.state.env))],quoted:!0}:{values:a,quoted:!0}}return r?{values:[a.join(Q(e.state.env))],quoted:!0}:{values:a,quoted:!0}}async function Dc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="UseAlternative"&&t[0].operation?.type!=="DefaultValue")return null;let n=t[0],r=n.operation,s=r?.word;if(!s||s.parts.length!==1||s.parts[0].type!=="DoubleQuoted")return null;let i=s.parts[0];if(i.parts.length!==1||i.parts[0].type!=="ParameterExpansion"||i.parts[0].operation?.type!=="Indirection")return null;let o=i.parts[0],l=(await oe(e,o.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!l)return null;let c=await Pt(e,n.parameter),u=await oe(e,n.parameter)==="",f=r.checkEmpty??!1,d;if(r.type==="UseAlternative"?d=c&&!(f&&u):d=!c||f&&u,d){let p=l[1],h=l[2]==="*",y=G(e,p);if(y.length>0){let S=y.map(([,g])=>g);return h?{values:[S.join(Q(e.state.env))],quoted:!0}:{values:S,quoted:!0}}let E=e.state.env.get(p);return E!==void 0?{values:[E],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}async function Ic(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="Indirection")return null;let n=t[0],s=n.operation.innerOp;if(!s||s.type!=="UseAlternative"&&s.type!=="DefaultValue")return null;let i=s.word;if(!i||i.parts.length!==1||i.parts[0].type!=="DoubleQuoted")return null;let o=i.parts[0];if(o.parts.length!==1||o.parts[0].type!=="ParameterExpansion"||o.parts[0].operation?.type!=="Indirection")return null;let a=o.parts[0],c=(await oe(e,a.parameter)).match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!c)return null;let u=await oe(e,n.parameter),f=await Pt(e,n.parameter),d=u==="",p=s.checkEmpty??!1,h;if(s.type==="UseAlternative"?h=f&&!(p&&d):h=!f||p&&d,h){let y=c[1],E=c[2]==="*",S=G(e,y);if(S.length>0){let m=S.map(([,b])=>b);return E?{values:[m.join(Q(e.state.env))],quoted:!0}:{values:m,quoted:!0}}let g=e.state.env.get(y);return g!==void 0?{values:[g],quoted:!0}:{values:[],quoted:!0}}return{values:[],quoted:!1}}function Oc(e){let t=Number.parseInt(e.state.env.get("#")||"0",10);if(t>e.limits.maxArrayElements)throw new P(`positional parameter element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let n=[],r=0;for(let s=1;s<=t;s++){let i=e.state.env.get(String(s))||"",o=B(i);if(o>e.limits.maxStringLength-r)throw new P(`positional parameter string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n.push(i),r+=o}return n}function fs(e,t,n){if(B(t)>n-B(e))throw new P(`positional expansion string limit exceeded (${n} bytes)`,"string_length");return e+t}function Yi(e,t,n,r){if(e.length>=r.limits.maxArrayElements)throw new P(`positional expansion element limit exceeded (${r.limits.maxArrayElements})`,"array_elements");let s=B(t);if(s>r.limits.maxStringLength-n.value)throw new P(`positional expansion string limit exceeded (${r.limits.maxStringLength} bytes)`,"string_length");e.push(t),n.value+=s}async function _c(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let m=s.parts[g];if(m.type==="ParameterExpansion"&&(m.parameter==="@"||m.parameter==="*")&&m.operation?.type==="Substring"){i=g,o=m.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=l.offset?await n(e,l.offset.expression):0,u=l.length?await n(e,l.length.expression):void 0,f=Number.parseInt(e.state.env.get("#")||"0",10),d=[];for(let g=1;g<=f;g++)d.push(e.state.env.get(String(g))||"");let p=e.state.env.get("0")||"bash",h;if(c<=0){let g=[p,...d],m=g.length+c;if(m<0)h=[];else{let b=c<0?m:0;if(u!==void 0){let A=u<0?g.length+u:b+u;h=g.slice(b,Math.max(b,A))}else h=g.slice(b)}}else{let g=c-1;if(g>=d.length)h=[];else if(u!==void 0){let m=u<0?d.length+u:g+u;h=d.slice(g,Math.max(g,m))}else h=d.slice(g)}let y="";for(let g=0;g<i;g++)y+=await r(e,s.parts[g]);let E="";for(let g=i+1;g<s.parts.length;g++)E+=await r(e,s.parts[g]);if(h.length===0){let g=y+E;return{values:g?[g]:[],quoted:!0}}if(o){let g=Q(e.state.env);return{values:[y+h.join(g)+E],quoted:!0}}return h.length===1?{values:[y+h[0]+E],quoted:!0}:{values:[y+h[0],...h.slice(1,-1),h[h.length-1]+E],quoted:!0}}async function Lc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let g=0;g<s.parts.length;g++){let m=s.parts[g];if(m.type==="ParameterExpansion"&&(m.parameter==="@"||m.parameter==="*")&&m.operation?.type==="PatternReplacement"){i=g,o=m.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=Oc(e),u="";for(let g=0;g<i;g++)u=fs(u,await n(e,s.parts[g]),e.limits.maxStringLength);let f="";for(let g=i+1;g<s.parts.length;g++)f=fs(f,await n(e,s.parts[g]),e.limits.maxStringLength);if(c.length===0){let g=u+f;return{values:g?[g]:[],quoted:!0}}let d="";if(l.pattern)for(let g of l.pattern.parts)if(g.type==="Glob")d+=J(g.pattern,!0,e.state.shoptOptions.extglob);else if(g.type==="Literal")d+=J(g.value,!0,e.state.shoptOptions.extglob);else if(g.type==="SingleQuoted"||g.type==="Escaped")d+=te(g.value);else if(g.type==="DoubleQuoted"){let m=await r(e,g.parts);d+=te(m)}else if(g.type==="ParameterExpansion"){let m=await n(e,g);d+=J(m,!0,e.state.shoptOptions.extglob)}else{let m=await n(e,g);d+=te(m)}let p=l.replacement?await r(e,l.replacement.parts):"",h=d;l.anchor==="start"?h=`^${d}`:l.anchor==="end"&&(h=`${d}$`);let y=[],E={value:0};try{let g=me(h,l.all?"g":"");for(let m of c){let b=0;g.lastIndex=0;for(let x=g.exec(m);x&&(b++,!!l.all);x=g.exec(m))x[0].length===0&&g.lastIndex++;let A=B(m),k=B(p),v=0,$=/\$(?:\$|&|\d+|<[^>]+>|`|')/g;for(;$.exec(p)!==null;)v++;if(A+b*k+b*v*A>e.limits.maxStringLength-E.value)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");Yi(y,g.replace(m,p),E,e)}}catch(g){if(g instanceof P)throw g;for(let m of c)Yi(y,m,E,e)}if(o){let g=Q(e.state.env);if(E.value+Math.max(0,y.length-1)*B(g)+B(u)+B(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+y.join(g)+f],quoted:!0}}if(B(u)+E.value+B(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return y.length===1?{values:[u+y[0]+f],quoted:!0}:{values:[u+y[0],...y.slice(1,-1),y[y.length-1]+f],quoted:!0}}async function Tc(e,t,n,r){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let s=t[0],i=-1,o=!1;for(let S=0;S<s.parts.length;S++){let g=s.parts[S];if(g.type==="ParameterExpansion"&&(g.parameter==="@"||g.parameter==="*")&&g.operation?.type==="PatternRemoval"){i=S,o=g.parameter==="*";break}}if(i===-1)return null;let l=s.parts[i].operation,c=Oc(e),u="";for(let S=0;S<i;S++)u=fs(u,await n(e,s.parts[S]),e.limits.maxStringLength);let f="";for(let S=i+1;S<s.parts.length;S++)f=fs(f,await n(e,s.parts[S]),e.limits.maxStringLength);if(c.length===0){let S=u+f;return{values:S?[S]:[],quoted:!0}}let d="",p=e.state.shoptOptions.extglob;if(l.pattern)for(let S of l.pattern.parts)if(S.type==="Glob")d+=J(S.pattern,l.greedy,p);else if(S.type==="Literal")d+=J(S.value,l.greedy,p);else if(S.type==="SingleQuoted"||S.type==="Escaped")d+=te(S.value);else if(S.type==="DoubleQuoted"){let g=await r(e,S.parts);d+=te(g)}else if(S.type==="ParameterExpansion"){let g=await n(e,S);d+=J(g,l.greedy,p)}else{let g=await n(e,S);d+=te(g)}let h=[],y={value:0};for(let S of c)Yi(h,yt(e,S,d,l.side,l.greedy),y,e);if(o){let S=Q(e.state.env);if(y.value+Math.max(0,h.length-1)*B(S)+B(u)+B(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return{values:[u+h.join(S)+f],quoted:!0}}if(B(u)+y.value+B(f)>e.limits.maxStringLength)throw new P(`positional expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return h.length===1?{values:[u+h[0]+f],quoted:!0}:{values:[u+h[0],...h.slice(1,-1),h[h.length-1]+f],quoted:!0}}async function Fc(e,t,n){if(t.length!==1||t[0].type!=="DoubleQuoted")return null;let r=t[0],s=-1,i=!1;for(let d=0;d<r.parts.length;d++){let p=r.parts[d];if(p.type==="ParameterExpansion"&&(p.parameter==="@"||p.parameter==="*")){s=d,i=p.parameter==="*";break}}if(s===-1)return null;let o=r.parts[s];if(o.type==="ParameterExpansion"&&o.operation)return null;let a=Number.parseInt(e.state.env.get("#")||"0",10),l="";for(let d=0;d<s;d++)l+=await n(e,r.parts[d]);let c="";for(let d=s+1;d<r.parts.length;d++)c+=await n(e,r.parts[d]);if(a===0){if(i)return{values:[l+c],quoted:!0};let d=l+c;return{values:d?[d]:[],quoted:!0}}let u=[];for(let d=1;d<=a;d++)u.push(e.state.env.get(String(d))||"");if(i){let d=Q(e.state.env);return{values:[l+u.join(d)+c],quoted:!0}}return u.length===1?{values:[l+u[0]+c],quoted:!0}:{values:[l+u[0],...u.slice(1,-1),u[u.length-1]+c],quoted:!0}}function Nt(e,t,n,r){if(t.length>=e.limits.maxArrayElements)throw new P(`unquoted expansion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let s=B(n);if(s>e.limits.maxStringLength-r.value)throw new P(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");t.push(n),r.value+=s}function Ji(e,t,n,r){let s=B(n),i=Math.max(0,t.length-1);if(s>0&&i>Math.floor((e.limits.maxStringLength-r)/s))throw new P(`unquoted expansion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");return t.join(n)}function jp(e){return new Yt(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")})}async function ds(e,t){if(e.state.options.noglob)return t;let n=jp(e),r=[];for(let s of t)if(Ct(s,e.state.shoptOptions.extglob)){let i=await n.expand(s);if(i.length>0)De(r,i,e.limits.maxArrayElements,"unquoted glob expansion");else{if(n.hasFailglob())throw new Vt(s);n.hasNullglob()||r.push(s)}}else r.push(s);return r}async function Mc(e,t,n,r){let s=-1,i="",o=!1;for(let b=0;b<t.length;b++){let A=t[b];if(A.type==="ParameterExpansion"&&A.operation?.type==="PatternReplacement"){let k=A.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(k){s=b,i=k[1],o=k[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=G(e,i),u=c.map(([,b])=>b);if(c.length===0){let b=e.state.env.get(i);b!==void 0&&(u=[b])}if(u.length===0)return{values:[],quoted:!1};let f="";if(l.pattern)for(let b of l.pattern.parts)if(b.type==="Glob")f+=J(b.pattern,!0,e.state.shoptOptions.extglob);else if(b.type==="Literal")f+=J(b.value,!0,e.state.shoptOptions.extglob);else if(b.type==="SingleQuoted"||b.type==="Escaped")f+=te(b.value);else if(b.type==="DoubleQuoted"){let A=await n(e,b.parts);f+=te(A)}else if(b.type==="ParameterExpansion"){let A=await r(e,b);f+=J(A,!0,e.state.shoptOptions.extglob)}else{let A=await r(e,b);f+=te(A)}let d=l.replacement?await n(e,l.replacement.parts):"",p=f;l.anchor==="start"?p=`^${f}`:l.anchor==="end"&&(p=`${f}$`);let h=[],y={value:0};try{let b=me(p,l.all?"g":"");for(let A of u)Nt(e,h,as(e,A,b,d,l.all),y)}catch(b){if(b instanceof P)throw b;for(let A of u)Nt(e,h,A,y)}let E=ve(e.state.env),S=Re(e.state.env);if(o){let b=Q(e.state.env),A=Ji(e,h,b,y.value);return S?{values:A?[A]:[],quoted:!1}:{values:fe(A,E,e.limits.maxArrayElements),quoted:!1}}if(S)return{values:h,quoted:!1};let g=[],m={value:0};for(let b of h)if(b==="")Nt(e,g,"",m);else for(let A of fe(b,E,e.limits.maxArrayElements))Nt(e,g,A,m);return{values:g,quoted:!1}}async function Bc(e,t,n,r){let s=-1,i="",o=!1;for(let m=0;m<t.length;m++){let b=t[m];if(b.type==="ParameterExpansion"&&b.operation?.type==="PatternRemoval"){let A=b.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(A){s=m,i=A[1],o=A[2]==="*";break}}}if(s===-1)return null;let l=t[s].operation,c=G(e,i),u=c.map(([,m])=>m);if(c.length===0){let m=e.state.env.get(i);m!==void 0&&(u=[m])}if(u.length===0)return{values:[],quoted:!1};let f="",d=e.state.shoptOptions.extglob;if(l.pattern)for(let m of l.pattern.parts)if(m.type==="Glob")f+=J(m.pattern,l.greedy,d);else if(m.type==="Literal")f+=J(m.value,l.greedy,d);else if(m.type==="SingleQuoted"||m.type==="Escaped")f+=te(m.value);else if(m.type==="DoubleQuoted"){let b=await n(e,m.parts);f+=te(b)}else if(m.type==="ParameterExpansion"){let b=await r(e,m);f+=J(b,l.greedy,d)}else{let b=await r(e,m);f+=te(b)}let p=[],h={value:0};for(let m of u)Nt(e,p,yt(e,m,f,l.side,l.greedy),h);let y=ve(e.state.env),E=Re(e.state.env);if(o){let m=Q(e.state.env),b=Ji(e,p,m,h.value);return E?{values:b?[b]:[],quoted:!1}:{values:fe(b,y,e.limits.maxArrayElements),quoted:!1}}if(E)return{values:p,quoted:!1};let S=[],g={value:0};for(let m of p)if(m==="")Nt(e,S,"",g);else for(let b of fe(m,y,e.limits.maxArrayElements))Nt(e,S,b,g);return{values:S,quoted:!1}}async function Wc(e,t,n,r){let s=-1,i=!1;for(let g=0;g<t.length;g++){let m=t[g];if(m.type==="ParameterExpansion"&&(m.parameter==="@"||m.parameter==="*")&&m.operation?.type==="PatternRemoval"){s=g,i=m.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=Number.parseInt(e.state.env.get("#")||"0",10),c=[];for(let g=1;g<=l;g++)c.push(e.state.env.get(String(g))||"");if(c.length===0)return{values:[],quoted:!1};let u="",f=e.state.shoptOptions.extglob;if(a.pattern)for(let g of a.pattern.parts)if(g.type==="Glob")u+=J(g.pattern,a.greedy,f);else if(g.type==="Literal")u+=J(g.value,a.greedy,f);else if(g.type==="SingleQuoted"||g.type==="Escaped")u+=te(g.value);else if(g.type==="DoubleQuoted"){let m=await n(e,g.parts);u+=te(m)}else if(g.type==="ParameterExpansion"){let m=await r(e,g);u+=J(m,a.greedy,f)}else{let m=await r(e,g);u+=te(m)}let d=[],p={value:0};for(let g of c)Nt(e,d,yt(e,g,u,a.side,a.greedy),p);let h=ve(e.state.env),y=Re(e.state.env);if(i){let g=Q(e.state.env),m=Ji(e,d,g,p.value);return y?{values:m?[m]:[],quoted:!1}:{values:fe(m,h,e.limits.maxArrayElements),quoted:!1}}if(y)return{values:d,quoted:!1};let E=[],S={value:0};for(let g of d)if(g==="")Nt(e,E,"",S);else for(let m of fe(g,h,e.limits.maxArrayElements))Nt(e,E,m,S);return{values:E,quoted:!1}}async function Vc(e,t,n,r){let s=-1,i=!1;for(let m=0;m<t.length;m++){let b=t[m];if(b.type==="ParameterExpansion"&&(b.parameter==="@"||b.parameter==="*")&&b.operation?.type==="Substring"){s=m,i=b.parameter==="*";break}}if(s===-1)return null;let a=t[s].operation,l=a.offset?await n(e,a.offset.expression):0,c=a.length?await n(e,a.length.expression):void 0,u=Number.parseInt(e.state.env.get("#")||"0",10),f=[];for(let m=1;m<=u;m++)f.push(e.state.env.get(String(m))||"");let d=e.state.env.get("0")||"bash",p;if(l<=0){let m=[d,...f],b=m.length+l;if(b<0)p=[];else{let A=l<0?b:0;if(c!==void 0){let k=c<0?m.length+c:A+c;p=m.slice(A,Math.max(A,k))}else p=m.slice(A)}}else{let m=l-1;if(m>=f.length)p=[];else if(c!==void 0){let b=c<0?f.length+c:m+c;p=f.slice(m,Math.max(m,b))}else p=f.slice(m)}let h="";for(let m=0;m<s;m++)h+=await r(e,t[m]);let y="";for(let m=s+1;m<t.length;m++)y+=await r(e,t[m]);let E=ve(e.state.env),S=Re(e.state.env);if(p.length===0){let m=h+y;return m?S?{values:[m],quoted:!1}:{values:fe(m,E,e.limits.maxArrayElements),quoted:!1}:{values:[],quoted:!1}}let g;if(i){let m=Q(e.state.env),b=h+p.join(m)+y;S?g=b?[b]:[]:g=fe(b,E,e.limits.maxArrayElements)}else if(S)p.length===1?g=[h+p[0]+y]:g=[h+p[0],...p.slice(1,-1),p[p.length-1]+y];else{g=[];for(let m=0;m<p.length;m++){let b=p[m];if(m===0&&(b=h+b),m===p.length-1&&(b=b+y),b==="")g.push("");else{let A=fe(b,E,e.limits.maxArrayElements);De(g,A,e.limits.maxArrayElements,"unquoted expansion")}}}return{values:await ds(e,g),quoted:!1}}async function zc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].parameter!=="@"&&t[0].parameter!=="*"||t[0].operation)return null;let n=t[0].parameter==="*",r=Number.parseInt(e.state.env.get("#")||"0",10);if(r===0)return{values:[],quoted:!1};let s=[];for(let c=1;c<=r;c++)s.push(e.state.env.get(String(c))||"");let i=ve(e.state.env),o=Re(e.state.env),a=ns(e.state.env),l;if(n)if(o)l=s.filter(c=>c!=="");else{let c=Q(e.state.env),u=s.join(c);l=fe(u,i,e.limits.maxArrayElements)}else if(o)l=s.filter(c=>c!=="");else if(a){l=[];for(let c of s){if(c==="")continue;let u=fe(c,i,e.limits.maxArrayElements);De(l,u,e.limits.maxArrayElements,"unquoted expansion")}}else{l=[];for(let c of s)if(c==="")l.push("");else{let u=fe(c,i,e.limits.maxArrayElements);De(l,u,e.limits.maxArrayElements,"unquoted expansion")}for(;l.length>0&&l[l.length-1]==="";)l.pop()}return{values:await ds(e,l),quoted:!1}}async function Uc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation)return null;let n=t[0].parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(!n)return null;let r=n[1],s=n[2]==="*",i=G(e,r),o;if(i.length===0){let f=e.state.env.get(r);if(f!==void 0)o=[f];else return{values:[],quoted:!1}}else o=i.map(([,f])=>f);let a=ve(e.state.env),l=Re(e.state.env),c=ns(e.state.env),u;if(s)if(l)u=o.filter(f=>f!=="");else{let f=Q(e.state.env),d=o.join(f);u=fe(d,a,e.limits.maxArrayElements)}else if(l)u=o.filter(f=>f!=="");else if(c){u=[];for(let f of o){if(f==="")continue;let d=fe(f,a,e.limits.maxArrayElements);De(u,d,e.limits.maxArrayElements,"unquoted expansion")}}else{u=[];for(let f of o)if(f==="")u.push("");else{let d=fe(f,a,e.limits.maxArrayElements);De(u,d,e.limits.maxArrayElements,"unquoted expansion")}for(;u.length>0&&u[u.length-1]==="";)u.pop()}return{values:await ds(e,u),quoted:!1}}function qc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="VarNamePrefix")return null;let n=t[0].operation,r=Wn(e,n.prefix);if(r.length===0)return{values:[],quoted:!1};let s=ve(e.state.env),i=Re(e.state.env),o;if(n.star)if(i)o=r;else{let a=Q(e.state.env),l=r.join(a);o=fe(l,s,e.limits.maxArrayElements)}else if(i)o=r;else{o=[];for(let a of r){let l=fe(a,s,e.limits.maxArrayElements);De(o,l,e.limits.maxArrayElements,"unquoted expansion")}}return{values:o,quoted:!1}}function jc(e,t){if(t.length!==1||t[0].type!=="ParameterExpansion"||t[0].operation?.type!=="ArrayKeys")return null;let n=t[0].operation,s=G(e,n.array).map(([l])=>String(l));if(s.length===0)return{values:[],quoted:!1};let i=ve(e.state.env),o=Re(e.state.env),a;if(n.star)if(o)a=s;else{let l=Q(e.state.env),c=s.join(l);a=fe(c,i,e.limits.maxArrayElements)}else if(o)a=s;else{a=[];for(let l of s){let c=fe(l,i,e.limits.maxArrayElements);De(a,c,e.limits.maxArrayElements,"unquoted expansion")}}return{values:a,quoted:!1}}async function Hc(e,t,n){let r=-1;for(let d=0;d<t.length;d++){let p=t[d];if(p.type==="ParameterExpansion"&&(p.parameter==="@"||p.parameter==="*")&&!p.operation){r=d;break}}if(r===-1||t.length<=1)return null;let s=Number.parseInt(e.state.env.get("#")||"0",10),i=[];for(let d=1;d<=s;d++)i.push(e.state.env.get(String(d))||"");let o="";for(let d=0;d<r;d++)o+=await n(e,t[d]);let a="";for(let d=r+1;d<t.length;d++)a+=await n(e,t[d]);let l=ve(e.state.env),c=Re(e.state.env),u=ns(e.state.env);if(s===0){let d=o+a;return{values:d?[d]:[],quoted:!1}}let f;{let d=[];for(let p=0;p<i.length;p++){let h=i[p];p===0&&(h=o+h),p===i.length-1&&(h=h+a),d.push(h)}if(c)f=d.filter(p=>p!=="");else if(u){f=[];for(let p of d){if(p==="")continue;let h=fe(p,l,e.limits.maxArrayElements);De(f,h,e.limits.maxArrayElements,"unquoted expansion")}}else{f=[];for(let p of d)if(p==="")f.push("");else{let h=fe(p,l,e.limits.maxArrayElements);De(f,h,e.limits.maxArrayElements,"unquoted expansion")}for(;f.length>0&&f[f.length-1]==="";)f.pop()}}return f.length===0?{values:[],quoted:!1}:{values:await ds(e,f),quoted:!1}}async function Qc(e,t,n){e.coverage?.hit("bash:expansion:word_glob");let r=t.parts,{hasQuoted:s,hasCommandSub:i,hasArrayVar:o,hasArrayAtExpansion:a,hasParamExpansion:l,hasVarNamePrefixExpansion:c,hasIndirection:u}=dr(r),d=n.hasBraceExpansion(r)?await n.expandWordWithBracesAsync(e,t):null;if(d&&d.length>1)return Hp(e,d,s);let p=await Gp(e,r,a,c,u,n);if(p!==null)return p;let h=await Qp(e,r,n);if(h!==null)return h;let y=await Kp(e,r,n);if(y!==null)return y;let E=await Yp(e,r,n.expandPart);if(E!==null)return Zc(e,E);if((i||o||l)&&!Re(e.state.env)){let g=ve(e.state.env),m=n.buildIfsCharClassPattern(g),b=await n.smartWordSplit(e,r,g,m,n.expandPart);return Zc(e,b)}let S=await n.expandWordAsync(e,t);return Jp(e,t,r,S,s,n.expandWordForGlobbing)}async function Hp(e,t,n){let r=[];for(let s of t)if(!(!n&&s===""))if(!n&&!e.state.options.noglob&&Ct(s,e.state.shoptOptions.extglob)){let i=await ps(e,s);De(r,i,e.limits.maxArrayElements,"brace/glob expansion")}else r.push(s);return{values:r,quoted:!1}}async function Gp(e,t,n,r,s,i){if(n){let o=Cc(e,t);if(o!==null)return o}{let o=Nc(e,t);if(o!==null)return o}{let o=await vc(e,t);if(o!==null)return o}{let o=await kc(e,t,n,i.expandPart,i.expandWordPartsAsync);if(o!==null)return o}{let o=await xc(e,t,n,i.expandPart);if(o!==null)return o}{let o=await $c(e,t,i.evaluateArithmetic);if(o!==null)return o}{let o=Pc(e,t);if(o!==null)return o}{let o=await Sc(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}{let o=await Ac(e,t,i.expandWordPartsAsync,i.expandPart);if(o!==null)return o}if(r&&t.length===1&&t[0].type==="DoubleQuoted"){let o=Zp(e,t);if(o!==null)return o}{let o=await Rc(e,t,s,i.expandParameterAsync,i.expandWordPartsAsync);if(o!==null)return o}{let o=await Dc(e,t);if(o!==null)return o}{let o=await Ic(e,t);if(o!==null)return o}return null}function Zp(e,t){let n=t[0];if(n.type!=="DoubleQuoted")return null;if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="VarNamePrefix"){let r=n.parts[0].operation,s=Wn(e,r.prefix);return r.star?{values:[s.join(Q(e.state.env))],quoted:!0}:{values:s,quoted:!0}}if(n.parts.length===1&&n.parts[0].type==="ParameterExpansion"&&n.parts[0].operation?.type==="ArrayKeys"){let r=n.parts[0].operation,i=G(e,r.array).map(([o])=>String(o));return r.star?{values:[i.join(Q(e.state.env))],quoted:!0}:{values:i,quoted:!0}}return null}async function Qp(e,t,n){{let r=await _c(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await Lc(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await Tc(e,t,n.expandPart,n.expandWordPartsAsync);if(r!==null)return r}{let r=await Fc(e,t,n.expandPart);if(r!==null)return r}return null}async function Kp(e,t,n){{let r=await Mc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Bc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Wc(e,t,n.expandWordPartsAsync,n.expandPart);if(r!==null)return r}{let r=await Vc(e,t,n.evaluateArithmetic,n.expandPart);if(r!==null)return r}{let r=await zc(e,t);if(r!==null)return r}{let r=await Uc(e,t);if(r!==null)return r}{let r=qc(e,t);if(r!==null)return r}{let r=jc(e,t);if(r!==null)return r}{let r=await Hc(e,t,n.expandPart);if(r!==null)return r}return null}function Gc(e){if(e.type!=="DoubleQuoted")return null;for(let t=0;t<e.parts.length;t++){let n=e.parts[t];if(n.type!=="ParameterExpansion"||n.operation)continue;let r=n.parameter.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([@*])\]$/);if(r)return{type:"array",name:r[1],atIndex:t,isStar:r[2]==="*"};if(n.parameter==="@"||n.parameter==="*")return{type:"positional",atIndex:t,isStar:n.parameter==="*"}}return null}async function Xp(e,t,n,r){let s="";for(let a=0;a<n.atIndex;a++)s+=await r(e,t.parts[a]);let i="";for(let a=n.atIndex+1;a<t.parts.length;a++)i+=await r(e,t.parts[a]);let o;if(n.type==="array"){if(o=G(e,n.name).map(([,l])=>l),o.length===0){let l=e.state.env.get(n.name);l!==void 0&&(o=[l])}}else{let a=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let l=1;l<=a;l++)o.push(e.state.env.get(String(l))||"")}if(n.isStar){let a=Q(e.state.env),l=o.join(a);return[s+l+i]}if(o.length===0){let a=s+i;return a?[a]:[]}return o.length===1?[s+o[0]+i]:[s+o[0],...o.slice(1,-1),o[o.length-1]+i]}async function Yp(e,t,n){if(t.length<2)return null;let r=!1;for(let l of t)if(Gc(l)){r=!0;break}if(!r)return null;let s=ve(e.state.env),i=Re(e.state.env),o=[];for(let l of t){let c=Gc(l);if(c&&l.type==="DoubleQuoted"){let u=await Xp(e,l,c,n);o.push(u)}else if(l.type==="DoubleQuoted"||l.type==="SingleQuoted"){let u=await n(e,l);o.push([u])}else if(l.type==="Literal")o.push([l.value]);else if(l.type==="ParameterExpansion"){let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=fe(u,s,e.limits.maxArrayElements);o.push(f)}}else{let u=await n(e,l);if(i)o.push(u?[u]:[]);else{let f=fe(u,s,e.limits.maxArrayElements);o.push(f)}}}let a=[];for(let l of o)if(l.length!==0)if(a.length===0)De(a,l,e.limits.maxArrayElements,"word expansion");else{let c=a.length-1;a[c]=a[c]+l[0];for(let u=1;u<l.length;u++)a.push(l[u])}return a}async function Zc(e,t){if(e.state.options.noglob)return{values:t,quoted:!1};let n=[];for(let r of t)if(Ct(r,e.state.shoptOptions.extglob)){let s=await ps(e,r);De(n,s,e.limits.maxArrayElements,"glob expansion")}else n.push(r);return{values:n,quoted:!1}}async function ps(e,t){let n=new Yt(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),r=await n.expand(t);if(r.length>0)return r;if(n.hasFailglob())throw new Vt(t);return n.hasNullglob()?[]:[t]}async function Jp(e,t,n,r,s,i){let o=n.some(a=>a.type==="Glob");if(!e.state.options.noglob&&o){let a=await i(e,t);if(Ct(a,e.state.shoptOptions.extglob)){let c=await ps(e,a);if(c.length>0&&c[0]!==a)return{values:c,quoted:!1};if(c.length===0)return{values:[],quoted:!1}}let l=Qi(r);if(!Re(e.state.env)){let c=ve(e.state.env);return{values:fe(l,c,e.limits.maxArrayElements),quoted:!1}}return{values:[l],quoted:!1}}if(!s&&!e.state.options.noglob&&Ct(r,e.state.shoptOptions.extglob)){let a=await i(e,t);if(Ct(a,e.state.shoptOptions.extglob)){let l=await ps(e,a);if(l.length>0&&l[0]!==a)return{values:l,quoted:!1}}}if(r===""&&!s)return{values:[],quoted:!1};if(o&&!s){let a=Qi(r);if(!Re(e.state.env)){let l=ve(e.state.env);return{values:fe(a,l,e.limits.maxArrayElements),quoted:!1}}return{values:[a],quoted:!1}}return{values:[r],quoted:s}}function Le(e,t,n){if(t.length>=e.limits.maxArrayElements)throw new P(`word splitting element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");t.push(n)}async function Xc(e,t){let n=t.operation;if(!n||n.type!=="DefaultValue"&&n.type!=="AssignDefault"&&n.type!=="UseAlternative")return null;let r=n.word;if(!r||r.parts.length===0)return null;let s=await Pt(e,t.parameter),o=await oe(e,t.parameter,!1)==="",a=n.checkEmpty??!1,l;return n.type==="UseAlternative"?l=s&&!(a&&o):l=!s||a&&o,l?r.parts:null}function eh(e){return e.type==="SingleQuoted"?!0:e.type==="DoubleQuoted"?e.parts.every(n=>n.type==="Literal"):!1}async function th(e,t){if(t.type!=="ParameterExpansion")return null;let n=await Xc(e,t);if(!n||n.length<=1)return null;let r=n.some(i=>eh(i)),s=n.some(i=>i.type==="Literal"||i.type==="ParameterExpansion"||i.type==="CommandSubstitution"||i.type==="ArithmeticExpansion");return r&&s?n:null}function nh(e){return e.type==="DoubleQuoted"||e.type==="SingleQuoted"||e.type==="Literal"?!1:e.type==="Glob"?Vi(e.pattern):!(!(e.type==="ParameterExpansion"||e.type==="CommandSubstitution"||e.type==="ArithmeticExpansion")||e.type==="ParameterExpansion"&&Zl(e))}async function Yc(e,t,n,r,s){if(e.coverage?.hit("bash:expansion:word_split"),t.length===1&&t[0].type==="ParameterExpansion"){let d=t[0],p=await Xc(e,d);if(p&&p.length>0&&p.length>1&&p.some(y=>y.type==="DoubleQuoted"||y.type==="SingleQuoted")&&p.some(y=>y.type==="Literal"||y.type==="ParameterExpansion"||y.type==="CommandSubstitution"||y.type==="ArithmeticExpansion"))return Kc(e,p,n,r,s)}let i=[],o=!1;for(let d of t){let p=nh(d),h=d.type==="DoubleQuoted"||d.type==="SingleQuoted",y=p?await th(e,d):null,E=await s(e,d);i.push({value:E,isSplittable:p,isQuoted:h,mixedDefaultParts:y??void 0}),p&&(o=!0)}if(!o){let d=i.map(p=>p.value).join("");return d?[d]:[]}let a=[],l="",c=!1,u=!1,f=!1;for(let d of i)if(!d.isSplittable)u?d.isQuoted&&d.value===""?(l!==""&&Le(e,a,l),Le(e,a,""),c=!0,l="",u=!1,f=!0):d.value!==""?(l!==""&&Le(e,a,l),l=d.value,u=!1,f=!1):(l+=d.value,f=!1):(l+=d.value,f=d.isQuoted&&d.value==="");else if(d.mixedDefaultParts){let p=await Kc(e,d.mixedDefaultParts,n,r,s);if(p.length!==0)if(p.length===1)l+=p[0],c=!0;else{l+=p[0],Le(e,a,l),c=!0;for(let h=1;h<p.length-1;h++)Le(e,a,p[h]);l=p[p.length-1]}u=!1,f=!1}else{let{words:p,hadLeadingDelimiter:h,hadTrailingDelimiter:y}=rs(d.value,n,e.limits.maxArrayElements);if(f&&h&&l===""&&(Le(e,a,""),c=!0),p.length===0)y&&(u=!0);else if(p.length===1)l+=p[0],c=!0,u=y;else{l+=p[0],Le(e,a,l),c=!0;for(let E=1;E<p.length-1;E++)Le(e,a,p[E]);l=p[p.length-1],u=y}f=!1}return l!==""?Le(e,a,l):a.length===0&&c&&Le(e,a,""),a}function rh(e,t){return e.length>0&&t.includes(e[0])}async function Kc(e,t,n,r,s){let i=[];for(let u of t){let d=!(u.type==="DoubleQuoted"||u.type==="SingleQuoted"),p=await s(e,u);i.push({value:p,isSplittable:d})}let o=[],a="",l=!1,c=!1;for(let u of i)if(!u.isSplittable)c&&u.value!==""?(a!==""&&Le(e,o,a),a=u.value,c=!1):a+=u.value;else{rh(u.value,n)&&a!==""&&(Le(e,o,a),a="",l=!0);let{words:d,hadTrailingDelimiter:p}=rs(u.value,n,e.limits.maxArrayElements);if(d.length===0)p&&(c=!0);else if(d.length===1)a+=d[0],l=!0,c=p;else{a+=d[0],Le(e,o,a),l=!0;for(let h=1;h<d.length-1;h++)Le(e,o,d[h]);a=d[d.length-1],c=p}}return a!==""?Le(e,o,a):o.length===0&&l&&Le(e,o,""),o}function Jc(e){switch(e.type){case"Literal":return e.value;case"SingleQuoted":return e.value;case"Escaped":return e.value;default:return null}}function eu(e){switch(e.type){case"SingleQuoted":case"Escaped":case"DoubleQuoted":return!0;case"Literal":return e.value==="";default:return!1}}var mr=class{baseFs;mounts=new Map;constructor(t){if(this.baseFs=t?.base??new At,t?.mounts)for(let{mountPoint:n,filesystem:r}of t.mounts)this.mount(n,r)}mount(t,n){this.validateMountPath(t);let r=U(t);this.validateMount(r),this.mounts.set(r,{mountPoint:r,filesystem:n})}unmount(t){let n=U(t);if(!this.mounts.has(n))throw new Error(`No filesystem mounted at '${t}'`);this.mounts.delete(n)}getMounts(){return Array.from(this.mounts.values()).map(t=>({mountPoint:t.mountPoint,filesystem:t.filesystem}))}diff(t){let n=t?.space??"vfs",r=[],s=[],i=[];for(let o of this.mounts.values()){let a=o.filesystem;if(typeof a.diff!="function")throw new N("EINVAL",`mounted filesystem at '${o.mountPoint}' does not support diff()`);let l=a.diff(),c=u=>{if(n==="vfs")return o.mountPoint==="/"?u:`${o.mountPoint}${u}`;if(typeof a.rootDir!="string")throw new N("EINVAL",`cannot produce a host-space diff: mount at '${o.mountPoint}' has no real root`);return`${a.rootDir}${u}`};for(let u of l.writes)r.push({...u,path:c(u.path)});for(let u=0;u<l.deletions.length;u++)s.push(c(l.deletions[u])),i.push(l.deletionChangedAt?.[u]??0)}return{writes:r,deletions:s,...i.length>0&&{deletionChangedAt:i}}}restamp(t,n,r="full"){let{fs:s,relativePath:i}=this.routePath(t),o=s.restamp;typeof o=="function"&&o.call(s,i,n,r)}isMountPoint(t){let n=U(t);return this.mounts.has(n)}validateMountPath(t){let n=t.split("/");for(let r of n)if(r==="."||r==="..")throw new Error(`Invalid mount point '${t}': contains '.' or '..' segments`)}validateMount(t){if(t==="/")throw new Error("Cannot mount at root '/'");for(let n of this.mounts.keys())if(n!==t){if(t.startsWith(`${n}/`))throw new Error(`Cannot mount at '${t}': inside existing mount '${n}'`);if(n.startsWith(`${t}/`))throw new Error(`Cannot mount at '${t}': would contain existing mount '${n}'`)}}routePath(t){X(t,"access");let n=U(t),r=null,s=0;for(let i of this.mounts.values()){let o=i.mountPoint;if(n===o)return{fs:i.filesystem,relativePath:"/"};n.startsWith(`${o}/`)&&o.length>s&&(r=i,s=o.length)}if(r){let i=n.slice(s);return{fs:r.filesystem,relativePath:i||"/"}}return{fs:this.baseFs,relativePath:n}}getChildMountPoints(t){let n=U(t),r=n==="/"?"/":`${n}/`,s=[];for(let i of this.mounts.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!s.includes(a)&&s.push(a)}return s}async readFile(t,n){let{fs:r,relativePath:s}=this.routePath(t);return r.readFile(s,n)}async readFileBytes(t){let{fs:n,relativePath:r}=this.routePath(t);return Cn(n,r)}async readFileBuffer(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readFileBuffer(r)}async writeFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.writeFile(i,n,r)}async appendFile(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.appendFile(i,n,r)}async exists(t){let n=U(t);if(this.mounts.has(n)||this.getChildMountPoints(n).length>0)return!0;let{fs:s,relativePath:i}=this.routePath(t);return s.exists(i)}async stat(t){let n=U(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.stat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:pt,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.stat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:pt,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.stat(o)}async lstat(t){let n=U(t),r=this.mounts.get(n);if(r)try{return await r.filesystem.lstat("/")}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:pt,size:0,mtime:new Date}}if(this.getChildMountPoints(n).length>0)try{return await this.baseFs.lstat(n)}catch{return{isFile:!1,isDirectory:!0,isSymbolicLink:!1,mode:pt,size:0,mtime:new Date}}let{fs:i,relativePath:o}=this.routePath(t);return i.lstat(o)}async mkdir(t,n){let r=U(t);if(this.mounts.has(r)){if(n?.recursive)return;throw new N("EEXIST",`directory already exists, mkdir '${t}'`)}if(this.getChildMountPoints(r).length>0&&n?.recursive)return;let{fs:i,relativePath:o}=this.routePath(t);return i.mkdir(o,n)}async readdir(t){let n=U(t),r=new Set,s=null,{fs:i,relativePath:o}=this.routePath(t);try{let l=await i.readdir(o);for(let c of l)r.add(c)}catch(l){if(!yn(l,"ENOENT"))throw l;s=l}let a=this.getChildMountPoints(n);for(let l of a)r.add(l);if(r.size===0&&s&&!this.mounts.has(n))throw s;return Array.from(r).sort()}async rm(t,n){let r=U(t);if(this.mounts.has(r))throw new N("EBUSY",`mount point, cannot remove '${t}'`);if(this.getChildMountPoints(r).length>0)throw new N("EBUSY",`contains mount points, cannot remove '${t}'`);let{fs:i,relativePath:o}=this.routePath(t);return i.rm(o,n)}async cp(t,n,r){if((await this.stat(t)).isDirectory&&Lt(t,n))throw new N("EINVAL",`cannot copy '${t}' into itself, '${n}'`);let i=this.routePath(t),o=this.routePath(n);return i.fs===o.fs?i.fs.cp(i.relativePath,o.relativePath,r):this.crossMountCopy(t,n,r)}async mv(t,n){let r=U(t);if((await this.stat(t)).isDirectory&&Lt(t,n))throw new N("EINVAL",`cannot move '${t}' into itself, '${n}'`);if(this.mounts.has(r))throw new N("EBUSY",`mount point, cannot move '${t}'`);let i=this.routePath(t),o=this.routePath(n);if(i.fs===o.fs)return i.fs.mv(i.relativePath,o.relativePath);await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return Dn(t,n)}getAllPaths(){let t=new Set;for(let n of this.baseFs.getAllPaths())t.add(n);for(let n of this.mounts.keys()){let r=n.split("/").filter(Boolean),s="";for(let o of r)s=`${s}/${o}`,t.add(s);let i=this.mounts.get(n);if(i)for(let o of i.filesystem.getAllPaths())o==="/"?t.add(n):t.add(`${n}${o}`)}return Array.from(t).sort()}async chmod(t,n){let r=U(t),s=this.mounts.get(r);if(s)return s.filesystem.chmod("/",n);let{fs:i,relativePath:o}=this.routePath(t);return i.chmod(o,n)}async symlink(t,n){let{fs:r,relativePath:s}=this.routePath(n);return r.symlink(t,s)}async link(t,n){let r=this.routePath(t),s=this.routePath(n);if(r.fs!==s.fs)throw new N("EXDEV",`cross-device link not permitted, link '${t}' -> '${n}'`);return r.fs.link(r.relativePath,s.relativePath)}async readlink(t){let{fs:n,relativePath:r}=this.routePath(t);return n.readlink(r)}async realpath(t){let n=U(t);if(this.mounts.get(n))return n;let{fs:s,relativePath:i}=this.routePath(t),o=await s.realpath(i);for(let[a,l]of this.mounts)if(n===a||n.startsWith(`${a}/`))return o==="/"?a:`${a}${o}`;return o}async crossMountCopy(t,n,r){let s=await this.lstat(t);if(s.isFile){let i=await this.readFileBuffer(t);await this.writeFile(n,i),await this.chmod(n,s.mode)}else if(s.isDirectory){if(!r?.recursive)throw new Error(`cp: ${t} is a directory (not copied)`);await this.mkdir(n,{recursive:!0});let i=await this.readdir(t);for(let o of i){let a=Tt(t,o),l=Tt(n,o);await this.crossMountCopy(a,l,r)}}else if(s.isSymbolicLink){let i=await this.readlink(t);await this.symlink(i,n)}}async utimes(t,n,r){let{fs:s,relativePath:i}=this.routePath(t);return s.utimes(i,n,r)}};var hs="/dev/fd",nu=63,sh=10,tu=nu-sh+1,eo=class extends At{isLiveDescriptor;constructor(t){super(),this.isLiveDescriptor=t}assertLiveDescriptor(t,n){this.isLiveDescriptor(t)||this.refuse(t,n)}refuse(t,n){throw new N("EROFS",`read-only file system, ${n} '${hs}${t}'`)}async writeFile(t,n,r){return this.assertLiveDescriptor(t,"write"),super.writeFile(t,n,r)}async appendFile(t,n,r){return this.assertLiveDescriptor(t,"append"),super.appendFile(t,n,r)}async rm(t,n){return this.assertLiveDescriptor(t,"rm"),super.rm(t,n)}async mkdir(t,n){this.refuse(t,"mkdir")}async cp(t,n){this.refuse(n,"cp")}async mv(t,n){this.refuse(n,"mv")}async symlink(t,n){this.refuse(n,"symlink")}async link(t,n){this.refuse(n,"link")}async chmod(t,n){this.refuse(t,"chmod")}async utimes(t,n,r){this.refuse(t,"utimes")}};function ih(e){let t=new eo(n=>ru(e).some(r=>r.path===`${hs}${n}`));e.fs=new mr({base:e.fs,mounts:[{mountPoint:hs,filesystem:t}]}),e.state.processSubstitutionFsMounted=!0}async function oh(e,t,n){try{await e.fs.writeFile(t,n,"binary");return}catch(r){if(e.state.processSubstitutionFsMounted)throw r;ih(e)}await e.fs.writeFile(t,n,"binary")}async function ah(e,t){try{await e.fs.rm(t,{force:!0})}catch{}}function ru(e){let t=e.state.processSubstitutions;if(t)return t;let n=[];return e.state.processSubstitutions=n,n}async function su(e,t,n){let r=e.substitutionDepth??0,s=e.limits.maxSubstitutionDepth;if(r>=s)throw new P(`Process substitution nesting limit exceeded (${s})`,"substitution_depth");let i=e.substitutionDepth,o=new Map(e.state.env),a=it(e.state.arrays),l=e.state.cwd,c=e.state.bashPid,u=e.state.suppressVerbose,f=e.state.groupStdin,d=e.state.lastExitCode,p=e.state.env.get("?"),h=e.state.lastSubstitutionExitCode;e.substitutionDepth=r+1,e.state.bashPid=e.state.nextVirtualPid++,e.state.suppressVerbose=!0,n!==void 0&&(e.state.groupStdin=n);let y;try{y=await e.executeScript(t)}catch(E){if(E instanceof P)throw E;if(E instanceof q)return{stdout:E.stdout,stderr:E.stderr,exitCode:E.exitCode};throw E}finally{e.substitutionDepth=i,e.state.env=o,e.state.arrays=a,e.state.cwd=l,e.state.bashPid=c,e.state.suppressVerbose=u,e.state.groupStdin=f,e.state.lastExitCode=d,e.state.lastSubstitutionExitCode=h,p!==void 0?e.state.env.set("?",p):e.state.env.delete("?")}return y}async function iu(e,t){let n=ru(e);if(n.length>=tu)throw new P(`Process substitution limit exceeded (${tu} concurrent)`,"file_descriptors");let r="";if(t.direction==="input"){let o=await su(e,t.body,void 0);if(o.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+o.stderr),r=Bt(o),r.length>e.limits.maxStringLength)throw new P(`process substitution: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")}let s=nu-n.length,i=`${hs}/${s}`;n.push({fd:s,path:i,direction:t.direction,body:t.body});try{await oh(e,i,r)}catch(o){throw n.pop(),o}return i}function ou(e){return e.state.processSubstitutions?.length??0}var lh={stdout:"",stderr:""};async function to(e,t){let n=e.state.processSubstitutions;if(!n||n.length<=t)return lh;let r="",s="";for(;n.length>t;){let i=n[n.length-1],o="";if(i.direction==="output")try{o=await Cn(e.fs,i.path)}catch{}if(await ah(e,i.path),n.pop(),i.direction==="output"){let a=await su(e,i.body,o);r+=Bt(a),s+=a.stderr}}return{stdout:r,stderr:s}}function rn(e,t,n){if(e.length>t)throw new P(`${n}: string length limit exceeded (${t} bytes)`,"string_length")}async function wt(e,t,n=!1){let r=[];for(let s of t)r.push(await tt(e,s,n));return r.join("")}function ch(e){return eu(e)}function lu(e){if(e.parts.length===0)return!0;for(let t of e.parts)if(!ch(t))return!1;return!0}function uh(e,t,n=!1){let r=Jc(t);if(r!==null)return r;switch(t.type){case"TildeExpansion":return n?t.user===null?"~":`~${t.user}`:(e.coverage?.hit("bash:expansion:tilde"),t.user===null?e.state.env.get("HOME")??"/home/user":t.user==="root"?"/root":`~${t.user}`);case"Glob":return Ki(e,t.pattern);default:return null}}async function ie(e,t){return ro(e,t)}async function cu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped")n.push(Bn(r.value));else if(r.type==="SingleQuoted")n.push(r.value);else if(r.type==="DoubleQuoted"){let s=await wt(e,r.parts);n.push(s)}else if(r.type==="TildeExpansion"){let s=await tt(e,r);n.push(Bn(s))}else n.push(await tt(e,r));return n.join("")}async function uu(e,t){let n=[];for(let r of t.parts)if(r.type==="Escaped"){let s=r.value;"()|*?[]".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="SingleQuoted")n.push(et(r.value));else if(r.type==="DoubleQuoted"){let s=await wt(e,r.parts);n.push(et(s))}else n.push(await tt(e,r));return n.join("")}async function fu(e,t){let n=[];for(let r of t.parts)if(r.type==="SingleQuoted")n.push(et(r.value));else if(r.type==="Escaped"){let s=r.value;"*?[]\\()|".includes(s)?n.push(`\\${s}`):n.push(s)}else if(r.type==="DoubleQuoted"){let s=await wt(e,r.parts);n.push(et(s))}else r.type==="Glob"?wc(r.pattern)?n.push(await bc(e,r.pattern)):n.push(Ki(e,r.pattern)):r.type==="Literal"?n.push(r.value):n.push(await tt(e,r));return n.join("")}function ys(e){for(let t of e)if(t.type==="BraceExpansion"||t.type==="DoubleQuoted"&&ys(t.parts))return!0;return!1}var au=1e5;async function du(e,t,n={count:0}){let r=()=>{n.count++,e.executionScope.consumeLimited("brace_operations",1,Math.min(au,e.limits.maxBraceExpansionResults),"brace expansion")},s=(o,a)=>{if(o.length>=e.limits.maxBraceExpansionResults)throw new P(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),o.push(a)},i=[[]];for(let o of t)if(o.type==="BraceExpansion"){let a=[],l=!1,c="";for(let d of o.items)if(d.type==="Range"){let p=Zi(d.start,d.end,d.step,d.startStr,d.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(p.expanded)for(let h of p.expanded)s(a,h);else{l=!0,c=p.literal;break}}else{let p=await du(e,d.word.parts,n);for(let h of p){let y=[];for(let E of h)typeof E=="string"?y.push(E):y.push(await tt(e,E));s(a,y.join(""))}}if(l){for(let d of i)r(),d.push(c);continue}if(i.length*a.length>e.limits.maxBraceExpansionResults||n.count>au)throw new P(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");let f=[];for(let d of i)for(let p of a){if(f.length>=e.limits.maxBraceExpansionResults)throw new P(`brace expansion result limit exceeded (${e.limits.maxBraceExpansionResults})`,"array_elements");r(),f.push([...d,p])}i=f}else for(let a of i)r(),a.push(o);return i}async function pu(e,t){let n=t.parts;if(!ys(n))return[await ie(e,t)];let r=await du(e,n),s=[];for(let i of r){let o=[];for(let a of i)typeof a=="string"?o.push(a):o.push(await tt(e,a));s.push(Xi(e,o.join("")))}return s}function fh(){return{expandWordAsync:ro,expandWordForGlobbing:fu,expandWordWithBracesAsync:pu,expandWordPartsAsync:wt,expandPart:tt,expandParameterAsync:ms,hasBraceExpansion:ys,evaluateArithmetic:Y,buildIfsCharClassPattern:Ql,smartWordSplit:Yc}}async function Et(e,t){return Qc(e,t,fh())}function dh(e){for(let t of e){if(t.type==="ParameterExpansion")return t.parameter;if(t.type==="Literal")return t.value}return""}function no(e,t){if(Number.parseInt(e.state.env.get("#")||"0",10)<2)return!1;function r(s){for(let i of s)if(i.type==="DoubleQuoted"){for(let o of i.parts)if(o.type==="ParameterExpansion"&&o.parameter==="@"&&!o.operation)return!0}return!1}return r(t.parts)}async function hu(e,t){if(no(e,t))return{error:`bash: $@: ambiguous redirect
108
+ `};let n=t.parts,{hasQuoted:r}=dr(n);if(ys(n)&&(await pu(e,t)).length>1)return{error:`bash: ${n.map(p=>p.type==="Literal"?p.value:p.type==="BraceExpansion"?`{${p.items.map(y=>{if(y.type==="Range"){let E=y.step?`..${y.step}`:"";return`${y.startStr??y.start}..${y.endStr??y.end}${E}`}return y.word.parts.map(E=>E.type==="Literal"?E.value:"").join("")}).join(",")}}`:"").join("")}: ambiguous redirect
109
+ `};let s=await ro(e,t),{hasParamExpansion:i,hasCommandSub:o}=dr(n);if((i||o)&&!r&&!Re(e.state.env)){let f=ve(e.state.env);if(fe(s,f,e.limits.maxArrayElements).length>1)return{error:`bash: $${dh(n)}: ambiguous redirect
110
+ `}}if(r||e.state.options.noglob||n.some(f=>f.type==="ProcessSubstitution"))return{target:s};let l=await fu(e,t);if(!Ct(l,e.state.shoptOptions.extglob))return{target:s};let c=new Yt(e.fs,e.state.cwd,e.state.env,{globstar:e.state.shoptOptions.globstar,nullglob:e.state.shoptOptions.nullglob,failglob:e.state.shoptOptions.failglob,dotglob:e.state.shoptOptions.dotglob,extglob:e.state.shoptOptions.extglob,globskipdots:e.state.shoptOptions.globskipdots,maxGlobOperations:e.limits.maxGlobOperations,consumeOperation:()=>e.executionScope.consumeLimited("glob_operations",1,e.limits.maxGlobOperations,"glob expansion")}),u=await c.expand(l);return u.length===0?c.hasFailglob()?{error:`bash: no match: ${s}
111
111
  `}:{target:s}:u.length===1?{target:u[0]}:{error:`bash: ${s}: ambiguous redirect
112
- `}}async function Hi(e,t){let n=t.parts,r=n.length;if(r===1){let o=await et(e,n[0]);return en(o,e.limits.maxStringLength,"word expansion"),o}let s=[];for(let o=0;o<r;o++)s.push(await et(e,n[o]));let i=s.join("");return en(i,e.limits.maxStringLength,"word expansion"),i}async function et(e,t,n=!1){if(t.type==="ParameterExpansion")return ls(e,t,n);let r=Kp(e,t,n);if(r!==null)return r;switch(t.type){case"DoubleQuoted":{let s=[];for(let i of t.parts)s.push(await et(e,i,!0));return s.join("")}case"CommandSubstitution":{let s=Gl(t.body);if(s)try{let p=await se(e,s.target),h=p.startsWith("/")?p:`${e.state.cwd}/${p}`,m=await e.fs.readFile(h);e.state.lastExitCode=0,e.state.env.set("?","0");let E=m.replace(/\n+$/,"");return en(E,e.limits.maxStringLength,"command substitution"),E}catch(p){if(p instanceof P)throw p;return e.state.lastExitCode=1,e.state.env.set("?","1"),""}let i=e.substitutionDepth??0,o=e.limits.maxSubstitutionDepth;if(i>=o)throw new P(`Command substitution nesting limit exceeded (${o})`,"substitution_depth");let a=e.substitutionDepth;e.substitutionDepth=i+1;let l=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let c=new Map(e.state.env),u=st(e.state.arrays),f=e.state.cwd,d=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let p=await e.executeScript(t.body),h=p.exitCode;e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.suppressVerbose=d,e.state.lastExitCode=h,e.state.env.set("?",String(h)),p.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+p.stderr),e.state.bashPid=l,e.substitutionDepth=a;let m=p.stdout.replace(/\n+$/,"");return en(m,e.limits.maxStringLength,"command substitution"),m}catch(p){if(e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.bashPid=l,e.substitutionDepth=a,e.state.suppressVerbose=d,p instanceof P)throw p;if(p instanceof U){e.state.lastExitCode=p.exitCode,e.state.env.set("?",String(p.exitCode)),p.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+p.stderr);let h=p.stdout.replace(/\n+$/,"");return en(h,e.limits.maxStringLength,"command substitution"),h}throw p}}case"ProcessSubstitution":return Qc(e,t);case"ArithmeticExpansion":{let s=t.expression.originalText;if(s&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(s)){let o=await jl(e,s),a=new j,l=re(a,o);return String(await X(e,l.expression,!0))}return String(await X(e,t.expression.expression,!0))}case"BraceExpansion":{let s=[];for(let i of t.items)if(i.type==="Range"){let o=Mi(i.start,i.end,i.step,i.startStr,i.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(o.expanded)s.push(...o.expanded);else return o.literal}else s.push(await se(e,i.word));return s.join(" ")}default:return""}}async function ls(e,t,n=!1){let{parameter:r}=t,{operation:s}=t,i=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(i){let[,d,p]=i;if(e.state.associativeArrays?.has(d)||p.includes("$(")||p.includes("`")||p.includes("${")){let m=await Ti(e,p);r=`${d}[${m}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)&&le(e,r)){let d=Fe(e,r);if(d&&d!==r){let p=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(p){let[,h,m]=p;if(e.state.associativeArrays?.has(h)||m.includes("$(")||m.includes("`")||m.includes("${")){let S=await Ti(e,m);r=`${h}[${S}]`}}}}let o=s&&(s.type==="DefaultValue"||s.type==="AssignDefault"||s.type==="UseAlternative"||s.type==="ErrorIfUnset"),a=await ie(e,r,!o);if(!s)return a;let l=!await xt(e,r),{isEmpty:c,effectiveValue:u}=ac(e,r,a,n),f={value:a,isUnset:l,isEmpty:c,effectiveValue:u,inDoubleQuotes:n};switch(s.type){case"DefaultValue":return Zl(e,s,f,yt);case"AssignDefault":return Ql(e,r,s,f,yt);case"ErrorIfUnset":return Kl(e,r,s,f,yt);case"UseAlternative":return Xl(e,s,f,yt);case"PatternRemoval":{let d=await Yl(e,a,s,yt,et);return en(d,e.limits.maxStringLength,"pattern removal"),d}case"PatternReplacement":{let d=await Jl(e,a,s,yt,et);return en(d,e.limits.maxStringLength,"pattern replacement"),d}case"Length":return ec(e,r,a);case"LengthSliceError":throw new Ke(r);case"BadSubstitution":throw new Ke(s.text);case"Substring":return tc(e,r,a,s);case"CaseModification":{let d=await nc(e,a,s,yt,ls);return en(d,e.limits.maxStringLength,"case modification"),d}case"Transform":return rc(e,r,a,l,s);case"Indirection":return sc(e,r,a,l,s,ls,n);case"ArrayKeys":return ic(e,s);case"VarNamePrefix":return oc(e,s);default:return a}}function ou(){return{visited:new Set,depth:0}}function Jp(e,t,n){switch(n){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":if(t===0)throw new ae("division by 0");return Math.trunc(e/t);case"%":if(t===0)throw new ae("division by 0");return e%t;case"**":if(t<0)throw new ae("exponent less than 0");return e**t;case"<<":return e<<t;case">>":return e>>t;case"<":return e<t?1:0;case"<=":return e<=t?1:0;case">":return e>t?1:0;case">=":return e>=t?1:0;case"==":return e===t?1:0;case"!=":return e!==t?1:0;case"&":return e&t;case"|":return e|t;case"^":return e^t;case",":return t;default:return 0}}function iu(e,t,n){switch(n){case"=":return t;case"+=":return e+t;case"-=":return e-t;case"*=":return e*t;case"/=":return t!==0?Math.trunc(e/t):0;case"%=":return t!==0?e%t:0;case"<<=":return e<<t;case">>=":return e>>t;case"&=":return e&t;case"|=":return e|t;case"^=":return e^t;default:return t}}function eh(e,t){switch(t){case"-":return-e;case"+":return+e;case"!":return e===0?1:0;case"~":return~e;default:return e}}async function th(e,t){let n=e.state.env.get(t);if(n!==void 0)return n;let r=oe(e,t,0);return r!==void 0?r:await ie(e,t)}async function nh(e,t,n){if(!t)return 0;let r=Number.parseInt(t,10);if(!Number.isNaN(r)&&/^-?\d+$/.test(t.trim()))return r;let s=t.trim();if(!s)return 0;let i=new j,{expr:o,pos:a}=Ln(i,s,0);if(a<s.length){let l=s.slice(a).trim(),c=l.split(/\s+/)[0]||l;throw new ae(`syntax error in expression (error token is "${c}")`,"","")}return await Bn(e,o,!1,n)}async function us(e,t,n,r){if(r.depth>100)throw new ae("maximum variable indirection depth exceeded");if(r.visited.has(t))throw new ae(`arithmetic variable cycle detected at ${t}`);r.visited.add(t),r.depth++;try{return await nh(e,n,r)}finally{r.depth--,r.visited.delete(t)}}async function Zi(e,t,n){if(n.depth>100)throw new ae("maximum variable indirection depth exceeded");if(n.visited.has(t))throw new ae(`arithmetic variable cycle detected at ${t}`);n.visited.add(t),n.depth++;try{let r=await th(e,t);if(!r)return 0;let s=Number.parseInt(r,10);if(!Number.isNaN(s)&&/^-?\d+$/.test(r.trim()))return s;let i=r.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return await Zi(e,i,n);let o=new j,{expr:a,pos:l}=Ln(o,i,0);if(l<i.length){let c=i.slice(l).trim(),u=c.split(/\s+/)[0]||c;throw new ae(`${i}: syntax error in expression (error token is "${u}")`)}return await Bn(e,a,!1,n)}finally{n.depth--,n.visited.delete(t)}}async function fs(e,t){if(t.startsWith("#")){let f=t.slice(1),d=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(d){let h=d[1],m=G(e,h);return String(m.length)}let p=e.state.env.get(f)||"";return String(p.length)}if(t.startsWith("!")){let f=t.slice(1),d=e.state.env.get(f)||"";return e.state.env.get(d)||""}let n=[":-",":=",":?",":+","-","=","?","+"],r=-1,s="";for(let f of n){let d=t.indexOf(f);d>0&&(r===-1||d<r)&&(r=d,s=f)}if(r===-1)return await ie(e,t);let i=t.slice(0,r),o=t.slice(r+s.length),a=e.state.env.get(i),l=a===void 0,c=a==="",u=s.startsWith(":");switch(s){case":-":case"-":return l||u&&c?o:a||"";case":=":case"=":return l||u&&c?(e.state.env.set(i,o),o):a||"";case":+":case"+":return!(l||u&&c)?o:"";case":?":case"?":{if(l||u&&c)throw new Error(o||`${i}: parameter null or not set`);return a||""}default:return a||""}}async function X(e,t,n=!1){return Bn(e,t,n,ou())}async function Bn(e,t,n,r){let s=(i,o=n)=>Bn(e,i,o,r);switch(t.type){case"ArithNumber":if(Number.isNaN(t.value))throw new ae("value too great for base");return t.value;case"ArithVariable":return await Zi(e,t.name,r);case"ArithSpecialVar":{let o=(await ie(e,t.name)).trim();if(!o)return 0;let a=Number.parseInt(o,10);if(!Number.isNaN(a)&&/^-?\d+$/.test(o))return a;let l=new j,{expr:c}=Ln(l,o,0);return await s(c)}case"ArithNested":return await s(t.expression);case"ArithCommandSubst":{if(e.execFn){let i=await e.execFn(t.command,{signal:e.state.signal});i.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+i.stderr);let o=i.stdout.trim();return Number.parseInt(o,10)||0}return 0}case"ArithBracedExpansion":{let i=await fs(e,t.content);return Number.parseInt(i,10)||0}case"ArithDynamicBase":{let i=await fs(e,t.baseExpr),o=Number.parseInt(i,10);if(o<2||o>64)return 0;let a=`${o}#${t.value}`;return nr(a)}case"ArithDynamicNumber":{let o=await fs(e,t.prefix)+t.suffix;return nr(o)}case"ArithArrayElement":{let i=e.state.associativeArrays?.has(t.array),o=async a=>{let l=oe(e,t.array,a);return l!==void 0?await us(e,`${t.array}[${a}]`,l,r):0};if(t.stringKey!==void 0)return await o(t.stringKey);if(i&&t.index?.type==="ArithVariable"&&!t.index.hasDollarPrefix)return await o(t.index.name);if(i&&t.index?.type==="ArithVariable"&&t.index.hasDollarPrefix){let a=await ie(e,t.index.name);return await o(a)}if(t.index){let a=await s(t.index);if(a<0){let u=G(e,t.array),f=e.state.currentLine;if(u.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
112
+ `}}async function ro(e,t){let n=t.parts,r=n.length;if(r===1){let o=await tt(e,n[0]);return rn(o,e.limits.maxStringLength,"word expansion"),o}let s=[];for(let o=0;o<r;o++)s.push(await tt(e,n[o]));let i=s.join("");return rn(i,e.limits.maxStringLength,"word expansion"),i}async function tt(e,t,n=!1){if(t.type==="ParameterExpansion")return ms(e,t,n);let r=uh(e,t,n);if(r!==null)return r;switch(t.type){case"DoubleQuoted":{let s=[];for(let i of t.parts)s.push(await tt(e,i,!0));return s.join("")}case"CommandSubstitution":{let s=nc(t.body);if(s)try{let p=await ie(e,s.target),h=p.startsWith("/")?p:`${e.state.cwd}/${p}`,y=await e.fs.readFile(h);tn(e.state,0);let E=y.replace(/\n+$/,"");return rn(E,e.limits.maxStringLength,"command substitution"),E}catch(p){if(p instanceof P)throw p;return tn(e.state,1),""}let i=e.substitutionDepth??0,o=e.limits.maxSubstitutionDepth;if(i>=o)throw new P(`Command substitution nesting limit exceeded (${o})`,"substitution_depth");let a=e.substitutionDepth;e.substitutionDepth=i+1;let l=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let c=new Map(e.state.env),u=it(e.state.arrays),f=e.state.cwd,d=e.state.suppressVerbose;e.state.suppressVerbose=!0;try{let p=await e.executeScript(t.body),h=p.exitCode;e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.suppressVerbose=d,tn(e.state,h),p.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+p.stderr),e.state.bashPid=l,e.substitutionDepth=a;let y=p.stdout.replace(/\n+$/,"");return rn(y,e.limits.maxStringLength,"command substitution"),y}catch(p){if(e.state.env=c,e.state.arrays=u,e.state.cwd=f,e.state.bashPid=l,e.substitutionDepth=a,e.state.suppressVerbose=d,p instanceof P)throw p;if(p instanceof q){tn(e.state,p.exitCode),p.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+p.stderr);let h=p.stdout.replace(/\n+$/,"");return rn(h,e.limits.maxStringLength,"command substitution"),h}throw p}}case"ProcessSubstitution":return iu(e,t);case"ArithmeticExpansion":{let s=t.expression.originalText;if(s&&/\$[a-zA-Z_][a-zA-Z0-9_]*(?![{[(])/.test(s)){let o=await tc(e,s),a=new H,l=se(a,o);return String(await Y(e,l.expression,!0))}return String(await Y(e,t.expression.expression,!0))}case"BraceExpansion":{let s=[];for(let i of t.items)if(i.type==="Range"){let o=Zi(i.start,i.end,i.step,i.startStr,i.endStr,{maxResults:e.limits.maxBraceExpansionResults,maxStringBytes:e.limits.maxStringLength});if(o.expanded)s.push(...o.expanded);else return o.literal}else s.push(await ie(e,i.word));return s.join(" ")}default:return""}}async function ms(e,t,n=!1){let{parameter:r}=t,{operation:s}=t,i=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(i){let[,d,p]=i;if(e.state.associativeArrays?.has(d)||p.includes("$(")||p.includes("`")||p.includes("${")){let y=await Hi(e,p);r=`${d}[${y}]`}}else if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)&&ce(e,r)){let d=Be(e,r);if(d&&d!==r){let p=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(p){let[,h,y]=p;if(e.state.associativeArrays?.has(h)||y.includes("$(")||y.includes("`")||y.includes("${")){let S=await Hi(e,y);r=`${h}[${S}]`}}}}let o=s&&(s.type==="DefaultValue"||s.type==="AssignDefault"||s.type==="UseAlternative"||s.type==="ErrorIfUnset"),a=await oe(e,r,!o);if(!s)return a;let l=!await Pt(e,r),{isEmpty:c,effectiveValue:u}=gc(e,r,a,n),f={value:a,isUnset:l,isEmpty:c,effectiveValue:u,inDoubleQuotes:n};switch(s.type){case"DefaultValue":return sc(e,s,f,wt);case"AssignDefault":return ic(e,r,s,f,wt);case"ErrorIfUnset":return oc(e,r,s,f,wt);case"UseAlternative":return ac(e,s,f,wt);case"PatternRemoval":{let d=await lc(e,a,s,wt,tt);return rn(d,e.limits.maxStringLength,"pattern removal"),d}case"PatternReplacement":{let d=await cc(e,a,s,wt,tt);return rn(d,e.limits.maxStringLength,"pattern replacement"),d}case"Length":return uc(e,r,a);case"LengthSliceError":throw new Xe(r);case"BadSubstitution":throw new Xe(s.text);case"Substring":return fc(e,r,a,s);case"CaseModification":{let d=await dc(e,a,s,wt,ms);return rn(d,e.limits.maxStringLength,"case modification"),d}case"Transform":return pc(e,r,a,l,s);case"Indirection":return hc(e,r,a,l,s,ms,n);case"ArrayKeys":return mc(e,s);case"VarNamePrefix":return yc(e,s);default:return a}}function yu(){return{visited:new Set,depth:0}}function ph(e,t,n){switch(n){case"+":return e+t;case"-":return e-t;case"*":return e*t;case"/":if(t===0)throw new le("division by 0");return Math.trunc(e/t);case"%":if(t===0)throw new le("division by 0");return e%t;case"**":if(t<0)throw new le("exponent less than 0");return e**t;case"<<":return e<<t;case">>":return e>>t;case"<":return e<t?1:0;case"<=":return e<=t?1:0;case">":return e>t?1:0;case">=":return e>=t?1:0;case"==":return e===t?1:0;case"!=":return e!==t?1:0;case"&":return e&t;case"|":return e|t;case"^":return e^t;case",":return t;default:return 0}}function mu(e,t,n){switch(n){case"=":return t;case"+=":return e+t;case"-=":return e-t;case"*=":return e*t;case"/=":return t!==0?Math.trunc(e/t):0;case"%=":return t!==0?e%t:0;case"<<=":return e<<t;case">>=":return e>>t;case"&=":return e&t;case"|=":return e|t;case"^=":return e^t;default:return t}}function hh(e,t){switch(t){case"-":return-e;case"+":return+e;case"!":return e===0?1:0;case"~":return~e;default:return e}}async function mh(e,t){let n=e.state.env.get(t);if(n!==void 0)return n;let r=ae(e,t,0);return r!==void 0?r:await oe(e,t)}async function yh(e,t,n){if(!t)return 0;let r=Number.parseInt(t,10);if(!Number.isNaN(r)&&/^-?\d+$/.test(t.trim()))return r;let s=t.trim();if(!s)return 0;let i=new H,{expr:o,pos:a}=Mn(i,s,0);if(a<s.length){let l=s.slice(a).trim(),c=l.split(/\s+/)[0]||l;throw new le(`syntax error in expression (error token is "${c}")`,"","")}return await zn(e,o,!1,n)}async function gs(e,t,n,r){if(r.depth>100)throw new le("maximum variable indirection depth exceeded");if(r.visited.has(t))throw new le(`arithmetic variable cycle detected at ${t}`);r.visited.add(t),r.depth++;try{return await yh(e,n,r)}finally{r.depth--,r.visited.delete(t)}}async function so(e,t,n){if(n.depth>100)throw new le("maximum variable indirection depth exceeded");if(n.visited.has(t))throw new le(`arithmetic variable cycle detected at ${t}`);n.visited.add(t),n.depth++;try{let r=await mh(e,t);if(!r)return 0;let s=Number.parseInt(r,10);if(!Number.isNaN(s)&&/^-?\d+$/.test(r.trim()))return s;let i=r.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return await so(e,i,n);let o=new H,{expr:a,pos:l}=Mn(o,i,0);if(l<i.length){let c=i.slice(l).trim(),u=c.split(/\s+/)[0]||c;throw new le(`${i}: syntax error in expression (error token is "${u}")`)}return await zn(e,a,!1,n)}finally{n.depth--,n.visited.delete(t)}}async function ws(e,t){if(t.startsWith("#")){let f=t.slice(1),d=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[[@*]\]$/);if(d){let h=d[1],y=G(e,h);return String(y.length)}let p=e.state.env.get(f)||"";return String(p.length)}if(t.startsWith("!")){let f=t.slice(1),d=e.state.env.get(f)||"";return e.state.env.get(d)||""}let n=[":-",":=",":?",":+","-","=","?","+"],r=-1,s="";for(let f of n){let d=t.indexOf(f);d>0&&(r===-1||d<r)&&(r=d,s=f)}if(r===-1)return await oe(e,t);let i=t.slice(0,r),o=t.slice(r+s.length),a=e.state.env.get(i),l=a===void 0,c=a==="",u=s.startsWith(":");switch(s){case":-":case"-":return l||u&&c?o:a||"";case":=":case"=":return l||u&&c?(e.state.env.set(i,o),o):a||"";case":+":case"+":return!(l||u&&c)?o:"";case":?":case"?":{if(l||u&&c)throw new Error(o||`${i}: parameter null or not set`);return a||""}default:return a||""}}async function Y(e,t,n=!1){return zn(e,t,n,yu())}async function zn(e,t,n,r){let s=(i,o=n)=>zn(e,i,o,r);switch(t.type){case"ArithNumber":if(Number.isNaN(t.value))throw new le("value too great for base");return t.value;case"ArithVariable":return await so(e,t.name,r);case"ArithSpecialVar":{let o=(await oe(e,t.name)).trim();if(!o)return 0;let a=Number.parseInt(o,10);if(!Number.isNaN(a)&&/^-?\d+$/.test(o))return a;let l=new H,{expr:c}=Mn(l,o,0);return await s(c)}case"ArithNested":return await s(t.expression);case"ArithCommandSubst":{if(e.execFn){let i=await e.execFn(t.command,{signal:e.state.signal});i.stderr&&(e.state.expansionStderr=(e.state.expansionStderr||"")+i.stderr);let o=i.stdout.trim();return Number.parseInt(o,10)||0}return 0}case"ArithBracedExpansion":{let i=await ws(e,t.content);return Number.parseInt(i,10)||0}case"ArithDynamicBase":{let i=await ws(e,t.baseExpr),o=Number.parseInt(i,10);if(o<2||o>64)return 0;let a=`${o}#${t.value}`;return lr(a)}case"ArithDynamicNumber":{let o=await ws(e,t.prefix)+t.suffix;return lr(o)}case"ArithArrayElement":{let i=e.state.associativeArrays?.has(t.array),o=async a=>{let l=ae(e,t.array,a);return l!==void 0?await gs(e,`${t.array}[${a}]`,l,r):0};if(t.stringKey!==void 0)return await o(t.stringKey);if(i&&t.index?.type==="ArithVariable"&&!t.index.hasDollarPrefix)return await o(t.index.name);if(i&&t.index?.type==="ArithVariable"&&t.index.hasDollarPrefix){let a=await oe(e,t.index.name);return await o(a)}if(t.index){let a=await s(t.index);if(a<0){let u=G(e,t.array),f=e.state.currentLine;if(u.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
113
113
  `,0;let p=Math.max(...u.map(([h])=>typeof h=="number"?h:0))+1+a;if(p<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${t.array}: bad array subscript
114
- `,0;a=p}let l=`${t.array}[${a}]`,c=oe(e,t.array,a);if(c!==void 0)return us(e,l,c,r);if(a===0){let u=e.state.env.get(t.array);if(u!==void 0)return us(e,t.array,u,r)}if(e.state.options.nounset&&!(e.state.env.has(t.array)||Pe(e,t.array)))throw new Ve(`${t.array}[${a}]`);return 0}return 0}case"ArithDoubleSubscript":throw new ae("double subscript","","");case"ArithNumberSubscript":throw new ae(`${t.number}${t.errorToken}: syntax error: invalid arithmetic operator (error token is "${t.errorToken}")`);case"ArithSyntaxError":throw new ae(t.message,"","",!0);case"ArithSingleQuote":{if(n)throw new ae(`syntax error: operand expected (error token is "'${t.content}'")`);return t.value}case"ArithBinary":{if(t.operator==="||")return await s(t.left)||await s(t.right)?1:0;if(t.operator==="&&")return await s(t.left)&&await s(t.right)?1:0;let i=await s(t.left),o=await s(t.right);return Jp(i,o,t.operator)}case"ArithUnary":{let i=await s(t.operand);if(t.operator==="++"||t.operator==="--"){if(t.operand.type==="ArithVariable"){let o=t.operand.name,a=Number.parseInt(await ie(e,o),10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}if(t.operand.type==="ArithArrayElement"){let o=t.operand.array,a=e.state.associativeArrays?.has(o),l;if(t.operand.stringKey!==void 0)l=t.operand.stringKey;else if(a&&t.operand.index?.type==="ArithVariable"&&!t.operand.index.hasDollarPrefix)l=t.operand.index.name;else if(a&&t.operand.index?.type==="ArithVariable"&&t.operand.index.hasDollarPrefix)l=await ie(e,t.operand.index.name);else if(t.operand.index){let f=await s(t.operand.index);l=String(f)}else return i;let c=Number.parseInt(oe(e,o,l)||"0",10)||0,u=t.operator==="++"?c+1:c-1;return q(e,o,l,String(u),a?"associative":"indexed"),t.prefix?u:c}if(t.operand.type==="ArithConcat"){let o="";for(let a of t.operand.parts)o+=await Mn(e,a,n,r);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}}if(t.operand.type==="ArithDynamicElement"){let o="";if(t.operand.nameExpr.type==="ArithConcat")for(let a of t.operand.nameExpr.parts)o+=await Mn(e,a,n,r);else t.operand.nameExpr.type==="ArithVariable"&&(o=t.operand.nameExpr.hasDollarPrefix?await ie(e,t.operand.nameExpr.name):t.operand.nameExpr.name);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=await s(t.operand.subscript),l=Number.parseInt(oe(e,o,a)||"0",10)||0,c=t.operator==="++"?l+1:l-1;return q(e,o,a,String(c)),t.prefix?c:l}}return i}return eh(i,t.operator)}case"ArithTernary":return await s(t.condition)?await s(t.consequent):await s(t.alternate);case"ArithAssignment":{let i=t.variable,o=i,a;if(t.stringKey!==void 0)a=t.stringKey;else if(t.subscript){let d=e.state.associativeArrays?.has(i);if(d&&t.subscript.type==="ArithVariable"&&!t.subscript.hasDollarPrefix)a=t.subscript.name;else if(d&&t.subscript.type==="ArithVariable"&&t.subscript.hasDollarPrefix)a=await ie(e,t.subscript.name)||"\\";else if(d){let p=await s(t.subscript);a=String(p)}else{let p=await s(t.subscript);if(p<0){let h=G(e,i);h.length>0&&(p=Math.max(...h.map(([E])=>typeof E=="number"?E:0))+1+p)}a=String(p)}}let l=a===void 0?e.state.env.get(o):oe(e,i,a),c=Number.parseInt(l||"0",10)||0,u=await s(t.value),f=iu(c,u,t.operator);return a===void 0?e.state.env.set(o,String(f)):q(e,i,a,String(f),e.state.associativeArrays?.has(i)?"associative":"indexed"),f}case"ArithGroup":return await s(t.expression);case"ArithConcat":{let i="";for(let o of t.parts)i+=await Mn(e,o,n,r);return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)?await Zi(e,i,r):Number.parseInt(i,10)||0}case"ArithDynamicAssignment":{let i="";if(t.target.type==="ArithConcat")for(let u of t.target.parts)i+=await Mn(e,u,n,r);else t.target.type==="ArithVariable"&&(i=t.target.hasDollarPrefix?await ie(e,t.target.name):t.target.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=i;if(t.subscript){let u=await s(t.subscript);o=`${i}_${u}`}let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=await s(t.value),c=iu(a,l,t.operator);return e.state.env.set(o,String(c)),c}case"ArithDynamicElement":{let i="";if(t.nameExpr.type==="ArithConcat")for(let c of t.nameExpr.parts)i+=await Mn(e,c,n,r);else t.nameExpr.type==="ArithVariable"&&(i=t.nameExpr.hasDollarPrefix?await ie(e,t.nameExpr.name):t.nameExpr.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=await s(t.subscript),a=`${i}_${o}`,l=e.state.env.get(a);return l!==void 0?us(e,a,l,r):0}default:return 0}}async function Mn(e,t,n=!1,r=ou()){switch(t.type){case"ArithNumber":return String(t.value);case"ArithSingleQuote":return String(await Bn(e,t,n,r));case"ArithVariable":return t.hasDollarPrefix?await ie(e,t.name):t.name;case"ArithSpecialVar":return await ie(e,t.name);case"ArithBracedExpansion":return await fs(e,t.content);case"ArithCommandSubst":return e.execFn?(await e.execFn(t.command,{signal:e.state.signal})).stdout.trim():"0";case"ArithConcat":{let s="";for(let i of t.parts)s+=await Mn(e,i,n,r);return s}default:return String(await Bn(e,t,n,r))}}async function au(e,t){let n="",r=0;for(let A of t.parts){let k=A.type==="Literal"?A.value:"\0",v=M(k);if(v>e.limits.maxStringLength-r)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n+=k,r+=v}let s=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!s||!n.endsWith(")"))return null;let i=s[1],o=[],a=[],l=!1,c="",u=0,f=0,d=!1,p=!0,h=A=>{let k=M(A);if(k>e.limits.maxStringLength-f-u)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");c+=A,u+=k},m=(A,k=!1)=>{if(o.length>=e.limits.maxArrayElements)throw new P(`array assignment element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let v=M(A);if(v>e.limits.maxStringLength-f)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");o.push(A),a.push(k),f+=v},E=()=>{m(c,p),c="",u=0,d=!1,p=!0};for(let A of t.parts)if(A.type==="Literal"){let k=A.value;if(!l){let v=k.indexOf("=(");v!==-1&&(l=!0,k=k.slice(v+2))}if(l){k.endsWith(")")&&(k=k.slice(0,-1));for(let v of k)/\s/.test(v)?(c||d)&&E():h(v)}}else if(l)if(A.type==="BraceExpansion")if(/^\[.+\]=/.test(c))h(On({type:"Word",parts:[A]}));else{(c||d)&&E();let v=await gt(e,{type:"Word",parts:[A]});for(let $ of v.values)m($)}else{(A.type==="SingleQuoted"||A.type==="DoubleQuoted"||A.type==="Escaped")&&(d=!0),p=!1;let k=await se(e,{type:"Word",parts:[A]});h(k)}(c||d)&&E();let S=o.splice(0),g=a.splice(0);f=0;for(let A=0;A<S.length;A++){let k=S[A];if(!g[A]){m(k);continue}let v=k.match(/^(\[[^\]]+\]=)(.*)$/s);if(v){let $=Jt(e,v[2]);k=v[1]+$}if(k.includes("{")&&k.includes("}")){let $=new j().parseWordFromString(k,!1,!1);if($.parts.some(R=>R.type==="BraceExpansion")){let R=await gt(e,$);for(let x of R.values)m(x);continue}}m(k)}let y=[`${i}=(`],b=M(y[0]);for(let A=0;A<o.length;A++){let k=o[A],v;/^\[.+\]=/.test(k)?v=k:k===""?v="''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(k)&&!k.startsWith("'")&&!k.startsWith('"')?v=`'${k.replace(/'/g,"'\\''")}'`:v=k;let $=`${A>0?" ":""}${v}`,R=M($);if(R+1>e.limits.maxStringLength-b)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");y.push($),b+=R}return y.push(")"),y.join("")}async function lu(e,t){let n=-1,r=-1,s=!1;for(let m=0;m<t.parts.length;m++){let E=t.parts[m];if(E.type==="Literal"){let S=E.value.indexOf("+=");if(S!==-1){let y=E.value.slice(0,S);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)){n=m,r=S,s=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=S,s=!0;break}}let g=E.value.indexOf("=");if(g!==-1&&(g===0||E.value[g-1]!=="+")){let y=E.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(y)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(y)){n=m,r=g;break}}}}if(n===-1)return null;let i=t.parts.slice(0,n),o=t.parts[n];if(o.type!=="Literal")return null;let a=s?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(n+1),f="";for(let m of i)f+=await se(e,{type:"Word",parts:[m]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},p=d.parts.length>0?await se(e,d):"";return`${f}${s?"+=":"="}${p}`}var rh=["tar","yq","xan","sqlite3","python3","python"];function cu(e){return rh.includes(e)}var te=Object.freeze({stdout:"",stderr:"",exitCode:0,internalStdinConsumed:0});function J(e=""){return{stdout:e,stderr:"",exitCode:0}}function _(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function L(e,t,n){return{stdout:e,stderr:t,exitCode:n}}function ge(e){return{stdout:"",stderr:"",exitCode:e?0:1,internalStdinConsumed:0}}function tn(e,t,n="",r=""){throw new P(e,t,n,r)}function uu(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new P(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function Qi(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Wt;return te}if(t.length>1)throw new U(1,"",`bash: break: too many arguments
115
- `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new U(128,"",`bash: break: ${t[0]}: numeric argument required
116
- `);n=r}throw new Ze(n)}async function Ki(e,t){let n,r=!1,s=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")s=!1,i++;else if(t[i]==="-P")s=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?n=e.state.env.get("HOME")||"/":o[0]==="-"?(n=e.state.previousDir,r=!0):n=o[0],!n.startsWith("/")&&!n.startsWith("./")&&!n.startsWith("../")&&n!=="."&&n!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(p=>p);for(let p of d){let h=p.startsWith("/")?`${p}/${n}`:`${e.state.cwd}/${p}/${n}`;try{if((await e.fs.stat(h)).isDirectory){n=h,r=!0;break}}catch{}}}}let l=(n.startsWith("/")?n:`${e.state.cwd}/${n}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return _(`bash: cd: ${n}: Not a directory
117
- `)}catch{return _(`bash: cd: ${n}: No such file or directory
118
- `)}}let u=c||"/";if(s)try{u=await e.fs.realpath(u)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=u,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),J(r?`${u}
119
- `:"")}function Xi(e,t){return e.fs.resolvePath(e.state.cwd,t)}var sh=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function ds(e){return sh.includes(e)}async function ps(e,t,n){let r=Xi(e,n);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(r);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var ih=["-nt","-ot","-ef"];function hs(e){return ih.includes(e)}async function ms(e,t,n,r){let s=Xi(e,n),i=Xi(e,r);switch(t){case"-nt":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return o!==null&&(a===null||o.mtime>a.mtime)}case"-ot":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return a!==null&&(o===null||o.mtime<a.mtime)}case"-ef":try{let[o,a]=await Promise.all([e.fs.realpath(s),e.fs.realpath(i)]);if(o===a)return!0;let[l,c]=await Promise.all([e.fs.stat(s),e.fs.stat(i)]);return l.dev!==void 0&&l.ino!==void 0&&c.dev!==void 0&&c.ino!==void 0?l.dev===c.dev&&l.ino===c.ino:l.identity&&c.identity?l.identity===c.identity:!1}catch{return!1}default:return!1}}var oh=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function ys(e){return oh.has(e)}function gs(e,t,n){switch(e){case"-eq":return t===n;case"-ne":return t!==n;case"-lt":return t<n;case"-le":return t<=n;case"-gt":return t>n;case"-ge":return t>=n}}function fr(e){return e==="="||e==="=="||e==="!="}function ws(e,t,n,r=!1,s=!1,i=!1,o=256){if(r){let l=Wn(t,n,s,i,o);return e==="!="?!l:l}if(s){let l=t.toLowerCase()===n.toLowerCase();return e==="!="?!l:l}let a=t===n;return e==="!="?!a:a}var ah=new Set(["-z","-n"]);function Es(e){return ah.has(e)}function bs(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Ss(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let r=n[1],s=n[2];if(e.state.associativeArrays?.has(r)){let a=s;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),Gt(e,r,a)}let o;try{let a=new j,l=re(a,s);o=await X(e,l.expression)}catch{if(/^-?\d+$/.test(s))o=Number.parseInt(s,10);else{let a=e.state.env.get(s);o=a?Number.parseInt(a,10):0}}if(o<0){let a=be(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
114
+ `,0;a=p}let l=`${t.array}[${a}]`,c=ae(e,t.array,a);if(c!==void 0)return gs(e,l,c,r);if(a===0){let u=e.state.env.get(t.array);if(u!==void 0)return gs(e,t.array,u,r)}if(e.state.options.nounset&&!(e.state.env.has(t.array)||Ce(e,t.array)))throw new Ue(`${t.array}[${a}]`);return 0}return 0}case"ArithDoubleSubscript":throw new le("double subscript","","");case"ArithNumberSubscript":throw new le(`${t.number}${t.errorToken}: syntax error: invalid arithmetic operator (error token is "${t.errorToken}")`);case"ArithSyntaxError":throw new le(t.message,"","",!0);case"ArithSingleQuote":{if(n)throw new le(`syntax error: operand expected (error token is "'${t.content}'")`);return t.value}case"ArithBinary":{if(t.operator==="||")return await s(t.left)||await s(t.right)?1:0;if(t.operator==="&&")return await s(t.left)&&await s(t.right)?1:0;let i=await s(t.left),o=await s(t.right);return ph(i,o,t.operator)}case"ArithUnary":{let i=await s(t.operand);if(t.operator==="++"||t.operator==="--"){if(t.operand.type==="ArithVariable"){let o=t.operand.name,a=Number.parseInt(await oe(e,o),10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}if(t.operand.type==="ArithArrayElement"){let o=t.operand.array,a=e.state.associativeArrays?.has(o),l;if(t.operand.stringKey!==void 0)l=t.operand.stringKey;else if(a&&t.operand.index?.type==="ArithVariable"&&!t.operand.index.hasDollarPrefix)l=t.operand.index.name;else if(a&&t.operand.index?.type==="ArithVariable"&&t.operand.index.hasDollarPrefix)l=await oe(e,t.operand.index.name);else if(t.operand.index){let f=await s(t.operand.index);l=String(f)}else return i;let c=Number.parseInt(ae(e,o,l)||"0",10)||0,u=t.operator==="++"?c+1:c-1;return j(e,o,l,String(u),a?"associative":"indexed"),t.prefix?u:c}if(t.operand.type==="ArithConcat"){let o="";for(let a of t.operand.parts)o+=await Vn(e,a,n,r);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=t.operator==="++"?a+1:a-1;return e.state.env.set(o,String(l)),t.prefix?l:a}}if(t.operand.type==="ArithDynamicElement"){let o="";if(t.operand.nameExpr.type==="ArithConcat")for(let a of t.operand.nameExpr.parts)o+=await Vn(e,a,n,r);else t.operand.nameExpr.type==="ArithVariable"&&(o=t.operand.nameExpr.hasDollarPrefix?await oe(e,t.operand.nameExpr.name):t.operand.nameExpr.name);if(o&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){let a=await s(t.operand.subscript),l=Number.parseInt(ae(e,o,a)||"0",10)||0,c=t.operator==="++"?l+1:l-1;return j(e,o,a,String(c)),t.prefix?c:l}}return i}return hh(i,t.operator)}case"ArithTernary":return await s(t.condition)?await s(t.consequent):await s(t.alternate);case"ArithAssignment":{let i=t.variable,o=i,a;if(t.stringKey!==void 0)a=t.stringKey;else if(t.subscript){let d=e.state.associativeArrays?.has(i);if(d&&t.subscript.type==="ArithVariable"&&!t.subscript.hasDollarPrefix)a=t.subscript.name;else if(d&&t.subscript.type==="ArithVariable"&&t.subscript.hasDollarPrefix)a=await oe(e,t.subscript.name)||"\\";else if(d){let p=await s(t.subscript);a=String(p)}else{let p=await s(t.subscript);if(p<0){let h=G(e,i);h.length>0&&(p=Math.max(...h.map(([E])=>typeof E=="number"?E:0))+1+p)}a=String(p)}}let l=a===void 0?e.state.env.get(o):ae(e,i,a),c=Number.parseInt(l||"0",10)||0,u=await s(t.value),f=mu(c,u,t.operator);return a===void 0?e.state.env.set(o,String(f)):j(e,i,a,String(f),e.state.associativeArrays?.has(i)?"associative":"indexed"),f}case"ArithGroup":return await s(t.expression);case"ArithConcat":{let i="";for(let o of t.parts)i+=await Vn(e,o,n,r);return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)?await so(e,i,r):Number.parseInt(i,10)||0}case"ArithDynamicAssignment":{let i="";if(t.target.type==="ArithConcat")for(let u of t.target.parts)i+=await Vn(e,u,n,r);else t.target.type==="ArithVariable"&&(i=t.target.hasDollarPrefix?await oe(e,t.target.name):t.target.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=i;if(t.subscript){let u=await s(t.subscript);o=`${i}_${u}`}let a=Number.parseInt(e.state.env.get(o)||"0",10)||0,l=await s(t.value),c=mu(a,l,t.operator);return e.state.env.set(o,String(c)),c}case"ArithDynamicElement":{let i="";if(t.nameExpr.type==="ArithConcat")for(let c of t.nameExpr.parts)i+=await Vn(e,c,n,r);else t.nameExpr.type==="ArithVariable"&&(i=t.nameExpr.hasDollarPrefix?await oe(e,t.nameExpr.name):t.nameExpr.name);if(!i||!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i))return 0;let o=await s(t.subscript),a=`${i}_${o}`,l=e.state.env.get(a);return l!==void 0?gs(e,a,l,r):0}default:return 0}}async function Vn(e,t,n=!1,r=yu()){switch(t.type){case"ArithNumber":return String(t.value);case"ArithSingleQuote":return String(await zn(e,t,n,r));case"ArithVariable":return t.hasDollarPrefix?await oe(e,t.name):t.name;case"ArithSpecialVar":return await oe(e,t.name);case"ArithBracedExpansion":return await ws(e,t.content);case"ArithCommandSubst":return e.execFn?(await e.execFn(t.command,{signal:e.state.signal})).stdout.trim():"0";case"ArithConcat":{let s="";for(let i of t.parts)s+=await Vn(e,i,n,r);return s}default:return String(await zn(e,t,n,r))}}async function gu(e,t){let n="",r=0;for(let A of t.parts){let k=A.type==="Literal"?A.value:"\0",v=B(k);if(v>e.limits.maxStringLength-r)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");n+=k,r+=v}let s=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!s||!n.endsWith(")"))return null;let i=s[1],o=[],a=[],l=!1,c="",u=0,f=0,d=!1,p=!0,h=A=>{let k=B(A);if(k>e.limits.maxStringLength-f-u)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");c+=A,u+=k},y=(A,k=!1)=>{if(o.length>=e.limits.maxArrayElements)throw new P(`array assignment element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let v=B(A);if(v>e.limits.maxStringLength-f)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");o.push(A),a.push(k),f+=v},E=()=>{y(c,p),c="",u=0,d=!1,p=!0};for(let A of t.parts)if(A.type==="Literal"){let k=A.value;if(!l){let v=k.indexOf("=(");v!==-1&&(l=!0,k=k.slice(v+2))}if(l){k.endsWith(")")&&(k=k.slice(0,-1));for(let v of k)/\s/.test(v)?(c||d)&&E():h(v)}}else if(l)if(A.type==="BraceExpansion")if(/^\[.+\]=/.test(c))h(Tn({type:"Word",parts:[A]}));else{(c||d)&&E();let v=await Et(e,{type:"Word",parts:[A]});for(let $ of v.values)y($)}else{(A.type==="SingleQuoted"||A.type==="DoubleQuoted"||A.type==="Escaped")&&(d=!0),p=!1;let k=await ie(e,{type:"Word",parts:[A]});h(k)}(c||d)&&E();let S=o.splice(0),g=a.splice(0);f=0;for(let A=0;A<S.length;A++){let k=S[A];if(!g[A]){y(k);continue}let v=k.match(/^(\[[^\]]+\]=)(.*)$/s);if(v){let $=nn(e,v[2]);k=v[1]+$}if(k.includes("{")&&k.includes("}")){let $=new H().parseWordFromString(k,!1,!1);if($.parts.some(D=>D.type==="BraceExpansion")){let D=await Et(e,$);for(let x of D.values)y(x);continue}}y(k)}let m=[`${i}=(`],b=B(m[0]);for(let A=0;A<o.length;A++){let k=o[A],v;/^\[.+\]=/.test(k)?v=k:k===""?v="''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(k)&&!k.startsWith("'")&&!k.startsWith('"')?v=`'${k.replace(/'/g,"'\\''")}'`:v=k;let $=`${A>0?" ":""}${v}`,D=B($);if(D+1>e.limits.maxStringLength-b)throw new P(`array assignment string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");m.push($),b+=D}return m.push(")"),m.join("")}async function wu(e,t){let n=-1,r=-1,s=!1;for(let y=0;y<t.parts.length;y++){let E=t.parts[y];if(E.type==="Literal"){let S=E.value.indexOf("+=");if(S!==-1){let m=E.value.slice(0,S);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(m)){n=y,r=S,s=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(m)){n=y,r=S,s=!0;break}}let g=E.value.indexOf("=");if(g!==-1&&(g===0||E.value[g-1]!=="+")){let m=E.value.slice(0,g);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(m)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(m)){n=y,r=g;break}}}}if(n===-1)return null;let i=t.parts.slice(0,n),o=t.parts[n];if(o.type!=="Literal")return null;let a=s?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(n+1),f="";for(let y of i)f+=await ie(e,{type:"Word",parts:[y]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},p=d.parts.length>0?await ie(e,d):"";return`${f}${s?"+=":"="}${p}`}var gh=["tar","yq","xan","sqlite3","python3","python"];function Eu(e){return gh.includes(e)}var ne=Object.freeze({stdout:"",stderr:"",exitCode:0,internalStdinConsumed:0});function ee(e=""){return{stdout:e,stderr:"",exitCode:0}}function L(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function T(e,t,n){return{stdout:e,stderr:t,exitCode:n}}function we(e){return{stdout:"",stderr:"",exitCode:e?0:1,internalStdinConsumed:0}}function sn(e,t,n="",r=""){throw new P(e,t,n,r)}function bu(e){let t=e.state.fileDescriptors;if(t&&t.size>=e.limits.maxFileDescriptors)throw new P(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors")}function io(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new zt;return ne}if(t.length>1)throw new q(1,"",`bash: break: too many arguments
115
+ `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new q(128,"",`bash: break: ${t[0]}: numeric argument required
116
+ `);n=r}throw new Qe(n)}async function oo(e,t){let n,r=!1,s=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")s=!1,i++;else if(t[i]==="-P")s=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?n=e.state.env.get("HOME")||"/":o[0]==="-"?(n=e.state.previousDir,r=!0):n=o[0],!n.startsWith("/")&&!n.startsWith("./")&&!n.startsWith("../")&&n!=="."&&n!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(p=>p);for(let p of d){let h=p.startsWith("/")?`${p}/${n}`:`${e.state.cwd}/${p}/${n}`;try{if((await e.fs.stat(h)).isDirectory){n=h,r=!0;break}}catch{}}}}let l=(n.startsWith("/")?n:`${e.state.cwd}/${n}`).split("/").filter(f=>f&&f!=="."),c="";for(let f of l)if(f==="..")c=c.split("/").slice(0,-1).join("/")||"/";else{c=c?`${c}/${f}`:`/${f}`;try{if(!(await e.fs.stat(c)).isDirectory)return L(`bash: cd: ${n}: Not a directory
117
+ `)}catch{return L(`bash: cd: ${n}: No such file or directory
118
+ `)}}let u=c||"/";if(s)try{u=await e.fs.realpath(u)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=u,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),ee(r?`${u}
119
+ `:"")}function ao(e,t){return e.fs.resolvePath(e.state.cwd,t)}var wh=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function Es(e){return wh.includes(e)}async function bs(e,t,n){let r=ao(e,n);switch(t){case"-e":case"-a":return e.fs.exists(r);case"-f":return await e.fs.exists(r)?(await e.fs.stat(r)).isFile:!1;case"-d":return await e.fs.exists(r)?(await e.fs.stat(r)).isDirectory:!1;case"-r":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&256)!==0:!1;case"-w":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&128)!==0:!1;case"-x":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&64)!==0:!1;case"-s":return await e.fs.exists(r)?(await e.fs.stat(r)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(r)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&512)!==0:!1;case"-g":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(r)?((await e.fs.stat(r)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(r);case"-b":return!1;case"-c":return["/dev/null","/dev/zero","/dev/random","/dev/urandom","/dev/tty","/dev/stdin","/dev/stdout","/dev/stderr"].includes(r);case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var Eh=["-nt","-ot","-ef"];function Ss(e){return Eh.includes(e)}async function As(e,t,n,r){let s=ao(e,n),i=ao(e,r);switch(t){case"-nt":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return o!==null&&(a===null||o.mtime>a.mtime)}case"-ot":{let[o,a]=await Promise.all([e.fs.stat(s).catch(()=>null),e.fs.stat(i).catch(()=>null)]);return a!==null&&(o===null||o.mtime<a.mtime)}case"-ef":try{let[o,a]=await Promise.all([e.fs.realpath(s),e.fs.realpath(i)]);if(o===a)return!0;let[l,c]=await Promise.all([e.fs.stat(s),e.fs.stat(i)]);return l.dev!==void 0&&l.ino!==void 0&&c.dev!==void 0&&c.ino!==void 0?l.dev===c.dev&&l.ino===c.ino:l.identity&&c.identity?l.identity===c.identity:!1}catch{return!1}default:return!1}}var bh=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function vs(e){return bh.has(e)}function ks(e,t,n){switch(e){case"-eq":return t===n;case"-ne":return t!==n;case"-lt":return t<n;case"-le":return t<=n;case"-gt":return t>n;case"-ge":return t>=n}}function gr(e){return e==="="||e==="=="||e==="!="}function xs(e,t,n,r=!1,s=!1,i=!1,o=256){if(r){let l=Un(t,n,s,i,o);return e==="!="?!l:l}if(s){let l=t.toLowerCase()===n.toLowerCase();return e==="!="?!l:l}let a=t===n;return e==="!="?!a:a}var Sh=new Set(["-z","-n"]);function $s(e){return Sh.has(e)}function Ps(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Cs(e,t){let n=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(n){let r=n[1],s=n[2];if(e.state.associativeArrays?.has(r)){let a=s;return(a.startsWith("'")&&a.endsWith("'")||a.startsWith('"')&&a.endsWith('"'))&&(a=a.slice(1,-1)),a=a.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(l,c)=>e.state.env.get(c)||""),Qt(e,r,a)}let o;try{let a=new H,l=se(a,s);o=await Y(e,l.expression)}catch{if(/^-?\d+$/.test(s))o=Number.parseInt(s,10);else{let a=e.state.env.get(s);o=a?Number.parseInt(a,10):0}}if(o<0){let a=Se(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
120
120
  `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
121
- `,!1}return Gt(e,r,o)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?vt(e,t).length>0:be(e,t).length>0}async function nn(e,t){switch(t.type){case"CondBinary":{let n=await se(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),s;if(t.operator==="=~")if(r){let i=await se(e,t.right);s=Tn(i)}else s=await Jc(e,t.right);else fr(t.operator)&&!r?s=await eu(e,t.right):s=await se(e,t.right);if(fr(t.operator)){let i=e.state.shoptOptions.nocasematch;return ws(t.operator,n,s,!r,i,!0,e.limits.maxCallDepth)}if(ys(t.operator))return gs(t.operator,await du(e,n),await du(e,s));if(hs(t.operator))return ms(e,t.operator,n,s);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=dh(s),l=he(o,i?"i":"").match(n);if(ye(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)q(e,"BASH_REMATCH",c,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return n<s;case">":return n>s;default:return!1}}case"CondUnary":{let n=await se(e,t.operand);return ds(t.operator)?ps(e,t.operator,n):Es(t.operator)?bs(t.operator,n):t.operator==="-v"?await Ss(e,n):t.operator==="-o"?Ji(e,n):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await se(e,t.operand.expression.word)})`!=="":!await nn(e,t.operand);case"CondAnd":return await nn(e,t.left)?await nn(e,t.right):!1;case"CondOr":return await nn(e,t.left)?!0:await nn(e,t.right);case"CondGroup":return await nn(e,t.expression);case"CondWord":return await se(e,t.word)!=="";default:return!1}}async function dr(e,t){if(t.length===0)return L("","",1);if(t.length===1)return ge(!!t[0]);if(t.length===2){let r=t[0],s=t[1];return r==="("?_(`test: '(' without matching ')'
122
- `,2):ds(r)?ge(await ps(e,r,s)):Es(r)?ge(bs(r,s)):r==="!"?ge(!s):r==="-v"?ge(await Ss(e,s)):r==="-o"?ge(Ji(e,s)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?_(`test: ${r}: unary operator expected
123
- `,2):L("","",1)}if(t.length===3){let r=t[0],s=t[1],i=t[2];if(fr(s))return ge(ws(s,r,i));if(ys(s)){let o=As(r),a=As(i);return!o.valid||!a.valid?L("","",2):ge(gs(s,o.value,a.value))}if(hs(s))return ge(await ms(e,s,r,i));switch(s){case"-a":return ge(r!==""&&i!=="");case"-o":return ge(r!==""||i!=="");case">":return ge(r>i);case"<":return ge(r<i)}if(r==="!"){let o=await dr(e,[s,i]);return L("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return ge(s!=="")}if(t.length===4){if(t[0]==="!"){let r=await dr(e,t.slice(1));return L("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return dr(e,[t[1],t[2]])}let n=await hu(e,t,0);return n.pos<t.length?_(`test: too many arguments
124
- `,2):ge(n.value)}async function hu(e,t,n){return lh(e,t,n)}async function lh(e,t,n){let{value:r,pos:s}=await fu(e,t,n);for(;t[s]==="-o";){let i=await fu(e,t,s+1);r=r||i.value,s=i.pos}return{value:r,pos:s}}async function fu(e,t,n){let{value:r,pos:s}=await Yi(e,t,n);for(;t[s]==="-a";){let i=await Yi(e,t,s+1);r=r&&i.value,s=i.pos}return{value:r,pos:s}}async function Yi(e,t,n){let r=e.executionScope.enterDepth("test_expression",e.limits.maxCallDepth,"test expression");try{if(t[n]==="!"){let{value:s,pos:i}=await Yi(e,t,n+1);return{value:!s,pos:i}}return ch(e,t,n)}finally{r.release()}}async function ch(e,t,n){let r=t[n];if(r==="("){let{value:i,pos:o}=await hu(e,t,n+1);return{value:i,pos:t[o]===")"?o+1:o}}let s=t[n+1];if(fr(s)){let i=r,o=t[n+2]??"";return{value:ws(s,i,o),pos:n+3}}if(ys(s)){let i=As(r),o=As(t[n+2]??"0");return!i.valid||!o.valid?{value:!1,pos:n+3}:{value:gs(s,i.value,o.value),pos:n+3}}if(hs(s)){let i=r,o=t[n+2]??"";return{value:await ms(e,s,i,o),pos:n+3}}if(ds(r)){let i=t[n+1]??"";return{value:await ps(e,r,i),pos:n+2}}if(Es(r)){let i=t[n+1]??"";return{value:bs(r,i),pos:n+2}}if(r==="-v"){let i=t[n+1]??"";return{value:await Ss(e,i),pos:n+2}}if(r==="-o"){let i=t[n+1]??"";return{value:Ji(e,i),pos:n+2}}return{value:r!==void 0&&r!=="",pos:n+1}}function Wn(e,t,n=!1,r=!1,s=256){r&&uh(t,s);let i=`^${mu(t,r)}$`;return he(i,n?"is":"s").test(e)}function uh(e,t){let n=0,r=[];for(let s=0;s<e.length;s++){if(e[s]==="\\"){s++;continue}if(e[s]==="("){let i=s>0&&"@*+?!".includes(e[s-1]);if(r.push(i),i&&n++,n>t)throw new P(`extglob maximum depth (${t}) exceeded`,"recursion")}else e[s]===")"&&r.length>0&&r.pop()&&n--}}function mu(e,t){let n="";for(let r=0;r<e.length;r++){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=yu(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=gu(o),l=a.map(u=>mu(u,t)),c=l.length>0?l.join("|"):"(?:)";if(s==="@")n+=`(?:${c})`;else if(s==="*")n+=`(?:${c})*`;else if(s==="+")n+=`(?:${c})+`;else if(s==="?")n+=`(?:${c})?`;else if(s==="!")if(i<e.length-1){let f=a.map(p=>wu(p,t));if(f.every(p=>p!==null)&&f.every(p=>p===f[0])&&f[0]!==null){let p=f[0];if(p===0)n+="(?:.+)";else{let h=[];p>0&&h.push(`.{0,${p-1}}`),h.push(`.{${p+1},}`),h.push(`(?!(?:${c})).{${p}}`),n+=`(?:${h.join("|")})`}}else n+=`(?:(?!(?:${c})).)*?`}else n+=`(?!(?:${c})$).*`;r=i;continue}}if(s==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?n+=`\\${i}`:n+=i,r++}else n+="\\\\";else if(s==="*")n+=".*";else if(s==="?")n+=".";else if(s==="["){let i=e.indexOf("]",r+1);i!==-1?(n+=e.slice(r,i+1),r=i):n+="\\["}else/[\\^$.|+(){}]/.test(s)?n+=`\\${s}`:n+=s}return n}function yu(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function gu(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function wu(e,t){let n=0,r=0;for(;r<e.length;){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=yu(e,r+1);if(i!==-1){if(s==="@"){let o=e.slice(r+2,i),l=gu(o).map(c=>wu(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){n+=l[0],r=i+1;continue}return null}return null}}if(s==="*")return null;if(s==="?"){n+=1,r++;continue}if(s==="["){let i=e.indexOf("]",r+1);if(i!==-1){n+=1,r=i+1;continue}n+=1,r++;continue}if(s==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}function Ji(e,t){let r=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return r?r():!1}async function du(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return pu(t);try{let n=new j,r=re(n,t);return await X(e,r.expression)}catch{return pu(t)}}function fh(e,t){let n=0;for(let r of e){let s;if(r>="0"&&r<="9")s=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")s=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")s=r.charCodeAt(0)-65+36;else if(r==="@")s=62;else if(r==="_")s=63;else return Number.NaN;if(s>=t)return Number.NaN;n=n*t+s}return n}function pu(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let n,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let s=Number.parseInt(r[1],10);s>=2&&s<=64?n=fh(r[2],s):n=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?n=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?n=Number.parseInt(e,8):n=Number.parseInt(e,10);return Number.isNaN(n)&&(n=0),t?-n:n}function As(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let n=Number.parseInt(e,10);return Number.isNaN(n)?{value:0,valid:!1}:{value:t?-n:n,valid:!0}}function dh(e){let t="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length)t+=e[n]+e[n+1],n+=2;else if(e[n]==="["){let r=ph(e,n);t+=r.converted,n=r.endIndex}else t+=e[n],n++;return t}function ph(e,t){let n=t+1,r="[";n<e.length&&(e[n]==="^"||e[n]==="!")&&(r+="^",n++);let s=!1;n<e.length&&e[n]==="]"&&(s=!0,n++);let i=!1;n<e.length&&e[n]==="["&&n+1<e.length&&e[n+1]!==":"&&(i=!0,n++);let o="",a=!1;for(;n<e.length;){let l=e[n];if(l==="]"){a=!0,n++;break}if(l==="["&&n+1<e.length&&e[n+1]===":"){let c=e.indexOf(":]",n+2);if(c!==-1){let u=e.slice(n+2,c);o+=hh(u),n=c+2;continue}}if(l==="["&&n+1<e.length){let c=e[n+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,n+2);if(f!==-1){let d=e.slice(n+2,f);o+=d,n=f+2;continue}}}if(l==="\\"&&n+1<e.length){o+=l+e[n+1],n+=2;continue}o+=l,n++}return a?(s&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:n}):{converted:"\\[",endIndex:t+1}}function hh(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function eo(e,t,n){if(n&&e.length>=n.maxElements)throw new P(`array element limit exceeded (${n.maxElements})`,"array_elements");e.push(t)}function Tt(e,t){if(t&&M(e)>t.maxStringBytes)throw new P(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r="",s=!1,i=!1,o=!1,a=!1;for(let l of e){if(o){r+=l,o=!1,a=!0;continue}if(l==="\\"){o=!0;continue}if(l==="'"&&!i){s||(a=!0),s=!s;continue}if(l==='"'&&!s){i||(a=!0),i=!i;continue}if((l===" "||l===" "||l===`
125
- `)&&!s&&!i){a&&(eo(n,r,t),r="",a=!1);continue}r+=l,a=!0}return a&&eo(n,r,t),n}function vs(e,t){if(t&&M(e)>t.maxStringBytes)throw new P(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r++;if(r>=e.length)break;if(e[r]!=="["){r++;continue}r++;let s="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)s+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&e[r]!=="]"&&e[r]!=="=";)s+=e[r],r++;for(;r<e.length&&e[r]!=="]";)r++;if(e[r]==="]"&&r++,e[r]!=="=")continue;r++;let i="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)e[r]==="\\"&&r+1<e.length&&r++,i+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&!/\s/.test(e[r]);)i+=e[r],r++;eo(n,[s,i],t)}return n}function Eu(e,t){let n=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(n)return{name:n[1],isArray:!0,arrayElements:Tt(n[2],t)};let r=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(r)return{name:r[1],isArray:!1,arrayIndex:r[2],value:r[3]};if(e.includes("=")){let s=e.indexOf("=");return{name:e.slice(0,s),isArray:!1,value:e.slice(s+1)}}return{name:e,isArray:!1}}async function mh(e,t){try{let n=new j,r=re(n,t);return await X(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}async function bu(e,t,n={}){let{name:r,isArray:s,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=n;if(c){let u=ce(e,r);if(u)return u}if(s&&i){e.executionScope.consumeWork(i.length,"array assignment");let u=ve(e,r),f=u?Te(u):void 0,d=e.state.env.get(r);try{ye(e,r);for(let p=0;p<i.length;p++)q(e,r,p,i[p]);e.state.env.delete(r)}catch(p){throw e.state.arrays??=new Map,f?e.state.arrays.set(r,f):e.state.arrays.delete(r),d===void 0?e.state.env.delete(r):e.state.env.set(r,d),p}}else if(a!==void 0&&o!==void 0){let u=await mh(e,a);q(e,r,u,o)}else o!==void 0&&e.state.env.set(r,o);return l&&Ge(e,r),null}function rn(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function to(e,t){return e.state.localVarDepth?.get(t)}function ks(e,t){e.state.localVarDepth?.delete(t)}function Su(e,t,n){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:n,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function xs(e,t){let n=e.state.localVarStack?.get(t);if(!(!n||n.length===0))return n.pop()}function Au(e,t){if(e.state.localVarStack)for(let[n,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(n)}}var no="__file__:",ro="__file_append__:",oo="__rw__:",so="__dupout__:",io="__dupin__:",we=3;function yh(e){let t=e.slice(oo.length),n=t.indexOf(":");if(n===-1)return null;let r=Number.parseInt(t.slice(0,n),10);if(Number.isNaN(r)||r<0)return null;let s=n+1,i=t.slice(s,s+r),o=t.slice(s+r+1),a=o.indexOf(":");if(a===-1)return null;let l=Number.parseInt(o.slice(0,a),10);return Number.isNaN(l)||l<0?null:{path:i,position:l,content:o.slice(a+1)}}function vu(e,t){let n=Number.parseInt(e.slice(t.length),10);return Number.isNaN(n)?null:n}function gh(e){if(e.startsWith(no))return{kind:"output",path:e.slice(no.length),append:!1};if(e.startsWith(ro))return{kind:"output",path:e.slice(ro.length),append:!0};if(e.startsWith(oo)){let t=yh(e);if(t)return{kind:"readwrite",...t}}if(e.startsWith(so)){let t=vu(e,so);if(t!==null)return{kind:"dup-out",sourceFd:t}}if(e.startsWith(io)){let t=vu(e,io);if(t!==null)return{kind:"dup-in",sourceFd:t}}return{kind:"input",content:e}}function ao(e){switch(e.kind){case"input":return e.content;case"output":return`${e.append?ro:no}${e.path}`;case"readwrite":return`${oo}${e.path.length}:${e.path}:${e.position}:${e.content}`;case"dup-out":return`${so}${e.sourceFd}`;case"dup-in":return`${io}${e.sourceFd}`;case"closed":throw new Error("Closed descriptors have no table encoding")}}function wh(e){return e.state.fileDescriptors??=new Map,e.state.fileDescriptors}function Eh(e,t,n){n?(e.state.inputFds??=new Set,e.state.inputFds.add(t)):e.state.inputFds?.delete(t)}function Vn(e,t){return e.state.fdAliases?.get(t)}function sn(e,t){return[...Vn(e,t)??[t]]}function ku(e,t){let n=Vn(e,t);if(n&&(n.delete(t),e.state.fdAliases?.delete(t),n.size<2))for(let r of n)e.state.fdAliases?.delete(r)}function lo(e,t,n){if(t===n)return;e.state.fdAliases??=new Map;let r=Vn(e,n)??new Set([n]);r.add(t);for(let s of r)e.state.fdAliases.set(s,r)}function $s(e,t){return e.state.fileDescriptors?.get(t)}function tt(e,t){let n=$s(e,t);if(n!==void 0)return e.state.inputFds?.has(t)?{kind:"input",content:n}:gh(n)}function vn(e,t){return e.state.fileDescriptors?.has(t)===!0}function co(e,t,n,r){let s=wh(e);s.has(t)||uu(e),s.set(t,n),Eh(e,t,r)}function Ps(e,t,n,r=!1){ku(e,t),co(e,t,n,r)}function at(e,t,n){Ps(e,t,ao(n),n.kind==="input")}function Ct(e,t){e.state.fileDescriptors?.delete(t),e.state.inputFds?.delete(t),ku(e,t)}function Cs(e,t,n){let r=$s(e,n);return r===void 0?!1:(Ps(e,t,r,e.state.inputFds?.has(n)===!0),lo(e,t,n),!0)}function uo(e,t,n){let r=$s(e,n);if(r===void 0)return!1;if(t===n)return!0;let s=e.state.inputFds?.has(n)===!0,i=[...Vn(e,n)??[]].filter(a=>a!==n);Ct(e,n),Ps(e,t,r,s);let o=i.find(a=>vn(e,a));return o!==void 0&&lo(e,t,o),!0}function Ns(e,t){let n=tt(e,t);if(n===void 0)return{error:"not-open"};switch(n.kind){case"input":return{content:n.content};case"readwrite":return{content:n.content.slice(n.position)};case"output":case"dup-out":return{error:"write-only"};case"dup-in":return{error:"not-open"};case"closed":return{error:"not-open"}}}function on(e,t,n){let r=tt(e,t);if(r===void 0)return;let s;if(r.kind==="input")s={kind:"input",content:r.content.slice(n)};else if(r.kind==="readwrite")s={...r,position:r.position+n};else return;let i=ao(s),o=s.kind==="input";for(let a of Vn(e,t)??[t])co(e,a,i,o)}async function fo(e,t,n,r,s){if(t.kind==="output")return await e.fs.appendFile(t.path,r,s),!0;let o=n.map(u=>tt(e,u)).find(u=>u?.kind==="readwrite")??t;if(o.kind!=="readwrite")return!1;let a=o.content.slice(0,o.position)+r+o.content.slice(o.position+r.length),l={...o,position:o.position+r.length,content:a};await e.fs.writeFile(o.path,a,s);let c=ao(l);for(let u of n)vn(e,u)&&co(e,u,c,!1);return!0}function an(e,t,n){if(t.has(n))return;let r=Vn(e,n);t.set(n,{raw:$s(e,n),isInput:e.state.inputFds?.has(n)===!0,aliases:r?[...r].filter(s=>s!==n):[]})}function Rs(e,t){let n=e.state.fileDescriptors;if(n)for(let[r,{raw:s,isInput:i,aliases:o}]of t){if(s===void 0){Ct(e,r);continue}Ps(e,r,s,i);let a=o.find(l=>n.has(l));a!==void 0&&lo(e,r,a)}}function po(e){switch(e.operator){case"<":case"<>":case"<<":case"<<-":case"<<<":case"<&":return e.fd??0;case">":case">>":case">|":case">&":return e.fd??1;default:return null}}function xu(e){if(e.fdVariable)return!1;let t=po(e);return t!==null&&t>=we}async function bh(e,t,n,r){try{if(!await e.fs.exists(t))return null;if((await e.fs.stat(t)).isDirectory)return`bash: ${n}: Is a directory
121
+ `,!1}return Qt(e,r,o)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?xt(e,t).length>0:Se(e,t).length>0}async function on(e,t){switch(t.type){case"CondBinary":{let n=await ie(e,t.left),r=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),s;if(t.operator==="=~")if(r){let i=await ie(e,t.right);s=Bn(i)}else s=await cu(e,t.right);else gr(t.operator)&&!r?s=await uu(e,t.right):s=await ie(e,t.right);if(gr(t.operator)){let i=e.state.shoptOptions.nocasematch;return xs(t.operator,n,s,!r,i,!0,e.limits.maxCallDepth)}if(vs(t.operator))return ks(t.operator,await Au(e,n),await Au(e,s));if(Ss(t.operator))return As(e,t.operator,n,s);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=$h(s),l=me(o,i?"i":"").match(n);if(ge(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)j(e,"BASH_REMATCH",c,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return n<s;case">":return n>s;default:return!1}}case"CondUnary":{let n=await ie(e,t.operand);return Es(t.operator)?bs(e,t.operator,n):$s(t.operator)?Ps(t.operator,n):t.operator==="-v"?await Cs(e,n):t.operator==="-o"?co(e,n):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await ie(e,t.operand.expression.word)})`!=="":!await on(e,t.operand);case"CondAnd":return await on(e,t.left)?await on(e,t.right):!1;case"CondOr":return await on(e,t.left)?!0:await on(e,t.right);case"CondGroup":return await on(e,t.expression);case"CondWord":return await ie(e,t.word)!=="";default:return!1}}async function qn(e,t){if(t.length===0)return T("","",1);if(t.length===1)return we(!!t[0]);if(t.length===2){let r=t[0],s=t[1];return r==="("?L(`test: '(' without matching ')'
122
+ `,2):Es(r)?we(await bs(e,r,s)):$s(r)?we(Ps(r,s)):r==="!"?we(!s):r==="-v"?we(await Cs(e,s)):r==="-o"?we(co(e,s)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?L(`test: ${r}: unary operator expected
123
+ `,2):T("","",1)}if(t.length===3){let r=t[0],s=t[1],i=t[2];if(gr(s))return we(xs(s,r,i));if(vs(s)){let o=Ns(r),a=Ns(i);return!o.valid||!a.valid?T("","",2):we(ks(s,o.value,a.value))}if(Ss(s))return we(await As(e,s,r,i));switch(s){case"-a":return we(r!==""&&i!=="");case"-o":return we(r!==""||i!=="");case">":return we(r>i);case"<":return we(r<i)}if(r==="!"){let o=await qn(e,[s,i]);return T("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return we(s!=="")}if(t.length===4){if(t[0]==="!"){let r=await qn(e,t.slice(1));return T("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return qn(e,[t[1],t[2]])}let n=await ku(e,t,0);return n.pos<t.length?L(`test: too many arguments
124
+ `,2):we(n.value)}async function ku(e,t,n){return Ah(e,t,n)}async function Ah(e,t,n){let{value:r,pos:s}=await Su(e,t,n);for(;t[s]==="-o";){let i=await Su(e,t,s+1);r=r||i.value,s=i.pos}return{value:r,pos:s}}async function Su(e,t,n){let{value:r,pos:s}=await lo(e,t,n);for(;t[s]==="-a";){let i=await lo(e,t,s+1);r=r&&i.value,s=i.pos}return{value:r,pos:s}}async function lo(e,t,n){let r=e.executionScope.enterDepth("test_expression",e.limits.maxCallDepth,"test expression");try{if(t[n]==="!"){let{value:s,pos:i}=await lo(e,t,n+1);return{value:!s,pos:i}}return vh(e,t,n)}finally{r.release()}}async function vh(e,t,n){let r=t[n];if(r==="("){let{value:i,pos:o}=await ku(e,t,n+1);return{value:i,pos:t[o]===")"?o+1:o}}let s=t[n+1];if(gr(s)){let i=r,o=t[n+2]??"";return{value:xs(s,i,o),pos:n+3}}if(vs(s)){let i=Ns(r),o=Ns(t[n+2]??"0");return!i.valid||!o.valid?{value:!1,pos:n+3}:{value:ks(s,i.value,o.value),pos:n+3}}if(Ss(s)){let i=r,o=t[n+2]??"";return{value:await As(e,s,i,o),pos:n+3}}if(Es(r)){let i=t[n+1]??"";return{value:await bs(e,r,i),pos:n+2}}if($s(r)){let i=t[n+1]??"";return{value:Ps(r,i),pos:n+2}}if(r==="-v"){let i=t[n+1]??"";return{value:await Cs(e,i),pos:n+2}}if(r==="-o"){let i=t[n+1]??"";return{value:co(e,i),pos:n+2}}return{value:r!==void 0&&r!=="",pos:n+1}}function Un(e,t,n=!1,r=!1,s=256){r&&kh(t,s);let i=`^${xu(t,r)}$`;return me(i,n?"is":"s").test(e)}function kh(e,t){let n=0,r=[];for(let s=0;s<e.length;s++){if(e[s]==="\\"){s++;continue}if(e[s]==="("){let i=s>0&&"@*+?!".includes(e[s-1]);if(r.push(i),i&&n++,n>t)throw new P(`extglob maximum depth (${t}) exceeded`,"recursion")}else e[s]===")"&&r.length>0&&r.pop()&&n--}}function xu(e,t){let n="";for(let r=0;r<e.length;r++){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=$u(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Pu(o),l=a.map(u=>xu(u,t)),c=l.length>0?l.join("|"):"(?:)";if(s==="@")n+=`(?:${c})`;else if(s==="*")n+=`(?:${c})*`;else if(s==="+")n+=`(?:${c})+`;else if(s==="?")n+=`(?:${c})?`;else if(s==="!")if(i<e.length-1){let f=a.map(p=>Cu(p,t));if(f.every(p=>p!==null)&&f.every(p=>p===f[0])&&f[0]!==null){let p=f[0];if(p===0)n+="(?:.+)";else{let h=[];p>0&&h.push(`.{0,${p-1}}`),h.push(`.{${p+1},}`),h.push(`(?!(?:${c})).{${p}}`),n+=`(?:${h.join("|")})`}}else n+=`(?:(?!(?:${c})).)*?`}else n+=`(?!(?:${c})$).*`;r=i;continue}}if(s==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?n+=`\\${i}`:n+=i,r++}else n+="\\\\";else if(s==="*")n+=".*";else if(s==="?")n+=".";else if(s==="["){let i=e.indexOf("]",r+1);i!==-1?(n+=e.slice(r,i+1),r=i):n+="\\["}else/[\\^$.|+(){}]/.test(s)?n+=`\\${s}`:n+=s}return n}function $u(e,t){let n=1,r=t+1;for(;r<e.length&&n>0;){let s=e[r];if(s==="\\"){r+=2;continue}if(s==="(")n++;else if(s===")"&&(n--,n===0))return r;r++}return-1}function Pu(e){let t=[],n="",r=0,s=0;for(;s<e.length;){let i=e[s];if(i==="\\"){n+=i,s+1<e.length?(n+=e[s+1],s+=2):s++;continue}i==="("?(r++,n+=i):i===")"?(r--,n+=i):i==="|"&&r===0?(t.push(n),n=""):n+=i,s++}return t.push(n),t}function Cu(e,t){let n=0,r=0;for(;r<e.length;){let s=e[r];if(t&&(s==="@"||s==="*"||s==="+"||s==="?"||s==="!")&&r+1<e.length&&e[r+1]==="("){let i=$u(e,r+1);if(i!==-1){if(s==="@"){let o=e.slice(r+2,i),l=Pu(o).map(c=>Cu(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){n+=l[0],r=i+1;continue}return null}return null}}if(s==="*")return null;if(s==="?"){n+=1,r++;continue}if(s==="["){let i=e.indexOf("]",r+1);if(i!==-1){n+=1,r=i+1;continue}n+=1,r++;continue}if(s==="\\"){n+=1,r+=2;continue}n+=1,r++}return n}function co(e,t){let r=new Map([["errexit",()=>e.state.options.errexit===!0],["nounset",()=>e.state.options.nounset===!0],["pipefail",()=>e.state.options.pipefail===!0],["xtrace",()=>e.state.options.xtrace===!0],["e",()=>e.state.options.errexit===!0],["u",()=>e.state.options.nounset===!0],["x",()=>e.state.options.xtrace===!0]]).get(t);return r?r():!1}async function Au(e,t){if(t=t.trim(),t==="")return 0;if(/^[+-]?(\d+#[a-zA-Z0-9@_]+|0[xX][0-9a-fA-F]+|0[0-7]+|\d+)$/.test(t))return vu(t);try{let n=new H,r=se(n,t);return await Y(e,r.expression)}catch{return vu(t)}}function xh(e,t){let n=0;for(let r of e){let s;if(r>="0"&&r<="9")s=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")s=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")s=r.charCodeAt(0)-65+36;else if(r==="@")s=62;else if(r==="_")s=63;else return Number.NaN;if(s>=t)return Number.NaN;n=n*t+s}return n}function vu(e){if(e=e.trim(),e==="")return 0;let t=!1;e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1));let n,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let s=Number.parseInt(r[1],10);s>=2&&s<=64?n=xh(r[2],s):n=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?n=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?n=Number.parseInt(e,8):n=Number.parseInt(e,10);return Number.isNaN(n)&&(n=0),t?-n:n}function Ns(e){if(e=e.trim(),e==="")return{value:0,valid:!0};let t=!1;if(e.startsWith("-")?(t=!0,e=e.slice(1)):e.startsWith("+")&&(e=e.slice(1)),!/^\d+$/.test(e))return{value:0,valid:!1};let n=Number.parseInt(e,10);return Number.isNaN(n)?{value:0,valid:!1}:{value:t?-n:n,valid:!0}}function $h(e){let t="",n=0;for(;n<e.length;)if(e[n]==="\\"&&n+1<e.length)t+=e[n]+e[n+1],n+=2;else if(e[n]==="["){let r=Ph(e,n);t+=r.converted,n=r.endIndex}else t+=e[n],n++;return t}function Ph(e,t){let n=t+1,r="[";n<e.length&&(e[n]==="^"||e[n]==="!")&&(r+="^",n++);let s=!1;n<e.length&&e[n]==="]"&&(s=!0,n++);let i=!1;n<e.length&&e[n]==="["&&n+1<e.length&&e[n+1]!==":"&&(i=!0,n++);let o="",a=!1;for(;n<e.length;){let l=e[n];if(l==="]"){a=!0,n++;break}if(l==="["&&n+1<e.length&&e[n+1]===":"){let c=e.indexOf(":]",n+2);if(c!==-1){let u=e.slice(n+2,c);o+=Ch(u),n=c+2;continue}}if(l==="["&&n+1<e.length){let c=e[n+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,n+2);if(f!==-1){let d=e.slice(n+2,f);o+=d,n=f+2;continue}}}if(l==="\\"&&n+1<e.length){o+=l+e[n+1],n+=2;continue}o+=l,n++}return a?(s&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:n}):{converted:"\\[",endIndex:t+1}}function Ch(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function uo(e,t,n){if(n&&e.length>=n.maxElements)throw new P(`array element limit exceeded (${n.maxElements})`,"array_elements");e.push(t)}function Mt(e,t){if(t&&B(e)>t.maxStringBytes)throw new P(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r="",s=!1,i=!1,o=!1,a=!1;for(let l of e){if(o){r+=l,o=!1,a=!0;continue}if(l==="\\"){o=!0;continue}if(l==="'"&&!i){s||(a=!0),s=!s;continue}if(l==='"'&&!s){i||(a=!0),i=!i;continue}if((l===" "||l===" "||l===`
125
+ `)&&!s&&!i){a&&(uo(n,r,t),r="",a=!1);continue}r+=l,a=!0}return a&&uo(n,r,t),n}function Rs(e,t){if(t&&B(e)>t.maxStringBytes)throw new P(`array assignment string limit exceeded (${t.maxStringBytes} bytes)`,"string_length");let n=[],r=0;for(;r<e.length;){for(;r<e.length&&/\s/.test(e[r]);)r++;if(r>=e.length)break;if(e[r]!=="["){r++;continue}r++;let s="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)s+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&e[r]!=="]"&&e[r]!=="=";)s+=e[r],r++;for(;r<e.length&&e[r]!=="]";)r++;if(e[r]==="]"&&r++,e[r]!=="=")continue;r++;let i="";if(e[r]==="'"||e[r]==='"'){let o=e[r];for(r++;r<e.length&&e[r]!==o;)e[r]==="\\"&&r+1<e.length&&r++,i+=e[r],r++;e[r]===o&&r++}else for(;r<e.length&&!/\s/.test(e[r]);)i+=e[r],r++;uo(n,[s,i],t)}return n}function Nu(e,t){let n=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(n)return{name:n[1],isArray:!0,arrayElements:Mt(n[2],t)};let r=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(r)return{name:r[1],isArray:!1,arrayIndex:r[2],value:r[3]};if(e.includes("=")){let s=e.indexOf("=");return{name:e.slice(0,s),isArray:!1,value:e.slice(s+1)}}return{name:e,isArray:!1}}async function Nh(e,t){try{let n=new H,r=se(n,t);return await Y(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}async function Ru(e,t,n={}){let{name:r,isArray:s,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=n;if(c){let u=ue(e,r);if(u)return u}if(s&&i){e.executionScope.consumeWork(i.length,"array assignment");let u=ke(e,r),f=u?Me(u):void 0,d=e.state.env.get(r);try{ge(e,r);for(let p=0;p<i.length;p++)j(e,r,p,i[p]);e.state.env.delete(r)}catch(p){throw e.state.arrays??=new Map,f?e.state.arrays.set(r,f):e.state.arrays.delete(r),d===void 0?e.state.env.delete(r):e.state.env.set(r,d),p}}else if(a!==void 0&&o!==void 0){let u=await Nh(e,a);j(e,r,u,o)}else o!==void 0&&e.state.env.set(r,o);return l&&Ze(e,r),null}function an(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function fo(e,t){return e.state.localVarDepth?.get(t)}function Ds(e,t){e.state.localVarDepth?.delete(t)}function Du(e,t,n){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:n,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function Is(e,t){let n=e.state.localVarStack?.get(t);if(!(!n||n.length===0))return n.pop()}function Iu(e,t){if(e.state.localVarStack)for(let[n,r]of e.state.localVarStack.entries()){for(;r.length>0&&r[r.length-1].scopeIndex===t;)r.pop();r.length===0&&e.state.localVarStack.delete(n)}}var po="__file__:",ho="__file_append__:",go="__rw__:",mo="__dupout__:",yo="__dupin__:",Ee=3;function Rh(e){let t=e.slice(go.length),n=t.indexOf(":");if(n===-1)return null;let r=Number.parseInt(t.slice(0,n),10);if(Number.isNaN(r)||r<0)return null;let s=n+1,i=t.slice(s,s+r),o=t.slice(s+r+1),a=o.indexOf(":");if(a===-1)return null;let l=Number.parseInt(o.slice(0,a),10);return Number.isNaN(l)||l<0?null:{path:i,position:l,content:o.slice(a+1)}}function Ou(e,t){let n=Number.parseInt(e.slice(t.length),10);return Number.isNaN(n)?null:n}function Dh(e){if(e.startsWith(po))return{kind:"output",path:e.slice(po.length),append:!1};if(e.startsWith(ho))return{kind:"output",path:e.slice(ho.length),append:!0};if(e.startsWith(go)){let t=Rh(e);if(t)return{kind:"readwrite",...t}}if(e.startsWith(mo)){let t=Ou(e,mo);if(t!==null)return{kind:"dup-out",sourceFd:t}}if(e.startsWith(yo)){let t=Ou(e,yo);if(t!==null)return{kind:"dup-in",sourceFd:t}}return{kind:"input",content:e}}function wo(e){switch(e.kind){case"input":return e.content;case"output":return`${e.append?ho:po}${e.path}`;case"readwrite":return`${go}${e.path.length}:${e.path}:${e.position}:${e.content}`;case"dup-out":return`${mo}${e.sourceFd}`;case"dup-in":return`${yo}${e.sourceFd}`;case"closed":throw new Error("Closed descriptors have no table encoding")}}function Ih(e){return e.state.fileDescriptors??=new Map,e.state.fileDescriptors}function Oh(e,t,n){n?(e.state.inputFds??=new Set,e.state.inputFds.add(t)):e.state.inputFds?.delete(t)}function jn(e,t){return e.state.fdAliases?.get(t)}function ln(e,t){return[...jn(e,t)??[t]]}function _u(e,t){let n=jn(e,t);if(n&&(n.delete(t),e.state.fdAliases?.delete(t),n.size<2))for(let r of n)e.state.fdAliases?.delete(r)}function Eo(e,t,n){if(t===n)return;e.state.fdAliases??=new Map;let r=jn(e,n)??new Set([n]);r.add(t);for(let s of r)e.state.fdAliases.set(s,r)}function Os(e,t){return e.state.fileDescriptors?.get(t)}function nt(e,t){let n=Os(e,t);if(n!==void 0)return e.state.inputFds?.has(t)?{kind:"input",content:n}:Dh(n)}function $n(e,t){return e.state.fileDescriptors?.has(t)===!0}function bo(e,t,n,r){let s=Ih(e);s.has(t)||bu(e),s.set(t,n),Oh(e,t,r)}function _s(e,t,n,r=!1){_u(e,t),bo(e,t,n,r)}function lt(e,t,n){_s(e,t,wo(n),n.kind==="input")}function Rt(e,t){e.state.fileDescriptors?.delete(t),e.state.inputFds?.delete(t),_u(e,t)}function Ls(e,t,n){let r=Os(e,n);return r===void 0?!1:(_s(e,t,r,e.state.inputFds?.has(n)===!0),Eo(e,t,n),!0)}function So(e,t,n){let r=Os(e,n);if(r===void 0)return!1;if(t===n)return!0;let s=e.state.inputFds?.has(n)===!0,i=[...jn(e,n)??[]].filter(a=>a!==n);Rt(e,n),_s(e,t,r,s);let o=i.find(a=>$n(e,a));return o!==void 0&&Eo(e,t,o),!0}function Ts(e,t){let n=nt(e,t);if(n===void 0)return{error:"not-open"};switch(n.kind){case"input":return{content:n.content};case"readwrite":return{content:n.content.slice(n.position)};case"output":case"dup-out":return{error:"write-only"};case"dup-in":return{error:"not-open"};case"closed":return{error:"not-open"}}}function cn(e,t,n){let r=nt(e,t);if(r===void 0)return;let s;if(r.kind==="input")s={kind:"input",content:r.content.slice(n)};else if(r.kind==="readwrite")s={...r,position:r.position+n};else return;let i=wo(s),o=s.kind==="input";for(let a of jn(e,t)??[t])bo(e,a,i,o)}async function Ao(e,t,n,r,s){if(t.kind==="output")return await e.fs.appendFile(t.path,r,s),!0;let o=n.map(u=>nt(e,u)).find(u=>u?.kind==="readwrite")??t;if(o.kind!=="readwrite")return!1;let a=o.content.slice(0,o.position)+r+o.content.slice(o.position+r.length),l={...o,position:o.position+r.length,content:a};await e.fs.writeFile(o.path,a,s);let c=wo(l);for(let u of n)$n(e,u)&&bo(e,u,c,!1);return!0}function un(e,t,n){if(t.has(n))return;let r=jn(e,n);t.set(n,{raw:Os(e,n),isInput:e.state.inputFds?.has(n)===!0,aliases:r?[...r].filter(s=>s!==n):[]})}function Fs(e,t){let n=e.state.fileDescriptors;if(n)for(let[r,{raw:s,isInput:i,aliases:o}]of t){if(s===void 0){Rt(e,r);continue}_s(e,r,s,i);let a=o.find(l=>n.has(l));a!==void 0&&Eo(e,r,a)}}function vo(e){switch(e.operator){case"<":case"<>":case"<<":case"<<-":case"<<<":case"<&":return e.fd??0;case">":case">>":case">|":case">&":return e.fd??1;default:return null}}function Lu(e){if(e.fdVariable)return!1;let t=vo(e);return t!==null&&t>=Ee}async function _h(e,t,n,r){try{if(!await e.fs.exists(t))return null;if((await e.fs.stat(t)).isDirectory)return`bash: ${n}: Is a directory
126
126
  `;if(r.checkNoclobber&&e.state.options.noclobber&&!r.isClobber&&n!=="/dev/null")return`bash: ${n}: cannot overwrite existing file
127
127
  `}catch{return`bash: ${n}: cannot open redirect target
128
- `}return null}function $u(e){let n=Math.min(e.length,8192);for(let r=0;r<n;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}var pr="scoped",Cu="bare",Nu="persistent",Sh=e=>new P(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors"),Ah=(e,t)=>vn(e,t)||(e.state.fileDescriptors?.size??0)<e.limits.maxFileDescriptors,Pu=e=>{let t=Math.max(e.state.nextFd??10,10);for(;vn(e,t);)t+=1;return t},Ds=e=>{let t=e.endsWith("-"),n=t?e.slice(0,-1):e;return/^\d+$/.test(n)?{sourceFd:Number.parseInt(n,10),move:t}:null},vh=(e,t,n)=>{let r=tt(e,t);return t<we?r?{kind:"entry",entry:r,descriptors:sn(e,t)}:{kind:"standard",fd:t}:r?n?r.kind==="input"||r.kind==="readwrite"||r.kind==="dup-in"?{kind:"entry",entry:r,descriptors:sn(e,t)}:null:r.kind==="output"||r.kind==="readwrite"||r.kind==="dup-out"?{kind:"entry",entry:r,descriptors:sn(e,t)}:null:null};async function zn(e,t,n,r,s=!0){let i=e.fs.resolvePath(e.state.cwd,t),o=await bh(e,i,t,{checkNoclobber:!n,isClobber:r});if(o)return{error:L("",o,1)};if(t==="/dev/full")return{error:L("",`bash: /dev/full: No space left on device
129
- `,1)};if(t==="/dev/stdout")return{entry:{kind:"dup-out",sourceFd:1}};if(t==="/dev/stderr")return{entry:{kind:"dup-out",sourceFd:2}};try{n?await e.fs.appendFile(i,"","binary"):await e.fs.writeFile(i,"","binary")}catch(a){if(!s)throw a;return{error:L("",`bash: ${t}: cannot open redirect target
130
- `,1)}}return{entry:{kind:"output",path:i,append:n}}}async function ho(e,t,n){let r=e.fs.resolvePath(e.state.cwd,t);try{let s=await e.fs.readFile(r);return n?{entry:{kind:"readwrite",path:r,position:0,content:s}}:{entry:{kind:"input",content:s}}}catch{if(!n)return{error:L("",`bash: ${t}: No such file or directory
131
- `,1)};try{return await e.fs.writeFile(r,"","binary"),{entry:{kind:"readwrite",path:r,position:0,content:""}}}catch{return{error:L("",`bash: ${t}: No such file or directory
132
- `,1)}}}}var kh=async(e,t)=>{let n=await se(e,t.content);return t.stripTabs?n.split(`
128
+ `}return null}function Tu(e){let n=Math.min(e.length,8192);for(let r=0;r<n;r++)if(e.charCodeAt(r)>127)return"utf8";return"binary"}var wr="scoped",Mu="bare",Bu="persistent",Lh=e=>new P(`too many open file descriptors (max ${e.limits.maxFileDescriptors})`,"file_descriptors"),Th=(e,t)=>$n(e,t)||(e.state.fileDescriptors?.size??0)<e.limits.maxFileDescriptors,Fu=e=>{let t=Math.max(e.state.nextFd??10,10);for(;$n(e,t);)t+=1;return t},Ms=e=>{let t=e.endsWith("-"),n=t?e.slice(0,-1):e;return/^\d+$/.test(n)?{sourceFd:Number.parseInt(n,10),move:t}:null},Fh=(e,t,n)=>{let r=nt(e,t);return t<Ee?r?{kind:"entry",entry:r,descriptors:ln(e,t)}:{kind:"standard",fd:t}:r?n?r.kind==="input"||r.kind==="readwrite"||r.kind==="dup-in"?{kind:"entry",entry:r,descriptors:ln(e,t)}:null:r.kind==="output"||r.kind==="readwrite"||r.kind==="dup-out"?{kind:"entry",entry:r,descriptors:ln(e,t)}:null:null};async function Hn(e,t,n,r,s=!0){let i=e.fs.resolvePath(e.state.cwd,t),o=await _h(e,i,t,{checkNoclobber:!n,isClobber:r});if(o)return{error:T("",o,1)};if(t==="/dev/full")return{error:T("",`bash: /dev/full: No space left on device
129
+ `,1)};if(t==="/dev/stdout")return{entry:{kind:"dup-out",sourceFd:1}};if(t==="/dev/stderr")return{entry:{kind:"dup-out",sourceFd:2}};try{n?await e.fs.appendFile(i,"","binary"):await e.fs.writeFile(i,"","binary")}catch(a){if(!s)throw a;return{error:T("",`bash: ${t}: cannot open redirect target
130
+ `,1)}}return{entry:{kind:"output",path:i,append:n}}}async function ko(e,t,n){let r=e.fs.resolvePath(e.state.cwd,t);try{let s=await e.fs.readFile(r);return n?{entry:{kind:"readwrite",path:r,position:0,content:s}}:{entry:{kind:"input",content:s}}}catch{if(!n)return{error:T("",`bash: ${t}: No such file or directory
131
+ `,1)};try{return await e.fs.writeFile(r,"","binary"),{entry:{kind:"readwrite",path:r,position:0,content:""}}}catch{return{error:T("",`bash: ${t}: No such file or directory
132
+ `,1)}}}}var Mh=async(e,t)=>{let n=await ie(e,t.content);return t.stripTabs?n.split(`
133
133
  `).map(r=>r.replace(/^\t+/,"")).join(`
134
- `):n};async function xh(e,t,n,r){let s=new Map,i=new Map,o=(g,y)=>e.state.closedStandardFds?.has(g)?{kind:"closed"}:tt(e,g)??y,a=new Map([[0,o(0,{kind:"dup-in",sourceFd:0})],[1,o(1,{kind:"dup-out",sourceFd:1})],[2,o(2,{kind:"dup-out",sourceFd:2})]]),l=r.numericSnapshot,c,u=-1,f=a.get(0);f?.kind==="input"?(c=f.content,u=0):f?.kind==="readwrite"&&(c=f.content.slice(f.position),u=0);let d=()=>({targets:s,dupSources:i,standardRoutes:a,stdin:c,stdinSourceFd:u,error:null}),p=async(g,y,b)=>{let A={...d(),error:await ln(e,g,t.slice(0,y),s,i,a)};return b?{...A,errorCause:b}:A},h=async(g,y)=>{if(Ah(e,g))return null;let b=Sh(e);return p(L("",b.stderr,P.EXIT_CODE),y,b)},m=(g,y)=>{g!==null&&g<we&&a.set(g,y),r.policy==="persistent"&&g!==null&&g<we&&(e.state.closedStandardFds?.delete(g),at(e,g,y))},E=(g,y)=>{a.set(g,y),an(e,r.standardSnapshot,g),r.standardClosedSnapshot.has(g)||r.standardClosedSnapshot.set(g,e.state.closedStandardFds?.has(g)===!0),e.state.closedStandardFds?.delete(g),at(e,g,y)},S=(g,y)=>{if(g<we){let b=a.get(g);return b?.kind==="closed"?null:b?{kind:"entry",entry:b,descriptors:sn(e,g)}:{kind:"standard",fd:g}}return vh(e,g,y)};for(let g=0;g<t.length;g++){let y=t[g],b=po(y);if(y.target.type==="HereDoc"){let v=await kh(e,y.target);if(y.fdVariable){try{ce(e,y.fdVariable)}catch(x){if(!(x instanceof U))throw x;return p(L(x.stdout,x.stderr,x.exitCode),g,x)}let $=Pu(e),R=await h($,g);if(R)return R;an(e,r.fdVariableSnapshot,$),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable)),at(e,$,{kind:"input",content:v}),e.state.env.set(y.fdVariable,String($)),e.state.nextFd=$+1}else if(b!==null&&b>=we){let $=await h(b,g);if($)return $;an(e,l,b),at(e,b,{kind:"input",content:v})}else if(b===0||b===null)c=dn(v),u=-1,m(b,{kind:"input",content:c});else{let $={kind:"input",content:v};r.policy==="persistent"?m(b,$):E(b,$)}continue}let A,k=y.operator===">&"||y.operator==="<&";if(k){if(Gi(e,y.target))return p(L("",`bash: $@: ambiguous redirect
135
- `,1),g);A=await se(e,y.target)}else if(y.operator==="<<<")A=await se(e,y.target);else{let v=await su(e,y.target);if("error"in v)return p(L("",v.error,1),g);A=v.target}if(s.set(g,A),A.includes("\0"))return p(L("",`bash: ${A.replace(/\0/g,"")}: No such file or directory
136
- `,1),g);if(y.fdVariable){try{ce(e,y.fdVariable)}catch(D){if(!(D instanceof U))throw D;return p(L(D.stdout,D.stderr,D.exitCode),g,D)}if(k&&A==="-"){let D=Number.parseInt(e.state.env.get(y.fdVariable)??"",10);Number.isNaN(D)||(an(e,r.fdVariableSnapshot,D),Ct(e,D));continue}let v=Pu(e),$=k?Ds(A):null;if($&&!S($.sourceFd,y.operator==="<&"))return p(L("",`bash: ${$.sourceFd}: Bad file descriptor
137
- `,1),g);if(!($?.move===!0&&$.sourceFd>=we)){let D=await h(v,g);if(D)return D}an(e,r.fdVariableSnapshot,v),r.fdVariableEnv.has(y.fdVariable)||r.fdVariableEnv.set(y.fdVariable,e.state.env.get(y.fdVariable));let x,C;if(k){let D=$;if(D){let B=S(D.sourceFd,y.operator==="<&");if(!B)return p(L("",`bash: ${D.sourceFd}: Bad file descriptor
138
- `,1),g);C=D,B.kind==="standard"?x={kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:B.fd}:D.sourceFd<we&&(x=B.entry)}else{if(y.operator==="<&")return p(L("",`bash: ${A}: ambiguous redirect
139
- `,1),g);let B=await zn(e,A,!1,!1);if(B.error)return p(B.error,g);x=B.entry}}else if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let D=y.operator===">>"||y.operator==="&>>",B=await zn(e,A,D,y.operator===">|");if(B.error)return p(B.error,g);x=B.entry}else if(y.operator==="<<<")x={kind:"input",content:`${A}
140
- `};else if(y.operator==="<"||y.operator==="<>"){let D=await ho(e,A,y.operator==="<>");if(D.error)return p(D.error,g);x=D.entry}if(C&&C.sourceFd>=we){if(!(C.move?uo(e,v,C.sourceFd):Cs(e,v,C.sourceFd)))return p(L("",`bash: ${C.sourceFd}: Bad file descriptor
141
- `,1),g)}else x&&at(e,v,x);C?.move&&C.sourceFd!==v&&C.sourceFd<we&&Ct(e,C.sourceFd),e.state.env.set(y.fdVariable,String(v)),e.state.nextFd=v+1;continue}if(xu(y)){let v=b;if(k&&A==="-"){an(e,l,v),Ct(e,v);continue}let $=k?Ds(A):null;if($&&!S($.sourceFd,y.operator==="<&"))return p(L("",`bash: ${$.sourceFd}: Bad file descriptor
142
- `,1),g);if(!($?.move===!0&&$.sourceFd>=we)){let x=await h(v,g);if(x)return x}if(an(e,l,v),k){let x=$;if(!x){if(y.operator==="<&")return p(L("",`bash: ${A}: ambiguous redirect
143
- `,1),g);let D=await zn(e,A,!1,!1);if(D.error)return p(D.error,g);at(e,v,D.entry);continue}let C=S(x.sourceFd,y.operator==="<&");if(!C)return p(L("",`bash: ${x.sourceFd}: Bad file descriptor
144
- `,1),g);if(C.kind==="standard")at(e,v,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:C.fd});else if(x.sourceFd<we)at(e,v,C.entry);else if(!(x.move?uo(e,v,x.sourceFd):Cs(e,v,x.sourceFd)))return p(L("",`bash: ${x.sourceFd}: Bad file descriptor
145
- `,1),g);x.move&&x.sourceFd!==v&&x.sourceFd<we&&Ct(e,x.sourceFd);continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"){let x=await zn(e,A,y.operator===">>",y.operator===">|");if(x.error)return p(x.error,g);at(e,v,x.entry)}else if(y.operator==="<<<")at(e,v,{kind:"input",content:`${A}
146
- `});else if(y.operator==="<"||y.operator==="<>"){let x=await ho(e,A,y.operator==="<>");if(x.error)return p(x.error,g);at(e,v,x.entry)}continue}if(k){if(A==="-"){b===0&&(c="",u=-1),b!==null&&b<we&&(a.set(b,{kind:"closed"}),r.policy==="persistent"&&(Ct(e,b),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(b)));continue}let v=Ds(A);if(!v){if(y.operator==="<&")return p(L("",`bash: ${A}: ambiguous redirect
147
- `,1),g);let R=await zn(e,A,!1,!1,!1);if(R.error)return p(R.error,g);let x=R.entry;i.set(g,{kind:"entry",entry:x,descriptors:[]}),y.fd==null?(m(1,x),m(2,x)):m(b,x);continue}let $=S(v.sourceFd,y.operator==="<&");if(!$)return p(L("",`bash: ${v.sourceFd}: Bad file descriptor
148
- `,1),g);if(i.set(g,$),$.kind==="entry"&&r.policy==="persistent"&&b!==null&&b<we&&v.sourceFd>=we){if(!Cs(e,b,v.sourceFd))return p(L("",`bash: ${v.sourceFd}: Bad file descriptor
149
- `,1),g);a.set(b,tt(e,b)),e.state.closedStandardFds?.delete(b)}else $.kind==="standard"?m(b,{kind:y.operator==="<&"?"dup-in":"dup-out",sourceFd:$.fd}):m(b,$.entry);if(y.operator==="<&"&&b===0)if($.kind==="standard")c=$.fd===0?n:"",u=-1;else if($.entry.kind==="input"||$.entry.kind==="readwrite"){let R=v.sourceFd<we&&!vn(e,v.sourceFd)?{content:$.entry.kind==="input"?$.entry.content:$.entry.content.slice($.entry.position)}:Ns(e,v.sourceFd);if("error"in R)return p(L("",`bash: ${v.sourceFd}: Bad file descriptor
150
- `,1),g);c=R.content,u=vn(e,v.sourceFd)?v.sourceFd:-1}else c=n,u=-1;v.move&&(v.sourceFd>=we?Ct(e,v.sourceFd):(a.set(v.sourceFd,{kind:"closed"}),r.policy==="persistent"&&(Ct(e,v.sourceFd),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(v.sourceFd))));continue}if(y.operator===">"||y.operator===">|"||y.operator===">>"||y.operator==="&>"||y.operator==="&>>"){let v=await zn(e,A,y.operator===">>"||y.operator==="&>>",y.operator===">|",!1);if(v.error)return p(v.error,g);let $=v.entry;y.operator==="&>"||y.operator==="&>>"?(m(1,$),m(2,$)):m(b,$);continue}if(y.operator==="<<<")c=dn(`${A}
151
- `),u=-1,m(b,{kind:"input",content:c});else if(y.operator==="<"){let v=e.fs.resolvePath(e.state.cwd,A);try{c=await xn(e.fs,v),u=-1,m(b,{kind:"input",content:c})}catch{return p(L("",`bash: ${A}: No such file or directory
152
- `,1),g)}}else if(y.operator==="<>"){let v=await ho(e,A,!0);if(v.error)return p(v.error,g);let $=v.entry;m(b,$),b===0&&$.kind==="readwrite"&&(c=$.content,u=-1)}}return d()}function Un(e,t,n){let r={numericSnapshot:new Map,fdVariableSnapshot:new Map,standardSnapshot:new Map,standardClosedSnapshot:new Map,fdVariableEnv:new Map,nextFd:e.state.nextFd,policy:n},s=!1;return{prepare:(i="")=>xh(e,t,i,r),finish:()=>{if(!s){if(s=!0,n!=="persistent"&&Rs(e,r.numericSnapshot),n!=="persistent"){Rs(e,r.standardSnapshot);for(let[i,o]of r.standardClosedSnapshot)o?(e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(i)):e.state.closedStandardFds?.delete(i)}if(n==="bare"){Rs(e,r.fdVariableSnapshot);for(let[i,o]of r.fdVariableEnv)o===void 0?e.state.env.delete(i):e.state.env.set(i,o);e.state.nextFd=r.nextFd}}}}}function qn(e){if(!e.error)throw new Error("Expected a redirection error");if(e.errorCause)throw e.errorCause.stdout=e.error.stdout,e.errorCause.stderr=e.error.stderr,e.errorCause;return e.error}async function mo(e,t,n,r){let s=t instanceof U||t instanceof Oe||t instanceof We?t.exitCode:t instanceof P?P.EXIT_CODE:0,i=await ln(e,L(t.stdout,t.stderr,s),n,r.targets,r.dupSources,r.standardRoutes);t.stdout=i.stdout,t.stderr=i.stderr,t.internalOutputAccounting=i.internalOutputAccounting??{stdout:M(i.stdout),stderr:M(i.stderr)}}async function nt(e,t,n,r){let s=Un(e,t,pr),i;try{if(i=await s.prepare(n),i.error)return qn(i);let o=e.state.groupStdin,a=e.state.groupStdinSourceFd;i.stdin!==void 0&&(e.state.groupStdin=i.stdin,e.state.groupStdinSourceFd=i.stdinSourceFd);try{let l=await r(i);return await ln(e,l,t,i.targets,i.dupSources,i.standardRoutes)}finally{i.stdin!==void 0&&(e.state.groupStdin=o,e.state.groupStdinSourceFd=a)}}catch(o){throw!(o instanceof Mt)||!i||await mo(e,o,t,i),o}finally{s.finish()}}async function ln(e,t,n,r,s=new Map,i=new Map,o="bash",a=!1){n.length>0&&(t=e.executionScope.accountResult(t,"redirection"));let{stdout:l,stderr:c,exitCode:u}=t,d=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",p=b=>d,h={kind:"live-stdout"},m={kind:"live-stderr"},E=b=>{if(!b)return null;if(b.kind==="entry"){if(b.entry.kind==="dup-out"){if(b.entry.sourceFd===1)return{kind:"live-stdout"};if(b.entry.sourceFd===2)return{kind:"live-stderr"}}return b.entry.kind==="output"||b.entry.kind==="readwrite"?{kind:"descriptor",source:b}:null}return b.fd===1?h:b.fd===2?m:null},S=b=>{let A=i.get(b)??tt(e,b);return A?A.kind==="closed"?{kind:"invalid-output",fd:b}:A.kind==="input"||A.kind==="dup-in"?{kind:"invalid-output",fd:b}:A.kind==="dup-out"?A.sourceFd===1?{kind:"live-stdout"}:A.sourceFd===2?{kind:"live-stderr"}:null:A.kind==="output"||A.kind==="readwrite"?{kind:"descriptor",source:{kind:"entry",entry:A,descriptors:sn(e,b)}}:null:null};h=S(1)??h,m=S(2)??m;for(let b=0;b<n.length;b++){let A=n[b];if(A.target.type==="HereDoc"||A.fdVariable)continue;let k=r.get(b);if(k!==void 0)switch(A.operator){case">":case">|":case">>":{let v=A.fd??1;if(v!==1&&v!==2)break;let $=A.operator===">>";if(k==="/dev/stdout"){v===2&&(m=h);break}if(k==="/dev/stderr"){v===1&&(h=m);break}if(k==="/dev/full"){c+=`bash: echo: write error: No space left on device
153
- `,u=1,v===1&&(l="");break}if(k==="/dev/null"&&v===2){m={kind:"discard"};break}let R=e.fs.resolvePath(e.state.cwd,k);v===1?h={kind:"file",path:R,append:$}:m={kind:"file",path:R,append:$};break}case">&":case"<&":{let v=A.fd??(A.operator==="<&"?0:1);if(v>=we||v===0)break;if(k==="-"){v===1?h={kind:"discard"}:m={kind:"discard"};break}let $=E(s.get(b));if(!$)break;A.fd==null&&Ds(k)===null?(h=$,m=$):v===1?h=$:v===2&&(m=$);break}case"&>":{h={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!1},m=h;break}case"&>>":{h={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!0},m=h;break}}}if(l!==""||c!==""){let b=l,A=c;l="",c="",h.kind==="invalid-output"&&b!==""&&(b="",A+=`${a?"":"bash: "}${o}: write error: Bad file descriptor
154
- `,u=1),m.kind==="invalid-output"&&(A="");let k=async(v,$,R)=>{v.append?await e.fs.appendFile(v.path,$,R):await e.fs.writeFile(v.path,$,R)};if(h===m&&(h.kind==="file"||h.kind==="descriptor")){let v=b+A;v!==""&&(h.kind==="file"?await k(h,v,p(v)):await fo(e,h.source.entry,h.source.descriptors,v,p(v)))}else for(let[v,$,R]of[[b,h,!0],[A,m,!1]])if(v!=="")switch($.kind){case"live-stdout":l+=v;break;case"live-stderr":c+=v;break;case"file":await k($,v,R?p(v):$u(v));break;case"descriptor":await fo(e,$.source.entry,$.source.descriptors,v,R?p(v):$u(v));break;case"invalid-output":break;case"discard":break}}let g=L(l,c,u);if(t.stdoutKind&&(g.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(g.stdoutEncoding="binary"),t.internalPipeStatusOverride&&(g.internalPipeStatusOverride=t.internalPipeStatusOverride),n.length>0||e.state.fileDescriptors?.has(1)===!0||e.state.fileDescriptors?.has(2)===!0){let b=(t.internalOutputAccounting?.stdout??0)+(t.internalOutputAccounting?.stderr??0),A=M(g.stdout),k=M(g.stderr),v=Math.min(A,b);g.internalOutputAccounting={stdout:v,stderr:Math.min(k,b-v)},e.executionScope.accountResult(g,"redirection")}else t.internalOutputAccounting&&(g.internalOutputAccounting=t.internalOutputAccounting);return g}function Ru(e,t){if(e.state.options.posix&&er.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
155
- `;throw new U(2,"",r)}let n={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,n),te}async function Is(e,t,n,r="",s,i=!1){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,tn(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(s??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localArrayScopes??=[],e.state.localArrayScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let o=new Map,a=Number.parseInt(e.state.env.get("#")??"0",10),l=Math.max(n.length,a);for(let p=0;p<l;p++){let h=String(p+1);o.set(h,e.state.env.get(h)),p<n.length?e.state.env.set(h,n[p]):e.state.env.delete(h)}o.set("@",e.state.env.get("@")),o.set("#",e.state.env.get("#")),e.state.env.set("@",n.join(" ")),e.state.env.set("#",String(n.length));let c=!1,u=()=>{if(c)return;c=!0;let p=e.state.localScopes.length-1,h=e.state.localScopes.pop(),m=e.state.localArrayScopes?.pop();if(h)for(let[E,S]of h)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);if(m){e.state.arrays??=new Map;for(let[E,S]of m)S===void 0?(e.state.arrays.delete(E),e.state.associativeArrays?.delete(E)):(e.state.arrays.set(E,Te(S)),e.state.associativeArrays??=new Set,S.kind==="associative"?e.state.associativeArrays.add(E):e.state.associativeArrays.delete(E))}if(Au(e,p),e.state.fullyUnsetLocals)for(let[E,S]of e.state.fullyUnsetLocals.entries())S===p&&e.state.fullyUnsetLocals.delete(E);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let E=e.state.localExportedVars.pop();if(E)for(let S of E)e.state.exportedVars?.delete(S)}for(let[E,S]of o)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},f=null,d=Un(e,t.redirections,pr);try{if(f=await d.prepare(r),f.error)return qn(f);let p=f.stdin??r,h=i||f.stdin!==void 0||r!=="",m=await e.executeCommand(t.body,p,h);return ln(e,m,t.redirections,f.targets,f.dupSources,f.standardRoutes)}catch(p){if(p instanceof Mt&&f&&(await mo(e,p,t.redirections,f),p instanceof Oe))return L(p.stdout,p.stderr,p.exitCode);throw p}finally{d.finish(),u()}}var Iu=e=>e.type==="Escaped"?T.literal(`\\${e.value}`):e.type==="DoubleQuoted"?{...e,parts:e.parts.map(Iu)}:e,Ou=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],wo=[".",":","[","alias","bg","bind","break","builtin","caller","cd","command","compgen","complete","compopt","continue","declare","dirs","disown","echo","enable","eval","exec","exit","export","false","fc","fg","getopts","hash","help","history","jobs","kill","let","local","logout","mapfile","popd","printf","pushd","pwd","read","readarray","readonly","return","set","shift","shopt","source","suspend","test","times","trap","true","type","typeset","ulimit","umask","unalias","unset","wait"],$h=["autocd","assoc_expand_once","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","dotglob","execfail","expand_aliases","extdebug","extglob","extquote","failglob","force_fignore","globasciiranges","globstar","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lastpipe","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","nocaseglob","nocasematch","nullglob","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath","xpg_echo"],Ph=wo;async function Eo(e,t){let n=[],r=null,s="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,p=[],h=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let k=0;k<t.length;k++){let v=t[k];if(v==="-v")n.push("variable");else if(v==="-e")n.push("export");else if(v==="-f")n.push("file");else if(v==="-d")n.push("directory");else if(v==="-k")n.push("keyword");else if(v==="-A"){if(k++,k>=t.length)return _(`compgen: -A: option requires an argument
156
- `,2);let $=t[k];if(!h.includes($))return _(`compgen: ${$}: invalid action name
157
- `,2);n.push($)}else if(v==="-W"){if(k++,k>=t.length)return _(`compgen: -W: option requires an argument
158
- `,2);r=t[k]}else if(v==="-P"){if(k++,k>=t.length)return _(`compgen: -P: option requires an argument
159
- `,2);s=t[k]}else if(v==="-S"){if(k++,k>=t.length)return _(`compgen: -S: option requires an argument
160
- `,2);i=t[k]}else if(v==="-o"){if(k++,k>=t.length)return _(`compgen: -o: option requires an argument
161
- `,2);let $=t[k];if($==="plusdirs")a=!0;else if($==="dirnames")l=!0;else if($==="default")c=!0;else if(!($==="filenames"||$==="nospace"||$==="bashdefault"||$==="noquote"))return _(`compgen: ${$}: invalid option name
162
- `,2)}else if(v==="-F"){if(k++,k>=t.length)return _(`compgen: -F: option requires an argument
163
- `,2);f=t[k]}else if(v==="-C"){if(k++,k>=t.length)return _(`compgen: -C: option requires an argument
164
- `,2);d=t[k]}else if(v==="-X"){if(k++,k>=t.length)return _(`compgen: -X: option requires an argument
165
- `,2);u=t[k]}else if(v==="-G"){if(k++,k>=t.length)return _(`compgen: -G: option requires an argument
166
- `,2)}else if(v==="--"){p.push(...t.slice(k+1));break}else v.startsWith("-")||p.push(v)}o=p[0]??null;let m=[],E=new Set,S=()=>e.limits.maxArrayElements-m.length,g=k=>{for(let v of k){if(m.length>=e.limits.maxArrayElements)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(M(v)>e.limits.maxStringLength)throw new P(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");e.executionScope.consumeWork(1,"compgen completion"),m.push(v),E.add(v)}};if(l){let k=await yo(e,o,S());g(k)}if(c){let k=await Du(e,o,S());g(k)}for(let k of n)if(k==="variable"){let v=Ch(e,o,S());g(v)}else if(k==="export"){let v=Nh(e,o,S());g(v)}else if(k==="function"){let v=Rh(e,o,S());g(v)}else if(k==="builtin"){let v=Dh(e,o,S());g(v)}else if(k==="keyword"){let v=Ih(e,o,S());g(v)}else if(k==="alias"){let v=Oh(e,o,S());g(v)}else if(k==="shopt"){let v=_h(e,o,S());g(v)}else if(k==="helptopic"){let v=Lh(e,o,S());g(v)}else if(k==="directory"){let v=await yo(e,o,S());g(v)}else if(k==="file"){let v=await Du(e,o,S());g(v)}else if(k==="user"){let v=Th(e,o,S());g(v)}else if(k==="command"){let v=await Fh(e,o,S());g(v)}if(r!==null)try{let k=await Mh(e,r),v=Bh(e,k,S(),o);for(let $ of v)g([$])}catch(k){if(k instanceof P)throw k;return L("","",1)}if(a){let k=await yo(e,o,S(),E);for(let v of k)E.has(v)||g([v])}let y="";if(f!==null){let k=e.state.functions.get(f);if(k){let v=new Map,$=ve(e,"COMP_WORDS"),R=$?Te($):void 0;ye(e,"COMP_WORDS"),Yn(e,"COMP_WORDS"),v.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),v.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),v.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let x=ve(e,"COMPREPLY"),C=x?Te(x):void 0,D=e.state.env.get("COMPREPLY");ye(e,"COMPREPLY"),e.state.env.delete("COMPREPLY");let B=["compgen",p[0]??"",""];try{let H=await Is(e,k,B,"");if(H.exitCode!==0)return go(e,v),jn(e,"COMP_WORDS",R),jn(e,"COMPREPLY",C),D!==void 0&&e.state.env.set("COMPREPLY",D),L("",H.stderr,1);y=H.stdout;let N=Wh(e,S());g(N)}catch(H){if(H instanceof P)throw H;return go(e,v),jn(e,"COMP_WORDS",R),jn(e,"COMPREPLY",C),D!==void 0&&e.state.env.set("COMPREPLY",D),L("","",1)}go(e,v),jn(e,"COMP_WORDS",R),jn(e,"COMPREPLY",C),D!==void 0&&e.state.env.set("COMPREPLY",D)}}if(d!==null)try{let k=it(d),v=await e.executeScript(k);if(v.exitCode!==0)return L("",v.stderr,v.exitCode);if(v.stdout)for(let $ of Vh(v.stdout))$.length>0&&g([$])}catch(k){if(k.name==="ParseException")return _(`compgen: -C: ${k.message}
167
- `,2);throw k}let b=m;if(u!==null){let k=u.startsWith("!"),v=k?u.slice(1):u;b=m.filter($=>{let R=Wn($,v,!1,!0,e.limits.maxCallDepth);return k?R:!R})}if(b.length===0&&o!==null)return L(y,"",1);let A=new $n(e.limits.maxOutputSize,"compgen");A.append(y);for(let k of b)A.append(s).append(k).append(i).append(`
168
- `);return J(A.build())}function Ch(e,t,n){let r=lt(e,t,n);for(let s of e.state.env.keys())/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&r.add(s);for(let s of e.state.arrays?.keys()??[])r.add(s);return r.build()}function Nh(e,t,n){let r=lt(e,t,n),s=e.state.exportedVars??new Set;for(let i of s)e.state.env.has(i)&&r.add(i);return r.build()}function Rh(e,t,n){let r=lt(e,t,n);for(let s of e.state.functions.keys())r.add(s);return r.build()}function Dh(e,t,n){let r=lt(e,t,n);for(let s of wo)r.add(s);return r.build()}function Ih(e,t,n){let r=lt(e,t,n);for(let s of Ou)r.add(s);return r.build()}function Oh(e,t,n){let r=lt(e,t,n);for(let s of e.state.env.keys())if(s.startsWith("BASH_ALIAS_")){let i=s.slice(11);r.add(i)}return r.build()}function _h(e,t,n){let r=lt(e,t,n);for(let s of $h)r.add(s);return r.build()}function Lh(e,t,n){let r=lt(e,t,n);for(let s of Ph)r.add(s);return r.build()}async function yo(e,t,n=e.limits.maxArrayElements,r){let s=lt(e,null,n,r);try{let i=e.state.cwd,o=t??"";if(t){let l=t.lastIndexOf("/");if(l!==-1){let c=t.slice(0,l)||"/";o=t.slice(l+1),c.startsWith("/")?i=c:i=`${e.state.cwd}/${c}`}}let a=await e.fs.readdir(i);for(let l of a){e.executionScope.consumeWork(1,"compgen directory scan");let c=`${i}/${l}`;try{if((await e.fs.stat(c)).isDirectory&&(!o||l.startsWith(o)))if(t?.includes("/")){let f=t.lastIndexOf("/"),d=t.slice(0,f+1);s.add(d+l)}else s.add(l)}catch(u){if(u instanceof P)throw u}}}catch(i){if(i instanceof P)throw i}return s.build()}async function Du(e,t,n=e.limits.maxArrayElements){let r=lt(e,null,n);try{let s=e.state.cwd,i=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let l=t.slice(0,a)||"/";i=t.slice(a+1),l.startsWith("/")?s=l:s=`${e.state.cwd}/${l}`}}let o=await e.fs.readdir(s);for(let a of o)if(e.executionScope.consumeWork(1,"compgen file scan"),!i||a.startsWith(i))if(t?.includes("/")){let l=t.lastIndexOf("/"),c=t.slice(0,l+1);r.add(c+a)}else r.add(a)}catch(s){if(s instanceof P)throw s}return r.build()}function Th(e,t,n){let r=lt(e,t,n);return r.add("root"),r.add("nobody"),r.build()}async function Fh(e,t,n){let r=lt(e,t,n);for(let i of wo)r.add(i);for(let i of e.state.functions.keys())r.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&r.add(i.slice(11));for(let i of Ou)r.add(i);let s=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of s.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)r.add(a)}catch(o){if(o instanceof P)throw o}return r.build()}function lt(e,t,n,r){let s=new Set;return{add(i){if(e.executionScope.consumeWork(1,"compgen candidate collection"),!(t!==null&&!i.startsWith(t))&&!r?.has(i)&&!s.has(i)){if(s.size>=n)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(M(i)>e.limits.maxStringLength)throw new P(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");s.add(i)}},build(){return Array.from(s).sort()}}}async function Mh(e,t){let r=new j().parseWordFromString(t,!1,!1);return await se(e,T.word(r.parts.map(Iu)))}function Bh(e,t,n,r){let s=e.state.env.get("IFS")??`
169
- `;if(s.length===0){if(r!==null&&!t.startsWith(r))return[];if(n===0)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");return[t]}let i=new Set(s.split("")),o=[],a=u=>{if(!(r!==null&&!u.startsWith(r))){if(o.length>=n)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");o.push(u)}},l="",c=0;for(;c<t.length;){let u=t[c];if(u==="\\"&&c+1<t.length){let f=t[c+1];l+=f,c+=2}else i.has(u)?(l.length>0&&(a(l),l=""),c++):(l+=u,c++)}return l.length>0&&a(l),o}function go(e,t){for(let[n,r]of t)r===void 0?e.state.env.delete(n):e.state.env.set(n,r)}function jn(e,t,n){e.state.arrays??=new Map,n?e.state.arrays.set(t,Te(n)):e.state.arrays.delete(t)}function Wh(e,t){let n=[],r=s=>{if(n.length>=t)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");n.push(s)};if(Pe(e,"COMPREPLY")){let s=G(e,"COMPREPLY");for(let[,i]of s)r(i)}else{let s=e.state.env.get("COMPREPLY");s!==void 0&&r(s)}return n}function*Vh(e){let t=0;for(;t<=e.length;){let n=e.indexOf(`
170
- `,t),r=n===-1?e.length:n;if(r>t&&(yield e.slice(t,r)),n===-1)return;t=n+1}}function hr(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<32||n===127)return!0}return!1}function bo(e){let t="$'";for(let n=0;n<e.length;n++){let r=e[n],s=e.charCodeAt(n);s===7?t+="\\a":s===8?t+="\\b":s===9?t+="\\t":s===10?t+="\\n":s===11?t+="\\v":s===12?t+="\\f":s===13?t+="\\r":s===27?t+="\\e":s===39?t+="\\'":s===92?t+="\\\\":s<32||s===127?t+=`\\${s.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function _u(e){if(hr(e))return Lu(e);if(e==="")return 2;if(/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e))return M(e);let t=M(e)+2;for(let n of e)n==="'"&&(t+=3);return t}function Ee(e){return hr(e)?bo(e):e===""?"''":/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Os(e){if(hr(e))return Lu(e);let t=M(e)+2;for(let n of e)(n==="\\"||n==='"'||n==="$"||n==="`")&&t++;return t}function cn(e){return hr(e)?bo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}function Lu(e){let t=3;for(let n of e){let r=n.codePointAt(0)??0;r===7||r===8||r===9||r===10||r===11||r===12||r===13||r===27||r===39||r===92?t+=2:r<32||r===127?t+=4:t+=M(n)}return t}function mr(e){return hr(e)?bo(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}var zh=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Ao(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")n=!0;else if(d==="-r")r=!0;else if(d==="-D")s=!0;else if(d==="-W"){if(f++,f>=t.length)return _(`complete: -W: option requires an argument
171
- `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return _(`complete: -F: option requires an argument
172
- `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return _(`complete: -o: option requires an argument
173
- `,2);let p=t[f];if(!zh.includes(p))return _(`complete: ${p}: invalid option name
174
- `,2);l.push(p)}else if(d==="-A"){if(f++,f>=t.length)return _(`complete: -A: option requires an argument
175
- `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return _(`complete: -C: option requires an argument
176
- `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return _(`complete: -G: option requires an argument
177
- `,2)}else if(d==="-P"){if(f++,f>=t.length)return _(`complete: -P: option requires an argument
178
- `,2)}else if(d==="-S"){if(f++,f>=t.length)return _(`complete: -S: option requires an argument
179
- `,2)}else if(d==="-X"){if(f++,f>=t.length)return _(`complete: -X: option requires an argument
180
- `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),e.state.defaultCompletionSpec=void 0,e.state.emptyCompletionSpec=void 0,J("");for(let f of u)e.state.completionSpecs.delete(f);return J("")}if(n)return u.length===0?So(e):So(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!s)return So(e);if(o&&u.length===0&&!s)return _(`complete: -F: option requires a command name
181
- `,2);if(s){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.defaultCompletionSpec=f,J("")}for(let f of u){let d=Object.create(null);i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return J("")}function So(e,t){let n=e.state.completionSpecs??new Map;if(n.size===0&&!e.state.defaultCompletionSpec){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
182
- `;return L("",i,1)}return J("")}let r=[],s=t||Array.from(n.keys());for(let i of s){let o=n.get(i);if(!o){if(t)return L(r.join(`
134
+ `):n};async function Bh(e,t,n,r){let s=new Map,i=new Map,o=(g,m)=>e.state.closedStandardFds?.has(g)?{kind:"closed"}:nt(e,g)??m,a=new Map([[0,o(0,{kind:"dup-in",sourceFd:0})],[1,o(1,{kind:"dup-out",sourceFd:1})],[2,o(2,{kind:"dup-out",sourceFd:2})]]),l=r.numericSnapshot,c,u=-1,f=a.get(0);f?.kind==="input"?(c=f.content,u=0):f?.kind==="readwrite"&&(c=f.content.slice(f.position),u=0);let d=()=>({targets:s,dupSources:i,standardRoutes:a,stdin:c,stdinSourceFd:u,error:null}),p=async(g,m,b)=>{let A={...d(),error:await fn(e,g,t.slice(0,m),s,i,a)};return b?{...A,errorCause:b}:A},h=async(g,m)=>{if(Th(e,g))return null;let b=Lh(e);return p(T("",b.stderr,P.EXIT_CODE),m,b)},y=(g,m)=>{g!==null&&g<Ee&&a.set(g,m),r.policy==="persistent"&&g!==null&&g<Ee&&(e.state.closedStandardFds?.delete(g),lt(e,g,m))},E=(g,m)=>{a.set(g,m),un(e,r.standardSnapshot,g),r.standardClosedSnapshot.has(g)||r.standardClosedSnapshot.set(g,e.state.closedStandardFds?.has(g)===!0),e.state.closedStandardFds?.delete(g),lt(e,g,m)},S=(g,m)=>{if(g<Ee){let b=a.get(g);return b?.kind==="closed"?null:b?{kind:"entry",entry:b,descriptors:ln(e,g)}:{kind:"standard",fd:g}}return Fh(e,g,m)};for(let g=0;g<t.length;g++){let m=t[g],b=vo(m);if(m.target.type==="HereDoc"){let v=await Mh(e,m.target);if(m.fdVariable){try{ue(e,m.fdVariable)}catch(x){if(!(x instanceof q))throw x;return p(T(x.stdout,x.stderr,x.exitCode),g,x)}let $=Fu(e),D=await h($,g);if(D)return D;un(e,r.fdVariableSnapshot,$),r.fdVariableEnv.has(m.fdVariable)||r.fdVariableEnv.set(m.fdVariable,e.state.env.get(m.fdVariable)),lt(e,$,{kind:"input",content:v}),e.state.env.set(m.fdVariable,String($)),e.state.nextFd=$+1}else if(b!==null&&b>=Ee){let $=await h(b,g);if($)return $;un(e,l,b),lt(e,b,{kind:"input",content:v})}else if(b===0||b===null)c=mn(v),u=-1,y(b,{kind:"input",content:c});else{let $={kind:"input",content:v};r.policy==="persistent"?y(b,$):E(b,$)}continue}let A,k=m.operator===">&"||m.operator==="<&";if(k){if(no(e,m.target))return p(T("",`bash: $@: ambiguous redirect
135
+ `,1),g);A=await ie(e,m.target)}else if(m.operator==="<<<")A=await ie(e,m.target);else{let v=await hu(e,m.target);if("error"in v)return p(T("",v.error,1),g);A=v.target}if(s.set(g,A),A.includes("\0"))return p(T("",`bash: ${A.replace(/\0/g,"")}: No such file or directory
136
+ `,1),g);if(m.fdVariable){try{ue(e,m.fdVariable)}catch(I){if(!(I instanceof q))throw I;return p(T(I.stdout,I.stderr,I.exitCode),g,I)}if(k&&A==="-"){let I=Number.parseInt(e.state.env.get(m.fdVariable)??"",10);Number.isNaN(I)||(un(e,r.fdVariableSnapshot,I),Rt(e,I));continue}let v=Fu(e),$=k?Ms(A):null;if($&&!S($.sourceFd,m.operator==="<&"))return p(T("",`bash: ${$.sourceFd}: Bad file descriptor
137
+ `,1),g);if(!($?.move===!0&&$.sourceFd>=Ee)){let I=await h(v,g);if(I)return I}un(e,r.fdVariableSnapshot,v),r.fdVariableEnv.has(m.fdVariable)||r.fdVariableEnv.set(m.fdVariable,e.state.env.get(m.fdVariable));let x,C;if(k){let I=$;if(I){let W=S(I.sourceFd,m.operator==="<&");if(!W)return p(T("",`bash: ${I.sourceFd}: Bad file descriptor
138
+ `,1),g);C=I,W.kind==="standard"?x={kind:m.operator==="<&"?"dup-in":"dup-out",sourceFd:W.fd}:I.sourceFd<Ee&&(x=W.entry)}else{if(m.operator==="<&")return p(T("",`bash: ${A}: ambiguous redirect
139
+ `,1),g);let W=await Hn(e,A,!1,!1);if(W.error)return p(W.error,g);x=W.entry}}else if(m.operator===">"||m.operator===">|"||m.operator===">>"||m.operator==="&>"||m.operator==="&>>"){let I=m.operator===">>"||m.operator==="&>>",W=await Hn(e,A,I,m.operator===">|");if(W.error)return p(W.error,g);x=W.entry}else if(m.operator==="<<<")x={kind:"input",content:`${A}
140
+ `};else if(m.operator==="<"||m.operator==="<>"){let I=await ko(e,A,m.operator==="<>");if(I.error)return p(I.error,g);x=I.entry}if(C&&C.sourceFd>=Ee){if(!(C.move?So(e,v,C.sourceFd):Ls(e,v,C.sourceFd)))return p(T("",`bash: ${C.sourceFd}: Bad file descriptor
141
+ `,1),g)}else x&&lt(e,v,x);C?.move&&C.sourceFd!==v&&C.sourceFd<Ee&&Rt(e,C.sourceFd),e.state.env.set(m.fdVariable,String(v)),e.state.nextFd=v+1;continue}if(Lu(m)){let v=b;if(k&&A==="-"){un(e,l,v),Rt(e,v);continue}let $=k?Ms(A):null;if($&&!S($.sourceFd,m.operator==="<&"))return p(T("",`bash: ${$.sourceFd}: Bad file descriptor
142
+ `,1),g);if(!($?.move===!0&&$.sourceFd>=Ee)){let x=await h(v,g);if(x)return x}if(un(e,l,v),k){let x=$;if(!x){if(m.operator==="<&")return p(T("",`bash: ${A}: ambiguous redirect
143
+ `,1),g);let I=await Hn(e,A,!1,!1);if(I.error)return p(I.error,g);lt(e,v,I.entry);continue}let C=S(x.sourceFd,m.operator==="<&");if(!C)return p(T("",`bash: ${x.sourceFd}: Bad file descriptor
144
+ `,1),g);if(C.kind==="standard")lt(e,v,{kind:m.operator==="<&"?"dup-in":"dup-out",sourceFd:C.fd});else if(x.sourceFd<Ee)lt(e,v,C.entry);else if(!(x.move?So(e,v,x.sourceFd):Ls(e,v,x.sourceFd)))return p(T("",`bash: ${x.sourceFd}: Bad file descriptor
145
+ `,1),g);x.move&&x.sourceFd!==v&&x.sourceFd<Ee&&Rt(e,x.sourceFd);continue}if(m.operator===">"||m.operator===">|"||m.operator===">>"){let x=await Hn(e,A,m.operator===">>",m.operator===">|");if(x.error)return p(x.error,g);lt(e,v,x.entry)}else if(m.operator==="<<<")lt(e,v,{kind:"input",content:`${A}
146
+ `});else if(m.operator==="<"||m.operator==="<>"){let x=await ko(e,A,m.operator==="<>");if(x.error)return p(x.error,g);lt(e,v,x.entry)}continue}if(k){if(A==="-"){b===0&&(c="",u=-1),b!==null&&b<Ee&&(a.set(b,{kind:"closed"}),r.policy==="persistent"&&(Rt(e,b),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(b)));continue}let v=Ms(A);if(!v){if(m.operator==="<&")return p(T("",`bash: ${A}: ambiguous redirect
147
+ `,1),g);let D=await Hn(e,A,!1,!1,!1);if(D.error)return p(D.error,g);let x=D.entry;i.set(g,{kind:"entry",entry:x,descriptors:[]}),m.fd==null?(y(1,x),y(2,x)):y(b,x);continue}let $=S(v.sourceFd,m.operator==="<&");if(!$)return p(T("",`bash: ${v.sourceFd}: Bad file descriptor
148
+ `,1),g);if(i.set(g,$),$.kind==="entry"&&r.policy==="persistent"&&b!==null&&b<Ee&&v.sourceFd>=Ee){if(!Ls(e,b,v.sourceFd))return p(T("",`bash: ${v.sourceFd}: Bad file descriptor
149
+ `,1),g);a.set(b,nt(e,b)),e.state.closedStandardFds?.delete(b)}else $.kind==="standard"?y(b,{kind:m.operator==="<&"?"dup-in":"dup-out",sourceFd:$.fd}):y(b,$.entry);if(m.operator==="<&"&&b===0)if($.kind==="standard")c=$.fd===0?n:"",u=-1;else if($.entry.kind==="input"||$.entry.kind==="readwrite"){let D=v.sourceFd<Ee&&!$n(e,v.sourceFd)?{content:$.entry.kind==="input"?$.entry.content:$.entry.content.slice($.entry.position)}:Ts(e,v.sourceFd);if("error"in D)return p(T("",`bash: ${v.sourceFd}: Bad file descriptor
150
+ `,1),g);c=D.content,u=$n(e,v.sourceFd)?v.sourceFd:-1}else c=n,u=-1;v.move&&(v.sourceFd>=Ee?Rt(e,v.sourceFd):(a.set(v.sourceFd,{kind:"closed"}),r.policy==="persistent"&&(Rt(e,v.sourceFd),e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(v.sourceFd))));continue}if(m.operator===">"||m.operator===">|"||m.operator===">>"||m.operator==="&>"||m.operator==="&>>"){let v=await Hn(e,A,m.operator===">>"||m.operator==="&>>",m.operator===">|",!1);if(v.error)return p(v.error,g);let $=v.entry;m.operator==="&>"||m.operator==="&>>"?(y(1,$),y(2,$)):y(b,$);continue}if(m.operator==="<<<")c=mn(`${A}
151
+ `),u=-1,y(b,{kind:"input",content:c});else if(m.operator==="<"){let v=e.fs.resolvePath(e.state.cwd,A);try{c=await Cn(e.fs,v),u=-1,y(b,{kind:"input",content:c})}catch{return p(T("",`bash: ${A}: No such file or directory
152
+ `,1),g)}}else if(m.operator==="<>"){let v=await ko(e,A,!0);if(v.error)return p(v.error,g);let $=v.entry;y(b,$),b===0&&$.kind==="readwrite"&&(c=$.content,u=-1)}}return d()}function Gn(e,t,n){let r={numericSnapshot:new Map,fdVariableSnapshot:new Map,standardSnapshot:new Map,standardClosedSnapshot:new Map,fdVariableEnv:new Map,nextFd:e.state.nextFd,policy:n},s=!1;return{prepare:(i="")=>Bh(e,t,i,r),finish:()=>{if(!s){if(s=!0,n!=="persistent"&&Fs(e,r.numericSnapshot),n!=="persistent"){Fs(e,r.standardSnapshot);for(let[i,o]of r.standardClosedSnapshot)o?(e.state.closedStandardFds??=new Set,e.state.closedStandardFds.add(i)):e.state.closedStandardFds?.delete(i)}if(n==="bare"){Fs(e,r.fdVariableSnapshot);for(let[i,o]of r.fdVariableEnv)o===void 0?e.state.env.delete(i):e.state.env.set(i,o);e.state.nextFd=r.nextFd}}}}}function Zn(e){if(!e.error)throw new Error("Expected a redirection error");if(e.errorCause)throw e.errorCause.stdout=e.error.stdout,e.errorCause.stderr=e.error.stderr,e.errorCause;return e.error}async function xo(e,t,n,r){let s=t instanceof q||t instanceof _e||t instanceof ze?t.exitCode:t instanceof P?P.EXIT_CODE:0,i=await fn(e,T(t.stdout,t.stderr,s),n,r.targets,r.dupSources,r.standardRoutes);t.stdout=i.stdout,t.stderr=i.stderr,t.internalOutputAccounting=i.internalOutputAccounting??{stdout:B(i.stdout),stderr:B(i.stderr)}}async function rt(e,t,n,r){let s=Gn(e,t,wr),i;try{if(i=await s.prepare(n),i.error)return Zn(i);let o=e.state.groupStdin,a=e.state.groupStdinSourceFd;i.stdin!==void 0&&(e.state.groupStdin=i.stdin,e.state.groupStdinSourceFd=i.stdinSourceFd);try{let l=await r(i);return await fn(e,l,t,i.targets,i.dupSources,i.standardRoutes)}finally{i.stdin!==void 0&&(e.state.groupStdin=o,e.state.groupStdinSourceFd=a)}}catch(o){throw!(o instanceof Wt)||!i||await xo(e,o,t,i),o}finally{s.finish()}}async function fn(e,t,n,r,s=new Map,i=new Map,o="bash",a=!1){n.length>0&&(t=e.executionScope.accountResult(t,"redirection"));let{stdout:l,stderr:c,exitCode:u}=t,d=t.stdoutKind==="bytes"||t.stdoutKind===void 0&&t.stdoutEncoding==="binary"?"binary":"utf8",p=b=>d,h={kind:"live-stdout"},y={kind:"live-stderr"},E=b=>{if(!b)return null;if(b.kind==="entry"){if(b.entry.kind==="dup-out"){if(b.entry.sourceFd===1)return{kind:"live-stdout"};if(b.entry.sourceFd===2)return{kind:"live-stderr"}}return b.entry.kind==="output"||b.entry.kind==="readwrite"?{kind:"descriptor",source:b}:null}return b.fd===1?h:b.fd===2?y:null},S=b=>{let A=i.get(b)??nt(e,b);return A?A.kind==="closed"?{kind:"invalid-output",fd:b}:A.kind==="input"||A.kind==="dup-in"?{kind:"invalid-output",fd:b}:A.kind==="dup-out"?A.sourceFd===1?{kind:"live-stdout"}:A.sourceFd===2?{kind:"live-stderr"}:null:A.kind==="output"||A.kind==="readwrite"?{kind:"descriptor",source:{kind:"entry",entry:A,descriptors:ln(e,b)}}:null:null};h=S(1)??h,y=S(2)??y;for(let b=0;b<n.length;b++){let A=n[b];if(A.target.type==="HereDoc"||A.fdVariable)continue;let k=r.get(b);if(k!==void 0)switch(A.operator){case">":case">|":case">>":{let v=A.fd??1;if(v!==1&&v!==2)break;let $=A.operator===">>";if(k==="/dev/stdout"){v===2&&(y=h);break}if(k==="/dev/stderr"){v===1&&(h=y);break}if(k==="/dev/full"){c+=`bash: echo: write error: No space left on device
153
+ `,u=1,v===1&&(l="");break}if(k==="/dev/null"&&v===2){y={kind:"discard"};break}let D=e.fs.resolvePath(e.state.cwd,k);v===1?h={kind:"file",path:D,append:$}:y={kind:"file",path:D,append:$};break}case">&":case"<&":{let v=A.fd??(A.operator==="<&"?0:1);if(v>=Ee||v===0)break;if(k==="-"){v===1?h={kind:"discard"}:y={kind:"discard"};break}let $=E(s.get(b));if(!$)break;A.fd==null&&Ms(k)===null?(h=$,y=$):v===1?h=$:v===2&&(y=$);break}case"&>":{h={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!1},y=h;break}case"&>>":{h={kind:"file",path:e.fs.resolvePath(e.state.cwd,k),append:!0},y=h;break}}}if(l!==""||c!==""){let b=l,A=c;l="",c="",h.kind==="invalid-output"&&b!==""&&(b="",A+=`${a?"":"bash: "}${o}: write error: Bad file descriptor
154
+ `,u=1),y.kind==="invalid-output"&&(A="");let k=async(v,$,D)=>{v.append?await e.fs.appendFile(v.path,$,D):await e.fs.writeFile(v.path,$,D)};if(h===y&&(h.kind==="file"||h.kind==="descriptor")){let v=b+A;v!==""&&(h.kind==="file"?await k(h,v,p(v)):await Ao(e,h.source.entry,h.source.descriptors,v,p(v)))}else for(let[v,$,D]of[[b,h,!0],[A,y,!1]])if(v!=="")switch($.kind){case"live-stdout":l+=v;break;case"live-stderr":c+=v;break;case"file":await k($,v,D?p(v):Tu(v));break;case"descriptor":await Ao(e,$.source.entry,$.source.descriptors,v,D?p(v):Tu(v));break;case"invalid-output":break;case"discard":break}}let g=T(l,c,u);if(t.stdoutKind&&(g.stdoutKind=t.stdoutKind),t.stdoutEncoding==="binary"&&(g.stdoutEncoding="binary"),t.internalPipeStatusOverride&&(g.internalPipeStatusOverride=t.internalPipeStatusOverride),n.length>0||e.state.fileDescriptors?.has(1)===!0||e.state.fileDescriptors?.has(2)===!0){let b=(t.internalOutputAccounting?.stdout??0)+(t.internalOutputAccounting?.stderr??0),A=B(g.stdout),k=B(g.stderr),v=Math.min(A,b);g.internalOutputAccounting={stdout:v,stderr:Math.min(k,b-v)},e.executionScope.accountResult(g,"redirection")}else t.internalOutputAccounting&&(g.internalOutputAccounting=t.internalOutputAccounting);return g}function Wu(e,t){if(e.state.options.posix&&ir.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
155
+ `;throw new q(2,"",r)}let n={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,n),ne}async function Bs(e,t,n,r="",s,i=!1){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,sn(`${t.name}: maximum recursion depth (${e.limits.maxCallDepth}) exceeded, increase executionLimits.maxCallDepth`,"recursion")),e.state.funcNameStack||(e.state.funcNameStack=[]),e.state.callLineStack||(e.state.callLineStack=[]),e.state.sourceStack||(e.state.sourceStack=[]),e.state.funcNameStack.unshift(t.name),e.state.callLineStack.unshift(s??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localArrayScopes??=[],e.state.localArrayScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let o=new Map,a=Number.parseInt(e.state.env.get("#")??"0",10),l=Math.max(n.length,a);for(let p=0;p<l;p++){let h=String(p+1);o.set(h,e.state.env.get(h)),p<n.length?e.state.env.set(h,n[p]):e.state.env.delete(h)}o.set("@",e.state.env.get("@")),o.set("#",e.state.env.get("#")),e.state.env.set("@",n.join(" ")),e.state.env.set("#",String(n.length));let c=!1,u=()=>{if(c)return;c=!0;let p=e.state.localScopes.length-1,h=e.state.localScopes.pop(),y=e.state.localArrayScopes?.pop();if(h)for(let[E,S]of h)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);if(y){e.state.arrays??=new Map;for(let[E,S]of y)S===void 0?(e.state.arrays.delete(E),e.state.associativeArrays?.delete(E)):(e.state.arrays.set(E,Me(S)),e.state.associativeArrays??=new Set,S.kind==="associative"?e.state.associativeArrays.add(E):e.state.associativeArrays.delete(E))}if(Iu(e,p),e.state.fullyUnsetLocals)for(let[E,S]of e.state.fullyUnsetLocals.entries())S===p&&e.state.fullyUnsetLocals.delete(E);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let E=e.state.localExportedVars.pop();if(E)for(let S of E)e.state.exportedVars?.delete(S)}for(let[E,S]of o)S===void 0?e.state.env.delete(E):e.state.env.set(E,S);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},f=null,d=Gn(e,t.redirections,wr);try{if(f=await d.prepare(r),f.error)return Zn(f);let p=f.stdin??r,h=i||f.stdin!==void 0||r!=="",y=await e.executeCommand(t.body,p,h);return fn(e,y,t.redirections,f.targets,f.dupSources,f.standardRoutes)}catch(p){if(p instanceof Wt&&f&&(await xo(e,p,t.redirections,f),p instanceof _e))return T(p.stdout,p.stderr,p.exitCode);throw p}finally{d.finish(),u()}}function Dt(e,t,n,r){let s=n+B(t)+1;if(s>r)throw new P(`shopt: output size limit exceeded (${r} bytes)`,"output_size");return e.push(t),s}var Vs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Vu=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"],zu=[...Vs,...Vu];function Ws(e){return Vs.includes(e)}function Wh(e){return Vu.includes(e)}function Uu(e,t){let n=e.limits.maxArrayElements;if(t.length>n)throw new P(`shopt: argument limit exceeded (${n})`,"array_elements");let r=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),s=!1,i=!1,o=!1,a=!1,l=!1,c=[],u=0;for(;u<t.length;){let E=t[u];if(E==="--"){u++;break}if(E.startsWith("-")&&E.length>1){for(let S=1;S<E.length;S++){let g=E[S];switch(g){case"s":s=!0;break;case"u":i=!0;break;case"p":o=!0;break;case"q":a=!0;break;case"o":l=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${g}: invalid option
156
+ `}}}u++}else break}for(;u<t.length;)c.push(t[u]),u++;if(l)return Vh(e,c,s,i,o,a);if(s&&i)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
157
+ `};if(c.length===0){if(s||i){let S=[];for(let g of Vs){let m=e.state.shoptOptions[g];s&&m?S.push(o?`shopt -s ${g}`:`${g} on`):i&&!m&&S.push(o?`shopt -u ${g}`:`${g} off`)}return{exitCode:0,stdout:S.length>0?`${S.join(`
158
+ `)}
159
+ `:"",stderr:""}}let E=[];for(let S of Vs){let g=e.state.shoptOptions[S];E.push(o?`shopt ${g?"-s":"-u"} ${S}`:`${S} ${g?"on":"off"}`)}return{exitCode:0,stdout:`${E.join(`
160
+ `)}
161
+ `,stderr:""}}let f=!1,d=[],p=0,h=[],y=0;for(let E of c){if(!Ws(E)&&!Wh(E)){p=Dt(d,`shopt: ${E}: invalid shell option name`,p,r),f=!0;continue}if(s)Ws(E)&&(e.state.shoptOptions[E]=!0,yi(e));else if(i)Ws(E)&&(e.state.shoptOptions[E]=!1,yi(e));else if(Ws(E)){let S=e.state.shoptOptions[E];a?S||(f=!0):o?(y=Dt(h,`shopt ${S?"-s":"-u"} ${E}`,y,r),S||(f=!0)):(y=Dt(h,`${E} ${S?"on":"off"}`,y,r),S||(f=!0))}else a?f=!0:o?(y=Dt(h,`shopt -u ${E}`,y,r),f=!0):(y=Dt(h,`${E} off`,y,r),f=!0)}return{exitCode:f?1:0,stdout:h.length>0?`${h.join(`
162
+ `)}
163
+ `:"",stderr:d.length>0?`${d.join(`
164
+ `)}
165
+ `:""}}function Vh(e,t,n,r,s,i){let o=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),a=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),l=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],c=[...a.keys(),...l].sort();if(t.length===0){let y=[];for(let E of c){let S=l.includes(E),g=a.get(E),m=S||!g?!1:e.state.options[g];n&&!m||r&&m||y.push(s?`set ${m?"-o":"+o"} ${E}`:`${E} ${m?"on":"off"}`)}return{exitCode:0,stdout:y.length>0?`${y.join(`
166
+ `)}
167
+ `:"",stderr:""}}let u=!1,f=[],d=0,p=[],h=0;for(let y of t){let E=a.has(y),S=l.includes(y);if(!E&&!S){d=Dt(f,`shopt: ${y}: invalid option name`,d,o),u=!0;continue}if(S){n||r||(i?u=!0:s?(h=Dt(p,`set +o ${y}`,h,o),u=!0):(h=Dt(p,`${y} off`,h,o),u=!0));continue}let g=a.get(y);if(g)if(n)g==="vi"?e.state.options.emacs=!1:g==="emacs"&&(e.state.options.vi=!1),e.state.options[g]=!0,Fn(e);else if(r)e.state.options[g]=!1,Fn(e);else{let m=e.state.options[g];i?m||(u=!0):s?(h=Dt(p,`set ${m?"-o":"+o"} ${y}`,h,o),m||(u=!0)):(h=Dt(p,`${y} ${m?"on":"off"}`,h,o),m||(u=!0))}}return{exitCode:u?1:0,stdout:p.length>0?`${p.join(`
168
+ `)}
169
+ `:"",stderr:f.length>0?`${f.join(`
170
+ `)}
171
+ `:""}}var ju=e=>e.type==="Escaped"?F.literal(`\\${e.value}`):e.type==="DoubleQuoted"?{...e,parts:e.parts.map(ju)}:e,Hu=or,Co=vt,zh=zu,Uh=Co;async function No(e,t){let n=[],r=null,s="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,p=[],h=["alias","arrayvar","binding","builtin","command","directory","disabled","enabled","export","file","function","group","helptopic","hostname","job","keyword","running","service","setopt","shopt","signal","stopped","user","variable"];for(let k=0;k<t.length;k++){let v=t[k];if(v==="-v")n.push("variable");else if(v==="-e")n.push("export");else if(v==="-f")n.push("file");else if(v==="-d")n.push("directory");else if(v==="-k")n.push("keyword");else if(v==="-A"){if(k++,k>=t.length)return L(`compgen: -A: option requires an argument
172
+ `,2);let $=t[k];if(!h.includes($))return L(`compgen: ${$}: invalid action name
173
+ `,2);n.push($)}else if(v==="-W"){if(k++,k>=t.length)return L(`compgen: -W: option requires an argument
174
+ `,2);r=t[k]}else if(v==="-P"){if(k++,k>=t.length)return L(`compgen: -P: option requires an argument
175
+ `,2);s=t[k]}else if(v==="-S"){if(k++,k>=t.length)return L(`compgen: -S: option requires an argument
176
+ `,2);i=t[k]}else if(v==="-o"){if(k++,k>=t.length)return L(`compgen: -o: option requires an argument
177
+ `,2);let $=t[k];if($==="plusdirs")a=!0;else if($==="dirnames")l=!0;else if($==="default")c=!0;else if(!($==="filenames"||$==="nospace"||$==="bashdefault"||$==="noquote"))return L(`compgen: ${$}: invalid option name
178
+ `,2)}else if(v==="-F"){if(k++,k>=t.length)return L(`compgen: -F: option requires an argument
179
+ `,2);f=t[k]}else if(v==="-C"){if(k++,k>=t.length)return L(`compgen: -C: option requires an argument
180
+ `,2);d=t[k]}else if(v==="-X"){if(k++,k>=t.length)return L(`compgen: -X: option requires an argument
181
+ `,2);u=t[k]}else if(v==="-G"){if(k++,k>=t.length)return L(`compgen: -G: option requires an argument
182
+ `,2)}else if(v==="--"){p.push(...t.slice(k+1));break}else v.startsWith("-")||p.push(v)}o=p[0]??null;let y=[],E=new Set,S=()=>e.limits.maxArrayElements-y.length,g=k=>{for(let v of k){if(y.length>=e.limits.maxArrayElements)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(v)>e.limits.maxStringLength)throw new P(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");e.executionScope.consumeWork(1,"compgen completion"),y.push(v),E.add(v)}};if(l){let k=await $o(e,o,S());g(k)}if(c){let k=await qu(e,o,S());g(k)}for(let k of n)if(k==="variable"){let v=qh(e,o,S());g(v)}else if(k==="export"){let v=jh(e,o,S());g(v)}else if(k==="function"){let v=Hh(e,o,S());g(v)}else if(k==="builtin"){let v=Gh(e,o,S());g(v)}else if(k==="keyword"){let v=Zh(e,o,S());g(v)}else if(k==="alias"){let v=Qh(e,o,S());g(v)}else if(k==="shopt"){let v=Kh(e,o,S());g(v)}else if(k==="helptopic"){let v=Xh(e,o,S());g(v)}else if(k==="directory"){let v=await $o(e,o,S());g(v)}else if(k==="file"){let v=await qu(e,o,S());g(v)}else if(k==="user"){let v=Yh(e,o,S());g(v)}else if(k==="command"){let v=await Jh(e,o,S());g(v)}if(r!==null)try{let k=await em(e,r),v=tm(e,k,S(),o);for(let $ of v)g([$])}catch(k){if(k instanceof P)throw k;return T("","",1)}if(a){let k=await $o(e,o,S(),E);for(let v of k)E.has(v)||g([v])}let m="";if(f!==null){let k=e.state.functions.get(f);if(k){let v=new Map,$=ke(e,"COMP_WORDS"),D=$?Me($):void 0;ge(e,"COMP_WORDS"),rr(e,"COMP_WORDS"),v.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),v.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),v.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let x=ke(e,"COMPREPLY"),C=x?Me(x):void 0,I=e.state.env.get("COMPREPLY");ge(e,"COMPREPLY"),e.state.env.delete("COMPREPLY");let W=["compgen",p[0]??"",""];try{let Z=await Bs(e,k,W,"");if(Z.exitCode!==0)return Po(e,v),Qn(e,"COMP_WORDS",D),Qn(e,"COMPREPLY",C),I!==void 0&&e.state.env.set("COMPREPLY",I),T("",Z.stderr,1);m=Z.stdout;let R=nm(e,S());g(R)}catch(Z){if(Z instanceof P)throw Z;return Po(e,v),Qn(e,"COMP_WORDS",D),Qn(e,"COMPREPLY",C),I!==void 0&&e.state.env.set("COMPREPLY",I),T("","",1)}Po(e,v),Qn(e,"COMP_WORDS",D),Qn(e,"COMPREPLY",C),I!==void 0&&e.state.env.set("COMPREPLY",I)}}if(d!==null)try{let k=ot(d),v=await e.executeScript(k);if(v.exitCode!==0)return T("",v.stderr,v.exitCode);if(v.stdout)for(let $ of rm(v.stdout))$.length>0&&g([$])}catch(k){if(k.name==="ParseException")return L(`compgen: -C: ${k.message}
183
+ `,2);throw k}let b=y;if(u!==null){let k=u.startsWith("!"),v=k?u.slice(1):u;b=y.filter($=>{let D=Un($,v,!1,!0,e.limits.maxCallDepth);return k?D:!D})}if(b.length===0&&o!==null)return T(m,"",1);let A=new Nn(e.limits.maxOutputSize,"compgen");A.append(m);for(let k of b)A.append(s).append(k).append(i).append(`
184
+ `);return ee(A.build())}function qh(e,t,n){let r=ct(e,t,n);for(let s of e.state.env.keys())/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(s)&&r.add(s);for(let s of e.state.arrays?.keys()??[])r.add(s);return r.build()}function jh(e,t,n){let r=ct(e,t,n),s=e.state.exportedVars??new Set;for(let i of s)e.state.env.has(i)&&r.add(i);return r.build()}function Hh(e,t,n){let r=ct(e,t,n);for(let s of e.state.functions.keys())r.add(s);return r.build()}function Gh(e,t,n){let r=ct(e,t,n);for(let s of Co)r.add(s);return r.build()}function Zh(e,t,n){let r=ct(e,t,n);for(let s of Hu)r.add(s);return r.build()}function Qh(e,t,n){let r=ct(e,t,n);for(let s of e.state.env.keys())if(s.startsWith("BASH_ALIAS_")){let i=s.slice(11);r.add(i)}return r.build()}function Kh(e,t,n){let r=ct(e,t,n);for(let s of zh)r.add(s);return r.build()}function Xh(e,t,n){let r=ct(e,t,n);for(let s of Uh)r.add(s);return r.build()}async function $o(e,t,n=e.limits.maxArrayElements,r){let s=ct(e,null,n,r);try{let i=e.state.cwd,o=t??"";if(t){let l=t.lastIndexOf("/");if(l!==-1){let c=t.slice(0,l)||"/";o=t.slice(l+1),c.startsWith("/")?i=c:i=`${e.state.cwd}/${c}`}}let a=await e.fs.readdir(i);for(let l of a){e.executionScope.consumeWork(1,"compgen directory scan");let c=`${i}/${l}`;try{if((await e.fs.stat(c)).isDirectory&&(!o||l.startsWith(o)))if(t?.includes("/")){let f=t.lastIndexOf("/"),d=t.slice(0,f+1);s.add(d+l)}else s.add(l)}catch(u){if(u instanceof P)throw u}}}catch(i){if(i instanceof P)throw i}return s.build()}async function qu(e,t,n=e.limits.maxArrayElements){let r=ct(e,null,n);try{let s=e.state.cwd,i=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let l=t.slice(0,a)||"/";i=t.slice(a+1),l.startsWith("/")?s=l:s=`${e.state.cwd}/${l}`}}let o=await e.fs.readdir(s);for(let a of o)if(e.executionScope.consumeWork(1,"compgen file scan"),!i||a.startsWith(i))if(t?.includes("/")){let l=t.lastIndexOf("/"),c=t.slice(0,l+1);r.add(c+a)}else r.add(a)}catch(s){if(s instanceof P)throw s}return r.build()}function Yh(e,t,n){let r=ct(e,t,n);return r.add("root"),r.add("nobody"),r.build()}async function Jh(e,t,n){let r=ct(e,t,n);for(let i of Co)r.add(i);for(let i of e.state.functions.keys())r.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&r.add(i.slice(11));for(let i of Hu)r.add(i);let s=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of s.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)r.add(a)}catch(o){if(o instanceof P)throw o}return r.build()}function ct(e,t,n,r){let s=new Set;return{add(i){if(e.executionScope.consumeWork(1,"compgen candidate collection"),!(t!==null&&!i.startsWith(t))&&!r?.has(i)&&!s.has(i)){if(s.size>=n)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");if(B(i)>e.limits.maxStringLength)throw new P(`compgen: completion string limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");s.add(i)}},build(){return Array.from(s).sort()}}}async function em(e,t){let r=new H().parseWordFromString(t,!1,!1);return await ie(e,F.word(r.parts.map(ju)))}function tm(e,t,n,r){let s=e.state.env.get("IFS")??`
185
+ `;if(s.length===0){if(r!==null&&!t.startsWith(r))return[];if(n===0)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");return[t]}let i=new Set(s.split("")),o=[],a=u=>{if(!(r!==null&&!u.startsWith(r))){if(o.length>=n)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");o.push(u)}},l="",c=0;for(;c<t.length;){let u=t[c];if(u==="\\"&&c+1<t.length){let f=t[c+1];l+=f,c+=2}else i.has(u)?(l.length>0&&(a(l),l=""),c++):(l+=u,c++)}return l.length>0&&a(l),o}function Po(e,t){for(let[n,r]of t)r===void 0?e.state.env.delete(n):e.state.env.set(n,r)}function Qn(e,t,n){e.state.arrays??=new Map,n?e.state.arrays.set(t,Me(n)):e.state.arrays.delete(t)}function nm(e,t){let n=[],r=s=>{if(n.length>=t)throw new P(`compgen: completion element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");n.push(s)};if(Ce(e,"COMPREPLY")){let s=G(e,"COMPREPLY");for(let[,i]of s)r(i)}else{let s=e.state.env.get("COMPREPLY");s!==void 0&&r(s)}return n}function*rm(e){let t=0;for(;t<=e.length;){let n=e.indexOf(`
186
+ `,t),r=n===-1?e.length:n;if(r>t&&(yield e.slice(t,r)),n===-1)return;t=n+1}}function Er(e){for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(n<32||n===127)return!0}return!1}function Ro(e){let t="$'";for(let n=0;n<e.length;n++){let r=e[n],s=e.charCodeAt(n);s===7?t+="\\a":s===8?t+="\\b":s===9?t+="\\t":s===10?t+="\\n":s===11?t+="\\v":s===12?t+="\\f":s===13?t+="\\r":s===27?t+="\\e":s===39?t+="\\'":s===92?t+="\\\\":s<32||s===127?t+=`\\${s.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function Gu(e){if(Er(e))return Zu(e);if(e==="")return 2;if(/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e))return B(e);let t=B(e)+2;for(let n of e)n==="'"&&(t+=3);return t}function be(e){return Er(e)?Ro(e):e===""?"''":/^[a-zA-Z0-9_/.:\-@%+,=]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function zs(e){if(Er(e))return Zu(e);let t=B(e)+2;for(let n of e)(n==="\\"||n==='"'||n==="$"||n==="`")&&t++;return t}function dn(e){return Er(e)?Ro(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}function Zu(e){let t=3;for(let n of e){let r=n.codePointAt(0)??0;r===7||r===8||r===9||r===10||r===11||r===12||r===13||r===27||r===39||r===92?t+=2:r<32||r===127?t+=4:t+=B(n)}return t}function br(e){return Er(e)?Ro(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\$/g,"\\$").replace(/`/g,"\\`")}"`}var sm=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Io(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")n=!0;else if(d==="-r")r=!0;else if(d==="-D")s=!0;else if(d==="-W"){if(f++,f>=t.length)return L(`complete: -W: option requires an argument
187
+ `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return L(`complete: -F: option requires an argument
188
+ `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return L(`complete: -o: option requires an argument
189
+ `,2);let p=t[f];if(!sm.includes(p))return L(`complete: ${p}: invalid option name
190
+ `,2);l.push(p)}else if(d==="-A"){if(f++,f>=t.length)return L(`complete: -A: option requires an argument
191
+ `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return L(`complete: -C: option requires an argument
192
+ `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return L(`complete: -G: option requires an argument
193
+ `,2)}else if(d==="-P"){if(f++,f>=t.length)return L(`complete: -P: option requires an argument
194
+ `,2)}else if(d==="-S"){if(f++,f>=t.length)return L(`complete: -S: option requires an argument
195
+ `,2)}else if(d==="-X"){if(f++,f>=t.length)return L(`complete: -X: option requires an argument
196
+ `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(r){if(u.length===0)return e.state.completionSpecs.clear(),e.state.defaultCompletionSpec=void 0,e.state.emptyCompletionSpec=void 0,ee("");for(let f of u)e.state.completionSpecs.delete(f);return ee("")}if(n)return u.length===0?Do(e):Do(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!s)return Do(e);if(o&&u.length===0&&!s)return L(`complete: -F: option requires a command name
197
+ `,2);if(s){let f={isDefault:!0};return i!==void 0&&(f.wordlist=i),o!==void 0&&(f.function=o),a!==void 0&&(f.command=a),l.length>0&&(f.options=l),c.length>0&&(f.actions=c),e.state.defaultCompletionSpec=f,ee("")}for(let f of u){let d=Object.create(null);i!==void 0&&(d.wordlist=i),o!==void 0&&(d.function=o),a!==void 0&&(d.command=a),l.length>0&&(d.options=l),c.length>0&&(d.actions=c),e.state.completionSpecs.set(f,d)}return ee("")}function Do(e,t){let n=e.state.completionSpecs??new Map;if(n.size===0&&!e.state.defaultCompletionSpec){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
198
+ `;return T("",i,1)}return ee("")}let r=[],s=t||Array.from(n.keys());for(let i of s){let o=n.get(i);if(!o){if(t)return T(r.join(`
183
199
  `)+(r.length>0?`
184
200
  `:""),`complete: ${i}: no completion specification
185
- `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${Ee(l)}`;if(o.actions)for(let l of o.actions)a+=` -A ${Ee(l)}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W ${Ee(o.wordlist)}`:a+=` -W ${Ee(o.wordlist)}`),o.function!==void 0&&(a+=` -F ${Ee(o.function)}`),o.command!==void 0&&(a+=` -C ${Ee(o.command)}`),o.isDefault&&(a+=" -D"),a+=`${i.startsWith("-")?" -- ":" "}${Ee(i)}`,r.push(a)}if(!t&&e.state.defaultCompletionSpec){let i=e.state.defaultCompletionSpec,o="complete";for(let a of i.options??[])o+=` -o ${Ee(a)}`;for(let a of i.actions??[])o+=` -A ${Ee(a)}`;i.wordlist!==void 0&&(o+=` -W ${Ee(i.wordlist)}`),i.function!==void 0&&(o+=` -F ${Ee(i.function)}`),i.command!==void 0&&(o+=` -C ${Ee(i.command)}`),o+=" -D",r.push(o)}return r.length===0?J(""):J(`${r.join(`
201
+ `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${be(l)}`;if(o.actions)for(let l of o.actions)a+=` -A ${be(l)}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W ${be(o.wordlist)}`:a+=` -W ${be(o.wordlist)}`),o.function!==void 0&&(a+=` -F ${be(o.function)}`),o.command!==void 0&&(a+=` -C ${be(o.command)}`),o.isDefault&&(a+=" -D"),a+=`${i.startsWith("-")?" -- ":" "}${be(i)}`,r.push(a)}if(!t&&e.state.defaultCompletionSpec){let i=e.state.defaultCompletionSpec,o="complete";for(let a of i.options??[])o+=` -o ${be(a)}`;for(let a of i.actions??[])o+=` -A ${be(a)}`;i.wordlist!==void 0&&(o+=` -W ${be(i.wordlist)}`),i.function!==void 0&&(o+=` -F ${be(i.function)}`),i.command!==void 0&&(o+=` -C ${be(i.command)}`),o+=" -D",r.push(o)}return r.length===0?ee(""):ee(`${r.join(`
186
202
  `)}
187
- `)}var Tu=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function vo(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")n=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return _(`compopt: -o: option requires an argument
188
- `,2);let c=t[a];if(!Tu.includes(c))return _(`compopt: ${c}: invalid option name
189
- `,2);s.push(c)}else if(l==="+o"){if(a++,a>=t.length)return _(`compopt: +o: option requires an argument
190
- `,2);let c=t[a];if(!Tu.includes(c))return _(`compopt: ${c}: invalid option name
191
- `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(n){let a=e.state.defaultCompletionSpec??{isDefault:!0},l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.defaultCompletionSpec=a,J("")}if(r){let a=e.state.emptyCompletionSpec??Object.create(null),l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.emptyCompletionSpec=a,J("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of s)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return J("")}return _(`compopt: not currently executing completion function
192
- `,1)}function ko(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Wt;return te}if(t.length>1)throw new U(1,"",`bash: continue: too many arguments
193
- `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new U(1,"",`bash: continue: ${t[0]}: numeric argument required
194
- `);n=r}throw new Qe(n)}function Fu(e,t){let n="";return e.state.integerVars?.has(t)&&(n+="i"),e.state.lowercaseVars?.has(t)&&(n+="l"),le(e,t)&&(n+="n"),e.state.readonlyVars?.has(t)&&(n+="r"),e.state.uppercaseVars?.has(t)&&(n+="u"),e.state.exportedVars?.has(t)&&(n+="x"),n===""?"--":`-${n}`}function xo(e){return Ee(e)}function $o(e){return`'${e.replace(/'/g,"'\\''")}'`}function Mu(e,t){let n="",r="",s=!1;for(let i of t){let o=Fu(e,i);if(e.state.associativeArrays?.has(i)){let u=vt(e,i);if(u.length===0)n+=`declare -A ${i}=()
195
- `;else{let f=u.map(d=>{let p=oe(e,i,d)??"",h=xo(p);return`[${$o(d)}]=${h}`});n+=`declare -A ${i}=(${f.join(" ")})
196
- `}continue}let l=be(e,i);if(l.length>0){let u=l.map(f=>{let d=oe(e,i,f)??"";return`[${f}]=${cn(d)}`});n+=`declare -a ${i}=(${u.join(" ")})
197
- `;continue}if(Pe(e,i)){n+=`declare -a ${i}=()
198
- `;continue}let c=e.state.env.get(i);if(c!==void 0)n+=`declare ${o} ${i}=${mr(c)}
203
+ `)}var Qu=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function Oo(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let n=!1,r=!1,s=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")n=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return L(`compopt: -o: option requires an argument
204
+ `,2);let c=t[a];if(!Qu.includes(c))return L(`compopt: ${c}: invalid option name
205
+ `,2);s.push(c)}else if(l==="+o"){if(a++,a>=t.length)return L(`compopt: +o: option requires an argument
206
+ `,2);let c=t[a];if(!Qu.includes(c))return L(`compopt: ${c}: invalid option name
207
+ `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(n){let a=e.state.defaultCompletionSpec??{isDefault:!0},l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.defaultCompletionSpec=a,ee("")}if(r){let a=e.state.emptyCompletionSpec??Object.create(null),l=new Set(a.options??[]);for(let c of s)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.emptyCompletionSpec=a,ee("")}if(o.length>0){for(let a of o){let l=e.state.completionSpecs.get(a)??{},c=new Set(l.options??[]);for(let u of s)c.add(u);for(let u of i)c.delete(u);l.options=c.size>0?Array.from(c):void 0,e.state.completionSpecs.set(a,l)}return ee("")}return L(`compopt: not currently executing completion function
208
+ `,1)}function _o(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new zt;return ne}if(t.length>1)throw new q(1,"",`bash: continue: too many arguments
209
+ `);let n=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new q(1,"",`bash: continue: ${t[0]}: numeric argument required
210
+ `);n=r}throw new Ke(n)}function Ku(e,t){let n="";return e.state.integerVars?.has(t)&&(n+="i"),e.state.lowercaseVars?.has(t)&&(n+="l"),ce(e,t)&&(n+="n"),e.state.readonlyVars?.has(t)&&(n+="r"),e.state.uppercaseVars?.has(t)&&(n+="u"),e.state.exportedVars?.has(t)&&(n+="x"),n===""?"--":`-${n}`}function Lo(e){return be(e)}function To(e){return`'${e.replace(/'/g,"'\\''")}'`}function Xu(e,t){let n="",r="",s=!1;for(let i of t){let o=Ku(e,i);if(e.state.associativeArrays?.has(i)){let u=xt(e,i);if(u.length===0)n+=`declare -A ${i}=()
211
+ `;else{let f=u.map(d=>{let p=ae(e,i,d)??"",h=Lo(p);return`[${To(d)}]=${h}`});n+=`declare -A ${i}=(${f.join(" ")})
212
+ `}continue}let l=Se(e,i);if(l.length>0){let u=l.map(f=>{let d=ae(e,i,f)??"";return`[${f}]=${dn(d)}`});n+=`declare -a ${i}=(${u.join(" ")})
213
+ `;continue}if(Ce(e,i)){n+=`declare -a ${i}=()
214
+ `;continue}let c=e.state.env.get(i);if(c!==void 0)n+=`declare ${o} ${i}=${br(c)}
199
215
  `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?n+=`declare ${o} ${i}
200
216
  `:(r+=`bash: declare: ${i}: not found
201
- `,s=!0)}}return L(n,r,s?1:0)}function Bu(e,t){let{filterExport:n,filterReadonly:r,filterNameref:s,filterIndexedArray:i,filterAssocArray:o}=t,a=n||r||s||i||o,l="",c=new Set;for(let f of e.state.env.keys())f.startsWith("BASH_")||c.add(f);for(let f of e.state.arrays?.keys()??[])c.add(f);if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=Fu(e,f),p=e.state.associativeArrays?.has(f),h=be(e,f),m=!p&&Pe(e,f);if(a&&(o&&!p||i&&!m||n&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||s&&!le(e,f)))continue;if(p){let S=vt(e,f);if(S.length===0)l+=`declare -A ${f}=()
202
- `;else{let g=S.map(y=>{let b=oe(e,f,y)??"",A=xo(b);return`[${$o(y)}]=${A}`});l+=`declare -A ${f}=(${g.join(" ")})
203
- `}continue}if(h.length>0){let S=h.map(g=>{let y=oe(e,f,g)??"";return`[${g}]=${cn(y)}`});l+=`declare -a ${f}=(${S.join(" ")})
204
- `;continue}if(Pe(e,f)){l+=`declare -a ${f}=()
205
- `;continue}let E=e.state.env.get(f);E!==void 0&&(l+=`declare ${d} ${f}=${mr(E)}
206
- `)}return J(l)}function Wu(e){let t="",n=Array.from(e.state.associativeArrays??[]).sort();for(let r of n){let s=vt(e,r);if(s.length===0)t+=`declare -A ${r}=()
207
- `;else{let i=s.map(o=>{let a=oe(e,r,o)??"",l=xo(a);return`[${$o(o)}]=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
208
- `}}return J(t)}function Vu(e){let t="",n=new Set(Array.from(e.state.arrays??[]).filter(([,s])=>s.kind==="indexed").map(([s])=>s)),r=Array.from(n).sort();for(let s of r){let i=be(e,s);if(i.length===0)t+=`declare -a ${s}=()
209
- `;else{let o=i.map(a=>{let l=oe(e,s,a)??"";return`[${a}]=${cn(l)}`});t+=`declare -a ${s}=(${o.join(" ")})
210
- `}}return J(t)}function zu(e){let t="",n=new Set;for(let s of e.state.env.keys())s.startsWith("BASH_")||n.add(s);let r=Array.from(n).sort();for(let s of r){if(e.state.associativeArrays?.has(s)||be(e,s).length>0||Pe(e,s))continue;let a=e.state.env.get(s);a!==void 0&&(t+=`${s}=${Ee(a)}
211
- `)}return J(t)}function Po(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function yr(e,t){return e.state.integerVars?.has(t)??!1}function Co(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Uh(e,t){return e.state.lowercaseVars?.has(t)??!1}function No(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function qh(e,t){return e.state.uppercaseVars?.has(t)??!1}function Gn(e,t,n){return Uh(e,t)?n.toLowerCase():qh(e,t)?n.toUpperCase():n}async function Uu(e,t){try{let n=new j,r=re(n,t),s=await X(e,r.expression);return String(s)}catch{return"0"}}function jh(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let n=t[0],r=n.length;if(e[r]!=="[")return null;let s=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")s++;else if(e[r]==="]"&&(s--,s===0))break;if(s!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:n,indexExpr:o,value:a}}async function Ro(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,p=!1,h=!1,m=!1,E=!1,S=!1,g=[];for(let x=0;x<t.length;x++){let C=t[x];if(C==="-a")r=!0;else if(C==="-A")s=!0;else if(C==="-r")i=!0;else if(C==="-x")o=!0;else if(C==="-p")a=!0;else if(C==="-n")l=!0;else if(C==="+n")c=!0;else if(C==="+a")u=!0;else if(C==="+x")f=!0;else if(C==="--"){g.push(...t.slice(x+1));break}else if(C.startsWith("+")){for(let D of C.slice(1))if(D==="n")c=!0;else if(D==="a")u=!0;else if(D==="x")f=!0;else if(D!=="r"){if(D!=="i"){if(!(D==="f"||D==="F"))return L("",`bash: typeset: +${D}: invalid option
212
- `,2)}}}else if(C==="-i")d=!0;else if(C==="-l")p=!0;else if(C==="-u")h=!0;else if(C==="-f")m=!0;else if(C==="-F")E=!0;else if(C==="-g")S=!0;else if(C.startsWith("-"))for(let D of C.slice(1))if(D==="a")r=!0;else if(D==="A")s=!0;else if(D==="r")i=!0;else if(D==="x")o=!0;else if(D==="p")a=!0;else if(D==="n")l=!0;else if(D==="i")d=!0;else if(D==="l")p=!0;else if(D==="u")h=!0;else if(D==="f")m=!0;else if(D==="F")E=!0;else if(D==="g")S=!0;else return L("",`bash: typeset: -${D}: invalid option
213
- `,2);else g.push(C)}let b=e.state.localScopes.length>0&&!S,A=x=>{if(!b)return;let C=e.state.localScopes[e.state.localScopes.length-1];C.has(x)||C.set(x,e.state.env.get(x))},k=x=>{if(!b)return;let C=e.state.localScopes[e.state.localScopes.length-1];for(C.has(x)||C.set(x,e.state.env.get(x)),e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let D=e.state.localArrayScopes.at(-1);if(D&&!D.has(x)){let B=ve(e,x);D.set(x,B?Te(B):void 0)}},v=x=>{b&&rn(e,x)};if(E){if(g.length===0){let D=Array.from(e.state.functions.keys()).sort(),B="";for(let H of D)B+=`declare -f ${H}
214
- `;return J(B)}let x=!0,C="";for(let D of g)e.state.functions.has(D)?C+=`${D}
215
- `:x=!1;return L(C,"",x?0:1)}if(m){if(g.length===0){let C="",D=Array.from(e.state.functions.keys()).sort();for(let B of D)C+=`${B} ()
217
+ `,s=!0)}}return T(n,r,s?1:0)}function Yu(e,t){let{filterExport:n,filterReadonly:r,filterNameref:s,filterIndexedArray:i,filterAssocArray:o}=t,a=n||r||s||i||o,l="",c=new Set;for(let f of e.state.env.keys())f.startsWith("BASH_")||c.add(f);for(let f of e.state.arrays?.keys()??[])c.add(f);if(e.state.localVarDepth)for(let f of e.state.localVarDepth.keys())c.add(f);if(e.state.associativeArrays)for(let f of e.state.associativeArrays)c.add(f);let u=Array.from(c).sort();for(let f of u){let d=Ku(e,f),p=e.state.associativeArrays?.has(f),h=Se(e,f),y=!p&&Ce(e,f);if(a&&(o&&!p||i&&!y||n&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||s&&!ce(e,f)))continue;if(p){let S=xt(e,f);if(S.length===0)l+=`declare -A ${f}=()
218
+ `;else{let g=S.map(m=>{let b=ae(e,f,m)??"",A=Lo(b);return`[${To(m)}]=${A}`});l+=`declare -A ${f}=(${g.join(" ")})
219
+ `}continue}if(h.length>0){let S=h.map(g=>{let m=ae(e,f,g)??"";return`[${g}]=${dn(m)}`});l+=`declare -a ${f}=(${S.join(" ")})
220
+ `;continue}if(Ce(e,f)){l+=`declare -a ${f}=()
221
+ `;continue}let E=e.state.env.get(f);E!==void 0&&(l+=`declare ${d} ${f}=${br(E)}
222
+ `)}return ee(l)}function Ju(e){let t="",n=Array.from(e.state.associativeArrays??[]).sort();for(let r of n){let s=xt(e,r);if(s.length===0)t+=`declare -A ${r}=()
223
+ `;else{let i=s.map(o=>{let a=ae(e,r,o)??"",l=Lo(a);return`[${To(o)}]=${l}`});t+=`declare -A ${r}=(${i.join(" ")})
224
+ `}}return ee(t)}function ef(e){let t="",n=new Set(Array.from(e.state.arrays??[]).filter(([,s])=>s.kind==="indexed").map(([s])=>s)),r=Array.from(n).sort();for(let s of r){let i=Se(e,s);if(i.length===0)t+=`declare -a ${s}=()
225
+ `;else{let o=i.map(a=>{let l=ae(e,s,a)??"";return`[${a}]=${dn(l)}`});t+=`declare -a ${s}=(${o.join(" ")})
226
+ `}}return ee(t)}function tf(e){let t="",n=new Set;for(let s of e.state.env.keys())s.startsWith("BASH_")||n.add(s);let r=Array.from(n).sort();for(let s of r){if(e.state.associativeArrays?.has(s)||Se(e,s).length>0||Ce(e,s))continue;let a=e.state.env.get(s);a!==void 0&&(t+=`${s}=${be(a)}
227
+ `)}return ee(t)}function Fo(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Sr(e,t){return e.state.integerVars?.has(t)??!1}function Mo(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function im(e,t){return e.state.lowercaseVars?.has(t)??!1}function Bo(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function om(e,t){return e.state.uppercaseVars?.has(t)??!1}function Kn(e,t,n){return im(e,t)?n.toLowerCase():om(e,t)?n.toUpperCase():n}async function nf(e,t){try{let n=new H,r=se(n,t),s=await Y(e,r.expression);return String(s)}catch{return"0"}}function am(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let n=t[0],r=n.length;if(e[r]!=="[")return null;let s=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")s++;else if(e[r]==="]"&&(s--,s===0))break;if(s!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:n,indexExpr:o,value:a}}async function Us(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,p=!1,h=!1,y=!1,E=!1,S=!1,g=[];for(let x=0;x<t.length;x++){let C=t[x];if(C==="-a")r=!0;else if(C==="-A")s=!0;else if(C==="-r")i=!0;else if(C==="-x")o=!0;else if(C==="-p")a=!0;else if(C==="-n")l=!0;else if(C==="+n")c=!0;else if(C==="+a")u=!0;else if(C==="+x")f=!0;else if(C==="--"){g.push(...t.slice(x+1));break}else if(C.startsWith("+")){for(let I of C.slice(1))if(I==="n")c=!0;else if(I==="a")u=!0;else if(I==="x")f=!0;else if(I!=="r"){if(I!=="i"){if(!(I==="f"||I==="F"))return T("",`bash: typeset: +${I}: invalid option
228
+ `,2)}}}else if(C==="-i")d=!0;else if(C==="-l")p=!0;else if(C==="-u")h=!0;else if(C==="-f")y=!0;else if(C==="-F")E=!0;else if(C==="-g")S=!0;else if(C.startsWith("-"))for(let I of C.slice(1))if(I==="a")r=!0;else if(I==="A")s=!0;else if(I==="r")i=!0;else if(I==="x")o=!0;else if(I==="p")a=!0;else if(I==="n")l=!0;else if(I==="i")d=!0;else if(I==="l")p=!0;else if(I==="u")h=!0;else if(I==="f")y=!0;else if(I==="F")E=!0;else if(I==="g")S=!0;else return T("",`bash: typeset: -${I}: invalid option
229
+ `,2);else g.push(C)}let b=e.state.localScopes.length>0&&!S,A=x=>{if(!b)return;let C=e.state.localScopes[e.state.localScopes.length-1];C.has(x)||C.set(x,e.state.env.get(x))},k=x=>{if(!b)return;let C=e.state.localScopes[e.state.localScopes.length-1];for(C.has(x)||C.set(x,e.state.env.get(x)),e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let I=e.state.localArrayScopes.at(-1);if(I&&!I.has(x)){let W=ke(e,x);I.set(x,W?Me(W):void 0)}},v=x=>{b&&an(e,x)};if(E){if(g.length===0){let I=Array.from(e.state.functions.keys()).sort(),W="";for(let Z of I)W+=`declare -f ${Z}
230
+ `;return ee(W)}let x=!0,C="";for(let I of g)e.state.functions.has(I)?C+=`${I}
231
+ `:x=!1;return T(C,"",x?0:1)}if(y){if(g.length===0){let C="",I=Array.from(e.state.functions.keys()).sort();for(let W of I)C+=`${W} ()
216
232
  {
217
233
  # function body
218
234
  }
219
- `;return J(C)}let x=!0;for(let C of g)e.state.functions.has(C)||(x=!1);return L("","",x?0:1)}if(a&&g.length>0)return Mu(e,g);if(a&&g.length===0)return Bu(e,{filterExport:o,filterReadonly:i,filterNameref:l,filterIndexedArray:r,filterAssocArray:s});if(g.length===0&&s&&!a)return Wu(e);if(g.length===0&&r&&!a)return Vu(e);if(g.length===0&&!a)return zu(e);let $="",R=0;for(let x of g){let C=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(C&&!u){let N=C[1],W=C[2],V=ce(e,N);if(V)return V;if(s&&be(e,N).length>0){$+=`bash: declare: ${N}: cannot convert indexed to associative array
220
- `,R=1;continue}if((r||!s&&!r)&&e.state.associativeArrays?.has(N)){$+=`bash: declare: ${N}: cannot convert associative to indexed array
221
- `,R=1;continue}let I=s&&W.includes("[")?vs(W,n):void 0,O=I===void 0?Tt(W,{...n,maxElements:s?n.maxElements*2:n.maxElements}):void 0;if(e.executionScope.consumeWork(I?.length??O?.length??0,"declare array assignment"),k(N),s?(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(N),jt(e,N,"associative")):jt(e,N,"indexed"),ye(e,N),e.state.env.delete(N),s&&W.includes("["))for(let[F,ne]of I??[])q(e,N,F,Jt(e,ne),"associative");else if(s){let F=O??[];for(let ne=0;ne<F.length;ne+=2){let Q=F[ne],Ie=ne+1<F.length?F[ne+1]:"";q(e,N,Q,Ie,"associative")}}else{let F=O??[];if(F.some(Q=>/^\[[^\]]+\]=/.test(Q))){let Q=0;for(let Ie of F){let ct=Ie.match(/^\[([^\]]+)\]=(.*)$/);if(ct){let Rt=ct[1],ut=ct[2],ft;if(/^-?\d+$/.test(Rt))ft=Number.parseInt(Rt,10);else try{let Dt=new j,Hf=re(Dt,Rt);ft=await X(e,Hf.expression)}catch{ft=0}q(e,N,ft,Jt(e,ut)),Q=ft+1}else q(e,N,Q,Ie),Q++}}else for(let Q=0;Q<F.length;Q++)q(e,N,Q,F[Q])}v(N),i&&Ge(e,N),o&&mt(e,N);continue}if(c){let N=x.includes("=")?x.slice(0,x.indexOf("=")):x;if(Vl(e,N),!x.includes("="))continue}if(f){let N=x.includes("=")?x.slice(0,x.indexOf("=")):x;if(ns(e,N),!x.includes("="))continue}let D=jh(x);if(D){let{name:N,indexExpr:W,value:V}=D,I=ce(e,N);if(I)return I;k(N);let O;try{let F=new j,ne=re(F,W);O=await X(e,ne.expression)}catch{let F=parseInt(W,10);O=Number.isNaN(F)?0:F}q(e,N,O,V),v(N),i&&Ge(e,N),o&&mt(e,N);continue}let B=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(B&&!u){let N=B[1],W=B[2],V=ce(e,N);if(V)return V;k(N);let I=Tt(W,n);if(e.state.associativeArrays?.has(N)){let O=vs(W,n);e.executionScope.consumeWork(O.length,"declare array append"),mn(e,N,O.map(([F])=>F));for(let[F,ne]of O)q(e,N,F,ne,"associative")}else{e.executionScope.consumeWork(I.length,"declare array append");let O=be(e,N),F=0,ne=e.state.env.get(N);O.length===0&&ne!==void 0?(q(e,N,0,ne),e.state.env.delete(N),F=1):O.length>0&&(F=Math.max(...O)+1),mn(e,N,Array.from({length:I.length},(Q,Ie)=>F+Ie));for(let Q=0;Q<I.length;Q++)q(e,N,F+Q,I[Q])}v(N),i&&Ge(e,N),o&&mt(e,N);continue}let H=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(H){let N=H[1],W=H[2],V=ce(e,N);if(V)return V;A(N),d&&Po(e,N),p&&Co(e,N),h&&No(e,N);let O=be(e,N).length>0||e.state.associativeArrays?.has(N);if(yr(e,N)){let F=e.state.env.get(N)??"0",ne=parseInt(F,10)||0,Q=parseInt(await Uu(e,W),10)||0;W=String(ne+Q),e.state.env.set(N,W)}else if(O){W=Gn(e,N,W);let F=oe(e,N,0)??"";q(e,N,0,Vt([F,W],"",e.limits.maxStringLength,"declare append"))}else{W=Gn(e,N,W);let F=e.state.env.get(N)??"";e.state.env.set(N,Vt([F,W],"",e.limits.maxStringLength,"declare append"))}v(N),i&&Ge(e,N),o&&mt(e,N),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(N));continue}if(x.includes("=")){let N=x.indexOf("="),W=x.slice(0,N),V=x.slice(N+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(W)){$+=`bash: typeset: \`${W}': not a valid identifier
222
- `,R=1;continue}let I=ce(e,W);if(I)return I;if(A(W),l){if(V!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(V)){$+=`bash: declare: \`${V}': invalid variable name for name reference
223
- `,R=1;continue}e.state.env.set(W,V),Lt(e,W),V!==""&&Yr(e,V)&&Li(e,W),v(W),i&&Ge(e,W),o&&mt(e,W);continue}if(d&&Po(e,W),p&&Co(e,W),h&&No(e,W),yr(e,W)&&(V=await Uu(e,V)),V=Gn(e,W,V),le(e,W)){let O=Fe(e,W);O&&O!==W?e.state.env.set(O,V):e.state.env.set(W,V)}else e.state.env.set(W,V);v(W),i&&Ge(e,W),o&&mt(e,W),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(W))}else{let N=x;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(N)){$+=`bash: typeset: \`${N}': not a valid identifier
224
- `,R=1;continue}if(r||s?k(N):A(N),l){Lt(e,N);let V=e.state.env.get(N);V!==void 0&&V!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(V)?zl(e,N):V&&Yr(e,V)&&Li(e,N),v(N),i&&Ge(e,N),o&&mt(e,N);continue}if(d&&Po(e,N),p&&Co(e,N),h&&No(e,N),s){if(be(e,N).length>0){$+=`bash: declare: ${N}: cannot convert indexed to associative array
225
- `,R=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(N),jt(e,N,"associative")}let W=Pe(e,N);!e.state.env.has(N)&&!W&&(r||s?jt(e,N,s?"associative":"indexed"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(N))),v(N),i&&Ge(e,N),o&&mt(e,N)}}return L("",$,R)}async function Do(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-a")r=!0;else if(l==="-A")s=!0;else if(l==="-p")i=!0;else if(l==="--"){o.push(...t.slice(a+1));break}else l.startsWith("-")||o.push(l)}if(o.length===0){let a="",l=Array.from(e.state.readonlyVars||[]).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${c}="${f}"
226
- `}}return J(a)}for(let a of o){let l=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(l){let d=l[1],p=l[2],h=ce(e,d);if(h)return h;let m=Tt(p,n);if(e.state.associativeArrays?.has(d)){let E=vs(p,n);e.executionScope.consumeWork(E.length,"readonly array append"),mn(e,d,E.map(([S])=>S));for(let[S,g]of E)q(e,d,S,g,"associative")}else{e.executionScope.consumeWork(m.length,"readonly array append");let E=be(e,d),S=0,g=e.state.env.get(d);E.length===0&&g!==void 0?(q(e,d,0,g),e.state.env.delete(d),S=1):E.length>0&&(S=Math.max(...E)+1),mn(e,d,Array.from({length:m.length},(y,b)=>S+b));for(let y=0;y<m.length;y++)q(e,d,S+y,m[y])}Ge(e,d);continue}let c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c){let d=c[1],p=c[2],h=ce(e,d);if(h)return h;let m=e.state.env.get(d)??"";e.state.env.set(d,Vt([m,p],"",e.limits.maxStringLength,"readonly append")),Ge(e,d);continue}let u=Eu(a,n);if(u.value===void 0&&!u.isArray){Ge(e,u.name);continue}let f=await bu(e,u,{makeReadonly:!0});if(f)return f}return te}function Io(e){return e.state.directoryStack??=[],e.state.directoryStack}function gr(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Gh(e){let t=e.split("/").filter(r=>r&&r!=="."),n=[];for(let r of t)r===".."?n.pop():n.push(r);return`/${n.join("/")}`}async function Oo(e,t){let n=Io(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return _(`bash: pushd: too many arguments
227
- `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return _(`bash: pushd: ${l}: invalid option
228
- `,2);if(r!==void 0)return _(`bash: pushd: too many arguments
229
- `,2);r=l}}if(r===void 0){if(n.length<2)return _(`bash: pushd: no other directory
230
- `,1);let a=n[0];n[0]=n[1],n[1]=a,r=n[0]}let s;if(r.startsWith("/"))s=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),s=`/${a.join("/")}`}else r==="."?s=e.state.cwd:r.startsWith("~")?s=(e.state.env.get("HOME")||"/")+r.slice(1):s=`${e.state.cwd}/${r}`;s=Gh(s);try{if(!(await e.fs.stat(s)).isDirectory)return _(`bash: pushd: ${r}: Not a directory
231
- `,1)}catch{return _(`bash: pushd: ${r}: No such file or directory
232
- `,1)}n.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=s,e.state.env.set("PWD",s),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[s,...n].map(a=>gr(a,i)).join(" ")}
233
- `;return J(o)}function _o(e,t){let n=Io(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?_(`bash: popd: ${o}: invalid option
234
- `,2):_(`bash: popd: too many arguments
235
- `,2);if(n.length===0)return _(`bash: popd: directory stack empty
236
- `,1);let r=n.shift();if(!r)return _(`bash: popd: directory stack empty
237
- `,1);e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let s=e.state.env.get("HOME")||"",i=`${[r,...n].map(o=>gr(o,s)).join(" ")}
238
- `;return J(i)}function Lo(e,t){let n=Io(e),r=!1,s=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")s=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return _(`bash: dirs: -${f}: invalid option
239
- `,2);else return _(`bash: dirs: too many arguments
240
- `,1);if(r)return e.state.directoryStack=[],te;let a=[e.state.cwd,...n],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=s?u:gr(u,l);return` ${f} ${d}`}).join(`
235
+ `;return ee(C)}let x=!0;for(let C of g)e.state.functions.has(C)||(x=!1);return T("","",x?0:1)}if(a&&g.length>0)return Xu(e,g);if(a&&g.length===0)return Yu(e,{filterExport:o,filterReadonly:i,filterNameref:l,filterIndexedArray:r,filterAssocArray:s});if(g.length===0&&s&&!a)return Ju(e);if(g.length===0&&r&&!a)return ef(e);if(g.length===0&&!a)return tf(e);let $="",D=0;for(let x of g){let C=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(C&&!u){let R=C[1],V=C[2],z=ue(e,R);if(z)return z;if(s&&Se(e,R).length>0){$+=`bash: declare: ${R}: cannot convert indexed to associative array
236
+ `,D=1;continue}if((r||!s&&!r)&&e.state.associativeArrays?.has(R)){$+=`bash: declare: ${R}: cannot convert associative to indexed array
237
+ `,D=1;continue}let O=s&&V.includes("[")?Rs(V,n):void 0,_=O===void 0?Mt(V,{...n,maxElements:s?n.maxElements*2:n.maxElements}):void 0;if(e.executionScope.consumeWork(O?.length??_?.length??0,"declare array assignment"),k(R),s?(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(R),Zt(e,R,"associative")):Zt(e,R,"indexed"),ge(e,R),e.state.env.delete(R),s&&V.includes("["))for(let[M,re]of O??[])j(e,R,M,nn(e,re),"associative");else if(s){let M=_??[];for(let re=0;re<M.length;re+=2){let K=M[re],Oe=re+1<M.length?M[re+1]:"";j(e,R,K,Oe,"associative")}}else{let M=_??[];if(M.some(K=>/^\[[^\]]+\]=/.test(K))){let K=0;for(let Oe of M){let ut=Oe.match(/^\[([^\]]+)\]=(.*)$/);if(ut){let It=ut[1],ft=ut[2],dt;if(/^-?\d+$/.test(It))dt=Number.parseInt(It,10);else try{let Ot=new H,od=se(Ot,It);dt=await Y(e,od.expression)}catch{dt=0}j(e,R,dt,nn(e,ft)),K=dt+1}else j(e,R,K,Oe),K++}}else for(let K=0;K<M.length;K++)j(e,R,K,M[K])}v(R),i&&Ze(e,R),o&&gt(e,R);continue}if(c){let R=x.includes("=")?x.slice(0,x.indexOf("=")):x;if(Xl(e,R),!x.includes("="))continue}if(f){let R=x.includes("=")?x.slice(0,x.indexOf("=")):x;if(ls(e,R),!x.includes("="))continue}let I=am(x);if(I){let{name:R,indexExpr:V,value:z}=I,O=ue(e,R);if(O)return O;k(R);let _;try{let M=new H,re=se(M,V);_=await Y(e,re.expression)}catch{let M=parseInt(V,10);_=Number.isNaN(M)?0:M}j(e,R,_,z),v(R),i&&Ze(e,R),o&&gt(e,R);continue}let W=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(W&&!u){let R=W[1],V=W[2],z=ue(e,R);if(z)return z;k(R);let O=Mt(V,n);if(e.state.associativeArrays?.has(R)){let _=Rs(V,n);e.executionScope.consumeWork(_.length,"declare array append"),wn(e,R,_.map(([M])=>M));for(let[M,re]of _)j(e,R,M,re,"associative")}else{e.executionScope.consumeWork(O.length,"declare array append");let _=Se(e,R),M=0,re=e.state.env.get(R);_.length===0&&re!==void 0?(j(e,R,0,re),e.state.env.delete(R),M=1):_.length>0&&(M=Math.max(..._)+1),wn(e,R,Array.from({length:O.length},(K,Oe)=>M+Oe));for(let K=0;K<O.length;K++)j(e,R,M+K,O[K])}v(R),i&&Ze(e,R),o&&gt(e,R);continue}let Z=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(Z){let R=Z[1],V=Z[2],z=ue(e,R);if(z)return z;A(R),d&&Fo(e,R),p&&Mo(e,R),h&&Bo(e,R);let _=Se(e,R).length>0||e.state.associativeArrays?.has(R);if(Sr(e,R)){let M=e.state.env.get(R)??"0",re=parseInt(M,10)||0,K=parseInt(await nf(e,V),10)||0;V=String(re+K),e.state.env.set(R,V)}else if(_){V=Kn(e,R,V);let M=ae(e,R,0)??"";j(e,R,0,Ut([M,V],"",e.limits.maxStringLength,"declare append"))}else{V=Kn(e,R,V);let M=e.state.env.get(R)??"";e.state.env.set(R,Ut([M,V],"",e.limits.maxStringLength,"declare append"))}v(R),i&&Ze(e,R),o&&gt(e,R),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(R));continue}if(x.includes("=")){let R=x.indexOf("="),V=x.slice(0,R),z=x.slice(R+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(V)){$+=`bash: typeset: \`${V}': not a valid identifier
238
+ `,D=1;continue}let O=ue(e,V);if(O)return O;if(A(V),l){if(z!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(z)){$+=`bash: declare: \`${z}': invalid variable name for name reference
239
+ `,D=1;continue}e.state.env.set(V,z),Ft(e,V),z!==""&&ss(e,z)&&ji(e,V),v(V),i&&Ze(e,V),o&&gt(e,V);continue}if(d&&Fo(e,V),p&&Mo(e,V),h&&Bo(e,V),Sr(e,V)&&(z=await nf(e,z)),z=Kn(e,V,z),ce(e,V)){let _=Be(e,V);_&&_!==V?e.state.env.set(_,z):e.state.env.set(V,z)}else e.state.env.set(V,z);v(V),i&&Ze(e,V),o&&gt(e,V),e.state.options.allexport&&!f&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(V))}else{let R=x;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(R)){$+=`bash: typeset: \`${R}': not a valid identifier
240
+ `,D=1;continue}if(r||s?k(R):A(R),l){Ft(e,R);let z=e.state.env.get(R);z!==void 0&&z!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(z)?Yl(e,R):z&&ss(e,z)&&ji(e,R),v(R),i&&Ze(e,R),o&&gt(e,R);continue}if(d&&Fo(e,R),p&&Mo(e,R),h&&Bo(e,R),s){if(Se(e,R).length>0){$+=`bash: declare: ${R}: cannot convert indexed to associative array
241
+ `,D=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(R),Zt(e,R,"associative")}let V=Ce(e,R);!e.state.env.has(R)&&!V&&(r||s?Zt(e,R,s?"associative":"indexed"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(R))),v(R),i&&Ze(e,R),o&&gt(e,R)}}return T("",$,D)}async function Wo(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength},r=!1,s=!1,i=!1,o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-a")r=!0;else if(l==="-A")s=!0;else if(l==="-p")i=!0;else if(l==="--"){o.push(...t.slice(a+1));break}else l.startsWith("-")||o.push(l)}if(o.length===0){let a="",l=Array.from(e.state.readonlyVars||[]).sort();for(let c of l){let u=e.state.env.get(c);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${c}="${f}"
242
+ `}}return ee(a)}for(let a of o){let l=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(l){let d=l[1],p=l[2],h=ue(e,d);if(h)return h;let y=Mt(p,n);if(e.state.associativeArrays?.has(d)){let E=Rs(p,n);e.executionScope.consumeWork(E.length,"readonly array append"),wn(e,d,E.map(([S])=>S));for(let[S,g]of E)j(e,d,S,g,"associative")}else{e.executionScope.consumeWork(y.length,"readonly array append");let E=Se(e,d),S=0,g=e.state.env.get(d);E.length===0&&g!==void 0?(j(e,d,0,g),e.state.env.delete(d),S=1):E.length>0&&(S=Math.max(...E)+1),wn(e,d,Array.from({length:y.length},(m,b)=>S+b));for(let m=0;m<y.length;m++)j(e,d,S+m,y[m])}Ze(e,d);continue}let c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c){let d=c[1],p=c[2],h=ue(e,d);if(h)return h;let y=e.state.env.get(d)??"";e.state.env.set(d,Ut([y,p],"",e.limits.maxStringLength,"readonly append")),Ze(e,d);continue}let u=Nu(a,n);if(u.value===void 0&&!u.isArray){Ze(e,u.name);continue}let f=await Ru(e,u,{makeReadonly:!0});if(f)return f}return ne}function Vo(e){return e.state.directoryStack??=[],e.state.directoryStack}function Ar(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function lm(e){let t=e.split("/").filter(r=>r&&r!=="."),n=[];for(let r of t)r===".."?n.pop():n.push(r);return`/${n.join("/")}`}async function zo(e,t){let n=Vo(e),r;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(r!==void 0)return L(`bash: pushd: too many arguments
243
+ `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return L(`bash: pushd: ${l}: invalid option
244
+ `,2);if(r!==void 0)return L(`bash: pushd: too many arguments
245
+ `,2);r=l}}if(r===void 0){if(n.length<2)return L(`bash: pushd: no other directory
246
+ `,1);let a=n[0];n[0]=n[1],n[1]=a,r=n[0]}let s;if(r.startsWith("/"))s=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),s=`/${a.join("/")}`}else r==="."?s=e.state.cwd:r.startsWith("~")?s=(e.state.env.get("HOME")||"/")+r.slice(1):s=`${e.state.cwd}/${r}`;s=lm(s);try{if(!(await e.fs.stat(s)).isDirectory)return L(`bash: pushd: ${r}: Not a directory
247
+ `,1)}catch{return L(`bash: pushd: ${r}: No such file or directory
248
+ `,1)}n.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=s,e.state.env.set("PWD",s),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[s,...n].map(a=>Ar(a,i)).join(" ")}
249
+ `;return ee(o)}function Uo(e,t){let n=Vo(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?L(`bash: popd: ${o}: invalid option
250
+ `,2):L(`bash: popd: too many arguments
251
+ `,2);if(n.length===0)return L(`bash: popd: directory stack empty
252
+ `,1);let r=n.shift();if(!r)return L(`bash: popd: directory stack empty
253
+ `,1);e.state.previousDir=e.state.cwd,e.state.cwd=r,e.state.env.set("PWD",r),e.state.env.set("OLDPWD",e.state.previousDir);let s=e.state.env.get("HOME")||"",i=`${[r,...n].map(o=>Ar(o,s)).join(" ")}
254
+ `;return ee(i)}function qo(e,t){let n=Vo(e),r=!1,s=!1,i=!1,o=!1;for(let u of t)if(u!=="--")if(u.startsWith("-"))for(let f of u.slice(1))if(f==="c")r=!0;else if(f==="l")s=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return L(`bash: dirs: -${f}: invalid option
255
+ `,2);else return L(`bash: dirs: too many arguments
256
+ `,1);if(r)return e.state.directoryStack=[],ne;let a=[e.state.cwd,...n],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=s?u:Ar(u,l);return` ${f} ${d}`}).join(`
241
257
  `),c+=`
242
- `):i?c=a.map(u=>s?u:gr(u,l)).join(`
258
+ `):i?c=a.map(u=>s?u:Ar(u,l)).join(`
243
259
  `)+`
244
- `:c=a.map(u=>s?u:gr(u,l)).join(" ")+`
245
- `,J(c)}async function _s(e,t,n,r=!1){let s=t;if(s.length>0){let l=s[0];if(l==="--")s=s.slice(1);else if(l.startsWith("-")&&l!=="-"&&l.length>1)return _(`bash: eval: ${l}: invalid option
260
+ `:c=a.map(u=>s?u:Ar(u,l)).join(" ")+`
261
+ `,ee(c)}async function jo(e,t,n,r=!1){let s=t;if(s.length>0){let l=s[0];if(l==="--")s=s.slice(1);else if(l.startsWith("-")&&l!=="-"&&l.length>1)return L(`bash: eval: ${l}: invalid option
246
262
  eval: usage: eval [arg ...]
247
- `,2)}if(s.length===0)return te;let i=s.join(" ");if(i.trim()==="")return te;let o=e.state.groupStdin,a=r||n!==void 0&&n!=="";a&&(e.state.groupStdin=n??"");try{let l=it(i);return await e.executeScript(l)}catch(l){if(l instanceof Ze||l instanceof Qe||l instanceof Oe||l instanceof U||l instanceof $e)throw l;if(l.name==="ParseException")return _(`bash: eval: ${l.message}
248
- `);throw l}finally{(a||o!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=o)}}function To(e,t){let n,r="";if(t.length===0)n=e.state.lastExitCode;else{let s=t[0];if(s===""||!/^-?\d+$/.test(s))r=`bash: exit: ${s}: numeric argument required
249
- `,n=2;else{let i=BigInt(s);n=Number((i%256n+256n)%256n)}}throw new U(n,"",r)}function Fo(e,t){let n=!1,r=[];for(let o of t)o==="-n"?n=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!n){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);u!==void 0&&(o+=`declare -x ${c}=${mr(u)}
250
- `)}return J(o)}if(n){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=o.slice(c+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a))return L("",`bash: export: \`${o}': not a valid identifier
251
- `,1);l!==void 0&&(ce(e,a),e.state.env.set(a,l)),ns(e,a)}return te}let s="",i=0;for(let o of r){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=u[2],c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=o.slice(f+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){s+=`bash: export: \`${o}': not a valid identifier
252
- `,i=1;continue}if(l!==void 0)if(ce(e,a),c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");mt(e,a)}return L("",s,i)}function Ls(e,t){if(t.length<2)return _(`bash: getopts: usage: getopts optstring name [arg ...]
253
- `);let n=t[0],r=t[1],s=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=n.startsWith(":"),o=i?n.slice(1):n,a;if(t.length>2)a=t.slice(2);else{let m=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let E=1;E<=m;E++)a.push(e.state.env.get(String(E))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return s||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),Ls(e,t);let p=o.indexOf(d);if(p===-1){let m="";return i?e.state.env.set("OPTARG",d):m=`bash: illegal option -- ${d}
254
- `,s||e.state.env.set(r,"?"),f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:s?2:0,stdout:"",stderr:m}}if(p+1<o.length&&o[p+1]===":")if(f+1<u.length)e.state.env.set("OPTARG",u.slice(f+1)),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(l>=a.length){let m="";return i?(e.state.env.set("OPTARG",d),s||e.state.env.set(r,":")):(m=`bash: option requires an argument -- ${d}
255
- `,s||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:0,stdout:"",stderr:m}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return s||e.state.env.set(r,d),{exitCode:s?2:0,stdout:"",stderr:""}}async function Mo(e,t){e.state.hashTable||(e.state.hashTable=new Map);let n=!1,r=!1,s=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let h=t[c];if(h==="--"){c++,l.push(...t.slice(c));break}if(h==="-r")n=!0,c++;else if(h==="-d")r=!0,c++;else if(h==="-l")s=!0,c++;else if(h==="-t")o=!0,c++;else if(h==="-p"){if(i=!0,c++,c>=t.length)return _(`bash: hash: -p: option requires an argument
256
- `,1);a=t[c],c++}else if(h.startsWith("-")&&h.length>1){for(let m of h.slice(1))if(m==="r")n=!0;else if(m==="d")r=!0;else if(m==="l")s=!0;else if(m==="t")o=!0;else return m==="p"?_(`bash: hash: -p: option requires an argument
257
- `,1):_(`bash: hash: -${m}: invalid option
258
- `,1);c++}else l.push(h),c++}if(n)return e.state.hashTable.clear(),te;if(r){if(l.length===0)return _(`bash: hash: -d: option requires an argument
259
- `,1);let h=!1,m="";for(let E of l)e.state.hashTable.has(E)?e.state.hashTable.delete(E):(m+=`bash: hash: ${E}: not found
260
- `,h=!0);return h?_(m,1):te}if(o){if(l.length===0)return _(`bash: hash: -t: option requires an argument
261
- `,1);let h="",m=!1,E="";for(let S of l){let g=e.state.hashTable.get(S);g?l.length>1?h+=`${S} ${g}
263
+ `,2)}if(s.length===0)return ne;let i=s.join(" ");if(i.trim()==="")return ne;let o=e.state.groupStdin,a=r||n!==void 0&&n!=="";a&&(e.state.groupStdin=n??"");try{let l=ot(i);return await e.executeScript(l)}catch(l){if(l instanceof Qe||l instanceof Ke||l instanceof _e||l instanceof q||l instanceof Pe)throw l;if(l.name==="ParseException")return L(`bash: eval: ${l.message}
264
+ `);throw l}finally{(a||o!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=o)}}function Ho(e,t){let n,r="";if(t.length===0)n=e.state.lastExitCode;else{let s=t[0];if(s===""||!/^-?\d+$/.test(s))r=`bash: exit: ${s}: numeric argument required
265
+ `,n=2;else{let i=BigInt(s);n=Number((i%256n+256n)%256n)}}throw new q(n,"",r)}function Go(e,t){let n=!1,r=[];for(let o of t)o==="-n"?n=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!n){let o="",a=e.state.exportedVars??new Set,l=Array.from(a).sort();for(let c of l){let u=e.state.env.get(c);u!==void 0&&(o+=`declare -x ${c}=${br(u)}
266
+ `)}return ee(o)}if(n){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=o.slice(c+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a))return T("",`bash: export: \`${o}': not a valid identifier
267
+ `,1);l!==void 0&&(ue(e,a),e.state.env.set(a,l)),ls(e,a)}return ne}let s="",i=0;for(let o of r){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=u[2],c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=o.slice(f+1)}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){s+=`bash: export: \`${o}': not a valid identifier
268
+ `,i=1;continue}if(l!==void 0)if(ue(e,a),c){let f=e.state.env.get(a)??"";e.state.env.set(a,f+l)}else e.state.env.set(a,l);else e.state.env.has(a)||e.state.env.set(a,"");gt(e,a)}return T("",s,i)}function qs(e,t){if(t.length<2)return L(`bash: getopts: usage: getopts optstring name [arg ...]
269
+ `);let n=t[0],r=t[1],s=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=n.startsWith(":"),o=i?n.slice(1):n,a;if(t.length>2)a=t.slice(2);else{let y=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let E=1;E<=y;E++)a.push(e.state.env.get(String(E))||"")}let l=Number.parseInt(e.state.env.get("OPTIND")||"1",10);l<1&&(l=1);let c=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),l>a.length)return s||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),s||e.state.env.set(r,"?"),{exitCode:s?2:1,stdout:"",stderr:""};let f=c===0?1:c,d=u[f];if(!d)return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),qs(e,t);let p=o.indexOf(d);if(p===-1){let y="";return i?e.state.env.set("OPTARG",d):y=`bash: illegal option -- ${d}
270
+ `,s||e.state.env.set(r,"?"),f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:s?2:0,stdout:"",stderr:y}}if(p+1<o.length&&o[p+1]===":")if(f+1<u.length)e.state.env.set("OPTARG",u.slice(f+1)),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(l>=a.length){let y="";return i?(e.state.env.set("OPTARG",d),s||e.state.env.set(r,":")):(y=`bash: option requires an argument -- ${d}
271
+ `,s||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:s?2:0,stdout:"",stderr:y}}e.state.env.set("OPTARG",a[l]),e.state.env.set("OPTIND",String(l+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else f+1<u.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(f+1)),e.state.env.set("OPTIND",String(l))):(e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return s||e.state.env.set(r,d),{exitCode:s?2:0,stdout:"",stderr:""}}async function Zo(e,t){e.state.hashTable||(e.state.hashTable=new Map);let n=!1,r=!1,s=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let h=t[c];if(h==="--"){c++,l.push(...t.slice(c));break}if(h==="-r")n=!0,c++;else if(h==="-d")r=!0,c++;else if(h==="-l")s=!0,c++;else if(h==="-t")o=!0,c++;else if(h==="-p"){if(i=!0,c++,c>=t.length)return L(`bash: hash: -p: option requires an argument
272
+ `,1);a=t[c],c++}else if(h.startsWith("-")&&h.length>1){for(let y of h.slice(1))if(y==="r")n=!0;else if(y==="d")r=!0;else if(y==="l")s=!0;else if(y==="t")o=!0;else return y==="p"?L(`bash: hash: -p: option requires an argument
273
+ `,1):L(`bash: hash: -${y}: invalid option
274
+ `,1);c++}else l.push(h),c++}if(n)return e.state.hashTable.clear(),ne;if(r){if(l.length===0)return L(`bash: hash: -d: option requires an argument
275
+ `,1);let h=!1,y="";for(let E of l)e.state.hashTable.has(E)?e.state.hashTable.delete(E):(y+=`bash: hash: ${E}: not found
276
+ `,h=!0);return h?L(y,1):ne}if(o){if(l.length===0)return L(`bash: hash: -t: option requires an argument
277
+ `,1);let h="",y=!1,E="";for(let S of l){let g=e.state.hashTable.get(S);g?l.length>1?h+=`${S} ${g}
262
278
  `:h+=`${g}
263
279
  `:(E+=`bash: hash: ${S}: not found
264
- `,m=!0)}return m?{exitCode:1,stdout:h,stderr:E}:J(h)}if(i){if(l.length===0)return _(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
265
- `,1);let h=l[0];return e.state.hashTable.set(h,a),te}if(l.length===0){if(e.state.hashTable.size===0)return J(`hash: hash table empty
266
- `);let h="";if(s)for(let[m,E]of e.state.hashTable){let S=m.startsWith("-")?" --":"";h+=`builtin hash -p ${Ee(E)}${S} ${Ee(m)}
280
+ `,y=!0)}return y?{exitCode:1,stdout:h,stderr:E}:ee(h)}if(i){if(l.length===0)return L(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
281
+ `,1);let h=l[0];return e.state.hashTable.set(h,a),ne}if(l.length===0){if(e.state.hashTable.size===0)return ee(`hash: hash table empty
282
+ `);let h="";if(s)for(let[y,E]of e.state.hashTable){let S=y.startsWith("-")?" --":"";h+=`builtin hash -p ${be(E)}${S} ${be(y)}
267
283
  `}else{h=`hits command
268
- `;for(let[,m]of e.state.hashTable)h+=` 1 ${m}
269
- `}return J(h)}let u=!1,f="",p=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let h of l){if(h.includes("/")){f+=`bash: hash: ${h}: cannot use / in name
270
- `,u=!0;continue}let m=!1;for(let E of p){if(!E)continue;let S=`${E}/${h}`;if(await e.fs.exists(S)){e.state.hashTable.set(h,S),m=!0;break}}m||(f+=`bash: hash: ${h}: not found
271
- `,u=!0)}return u?_(f,1):te}var qu=new Map([[":",[": [arguments]",`Null command.
284
+ `;for(let[,y]of e.state.hashTable)h+=` 1 ${y}
285
+ `}return ee(h)}let u=!1,f="",p=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let h of l){if(h.includes("/")){f+=`bash: hash: ${h}: cannot use / in name
286
+ `,u=!0;continue}let y=!1;for(let E of p){if(!E)continue;let S=`${E}/${h}`;if(await e.fs.exists(S)){e.state.hashTable.set(h,S),y=!0;break}}y||(f+=`bash: hash: ${h}: not found
287
+ `,u=!0)}return u?L(f,1):ne}var rf=new Map([[":",[": [arguments]",`Null command.
272
288
  No effect; the command does nothing.
273
289
  Exit Status:
274
290
  Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
@@ -332,7 +348,12 @@ eval: usage: eval [arg ...]
332
348
  -V print a more verbose description of each COMMAND
333
349
 
334
350
  Exit Status:
335
- Returns exit status of COMMAND, or failure if COMMAND is not found.`]],["compgen",["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
351
+ Returns exit status of COMMAND, or failure if COMMAND is not found.`]],["compopt",["compopt [-o option] [-DE] [name ...]",`Modify completion options for each NAME.
352
+ Intended to be used from within a shell function generating possible
353
+ completions. just-bash accepts and validates the options; completion
354
+ behavior is not interactive.
355
+ Exit Status:
356
+ Returns success unless an invalid option is supplied.`]],["compgen",["compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]",`Display possible completions depending on the options.
336
357
  Intended to be used from within a shell function generating possible
337
358
  completions. If the optional WORD argument is supplied, matches against
338
359
  WORD are generated.
@@ -613,37 +634,37 @@ eval: usage: eval [arg ...]
613
634
  job specification, and reports its termination status.
614
635
  Exit Status:
615
636
  Returns the status of the last ID; fails if ID is invalid or an invalid
616
- option is given.`]]]),ju=[...qu.keys()].sort();function Bo(e,t){let n=!1,r=[],s=0;for(;s<t.length;){let l=t[s];if(l==="--"){for(s++;s<t.length;)r.push(t[s]),s++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")n=!0;else return _(`bash: help: -${u}: invalid option
617
- `,2)}s++}else r.push(l),s++}if(r.length===0)return Zh();let i="",o=!1,a="";for(let l of r){let c=Hh(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
618
- `,o=!0;continue}for(let u of c){let f=qu.get(u);if(!f)continue;let[d,p]=f;n?i+=`${u}: ${d}
637
+ option is given.`]]]),sf=[...rf.keys()].sort();function Qo(e,t){let n=!1,r=[],s=0;for(;s<t.length;){let l=t[s];if(l==="--"){for(s++;s<t.length;)r.push(t[s]),s++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")n=!0;else return L(`bash: help: -${u}: invalid option
638
+ `,2)}s++}else r.push(l),s++}if(r.length===0)return um();let i="",o=!1,a="";for(let l of r){let c=cm(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
639
+ `,o=!0;continue}for(let u of c){let f=rf.get(u);if(!f)continue;let[d,p]=f;n?i+=`${u}: ${d}
619
640
  `:i+=`${u}: ${d}
620
641
  ${p}
621
- `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Hh(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),n=he(`^${t}$`);return ju.filter(r=>n.test(r))}function Zh(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,n=ju.slice(),r=Math.ceil(n.length/2);for(let s=0;s<r;s++){let i=n[s]||"",o=n[s+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return J(`${e.join(`
642
+ `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function cm(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),n=me(`^${t}$`);return sf.filter(r=>n.test(r))}function um(){let e=[];e.push("just-bash shell builtins"),e.push("These shell commands are defined internally. Type `help' to see this list."),e.push("Type `help name' to find out more about the function `name'."),e.push("");let t=36,n=sf.slice(),r=Math.ceil(n.length/2);for(let s=0;s<r;s++){let i=n[s]||"",o=n[s+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return ee(`${e.join(`
622
643
  `)}
623
- `)}function Qh(e){let t=[],n="",r=0;for(let s of e){for(let i of s)i==="("?r++:i===")"&&r--;n?n+=` ${s}`:n=s,r===0&&(t.push(n),n="")}return n&&t.push(n),t}async function Wo(e,t){if(t.length===0)return _(`bash: let: expression expected
624
- `);let n=Qh(t),r=0;for(let s of n)try{let o=it(`(( ${s} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await X(e,a.expression.expression))}}catch(i){return _(`bash: let: ${s}: ${i.message}
625
- `)}return L("","",r===0?1:0)}async function Vo(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength};if(e.state.localScopes.length===0)return _(`bash: local: can only be used in a function
626
- `);let r=e.state.localScopes[e.state.localScopes.length-1];for(e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let s=e.state.localArrayScopes.at(-1),i=d=>{if(r.has(d)||r.set(d,e.state.env.get(d)),s&&!s.has(d)){let p=ve(e,d);s.set(d,p?Te(p):void 0)}},o="",a=0,l=!1,c=!1,u=!1,f=[];for(let d of t)if(d==="-n")l=!0;else if(d==="-a")c=!0;else if(d==="-p")u=!0;else if(d.startsWith("-")&&!d.includes("="))for(let p of d.slice(1))p==="n"?l=!0:p==="a"?c=!0:p==="p"&&(u=!0);else f.push(d);if(f.length===0){let d="",p=Array.from(r.keys()).sort();for(let h of p){let m=e.state.env.get(h);m!==void 0&&(d+=`${h}=${m}
627
- `)}return L(d,"",0)}for(let d of f){let p,h,m=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(m){p=m[1];let b=m[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(p)){o+=`bash: local: \`${d}': not a valid identifier
628
- `,a=1;continue}ce(e,p,"bash");let A=Tt(b,n);e.executionScope.consumeWork(A.length,"local array assignment"),i(p),ye(e,p),jt(e,p,"indexed");for(let k=0;k<A.length;k++)q(e,p,k,A[k]);rn(e,p),l&&Lt(e,p);continue}let E=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(E){p=E[1];let b=E[2];ce(e,p,"bash"),i(p);let A=Tt(b,n);e.executionScope.consumeWork(A.length,"local array append");let k=be(e,p),v=0,$=e.state.env.get(p);k.length===0&&$!==void 0?(q(e,p,0,$),e.state.env.delete(p),v=1):k.length>0&&(v=Math.max(...k)+1),mn(e,p,Array.from({length:A.length},(R,x)=>v+x));for(let R=0;R<A.length;R++)q(e,p,v+R,A[R]);rn(e,p),l&&Lt(e,p);continue}let S=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(S){p=S[1];let b=S[2];ce(e,p,"bash"),r.has(p)||r.set(p,e.state.env.get(p));let A=e.state.env.get(p)??"";e.state.env.set(p,Vt([A,b],"",e.limits.maxStringLength,"local append")),rn(e,p),l&&Lt(e,p);continue}let g=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(g){p=g[1];let b=g[2],A=g[3];ce(e,p,"bash"),i(p);let k;try{let v=new j,$=re(v,b);k=await X(e,$.expression)}catch{let v=parseInt(b,10);k=Number.isNaN(v)?0:v}q(e,p,k,A),rn(e,p),l&&Lt(e,p);continue}if(d.includes("=")){let b=d.indexOf("=");p=d.slice(0,b),h=d.slice(b+1)}else p=d;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(p)){o+=`bash: local: \`${d}': not a valid identifier
629
- `,a=1;continue}let y=r.has(p);if(h!==void 0){let b=e.state.env.get(p);if(e.state.tempEnvBindings){let A=e.state.accessedTempEnvVars?.has(p),k=e.state.mutatedTempEnvVars?.has(p);if(!A&&!k)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let $=e.state.tempEnvBindings[v];if($.has(p)){b=$.get(p);break}}}Su(e,p,b)}if(!y){let b=e.state.env.get(p);if(e.state.tempEnvBindings)for(let A=e.state.tempEnvBindings.length-1;A>=0;A--){let k=e.state.tempEnvBindings[A];if(k.has(p)){b=k.get(p);break}}r.set(p,b),c&&i(p)}if(c&&h===void 0)ye(e,p),jt(e,p,"indexed");else if(h!==void 0){if(ce(e,p,"bash"),l&&h!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(h)){o+=`bash: local: \`${h}': invalid variable name for name reference
630
- `,a=1;continue}e.state.env.set(p,h),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(p))}else{let b=e.state.tempEnvBindings?.some(A=>A.has(p));!y&&!b&&e.state.env.delete(p)}rn(e,p),l&&Lt(e,p)}return L("",o,a)}function zo(e,t,n){let r=`
644
+ `)}function fm(e){let t=[],n="",r=0;for(let s of e){for(let i of s)i==="("?r++:i===")"&&r--;n?n+=` ${s}`:n=s,r===0&&(t.push(n),n="")}return n&&t.push(n),t}async function Ko(e,t){if(t.length===0)return L(`bash: let: expression expected
645
+ `);let n=fm(t),r=0;for(let s of n)try{let o=ot(`(( ${s} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(r=await Y(e,a.expression.expression))}}catch(i){return L(`bash: let: ${s}: ${i.message}
646
+ `)}return T("","",r===0?1:0)}async function Xo(e,t){let n={maxElements:e.limits.maxArrayElements,maxStringBytes:e.limits.maxStringLength};if(e.state.localScopes.length===0)return L(`bash: local: can only be used in a function
647
+ `);let r=e.state.localScopes[e.state.localScopes.length-1];for(e.state.localArrayScopes??=[];e.state.localArrayScopes.length<e.state.localScopes.length;)e.state.localArrayScopes.push(new Map);let s=e.state.localArrayScopes.at(-1),i=d=>{if(r.has(d)||r.set(d,e.state.env.get(d)),s&&!s.has(d)){let p=ke(e,d);s.set(d,p?Me(p):void 0)}},o="",a=0,l=!1,c=!1,u=!1,f=[];for(let d of t)if(d==="-n")l=!0;else if(d==="-a")c=!0;else if(d==="-p")u=!0;else if(d.startsWith("-")&&!d.includes("="))for(let p of d.slice(1))p==="n"?l=!0:p==="a"?c=!0:p==="p"&&(u=!0);else f.push(d);if(f.length===0){let d="",p=Array.from(r.keys()).sort();for(let h of p){let y=e.state.env.get(h);y!==void 0&&(d+=`${h}=${y}
648
+ `)}return T(d,"",0)}for(let d of f){let p,h,y=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(y){p=y[1];let b=y[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(p)){o+=`bash: local: \`${d}': not a valid identifier
649
+ `,a=1;continue}ue(e,p,"bash");let A=Mt(b,n);e.executionScope.consumeWork(A.length,"local array assignment"),i(p),ge(e,p),Zt(e,p,"indexed");for(let k=0;k<A.length;k++)j(e,p,k,A[k]);an(e,p),l&&Ft(e,p);continue}let E=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(E){p=E[1];let b=E[2];ue(e,p,"bash"),i(p);let A=Mt(b,n);e.executionScope.consumeWork(A.length,"local array append");let k=Se(e,p),v=0,$=e.state.env.get(p);k.length===0&&$!==void 0?(j(e,p,0,$),e.state.env.delete(p),v=1):k.length>0&&(v=Math.max(...k)+1),wn(e,p,Array.from({length:A.length},(D,x)=>v+x));for(let D=0;D<A.length;D++)j(e,p,v+D,A[D]);an(e,p),l&&Ft(e,p);continue}let S=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(S){p=S[1];let b=S[2];ue(e,p,"bash"),r.has(p)||r.set(p,e.state.env.get(p));let A=e.state.env.get(p)??"";e.state.env.set(p,Ut([A,b],"",e.limits.maxStringLength,"local append")),an(e,p),l&&Ft(e,p);continue}let g=d.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(g){p=g[1];let b=g[2],A=g[3];ue(e,p,"bash"),i(p);let k;try{let v=new H,$=se(v,b);k=await Y(e,$.expression)}catch{let v=parseInt(b,10);k=Number.isNaN(v)?0:v}j(e,p,k,A),an(e,p),l&&Ft(e,p);continue}if(d.includes("=")){let b=d.indexOf("=");p=d.slice(0,b),h=d.slice(b+1)}else p=d;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(p)){o+=`bash: local: \`${d}': not a valid identifier
650
+ `,a=1;continue}let m=r.has(p);if(h!==void 0){let b=e.state.env.get(p);if(e.state.tempEnvBindings){let A=e.state.accessedTempEnvVars?.has(p),k=e.state.mutatedTempEnvVars?.has(p);if(!A&&!k)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let $=e.state.tempEnvBindings[v];if($.has(p)){b=$.get(p);break}}}Du(e,p,b)}if(!m){let b=e.state.env.get(p);if(e.state.tempEnvBindings)for(let A=e.state.tempEnvBindings.length-1;A>=0;A--){let k=e.state.tempEnvBindings[A];if(k.has(p)){b=k.get(p);break}}r.set(p,b),c&&i(p)}if(c&&h===void 0)ge(e,p),Zt(e,p,"indexed");else if(h!==void 0){if(ue(e,p,"bash"),l&&h!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(h)){o+=`bash: local: \`${h}': invalid variable name for name reference
651
+ `,a=1;continue}e.state.env.set(p,h),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(p))}else{let b=e.state.tempEnvBindings?.some(A=>A.has(p));!m&&!b&&e.state.env.delete(p)}an(e,p),l&&Ft(e,p)}return T("",o,a)}function js(e,t,n){let r=`
631
652
  `,s=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let g=t[c];g==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
632
- `,c+=2):g==="-n"&&c+1<t.length?(s=Number.parseInt(t[c+1],10)||0,c+=2):g==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):g==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):g==="-t"?(a=!0,c++):g==="-u"||g==="-C"||g==="-c"?c+=2:(g.startsWith("-")||(l=g),c++)}if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l))return L("",`mapfile: ${l}: not a valid identifier
633
- `,1);if(!Number.isSafeInteger(i)||i<0)return L("",`mapfile: invalid array origin
634
- `,1);ce(e,l,"mapfile");let u=n;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=0,p=0,h=0,m=e.limits.maxArrayElements,E=g=>{if(M(g)>e.limits.maxStringLength)throw new P(`mapfile: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");f.push(g)};for(;d<u.length;){e.executionScope.consumeWork(1,"mapfile input");let g=u.indexOf(r,d);if(g===-1){if(d<u.length){if(h<o)h++;else if(s===0||p<s){let A=u.slice(d),k=A.indexOf("\0");if(k!==-1&&(A=A.substring(0,k)),f.length>=m)return L("",`mapfile: array element limit exceeded (${m})
635
- `,1);E(A),p++}}break}let y=u.slice(d,g),b=y.indexOf("\0");if(b!==-1&&(y=y.substring(0,b)),!a&&r!=="\0"&&(y+=r),d=g+r.length,h<o){h++;continue}if(s>0&&p>=s)break;if(f.length>=m)return L("",`mapfile: array element limit exceeded (${m})
636
- `,1);E(y),p++}let S=new Set(i===0?[]:e.state.arrays?.get(l)?.elements.keys()??[]);for(let g=0;g<f.length;g++)if(S.add(String(i+g)),S.size>m)return L("",`mapfile: array element limit exceeded (${m})
637
- `,1);i===0&&ye(e,l);for(let g=0;g<f.length;g++)q(e,l,i+g,f[g]);return e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=""),{...L("","",0),internalStdinConsumed:u.length}}function Uo(e,t,n,r=-1){let s=!1,i=`
638
- `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],p=0,h=!1,m=(I,O)=>{let F=1;for(;F<I.length;){let ne=I[F];if(ne==="r")s=!0,F++;else if(ne==="s")F++;else{if(ne==="d")return F+1<I.length?(i=I.substring(F+1),{nextArgIndex:O+1}):O+1<t.length?(i=t[O+1],{nextArgIndex:O+2}):{nextArgIndex:O+1};if(ne==="n"){if(F+1<I.length){let Q=I.substring(F+1);return a=Number.parseInt(Q,10),(Number.isNaN(a)||a<0)&&(h=!0,a=0),{nextArgIndex:O+1}}else if(O+1<t.length)return a=Number.parseInt(t[O+1],10),(Number.isNaN(a)||a<0)&&(h=!0,a=0),{nextArgIndex:O+2};return{nextArgIndex:O+1}}else if(ne==="N"){if(F+1<I.length){let Q=I.substring(F+1);return l=Number.parseInt(Q,10),(Number.isNaN(l)||l<0)&&(h=!0,l=0),{nextArgIndex:O+1}}else if(O+1<t.length)return l=Number.parseInt(t[O+1],10),(Number.isNaN(l)||l<0)&&(h=!0,l=0),{nextArgIndex:O+2};return{nextArgIndex:O+1}}else{if(ne==="a")return F+1<I.length?(c=I.substring(F+1),{nextArgIndex:O+1}):O+1<t.length?(c=t[O+1],{nextArgIndex:O+2}):{nextArgIndex:O+1};if(ne==="p")return F+1<I.length?(o=I.substring(F+1),{nextArgIndex:O+1}):O+1<t.length?(o=t[O+1],{nextArgIndex:O+2}):{nextArgIndex:O+1};if(ne==="u"){if(F+1<I.length){let Q=I.substring(F+1);return u=Number.parseInt(Q,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:O+1}}else if(O+1<t.length)return u=Number.parseInt(t[O+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:O+2};return{nextArgIndex:O+1}}else if(ne==="t"){if(F+1<I.length){let Q=I.substring(F+1);return f=Number.parseFloat(Q),Number.isNaN(f)&&(f=0),{nextArgIndex:O+1}}else if(O+1<t.length)return f=Number.parseFloat(t[O+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:O+2};return{nextArgIndex:O+1}}else if(ne==="e"||ne==="i"||ne==="P"){if(ne==="i"&&O+1<t.length)return{nextArgIndex:O+2};F++}else F++}}}return{nextArgIndex:O+1}};for(;p<t.length;){let I=t[p];if(I.startsWith("-")&&I.length>1&&I!=="--"){let O=m(I,p);if(O.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(O.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};p=O.nextArgIndex}else if(I==="--")for(p++;p<t.length;)d.push(t[p]),p++;else d.push(I),p++}if(h)return L("","",1);d.length===0&&c===null&&d.push("REPLY");let E=new Set;c&&E.add(c);for(let I of d)E.add(I);l>=0&&d.length===0&&E.add("REPLY");for(let I of E){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(I))return L("",`bash: read: \`${I}': not a valid identifier
639
- `,1);ce(e,I,"bash")}if(f===0){if(c)ye(e,c);else{for(let I of d)e.state.env.set(I,"");d.length===0&&e.state.env.set("REPLY","")}return L("","",0)}if(f<0&&f!==-1)return L("","",1);let S=n,g=tt(e,u),y=u>0&&!(g?.kind==="dup-in"&&g.sourceFd===0);if(y){let I=Ns(e,u);if("error"in I){let F=I.error==="write-only"||u===1||u===2?`bash: read: read error: ${u}: Bad file descriptor
653
+ `,c+=2):g==="-n"&&c+1<t.length?(s=Number.parseInt(t[c+1],10)||0,c+=2):g==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):g==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):g==="-t"?(a=!0,c++):g==="-u"||g==="-C"||g==="-c"?c+=2:(g.startsWith("-")||(l=g),c++)}if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l))return T("",`mapfile: ${l}: not a valid identifier
654
+ `,1);if(!Number.isSafeInteger(i)||i<0)return T("",`mapfile: invalid array origin
655
+ `,1);ue(e,l,"mapfile");let u=n;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=0,p=0,h=0,y=e.limits.maxArrayElements,E=g=>{if(B(g)>e.limits.maxStringLength)throw new P(`mapfile: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");f.push(g)};for(;d<u.length;){e.executionScope.consumeWork(1,"mapfile input");let g=u.indexOf(r,d);if(g===-1){if(d<u.length){if(h<o)h++;else if(s===0||p<s){let A=u.slice(d),k=A.indexOf("\0");if(k!==-1&&(A=A.substring(0,k)),f.length>=y)return T("",`mapfile: array element limit exceeded (${y})
656
+ `,1);E(A),p++}}break}let m=u.slice(d,g),b=m.indexOf("\0");if(b!==-1&&(m=m.substring(0,b)),!a&&r!=="\0"&&(m+=r),d=g+r.length,h<o){h++;continue}if(s>0&&p>=s)break;if(f.length>=y)return T("",`mapfile: array element limit exceeded (${y})
657
+ `,1);E(m),p++}let S=new Set(i===0?[]:e.state.arrays?.get(l)?.elements.keys()??[]);for(let g=0;g<f.length;g++)if(S.add(String(i+g)),S.size>y)return T("",`mapfile: array element limit exceeded (${y})
658
+ `,1);i===0&&ge(e,l);for(let g=0;g<f.length;g++)j(e,l,i+g,f[g]);return e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=""),{...T("","",0),internalStdinConsumed:u.length}}function Yo(e,t,n,r=-1){let s=!1,i=`
659
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],p=0,h=!1,y=(O,_)=>{let M=1;for(;M<O.length;){let re=O[M];if(re==="r")s=!0,M++;else if(re==="s")M++;else{if(re==="d")return M+1<O.length?(i=O.substring(M+1),{nextArgIndex:_+1}):_+1<t.length?(i=t[_+1],{nextArgIndex:_+2}):{nextArgIndex:_+1};if(re==="n"){if(M+1<O.length){let K=O.substring(M+1);return a=Number.parseInt(K,10),(Number.isNaN(a)||a<0)&&(h=!0,a=0),{nextArgIndex:_+1}}else if(_+1<t.length)return a=Number.parseInt(t[_+1],10),(Number.isNaN(a)||a<0)&&(h=!0,a=0),{nextArgIndex:_+2};return{nextArgIndex:_+1}}else if(re==="N"){if(M+1<O.length){let K=O.substring(M+1);return l=Number.parseInt(K,10),(Number.isNaN(l)||l<0)&&(h=!0,l=0),{nextArgIndex:_+1}}else if(_+1<t.length)return l=Number.parseInt(t[_+1],10),(Number.isNaN(l)||l<0)&&(h=!0,l=0),{nextArgIndex:_+2};return{nextArgIndex:_+1}}else{if(re==="a")return M+1<O.length?(c=O.substring(M+1),{nextArgIndex:_+1}):_+1<t.length?(c=t[_+1],{nextArgIndex:_+2}):{nextArgIndex:_+1};if(re==="p")return M+1<O.length?(o=O.substring(M+1),{nextArgIndex:_+1}):_+1<t.length?(o=t[_+1],{nextArgIndex:_+2}):{nextArgIndex:_+1};if(re==="u"){if(M+1<O.length){let K=O.substring(M+1);return u=Number.parseInt(K,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:_+1}}else if(_+1<t.length)return u=Number.parseInt(t[_+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:_+2};return{nextArgIndex:_+1}}else if(re==="t"){if(M+1<O.length){let K=O.substring(M+1);return f=Number.parseFloat(K),Number.isNaN(f)&&(f=0),{nextArgIndex:_+1}}else if(_+1<t.length)return f=Number.parseFloat(t[_+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:_+2};return{nextArgIndex:_+1}}else if(re==="e"||re==="i"||re==="P"){if(re==="i"&&_+1<t.length)return{nextArgIndex:_+2};M++}else M++}}}return{nextArgIndex:_+1}};for(;p<t.length;){let O=t[p];if(O.startsWith("-")&&O.length>1&&O!=="--"){let _=y(O,p);if(_.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(_.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};p=_.nextArgIndex}else if(O==="--")for(p++;p<t.length;)d.push(t[p]),p++;else d.push(O),p++}if(h)return T("","",1);d.length===0&&c===null&&d.push("REPLY");let E=new Set;c&&E.add(c);for(let O of d)E.add(O);l>=0&&d.length===0&&E.add("REPLY");for(let O of E){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(O))return T("",`bash: read: \`${O}': not a valid identifier
660
+ `,1);ue(e,O,"bash")}if(f===0){if(c)ge(e,c);else{for(let O of d)e.state.env.set(O,"");d.length===0&&e.state.env.set("REPLY","")}return T("","",0)}if(f<0&&f!==-1)return T("","",1);let S=n,g=nt(e,u),m=u>0&&!(g?.kind==="dup-in"&&g.sourceFd===0);if(m){let O=Ts(e,u);if("error"in O){let M=O.error==="write-only"||u===1||u===2?`bash: read: read error: ${u}: Bad file descriptor
640
661
  `:`bash: read: ${u}: invalid file descriptor: Bad file descriptor
641
- `;return L("",F,1)}S=I.content}else!S&&e.state.groupStdin!==void 0&&(S=e.state.groupStdin);let b=i===""?"\0":i,A="",k=0,v=I=>{let O=M(I);if(O>e.limits.maxStringLength-k)throw new P(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");A+=I,k+=O},$=I=>{if(M(I)>e.limits.maxStringLength)throw new P(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")},R=0,x=!0,C=I=>{y?on(e,u,I):r>=0?on(e,r,I):e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=S.substring(I),e.state.groupStdinSourceFd!==void 0&&on(e,e.state.groupStdinSourceFd,I))};if(l>=0){let I=Math.min(l,S.length);A=S.substring(0,I),$(A),R=I,x=I>=l,C(R);let O=d[0]||"REPLY";e.state.env.set(O,A);for(let F=1;F<d.length;F++)e.state.env.set(d[F],"");return L("","",x?0:1)}else if(a>=0){let I=0,O=0,F=!1;for(;O<S.length&&I<a;){let ne=S[O];if(ne===b){R=O+1,F=!0;break}if(!s&&ne==="\\"&&O+1<S.length){let Q=S[O+1];if(Q===b&&b===`
642
- `){O+=2,R=O;continue}if(Q===b){O+=2,I++,v(Q),R=O;continue}v(Q),O+=2,I++,R=O}else v(ne),O++,I++,R=O}x=I>=a||F,C(R)}else{R=0;let I=0;for(;I<S.length;){let O=S[I];if(O===b){R=I+b.length,x=!0;break}if(!s&&O==="\\"&&I+1<S.length){let F=S[I+1];if(F===`
643
- `){I+=2;continue}if(F===b){v(F),I+=2;continue}v(O),v(F),I+=2;continue}v(O),I++}if(I>=S.length&&(x=!1,R=I,A.length===0&&S.length===0)){for(let O of d)e.state.env.set(O,"");return c&&ye(e,c),L("","",1)}C(R)}b===`
662
+ `;return T("",M,1)}S=O.content}else!S&&e.state.groupStdin!==void 0&&(S=e.state.groupStdin);let b=i===""?"\0":i,A="",k=0,v=O=>{let _=B(O);if(_>e.limits.maxStringLength-k)throw new P(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length");A+=O,k+=_},$=O=>{if(B(O)>e.limits.maxStringLength)throw new P(`read: string length limit exceeded (${e.limits.maxStringLength} bytes)`,"string_length")},D=0,x=!0,C=O=>{m?cn(e,u,O):r>=0?cn(e,r,O):e.state.groupStdin!==void 0&&!n&&(e.state.groupStdin=S.substring(O),e.state.groupStdinSourceFd!==void 0&&cn(e,e.state.groupStdinSourceFd,O))};if(l>=0){let O=Math.min(l,S.length);A=S.substring(0,O),$(A),D=O,x=O>=l,C(D);let _=d[0]||"REPLY";e.state.env.set(_,A);for(let M=1;M<d.length;M++)e.state.env.set(d[M],"");return T("","",x?0:1)}else if(a>=0){let O=0,_=0,M=!1;for(;_<S.length&&O<a;){let re=S[_];if(re===b){D=_+1,M=!0;break}if(!s&&re==="\\"&&_+1<S.length){let K=S[_+1];if(K===b&&b===`
663
+ `){_+=2,D=_;continue}if(K===b){_+=2,O++,v(K),D=_;continue}v(K),_+=2,O++,D=_}else v(re),_++,O++,D=_}x=O>=a||M,C(D)}else{D=0;let O=0;for(;O<S.length;){let _=S[O];if(_===b){D=O+b.length,x=!0;break}if(!s&&_==="\\"&&O+1<S.length){let M=S[O+1];if(M===`
664
+ `){O+=2;continue}if(M===b){v(M),O+=2;continue}v(_),v(M),O+=2;continue}v(_),O++}if(O>=S.length&&(x=!1,D=O,A.length===0&&S.length===0)){for(let _ of d)e.state.env.set(_,"");return c&&ge(e,c),T("","",1)}C(D)}b===`
644
665
  `&&A.endsWith(`
645
- `)&&(A=A.slice(0,-1));let D=I=>s?I:I.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",D(A)),L("","",x?0:1);let B=Ae(e.state.env),H=e.limits.maxArrayElements;if(c){let{words:I}=_i(A,B,H,void 0,s);ye(e,c);for(let O=0;O<I.length;O++)q(e,c,O,D(I[O]));return L("","",x?0:1)}let N=d.length,{words:W,wordStarts:V}=_i(A,B,H,N,s);for(let I=0;I<d.length;I++){let O=d[I];if(I<d.length-1)e.state.env.set(O,D(W[I]??""));else if(I<V.length){let F=A.substring(V[I]);F=Wl(F,B,s),F=D(F),e.state.env.set(O,F)}else e.state.env.set(O,"")}return L("","",x?0:1)}function qo(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return _("bash: return: can only `return' from a function or sourced script\n");let n=e.state.lastExitCode;if(t.length>0){let r=t[0],s=Number.parseInt(r,10);if(r===""||Number.isNaN(s)||!/^-?\d+$/.test(r))return _(`bash: return: ${r}: numeric argument required
646
- `,2);n=(s%256+256)%256}throw new Oe(n)}var wr=`set: usage: set [-eux] [+eux] [-o option] [+o option]
666
+ `)&&(A=A.slice(0,-1));let I=O=>s?O:O.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",I(A)),T("","",x?0:1);let W=ve(e.state.env),Z=e.limits.maxArrayElements;if(c){let{words:O}=qi(A,W,Z,void 0,s);ge(e,c);for(let _=0;_<O.length;_++)j(e,c,_,I(O[_]));return T("","",x?0:1)}let R=d.length,{words:V,wordStarts:z}=qi(A,W,Z,R,s);for(let O=0;O<d.length;O++){let _=d[O];if(O<d.length-1)e.state.env.set(_,I(V[O]??""));else if(O<z.length){let M=A.substring(z[O]);M=Kl(M,W,s),M=I(M),e.state.env.set(_,M)}else e.state.env.set(_,"")}return T("","",x?0:1)}function Jo(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return L("bash: return: can only `return' from a function or sourced script\n");let n=e.state.lastExitCode;if(t.length>0){let r=t[0],s=Number.parseInt(r,10);if(r===""||Number.isNaN(s)||!/^-?\d+$/.test(r))return L(`bash: return: ${r}: numeric argument required
667
+ `,2);n=(s%256+256)%256}throw new _e(n)}var vr=`set: usage: set [-eux] [+eux] [-o option] [+o option]
647
668
  Options:
648
669
  -e Exit immediately if a command exits with non-zero status
649
670
  +e Disable -e
@@ -659,96 +680,80 @@ Options:
659
680
  +o pipefail Disable pipefail
660
681
  -o xtrace Same as -x
661
682
  +o xtrace Disable xtrace
662
- `,Gu=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),Ts=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),Qu=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Ku=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function jo(e,t,n){t!==null&&(n&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=n,_n(e))}function Kh(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Xh(e,t,n){let r=be(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=oe(e,n,i)??"";s>0&&t.append(" "),t.append(`[${i}]=`),t.reserve(Os(o)),t.append(cn(o))}t.append(")")}function Yh(e,t){if(/^[a-zA-Z0-9_]+$/.test(t)){e.append(t);return}e.reserve(Os(t)),e.append(cn(t))}function Jh(e,t,n){let r=vt(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=oe(e,n,i)??"";s>0&&t.append(" "),t.append("["),Yh(t,i),t.append("]="),t.reserve(Os(o)),t.append(cn(o))}t.append(" )")}function em(e){let t=new Set,n=e.state.associativeArrays??new Set;for(let[r,s]of e.state.arrays??[])s.kind==="indexed"&&!n.has(r)&&t.add(r);return t}function tm(e){return e.state.associativeArrays??new Set}function Hu(e){let t=Qu.map(r=>`${r.padEnd(16)}${e.state.options[r]?"on":"off"}`),n=Ku.map(r=>`${r.padEnd(16)}off`);return`${[...t,...n].sort().join(`
683
+ `,of=new Map([["e","errexit"],["u","nounset"],["x","xtrace"],["v","verbose"],["f","noglob"],["C","noclobber"],["a","allexport"],["n","noexec"],["h",null],["b",null],["m",null],["B",null],["H",null],["P",null],["T",null],["E",null],["p",null]]),Hs=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["noclobber","noclobber"],["noglob","noglob"],["allexport","allexport"],["noexec","noexec"],["posix","posix"],["vi","vi"],["emacs","emacs"],["notify",null],["monitor",null],["braceexpand",null],["histexpand",null],["physical",null],["functrace",null],["errtrace",null],["privileged",null],["hashall",null],["ignoreeof",null],["interactive-comments",null],["keyword",null],["onecmd",null]]),cf=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],uf=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function ea(e,t,n){t!==null&&(n&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=n,Fn(e))}function dm(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function pm(e,t,n){let r=Se(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=ae(e,n,i)??"";s>0&&t.append(" "),t.append(`[${i}]=`),t.reserve(zs(o)),t.append(dn(o))}t.append(")")}function hm(e,t){if(/^[a-zA-Z0-9_]+$/.test(t)){e.append(t);return}e.reserve(zs(t)),e.append(dn(t))}function mm(e,t,n){let r=xt(e,n);if(r.length===0){t.append(n).append("=()");return}t.append(n).append("=(");for(let s=0;s<r.length;s++){let i=r[s],o=ae(e,n,i)??"";s>0&&t.append(" "),t.append("["),hm(t,i),t.append("]="),t.reserve(zs(o)),t.append(dn(o))}t.append(" )")}function ym(e){let t=new Set,n=e.state.associativeArrays??new Set;for(let[r,s]of e.state.arrays??[])s.kind==="indexed"&&!n.has(r)&&t.add(r);return t}function gm(e){return e.state.associativeArrays??new Set}function af(e){let t=cf.map(r=>`${r.padEnd(16)}${e.state.options[r]?"on":"off"}`),n=uf.map(r=>`${r.padEnd(16)}off`);return`${[...t,...n].sort().join(`
663
684
  `)}
664
- `}function Zu(e){let t=Qu.map(r=>`set ${e.state.options[r]?"-o":"+o"} ${r}`),n=Ku.map(r=>`set +o ${r}`);return`${[...t,...n].sort().join(`
685
+ `}function lf(e){let t=cf.map(r=>`set ${e.state.options[r]?"-o":"+o"} ${r}`),n=uf.map(r=>`set +o ${r}`);return`${[...t,...n].sort().join(`
665
686
  `)}
666
- `}function Ho(e,t){if(t.includes("--help"))return J(wr);if(t.length===0){let i=em(e),o=tm(e),a=[];for(let[u,f]of e.state.env)/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)&&(i.has(u)||o.has(u)||a.push([u,f]));let l=[...a.map(([u,f])=>({kind:"scalar",name:u,value:f})),...Array.from(i,u=>({kind:"indexed",name:u})),...Array.from(o,u=>({kind:"associative",name:u}))];l.sort((u,f)=>u.name<f.name?-1:u.name>f.name?1:0);let c=new $n(e.limits.maxOutputSize,"set");for(let u of l)e.executionScope.consumeWork(1,"set variable listing"),u.kind==="scalar"?(c.append(u.name).append("="),c.reserve(_u(u.value)),c.append(Ee(u.value))):u.kind==="indexed"?Xh(e,c,u.name):Jh(e,c,u.name),c.append(`
667
- `);return J(c.build())}let n=[],r=()=>n.length>0?J(n.join("")):te,s=0;for(;s<t.length;){let i=t[s];if((i==="-o"||i==="+o")&&Kh(t,s)){let o=t[s+1];if(!Ts.has(o)){let a=`bash: set: ${o}: invalid option name
668
- ${wr}`;if(e.state.options.posix)throw new rt(1,"",a);return _(a)}jo(e,Ts.get(o)??null,i==="-o"),s+=2;continue}if(i==="-o"){n.push(Hu(e)),s++;continue}if(i==="+o"){n.push(Zu(e)),s++;continue}if(i.length>1&&(i[0]==="-"||i[0]==="+")&&i[1]!=="-"){let o=i[0]==="-",a=0;for(let l=1;l<i.length;l++){let c=i[l];if(c==="o"){let u=s+1+a;if(u<t.length&&!t[u].startsWith("-")&&!t[u].startsWith("+")){let d=t[u];if(!Ts.has(d)){let p=`bash: set: ${d}: invalid option name
669
- ${wr}`;if(e.state.options.posix)throw new rt(1,"",p);return _(p)}jo(e,Ts.get(d)??null,o),a++;continue}n.push(o?Hu(e):Zu(e));continue}if(!Gu.has(c)){let u=`bash: set: ${i[0]}${c}: invalid option
670
- ${wr}`;if(e.state.options.posix)throw new rt(1,"",u);return _(u)}jo(e,Gu.get(c)??null,o)}s+=1+a;continue}if(i==="--")return Go(e,t.slice(s+1)),r();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,_n(e),s+1<t.length)return Go(e,t.slice(s+1)),r();s++;continue}if(i==="+"){s++;continue}if(i.startsWith("-")||i.startsWith("+")){let o=`bash: set: ${i}: invalid option
671
- ${wr}`;if(e.state.options.posix)throw new rt(1,"",o);return _(o)}return Go(e,t.slice(s)),r()}return r()}function Go(e,t){let n=1;for(;e.state.env.has(String(n));)e.state.env.delete(String(n)),n++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Zo(e,t){let n=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
672
- `;if(e.state.options.posix)throw new rt(1,"",a);return _(a)}n=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(n>r){let o=`bash: shift: shift count out of range
673
- `;if(e.state.options.posix)throw new rt(1,"",o);return _(o)}if(n===0)return te;let s=[];for(let o=1;o<=r;o++)s.push(e.state.env.get(String(o))||"");let i=s.slice(n);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),te}async function Qo(e,t){let n=t;if(n.length>0&&n[0]==="--"&&(n=n.slice(1)),n.length===0)return L("",`bash: source: filename argument required
674
- `,2);let r=n[0],s=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),s=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),s=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),s=f}catch{}}}if(i===null)return _(`bash: ${r}: No such file or directory
675
- `);let o=new Map;if(n.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=n.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,n.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new P(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=r;try{let c=it(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof U)throw c;if(c instanceof Oe)return L(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return _(`bash: ${r}: ${c.message}
676
- `);throw c}}function Xu(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function nm(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Yu(e,t){if(nm(t))return null;try{let n=new j,r=re(n,t);return await X(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}function Ju(e,t){if(e.state.localVarStack?.has(t)){let r=xs(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let s=e.state.localVarStack?.get(t);if(!s||s.length===0)ks(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),Ko(e,t);else{let i=s[s.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),ks(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let s=e.state.localScopes[r];if(s.has(t)){let i=s.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),s.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||ks(e,t),!0}}return!1}function Ko(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let n=e.state.tempEnvBindings.length-1;n>=0;n--){let r=e.state.tempEnvBindings[n];if(r.has(t)){let s=r.get(t);return s===void 0?e.state.env.delete(t):e.state.env.set(t,s),r.delete(t),!0}}return!1}async function ef(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let n=t.slice(1,-1),s=new j().parseWordFromString(n,!0,!1);return se(e,s)}if(t.includes("$")){let r=new j().parseWordFromString(t,!1,!1);return se(e,r)}return t}async function Xo(e,t){let n="both",r="",s=0;for(let i of t){if(i==="-v"){n="variable";continue}if(i==="-f"){n="function";continue}if(n==="function"){e.state.functions.delete(i);continue}if(n==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],p=c[2];if(Me(e,d)){r+=`bash: unset: ${d}: cannot unset: readonly variable
677
- `,s=1;continue}if(p==="@"||p==="*"){Jn(e,d),e.state.env.delete(d);continue}let h=e.state.associativeArrays?.has(d);if(h){let y=await ef(e,p);yn(e,d,y);continue}let m=pt(e,d),E=e.state.declaredVars?.has(d);if((e.state.env.has(d)||E)&&!m&&!h){r+=`bash: unset: ${d}: not an array variable
678
- `,s=1;continue}let g=await Yu(e,p);if(g===null&&m){r+=`bash: unset: ${p}: not a valid identifier
679
- `,s=1;continue}if(g===null)continue;if(g<0){let y=G(e,d),b=y.length,A=e.state.currentLine;if(b===0){r+=`bash: line ${A}: unset: [${g}]: bad array subscript
687
+ `}function na(e,t){if(t.includes("--help"))return ee(vr);if(t.length===0){let i=ym(e),o=gm(e),a=[];for(let[u,f]of e.state.env)/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)&&(i.has(u)||o.has(u)||a.push([u,f]));let l=[...a.map(([u,f])=>({kind:"scalar",name:u,value:f})),...Array.from(i,u=>({kind:"indexed",name:u})),...Array.from(o,u=>({kind:"associative",name:u}))];l.sort((u,f)=>u.name<f.name?-1:u.name>f.name?1:0);let c=new Nn(e.limits.maxOutputSize,"set");for(let u of l)e.executionScope.consumeWork(1,"set variable listing"),u.kind==="scalar"?(c.append(u.name).append("="),c.reserve(Gu(u.value)),c.append(be(u.value))):u.kind==="indexed"?pm(e,c,u.name):mm(e,c,u.name),c.append(`
688
+ `);return ee(c.build())}let n=[],r=()=>n.length>0?ee(n.join("")):ne,s=0;for(;s<t.length;){let i=t[s];if((i==="-o"||i==="+o")&&dm(t,s)){let o=t[s+1];if(!Hs.has(o)){let a=`bash: set: ${o}: invalid option name
689
+ ${vr}`;if(e.state.options.posix)throw new st(1,"",a);return L(a)}ea(e,Hs.get(o)??null,i==="-o"),s+=2;continue}if(i==="-o"){n.push(af(e)),s++;continue}if(i==="+o"){n.push(lf(e)),s++;continue}if(i.length>1&&(i[0]==="-"||i[0]==="+")&&i[1]!=="-"){let o=i[0]==="-",a=0;for(let l=1;l<i.length;l++){let c=i[l];if(c==="o"){let u=s+1+a;if(u<t.length&&!t[u].startsWith("-")&&!t[u].startsWith("+")){let d=t[u];if(!Hs.has(d)){let p=`bash: set: ${d}: invalid option name
690
+ ${vr}`;if(e.state.options.posix)throw new st(1,"",p);return L(p)}ea(e,Hs.get(d)??null,o),a++;continue}n.push(o?af(e):lf(e));continue}if(!of.has(c)){let u=`bash: set: ${i[0]}${c}: invalid option
691
+ ${vr}`;if(e.state.options.posix)throw new st(1,"",u);return L(u)}ea(e,of.get(c)??null,o)}s+=1+a;continue}if(i==="--")return ta(e,t.slice(s+1)),r();if(i==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Fn(e),s+1<t.length)return ta(e,t.slice(s+1)),r();s++;continue}if(i==="+"){s++;continue}if(i.startsWith("-")||i.startsWith("+")){let o=`bash: set: ${i}: invalid option
692
+ ${vr}`;if(e.state.options.posix)throw new st(1,"",o);return L(o)}return ta(e,t.slice(s)),r()}return r()}function ta(e,t){let n=1;for(;e.state.env.has(String(n));)e.state.env.delete(String(n)),n++;for(let r=0;r<t.length;r++)e.state.env.set(String(r+1),t[r]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function ra(e,t){let n=1;if(t.length>0){let o=Number.parseInt(t[0],10);if(Number.isNaN(o)||o<0){let a=`bash: shift: ${t[0]}: numeric argument required
693
+ `;if(e.state.options.posix)throw new st(1,"",a);return L(a)}n=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(n>r){let o=`bash: shift: shift count out of range
694
+ `;if(e.state.options.posix)throw new st(1,"",o);return L(o)}if(n===0)return ne;let s=[];for(let o=1;o<=r;o++)s.push(e.state.env.get(String(o))||"");let i=s.slice(n);for(let o=1;o<=r;o++)e.state.env.delete(String(o));for(let o=0;o<i.length;o++)e.state.env.set(String(o+1),i[o]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),ne}async function Gs(e,t){let n=t;if(n.length>0&&n[0]==="--"&&(n=n.slice(1)),n.length===0)return T("",`bash: source: filename argument required
695
+ `,2);let r=n[0],s=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),s=c}catch{}}else{let u=(e.state.env.get("PATH")||"").split(":").filter(f=>f);for(let f of u){let d=e.fs.resolvePath(e.state.cwd,`${f}/${r}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),s=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),s=f}catch{}}}if(i===null)return L(`bash: ${r}: No such file or directory
696
+ `);let o=new Map;if(n.length>1){for(let u=1;u<=9;u++)o.set(String(u),e.state.env.get(String(u)));o.set("#",e.state.env.get("#")),o.set("@",e.state.env.get("@"));let c=n.slice(1);e.state.env.set("#",String(c.length)),e.state.env.set("@",c.join(" "));for(let u=0;u<c.length&&u<9;u++)e.state.env.set(String(u+1),c[u]);for(let u=c.length+1;u<=9;u++)e.state.env.delete(String(u))}let a=e.state.currentSource,l=()=>{if(e.state.sourceDepth--,e.state.currentSource=a,n.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};if(e.state.sourceDepth++,e.state.sourceDepth>e.limits.maxSourceDepth)throw e.state.sourceDepth--,new P(`source: maximum nesting depth (${e.limits.maxSourceDepth}) exceeded, increase executionLimits.maxSourceDepth`,"recursion");e.state.currentSource=r;try{let c=ot(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof q)throw c;if(c instanceof _e)return T(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return L(`bash: ${r}: ${c.message}
697
+ `);throw c}}function ff(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function wm(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function df(e,t){if(wm(t))return null;try{let n=new H,r=se(n,t);return await Y(e,r.expression)}catch{let n=parseInt(t,10);return Number.isNaN(n)?0:n}}function pf(e,t){if(e.state.localVarStack?.has(t)){let r=Is(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let s=e.state.localVarStack?.get(t);if(!s||s.length===0)Ds(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),sa(e,t);else{let i=s[s.length-1];e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,i.scopeIndex+1)}return!0}return e.state.env.delete(t),Ds(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let r=e.state.localScopes.length-1;r>=0;r--){let s=e.state.localScopes[r];if(s.has(t)){let i=s.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),s.delete(t);let o=!1;for(let a=r-1;a>=0;a--)if(e.state.localScopes[a].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,a+1),o=!0;break}return o||Ds(e,t),!0}}return!1}function sa(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let n=e.state.tempEnvBindings.length-1;n>=0;n--){let r=e.state.tempEnvBindings[n];if(r.has(t)){let s=r.get(t);return s===void 0?e.state.env.delete(t):e.state.env.set(t,s),r.delete(t),!0}}return!1}async function hf(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let n=t.slice(1,-1),s=new H().parseWordFromString(n,!0,!1);return ie(e,s)}if(t.includes("$")){let r=new H().parseWordFromString(t,!1,!1);return ie(e,r)}return t}async function ia(e,t){let n="both",r="",s=0;for(let i of t){if(i==="-v"){n="variable";continue}if(i==="-f"){n="function";continue}if(n==="function"){e.state.functions.delete(i);continue}if(n==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],p=c[2];if(We(e,d)){r+=`bash: unset: ${d}: cannot unset: readonly variable
698
+ `,s=1;continue}if(p==="@"||p==="*"){sr(e,d),e.state.env.delete(d);continue}let h=e.state.associativeArrays?.has(d);if(h){let m=await hf(e,p);En(e,d,m);continue}let y=mt(e,d),E=e.state.declaredVars?.has(d);if((e.state.env.has(d)||E)&&!y&&!h){r+=`bash: unset: ${d}: not an array variable
699
+ `,s=1;continue}let g=await df(e,p);if(g===null&&y){r+=`bash: unset: ${p}: not a valid identifier
700
+ `,s=1;continue}if(g===null)continue;if(g<0){let m=G(e,d),b=m.length,A=e.state.currentLine;if(b===0){r+=`bash: line ${A}: unset: [${g}]: bad array subscript
680
701
  `,s=1;continue}let k=b+g;if(k<0){r+=`bash: line ${A}: unset: [${g}]: bad array subscript
681
- `,s=1;continue}let v=y[k][0];yn(e,d,v);continue}yn(e,d,g);continue}if(!Xu(i)){r+=`bash: unset: \`${i}': not a valid identifier
682
- `,s=1;continue}let u=i;if(le(e,i)){let d=Fe(e,i);d&&d!==i&&(u=d)}if(Me(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
683
- `,s=1;continue}Jn(e,u);let f=to(e,u);if(f!==void 0&&f!==e.state.callDepth)Ju(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),p=e.state.mutatedTempEnvVars?.has(u);if((d||p)&&e.state.localVarStack?.has(u)){let h=xs(e,u);h?h.value===void 0?e.state.env.delete(u):e.state.env.set(u,h.value):e.state.env.delete(u)}else e.state.env.delete(u)}else Ko(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(Me(e,c)){r+=`bash: unset: ${c}: cannot unset: readonly variable
684
- `,s=1;continue}if(u==="@"||u==="*"){Jn(e,c),e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let m=await ef(e,u);yn(e,c,m);continue}let d=pt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
685
- `,s=1;continue}let h=await Yu(e,u);if(h===null&&d){r+=`bash: unset: ${u}: not a valid identifier
686
- `,s=1;continue}if(h===null)continue;if(h<0){let m=G(e,c),E=m.length,S=e.state.currentLine;if(E===0){r+=`bash: line ${S}: unset: [${h}]: bad array subscript
702
+ `,s=1;continue}let v=m[k][0];En(e,d,v);continue}En(e,d,g);continue}if(!ff(i)){r+=`bash: unset: \`${i}': not a valid identifier
703
+ `,s=1;continue}let u=i;if(ce(e,i)){let d=Be(e,i);d&&d!==i&&(u=d)}if(We(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
704
+ `,s=1;continue}sr(e,u);let f=fo(e,u);if(f!==void 0&&f!==e.state.callDepth)pf(e,u);else if(e.state.fullyUnsetLocals?.has(u))e.state.env.delete(u);else if(f!==void 0){let d=e.state.accessedTempEnvVars?.has(u),p=e.state.mutatedTempEnvVars?.has(u);if((d||p)&&e.state.localVarStack?.has(u)){let h=Is(e,u);h?h.value===void 0?e.state.env.delete(u):e.state.env.set(u,h.value):e.state.env.delete(u)}else e.state.env.delete(u)}else sa(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(We(e,c)){r+=`bash: unset: ${c}: cannot unset: readonly variable
705
+ `,s=1;continue}if(u==="@"||u==="*"){sr(e,c),e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let y=await hf(e,u);En(e,c,y);continue}let d=mt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
706
+ `,s=1;continue}let h=await df(e,u);if(h===null&&d){r+=`bash: unset: ${u}: not a valid identifier
707
+ `,s=1;continue}if(h===null)continue;if(h<0){let y=G(e,c),E=y.length,S=e.state.currentLine;if(E===0){r+=`bash: line ${S}: unset: [${h}]: bad array subscript
687
708
  `,s=1;continue}let g=E+h;if(g<0){r+=`bash: line ${S}: unset: [${h}]: bad array subscript
688
- `,s=1;continue}let y=m[g][0];yn(e,c,y);continue}yn(e,c,h);continue}if(!Xu(i)){r+=`bash: unset: \`${i}': not a valid identifier
689
- `,s=1;continue}let a=i;if(le(e,i)){let c=Fe(e,i);c&&c!==i&&(a=c)}if(Me(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
690
- `,s=1;continue}Jn(e,a);let l=to(e,a);if(l!==void 0&&l!==e.state.callDepth)Ju(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=xs(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else Ko(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return L("",r,s)}function Nt(e,t,n,r){let s=n+M(t)+1;if(s>r)throw new P(`shopt: output size limit exceeded (${r} bytes)`,"output_size");return e.push(t),s}var Yo=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],rm=["autocd","cdable_vars","cdspell","checkhash","checkjobs","checkwinsize","cmdhist","compat31","compat32","compat40","compat41","compat42","compat43","compat44","complete_fullquote","direxpand","dirspell","execfail","extdebug","extquote","force_fignore","globasciiranges","gnu_errfmt","histappend","histreedit","histverify","hostcomplete","huponexit","inherit_errexit","interactive_comments","lithist","localvar_inherit","localvar_unset","login_shell","mailwarn","no_empty_cmd_completion","progcomp","progcomp_alias","promptvars","restricted_shell","shift_verbose","sourcepath"];function Fs(e){return Yo.includes(e)}function sm(e){return rm.includes(e)}function tf(e,t){let n=e.limits.maxArrayElements;if(t.length>n)throw new P(`shopt: argument limit exceeded (${n})`,"array_elements");let r=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),s=!1,i=!1,o=!1,a=!1,l=!1,c=[],u=0;for(;u<t.length;){let E=t[u];if(E==="--"){u++;break}if(E.startsWith("-")&&E.length>1){for(let S=1;S<E.length;S++){let g=E[S];switch(g){case"s":s=!0;break;case"u":i=!0;break;case"p":o=!0;break;case"q":a=!0;break;case"o":l=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${g}: invalid option
691
- `}}}u++}else break}for(;u<t.length;)c.push(t[u]),u++;if(l)return im(e,c,s,i,o,a);if(s&&i)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
692
- `};if(c.length===0){if(s||i){let S=[];for(let g of Yo){let y=e.state.shoptOptions[g];s&&y?S.push(o?`shopt -s ${g}`:`${g} on`):i&&!y&&S.push(o?`shopt -u ${g}`:`${g} off`)}return{exitCode:0,stdout:S.length>0?`${S.join(`
693
- `)}
694
- `:"",stderr:""}}let E=[];for(let S of Yo){let g=e.state.shoptOptions[S];E.push(o?`shopt ${g?"-s":"-u"} ${S}`:`${S} ${g?"on":"off"}`)}return{exitCode:0,stdout:`${E.join(`
695
- `)}
696
- `,stderr:""}}let f=!1,d=[],p=0,h=[],m=0;for(let E of c){if(!Fs(E)&&!sm(E)){p=Nt(d,`shopt: ${E}: invalid shell option name`,p,r),f=!0;continue}if(s)Fs(E)&&(e.state.shoptOptions[E]=!0,oi(e));else if(i)Fs(E)&&(e.state.shoptOptions[E]=!1,oi(e));else if(Fs(E)){let S=e.state.shoptOptions[E];a?S||(f=!0):o?(m=Nt(h,`shopt ${S?"-s":"-u"} ${E}`,m,r),S||(f=!0)):(m=Nt(h,`${E} ${S?"on":"off"}`,m,r),S||(f=!0))}else a?f=!0:o?(m=Nt(h,`shopt -u ${E}`,m,r),f=!0):(m=Nt(h,`${E} off`,m,r),f=!0)}return{exitCode:f?1:0,stdout:h.length>0?`${h.join(`
697
- `)}
698
- `:"",stderr:d.length>0?`${d.join(`
699
- `)}
700
- `:""}}function im(e,t,n,r,s,i){let o=Math.min(e.limits.maxOutputSize,e.limits.maxStringLength),a=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),l=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],c=[...a.keys(),...l].sort();if(t.length===0){let m=[];for(let E of c){let S=l.includes(E),g=a.get(E),y=S||!g?!1:e.state.options[g];n&&!y||r&&y||m.push(s?`set ${y?"-o":"+o"} ${E}`:`${E} ${y?"on":"off"}`)}return{exitCode:0,stdout:m.length>0?`${m.join(`
701
- `)}
702
- `:"",stderr:""}}let u=!1,f=[],d=0,p=[],h=0;for(let m of t){let E=a.has(m),S=l.includes(m);if(!E&&!S){d=Nt(f,`shopt: ${m}: invalid option name`,d,o),u=!0;continue}if(S){n||r||(i?u=!0:s?(h=Nt(p,`set +o ${m}`,h,o),u=!0):(h=Nt(p,`${m} off`,h,o),u=!0));continue}let g=a.get(m);if(g)if(n)g==="vi"?e.state.options.emacs=!1:g==="emacs"&&(e.state.options.vi=!1),e.state.options[g]=!0,_n(e);else if(r)e.state.options[g]=!1,_n(e);else{let y=e.state.options[g];i?y||(u=!0):s?(h=Nt(p,`set ${y?"-o":"+o"} ${m}`,h,o),y||(u=!0)):(h=Nt(p,`${m} ${y?"on":"off"}`,h,o),y||(u=!0))}}return{exitCode:u?1:0,stdout:p.length>0?`${p.join(`
703
- `)}
704
- `:"",stderr:f.length>0?`${f.join(`
705
- `)}
706
- `:""}}function om(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function de(e,t,n,r){return((...s)=>{Xn(t,n,`${r} call`);let i=e(...s);return om(i)?i.then(o=>(Xn(t,n,`${r} post-await`),o),o=>{throw Xn(t,n,`${r} post-await`),o}):(Xn(t,n,`${r} return`),i)})}function am(e,t,n){let r={readFile:de(e.readFile.bind(e),t,n,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:de(e.readFileBytes.bind(e),t,n,"fs.readFileBytes")}:Object.create(null),readFileBuffer:de(e.readFileBuffer.bind(e),t,n,"fs.readFileBuffer"),writeFile:de(e.writeFile.bind(e),t,n,"fs.writeFile"),appendFile:de(e.appendFile.bind(e),t,n,"fs.appendFile"),exists:de(e.exists.bind(e),t,n,"fs.exists"),stat:de(e.stat.bind(e),t,n,"fs.stat"),mkdir:de(e.mkdir.bind(e),t,n,"fs.mkdir"),readdir:de(e.readdir.bind(e),t,n,"fs.readdir"),rm:de(e.rm.bind(e),t,n,"fs.rm"),cp:de(e.cp.bind(e),t,n,"fs.cp"),mv:de(e.mv.bind(e),t,n,"fs.mv"),resolvePath:de(e.resolvePath.bind(e),t,n,"fs.resolvePath"),getAllPaths:de(e.getAllPaths.bind(e),t,n,"fs.getAllPaths"),chmod:de(e.chmod.bind(e),t,n,"fs.chmod"),symlink:de(e.symlink.bind(e),t,n,"fs.symlink"),link:de(e.link.bind(e),t,n,"fs.link"),readlink:de(e.readlink.bind(e),t,n,"fs.readlink"),lstat:de(e.lstat.bind(e),t,n,"fs.lstat"),realpath:de(e.realpath.bind(e),t,n,"fs.realpath"),utimes:de(e.utimes.bind(e),t,n,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=de(e.readdirWithFileTypes.bind(e),t,n,"fs.readdirWithFileTypes")),r}function Jo(e,t){if(!e.requireDefenseContext)return e;let n=`command:${t}`,r=Object.getOwnPropertyDescriptors(e);r.fs={value:am(e.fs,e.requireDefenseContext,n),enumerable:!0,configurable:!0,writable:!0};let s=Object.defineProperties(Object.create(Object.getPrototypeOf(e)),r);return e.exec&&(s.exec=de(e.exec,e.requireDefenseContext,n,"exec")),e.origCommand&&(s.origCommand=de(e.origCommand,e.requireDefenseContext,n,"origCommand")),e.fetch&&(s.fetch=de(e.fetch,e.requireDefenseContext,n,"fetch")),e.sleep&&(s.sleep=de(e.sleep,e.requireDefenseContext,n,"sleep")),e.getRegisteredCommands&&(s.getRegisteredCommands=de(e.getRegisteredCommands,e.requireDefenseContext,n,"getRegisteredCommands")),s}var nf="+ ";async function rf(e){let t=e.state.env.get("PS4");if(t===void 0)return nf;if(t==="")return"";let n=e.state.options.xtrace;e.state.options.xtrace=!1;try{let s=new j().parseWordFromString(t,!1,!1);return await se(e,s)}catch(r){if(r instanceof ae&&!r.fatal)return t;if(r instanceof Mt||r instanceof Error&&r.name==="AbortError")throw r;return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
707
- `,t||nf}finally{e.state.options.xtrace=n}}function lm(e){return e.map(t=>cm(t)).join(" ")}function cm(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let n=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
709
+ `,s=1;continue}let m=y[g][0];En(e,c,m);continue}En(e,c,h);continue}if(!ff(i)){r+=`bash: unset: \`${i}': not a valid identifier
710
+ `,s=1;continue}let a=i;if(ce(e,i)){let c=Be(e,i);c&&c!==i&&(a=c)}if(We(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
711
+ `,s=1;continue}sr(e,a);let l=fo(e,a);if(l!==void 0&&l!==e.state.callDepth)pf(e,a);else if(e.state.fullyUnsetLocals?.has(a))e.state.env.delete(a);else if(l!==void 0){let c=e.state.accessedTempEnvVars?.has(a),u=e.state.mutatedTempEnvVars?.has(a);if((c||u)&&e.state.localVarStack?.has(a)){let f=Is(e,a);f?f.value===void 0?e.state.env.delete(a):e.state.env.set(a,f.value):e.state.env.delete(a)}else e.state.env.delete(a)}else sa(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return T("",r,s)}function Em(e){return e!==null&&typeof e=="object"&&"then"in e&&typeof e.then=="function"}function pe(e,t,n,r){return((...s)=>{nr(t,n,`${r} call`);let i=e(...s);return Em(i)?i.then(o=>(nr(t,n,`${r} post-await`),o),o=>{throw nr(t,n,`${r} post-await`),o}):(nr(t,n,`${r} return`),i)})}function bm(e,t,n){let r={readFile:pe(e.readFile.bind(e),t,n,"fs.readFile"),...typeof e.readFileBytes=="function"?{readFileBytes:pe(e.readFileBytes.bind(e),t,n,"fs.readFileBytes")}:Object.create(null),readFileBuffer:pe(e.readFileBuffer.bind(e),t,n,"fs.readFileBuffer"),writeFile:pe(e.writeFile.bind(e),t,n,"fs.writeFile"),appendFile:pe(e.appendFile.bind(e),t,n,"fs.appendFile"),exists:pe(e.exists.bind(e),t,n,"fs.exists"),stat:pe(e.stat.bind(e),t,n,"fs.stat"),mkdir:pe(e.mkdir.bind(e),t,n,"fs.mkdir"),readdir:pe(e.readdir.bind(e),t,n,"fs.readdir"),rm:pe(e.rm.bind(e),t,n,"fs.rm"),cp:pe(e.cp.bind(e),t,n,"fs.cp"),mv:pe(e.mv.bind(e),t,n,"fs.mv"),resolvePath:pe(e.resolvePath.bind(e),t,n,"fs.resolvePath"),getAllPaths:pe(e.getAllPaths.bind(e),t,n,"fs.getAllPaths"),chmod:pe(e.chmod.bind(e),t,n,"fs.chmod"),symlink:pe(e.symlink.bind(e),t,n,"fs.symlink"),link:pe(e.link.bind(e),t,n,"fs.link"),readlink:pe(e.readlink.bind(e),t,n,"fs.readlink"),lstat:pe(e.lstat.bind(e),t,n,"fs.lstat"),realpath:pe(e.realpath.bind(e),t,n,"fs.realpath"),utimes:pe(e.utimes.bind(e),t,n,"fs.utimes")};return e.readdirWithFileTypes&&(r.readdirWithFileTypes=pe(e.readdirWithFileTypes.bind(e),t,n,"fs.readdirWithFileTypes")),r}function oa(e,t){if(!e.requireDefenseContext)return e;let n=`command:${t}`,r=Object.getOwnPropertyDescriptors(e);r.fs={value:bm(e.fs,e.requireDefenseContext,n),enumerable:!0,configurable:!0,writable:!0};let s=Object.defineProperties(Object.create(Object.getPrototypeOf(e)),r);return e.exec&&(s.exec=pe(e.exec,e.requireDefenseContext,n,"exec")),e.origCommand&&(s.origCommand=pe(e.origCommand,e.requireDefenseContext,n,"origCommand")),e.fetch&&(s.fetch=pe(e.fetch,e.requireDefenseContext,n,"fetch")),e.sleep&&(s.sleep=pe(e.sleep,e.requireDefenseContext,n,"sleep")),e.getRegisteredCommands&&(s.getRegisteredCommands=pe(e.getRegisteredCommands,e.requireDefenseContext,n,"getRegisteredCommands")),s}var mf="+ ";async function yf(e){let t=e.state.env.get("PS4");if(t===void 0)return mf;if(t==="")return"";let n=e.state.options.xtrace;e.state.options.xtrace=!1;let r=e.state.lastExitCode,s=e.state.env.get("?"),i=e.state.lastSubstitutionExitCode;try{let a=new H().parseWordFromString(t,!1,!1);return await ie(e,a)}catch(o){if(o instanceof le&&!o.fatal)return t;if(o instanceof Wt||o instanceof Error&&o.name==="AbortError")throw o;return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
712
+ `,t||mf}finally{e.state.options.xtrace=n,e.state.lastExitCode=r,e.state.lastSubstitutionExitCode=i,s===void 0?e.state.env.delete("?"):e.state.env.set("?",s)}}function Sm(e){return e.map(t=>Am(t)).join(" ")}function Am(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let n=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
708
713
  `),s=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(n||r||s||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
709
- `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function sf(e,t,n){if(!e.state.options.xtrace)return"";let r=await rf(e),s=[t,...n],i=lm(s);return`${r}${i}
710
- `}async function of(e,t,n){return e.state.options.xtrace?`${await rf(e)}${t}=${n}
711
- `:""}function Ms(e,t,n){return Vt([t,n],"",e.limits.maxStringLength,"array assignment")}async function af(e,t){let n=new Map,r="";for(let s of t.assignments){let i=s.name;if(s.array){let u=await um(e,t,i,s.array,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=s.value?await se(e,s.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:L("",`bash: ${i}: bad array subscript
712
- `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await mm(e,t,l[1],l[2],o,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(u.continueToNext)continue}let c=await ym(e,t,i,o,s.append,n);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:n}}async function um(e,t,n,r,s,i){let o="";if(/\[.+\]$/.test(n))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: cannot assign list to array member
713
- `,1)};if(le(e,n)){let h=An(e,n);if(h===void 0||h==="")throw new U(1,"","");let m=Fe(e,n);if(m&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(m))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: cannot assign list to array member
714
- `,1)}}if(Me(e,n)){if(t.name)return o+=`bash: ${n}: readonly variable
715
- `,{continueToNext:!0,xtraceOutput:o};let h=ce(e,n);if(h)return{continueToNext:!1,xtraceOutput:"",error:h}}let a=e.state.associativeArrays?.has(n),l=ve(e,n),c=l?Te(l):void 0,u=e.state.env.get(n),f=()=>{e.state.arrays??=new Map,c?e.state.arrays.set(n,c):e.state.arrays.delete(n),u===void 0?e.state.env.delete(n):e.state.env.set(n,u)},d=fm(r),p=()=>{ye(e,n),e.state.env.delete(n)};try{a&&d?await dm(e,t,n,r,s,p,h=>{o+=h}):d?await pm(e,n,r,s,p):await hm(e,n,r,s,p)}catch(h){throw f(),h}if(t.name){i.set(n,e.state.env.get(n));let m=`(${r.map(E=>On(E)).join(" ")})`;e.state.env.set(n,m)}return{continueToNext:!0,xtraceOutput:o}}function fm(e){return e.some(t=>{if(t.parts.length>=2){let n=t.parts[0],r=t.parts[1];if(n.type!=="Glob"||!n.pattern.startsWith("["))return!1;if(n.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let s=t.parts[2];return s.type!=="Literal"?!1:s.value.startsWith("]=")||s.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):n.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function dm(e,t,n,r,s,i,o){let a=[];for(let l of r){if(a.length>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let c=ni(l);if(c){let{key:u,valueParts:f,append:d}=c,p;f.length>0?(p=await se(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(p=Jt(e,p))):p="",a.push({type:"keyed",key:u,value:p,append:d})}else{let u=await se(e,l);a.push({type:"invalid",expandedValue:u})}}e.executionScope.consumeWork(a.length,"associative array assignment"),s||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=oe(e,n,l.key)??"";q(e,n,l.key,Ms(e,c,l.value),"associative")}else q(e,n,l.key,l.value,"associative");else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${n}: ${l.expandedValue}: must use subscript when assigning associative array
716
- `)}}async function pm(e,t,n,r,s){let i=[],o=0;for(let l of n){let c=ni(l);if(c){if(o>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let{key:u,valueParts:f,append:d}=c,p;f.length>0?(p=await se(e,{type:"Word",parts:f}),f.every(m=>m.type==="Literal"||m.type==="TildeExpansion")&&(p=Jt(e,p))):p="",i.push({type:"keyed",indexExpr:u,value:p,append:d}),o++}else{let u=await gt(e,l);if(u.values.length>e.limits.maxArrayElements-o)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push({type:"non-keyed",values:u.values}),o+=u.values.length}}e.executionScope.consumeWork(o,"indexed array assignment"),r||s();let a=0;for(let l of i)if(l.type==="keyed"){let c;try{let u=new j,f=re(u,l.indexExpr);c=await X(e,f.expression,!1)}catch{if(/^-?\d+$/.test(l.indexExpr))c=Number.parseInt(l.indexExpr,10);else{let u=e.state.env.get(l.indexExpr);c=u?Number.parseInt(u,10):0,Number.isNaN(c)&&(c=0)}}if(l.append){let u=oe(e,t,c)??"";q(e,t,c,Ms(e,u,l.value))}else q(e,t,c,l.value);a=c+1}else for(let c of l.values)q(e,t,a++,c)}async function hm(e,t,n,r,s){let i=[];for(let a of n){let l=await gt(e,a);for(let c of l.values){if(i.length>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push(c)}}let o=0;if(e.executionScope.consumeWork(i.length,"indexed array assignment"),r){let a=G(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(q(e,t,0,l),e.state.env.delete(t),o=1)}}else s();for(let a=0;a<i.length;a++)q(e,t,o+a,i[a])}async function mm(e,t,n,r,s,i,o){let a=n;if(le(e,n)){let f=Fe(e,n);if(f&&f!==n){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: \`${f}': not a valid identifier
717
- `,1)};a=f}}if(Me(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=ce(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await lf(e,r);else{let f=await ea(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=String(f.index)}let u=i?Ms(e,oe(e,a,c)||"",s):s;return t.name||q(e,a,c,u,l?"associative":"indexed"),{continueToNext:!0,xtraceOutput:""}}async function lf(e,t){let n;if(t.startsWith("'")&&t.endsWith("'"))n=t.slice(1,-1);else if(t.startsWith('"')&&t.endsWith('"')){let r=t.slice(1,-1),i=new j().parseWordFromString(r,!0,!1);n=await se(e,i)}else if(t.includes("$")){let s=new j().parseWordFromString(t,!1,!1);n=await se(e,s)}else n=t;return n}async function ea(e,t,n){let r=n;n.startsWith('"')&&n.endsWith('"')&&n.length>=2&&(r=n.slice(1,-1));let s;if(/^-?\d+$/.test(r))s=Number.parseInt(r,10);else{try{let i=new j,o=re(i,r);s=await X(e,o.expression,!1)}catch(i){if(i instanceof U||i instanceof $e)throw i;if(i instanceof ae){let l=`bash: line ${e.state.currentLine}: ${n}: ${i.message}
718
- `;if(i.fatal)throw new U(1,"",l);return{index:0,error:L("",l,1)}}let o=e.state.currentLine;return{index:0,error:L("",`bash: line ${o}: ${t}[${n}]: bad array subscript
719
- `,1)}}Number.isNaN(s)&&(s=0)}if(s<0){let i=G(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:L("",`bash: line ${a}: ${t}[${n}]: bad array subscript
720
- `,1)}}if(s=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+s,s<0){let a=e.state.currentLine;return{index:0,error:L("",`bash: line ${a}: ${t}[${n}]: bad array subscript
721
- `,1)}}}return{index:s}}async function ym(e,t,n,r,s,i){let o="",a=n,l=null;if(le(e,n)){let f=Jr(e,n,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:L("",`bash: ${n}: circular name reference
722
- `,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(Me(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
723
- `,{continueToNext:!0,xtraceOutput:o};let f=ce(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(yr(e,a))try{let f=new j;if(s){let p=`(${e.state.env.get(a)||"0"}) + (${r})`,h=re(f,p);c=String(await X(e,h.expression))}else{let d=re(f,r);c=String(await X(e,d.expression))}}catch{c="0"}else{let f=pt(e,a)?oe(e,a,0):e.state.env.get(a);c=s?Ms(e,f||"",r):r}c=Gn(e,a,c),o+=await of(e,a,c);let u;return l?u=await gm(e,l):pt(e,a)&&(u="0"),t.name?u===void 0&&(i.set(a,e.state.env.get(a)),e.state.env.set(a,c)):(u===void 0?e.state.env.set(a,c):q(e,a,u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function gm(e,t){let{arrayName:n,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(n))return lf(e,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new j,a=re(o,r);i=await X(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=G(e,n);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return String(i)}async function ff(e,t,n,r){let s=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let m of t)if(m.startsWith("-")&&m.length>1)for(let E of m.slice(1))E==="t"?s=!0:E==="p"?i=!0:E==="P"?o=!0:E==="a"?a=!0:E==="f"&&(l=!0);else c.push(m);let u="",f="",d=0,p=!1,h=!1;for(let m of c){let E=!1;if(o){if(a){let k=await r(m);if(k.length>0){for(let v of k)u+=`${v}
724
- `;p=!0,E=!0}}else{let k=await n(m);k&&(u+=`${k}
725
- `,p=!0,E=!0)}E||(h=!0);continue}let S=!l&&e.state.functions.has(m);if(a&&S){if(!i)if(s)u+=`function
726
- `;else{let k=e.state.functions.get(m),v=k?cf(m,k):`${m} is a function
727
- `;u+=v}E=!0}let g=e.state.env.get(`BASH_ALIAS_${m}`);if(g!==void 0&&(a||!E)&&(i||(s?u+=`alias
728
- `:u+=`${m} is aliased to \`${g}'
729
- `),E=!0,!a)||ri.has(m)&&(a||!E)&&(i||(s?u+=`keyword
730
- `:u+=`${m} is a shell keyword
714
+ `?l+="\\n":c===" "?l+="\\t":c==="\\"?l+="\\\\":c==="'"?l+="'":c==='"'?l+='"':u<32||u===127?u<256?l+=`\\x${u.toString(16).padStart(2,"0")}`:l+=`\\u${u.toString(16).padStart(4,"0")}`:l+=c}return`$'${l}'`}return o?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function gf(e,t,n){if(!e.state.options.xtrace)return"";let r=await yf(e),s=[t,...n],i=Sm(s);return`${r}${i}
715
+ `}async function wf(e,t,n){return e.state.options.xtrace?`${await yf(e)}${t}=${n}
716
+ `:""}function Zs(e,t,n){return Ut([t,n],"",e.limits.maxStringLength,"array assignment")}async function Ef(e,t){let n=new Map,r="";for(let s of t.assignments){let i=s.name;if(s.array){let u=await vm(e,t,i,s.array,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=s.value?await ie(e,s.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:T("",`bash: ${i}: bad array subscript
717
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await Cm(e,t,l[1],l[2],o,s.append,n);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:u.error};if(u.continueToNext)continue}let c=await Nm(e,t,i,o,s.append,n);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:n,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:n}}async function vm(e,t,n,r,s,i){let o="";if(/\[.+\]$/.test(n))return{continueToNext:!1,xtraceOutput:"",error:T("",`bash: ${n}: cannot assign list to array member
718
+ `,1)};if(ce(e,n)){let h=xn(e,n);if(h===void 0||h==="")throw new q(1,"","");let y=Be(e,n);if(y&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(y))return{continueToNext:!1,xtraceOutput:"",error:T("",`bash: ${n}: cannot assign list to array member
719
+ `,1)}}if(We(e,n)){if(t.name)return o+=`bash: ${n}: readonly variable
720
+ `,{continueToNext:!0,xtraceOutput:o};let h=ue(e,n);if(h)return{continueToNext:!1,xtraceOutput:"",error:h}}let a=e.state.associativeArrays?.has(n),l=ke(e,n),c=l?Me(l):void 0,u=e.state.env.get(n),f=()=>{e.state.arrays??=new Map,c?e.state.arrays.set(n,c):e.state.arrays.delete(n),u===void 0?e.state.env.delete(n):e.state.env.set(n,u)},d=km(r),p=()=>{ge(e,n),e.state.env.delete(n)};try{a&&d?await xm(e,t,n,r,s,p,h=>{o+=h}):d?await $m(e,n,r,s,p):await Pm(e,n,r,s,p)}catch(h){throw f(),h}if(t.name){i.set(n,e.state.env.get(n));let y=`(${r.map(E=>Tn(E)).join(" ")})`;e.state.env.set(n,y)}return{continueToNext:!0,xtraceOutput:o}}function km(e){return e.some(t=>{if(t.parts.length>=2){let n=t.parts[0],r=t.parts[1];if(n.type!=="Glob"||!n.pattern.startsWith("["))return!1;if(n.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let s=t.parts[2];return s.type!=="Literal"?!1:s.value.startsWith("]=")||s.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):n.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function xm(e,t,n,r,s,i,o){let a=[];for(let l of r){if(a.length>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let c=pi(l);if(c){let{key:u,valueParts:f,append:d}=c,p;f.length>0?(p=await ie(e,{type:"Word",parts:f}),f.every(y=>y.type==="Literal"||y.type==="TildeExpansion")&&(p=nn(e,p))):p="",a.push({type:"keyed",key:u,value:p,append:d})}else{let u=await ie(e,l);a.push({type:"invalid",expandedValue:u})}}e.executionScope.consumeWork(a.length,"associative array assignment"),s||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=ae(e,n,l.key)??"";j(e,n,l.key,Zs(e,c,l.value),"associative")}else j(e,n,l.key,l.value,"associative");else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${n}: ${l.expandedValue}: must use subscript when assigning associative array
721
+ `)}}async function $m(e,t,n,r,s){let i=[],o=0;for(let l of n){let c=pi(l);if(c){if(o>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");let{key:u,valueParts:f,append:d}=c,p;f.length>0?(p=await ie(e,{type:"Word",parts:f}),f.every(y=>y.type==="Literal"||y.type==="TildeExpansion")&&(p=nn(e,p))):p="",i.push({type:"keyed",indexExpr:u,value:p,append:d}),o++}else{let u=await Et(e,l);if(u.values.length>e.limits.maxArrayElements-o)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push({type:"non-keyed",values:u.values}),o+=u.values.length}}e.executionScope.consumeWork(o,"indexed array assignment"),r||s();let a=0;for(let l of i)if(l.type==="keyed"){let c;try{let u=new H,f=se(u,l.indexExpr);c=await Y(e,f.expression,!1)}catch{if(/^-?\d+$/.test(l.indexExpr))c=Number.parseInt(l.indexExpr,10);else{let u=e.state.env.get(l.indexExpr);c=u?Number.parseInt(u,10):0,Number.isNaN(c)&&(c=0)}}if(l.append){let u=ae(e,t,c)??"";j(e,t,c,Zs(e,u,l.value))}else j(e,t,c,l.value);a=c+1}else for(let c of l.values)j(e,t,a++,c)}async function Pm(e,t,n,r,s){let i=[];for(let a of n){let l=await Et(e,a);for(let c of l.values){if(i.length>=e.limits.maxArrayElements)throw new P(`array element limit exceeded (${e.limits.maxArrayElements})`,"array_elements");i.push(c)}}let o=0;if(e.executionScope.consumeWork(i.length,"indexed array assignment"),r){let a=G(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(j(e,t,0,l),e.state.env.delete(t),o=1)}}else s();for(let a=0;a<i.length;a++)j(e,t,o+a,i[a])}async function Cm(e,t,n,r,s,i,o){let a=n;if(ce(e,n)){let f=Be(e,n);if(f&&f!==n){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:T("",`bash: \`${f}': not a valid identifier
722
+ `,1)};a=f}}if(We(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=ue(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await bf(e,r);else{let f=await aa(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=String(f.index)}let u=i?Zs(e,ae(e,a,c)||"",s):s;return t.name||j(e,a,c,u,l?"associative":"indexed"),{continueToNext:!0,xtraceOutput:""}}async function bf(e,t){let n;if(t.startsWith("'")&&t.endsWith("'"))n=t.slice(1,-1);else if(t.startsWith('"')&&t.endsWith('"')){let r=t.slice(1,-1),i=new H().parseWordFromString(r,!0,!1);n=await ie(e,i)}else if(t.includes("$")){let s=new H().parseWordFromString(t,!1,!1);n=await ie(e,s)}else n=t;return n}async function aa(e,t,n){let r=n;n.startsWith('"')&&n.endsWith('"')&&n.length>=2&&(r=n.slice(1,-1));let s;if(/^-?\d+$/.test(r))s=Number.parseInt(r,10);else{try{let i=new H,o=se(i,r);s=await Y(e,o.expression,!1)}catch(i){if(i instanceof q||i instanceof Pe)throw i;if(i instanceof le){let l=`bash: line ${e.state.currentLine}: ${n}: ${i.message}
723
+ `;if(i.fatal)throw new q(1,"",l);return{index:0,error:T("",l,1)}}let o=e.state.currentLine;return{index:0,error:T("",`bash: line ${o}: ${t}[${n}]: bad array subscript
724
+ `,1)}}Number.isNaN(s)&&(s=0)}if(s<0){let i=G(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:T("",`bash: line ${a}: ${t}[${n}]: bad array subscript
725
+ `,1)}}if(s=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+s,s<0){let a=e.state.currentLine;return{index:0,error:T("",`bash: line ${a}: ${t}[${n}]: bad array subscript
726
+ `,1)}}}return{index:s}}async function Nm(e,t,n,r,s,i){let o="",a=n,l=null;if(ce(e,n)){let f=is(e,n,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:T("",`bash: ${n}: circular name reference
727
+ `,1)};if(f===null)return{continueToNext:!0,xtraceOutput:""};a=f;let d=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(l={arrayName:d[1],subscriptExpr:d[2]},a=d[1])}if(We(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
728
+ `,{continueToNext:!0,xtraceOutput:o};let f=ue(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(Sr(e,a))try{let f=new H;if(s){let p=`(${e.state.env.get(a)||"0"}) + (${r})`,h=se(f,p);c=String(await Y(e,h.expression))}else{let d=se(f,r);c=String(await Y(e,d.expression))}}catch{c="0"}else{let f=mt(e,a)?ae(e,a,0):e.state.env.get(a);c=s?Zs(e,f||"",r):r}c=Kn(e,a,c),o+=await wf(e,a,c);let u;return l?u=await Rm(e,l):mt(e,a)&&(u="0"),t.name?u===void 0&&(i.set(a,e.state.env.get(a)),e.state.env.set(a,c)):(u===void 0?e.state.env.set(a,c):j(e,a,u,c),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(a)),e.state.tempEnvBindings?.some(f=>f.has(a))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(a))),{continueToNext:!1,xtraceOutput:o}}async function Rm(e,t){let{arrayName:n,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(n))return bf(e,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new H,a=se(o,r);i=await Y(e,a.expression,!1)}catch{let o=e.state.env.get(r);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=G(e,n);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return String(i)}async function vf(e,t,n,r){let s=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let y of t)if(y.startsWith("-")&&y.length>1)for(let E of y.slice(1))E==="t"?s=!0:E==="p"?i=!0:E==="P"?o=!0:E==="a"?a=!0:E==="f"&&(l=!0);else c.push(y);let u="",f="",d=0,p=!1,h=!1;for(let y of c){let E=!1;if(o){if(a){let k=await r(y);if(k.length>0){for(let v of k)u+=`${v}
729
+ `;p=!0,E=!0}}else{let k=await n(y);k&&(u+=`${k}
730
+ `,p=!0,E=!0)}E||(h=!0);continue}let S=!l&&e.state.functions.has(y);if(a&&S){if(!i)if(s)u+=`function
731
+ `;else{let k=e.state.functions.get(y),v=k?Sf(y,k):`${y} is a function
732
+ `;u+=v}E=!0}let g=e.state.env.get(`BASH_ALIAS_${y}`);if(g!==void 0&&(a||!E)&&(i||(s?u+=`alias
733
+ `:u+=`${y} is aliased to \`${g}'
734
+ `),E=!0,!a)||or.has(y)&&(a||!E)&&(i||(s?u+=`keyword
735
+ `:u+=`${y} is a shell keyword
731
736
  `),E=!0,!a))continue;if(!a&&S&&!E){if(!i)if(s)u+=`function
732
- `;else{let k=e.state.functions.get(m),v=k?cf(m,k):`${m} is a function
733
- `;u+=v}E=!0;continue}if(!(Ht.has(m)&&(a||!E)&&(i||(s?u+=`builtin
734
- `:u+=`${m} is a shell builtin
735
- `),E=!0,!a))){if(a){let k=await r(m);for(let v of k)i?u+=`${v}
737
+ `;else{let k=e.state.functions.get(y),v=k?Sf(y,k):`${y} is a function
738
+ `;u+=v}E=!0;continue}if(!(vt.has(y)&&(a||!E)&&(i||(s?u+=`builtin
739
+ `:u+=`${y} is a shell builtin
740
+ `),E=!0,!a))){if(a){let k=await r(y);for(let v of k)i?u+=`${v}
736
741
  `:s?u+=`file
737
- `:u+=`${m} is ${v}
738
- `,p=!0,E=!0}else if(!E){let k=await n(m);k&&(i?u+=`${k}
742
+ `:u+=`${y} is ${v}
743
+ `,p=!0,E=!0}else if(!E){let k=await n(y);k&&(i?u+=`${k}
739
744
  `:s?u+=`file
740
- `:u+=`${m} is ${k}
741
- `,p=!0,E=!0)}if(!E&&(h=!0,!s&&!i)){let k=!0;if(m.includes("/")){let v=e.fs.resolvePath(e.state.cwd,m);await e.fs.exists(v)&&(k=!1)}k&&(f+=`bash: type: ${m}: not found
742
- `)}}}return i?d=h&&!p?1:0:d=h?1:0,L(u,f,d)}function cf(e,t){let n;return t.body.type==="Group"?n=t.body.body.map(s=>Er(s)).join("; "):n=Er(t.body),`${e} is a function
745
+ `:u+=`${y} is ${k}
746
+ `,p=!0,E=!0)}if(!E&&(h=!0,!s&&!i)){let k=!0;if(y.includes("/")){let v=e.fs.resolvePath(e.state.cwd,y);await e.fs.exists(v)&&(k=!1)}k&&(f+=`bash: type: ${y}: not found
747
+ `)}}}return i?d=h&&!p?1:0:d=h?1:0,T(u,f,d)}function Sf(e,t){let n;return t.body.type==="Group"?n=t.body.body.map(s=>kr(s)).join("; "):n=kr(t.body),`${e} is a function
743
748
  ${e} ()
744
749
  {
745
750
  ${n}
746
751
  }
747
- `}function Er(e){if(Array.isArray(e))return e.map(t=>Er(t)).join("; ");if(e.type==="Statement"){let t=[];for(let n=0;n<e.pipelines.length;n++){let r=e.pipelines[n];t.push(wm(r)),e.operators[n]&&t.push(e.operators[n])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,n=[];t.name&&n.push(uf(t.name));for(let r of t.args)n.push(uf(r));return n.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>Er(r)).join("; ")}; }`:"..."}function uf(e){return e.parts.map(df).join("")}function df(e){switch(e.type){case"Literal":return e.value;case"Escaped":return`\\${e.value}`;case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(df).join("")}"`;default:return Se(T.word([e]))}}function wm(e){let t=e.commands.map(n=>Er(n));return(e.negated?"! ":"")+t.join(" | ")}async function pf(e,t,n,r){let s="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?s+=`${a} is an alias for "${l}"
752
+ `}function kr(e){if(Array.isArray(e))return e.map(t=>kr(t)).join("; ");if(e.type==="Statement"){let t=[];for(let n=0;n<e.pipelines.length;n++){let r=e.pipelines[n];t.push(Dm(r)),e.operators[n]&&t.push(e.operators[n])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,n=[];t.name&&n.push(Af(t.name));for(let r of t.args)n.push(Af(r));return n.join(" ")}return e.type==="Group"?`{ ${e.body.map(r=>kr(r)).join("; ")}; }`:"..."}function Af(e){return e.parts.map(kf).join("")}function kf(e){switch(e.type){case"Literal":return e.value;case"Escaped":return`\\${e.value}`;case"SingleQuoted":return`'${e.value}'`;case"DoubleQuoted":return`"${e.parts.map(kf).join("")}"`;default:return Ae(F.word([e]))}}function Dm(e){let t=e.commands.map(n=>kr(n));return(e.negated?"! ":"")+t.join(" | ")}async function xf(e,t,n,r){let s="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)r?s+=`${a} is an alias for "${l}"
748
753
  `:s+=`alias ${a}='${l}'
749
- `;else if(ri.has(a))r?s+=`${a} is a shell keyword
754
+ `;else if(or.has(a))r?s+=`${a} is a shell keyword
750
755
  `:s+=`${a}
751
- `;else if(Ht.has(a))r?s+=`${a} is a shell builtin
756
+ `;else if(vt.has(a))r?s+=`${a} is a shell builtin
752
757
  `:s+=`${a}
753
758
  `;else if(e.state.functions.has(a))r?s+=`${a} is a function
754
759
  `:s+=`${a}
@@ -758,52 +763,52 @@ ${e} ()
758
763
  `),o=1)}else if(e.commands.has(a)){let u=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),f=null;for(let d of u){if(!d)continue;let p=`${d}/${a}`;try{let h=await e.fs.stat(p);if(!h.isDirectory&&(h.mode&73)!==0){f=p;break}}catch{}}f||(f=`/usr/bin/${a}`),r?s+=`${a} is ${f}
759
764
  `:s+=`${f}
760
765
  `}else r&&(i+=`${a}: not found
761
- `),o=1}return L(s,i,o)}async function hf(e,t){if(t.includes("/")){let s=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(s)){try{let i=await e.fs.stat(s);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let s of r){if(!s)continue;let o=`${s.startsWith("/")?s:e.fs.resolvePath(e.state.cwd,s)}/${t}`;if(await e.fs.exists(o)){try{let a=await e.fs.stat(o);if(a.isDirectory||(a.mode&73)===0)continue}catch{continue}return`${s}/${t}`}}if(e.commands.has(t)){for(let s of r)if(s==="/usr/bin"||s==="/bin")return`${s}/${t}`;return`/usr/bin/${t}`}return null}function mf(e,t){let n=!0,r=e.signal?new AbortController:void 0,s=new WeakMap,i=()=>{if(!n)throw new Xe("",`bash: ${t} used its context after cancellation
762
- `)},o=f=>{if(f===null||typeof f!="object"&&typeof f!="function")return f;let d=s.get(f);if(d!==void 0)return d;if(typeof f=="object"&&ka(f))return f;if(f instanceof Uint8Array){let E=new Uint8Array(f);return s.set(f,E),E}if(f instanceof ArrayBuffer){let E=f.slice(0);return s.set(f,E),E}if(f instanceof Promise){let E=f.then(S=>(i(),o(S)));return s.set(f,E),E}if(typeof f=="function"){let E=function(...S){return i(),o(Reflect.apply(f,this,S))};return s.set(f,E),E}let p=Object.getPrototypeOf(f);if(Array.isArray(f)||p===Object.prototype||p===null){let E=Array.isArray(f)?[]:Object.create(p);s.set(f,E);let S=Object.getOwnPropertyDescriptors(f);for(let g of Object.values(S)){if("value"in g){let y=g.value;g.value=typeof y=="function"?(...b)=>(i(),o(Reflect.apply(y,f,b))):o(y)}if(g.get){let y=g.get;g.get=()=>(i(),o(Reflect.apply(y,f,[])))}if(g.set){let y=g.set;g.set=b=>{i(),Reflect.apply(y,f,[b])}}}return Object.defineProperties(E,S),E}let h=new Map,m=new ya(f,{get(E,S){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);let g=Reflect.get(E,S,E);if(typeof g!="function")return o(g);if(h.has(S))return h.get(S);let y=(...b)=>(i(),o(Reflect.apply(g,E,b)));return h.set(S,y),y},set(E,S,g){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);return Reflect.set(E,S,g,E)}});return s.set(f,m),m},a=f=>o(f),l=f=>f&&((...d)=>(i(),o(f(...d)))),c=f=>({value:f,enumerable:!0,configurable:!0,writable:!0}),u=Object.getOwnPropertyDescriptors(e);return Object.assign(u,{fs:c(a(e.fs)),env:c(a(e.env)),limits:c(Object.freeze({...e.limits})),exportedEnv:c(e.exportedEnv?Object.freeze({...e.exportedEnv}):void 0),executionScope:c(e.executionScope?a(e.executionScope):void 0),fileDescriptors:c(e.fileDescriptors?a(e.fileDescriptors):void 0),coverage:c(e.coverage?a(e.coverage):void 0),assignShellVariable:c(l(e.assignShellVariable)),exec:c(l(e.exec)),origCommand:c(l(e.origCommand)),execWithInheritedStdin:c(l(e.execWithInheritedStdin)),fetch:c(l(e.fetch)),getRegisteredCommands:c(l(e.getRegisteredCommands)),sleep:c(l(e.sleep)),trace:c(l(e.trace)),invokeTool:c(l(e.invokeTool)),signal:c(r?.signal)}),{context:Object.defineProperties(Object.create(Object.getPrototypeOf(e)),u),revoke(){n=!1,r?.signal.aborted||r?.abort(new Xe("",`bash: ${t} context revoked
763
- `))}}}async function Em(e,t,n,r,s,i){let o=s.remainingTimeMs()??t.limits.maxExecutionTimeMs,a=t.limits.maxExtensionCleanupTimeMs,l,c,u,d=Promise.resolve().then(e).then(h=>({kind:"result",result:h}),h=>({kind:"error",error:h})),p=new Promise(h=>{let m=()=>{n(),h({kind:"abort"})};c=m,i?.addEventListener("abort",m,{once:!0}),i?.aborted&&m(),l=Qn(()=>{n(),h({kind:"deadline"})},o)});try{let h=await Promise.race([d,p]);if(h.kind==="result")return h.result;if(h.kind==="error")throw h.error;n();let m=await Promise.race([d.then(()=>!0),new Promise(S=>{u=Qn(()=>S(!1),a)})]),E=h.kind==="deadline"?new Xe("",`bash: ${r} exceeded its execution deadline
764
- `):new Xe("",`bash: execution aborted
765
- `);throw m||s.poisonAfterAbort(E),E}finally{n(),Kn(l),Kn(u),c&&i?.removeEventListener("abort",c)}}async function yf(e,t,n,r,s,i,o,a,l=!1){let{ctx:c,runCommand:u}=e;if(c.coverage&&Ht.has(t)&&c.coverage.hit(`bash:builtin:${t}`),t==="export")return Fo(c,n);if(t==="unset")return Xo(c,n);if(t==="exit")return To(c,n);if(t==="local")return Vo(c,n);if(t==="set")return Ho(c,n);if(t==="break")return Qi(c,n);if(t==="continue")return ko(c,n);if(t==="return")return qo(c,n);if(t==="eval"&&c.state.options.posix)return _s(c,n,s,l);if(t==="shift")return Zo(c,n);if(t==="getopts")return Ls(c,n);if(t==="compgen")return Eo(c,n);if(t==="complete")return Ao(c,n);if(t==="compopt")return vo(c,n);if(t==="pushd")return await Oo(c,n);if(t==="popd")return _o(c,n);if(t==="dirs")return Lo(c,n);if(t==="source"||t===".")return Qo(c,n);if(t==="read")return Uo(c,n,s,a);if(t==="mapfile"||t==="readarray")return zo(c,n,s);if(t==="declare"||t==="typeset")return Ro(c,n);if(t==="readonly")return Do(c,n);if(!i){let f=c.state.functions.get(t);if(f)return Is(c,f,n,s,void 0,l)}if(t==="__just_bash_tee_restore"){if(n.length===0||n.length>c.limits.maxArrayElements)return _(`bash: invalid internal pipeline status restore
766
- `,2);let f=[];for(let h of n){if(!/^(?:0|[1-9][0-9]{0,2})$/.test(h))return _(`bash: invalid internal pipeline status restore
767
- `,2);let m=Number(h);if(!Number.isSafeInteger(m)||m>255)return _(`bash: invalid internal pipeline status restore
768
- `,2);f.push(m)}let d=f[f.length-1]??0,p=[...f].reverse().find(h=>h!==0);return{stdout:"",stderr:"",exitCode:c.state.options.pipefail&&p!==void 0?p:d,internalPipeStatusOverride:f}}if(t==="eval")return _s(c,n,s,l);if(t==="cd")return await Ki(c,n);if(t===":"||t==="true")return te;if(t==="false")return ge(!1);if(t==="let")return Wo(c,n);if(t==="command")return bm(e,n,s,l);if(t==="builtin")return Sm(e,n,s,l);if(t==="shopt")return tf(c,n);if(t==="exec"){if(n.length===0)return te;let[f,...d]=n;return{...await u(f,d,[],s,!1,!1,-1,l),internalProducerOmitsShellPrefix:!0}}if(t==="wait")return te;if(t==="type")return await ff(c,n,f=>hf(c,f),f=>Br(c,f));if(t==="hash")return Mo(c,n);if(t==="help")return Bo(c,n);if(t==="["||t==="test"){let f=n;if(t==="["){if(n[n.length-1]!=="]")return _("[: missing `]'\n",2);f=n.slice(0,-1)}return dr(c,f)}return null}async function bm(e,t,n,r=!1){let{ctx:s,runCommand:i}=e;if(t.length===0)return te;let o=!1,a=!1,l=!1,c=t;for(;c.length>0&&c[0].startsWith("-");){let d=c[0];if(d==="--"){c=c.slice(1);break}for(let p of d.slice(1))p==="p"?o=!0:p==="V"?a=!0:p==="v"&&(l=!0);c=c.slice(1)}if(c.length===0)return te;if(l||a)return await pf(s,c,l,a);let[u,...f]=c;return i(u,f,[],n,!0,o,-1,r)}async function Sm(e,t,n,r=!1){let{runCommand:s}=e;if(t.length===0)return te;let i=t;if(i[0]==="--"&&(i=i.slice(1),i.length===0))return te;let o=i[0];if(o!=="__just_bash_tee_restore"&&!Ht.has(o))return _(`bash: builtin: ${o}: not a shell builtin
769
- `);let[,...a]=i;return s(o,a,[],n,!0,!1,-1,r)}async function gf(e,t,n,r,s){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await Mr(i,t,s?"/usr/bin:/bin":void 0);if(!c){i.executionScope.recordUnresolvedCommand(t);let A=i.executionScope.abortOnUnresolvedCommands;if(cu(t)){let k=`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
770
- `;if(A)throw new $e(t,"",k);return _(k,127)}if(A)throw new $e(t,"",`bash: ${t}: command not found
771
- `);return _(`bash: ${t}: command not found
772
- `,127)}if("error"in c)return c.error==="permission_denied"?_(`bash: ${t}: Permission denied
773
- `,126):_(`bash: ${t}: No such file or directory
774
- `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,n,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",p=!1,h=o();i.state.fileDescriptors??=new Map;let m={fs:i.fs,fsIdentity:Xs(i.fs),cwd:i.state.cwd,env:i.state.env,assignShellVariable:async(A,k,v)=>{if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A))throw new Error(`${A}: not a valid identifier`);let $=v===void 0?A:`${A}[${v}]`,R=Jr(i,A,k);if(R===void 0)throw new Error(`${A}: circular name reference`);if(R===null)return;let x=R.match(/^([a-zA-Z_][a-zA-Z0-9_]*)(?:\[(.*)\])?$/);if(!x)throw new Error(`${$}: not a valid identifier`);let C=x[1],D=x[2]??v;if(Me(i,A)||Me(i,C))throw new Error(`${C}: readonly variable`);if(D===void 0)i.state.env.set(C,k);else{let B=i.state.associativeArrays?.has(C)?"associative":"indexed";if(B==="associative"){q(i,C,D,k,B);return}let H=await ea(i,C,D);if(H.error)throw new U(H.error.exitCode,H.error.stdout,H.error.stderr);q(i,C,H.index,k,B)}},exportedEnv:h,get stdin(){return p=!0,d},limits:i.limits,executionScope:u.internalIsExtension?Na(i.executionScope):i.executionScope,exec:(A,k)=>i.execFn(A,k,!1),execWithInheritedStdin:(A,k)=>i.execFn(A,{...k,stdin:d,stdinKind:"bytes"},!0),fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode,invokeTool:i.invokeTool},E=u.internalOriginalCommand,S=()=>{};if(E){let A=Object.getOwnPropertyDescriptors(m);A.executionScope={value:i.executionScope,enumerable:!0,configurable:!0,writable:!0};let k=Object.defineProperties(Object.create(Object.getPrototypeOf(m)),A),v=mf(k,E.name),$=Jo(v.context,E.name);S=v.revoke,m.origCommand=R=>{let x=()=>E.execute(R,$);return E.trusted?He.runTrustedAsync(x):He.runUntrustedAsync(x)}}let g=mf(m,t),y=Jo(g.context,t),b=()=>{g.revoke(),S()};try{let A=()=>ma(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(n,y)),k=()=>Em(A,y,b,t,i.executionScope,i.state.signal),v=u.trusted?await He.runTrustedAsync(k):await k();return{...v,internalStdinConsumed:v.internalStdinConsumed??(p?r.length:0)}}catch(A){return Or(A),_(`${t}: ${ze(It(A))}
775
- `)}}async function ta(e,t){let n=e.state.inCondition;e.state.inCondition=!0;let r=new Ut(e.executionScope,"condition"),s=0;try{for(let i of t){let o=await e.executeStatement(i);r.appendResult(o),s=o.exitCode}}catch(i){throw r.prependTo(i),i}finally{e.state.inCondition=n}return r.build(s)}function br(e,t,n,r){if(e instanceof Ze)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"break",stdout:t,stderr:n};if(e instanceof Qe)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"continue",stdout:t,stderr:n};if(Ir(e)||e instanceof Oe||e instanceof We||e instanceof U)return e instanceof Mt&&e.prependOutput(t,n),{action:"rethrow",stdout:t,stderr:n,error:e};let s=It(e);return{action:"error",stdout:t,stderr:`${n}${s}
776
- `,exitCode:1}}function wf(e,t){return e!==void 0?{owns:!0,stdin:e}:t!==""?{owns:!0,stdin:t}:{owns:!1}}var un=class{ctx;stdoutChunks=[];stderrChunks=[];totalBytes=0;constructor(t){this.ctx=t}append(t,n){let r=M(t)+M(n);r>this.ctx.limits.maxOutputSize-this.totalBytes&&tn(`total output size exceeded (>${this.ctx.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size"),t&&this.stdoutChunks.push(t),n&&this.stderrChunks.push(n),this.totalBytes+=r}appendUnaccounted(t,n){this.ctx.executionScope.appendOutput("stdout",t,"control-flow"),this.ctx.executionScope.appendOutput("stderr",n,"control-flow"),this.append(t,n)}replace(t,n){this.stdoutChunks=[],this.stderrChunks=[],this.totalBytes=0,this.append(t,n)}get stdout(){return this.stdoutChunks.join("")}get stderr(){return this.stderrChunks.join("")}build(t){let n=this.stdout,r=this.stderr;return{stdout:n,stderr:r,exitCode:t,internalOutputAccounting:{stdout:M(n),stderr:M(r)}}}};async function na(e,t,n){let r=0;try{for(let s of t){let i=await e.executeStatement(s);n.append(i.stdout,i.stderr),r=i.exitCode}}catch(s){if(Dr(s)||s instanceof We||s instanceof U||s instanceof $e||s instanceof P||s instanceof Wt)throw s.prependOutput(n.stdout,n.stderr),s;return n.appendUnaccounted("",`${It(s)}
777
- `),n.build(1)}return n.build(r)}async function Ef(e,t){return nt(e,t.redirections,"",()=>Am(e,t))}async function Am(e,t){let n=new un(e);for(let r of t.clauses){let s=await ta(e,r.condition);if(n.append(s.stdout,s.stderr),s.exitCode===0)return na(e,r.body,n)}return t.elseBody?na(e,t.elseBody,n):n.build(0)}async function bf(e,t){return nt(e,t.redirections,"",()=>vm(e,t))}async function vm(e,t){let n=new un(e),r=0,s=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return _(`bash: \`${t.variable}': not a valid identifier
778
- `);let i=[];if(t.words===null)i=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)i=[];else try{for(let o of t.words){let a=await gt(e,o);Re(i,a.values,e.limits.maxArrayElements,"for-loop expansion")}}catch(o){if(o instanceof Bt)return{stdout:"",stderr:o.stderr,exitCode:1};throw o}e.state.loopDepth++;try{for(let o of i){s++,s>e.limits.maxLoopIterations&&tn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n.stdout,n.stderr),e.state.env.set(t.variable,o);try{for(let a of t.body){let l=await e.executeStatement(a);n.append(l.stdout,l.stderr),r=l.exitCode}}catch(a){let l=br(a,n.stdout,n.stderr,e.state.loopDepth);if(n.replace(l.stdout,l.stderr),l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return n.build(l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return n.build(r)}async function Sf(e,t){return nt(e,t.redirections,"",()=>km(e,t))}async function km(e,t){let n=t.line;n!==void 0&&(e.state.currentLine=n);let r=new un(e),s=0,i=0;t.init&&await X(e,t.init.expression),e.state.loopDepth++;try{for(;i++,i>e.limits.maxLoopIterations&&tn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r.stdout,r.stderr),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await X(e,t.condition.expression)===0));){try{for(let o of t.body){let a=await e.executeStatement(o);r.append(a.stdout,a.stderr),s=a.exitCode}}catch(o){let a=br(o,r.stdout,r.stderr,e.state.loopDepth);if(r.replace(a.stdout,a.stderr),a.action==="break")break;if(a.action==="continue"){t.update&&await X(e,t.update.expression);continue}if(a.action==="error")return r.build(a.exitCode??1);throw a.error}t.update&&await X(e,t.update.expression)}}finally{e.state.loopDepth--}return r.build(s)}async function Af(e,t,n=""){return nt(e,t.redirections,n,r=>xm(e,t,n,r))}async function xm(e,t,n,r){let s=new un(e),i=0,o=0,a=wf(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&tn(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let p of t.condition){let h=await e.executeStatement(p);s.append(h.stdout,h.stderr),c=h.exitCode}}catch(p){if(p instanceof Ze){if(s.append(p.stdout,p.stderr),p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=s.stdout,p.stderr=s.stderr,e.state.inCondition=d,p;u=!0}else if(p instanceof Qe){if(s.append(p.stdout,p.stderr),p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=s.stdout,p.stderr=s.stderr,e.state.inCondition=d,p;f=!0}else throw e.state.inCondition=d,p}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let p of t.body){let h=await e.executeStatement(p);s.append(h.stdout,h.stderr),i=h.exitCode}}catch(p){let h=br(p,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(h.stdout,h.stderr),h.action==="break")break;if(h.action==="continue")continue;if(h.action==="error")return s.build(h.exitCode??1);throw h.error}}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function vf(e,t,n=""){return nt(e,t.redirections,n,r=>$m(e,t,n,r))}async function $m(e,t,n,r){let s=new un(e),i=0,o=0,a=wf(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&tn(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=await ta(e,t.condition);if(s.append(c.stdout,c.stderr),c.exitCode===0)break;try{for(let u of t.body){let f=await e.executeStatement(u);s.append(f.stdout,f.stderr),i=f.exitCode}}catch(u){let f=br(u,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(f.stdout,f.stderr),f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error")return s.build(f.exitCode??1);throw f.error}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function kf(e,t){return nt(e,t.redirections,"",()=>Pm(e,t))}async function Pm(e,t){let n=new un(e),r=0,s=await se(e,t.word),i=!1;for(let o=0;o<t.items.length;o++){let a=t.items[o],l=i;if(!i)for(let c of a.patterns){let u=await se(e,c);Yc(c)&&(u=Je(u));let f=e.state.shoptOptions.nocasematch,d=e.state.shoptOptions.extglob;if(Wn(s,u,f,d,e.limits.maxCallDepth)){l=!0;break}}if(l){let c=await na(e,a.body,n);if(n.replace(c.stdout,c.stderr),r=c.exitCode,a.terminator===";;")break;a.terminator===";&"?i=!0:i=!1}else i=!1}return n.build(r)}function ra(e,t){if(e.parts.length!==1)return!1;let n=e.parts[0];return n.type!=="Literal"?!1:t.includes(n.value)}async function xf(e,t,n){let r=t.timed?Zs():0,s="",i=te,o=0,a=[],l="",c=0,u=t.commands.length>1,f=e.state.lastArg,d=e.state.groupStdin,p=e.state.groupStdinSourceFd;for(let g=0;g<t.commands.length;g++){let y=t.commands[g],b=g===t.commands.length-1,A=g===0;u&&(e.state.lastArg="",e.state.groupStdin=A?d:void 0,e.state.groupStdinSourceFd=A?p:void 0);let k=u&&(!b||!e.state.shoptOptions.lastpipe),v=k?new Map(e.state.env):null,$=k?st(e.state.arrays):null,R,x=e.executionScope.outputBytesUsed;try{e.state.commandCount=e.executionScope.chargeCommand(),R=await n(y,s)}catch(C){if(C instanceof Ke)R={stdout:C.stdout,stderr:C.stderr,exitCode:1};else if(C instanceof U&&t.commands.length>1)R={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else if(C instanceof We&&t.commands.length>1)R={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else throw v&&(e.state.env=v,e.state.arrays=$??new Map),C}finally{u&&(A&&(d=e.state.groupStdin,p=e.state.groupStdinSourceFd),e.state.groupStdin=d,e.state.groupStdinSourceFd=p)}if(v&&(e.state.env=v,e.state.arrays=$??new Map),R=e.executionScope.accountResult(R,"pipeline",e.executionScope.outputBytesUsed-x),!b){let C=t.pipeStderr?.[g]??!1,D=R.internalOutputAccounting?.stdout??0,B=C?R.internalOutputAccounting?.stderr??0:0;Ra(e.executionScope,D+B,"pipeline"),R={...R,internalOutputAccounting:{stdout:0,stderr:C?0:R.internalOutputAccounting?.stderr??0}}}a.push(R.exitCode),R.exitCode!==0&&(o=R.exitCode),b?i=R:(t.pipeStderr?.[g]??!1?s=dn(R.stderr)+Ft(R):(s=Ft(R),l+=R.stderr,c+=R.internalOutputAccounting?.stderr??0),i={stdout:"",stderr:"",exitCode:R.exitCode})}l&&(i={...i,stderr:l+i.stderr,internalOutputAccounting:{stdout:i.internalOutputAccounting?.stdout??0,stderr:c+(i.internalOutputAccounting?.stderr??0)}});let h=t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand",m=i.internalPipeStatusOverride??a;if(h){ye(e,"PIPESTATUS");for(let g=0;g<m.length;g++)q(e,"PIPESTATUS",g,String(m[g]))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let y=(Zs()-r)/1e3,b=Math.floor(y/60),A=y%60,k;t.timePosix?k=`real ${y.toFixed(2)}
766
+ `),o=1}return T(s,i,o)}async function $f(e,t){if(t.includes("/")){let s=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(s)){try{let i=await e.fs.stat(s);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let r=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let s of r){if(!s)continue;let o=`${s.startsWith("/")?s:e.fs.resolvePath(e.state.cwd,s)}/${t}`;if(await e.fs.exists(o)){try{let a=await e.fs.stat(o);if(a.isDirectory||(a.mode&73)===0)continue}catch{continue}return`${s}/${t}`}}if(e.commands.has(t)){for(let s of r)if(s==="/usr/bin"||s==="/bin")return`${s}/${t}`;return`/usr/bin/${t}`}return null}function Pf(e,t){let n=!0,r=e.signal?new AbortController:void 0,s=new WeakMap,i=()=>{if(!n)throw new Ye("",`bash: ${t} used its context after cancellation
767
+ `)},o=f=>{if(f===null||typeof f!="object"&&typeof f!="function")return f;let d=s.get(f);if(d!==void 0)return d;if(typeof f=="object"&&Ia(f))return f;if(f instanceof Uint8Array){let E=new Uint8Array(f);return s.set(f,E),E}if(f instanceof ArrayBuffer){let E=f.slice(0);return s.set(f,E),E}if(f instanceof Promise){let E=f.then(S=>(i(),o(S)));return s.set(f,E),E}if(typeof f=="function"){let E=function(...S){return i(),o(Reflect.apply(f,this,S))};return s.set(f,E),E}let p=Object.getPrototypeOf(f);if(Array.isArray(f)||p===Object.prototype||p===null){let E=Array.isArray(f)?[]:Object.create(p);s.set(f,E);let S=Object.getOwnPropertyDescriptors(f);for(let g of Object.values(S)){if("value"in g){let m=g.value;g.value=typeof m=="function"?(...b)=>(i(),o(Reflect.apply(m,f,b))):o(m)}if(g.get){let m=g.get;g.get=()=>(i(),o(Reflect.apply(m,f,[])))}if(g.set){let m=g.set;g.set=b=>{i(),Reflect.apply(m,f,[b])}}}return Object.defineProperties(E,S),E}let h=new Map,y=new ka(f,{get(E,S){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);let g=Reflect.get(E,S,E);if(typeof g!="function")return o(g);if(h.has(S))return h.get(S);let m=(...b)=>(i(),o(Reflect.apply(g,E,b)));return h.set(S,m),m},set(E,S,g){if(i(),S==="constructor"||S==="prototype"||S==="__proto__")throw new Error(`${t}: unsafe context property access`);return Reflect.set(E,S,g,E)}});return s.set(f,y),y},a=f=>o(f),l=f=>f&&((...d)=>(i(),o(f(...d)))),c=f=>({value:f,enumerable:!0,configurable:!0,writable:!0}),u=Object.getOwnPropertyDescriptors(e);return Object.assign(u,{fs:c(a(e.fs)),env:c(a(e.env)),limits:c(Object.freeze({...e.limits})),exportedEnv:c(e.exportedEnv?Object.freeze({...e.exportedEnv}):void 0),executionScope:c(e.executionScope?a(e.executionScope):void 0),fileDescriptors:c(e.fileDescriptors?a(e.fileDescriptors):void 0),coverage:c(e.coverage?a(e.coverage):void 0),assignShellVariable:c(l(e.assignShellVariable)),exec:c(l(e.exec)),origCommand:c(l(e.origCommand)),execWithInheritedStdin:c(l(e.execWithInheritedStdin)),fetch:c(l(e.fetch)),getRegisteredCommands:c(l(e.getRegisteredCommands)),sleep:c(l(e.sleep)),trace:c(l(e.trace)),invokeTool:c(l(e.invokeTool)),signal:c(r?.signal)}),{context:Object.defineProperties(Object.create(Object.getPrototypeOf(e)),u),revoke(){n=!1,r?.signal.aborted||r?.abort(new Ye("",`bash: ${t} context revoked
768
+ `))}}}async function Im(e,t,n,r,s,i){let o=s.remainingTimeMs()??t.limits.maxExecutionTimeMs,a=t.limits.maxExtensionCleanupTimeMs,l,c,u,d=Promise.resolve().then(e).then(h=>({kind:"result",result:h}),h=>({kind:"error",error:h})),p=new Promise(h=>{let y=()=>{n(),h({kind:"abort"})};c=y,i?.addEventListener("abort",y,{once:!0}),i?.aborted&&y(),l=Jn(()=>{n(),h({kind:"deadline"})},o)});try{let h=await Promise.race([d,p]);if(h.kind==="result")return h.result;if(h.kind==="error")throw h.error;n();let y=await Promise.race([d.then(()=>!0),new Promise(S=>{u=Jn(()=>S(!1),a)})]),E=h.kind==="deadline"?new Ye("",`bash: ${r} exceeded its execution deadline
769
+ `):new Ye("",`bash: execution aborted
770
+ `);throw y||s.poisonAfterAbort(E),E}finally{n(),er(l),er(u),c&&i?.removeEventListener("abort",c)}}var Cf={export:(e,t)=>Go(e.ctx,t),unset:(e,t)=>ia(e.ctx,t),exit:(e,t)=>Ho(e.ctx,t),local:(e,t)=>Xo(e.ctx,t),set:(e,t)=>na(e.ctx,t),break:(e,t)=>io(e.ctx,t),continue:(e,t)=>_o(e.ctx,t),return:(e,t)=>Jo(e.ctx,t),shift:(e,t)=>ra(e.ctx,t),getopts:(e,t)=>qs(e.ctx,t),compgen:(e,t)=>No(e.ctx,t),complete:(e,t)=>Io(e.ctx,t),compopt:(e,t)=>Oo(e.ctx,t),pushd:(e,t)=>zo(e.ctx,t),popd:(e,t)=>Uo(e.ctx,t),dirs:(e,t)=>qo(e.ctx,t),source:(e,t)=>Gs(e.ctx,t),".":(e,t)=>Gs(e.ctx,t),read:(e,t,n)=>Yo(e.ctx,t,n.stdin,n.stdinSourceFd),mapfile:(e,t,n)=>js(e.ctx,t,n.stdin),readarray:(e,t,n)=>js(e.ctx,t,n.stdin),declare:(e,t)=>Us(e.ctx,t),typeset:(e,t)=>Us(e.ctx,t),readonly:(e,t)=>Wo(e.ctx,t),eval:(e,t,n)=>jo(e.ctx,t,n.stdin,n.stdinRedirected),cd:(e,t)=>oo(e.ctx,t),":":()=>ne,true:()=>ne,false:()=>we(!1),let:(e,t)=>Ko(e.ctx,t),command:(e,t,n)=>Om(e,t,n.stdin,n.stdinRedirected),builtin:(e,t,n)=>_m(e,t,n.stdin,n.stdinRedirected),shopt:(e,t)=>Uu(e.ctx,t),exec:async(e,t,n)=>{if(t.length===0)return ne;let[r,...s]=t;return{...await e.runCommand(r,s,[],n.stdin,!1,!1,-1,n.stdinRedirected),internalProducerOmitsShellPrefix:!0}},wait:()=>ne,type:(e,t)=>vf(e.ctx,t,n=>$f(e.ctx,n),n=>jr(e.ctx,n)),hash:(e,t)=>Zo(e.ctx,t),help:(e,t)=>Qo(e.ctx,t),"[":(e,t)=>t[t.length-1]!=="]"?L("[: missing `]'\n",2):qn(e.ctx,t.slice(0,-1)),test:(e,t)=>qn(e.ctx,t)};async function Nf(e,t,n,r,s,i,o,a,l=!1){let{ctx:c}=e;c.coverage&&vt.has(t)&&c.coverage.hit(`bash:builtin:${t}`);let u={stdin:s,stdinRedirected:l,stdinSourceFd:a},f=qa(t),d=(f==="early"||f==="late")&&Object.hasOwn(Cf,t)?Cf[t]:void 0;if(d&&(f==="early"||c.state.options.posix&&ja(t)))return d(e,n,u);if(!i){let p=c.state.functions.get(t);if(p)return Bs(c,p,n,s,void 0,l)}if(t==="__just_bash_tee_restore"){if(n.length===0||n.length>c.limits.maxArrayElements)return L(`bash: invalid internal pipeline status restore
771
+ `,2);let p=[];for(let E of n){if(!/^(?:0|[1-9][0-9]{0,2})$/.test(E))return L(`bash: invalid internal pipeline status restore
772
+ `,2);let S=Number(E);if(!Number.isSafeInteger(S)||S>255)return L(`bash: invalid internal pipeline status restore
773
+ `,2);p.push(S)}let h=p[p.length-1]??0,y=[...p].reverse().find(E=>E!==0);return{stdout:"",stderr:"",exitCode:c.state.options.pipefail&&y!==void 0?y:h,internalPipeStatusOverride:p}}return d&&f==="late"?d(e,n,u):null}async function Om(e,t,n,r=!1){let{ctx:s,runCommand:i}=e;if(t.length===0)return ne;let o=!1,a=!1,l=!1,c=t;for(;c.length>0&&c[0].startsWith("-");){let d=c[0];if(d==="--"){c=c.slice(1);break}for(let p of d.slice(1))p==="p"?o=!0:p==="V"?a=!0:p==="v"&&(l=!0);c=c.slice(1)}if(c.length===0)return ne;if(l||a)return await xf(s,c,l,a);let[u,...f]=c;return i(u,f,[],n,!0,o,-1,r)}async function _m(e,t,n,r=!1){let{runCommand:s}=e;if(t.length===0)return ne;let i=t;if(i[0]==="--"&&(i=i.slice(1),i.length===0))return ne;let o=i[0];if(o!=="__just_bash_tee_restore"&&!vt.has(o))return L(`bash: builtin: ${o}: not a shell builtin
774
+ `);let[,...a]=i;return s(o,a,[],n,!0,!1,-1,r)}async function Rf(e,t,n,r,s){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await qr(i,t,s?"/usr/bin:/bin":void 0);if(!c){i.executionScope.recordUnresolvedCommand(t);let A=i.executionScope.abortOnUnresolvedCommands;if(Eu(t)){let k=`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
775
+ `;if(A)throw new Pe(t,"",k);return L(k,127)}if(A)throw new Pe(t,"",`bash: ${t}: command not found
776
+ `);return L(`bash: ${t}: command not found
777
+ `,127)}if("error"in c)return c.error==="permission_denied"?L(`bash: ${t}: Permission denied
778
+ `,126):L(`bash: ${t}: No such file or directory
779
+ `,127);if("script"in c)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,c.path)),await a(c.path,n,r);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=r||i.state.groupStdin||"",p=!1,h=o();i.state.fileDescriptors??=new Map;let y={fs:i.fs,fsIdentity:ai(i.fs),cwd:i.state.cwd,env:i.state.env,assignShellVariable:async(A,k,v)=>{if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(A))throw new Error(`${A}: not a valid identifier`);let $=v===void 0?A:`${A}[${v}]`,D=is(i,A,k);if(D===void 0)throw new Error(`${A}: circular name reference`);if(D===null)return;let x=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)(?:\[(.*)\])?$/);if(!x)throw new Error(`${$}: not a valid identifier`);let C=x[1],I=x[2]??v;if(We(i,A)||We(i,C))throw new Error(`${C}: readonly variable`);if(I===void 0)i.state.env.set(C,k);else{let W=i.state.associativeArrays?.has(C)?"associative":"indexed";if(W==="associative"){j(i,C,I,k,W);return}let Z=await aa(i,C,I);if(Z.error)throw new q(Z.error.exitCode,Z.error.stdout,Z.error.stderr);j(i,C,Z.index,k,W)}},exportedEnv:h,get stdin(){return p=!0,d},limits:i.limits,executionScope:u.internalIsExtension?Fa(i.executionScope):i.executionScope,exec:(A,k)=>i.execFn(A,k,!1),execWithInheritedStdin:(A,k)=>i.execFn(A,{...k,stdin:d,stdinKind:"bytes"},!0),fetch:i.fetch,getRegisteredCommands:()=>Array.from(i.commands.keys()),sleep:i.sleep,trace:i.trace,fileDescriptors:i.state.fileDescriptors,xpgEcho:i.state.shoptOptions.xpg_echo,coverage:i.coverage,signal:i.state.signal,requireDefenseContext:i.requireDefenseContext,jsBootstrapCode:i.jsBootstrapCode,invokeTool:i.invokeTool},E=u.internalOriginalCommand,S=()=>{};if(E){let A=Object.getOwnPropertyDescriptors(y);A.executionScope={value:i.executionScope,enumerable:!0,configurable:!0,writable:!0};let k=Object.defineProperties(Object.create(Object.getPrototypeOf(y)),A),v=Pf(k,E.name),$=oa(v.context,E.name);S=v.revoke,y.origCommand=D=>{let x=()=>E.execute(D,$);return E.trusted?Te.runTrustedAsync(x):Te.runUntrustedAsync(x)}}let g=Pf(y,t),m=oa(g.context,t),b=()=>{g.revoke(),S()};try{let A=()=>va(i.requireDefenseContext,"command",`${t} execution`,()=>u.execute(n,m)),k=()=>Im(A,m,b,t,i.executionScope,i.state.signal),v=u.trusted?await Te.runTrustedAsync(k):await k();return{...v,internalStdinConsumed:v.internalStdinConsumed??(p?r.length:0)}}catch(A){return Mr(A),L(`${t}: ${qe(_t(A))}
780
+ `)}}async function la(e,t){let n=e.state.inCondition;e.state.inCondition=!0;let r=new Ht(e.executionScope,"condition"),s=0;try{for(let i of t){let o=await e.executeStatement(i);r.appendResult(o),s=o.exitCode}}catch(i){throw r.prependTo(i),i}finally{e.state.inCondition=n}return r.build(s)}function xr(e,t,n,r){if(e instanceof Qe)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"break",stdout:t,stderr:n};if(e instanceof Ke)return t+=e.stdout,n+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=n,{action:"rethrow",stdout:t,stderr:n,error:e}):{action:"continue",stdout:t,stderr:n};if(Fr(e)||e instanceof _e||e instanceof ze||e instanceof q)return e instanceof Wt&&e.prependOutput(t,n),{action:"rethrow",stdout:t,stderr:n,error:e};let s=_t(e);return{action:"error",stdout:t,stderr:`${n}${s}
781
+ `,exitCode:1}}function Df(e,t){return e!==void 0?{owns:!0,stdin:e}:t!==""?{owns:!0,stdin:t}:{owns:!1}}var pn=class{ctx;stdoutChunks=[];stderrChunks=[];totalBytes=0;constructor(t){this.ctx=t}append(t,n){let r=B(t)+B(n);r>this.ctx.limits.maxOutputSize-this.totalBytes&&sn(`total output size exceeded (>${this.ctx.limits.maxOutputSize} bytes), increase executionLimits.maxOutputSize`,"output_size"),t&&this.stdoutChunks.push(t),n&&this.stderrChunks.push(n),this.totalBytes+=r}appendUnaccounted(t,n){this.ctx.executionScope.appendOutput("stdout",t,"control-flow"),this.ctx.executionScope.appendOutput("stderr",n,"control-flow"),this.append(t,n)}replace(t,n){this.stdoutChunks=[],this.stderrChunks=[],this.totalBytes=0,this.append(t,n)}get stdout(){return this.stdoutChunks.join("")}get stderr(){return this.stderrChunks.join("")}build(t){let n=this.stdout,r=this.stderr;return{stdout:n,stderr:r,exitCode:t,internalOutputAccounting:{stdout:B(n),stderr:B(r)}}}};async function ca(e,t,n){let r=0;try{for(let s of t){let i=await e.executeStatement(s);n.append(i.stdout,i.stderr),r=i.exitCode}}catch(s){if(Tr(s)||s instanceof ze||s instanceof q||s instanceof Pe||s instanceof P||s instanceof zt)throw s.prependOutput(n.stdout,n.stderr),s;return n.appendUnaccounted("",`${_t(s)}
782
+ `),n.build(1)}return n.build(r)}async function If(e,t){return rt(e,t.redirections,"",()=>Lm(e,t))}async function Lm(e,t){let n=new pn(e);for(let r of t.clauses){let s=await la(e,r.condition);if(n.append(s.stdout,s.stderr),s.exitCode===0)return ca(e,r.body,n)}return t.elseBody?ca(e,t.elseBody,n):n.build(0)}async function Of(e,t){return rt(e,t.redirections,"",()=>Tm(e,t))}async function Tm(e,t){let n=new pn(e),r=0,s=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return L(`bash: \`${t.variable}': not a valid identifier
783
+ `);let i=[];if(t.words===null)i=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)i=[];else try{for(let o of t.words){let a=await Et(e,o);De(i,a.values,e.limits.maxArrayElements,"for-loop expansion")}}catch(o){if(o instanceof Vt)return{stdout:"",stderr:o.stderr,exitCode:1};throw o}e.state.loopDepth++;try{for(let o of i){s++,s>e.limits.maxLoopIterations&&sn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n.stdout,n.stderr),e.state.env.set(t.variable,o);try{for(let a of t.body){let l=await e.executeStatement(a);n.append(l.stdout,l.stderr),r=l.exitCode}}catch(a){let l=xr(a,n.stdout,n.stderr,e.state.loopDepth);if(n.replace(l.stdout,l.stderr),l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return n.build(l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return n.build(r)}async function _f(e,t){return rt(e,t.redirections,"",()=>Fm(e,t))}async function Fm(e,t){let n=t.line;n!==void 0&&(e.state.currentLine=n);let r=new pn(e),s=0,i=0;t.init&&await Y(e,t.init.expression),e.state.loopDepth++;try{for(;i++,i>e.limits.maxLoopIterations&&sn(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r.stdout,r.stderr),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await Y(e,t.condition.expression)===0));){try{for(let o of t.body){let a=await e.executeStatement(o);r.append(a.stdout,a.stderr),s=a.exitCode}}catch(o){let a=xr(o,r.stdout,r.stderr,e.state.loopDepth);if(r.replace(a.stdout,a.stderr),a.action==="break")break;if(a.action==="continue"){t.update&&await Y(e,t.update.expression);continue}if(a.action==="error")return r.build(a.exitCode??1);throw a.error}t.update&&await Y(e,t.update.expression)}}finally{e.state.loopDepth--}return r.build(s)}async function Lf(e,t,n=""){return rt(e,t.redirections,n,r=>Mm(e,t,n,r))}async function Mm(e,t,n,r){let s=new pn(e),i=0,o=0,a=Df(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&sn(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let p of t.condition){let h=await e.executeStatement(p);s.append(h.stdout,h.stderr),c=h.exitCode}}catch(p){if(p instanceof Qe){if(s.append(p.stdout,p.stderr),p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=s.stdout,p.stderr=s.stderr,e.state.inCondition=d,p;u=!0}else if(p instanceof Ke){if(s.append(p.stdout,p.stderr),p.levels>1&&e.state.loopDepth>1)throw p.levels--,p.stdout=s.stdout,p.stderr=s.stderr,e.state.inCondition=d,p;f=!0}else throw e.state.inCondition=d,p}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let p of t.body){let h=await e.executeStatement(p);s.append(h.stdout,h.stderr),i=h.exitCode}}catch(p){let h=xr(p,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(h.stdout,h.stderr),h.action==="break")break;if(h.action==="continue")continue;if(h.action==="error")return s.build(h.exitCode??1);throw h.error}}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function Tf(e,t,n=""){return rt(e,t.redirections,n,r=>Bm(e,t,n,r))}async function Bm(e,t,n,r){let s=new pn(e),i=0,o=0,a=Df(r.stdin,n),l=e.state.groupStdin;a.owns&&(e.state.groupStdin=a.stdin),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&sn(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s.stdout,s.stderr);let c=await la(e,t.condition);if(s.append(c.stdout,c.stderr),c.exitCode===0)break;try{for(let u of t.body){let f=await e.executeStatement(u);s.append(f.stdout,f.stderr),i=f.exitCode}}catch(u){let f=xr(u,s.stdout,s.stderr,e.state.loopDepth);if(s.replace(f.stdout,f.stderr),f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error")return s.build(f.exitCode??1);throw f.error}}}finally{e.state.loopDepth--,a.owns&&(e.state.groupStdin=l)}return s.build(i)}async function Ff(e,t){return rt(e,t.redirections,"",()=>Wm(e,t))}async function Wm(e,t){let n=new pn(e),r=0,s=await ie(e,t.word),i=!1;for(let o=0;o<t.items.length;o++){let a=t.items[o],l=i;if(!i)for(let c of a.patterns){let u=await ie(e,c);lu(c)&&(u=et(u));let f=e.state.shoptOptions.nocasematch,d=e.state.shoptOptions.extglob;if(Un(s,u,f,d,e.limits.maxCallDepth)){l=!0;break}}if(l){let c=await ca(e,a.body,n);if(n.replace(c.stdout,c.stderr),r=c.exitCode,a.terminator===";;")break;a.terminator===";&"?i=!0:i=!1}else i=!1}return n.build(r)}function ua(e,t){if(e.parts.length!==1)return!1;let n=e.parts[0];return n.type!=="Literal"?!1:t.includes(n.value)}async function Mf(e,t,n){let r=t.timed?si():0,s="",i=ne,o=0,a=[],l="",c=0,u=t.commands.length>1,f=e.state.lastArg,d=e.state.groupStdin,p=e.state.groupStdinSourceFd;for(let g=0;g<t.commands.length;g++){let m=t.commands[g],b=g===t.commands.length-1,A=g===0;u&&(e.state.lastArg="",e.state.groupStdin=A?d:void 0,e.state.groupStdinSourceFd=A?p:void 0);let k=u&&(!b||!e.state.shoptOptions.lastpipe),v=k?new Map(e.state.env):null,$=k?it(e.state.arrays):null,D,x=e.executionScope.outputBytesUsed;try{e.state.commandCount=e.executionScope.chargeCommand(),D=await n(m,s)}catch(C){if(C instanceof Xe)D={stdout:C.stdout,stderr:C.stderr,exitCode:1};else if(C instanceof q&&t.commands.length>1)D={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else if(C instanceof ze&&t.commands.length>1)D={stdout:C.stdout,stderr:C.stderr,exitCode:C.exitCode};else throw v&&(e.state.env=v,e.state.arrays=$??new Map),C}finally{u&&(A&&(d=e.state.groupStdin,p=e.state.groupStdinSourceFd),e.state.groupStdin=d,e.state.groupStdinSourceFd=p)}if(v&&(e.state.env=v,e.state.arrays=$??new Map),D=e.executionScope.accountResult(D,"pipeline",e.executionScope.outputBytesUsed-x),!b){let C=t.pipeStderr?.[g]??!1,I=D.internalOutputAccounting?.stdout??0,W=C?D.internalOutputAccounting?.stderr??0:0;Ma(e.executionScope,I+W,"pipeline"),D={...D,internalOutputAccounting:{stdout:0,stderr:C?0:D.internalOutputAccounting?.stderr??0}}}a.push(D.exitCode),D.exitCode!==0&&(o=D.exitCode),b?i=D:(t.pipeStderr?.[g]??!1?s=mn(D.stderr)+Bt(D):(s=Bt(D),l+=D.stderr,c+=D.internalOutputAccounting?.stderr??0),i={stdout:"",stderr:"",exitCode:D.exitCode})}l&&(i={...i,stderr:l+i.stderr,internalOutputAccounting:{stdout:i.internalOutputAccounting?.stdout??0,stderr:c+(i.internalOutputAccounting?.stderr??0)}});let h=t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand",y=i.internalPipeStatusOverride??a;if(h){ge(e,"PIPESTATUS");for(let g=0;g<y.length;g++)j(e,"PIPESTATUS",g,String(y[g]))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let m=(si()-r)/1e3,b=Math.floor(m/60),A=m%60,k;t.timePosix?k=`real ${m.toFixed(2)}
779
784
  user 0.00
780
785
  sys 0.00
781
786
  `:k=`
782
787
  real ${`${b}m${A.toFixed(3)}s`}
783
788
  user 0m0.000s
784
789
  sys 0m0.000s
785
- `,i={...i,stderr:i.stderr+k}}u&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=f),i=e.executionScope.accountResult(i,"pipeline");let{internalPipeStatusOverride:E,...S}=i;return S}function sa(e){return e?{...e,options:e.options?[...e.options]:void 0,actions:e.actions?[...e.actions]:void 0}:void 0}function Cm(e){return e?new Map(Array.from(e,([t,n])=>[t,sa(n)])):void 0}function Nm(e){if(!e)return;let t=new Map,n=new Map;for(let[r,s]of e){let i=t.get(s);i||(i=new Set(s),t.set(s,i)),n.set(r,i)}return n}function Rm(e){return e?.map(t=>new Map(Array.from(t,([n,r])=>[n,r?{kind:r.kind,elements:new Map(r.elements)}:void 0])))}function Dm(e){return e?new Map(Array.from(e,([t,n])=>[t,n.map(r=>({...r}))])):void 0}function ia(e){let t={env:e.env,arrays:e.arrays,cwd:e.cwd,previousDir:e.previousDir,lastExitCode:e.lastExitCode,lastArg:e.lastArg,currentLine:e.currentLine,options:e.options,shoptOptions:e.shoptOptions,fileDescriptors:e.fileDescriptors,inputFds:e.inputFds,fdAliases:e.fdAliases,closedStandardFds:e.closedStandardFds,nextFd:e.nextFd,readonlyVars:e.readonlyVars,associativeArrays:e.associativeArrays,namerefs:e.namerefs,boundNamerefs:e.boundNamerefs,invalidNamerefs:e.invalidNamerefs,integerVars:e.integerVars,lowercaseVars:e.lowercaseVars,uppercaseVars:e.uppercaseVars,exportedVars:e.exportedVars,tempExportedVars:e.tempExportedVars,localExportedVars:e.localExportedVars,declaredVars:e.declaredVars,localScopes:e.localScopes,localArrayScopes:e.localArrayScopes,localVarDepth:e.localVarDepth,localVarStack:e.localVarStack,fullyUnsetLocals:e.fullyUnsetLocals,tempEnvBindings:e.tempEnvBindings,mutatedTempEnvVars:e.mutatedTempEnvVars,accessedTempEnvVars:e.accessedTempEnvVars,functions:e.functions,callDepth:e.callDepth,sourceDepth:e.sourceDepth,callLineStack:e.callLineStack,funcNameStack:e.funcNameStack,sourceStack:e.sourceStack,currentSource:e.currentSource,inCondition:e.inCondition,loopDepth:e.loopDepth,parentHasLoopContext:e.parentHasLoopContext,errexitSafe:e.errexitSafe,directoryStack:e.directoryStack,hashTable:e.hashTable,completionSpecs:e.completionSpecs,defaultCompletionSpec:e.defaultCompletionSpec,emptyCompletionSpec:e.emptyCompletionSpec,groupStdin:e.groupStdin,groupStdinSourceFd:e.groupStdinSourceFd,bashPid:e.bashPid,expansionExitCode:e.expansionExitCode,expansionStderr:e.expansionStderr};e.env=new Map(e.env),e.arrays=st(e.arrays),e.options={...e.options},e.shoptOptions={...e.shoptOptions},e.fileDescriptors=e.fileDescriptors?new Map(e.fileDescriptors):void 0,e.inputFds=e.inputFds?new Set(e.inputFds):void 0,e.fdAliases=Nm(e.fdAliases),e.closedStandardFds=e.closedStandardFds?new Set(e.closedStandardFds):void 0,e.readonlyVars=new Set(e.readonlyVars),e.associativeArrays=new Set(e.associativeArrays),e.namerefs=new Set(e.namerefs),e.boundNamerefs=new Set(e.boundNamerefs),e.invalidNamerefs=new Set(e.invalidNamerefs),e.integerVars=new Set(e.integerVars),e.lowercaseVars=new Set(e.lowercaseVars),e.uppercaseVars=new Set(e.uppercaseVars),e.exportedVars=new Set(e.exportedVars),e.tempExportedVars=new Set(e.tempExportedVars),e.localExportedVars=e.localExportedVars?.map(r=>new Set(r)),e.declaredVars=new Set(e.declaredVars),e.localScopes=e.localScopes.map(r=>new Map(r)),e.localArrayScopes=Rm(e.localArrayScopes),e.localVarDepth=e.localVarDepth?new Map(e.localVarDepth):void 0,e.localVarStack=Dm(e.localVarStack),e.fullyUnsetLocals=e.fullyUnsetLocals?new Map(e.fullyUnsetLocals):void 0,e.tempEnvBindings=e.tempEnvBindings?.map(r=>new Map(r)),e.mutatedTempEnvVars=e.mutatedTempEnvVars?new Set(e.mutatedTempEnvVars):void 0,e.accessedTempEnvVars=e.accessedTempEnvVars?new Set(e.accessedTempEnvVars):void 0,e.functions=new Map(e.functions),e.callLineStack=e.callLineStack?[...e.callLineStack]:void 0,e.funcNameStack=e.funcNameStack?[...e.funcNameStack]:void 0,e.sourceStack=e.sourceStack?[...e.sourceStack]:void 0,e.directoryStack=e.directoryStack?[...e.directoryStack]:void 0,e.hashTable=e.hashTable?new Map(e.hashTable):void 0,e.completionSpecs=Cm(e.completionSpecs),e.defaultCompletionSpec=sa(e.defaultCompletionSpec),e.emptyCompletionSpec=sa(e.emptyCompletionSpec);let n=!1;return()=>{n||(n=!0,Object.assign(e,t))}}async function $f(e,t,n,r,s=!1){let i=e.state.loopDepth,o=new Map;for(let l of e.state.fileDescriptors?.keys()??[]){let c=tt(e,l);c&&o.set(l,c)}let a=ia(e.state);e.state.parentHasLoopContext=i>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++;try{return await nt(e,t.redirections,n,l=>Im(e,t,l.stdin??n,r,s||l.stdin!==void 0))}finally{let l=new Map;for(let[c,u]of o){let f=tt(e,c),d=u.kind==="input"&&f?.kind==="input"?u.content.length-f.content.length:u.kind==="readwrite"&&f?.kind==="readwrite"&&u.path===f.path?f.position-u.position:0;if(d<=0)continue;let p=Math.min(...sn(e,c));l.set(p,Math.max(l.get(p)??0,d))}a();for(let[c,u]of l)on(e,c,u)}}async function Im(e,t,n,r,s){(s||n)&&(e.state.groupStdin=n);let i=new Ut(e.executionScope,"subshell"),o=0;try{for(let a of t.body){let l=await r(a);i.appendResult(l),o=l.exitCode}}catch(a){if(a instanceof P)throw i.prependTo(a),a;if(a instanceof Wt||a instanceof Ze||a instanceof Qe)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(0);if(a instanceof U||a instanceof Oe||a instanceof We)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(a.exitCode);if(a instanceof $e)throw a.prependOutput(i.stdout,i.stderr),a;return i.append("stderr",`${It(a)}
786
- `),i.build(1)}return i.build(o)}async function Pf(e,t,n,r,s=!1){return nt(e,t.redirections,n,i=>Om(e,t,n,r,s,i))}async function Om(e,t,n,r,s,i){let o=new Ut(e.executionScope,"group"),a=0,l=i.stdin??n,c=s||n!==""||i.stdin!==void 0,u=e.state.groupStdin;c&&(e.state.groupStdin=l);let f=()=>{(c||u!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=u)};try{for(let d of t.body){let p=await r(d);o.appendResult(p),a=p.exitCode}}catch(d){if(f(),d instanceof P)throw o.prependTo(d),d;if(Dr(d)||d instanceof We||d instanceof U||d instanceof $e)throw d.prependOutput(o.stdout,o.stderr),d;return o.append("stderr",`${It(d)}
787
- `),o.build(1)}return f(),o.build(a)}async function Cf(e,t,n,r,s){let i;try{i=await e.fs.readFile(t)}catch{return _(`bash: ${t}: No such file or directory
790
+ `,i={...i,stderr:i.stderr+k}}u&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=f),i=e.executionScope.accountResult(i,"pipeline");let{internalPipeStatusOverride:E,...S}=i;return S}function fa(e){return e?{...e,options:e.options?[...e.options]:void 0,actions:e.actions?[...e.actions]:void 0}:void 0}function Vm(e){return e?new Map(Array.from(e,([t,n])=>[t,fa(n)])):void 0}function zm(e){if(!e)return;let t=new Map,n=new Map;for(let[r,s]of e){let i=t.get(s);i||(i=new Set(s),t.set(s,i)),n.set(r,i)}return n}function Um(e){return e?.map(t=>new Map(Array.from(t,([n,r])=>[n,r?{kind:r.kind,elements:new Map(r.elements)}:void 0])))}function qm(e){return e?new Map(Array.from(e,([t,n])=>[t,n.map(r=>({...r}))])):void 0}function da(e){let t={env:e.env,arrays:e.arrays,cwd:e.cwd,previousDir:e.previousDir,lastExitCode:e.lastExitCode,lastArg:e.lastArg,currentLine:e.currentLine,options:e.options,shoptOptions:e.shoptOptions,fileDescriptors:e.fileDescriptors,inputFds:e.inputFds,fdAliases:e.fdAliases,closedStandardFds:e.closedStandardFds,nextFd:e.nextFd,readonlyVars:e.readonlyVars,associativeArrays:e.associativeArrays,namerefs:e.namerefs,boundNamerefs:e.boundNamerefs,invalidNamerefs:e.invalidNamerefs,integerVars:e.integerVars,lowercaseVars:e.lowercaseVars,uppercaseVars:e.uppercaseVars,exportedVars:e.exportedVars,tempExportedVars:e.tempExportedVars,localExportedVars:e.localExportedVars,declaredVars:e.declaredVars,localScopes:e.localScopes,localArrayScopes:e.localArrayScopes,localVarDepth:e.localVarDepth,localVarStack:e.localVarStack,fullyUnsetLocals:e.fullyUnsetLocals,tempEnvBindings:e.tempEnvBindings,mutatedTempEnvVars:e.mutatedTempEnvVars,accessedTempEnvVars:e.accessedTempEnvVars,functions:e.functions,callDepth:e.callDepth,sourceDepth:e.sourceDepth,callLineStack:e.callLineStack,funcNameStack:e.funcNameStack,sourceStack:e.sourceStack,currentSource:e.currentSource,inCondition:e.inCondition,loopDepth:e.loopDepth,parentHasLoopContext:e.parentHasLoopContext,errexitSafe:e.errexitSafe,directoryStack:e.directoryStack,hashTable:e.hashTable,completionSpecs:e.completionSpecs,defaultCompletionSpec:e.defaultCompletionSpec,emptyCompletionSpec:e.emptyCompletionSpec,groupStdin:e.groupStdin,groupStdinSourceFd:e.groupStdinSourceFd,bashPid:e.bashPid,expansionExitCode:e.expansionExitCode,expansionStderr:e.expansionStderr};e.env=new Map(e.env),e.arrays=it(e.arrays),e.options={...e.options},e.shoptOptions={...e.shoptOptions},e.fileDescriptors=e.fileDescriptors?new Map(e.fileDescriptors):void 0,e.inputFds=e.inputFds?new Set(e.inputFds):void 0,e.fdAliases=zm(e.fdAliases),e.closedStandardFds=e.closedStandardFds?new Set(e.closedStandardFds):void 0,e.readonlyVars=new Set(e.readonlyVars),e.associativeArrays=new Set(e.associativeArrays),e.namerefs=new Set(e.namerefs),e.boundNamerefs=new Set(e.boundNamerefs),e.invalidNamerefs=new Set(e.invalidNamerefs),e.integerVars=new Set(e.integerVars),e.lowercaseVars=new Set(e.lowercaseVars),e.uppercaseVars=new Set(e.uppercaseVars),e.exportedVars=new Set(e.exportedVars),e.tempExportedVars=new Set(e.tempExportedVars),e.localExportedVars=e.localExportedVars?.map(r=>new Set(r)),e.declaredVars=new Set(e.declaredVars),e.localScopes=e.localScopes.map(r=>new Map(r)),e.localArrayScopes=Um(e.localArrayScopes),e.localVarDepth=e.localVarDepth?new Map(e.localVarDepth):void 0,e.localVarStack=qm(e.localVarStack),e.fullyUnsetLocals=e.fullyUnsetLocals?new Map(e.fullyUnsetLocals):void 0,e.tempEnvBindings=e.tempEnvBindings?.map(r=>new Map(r)),e.mutatedTempEnvVars=e.mutatedTempEnvVars?new Set(e.mutatedTempEnvVars):void 0,e.accessedTempEnvVars=e.accessedTempEnvVars?new Set(e.accessedTempEnvVars):void 0,e.functions=new Map(e.functions),e.callLineStack=e.callLineStack?[...e.callLineStack]:void 0,e.funcNameStack=e.funcNameStack?[...e.funcNameStack]:void 0,e.sourceStack=e.sourceStack?[...e.sourceStack]:void 0,e.directoryStack=e.directoryStack?[...e.directoryStack]:void 0,e.hashTable=e.hashTable?new Map(e.hashTable):void 0,e.completionSpecs=Vm(e.completionSpecs),e.defaultCompletionSpec=fa(e.defaultCompletionSpec),e.emptyCompletionSpec=fa(e.emptyCompletionSpec);let n=!1;return()=>{n||(n=!0,Object.assign(e,t))}}async function Bf(e,t,n,r,s=!1){let i=e.state.loopDepth,o=new Map;for(let l of e.state.fileDescriptors?.keys()??[]){let c=nt(e,l);c&&o.set(l,c)}let a=da(e.state);e.state.parentHasLoopContext=i>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++;try{return await rt(e,t.redirections,n,l=>jm(e,t,l.stdin??n,r,s||l.stdin!==void 0))}finally{let l=new Map;for(let[c,u]of o){let f=nt(e,c),d=u.kind==="input"&&f?.kind==="input"?u.content.length-f.content.length:u.kind==="readwrite"&&f?.kind==="readwrite"&&u.path===f.path?f.position-u.position:0;if(d<=0)continue;let p=Math.min(...ln(e,c));l.set(p,Math.max(l.get(p)??0,d))}a();for(let[c,u]of l)cn(e,c,u)}}async function jm(e,t,n,r,s){(s||n)&&(e.state.groupStdin=n);let i=new Ht(e.executionScope,"subshell"),o=0;try{for(let a of t.body){let l=await r(a);i.appendResult(l),o=l.exitCode}}catch(a){if(a instanceof P)throw i.prependTo(a),a;if(a instanceof zt||a instanceof Qe||a instanceof Ke)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(0);if(a instanceof q||a instanceof _e||a instanceof ze)return i.append("stdout",a.stdout,a.internalOutputAccounting.stdout),i.append("stderr",a.stderr,a.internalOutputAccounting.stderr),i.build(a.exitCode);if(a instanceof Pe)throw a.prependOutput(i.stdout,i.stderr),a;return i.append("stderr",`${_t(a)}
791
+ `),i.build(1)}return i.build(o)}async function Wf(e,t,n,r,s=!1){return rt(e,t.redirections,n,i=>Hm(e,t,n,r,s,i))}async function Hm(e,t,n,r,s,i){let o=new Ht(e.executionScope,"group"),a=0,l=i.stdin??n,c=s||n!==""||i.stdin!==void 0,u=e.state.groupStdin;c&&(e.state.groupStdin=l);let f=()=>{(c||u!==void 0&&e.state.groupStdin===void 0)&&(e.state.groupStdin=u)};try{for(let d of t.body){let p=await r(d);o.appendResult(p),a=p.exitCode}}catch(d){if(f(),d instanceof P)throw o.prependTo(d),d;if(Tr(d)||d instanceof ze||d instanceof q||d instanceof Pe)throw d.prependOutput(o.stdout,o.stderr),d;return o.append("stderr",`${_t(d)}
792
+ `),o.build(1)}return f(),o.build(a)}async function Vf(e,t,n,r,s){let i;try{i=await e.fs.readFile(t)}catch{return L(`bash: ${t}: No such file or directory
788
793
  `,127)}if(i.startsWith("#!")){let l=i.indexOf(`
789
- `);l!==-1&&(i=i.slice(l+1))}let o=e.state.loopDepth,a=ia(e.state);e.state.parentHasLoopContext=o>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(n.length)),e.state.env.set("@",n.join(" ")),e.state.env.set("*",n.join(" "));for(let l=0;l<n.length&&l<9;l++)e.state.env.set(String(l+1),n[l]);for(let l=n.length+1;l<=9;l++)e.state.env.delete(String(l));try{let c=new j().parse(i),u=await s(c);return a(),u}catch(l){if(a(),l instanceof U)return L(l.stdout,l.stderr,l.exitCode);if(l instanceof $e||l instanceof P)throw l;if(l.name==="ParseException")return _(`bash: ${t}: ${l.message}
790
- `);throw l}}function _m(e){throw new TypeError(`Unsupported command node: ${JSON.stringify(e)}`)}var Sr=class{ctx;constructor(t,n){this.ctx={state:n,fs:t.fs,commands:t.commands,limits:t.limits,executionScope:t.executionScope,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1,jsBootstrapCode:t.jsBootstrapCode,invokeTool:t.invokeTool}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||He.isInSandboxedContext())return;let n=`interpreter ${t} attempted outside defense context`;throw new Cr(n,{timestamp:Date.now(),type:"missing_defense_context",message:n,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:He.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,n=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(n)for(let i of n)r.add(i);if(r.size===0)return Object.create(null);let s=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(s[i]=o)}return s}async executeScript(t){this.assertDefenseContext("execution");let n=0,r=new Ut(this.ctx.executionScope,"script");for(let s of t.statements)try{let i=await this.executeStatement(s);r.appendResult(i,Gs(i)),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(i){if(i instanceof U||i instanceof $e)throw i.prependOutput(r.stdout,r.stderr),i;if(i instanceof rt)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:zt(this.ctx.state.env)};if(Ir(i))throw r.prependTo(i),i;if(i instanceof We)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:zt(this.ctx.state.env)};if(i instanceof Ve)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:zt(this.ctx.state.env)};if(i instanceof Ke)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:zt(this.ctx.state.env)};if(i instanceof ae){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof Rr){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof Ze||i instanceof Qe){if(this.ctx.state.loopDepth>0)throw i.prependOutput(r.stdout,r.stderr),i;r.append("stdout",i.stdout),r.append("stderr",i.stderr);continue}throw i instanceof Oe&&i.prependOutput(r.stdout,r.stderr),i}return{...r.build(n),env:zt(this.ctx.state.env)}}async executeUserScript(t,n,r=""){return Cf(this.ctx,t,n,r,s=>this.executeScript(s))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Xe;if(t.deferredError)throw new ke(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return te;this.ctx.state.errexitSafe=!1;let n=new Ut(this.ctx.executionScope,"statement");this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&n.append("stderr",`${t.sourceText}
791
- `);let r=0,s=-1,i=!1;try{for(let l=0;l<t.pipelines.length;l++){let c=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let f=await this.executePipeline(c);n.appendResult(f,Gs(f)),r=f.exitCode,s=l,i=c.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}}catch(l){throw n.prependTo(l),l}let o=s<t.pipelines.length-1,a=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||i||a,this.ctx.state.options.errexit&&r!==0&&s===t.pipelines.length-1&&!i&&!this.ctx.state.inCondition&&!a){let l=new We(r);throw l.prependOutput(n.stdout,n.stderr),l}return n.build(r)}async executePipeline(t){return xf(this.ctx,t,(n,r)=>this.executeCommand(n,r))}async executeCommand(t,n,r=!1){let s=Kc(this.ctx),i;try{i=await this.executeCommandInner(t,n,r)}catch(a){throw await ji(this.ctx,s).catch(()=>{}),a}let o=await ji(this.ctx,s);return!o.stdout&&!o.stderr?i:{...i,stdout:o.stdout?Ft(i)+o.stdout:i.stdout,stdoutKind:o.stdout?"bytes":i.stdoutKind,stderr:i.stderr+o.stderr}}async executeCommandInner(t,n,r){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,n);case"If":return Ef(this.ctx,t);case"For":return bf(this.ctx,t);case"CStyleFor":return Sf(this.ctx,t);case"While":return Af(this.ctx,t,n);case"Until":return vf(this.ctx,t,n);case"Case":return kf(this.ctx,t);case"Subshell":return this.executeSubshell(t,n,r);case"Group":return this.executeGroup(t,n,r);case"FunctionDef":return Ru(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return _m(t)}}async executeSimpleCommand(t,n){let r;try{return await this.executeSimpleCommandInner(t,n,s=>{r=s})}catch(s){if(r?.finish(),s instanceof Bt)return _(s.stderr);throw s}}async executeSimpleCommandInner(t,n,r){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let x=t,C=0;for(;;){let D=this.expandAlias(x);if(D===x)break;if(C>=this.ctx.limits.maxCallDepth)throw new P(`alias expansion depth limit exceeded (${this.ctx.limits.maxCallDepth})`,"recursion");C++,x=D}this.aliasExpansionStack.clear(),x!==t&&(t=x)}this.ctx.state.expansionStderr="";let s=await af(this.ctx,t);if(s.error)return s.error;let i=s.tempAssignments,o=s.xtraceOutput,a=()=>{for(let[x,C]of i)C===void 0?this.ctx.state.env.delete(x):this.ctx.state.env.set(x,C)};if(!t.name){if(t.redirections.length>0){let C=Un(this.ctx,t.redirections,Cu);r(C);let D=await C.prepare(n);if(D.error){if(a(),!D.errorCause)return C.finish(),D.error;try{return qn(D)}finally{C.finish()}}let B=L("",o,0),H=await ln(this.ctx,B,t.redirections,D.targets,D.dupSources,D.standardRoutes);return C.finish(),H}this.ctx.state.lastArg="";let x=(this.ctx.state.expansionStderr||"")+o;return this.ctx.state.expansionStderr="",L("",x,this.ctx.state.lastExitCode)}let l=t.name&&ra(t.name,["local","declare","typeset","export","readonly"]),c=Array.from(i.keys());if(c.length>0&&!l){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let x of c)this.ctx.state.tempExportedVars.add(x)}let u=await se(this.ctx,t.name),f=[],d=[],p=(x,C)=>{if(f.length>=this.ctx.limits.maxArrayElements)throw new P(`expanded argument element limit exceeded (${this.ctx.limits.maxArrayElements})`,"array_elements");f.push(x),d.push(C)};if(ra(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let x of t.args){let C=await au(this.ctx,x);if(C)p(C,!0);else{let D=await lu(this.ctx,x);if(D!==null)p(D,!0);else{let B=await gt(this.ctx,x);for(let H of B.values)p(H,B.quoted)}}}else for(let x of t.args){let C=await gt(this.ctx,x);for(let D of C.values)p(D,C.quoted)}let m=t.name.parts.every(x=>x.type==="CommandSubstitution"||x.type==="ParameterExpansion"||x.type==="ArithmeticExpansion");!u&&m&&f.length>0&&(u=f.shift(),d.shift());let E=Un(this.ctx,t.redirections,u==="exec"?Nu:pr);r(E);let S=await E.prepare(n);if(S.error)return a(),S.errorCause?qn(S):(E.finish(),S.error);let g=S.stdinSourceFd,y=S.stdin!==void 0;if(S.stdin!==void 0&&(n=S.stdin),!u)return m?(E.finish(),L("","",this.ctx.state.lastExitCode)):(E.finish(),_(`bash: : command not found
792
- `,127));if(u==="exec"&&(f.length===0||f[0]==="--")){for(let[x,C]of i)C===void 0?this.ctx.state.env.delete(x):this.ctx.state.env.set(x,C);if(this.ctx.state.tempExportedVars)for(let x of i.keys())this.ctx.state.tempExportedVars.delete(x);return E.finish(),te}if(this.ctx.state.extraArgs){let x=this.ctx.state.extraArgs;this.ctx.state.extraArgs=void 0;for(let C of x)p(C,!0)}let b=await sf(this.ctx,u,f);i.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(i)));let A,k=null;try{A=await this.runCommand(u,f,d,n,!1,!1,g,y)}catch(x){if(x instanceof Ze||x instanceof Qe)k=x,A=te;else throw x}g>=0&&u!=="read"&&on(this.ctx,g,A.internalStdinConsumed??0);let v=o+b;if(v&&(A={...A,stderr:v+A.stderr}),A=await ln(this.ctx,A,t.redirections,S.targets,S.dupSources,S.standardRoutes,A.internalProducerCommand??u,A.internalProducerOmitsShellPrefix),E.finish(),k)throw k;if(f.length>0){let x=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(x)){let C=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);C&&(x=C[1])}this.ctx.state.lastArg=x}else this.ctx.state.lastArg=u;let $=Ma(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!$)for(let[x,C]of i)this.ctx.state.fullyUnsetLocals?.has(x)||(C===void 0?this.ctx.state.env.delete(x):this.ctx.state.env.set(x,C));if(this.ctx.state.tempExportedVars)for(let x of i.keys())this.ctx.state.tempExportedVars.delete(x);return i.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(A={...A,stderr:this.ctx.state.expansionStderr+A.stderr},this.ctx.state.expansionStderr=""),A}async runCommand(t,n,r,s,i=!1,o=!1,a=-1,l=!1){let c={ctx:this.ctx,runCommand:(d,p,h,m,E,S,g,y)=>this.runCommand(d,p,h,m,E,S,g,y),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(d,p,h)=>this.executeUserScript(d,p,h)},u=await yf(c,t,n,r,s,i,o,a,l);return u!==null?u.internalProducerCommand===void 0?{...u,internalProducerCommand:t}:u:{...await gf(c,t,n,s,o),internalProducerCommand:t}}aliasExpansionStack=new Set;expandAlias(t){return Ol({env:this.ctx.state.env,limits:this.ctx.limits},t,this.aliasExpansionStack)}async findCommandInPath(t){return Br(this.ctx,t)}async executeSubshell(t,n="",r=!1){return $f(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeGroup(t,n="",r=!1){return Pf(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeArithmeticCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),nt(this.ctx,t.redirections,"",async()=>{try{let n=await X(this.ctx,t.expression.expression),r=ge(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){return _(`bash: arithmetic expression: ${n.message}
793
- `)}})}async executeConditionalCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),nt(this.ctx,t.redirections,"",async()=>{try{let n=await nn(this.ctx,t.expression),r=ge(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){let r=n instanceof ae?1:2;return _(`bash: conditional expression: ${n.message}
794
- `,r)}})}};function oa(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Lm(e){let t=oa(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}var Tm=3;function Nf(e){let t=e;for(let n=0;n<Tm;n++){if(t.includes("\\")||t.includes(";")||/%(?![0-9a-f]{2})/i.test(t))return!0;let r=t.toLowerCase();if(r.includes("%2f")||r.includes("%2e")||r.includes("%5c")||r.includes("%3b"))return!0;let s;try{s=decodeURIComponent(t)}catch{return!0}if(s===t)return!1;t=s}return t.includes("%")}function Fm(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function aa(e,t){let n=oa(e);if(!n)return!1;let r=Lm(t);return!r||n.origin!==r.origin||r.pathPrefix!=="/"&&r.pathPrefix!==""&&Nf(n.pathname)?!1:Fm(n.pathname,r.pathPrefix)}function Rf(e){return typeof e=="string"?e:e.url}function Df(e,t){return!t||t.length===0?!1:t.some(n=>aa(e,Rf(n)))}function la(e){let t=Mm(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let n=If(t);if(n)return Bs(n);let r=Wm(t);return r?Vm(r):!1}function Mm(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function Bm(e){if(!e)return null;let t=10,n=e;if(n.startsWith("0x")||n.startsWith("0X")?(t=16,n=n.slice(2)):n.length>1&&n.startsWith("0")&&(t=8),!n||t===16&&!/^[0-9a-fA-F]+$/.test(n)||t===10&&!/^\d+$/.test(n)||t===8&&!/^[0-7]+$/.test(n))return null;let r=Number.parseInt(n,t);return!Number.isFinite(r)||r<0?null:r}function If(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let n=t.map(l=>Bm(l));if(n.some(l=>l===null))return null;let r=n;if(t.length===1){let l=r[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=r;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=r;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[s,i,o,a]=r;return s>255||i>255||o>255||a>255?null:[s,i,o,a]}function Wm(e){let t=e,n=null;if(t.includes(".")){let m=t.lastIndexOf(":");if(m<0)return null;let E=t.slice(m+1),S=If(E);if(!S)return null;n=S,t=t.slice(0,m)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[s,i]=t.split("::"),o=s?s.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=m=>/^[0-9a-f]{1,4}$/i.test(m)?Number.parseInt(m,16):null,c=o.map(l),u=a.map(l);if(c.some(m=>m===null)||u.some(m=>m===null))return null;let f=n?2:0,d=c.length+u.length+f,p=0;if(r===1){if(p=8-d,p<0)return null}else if(d!==8)return null;let h=[...c,...new Array(p).fill(0),...u];return n&&(h.push(n[0]<<8|n[1]),h.push(n[2]<<8|n[3])),h.length===8?h:null}function Bs(e){let[t,n]=e;return t===127||t===10||t===172&&n>=16&&n<=31||t===192&&n===168||t===169&&n===254||t===0||t===100&&n>=64&&n<=127||t===198&&(n===18||n===19)||t===192&&n===0&&e[2]===0||t===192&&n===0&&e[2]===2||t===198&&n===51&&e[2]===100||t===203&&n===0&&e[2]===113||t>=240}function Vm(e){if(e.every(s=>s===0)||e.slice(0,7).every(s=>s===0)&&e[7]===1||(e[0]&65472)===65152||(e[0]&65024)===64512)return!0;if(e[0]===0&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===65535){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return Bs(s)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return Bs(s)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let s=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return Bs(s)}return!1}function Of(e){let t=[];for(let n of e){if(typeof n!="string"&&(n===null||typeof n!="object"||!("url"in n)||typeof n.url!="string")){t.push('Invalid allow-list entry: must be a string URL or an object with a "url" string property');continue}let r=Rf(n);if(!oa(r)){t.push(`Invalid URL in allow-list: "${r}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let i=new URL(r);if(i.protocol!=="http:"&&i.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${r}"`);continue}if(!i.hostname){t.push(`Allow-list entry must include a hostname: "${r}"`);continue}if(i.pathname!=="/"&&i.pathname!==""&&Nf(i.pathname)){t.push(`Allow-list entry contains ambiguous path separators: "${r}"`);continue}(i.search||i.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${r}"`)}return t}var wt=class extends Error{constructor(t,n){let r=n??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},Hn=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},fn=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Ws=class extends Error{constructor(t,n){super(`HTTP method '${t}' not allowed. Allowed methods: ${n.join(", ")}`),this.name="MethodNotAllowedError"}},kn=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var zm=20,Um=3e4,qm=10485760,jm=["GET","HEAD"],Ar;typeof __BROWSER__<"u"&&__BROWSER__?Ar=null:(Ar=import("./chunks/dist-5MWO25Y4.js"),Ar.catch(()=>{}));var Gm=new Set(["GET","HEAD","OPTIONS"]),Hm=new Set([301,302,303,307,308]);function vr(e){return e.reason instanceof Error?e.reason:new DOMException("The operation was aborted","AbortError")}function Zm(e){if(e?.aborted)throw vr(e)}function ua(e){let t=e.allowedUrlPrefixes??[];if(e._dnsResolve)throw new Error("NetworkConfig._dnsResolve is no longer supported: DNS resolution is performed by guarded-fetch and cannot be overridden");if(e._createConnectionOwner)throw new Error("NetworkConfig._createConnectionOwner is no longer supported: connect-time IP pinning is performed by guarded-fetch and cannot be overridden");let n=e._fetch;if(!e.dangerouslyAllowFullInternetAccess){let b=Of(t);if(b.length>0)throw new Error(`Invalid network allow-list:
794
+ `);l!==-1&&(i=i.slice(l+1))}let o=e.state.loopDepth,a=da(e.state);e.state.parentHasLoopContext=o>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,r&&(e.state.groupStdin=r),e.state.currentSource=t,e.state.env.set("0",t),e.state.env.set("#",String(n.length)),e.state.env.set("@",n.join(" ")),e.state.env.set("*",n.join(" "));for(let l=0;l<n.length&&l<9;l++)e.state.env.set(String(l+1),n[l]);for(let l=n.length+1;l<=9;l++)e.state.env.delete(String(l));try{let c=new H().parse(i),u=await s(c);return a(),u}catch(l){if(a(),l instanceof q)return T(l.stdout,l.stderr,l.exitCode);if(l instanceof Pe||l instanceof P)throw l;if(l.name==="ParseException")return L(`bash: ${t}: ${l.message}
795
+ `);throw l}}function Gm(e){throw new TypeError(`Unsupported command node: ${JSON.stringify(e)}`)}var $r=class{ctx;constructor(t,n){this.ctx={state:n,fs:t.fs,commands:t.commands,limits:t.limits,executionScope:t.executionScope,execFn:t.exec,executeScript:this.executeScript.bind(this),executeStatement:this.executeStatement.bind(this),executeCommand:this.executeCommand.bind(this),fetch:t.fetch,sleep:t.sleep,trace:t.trace,coverage:t.coverage,requireDefenseContext:t.requireDefenseContext??!1,jsBootstrapCode:t.jsBootstrapCode,invokeTool:t.invokeTool}}assertDefenseContext(t){if(!this.ctx.requireDefenseContext||Te.isInSandboxedContext())return;let n=`interpreter ${t} attempted outside defense context`;throw new Or(n,{timestamp:Date.now(),type:"missing_defense_context",message:n,path:"DefenseInDepthBox.context",stack:new Error().stack,executionId:Te.getCurrentExecutionId()})}buildExportedEnv(){let t=this.ctx.state.exportedVars,n=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(n)for(let i of n)r.add(i);if(r.size===0)return Object.create(null);let s=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(s[i]=o)}return s}async executeScript(t){this.assertDefenseContext("execution");let n=0,r=new Ht(this.ctx.executionScope,"script");for(let s of t.statements)try{let i=await this.executeStatement(s);r.appendResult(i,ni(i)),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(i){if(i instanceof q||i instanceof Pe)throw i.prependOutput(r.stdout,r.stderr),i;if(i instanceof st)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:jt(this.ctx.state.env)};if(Fr(i))throw r.prependTo(i),i;if(i instanceof ze)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=i.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:jt(this.ctx.state.env)};if(i instanceof Ue)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:jt(this.ctx.state.env)};if(i instanceof Xe)return r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{...r.build(n),exitCode:n,env:jt(this.ctx.state.env)};if(i instanceof le){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof Lr){r.append("stdout",i.stdout,i.internalOutputAccounting.stdout),r.append("stderr",i.stderr,i.internalOutputAccounting.stderr),n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(i instanceof Qe||i instanceof Ke){if(this.ctx.state.loopDepth>0)throw i.prependOutput(r.stdout,r.stderr),i;r.append("stdout",i.stdout),r.append("stderr",i.stderr);continue}throw i instanceof _e&&i.prependOutput(r.stdout,r.stderr),i}return{...r.build(n),env:jt(this.ctx.state.env)}}async executeUserScript(t,n,r=""){return Vf(this.ctx,t,n,r,s=>this.executeScript(s))}async executeStatement(t){if(this.assertDefenseContext("statement"),this.ctx.state.signal?.aborted)throw new Ye;if(t.deferredError)throw new xe(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return ne;this.ctx.state.errexitSafe=!1;let n=new Ht(this.ctx.executionScope,"statement");this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&n.append("stderr",`${t.sourceText}
796
+ `);let r=0,s=-1,i=!1;try{for(let l=0;l<t.pipelines.length;l++){let c=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let f=await this.executePipeline(c);n.appendResult(f,ni(f)),r=f.exitCode,s=l,i=c.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}}catch(l){throw n.prependTo(l),l}let o=s<t.pipelines.length-1,a=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||i||a,this.ctx.state.options.errexit&&r!==0&&s===t.pipelines.length-1&&!i&&!this.ctx.state.inCondition&&!a){let l=new ze(r);throw l.prependOutput(n.stdout,n.stderr),l}return n.build(r)}async executePipeline(t){return Mf(this.ctx,t,(n,r)=>this.executeCommand(n,r))}async executeCommand(t,n,r=!1){let s=ou(this.ctx),i;try{i=await this.executeCommandInner(t,n,r)}catch(a){throw await to(this.ctx,s).catch(()=>{}),a}let o=await to(this.ctx,s);return!o.stdout&&!o.stderr?i:{...i,stdout:o.stdout?Bt(i)+o.stdout:i.stdout,stdoutKind:o.stdout?"bytes":i.stdoutKind,stderr:i.stderr+o.stderr}}async executeCommandInner(t,n,r){switch(this.assertDefenseContext("command"),this.ctx.coverage?.hit(`bash:cmd:${t.type}`),t.type){case"SimpleCommand":return this.executeSimpleCommand(t,n);case"If":return If(this.ctx,t);case"For":return Of(this.ctx,t);case"CStyleFor":return _f(this.ctx,t);case"While":return Lf(this.ctx,t,n);case"Until":return Tf(this.ctx,t,n);case"Case":return Ff(this.ctx,t);case"Subshell":return this.executeSubshell(t,n,r);case"Group":return this.executeGroup(t,n,r);case"FunctionDef":return Wu(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return Gm(t)}}async executeSimpleCommand(t,n){let r;try{return await this.executeSimpleCommandInner(t,n,s=>{r=s})}catch(s){if(r?.finish(),s instanceof Vt)return L(s.stderr);throw s}}async executeSimpleCommandInner(t,n,r){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let x=t,C=0;for(;;){let I=this.expandAlias(x);if(I===x)break;if(C>=this.ctx.limits.maxCallDepth)throw new P(`alias expansion depth limit exceeded (${this.ctx.limits.maxCallDepth})`,"recursion");C++,x=I}this.aliasExpansionStack.clear(),x!==t&&(t=x)}this.ctx.state.expansionStderr="",this.ctx.state.lastSubstitutionExitCode=null;let s=await Ef(this.ctx,t);if(s.error)return s.error;let i=s.tempAssignments,o=s.xtraceOutput,a=()=>{for(let[x,C]of i)C===void 0?this.ctx.state.env.delete(x):this.ctx.state.env.set(x,C)};if(!t.name){if(t.redirections.length>0){let C=Gn(this.ctx,t.redirections,Mu);r(C);let I=await C.prepare(n);if(I.error){if(a(),!I.errorCause)return C.finish(),I.error;try{return Zn(I)}finally{C.finish()}}let W=T("",o,cs(this.ctx.state,t.redirections)),Z=await fn(this.ctx,W,t.redirections,I.targets,I.dupSources,I.standardRoutes);return C.finish(),Z}this.ctx.state.lastArg="";let x=(this.ctx.state.expansionStderr||"")+o;return this.ctx.state.expansionStderr="",T("",x,cs(this.ctx.state,[]))}let l=t.name&&ua(t.name,["local","declare","typeset","export","readonly"]),c=Array.from(i.keys());if(c.length>0&&!l){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let x of c)this.ctx.state.tempExportedVars.add(x)}let u=await ie(this.ctx,t.name),f=[],d=[],p=(x,C)=>{if(f.length>=this.ctx.limits.maxArrayElements)throw new P(`expanded argument element limit exceeded (${this.ctx.limits.maxArrayElements})`,"array_elements");f.push(x),d.push(C)};if(ua(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let x of t.args){let C=await gu(this.ctx,x);if(C)p(C,!0);else{let I=await wu(this.ctx,x);if(I!==null)p(I,!0);else{let W=await Et(this.ctx,x);for(let Z of W.values)p(Z,W.quoted)}}}else for(let x of t.args){let C=await Et(this.ctx,x);for(let I of C.values)p(I,C.quoted)}let y=t.name.parts.every(x=>x.type==="CommandSubstitution"||x.type==="ParameterExpansion"||x.type==="ArithmeticExpansion");!u&&y&&f.length>0&&(u=f.shift(),d.shift());let E=Gn(this.ctx,t.redirections,u==="exec"?Bu:wr);r(E);let S=await E.prepare(n);if(S.error)return a(),S.errorCause?Zn(S):(E.finish(),S.error);let g=S.stdinSourceFd,m=S.stdin!==void 0;if(S.stdin!==void 0&&(n=S.stdin),!u)return y?(E.finish(),T("","",cs(this.ctx.state,t.redirections))):(E.finish(),L(`bash: : command not found
797
+ `,127));if(u==="exec"&&(f.length===0||f[0]==="--")){for(let[x,C]of i)C===void 0?this.ctx.state.env.delete(x):this.ctx.state.env.set(x,C);if(this.ctx.state.tempExportedVars)for(let x of i.keys())this.ctx.state.tempExportedVars.delete(x);return E.finish(),ne}if(this.ctx.state.extraArgs){let x=this.ctx.state.extraArgs;this.ctx.state.extraArgs=void 0;for(let C of x)p(C,!0)}let b=await gf(this.ctx,u,f);i.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(i)));let A,k=null;try{A=await this.runCommand(u,f,d,n,!1,!1,g,m)}catch(x){if(x instanceof Qe||x instanceof Ke)k=x,A=ne;else throw x}g>=0&&u!=="read"&&cn(this.ctx,g,A.internalStdinConsumed??0);let v=o+b;if(v&&(A={...A,stderr:v+A.stderr}),A=await fn(this.ctx,A,t.redirections,S.targets,S.dupSources,S.standardRoutes,A.internalProducerCommand??u,A.internalProducerOmitsShellPrefix),E.finish(),k)throw k;if(f.length>0){let x=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(x)){let C=x.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);C&&(x=C[1])}this.ctx.state.lastArg=x}else this.ctx.state.lastArg=u;let $=Qa(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!$)for(let[x,C]of i)this.ctx.state.fullyUnsetLocals?.has(x)||(C===void 0?this.ctx.state.env.delete(x):this.ctx.state.env.set(x,C));if(this.ctx.state.tempExportedVars)for(let x of i.keys())this.ctx.state.tempExportedVars.delete(x);return i.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(A={...A,stderr:this.ctx.state.expansionStderr+A.stderr},this.ctx.state.expansionStderr=""),A}async runCommand(t,n,r,s,i=!1,o=!1,a=-1,l=!1){let c={ctx:this.ctx,runCommand:(d,p,h,y,E,S,g,m)=>this.runCommand(d,p,h,y,E,S,g,m),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(d,p,h)=>this.executeUserScript(d,p,h)},u=await Nf(c,t,n,r,s,i,o,a,l);return u!==null?u.internalProducerCommand===void 0?{...u,internalProducerCommand:t}:u:{...await Rf(c,t,n,s,o),internalProducerCommand:t}}aliasExpansionStack=new Set;expandAlias(t){return Ul({env:this.ctx.state.env,limits:this.ctx.limits},t,this.aliasExpansionStack)}async findCommandInPath(t){return jr(this.ctx,t)}async executeSubshell(t,n="",r=!1){return Bf(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeGroup(t,n="",r=!1){return Wf(this.ctx,t,n,s=>this.executeStatement(s),r)}async executeArithmeticCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),rt(this.ctx,t.redirections,"",async()=>{try{let n=await Y(this.ctx,t.expression.expression),r=we(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){return L(`bash: arithmetic expression: ${n.message}
798
+ `)}})}async executeConditionalCommand(t){return t.line!==void 0&&(this.ctx.state.currentLine=t.line),rt(this.ctx,t.redirections,"",async()=>{try{let n=await on(this.ctx,t.expression),r=we(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),r}catch(n){let r=n instanceof le?1:2;return L(`bash: conditional expression: ${n.message}
799
+ `,r)}})}};function pa(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Zm(e){let t=pa(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}var Qm=3;function zf(e){let t=e;for(let n=0;n<Qm;n++){if(t.includes("\\")||t.includes(";")||/%(?![0-9a-f]{2})/i.test(t))return!0;let r=t.toLowerCase();if(r.includes("%2f")||r.includes("%2e")||r.includes("%5c")||r.includes("%3b"))return!0;let s;try{s=decodeURIComponent(t)}catch{return!0}if(s===t)return!1;t=s}return t.includes("%")}function Km(e,t){return t==="/"||t===""?!0:t.endsWith("/")?e.startsWith(t):e===t||e.startsWith(`${t}/`)}function ha(e,t){let n=pa(e);if(!n)return!1;let r=Zm(t);return!r||n.origin!==r.origin||r.pathPrefix!=="/"&&r.pathPrefix!==""&&zf(n.pathname)?!1:Km(n.pathname,r.pathPrefix)}function Uf(e){return typeof e=="string"?e:e.url}function qf(e,t){return!t||t.length===0?!1:t.some(n=>ha(e,Uf(n)))}function ma(e){let t=Xm(e);if(t==="localhost"||t.endsWith(".localhost"))return!0;let n=jf(t);if(n)return Qs(n);let r=Jm(t);return r?ey(r):!1}function Xm(e){let t=e.trim().toLowerCase();return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function Ym(e){if(!e)return null;let t=10,n=e;if(n.startsWith("0x")||n.startsWith("0X")?(t=16,n=n.slice(2)):n.length>1&&n.startsWith("0")&&(t=8),!n||t===16&&!/^[0-9a-fA-F]+$/.test(n)||t===10&&!/^\d+$/.test(n)||t===8&&!/^[0-7]+$/.test(n))return null;let r=Number.parseInt(n,t);return!Number.isFinite(r)||r<0?null:r}function jf(e){let t=e.split(".");if(t.length===0||t.length>4)return null;let n=t.map(l=>Ym(l));if(n.some(l=>l===null))return null;let r=n;if(t.length===1){let l=r[0];return l>4294967295?null:[l>>>24&255,l>>>16&255,l>>>8&255,l&255]}if(t.length===2){let[l,c]=r;return l>255||c>16777215?null:[l,c>>>16&255,c>>>8&255,c&255]}if(t.length===3){let[l,c,u]=r;return l>255||c>255||u>65535?null:[l,c,u>>>8&255,u&255]}let[s,i,o,a]=r;return s>255||i>255||o>255||a>255?null:[s,i,o,a]}function Jm(e){let t=e,n=null;if(t.includes(".")){let y=t.lastIndexOf(":");if(y<0)return null;let E=t.slice(y+1),S=jf(E);if(!S)return null;n=S,t=t.slice(0,y)}let r=t.includes("::")?t.split("::").length-1:0;if(r>1)return null;let[s,i]=t.split("::"),o=s?s.split(":").filter(Boolean):[],a=i?i.split(":").filter(Boolean):[],l=y=>/^[0-9a-f]{1,4}$/i.test(y)?Number.parseInt(y,16):null,c=o.map(l),u=a.map(l);if(c.some(y=>y===null)||u.some(y=>y===null))return null;let f=n?2:0,d=c.length+u.length+f,p=0;if(r===1){if(p=8-d,p<0)return null}else if(d!==8)return null;let h=[...c,...new Array(p).fill(0),...u];return n&&(h.push(n[0]<<8|n[1]),h.push(n[2]<<8|n[3])),h.length===8?h:null}function Qs(e){let[t,n]=e;return t===127||t===10||t===172&&n>=16&&n<=31||t===192&&n===168||t===169&&n===254||t===0||t===100&&n>=64&&n<=127||t===198&&(n===18||n===19)||t===192&&n===0&&e[2]===0||t===192&&n===0&&e[2]===2||t===198&&n===51&&e[2]===100||t===203&&n===0&&e[2]===113||t>=240}function ey(e){if(e.every(s=>s===0)||e.slice(0,7).every(s=>s===0)&&e[7]===1||(e[0]&65472)===65152||(e[0]&65024)===64512)return!0;if(e[0]===0&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===65535){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return Qs(s)}if(e[0]===8193&&e[1]===3512)return!0;if(e[0]===100&&e[1]===65435&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===0){let s=[e[6]>>>8&255,e[6]&255,e[7]>>>8&255,e[7]&255];return Qs(s)}if(e[0]===100&&e[1]===65435&&e[2]===1)return!0;if(e[0]===8194){let s=[e[1]>>>8&255,e[1]&255,e[2]>>>8&255,e[2]&255];return Qs(s)}return!1}function Hf(e){let t=[];for(let n of e){if(typeof n!="string"&&(n===null||typeof n!="object"||!("url"in n)||typeof n.url!="string")){t.push('Invalid allow-list entry: must be a string URL or an object with a "url" string property');continue}let r=Uf(n);if(!pa(r)){t.push(`Invalid URL in allow-list: "${r}" - must be a valid URL with scheme and host (e.g., "https://example.com")`);continue}let i=new URL(r);if(i.protocol!=="http:"&&i.protocol!=="https:"){t.push(`Only http and https URLs are allowed in allow-list: "${r}"`);continue}if(!i.hostname){t.push(`Allow-list entry must include a hostname: "${r}"`);continue}if(i.pathname!=="/"&&i.pathname!==""&&zf(i.pathname)){t.push(`Allow-list entry contains ambiguous path separators: "${r}"`);continue}(i.search||i.hash)&&t.push(`Query strings and fragments are ignored in allow-list entries: "${r}"`)}return t}var bt=class extends Error{constructor(t,n){let r=n??"URL not in allow-list";super(`Network access denied: ${r}: ${t}`),this.name="NetworkAccessDeniedError"}},Xn=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},hn=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Ks=class extends Error{constructor(t,n){super(`HTTP method '${t}' not allowed. Allowed methods: ${n.join(", ")}`),this.name="MethodNotAllowedError"}},Pn=class extends Error{constructor(t){super(`Response body too large (max: ${t} bytes)`),this.name="ResponseTooLargeError"}};var ty=20,ny=3e4,ry=10485760,sy=["GET","HEAD"],Pr;typeof __BROWSER__<"u"&&__BROWSER__?Pr=null:(Pr=import("./chunks/dist-5MWO25Y4.js"),Pr.catch(()=>{}));var iy=new Set(["GET","HEAD","OPTIONS"]),oy=new Set([301,302,303,307,308]);function Cr(e){return e.reason instanceof Error?e.reason:new DOMException("The operation was aborted","AbortError")}function ay(e){if(e?.aborted)throw Cr(e)}function ga(e){let t=e.allowedUrlPrefixes??[];if(e._dnsResolve)throw new Error("NetworkConfig._dnsResolve is no longer supported: DNS resolution is performed by guarded-fetch and cannot be overridden");if(e._createConnectionOwner)throw new Error("NetworkConfig._createConnectionOwner is no longer supported: connect-time IP pinning is performed by guarded-fetch and cannot be overridden");let n=e._fetch;if(!e.dangerouslyAllowFullInternetAccess){let b=Hf(t);if(b.length>0)throw new Error(`Invalid network allow-list:
795
800
  ${b.join(`
796
- `)}`)}let r=[];for(let b of t)typeof b=="object"&&b.transform&&b.transform.length>0&&r.push(b);function s(b){if(r.length===0)return null;let A=null;for(let k of r)if(aa(b,k.url)&&k.transform){A||(A=new Headers);for(let v of k.transform)for(let[$,R]of Object.entries(v.headers))A.set($,R)}return A}if(e.maxRedirects!==void 0&&(!Number.isSafeInteger(e.maxRedirects)||e.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let i=e.maxRedirects??zm,o=e.timeoutMs??Um,a=e.maxResponseSize??qm,l=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??jm,c=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),u=[];for(let b of t){let A=typeof b=="string"?b:b.url;try{u.push(new URL(A).hostname)}catch{}}function f(b){try{return new URL(b).hostname||"localhost.invalid"}catch{return"localhost.invalid"}}function d(b){return e.dangerouslyAllowFullInternetAccess?c?{allowedHosts:void 0,skipSsrfCheckForAllowedHosts:void 0}:{allowedHosts:[f(b)],skipSsrfCheckForAllowedHosts:!0}:{allowedHosts:u,skipSsrfCheckForAllowedHosts:!c}}function p(b){try{return la(new URL(b).hostname)}catch{return!1}}async function h(b,A){let k={method:A.method,headers:A.headers,signal:A.signal,redirect:"manual"};return A.body!==void 0&&(k.body=A.body),await(n??globalThis.fetch)(b,k)}function m(b){if(!e.dangerouslyAllowFullInternetAccess&&!Df(b,t))throw new wt(b)}function E(b){if(!c)return;let A;try{A=new URL(b)}catch{throw new wt(b,"invalid URL")}if(la(A.hostname))throw new wt(b,"private/loopback IP address blocked")}function S(b){if(e.dangerouslyAllowFullInternetAccess)return;let A=b.toUpperCase();if(!l.includes(A))throw new Ws(A,l)}function g(b,A,k,v){if(!k.isGuardedFetchError(b))return b;let $=b,{onRedirectHop:R,subReason:x}=v;switch($.code){case"host_not_allowed":case"protocol_not_allowed":return R?new fn(A):new wt(A);case"hostname_unsafe":return R?new fn(A):new wt(A,x==="dns_resolution_failed"?"DNS resolution failed for private IP check":"hostname resolves to private/loopback IP address");case"redirect_to_unsafe_host":return new fn(A);case"too_many_redirects":return new Hn(i);case"response_too_large":return new kn(a);default:return b}}async function y(b,A={}){let k=A.method?.toUpperCase()??"GET",v=A.followRedirects??!0;if(A.maxRedirects!==void 0&&(!Number.isSafeInteger(A.maxRedirects)||A.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let $=A.maxRedirects??i,R=Math.min(i,$),x=A.timeoutMs!==void 0?Math.min(A.timeoutMs,o):o,C=new AbortController,D=pa(()=>C.abort(new DOMException("The operation was aborted","AbortError")),x),B=Nr(A.signal,C.signal);try{m(b),E(b),S(k);let H=Ar?await Ar:null,N=b,W=0,V=[],I=k,O=A.body,F=A.headers,ne=!1;for(;;){Zm(B.signal);let Q=await He.runTrustedAsync(async()=>{let Ie=F;if(ne&&Ie){let Dt=Ie instanceof Headers?new Headers(Ie):new Headers(Ie);Dt.delete("authorization"),Dt.delete("cookie"),Ie=Dt}let ct=s(N),Rt=Km(Ie,ct),ut={method:I,headers:Rt,signal:B.signal,followRedirects:!1,timeoutMs:x,sanitizeHeaders:!1};if(O&&!Gm.has(I)&&(ut.body=O),Object.assign(ut,d(N)),!H||p(N)){if(c)throw new wt(N,"DNS pinning unavailable for private IP enforcement");return await h(N,ut)}c?n&&(ut.fetch=n):(ut.fetch=n??globalThis.fetch,ut.dispatcher=null);let ft;ut.onUrlBlocked=Dt=>{ft=Dt.subReason};try{return await H.guardedFetch(N,ut)}catch(Dt){throw g(Dt,N,H,{onRedirectHop:W>0,subReason:ft})}});if(Hm.has(Q.status)&&v){let Ie=Q.headers.get("location");if(!Ie)return await _f(Q,N,a,B.signal,V);V.push({status:Q.status,statusText:Q.statusText,headers:Lf(Q.headers)});let ct=new URL(Ie,N).href;await ca(Qm(Q),B.signal);try{m(ct),E(ct)}catch(ft){throw B.signal?.aborted?vr(B.signal):ft instanceof wt?new fn(ct):ft}let Rt=Q.status;if(((Rt===301||Rt===302)&&I==="POST"||Rt===303&&I!=="GET"&&I!=="HEAD")&&(I="GET",O=void 0,S(I)),new URL(ct).origin!==new URL(N).origin&&(ne=!0),W++,W>R)throw new Hn(R);N=ct;continue}return await _f(Q,N,a,B.signal,V)}}finally{ha(D),B.cleanup()}}return y}async function ca(e,t){if(!t)return e;if(t.aborted)throw e.catch(()=>{}),vr(t);let n,r=new Promise((s,i)=>{n=()=>i(vr(t)),t.addEventListener("abort",n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener("abort",n)}}async function Qm(e){e.body&&!e.body.locked&&await e.body.cancel()}function Km(e,t){if(!e&&!t)return;if(!t)return e;let n=e instanceof Headers?new Headers(e):new Headers(e);for(let[r,s]of t)n.set(r,s);return n}function Lf(e){let t=Object.create(null);return e.forEach((n,r)=>{t[r.toLowerCase()]=n}),t}async function _f(e,t,n,r,s){let i=Lf(e.headers);if(n>0){let l=e.headers.get("content-length");if(l){let c=parseInt(l,10);if(!Number.isNaN(c)&&c>n)throw new kn(n)}}let o;if(n>0&&e.body){let l=e.body.getReader(),c=[],u=0;try{for(;;){let{done:d,value:p}=await ca(l.read(),r);if(d)break;if(p){if(u+=p.byteLength,u>n)throw await l.cancel(),new kn(n);c.push(p)}}}catch(d){throw r?.aborted&&await l.cancel(vr(r)).catch(()=>{}),d}o=new Uint8Array(u);let f=0;for(let d of c)o.set(d,f),f+=d.byteLength}else{let l=await ca(e.arrayBuffer(),r);if(n>0&&l.byteLength>n)throw new kn(n);o=new Uint8Array(l)}let a={status:e.status,statusText:e.statusText,headers:i,body:o,url:t};return s&&s.length>0&&(a.redirectChain=s),a}function Vs(e,t){if(e.length>t||M(e)>t)throw new P(`script input size limit exceeded (${t} bytes)`,"string_length")}var zs=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;abortOnUnresolvedCommands=!1;invokeToolFn;transformPlugins=[];state;constructor(t={}){if(this.limits=Ys({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}},t.executionLimitProfile),t.fs&&t.files)throw new Error("Bash: options.files is ignored when options.fs is provided; write the files into your filesystem directly or drop options.fs");let n=t.fs??new St(t.files,{maxTotalBytes:this.limits.maxFileSystemBytes});this.fs=n,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
797
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=ua(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.abortOnUnresolvedCommands=t.abortOnUnresolvedCommands??!1,this.coverageWriter=t.coverage,this.state={env:s,arrays:new Map,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",si(this.state.options)),this.state.env.set("BASHOPTS",ii(this.state.shoptOptions)),_a(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof St)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of wa(t.commands))this.registerBundledCommand(o);if(t.fetch||t.network)for(let o of Ea())this.registerBundledCommand(o);if(t.python)for(let o of ba())this.registerBundledCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of Sa())this.registerBundledCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)if($a(o)){let a=Pa(o);this.registerCommandInternal(a,!0)}else this.registerCommandInternal(o,!0)}registerCommand(t){this.registerCommandInternal(t,!0)}registerBundledCommand(t){this.registerCommandInternal(t,!1)}registerCommandInternal(t,n,r=n?t.trusted??!0:t.trusted){let s=this.commands.get(t.name),i=n?s?.internalOriginalCommand??(s&&!s.internalIsExtension?s:void 0):void 0,o={name:t.name,trusted:r,internalIsExtension:n,internalOriginalCommand:i,execute:(l,c)=>t.execute(l,c)};this.commands.set(t.name,o);let a=this.fs;if(typeof a.writeFileSync=="function"){let l=`#!/bin/bash
801
+ `)}`)}let r=[];for(let b of t)typeof b=="object"&&b.transform&&b.transform.length>0&&r.push(b);function s(b){if(r.length===0)return null;let A=null;for(let k of r)if(ha(b,k.url)&&k.transform){A||(A=new Headers);for(let v of k.transform)for(let[$,D]of Object.entries(v.headers))A.set($,D)}return A}if(e.maxRedirects!==void 0&&(!Number.isSafeInteger(e.maxRedirects)||e.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let i=e.maxRedirects??ty,o=e.timeoutMs??ny,a=e.maxResponseSize??ry,l=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??sy,c=e.denyPrivateRanges??(typeof process<"u"&&process.env?.NODE_ENV==="production"),u=[];for(let b of t){let A=typeof b=="string"?b:b.url;try{u.push(new URL(A).hostname)}catch{}}function f(b){try{return new URL(b).hostname||"localhost.invalid"}catch{return"localhost.invalid"}}function d(b){return e.dangerouslyAllowFullInternetAccess?c?{allowedHosts:void 0,skipSsrfCheckForAllowedHosts:void 0}:{allowedHosts:[f(b)],skipSsrfCheckForAllowedHosts:!0}:{allowedHosts:u,skipSsrfCheckForAllowedHosts:!c}}function p(b){try{return ma(new URL(b).hostname)}catch{return!1}}async function h(b,A){let k={method:A.method,headers:A.headers,signal:A.signal,redirect:"manual"};return A.body!==void 0&&(k.body=A.body),await(n??globalThis.fetch)(b,k)}function y(b){if(!e.dangerouslyAllowFullInternetAccess&&!qf(b,t))throw new bt(b)}function E(b){if(!c)return;let A;try{A=new URL(b)}catch{throw new bt(b,"invalid URL")}if(ma(A.hostname))throw new bt(b,"private/loopback IP address blocked")}function S(b){if(e.dangerouslyAllowFullInternetAccess)return;let A=b.toUpperCase();if(!l.includes(A))throw new Ks(A,l)}function g(b,A,k,v){if(!k.isGuardedFetchError(b))return b;let $=b,{onRedirectHop:D,subReason:x}=v;switch($.code){case"host_not_allowed":case"protocol_not_allowed":return D?new hn(A):new bt(A);case"hostname_unsafe":return D?new hn(A):new bt(A,x==="dns_resolution_failed"?"DNS resolution failed for private IP check":"hostname resolves to private/loopback IP address");case"redirect_to_unsafe_host":return new hn(A);case"too_many_redirects":return new Xn(i);case"response_too_large":return new Pn(a);default:return b}}async function m(b,A={}){let k=A.method?.toUpperCase()??"GET",v=A.followRedirects??!0;if(A.maxRedirects!==void 0&&(!Number.isSafeInteger(A.maxRedirects)||A.maxRedirects<0))throw new RangeError("maxRedirects must be a non-negative safe integer");let $=A.maxRedirects??i,D=Math.min(i,$),x=A.timeoutMs!==void 0?Math.min(A.timeoutMs,o):o,C=new AbortController,I=ba(()=>C.abort(new DOMException("The operation was aborted","AbortError")),x),W=_r(A.signal,C.signal);try{y(b),E(b),S(k);let Z=Pr?await Pr:null,R=b,V=0,z=[],O=k,_=A.body,M=A.headers,re=!1;for(;;){ay(W.signal);let K=await Te.runTrustedAsync(async()=>{let Oe=M;if(re&&Oe){let Ot=Oe instanceof Headers?new Headers(Oe):new Headers(Oe);Ot.delete("authorization"),Ot.delete("cookie"),Oe=Ot}let ut=s(R),It=cy(Oe,ut),ft={method:O,headers:It,signal:W.signal,followRedirects:!1,timeoutMs:x,sanitizeHeaders:!1};if(_&&!iy.has(O)&&(ft.body=_),Object.assign(ft,d(R)),!Z||p(R)){if(c)throw new bt(R,"DNS pinning unavailable for private IP enforcement");return await h(R,ft)}c?n&&(ft.fetch=n):(ft.fetch=n??globalThis.fetch,ft.dispatcher=null);let dt;ft.onUrlBlocked=Ot=>{dt=Ot.subReason};try{return await Z.guardedFetch(R,ft)}catch(Ot){throw g(Ot,R,Z,{onRedirectHop:V>0,subReason:dt})}});if(oy.has(K.status)&&v){let Oe=K.headers.get("location");if(!Oe)return await Gf(K,R,a,W.signal,z);z.push({status:K.status,statusText:K.statusText,headers:Zf(K.headers)});let ut=new URL(Oe,R).href;await ya(ly(K),W.signal);try{y(ut),E(ut)}catch(dt){throw W.signal?.aborted?Cr(W.signal):dt instanceof bt?new hn(ut):dt}let It=K.status;if(((It===301||It===302)&&O==="POST"||It===303&&O!=="GET"&&O!=="HEAD")&&(O="GET",_=void 0,S(O)),new URL(ut).origin!==new URL(R).origin&&(re=!0),V++,V>D)throw new Xn(D);R=ut;continue}return await Gf(K,R,a,W.signal,z)}}finally{Sa(I),W.cleanup()}}return m}async function ya(e,t){if(!t)return e;if(t.aborted)throw e.catch(()=>{}),Cr(t);let n,r=new Promise((s,i)=>{n=()=>i(Cr(t)),t.addEventListener("abort",n,{once:!0})});try{return await Promise.race([e,r])}finally{n&&t.removeEventListener("abort",n)}}async function ly(e){e.body&&!e.body.locked&&await e.body.cancel()}function cy(e,t){if(!e&&!t)return;if(!t)return e;let n=e instanceof Headers?new Headers(e):new Headers(e);for(let[r,s]of t)n.set(r,s);return n}function Zf(e){let t=Object.create(null);return e.forEach((n,r)=>{t[r.toLowerCase()]=n}),t}async function Gf(e,t,n,r,s){let i=Zf(e.headers);if(n>0){let l=e.headers.get("content-length");if(l){let c=parseInt(l,10);if(!Number.isNaN(c)&&c>n)throw new Pn(n)}}let o;if(n>0&&e.body){let l=e.body.getReader(),c=[],u=0;try{for(;;){let{done:d,value:p}=await ya(l.read(),r);if(d)break;if(p){if(u+=p.byteLength,u>n)throw await l.cancel(),new Pn(n);c.push(p)}}}catch(d){throw r?.aborted&&await l.cancel(Cr(r)).catch(()=>{}),d}o=new Uint8Array(u);let f=0;for(let d of c)o.set(d,f),f+=d.byteLength}else{let l=await ya(e.arrayBuffer(),r);if(n>0&&l.byteLength>n)throw new Pn(n);o=new Uint8Array(l)}let a={status:e.status,statusText:e.statusText,headers:i,body:o,url:t};return s&&s.length>0&&(a.redirectChain=s),a}function Xs(e,t){if(e.length>t||B(e)>t)throw new P(`script input size limit exceeded (${t} bytes)`,"string_length")}var Ys=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;coverageWriter;jsBootstrapCode;abortOnUnresolvedCommands=!1;invokeToolFn;transformPlugins=[];state;constructor(t={}){if(this.limits=li({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}},t.executionLimitProfile),t.fs&&t.files)throw new Error("Bash: options.files is ignored when options.fs is provided; write the files into your filesystem directly or drop options.fs");let n=t.fs??new At(t.files,{maxTotalBytes:this.limits.maxFileSystemBytes});this.fs=n,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),s=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
802
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",r],["OLDPWD",r],["OPTIND","1"],...Object.entries(t.env??{})]);if(t.fetch?this.secureFetch=t.fetch:t.network&&(this.secureFetch=ga(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth??!0,this.abortOnUnresolvedCommands=t.abortOnUnresolvedCommands??!1,this.coverageWriter=t.coverage,this.state={env:s,arrays:new Map,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastSubstitutionExitCode:null,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,virtualPid:t.processInfo?.pid??1,virtualPpid:t.processInfo?.ppid??0,virtualUid:t.processInfo?.uid??1e3,virtualGid:t.processInfo?.gid??1e3,bashPid:t.processInfo?.pid??1,nextVirtualPid:(t.processInfo?.pid??1)+1,currentLine:1,options:{errexit:!1,pipefail:!1,nounset:!1,xtrace:!1,verbose:!1,posix:!1,allexport:!1,noclobber:!1,noglob:!1,noexec:!1,vi:!1,emacs:!1},shoptOptions:{extglob:!1,dotglob:!1,nullglob:!1,failglob:!1,globstar:!1,globskipdots:!0,nocaseglob:!1,nocasematch:!1,expand_aliases:!1,lastpipe:!1,xpg_echo:!1},inCondition:!1,loopDepth:0,exportedVars:new Set(["HOME","PATH","PWD","OLDPWD",...Object.keys(t.env||{})]),readonlyVars:new Set(["SHELLOPTS","BASHOPTS"]),hashTable:new Map},this.state.env.set("SHELLOPTS",hi(this.state.options)),this.state.env.set("BASHOPTS",mi(this.state.shoptOptions)),za(n,this.useDefaultLayout,{pid:this.state.virtualPid,ppid:this.state.virtualPpid,uid:this.state.virtualUid,gid:this.state.virtualGid}),r!=="/"&&n instanceof At)try{n.mkdirSync(r,{recursive:!0})}catch{}for(let o of $a(t.commands))this.registerBundledCommand(o);if(t.fetch||t.network)for(let o of Pa())this.registerBundledCommand(o);if(t.python)for(let o of Ca())this.registerBundledCommand(o);let i=typeof t.javascript=="object"?t.javascript:Object.create(null);if(t.javascript||i.invokeTool){for(let o of Na())this.registerBundledCommand(o);i.bootstrap&&(this.jsBootstrapCode=i.bootstrap),i.invokeTool&&(this.invokeToolFn=i.invokeTool)}if(t.customCommands)for(let o of t.customCommands)if(_a(o)){let a=La(o);this.registerCommandInternal(a,!0)}else this.registerCommandInternal(o,!0)}registerCommand(t){this.registerCommandInternal(t,!0)}registerBundledCommand(t){this.registerCommandInternal(t,!1)}registerCommandInternal(t,n,r=n?t.trusted??!0:t.trusted){let s=this.commands.get(t.name),i=n?s?.internalOriginalCommand??(s&&!s.internalIsExtension?s:void 0):void 0,o={name:t.name,trusted:r,internalIsExtension:n,internalOriginalCommand:i,execute:(l,c)=>t.execute(l,c)};this.commands.set(t.name,o);let a=this.fs;if(typeof a.writeFileSync=="function"){let l=`#!/bin/bash
798
803
  # Built-in command: ${t.name}
799
- `;try{a.writeFileSync(`/bin/${t.name}`,l)}catch{}try{a.writeFileSync(`/usr/bin/${t.name}`,l)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=Tf(t.stdout),t.stderr=Tf(t.stderr),t}async exec(t,n){let r=new Lr(this.limits,n?.signal,this.abortOnUnresolvedCommands),s;try{s=await this.execInScope(t,n,r,0,n?.signal,!1,!1)}catch(o){try{await r.close()}catch{}throw o}let i=s;try{await r.close()}catch{i={...s,stderr:`${s.stderr}bash: execution cleanup failed
800
- `,exitCode:126}}return i.unresolvedCommands=r.unresolvedCommandNames,t.trim()?this.logResult(i):i}async execInScope(t,n,r,s,i,o=!1,a=!0){let l=f=>a?this.logResult(f):f,c=Nr(i,n?.signal),u=n?{...n,signal:c.signal}:{signal:c.signal};try{if(r.assertExecDepth(s),Vs(t,this.limits.maxSourceBytes),!t.trim())return{stdout:"",stderr:"",exitCode:0,env:Ue(this.state.env,u.env)};this.logger?.info("exec",{command:t});let f=u.cwd??this.state.cwd,d,p=f;if(u.cwd)if(u.env&&"PWD"in u.env)d=u.env.PWD;else if(u.env&&!("PWD"in u.env))try{d=await this.fs.realpath(f),p=d}catch{d=f}else d=f;let h=u.replaceEnv?new Map:new Map(this.state.env);if(u.env)for(let[y,b]of Object.entries(u.env))h.set(y,b);d!==void 0&&h.set("PWD",d);let m={...this.state,env:h,arrays:u.replaceEnv?new Map:st(this.state.arrays),cwd:p,previousDir:u.env?.OLDPWD??this.state.previousDir,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:Jm(u.stdin,u.stdinKind,this.limits.maxInputBytes,this.limits.maxStringLength,r,o),signal:u.signal,extraArgs:u.args},E=t;u.rawScript||(E=fa(t));let S=this.defenseInDepthConfig?He.getInstance(this.defenseInDepthConfig):null,g=S?.activate();try{let y=async()=>{let b=it(E,{maxHeredocSize:this.limits.maxHeredocSize}),A;if(this.transformPlugins.length>0){let x=Object.create(null);for(let C of this.transformPlugins){let D=C.transform({ast:b,metadata:x});b=D.ast,D.metadata&&(x=Hs(x,D.metadata))}A=x}let k={fs:this.fs,commands:this.commands,limits:this.limits,executionScope:r,exec:(x,C,D=!1)=>this.execInScope(x,C,r,s+1,u.signal,D),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:S?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},R=await new Sr(k,m).executeScript(b);return A&&(R.metadata=A),l(R)};return g?await g.run(y):await y()}catch(y){if(y instanceof U)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:Ue(this.state.env,u.env)});if(y instanceof $e){if(s>0)throw y;return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,internalOutputAccounting:y.internalOutputAccounting,env:Ue(this.state.env,u.env)})}if(y instanceof rt)return l({stdout:y.stdout,stderr:y.stderr,exitCode:y.exitCode,env:Ue(this.state.env,u.env)});if(y instanceof ae)return l({stdout:y.stdout,stderr:y.stderr,exitCode:1,env:Ue(this.state.env,u.env)});if(y instanceof Xe)return l({stdout:y.stdout,stderr:y.stderr,exitCode:124,env:Ue(this.state.env,u.env)});if(y instanceof P)return l({stdout:y.stdout,stderr:ze(y.stderr),exitCode:P.EXIT_CODE,internalOutputAccounting:y.internalOutputAccounting,env:Ue(this.state.env,u.env)});if(y instanceof Cr)return l({stdout:"",stderr:`bash: security violation: ${ze(y.message)}
801
- `,exitCode:1,env:Ue(this.state.env,u.env)});if(y.name==="ParseException")return l({stdout:"",stderr:`bash: syntax error: ${ze(y.message)}
802
- `,exitCode:2,env:Ue(this.state.env,u.env)});if(y instanceof Ye)return l({stdout:"",stderr:`bash: ${ze(y.message)}
803
- `,exitCode:2,env:Ue(this.state.env,u.env)});if(y instanceof RangeError)return l({stdout:"",stderr:`bash: ${ze(y.message)}
804
- `,exitCode:1,env:Ue(this.state.env,u.env)});throw y}finally{g?.deactivate()}}catch(f){if(f instanceof Xe)return l({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:Ue(this.state.env,u.env)});if(f instanceof P)return l({stdout:f.stdout,stderr:ze(f.stderr),exitCode:P.EXIT_CODE,internalOutputAccounting:f.internalOutputAccounting,env:Ue(this.state.env,u.env)});throw f}finally{c.cleanup()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,n){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),n)}getCwd(){return this.state.cwd}getEnv(){return zt(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){Vs(t,this.limits.maxSourceBytes);let n=fa(t),r=it(n,{maxHeredocSize:this.limits.maxHeredocSize}),s=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:s});r=o.ast,o.metadata&&(s=Hs(s,o.metadata))}return{script:vl(r),ast:r,metadata:s}}async analyzeCommands(t){Vs(t,this.limits.maxSourceBytes);let n=it(fa(t),{maxHeredocSize:this.limits.maxHeredocSize}),{commands:r,definedFunctions:s,definedAliases:i}=La(n),o=[];for(let a of r)s.has(a)||i.has(a)||await this.resolvesCommandForAnalysis(a)||o.push(a);return{commands:r,unresolved:o}}async resolvesCommandForAnalysis(t){if((er.has(t)||Ht.has(t))&&!Ba.has(t)||this.state.functions.has(t))return!0;let n=await Mr({fs:this.fs,state:{...this.state,hashTable:new Map},commands:this.commands},t);return n!==null&&!("error"in n)}};function Xm(e,t){let n=t;for(let r=0;r<e.length;r++){let s=e[r];if(n==="single")s==="'"&&(n="none");else if(n==="double")s==="\\"?r++:s==='"'&&(n="none");else if(s==="'")n="single";else if(s==='"')n="double";else if(s==="\\")r++;else if(s==="#"&&(r===0||/\s/.test(e[r-1])))break}return n}function fa(e){let t=e.split(`
805
- `),n=[],r=[],s="none";for(let i=0;i<t.length;i++){let o=t[i];if(r.length>0){let u=r[r.length-1];if((u.stripTabs?o.replace(/^\t+/,""):o)===u.delimiter){n.push(o.trimStart()),r.pop();continue}n.push(o);continue}let a=s,l=a==="none"?o.trimStart():o;if(n.push(l),s=Xm(o,a),a!=="none")continue;let c=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let u of l.matchAll(c)){let f=u[1]==="-",d=u[3];r.push({delimiter:d,stripTabs:f})}}return n.join(`
806
- `)}var Ym=new TextDecoder("utf-8",{fatal:!0});function Tf(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let s=e.charCodeAt(r);if(s>255)return e;s>127&&(t=!0)}if(!t)return e;let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);try{return Ym.decode(n)}catch{return e}}function Jm(e,t,n,r,s,i){if(e===void 0)return;let o=t==="bytes"?e.length:M(e);if(o>n||o>r)throw new P(`stdin size limit exceeded (${Math.min(n,r)} bytes)`,"string_length");return i||s.consumeInput(o,"stdin"),t==="bytes"?e:dn(e)}import*as me from"node:fs";import*as De from"node:path";import*as Be from"node:fs";import*as xe from"node:path";function xr(e,t){let n=/^[A-Za-z]:[\\/]/.test(t)?xe.win32:xe.posix,r=n.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${n.sep}`)&&!n.isAbsolute(r)}function kr(e,t){try{let n=Be.realpathSync(e);return xr(n,t)?n:null}catch(n){if(n.code==="ENOENT"){let r=xe.dirname(e);if(r===e)return null;let s=kr(r,t);if(s===null)return null;try{if(Be.lstatSync(e).isSymbolicLink()){let o=Be.readlinkSync(e),a=xe.isAbsolute(o)?o:xe.resolve(xe.dirname(e),o),l=kr(a,t);return l===null?null:l}}catch{}return xe.join(s,xe.basename(e))}return null}}function Ff(e,t,n){let r=kr(e,n);if(r===null)return null;let s=xe.resolve(e),i=s.slice(t.length),o=r.slice(n.length);if(i!==o)return null;try{if(Be.lstatSync(s).isSymbolicLink())return null}catch{}return r}function Mf(e,t){if(!Be.existsSync(e))throw new Error(`${t} root does not exist`);if(!Be.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function Bf(e,t){if(!xe.isAbsolute(e))return{withinRoot:!0,relativePath:e};let n;try{n=Be.realpathSync(e)}catch{n=xe.resolve(e)}return xr(n,t)?{withinRoot:!0,relativePath:n.slice(t.length).replace(/\\/g,"/")||"/"}:{withinRoot:!1,safeName:xe.basename(e)}}function Wf(e,t,n,r){let s=e;if(s.path===void 0){for(let o of r)if(s.message?.includes(o))throw e}let i=s.code||"EIO";throw new Error(`${i}: ${n} '${t}'`)}async function Et(e){return Vf(await Be.promises.lstat(e))}function da(e){return Vf(Be.lstatSync(e))}function Vf(e){return process.platform==="win32"&&e.isDirectory()&&(e.mode=e.mode&-512|493),e}function Us(e){let t=e.content.byteLength;for(let n of e.appendChunks??[])t+=n.byteLength;return t}function qf(e){return Us(e)}function js(e,t){if(!e.appendChunks||e.appendChunks.length===0)return e.content;let n=e.appendChunks.reduce((i,o)=>i+o.byteLength,e.content.byteLength);if(!Number.isSafeInteger(n))throw new Error(`EFBIG: file too large, read '${t}'`);let r=new Uint8Array(n);r.set(e.content);let s=e.content.byteLength;for(let i of e.appendChunks)r.set(i,s),s+=i.byteLength;return e.content=r,e.appendChunks=void 0,r}function zf(e){return!e||e.type!=="file"?0:Us(e)}function $r(){return{type:"directory",children:new Map,changedAt:Date.now(),mode:493,mtime:new Date}}function Pr(e){return e.split("/").filter(Boolean)}var qs=class e{maxMemoryBytes;rootNode=$r();bytes=0;mutationSeq_=0;constructor(t){this.maxMemoryBytes=t}get root(){return this.rootNode}get retainedBytes(){return this.bytes}descend(t){let n=Pr(t),r=[this.rootNode],s=this.rootNode;for(let i=0;i<n.length;i++){let o=s.children.get(n[i]);if(o===void 0)return{kind:"missing",stack:r,missingAt:i};if(i===n.length-1)return{kind:"found",stack:r,node:o};if(o.type==="whiteout")return{kind:"blocked",stack:r,blockedAt:i};if(o.type!=="directory")return{kind:"notdir",stack:r,notdirAt:i};r.push(o),s=o}return{kind:"found",stack:[],node:this.rootNode}}ensureDirs(t,n){let r=this.rootNode,s="";for(let i of Pr(t)){s=`${s}/${i}`;let o=r.children.get(i);if(o===void 0)o=$r(),r.children.set(i,o);else if(o.type==="whiteout")o=this.resurrectDir(r,i,s,n);else if(o.type!=="directory")throw new Error(`ENOTDIR: not a directory, mkdir '${t}'`);r=o}return r}resurrectDir(t,n,r,s){let i=$r();t.children.set(n,i);let o=s?.(r);if(o)for(let a of o)i.children.has(a)||i.children.set(a,{type:"whiteout",changedAt:i.changedAt});return i}attach(t,n){n.changedAt=Date.now();let r=Pr(t);if(r.length===0)throw new Error(`EINVAL: cannot attach at root, attach '${t}'`);let s=this.parentDirOf(r,t),i=s.children.get(r[r.length-1]);if(i?.type==="directory"&&n.type!=="directory")throw new Error(`EISDIR: cannot replace directory with ${n.type}, attach '${t}'`);if(i!==void 0&&n.type==="directory")throw new Error(`EEXIST: cannot replace ${i.type} with directory, attach '${t}'`);let o=zf(i),a=zf(n);this.assertCapacity(a,o),s.children.set(r[r.length-1],n),this.bytes+=a-o}detach(t){let n=Pr(t);if(n.length===0)return;let r=this.descend(t);return r.kind!=="found"?void 0:(r.stack[r.stack.length-1].children.delete(n[n.length-1]),this.bytes-=e.subtreeBytes(r.node),r.node)}putWhiteout(t){let n=Pr(t);if(n.length===0)throw new Error(`EINVAL: cannot whiteout the root, rm '${t}'`);let r=this.rootNode;for(let o=0;o<n.length-1;o++)r=this.ensureChildDir(r,n[o],t);let s=n[n.length-1],i=r.children.get(s);i?.type!=="whiteout"&&(this.bytes-=e.subtreeBytes(i),r.children.set(s,{type:"whiteout",changedAt:Date.now()}))}appendChunk(t,n){this.assertCapacity(n.byteLength),t.appendChunks||(t.appendChunks=[]),t.appendChunks.push(n),this.bytes+=n.byteLength,this.touch(t)}touch(t){t.seq=++this.mutationSeq_,t.changedAt=Date.now()}detachIfUnchanged(t,n,r){let s=this.descend(t);return s.kind!=="found"||s.node!==n||n.seq!==r||n.type==="directory"&&n.children.size>0?!1:(this.detach(t),!0)}*preOrder(){let t=[{path:"/",node:this.rootNode}];for(;t.length>0;){let n=t.pop();if(yield n,n.node.type==="directory"){let r=[...n.node.children.entries()];for(let s=r.length-1;s>=0;s--){let[i,o]=r[s];t.push({path:Uf(n.path,i),node:o})}}}}*postOrder(){let t=[],n=[{path:"/",node:this.rootNode}];for(;n.length>0;){let r=n.pop();if(t.push(r),r.node.type==="directory")for(let[s,i]of r.node.children)n.push({path:Uf(r.path,s),node:i})}for(let r=t.length-1;r>=0;r--)yield t[r]}clear(){this.rootNode=$r(),this.bytes=0}static subtreeBytes(t){if(t===void 0)return 0;if(t.type==="file")return Us(t);if(t.type!=="directory")return 0;let n=0,r=[t];for(;r.length>0;){let s=r.pop();for(let i of s.children.values())i.type==="file"?n+=Us(i):i.type==="directory"&&r.push(i)}return n}parentDirOf(t,n){let r=this.rootNode;for(let s=0;s<t.length-1;s++){let i=r.children.get(t[s]);if(i?.type!=="directory")throw new Error(`ENOTDIR: not a directory, attach '${n}'`);r=i}return r}ensureChildDir(t,n,r){let s=t.children.get(n);if(s===void 0||s.type==="whiteout")s=$r(),t.children.set(n,s);else if(s.type!=="directory")throw new Error(`ENOTDIR: not a directory, rm '${r}'`);return s}assertCapacity(t,n=0){if(!Number.isSafeInteger(t)||t<0||t>this.maxMemoryBytes-this.bytes+n)throw new Error(`ENOSPC: overlay memory byte limit exceeded (${this.maxMemoryBytes} bytes)`)}};function Uf(e,t){return e==="/"?`/${t}`:`${e}/${t}`}var ey=["ELOOP","EFBIG","EPERM"],ty="/home/user/project",Zn=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;maxMemoryBytes;allowSymlinks;tree;nextMemoryIdentity=1;identityFor(t){return t.type==="symlink"?"":(t.identity||(t.identity=`overlay:${this.nextMemoryIdentity++}`),t.identity)}constructor(t){this.root=De.resolve(t.root);let n=t.mountPoint??ty;if(this.mountPoint=n==="/"?"/":n.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${n}`);if(this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxMemoryBytes=t.maxMemoryBytes??1024*1024*1024,!Number.isSafeInteger(this.maxMemoryBytes)||this.maxMemoryBytes<0)throw new Error("OverlayFs: invalid maxMemoryBytes");this.allowSymlinks=t.allowSymlinks??!1,Mf(this.root,"OverlayFs"),this.canonicalRoot=me.realpathSync(this.root),this.tree=new qs(this.maxMemoryBytes),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){this.tree.ensureDirs(this.mountPoint)}getMountPoint(){return this.mountPoint}diff(){let t=[],n=[],r=[];for(let{path:i,node:o}of this.tree.preOrder()){let a=this.getRelativeToMount(i);if(!(a===null||a==="/")){if(o.type==="whiteout"){this.existsOnRealFs(i)&&(n.push(a),r.push(o.changedAt??0));continue}if(o.type==="file")if(o.metacopy){if(!this.existsOnRealFs(i))continue;t.push({path:a,nodeType:"file",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0,metadataOnly:!0})}else t.push({path:a,nodeType:"file",content:js(o,i),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0});else o.type==="directory"?t.push({path:a,nodeType:"directory",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0}):t.push({path:a,nodeType:"symlink",content:new TextEncoder().encode(o.target),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0})}}t.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0);let s=n.map((i,o)=>({path:i,changedAt:r[o]}));return s.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0),{writes:t,deletions:s.map(i=>i.path),...s.length>0&&{deletionChangedAt:s.map(i=>i.changedAt)}}}async sync(){for(let{path:t,node:n}of this.tree.postOrder()){let r=this.getRelativeToMount(t);if(r===null||r==="/")continue;if(n.type==="whiteout"){this.existsOnRealFs(t)||this.tree.detach(t);continue}if(n.type==="directory"&&n.children.size>0)continue;let s=n.seq;await this.nodeMatchesDisk(t,n)&&this.tree.detachIfUnchanged(t,n,s)}}reset(){this.tree.clear(),this.createMountPointDirs()}drop(t){let n=t.map(r=>{let s=z(r);if(s==="/")throw new Error(`EINVAL: invalid argument, drop '${r}'`);return this.mountPoint==="/"?s:`${this.mountPoint}${s}`});n.sort((r,s)=>s.length-r.length);for(let r of n){let s=this.tree.descend(r);if(s.kind!=="found")continue;let i=s.node;i.type==="directory"&&i.children.size>0||this.tree.detach(r)}}async lstatLower(t){let n=this.resolveRealPathParent_(this.toRealPath(t));if(!n)return null;try{return{canonical:n,stat:await Et(n)}}catch{return null}}async nodeMatchesDisk(t,n){if(n.type==="directory")return(await this.lstatLower(t))?.stat.isDirectory()??!1;if(n.type==="symlink"){if(!this.allowSymlinks)return!1;let s=await this.lstatLower(t);if(!s?.stat.isSymbolicLink())return!1;try{let i=await me.promises.readlink(s.canonical);return this.realTargetToVirtual(i)===n.target}catch{return!1}}if(n.metacopy){let s=await this.lstatLower(t);if(!s?.stat.isFile())return!1;let{stat:i}=s;return!(i.mtime.getTime()!==n.mtime.getTime()||process.platform!=="win32"&&(i.mode&4095)!==(n.mode&4095))}let r=this.resolveRealPath_(this.toRealPath(t));if(!r)return!1;try{let s=await Et(r);if(!s.isFile())return!1;let i=js(n,t);if(s.size!==i.byteLength)return!1;let o=this.allowSymlinks?me.constants.O_RDONLY:me.constants.O_RDONLY|me.constants.O_NOFOLLOW,a=await me.promises.open(r,o),l;try{l=new Uint8Array(await a.readFile())}finally{await a.close()}for(let c=0;c<l.byteLength;c++)if(l[c]!==i[c])return!1;return!0}catch{return!1}}mkdirSync(t,n){this.tree.ensureDirs(z(t),r=>this.lowerChildren(r))}writeFileSync(t,n){let r=z(t);this.ensureParentDirs(r);let s=n instanceof Uint8Array?n:new TextEncoder().encode(n);this.tree.attach(r,{type:"file",content:s,mode:420,mtime:new Date})}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let n=z(t),r=this.getRelativeToMount(n);if(r===null)return null;let s=De.join(this.root,r),i=De.resolve(s);return xr(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?kr(t,this.canonicalRoot):Ff(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let n=De.dirname(t),r=this.resolveRealPath_(n);return r===null?null:De.join(r,De.basename(t))}sanitizeError(t,n,r){Wf(t,n,r,ey)}ensureParentDirs(t){let n=Pn(t);n!=="/"&&this.tree.ensureDirs(n,r=>this.lowerChildren(r))}lowerChildren(t){let n=this.resolveRealPath_(this.toRealPath(t));if(!n)return null;try{return me.readdirSync(n)}catch{return null}}async existsInOverlay(t){let n=z(t),r=this.tree.descend(n);if(r.kind==="found")return r.node.type!=="whiteout";if(r.kind==="blocked"||r.kind==="notdir")return!1;let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)return!1;try{return await Et(s),!0}catch{return!1}}async readFile(t,n){let r=await this.readFileBuffer(t),s=qt(n);return Dn(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return Dn(n,"binary")}async readFileBuffer(t,n=new Set){K(t,"open");let r=z(t);if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(s.kind==="notdir")throw new Error(`ENOTDIR: not a directory, open '${t}'`);if(s.kind==="found"){let i=s.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(i.type==="symlink"){let a=this.resolveSymlink(r,i.target);return this.readFileBuffer(a,n)}if(i.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);if(!i.metacopy)return js(i,t);let o=await this.readLowerFileBytes(r,t,n);if(process.platform==="win32")try{this.tree.attach(r,{type:"file",content:o,mode:i.mode,mtime:i.mtime})}catch(a){if(!(a instanceof Error)||!a.message.startsWith("ENOSPC"))throw a}return o}return this.readLowerFileBytes(r,t,n)}async readLowerFileBytes(t,n,r){let s=this.resolveRealPath_(this.toRealPath(t));if(!s)throw new Error(`ENOENT: no such file or directory, open '${n}'`);try{let i=await Et(s);if(i.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, open '${n}'`);let l=await me.promises.readlink(s),c=this.realTargetToVirtual(l),u=this.resolveSymlink(t,c);return this.readFileBuffer(u,r)}if(i.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${n}'`);if(this.maxFileReadSize>0&&i.size>this.maxFileReadSize)throw new Error(`EFBIG: file too large, read '${n}' (${i.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?me.constants.O_RDONLY:me.constants.O_RDONLY|me.constants.O_NOFOLLOW,a=await me.promises.open(s,o);try{let l=await a.readFile();return new Uint8Array(l)}finally{await a.close()}}catch(i){let o=i.code;if(o==="ENOENT")throw new Error(`ENOENT: no such file or directory, open '${n}'`);if(o==="ELOOP")throw new Error(`ENOENT: no such file or directory, open '${n}'`);this.sanitizeError(i,n,"open")}}async writeFile(t,n,r){K(t,"write"),this.assertWritable(`write '${t}'`);let s=z(t);this.ensureParentDirs(s);let i=qt(r),o=Rn(n,i);this.tree.attach(s,{type:"file",content:o,mode:await this.inheritedMode(s),mtime:new Date})}async inheritedMode(t){let n=this.entryAt(t);if(n?.type==="file")return n.mode;if(n?.type==="directory")return 420;if(process.platform==="win32")return 420;try{let r=await this.stat(t);if(r.isFile)return r.mode}catch{}return 420}async appendFile(t,n,r){K(t,"append"),this.assertWritable(`append '${t}'`);let s=z(t),i=qt(r),o=Rn(n,i),a=this.tree.descend(s);if(a.kind==="found"&&a.node.type==="file"){await this.appendToExisting_(s,a.node,o,t);return}if(a.kind==="blocked")throw new Error(`ENOENT: no such file or directory, append '${t}'`);if(a.kind==="notdir")throw new Error(`ENOTDIR: not a directory, append '${t}'`);let l;try{l=await this.readFileBuffer(s)}catch(f){if(!(f instanceof Error)||!f.message.startsWith("ENOENT"))throw f;l=new Uint8Array(0)}let c=await this.inheritedMode(s),u=this.tree.descend(s);if(u.kind==="found"&&u.node.type==="file"){await this.appendToExisting_(s,u.node,o,t);return}this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,appendChunks:[o],mode:c,mtime:new Date})}async appendToExisting_(t,n,r,s){if(n.metacopy){let i=await this.readLowerFileBytes(t,s,new Set),o=this.tree.descend(t);if(o.kind==="found"&&o.node.type==="file"&&!o.node.metacopy){this.tree.appendChunk(o.node,r),o.node.mtime=new Date;return}this.tree.attach(t,{type:"file",content:i,appendChunks:[r],mode:n.mode,mtime:new Date});return}this.tree.appendChunk(n,r),n.mtime=new Date}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,n=new Set){K(t,"stat");let r=z(t);if(n.has(r))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);if(s.kind==="notdir")throw new Error(`ENOTDIR: not a directory, stat '${t}'`);if(s.kind==="found"){let o=s.node;if(o.type==="whiteout")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);if(o.type==="symlink"){let a=this.resolveSymlink(r,o.target);return this.stat(a,n)}return this.memoryEntryStat(o)}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await Et(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let a=await me.promises.readlink(i),l=this.realTargetToVirtual(a),c=this.resolveSymlink(r,l);return this.stat(c,n)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime,dev:o.dev,ino:o.ino}}catch(o){if(o.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, stat '${t}'`);this.sanitizeError(o,t,"stat")}}async lstat(t){K(t,"lstat");let n=z(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(r.kind==="notdir")throw new Error(`ENOTDIR: not a directory, lstat '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);return this.memoryEntryStat(i)}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await Et(s);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime,dev:i.dev,ino:i.ino}}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}memoryEntryStat(t){if(t.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:t.mode,size:t.target.length,mtime:t.mtime};let n=0;return t.type==="file"&&(n=t.metacopy?t.lowerSize??0:qf(t)),{isFile:t.type==="file",isDirectory:t.type==="directory",isSymbolicLink:!1,mode:t.mode,size:n,mtime:t.mtime,identity:this.identityFor(t)}}resolveSymlink(t,n){return Nn(t,n)}realTargetToVirtual(t){let n=Bf(t,this.canonicalRoot);if(n.withinRoot){if(!De.isAbsolute(t))return t;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,n){K(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=z(t);if(await this.existsInOverlay(r)){if(!n?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=Pn(r);if(i!=="/"&&!await this.existsInOverlay(i))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.tree.ensureDirs(r,o=>this.lowerChildren(o))}async readdirCore(t,n){let r=new Map,s=new Set,i=this.tree.descend(n);if(i.kind==="blocked")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(i.kind==="notdir")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let o;if(i.kind==="found"){let l=i.node;if(l.type==="whiteout")throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(l.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);o=l;for(let[c,u]of l.children){if(u.type==="whiteout"){s.add(c);continue}r.set(c,{name:c,isFile:u.type==="file",isDirectory:u.type==="directory",isSymbolicLink:u.type==="symlink"})}}let a=this.resolveRealPath_(this.toRealPath(n));if(a)try{if(!this.allowSymlinks&&(await Et(a)).isSymbolicLink()){if(!o){let u=new Error(`ENOENT: no such file or directory, scandir '${t}'`);throw u.code="ENOENT",u}return r}let l=await me.promises.readdir(a,{withFileTypes:!0});for(let c of l)!s.has(c.name)&&!r.has(c.name)&&r.set(c.name,{name:c.name,isFile:c.isFile(),isDirectory:c.isDirectory(),isSymbolicLink:c.isSymbolicLink()})}catch(l){if(l.code==="ENOENT"){if(!o)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else l.code!=="ENOTDIR"&&this.sanitizeError(l,t,"scandir")}return r}async resolveForReaddir(t,n=!1){let r=z(t),s=new Set,i=n;for(;;){let l=this.tree.descend(r);if(l.kind!=="found")break;let c=l.node;if(c.type!=="symlink")return{normalized:r,outsideOverlay:!1};if(s.has(r))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);s.add(r),i=!0,r=this.resolveSymlink(r,c.target)}if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let a=this.resolveRealPath_(this.toRealPath(r));if(!a)return{normalized:r,outsideOverlay:!0};try{if((await Et(a)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let c=await me.promises.readlink(a),u=this.realTargetToVirtual(c),f=this.resolveSymlink(r,u);return this.resolveForReaddir(f,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){K(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){K(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,n){K(t,"rm"),this.assertWritable(`rm '${t}'`);let r=z(t);if(!await this.existsInOverlay(r)){if(n?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}let i=!1;try{(await this.stat(r)).isDirectory&&(i=(await this.readdir(r)).length>0)}catch{}if(i&&!n?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);this.existsOnRealFs(r)?this.tree.putWhiteout(r):this.tree.detach(r)}existsOnRealFs(t){let n=this.toRealPath(t),r=this.resolveRealPathParent_(n);if(!r)return!1;try{return da(r),!0}catch{return!1}}async cp(t,n,r){K(t,"cp"),K(n,"cp"),this.assertWritable(`cp '${n}'`);let s=z(t),i=z(n);if(!await this.existsInOverlay(s))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(s);if(a.isFile){let l=await this.readFileBuffer(s);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);if(Ot(s,i))throw new Error(`EINVAL: cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(s);for(let c of l){let u=s==="/"?`/${c}`:`${s}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,n){this.assertWritable(`mv '${n}'`),await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return Cn(t,n)}getAllPaths(){let t=new Set;for(let{path:n,node:r}of this.tree.preOrder())r.type!=="whiteout"&&t.add(n);return this.scanRealFs(this.mountPoint,t),Array.from(t)}scanRealFs(t,n){if(this.lowerHidden(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let s=me.readdirSync(r);for(let i of s){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.lowerHidden(o))continue;n.add(o);let a=De.join(r,i);da(a).isDirectory()&&this.scanRealFs(o,n)}}catch{}}lowerHidden(t){let n=this.tree.descend(t);switch(n.kind){case"blocked":case"notdir":return!0;case"found":return n.node.type!=="directory";default:return!1}}entryAt(t){let n=this.tree.descend(t);if(n.kind==="found"&&n.node.type!=="whiteout")return n.node}async chmod(t,n){K(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=z(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.entryAt(r);if(i){i.mode=n,this.tree.touch(i);return}let o=await this.stat(r);this.attachMetacopyShadow(r,o,n,o.isFile?o.mtime:new Date)}attachMetacopyShadow(t,n,r,s){this.ensureParentDirs(t),n.isFile?this.tree.attach(t,{type:"file",content:new Uint8Array(0),metacopy:!0,lowerSize:n.size,mode:r,mtime:s}):n.isDirectory&&this.tree.attach(t,{type:"directory",children:new Map,mode:r,mtime:s})}async symlink(t,n){if(!this.allowSymlinks)throw new Error(`EPERM: operation not permitted, symlink '${n}'`);K(n,"symlink"),this.assertWritable(`symlink '${n}'`);let r=z(n);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.tree.attach(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,n){K(t,"link"),K(n,"link"),this.assertWritable(`link '${n}'`);let r=z(t),s=z(n);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(s))throw new Error(`EEXIST: file already exists, link '${n}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,mode:o.mode,mtime:new Date,identity:o.identity??`overlay:${this.nextMemoryIdentity++}`})}async readlink(t){K(t,"readlink");let n=z(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(r.kind==="notdir")throw new Error(`ENOTDIR: not a directory, readlink '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return i.target}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{let i=await me.promises.readlink(s);if(!De.isAbsolute(i)){let o=De.resolve(De.dirname(s),i),a;try{a=me.realpathSync(o)}catch{a=o}if(!xr(a,this.canonicalRoot))return De.basename(i)}return this.realTargetToVirtual(i)}catch(i){if(i.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){K(t,"realpath");let n=z(t),r=new Set,s=l=>{let c=this.tree.descend(l);if(c.kind==="blocked"||c.kind==="found"&&c.node.type==="whiteout")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return c.kind==="found"?c.node:void 0},i=async l=>{let c=l==="/"?[]:l.slice(1).split("/"),u="";for(let f of c){if(u=`${u}/${f}`,r.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);let d=s(u),p=0,h=40;for(;d&&d.type==="symlink"&&p<h;){if(r.add(u),u=this.resolveSymlink(u,d.target),p++,r.has(u))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);d=s(u)}if(p>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!d){let m=this.toRealPath(u),E=this.resolveRealPath_(m);if(E)try{if((await Et(E)).isSymbolicLink()){if(!this.allowSymlinks)throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let g=await me.promises.readlink(E),y=this.realTargetToVirtual(g);return r.add(u),u=this.resolveSymlink(u,y),i(u)}}catch(S){if(S.code==="ENOENT")throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(S,t,"realpath")}else if(!this.allowSymlinks){let S=this.resolveRealPathParent_(m);if(S)try{if((await Et(S)).isSymbolicLink())throw new Error(`ENOENT: no such file or directory, realpath '${t}'`)}catch(g){if(g.message?.includes("ENOENT")||g.message?.includes("ELOOP"))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);this.sanitizeError(g,t,"realpath")}}}}return u||"/"},o=await i(n);if(!await this.existsInOverlay(o))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return o}async utimes(t,n,r){K(t,"utimes"),this.assertWritable(`utimes '${t}'`);let s=z(t);if(!await this.existsInOverlay(s))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.entryAt(s);if(o){o.mtime=r,this.tree.touch(o);return}let a=await this.stat(s);this.attachMetacopyShadow(s,a,a.mode,r)}};function Gf(){console.log(`just-bash - A secure bash environment for AI agents
804
+ `;try{a.writeFileSync(`/bin/${t.name}`,l)}catch{}try{a.writeFileSync(`/usr/bin/${t.name}`,l)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t.stdout=Qf(t.stdout),t.stderr=Qf(t.stderr),t}async exec(t,n){let r=new Vr(this.limits,n?.signal,this.abortOnUnresolvedCommands),s;try{s=await this.execInScope(t,n,r,0,n?.signal,!1,!1)}catch(o){try{await r.close()}catch{}throw o}let i=s;try{await r.close()}catch{i={...s,stderr:`${s.stderr}bash: execution cleanup failed
805
+ `,exitCode:126}}return i.unresolvedCommands=r.unresolvedCommandNames,t.trim()?this.logResult(i):i}async execInScope(t,n,r,s,i,o=!1,a=!0){let l=f=>a?this.logResult(f):f,c=_r(i,n?.signal),u=n?{...n,signal:c.signal}:{signal:c.signal};try{if(r.assertExecDepth(s),Xs(t,this.limits.maxSourceBytes),!t.trim())return{stdout:"",stderr:"",exitCode:0,env:je(this.state.env,u.env)};this.logger?.info("exec",{command:t});let f=u.cwd??this.state.cwd,d,p=f;if(u.cwd)if(u.env&&"PWD"in u.env)d=u.env.PWD;else if(u.env&&!("PWD"in u.env))try{d=await this.fs.realpath(f),p=d}catch{d=f}else d=f;let h=u.replaceEnv?new Map:new Map(this.state.env);if(u.env)for(let[m,b]of Object.entries(u.env))h.set(m,b);d!==void 0&&h.set("PWD",d);let y={...this.state,env:h,arrays:u.replaceEnv?new Map:it(this.state.arrays),cwd:p,previousDir:u.env?.OLDPWD??this.state.previousDir,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable,groupStdin:dy(u.stdin,u.stdinKind,this.limits.maxInputBytes,this.limits.maxStringLength,r,o),signal:u.signal,extraArgs:u.args},E=t;u.rawScript||(E=wa(t));let S=this.defenseInDepthConfig?Te.getInstance(this.defenseInDepthConfig):null,g=S?.activate();try{let m=async()=>{let b=ot(E,{maxHeredocSize:this.limits.maxHeredocSize}),A;if(this.transformPlugins.length>0){let x=Object.create(null);for(let C of this.transformPlugins){let I=C.transform({ast:b,metadata:x});b=I.ast,I.metadata&&(x=ri(x,I.metadata))}A=x}let k={fs:this.fs,commands:this.commands,limits:this.limits,executionScope:r,exec:(x,C,I=!1)=>this.execInScope(x,C,r,s+1,u.signal,I),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn,coverage:this.coverageWriter,requireDefenseContext:S?.isEnabled()===!0,jsBootstrapCode:this.jsBootstrapCode,invokeTool:this.invokeToolFn},D=await new $r(k,y).executeScript(b);return A&&(D.metadata=A),l(D)};return g?await g.run(m):await m()}catch(m){if(m instanceof q)return l({stdout:m.stdout,stderr:m.stderr,exitCode:m.exitCode,internalOutputAccounting:m.internalOutputAccounting,env:je(this.state.env,u.env)});if(m instanceof Pe){if(s>0)throw m;return l({stdout:m.stdout,stderr:m.stderr,exitCode:m.exitCode,internalOutputAccounting:m.internalOutputAccounting,env:je(this.state.env,u.env)})}if(m instanceof st)return l({stdout:m.stdout,stderr:m.stderr,exitCode:m.exitCode,env:je(this.state.env,u.env)});if(m instanceof le)return l({stdout:m.stdout,stderr:m.stderr,exitCode:1,env:je(this.state.env,u.env)});if(m instanceof Ye)return l({stdout:m.stdout,stderr:m.stderr,exitCode:124,env:je(this.state.env,u.env)});if(m instanceof P)return l({stdout:m.stdout,stderr:qe(m.stderr),exitCode:P.EXIT_CODE,internalOutputAccounting:m.internalOutputAccounting,env:je(this.state.env,u.env)});if(m instanceof Or)return l({stdout:"",stderr:`bash: security violation: ${qe(m.message)}
806
+ `,exitCode:1,env:je(this.state.env,u.env)});if(m.name==="ParseException")return l({stdout:"",stderr:`bash: syntax error: ${qe(m.message)}
807
+ `,exitCode:2,env:je(this.state.env,u.env)});if(m instanceof Je)return l({stdout:"",stderr:`bash: ${qe(m.message)}
808
+ `,exitCode:2,env:je(this.state.env,u.env)});if(m instanceof RangeError)return l({stdout:"",stderr:`bash: ${qe(m.message)}
809
+ `,exitCode:1,env:je(this.state.env,u.env)});throw m}finally{g?.deactivate()}}catch(f){if(f instanceof Ye)return l({stdout:f.stdout,stderr:f.stderr,exitCode:124,env:je(this.state.env,u.env)});if(f instanceof P)return l({stdout:f.stdout,stderr:qe(f.stderr),exitCode:P.EXIT_CODE,internalOutputAccounting:f.internalOutputAccounting,env:je(this.state.env,u.env)});throw f}finally{c.cleanup()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,n){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),n)}getCwd(){return this.state.cwd}getEnv(){return jt(this.state.env)}registerTransformPlugin(t){this.transformPlugins.push(t)}transform(t){Xs(t,this.limits.maxSourceBytes);let n=wa(t),r=ot(n,{maxHeredocSize:this.limits.maxHeredocSize}),s=Object.create(null);for(let i of this.transformPlugins){let o=i.transform({ast:r,metadata:s});r=o.ast,o.metadata&&(s=ri(s,o.metadata))}return{script:Ol(r),ast:r,metadata:s}}async analyzeCommands(t){Xs(t,this.limits.maxSourceBytes);let n=ot(wa(t),{maxHeredocSize:this.limits.maxHeredocSize}),{commands:r,definedFunctions:s,definedAliases:i}=Ha(n),o=[];for(let a of r)s.has(a)||i.has(a)||await this.resolvesCommandForAnalysis(a)||o.push(a);return{commands:r,unresolved:o}}async resolvesCommandForAnalysis(t){if((ir.has(t)||vt.has(t))&&!Ua.has(t)||this.state.functions.has(t))return!0;let n=await qr({fs:this.fs,state:{...this.state,hashTable:new Map},commands:this.commands},t);return n!==null&&!("error"in n)}};function uy(e,t){let n=t;for(let r=0;r<e.length;r++){let s=e[r];if(n==="single")s==="'"&&(n="none");else if(n==="double")s==="\\"?r++:s==='"'&&(n="none");else if(s==="'")n="single";else if(s==='"')n="double";else if(s==="\\")r++;else if(s==="#"&&(r===0||/\s/.test(e[r-1])))break}return n}function wa(e){let t=e.split(`
810
+ `),n=[],r=[],s="none";for(let i=0;i<t.length;i++){let o=t[i];if(r.length>0){let u=r[r.length-1];if((u.stripTabs?o.replace(/^\t+/,""):o)===u.delimiter){n.push(o.trimStart()),r.pop();continue}n.push(o);continue}let a=s,l=a==="none"?o.trimStart():o;if(n.push(l),s=uy(o,a),a!=="none")continue;let c=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let u of l.matchAll(c)){let f=u[1]==="-",d=u[3];r.push({delimiter:d,stripTabs:f})}}return n.join(`
811
+ `)}var fy=new TextDecoder("utf-8",{fatal:!0});function Qf(e){if(!e)return e;let t=!1;for(let r=0;r<e.length;r++){let s=e.charCodeAt(r);if(s>255)return e;s>127&&(t=!0)}if(!t)return e;let n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);try{return fy.decode(n)}catch{return e}}function dy(e,t,n,r,s,i){if(e===void 0)return;let o=t==="bytes"?e.length:B(e);if(o>n||o>r)throw new P(`stdin size limit exceeded (${Math.min(n,r)} bytes)`,"string_length");return i||s.consumeInput(o,"stdin"),t==="bytes"?e:mn(e)}import*as ye from"node:fs";import*as Ie from"node:path";import*as Ve from"node:fs";import*as $e from"node:path";function Rr(e,t){let n=/^[A-Za-z]:[\\/]/.test(t)?$e.win32:$e.posix,r=n.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${n.sep}`)&&!n.isAbsolute(r)}function Nr(e,t){try{let n=Ve.realpathSync(e);return Rr(n,t)?n:null}catch(n){if(n.code==="ENOENT"){let r=$e.dirname(e);if(r===e)return null;let s=Nr(r,t);if(s===null)return null;try{if(Ve.lstatSync(e).isSymbolicLink()){let o=Ve.readlinkSync(e),a=$e.isAbsolute(o)?o:$e.resolve($e.dirname(e),o),l=Nr(a,t);return l===null?null:l}}catch{}return $e.join(s,$e.basename(e))}return null}}function Kf(e,t,n){let r=Nr(e,n);if(r===null)return null;let s=$e.resolve(e),i=s.slice(t.length),o=r.slice(n.length);if(i!==o)return null;try{if(Ve.lstatSync(s).isSymbolicLink())return null}catch{}return r}function Xf(e,t){if(!Ve.existsSync(e))throw new Error(`${t} root does not exist`);if(!Ve.statSync(e).isDirectory())throw new Error(`${t} root is not a directory`)}function Yf(e,t){if(!$e.isAbsolute(e))return{withinRoot:!0,relativePath:e};let n;try{n=Ve.realpathSync(e)}catch{n=$e.resolve(e)}return Rr(n,t)?{withinRoot:!0,relativePath:Aa(n.slice(t.length))||"/"}:{withinRoot:!1,safeName:$e.basename(e)}}function Jf(e,t,n,r){let s=e;if(s.path===void 0){for(let o of r)if(s.message?.includes(o))throw e}let i=s.code||"EIO";throw new N(i,`${n} '${t}'`)}async function St(e){return ed(await Ve.promises.lstat(e))}function Ea(e){return ed(Ve.lstatSync(e))}function ed(e){return process.platform==="win32"&&e.isDirectory()&&(e.mode=e.mode&-512|493),e}function Js(e){let t=e.content.byteLength;for(let n of e.appendChunks??[])t+=n.byteLength;return t}function rd(e){return Js(e)}function ti(e,t){if(!e.appendChunks||e.appendChunks.length===0)return e.content;let n=e.appendChunks.reduce((i,o)=>i+o.byteLength,e.content.byteLength);if(!Number.isSafeInteger(n))throw new N("EFBIG",`file too large, read '${t}'`);let r=new Uint8Array(n);r.set(e.content);let s=e.content.byteLength;for(let i of e.appendChunks)r.set(i,s),s+=i.byteLength;return e.content=r,e.appendChunks=void 0,r}function td(e){return!e||e.type!=="file"?0:Js(e)}function Dr(){return{type:"directory",children:new Map,changedAt:Date.now(),mode:pt,mtime:new Date}}function Ir(e){return e.split("/").filter(Boolean)}var ei=class e{maxMemoryBytes;rootNode=Dr();bytes=0;mutationSeq_=0;constructor(t){this.maxMemoryBytes=t}get root(){return this.rootNode}get retainedBytes(){return this.bytes}descend(t){let n=Ir(t),r=[this.rootNode],s=this.rootNode;for(let i=0;i<n.length;i++){let o=s.children.get(n[i]);if(o===void 0)return{kind:"missing",stack:r,missingAt:i};if(i===n.length-1)return{kind:"found",stack:r,node:o};if(o.type==="whiteout")return{kind:"blocked",stack:r,blockedAt:i};if(o.type!=="directory")return{kind:"notdir",stack:r,notdirAt:i};r.push(o),s=o}return{kind:"found",stack:[],node:this.rootNode}}ensureDirs(t,n){let r=this.rootNode,s="";for(let i of Ir(t)){s=`${s}/${i}`;let o=r.children.get(i);if(o===void 0)o=Dr(),r.children.set(i,o);else if(o.type==="whiteout")o=this.resurrectDir(r,i,s,o.changedAt??0,n);else if(o.type!=="directory")throw new N("ENOTDIR",`not a directory, mkdir '${t}'`);r=o}return r}resurrectDir(t,n,r,s,i){let o=Dr();t.children.set(n,o);let a=i?.(r);if(a)for(let l of a)o.children.has(l)||o.children.set(l,{type:"whiteout",changedAt:s});return o}attach(t,n){n.changedAt=Date.now();let r=Ir(t);if(r.length===0)throw new N("EINVAL",`cannot attach at root, attach '${t}'`);let s=this.parentDirOf(r,t),i=s.children.get(r[r.length-1]);if(i?.type==="directory"&&n.type!=="directory")throw new N("EISDIR",`cannot replace directory with ${n.type}, attach '${t}'`);if(i!==void 0&&n.type==="directory")throw new N("EEXIST",`cannot replace ${i.type} with directory, attach '${t}'`);let o=td(i),a=td(n);this.assertCapacity(a,o),s.children.set(r[r.length-1],n),this.bytes+=a-o}detach(t){let n=Ir(t);if(n.length===0)return;let r=this.descend(t);return r.kind!=="found"?void 0:(r.stack[r.stack.length-1].children.delete(n[n.length-1]),this.bytes-=e.subtreeBytes(r.node),r.node)}putWhiteout(t){let n=Ir(t);if(n.length===0)throw new N("EINVAL",`cannot whiteout the root, rm '${t}'`);let r=this.rootNode;for(let o=0;o<n.length-1;o++)r=this.ensureChildDir(r,n[o],t);let s=n[n.length-1],i=r.children.get(s);i?.type!=="whiteout"&&(this.bytes-=e.subtreeBytes(i),r.children.set(s,{type:"whiteout",changedAt:Date.now()}))}appendChunk(t,n){this.assertCapacity(n.byteLength),t.appendChunks||(t.appendChunks=[]),t.appendChunks.push(n),this.bytes+=n.byteLength,this.touch(t)}touch(t){t.seq=++this.mutationSeq_,t.changedAt=Date.now()}detachIfUnchanged(t,n,r){let s=this.descend(t);return s.kind!=="found"||s.node!==n||n.seq!==r||n.type==="directory"&&n.children.size>0?!1:(this.detach(t),!0)}*preOrder(){let t=[{path:"/",node:this.rootNode}];for(;t.length>0;){let n=t.pop();if(yield n,n.node.type==="directory"){let r=[...n.node.children.entries()];for(let s=r.length-1;s>=0;s--){let[i,o]=r[s];t.push({path:nd(n.path,i),node:o})}}}}*postOrder(){let t=[],n=[{path:"/",node:this.rootNode}];for(;n.length>0;){let r=n.pop();if(t.push(r),r.node.type==="directory")for(let[s,i]of r.node.children)n.push({path:nd(r.path,s),node:i})}for(let r=t.length-1;r>=0;r--)yield t[r]}clear(){this.rootNode=Dr(),this.bytes=0}static subtreeBytes(t){if(t===void 0)return 0;if(t.type==="file")return Js(t);if(t.type!=="directory")return 0;let n=0,r=[t];for(;r.length>0;){let s=r.pop();for(let i of s.children.values())i.type==="file"?n+=Js(i):i.type==="directory"&&r.push(i)}return n}parentDirOf(t,n){let r=this.rootNode;for(let s=0;s<t.length-1;s++){let i=r.children.get(t[s]);if(i?.type!=="directory")throw new N("ENOTDIR",`not a directory, attach '${n}'`);r=i}return r}ensureChildDir(t,n,r){let s=t.children.get(n);if(s===void 0||s.type==="whiteout")s=Dr(),t.children.set(n,s);else if(s.type!=="directory")throw new N("ENOTDIR",`not a directory, rm '${r}'`);return s}assertCapacity(t,n=0){if(!Number.isSafeInteger(t)||t<0||t>this.maxMemoryBytes-this.bytes+n)throw new N("ENOSPC",`overlay memory byte limit exceeded (${this.maxMemoryBytes} bytes)`)}};function nd(e,t){return e==="/"?`/${t}`:`${e}/${t}`}var py=["ELOOP","EFBIG","EPERM"],hy="/home/user/project",Yn=class{root;canonicalRoot;mountPoint;readOnly;maxFileReadSize;maxMemoryBytes;allowSymlinks;tree;nextMemoryIdentity=1;get rootDir(){return this.root}restamp(t,n,r="full"){let s=U(t),i=c=>{let u=this.tree.descend(c);u.kind==="found"&&(u.node.changedAt=n)},o=c=>{let u=this.tree.descend(c);if(u.kind==="found"){let f=u.node;(f.changedAt??0)>n&&(f.changedAt=n,f.mtime=new Date(n))}};r==="full"&&i(s);let a=s;for(;;){let c=a.lastIndexOf("/");if(c<=0)break;a=a.slice(0,c),o(a)}if(r==="ancestors")return;let l=[s];for(;l.length>0;){let c=l.pop(),u=this.tree.descend(c);if(!(u.kind!=="found"||u.node.type!=="directory"))for(let f of u.node.children.keys()){let d=`${c==="/"?"":c}/${f}`;o(d),l.push(d)}}}identityFor(t){return t.type==="symlink"?"":(t.identity||(t.identity=`overlay:${this.nextMemoryIdentity++}`),t.identity)}constructor(t){this.root=Ie.resolve(t.root);let n=t.mountPoint??hy;if(this.mountPoint=n==="/"?"/":n.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${n}`);if(this.readOnly=t.readOnly??!1,this.maxFileReadSize=t.maxFileReadSize??10485760,this.maxMemoryBytes=t.maxMemoryBytes??1024*1024*1024,!Number.isSafeInteger(this.maxMemoryBytes)||this.maxMemoryBytes<0)throw new Error("OverlayFs: invalid maxMemoryBytes");this.allowSymlinks=t.allowSymlinks??!1,Xf(this.root,"OverlayFs"),this.canonicalRoot=ye.realpathSync(this.root),this.tree=new ei(this.maxMemoryBytes),this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new N("EROFS",`read-only file system, ${t}`)}createMountPointDirs(){this.tree.ensureDirs(this.mountPoint)}getMountPoint(){return this.mountPoint}diff(){let t=[],n=[],r=[];for(let{path:i,node:o}of this.tree.preOrder()){let a=this.getRelativeToMount(i);if(!(a===null||a==="/")){if(o.type==="whiteout"){this.existsOnRealFs(i)&&(n.push(a),r.push(o.changedAt??0));continue}if(o.type==="file")if(o.metacopy){if(!this.existsOnRealFs(i))continue;t.push({path:a,nodeType:"file",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0,metadataOnly:!0})}else t.push({path:a,nodeType:"file",content:ti(o,i),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0});else o.type==="directory"?t.push({path:a,nodeType:"directory",content:new Uint8Array(0),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0}):t.push({path:a,nodeType:"symlink",content:new TextEncoder().encode(o.target),mode:o.mode,mtime:o.mtime,changedAt:o.changedAt??0})}}t.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0);let s=n.map((i,o)=>({path:i,changedAt:r[o]}));return s.sort((i,o)=>i.path<o.path?-1:i.path>o.path?1:0),{writes:t,deletions:s.map(i=>i.path),...s.length>0&&{deletionChangedAt:s.map(i=>i.changedAt)}}}async sync(){for(let{path:t,node:n}of this.tree.postOrder()){let r=this.getRelativeToMount(t);if(r===null||r==="/")continue;if(n.type==="whiteout"){this.existsOnRealFs(t)||this.tree.detach(t);continue}if(n.type==="directory"&&n.children.size>0)continue;let s=n.seq;await this.nodeMatchesDisk(t,n)&&this.tree.detachIfUnchanged(t,n,s)}}reset(){this.tree.clear(),this.createMountPointDirs()}drop(t){let n=t.map(r=>{let s=U(r);if(s==="/")throw new N("EINVAL",`invalid argument, drop '${r}'`);return this.mountPoint==="/"?s:`${this.mountPoint}${s}`});n.sort((r,s)=>s.length-r.length);for(let r of n){let s=this.tree.descend(r);if(s.kind!=="found")continue;let i=s.node;i.type==="directory"&&i.children.size>0||this.tree.detach(r)}}async lstatLower(t){let n=this.resolveRealPathParent_(this.toRealPath(t));if(!n)return null;try{return{canonical:n,stat:await St(n)}}catch{return null}}async nodeMatchesDisk(t,n){if(n.type==="directory")return(await this.lstatLower(t))?.stat.isDirectory()??!1;if(n.type==="symlink"){if(!this.allowSymlinks)return!1;let s=await this.lstatLower(t);if(!s?.stat.isSymbolicLink())return!1;try{let i=await ye.promises.readlink(s.canonical);return this.realTargetToVirtual(i)===n.target}catch{return!1}}if(n.metacopy){let s=await this.lstatLower(t);if(!s?.stat.isFile())return!1;let{stat:i}=s;return!(i.mtime.getTime()!==n.mtime.getTime()||process.platform!=="win32"&&(i.mode&4095)!==(n.mode&4095))}let r=this.resolveRealPath_(this.toRealPath(t));if(!r)return!1;try{let s=await St(r);if(!s.isFile())return!1;let i=ti(n,t);if(s.size!==i.byteLength)return!1;let o=this.allowSymlinks?ye.constants.O_RDONLY:ye.constants.O_RDONLY|ye.constants.O_NOFOLLOW,a=await ye.promises.open(r,o),l;try{l=new Uint8Array(await a.readFile())}finally{await a.close()}for(let c=0;c<l.byteLength;c++)if(l[c]!==i[c])return!1;return!0}catch{return!1}}mkdirSync(t,n){this.tree.ensureDirs(U(t),r=>this.lowerChildren(r))}writeFileSync(t,n){let r=U(t);this.ensureParentDirs(r);let s=n instanceof Uint8Array?n:new TextEncoder().encode(n);this.tree.attach(r,{type:"file",content:s,mode:qt,mtime:new Date})}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let n=U(t),r=this.getRelativeToMount(n);if(r===null)return null;let s=Ie.join(this.root,r),i=Ie.resolve(s);return Rr(i,this.root)?i:null}resolveRealPath_(t){return t?this.allowSymlinks?Nr(t,this.canonicalRoot):Kf(t,this.root,this.canonicalRoot):null}resolveRealPathParent_(t){if(!t)return null;let n=Ie.dirname(t),r=this.resolveRealPath_(n);return r===null?null:Ie.join(r,Ie.basename(t))}sanitizeError(t,n,r){Jf(t,n,r,py)}ensureParentDirs(t){let n=Rn(t);n!=="/"&&this.tree.ensureDirs(n,r=>this.lowerChildren(r))}lowerChildren(t){let n=this.resolveRealPath_(this.toRealPath(t));if(!n)return null;try{return ye.readdirSync(n)}catch{return null}}async existsInOverlay(t){let n=U(t),r=this.tree.descend(n);if(r.kind==="found")return r.node.type!=="whiteout";if(r.kind==="blocked"||r.kind==="notdir")return!1;let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)return!1;try{return await St(s),!0}catch{return!1}}async readFile(t,n){let r=await this.readFileBuffer(t),s=Gt(n);return _n(r,s)}async readFileBytes(t){let n=await this.readFileBuffer(t);return _n(n,"binary")}async readFileBuffer(t,n=new Set){X(t,"open");let r=U(t);if(n.has(r))throw new N("ELOOP",`too many levels of symbolic links, open '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new N("ENOENT",`no such file or directory, open '${t}'`);if(s.kind==="notdir")throw new N("ENOTDIR",`not a directory, open '${t}'`);if(s.kind==="found"){let i=s.node;if(i.type==="whiteout")throw new N("ENOENT",`no such file or directory, open '${t}'`);if(i.type==="symlink"){let a=this.resolveSymlink(r,i.target);return this.readFileBuffer(a,n)}if(i.type!=="file")throw new N("EISDIR",`illegal operation on a directory, read '${t}'`);if(!i.metacopy)return ti(i,t);let o=await this.readLowerFileBytes(r,t,n);if(process.platform==="win32")try{this.tree.attach(r,{type:"file",content:o,mode:i.mode,mtime:i.mtime})}catch(a){if(!yn(a,"ENOSPC"))throw a}return o}return this.readLowerFileBytes(r,t,n)}async readLowerFileBytes(t,n,r){let s=this.resolveRealPath_(this.toRealPath(t));if(!s)throw new N("ENOENT",`no such file or directory, open '${n}'`);try{let i=await St(s);if(i.isSymbolicLink()){if(!this.allowSymlinks)throw new N("ENOENT",`no such file or directory, open '${n}'`);let l=await ye.promises.readlink(s),c=this.realTargetToVirtual(l),u=this.resolveSymlink(t,c);return this.readFileBuffer(u,r)}if(i.isDirectory())throw new N("EISDIR",`illegal operation on a directory, read '${n}'`);if(this.maxFileReadSize>0&&i.size>this.maxFileReadSize)throw new N("EFBIG",`file too large, read '${n}' (${i.size} bytes, max ${this.maxFileReadSize})`);let o=this.allowSymlinks?ye.constants.O_RDONLY:ye.constants.O_RDONLY|ye.constants.O_NOFOLLOW,a=await ye.promises.open(s,o);try{let l=await a.readFile();return new Uint8Array(l)}finally{await a.close()}}catch(i){let o=i.code;if(o==="ENOENT")throw new N("ENOENT",`no such file or directory, open '${n}'`);if(o==="ELOOP")throw new N("ENOENT",`no such file or directory, open '${n}'`);this.sanitizeError(i,n,"open")}}async writeFile(t,n,r){X(t,"write"),this.assertWritable(`write '${t}'`);let s=U(t);this.ensureParentDirs(s);let i=Gt(r),o=On(n,i);this.tree.attach(s,{type:"file",content:o,mode:await this.inheritedMode(s),mtime:new Date})}async inheritedMode(t){let n=this.entryAt(t);if(n?.type==="file")return n.mode;if(n?.type==="directory")return qt;if(process.platform==="win32")return qt;try{let r=await this.stat(t);if(r.isFile)return r.mode}catch{}return qt}async appendFile(t,n,r){X(t,"append"),this.assertWritable(`append '${t}'`);let s=U(t),i=Gt(r),o=On(n,i),a=this.tree.descend(s);if(a.kind==="found"&&a.node.type==="file"){await this.appendToExisting_(s,a.node,o,t);return}if(a.kind==="blocked")throw new N("ENOENT",`no such file or directory, append '${t}'`);if(a.kind==="notdir")throw new N("ENOTDIR",`not a directory, append '${t}'`);let l;try{l=await this.readFileBuffer(s)}catch(f){if(!yn(f,"ENOENT"))throw f;l=new Uint8Array(0)}let c=await this.inheritedMode(s),u=this.tree.descend(s);if(u.kind==="found"&&u.node.type==="file"){await this.appendToExisting_(s,u.node,o,t);return}this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,appendChunks:[o],mode:c,mtime:new Date})}async appendToExisting_(t,n,r,s){if(n.metacopy){let i=await this.readLowerFileBytes(t,s,new Set),o=this.tree.descend(t);if(o.kind==="found"&&o.node.type==="file"&&!o.node.metacopy){this.tree.appendChunk(o.node,r),o.node.mtime=new Date;return}this.tree.attach(t,{type:"file",content:i,appendChunks:[r],mode:n.mode,mtime:new Date});return}this.tree.appendChunk(n,r),n.mtime=new Date}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,n=new Set){X(t,"stat");let r=U(t);if(n.has(r))throw new N("ELOOP",`too many levels of symbolic links, stat '${t}'`);n.add(r);let s=this.tree.descend(r);if(s.kind==="blocked")throw new N("ENOENT",`no such file or directory, stat '${t}'`);if(s.kind==="notdir")throw new N("ENOTDIR",`not a directory, stat '${t}'`);if(s.kind==="found"){let o=s.node;if(o.type==="whiteout")throw new N("ENOENT",`no such file or directory, stat '${t}'`);if(o.type==="symlink"){let a=this.resolveSymlink(r,o.target);return this.stat(a,n)}return this.memoryEntryStat(o)}let i=this.resolveRealPath_(this.toRealPath(r));if(!i)throw new N("ENOENT",`no such file or directory, stat '${t}'`);try{let o=await St(i);if(o.isSymbolicLink()){if(!this.allowSymlinks)throw new N("ENOENT",`no such file or directory, stat '${t}'`);let a=await ye.promises.readlink(i),l=this.realTargetToVirtual(a),c=this.resolveSymlink(r,l);return this.stat(c,n)}return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime,dev:o.dev,ino:o.ino}}catch(o){if(o.code==="ENOENT")throw new N("ENOENT",`no such file or directory, stat '${t}'`);this.sanitizeError(o,t,"stat")}}async lstat(t){X(t,"lstat");let n=U(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new N("ENOENT",`no such file or directory, lstat '${t}'`);if(r.kind==="notdir")throw new N("ENOTDIR",`not a directory, lstat '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new N("ENOENT",`no such file or directory, lstat '${t}'`);return this.memoryEntryStat(i)}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new N("ENOENT",`no such file or directory, lstat '${t}'`);try{let i=await St(s);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime,dev:i.dev,ino:i.ino}}catch(i){if(i.code==="ENOENT")throw new N("ENOENT",`no such file or directory, lstat '${t}'`);this.sanitizeError(i,t,"lstat")}}memoryEntryStat(t){if(t.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:t.mode,size:t.target.length,mtime:t.mtime};let n=0;return t.type==="file"&&(n=t.metacopy?t.lowerSize??0:rd(t)),{isFile:t.type==="file",isDirectory:t.type==="directory",isSymbolicLink:!1,mode:t.mode,size:n,mtime:t.mtime,identity:this.identityFor(t)}}resolveSymlink(t,n){return In(t,n)}realTargetToVirtual(t){let n=Yf(t,this.canonicalRoot);if(n.withinRoot){if(!Ie.isAbsolute(t))return t;let r=n.relativePath;return this.mountPoint==="/"?r:`${this.mountPoint}${r}`}return n.safeName}async mkdir(t,n){X(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let r=U(t);if(await this.existsInOverlay(r)){if(!n?.recursive)throw new N("EEXIST",`file already exists, mkdir '${t}'`);return}let i=Rn(r);if(i!=="/"&&!await this.existsInOverlay(i))if(n?.recursive)await this.mkdir(i,{recursive:!0});else throw new N("ENOENT",`no such file or directory, mkdir '${t}'`);this.tree.ensureDirs(r,o=>this.lowerChildren(o))}async readdirCore(t,n){let r=new Map,s=new Set,i=this.tree.descend(n);if(i.kind==="blocked")throw new N("ENOENT",`no such file or directory, scandir '${t}'`);if(i.kind==="notdir")throw new N("ENOTDIR",`not a directory, scandir '${t}'`);let o;if(i.kind==="found"){let l=i.node;if(l.type==="whiteout")throw new N("ENOENT",`no such file or directory, scandir '${t}'`);if(l.type!=="directory")throw new N("ENOTDIR",`not a directory, scandir '${t}'`);o=l;for(let[c,u]of l.children){if(u.type==="whiteout"){s.add(c);continue}r.set(c,{name:c,isFile:u.type==="file",isDirectory:u.type==="directory",isSymbolicLink:u.type==="symlink"})}}let a=this.resolveRealPath_(this.toRealPath(n));if(a)try{if(!this.allowSymlinks&&(await St(a)).isSymbolicLink()){if(!o)throw new N("ENOENT",`no such file or directory, scandir '${t}'`);return r}let l=await ye.promises.readdir(a,{withFileTypes:!0});for(let c of l)!s.has(c.name)&&!r.has(c.name)&&r.set(c.name,{name:c.name,isFile:c.isFile(),isDirectory:c.isDirectory(),isSymbolicLink:c.isSymbolicLink()})}catch(l){if(l.code==="ENOENT"){if(!o)throw new N("ENOENT",`no such file or directory, scandir '${t}'`)}else l.code!=="ENOTDIR"&&this.sanitizeError(l,t,"scandir")}return r}async resolveForReaddir(t,n=!1){let r=U(t),s=new Set,i=n;for(;;){let l=this.tree.descend(r);if(l.kind!=="found")break;let c=l.node;if(c.type!=="symlink")return{normalized:r,outsideOverlay:!1};if(s.has(r))throw new N("ELOOP",`too many levels of symbolic links, scandir '${t}'`);s.add(r),i=!0,r=this.resolveSymlink(r,c.target)}if(this.getRelativeToMount(r)===null)return{normalized:r,outsideOverlay:!0};let a=this.resolveRealPath_(this.toRealPath(r));if(!a)return{normalized:r,outsideOverlay:!0};try{if((await St(a)).isSymbolicLink()){if(!this.allowSymlinks)return{normalized:r,outsideOverlay:!0};let c=await ye.promises.readlink(a),u=this.realTargetToVirtual(c),f=this.resolveSymlink(r,u);return this.resolveForReaddir(f,!0)}return{normalized:r,outsideOverlay:!1}}catch{return i?{normalized:r,outsideOverlay:!0}:{normalized:r,outsideOverlay:!1}}}async readdir(t){X(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){X(t,"scandir");let{normalized:n,outsideOverlay:r}=await this.resolveForReaddir(t);if(r)return[];let s=await this.readdirCore(t,n);return Array.from(s.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,n){X(t,"rm"),this.assertWritable(`rm '${t}'`);let r=U(t);if(!await this.existsInOverlay(r)){if(n?.force)return;throw new N("ENOENT",`no such file or directory, rm '${t}'`)}let i=!1;try{(await this.stat(r)).isDirectory&&(i=(await this.readdir(r)).length>0)}catch{}if(i&&!n?.recursive)throw new N("ENOTEMPTY",`directory not empty, rm '${t}'`);this.existsOnRealFs(r)?this.tree.putWhiteout(r):this.tree.detach(r)}existsOnRealFs(t){let n=this.toRealPath(t),r=this.resolveRealPathParent_(n);if(!r)return!1;try{return Ea(r),!0}catch{return!1}}async cp(t,n,r){X(t,"cp"),X(n,"cp"),this.assertWritable(`cp '${n}'`);let s=U(t),i=U(n);if(!await this.existsInOverlay(s))throw new N("ENOENT",`no such file or directory, cp '${t}'`);let a=await this.stat(s);if(a.isFile){let l=await this.readFileBuffer(s);await this.writeFile(i,l)}else if(a.isDirectory){if(!r?.recursive)throw new N("EISDIR",`is a directory, cp '${t}'`);if(Lt(s,i))throw new N("EINVAL",`cannot copy '${t}' into itself, '${n}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(s);for(let c of l){let u=s==="/"?`/${c}`:`${s}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,r)}}}async mv(t,n){this.assertWritable(`mv '${n}'`),await this.cp(t,n,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,n){return Dn(t,n)}getAllPaths(){let t=new Set;for(let{path:n,node:r}of this.tree.preOrder())r.type!=="whiteout"&&t.add(n);return this.scanRealFs(this.mountPoint,t),Array.from(t)}scanRealFs(t,n){if(this.lowerHidden(t))return;let r=this.resolveRealPath_(this.toRealPath(t));if(r)try{let s=ye.readdirSync(r);for(let i of s){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.lowerHidden(o))continue;n.add(o);let a=Ie.join(r,i);Ea(a).isDirectory()&&this.scanRealFs(o,n)}}catch{}}lowerHidden(t){let n=this.tree.descend(t);switch(n.kind){case"blocked":case"notdir":return!0;case"found":return n.node.type!=="directory";default:return!1}}entryAt(t){let n=this.tree.descend(t);if(n.kind==="found"&&n.node.type!=="whiteout")return n.node}async chmod(t,n){X(t,"chmod"),this.assertWritable(`chmod '${t}'`);let r=U(t);if(!await this.existsInOverlay(r))throw new N("ENOENT",`no such file or directory, chmod '${t}'`);let i=this.entryAt(r);if(i){i.mode=n,this.tree.touch(i);return}let o=await this.stat(r);this.attachMetacopyShadow(r,o,n,o.isFile?o.mtime:new Date)}attachMetacopyShadow(t,n,r,s){this.ensureParentDirs(t),n.isFile?this.tree.attach(t,{type:"file",content:new Uint8Array(0),metacopy:!0,lowerSize:n.size,mode:r,mtime:s}):n.isDirectory&&this.tree.attach(t,{type:"directory",children:new Map,mode:r,mtime:s})}async symlink(t,n){if(!this.allowSymlinks)throw new N("EPERM",`operation not permitted, symlink '${n}'`);X(n,"symlink"),this.assertWritable(`symlink '${n}'`);let r=U(n);if(await this.existsInOverlay(r))throw new N("EEXIST",`file already exists, symlink '${n}'`);this.ensureParentDirs(r),this.tree.attach(r,{type:"symlink",target:t,mode:Br,mtime:new Date})}async link(t,n){X(t,"link"),X(n,"link"),this.assertWritable(`link '${n}'`);let r=U(t),s=U(n);if(!await this.existsInOverlay(r))throw new N("ENOENT",`no such file or directory, link '${t}'`);let o=await this.stat(r);if(!o.isFile)throw new N("EPERM",`operation not permitted, link '${t}'`);if(await this.existsInOverlay(s))throw new N("EEXIST",`file already exists, link '${n}'`);let l=await this.readFileBuffer(r);this.ensureParentDirs(s),this.tree.attach(s,{type:"file",content:l,mode:o.mode,mtime:new Date,identity:o.identity??`overlay:${this.nextMemoryIdentity++}`})}async readlink(t){X(t,"readlink");let n=U(t),r=this.tree.descend(n);if(r.kind==="blocked")throw new N("ENOENT",`no such file or directory, readlink '${t}'`);if(r.kind==="notdir")throw new N("ENOTDIR",`not a directory, readlink '${t}'`);if(r.kind==="found"){let i=r.node;if(i.type==="whiteout")throw new N("ENOENT",`no such file or directory, readlink '${t}'`);if(i.type!=="symlink")throw new N("EINVAL",`invalid argument, readlink '${t}'`);return i.target}let s=this.resolveRealPathParent_(this.toRealPath(n));if(!s)throw new N("ENOENT",`no such file or directory, readlink '${t}'`);try{let i=await ye.promises.readlink(s);if(!Ie.isAbsolute(i)){let o=Ie.resolve(Ie.dirname(s),i),a;try{a=ye.realpathSync(o)}catch{a=o}if(!Rr(a,this.canonicalRoot))return Ie.basename(i)}return this.realTargetToVirtual(i)}catch(i){if(i.code==="ENOENT")throw new N("ENOENT",`no such file or directory, readlink '${t}'`);if(i.code==="EINVAL")throw new N("EINVAL",`invalid argument, readlink '${t}'`);this.sanitizeError(i,t,"readlink")}}async realpath(t){X(t,"realpath");let n=U(t),r=new Set,s=l=>{let c=this.tree.descend(l);if(c.kind==="blocked"||c.kind==="found"&&c.node.type==="whiteout")throw new N("ENOENT",`no such file or directory, realpath '${t}'`);return c.kind==="found"?c.node:void 0},i=async l=>{let c=l==="/"?[]:l.slice(1).split("/"),u="";for(let f of c){if(u=`${u}/${f}`,r.has(u))throw new N("ELOOP",`too many levels of symbolic links, realpath '${t}'`);let d=s(u),p=0,h=tr;for(;d&&d.type==="symlink"&&p<h;){if(r.add(u),u=this.resolveSymlink(u,d.target),p++,r.has(u))throw new N("ELOOP",`too many levels of symbolic links, realpath '${t}'`);d=s(u)}if(p>=h)throw new N("ELOOP",`too many levels of symbolic links, realpath '${t}'`);if(!d){let y=this.toRealPath(u),E=this.resolveRealPath_(y);if(E)try{if((await St(E)).isSymbolicLink()){if(!this.allowSymlinks)throw new N("ENOENT",`no such file or directory, realpath '${t}'`);let g=await ye.promises.readlink(E),m=this.realTargetToVirtual(g);return r.add(u),u=this.resolveSymlink(u,m),i(u)}}catch(S){if(S.code==="ENOENT")throw new N("ENOENT",`no such file or directory, realpath '${t}'`);this.sanitizeError(S,t,"realpath")}else if(!this.allowSymlinks){let S=this.resolveRealPathParent_(y);if(S)try{if((await St(S)).isSymbolicLink())throw new N("ENOENT",`no such file or directory, realpath '${t}'`)}catch(g){if(yn(g,"ENOENT")||yn(g,"ELOOP"))throw new N("ENOENT",`no such file or directory, realpath '${t}'`);this.sanitizeError(g,t,"realpath")}}}}return u||"/"},o=await i(n);if(!await this.existsInOverlay(o))throw new N("ENOENT",`no such file or directory, realpath '${t}'`);return o}async utimes(t,n,r){X(t,"utimes"),this.assertWritable(`utimes '${t}'`);let s=U(t);if(!await this.existsInOverlay(s))throw new N("ENOENT",`no such file or directory, utimes '${t}'`);let o=this.entryAt(s);if(o){o.mtime=r,this.tree.touch(o);return}let a=await this.stat(s);this.attachMetacopyShadow(s,a,a.mode,r)}};function id(){console.log(`just-bash - A secure bash environment for AI agents
807
812
 
808
813
  Usage:
809
814
  just-bash [options] [script-file] [root]
@@ -854,5 +859,5 @@ Examples:
854
859
 
855
860
  # Allow write operations (writes stay in memory)
856
861
  just-bash -c 'echo test > /tmp/file.txt && cat /tmp/file.txt' --allow-write
857
- `)}function ny(){console.log("just-bash 1.0.0")}function ry(e){let t={root:process.cwd(),cwd:"/",cwdOverridden:!1,errexit:!1,allowWrite:!1,python:!1,javascript:!1,json:!1,help:!1,version:!1},n=0,r=[],s=!1;for(;n<e.length;){let o=e[n];if(o==="--"){r.push(...e.slice(n+1));break}else if(o==="-h"||o==="--help")t.help=!0,n++;else if(o==="-v"||o==="--version")t.version=!0,n++;else if(o==="-c")n+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[n+1],n+=2;else if(o==="-e"||o==="--errexit")t.errexit=!0,n++;else if(o==="--root")n+1>=e.length&&(console.error("Error: --root requires a path argument"),process.exit(1)),t.root=jf(e[n+1]),s=!0,n+=2;else if(o==="--cwd")n+1>=e.length&&(console.error("Error: --cwd requires a path argument"),process.exit(1)),t.cwd=e[n+1],t.cwdOverridden=!0,n+=2;else if(o==="--json")t.json=!0,n++;else if(o==="--allow-write")t.allowWrite=!0,n++;else if(o==="--python")t.python=!0,n++;else if(o==="--javascript")t.javascript=!0,n++;else if(o.startsWith("-"))if(o.length>2&&!o.startsWith("--")){let a=o.slice(1);for(let l of a)if(l==="e")t.errexit=!0;else if(l==="h")t.help=!0;else if(l==="v")t.version=!0;else if(l==="c"){n+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[n+1],n++;break}else console.error(`Error: Unknown option: -${l}`),process.exit(1);n++}else console.error(`Error: Unknown option: ${o}`),process.exit(1);else r.push(o),n++}let i=o=>{console.error(`Error: ${o}`),process.exit(1)};if(t.script&&r.length>0&&i("script file cannot be combined with -c"),r.length>2&&i("unexpected extra positional argument"),r.length>=1&&(t.scriptFile=r[0]),r.length===2){let o=jf(r[1]);s&&o!==t.root&&i("conflicting positional root and --root"),t.root=o}return t}function sy(e){if(!e||e==="/")return"/";let t=e.endsWith("/")&&e!=="/"?e.slice(0,-1):e;t.startsWith("/")||(t=`/${t}`);let n=t.split("/").filter(s=>s&&s!=="."),r=[];for(let s of n)s===".."?r.pop():r.push(s);return`/${r.join("/")}`||"/"}async function iy(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}async function oy(){let e=process.argv.slice(2),t=ry(e);t.help&&(Gf(),process.exit(0)),t.version&&(ny(),process.exit(0));let n;if(t.script)n=t.script;else if(t.scriptFile){let a=new Zn({root:t.root}),l=a.getMountPoint();try{let c=t.scriptFile.startsWith("/")?t.scriptFile:`${l}/${t.scriptFile}`;n=await a.readFile(c,"utf-8")}catch(c){console.error(`Error: Cannot read script file: ${t.scriptFile}`),console.error(ze(c instanceof Error?c.message:String(c))),process.exit(1)}}else process.stdin.isTTY?(Gf(),process.exit(1)):n=await iy();n.trim()||(t.json&&console.log(JSON.stringify({stdout:"",stderr:"",exitCode:0})),process.exit(0));let r=new Zn({root:t.root,readOnly:!t.allowWrite}),s=r.getMountPoint(),i=t.cwdOverridden?sy(t.cwd):s,o=new zs({fs:r,cwd:i,python:t.python,javascript:t.javascript});t.errexit&&(n=`set -e
858
- ${n}`);try{let a=await o.exec(n);t.json?console.log(JSON.stringify({stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode})):(a.stdout&&process.stdout.write(a.stdout),a.stderr&&process.stderr.write(a.stderr)),process.exit(a.exitCode)}catch(a){let l=ze(a instanceof Error?a.message:String(a));t.json?console.log(JSON.stringify({stdout:"",stderr:l,exitCode:1})):console.error(l),process.exit(1)}}oy().catch(e=>{console.error("Fatal error:",ze(e instanceof Error?e.message:String(e))),process.exit(1)});
862
+ `)}function my(){console.log("just-bash 1.0.0")}function yy(e){let t={root:process.cwd(),cwd:"/",cwdOverridden:!1,errexit:!1,allowWrite:!1,python:!1,javascript:!1,json:!1,help:!1,version:!1},n=0,r=[],s=!1;for(;n<e.length;){let o=e[n];if(o==="--"){r.push(...e.slice(n+1));break}else if(o==="-h"||o==="--help")t.help=!0,n++;else if(o==="-v"||o==="--version")t.version=!0,n++;else if(o==="-c")n+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[n+1],n+=2;else if(o==="-e"||o==="--errexit")t.errexit=!0,n++;else if(o==="--root")n+1>=e.length&&(console.error("Error: --root requires a path argument"),process.exit(1)),t.root=sd(e[n+1]),s=!0,n+=2;else if(o==="--cwd")n+1>=e.length&&(console.error("Error: --cwd requires a path argument"),process.exit(1)),t.cwd=e[n+1],t.cwdOverridden=!0,n+=2;else if(o==="--json")t.json=!0,n++;else if(o==="--allow-write")t.allowWrite=!0,n++;else if(o==="--python")t.python=!0,n++;else if(o==="--javascript")t.javascript=!0,n++;else if(o.startsWith("-"))if(o.length>2&&!o.startsWith("--")){let a=o.slice(1);for(let l of a)if(l==="e")t.errexit=!0;else if(l==="h")t.help=!0;else if(l==="v")t.version=!0;else if(l==="c"){n+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[n+1],n++;break}else console.error(`Error: Unknown option: -${l}`),process.exit(1);n++}else console.error(`Error: Unknown option: ${o}`),process.exit(1);else r.push(o),n++}let i=o=>{console.error(`Error: ${o}`),process.exit(1)};if(t.script&&r.length>0&&i("script file cannot be combined with -c"),r.length>2&&i("unexpected extra positional argument"),r.length>=1&&(t.scriptFile=r[0]),r.length===2){let o=sd(r[1]);s&&o!==t.root&&i("conflicting positional root and --root"),t.root=o}return t}function gy(e){if(!e||e==="/")return"/";let t=e.endsWith("/")&&e!=="/"?e.slice(0,-1):e;t.startsWith("/")||(t=`/${t}`);let n=t.split("/").filter(s=>s&&s!=="."),r=[];for(let s of n)s===".."?r.pop():r.push(s);return`/${r.join("/")}`||"/"}async function wy(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}async function Ey(){let e=process.argv.slice(2),t=yy(e);t.help&&(id(),process.exit(0)),t.version&&(my(),process.exit(0));let n;if(t.script)n=t.script;else if(t.scriptFile){let a=new Yn({root:t.root}),l=a.getMountPoint();try{let c=t.scriptFile.startsWith("/")?t.scriptFile:`${l}/${t.scriptFile}`;n=await a.readFile(c,"utf-8")}catch(c){console.error(`Error: Cannot read script file: ${t.scriptFile}`),console.error(qe(c instanceof Error?c.message:String(c))),process.exit(1)}}else process.stdin.isTTY?(id(),process.exit(1)):n=await wy();n.trim()||(t.json&&console.log(JSON.stringify({stdout:"",stderr:"",exitCode:0})),process.exit(0));let r=new Yn({root:t.root,readOnly:!t.allowWrite}),s=r.getMountPoint(),i=t.cwdOverridden?gy(t.cwd):s,o=new Ys({fs:r,cwd:i,python:t.python,javascript:t.javascript});t.errexit&&(n=`set -e
863
+ ${n}`);try{let a=await o.exec(n);t.json?console.log(JSON.stringify({stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode})):(a.stdout&&process.stdout.write(a.stdout),a.stderr&&process.stderr.write(a.stderr)),process.exit(a.exitCode)}catch(a){let l=qe(a instanceof Error?a.message:String(a));t.json?console.log(JSON.stringify({stdout:"",stderr:l,exitCode:1})):console.error(l),process.exit(1)}}Ey().catch(e=>{console.error("Fatal error:",qe(e instanceof Error?e.message:String(e))),process.exit(1)});