just-bash 2.9.1 → 2.9.2

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.
@@ -1,76 +1,76 @@
1
- import{B as dr,C as hr,D as ie,E as Le,F as K,G as ge,H as yt,I as pr,J as D,K as mr,L as yr,M as be,N as es,O as gt,P as V,a as rr,b as nr,c as ir,d as pt,e as Z,f as W,g as we,h as Q,i as ve,j as xe,k as Xt,l as mt,m as or,n as Kt,o as ar,p as de,q as Pe,r as lr,s as cr,t as Yt,u as Qt,v as Te,w as ur,x as fr,y as ye,z as Jt}from"./chunks/chunk-2AON5K3E.js";import{a as Oe,b as me}from"./chunks/chunk-OJDRYQWQ.js";import{a as le,b as ce,c as ne,d as fe,e as tr,f as z,g as Re,h as ft,i as dt,j as sr,k as re,l as Ne,m as ht,n as pe}from"./chunks/chunk-PSW6BMXW.js";import{a as tt}from"./chunks/chunk-YNYSPYQ5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as Ae}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var Fe=[{name:"echo",load:async()=>(await import("./chunks/echo-6S7WE7XB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-GPKR7D6K.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-4U5V2VHK.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-PUJHEPXS.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-SF2UE4KB.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DU6C7ZEO.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TDTEBHHI.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-MJFRIDNT.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-NJSENVKC.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-JPBZPM4O.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-Y7YB677N.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-ODWUR7E6.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-S4NVAMC4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EM4O3U4P.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-SA7P5NJ7.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-52LRAWXT.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-VDPK3LVS.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-IOLJTP7U.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-JNKRPEYR.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-4K5HXNXE.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-YNEKUV4T.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-LT2PE47K.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-XBP4SJA3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXQM7FFF.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-NVKWEAZF.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-QAP6Y75J.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UJSEBPIQ.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-FKUV5GH5.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KWQGFZH5.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-6CFXIPYZ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-VSTNOVF5.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-I7A2VXFD.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-LRU5XCFP.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-LGSGJHV5.js")).split},{name:"column",load:async()=>(await import("./chunks/column-R6OLMEUA.js")).column},{name:"join",load:async()=>(await import("./chunks/join-X3QYPZUA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-4KHTWVWB.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-WTVSUXL3.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-CFA5ZIGT.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-YPJLCQYA.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-UFVZH4SS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-T4JUAAB2.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-M3AXY56V.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-M3AXY56V.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-TMBGOQO6.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4FRA6OJ7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-VT2LJIDX.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-2LEQ2SZJ.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-2JFR3HGT.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ELUS3RW7.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-PN3CMG7K.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-AK4QE4WR.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-X3X3N6IE.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-EGF4KTWV.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-5VRIVQYP.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YSFDPKPV.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-TGZPGVOK.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-37LOTSQP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-I4J5BPZA.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-APPTAFMI.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-ZK6GQVSL.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-UD3E73G5.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-GF77XMJD.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-2X4JLF4W.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-NWR32CGF.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-YUDAIS32.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-3FPDPLWJ.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Fe.push({name:"tar",load:async()=>(await import("./chunks/tar-5V4PGBFL.js")).tarCommand}),Fe.push({name:"yq",load:async()=>(await import("./chunks/yq-6RVO6I5Q.js")).yqCommand}),Fe.push({name:"xan",load:async()=>(await import("./chunks/xan-I4Y5DD3C.js")).xanCommand}),Fe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-5QVZOGER.js")).sqlite3Command}));var wt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(wt.push({name:"python3",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).python3Command}),wt.push({name:"python",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).pythonCommand}));var wr=[{name:"curl",load:async()=>(await import("./chunks/curl-QDCXHQMX.js")).curlCommand}],gr=new Map;function ts(e){return{name:e.name,async execute(t,s){let r=gr.get(e.name);return r||(r=await e.load(),gr.set(e.name,r)),r.execute(t,s)}}}function Qn(){return Fe.map(e=>e.name)}function Jn(){return wr.map(e=>e.name)}function vr(e){return(e?Fe.filter(s=>e.includes(s.name)):Fe).map(ts)}function br(){return wr.map(ts)}function ei(){return wt.map(e=>e.name)}function Er(){return wt.map(ts)}function $r(e){return"load"in e&&typeof e.load=="function"}function ti(e,t){return{name:e,execute:t}}function Sr(e){let t=null;return{name:e.name,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}var si=new TextEncoder,ri=new TextDecoder;function _e(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)s[r/2]=parseInt(e.slice(r,r+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):si.encode(e)}function Ve(e,t){return t==="base64"?btoa(String.fromCharCode(...e)):t==="hex"?Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join(""):t==="binary"||t==="latin1"?String.fromCharCode(...e):ri.decode(e)}function he(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var vt=new TextEncoder;function ni(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function te(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Ce=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))ni(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.lastIndexOf("/");return r===0?"/":s.slice(0,r)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,r,n){te(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=he(r),a=_e(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t){te(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);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}'`);return r.content instanceof Uint8Array?r.content:vt.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){te(t,"append");let n=this.normalizePath(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=he(r),a=_e(s,o);if(i?.type==="file"){let l=i.content instanceof Uint8Array?i.content:vt.encode(i.content),c=new Uint8Array(l.length+a.length);c.set(l),c.set(a,l.length),this.data.set(n,{type:"file",content:c,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){te(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){te(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);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};let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=this.dirname(t);return this.normalizePath(r==="/"?`/${s}`:`${r}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=this.resolveSymlink(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=this.resolveSymlink(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){te(t,"mkdir");let r=this.normalizePath(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let n=this.dirname(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{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){te(t,"scandir");let s=this.normalizePath(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=this.resolveSymlink(s,r.target),r=this.data.get(s)}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=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&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,s){te(t,"rm");let r=this.normalizePath(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=r==="/"?`/${o}`:`${r}/${o}`;await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){te(t,"cp"),te(s,"cp");let n=this.normalizePath(t),i=this.normalizePath(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")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}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=n==="/"?`/${l}`:`${n}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,r)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}async chmod(t,s){te(t,"chmod");let r=this.normalizePath(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){te(s,"symlink");let r=this.normalizePath(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){te(t,"link"),te(s,"link");let r=this.normalizePath(t),n=this.normalizePath(s),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(n))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){te(t,"readlink");let s=this.normalizePath(t),r=this.data.get(s);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){te(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,r){te(t,"utimes");let n=this.normalizePath(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function ii(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function oi(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 ai(e){e.mkdirSync("/dev",{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 li(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${rr}
1
+ import{B as dr,C as hr,D as ie,E as Le,F as K,G as ge,H as yt,I as pr,J as D,K as mr,L as yr,M as be,N as es,O as gt,P as V,a as rr,b as nr,c as ir,d as pt,e as Z,f as W,g as we,h as Q,i as ve,j as xe,k as Xt,l as mt,m as or,n as Kt,o as ar,p as de,q as Pe,r as lr,s as cr,t as Yt,u as Qt,v as Te,w as ur,x as fr,y as ye,z as Jt}from"./chunks/chunk-2AON5K3E.js";import{a as Oe,b as me}from"./chunks/chunk-OJDRYQWQ.js";import{a as le,b as ce,c as ne,d as fe,e as tr,f as z,g as Re,h as ft,i as dt,j as sr,k as re,l as Ne,m as ht,n as pe}from"./chunks/chunk-PSW6BMXW.js";import{a as tt}from"./chunks/chunk-YNYSPYQ5.js";import"./chunks/chunk-NUFRM6SI.js";import{a as Ae}from"./chunks/chunk-44UOCSGV.js";import"./chunks/chunk-DXB73IDG.js";var Fe=[{name:"echo",load:async()=>(await import("./chunks/echo-6S7WE7XB.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-GPKR7D6K.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-4U5V2VHK.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-PUJHEPXS.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-SF2UE4KB.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-DU6C7ZEO.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-TDTEBHHI.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-MJFRIDNT.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-NJSENVKC.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-JPBZPM4O.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-Y7YB677N.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-ODWUR7E6.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-S4NVAMC4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-EM4O3U4P.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-SA7P5NJ7.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-52LRAWXT.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-VDPK3LVS.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-IOLJTP7U.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-UTH3KDWL.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-JNKRPEYR.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-4K5HXNXE.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-YNEKUV4T.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-LT2PE47K.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-XBP4SJA3.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-AXQM7FFF.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-NVKWEAZF.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-QAP6Y75J.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-UJSEBPIQ.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-FKUV5GH5.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-KWQGFZH5.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-6CFXIPYZ.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-VSTNOVF5.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-I7A2VXFD.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-LRU5XCFP.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-LGSGJHV5.js")).split},{name:"column",load:async()=>(await import("./chunks/column-R6OLMEUA.js")).column},{name:"join",load:async()=>(await import("./chunks/join-X3QYPZUA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-4KHTWVWB.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-WTVSUXL3.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-CFA5ZIGT.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-YPJLCQYA.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-UFVZH4SS.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-T4JUAAB2.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-M3AXY56V.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-M3AXY56V.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-YGOORMWI.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-TMBGOQO6.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-4FRA6OJ7.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-CNJ54NE6.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-VT2LJIDX.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-BYWM5OPC.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-GMMYKAEP.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-2JFR3HGT.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ELUS3RW7.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-PN3CMG7K.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-AK4QE4WR.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-X3X3N6IE.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-EGF4KTWV.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-5VRIVQYP.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-YSFDPKPV.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-TGZPGVOK.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-37LOTSQP.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-I4J5BPZA.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-APPTAFMI.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-ZK6GQVSL.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-UD3E73G5.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-GF77XMJD.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-2X4JLF4W.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-NWR32CGF.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-YUDAIS32.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-3FPDPLWJ.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-4P4KGYT5.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Fe.push({name:"tar",load:async()=>(await import("./chunks/tar-5V4PGBFL.js")).tarCommand}),Fe.push({name:"yq",load:async()=>(await import("./chunks/yq-5WHXPM6R.js")).yqCommand}),Fe.push({name:"xan",load:async()=>(await import("./chunks/xan-DYADHWWG.js")).xanCommand}),Fe.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-DK5YHTWU.js")).sqlite3Command}));var wt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(wt.push({name:"python3",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).python3Command}),wt.push({name:"python",load:async()=>(await import("./chunks/python3-SKZGHYDO.js")).pythonCommand}));var wr=[{name:"curl",load:async()=>(await import("./chunks/curl-QDCXHQMX.js")).curlCommand}],gr=new Map;function ts(e){return{name:e.name,async execute(t,s){let r=gr.get(e.name);return r||(r=await e.load(),gr.set(e.name,r)),r.execute(t,s)}}}function Qn(){return Fe.map(e=>e.name)}function Jn(){return wr.map(e=>e.name)}function vr(e){return(e?Fe.filter(s=>e.includes(s.name)):Fe).map(ts)}function br(){return wr.map(ts)}function ei(){return wt.map(e=>e.name)}function Er(){return wt.map(ts)}function $r(e){return"load"in e&&typeof e.load=="function"}function ti(e,t){return{name:e,execute:t}}function Sr(e){let t=null;return{name:e.name,async execute(s,r){return t||(t=await e.load()),t.execute(s,r)}}}var si=new TextEncoder,ri=new TextDecoder;function _e(e,t){if(e instanceof Uint8Array)return e;if(t==="base64")return Uint8Array.from(atob(e),s=>s.charCodeAt(0));if(t==="hex"){let s=new Uint8Array(e.length/2);for(let r=0;r<e.length;r+=2)s[r/2]=parseInt(e.slice(r,r+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):si.encode(e)}function Ve(e,t){return t==="base64"?btoa(String.fromCharCode(...e)):t==="hex"?Array.from(e).map(s=>s.toString(16).padStart(2,"0")).join(""):t==="binary"||t==="latin1"?String.fromCharCode(...e):ri.decode(e)}function he(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var vt=new TextEncoder;function ni(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function te(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Ce=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,r]of Object.entries(t))ni(r)?this.writeFileSync(s,r.content,void 0,{mode:r.mode,mtime:r.mtime}):this.writeFileSync(s,r)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let r=s.split("/").filter(i=>i&&i!=="."),n=[];for(let i of r)i===".."?n.pop():n.push(i);return`/${n.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.lastIndexOf("/");return r===0?"/":s.slice(0,r)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.data.has(s)||(this.ensureParentDirs(s),this.data.set(s,{type:"directory",mode:493,mtime:new Date})))}writeFileSync(t,s,r,n){te(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=he(r),a=_e(s,o);this.data.set(i,{type:"file",content:a,mode:n?.mode??420,mtime:n?.mtime??new Date})}async readFile(t,s){let r=await this.readFileBuffer(t),n=he(s);return Ve(r,n)}async readFileBuffer(t){te(t,"open");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);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}'`);return r.content instanceof Uint8Array?r.content:vt.encode(r.content)}async writeFile(t,s,r){this.writeFileSync(t,s,r)}async appendFile(t,s,r){te(t,"append");let n=this.normalizePath(t),i=this.data.get(n);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=he(r),a=_e(s,o);if(i?.type==="file"){let l=i.content instanceof Uint8Array?i.content:vt.encode(i.content),c=new Uint8Array(l.length+a.length);c.set(l),c.set(a,l.length),this.data.set(n,{type:"file",content:c,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,r)}async exists(t){if(t.includes("\0"))return!1;try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){te(t,"stat");let s=this.resolvePathWithSymlinks(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}async lstat(t){te(t,"lstat");let s=this.resolveIntermediateSymlinks(t),r=this.data.get(s);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};let n=0;return r.type==="file"&&r.content&&(r.content instanceof Uint8Array?n=r.content.length:n=vt.encode(r.content).length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:n,mtime:r.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=this.dirname(t);return this.normalizePath(r==="/"?`/${s}`:`${r}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/");if(r.length<=1)return s;let n="",i=new Set;for(let o=0;o<r.length-1;o++){let a=r[o];n=`${n}/${a}`;let l=this.data.get(n),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(n),n=this.resolveSymlink(n,l.target),l=this.data.get(n),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${n}/${r[r.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let r=s.slice(1).split("/"),n="",i=new Set;for(let o of r){n=`${n}/${o}`;let a=this.data.get(n),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(n),n=this.resolveSymlink(n,a.target),a=this.data.get(n),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return n}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){te(t,"mkdir");let r=this.normalizePath(t);if(this.data.has(r)){if(this.data.get(r)?.type==="file")throw new Error(`EEXIST: file already exists, mkdir '${t}'`);if(!s?.recursive)throw new Error(`EEXIST: directory already exists, mkdir '${t}'`);return}let n=this.dirname(r);if(n!=="/"&&!this.data.has(n))if(s?.recursive)this.mkdirSync(n,{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){te(t,"scandir");let s=this.normalizePath(t),r=this.data.get(s);if(!r)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Set;for(;r&&r.type==="symlink";){if(n.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);n.add(s),s=this.resolveSymlink(s,r.target),r=this.data.get(s)}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=s==="/"?"/":`${s}/`,o=new Map;for(let[a,l]of this.data.entries())if(a!==s&&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,s){te(t,"rm");let r=this.normalizePath(t),n=this.data.get(r);if(!n){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(n.type==="directory"){let i=await this.readdir(r);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=r==="/"?`/${o}`:`${r}/${o}`;await this.rm(a,s)}}}this.data.delete(r)}async cp(t,s,r){te(t,"cp"),te(s,"cp");let n=this.normalizePath(t),i=this.normalizePath(s),o=this.data.get(n);if(!o)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(o.type==="file")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}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(n);for(let l of a){let c=n==="/"?`/${l}`:`${n}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,r)}}}async mv(t,s){await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}getAllPaths(){return Array.from(this.data.keys())}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let r=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(r)}async chmod(t,s){te(t,"chmod");let r=this.normalizePath(t),n=this.data.get(r);if(!n)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);n.mode=s}async symlink(t,s){te(s,"symlink");let r=this.normalizePath(s);if(this.data.has(r))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){te(t,"link"),te(s,"link");let r=this.normalizePath(t),n=this.normalizePath(s),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(n))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){te(t,"readlink");let s=this.normalizePath(t),r=this.data.get(s);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){te(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,r){te(t,"utimes");let n=this.normalizePath(t),i=this.resolvePathWithSymlinks(n),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=r}};function ii(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function oi(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 ai(e){e.mkdirSync("/dev",{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 li(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${rr}
2
2
  `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
3
- `),e.writeFileSync("/proc/self/status",nr()),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 Ar(e,t){ii(e)&&(oi(e,t),ai(e),li(e))}var ci=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ui=["braceexpand","hashall","interactive-comments"];function ss(e){let t=[],s=[...ui.map(r=>({name:r,enabled:!0})),...ci.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function Be(e){e.state.env.set("SHELLOPTS",ss(e.state.options))}var fi=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function rs(e){let t=[];for(let s of fi)e[s]&&t.push(s);return t.join(":")}function ns(e){e.state.env.set("BASHOPTS",rs(e.state.shoptOptions))}var di="BASH_ALIAS_";function Pr(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function _r(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Cr(e,t){return e.env.get(`${di}${t}`)}function is(e,t,s){if(!t.name||!Pr(t.name))return t;let r=_r(t.name);if(!r)return t;let n=Cr(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new W,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=Nr(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof pt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return kr(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return kr(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(Pr(f)){let d=_r(f);if(d&&Cr(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=is(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function kr(e,t){let s=t;for(let o of e.args){let a=Nr(o);s+=` ${a}`}let r=new W,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function Nr(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(r=>r.type==="Literal"?r.value:`$${r.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function Or(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(a||l)&&(i.push(a),a="",l=!1):h&&(a+=h)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=mt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await be(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await D(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function xr(e,t){let s=-1,r=-1,n=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let b=g.value.indexOf("+=");if(b!==-1){let k=g.value.slice(0,b);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)){s=p,r=b,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(k)){s=p,r=b,n=!0;break}}let E=g.value.indexOf("=");if(E!==-1&&(E===0||g.value[E-1]!=="+")){let k=g.value.slice(0,E);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(k)){s=p,r=E;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let p of i)f+=await D(e,{type:"Word",parts:[p]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await D(e,d):"";return`${f}${n?"+=":"="}${h}`}var hi=["tar","yq","xan","sqlite3","python3","python"];function Tr(e){return hi.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function S(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function P(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function ke(e,t,s="",r=""){throw new re(e,t,s,r)}function os(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ne;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
3
+ `),e.writeFileSync("/proc/self/status",nr()),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 Ar(e,t){ii(e)&&(oi(e,t),ai(e),li(e))}var ci=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ui=["braceexpand","hashall","interactive-comments"];function ss(e){let t=[],s=[...ui.map(r=>({name:r,enabled:!0})),...ci.map(r=>({name:r,enabled:e[r]}))].sort((r,n)=>r.name.localeCompare(n.name));for(let r of s)r.enabled&&t.push(r.name);return t.join(":")}function Be(e){e.state.env.set("SHELLOPTS",ss(e.state.options))}var fi=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function rs(e){let t=[];for(let s of fi)e[s]&&t.push(s);return t.join(":")}function ns(e){e.state.env.set("BASHOPTS",rs(e.state.shoptOptions))}var di="BASH_ALIAS_";function Pr(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function _r(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function Cr(e,t){return e.env.get(`${di}${t}`)}function is(e,t,s){if(!t.name||!Pr(t.name))return t;let r=_r(t.name);if(!r)return t;let n=Cr(e,r);if(!n||s.has(r))return t;try{s.add(r);let i=new W,o=n,a=n.endsWith(" ");if(!a)for(let f of t.args){let d=Nr(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof pt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return kr(t,n);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return kr(t,n);let u={...c,assignments:[...t.assignments,...c.assignments],redirections:[...c.redirections,...t.redirections],line:t.line};if(a&&t.args.length>0&&(u={...u,args:[...u.args,...t.args]},u.args.length>0)){let f=u.args[0];if(Pr(f)){let d=_r(f);if(d&&Cr(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=is(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(r),i}}function kr(e,t){let s=t;for(let o of e.args){let a=Nr(o);s+=` ${a}`}let r=new W,n=r.parseWordFromString("eval",!1,!1),i=r.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:n,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function Nr(e){let t="";for(let s of e.parts)switch(s.type){case"Literal":t+=s.value.replace(/([\s"'$`\\*?[\]{}()<>|&;#!])/g,"\\$1");break;case"SingleQuoted":t+=`'${s.value}'`;break;case"DoubleQuoted":t+=`"${s.parts.map(r=>r.type==="Literal"?r.value:`$${r.type}`).join("")}"`;break;case"ParameterExpansion":t+=`\${${s.parameter}}`;break;case"CommandSubstitution":t+="$(...)";break;case"ArithmeticExpansion":t+=`$((${s.expression}))`;break;case"Glob":t+=s.pattern;break;default:break}return t}async function Or(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),r=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!r||!s.endsWith(")"))return null;let n=r[1],i=[],o=!1,a="",l=!1;for(let u of t.parts)if(u.type==="Literal"){let f=u.value;if(!o){let d=f.indexOf("=(");d!==-1&&(o=!0,f=f.slice(d+2))}if(o){f.endsWith(")")&&(f=f.slice(0,-1));let d=f.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(a||l)&&(i.push(a),a="",l=!1):h&&(a+=h)}}else if(o)if(u.type==="BraceExpansion")if(/^\[.+\]=/.test(a))a+=mt({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await be(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await D(e,{type:"Word",parts:[u]});a+=f}(a||l)&&i.push(a);let c=i.map(u=>/^\[.+\]=/.test(u)?u:u===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(u)&&!u.startsWith("'")&&!u.startsWith('"')?`'${u.replace(/'/g,"'\\''")}'`:u);return`${n}=(${c.join(" ")})`}async function xr(e,t){let s=-1,r=-1,n=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let S=g.value.indexOf("+=");if(S!==-1){let C=g.value.slice(0,S);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(C)){s=p,r=S,n=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(C)){s=p,r=S,n=!0;break}}let v=g.value.indexOf("=");if(v!==-1&&(v===0||g.value[v-1]!=="+")){let C=g.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(C)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(C)){s=p,r=v;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),o=t.parts[s];if(o.type!=="Literal")return null;let a=n?2:1,l=o.value.slice(0,r),c=o.value.slice(r+a),u=t.parts.slice(s+1),f="";for(let p of i)f+=await D(e,{type:"Word",parts:[p]});f+=l;let d={type:"Word",parts:c!==""?[{type:"Literal",value:c},...u]:u},h=d.parts.length>0?await D(e,d):"";return`${f}${n?"+=":"="}${h}`}var hi=["tar","yq","xan","sqlite3","python3","python"];function Tr(e){return hi.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function F(e=""){return{stdout:e,stderr:"",exitCode:0}}function A(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function _(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function q(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function ke(e,t,s="",r=""){throw new re(e,t,s,r)}function os(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ne;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
4
4
  `);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new z(128,"",`bash: break: ${t[0]}: numeric argument required
5
- `);s=r}throw new le(s)}async function as(e,t){let s,r=!1,n=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")n=!1,i++;else if(t[i]==="-P")n=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,r=!0):s=o[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(h=>h);for(let h of d){let m=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(m)).isDirectory){s=m,r=!0;break}}catch{}}}}let l=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).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 S(`bash: cd: ${s}: Not a directory
6
- `)}catch{return S(`bash: cd: ${s}: No such file or directory
5
+ `);s=r}throw new le(s)}async function as(e,t){let s,r=!1,n=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")n=!1,i++;else if(t[i]==="-P")n=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let o=t.slice(i);if(o.length===0||o[0]==="~"?s=e.state.env.get("HOME")||"/":o[0]==="-"?(s=e.state.previousDir,r=!0):s=o[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let f=e.state.env.get("CDPATH");if(f){let d=f.split(":").filter(h=>h);for(let h of d){let m=h.startsWith("/")?`${h}/${s}`:`${e.state.cwd}/${h}/${s}`;try{if((await e.fs.stat(m)).isDirectory){s=m,r=!0;break}}catch{}}}}let l=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).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 A(`bash: cd: ${s}: Not a directory
6
+ `)}catch{return A(`bash: cd: ${s}: No such file or directory
7
7
  `)}}let u=c||"/";if(n)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),F(r?`${u}
8
8
  `:"")}function ls(e,t){return e.fs.resolvePath(e.state.cwd,t)}var pi=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function bt(e){return pi.includes(e)}async function Et(e,t,s){let r=ls(e,s);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"].some(i=>r===i||r.endsWith(i));case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(r);default:return!1}}var mi=["-nt","-ot","-ef"];function $t(e){return mi.includes(e)}async function St(e,t,s,r){let n=ls(e,s),i=ls(e,r);switch(t){case"-nt":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(n),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(n)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,n),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var yi=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function At(e){return yi.has(e)}function Pt(e,t,s){switch(e){case"-eq":return t===s;case"-ne":return t!==s;case"-lt":return t<s;case"-le":return t<=s;case"-gt":return t>s;case"-ge":return t>=s}}function st(e){return e==="="||e==="=="||e==="!="}function _t(e,t,s,r=!1,n=!1,i=!1){if(r){let a=je(t,s,n,i);return e==="!="?!a:a}if(n){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var gi=new Set(["-z","-n"]);function Ct(e){return gi.has(e)}function kt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function Nt(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let r=s[1],n=s[2];if(e.state.associativeArrays?.has(r)){let a=n;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)||""),e.state.env.has(`${r}_${a}`)}let o;try{let a=new W,l=Z(a,n);o=await V(e,l.expression)}catch{if(/^-?\d+$/.test(n))o=Number.parseInt(n,10);else{let a=e.state.env.get(n);o=a?Number.parseInt(a,10):0}}if(o<0){let a=Q(e,r),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
9
9
  `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${r}: bad array subscript
10
- `,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?xe(e,t).length>0:Q(e,t).length>0}async function De(e,t){switch(t.type){case"CondBinary":{let s=await D(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!=="=~"),n;if(t.operator==="=~")if(r){let i=await D(e,t.right);n=hr(i)}else n=await mr(e,t.right);else st(t.operator)&&!r?n=await yr(e,t.right):n=await D(e,t.right);if(st(t.operator)){let i=e.state.shoptOptions.nocasematch;return _t(t.operator,s,n,!r,i,!0)}if(At(t.operator))return Pt(t.operator,await Ir(e,s),await Ir(e,n));if($t(t.operator))return St(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=Ei(n),l=tt(o,i?"i":"").match(s);if(ve(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<n;case">":return s>n;default:return!1}}case"CondUnary":{let s=await D(e,t.operand);return bt(t.operator)?Et(e,t.operator,s):Ct(t.operator)?kt(t.operator,s):t.operator==="-v"?await Nt(e,s):t.operator==="-o"?us(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await D(e,t.operand.expression.word)})`!=="":!await De(e,t.operand);case"CondAnd":return await De(e,t.left)?await De(e,t.right):!1;case"CondOr":return await De(e,t.left)?!0:await De(e,t.right);case"CondGroup":return await De(e,t.expression);case"CondWord":return await D(e,t.word)!=="";default:return!1}}async function rt(e,t){if(t.length===0)return P("","",1);if(t.length===1)return q(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?S(`test: '(' without matching ')'
11
- `,2):bt(r)?q(await Et(e,r,n)):Ct(r)?q(kt(r,n)):r==="!"?q(!n):r==="-v"?q(await Nt(e,n)):r==="-o"?q(us(e,n)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?S(`test: ${r}: unary operator expected
12
- `,2):P("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if(st(n))return q(_t(n,r,i));if(At(n)){let o=Ot(r),a=Ot(i);return!o.valid||!a.valid?P("","",2):q(Pt(n,o.value,a.value))}if($t(n))return q(await St(e,n,r,i));switch(n){case"-a":return q(r!==""&&i!=="");case"-o":return q(r!==""||i!=="");case">":return q(r>i);case"<":return q(r<i)}if(r==="!"){let o=await rt(e,[n,i]);return P("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return q(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await rt(e,t.slice(1));return P("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return rt(e,[t[1],t[2]])}let s=await Lr(e,t,0);return s.pos<t.length?S(`test: too many arguments
10
+ `,!1}return e.state.env.has(`${r}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?xe(e,t).length>0:Q(e,t).length>0}async function De(e,t){switch(t.type){case"CondBinary":{let s=await D(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!=="=~"),n;if(t.operator==="=~")if(r){let i=await D(e,t.right);n=hr(i)}else n=await mr(e,t.right);else st(t.operator)&&!r?n=await yr(e,t.right):n=await D(e,t.right);if(st(t.operator)){let i=e.state.shoptOptions.nocasematch;return _t(t.operator,s,n,!r,i,!0)}if(At(t.operator))return Pt(t.operator,await Ir(e,s),await Ir(e,n));if($t(t.operator))return St(e,t.operator,s,n);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=Ei(n),l=tt(o,i?"i":"").match(s);if(ve(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<n;case">":return s>n;default:return!1}}case"CondUnary":{let s=await D(e,t.operand);return bt(t.operator)?Et(e,t.operator,s):Ct(t.operator)?kt(t.operator,s):t.operator==="-v"?await Nt(e,s):t.operator==="-o"?us(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await D(e,t.operand.expression.word)})`!=="":!await De(e,t.operand);case"CondAnd":return await De(e,t.left)?await De(e,t.right):!1;case"CondOr":return await De(e,t.left)?!0:await De(e,t.right);case"CondGroup":return await De(e,t.expression);case"CondWord":return await D(e,t.word)!=="";default:return!1}}async function rt(e,t){if(t.length===0)return _("","",1);if(t.length===1)return q(!!t[0]);if(t.length===2){let r=t[0],n=t[1];return r==="("?A(`test: '(' without matching ')'
11
+ `,2):bt(r)?q(await Et(e,r,n)):Ct(r)?q(kt(r,n)):r==="!"?q(!n):r==="-v"?q(await Nt(e,n)):r==="-o"?q(us(e,n)):r==="="||r==="=="||r==="!="||r==="<"||r===">"||r==="-eq"||r==="-ne"||r==="-lt"||r==="-le"||r==="-gt"||r==="-ge"||r==="-nt"||r==="-ot"||r==="-ef"?A(`test: ${r}: unary operator expected
12
+ `,2):_("","",1)}if(t.length===3){let r=t[0],n=t[1],i=t[2];if(st(n))return q(_t(n,r,i));if(At(n)){let o=Ot(r),a=Ot(i);return!o.valid||!a.valid?_("","",2):q(Pt(n,o.value,a.value))}if($t(n))return q(await St(e,n,r,i));switch(n){case"-a":return q(r!==""&&i!=="");case"-o":return q(r!==""||i!=="");case">":return q(r>i);case"<":return q(r<i)}if(r==="!"){let o=await rt(e,[n,i]);return _("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(r==="("&&i===")")return q(n!=="")}if(t.length===4){if(t[0]==="!"){let r=await rt(e,t.slice(1));return _("",r.stderr,r.exitCode===0?1:r.exitCode===1?0:r.exitCode)}if(t[0]==="("&&t[3]===")")return rt(e,[t[1],t[2]])}let s=await Lr(e,t,0);return s.pos<t.length?A(`test: too many arguments
13
13
  `,2):q(s.value)}async function Lr(e,t,s){return wi(e,t,s)}async function wi(e,t,s){let{value:r,pos:n}=await Dr(e,t,s);for(;t[n]==="-o";){let i=await Dr(e,t,n+1);r=r||i.value,n=i.pos}return{value:r,pos:n}}async function Dr(e,t,s){let{value:r,pos:n}=await cs(e,t,s);for(;t[n]==="-a";){let i=await cs(e,t,n+1);r=r&&i.value,n=i.pos}return{value:r,pos:n}}async function cs(e,t,s){if(t[s]==="!"){let{value:r,pos:n}=await cs(e,t,s+1);return{value:!r,pos:n}}return vi(e,t,s)}async function vi(e,t,s){let r=t[s];if(r==="("){let{value:i,pos:o}=await Lr(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let n=t[s+1];if(st(n)){let i=r,o=t[s+2]??"";return{value:_t(n,i,o),pos:s+3}}if(At(n)){let i=Ot(r),o=Ot(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:Pt(n,i.value,o.value),pos:s+3}}if($t(n)){let i=r,o=t[s+2]??"";return{value:await St(e,n,i,o),pos:s+3}}if(bt(r)){let i=t[s+1]??"";return{value:await Et(e,r,i),pos:s+2}}if(Ct(r)){let i=t[s+1]??"";return{value:kt(r,i),pos:s+2}}if(r==="-v"){let i=t[s+1]??"";return{value:await Nt(e,i),pos:s+2}}if(r==="-o"){let i=t[s+1]??"";return{value:us(e,i),pos:s+2}}return{value:r!==void 0&&r!=="",pos:s+1}}function je(e,t,s=!1,r=!1){let n=`^${Fr(t,r)}$`;return tt(n,s?"is":"s").test(e)}function Fr(e,t){let s="";for(let r=0;r<e.length;r++){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=Mr(e,r+1);if(i!==-1){let o=e.slice(r+2,i),a=Wr(o),l=a.map(u=>Fr(u,t)),c=l.length>0?l.join("|"):"(?:)";if(n==="@")s+=`(?:${c})`;else if(n==="*")s+=`(?:${c})*`;else if(n==="+")s+=`(?:${c})+`;else if(n==="?")s+=`(?:${c})?`;else if(n==="!")if(i<e.length-1){let f=a.map(h=>zr(h,t));if(f.every(h=>h!==null)&&f.every(h=>h===f[0])&&f[0]!==null){let h=f[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${c})).{${h}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${c})).)*?`}else s+=`(?!(?:${c})$).*`;r=i;continue}}if(n==="\\")if(r+1<e.length){let i=e[r+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,r++}else s+="\\\\";else if(n==="*")s+=".*";else if(n==="?")s+=".";else if(n==="["){let i=e.indexOf("]",r+1);i!==-1?(s+=e.slice(r,i+1),r=i):s+="\\["}else/[\\^$.|+(){}]/.test(n)?s+=`\\${n}`:s+=n}return s}function Mr(e,t){let s=1,r=t+1;for(;r<e.length&&s>0;){let n=e[r];if(n==="\\"){r+=2;continue}if(n==="(")s++;else if(n===")"&&(s--,s===0))return r;r++}return-1}function Wr(e){let t=[],s="",r=0,n=0;for(;n<e.length;){let i=e[n];if(i==="\\"){s+=i,n+1<e.length?(s+=e[n+1],n+=2):n++;continue}i==="("?(r++,s+=i):i===")"?(r--,s+=i):i==="|"&&r===0?(t.push(s),s=""):s+=i,n++}return t.push(s),t}function zr(e,t){let s=0,r=0;for(;r<e.length;){let n=e[r];if(t&&(n==="@"||n==="*"||n==="+"||n==="?"||n==="!")&&r+1<e.length&&e[r+1]==="("){let i=Mr(e,r+1);if(i!==-1){if(n==="@"){let o=e.slice(r+2,i),l=Wr(o).map(c=>zr(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],r=i+1;continue}return null}return null}}if(n==="*")return null;if(n==="?"){s+=1,r++;continue}if(n==="["){let i=e.indexOf("]",r+1);if(i!==-1){s+=1,r=i+1;continue}s+=1,r++;continue}if(n==="\\"){s+=1,r+=2;continue}s+=1,r++}return s}function us(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 Ir(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 Rr(t);try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{return Rr(t)}}function bi(e,t){let s=0;for(let r of e){let n;if(r>="0"&&r<="9")n=r.charCodeAt(0)-48;else if(r>="a"&&r<="z")n=r.charCodeAt(0)-97+10;else if(r>="A"&&r<="Z")n=r.charCodeAt(0)-65+36;else if(r==="@")n=62;else if(r==="_")n=63;else return Number.NaN;if(n>=t)return Number.NaN;s=s*t+n}return s}function Rr(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 s,r=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(r){let n=Number.parseInt(r[1],10);n>=2&&n<=64?s=bi(r[2],n):s=0}else/^0[xX][0-9a-fA-F]+$/.test(e)?s=Number.parseInt(e,16):/^0[0-7]+$/.test(e)?s=Number.parseInt(e,8):s=Number.parseInt(e,10);return Number.isNaN(s)&&(s=0),t?-s:s}function Ot(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 s=Number.parseInt(e,10);return Number.isNaN(s)?{value:0,valid:!1}:{value:t?-s:s,valid:!0}}function Ei(e){let t="",s=0;for(;s<e.length;)if(e[s]==="\\"&&s+1<e.length)t+=e[s]+e[s+1],s+=2;else if(e[s]==="["){let r=$i(e,s);t+=r.converted,s=r.endIndex}else t+=e[s],s++;return t}function $i(e,t){let s=t+1,r="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(r+="^",s++);let n=!1;s<e.length&&e[s]==="]"&&(n=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let o="",a=!1;for(;s<e.length;){let l=e[s];if(l==="]"){a=!0,s++;break}if(l==="["&&s+1<e.length&&e[s+1]===":"){let c=e.indexOf(":]",s+2);if(c!==-1){let u=e.slice(s+2,c);o+=Si(u),s=c+2;continue}}if(l==="["&&s+1<e.length){let c=e[s+1];if(c==="."||c==="="){let u=`${c}]`,f=e.indexOf(u,s+2);if(f!==-1){let d=e.slice(s+2,f);o+=d,s=f+2;continue}}}if(l==="\\"&&s+1<e.length){o+=l+e[s+1],s+=2;continue}o+=l,s++}return a?(n&&(r+="\\]"),i&&(r+="\\["),r+=o,r+="]",{converted:r,endIndex:s}):{converted:"\\[",endIndex:t+1}}function Si(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 Ee(e){let t=[],s="",r=!1,n=!1,i=!1,o=!1;for(let a of e){if(i){s+=a,i=!1,o=!0;continue}if(a==="\\"){i=!0;continue}if(a==="'"&&!n){r||(o=!0),r=!r;continue}if(a==='"'&&!r){n||(o=!0),n=!n;continue}if((a===" "||a===" "||a===`
14
14
  `)&&!r&&!n){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function xt(e){let t=[],s=0;for(;s<e.length;){for(;s<e.length&&/\s/.test(e[s]);)s++;if(s>=e.length)break;if(e[s]!=="["){s++;continue}s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)r+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)n+=e[s],s++;t.push([r,n])}return t}function Vr(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Ee(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let r=e.indexOf("=");return{name:e.slice(0,r),isArray:!1,value:e.slice(r+1)}}return{name:e,isArray:!1}}async function Ai(e,t){try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Br(e,t,s={}){let{name:r,isArray:n,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=K(e,r);if(u)return u}if(n&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${r}_${u}`,i[u]);e.state.env.set(`${r}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await Ai(e,a);e.state.env.set(`${r}_${u}`,o);let f=parseInt(e.state.env.get(`${r}__length`)??"0",10);u>=f&&e.state.env.set(`${r}__length`,String(u+1))}else o!==void 0&&e.state.env.set(r,o);return l&&ie(e,r),null}function Ie(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function He(e,t){return e.state.localVarDepth?.get(t)}function Tt(e,t){e.state.localVarDepth?.delete(t)}function jr(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let r=e.state.localVarStack.get(t)||[];r.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,r)}function Dt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Hr(e,t){if(e.state.localVarStack)for(let[s,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(s)}}var fs=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Ur(e){return fs.has(e)}var ds=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),nt=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"]);async function Me(e,t,s,r){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
15
15
  `;if(r.checkNoclobber&&e.state.options.noclobber&&!r.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
16
16
  `}catch{}return null}function Y(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return"utf8";return"binary"}function Pi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}async function qr(e,t){let s=new Map;for(let r=0;r<t.length;r++){let n=t[r];if(n.target.type==="HereDoc")continue;if(n.operator===">&"||n.operator==="<&"){if(es(e,n.target))return{targets:s,error:`bash: $@: ambiguous redirect
17
17
  `};s.set(r,await D(e,n.target))}else{let o=await gt(e,n.target);if("error"in o)return{targets:s,error:o.error};s.set(r,o.target)}}return{targets:s}}function _i(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function It(e,t){for(let s of t){if(!s.fdVariable)continue;if(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),(s.operator===">&"||s.operator==="<&")&&s.target.type==="Word"&&await D(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let o=Number.parseInt(i,10);Number.isNaN(o)||e.state.fileDescriptors.delete(o)}continue}let r=_i(e);if(e.state.env.set(s.fdVariable,String(r)),s.target.type==="Word"){let n=await D(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(n,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&e.state.fileDescriptors.set(r,o);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,n);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(r,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(r,`${n}
18
- `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,n),o=await e.fs.readFile(i);e.state.fileDescriptors.set(r,o)}catch{return P("",`bash: ${n}: No such file or directory
19
- `,1)}}}return null}async function $e(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let r=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!r)continue;let n;if(r){if(n=await D(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await gt(e,s.target);if("error"in a)return P("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";try{let a=await e.fs.stat(i);if(a.isDirectory)return P("",`bash: ${n}: Is a directory
20
- `,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&n!=="/dev/null")return P("",`bash: ${n}: cannot overwrite existing file
21
- `,1)}catch{}if(n!=="/dev/null"&&n!=="/dev/stdout"&&n!=="/dev/stderr"&&n!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),n==="/dev/full")return P("",`bash: /dev/full: No space left on device
18
+ `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,n),o=await e.fs.readFile(i);e.state.fileDescriptors.set(r,o)}catch{return _("",`bash: ${n}: No such file or directory
19
+ `,1)}}}return null}async function $e(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let r=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!r)continue;let n;if(r){if(n=await D(e,s.target),n==="-"||!Number.isNaN(Number.parseInt(n,10))||s.fd!=null)continue}else{let a=await gt(e,s.target);if("error"in a)return _("",a.error,1);n=a.target}let i=e.fs.resolvePath(e.state.cwd,n),o=s.operator===">|";try{let a=await e.fs.stat(i);if(a.isDirectory)return _("",`bash: ${n}: Is a directory
20
+ `,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&n!=="/dev/null")return _("",`bash: ${n}: cannot overwrite existing file
21
+ `,1)}catch{}if(n!=="/dev/null"&&n!=="/dev/stdout"&&n!=="/dev/stderr"&&n!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),n==="/dev/full")return _("",`bash: /dev/full: No space left on device
22
22
  `,1)}return null}async function j(e,t,s,r){let{stdout:n,stderr:i,exitCode:o}=t;for(let c=0;c<s.length;c++){let u=s[c];if(u.target.type==="HereDoc")continue;let f,d=r?.get(c);if(d!==void 0)f=d;else if(u.operator===">&"||u.operator==="<&"){if(es(e,u.target)){i+=`bash: $@: ambiguous redirect
23
23
  `,o=1,n="";continue}f=await D(e,u.target)}else{let m=await gt(e,u.target);if("error"in m){i+=m.error,o=1,n="";continue}f=m.target}if(!u.fdVariable)switch(u.operator){case">":case">|":{let h=u.fd??1,m=u.operator===">|";if(h===1){if(f==="/dev/stdout")break;if(f==="/dev/stderr"){i+=n,n="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
24
24
  `,o=1,n="";break}let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0,isClobber:m});if(g){i+=g,o=1,n="";break}await e.fs.writeFile(p,n,Y(n)),n=""}else if(h===2){if(f==="/dev/stderr")break;if(f==="/dev/stdout"){n+=i,i="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
25
25
  `,o=1;break}if(f==="/dev/null")i="";else{let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0,isClobber:m});if(g){i+=g,o=1;break}await e.fs.writeFile(p,i,Y(i)),i=""}}break}case">>":{let h=u.fd??1;if(h===1){if(f==="/dev/stdout")break;if(f==="/dev/stderr"){i+=n,n="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
26
26
  `,o=1,n="";break}let m=e.fs.resolvePath(e.state.cwd,f),p=await Me(e,m,f,{});if(p){i+=p,o=1,n="";break}await e.fs.appendFile(m,n,Y(n)),n=""}else if(h===2){if(f==="/dev/stderr")break;if(f==="/dev/stdout"){n+=i,i="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
27
27
  `,o=1;break}let m=e.fs.resolvePath(e.state.cwd,f),p=await Me(e,m,f,{});if(p){i+=p,o=1;break}await e.fs.appendFile(m,i,Y(i)),i=""}break}case">&":case"<&":{let h=u.fd??1;if(f==="-")break;if(f.endsWith("-")){let m=f.slice(0,-1),p=Number.parseInt(m,10);if(!Number.isNaN(p)){let g=e.state.fileDescriptors?.get(p);g!==void 0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(h,g),p>=3&&e.state.fileDescriptors?.delete(p)):p===1||p===2?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(h,`__dupout__:${p}`)):p===0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(h,`__dupin__:${p}`)):p>=3&&(i+=`bash: ${p}: Bad file descriptor
28
- `,o=1)}break}if(f==="2"||f==="&2")h===1&&(i+=n,n="");else if(f==="1"||f==="&1")n+=i,i="";else{let m=Number.parseInt(f,10);if(Number.isNaN(m)){if(u.operator===">&"){let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0});if(g){i=g,o=1,n="";break}if(u.fd==null){let b=n+i;await e.fs.writeFile(p,b,Y(b)),n="",i=""}else h===1?(await e.fs.writeFile(p,n,Y(n)),n=""):h===2&&(await e.fs.writeFile(p,i,Y(i)),i="")}}else{let p=e.state.fileDescriptors?.get(m);if(p?.startsWith("__file__:")){let g=p.slice(9);h===1?(await e.fs.appendFile(g,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(g,i,Y(i)),i="")}else if(p?.startsWith("__rw__:")){let g=Pi(p);g&&(h===1?(await e.fs.appendFile(g.path,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(g.path,i,Y(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=n,n="");else{let b=e.state.fileDescriptors?.get(g);if(b?.startsWith("__file__:")){let E=b.slice(9);h===1?(await e.fs.appendFile(E,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(E,i,Y(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
28
+ `,o=1)}break}if(f==="2"||f==="&2")h===1&&(i+=n,n="");else if(f==="1"||f==="&1")n+=i,i="";else{let m=Number.parseInt(f,10);if(Number.isNaN(m)){if(u.operator===">&"){let p=e.fs.resolvePath(e.state.cwd,f),g=await Me(e,p,f,{checkNoclobber:!0});if(g){i=g,o=1,n="";break}if(u.fd==null){let S=n+i;await e.fs.writeFile(p,S,Y(S)),n="",i=""}else h===1?(await e.fs.writeFile(p,n,Y(n)),n=""):h===2&&(await e.fs.writeFile(p,i,Y(i)),i="")}}else{let p=e.state.fileDescriptors?.get(m);if(p?.startsWith("__file__:")){let g=p.slice(9);h===1?(await e.fs.appendFile(g,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(g,i,Y(i)),i="")}else if(p?.startsWith("__rw__:")){let g=Pi(p);g&&(h===1?(await e.fs.appendFile(g.path,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(g.path,i,Y(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=n,n="");else{let S=e.state.fileDescriptors?.get(g);if(S?.startsWith("__file__:")){let v=S.slice(9);h===1?(await e.fs.appendFile(v,n,Y(n)),n=""):h===2&&(await e.fs.appendFile(v,i,Y(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
29
29
  `,o=1,n=""):m>=3&&(i+=`bash: ${m}: Bad file descriptor
30
30
  `,o=1,n="")}}break}case"&>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
31
31
  `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Me(e,h,f,{checkNoclobber:!0});if(m){i=m,o=1,n="";break}let p=n+i;await e.fs.writeFile(h,p,Y(p)),n="",i="";break}case"&>>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
32
- `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Me(e,h,f,{});if(m){i=m,o=1,n="";break}let p=n+i;await e.fs.appendFile(h,p,Y(p)),n="",i="";break}}}let a=e.state.fileDescriptors?.get(1);if(a){if(a==="__dupout__:2")i+=n,n="";else if(a.startsWith("__file__:")){let c=a.slice(9);await e.fs.appendFile(c,n,Y(n)),n=""}else if(a.startsWith("__file_append__:")){let c=a.slice(16);await e.fs.appendFile(c,n,Y(n)),n=""}}let l=e.state.fileDescriptors?.get(2);if(l){if(l==="__dupout__:1")n+=i,i="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,i,Y(i)),i=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,i,Y(i)),i=""}}return P(n,i,o)}function Zr(e,t){if(e.state.options.posix&&fs.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
32
+ `,o=1,n="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Me(e,h,f,{});if(m){i=m,o=1,n="";break}let p=n+i;await e.fs.appendFile(h,p,Y(p)),n="",i="";break}}}let a=e.state.fileDescriptors?.get(1);if(a){if(a==="__dupout__:2")i+=n,n="";else if(a.startsWith("__file__:")){let c=a.slice(9);await e.fs.appendFile(c,n,Y(n)),n=""}else if(a.startsWith("__file_append__:")){let c=a.slice(16);await e.fs.appendFile(c,n,Y(n)),n=""}}let l=e.state.fileDescriptors?.get(2);if(l){if(l==="__dupout__:1")n+=i,i="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,i,Y(i)),i=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,i,Y(i)),i=""}}return _(n,i,o)}function Zr(e,t){if(e.state.options.posix&&fs.has(t.name)){let r=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
33
33
  `;throw new z(2,"",r)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function Ci(e,t){let s="";for(let r of t)if((r.operator==="<<"||r.operator==="<<-")&&r.target.type==="HereDoc"){let n=r.target,i=await D(e,n.content);n.stripTabs&&(i=i.split(`
34
34
  `).map(a=>a.replace(/^\t+/,"")).join(`
35
35
  `)),(r.fd??0)===0&&(s=i)}else if(r.operator==="<<<"&&r.target.type==="Word")s=`${await D(e,r.target)}
36
- `;else if(r.operator==="<"&&r.target.type==="Word"){let n=await D(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function Rt(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,ke(`${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(n??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let c=0;c<s.length;c++)i.set(String(c+1),e.state.env.get(String(c+1))),e.state.env.set(String(c+1),s[c]);i.set("@",e.state.env.get("@")),i.set("#",e.state.env.get("#")),e.state.env.set("@",s.join(" ")),e.state.env.set("#",String(s.length));let o=()=>{let c=e.state.localScopes.length-1,u=e.state.localScopes.pop();if(u)for(let[f,d]of u)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(Hr(e,c),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===c&&e.state.fullyUnsetLocals.delete(f);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let f=e.state.localExportedVars.pop();if(f)for(let d of f)e.state.exportedVars?.delete(d)}for(let[f,d]of i)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:a,error:l}=await qr(e,t.redirections);if(l)return o(),P("",l,1);try{let c=await Ci(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),j(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ne){let u=P(c.stdout,c.stderr,c.exitCode);return j(e,u,t.redirections,a)}throw c}}var Xr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],ps=[".",":","[","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"],ki=["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"],Ni=ps;async function ms(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,h=[],m=["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 y=0;y<t.length;y++){let w=t[y];if(w==="-v")s.push("variable");else if(w==="-e")s.push("export");else if(w==="-f")s.push("file");else if(w==="-d")s.push("directory");else if(w==="-k")s.push("keyword");else if(w==="-A"){if(y++,y>=t.length)return S(`compgen: -A: option requires an argument
37
- `,2);let v=t[y];if(!m.includes(v))return S(`compgen: ${v}: invalid action name
38
- `,2);s.push(v)}else if(w==="-W"){if(y++,y>=t.length)return S(`compgen: -W: option requires an argument
39
- `,2);r=t[y]}else if(w==="-P"){if(y++,y>=t.length)return S(`compgen: -P: option requires an argument
40
- `,2);n=t[y]}else if(w==="-S"){if(y++,y>=t.length)return S(`compgen: -S: option requires an argument
41
- `,2);i=t[y]}else if(w==="-o"){if(y++,y>=t.length)return S(`compgen: -o: option requires an argument
42
- `,2);let v=t[y];if(v==="plusdirs")a=!0;else if(v==="dirnames")l=!0;else if(v==="default")c=!0;else if(!(v==="filenames"||v==="nospace"||v==="bashdefault"||v==="noquote"))return S(`compgen: ${v}: invalid option name
43
- `,2)}else if(w==="-F"){if(y++,y>=t.length)return S(`compgen: -F: option requires an argument
44
- `,2);f=t[y]}else if(w==="-C"){if(y++,y>=t.length)return S(`compgen: -C: option requires an argument
45
- `,2);d=t[y]}else if(w==="-X"){if(y++,y>=t.length)return S(`compgen: -X: option requires an argument
46
- `,2);u=t[y]}else if(w==="-G"){if(y++,y>=t.length)return S(`compgen: -G: option requires an argument
47
- `,2)}else if(w==="--"){h.push(...t.slice(y+1));break}else w.startsWith("-")||h.push(w)}o=h[0]??null;let p=[];if(l){let y=await hs(e,o);p.push(...y)}if(c){let y=await Gr(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=Oi(e,o);p.push(...w)}else if(y==="export"){let w=xi(e,o);p.push(...w)}else if(y==="function"){let w=Ti(e,o);p.push(...w)}else if(y==="builtin"){let w=Di(o);p.push(...w)}else if(y==="keyword"){let w=Ii(o);p.push(...w)}else if(y==="alias"){let w=Ri(e,o);p.push(...w)}else if(y==="shopt"){let w=Li(o);p.push(...w)}else if(y==="helptopic"){let w=Fi(o);p.push(...w)}else if(y==="directory"){let w=await hs(e,o);p.push(...w)}else if(y==="file"){let w=await Gr(e,o);p.push(...w)}else if(y==="user"){let w=Mi(o);p.push(...w)}else if(y==="command"){let w=await Wi(e,o);p.push(...w)}if(r!==null)try{let y=await zi(e,r),w=Vi(e,y);for(let v of w)(o===null||v.startsWith(o))&&p.push(v)}catch{return P("","",1)}if(a){let y=await hs(e,o);for(let w of y)p.includes(w)||p.push(w)}let g="";if(f!==null){let y=e.state.functions.get(f);if(y){let w=new Map;w.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),w.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),w.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),w.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let v=new Map;for(let x of e.state.env.keys())(x==="COMPREPLY"||x.startsWith("COMPREPLY_")||x==="COMPREPLY__length")&&(v.set(x,e.state.env.get(x)),e.state.env.delete(x));let _=["compgen",h[0]??"",""];try{let x=await Rt(e,y,_,"");if(x.exitCode!==0)return Ue(e,w),Ue(e,v),P("",x.stderr,1);g=x.stdout;let T=Bi(e);p.push(...T)}catch{return Ue(e,w),Ue(e,v),P("","",1)}Ue(e,w),Ue(e,v)}}if(d!==null)try{let y=we(d),w=await e.executeScript(y);if(w.exitCode!==0)return P("",w.stderr,w.exitCode);if(w.stdout){let v=w.stdout.split(`
48
- `);for(let _ of v)_.length>0&&p.push(_)}}catch(y){if(y.name==="ParseException")return S(`compgen: -C: ${y.message}
49
- `,2);throw y}let b=p;if(u!==null){let y=u.startsWith("!"),w=y?u.slice(1):u;b=p.filter(v=>{let _=je(v,w,!1,!0);return y?_:!_})}if(b.length===0&&o!==null)return P(g,"",1);let E=b.map(y=>`${n}${y}${i}`).join(`
50
- `),k=g+(E?`${E}
51
- `:"");return F(k)}function Oi(e,t){let s=new Set;for(let n of e.state.env.keys()){if(n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length"))continue;let i=n.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?s.add(n):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function xi(e,t){let s=e.state.exportedVars??new Set,r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r=r.filter(n=>n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length")?!1:e.state.env.has(n)),r.sort()}function Ti(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function Di(e){let t=[...ps];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ii(e){let t=[...Xr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ri(e,t){let s=[];for(let n of e.state.env.keys())if(n.startsWith("BASH_ALIAS_")){let i=n.slice(11);s.push(i)}let r=s;return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function Li(e){let t=[...ki];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Fi(e){let t=[...Ni];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function hs(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i){let a=`${r}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!n||o.startsWith(n)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+o)}else s.push(o)}catch{}}}catch{}return s.sort()}async function Gr(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i)if(!n||o.startsWith(n))if(t?.includes("/")){let a=t.lastIndexOf("/"),l=t.slice(0,a+1);s.push(l+o)}else s.push(o)}catch{}return s.sort()}function Mi(e){return["root","nobody"]}async function Wi(e,t){let s=new Set;for(let i of ps)s.add(i);for(let i of e.state.functions.keys())s.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&s.add(i.slice(11));for(let i of Xr)s.add(i);let r=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of r.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let n=Array.from(s);return t!==null&&(n=n.filter(i=>i.startsWith(t))),n.sort()}async function zi(e,t){let r=new W().parseWordFromString(t,!1,!1);return await D(e,r)}function Vi(e,t){let s=e.state.env.get("IFS")??`
52
- `;if(s.length===0)return[t];let r=new Set(s.split("")),n=[],i="",o=0;for(;o<t.length;){let a=t[o];if(a==="\\"&&o+1<t.length){let l=t[o+1];i+=l,o+=2}else r.has(a)?(i.length>0&&(n.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&n.push(i),n}function Ue(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function Bi(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=ye(e,"COMPREPLY");for(let[,i]of n)t.push(i)}else{let n=e.state.env.get("COMPREPLY");n!==void 0&&t.push(n)}return t}var ji=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function gs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")r=!0;else if(d==="-D")n=!0;else if(d==="-W"){if(f++,f>=t.length)return S(`complete: -W: option requires an argument
53
- `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return S(`complete: -F: option requires an argument
54
- `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return S(`complete: -o: option requires an argument
55
- `,2);let h=t[f];if(!ji.includes(h))return S(`complete: ${h}: invalid option name
56
- `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return S(`complete: -A: option requires an argument
57
- `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return S(`complete: -C: option requires an argument
58
- `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return S(`complete: -G: option requires an argument
59
- `,2)}else if(d==="-P"){if(f++,f>=t.length)return S(`complete: -P: option requires an argument
60
- `,2)}else if(d==="-S"){if(f++,f>=t.length)return S(`complete: -S: option requires an argument
61
- `,2)}else if(d==="-X"){if(f++,f>=t.length)return S(`complete: -X: option requires an argument
62
- `,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(),F("");for(let f of u)e.state.completionSpecs.delete(f);return F("")}if(s)return u.length===0?ys(e):ys(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return ys(e);if(o&&u.length===0&&!n)return S(`complete: -F: option requires a command name
36
+ `;else if(r.operator==="<"&&r.target.type==="Word"){let n=await D(e,r.target),i=e.fs.resolvePath(e.state.cwd,n);try{s=await e.fs.readFile(i)}catch{}}return s}async function Rt(e,t,s,r="",n){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,ke(`${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(n??e.state.currentLine),e.state.sourceStack.unshift(t.sourceFile??"main"),e.state.localScopes.push(new Map),e.state.localExportedVars||(e.state.localExportedVars=[]),e.state.localExportedVars.push(new Set);let i=new Map;for(let c=0;c<s.length;c++)i.set(String(c+1),e.state.env.get(String(c+1))),e.state.env.set(String(c+1),s[c]);i.set("@",e.state.env.get("@")),i.set("#",e.state.env.get("#")),e.state.env.set("@",s.join(" ")),e.state.env.set("#",String(s.length));let o=()=>{let c=e.state.localScopes.length-1,u=e.state.localScopes.pop();if(u)for(let[f,d]of u)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);if(Hr(e,c),e.state.fullyUnsetLocals)for(let[f,d]of e.state.fullyUnsetLocals.entries())d===c&&e.state.fullyUnsetLocals.delete(f);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let f=e.state.localExportedVars.pop();if(f)for(let d of f)e.state.exportedVars?.delete(d)}for(let[f,d]of i)d===void 0?e.state.env.delete(f):e.state.env.set(f,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:a,error:l}=await qr(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await Ci(e,t.redirections),u=r||c,f=await e.executeCommand(t.body,u);return o(),j(e,f,t.redirections,a)}catch(c){if(o(),c instanceof ne){let u=_(c.stdout,c.stderr,c.exitCode);return j(e,u,t.redirections,a)}throw c}}var Xr=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],ps=[".",":","[","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"],ki=["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"],Ni=ps;async function ms(e,t){let s=[],r=null,n="",i="",o=null,a=!1,l=!1,c=!1,u=null,f=null,d=null,h=[],m=["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 y=0;y<t.length;y++){let w=t[y];if(w==="-v")s.push("variable");else if(w==="-e")s.push("export");else if(w==="-f")s.push("file");else if(w==="-d")s.push("directory");else if(w==="-k")s.push("keyword");else if(w==="-A"){if(y++,y>=t.length)return A(`compgen: -A: option requires an argument
37
+ `,2);let b=t[y];if(!m.includes(b))return A(`compgen: ${b}: invalid action name
38
+ `,2);s.push(b)}else if(w==="-W"){if(y++,y>=t.length)return A(`compgen: -W: option requires an argument
39
+ `,2);r=t[y]}else if(w==="-P"){if(y++,y>=t.length)return A(`compgen: -P: option requires an argument
40
+ `,2);n=t[y]}else if(w==="-S"){if(y++,y>=t.length)return A(`compgen: -S: option requires an argument
41
+ `,2);i=t[y]}else if(w==="-o"){if(y++,y>=t.length)return A(`compgen: -o: option requires an argument
42
+ `,2);let b=t[y];if(b==="plusdirs")a=!0;else if(b==="dirnames")l=!0;else if(b==="default")c=!0;else if(!(b==="filenames"||b==="nospace"||b==="bashdefault"||b==="noquote"))return A(`compgen: ${b}: invalid option name
43
+ `,2)}else if(w==="-F"){if(y++,y>=t.length)return A(`compgen: -F: option requires an argument
44
+ `,2);f=t[y]}else if(w==="-C"){if(y++,y>=t.length)return A(`compgen: -C: option requires an argument
45
+ `,2);d=t[y]}else if(w==="-X"){if(y++,y>=t.length)return A(`compgen: -X: option requires an argument
46
+ `,2);u=t[y]}else if(w==="-G"){if(y++,y>=t.length)return A(`compgen: -G: option requires an argument
47
+ `,2)}else if(w==="--"){h.push(...t.slice(y+1));break}else w.startsWith("-")||h.push(w)}o=h[0]??null;let p=[];if(l){let y=await hs(e,o);p.push(...y)}if(c){let y=await Gr(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=Oi(e,o);p.push(...w)}else if(y==="export"){let w=xi(e,o);p.push(...w)}else if(y==="function"){let w=Ti(e,o);p.push(...w)}else if(y==="builtin"){let w=Di(o);p.push(...w)}else if(y==="keyword"){let w=Ii(o);p.push(...w)}else if(y==="alias"){let w=Ri(e,o);p.push(...w)}else if(y==="shopt"){let w=Li(o);p.push(...w)}else if(y==="helptopic"){let w=Fi(o);p.push(...w)}else if(y==="directory"){let w=await hs(e,o);p.push(...w)}else if(y==="file"){let w=await Gr(e,o);p.push(...w)}else if(y==="user"){let w=Mi(o);p.push(...w)}else if(y==="command"){let w=await Wi(e,o);p.push(...w)}if(r!==null)try{let y=await zi(e,r),w=Vi(e,y);for(let b of w)(o===null||b.startsWith(o))&&p.push(b)}catch{return _("","",1)}if(a){let y=await hs(e,o);for(let w of y)p.includes(w)||p.push(w)}let g="";if(f!==null){let y=e.state.functions.get(f);if(y){let w=new Map;w.set("COMP_WORDS__length",e.state.env.get("COMP_WORDS__length")),e.state.env.set("COMP_WORDS__length","0"),w.set("COMP_CWORD",e.state.env.get("COMP_CWORD")),e.state.env.set("COMP_CWORD","-1"),w.set("COMP_LINE",e.state.env.get("COMP_LINE")),e.state.env.set("COMP_LINE",""),w.set("COMP_POINT",e.state.env.get("COMP_POINT")),e.state.env.set("COMP_POINT","0");let b=new Map;for(let T of e.state.env.keys())(T==="COMPREPLY"||T.startsWith("COMPREPLY_")||T==="COMPREPLY__length")&&(b.set(T,e.state.env.get(T)),e.state.env.delete(T));let E=["compgen",h[0]??"",""];try{let T=await Rt(e,y,E,"");if(T.exitCode!==0)return Ue(e,w),Ue(e,b),_("",T.stderr,1);g=T.stdout;let N=Bi(e);p.push(...N)}catch{return Ue(e,w),Ue(e,b),_("","",1)}Ue(e,w),Ue(e,b)}}if(d!==null)try{let y=we(d),w=await e.executeScript(y);if(w.exitCode!==0)return _("",w.stderr,w.exitCode);if(w.stdout){let b=w.stdout.split(`
48
+ `);for(let E of b)E.length>0&&p.push(E)}}catch(y){if(y.name==="ParseException")return A(`compgen: -C: ${y.message}
49
+ `,2);throw y}let S=p;if(u!==null){let y=u.startsWith("!"),w=y?u.slice(1):u;S=p.filter(b=>{let E=je(b,w,!1,!0);return y?E:!E})}if(S.length===0&&o!==null)return _(g,"",1);let v=S.map(y=>`${n}${y}${i}`).join(`
50
+ `),C=g+(v?`${v}
51
+ `:"");return F(C)}function Oi(e,t){let s=new Set;for(let n of e.state.env.keys()){if(n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length"))continue;let i=n.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n)?s.add(n):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function xi(e,t){let s=e.state.exportedVars??new Set,r=Array.from(s);return t!==null&&(r=r.filter(n=>n.startsWith(t))),r=r.filter(n=>n.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(n)||n.endsWith("__length")?!1:e.state.env.has(n)),r.sort()}function Ti(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(r=>r.startsWith(t))),s.sort()}function Di(e){let t=[...ps];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ii(e){let t=[...Xr];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ri(e,t){let s=[];for(let n of e.state.env.keys())if(n.startsWith("BASH_ALIAS_")){let i=n.slice(11);s.push(i)}let r=s;return t!==null&&(r=r.filter(n=>n.startsWith(t))),r.sort()}function Li(e){let t=[...ki];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Fi(e){let t=[...Ni];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function hs(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i){let a=`${r}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!n||o.startsWith(n)))if(t?.includes("/")){let c=t.lastIndexOf("/"),u=t.slice(0,c+1);s.push(u+o)}else s.push(o)}catch{}}}catch{}return s.sort()}async function Gr(e,t){let s=[];try{let r=e.state.cwd,n=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";n=t.slice(o+1),a.startsWith("/")?r=a:r=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(r);for(let o of i)if(!n||o.startsWith(n))if(t?.includes("/")){let a=t.lastIndexOf("/"),l=t.slice(0,a+1);s.push(l+o)}else s.push(o)}catch{}return s.sort()}function Mi(e){return["root","nobody"]}async function Wi(e,t){let s=new Set;for(let i of ps)s.add(i);for(let i of e.state.functions.keys())s.add(i);for(let i of e.state.env.keys())i.startsWith("BASH_ALIAS_")&&s.add(i.slice(11));for(let i of Xr)s.add(i);let r=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of r.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let n=Array.from(s);return t!==null&&(n=n.filter(i=>i.startsWith(t))),n.sort()}async function zi(e,t){let r=new W().parseWordFromString(t,!1,!1);return await D(e,r)}function Vi(e,t){let s=e.state.env.get("IFS")??`
52
+ `;if(s.length===0)return[t];let r=new Set(s.split("")),n=[],i="",o=0;for(;o<t.length;){let a=t[o];if(a==="\\"&&o+1<t.length){let l=t[o+1];i+=l,o+=2}else r.has(a)?(i.length>0&&(n.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&n.push(i),n}function Ue(e,t){for(let[s,r]of t)r===void 0?e.state.env.delete(s):e.state.env.set(s,r)}function Bi(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let n=ye(e,"COMPREPLY");for(let[,i]of n)t.push(i)}else{let n=e.state.env.get("COMPREPLY");n!==void 0&&t.push(n)}return t}var ji=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function gs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=!1,i,o,a,l=[],c=[],u=[];for(let f=0;f<t.length;f++){let d=t[f];if(d==="-p")s=!0;else if(d==="-r")r=!0;else if(d==="-D")n=!0;else if(d==="-W"){if(f++,f>=t.length)return A(`complete: -W: option requires an argument
53
+ `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return A(`complete: -F: option requires an argument
54
+ `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return A(`complete: -o: option requires an argument
55
+ `,2);let h=t[f];if(!ji.includes(h))return A(`complete: ${h}: invalid option name
56
+ `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return A(`complete: -A: option requires an argument
57
+ `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return A(`complete: -C: option requires an argument
58
+ `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return A(`complete: -G: option requires an argument
59
+ `,2)}else if(d==="-P"){if(f++,f>=t.length)return A(`complete: -P: option requires an argument
60
+ `,2)}else if(d==="-S"){if(f++,f>=t.length)return A(`complete: -S: option requires an argument
61
+ `,2)}else if(d==="-X"){if(f++,f>=t.length)return A(`complete: -X: option requires an argument
62
+ `,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(),F("");for(let f of u)e.state.completionSpecs.delete(f);return F("")}if(s)return u.length===0?ys(e):ys(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!n)return ys(e);if(o&&u.length===0&&!n)return A(`complete: -F: option requires a command name
63
63
  `,2);if(n){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.completionSpecs.set("__default__",f),F("")}for(let f of u){let d={};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 F("")}function ys(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let o of t)i+=`complete: ${o}: no completion specification
64
- `;return P("",i,1)}return F("")}let r=[],n=t||Array.from(s.keys());for(let i of n){if(i==="__default__")continue;let o=s.get(i);if(!o){if(t)return P(r.join(`
64
+ `;return _("",i,1)}return F("")}let r=[],n=t||Array.from(s.keys());for(let i of n){if(i==="__default__")continue;let o=s.get(i);if(!o){if(t)return _(r.join(`
65
65
  `)+(r.length>0?`
66
66
  `:""),`complete: ${i}: no completion specification
67
67
  `,1);continue}let a="complete";if(o.options)for(let l of o.options)a+=` -o ${l}`;if(o.actions)for(let l of o.actions)a+=` -A ${l}`;o.wordlist!==void 0&&(o.wordlist.includes(" ")||o.wordlist.includes("'")?a+=` -W '${o.wordlist}'`:a+=` -W ${o.wordlist}`),o.function!==void 0&&(a+=` -F ${o.function}`),o.isDefault&&(a+=" -D"),a+=` ${i}`,r.push(a)}return r.length===0?F(""):F(`${r.join(`
68
68
  `)}
69
- `)}var Kr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ws(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return S(`compopt: -o: option requires an argument
70
- `,2);let c=t[a];if(!Kr.includes(c))return S(`compopt: ${c}: invalid option name
71
- `,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return S(`compopt: +o: option requires an argument
72
- `,2);let c=t[a];if(!Kr.includes(c))return S(`compopt: ${c}: invalid option name
73
- `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(s){let a=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",a),F("")}if(r){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",a),F("")}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 n)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 F("")}return S(`compopt: not currently executing completion function
69
+ `)}var Kr=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function ws(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,r=!1,n=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")r=!0;else if(l==="-o"){if(a++,a>=t.length)return A(`compopt: -o: option requires an argument
70
+ `,2);let c=t[a];if(!Kr.includes(c))return A(`compopt: ${c}: invalid option name
71
+ `,2);n.push(c)}else if(l==="+o"){if(a++,a>=t.length)return A(`compopt: +o: option requires an argument
72
+ `,2);let c=t[a];if(!Kr.includes(c))return A(`compopt: ${c}: invalid option name
73
+ `,2);i.push(c)}else if(l==="--"){o.push(...t.slice(a+1));break}else!l.startsWith("-")&&!l.startsWith("+")&&o.push(l)}if(s){let a=e.state.completionSpecs.get("__default__")??{isDefault:!0},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__default__",a),F("")}if(r){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of n)l.add(c);for(let c of i)l.delete(c);return a.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set("__empty__",a),F("")}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 n)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 F("")}return A(`compopt: not currently executing completion function
74
74
  `,1)}function vs(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ne;return L}if(t.length>1)throw new z(1,"",`bash: continue: too many arguments
75
75
  `);let s=1;if(t.length>0){let r=Number.parseInt(t[0],10);if(Number.isNaN(r)||r<1)throw new z(1,"",`bash: continue: ${t[0]}: numeric argument required
76
76
  `);s=r}throw new ce(s)}function H(e,t){let s=e.state.env.get("HOME")||"/home/user";return t.split(":").map(i=>i==="~"?s:i==="~root"?"/root":i.startsWith("~/")?s+i.slice(1):i.startsWith("~root/")?`/root${i.slice(5)}`:i).join(":")}function bs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function Es(e){let t="$'";for(let s=0;s<e.length;s++){let r=e[s],n=e.charCodeAt(s);n===7?t+="\\a":n===8?t+="\\b":n===9?t+="\\t":n===10?t+="\\n":n===11?t+="\\v":n===12?t+="\\f":n===13?t+="\\r":n===27?t+="\\e":n===39?t+="\\'":n===92?t+="\\\\":n<32||n===127?t+=`\\${n.toString(8).padStart(3,"0")}`:t+=r}return t+="'",t}function Lt(e){return bs(e)?Es(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function We(e){return bs(e)?Es(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function $s(e){return bs(e)?Es(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Yr(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),de(e,t)&&(s+="n"),e.state.readonlyVars?.has(t)&&(s+="r"),e.state.uppercaseVars?.has(t)&&(s+="u"),e.state.exportedVars?.has(t)&&(s+="x"),s===""?"--":`-${s}`}function Ss(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Qr(e,t){let s="",r="",n=!1;for(let i of t){let o=Yr(e,i);if(e.state.associativeArrays?.has(i)){let u=xe(e,i);if(u.length===0)s+=`declare -A ${i}=()
@@ -80,9 +80,9 @@ import{B as dr,C as hr,D as ie,E as Le,F as K,G as ge,H as yt,I as pr,J as D,K a
80
80
  `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${$s(c)}
81
81
  `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${o} ${i}
82
82
  `:(r+=`bash: declare: ${i}: not found
83
- `,n=!0)}}return P(s,r,n?1:0)}function Jr(e,t){let{filterExport:s,filterReadonly:r,filterNameref:n,filterIndexedArray:i,filterAssocArray:o}=t,a=s||r||n||i||o,l="",c=new Set;for(let f of e.state.env.keys()){if(f.startsWith("BASH_"))continue;if(f.endsWith("__length")){let h=f.slice(0,-8);c.add(h);continue}let d=f.lastIndexOf("_");if(d>0){let h=f.slice(0,d),m=f.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){c.add(h);continue}}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=Yr(e,f),h=e.state.associativeArrays?.has(f),m=Q(e,f),p=!h&&(m.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!h||i&&!p||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!de(e,f)))continue;if(h){let b=xe(e,f);if(b.length===0)l+=`declare -A ${f}=()
84
- `;else{let E=b.map(k=>{let y=e.state.env.get(`${f}_${k}`)??"",w=Ss(y);return`['${k}']=${w}`});l+=`declare -A ${f}=(${E.join(" ")})
85
- `}continue}if(m.length>0){let b=m.map(E=>{let k=e.state.env.get(`${f}_${E}`)??"";return`[${E}]=${We(k)}`});l+=`declare -a ${f}=(${b.join(" ")})
83
+ `,n=!0)}}return _(s,r,n?1:0)}function Jr(e,t){let{filterExport:s,filterReadonly:r,filterNameref:n,filterIndexedArray:i,filterAssocArray:o}=t,a=s||r||n||i||o,l="",c=new Set;for(let f of e.state.env.keys()){if(f.startsWith("BASH_"))continue;if(f.endsWith("__length")){let h=f.slice(0,-8);c.add(h);continue}let d=f.lastIndexOf("_");if(d>0){let h=f.slice(0,d),m=f.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){c.add(h);continue}}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=Yr(e,f),h=e.state.associativeArrays?.has(f),m=Q(e,f),p=!h&&(m.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!h||i&&!p||s&&!e.state.exportedVars?.has(f)||r&&!e.state.readonlyVars?.has(f)||n&&!de(e,f)))continue;if(h){let S=xe(e,f);if(S.length===0)l+=`declare -A ${f}=()
84
+ `;else{let v=S.map(C=>{let y=e.state.env.get(`${f}_${C}`)??"",w=Ss(y);return`['${C}']=${w}`});l+=`declare -A ${f}=(${v.join(" ")})
85
+ `}continue}if(m.length>0){let S=m.map(v=>{let C=e.state.env.get(`${f}_${v}`)??"";return`[${v}]=${We(C)}`});l+=`declare -a ${f}=(${S.join(" ")})
86
86
  `;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
87
87
  `;continue}let g=e.state.env.get(f);g!==void 0&&(l+=`declare ${d} ${f}=${$s(g)}
88
88
  `)}return F(l)}function en(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let r of s){let n=xe(e,r);if(n.length===0)t+=`declare -A ${r}=()
@@ -90,66 +90,66 @@ import{B as dr,C as hr,D as ie,E as Le,F as K,G as ge,H as yt,I as pr,J as D,K a
90
90
  `}}return F(t)}function tn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let r=Array.from(s).sort();for(let n of r){let i=Q(e,n);if(i.length===0)t+=`declare -a ${n}=()
91
91
  `;else{let o=i.map(a=>{let l=e.state.env.get(`${n}_${a}`)??"";return`[${a}]=${We(l)}`});t+=`declare -a ${n}=(${o.join(" ")})
92
92
  `}}return F(t)}function sn(e){let t="",s=new Set;for(let n of e.state.env.keys()){if(n.startsWith("BASH_"))continue;if(n.endsWith("__length")){let o=n.slice(0,-8);s.add(o);continue}let i=n.lastIndexOf("_");if(i>0){let o=n.slice(0,i),a=n.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(n)}let r=Array.from(s).sort();for(let n of r){if(e.state.associativeArrays?.has(n)||Q(e,n).length>0||e.state.env.has(`${n}__length`))continue;let a=e.state.env.get(n);a!==void 0&&(t+=`${n}=${Lt(a)}
93
- `)}return F(t)}function As(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function it(e,t){return e.state.integerVars?.has(t)??!1}function Ps(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Hi(e,t){return e.state.lowercaseVars?.has(t)??!1}function _s(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Ui(e,t){return e.state.uppercaseVars?.has(t)??!1}function qe(e,t,s){return Hi(e,t)?s.toLowerCase():Ui(e,t)?s.toUpperCase():s}async function rn(e,t){try{let s=new W,r=Z(s,t),n=await V(e,r.expression);return String(n)}catch{return"0"}}function qi(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],r=s.length;if(e[r]!=="[")return null;let n=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")n++;else if(e[r]==="]"&&(n--,n===0))break;if(n!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:s,indexExpr:o,value:a}}async function Cs(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,h=!1,m=!1,p=!1,g=!1,b=[];for(let T=0;T<t.length;T++){let I=t[T];if(I==="-a")s=!0;else if(I==="-A")r=!0;else if(I==="-r")n=!0;else if(I==="-x")i=!0;else if(I==="-p")o=!0;else if(I==="-n")a=!0;else if(I==="+n")l=!0;else if(I==="+a")c=!0;else if(I==="+x")u=!0;else if(I==="--"){b.push(...t.slice(T+1));break}else if(I.startsWith("+")){for(let A of I.slice(1))if(A==="n")l=!0;else if(A==="a")c=!0;else if(A==="x")u=!0;else if(A!=="r"){if(A!=="i"){if(!(A==="f"||A==="F"))return P("",`bash: typeset: +${A}: invalid option
94
- `,2)}}}else if(I==="-i")f=!0;else if(I==="-l")d=!0;else if(I==="-u")h=!0;else if(I==="-f")m=!0;else if(I==="-F")p=!0;else if(I==="-g")g=!0;else if(I.startsWith("-"))for(let A of I.slice(1))if(A==="a")s=!0;else if(A==="A")r=!0;else if(A==="r")n=!0;else if(A==="x")i=!0;else if(A==="p")o=!0;else if(A==="n")a=!0;else if(A==="i")f=!0;else if(A==="l")d=!0;else if(A==="u")h=!0;else if(A==="f")m=!0;else if(A==="F")p=!0;else if(A==="g")g=!0;else return P("",`bash: typeset: -${A}: invalid option
95
- `,2);else b.push(I)}let k=e.state.localScopes.length>0&&!g,y=T=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(T)||I.set(T,e.state.env.get(T))},w=T=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(T)||I.set(T,e.state.env.get(T));let A=`${T}_`;for(let N of e.state.env.keys())N.startsWith(A)&&!N.includes("__")&&(I.has(N)||I.set(N,e.state.env.get(N)));let C=`${T}__length`;e.state.env.has(C)&&!I.has(C)&&I.set(C,e.state.env.get(C))},v=T=>{k&&Ie(e,T)};if(p){if(b.length===0){let A=Array.from(e.state.functions.keys()).sort(),C="";for(let N of A)C+=`declare -f ${N}
96
- `;return F(C)}let T=!0,I="";for(let A of b)e.state.functions.has(A)?I+=`${A}
97
- `:T=!1;return P(I,"",T?0:1)}if(m){if(b.length===0){let I="",A=Array.from(e.state.functions.keys()).sort();for(let C of A)I+=`${C} ()
93
+ `)}return F(t)}function As(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function it(e,t){return e.state.integerVars?.has(t)??!1}function Ps(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Hi(e,t){return e.state.lowercaseVars?.has(t)??!1}function _s(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Ui(e,t){return e.state.uppercaseVars?.has(t)??!1}function qe(e,t,s){return Hi(e,t)?s.toLowerCase():Ui(e,t)?s.toUpperCase():s}async function rn(e,t){try{let s=new W,r=Z(s,t),n=await V(e,r.expression);return String(n)}catch{return"0"}}function qi(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],r=s.length;if(e[r]!=="[")return null;let n=0,i=r+1;for(;r<e.length;r++)if(e[r]==="[")n++;else if(e[r]==="]"&&(n--,n===0))break;if(n!==0)return null;let o=e.slice(i,r);if(r++,e[r]!=="=")return null;r++;let a=e.slice(r);return{name:s,indexExpr:o,value:a}}async function Cs(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=!1,l=!1,c=!1,u=!1,f=!1,d=!1,h=!1,m=!1,p=!1,g=!1,S=[];for(let N=0;N<t.length;N++){let I=t[N];if(I==="-a")s=!0;else if(I==="-A")r=!0;else if(I==="-r")n=!0;else if(I==="-x")i=!0;else if(I==="-p")o=!0;else if(I==="-n")a=!0;else if(I==="+n")l=!0;else if(I==="+a")c=!0;else if(I==="+x")u=!0;else if(I==="--"){S.push(...t.slice(N+1));break}else if(I.startsWith("+")){for(let P of I.slice(1))if(P==="n")l=!0;else if(P==="a")c=!0;else if(P==="x")u=!0;else if(P!=="r"){if(P!=="i"){if(!(P==="f"||P==="F"))return _("",`bash: typeset: +${P}: invalid option
94
+ `,2)}}}else if(I==="-i")f=!0;else if(I==="-l")d=!0;else if(I==="-u")h=!0;else if(I==="-f")m=!0;else if(I==="-F")p=!0;else if(I==="-g")g=!0;else if(I.startsWith("-"))for(let P of I.slice(1))if(P==="a")s=!0;else if(P==="A")r=!0;else if(P==="r")n=!0;else if(P==="x")i=!0;else if(P==="p")o=!0;else if(P==="n")a=!0;else if(P==="i")f=!0;else if(P==="l")d=!0;else if(P==="u")h=!0;else if(P==="f")m=!0;else if(P==="F")p=!0;else if(P==="g")g=!0;else return _("",`bash: typeset: -${P}: invalid option
95
+ `,2);else S.push(I)}let C=e.state.localScopes.length>0&&!g,y=N=>{if(!C)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(N)||I.set(N,e.state.env.get(N))},w=N=>{if(!C)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(N)||I.set(N,e.state.env.get(N));let P=`${N}_`;for(let O of e.state.env.keys())O.startsWith(P)&&!O.includes("__")&&(I.has(O)||I.set(O,e.state.env.get(O)));let k=`${N}__length`;e.state.env.has(k)&&!I.has(k)&&I.set(k,e.state.env.get(k))},b=N=>{C&&Ie(e,N)};if(p){if(S.length===0){let P=Array.from(e.state.functions.keys()).sort(),k="";for(let O of P)k+=`declare -f ${O}
96
+ `;return F(k)}let N=!0,I="";for(let P of S)e.state.functions.has(P)?I+=`${P}
97
+ `:N=!1;return _(I,"",N?0:1)}if(m){if(S.length===0){let I="",P=Array.from(e.state.functions.keys()).sort();for(let k of P)I+=`${k} ()
98
98
  {
99
99
  # function body
100
100
  }
101
- `;return F(I)}let T=!0;for(let I of b)e.state.functions.has(I)||(T=!1);return P("","",T?0:1)}if(o&&b.length>0)return Qr(e,b);if(o&&b.length===0)return Jr(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(b.length===0&&r&&!o)return en(e);if(b.length===0&&s&&!o)return tn(e);if(b.length===0&&!o)return sn(e);let _="",x=0;for(let T of b){let I=T.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let $=I[1],O=I[2];if(r&&Q(e,$).length>0){_+=`bash: declare: ${$}: cannot convert indexed to associative array
102
- `,x=1;continue}if((s||!r&&!s)&&e.state.associativeArrays?.has($)){_+=`bash: declare: ${$}: cannot convert associative to indexed array
103
- `,x=1;continue}if(w($),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)),ve(e,$),e.state.env.delete($),e.state.env.delete(`${$}__length`),r&&O.includes("[")){let R=xt(O);for(let[X,M]of R){let U=H(e,M);e.state.env.set(`${$}_${X}`,U)}}else if(r){let R=Ee(O);for(let X=0;X<R.length;X+=2){let M=R[X],U=X+1<R.length?H(e,R[X+1]):"";e.state.env.set(`${$}_${M}`,U)}}else{let R=Ee(O);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let U of R){let ee=U.match(/^\[([^\]]+)\]=(.*)$/);if(ee){let ae=ee[1],ze=ee[2],Xn=H(e,ze),et;if(/^-?\d+$/.test(ae))et=Number.parseInt(ae,10);else try{let Kn=new W,Yn=Z(Kn,ae);et=await V(e,Yn.expression)}catch{et=0}e.state.env.set(`${$}_${et}`,Xn),M=et+1}else{let ae=H(e,U);e.state.env.set(`${$}_${M}`,ae),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${$}_${M}`,R[M]);e.state.env.set(`${$}__length`,String(R.length))}}v($),n&&ie(e,$),i&&ge(e,$);continue}if(l){let $=T.includes("=")?T.slice(0,T.indexOf("=")):T;if(lr(e,$),!T.includes("="))continue}if(u){let $=T.includes("=")?T.slice(0,T.indexOf("=")):T;if(yt(e,$),!T.includes("="))continue}let A=qi(T);if(A){let{name:$,indexExpr:O,value:R}=A,X=K(e,$);if(X)return X;w($);let M;try{let ee=new W,ae=Z(ee,O);M=await V(e,ae.expression)}catch{let ee=parseInt(O,10);M=Number.isNaN(ee)?0:ee}e.state.env.set(`${$}_${M}`,R);let U=parseInt(e.state.env.get(`${$}__length`)??"0",10);M>=U&&e.state.env.set(`${$}__length`,String(M+1)),v($),n&&ie(e,$),i&&ge(e,$);continue}let C=T.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(C&&!c){let $=C[1],O=C[2],R=K(e,$);if(R)return R;w($);let X=Ee(O);if(e.state.associativeArrays?.has($)){let M=xt(O);for(let[U,ee]of M){let ae=H(e,ee);e.state.env.set(`${$}_${U}`,ae)}}else{let M=Q(e,$),U=0,ee=e.state.env.get($);M.length===0&&ee!==void 0?(e.state.env.set(`${$}_0`,ee),e.state.env.delete($),U=1):M.length>0&&(U=Math.max(...M)+1);for(let ze=0;ze<X.length;ze++)e.state.env.set(`${$}_${U+ze}`,H(e,X[ze]));let ae=U+X.length;e.state.env.set(`${$}__length`,String(ae))}v($),n&&ie(e,$),i&&ge(e,$);continue}let N=T.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(N){let $=N[1],O=H(e,N[2]),R=K(e,$);if(R)return R;y($),f&&As(e,$),d&&Ps(e,$),h&&_s(e,$);let M=Q(e,$).length>0||e.state.associativeArrays?.has($);if(it(e,$)){let U=e.state.env.get($)??"0",ee=parseInt(U,10)||0,ae=parseInt(await rn(e,O),10)||0;O=String(ee+ae),e.state.env.set($,O)}else if(M){O=qe(e,$,O);let U=`${$}_0`,ee=e.state.env.get(U)??"";e.state.env.set(U,ee+O)}else{O=qe(e,$,O);let U=e.state.env.get($)??"";e.state.env.set($,U+O)}v($),n&&ie(e,$),i&&ge(e,$),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add($));continue}if(T.includes("=")){let $=T.indexOf("="),O=T.slice(0,$),R=T.slice($+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(O)){_+=`bash: typeset: \`${O}': not a valid identifier
104
- `,x=1;continue}let X=K(e,O);if(X)return X;if(y(O),a){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){_+=`bash: declare: \`${R}': invalid variable name for name reference
105
- `,x=1;continue}e.state.env.set(O,R),Pe(e,O),R!==""&&Qt(e,R)&&Yt(e,O),v(O),n&&ie(e,O),i&&ge(e,O);continue}if(f&&As(e,O),d&&Ps(e,O),h&&_s(e,O),it(e,O)&&(R=await rn(e,R)),R=qe(e,O,R),de(e,O)){let M=Te(e,O);M&&M!==O?e.state.env.set(M,R):e.state.env.set(O,R)}else e.state.env.set(O,R);v(O),n&&ie(e,O),i&&ge(e,O),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(O))}else{let $=T;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)){_+=`bash: typeset: \`${$}': not a valid identifier
106
- `,x=1;continue}if(s||r?w($):y($),a){Pe(e,$);let R=e.state.env.get($);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?cr(e,$):R&&Qt(e,R)&&Yt(e,$),v($),n&&ie(e,$),i&&ge(e,$);continue}if(f&&As(e,$),d&&Ps(e,$),h&&_s(e,$),r){if(Q(e,$).length>0){_+=`bash: declare: ${$}: cannot convert indexed to associative array
107
- `,x=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)}let O=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${$}_`)&&!R.startsWith(`${$}__length`));!e.state.env.has($)&&!O&&(s||r?e.state.env.set(`${$}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add($))),v($),n&&ie(e,$),i&&ge(e,$)}}return P("",_,x)}async function ks(e,t){let s=!1,r=!1,n=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")r=!0;else if(a==="-p")n=!0;else if(a==="--"){i.push(...t.slice(o+1));break}else a.startsWith("-")||i.push(a)}if(i.length===0){let o="",a=Array.from(e.state.readonlyVars||[]).sort();for(let l of a){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -r ${l}="${u}"
108
- `}}return F(o)}for(let o of i){let a=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(a){let f=a[1],d=a[2],h=K(e,f);if(h)return h;let m=Ee(d);if(e.state.associativeArrays?.has(f)){let p=xt(d);for(let[g,b]of p){let E=H(e,b);e.state.env.set(`${f}_${g}`,E)}}else{let p=Q(e,f),g=0,b=e.state.env.get(f);p.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),g=1):p.length>0&&(g=Math.max(...p)+1);for(let k=0;k<m.length;k++)e.state.env.set(`${f}_${g+k}`,H(e,m[k]));let E=g+m.length;e.state.env.set(`${f}__length`,String(E))}ie(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=H(e,l[2]),h=K(e,f);if(h)return h;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),ie(e,f);continue}let c=Vr(o);if(c.value===void 0&&!c.isArray){ie(e,c.name);continue}let u=await Br(e,c,{makeReadonly:!0});if(u)return u}return L}function Ns(e){return e.state.directoryStack??=[],e.state.directoryStack}function ot(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Zi(e){let t=e.split("/").filter(r=>r&&r!=="."),s=[];for(let r of t)r===".."?s.pop():s.push(r);return`/${s.join("/")}`}async function Os(e,t){let s=Ns(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 S(`bash: pushd: too many arguments
109
- `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return S(`bash: pushd: ${l}: invalid option
110
- `,2);if(r!==void 0)return S(`bash: pushd: too many arguments
111
- `,2);r=l}}if(r===void 0){if(s.length<2)return S(`bash: pushd: no other directory
112
- `,1);let a=s[0];s[0]=s[1],s[1]=a,r=s[0]}let n;if(r.startsWith("/"))n=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),n=`/${a.join("/")}`}else r==="."?n=e.state.cwd:r.startsWith("~")?n=(e.state.env.get("HOME")||"/")+r.slice(1):n=`${e.state.cwd}/${r}`;n=Zi(n);try{if(!(await e.fs.stat(n)).isDirectory)return S(`bash: pushd: ${r}: Not a directory
113
- `,1)}catch{return S(`bash: pushd: ${r}: No such file or directory
101
+ `;return F(I)}let N=!0;for(let I of S)e.state.functions.has(I)||(N=!1);return _("","",N?0:1)}if(o&&S.length>0)return Qr(e,S);if(o&&S.length===0)return Jr(e,{filterExport:i,filterReadonly:n,filterNameref:a,filterIndexedArray:s,filterAssocArray:r});if(S.length===0&&r&&!o)return en(e);if(S.length===0&&s&&!o)return tn(e);if(S.length===0&&!o)return sn(e);let E="",T=0;for(let N of S){let I=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let $=I[1],x=I[2];if(r&&Q(e,$).length>0){E+=`bash: declare: ${$}: cannot convert indexed to associative array
102
+ `,T=1;continue}if((s||!r&&!s)&&e.state.associativeArrays?.has($)){E+=`bash: declare: ${$}: cannot convert associative to indexed array
103
+ `,T=1;continue}if(w($),r&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)),ve(e,$),e.state.env.delete($),e.state.env.delete(`${$}__length`),r&&x.includes("[")){let R=xt(x);for(let[X,M]of R){let U=H(e,M);e.state.env.set(`${$}_${X}`,U)}}else if(r){let R=Ee(x);for(let X=0;X<R.length;X+=2){let M=R[X],U=X+1<R.length?H(e,R[X+1]):"";e.state.env.set(`${$}_${M}`,U)}}else{let R=Ee(x);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let U of R){let ee=U.match(/^\[([^\]]+)\]=(.*)$/);if(ee){let ae=ee[1],ze=ee[2],Xn=H(e,ze),et;if(/^-?\d+$/.test(ae))et=Number.parseInt(ae,10);else try{let Kn=new W,Yn=Z(Kn,ae);et=await V(e,Yn.expression)}catch{et=0}e.state.env.set(`${$}_${et}`,Xn),M=et+1}else{let ae=H(e,U);e.state.env.set(`${$}_${M}`,ae),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${$}_${M}`,R[M]);e.state.env.set(`${$}__length`,String(R.length))}}b($),n&&ie(e,$),i&&ge(e,$);continue}if(l){let $=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(lr(e,$),!N.includes("="))continue}if(u){let $=N.includes("=")?N.slice(0,N.indexOf("=")):N;if(yt(e,$),!N.includes("="))continue}let P=qi(N);if(P){let{name:$,indexExpr:x,value:R}=P,X=K(e,$);if(X)return X;w($);let M;try{let ee=new W,ae=Z(ee,x);M=await V(e,ae.expression)}catch{let ee=parseInt(x,10);M=Number.isNaN(ee)?0:ee}e.state.env.set(`${$}_${M}`,R);let U=parseInt(e.state.env.get(`${$}__length`)??"0",10);M>=U&&e.state.env.set(`${$}__length`,String(M+1)),b($),n&&ie(e,$),i&&ge(e,$);continue}let k=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(k&&!c){let $=k[1],x=k[2],R=K(e,$);if(R)return R;w($);let X=Ee(x);if(e.state.associativeArrays?.has($)){let M=xt(x);for(let[U,ee]of M){let ae=H(e,ee);e.state.env.set(`${$}_${U}`,ae)}}else{let M=Q(e,$),U=0,ee=e.state.env.get($);M.length===0&&ee!==void 0?(e.state.env.set(`${$}_0`,ee),e.state.env.delete($),U=1):M.length>0&&(U=Math.max(...M)+1);for(let ze=0;ze<X.length;ze++)e.state.env.set(`${$}_${U+ze}`,H(e,X[ze]));let ae=U+X.length;e.state.env.set(`${$}__length`,String(ae))}b($),n&&ie(e,$),i&&ge(e,$);continue}let O=N.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(O){let $=O[1],x=H(e,O[2]),R=K(e,$);if(R)return R;y($),f&&As(e,$),d&&Ps(e,$),h&&_s(e,$);let M=Q(e,$).length>0||e.state.associativeArrays?.has($);if(it(e,$)){let U=e.state.env.get($)??"0",ee=parseInt(U,10)||0,ae=parseInt(await rn(e,x),10)||0;x=String(ee+ae),e.state.env.set($,x)}else if(M){x=qe(e,$,x);let U=`${$}_0`,ee=e.state.env.get(U)??"";e.state.env.set(U,ee+x)}else{x=qe(e,$,x);let U=e.state.env.get($)??"";e.state.env.set($,U+x)}b($),n&&ie(e,$),i&&ge(e,$),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add($));continue}if(N.includes("=")){let $=N.indexOf("="),x=N.slice(0,$),R=N.slice($+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(x)){E+=`bash: typeset: \`${x}': not a valid identifier
104
+ `,T=1;continue}let X=K(e,x);if(X)return X;if(y(x),a){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){E+=`bash: declare: \`${R}': invalid variable name for name reference
105
+ `,T=1;continue}e.state.env.set(x,R),Pe(e,x),R!==""&&Qt(e,R)&&Yt(e,x),b(x),n&&ie(e,x),i&&ge(e,x);continue}if(f&&As(e,x),d&&Ps(e,x),h&&_s(e,x),it(e,x)&&(R=await rn(e,R)),R=qe(e,x,R),de(e,x)){let M=Te(e,x);M&&M!==x?e.state.env.set(M,R):e.state.env.set(x,R)}else e.state.env.set(x,R);b(x),n&&ie(e,x),i&&ge(e,x),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(x))}else{let $=N;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)){E+=`bash: typeset: \`${$}': not a valid identifier
106
+ `,T=1;continue}if(s||r?w($):y($),a){Pe(e,$);let R=e.state.env.get($);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?cr(e,$):R&&Qt(e,R)&&Yt(e,$),b($),n&&ie(e,$),i&&ge(e,$);continue}if(f&&As(e,$),d&&Ps(e,$),h&&_s(e,$),r){if(Q(e,$).length>0){E+=`bash: declare: ${$}: cannot convert indexed to associative array
107
+ `,T=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)}let x=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${$}_`)&&!R.startsWith(`${$}__length`));!e.state.env.has($)&&!x&&(s||r?e.state.env.set(`${$}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add($))),b($),n&&ie(e,$),i&&ge(e,$)}}return _("",E,T)}async function ks(e,t){let s=!1,r=!1,n=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")r=!0;else if(a==="-p")n=!0;else if(a==="--"){i.push(...t.slice(o+1));break}else a.startsWith("-")||i.push(a)}if(i.length===0){let o="",a=Array.from(e.state.readonlyVars||[]).sort();for(let l of a){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -r ${l}="${u}"
108
+ `}}return F(o)}for(let o of i){let a=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(a){let f=a[1],d=a[2],h=K(e,f);if(h)return h;let m=Ee(d);if(e.state.associativeArrays?.has(f)){let p=xt(d);for(let[g,S]of p){let v=H(e,S);e.state.env.set(`${f}_${g}`,v)}}else{let p=Q(e,f),g=0,S=e.state.env.get(f);p.length===0&&S!==void 0?(e.state.env.set(`${f}_0`,S),e.state.env.delete(f),g=1):p.length>0&&(g=Math.max(...p)+1);for(let C=0;C<m.length;C++)e.state.env.set(`${f}_${g+C}`,H(e,m[C]));let v=g+m.length;e.state.env.set(`${f}__length`,String(v))}ie(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=H(e,l[2]),h=K(e,f);if(h)return h;let m=e.state.env.get(f)??"";e.state.env.set(f,m+d),ie(e,f);continue}let c=Vr(o);if(c.value===void 0&&!c.isArray){ie(e,c.name);continue}let u=await Br(e,c,{makeReadonly:!0});if(u)return u}return L}function Ns(e){return e.state.directoryStack??=[],e.state.directoryStack}function ot(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Zi(e){let t=e.split("/").filter(r=>r&&r!=="."),s=[];for(let r of t)r===".."?s.pop():s.push(r);return`/${s.join("/")}`}async function Os(e,t){let s=Ns(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 A(`bash: pushd: too many arguments
109
+ `,2);r=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return A(`bash: pushd: ${l}: invalid option
110
+ `,2);if(r!==void 0)return A(`bash: pushd: too many arguments
111
+ `,2);r=l}}if(r===void 0){if(s.length<2)return A(`bash: pushd: no other directory
112
+ `,1);let a=s[0];s[0]=s[1],s[1]=a,r=s[0]}let n;if(r.startsWith("/"))n=r;else if(r===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),n=`/${a.join("/")}`}else r==="."?n=e.state.cwd:r.startsWith("~")?n=(e.state.env.get("HOME")||"/")+r.slice(1):n=`${e.state.cwd}/${r}`;n=Zi(n);try{if(!(await e.fs.stat(n)).isDirectory)return A(`bash: pushd: ${r}: Not a directory
113
+ `,1)}catch{return A(`bash: pushd: ${r}: No such file or directory
114
114
  `,1)}s.unshift(e.state.cwd),e.state.previousDir=e.state.cwd,e.state.cwd=n,e.state.env.set("PWD",n),e.state.env.set("OLDPWD",e.state.previousDir);let i=e.state.env.get("HOME")||"",o=`${[n,...s].map(a=>ot(a,i)).join(" ")}
115
- `;return F(o)}function xs(e,t){let s=Ns(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?S(`bash: popd: ${o}: invalid option
116
- `,2):S(`bash: popd: too many arguments
117
- `,2);if(s.length===0)return S(`bash: popd: directory stack empty
118
- `,1);let r=s.shift();if(!r)return S(`bash: popd: directory stack empty
115
+ `;return F(o)}function xs(e,t){let s=Ns(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?A(`bash: popd: ${o}: invalid option
116
+ `,2):A(`bash: popd: too many arguments
117
+ `,2);if(s.length===0)return A(`bash: popd: directory stack empty
118
+ `,1);let r=s.shift();if(!r)return A(`bash: popd: directory stack empty
119
119
  `,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 n=e.state.env.get("HOME")||"",i=`${[r,...s].map(o=>ot(o,n)).join(" ")}
120
- `;return F(i)}function Ts(e,t){let s=Ns(e),r=!1,n=!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")n=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return S(`bash: dirs: -${f}: invalid option
121
- `,2);else return S(`bash: dirs: too many arguments
120
+ `;return F(i)}function Ts(e,t){let s=Ns(e),r=!1,n=!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")n=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return A(`bash: dirs: -${f}: invalid option
121
+ `,2);else return A(`bash: dirs: too many arguments
122
122
  `,1);if(r)return e.state.directoryStack=[],L;let a=[e.state.cwd,...s],l=e.state.env.get("HOME")||"",c;return o?(c=a.map((u,f)=>{let d=n?u:ot(u,l);return` ${f} ${d}`}).join(`
123
123
  `),c+=`
124
124
  `):i?c=a.map(u=>n?u:ot(u,l)).join(`
125
125
  `)+`
126
126
  `:c=a.map(u=>n?u:ot(u,l)).join(" ")+`
127
- `,F(c)}async function Ft(e,t,s){let r=t;if(r.length>0){let a=r[0];if(a==="--")r=r.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return S(`bash: eval: ${a}: invalid option
127
+ `,F(c)}async function Ft(e,t,s){let r=t;if(r.length>0){let a=r[0];if(a==="--")r=r.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return A(`bash: eval: ${a}: invalid option
128
128
  eval: usage: eval [arg ...]
129
- `,2)}if(r.length===0)return L;let n=r.join(" ");if(n.trim()==="")return L;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=we(n);return await e.executeScript(a)}catch(a){if(a instanceof le||a instanceof ce||a instanceof ne||a instanceof z)throw a;if(a.name==="ParseException")return S(`bash: eval: ${a.message}
129
+ `,2)}if(r.length===0)return L;let n=r.join(" ");if(n.trim()==="")return L;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=we(n);return await e.executeScript(a)}catch(a){if(a instanceof le||a instanceof ce||a instanceof ne||a instanceof z)throw a;if(a.name==="ParseException")return A(`bash: eval: ${a.message}
130
130
  `);throw a}finally{e.state.groupStdin=i}}function Ds(e,t){let s,r="";if(t.length===0)s=e.state.lastExitCode;else{let n=t[0],i=Number.parseInt(n,10);n===""||Number.isNaN(i)||!/^-?\d+$/.test(n)?(r=`bash: exit: ${n}: numeric argument required
131
131
  `,s=2):s=(i%256+256)%256}throw new z(s,"",r)}function Is(e,t){let s=!1,r=[];for(let o of t)o==="-n"?s=!0:o==="-p"||o==="--"||r.push(o);if(r.length===0&&!s){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);if(u!==void 0){let f=u.replace(/\\/g,"\\\\").replace(/"/g,'\\"');o+=`declare -x ${c}="${f}"
132
132
  `}}return F(o)}if(s){for(let o of r){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=H(e,o.slice(c+1)),e.state.env.set(a,l)}else a=o;yt(e,a)}return L}let n="",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=H(e,u[2]),c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=H(e,o.slice(f+1))}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){n+=`bash: export: \`${o}': not a valid identifier
133
- `,i=1;continue}if(l!==void 0)if(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,"");ge(e,a)}return P("",n,i)}function Mt(e,t){if(t.length<2)return S(`bash: getopts: usage: getopts optstring name [arg ...]
133
+ `,i=1;continue}if(l!==void 0)if(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,"");ge(e,a)}return _("",n,i)}function Mt(e,t){if(t.length<2)return A(`bash: getopts: usage: getopts optstring name [arg ...]
134
134
  `);let s=t[0],r=t[1],n=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r),i=s.startsWith(":"),o=i?s.slice(1):s,a;if(t.length>2)a=t.slice(2);else{let p=Number.parseInt(e.state.env.get("#")||"0",10);a=[];for(let g=1;g<=p;g++)a.push(e.state.env.get(String(g))||"")}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 n||e.state.env.set(r,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return n||e.state.env.set(r,"?"),{exitCode:n?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),n||e.state.env.set(r,"?"),{exitCode:n?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"),Mt(e,t);let h=o.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
135
135
  `,n||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:n?2:0,stdout:"",stderr:p}}if(h+1<o.length&&o[h+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 p="";return i?(e.state.env.set("OPTARG",d),n||e.state.env.set(r,":")):(p=`bash: option requires an argument -- ${d}
136
- `,n||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:0,stdout:"",stderr:p}}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 n||e.state.env.set(r,d),{exitCode:n?2:0,stdout:"",stderr:""}}async function Rs(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,r=!1,n=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let m=t[c];if(m==="--"){c++,l.push(...t.slice(c));break}if(m==="-r")s=!0,c++;else if(m==="-d")r=!0,c++;else if(m==="-l")n=!0,c++;else if(m==="-t")o=!0,c++;else if(m==="-p"){if(i=!0,c++,c>=t.length)return S(`bash: hash: -p: option requires an argument
137
- `,1);a=t[c],c++}else if(m.startsWith("-")&&m.length>1){for(let p of m.slice(1))if(p==="r")s=!0;else if(p==="d")r=!0;else if(p==="l")n=!0;else if(p==="t")o=!0;else return p==="p"?S(`bash: hash: -p: option requires an argument
138
- `,1):S(`bash: hash: -${p}: invalid option
139
- `,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),L;if(r){if(l.length===0)return S(`bash: hash: -d: option requires an argument
136
+ `,n||e.state.env.set(r,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:n?2:0,stdout:"",stderr:p}}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 n||e.state.env.set(r,d),{exitCode:n?2:0,stdout:"",stderr:""}}async function Rs(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,r=!1,n=!1,i=!1,o=!1,a="",l=[],c=0;for(;c<t.length;){let m=t[c];if(m==="--"){c++,l.push(...t.slice(c));break}if(m==="-r")s=!0,c++;else if(m==="-d")r=!0,c++;else if(m==="-l")n=!0,c++;else if(m==="-t")o=!0,c++;else if(m==="-p"){if(i=!0,c++,c>=t.length)return A(`bash: hash: -p: option requires an argument
137
+ `,1);a=t[c],c++}else if(m.startsWith("-")&&m.length>1){for(let p of m.slice(1))if(p==="r")s=!0;else if(p==="d")r=!0;else if(p==="l")n=!0;else if(p==="t")o=!0;else return p==="p"?A(`bash: hash: -p: option requires an argument
138
+ `,1):A(`bash: hash: -${p}: invalid option
139
+ `,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),L;if(r){if(l.length===0)return A(`bash: hash: -d: option requires an argument
140
140
  `,1);let m=!1,p="";for(let g of l)e.state.hashTable.has(g)?e.state.hashTable.delete(g):(p+=`bash: hash: ${g}: not found
141
- `,m=!0);return m?S(p,1):L}if(o){if(l.length===0)return S(`bash: hash: -t: option requires an argument
142
- `,1);let m="",p=!1,g="";for(let b of l){let E=e.state.hashTable.get(b);E?l.length>1?m+=`${b} ${E}
143
- `:m+=`${E}
144
- `:(g+=`bash: hash: ${b}: not found
145
- `,p=!0)}return p?{exitCode:1,stdout:m,stderr:g}:F(m)}if(i){if(l.length===0)return S(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
141
+ `,m=!0);return m?A(p,1):L}if(o){if(l.length===0)return A(`bash: hash: -t: option requires an argument
142
+ `,1);let m="",p=!1,g="";for(let S of l){let v=e.state.hashTable.get(S);v?l.length>1?m+=`${S} ${v}
143
+ `:m+=`${v}
144
+ `:(g+=`bash: hash: ${S}: not found
145
+ `,p=!0)}return p?{exitCode:1,stdout:m,stderr:g}:F(m)}if(i){if(l.length===0)return A(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
146
146
  `,1);let m=l[0];return e.state.hashTable.set(m,a),L}if(l.length===0){if(e.state.hashTable.size===0)return F(`hash: hash table empty
147
147
  `);let m="";if(n)for(let[p,g]of e.state.hashTable)m+=`builtin hash -p ${g} ${p}
148
148
  `;else{m=`hits command
149
149
  `;for(let[,p]of e.state.hashTable)m+=` 1 ${p}
150
150
  `}return F(m)}let u=!1,f="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let m of l){if(m.includes("/")){f+=`bash: hash: ${m}: cannot use / in name
151
- `,u=!0;continue}let p=!1;for(let g of h){if(!g)continue;let b=`${g}/${m}`;if(await e.fs.exists(b)){e.state.hashTable.set(m,b),p=!0;break}}p||(f+=`bash: hash: ${m}: not found
152
- `,u=!0)}return u?S(f,1):L}var nn=new Map([[":",[": [arguments]",`Null command.
151
+ `,u=!0;continue}let p=!1;for(let g of h){if(!g)continue;let S=`${g}/${m}`;if(await e.fs.exists(S)){e.state.hashTable.set(m,S),p=!0;break}}p||(f+=`bash: hash: ${m}: not found
152
+ `,u=!0)}return u?A(f,1):L}var nn=new Map([[":",[": [arguments]",`Null command.
153
153
  No effect; the command does nothing.
154
154
  Exit Status:
155
155
  Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
@@ -494,31 +494,31 @@ eval: usage: eval [arg ...]
494
494
  job specification, and reports its termination status.
495
495
  Exit Status:
496
496
  Returns the status of the last ID; fails if ID is invalid or an invalid
497
- option is given.`]]]),on=[...nn.keys()].sort();function Ls(e,t){let s=!1,r=[],n=0;for(;n<t.length;){let l=t[n];if(l==="--"){for(n++;n<t.length;)r.push(t[n]),n++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")s=!0;else return S(`bash: help: -${u}: invalid option
497
+ option is given.`]]]),on=[...nn.keys()].sort();function Ls(e,t){let s=!1,r=[],n=0;for(;n<t.length;){let l=t[n];if(l==="--"){for(n++;n<t.length;)r.push(t[n]),n++;break}if(l.startsWith("-")&&l.length>1){for(let c=1;c<l.length;c++){let u=l[c];if(u==="s")s=!0;else return A(`bash: help: -${u}: invalid option
498
498
  `,2)}n++}else r.push(l),n++}if(r.length===0)return Xi();let i="",o=!1,a="";for(let l of r){let c=Gi(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
499
499
  `,o=!0;continue}for(let u of c){let f=nn.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
500
500
  `:i+=`${u}: ${d}
501
501
  ${h}
502
502
  `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Gi(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=tt(`^${t}$`);return on.filter(r=>s.test(r))}function Xi(){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,s=on.slice(),r=Math.ceil(s.length/2);for(let n=0;n<r;n++){let i=s[n]||"",o=s[n+r]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return F(`${e.join(`
503
503
  `)}
504
- `)}function Ki(e){let t=[],s="",r=0;for(let n of e){for(let i of n)i==="("?r++:i===")"&&r--;s?s+=` ${n}`:s=n,r===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Fs(e,t){if(t.length===0)return S(`bash: let: expression expected
505
- `);let s=Ki(t),r=0;for(let n of s)try{let o=we(`(( ${n} ))`).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 V(e,a.expression.expression))}}catch(i){return S(`bash: let: ${n}: ${i.message}
506
- `)}return P("","",r===0?1:0)}async function Ms(e,t){if(e.state.localScopes.length===0)return S(`bash: local: can only be used in a function
504
+ `)}function Ki(e){let t=[],s="",r=0;for(let n of e){for(let i of n)i==="("?r++:i===")"&&r--;s?s+=` ${n}`:s=n,r===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Fs(e,t){if(t.length===0)return A(`bash: let: expression expected
505
+ `);let s=Ki(t),r=0;for(let n of s)try{let o=we(`(( ${n} ))`).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 V(e,a.expression.expression))}}catch(i){return A(`bash: let: ${n}: ${i.message}
506
+ `)}return _("","",r===0?1:0)}async function Ms(e,t){if(e.state.localScopes.length===0)return A(`bash: local: can only be used in a function
507
507
  `);let s=e.state.localScopes[e.state.localScopes.length-1],r="",n=0,i=!1,o=!1,a=!1,l=[];for(let c of t)if(c==="-n")i=!0;else if(c==="-a")o=!0;else if(c==="-p")a=!0;else if(c.startsWith("-")&&!c.includes("="))for(let u of c.slice(1))u==="n"?i=!0:u==="a"?o=!0:u==="p"&&(a=!0);else l.push(c);if(l.length===0){let c="",u=Array.from(s.keys()).filter(f=>!f.includes("_")||!f.match(/_\d+$/)).filter(f=>!f.includes("__length")).sort();for(let f of u){let d=e.state.env.get(f);d!==void 0&&(c+=`${f}=${d}
508
- `)}return P(c,"",0)}for(let c of l){let u,f,d=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){u=d[1];let b=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
509
- `,n=1;continue}if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let y=`${u}_`;for(let w of e.state.env.keys())w.startsWith(y)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let E=`${u}_`;for(let y of e.state.env.keys())y.startsWith(E)&&!y.includes("__")&&e.state.env.delete(y);let k=Ee(b);for(let y=0;y<k.length;y++)e.state.env.set(`${u}_${y}`,k[y]);e.state.env.set(`${u}__length`,String(k.length)),Ie(e,u),i&&Pe(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){u=h[1];let b=h[2];if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let _=`${u}_`;for(let T of e.state.env.keys())T.startsWith(_)&&!T.includes("__")&&(s.has(T)||s.set(T,e.state.env.get(T)));let x=`${u}__length`;e.state.env.has(x)&&!s.has(x)&&s.set(x,e.state.env.get(x))}let E=Ee(b),k=Q(e,u),y=0,w=e.state.env.get(u);k.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),y=1):k.length>0&&(y=Math.max(...k)+1);for(let _=0;_<E.length;_++)e.state.env.set(`${u}_${y+_}`,H(e,E[_]));let v=y+E.length;e.state.env.set(`${u}__length`,String(v)),Ie(e,u),i&&Pe(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let b=H(e,m[2]);K(e,u,"bash"),s.has(u)||s.set(u,e.state.env.get(u));let E=e.state.env.get(u)??"";e.state.env.set(u,E+b),Ie(e,u),i&&Pe(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){u=p[1];let b=p[2],E=H(e,p[3]);if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let _ of e.state.env.keys())_.startsWith(w)&&!_.includes("__")&&(s.has(_)||s.set(_,e.state.env.get(_)));let v=`${u}__length`;e.state.env.has(v)&&!s.has(v)&&s.set(v,e.state.env.get(v))}let k;try{let w=new W,v=Z(w,b);k=await V(e,v.expression)}catch{let w=parseInt(b,10);k=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${k}`,E);let y=parseInt(e.state.env.get(`${u}__length`)??"0",10);k>=y&&e.state.env.set(`${u}__length`,String(k+1)),Ie(e,u),i&&Pe(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=H(e,c.slice(b+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
510
- `,n=1;continue}let g=s.has(u);if(f!==void 0){let b=e.state.env.get(u);if(e.state.tempEnvBindings){let E=e.state.accessedTempEnvVars?.has(u),k=e.state.mutatedTempEnvVars?.has(u);if(!E&&!k)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(u)){b=w.get(u);break}}}jr(e,u,b)}if(!g){let b=e.state.env.get(u);if(e.state.tempEnvBindings)for(let E=e.state.tempEnvBindings.length-1;E>=0;E--){let k=e.state.tempEnvBindings[E];if(k.has(u)){b=k.get(u);break}}if(s.set(u,b),o){let E=`${u}_`;for(let y of e.state.env.keys())y.startsWith(E)&&!y.includes("__")&&(s.has(y)||s.set(y,e.state.env.get(y)));let k=`${u}__length`;e.state.env.has(k)&&!s.has(k)&&s.set(k,e.state.env.get(k))}}if(o&&f===void 0){let b=`${u}_`;for(let E of e.state.env.keys())E.startsWith(b)&&!E.includes("__")&&e.state.env.delete(E);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(K(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
511
- `,n=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let b=e.state.tempEnvBindings?.some(E=>E.has(u));!g&&!b&&e.state.env.delete(u)}Ie(e,u),i&&Pe(e,u)}return P("",r,n)}function Ws(e,t,s){let r=`
512
- `,n=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let E=t[c];E==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
513
- `,c+=2):E==="-n"&&c+1<t.length?(n=Number.parseInt(t[c+1],10)||0,c+=2):E==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):E==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):E==="-t"?(a=!0,c++):E==="-u"||E==="-C"||E==="-c"?c+=2:(E.startsWith("-")||(l=E),c++)}let u=s;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=u,h=0,m=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let E=d.indexOf(r);if(E===-1){if(d.length>0){if(m<o)m++;else if(n===0||h<n){if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
514
- `,1);let w=d,v=w.indexOf("\0");v!==-1&&(w=w.substring(0,v)),f.push(w),h++}}break}let k=d.substring(0,E),y=k.indexOf("\0");if(y!==-1&&(k=k.substring(0,y)),!a&&r!=="\0"&&(k+=r),d=d.substring(E+r.length),m<o){m++;continue}if(n>0&&h>=n)break;if(i+h>=p)return P("",`mapfile: array element limit exceeded (${p})
515
- `,1);f.push(k),h++}i===0&&ve(e,l);for(let E=0;E<f.length;E++)e.state.env.set(`${l}_${i+E}`,f[E]);let g=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(g,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),P("","",0)}function Yi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}function Qi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function zs(e,t,s,r=-1){let n=!1,i=`
516
- `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(A,C)=>{let N=1;for(;N<A.length;){let $=A[N];if($==="r")n=!0,N++;else if($==="s")N++;else{if($==="d")return N+1<A.length?(i=A.substring(N+1),{nextArgIndex:C+1}):C+1<t.length?(i=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if($==="n"){if(N+1<A.length){let O=A.substring(N+1);return a=Number.parseInt(O,10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:C+1}}else if(C+1<t.length)return a=Number.parseInt(t[C+1],10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if($==="N"){if(N+1<A.length){let O=A.substring(N+1);return l=Number.parseInt(O,10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:C+1}}else if(C+1<t.length)return l=Number.parseInt(t[C+1],10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else{if($==="a")return N+1<A.length?(c=A.substring(N+1),{nextArgIndex:C+1}):C+1<t.length?(c=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if($==="p")return N+1<A.length?(o=A.substring(N+1),{nextArgIndex:C+1}):C+1<t.length?(o=t[C+1],{nextArgIndex:C+2}):{nextArgIndex:C+1};if($==="u"){if(N+1<A.length){let O=A.substring(N+1);return u=Number.parseInt(O,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+1}}else if(C+1<t.length)return u=Number.parseInt(t[C+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if($==="t"){if(N+1<A.length){let O=A.substring(N+1);return f=Number.parseFloat(O),Number.isNaN(f)&&(f=0),{nextArgIndex:C+1}}else if(C+1<t.length)return f=Number.parseFloat(t[C+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:C+2};return{nextArgIndex:C+1}}else if($==="e"||$==="i"||$==="P"){if($==="i"&&C+1<t.length)return{nextArgIndex:C+2};N++}else N++}}}return{nextArgIndex:C+1}};for(;h<t.length;){let A=t[h];if(A.startsWith("-")&&A.length>1&&A!=="--"){let C=p(A,h);if(C.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(C.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=C.nextArgIndex}else if(A==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(A),h++}if(m)return P("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)ve(e,c);else{for(let A of d)e.state.env.set(A,"");d.length===0&&e.state.env.set("REPLY","")}return P("","",0)}if(f<0&&f!==-1)return P("","",1);let g=s;u>=0?e.state.fileDescriptors?g=e.state.fileDescriptors.get(u)||"":g="":!g&&e.state.groupStdin!==void 0&&(g=e.state.groupStdin);let b=i===""?"\0":i,E="",k=0,y=!0,w=A=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,g.substring(A));else if(r>=0&&e.state.fileDescriptors){let C=e.state.fileDescriptors.get(r);if(C?.startsWith("__rw__:")){let N=Yi(C);if(N){let $=N.position+A;e.state.fileDescriptors.set(r,Qi(N.path,$,N.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(A))};if(l>=0){let A=Math.min(l,g.length);E=g.substring(0,A),k=A,y=A>=l,w(k);let C=d[0]||"REPLY";e.state.env.set(C,E);for(let N=1;N<d.length;N++)e.state.env.set(d[N],"");return P("","",y?0:1)}else if(a>=0){let A=0,C=0,N=!1;for(;C<g.length&&A<a;){let $=g[C];if($===b){k=C+1,N=!0;break}if(!n&&$==="\\"&&C+1<g.length){let O=g[C+1];if(O===b&&b===`
517
- `){C+=2,k=C;continue}if(O===b){C+=2,A++,E+=O,k=C;continue}E+=O,C+=2,A++,k=C}else E+=$,C++,A++,k=C}y=A>=a||N,w(k)}else{k=0;let A=0;for(;A<g.length;){let C=g[A];if(C===b){k=A+b.length,y=!0;break}if(!n&&C==="\\"&&A+1<g.length){let N=g[A+1];if(N===`
518
- `){A+=2;continue}if(N===b){E+=N,A+=2;continue}E+=C,E+=N,A+=2;continue}E+=C,A++}if(A>=g.length&&(y=!1,k=A,E.length===0&&g.length===0)){for(let C of d)e.state.env.set(C,"");return c&&ve(e,c),P("","",1)}w(k)}b===`
519
- `&&E.endsWith(`
520
- `)&&(E=E.slice(0,-1));let v=A=>n?A:A.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",v(E)),P("","",y?0:1);let _=or(e.state.env);if(c){let{words:A}=Kt(E,_,void 0,n),C=e.limits?.maxArrayElements??1e5;if(A.length>C)return P("",`read: array element limit exceeded (${C})
521
- `,1);ve(e,c);for(let N=0;N<A.length;N++)e.state.env.set(`${c}_${N}`,v(A[N]));return P("","",y?0:1)}let x=d.length,{words:T,wordStarts:I}=Kt(E,_,x,n);for(let A=0;A<d.length;A++){let C=d[A];if(A<d.length-1)e.state.env.set(C,v(T[A]??""));else if(A<I.length){let N=E.substring(I[A]);N=ar(N,_,n),N=v(N),e.state.env.set(C,N)}else e.state.env.set(C,"")}return P("","",y?0:1)}function Vs(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return S("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let r=t[0],n=Number.parseInt(r,10);if(r===""||Number.isNaN(n)||!/^-?\d+$/.test(r))return S(`bash: return: ${r}: numeric argument required
508
+ `)}return _(c,"",0)}for(let c of l){let u,f,d=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){u=d[1];let S=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
509
+ `,n=1;continue}if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let y=`${u}_`;for(let w of e.state.env.keys())w.startsWith(y)&&!w.includes("__")&&(s.has(w)||s.set(w,e.state.env.get(w)))}let v=`${u}_`;for(let y of e.state.env.keys())y.startsWith(v)&&!y.includes("__")&&e.state.env.delete(y);let C=Ee(S);for(let y=0;y<C.length;y++)e.state.env.set(`${u}_${y}`,C[y]);e.state.env.set(`${u}__length`,String(C.length)),Ie(e,u),i&&Pe(e,u);continue}let h=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){u=h[1];let S=h[2];if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let E=`${u}_`;for(let N of e.state.env.keys())N.startsWith(E)&&!N.includes("__")&&(s.has(N)||s.set(N,e.state.env.get(N)));let T=`${u}__length`;e.state.env.has(T)&&!s.has(T)&&s.set(T,e.state.env.get(T))}let v=Ee(S),C=Q(e,u),y=0,w=e.state.env.get(u);C.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),y=1):C.length>0&&(y=Math.max(...C)+1);for(let E=0;E<v.length;E++)e.state.env.set(`${u}_${y+E}`,H(e,v[E]));let b=y+v.length;e.state.env.set(`${u}__length`,String(b)),Ie(e,u),i&&Pe(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let S=H(e,m[2]);K(e,u,"bash"),s.has(u)||s.set(u,e.state.env.get(u));let v=e.state.env.get(u)??"";e.state.env.set(u,v+S),Ie(e,u),i&&Pe(e,u);continue}let p=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){u=p[1];let S=p[2],v=H(e,p[3]);if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let E of e.state.env.keys())E.startsWith(w)&&!E.includes("__")&&(s.has(E)||s.set(E,e.state.env.get(E)));let b=`${u}__length`;e.state.env.has(b)&&!s.has(b)&&s.set(b,e.state.env.get(b))}let C;try{let w=new W,b=Z(w,S);C=await V(e,b.expression)}catch{let w=parseInt(S,10);C=Number.isNaN(w)?0:w}e.state.env.set(`${u}_${C}`,v);let y=parseInt(e.state.env.get(`${u}__length`)??"0",10);C>=y&&e.state.env.set(`${u}__length`,String(C+1)),Ie(e,u),i&&Pe(e,u);continue}if(c.includes("=")){let S=c.indexOf("=");u=c.slice(0,S),f=H(e,c.slice(S+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){r+=`bash: local: \`${c}': not a valid identifier
510
+ `,n=1;continue}let g=s.has(u);if(f!==void 0){let S=e.state.env.get(u);if(e.state.tempEnvBindings){let v=e.state.accessedTempEnvVars?.has(u),C=e.state.mutatedTempEnvVars?.has(u);if(!v&&!C)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(u)){S=w.get(u);break}}}jr(e,u,S)}if(!g){let S=e.state.env.get(u);if(e.state.tempEnvBindings)for(let v=e.state.tempEnvBindings.length-1;v>=0;v--){let C=e.state.tempEnvBindings[v];if(C.has(u)){S=C.get(u);break}}if(s.set(u,S),o){let v=`${u}_`;for(let y of e.state.env.keys())y.startsWith(v)&&!y.includes("__")&&(s.has(y)||s.set(y,e.state.env.get(y)));let C=`${u}__length`;e.state.env.has(C)&&!s.has(C)&&s.set(C,e.state.env.get(C))}}if(o&&f===void 0){let S=`${u}_`;for(let v of e.state.env.keys())v.startsWith(S)&&!v.includes("__")&&e.state.env.delete(v);e.state.env.set(`${u}__length`,"0")}else if(f!==void 0){if(K(e,u,"bash"),i&&f!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(f)){r+=`bash: local: \`${f}': invalid variable name for name reference
511
+ `,n=1;continue}e.state.env.set(u,f),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(u))}else{let S=e.state.tempEnvBindings?.some(v=>v.has(u));!g&&!S&&e.state.env.delete(u)}Ie(e,u),i&&Pe(e,u)}return _("",r,n)}function Ws(e,t,s){let r=`
512
+ `,n=0,i=0,o=0,a=!1,l="MAPFILE",c=0;for(;c<t.length;){let v=t[c];v==="-d"&&c+1<t.length?(r=t[c+1]===""?"\0":t[c+1]||`
513
+ `,c+=2):v==="-n"&&c+1<t.length?(n=Number.parseInt(t[c+1],10)||0,c+=2):v==="-O"&&c+1<t.length?(i=Number.parseInt(t[c+1],10)||0,c+=2):v==="-s"&&c+1<t.length?(o=Number.parseInt(t[c+1],10)||0,c+=2):v==="-t"?(a=!0,c++):v==="-u"||v==="-C"||v==="-c"?c+=2:(v.startsWith("-")||(l=v),c++)}let u=s;!u&&e.state.groupStdin!==void 0&&(u=e.state.groupStdin);let f=[],d=u,h=0,m=0,p=e.limits?.maxArrayElements??1e5;for(;d.length>0;){let v=d.indexOf(r);if(v===-1){if(d.length>0){if(m<o)m++;else if(n===0||h<n){if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
514
+ `,1);let w=d,b=w.indexOf("\0");b!==-1&&(w=w.substring(0,b)),f.push(w),h++}}break}let C=d.substring(0,v),y=C.indexOf("\0");if(y!==-1&&(C=C.substring(0,y)),!a&&r!=="\0"&&(C+=r),d=d.substring(v+r.length),m<o){m++;continue}if(n>0&&h>=n)break;if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
515
+ `,1);f.push(C),h++}i===0&&ve(e,l);for(let v=0;v<f.length;v++)e.state.env.set(`${l}_${i+v}`,f[v]);let g=parseInt(e.state.env.get(`${l}__length`)||"0",10),S=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(g,S))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),_("","",0)}function Yi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}function Qi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function zs(e,t,s,r=-1){let n=!1,i=`
516
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(P,k)=>{let O=1;for(;O<P.length;){let $=P[O];if($==="r")n=!0,O++;else if($==="s")O++;else{if($==="d")return O+1<P.length?(i=P.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(i=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if($==="n"){if(O+1<P.length){let x=P.substring(O+1);return a=Number.parseInt(x,10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:k+1}}else if(k+1<t.length)return a=Number.parseInt(t[k+1],10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:k+2};return{nextArgIndex:k+1}}else if($==="N"){if(O+1<P.length){let x=P.substring(O+1);return l=Number.parseInt(x,10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:k+1}}else if(k+1<t.length)return l=Number.parseInt(t[k+1],10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:k+2};return{nextArgIndex:k+1}}else{if($==="a")return O+1<P.length?(c=P.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(c=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if($==="p")return O+1<P.length?(o=P.substring(O+1),{nextArgIndex:k+1}):k+1<t.length?(o=t[k+1],{nextArgIndex:k+2}):{nextArgIndex:k+1};if($==="u"){if(O+1<P.length){let x=P.substring(O+1);return u=Number.parseInt(x,10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:k+1}}else if(k+1<t.length)return u=Number.parseInt(t[k+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:k+2};return{nextArgIndex:k+1}}else if($==="t"){if(O+1<P.length){let x=P.substring(O+1);return f=Number.parseFloat(x),Number.isNaN(f)&&(f=0),{nextArgIndex:k+1}}else if(k+1<t.length)return f=Number.parseFloat(t[k+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:k+2};return{nextArgIndex:k+1}}else if($==="e"||$==="i"||$==="P"){if($==="i"&&k+1<t.length)return{nextArgIndex:k+2};O++}else O++}}}return{nextArgIndex:k+1}};for(;h<t.length;){let P=t[h];if(P.startsWith("-")&&P.length>1&&P!=="--"){let k=p(P,h);if(k.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(k.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=k.nextArgIndex}else if(P==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(P),h++}if(m)return _("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)ve(e,c);else{for(let P of d)e.state.env.set(P,"");d.length===0&&e.state.env.set("REPLY","")}return _("","",0)}if(f<0&&f!==-1)return _("","",1);let g=s;u>=0?e.state.fileDescriptors?g=e.state.fileDescriptors.get(u)||"":g="":!g&&e.state.groupStdin!==void 0&&(g=e.state.groupStdin);let S=i===""?"\0":i,v="",C=0,y=!0,w=P=>{if(u>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(u,g.substring(P));else if(r>=0&&e.state.fileDescriptors){let k=e.state.fileDescriptors.get(r);if(k?.startsWith("__rw__:")){let O=Yi(k);if(O){let $=O.position+P;e.state.fileDescriptors.set(r,Qi(O.path,$,O.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(P))};if(l>=0){let P=Math.min(l,g.length);v=g.substring(0,P),C=P,y=P>=l,w(C);let k=d[0]||"REPLY";e.state.env.set(k,v);for(let O=1;O<d.length;O++)e.state.env.set(d[O],"");return _("","",y?0:1)}else if(a>=0){let P=0,k=0,O=!1;for(;k<g.length&&P<a;){let $=g[k];if($===S){C=k+1,O=!0;break}if(!n&&$==="\\"&&k+1<g.length){let x=g[k+1];if(x===S&&S===`
517
+ `){k+=2,C=k;continue}if(x===S){k+=2,P++,v+=x,C=k;continue}v+=x,k+=2,P++,C=k}else v+=$,k++,P++,C=k}y=P>=a||O,w(C)}else{C=0;let P=0;for(;P<g.length;){let k=g[P];if(k===S){C=P+S.length,y=!0;break}if(!n&&k==="\\"&&P+1<g.length){let O=g[P+1];if(O===`
518
+ `){P+=2;continue}if(O===S){v+=O,P+=2;continue}v+=k,v+=O,P+=2;continue}v+=k,P++}if(P>=g.length&&(y=!1,C=P,v.length===0&&g.length===0)){for(let k of d)e.state.env.set(k,"");return c&&ve(e,c),_("","",1)}w(C)}S===`
519
+ `&&v.endsWith(`
520
+ `)&&(v=v.slice(0,-1));let b=P=>n?P:P.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",b(v)),_("","",y?0:1);let E=or(e.state.env);if(c){let{words:P}=Kt(v,E,void 0,n),k=e.limits?.maxArrayElements??1e5;if(P.length>k)return _("",`read: array element limit exceeded (${k})
521
+ `,1);ve(e,c);for(let O=0;O<P.length;O++)e.state.env.set(`${c}_${O}`,b(P[O]));return _("","",y?0:1)}let T=d.length,{words:N,wordStarts:I}=Kt(v,E,T,n);for(let P=0;P<d.length;P++){let k=d[P];if(P<d.length-1)e.state.env.set(k,b(N[P]??""));else if(P<I.length){let O=v.substring(I[P]);O=ar(O,E,n),O=b(O),e.state.env.set(k,O)}else e.state.env.set(k,"")}return _("","",y?0:1)}function Vs(e,t){if(e.state.callDepth===0&&e.state.sourceDepth===0)return A("bash: return: can only `return' from a function or sourced script\n");let s=e.state.lastExitCode;if(t.length>0){let r=t[0],n=Number.parseInt(r,10);if(r===""||Number.isNaN(n)||!/^-?\d+$/.test(r))return A(`bash: return: ${r}: numeric argument required
522
522
  `,2);s=(n%256+256)%256}throw new ne(s)}var Wt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
523
523
  Options:
524
524
  -e Exit immediately if a command exits with non-zero status
@@ -538,30 +538,30 @@ Options:
538
538
  `,an=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]]),ln=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]]),cn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],un=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function fn(e,t,s){t!==null&&(s&&(t==="vi"?e.state.options.emacs=!1:t==="emacs"&&(e.state.options.vi=!1)),e.state.options[t]=s,Be(e))}function Ji(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function eo(e,t){let s=Q(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${n}]=${We(i)}`});return`${t}=(${r.join(" ")})`}function to(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function so(e,t){let s=xe(e,t);if(s.length===0)return`${t}=()`;let r=s.map(n=>{let i=e.state.env.get(`${t}_${n}`)??"";return`[${to(n)}]=${We(i)}`});return`${t}=(${r.join(" ")} )`}function ro(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let r of e.state.env.keys()){let n=r.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(n){let i=n[1];s.has(i)||t.add(i)}}return t}function no(e){return e.state.associativeArrays??new Set}function js(e,t){if(t.includes("--help"))return F(Wt);if(t.length===0){let r=ro(e),n=no(e),i=l=>{for(let c of n){let u=`${c}_`,f=`${c}__length`;if(l!==f&&l.startsWith(u)){if(l.slice(u.length).startsWith("_length"))continue;return!0}}return!1},o=[];for(let[l,c]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(l)||r.has(l)||n.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&r.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&r.has(f[1])||i(l)||f&&n.has(f[1])||o.push([l,c])}let a=[];for(let[l,c]of o.sort(([u],[f])=>u<f?-1:u>f?1:0))a.push(`${l}=${Lt(c)}`);for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(eo(e,l));for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(so(e,l));return a.sort((l,c)=>{let u=l.split("=")[0],f=c.split("=")[0];return u<f?-1:u>f?1:0}),F(a.length>0?`${a.join(`
539
539
  `)}
540
540
  `:"")}let s=0;for(;s<t.length;){let r=t[s];if((r==="-o"||r==="+o")&&Ji(t,s)){let n=t[s+1];if(!ln.has(n)){let i=`bash: set: ${n}: invalid option name
541
- ${Wt}`;if(e.state.options.posix)throw new pe(1,"",i);return S(i)}fn(e,ln.get(n)??null,r==="-o"),s+=2;continue}if(r==="-o"){let n=cn.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=un.map(a=>`${a.padEnd(16)}off`),o=[...n,...i].sort();return F(`${o.join(`
541
+ ${Wt}`;if(e.state.options.posix)throw new pe(1,"",i);return A(i)}fn(e,ln.get(n)??null,r==="-o"),s+=2;continue}if(r==="-o"){let n=cn.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=un.map(a=>`${a.padEnd(16)}off`),o=[...n,...i].sort();return F(`${o.join(`
542
542
  `)}
543
543
  `)}if(r==="+o"){let n=cn.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=un.map(a=>`set +o ${a}`),o=[...n,...i].sort();return F(`${o.join(`
544
544
  `)}
545
545
  `)}if(r.length>1&&(r[0]==="-"||r[0]==="+")&&r[1]!=="-"){let n=r[0]==="-";for(let i=1;i<r.length;i++){let o=r[i];if(!an.has(o)){let a=`bash: set: ${r[0]}${o}: invalid option
546
- ${Wt}`;if(e.state.options.posix)throw new pe(1,"",a);return S(a)}fn(e,an.get(o)??null,n)}s++;continue}if(r==="--")return Bs(e,t.slice(s+1)),L;if(r==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Be(e),s+1<t.length)return Bs(e,t.slice(s+1)),L;s++;continue}if(r==="+"){s++;continue}if(r.startsWith("-")||r.startsWith("+")){let n=`bash: set: ${r}: invalid option
547
- ${Wt}`;if(e.state.options.posix)throw new pe(1,"",n);return S(n)}return Bs(e,t.slice(s)),L}return L}function Bs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;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 Hs(e,t){let s=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
548
- `;if(e.state.options.posix)throw new pe(1,"",a);return S(a)}s=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(s>r){let o=`bash: shift: shift count out of range
549
- `;if(e.state.options.posix)throw new pe(1,"",o);return S(o)}if(s===0)return L;let n=[];for(let o=1;o<=r;o++)n.push(e.state.env.get(String(o))||"");let i=n.slice(s);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(" ")),L}async function Us(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return P("",`bash: source: filename argument required
550
- `,2);let r=s[0],n=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),n=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),n=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),n=f}catch{}}}if(i===null)return S(`bash: ${r}: No such file or directory
551
- `);let o=new Map;if(s.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=s.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,s.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};e.state.sourceDepth++,e.state.currentSource=r;try{let c=we(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof z)throw c;if(c instanceof ne)return P(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return S(`bash: ${r}: ${c.message}
552
- `);throw c}}function dn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function io(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function hn(e,t){if(io(t))return null;try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function pn(e,t){if(e.state.localVarStack?.has(t)){let r=Dt(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let n=e.state.localVarStack?.get(t);if(!n||n.length===0)Tt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),qs(e,t);else{let i=n[n.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),Tt(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 n=e.state.localScopes[r];if(n.has(t)){let i=n.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),n.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||Tt(e,t),!0}}return!1}function qs(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let r=e.state.tempEnvBindings[s];if(r.has(t)){let n=r.get(t);return n===void 0?e.state.env.delete(t):e.state.env.set(t,n),r.delete(t),!0}}return!1}async function mn(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),n=new W().parseWordFromString(s,!0,!1);return D(e,n)}if(t.includes("$")){let r=new W().parseWordFromString(t,!1,!1);return D(e,r)}return t}async function Zs(e,t){let s="both",r="",n=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(h==="@"||h==="*"){let k=ye(e,d);for(let[y]of k)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let k=await mn(e,h);e.state.env.delete(`${d}_${k}`);continue}let p=Jt(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){r+=`bash: unset: ${d}: not an array variable
553
- `,n=1;continue}let E=await hn(e,h);if(E===null&&p){r+=`bash: unset: ${h}: not a valid identifier
554
- `,n=1;continue}if(E===null)continue;if(E<0){let k=ye(e,d),y=k.length,w=e.state.currentLine;if(y===0){r+=`bash: line ${w}: unset: [${E}]: bad array subscript
555
- `,n=1;continue}let v=y+E;if(v<0){r+=`bash: line ${w}: unset: [${E}]: bad array subscript
556
- `,n=1;continue}let _=k[v][0];e.state.env.delete(`${d}_${_}`);continue}e.state.env.delete(`${d}_${E}`);continue}if(!dn(i)){r+=`bash: unset: \`${i}': not a valid identifier
546
+ ${Wt}`;if(e.state.options.posix)throw new pe(1,"",a);return A(a)}fn(e,an.get(o)??null,n)}s++;continue}if(r==="--")return Bs(e,t.slice(s+1)),L;if(r==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Be(e),s+1<t.length)return Bs(e,t.slice(s+1)),L;s++;continue}if(r==="+"){s++;continue}if(r.startsWith("-")||r.startsWith("+")){let n=`bash: set: ${r}: invalid option
547
+ ${Wt}`;if(e.state.options.posix)throw new pe(1,"",n);return A(n)}return Bs(e,t.slice(s)),L}return L}function Bs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;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 Hs(e,t){let s=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
548
+ `;if(e.state.options.posix)throw new pe(1,"",a);return A(a)}s=o}let r=Number.parseInt(e.state.env.get("#")||"0",10);if(s>r){let o=`bash: shift: shift count out of range
549
+ `;if(e.state.options.posix)throw new pe(1,"",o);return A(o)}if(s===0)return L;let n=[];for(let o=1;o<=r;o++)n.push(e.state.env.get(String(o))||"");let i=n.slice(s);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(" ")),L}async function Us(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return _("",`bash: source: filename argument required
550
+ `,2);let r=s[0],n=null,i=null;if(r.includes("/")){let c=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(c),n=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),n=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,r);try{i=await e.fs.readFile(f),n=f}catch{}}}if(i===null)return A(`bash: ${r}: No such file or directory
551
+ `);let o=new Map;if(s.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=s.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,s.length>1)for(let[c,u]of o)u===void 0?e.state.env.delete(c):e.state.env.set(c,u)};e.state.sourceDepth++,e.state.currentSource=r;try{let c=we(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof z)throw c;if(c instanceof ne)return _(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return A(`bash: ${r}: ${c.message}
552
+ `);throw c}}function dn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function io(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function hn(e,t){if(io(t))return null;try{let s=new W,r=Z(s,t);return await V(e,r.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function pn(e,t){if(e.state.localVarStack?.has(t)){let r=Dt(e,t);if(r){r.value===void 0?e.state.env.delete(t):e.state.env.set(t,r.value);let n=e.state.localVarStack?.get(t);if(!n||n.length===0)Tt(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,r.scopeIndex),qs(e,t);else{let i=n[n.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),Tt(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 n=e.state.localScopes[r];if(n.has(t)){let i=n.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),n.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||Tt(e,t),!0}}return!1}function qs(e,t){if(!e.state.tempEnvBindings||e.state.tempEnvBindings.length===0)return!1;for(let s=e.state.tempEnvBindings.length-1;s>=0;s--){let r=e.state.tempEnvBindings[s];if(r.has(t)){let n=r.get(t);return n===void 0?e.state.env.delete(t):e.state.env.set(t,n),r.delete(t),!0}}return!1}async function mn(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),n=new W().parseWordFromString(s,!0,!1);return D(e,n)}if(t.includes("$")){let r=new W().parseWordFromString(t,!1,!1);return D(e,r)}return t}async function Zs(e,t){let s="both",r="",n=0;for(let i of t){if(i==="-v"){s="variable";continue}if(i==="-f"){s="function";continue}if(s==="function"){e.state.functions.delete(i);continue}if(s==="variable"){let c=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(c){let d=c[1],h=c[2];if(h==="@"||h==="*"){let C=ye(e,d);for(let[y]of C)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let C=await mn(e,h);e.state.env.delete(`${d}_${C}`);continue}let p=Jt(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){r+=`bash: unset: ${d}: not an array variable
553
+ `,n=1;continue}let v=await hn(e,h);if(v===null&&p){r+=`bash: unset: ${h}: not a valid identifier
554
+ `,n=1;continue}if(v===null)continue;if(v<0){let C=ye(e,d),y=C.length,w=e.state.currentLine;if(y===0){r+=`bash: line ${w}: unset: [${v}]: bad array subscript
555
+ `,n=1;continue}let b=y+v;if(b<0){r+=`bash: line ${w}: unset: [${v}]: bad array subscript
556
+ `,n=1;continue}let E=C[b][0];e.state.env.delete(`${d}_${E}`);continue}e.state.env.delete(`${d}_${v}`);continue}if(!dn(i)){r+=`bash: unset: \`${i}': not a valid identifier
557
557
  `,n=1;continue}let u=i;if(de(e,i)){let d=Te(e,i);d&&d!==i&&(u=d)}if(Le(e,u)){r+=`bash: unset: ${u}: cannot unset: readonly variable
558
558
  `,n=1;continue}let f=He(e,u);if(f!==void 0&&f!==e.state.callDepth)pn(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),h=e.state.mutatedTempEnvVars?.has(u);if((d||h)&&e.state.localVarStack?.has(u)){let m=Dt(e,u);m?m.value===void 0?e.state.env.delete(u):e.state.env.set(u,m.value):e.state.env.delete(u)}else e.state.env.delete(u)}else qs(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(u==="@"||u==="*"){let p=ye(e,c);for(let[g]of p)e.state.env.delete(`${c}_${g}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let p=await mn(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=Jt(e,c);if(e.state.env.has(c)&&!d&&!f){r+=`bash: unset: ${c}: not an array variable
559
559
  `,n=1;continue}let m=await hn(e,u);if(m===null&&d){r+=`bash: unset: ${u}: not a valid identifier
560
- `,n=1;continue}if(m===null)continue;if(m<0){let p=ye(e,c),g=p.length,b=e.state.currentLine;if(g===0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
561
- `,n=1;continue}let E=g+m;if(E<0){r+=`bash: line ${b}: unset: [${m}]: bad array subscript
562
- `,n=1;continue}let k=p[E][0];e.state.env.delete(`${c}_${k}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!dn(i)){r+=`bash: unset: \`${i}': not a valid identifier
560
+ `,n=1;continue}if(m===null)continue;if(m<0){let p=ye(e,c),g=p.length,S=e.state.currentLine;if(g===0){r+=`bash: line ${S}: unset: [${m}]: bad array subscript
561
+ `,n=1;continue}let v=g+m;if(v<0){r+=`bash: line ${S}: unset: [${m}]: bad array subscript
562
+ `,n=1;continue}let C=p[v][0];e.state.env.delete(`${c}_${C}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!dn(i)){r+=`bash: unset: \`${i}': not a valid identifier
563
563
  `,n=1;continue}let a=i;if(de(e,i)){let c=Te(e,i);c&&c!==i&&(a=c)}if(Le(e,a)){r+=`bash: unset: ${a}: cannot unset: readonly variable
564
- `,n=1;continue}let l=He(e,a);if(l!==void 0&&l!==e.state.callDepth)pn(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=Dt(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 qs(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return P("",r,n)}var Gs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],oo=["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 zt(e){return Gs.includes(e)}function ao(e){return oo.includes(e)}function yn(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;break}if(d.startsWith("-")&&d.length>1){for(let h=1;h<d.length;h++){let m=d[h];switch(m){case"s":s=!0;break;case"u":r=!0;break;case"p":n=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
564
+ `,n=1;continue}let l=He(e,a);if(l!==void 0&&l!==e.state.callDepth)pn(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=Dt(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 qs(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return _("",r,n)}var Gs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],oo=["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 zt(e){return Gs.includes(e)}function ao(e){return oo.includes(e)}function yn(e,t){let s=!1,r=!1,n=!1,i=!1,o=!1,a=[],l=0;for(;l<t.length;){let d=t[l];if(d==="--"){l++;break}if(d.startsWith("-")&&d.length>1){for(let h=1;h<d.length;h++){let m=d[h];switch(m){case"s":s=!0;break;case"u":r=!0;break;case"p":n=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
565
565
  `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return lo(e,a,s,r,n,i);if(s&&r)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
566
566
  `};if(a.length===0){if(s||r){let h=[];for(let m of Gs){let p=e.state.shoptOptions[m];s&&p?h.push(n?`shopt -s ${m}`:`${m} on`):r&&!p&&h.push(n?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
567
567
  `)}
@@ -575,26 +575,26 @@ ${Wt}`;if(e.state.options.posix)throw new pe(1,"",n);return S(n)}return Bs(e,t.s
575
575
  `:"",stderr:""}}let c=!1,u="",f=[];for(let d of t){let h=o.has(d),m=a.includes(d);if(!h&&!m){u+=`shopt: ${d}: invalid option name
576
576
  `,c=!0;continue}if(m){s||r||(i?c=!0:n?(f.push(`set +o ${d}`),c=!0):(f.push(`${d} off`),c=!0));continue}let p=o.get(d);if(p)if(s)p==="vi"?e.state.options.emacs=!1:p==="emacs"&&(e.state.options.vi=!1),e.state.options[p]=!0,Be(e);else if(r)e.state.options[p]=!1,Be(e);else{let g=e.state.options[p];i?g||(c=!0):n?(f.push(`set ${g?"-o":"+o"} ${d}`),g||(c=!0)):(f.push(`${d} ${g?"on":"off"}`),g||(c=!0))}}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
577
577
  `)}
578
- `:"",stderr:u}}async function gn(e,t,s){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};let a=o.split("/").pop()||t,l=e.commands.get(a);try{let c=await e.fs.stat(o);return c.isDirectory?{error:"permission_denied",path:o}:l?{cmd:l,path:o}:(c.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!s&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o)if(await e.fs.exists(o)){let a=e.commands.get(t);if(a)return{cmd:a,path:o};try{let l=await e.fs.stat(o);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:o}}catch{}}else e.state.hashTable.delete(t)}let n=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of n){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=o==="/bin"||o==="/usr/bin";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 Vt(e,t){let s=[];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&&s.push(t)}catch{}return s}let n=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of n){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?a:`${i}/${t}`)}}return s}async function En(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let g of p.slice(1))g==="t"?n=!0:g==="p"?i=!0:g==="P"?o=!0:g==="a"?a=!0:g==="f"&&(l=!0);else c.push(p);let u="",f="",d=0,h=!1,m=!1;for(let p of c){let g=!1;if(o){if(a){let v=await r(p);if(v.length>0){for(let _ of v)u+=`${_}
579
- `;h=!0,g=!0}}else{let v=await s(p);v&&(u+=`${v}
580
- `,h=!0,g=!0)}g||(m=!0);continue}let b=!l&&e.state.functions.has(p);if(a&&b){if(!i)if(n)u+=`function
581
- `;else{let v=e.state.functions.get(p),_=v?wn(p,v):`${p} is a function
582
- `;u+=_}g=!0}let E=e.state.env.get(`BASH_ALIAS_${p}`);if(E!==void 0&&(a||!g)&&(i||(n?u+=`alias
583
- `:u+=`${p} is aliased to \`${E}'
578
+ `:"",stderr:u}}async function gn(e,t,s){if(t.includes("/")){let o=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(o))return{error:"not_found",path:o};let a=o.split("/").pop()||t,l=e.commands.get(a);try{let c=await e.fs.stat(o);return c.isDirectory?{error:"permission_denied",path:o}:l?{cmd:l,path:o}:(c.mode&73)!==0?{script:!0,path:o}:{error:"permission_denied",path:o}}catch{return{error:"not_found",path:o}}}if(!s&&e.state.hashTable){let o=e.state.hashTable.get(t);if(o)if(await e.fs.exists(o)){let a=e.commands.get(t);if(a)return{cmd:a,path:o};try{let l=await e.fs.stat(o);if(!l.isDirectory&&(l.mode&73)!==0)return{script:!0,path:o}}catch{}}else e.state.hashTable.delete(t)}let n=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of n){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=o==="/bin"||o==="/usr/bin";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 Vt(e,t){let s=[];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&&s.push(t)}catch{}return s}let n=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of n){if(!i)continue;let a=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?a:`${i}/${t}`)}}return s}async function En(e,t,s,r){let n=!1,i=!1,o=!1,a=!1,l=!1,c=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let g of p.slice(1))g==="t"?n=!0:g==="p"?i=!0:g==="P"?o=!0:g==="a"?a=!0:g==="f"&&(l=!0);else c.push(p);let u="",f="",d=0,h=!1,m=!1;for(let p of c){let g=!1;if(o){if(a){let b=await r(p);if(b.length>0){for(let E of b)u+=`${E}
579
+ `;h=!0,g=!0}}else{let b=await s(p);b&&(u+=`${b}
580
+ `,h=!0,g=!0)}g||(m=!0);continue}let S=!l&&e.state.functions.has(p);if(a&&S){if(!i)if(n)u+=`function
581
+ `;else{let b=e.state.functions.get(p),E=b?wn(p,b):`${p} is a function
582
+ `;u+=E}g=!0}let v=e.state.env.get(`BASH_ALIAS_${p}`);if(v!==void 0&&(a||!g)&&(i||(n?u+=`alias
583
+ `:u+=`${p} is aliased to \`${v}'
584
584
  `),g=!0,!a)||ds.has(p)&&(a||!g)&&(i||(n?u+=`keyword
585
585
  `:u+=`${p} is a shell keyword
586
- `),g=!0,!a))continue;if(!a&&b&&!g){if(!i)if(n)u+=`function
587
- `;else{let v=e.state.functions.get(p),_=v?wn(p,v):`${p} is a function
588
- `;u+=_}g=!0;continue}if(!(nt.has(p)&&(a||!g)&&(i||(n?u+=`builtin
586
+ `),g=!0,!a))continue;if(!a&&S&&!g){if(!i)if(n)u+=`function
587
+ `;else{let b=e.state.functions.get(p),E=b?wn(p,b):`${p} is a function
588
+ `;u+=E}g=!0;continue}if(!(nt.has(p)&&(a||!g)&&(i||(n?u+=`builtin
589
589
  `:u+=`${p} is a shell builtin
590
- `),g=!0,!a))){if(a){let v=await r(p);for(let _ of v)i?u+=`${_}
590
+ `),g=!0,!a))){if(a){let b=await r(p);for(let E of b)i?u+=`${E}
591
591
  `:n?u+=`file
592
- `:u+=`${p} is ${_}
593
- `,h=!0,g=!0}else if(!g){let v=await s(p);v&&(i?u+=`${v}
592
+ `:u+=`${p} is ${E}
593
+ `,h=!0,g=!0}else if(!g){let b=await s(p);b&&(i?u+=`${b}
594
594
  `:n?u+=`file
595
- `:u+=`${p} is ${v}
596
- `,h=!0,g=!0)}if(!g&&(m=!0,!n&&!i)){let v=!0;if(p.includes("/")){let _=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(_)&&(v=!1)}v&&(f+=`bash: type: ${p}: not found
597
- `)}}}return i?d=m&&!h?1:0:d=m?1:0,P(u,f,d)}function wn(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(n=>at(n)).join("; "):s=at(t.body),`${e} is a function
595
+ `:u+=`${p} is ${b}
596
+ `,h=!0,g=!0)}if(!g&&(m=!0,!n&&!i)){let b=!0;if(p.includes("/")){let E=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(E)&&(b=!1)}b&&(f+=`bash: type: ${p}: not found
597
+ `)}}}return i?d=m&&!h?1:0:d=m?1:0,_(u,f,d)}function wn(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(n=>at(n)).join("; "):s=at(t.body),`${e} is a function
598
598
  ${e} ()
599
599
  {
600
600
  ${s}
@@ -613,61 +613,61 @@ ${e} ()
613
613
  `),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 h=`${d}/${a}`;try{let m=await e.fs.stat(h);if(!m.isDirectory&&(m.mode&73)!==0){f=h;break}}catch{}}f||(f=`/usr/bin/${a}`),r?n+=`${a} is ${f}
614
614
  `:n+=`${f}
615
615
  `}else r&&(i+=`${a}: not found
616
- `),o=1}return P(n,i,o)}async function Sn(e,t){if(t.includes("/")){let n=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(n)){try{let i=await e.fs.stat(n);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 n of r){if(!n)continue;let o=`${n.startsWith("/")?n:e.fs.resolvePath(e.state.cwd,n)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${n}/${t}`}}if(e.commands.has(t)){for(let n of r)if(n==="/usr/bin"||n==="/bin")return`${n}/${t}`;return`/usr/bin/${t}`}return null}async function An(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(t==="export")return Is(l,s);if(t==="unset")return Zs(l,s);if(t==="exit")return Ds(l,s);if(t==="local")return Ms(l,s);if(t==="set")return js(l,s);if(t==="break")return os(l,s);if(t==="continue")return vs(l,s);if(t==="return")return Vs(l,s);if(t==="eval"&&l.state.options.posix)return Ft(l,s,n);if(t==="shift")return Hs(l,s);if(t==="getopts")return Mt(l,s);if(t==="compgen")return ms(l,s);if(t==="complete")return gs(l,s);if(t==="compopt")return ws(l,s);if(t==="pushd")return await Os(l,s);if(t==="popd")return xs(l,s);if(t==="dirs")return Ts(l,s);if(t==="source"||t===".")return Us(l,s);if(t==="read")return zs(l,s,n,a);if(t==="mapfile"||t==="readarray")return Ws(l,s,n);if(t==="declare"||t==="typeset")return Cs(l,s);if(t==="readonly")return ks(l,s);if(!i){let u=l.state.functions.get(t);if(u)return Rt(l,u,s,n)}if(t==="eval")return Ft(l,s,n);if(t==="cd")return await as(l,s);if(t===":"||t==="true")return L;if(t==="false")return q(!1);if(t==="let")return Fs(l,s);if(t==="command")return uo(e,s,n);if(t==="builtin")return fo(e,s,n);if(t==="shopt")return yn(l,s);if(t==="exec"){if(s.length===0)return L;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await En(l,s,u=>Sn(l,u),u=>Vt(l,u));if(t==="hash")return Rs(l,s);if(t==="help")return Ls(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return S("[: missing `]'\n",2);u=s.slice(0,-1)}return rt(l,u)}return null}async function uo(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return L;let i=!1,o=!1,a=!1,l=t;for(;l.length>0&&l[0].startsWith("-");){let f=l[0];if(f==="--"){l=l.slice(1);break}for(let d of f.slice(1))d==="p"?i=!0:d==="V"?o=!0:d==="v"&&(a=!0);l=l.slice(1)}if(l.length===0)return L;if(a||o)return await $n(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function fo(e,t,s){let{runCommand:r}=e;if(t.length===0)return L;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return L;let i=n[0];if(!nt.has(i))return S(`bash: builtin: ${i}: not a shell builtin
617
- `);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function Pn(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await gn(i,t,n?"/usr/bin:/bin":void 0);if(!c)return Tr(t)?S(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
618
- `,127):S(`bash: ${t}: command not found
619
- `,127);if("error"in c)return c.error==="permission_denied"?S(`bash: ${t}: Permission denied
620
- `,126):S(`bash: ${t}: No such file or directory
621
- `,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,s,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||"",h=o(),m={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:h,stdin:d,limits:i.limits,exec:i.execFn,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};try{return await u.execute(s,m)}catch(p){return S(`${t}: ${Ae(p)}
616
+ `),o=1}return _(n,i,o)}async function Sn(e,t){if(t.includes("/")){let n=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(n)){try{let i=await e.fs.stat(n);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 n of r){if(!n)continue;let o=`${n.startsWith("/")?n:e.fs.resolvePath(e.state.cwd,n)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${n}/${t}`}}if(e.commands.has(t)){for(let n of r)if(n==="/usr/bin"||n==="/bin")return`${n}/${t}`;return`/usr/bin/${t}`}return null}async function An(e,t,s,r,n,i,o,a){let{ctx:l,runCommand:c}=e;if(t==="export")return Is(l,s);if(t==="unset")return Zs(l,s);if(t==="exit")return Ds(l,s);if(t==="local")return Ms(l,s);if(t==="set")return js(l,s);if(t==="break")return os(l,s);if(t==="continue")return vs(l,s);if(t==="return")return Vs(l,s);if(t==="eval"&&l.state.options.posix)return Ft(l,s,n);if(t==="shift")return Hs(l,s);if(t==="getopts")return Mt(l,s);if(t==="compgen")return ms(l,s);if(t==="complete")return gs(l,s);if(t==="compopt")return ws(l,s);if(t==="pushd")return await Os(l,s);if(t==="popd")return xs(l,s);if(t==="dirs")return Ts(l,s);if(t==="source"||t===".")return Us(l,s);if(t==="read")return zs(l,s,n,a);if(t==="mapfile"||t==="readarray")return Ws(l,s,n);if(t==="declare"||t==="typeset")return Cs(l,s);if(t==="readonly")return ks(l,s);if(!i){let u=l.state.functions.get(t);if(u)return Rt(l,u,s,n)}if(t==="eval")return Ft(l,s,n);if(t==="cd")return await as(l,s);if(t===":"||t==="true")return L;if(t==="false")return q(!1);if(t==="let")return Fs(l,s);if(t==="command")return uo(e,s,n);if(t==="builtin")return fo(e,s,n);if(t==="shopt")return yn(l,s);if(t==="exec"){if(s.length===0)return L;let[u,...f]=s;return c(u,f,[],n,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await En(l,s,u=>Sn(l,u),u=>Vt(l,u));if(t==="hash")return Rs(l,s);if(t==="help")return Ls(l,s);if(t==="["||t==="test"){let u=s;if(t==="["){if(s[s.length-1]!=="]")return A("[: missing `]'\n",2);u=s.slice(0,-1)}return rt(l,u)}return null}async function uo(e,t,s){let{ctx:r,runCommand:n}=e;if(t.length===0)return L;let i=!1,o=!1,a=!1,l=t;for(;l.length>0&&l[0].startsWith("-");){let f=l[0];if(f==="--"){l=l.slice(1);break}for(let d of f.slice(1))d==="p"?i=!0:d==="V"?o=!0:d==="v"&&(a=!0);l=l.slice(1)}if(l.length===0)return L;if(a||o)return await $n(r,l,a,o);let[c,...u]=l;return n(c,u,[],s,!0,i,-1)}async function fo(e,t,s){let{runCommand:r}=e;if(t.length===0)return L;let n=t;if(n[0]==="--"&&(n=n.slice(1),n.length===0))return L;let i=n[0];if(!nt.has(i))return A(`bash: builtin: ${i}: not a shell builtin
617
+ `);let[,...o]=n;return r(i,o,[],s,!0,!1,-1)}async function Pn(e,t,s,r,n){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await gn(i,t,n?"/usr/bin:/bin":void 0);if(!c)return Tr(t)?A(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
618
+ `,127):A(`bash: ${t}: command not found
619
+ `,127);if("error"in c)return c.error==="permission_denied"?A(`bash: ${t}: Permission denied
620
+ `,126):A(`bash: ${t}: No such file or directory
621
+ `,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,s,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||"",h=o(),m={fs:i.fs,cwd:i.state.cwd,env:i.state.env,exportedEnv:h,stdin:d,limits:i.limits,exec:i.execFn,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};try{return await u.execute(s,m)}catch(p){return A(`${t}: ${Ae(p)}
622
622
  `)}}async function Xs(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let r="",n="",i=0;try{for(let o of t){let a=await e.executeStatement(o);r+=a.stdout,n+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:r,stderr:n,exitCode:i}}function lt(e,t,s,r){if(e instanceof le)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"break",stdout:t,stderr:s};if(e instanceof ce)return t+=e.stdout,s+=e.stderr,e.levels>1&&r>1?(e.levels--,e.stdout=t,e.stderr=s,{action:"rethrow",stdout:t,stderr:s,error:e}):{action:"continue",stdout:t,stderr:s};if(e instanceof ne||e instanceof fe||e instanceof z||e instanceof re)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let n=Ae(e);return{action:"error",stdout:t,stderr:`${s}${n}
623
623
  `,exitCode:1}}async function Bt(e,t,s="",r=""){let n=s,i=r,o=0;try{for(let a of t){let l=await e.executeStatement(a);n+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(ht(a)||a instanceof fe||a instanceof z||a instanceof re||a instanceof Ne)throw a.prependOutput(n,i),a;return{stdout:n,stderr:`${i}${Ae(a)}
624
- `,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function _n(e,t){let s="",r="";for(let n of t.clauses){let i=await Xs(e,n.condition);if(s+=i.stdout,r+=i.stderr,i.exitCode===0)return Bt(e,n.body,s,r)}return t.elseBody?Bt(e,t.elseBody,s,r):P(s,r,0)}async function Cn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return S(`bash: \`${t.variable}': not a valid identifier
625
- `);let a=[];if(t.words===null)a=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)a=[];else try{for(let c of t.words){let u=await be(e,c);a.push(...u.values)}}catch(c){if(c instanceof dt)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);r+=f.stdout,n+=f.stderr,i=f.exitCode}}catch(u){let f=lt(u,r,n,e.state.loopDepth);if(r=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=P(r,n,f.exitCode??1);return j(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=P(r,n,i);return j(e,l,t.redirections)}async function kn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r=t.line;r!==void 0&&(e.state.currentLine=r);let n="",i="",o=0,a=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await V(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=lt(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await V(e,t.update.expression);continue}if(u.action==="error"){let f=P(n,i,u.exitCode??1);return j(e,f,t.redirections)}throw u.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let l=P(n,i,o);return j(e,l,t.redirections)}async function Nn(e,t,s=""){let r="",n="",i=0,o=0,a=s;for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await D(e,u.content);u.stripTabs&&(f=f.split(`
624
+ `,exitCode:1}}return{stdout:n,stderr:i,exitCode:o}}async function _n(e,t){let s="",r="";for(let n of t.clauses){let i=await Xs(e,n.condition);if(s+=i.stdout,r+=i.stderr,i.exitCode===0)return Bt(e,n.body,s,r)}return t.elseBody?Bt(e,t.elseBody,s,r):_(s,r,0)}async function Cn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return A(`bash: \`${t.variable}': not a valid identifier
625
+ `);let a=[];if(t.words===null)a=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)a=[];else try{for(let c of t.words){let u=await be(e,c);a.push(...u.values)}}catch(c){if(c instanceof dt)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);r+=f.stdout,n+=f.stderr,i=f.exitCode}}catch(u){let f=lt(u,r,n,e.state.loopDepth);if(r=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=_(r,n,f.exitCode??1);return j(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=_(r,n,i);return j(e,l,t.redirections)}async function kn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r=t.line;r!==void 0&&(e.state.currentLine=r);let n="",i="",o=0,a=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&ke(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,i),!(t.condition&&(r!==void 0&&(e.state.currentLine=r),await V(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=lt(c,n,i,e.state.loopDepth);if(n=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await V(e,t.update.expression);continue}if(u.action==="error"){let f=_(n,i,u.exitCode??1);return j(e,f,t.redirections)}throw u.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let l=_(n,i,o);return j(e,l,t.redirections)}async function Nn(e,t,s=""){let r="",n="",i=0,o=0,a=s;for(let c of t.redirections)if((c.operator==="<<"||c.operator==="<<-")&&c.target.type==="HereDoc"){let u=c.target,f=await D(e,u.content);u.stripTabs&&(f=f.split(`
626
626
  `).map(d=>d.replace(/^\t+/,"")).join(`
627
627
  `)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await D(e,c.target)}
628
- `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await D(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await D(e,c.target);return S(`bash: ${u}: No such file or directory
629
- `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&ke(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof le){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;u=!0}else if(h instanceof ce){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,i=m.exitCode}}catch(h){let m=lt(h,r,n,e.state.loopDepth);if(r=m.stdout,n=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return P(r,n,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return P(r,n,i)}async function On(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&ke(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Xs(e,t.condition);if(s+=o.stdout,r+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,r+=l.stderr,n=l.exitCode}}catch(a){let l=lt(a,s,r,e.state.loopDepth);if(s=l.stdout,r=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return P(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return P(s,r,n)}async function xn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await D(e,t.word),a=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=a;if(!a)for(let d of u.patterns){let h=await D(e,d);pr(d)&&(h=dr(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(je(o,h,m,p)){f=!0;break}}if(f){let d=await Bt(e,u.body,r,n);if(r=d.stdout,n=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=P(r,n,i);return j(e,l,t.redirections)}function Ks(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Tn(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}var Dn="+ ";async function In(e){let t=e.state.env.get("PS4");if(t===void 0)return Dn;if(t==="")return"";try{let r=new W().parseWordFromString(t,!1,!1);return await D(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
628
+ `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await D(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await D(e,c.target);return A(`bash: ${u}: No such file or directory
629
+ `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&ke(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,n);let c=0,u=!1,f=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof le){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;u=!0}else if(h instanceof ce){if(r+=h.stdout,n+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=r,h.stderr=n,e.state.inCondition=d,h;f=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(u)break;if(!f){if(c!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);r+=m.stdout,n+=m.stderr,i=m.exitCode}}catch(h){let m=lt(h,r,n,e.state.loopDepth);if(r=m.stdout,n=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return _(r,n,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return _(r,n,i)}async function On(e,t){let s="",r="",n=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&ke(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,r);let o=await Xs(e,t.condition);if(s+=o.stdout,r+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,r+=l.stderr,n=l.exitCode}}catch(a){let l=lt(a,s,r,e.state.loopDepth);if(s=l.stdout,r=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return _(s,r,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return _(s,r,n)}async function xn(e,t){let s=await $e(e,t.redirections);if(s)return s;let r="",n="",i=0,o=await D(e,t.word),a=!1;for(let c=0;c<t.items.length;c++){let u=t.items[c],f=a;if(!a)for(let d of u.patterns){let h=await D(e,d);pr(d)&&(h=dr(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(je(o,h,m,p)){f=!0;break}}if(f){let d=await Bt(e,u.body,r,n);if(r=d.stdout,n=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=_(r,n,i);return j(e,l,t.redirections)}function Ks(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Tn(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let r=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(r)||r<0)return null;let n=s+1,i=t.slice(n,n+r),o=n+r+1,a=t.slice(o),l=a.indexOf(":");if(l===-1)return null;let c=Number.parseInt(a.slice(0,l),10);if(Number.isNaN(c)||c<0)return null;let u=a.slice(l+1);return{path:i,position:c,content:u}}var Dn="+ ";async function In(e){let t=e.state.env.get("PS4");if(t===void 0)return Dn;if(t==="")return"";try{let r=new W().parseWordFromString(t,!1,!1);return await D(e,r)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
630
630
  `,t||Dn}}function ho(e){return e.map(t=>po(t)).join(" ")}function po(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),r=e.includes(`
631
631
  `),n=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(s||r||n||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
632
632
  `?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 Rn(e,t,s){if(!e.state.options.xtrace)return"";let r=await In(e),n=[t,...s],i=ho(n);return`${r}${i}
633
633
  `}async function Ln(e,t,s){return e.state.options.xtrace?`${await In(e)}${t}=${s}
634
- `:""}async function Fn(e,t,s){let r=t.timed?performance.now():0,n="",i=L,o=0,a=[],l=t.commands.length>1,c=e.state.lastArg;for(let f=0;f<t.commands.length;f++){let d=t.commands[f],h=f===t.commands.length-1;l&&(e.state.lastArg="");let p=l&&(!h||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(d,n)}catch(b){if(b instanceof ft)g={stdout:b.stdout,stderr:b.stderr,exitCode:1};else if(b instanceof z&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else if(b instanceof fe&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else throw p&&(e.state.env=p),b}p&&(e.state.env=p),a.push(g.exitCode),g.exitCode!==0&&(o=g.exitCode),h?i=g:t.pipeStderr?.[f]??!1?(n=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(n=g.stdout,i={stdout:"",stderr:g.stderr,exitCode:g.exitCode})}if(t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let f of e.state.env.keys())f.startsWith("PIPESTATUS_")&&e.state.env.delete(f);for(let f=0;f<a.length;f++)e.state.env.set(`PIPESTATUS_${f}`,String(a[f]));e.state.env.set("PIPESTATUS__length",String(a.length))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let d=(performance.now()-r)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
634
+ `:""}async function Fn(e,t,s){let r=t.timed?performance.now():0,n="",i=L,o=0,a=[],l=t.commands.length>1,c=e.state.lastArg;for(let f=0;f<t.commands.length;f++){let d=t.commands[f],h=f===t.commands.length-1;l&&(e.state.lastArg="");let p=l&&(!h||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(d,n)}catch(S){if(S instanceof ft)g={stdout:S.stdout,stderr:S.stderr,exitCode:1};else if(S instanceof z&&t.commands.length>1)g={stdout:S.stdout,stderr:S.stderr,exitCode:S.exitCode};else if(S instanceof fe&&t.commands.length>1)g={stdout:S.stdout,stderr:S.stderr,exitCode:S.exitCode};else throw p&&(e.state.env=p),S}p&&(e.state.env=p),a.push(g.exitCode),g.exitCode!==0&&(o=g.exitCode),h?i=g:t.pipeStderr?.[f]??!1?(n=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(n=g.stdout,i={stdout:"",stderr:g.stderr,exitCode:g.exitCode})}if(t.commands.length>1||t.commands.length===1&&t.commands[0].type==="SimpleCommand"){for(let f of e.state.env.keys())f.startsWith("PIPESTATUS_")&&e.state.env.delete(f);for(let f=0;f<a.length;f++)e.state.env.set(`PIPESTATUS_${f}`,String(a[f]));e.state.env.set("PIPESTATUS__length",String(a.length))}if(e.state.options.pipefail&&o!==0&&(i={...i,exitCode:o}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let d=(performance.now()-r)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
635
635
  user 0.00
636
636
  sys 0.00
637
637
  `:p=`
638
638
  real ${`${h}m${m.toFixed(3)}s`}
639
639
  user 0m0.000s
640
640
  sys 0m0.000s
641
- `,i={...i,stderr:i.stderr+p}}return l&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=c),i}async function Mn(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await mo(e,t,i,n.array,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=n.value?await D(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:P("",`bash: ${i}: bad array subscript
642
- `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await bo(e,t,l[1],l[2],o,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await $o(e,t,i,o,n.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:s}}async function mo(e,t,s,r,n,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
643
- `,1)};if(de(e,s)){let u=ur(e,s);if(u===void 0||u==="")throw new z(1,"","");let f=Te(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: cannot assign list to array member
641
+ `,i={...i,stderr:i.stderr+p}}return l&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=c),i}async function Mn(e,t){let s=new Map,r="";for(let n of t.assignments){let i=n.name;if(n.array){let u=await mo(e,t,i,n.array,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(r+=u.xtraceOutput,u.continueToNext)continue}let o=n.value?await D(e,n.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:_("",`bash: ${i}: bad array subscript
642
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await bo(e,t,l[1],l[2],o,n.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await $o(e,t,i,o,n.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:r,tempAssignments:s,error:c.error};r+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:r,tempAssignments:s}}async function mo(e,t,s,r,n,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
643
+ `,1)};if(de(e,s)){let u=ur(e,s);if(u===void 0||u==="")throw new z(1,"","");let f=Te(e,s);if(f&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(f))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
644
644
  `,1)}}if(Le(e,s)){if(t.name)return o+=`bash: ${s}: readonly variable
645
645
  `,{continueToNext:!0,xtraceOutput:o};let u=K(e,s);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let a=e.state.associativeArrays?.has(s),l=yo(r),c=()=>{let u=`${s}_`;for(let f of e.state.env.keys())f.startsWith(u)&&!f.includes("__")&&e.state.env.delete(f);e.state.env.delete(s)};if(a&&l?await go(e,t,s,r,n,c,u=>{o+=u}):l?await wo(e,s,r,n,c):await vo(e,s,r,n,c),t.name){i.set(s,e.state.env.get(s));let f=`(${r.map(d=>mt(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function yo(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],r=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(r.type==="DoubleQuoted"||r.type==="SingleQuoted")){if(t.parts.length<3)return!1;let n=t.parts[2];return n.type!=="Literal"?!1:n.value.startsWith("]=")||n.value.startsWith("]+=")}return r.type!=="Literal"?!1:r.value.startsWith("]")?r.value.startsWith("]=")||r.value.startsWith("]+="):s.pattern.endsWith("]")?r.value.startsWith("=")||r.value.startsWith("+="):!1}return!1})}async function go(e,t,s,r,n,i,o){let a=[];for(let l of r){let c=Xt(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await D(e,{type:"Word",parts:f}):h="",h=H(e,h),a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await D(e,l);a.push({type:"invalid",expandedValue:u})}}n||i();for(let l of a)if(l.type==="keyed")if(l.append){let c=e.state.env.get(`${s}_${l.key}`)??"";e.state.env.set(`${s}_${l.key}`,c+l.value)}else e.state.env.set(`${s}_${l.key}`,l.value);else{let c=t.line??e.state.currentLine??1;o(`bash: line ${c}: ${s}: ${l.expandedValue}: must use subscript when assigning associative array
646
- `)}}async function wo(e,t,s,r,n){let i=[];for(let a of s){let l=Xt(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await D(e,{type:"Word",parts:u}):d="",d=H(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await be(e,a);i.push({type:"non-keyed",values:c.values})}}r||n();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new W,u=Z(c,a.indexExpr);l=await V(e,u.expression,!1)}catch{if(/^-?\d+$/.test(a.indexExpr))l=Number.parseInt(a.indexExpr,10);else{let c=e.state.env.get(a.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(a.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+a.value)}else e.state.env.set(`${t}_${l}`,a.value);o=l+1}else for(let l of a.values)e.state.env.set(`${t}_${o++}`,l)}async function vo(e,t,s,r,n){let i=[];for(let a of s){let l=await be(e,a);i.push(...l.values)}let o=0;if(r){let a=ye(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&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else n();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);r||e.state.env.set(`${t}__length`,String(i.length))}async function bo(e,t,s,r,n,i,o){let a=s;if(de(e,s)){let f=Te(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: \`${f}': not a valid identifier
646
+ `)}}async function wo(e,t,s,r,n){let i=[];for(let a of s){let l=Xt(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await D(e,{type:"Word",parts:u}):d="",d=H(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await be(e,a);i.push({type:"non-keyed",values:c.values})}}r||n();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new W,u=Z(c,a.indexExpr);l=await V(e,u.expression,!1)}catch{if(/^-?\d+$/.test(a.indexExpr))l=Number.parseInt(a.indexExpr,10);else{let c=e.state.env.get(a.indexExpr);l=c?Number.parseInt(c,10):0,Number.isNaN(l)&&(l=0)}}if(a.append){let c=e.state.env.get(`${t}_${l}`)??"";e.state.env.set(`${t}_${l}`,c+a.value)}else e.state.env.set(`${t}_${l}`,a.value);o=l+1}else for(let l of a.values)e.state.env.set(`${t}_${o++}`,l)}async function vo(e,t,s,r,n){let i=[];for(let a of s){let l=await be(e,a);i.push(...l.values)}let o=0;if(r){let a=ye(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&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else n();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);r||e.state.env.set(`${t}__length`,String(i.length))}async function bo(e,t,s,r,n,i,o){let a=s;if(de(e,s)){let f=Te(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: \`${f}': not a valid identifier
647
647
  `,1)};a=f}}if(Le(e,a)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let l=e.state.associativeArrays?.has(a),c;if(l)c=await Wn(e,a,r);else{let f=await Eo(e,a,r);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+n:n;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=He(e,a);if(f!==void 0&&f===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(c)||d.set(c,e.state.env.get(c))}e.state.env.set(c,u)}return{continueToNext:!0,xtraceOutput:""}}async function Wn(e,t,s){let r;if(s.startsWith("'")&&s.endsWith("'"))r=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let n=s.slice(1,-1),o=new W().parseWordFromString(n,!0,!1);r=await D(e,o)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);r=await D(e,i)}else r=s;return`${t}_${r}`}async function Eo(e,t,s){let r=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(r=s.slice(1,-1));let n;if(/^-?\d+$/.test(r))n=Number.parseInt(r,10);else{try{let i=new W,o=Z(i,r);n=await V(e,o.expression,!1)}catch(i){if(i instanceof Re){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
648
- `;if(i.fatal)throw new z(1,"",l);return{index:0,error:P("",l,1)}}let o=e.state.env.get(s);n=o?Number.parseInt(o,10):0}Number.isNaN(n)&&(n=0)}if(n<0){let i=ye(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:P("",`bash: line ${a}: ${t}[${s}]: bad array subscript
649
- `,1)}}if(n=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+n,n<0){let a=e.state.currentLine;return{index:0,error:P("",`bash: line ${a}: ${t}[${s}]: bad array subscript
650
- `,1)}}}return{index:n}}async function $o(e,t,s,r,n,i){let o="",a=s,l=null;if(de(e,s)){let f=fr(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:P("",`bash: ${s}: circular name reference
648
+ `;if(i.fatal)throw new z(1,"",l);return{index:0,error:_("",l,1)}}let o=e.state.env.get(s);n=o?Number.parseInt(o,10):0}Number.isNaN(n)&&(n=0)}if(n<0){let i=ye(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
649
+ `,1)}}if(n=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+n,n<0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
650
+ `,1)}}}return{index:n}}async function $o(e,t,s,r,n,i){let o="",a=s,l=null;if(de(e,s)){let f=fr(e,s,r);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: circular name reference
651
651
  `,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(Le(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
652
- `,{continueToNext:!0,xtraceOutput:o};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(it(e,a))try{let f=new W;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,m=Z(f,h);c=String(await V(e,m.expression))}else{let d=Z(f,r);c=String(await V(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=qe(e,a,c),o+=await Ln(e,a,c);let u=a;if(l)u=await So(e,l);else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(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 So(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Wn(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new W,a=Z(o,r);i=await V(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=ye(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function zn(e,t,s,r){let n=await $e(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=e.state.localScopes,c=e.state.localVarStack,u=e.state.localVarDepth,f=e.state.fullyUnsetLocals;if(e.state.localScopes=l.map(v=>new Map(v)),c){e.state.localVarStack=new Map;for(let[v,_]of c.entries())e.state.localVarStack.set(v,_.map(x=>({...x})))}u&&(e.state.localVarDepth=new Map(u)),f&&(e.state.fullyUnsetLocals=new Map(f));let d=e.state.loopDepth,h=e.state.parentHasLoopContext;e.state.parentHasLoopContext=d>0,e.state.loopDepth=0;let m=e.state.lastArg,p=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let g=e.state.groupStdin;s&&(e.state.groupStdin=s);let b="",E="",k=0,y=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.localScopes=l,e.state.localVarStack=c,e.state.localVarDepth=u,e.state.fullyUnsetLocals=f,e.state.loopDepth=d,e.state.parentHasLoopContext=h,e.state.groupStdin=g,e.state.bashPid=p,e.state.lastArg=m};try{for(let v of t.body){let _=await r(v);b+=_.stdout,E+=_.stderr,k=_.exitCode}}catch(v){if(y(),v instanceof re)throw v;if(v instanceof Ne){b+=v.stdout,E+=v.stderr;let x=P(b,E,0);return j(e,x,t.redirections)}if(v instanceof le||v instanceof ce){b+=v.stdout,E+=v.stderr;let x=P(b,E,0);return j(e,x,t.redirections)}if(v instanceof z){b+=v.stdout,E+=v.stderr;let x=P(b,E,v.exitCode);return j(e,x,t.redirections)}if(v instanceof ne){b+=v.stdout,E+=v.stderr;let x=P(b,E,v.exitCode);return j(e,x,t.redirections)}if(v instanceof fe){let x=P(b+v.stdout,E+v.stderr,v.exitCode);return j(e,x,t.redirections)}let _=P(b,`${E}${Ae(v)}
653
- `,1);return j(e,_,t.redirections)}y();let w=P(b,E,k);return j(e,w,t.redirections)}async function Vn(e,t,s,r){let n="",i="",o=0,a=await It(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,h=await D(e,d.content);d.stripTabs&&(h=h.split(`
652
+ `,{continueToNext:!0,xtraceOutput:o};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(it(e,a))try{let f=new W;if(n){let h=`(${e.state.env.get(a)||"0"}) + (${r})`,m=Z(f,h);c=String(await V(e,m.expression))}else{let d=Z(f,r);c=String(await V(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js"),d=f(e,a)?`${a}_0`:a;c=n?(e.state.env.get(d)||"")+r:r}c=qe(e,a,c),o+=await Ln(e,a,c);let u=a;if(l)u=await So(e,l);else{let{isArray:f}=await import("./chunks/expansion-7IMG6HKQ.js");f(e,a)&&(u=`${a}_0`)}return t.name?(i.set(u,e.state.env.get(u)),e.state.env.set(u,c)):(e.state.env.set(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 So(e,t){let{arrayName:s,subscriptExpr:r}=t;if(e.state.associativeArrays?.has(s))return Wn(e,s,r);let i;if(/^-?\d+$/.test(r))i=Number.parseInt(r,10);else{try{let o=new W,a=Z(o,r);i=await V(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=ye(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function zn(e,t,s,r){let n=await $e(e,t.redirections);if(n)return n;let i=new Map(e.state.env),o=e.state.cwd,a={...e.state.options},l=new Map(e.state.functions),c=e.state.localScopes,u=e.state.localVarStack,f=e.state.localVarDepth,d=e.state.fullyUnsetLocals;if(e.state.localScopes=c.map(E=>new Map(E)),u){e.state.localVarStack=new Map;for(let[E,T]of u.entries())e.state.localVarStack.set(E,T.map(N=>({...N})))}f&&(e.state.localVarDepth=new Map(f)),d&&(e.state.fullyUnsetLocals=new Map(d));let h=e.state.loopDepth,m=e.state.parentHasLoopContext;e.state.parentHasLoopContext=h>0,e.state.loopDepth=0;let p=e.state.lastArg,g=e.state.bashPid;e.state.bashPid=e.state.nextVirtualPid++;let S=e.state.groupStdin;s&&(e.state.groupStdin=s);let v="",C="",y=0,w=()=>{e.state.env=i,e.state.cwd=o,e.state.options=a,e.state.functions=l,e.state.localScopes=c,e.state.localVarStack=u,e.state.localVarDepth=f,e.state.fullyUnsetLocals=d,e.state.loopDepth=h,e.state.parentHasLoopContext=m,e.state.groupStdin=S,e.state.bashPid=g,e.state.lastArg=p};try{for(let E of t.body){let T=await r(E);v+=T.stdout,C+=T.stderr,y=T.exitCode}}catch(E){if(w(),E instanceof re)throw E;if(E instanceof Ne){v+=E.stdout,C+=E.stderr;let N=_(v,C,0);return j(e,N,t.redirections)}if(E instanceof le||E instanceof ce){v+=E.stdout,C+=E.stderr;let N=_(v,C,0);return j(e,N,t.redirections)}if(E instanceof z){v+=E.stdout,C+=E.stderr;let N=_(v,C,E.exitCode);return j(e,N,t.redirections)}if(E instanceof ne){v+=E.stdout,C+=E.stderr;let N=_(v,C,E.exitCode);return j(e,N,t.redirections)}if(E instanceof fe){let N=_(v+E.stdout,C+E.stderr,E.exitCode);return j(e,N,t.redirections)}let T=_(v,`${C}${Ae(E)}
653
+ `,1);return j(e,T,t.redirections)}w();let b=_(v,C,y);return j(e,b,t.redirections)}async function Vn(e,t,s,r){let n="",i="",o=0,a=await It(e,t.redirections);if(a)return a;let l=s;for(let f of t.redirections)if((f.operator==="<<"||f.operator==="<<-")&&f.target.type==="HereDoc"){let d=f.target,h=await D(e,d.content);d.stripTabs&&(h=h.split(`
654
654
  `).map(p=>p.replace(/^\t+/,"")).join(`
655
655
  `));let m=f.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,h)):l=h}else if(f.operator==="<<<"&&f.target.type==="Word")l=`${await D(e,f.target)}
656
- `;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await D(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await D(e,f.target);return P("",`bash: ${d}: No such file or directory
657
- `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await r(f);n+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof re)throw f;if(ht(f)||f instanceof fe||f instanceof z)throw f.prependOutput(n,i),f;return P(n,`${i}${Ae(f)}
658
- `,1)}e.state.groupStdin=c;let u=P(n,i,o);return j(e,u,t.redirections)}async function Bn(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return S(`bash: ${t}: No such file or directory
656
+ `;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await D(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await D(e,f.target);return _("",`bash: ${d}: No such file or directory
657
+ `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await r(f);n+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof re)throw f;if(ht(f)||f instanceof fe||f instanceof z)throw f.prependOutput(n,i),f;return _(n,`${i}${Ae(f)}
658
+ `,1)}e.state.groupStdin=c;let u=_(n,i,o);return j(e,u,t.redirections)}async function Bn(e,t,s,r,n){let i;try{i=await e.fs.readFile(t)}catch{return A(`bash: ${t}: No such file or directory
659
659
  `,127)}if(i.startsWith("#!")){let g=i.indexOf(`
660
- `);g!==-1&&(i=i.slice(g+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=c>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(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let g=0;g<s.length&&g<9;g++)e.state.env.set(String(g+1),s[g]);for(let g=s.length+1;g<=9;g++)e.state.env.delete(String(g));let p=()=>{e.state.env=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let b=new W().parse(i),E=await n(b);return p(),E}catch(g){if(p(),g instanceof z||g instanceof re)throw g;if(g.name==="ParseException")return S(`bash: ${t}: ${g.message}
660
+ `);g!==-1&&(i=i.slice(g+1))}let o=new Map(e.state.env),a=e.state.cwd,l={...e.state.options},c=e.state.loopDepth,u=e.state.parentHasLoopContext,f=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=c>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(s.length)),e.state.env.set("@",s.join(" ")),e.state.env.set("*",s.join(" "));for(let g=0;g<s.length&&g<9;g++)e.state.env.set(String(g+1),s[g]);for(let g=s.length+1;g<=9;g++)e.state.env.delete(String(g));let p=()=>{e.state.env=o,e.state.cwd=a,e.state.options=l,e.state.loopDepth=c,e.state.parentHasLoopContext=u,e.state.lastArg=f,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let S=new W().parse(i),v=await n(S);return p(),v}catch(g){if(p(),g instanceof z||g instanceof re)throw g;if(g.name==="ParseException")return A(`bash: ${t}: ${g.message}
661
661
  `);throw g}}var ct=class{ctx;constructor(t,s){this.ctx={state:s,fs:t.fs,commands:t.commands,limits:t.limits,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}}buildExportedEnv(){let t=this.ctx.state.exportedVars,s=this.ctx.state.tempExportedVars,r=new Set;if(t)for(let i of t)r.add(i);if(s)for(let i of s)r.add(i);if(r.size===0)return Object.create(null);let n=Object.create(null);for(let i of r){let o=this.ctx.state.env.get(i);o!==void 0&&(n[i]=o)}return n}async executeScript(t){let s="",r="",n=0;for(let i of t.statements)try{let o=await this.executeStatement(i);s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}catch(o){if(o instanceof z)throw o.prependOutput(s,r),o;if(o instanceof pe)return s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof re)throw o;if(o instanceof fe)return s+=o.stdout,r+=o.stderr,n=o.exitCode,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof tr)return s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof ft)return s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n)),{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)};if(o instanceof Re){s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(o instanceof sr){s+=o.stdout,r+=o.stderr,n=1,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n));continue}if(o instanceof le||o instanceof ce){if(this.ctx.state.loopDepth>0)throw o.prependOutput(s,r),o;s+=o.stdout,r+=o.stderr;continue}throw o instanceof ne&&o.prependOutput(s,r),o}return{stdout:s,stderr:r,exitCode:n,env:Oe(this.ctx.state.env)}}async executeUserScript(t,s,r=""){return Bn(this.ctx,t,s,r,n=>this.executeScript(n))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&ke(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new pt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",r="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(r+=`${t.sourceText}
662
- `);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new fe(n,s,r);return P(s,r,n)}async executePipeline(t){return Fn(this.ctx,t,(s,r)=>this.executeCommand(s,r))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return _n(this.ctx,t);case"For":return Cn(this.ctx,t);case"CStyleFor":return kn(this.ctx,t);case"While":return Nn(this.ctx,t,s);case"Until":return On(this.ctx,t);case"Case":return xn(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Zr(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return L}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof dt)return S(r.stderr);throw r}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let y=t,w=100;for(;w>0;){let v=this.expandAlias(y);if(v===y)break;y=v,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let r=await Mn(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await $e(this.ctx,t.redirections);if(w)return w;let v=P("",i,0);return j(this.ctx,v,t.redirections)}this.ctx.state.lastArg="";let y=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",P("",y,this.ctx.state.lastExitCode)}let o=t.name&&Ks(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let y of a)this.ctx.state.tempExportedVars.add(y)}let l=await It(this.ctx,t.redirections);if(l){for(let[y,w]of n)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);return l}let c=-1;for(let y of t.redirections){if((y.operator==="<<"||y.operator==="<<-")&&y.target.type==="HereDoc"){let w=y.target,v=await D(this.ctx,w.content);w.stripTabs&&(v=v.split(`
663
- `).map(x=>x.replace(/^\t+/,"")).join(`
664
- `));let _=y.fd??0;_!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set(_,v)):s=v;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await D(this.ctx,y.target)}
665
- `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await D(this.ctx,y.target),v=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile(v)}catch{let w=await D(this.ctx,y.target);for(let[v,_]of n)_===void 0?this.ctx.state.env.delete(v):this.ctx.state.env.set(v,_);return S(`bash: ${w}: No such file or directory
666
- `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await D(this.ctx,y.target),v=Number.parseInt(w,10);if(!Number.isNaN(v)&&this.ctx.state.fileDescriptors){let _=this.ctx.state.fileDescriptors.get(v);if(_!==void 0)if(_.startsWith("__rw__:")){let x=Tn(_);x&&(s=x.content.slice(x.position),c=v)}else _.startsWith("__file__:")||_.startsWith("__file_append__:")||(s=_)}}}let u=await D(this.ctx,t.name),f=[],d=[];if(Ks(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let y of t.args){let w=await Or(this.ctx,y);if(w)f.push(w),d.push(!0);else{let v=await xr(this.ctx,y);if(v!==null)f.push(v),d.push(!0);else{let _=await be(this.ctx,y);for(let x of _.values)f.push(x),d.push(_.quoted)}}}else for(let y of t.args){let w=await be(this.ctx,y);for(let v of w.values)f.push(v),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return P("","",this.ctx.state.lastExitCode)}return S(`bash: : command not found
667
- `,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let y of t.redirections){if(y.target.type==="HereDoc"||y.fdVariable)continue;let w=await D(this.ctx,y.target),v=y.fd??(y.operator==="<"||y.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),y.operator){case">":case">|":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile(_,"","utf8"),this.ctx.state.fileDescriptors.set(v,`__file__:${_}`);break}case">>":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(v,`__file_append__:${_}`);break}case"<":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let x=await this.ctx.fs.readFile(_);this.ctx.state.fileDescriptors.set(v,x)}catch{return S(`bash: ${w}: No such file or directory
668
- `)}break}case"<>":{let _=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let x=await this.ctx.fs.readFile(_);this.ctx.state.fileDescriptors.set(v,`__rw__:${_.length}:${_}:0:${x}`)}catch{await this.ctx.fs.writeFile(_,"","utf8"),this.ctx.state.fileDescriptors.set(v,`__rw__:${_.length}:${_}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(v);else if(w.endsWith("-")){let _=w.slice(0,-1),x=Number.parseInt(_,10);if(!Number.isNaN(x)){let T=this.ctx.state.fileDescriptors.get(x);T!==void 0?this.ctx.state.fileDescriptors.set(v,T):this.ctx.state.fileDescriptors.set(v,`__dupout__:${x}`),this.ctx.state.fileDescriptors.delete(x)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(v,`__dupout__:${_}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(v);else if(w.endsWith("-")){let _=w.slice(0,-1),x=Number.parseInt(_,10);if(!Number.isNaN(x)){let T=this.ctx.state.fileDescriptors.get(x);T!==void 0?this.ctx.state.fileDescriptors.set(v,T):this.ctx.state.fileDescriptors.set(v,`__dupin__:${x}`),this.ctx.state.fileDescriptors.delete(x)}}else{let _=Number.parseInt(w,10);Number.isNaN(_)||this.ctx.state.fileDescriptors.set(v,`__dupin__:${_}`)}break}}}for(let[y,w]of n)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);if(this.ctx.state.tempExportedVars)for(let y of n.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await Rn(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let p,g=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(y){if(y instanceof le||y instanceof ce)g=y,p=L;else throw y}let b=i+m;if(b&&(p={...p,stderr:b+p.stderr}),p=await j(this.ctx,p,t.redirections),g)throw g;if(f.length>0){let y=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(y)){let w=y.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(y=w[1])}this.ctx.state.lastArg=y}else this.ctx.state.lastArg=u;let E=Ur(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!E)for(let[y,w]of n)this.ctx.state.fullyUnsetLocals?.has(y)||(w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w));if(this.ctx.state.tempExportedVars)for(let y of n.keys())this.ctx.state.tempExportedVars.delete(y);return n.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,h,m,p,g)=>this.runCommand(u,f,d,h,m,p,g),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await An(l,t,s,r,n,i,o,a);return c!==null?c:Pn(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return is(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Vt(this.ctx,t)}async executeSubshell(t,s=""){return zn(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return Vn(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await V(this.ctx,t.expression.expression),n=q(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=S(`bash: arithmetic expression: ${r.message}
669
- `);return j(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await De(this.ctx,t.expression),n=q(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=r instanceof Re?1:2,i=S(`bash: conditional expression: ${r.message}
670
- `,n);return j(this.ctx,i,t.redirections)}}};var oe={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50};function jn(e){return e?{maxCallDepth:e.maxCallDepth??oe.maxCallDepth,maxCommandCount:e.maxCommandCount??oe.maxCommandCount,maxLoopIterations:e.maxLoopIterations??oe.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??oe.maxAwkIterations,maxSedIterations:e.maxSedIterations??oe.maxSedIterations,maxJqIterations:e.maxJqIterations??oe.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??oe.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??oe.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??oe.maxGlobOperations,maxStringLength:e.maxStringLength??oe.maxStringLength,maxArrayElements:e.maxArrayElements??oe.maxArrayElements,maxHeredocSize:e.maxHeredocSize??oe.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??oe.maxSubstitutionDepth}:{...oe}}function Hn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Ao(e){let t=Hn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Po(e,t){let s=Hn(e);if(!s)return!1;let r=Ao(t);return!r||s.origin!==r.origin?!1:r.pathPrefix==="/"||r.pathPrefix===""?!0:s.pathname.startsWith(r.pathPrefix)}function Ys(e,t){return!t||t.length===0?!1:t.some(s=>Po(e,s))}var Ze=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},Ge=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Xe=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},jt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var _o=20,Co=3e4,ko=["GET","HEAD"],No=new Set(["GET","HEAD","OPTIONS"]),Oo=new Set([301,302,303,307,308]);function Qs(e){let t=e.maxRedirects??_o,s=e.timeoutMs??Co,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??ko;function n(a){if(!e.dangerouslyAllowFullInternetAccess&&!Ys(a,e.allowedUrlPrefixes??[]))throw new Ze(a)}function i(a){if(e.dangerouslyAllowFullInternetAccess)return;let l=a.toUpperCase();if(!r.includes(l))throw new jt(l,r)}async function o(a,l={}){let c=l.method?.toUpperCase()??"GET";n(a),i(c);let u=a,f=0,d=l.followRedirects??!0,h=l.timeoutMs!==void 0?Math.min(l.timeoutMs,s):s;for(;;){let m=new AbortController,p=setTimeout(()=>m.abort(),h);try{let g={method:c,headers:l.headers,signal:m.signal,redirect:"manual"};l.body&&!No.has(c)&&(g.body=l.body);let b=await fetch(u,g);if(Oo.has(b.status)&&d){let E=b.headers.get("location");if(!E)return await Un(b,u);let k=new URL(E,u).href;if(!e.dangerouslyAllowFullInternetAccess&&!Ys(k,e.allowedUrlPrefixes??[]))throw new Xe(k);if(f++,f>t)throw new Ge(t);u=k;continue}return await Un(b,u)}finally{clearTimeout(p)}}}return o}async function Un(e,t){let s=Object.create(null);return e.headers.forEach((r,n)=>{s[n.toLowerCase()]=r}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}function qn(){let e=[{prop:"Function",target:globalThis,violationType:"function_constructor",strategy:"throw",reason:"Function constructor allows arbitrary code execution"},{prop:"eval",target:globalThis,violationType:"eval",strategy:"throw",reason:"eval() allows arbitrary code execution"},{prop:"setTimeout",target:globalThis,violationType:"setTimeout",strategy:"throw",reason:"setTimeout with string argument allows code execution"},{prop:"setInterval",target:globalThis,violationType:"setInterval",strategy:"throw",reason:"setInterval with string argument allows code execution"},{prop:"setImmediate",target:globalThis,violationType:"setImmediate",strategy:"throw",reason:"setImmediate could be used to escape sandbox context"},{prop:"env",target:process,violationType:"process_env",strategy:"throw",reason:"process.env could leak sensitive environment variables"},{prop:"binding",target:process,violationType:"process_binding",strategy:"throw",reason:"process.binding provides access to native Node.js modules"},{prop:"_linkedBinding",target:process,violationType:"process_binding",strategy:"throw",reason:"process._linkedBinding provides access to native Node.js modules"},{prop:"dlopen",target:process,violationType:"process_dlopen",strategy:"throw",reason:"process.dlopen allows loading native addons"},{prop:"WeakRef",target:globalThis,violationType:"weak_ref",strategy:"throw",reason:"WeakRef could be used to leak references outside sandbox"},{prop:"FinalizationRegistry",target:globalThis,violationType:"finalization_registry",strategy:"throw",reason:"FinalizationRegistry could be used to leak references outside sandbox"},{prop:"Reflect",target:globalThis,violationType:"reflect",strategy:"freeze",reason:"Reflect provides introspection capabilities"},{prop:"Proxy",target:globalThis,violationType:"proxy",strategy:"throw",reason:"Proxy allows intercepting and modifying object behavior"},{prop:"WebAssembly",target:globalThis,violationType:"webassembly",strategy:"throw",reason:"WebAssembly allows executing arbitrary compiled code"}];try{let t=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(async()=>{}),violationType:"async_function_constructor",strategy:"throw",reason:"AsyncFunction constructor allows arbitrary async code execution"})}catch{}try{let t=Object.getPrototypeOf(function*(){}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(function*(){}),violationType:"generator_function_constructor",strategy:"throw",reason:"GeneratorFunction constructor allows arbitrary generator code execution"})}catch{}try{let t=Object.getPrototypeOf(async function*(){}).constructor;t&&t!==Function&&t!==Object.getPrototypeOf(async()=>{}).constructor&&e.push({prop:"constructor",target:Object.getPrototypeOf(async function*(){}),violationType:"async_generator_function_constructor",strategy:"throw",reason:"AsyncGeneratorFunction constructor allows arbitrary async generator code execution"})}catch{}return e.filter(t=>{try{return t.target[t.prop]!==void 0}catch{return!1}})}var Ht=typeof __BROWSER__<"u"&&__BROWSER__;function Zn(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var er=null;if(!Ht)try{let{createRequire:e}=await import("node:module");er=e(import.meta.url)("node:async_hooks").AsyncLocalStorage}catch(e){console.debug("[DefenseInDepthBox] AsyncLocalStorage not available, defense-in-depth disabled:",e instanceof Error?e.message:e)}var xo=`
662
+ `);let n=0,i=-1,o=!1;for(let c=0;c<t.pipelines.length;c++){let u=t.pipelines[c],f=c>0?t.operators[c-1]:null;if(f==="&&"&&n!==0||f==="||"&&n===0)continue;let d=await this.executePipeline(u);s+=d.stdout,r+=d.stderr,n=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=n,this.ctx.state.env.set("?",String(n))}let a=i<t.pipelines.length-1,l=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=a||o||l,this.ctx.state.options.errexit&&n!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new fe(n,s,r);return _(s,r,n)}async executePipeline(t){return Fn(this.ctx,t,(s,r)=>this.executeCommand(s,r))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return _n(this.ctx,t);case"For":return Cn(this.ctx,t);case"CStyleFor":return kn(this.ctx,t);case"While":return Nn(this.ctx,t,s);case"Until":return On(this.ctx,t);case"Case":return xn(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Zr(this.ctx,t);case"ArithmeticCommand":return this.executeArithmeticCommand(t);case"ConditionalCommand":return this.executeConditionalCommand(t);default:return L}}async executeSimpleCommand(t,s){try{return await this.executeSimpleCommandInner(t,s)}catch(r){if(r instanceof dt)return A(r.stderr);throw r}}async executeSimpleCommandInner(t,s){if(t.line!==void 0&&(this.ctx.state.currentLine=t.line),this.ctx.state.shoptOptions.expand_aliases&&t.name){let y=t,w=100;for(;w>0;){let b=this.expandAlias(y);if(b===y)break;y=b,w--}this.aliasExpansionStack.clear(),y!==t&&(t=y)}this.ctx.state.expansionStderr="";let r=await Mn(this.ctx,t);if(r.error)return r.error;let n=r.tempAssignments,i=r.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await $e(this.ctx,t.redirections);if(w)return w;let b=_("",i,0);return j(this.ctx,b,t.redirections)}this.ctx.state.lastArg="";let y=(this.ctx.state.expansionStderr||"")+i;return this.ctx.state.expansionStderr="",_("",y,this.ctx.state.lastExitCode)}let o=t.name&&Ks(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(n.keys());if(a.length>0&&!o){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let y of a)this.ctx.state.tempExportedVars.add(y)}let l=await It(this.ctx,t.redirections);if(l){for(let[y,w]of n)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);return l}let c=-1;for(let y of t.redirections){if((y.operator==="<<"||y.operator==="<<-")&&y.target.type==="HereDoc"){let w=y.target,b=await D(this.ctx,w.content);w.stripTabs&&(b=b.split(`
663
+ `).map(T=>T.replace(/^\t+/,"")).join(`
664
+ `));let E=y.fd??0;E!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set(E,b)):s=b;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await D(this.ctx,y.target)}
665
+ `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await D(this.ctx,y.target),b=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);s=await this.ctx.fs.readFile(b)}catch{let w=await D(this.ctx,y.target);for(let[b,E]of n)E===void 0?this.ctx.state.env.delete(b):this.ctx.state.env.set(b,E);return A(`bash: ${w}: No such file or directory
666
+ `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await D(this.ctx,y.target),b=Number.parseInt(w,10);if(!Number.isNaN(b)&&this.ctx.state.fileDescriptors){let E=this.ctx.state.fileDescriptors.get(b);if(E!==void 0)if(E.startsWith("__rw__:")){let T=Tn(E);T&&(s=T.content.slice(T.position),c=b)}else E.startsWith("__file__:")||E.startsWith("__file_append__:")||(s=E)}}}let u=await D(this.ctx,t.name),f=[],d=[];if(Ks(t.name,["local","declare","typeset","export","readonly"])&&(u==="local"||u==="declare"||u==="typeset"||u==="export"||u==="readonly"))for(let y of t.args){let w=await Or(this.ctx,y);if(w)f.push(w),d.push(!0);else{let b=await xr(this.ctx,y);if(b!==null)f.push(b),d.push(!0);else{let E=await be(this.ctx,y);for(let T of E.values)f.push(T),d.push(E.quoted)}}}else for(let y of t.args){let w=await be(this.ctx,y);for(let b of w.values)f.push(b),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return _("","",this.ctx.state.lastExitCode)}return A(`bash: : command not found
667
+ `,127)}if(u==="exec"&&(f.length===0||f[0]==="--")){for(let y of t.redirections){if(y.target.type==="HereDoc"||y.fdVariable)continue;let w=await D(this.ctx,y.target),b=y.fd??(y.operator==="<"||y.operator==="<>"?0:1);switch(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),y.operator){case">":case">|":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile(E,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__file__:${E}`);break}case">>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(b,`__file_append__:${E}`);break}case"<":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(E);this.ctx.state.fileDescriptors.set(b,T)}catch{return A(`bash: ${w}: No such file or directory
668
+ `)}break}case"<>":{let E=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let T=await this.ctx.fs.readFile(E);this.ctx.state.fileDescriptors.set(b,`__rw__:${E.length}:${E}:0:${T}`)}catch{await this.ctx.fs.writeFile(E,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__rw__:${E.length}:${E}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let E=w.slice(0,-1),T=Number.parseInt(E,10);if(!Number.isNaN(T)){let N=this.ctx.state.fileDescriptors.get(T);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupout__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let E=Number.parseInt(w,10);Number.isNaN(E)||this.ctx.state.fileDescriptors.set(b,`__dupout__:${E}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let E=w.slice(0,-1),T=Number.parseInt(E,10);if(!Number.isNaN(T)){let N=this.ctx.state.fileDescriptors.get(T);N!==void 0?this.ctx.state.fileDescriptors.set(b,N):this.ctx.state.fileDescriptors.set(b,`__dupin__:${T}`),this.ctx.state.fileDescriptors.delete(T)}}else{let E=Number.parseInt(w,10);Number.isNaN(E)||this.ctx.state.fileDescriptors.set(b,`__dupin__:${E}`)}break}}}for(let[y,w]of n)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);if(this.ctx.state.tempExportedVars)for(let y of n.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await Rn(this.ctx,u,f);n.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(n)));let p,g=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(y){if(y instanceof le||y instanceof ce)g=y,p=L;else throw y}let S=i+m;if(S&&(p={...p,stderr:S+p.stderr}),p=await j(this.ctx,p,t.redirections),g)throw g;if(f.length>0){let y=f[f.length-1];if((u==="declare"||u==="local"||u==="typeset")&&/^[a-zA-Z_][a-zA-Z0-9_]*=\(/.test(y)){let w=y.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);w&&(y=w[1])}this.ctx.state.lastArg=y}else this.ctx.state.lastArg=u;let v=Ur(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!v)for(let[y,w]of n)this.ctx.state.fullyUnsetLocals?.has(y)||(w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w));if(this.ctx.state.tempExportedVars)for(let y of n.keys())this.ctx.state.tempExportedVars.delete(y);return n.size>0&&this.ctx.state.tempEnvBindings&&this.ctx.state.tempEnvBindings.pop(),this.ctx.state.expansionStderr&&(p={...p,stderr:this.ctx.state.expansionStderr+p.stderr},this.ctx.state.expansionStderr=""),p}async runCommand(t,s,r,n,i=!1,o=!1,a=-1){let l={ctx:this.ctx,runCommand:(u,f,d,h,m,p,g)=>this.runCommand(u,f,d,h,m,p,g),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(u,f,d)=>this.executeUserScript(u,f,d)},c=await An(l,t,s,r,n,i,o,a);return c!==null?c:Pn(l,t,s,n,o)}aliasExpansionStack=new Set;expandAlias(t){return is(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Vt(this.ctx,t)}async executeSubshell(t,s=""){return zn(this.ctx,t,s,r=>this.executeStatement(r))}async executeGroup(t,s=""){return Vn(this.ctx,t,s,r=>this.executeStatement(r))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await V(this.ctx,t.expression.expression),n=q(r!==0);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=A(`bash: arithmetic expression: ${r.message}
669
+ `);return j(this.ctx,n,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let r=await De(this.ctx,t.expression),n=q(r);return this.ctx.state.expansionStderr&&(n={...n,stderr:this.ctx.state.expansionStderr+n.stderr},this.ctx.state.expansionStderr=""),j(this.ctx,n,t.redirections)}catch(r){let n=r instanceof Re?1:2,i=A(`bash: conditional expression: ${r.message}
670
+ `,n);return j(this.ctx,i,t.redirections)}}};var oe={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4,maxGlobOperations:1e5,maxStringLength:10485760,maxArrayElements:1e5,maxHeredocSize:10485760,maxSubstitutionDepth:50};function jn(e){return e?{maxCallDepth:e.maxCallDepth??oe.maxCallDepth,maxCommandCount:e.maxCommandCount??oe.maxCommandCount,maxLoopIterations:e.maxLoopIterations??oe.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??oe.maxAwkIterations,maxSedIterations:e.maxSedIterations??oe.maxSedIterations,maxJqIterations:e.maxJqIterations??oe.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??oe.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??oe.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??oe.maxGlobOperations,maxStringLength:e.maxStringLength??oe.maxStringLength,maxArrayElements:e.maxArrayElements??oe.maxArrayElements,maxHeredocSize:e.maxHeredocSize??oe.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??oe.maxSubstitutionDepth}:{...oe}}function Hn(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function Ao(e){let t=Hn(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function Po(e,t){let s=Hn(e);if(!s)return!1;let r=Ao(t);return!r||s.origin!==r.origin?!1:r.pathPrefix==="/"||r.pathPrefix===""?!0:s.pathname.startsWith(r.pathPrefix)}function Ys(e,t){return!t||t.length===0?!1:t.some(s=>Po(e,s))}var Ze=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},Ge=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},Xe=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},jt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var _o=20,Co=3e4,ko=["GET","HEAD"],No=new Set(["GET","HEAD","OPTIONS"]),Oo=new Set([301,302,303,307,308]);function Qs(e){let t=e.maxRedirects??_o,s=e.timeoutMs??Co,r=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??ko;function n(a){if(!e.dangerouslyAllowFullInternetAccess&&!Ys(a,e.allowedUrlPrefixes??[]))throw new Ze(a)}function i(a){if(e.dangerouslyAllowFullInternetAccess)return;let l=a.toUpperCase();if(!r.includes(l))throw new jt(l,r)}async function o(a,l={}){let c=l.method?.toUpperCase()??"GET";n(a),i(c);let u=a,f=0,d=l.followRedirects??!0,h=l.timeoutMs!==void 0?Math.min(l.timeoutMs,s):s;for(;;){let m=new AbortController,p=setTimeout(()=>m.abort(),h);try{let g={method:c,headers:l.headers,signal:m.signal,redirect:"manual"};l.body&&!No.has(c)&&(g.body=l.body);let S=await fetch(u,g);if(Oo.has(S.status)&&d){let v=S.headers.get("location");if(!v)return await Un(S,u);let C=new URL(v,u).href;if(!e.dangerouslyAllowFullInternetAccess&&!Ys(C,e.allowedUrlPrefixes??[]))throw new Xe(C);if(f++,f>t)throw new Ge(t);u=C;continue}return await Un(S,u)}finally{clearTimeout(p)}}}return o}async function Un(e,t){let s=Object.create(null);return e.headers.forEach((r,n)=>{s[n.toLowerCase()]=r}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}function qn(){let e=[{prop:"Function",target:globalThis,violationType:"function_constructor",strategy:"throw",reason:"Function constructor allows arbitrary code execution"},{prop:"eval",target:globalThis,violationType:"eval",strategy:"throw",reason:"eval() allows arbitrary code execution"},{prop:"setTimeout",target:globalThis,violationType:"setTimeout",strategy:"throw",reason:"setTimeout with string argument allows code execution"},{prop:"setInterval",target:globalThis,violationType:"setInterval",strategy:"throw",reason:"setInterval with string argument allows code execution"},{prop:"setImmediate",target:globalThis,violationType:"setImmediate",strategy:"throw",reason:"setImmediate could be used to escape sandbox context"},{prop:"env",target:process,violationType:"process_env",strategy:"throw",reason:"process.env could leak sensitive environment variables"},{prop:"binding",target:process,violationType:"process_binding",strategy:"throw",reason:"process.binding provides access to native Node.js modules"},{prop:"_linkedBinding",target:process,violationType:"process_binding",strategy:"throw",reason:"process._linkedBinding provides access to native Node.js modules"},{prop:"dlopen",target:process,violationType:"process_dlopen",strategy:"throw",reason:"process.dlopen allows loading native addons"},{prop:"WeakRef",target:globalThis,violationType:"weak_ref",strategy:"throw",reason:"WeakRef could be used to leak references outside sandbox"},{prop:"FinalizationRegistry",target:globalThis,violationType:"finalization_registry",strategy:"throw",reason:"FinalizationRegistry could be used to leak references outside sandbox"},{prop:"Reflect",target:globalThis,violationType:"reflect",strategy:"freeze",reason:"Reflect provides introspection capabilities"},{prop:"Proxy",target:globalThis,violationType:"proxy",strategy:"throw",reason:"Proxy allows intercepting and modifying object behavior"},{prop:"WebAssembly",target:globalThis,violationType:"webassembly",strategy:"throw",reason:"WebAssembly allows executing arbitrary compiled code"}];try{let t=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(async()=>{}),violationType:"async_function_constructor",strategy:"throw",reason:"AsyncFunction constructor allows arbitrary async code execution"})}catch{}try{let t=Object.getPrototypeOf(function*(){}).constructor;t&&t!==Function&&e.push({prop:"constructor",target:Object.getPrototypeOf(function*(){}),violationType:"generator_function_constructor",strategy:"throw",reason:"GeneratorFunction constructor allows arbitrary generator code execution"})}catch{}try{let t=Object.getPrototypeOf(async function*(){}).constructor;t&&t!==Function&&t!==Object.getPrototypeOf(async()=>{}).constructor&&e.push({prop:"constructor",target:Object.getPrototypeOf(async function*(){}),violationType:"async_generator_function_constructor",strategy:"throw",reason:"AsyncGeneratorFunction constructor allows arbitrary async generator code execution"})}catch{}return e.filter(t=>{try{return t.target[t.prop]!==void 0}catch{return!1}})}var Ht=typeof __BROWSER__<"u"&&__BROWSER__;function Zn(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var er=null;if(!Ht)try{let{createRequire:e}=await import("node:module");er=e(import.meta.url)("node:async_hooks").AsyncLocalStorage}catch(e){console.debug("[DefenseInDepthBox] AsyncLocalStorage not available, defense-in-depth disabled:",e instanceof Error?e.message:e)}var xo=`
671
671
 
672
672
  This is a defense-in-depth measure and indicates a bug in just-bash. Please report this at security@vercel.com`,se=class extends Error{violation;constructor(t,s){super(t+xo),this.violation=s,this.name="SecurityViolationError"}},ue=!Ht&&er?new er:null,To=1e3,Js={enabled:!0,auditMode:!1};function Do(e){return e===void 0?{...Js,enabled:!1}:typeof e=="boolean"?{...Js,enabled:e}:{...Js,...e}}var Ke=class e{static instance=null;config;refCount=0;originalDescriptors=[];violations=[];activationTime=0;totalActiveTimeMs=0;constructor(t){this.config=t}static getInstance(t){return e.instance||(e.instance=new e(Do(t))),e.instance}static resetInstance(){e.instance&&(e.instance.forceDeactivate(),e.instance=null)}static isInSandboxedContext(){return ue?ue?.getStore()?.sandboxActive===!0:!1}static getCurrentExecutionId(){if(ue)return ue?.getStore()?.executionId}updateConfig(t){this.config={...this.config,...t}}activate(){if(Ht||!this.config.enabled){let s=Zn();return{run:r=>r(),deactivate:()=>{},executionId:s}}this.refCount++,this.refCount===1&&(this.applyPatches(),this.activationTime=Date.now());let t=Zn();return{run:s=>ue.run({sandboxActive:!0,executionId:t},s),deactivate:()=>{this.refCount--,this.refCount===0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount<0&&(this.refCount=0)},executionId:t}}forceDeactivate(){this.refCount>0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount=0}isActive(){return this.refCount>0}getStats(){return{violationsBlocked:this.violations.length,violations:[...this.violations],activeTimeMs:this.totalActiveTimeMs+(this.refCount>0?Date.now()-this.activationTime:0),refCount:this.refCount}}clearViolations(){this.violations=[]}getPathForTarget(t,s){return t===globalThis?`globalThis.${s}`:t===process?`process.${s}`:t===Error?`Error.${s}`:t===Function.prototype?`Function.prototype.${s}`:t===Object.prototype?`Object.prototype.${s}`:`<object>.${s}`}shouldBlock(){return Ht||this.config.auditMode||!ue?!1:ue?.getStore()?.sandboxActive===!0}recordViolation(t,s,r){let n={timestamp:Date.now(),type:t,message:r,path:s,stack:new Error().stack,executionId:ue?.getStore()?.executionId};if(this.violations.length<To&&this.violations.push(n),this.config.onViolation)try{this.config.onViolation(n)}catch(i){console.debug("[DefenseInDepthBox] onViolation callback threw:",i instanceof Error?i.message:i)}return n}createBlockingProxy(t,s,r){let n=this;return new Proxy(t,{apply(i,o,a){if(n.shouldBlock()){let l=`${s} is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} called (audit mode)`),Reflect.apply(i,o,a)},construct(i,o,a){if(n.shouldBlock()){let l=`${s} constructor is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} constructor called (audit mode)`),Reflect.construct(i,o,a)}})}createBlockingObjectProxy(t,s,r){let n=this;return new Proxy(t,{get(i,o,a){if(n.shouldBlock()){let l=`${s}.${String(o)}`,c=`${l} is blocked during script execution`,u=n.recordViolation(r,l,c);throw new se(c,u)}if(n.config.auditMode&&ue?.getStore()?.sandboxActive===!0){let l=`${s}.${String(o)}`;n.recordViolation(r,l,`${l} accessed (audit mode)`)}return Reflect.get(i,o,a)},set(i,o,a,l){if(n.shouldBlock()){let c=`${s}.${String(o)}`,u=`${c} modification is blocked during script execution`,f=n.recordViolation(r,c,u);throw new se(u,f)}return Reflect.set(i,o,a,l)},ownKeys(i){if(n.shouldBlock()){let o=`${s} enumeration is blocked during script execution`,a=n.recordViolation(r,s,o);throw new se(o,a)}return Reflect.ownKeys(i)},getOwnPropertyDescriptor(i,o){if(n.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} descriptor access is blocked during script execution`,c=n.recordViolation(r,a,l);throw new se(l,c)}return Reflect.getOwnPropertyDescriptor(i,o)},has(i,o){if(n.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} existence check is blocked during script execution`,c=n.recordViolation(r,a,l);throw new se(l,c)}return Reflect.has(i,o)}})}applyPatches(){let t=qn();for(let s of t)this.applyPatch(s);this.protectConstructorChain(),this.protectErrorPrepareStackTrace()}protectConstructorChain(){this.patchPrototypeConstructor(Function.prototype,"Function.prototype.constructor","function_constructor");try{let t=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&this.patchPrototypeConstructor(t.prototype,"AsyncFunction.prototype.constructor","async_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch AsyncFunction.prototype.constructor:",t instanceof Error?t.message:t)}try{let t=Object.getPrototypeOf(function*(){}).constructor;t&&t!==Function&&this.patchPrototypeConstructor(t.prototype,"GeneratorFunction.prototype.constructor","generator_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch GeneratorFunction.prototype.constructor:",t instanceof Error?t.message:t)}try{let t=Object.getPrototypeOf(async function*(){}).constructor,s=Object.getPrototypeOf(async()=>{}).constructor;t&&t!==Function&&t!==s&&this.patchPrototypeConstructor(t.prototype,"AsyncGeneratorFunction.prototype.constructor","async_generator_function_constructor")}catch(t){console.debug("[DefenseInDepthBox] Could not patch AsyncGeneratorFunction.prototype.constructor:",t instanceof Error?t.message:t)}}protectErrorPrepareStackTrace(){let t=this;try{let s=Object.getOwnPropertyDescriptor(Error,"prepareStackTrace");this.originalDescriptors.push({target:Error,prop:"prepareStackTrace",descriptor:s});let r=s?.value;Object.defineProperty(Error,"prepareStackTrace",{get(){return r},set(n){if(t.shouldBlock()){let i="Error.prepareStackTrace modification is blocked during script execution",o=t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace",i);throw new se(i,o)}t.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace","Error.prepareStackTrace set (audit mode)"),r=n},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect Error.prepareStackTrace:",s instanceof Error?s.message:s)}}patchPrototypeConstructor(t,s,r){let n=this;try{let i=Object.getOwnPropertyDescriptor(t,"constructor");this.originalDescriptors.push({target:t,prop:"constructor",descriptor:i});let o=i?.value;Object.defineProperty(t,"constructor",{get(){if(n.shouldBlock()){let a=`${s} access is blocked during script execution`,l=n.recordViolation(r,s,a);throw new se(a,l)}return n.config.auditMode&&ue?.getStore()?.sandboxActive===!0&&n.recordViolation(r,s,`${s} accessed (audit mode)`),o},set(a){if(n.shouldBlock()){let l=`${s} modification is blocked during script execution`,c=n.recordViolation(r,s,l);throw new se(l,c)}Object.defineProperty(this,"constructor",{value:a,writable:!0,configurable:!0})},configurable:!0})}catch(i){console.debug(`[DefenseInDepthBox] Could not patch ${s}:`,i instanceof Error?i.message:i)}}applyPatch(t){let{target:s,prop:r,violationType:n,strategy:i}=t;try{let o=s[r];if(o===void 0)return;let a=Object.getOwnPropertyDescriptor(s,r);if(this.originalDescriptors.push({target:s,prop:r,descriptor:a}),i==="freeze")typeof o=="object"&&o!==null&&Object.freeze(o);else{let l=this.getPathForTarget(s,r),c=typeof o=="function"?this.createBlockingProxy(o,l,n):this.createBlockingObjectProxy(o,l,n);Object.defineProperty(s,r,{value:c,writable:!0,configurable:!0})}}catch(o){let a=this.getPathForTarget(s,r);console.debug(`[DefenseInDepthBox] Could not patch ${a}:`,o instanceof Error?o.message:o)}}restorePatches(){for(let t=this.originalDescriptors.length-1;t>=0;t--){let{target:s,prop:r,descriptor:n}=this.originalDescriptors[t];try{n?Object.defineProperty(s,r,n):delete s[r]}catch(i){let o=this.getPathForTarget(s,r);console.debug(`[DefenseInDepthBox] Could not restore ${o}:`,i instanceof Error?i.message:i)}}this.originalDescriptors=[]}};var ut=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;state;constructor(t={}){let s=t.fs??new Ce(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let r=t.cwd||(this.useDefaultLayout?"/home/user":"/"),n=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
673
673
  `],["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(this.limits=jn({...t.executionLimits,...t.maxCallDepth!==void 0&&{maxCallDepth:t.maxCallDepth},...t.maxCommandCount!==void 0&&{maxCommandCount:t.maxCommandCount},...t.maxLoopIterations!==void 0&&{maxLoopIterations:t.maxLoopIterations}}),t.network&&(this.secureFetch=Qs(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth,this.state={env:n,cwd:r,previousDir:"/home/user",functions:new Map,localScopes:[],callDepth:0,sourceDepth:0,commandCount:0,lastExitCode:0,lastArg:"",startTime:Date.now(),lastBackgroundPid:0,bashPid:process.pid,nextVirtualPid:process.pid+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",ss(this.state.options)),this.state.env.set("BASHOPTS",rs(this.state.shoptOptions)),Ar(s,this.useDefaultLayout),r!=="/"&&s instanceof Ce)try{s.mkdirSync(r,{recursive:!0})}catch{}for(let i of vr(t.commands))this.registerCommand(i);if(t.network)for(let i of br())this.registerCommand(i);if(t.python)for(let i of Er())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)$r(i)?this.registerCommand(Sr(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let r=`#!/bin/bash