just-bash 2.8.1 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,156 +1,156 @@
1
1
  #!/usr/bin/env node
2
- import{B as Ys,C as Qs,D as te,E as Ne,F as K,G as ce,H as at,I as Js,J as I,K as en,L as tn,M as he,N as zt,O as ot,P as V,a as Bs,b as js,c as Hs,d as rt,e as q,f as M,g as ue,h as Y,i as de,j as $e,k as Rt,l as it,m as Us,n as Lt,o as qs,p as ae,q as ge,r as Zs,s as Gs,t as Wt,u as Ft,v as Se,w as Ks,x as Xs,y as le,z as Mt}from"./chunks/chunk-CQZVMYQ3.js";import{a as Ee,b as fe}from"./chunks/chunk-4PRVMER6.js";import{a as ne,b as re,c as ee,d as ie,e as zs,f as z,g as Pe,h as tt,i as st,j as Vs,k as J,l as be,m as nt,n as oe}from"./chunks/chunk-K5IXNHO5.js";import{a as Be}from"./chunks/chunk-SE4C7FJY.js";import"./chunks/chunk-OBH7XN5N.js";import{a as ye}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import{resolve as Or}from"node:path";var Te=[{name:"echo",load:async()=>(await import("./chunks/echo-7I42V66Q.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-HNXE2ES2.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-4W7NDLLV.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-5LN47VHU.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-XMSNS6S5.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-OEMA5ZTD.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-IBPHJBM3.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-S7ASVG34.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-VFXCUKXO.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-P4KHB27X.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-EFFNQ3RY.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-TYLTHXFR.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-L26WH2K4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-VL3R4LAM.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-TJHLLIMR.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-YAUIERGN.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-CZ2TD6T6.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-ZZVPXHLF.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-BD56656Z.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-BD56656Z.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-BD56656Z.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-IZR5557M.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-E4QAUCYQ.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-OKD2P6CM.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-QF3YLXRW.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-NNXAFO6D.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-CPIFQTKY.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-IHF6BEOO.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-UCH462KK.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-IAUNBQKH.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-VP42N2JN.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-DSM3NUGM.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-452R4I2C.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-77K5HH2M.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-BFVYAPOU.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-ZEKN6D4Q.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-7UP7EATZ.js")).split},{name:"column",load:async()=>(await import("./chunks/column-HQ4AK5DM.js")).column},{name:"join",load:async()=>(await import("./chunks/join-3IXMEGNA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-XSKPK43X.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-KHOYETRP.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-SO5MVUEX.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-EES7TR26.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-WC3AXFHC.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-PECPOFQT.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-W6IMQ43Y.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-W6IMQ43Y.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-MGDOL4KG.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-MGDOL4KG.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-56DL6SXU.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-IWT2HHEA.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-OVATH2SQ.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-OVATH2SQ.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-CI7A5IXQ.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-OAUBNRSG.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-OAUBNRSG.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-TJPN2INT.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-43KPK6TL.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ZGXLP3DN.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-IQLPMFYI.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-O5BOTJGJ.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-JED4EKFH.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-F4NVQOJH.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-AVK43XM2.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-433HIVAI.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-VHPDBIVV.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-4SVNPPXZ.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-BM3AFTIE.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-MWSA2WYI.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-EPEXKI4B.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-L43ENI4H.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-5QEJAXNR.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-KNRFDAY7.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WXDKRL2Z.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-JVLUNKSG.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-KRKGC2U3.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-5ILPB46W.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-5ILPB46W.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-5ILPB46W.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Te.push({name:"tar",load:async()=>(await import("./chunks/tar-CLEBMI4R.js")).tarCommand}),Te.push({name:"yq",load:async()=>(await import("./chunks/yq-WS7WDP36.js")).yqCommand}),Te.push({name:"xan",load:async()=>(await import("./chunks/xan-OR7RSXSZ.js")).xanCommand}),Te.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-THMDBIGF.js")).sqlite3Command}));var Vt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Vt.push({name:"python3",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).python3Command}),Vt.push({name:"python",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).pythonCommand}));var Rr=[{name:"curl",load:async()=>(await import("./chunks/curl-7IUASLUJ.js")).curlCommand}],sn=new Map;function Bt(e){return{name:e.name,async execute(t,s){let n=sn.get(e.name);return n||(n=await e.load(),sn.set(e.name,n)),n.execute(t,s)}}}function nn(e){return(e?Te.filter(s=>e.includes(s.name)):Te).map(Bt)}function rn(){return Rr.map(Bt)}function an(){return Vt.map(Bt)}function on(e){return"load"in e&&typeof e.load=="function"}function ln(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var Lr=new TextEncoder,Wr=new TextDecoder;function Ie(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 n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):Lr.encode(e)}function lt(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):Wr.decode(e)}function Ae(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ct=new TextEncoder;function Fr(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var je=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,n]of Object.entries(t))Fr(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}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,n,r){let i=this.normalizePath(t);this.ensureParentDirs(i);let a=Ae(n),o=Ie(s,a);this.data.set(i,{type:"file",content:o,mode:r?.mode??420,mtime:r?.mtime??new Date})}async readFile(t,s){let n=await this.readFileBuffer(t),r=Ae(s);return lt(n,r)}async readFileBuffer(t){let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content instanceof Uint8Array?n.content:ct.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){let r=this.normalizePath(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let a=Ae(n),o=Ie(s,a);if(i?.type==="file"){let f=i.content instanceof Uint8Array?i.content:ct.encode(i.content),l=new Uint8Array(f.length+o.length);l.set(f),l.set(o,f.length),this.data.set(r,{type:"file",content:l,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}async exists(t){try{let s=this.resolvePathWithSymlinks(t);return this.data.has(s)}catch{return!1}}async stat(t){let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=ct.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=ct.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let a=0;a<n.length-1;a++){let o=n[a];r=`${r}/${o}`;let f=this.data.get(r),l=0,c=40;for(;f&&f.type==="symlink"&&l<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=this.resolveSymlink(r,f.target),f=this.data.get(r),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let a of n){r=`${r}/${a}`;let o=this.data.get(r),f=0,l=40;for(;o&&o.type==="symlink"&&f<l;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=this.resolveSymlink(r,o.target),o=this.data.get(r),f++}if(f>=l)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){let n=this.normalizePath(t);if(this.data.has(n)){if(this.data.get(n)?.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 r=this.dirname(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=this.resolveSymlink(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.type!=="directory")throw new Error(`ENOTDIR: not a directory, scandir '${t}'`);let i=s==="/"?"/":`${s}/`,a=new Map;for(let[o,f]of this.data.entries())if(o!==s&&o.startsWith(i)){let l=o.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&!a.has(c)&&a.set(c,{name:c,isFile:f.type==="file",isDirectory:f.type==="directory",isSymbolicLink:f.type==="symlink"})}return Array.from(a.values()).sort((o,f)=>o.name<f.name?-1:o.name>f.name?1:0)}async rm(t,s){let n=this.normalizePath(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of i){let o=n==="/"?`/${a}`:`${n}/${a}`;await this.rm(o,s)}}}this.data.delete(n)}async cp(t,s,n){let r=this.normalizePath(t),i=this.normalizePath(s),a=this.data.get(r);if(!a)throw new Error(`ENOENT: no such file or directory, cp '${t}'`);if(a.type==="file")this.ensureParentDirs(i),this.data.set(i,{...a});else if(a.type==="directory"){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let o=await this.readdir(r);for(let f of o){let l=r==="/"?`/${f}`:`${r}/${f}`,c=i==="/"?`/${f}`:`${i}/${f}`;await this.cp(l,c,n)}}}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 n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}async chmod(t,s){let n=this.normalizePath(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){let n=this.normalizePath(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){let n=this.normalizePath(t),r=this.normalizePath(s),i=this.data.get(n);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(r))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){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,n){let r=this.normalizePath(t),i=this.resolvePathWithSymlinks(r),a=this.data.get(i);if(!a)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);a.mtime=n}};function Mr(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function zr(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 Vr(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 Br(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Bs}
2
+ import{B as on,C as an,D as ne,E as De,F as K,G as me,H as ut,I as ln,J as T,K as cn,L as un,M as we,N as qt,O as ft,P as z,a as Xs,b as Ys,c as Qs,d as lt,e as q,f as M,g as ye,h as Y,i as ge,j as Ce,k as zt,l as ct,m as Js,n as Bt,o as en,p as fe,q as $e,r as tn,s as sn,t as jt,u as Ht,v as Pe,w as nn,x as rn,y as pe,z as Ut}from"./chunks/chunk-2ODUA7YH.js";import{a as _e,b as he}from"./chunks/chunk-4PRVMER6.js";import{a as ae,b as le,c as se,d as ue,e as Gs,f as V,g as xe,h as it,i as ot,j as Ks,k as te,l as Ae,m as at,n as de}from"./chunks/chunk-K5IXNHO5.js";import{a as qe}from"./chunks/chunk-SE4C7FJY.js";import"./chunks/chunk-OBH7XN5N.js";import{a as Ee}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import{resolve as Vr}from"node:path";var Le=[{name:"echo",load:async()=>(await import("./chunks/echo-7I42V66Q.js")).echoCommand},{name:"cat",load:async()=>(await import("./chunks/cat-HNXE2ES2.js")).catCommand},{name:"printf",load:async()=>(await import("./chunks/printf-4W7NDLLV.js")).printfCommand},{name:"ls",load:async()=>(await import("./chunks/ls-5LN47VHU.js")).lsCommand},{name:"mkdir",load:async()=>(await import("./chunks/mkdir-XMSNS6S5.js")).mkdirCommand},{name:"rmdir",load:async()=>(await import("./chunks/rmdir-OEMA5ZTD.js")).rmdirCommand},{name:"touch",load:async()=>(await import("./chunks/touch-IBPHJBM3.js")).touchCommand},{name:"rm",load:async()=>(await import("./chunks/rm-S7ASVG34.js")).rmCommand},{name:"cp",load:async()=>(await import("./chunks/cp-VFXCUKXO.js")).cpCommand},{name:"mv",load:async()=>(await import("./chunks/mv-P4KHB27X.js")).mvCommand},{name:"ln",load:async()=>(await import("./chunks/ln-EFFNQ3RY.js")).lnCommand},{name:"chmod",load:async()=>(await import("./chunks/chmod-TYLTHXFR.js")).chmodCommand},{name:"pwd",load:async()=>(await import("./chunks/pwd-L26WH2K4.js")).pwdCommand},{name:"readlink",load:async()=>(await import("./chunks/readlink-VL3R4LAM.js")).readlinkCommand},{name:"head",load:async()=>(await import("./chunks/head-TJHLLIMR.js")).headCommand},{name:"tail",load:async()=>(await import("./chunks/tail-YAUIERGN.js")).tailCommand},{name:"wc",load:async()=>(await import("./chunks/wc-CZ2TD6T6.js")).wcCommand},{name:"stat",load:async()=>(await import("./chunks/stat-ZZVPXHLF.js")).statCommand},{name:"grep",load:async()=>(await import("./chunks/grep-BD56656Z.js")).grepCommand},{name:"fgrep",load:async()=>(await import("./chunks/grep-BD56656Z.js")).fgrepCommand},{name:"egrep",load:async()=>(await import("./chunks/grep-BD56656Z.js")).egrepCommand},{name:"rg",load:async()=>(await import("./chunks/rg-IZR5557M.js")).rgCommand},{name:"sed",load:async()=>(await import("./chunks/sed-E4QAUCYQ.js")).sedCommand},{name:"awk",load:async()=>(await import("./chunks/awk2-OKD2P6CM.js")).awkCommand2},{name:"sort",load:async()=>(await import("./chunks/sort-QF3YLXRW.js")).sortCommand},{name:"uniq",load:async()=>(await import("./chunks/uniq-NNXAFO6D.js")).uniqCommand},{name:"comm",load:async()=>(await import("./chunks/comm-CPIFQTKY.js")).commCommand},{name:"cut",load:async()=>(await import("./chunks/cut-IHF6BEOO.js")).cutCommand},{name:"paste",load:async()=>(await import("./chunks/paste-UCH462KK.js")).pasteCommand},{name:"tr",load:async()=>(await import("./chunks/tr-IAUNBQKH.js")).trCommand},{name:"rev",load:async()=>(await import("./chunks/rev-VP42N2JN.js")).rev},{name:"nl",load:async()=>(await import("./chunks/nl-DSM3NUGM.js")).nl},{name:"fold",load:async()=>(await import("./chunks/fold-452R4I2C.js")).fold},{name:"expand",load:async()=>(await import("./chunks/expand-77K5HH2M.js")).expand},{name:"unexpand",load:async()=>(await import("./chunks/unexpand-BFVYAPOU.js")).unexpand},{name:"strings",load:async()=>(await import("./chunks/strings-ZEKN6D4Q.js")).strings},{name:"split",load:async()=>(await import("./chunks/split-7UP7EATZ.js")).split},{name:"column",load:async()=>(await import("./chunks/column-HQ4AK5DM.js")).column},{name:"join",load:async()=>(await import("./chunks/join-3IXMEGNA.js")).join},{name:"tee",load:async()=>(await import("./chunks/tee-XSKPK43X.js")).teeCommand},{name:"find",load:async()=>(await import("./chunks/find-KHOYETRP.js")).findCommand},{name:"basename",load:async()=>(await import("./chunks/basename-SO5MVUEX.js")).basenameCommand},{name:"dirname",load:async()=>(await import("./chunks/dirname-EES7TR26.js")).dirnameCommand},{name:"tree",load:async()=>(await import("./chunks/tree-WC3AXFHC.js")).treeCommand},{name:"du",load:async()=>(await import("./chunks/du-PECPOFQT.js")).duCommand},{name:"env",load:async()=>(await import("./chunks/env-W6IMQ43Y.js")).envCommand},{name:"printenv",load:async()=>(await import("./chunks/env-W6IMQ43Y.js")).printenvCommand},{name:"alias",load:async()=>(await import("./chunks/alias-MGDOL4KG.js")).aliasCommand},{name:"unalias",load:async()=>(await import("./chunks/alias-MGDOL4KG.js")).unaliasCommand},{name:"history",load:async()=>(await import("./chunks/history-56DL6SXU.js")).historyCommand},{name:"xargs",load:async()=>(await import("./chunks/xargs-IWT2HHEA.js")).xargsCommand},{name:"true",load:async()=>(await import("./chunks/true-OVATH2SQ.js")).trueCommand},{name:"false",load:async()=>(await import("./chunks/true-OVATH2SQ.js")).falseCommand},{name:"clear",load:async()=>(await import("./chunks/clear-CI7A5IXQ.js")).clearCommand},{name:"bash",load:async()=>(await import("./chunks/bash-OAUBNRSG.js")).bashCommand},{name:"sh",load:async()=>(await import("./chunks/bash-OAUBNRSG.js")).shCommand},{name:"jq",load:async()=>(await import("./chunks/jq-TJPN2INT.js")).jqCommand},{name:"base64",load:async()=>(await import("./chunks/base64-43KPK6TL.js")).base64Command},{name:"diff",load:async()=>(await import("./chunks/diff-ZGXLP3DN.js")).diffCommand},{name:"date",load:async()=>(await import("./chunks/date-IQLPMFYI.js")).dateCommand},{name:"sleep",load:async()=>(await import("./chunks/sleep-O5BOTJGJ.js")).sleepCommand},{name:"timeout",load:async()=>(await import("./chunks/timeout-JED4EKFH.js")).timeoutCommand},{name:"time",load:async()=>(await import("./chunks/time-F4NVQOJH.js")).timeCommand},{name:"seq",load:async()=>(await import("./chunks/seq-AVK43XM2.js")).seqCommand},{name:"expr",load:async()=>(await import("./chunks/expr-433HIVAI.js")).exprCommand},{name:"md5sum",load:async()=>(await import("./chunks/md5sum-VHPDBIVV.js")).md5sumCommand},{name:"sha1sum",load:async()=>(await import("./chunks/sha1sum-4SVNPPXZ.js")).sha1sumCommand},{name:"sha256sum",load:async()=>(await import("./chunks/sha256sum-BM3AFTIE.js")).sha256sumCommand},{name:"file",load:async()=>(await import("./chunks/file-MWSA2WYI.js")).fileCommand},{name:"html-to-markdown",load:async()=>(await import("./chunks/html-to-markdown-EPEXKI4B.js")).htmlToMarkdownCommand},{name:"help",load:async()=>(await import("./chunks/help-L43ENI4H.js")).helpCommand},{name:"which",load:async()=>(await import("./chunks/which-5QEJAXNR.js")).whichCommand},{name:"tac",load:async()=>(await import("./chunks/tac-KNRFDAY7.js")).tac},{name:"hostname",load:async()=>(await import("./chunks/hostname-WXDKRL2Z.js")).hostname},{name:"whoami",load:async()=>(await import("./chunks/whoami-JVLUNKSG.js")).whoami},{name:"od",load:async()=>(await import("./chunks/od-KRKGC2U3.js")).od},{name:"gzip",load:async()=>(await import("./chunks/gzip-5ILPB46W.js")).gzipCommand},{name:"gunzip",load:async()=>(await import("./chunks/gzip-5ILPB46W.js")).gunzipCommand},{name:"zcat",load:async()=>(await import("./chunks/gzip-5ILPB46W.js")).zcatCommand}];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Le.push({name:"tar",load:async()=>(await import("./chunks/tar-CLEBMI4R.js")).tarCommand}),Le.push({name:"yq",load:async()=>(await import("./chunks/yq-WS7WDP36.js")).yqCommand}),Le.push({name:"xan",load:async()=>(await import("./chunks/xan-OR7RSXSZ.js")).xanCommand}),Le.push({name:"sqlite3",load:async()=>(await import("./chunks/sqlite3-THMDBIGF.js")).sqlite3Command}));var Zt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Zt.push({name:"python3",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).python3Command}),Zt.push({name:"python",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).pythonCommand}));var Ur=[{name:"curl",load:async()=>(await import("./chunks/curl-7IUASLUJ.js")).curlCommand}],fn=new Map;function Gt(e){return{name:e.name,async execute(t,s){let n=fn.get(e.name);return n||(n=await e.load(),fn.set(e.name,n)),n.execute(t,s)}}}function dn(e){return(e?Le.filter(s=>e.includes(s.name)):Le).map(Gt)}function hn(){return Ur.map(Gt)}function pn(){return Zt.map(Gt)}function mn(e){return"load"in e&&typeof e.load=="function"}function yn(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var qr=new TextEncoder,Zr=new TextDecoder;function Fe(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 n=0;n<e.length;n+=2)s[n/2]=parseInt(e.slice(n,n+2),16);return s}return t==="binary"||t==="latin1"?Uint8Array.from(e,s=>s.charCodeAt(0)):qr.encode(e)}function dt(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):Zr.decode(e)}function ke(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ht=new TextEncoder;function Gr(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function ee(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Ze=class{data=new Map;constructor(t){if(this.data.set("/",{type:"directory",mode:493,mtime:new Date}),t)for(let[s,n]of Object.entries(t))Gr(n)?this.writeFileSync(s,n.content,void 0,{mode:n.mode,mtime:n.mtime}):this.writeFileSync(s,n)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}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,n,r){ee(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=ke(n),a=Fe(s,o);this.data.set(i,{type:"file",content:a,mode:r?.mode??420,mtime:r?.mtime??new Date})}async readFile(t,s){let n=await this.readFileBuffer(t),r=ke(s);return dt(n,r)}async readFileBuffer(t){ee(t,"open");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, open '${t}'`);if(n.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return n.content instanceof Uint8Array?n.content:ht.encode(n.content)}async writeFile(t,s,n){this.writeFileSync(t,s,n)}async appendFile(t,s,n){ee(t,"append");let r=this.normalizePath(t),i=this.data.get(r);if(i&&i.type==="directory")throw new Error(`EISDIR: illegal operation on a directory, write '${t}'`);let o=ke(n),a=Fe(s,o);if(i?.type==="file"){let l=i.content instanceof Uint8Array?i.content:ht.encode(i.content),c=new Uint8Array(l.length+a.length);c.set(l),c.set(a,l.length),this.data.set(r,{type:"file",content:c,mode:i.mode,mtime:new Date})}else this.writeFileSync(t,s,n)}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){ee(t,"stat");let s=this.resolvePathWithSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=ht.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}async lstat(t){ee(t,"lstat");let s=this.resolveIntermediateSymlinks(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime||new Date};let r=0;return n.type==="file"&&n.content&&(n.content instanceof Uint8Array?r=n.content.length:r=ht.encode(n.content).length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:r,mtime:n.mtime||new Date}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}resolveIntermediateSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/");if(n.length<=1)return s;let r="",i=new Set;for(let o=0;o<n.length-1;o++){let a=n[o];r=`${r}/${a}`;let l=this.data.get(r),c=0,u=40;for(;l&&l.type==="symlink"&&c<u;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`);i.add(r),r=this.resolveSymlink(r,l.target),l=this.data.get(r),c++}if(c>=u)throw new Error(`ELOOP: too many levels of symbolic links, lstat '${t}'`)}return`${r}/${n[n.length-1]}`}resolvePathWithSymlinks(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.slice(1).split("/"),r="",i=new Set;for(let o of n){r=`${r}/${o}`;let a=this.data.get(r),l=0,c=40;for(;a&&a.type==="symlink"&&l<c;){if(i.has(r))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);i.add(r),r=this.resolveSymlink(r,a.target),a=this.data.get(r),l++}if(l>=c)throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`)}return r}async mkdir(t,s){this.mkdirSync(t,s)}mkdirSync(t,s){ee(t,"mkdir");let n=this.normalizePath(t);if(this.data.has(n)){if(this.data.get(n)?.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 r=this.dirname(n);if(r!=="/"&&!this.data.has(r))if(s?.recursive)this.mkdirSync(r,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.data.set(n,{type:"directory",mode:493,mtime:new Date})}async readdir(t){return(await this.readdirWithFileTypes(t)).map(n=>n.name)}async readdirWithFileTypes(t){ee(t,"scandir");let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let r=new Set;for(;n&&n.type==="symlink";){if(r.has(s))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(s),s=this.resolveSymlink(s,n.target),n=this.data.get(s)}if(!n)throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);if(n.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){ee(t,"rm");let n=this.normalizePath(t),r=this.data.get(n);if(!r){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}if(r.type==="directory"){let i=await this.readdir(n);if(i.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of i){let a=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(a,s)}}}this.data.delete(n)}async cp(t,s,n){ee(t,"cp"),ee(s,"cp");let r=this.normalizePath(t),i=this.normalizePath(s),o=this.data.get(r);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(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let a=await this.readdir(r);for(let l of a){let c=r==="/"?`/${l}`:`${r}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,n)}}}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 n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}async chmod(t,s){ee(t,"chmod");let n=this.normalizePath(t),r=this.data.get(n);if(!r)throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);r.mode=s}async symlink(t,s){ee(s,"symlink");let n=this.normalizePath(s);if(this.data.has(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.data.set(n,{type:"symlink",target:t,mode:511,mtime:new Date})}async link(t,s){ee(t,"link"),ee(s,"link");let n=this.normalizePath(t),r=this.normalizePath(s),i=this.data.get(n);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(r))throw new Error(`EEXIST: file already exists, link '${s}'`);this.ensureParentDirs(r),this.data.set(r,{type:"file",content:i.content,mode:i.mode,mtime:i.mtime})}async readlink(t){ee(t,"readlink");let s=this.normalizePath(t),n=this.data.get(s);if(!n)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}async realpath(t){ee(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,n){ee(t,"utimes");let r=this.normalizePath(t),i=this.resolvePathWithSymlinks(r),o=this.data.get(i);if(!o)throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);o.mtime=n}};function Kr(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Xr(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 Yr(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 Qr(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Xs}
3
3
  `),e.writeFileSync("/proc/self/exe","/bin/bash"),e.writeFileSync("/proc/self/cmdline","bash\0"),e.writeFileSync("/proc/self/comm",`bash
4
- `),e.writeFileSync("/proc/self/status",js()),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 cn(e,t){Mr(e)&&(zr(e,t),Vr(e),Br(e))}var jr=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],Hr=["braceexpand","hashall","interactive-comments"];function jt(e){let t=[],s=[...Hr.map(n=>({name:n,enabled:!0})),...jr.map(n=>({name:n,enabled:e[n]}))].sort((n,r)=>n.name.localeCompare(r.name));for(let n of s)n.enabled&&t.push(n.name);return t.join(":")}function xe(e){e.state.env.set("SHELLOPTS",jt(e.state.options))}var Ur=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ht(e){let t=[];for(let s of Ur)e[s]&&t.push(s);return t.join(":")}function Ut(e){e.state.env.set("BASHOPTS",Ht(e.state.shoptOptions))}var qr="BASH_ALIAS_";function fn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function un(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function dn(e,t){return e.env.get(`${qr}${t}`)}function qt(e,t,s){if(!t.name||!fn(t.name))return t;let n=un(t.name);if(!n)return t;let r=dn(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new M,a=r,o=r.endsWith(" ");if(!o)for(let u of t.args){let d=pn(u);a+=` ${d}`}let f;try{f=i.parse(a)}catch(u){if(u instanceof rt)throw u;return t}if(f.statements.length!==1||f.statements[0].pipelines.length!==1||f.statements[0].pipelines[0].commands.length!==1)return hn(t,r);let l=f.statements[0].pipelines[0].commands[0];if(l.type!=="SimpleCommand")return hn(t,r);let c={...l,assignments:[...t.assignments,...l.assignments],redirections:[...l.redirections,...t.redirections],line:t.line};if(o&&t.args.length>0&&(c={...c,args:[...c.args,...t.args]},c.args.length>0)){let u=c.args[0];if(fn(u)){let d=un(u);if(d&&dn(e,d)){let h={type:"SimpleCommand",name:u,args:c.args.slice(1),assignments:[],redirections:[]},m=qt(e,h,s);m!==h&&(c={...c,name:m.name,args:[...m.args]})}}}return c}catch(i){throw s.delete(n),i}}function hn(e,t){let s=t;for(let a of e.args){let o=pn(a);s+=` ${o}`}let n=new M,r=n.parseWordFromString("eval",!1,!1),i=n.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:r,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function pn(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(n=>n.type==="Literal"?n.value:`$${n.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 mn(e,t){let s=t.parts.map(c=>c.type==="Literal"?c.value:"\0").join(""),n=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!n||!s.endsWith(")"))return null;let r=n[1],i=[],a=!1,o="",f=!1;for(let c of t.parts)if(c.type==="Literal"){let u=c.value;if(!a){let d=u.indexOf("=(");d!==-1&&(a=!0,u=u.slice(d+2))}if(a){u.endsWith(")")&&(u=u.slice(0,-1));let d=u.split(/(\s+)/);for(let h of d)/^\s+$/.test(h)?(o||f)&&(i.push(o),o="",f=!1):h&&(o+=h)}}else if(a)if(c.type==="BraceExpansion")if(/^\[.+\]=/.test(o))o+=it({type:"Word",parts:[c]});else{(o||f)&&(i.push(o),o="",f=!1);let d=await he(e,{type:"Word",parts:[c]});i.push(...d.values)}else{(c.type==="SingleQuoted"||c.type==="DoubleQuoted"||c.type==="Escaped")&&(f=!0);let u=await I(e,{type:"Word",parts:[c]});o+=u}(o||f)&&i.push(o);let l=i.map(c=>/^\[.+\]=/.test(c)?c:c===""?"''":/[\s"'\\$`!*?[\]{}|&;<>()]/.test(c)&&!c.startsWith("'")&&!c.startsWith('"')?`'${c.replace(/'/g,"'\\''")}'`:c);return`${r}=(${l.join(" ")})`}async function yn(e,t){let s=-1,n=-1,r=!1;for(let p=0;p<t.parts.length;p++){let g=t.parts[p];if(g.type==="Literal"){let v=g.value.indexOf("+=");if(v!==-1){let N=g.value.slice(0,v);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(N)){s=p,n=v,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(N)){s=p,n=v,r=!0;break}}let $=g.value.indexOf("=");if($!==-1&&($===0||g.value[$-1]!=="+")){let N=g.value.slice(0,$);if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(N)||/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(N)){s=p,n=$;break}}}}if(s===-1)return null;let i=t.parts.slice(0,s),a=t.parts[s];if(a.type!=="Literal")return null;let o=r?2:1,f=a.value.slice(0,n),l=a.value.slice(n+o),c=t.parts.slice(s+1),u="";for(let p of i)u+=await I(e,{type:"Word",parts:[p]});u+=f;let d={type:"Word",parts:l!==""?[{type:"Literal",value:l},...c]:c},h=d.parts.length>0?await I(e,d):"";return`${u}${r?"+=":"="}${h}`}var Zr=["tar","yq","xan","sqlite3","python3","python"];function gn(e){return Zr.includes(e)}var L=Object.freeze({stdout:"",stderr:"",exitCode:0});function W(e=""){return{stdout:e,stderr:"",exitCode:0}}function S(e,t=1){return{stdout:"",stderr:e,exitCode:t}}function _(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function U(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function we(e,t,s="",n=""){throw new J(e,t,s,n)}function Zt(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new be;return L}if(t.length>1)throw new z(1,"",`bash: break: too many arguments
5
- `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new z(128,"",`bash: break: ${t[0]}: numeric argument required
6
- `);s=n}throw new ne(s)}async function Gt(e,t){let s,n=!1,r=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")r=!1,i++;else if(t[i]==="-P")r=!0,i++;else if(t[i].startsWith("-")&&t[i]!=="-")i++;else break;let a=t.slice(i);if(a.length===0||a[0]==="~"?s=e.state.env.get("HOME")||"/":a[0]==="-"?(s=e.state.previousDir,n=!0):s=a[0],!s.startsWith("/")&&!s.startsWith("./")&&!s.startsWith("../")&&s!=="."&&s!==".."){let u=e.state.env.get("CDPATH");if(u){let d=u.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,n=!0;break}}catch{}}}}let f=(s.startsWith("/")?s:`${e.state.cwd}/${s}`).split("/").filter(u=>u&&u!=="."),l="";for(let u of f)if(u==="..")l=l.split("/").slice(0,-1).join("/")||"/";else{l=l?`${l}/${u}`:`/${u}`;try{if(!(await e.fs.stat(l)).isDirectory)return S(`bash: cd: ${s}: Not a directory
4
+ `),e.writeFileSync("/proc/self/status",Ys()),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 gn(e,t){Kr(e)&&(Xr(e,t),Yr(e),Qr(e))}var Jr=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ei=["braceexpand","hashall","interactive-comments"];function Kt(e){let t=[],s=[...ei.map(n=>({name:n,enabled:!0})),...Jr.map(n=>({name:n,enabled:e[n]}))].sort((n,r)=>n.name.localeCompare(r.name));for(let n of s)n.enabled&&t.push(n.name);return t.join(":")}function We(e){e.state.env.set("SHELLOPTS",Kt(e.state.options))}var ti=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Xt(e){let t=[];for(let s of ti)e[s]&&t.push(s);return t.join(":")}function Yt(e){e.state.env.set("BASHOPTS",Xt(e.state.shoptOptions))}var si="BASH_ALIAS_";function wn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function vn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function bn(e,t){return e.env.get(`${si}${t}`)}function Qt(e,t,s){if(!t.name||!wn(t.name))return t;let n=vn(t.name);if(!n)return t;let r=bn(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new M,o=r,a=r.endsWith(" ");if(!a)for(let f of t.args){let d=$n(f);o+=` ${d}`}let l;try{l=i.parse(o)}catch(f){if(f instanceof lt)throw f;return t}if(l.statements.length!==1||l.statements[0].pipelines.length!==1||l.statements[0].pipelines[0].commands.length!==1)return En(t,r);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return En(t,r);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(wn(f)){let d=vn(f);if(d&&bn(e,d)){let h={type:"SimpleCommand",name:f,args:u.args.slice(1),assignments:[],redirections:[]},m=Qt(e,h,s);m!==h&&(u={...u,name:m.name,args:[...m.args]})}}}return u}catch(i){throw s.delete(n),i}}function En(e,t){let s=t;for(let o of e.args){let a=$n(o);s+=` ${a}`}let n=new M,r=n.parseWordFromString("eval",!1,!1),i=n.parseWordFromString(`'${s.replace(/'/g,"'\\''")}'`,!1,!1);return{type:"SimpleCommand",name:r,args:[i],assignments:e.assignments,redirections:e.redirections,line:e.line}}function $n(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(n=>n.type==="Literal"?n.value:`$${n.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 Sn(e,t){let s=t.parts.map(u=>u.type==="Literal"?u.value:"\0").join(""),n=s.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\(/);if(!n||!s.endsWith(")"))return null;let r=n[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+=ct({type:"Word",parts:[u]});else{(a||l)&&(i.push(a),a="",l=!1);let d=await we(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await T(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`${r}=(${c.join(" ")})`}async function An(e,t){let s=-1,n=-1,r=!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,n=b,r=!0;break}if(/^[a-zA-Z_][a-zA-Z0-9_]*\[[^\]]+\]$/.test(k)){s=p,n=b,r=!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,n=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=r?2:1,l=o.value.slice(0,n),c=o.value.slice(n+a),u=t.parts.slice(s+1),f="";for(let p of i)f+=await T(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 T(e,d):"";return`${f}${r?"+=":"="}${h}`}var ni=["tar","yq","xan","sqlite3","python3","python"];function _n(e){return ni.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 _(e,t,s){return{stdout:e,stderr:t,exitCode:s}}function U(e){return{stdout:"",stderr:"",exitCode:e?0:1}}function Se(e,t,s="",n=""){throw new te(e,t,s,n)}function Jt(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ae;return L}if(t.length>1)throw new V(1,"",`bash: break: too many arguments
5
+ `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new V(128,"",`bash: break: ${t[0]}: numeric argument required
6
+ `);s=n}throw new ae(s)}async function es(e,t){let s,n=!1,r=!1,i=0;for(;i<t.length;)if(t[i]==="--"){i++;break}else if(t[i]==="-L")r=!1,i++;else if(t[i]==="-P")r=!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,n=!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,n=!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
7
7
  `)}catch{return S(`bash: cd: ${s}: No such file or directory
8
- `)}}let c=l||"/";if(r)try{c=await e.fs.realpath(c)}catch{}return e.state.previousDir=e.state.cwd,e.state.cwd=c,e.state.env.set("PWD",e.state.cwd),e.state.env.set("OLDPWD",e.state.previousDir),W(n?`${c}
9
- `:"")}function Kt(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Gr=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function ft(e){return Gr.includes(e)}async function ut(e,t,s){let n=Kt(e,s);switch(t){case"-e":case"-a":return e.fs.exists(n);case"-f":return await e.fs.exists(n)?(await e.fs.stat(n)).isFile:!1;case"-d":return await e.fs.exists(n)?(await e.fs.stat(n)).isDirectory:!1;case"-r":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&256)!==0:!1;case"-w":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&128)!==0:!1;case"-x":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&64)!==0:!1;case"-s":return await e.fs.exists(n)?(await e.fs.stat(n)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(n)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&512)!==0:!1;case"-g":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(n);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=>n===i||n.endsWith(i));case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(n);default:return!1}}var Kr=["-nt","-ot","-ef"];function dt(e){return Kr.includes(e)}async function ht(e,t,s,n){let r=Kt(e,s),i=Kt(e,n);switch(t){case"-nt":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime>o.mtime}catch{return!1}case"-ot":try{let a=await e.fs.stat(r),o=await e.fs.stat(i);return a.mtime<o.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(r)||!await e.fs.exists(i))return!1;let a=e.fs.resolvePath(e.state.cwd,r),o=e.fs.resolvePath(e.state.cwd,i);return a===o}catch{return!1}default:return!1}}var Xr=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function pt(e){return Xr.has(e)}function mt(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 He(e){return e==="="||e==="=="||e==="!="}function yt(e,t,s,n=!1,r=!1,i=!1){if(n){let o=Re(t,s,r,i);return e==="!="?!o:o}if(r){let o=t.toLowerCase()===s.toLowerCase();return e==="!="?!o:o}let a=t===s;return e==="!="?!a:a}var Yr=new Set(["-z","-n"]);function gt(e){return Yr.has(e)}function wt(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function vt(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let n=s[1],r=s[2];if(e.state.associativeArrays?.has(n)){let o=r;return(o.startsWith("'")&&o.endsWith("'")||o.startsWith('"')&&o.endsWith('"'))&&(o=o.slice(1,-1)),o=o.replace(/\$([a-zA-Z_][a-zA-Z0-9_]*)/g,(f,l)=>e.state.env.get(l)||""),e.state.env.has(`${n}_${o}`)}let a;try{let o=new M,f=q(o,r);a=await V(e,f.expression)}catch{if(/^-?\d+$/.test(r))a=Number.parseInt(r,10);else{let o=e.state.env.get(r);a=o?Number.parseInt(o,10):0}}if(a<0){let o=Y(e,n),f=e.state.currentLine;if(o.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${n}: bad array subscript
10
- `,!1;if(a=Math.max(...o)+1+a,a<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${f}: ${n}: bad array subscript
11
- `,!1}return e.state.env.has(`${n}_${a}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?$e(e,t).length>0:Y(e,t).length>0}async function _e(e,t){switch(t.type){case"CondBinary":{let s=await I(e,t.left),n=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),r;if(t.operator==="=~")if(n){let i=await I(e,t.right);r=Qs(i)}else r=await en(e,t.right);else He(t.operator)&&!n?r=await tn(e,t.right):r=await I(e,t.right);if(He(t.operator)){let i=e.state.shoptOptions.nocasematch;return yt(t.operator,s,r,!n,i,!0)}if(pt(t.operator))return mt(t.operator,await vn(e,s),await vn(e,r));if(dt(t.operator))return ht(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,a=ti(r),f=Be(a,i?"i":"").match(s);if(de(e,"BASH_REMATCH"),f)for(let l=0;l<f.length;l++)e.state.env.set(`BASH_REMATCH_${l}`,f[l]||"");return f!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<r;case">":return s>r;default:return!1}}case"CondUnary":{let s=await I(e,t.operand);return ft(t.operator)?ut(e,t.operator,s):gt(t.operator)?wt(t.operator,s):t.operator==="-v"?await vt(e,s):t.operator==="-o"?Yt(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await I(e,t.operand.expression.word)})`!=="":!await _e(e,t.operand);case"CondAnd":return await _e(e,t.left)?await _e(e,t.right):!1;case"CondOr":return await _e(e,t.left)?!0:await _e(e,t.right);case"CondGroup":return await _e(e,t.expression);case"CondWord":return await I(e,t.word)!=="";default:return!1}}async function Ue(e,t){if(t.length===0)return _("","",1);if(t.length===1)return U(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?S(`test: '(' without matching ')'
12
- `,2):ft(n)?U(await ut(e,n,r)):gt(n)?U(wt(n,r)):n==="!"?U(!r):n==="-v"?U(await vt(e,r)):n==="-o"?U(Yt(e,r)):n==="="||n==="=="||n==="!="||n==="<"||n===">"||n==="-eq"||n==="-ne"||n==="-lt"||n==="-le"||n==="-gt"||n==="-ge"||n==="-nt"||n==="-ot"||n==="-ef"?S(`test: ${n}: unary operator expected
13
- `,2):_("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(He(r))return U(yt(r,n,i));if(pt(r)){let a=bt(n),o=bt(i);return!a.valid||!o.valid?_("","",2):U(mt(r,a.value,o.value))}if(dt(r))return U(await ht(e,r,n,i));switch(r){case"-a":return U(n!==""&&i!=="");case"-o":return U(n!==""||i!=="");case">":return U(n>i);case"<":return U(n<i)}if(n==="!"){let a=await Ue(e,[r,i]);return _("",a.stderr,a.exitCode===0?1:a.exitCode===1?0:a.exitCode)}if(n==="("&&i===")")return U(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await Ue(e,t.slice(1));return _("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return Ue(e,[t[1],t[2]])}let s=await En(e,t,0);return s.pos<t.length?S(`test: too many arguments
14
- `,2):U(s.value)}async function En(e,t,s){return Qr(e,t,s)}async function Qr(e,t,s){let{value:n,pos:r}=await wn(e,t,s);for(;t[r]==="-o";){let i=await wn(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function wn(e,t,s){let{value:n,pos:r}=await Xt(e,t,s);for(;t[r]==="-a";){let i=await Xt(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function Xt(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await Xt(e,t,s+1);return{value:!n,pos:r}}return Jr(e,t,s)}async function Jr(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await En(e,t,s+1);return{value:i,pos:t[a]===")"?a+1:a}}let r=t[s+1];if(He(r)){let i=n,a=t[s+2]??"";return{value:yt(r,i,a),pos:s+3}}if(pt(r)){let i=bt(n),a=bt(t[s+2]??"0");return!i.valid||!a.valid?{value:!1,pos:s+3}:{value:mt(r,i.value,a.value),pos:s+3}}if(dt(r)){let i=n,a=t[s+2]??"";return{value:await ht(e,r,i,a),pos:s+3}}if(ft(n)){let i=t[s+1]??"";return{value:await ut(e,n,i),pos:s+2}}if(gt(n)){let i=t[s+1]??"";return{value:wt(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await vt(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:Yt(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function Re(e,t,s=!1,n=!1){let r=`^${$n(t,n)}$`;return Be(r,s?"is":"s").test(e)}function $n(e,t){let s="";for(let n=0;n<e.length;n++){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Sn(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=An(a),f=o.map(c=>$n(c,t)),l=f.length>0?f.join("|"):"(?:)";if(r==="@")s+=`(?:${l})`;else if(r==="*")s+=`(?:${l})*`;else if(r==="+")s+=`(?:${l})+`;else if(r==="?")s+=`(?:${l})?`;else if(r==="!")if(i<e.length-1){let u=o.map(h=>_n(h,t));if(u.every(h=>h!==null)&&u.every(h=>h===u[0])&&u[0]!==null){let h=u[0];if(h===0)s+="(?:.+)";else{let m=[];h>0&&m.push(`.{0,${h-1}}`),m.push(`.{${h+1},}`),m.push(`(?!(?:${l})).{${h}}`),s+=`(?:${m.join("|")})`}}else s+=`(?:(?!(?:${l})).)*?`}else s+=`(?!(?:${l})$).*`;n=i;continue}}if(r==="\\")if(n+1<e.length){let i=e[n+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,n++}else s+="\\\\";else if(r==="*")s+=".*";else if(r==="?")s+=".";else if(r==="["){let i=e.indexOf("]",n+1);i!==-1?(s+=e.slice(n,i+1),n=i):s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function Sn(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function An(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function _n(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=Sn(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),f=An(a).map(l=>_n(l,t));if(f.every(l=>l!==null)&&f.every(l=>l===f[0])){s+=f[0],n=i+1;continue}return null}return null}}if(r==="*")return null;if(r==="?"){s+=1,n++;continue}if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){s+=1,n=i+1;continue}s+=1,n++;continue}if(r==="\\"){s+=1,n+=2;continue}s+=1,n++}return s}function Yt(e,t){let n=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 n?n():!1}async function vn(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 bn(t);try{let s=new M,n=q(s,t);return await V(e,n.expression)}catch{return bn(t)}}function ei(e,t){let s=0;for(let n of e){let r;if(n>="0"&&n<="9")r=n.charCodeAt(0)-48;else if(n>="a"&&n<="z")r=n.charCodeAt(0)-97+10;else if(n>="A"&&n<="Z")r=n.charCodeAt(0)-65+36;else if(n==="@")r=62;else if(n==="_")r=63;else return Number.NaN;if(r>=t)return Number.NaN;s=s*t+r}return s}function bn(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,n=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(n){let r=Number.parseInt(n[1],10);r>=2&&r<=64?s=ei(n[2],r):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 bt(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 ti(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 n=si(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function si(e,t){let s=t+1,n="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(n+="^",s++);let r=!1;s<e.length&&e[s]==="]"&&(r=!0,s++);let i=!1;s<e.length&&e[s]==="["&&s+1<e.length&&e[s+1]!==":"&&(i=!0,s++);let a="",o=!1;for(;s<e.length;){let f=e[s];if(f==="]"){o=!0,s++;break}if(f==="["&&s+1<e.length&&e[s+1]===":"){let l=e.indexOf(":]",s+2);if(l!==-1){let c=e.slice(s+2,l);a+=ni(c),s=l+2;continue}}if(f==="["&&s+1<e.length){let l=e[s+1];if(l==="."||l==="="){let c=`${l}]`,u=e.indexOf(c,s+2);if(u!==-1){let d=e.slice(s+2,u);a+=d,s=u+2;continue}}}if(f==="\\"&&s+1<e.length){a+=f+e[s+1],s+=2;continue}a+=f,s++}return o?(r&&(n+="\\]"),i&&(n+="\\["),n+=a,n+="]",{converted:n,endIndex:s}):{converted:"\\[",endIndex:t+1}}function ni(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 pe(e){let t=[],s="",n=!1,r=!1,i=!1,a=!1;for(let o of e){if(i){s+=o,i=!1,a=!0;continue}if(o==="\\"){i=!0;continue}if(o==="'"&&!r){n||(a=!0),n=!n;continue}if(o==='"'&&!n){r||(a=!0),r=!r;continue}if((o===" "||o===" "||o===`
15
- `)&&!n&&!r){a&&(t.push(s),s="",a=!1);continue}s+=o,a=!0}return a&&t.push(s),t}function Et(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 n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)n+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)r+=e[s],s++;t.push([n,r])}return t}function Cn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:pe(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 n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function ri(e,t){try{let s=new M,n=q(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Pn(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:a,arrayIndex:o}=t,{makeReadonly:f=!1,checkReadonly:l=!0}=s;if(l){let c=K(e,n);if(c)return c}if(r&&i){for(let c=0;c<i.length;c++)e.state.env.set(`${n}_${c}`,i[c]);e.state.env.set(`${n}__length`,String(i.length))}else if(o!==void 0&&a!==void 0){let c=await ri(e,o);e.state.env.set(`${n}_${c}`,a);let u=parseInt(e.state.env.get(`${n}__length`)??"0",10);c>=u&&e.state.env.set(`${n}__length`,String(c+1))}else a!==void 0&&e.state.env.set(n,a);return f&&te(e,n),null}function Ce(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function Le(e,t){return e.state.localVarDepth?.get(t)}function $t(e,t){e.state.localVarDepth?.delete(t)}function Nn(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let n=e.state.localVarStack.get(t)||[];n.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,n)}function St(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function kn(e,t){if(e.state.localVarStack)for(let[s,n]of e.state.localVarStack.entries()){for(;n.length>0&&n[n.length-1].scopeIndex===t;)n.pop();n.length===0&&e.state.localVarStack.delete(s)}}var Qt=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function On(e){return Qt.has(e)}var Jt=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),qe=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 ke(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
8
+ `)}}let u=c||"/";if(r)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(n?`${u}
9
+ `:"")}function ts(e,t){return e.fs.resolvePath(e.state.cwd,t)}var ri=["-e","-a","-f","-d","-r","-w","-x","-s","-L","-h","-k","-g","-u","-G","-O","-b","-c","-p","-S","-t","-N"];function pt(e){return ri.includes(e)}async function mt(e,t,s){let n=ts(e,s);switch(t){case"-e":case"-a":return e.fs.exists(n);case"-f":return await e.fs.exists(n)?(await e.fs.stat(n)).isFile:!1;case"-d":return await e.fs.exists(n)?(await e.fs.stat(n)).isDirectory:!1;case"-r":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&256)!==0:!1;case"-w":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&128)!==0:!1;case"-x":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&64)!==0:!1;case"-s":return await e.fs.exists(n)?(await e.fs.stat(n)).size>0:!1;case"-L":case"-h":try{return(await e.fs.lstat(n)).isSymbolicLink}catch{return!1}case"-k":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&512)!==0:!1;case"-g":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&1024)!==0:!1;case"-u":return await e.fs.exists(n)?((await e.fs.stat(n)).mode&2048)!==0:!1;case"-G":case"-O":return e.fs.exists(n);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=>n===i||n.endsWith(i));case"-p":return!1;case"-S":return!1;case"-t":return!1;case"-N":return e.fs.exists(n);default:return!1}}var ii=["-nt","-ot","-ef"];function yt(e){return ii.includes(e)}async function gt(e,t,s,n){let r=ts(e,s),i=ts(e,n);switch(t){case"-nt":try{let o=await e.fs.stat(r),a=await e.fs.stat(i);return o.mtime>a.mtime}catch{return!1}case"-ot":try{let o=await e.fs.stat(r),a=await e.fs.stat(i);return o.mtime<a.mtime}catch{return!1}case"-ef":try{if(!await e.fs.exists(r)||!await e.fs.exists(i))return!1;let o=e.fs.resolvePath(e.state.cwd,r),a=e.fs.resolvePath(e.state.cwd,i);return o===a}catch{return!1}default:return!1}}var oi=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function wt(e){return oi.has(e)}function vt(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 Ge(e){return e==="="||e==="=="||e==="!="}function bt(e,t,s,n=!1,r=!1,i=!1){if(n){let a=Me(t,s,r,i);return e==="!="?!a:a}if(r){let a=t.toLowerCase()===s.toLowerCase();return e==="!="?!a:a}let o=t===s;return e==="!="?!o:o}var ai=new Set(["-z","-n"]);function Et(e){return ai.has(e)}function $t(e,t){switch(e){case"-z":return t==="";case"-n":return t!==""}}async function St(e,t){let s=t.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(s){let n=s[1],r=s[2];if(e.state.associativeArrays?.has(n)){let a=r;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(`${n}_${a}`)}let o;try{let a=new M,l=q(a,r);o=await z(e,l.expression)}catch{if(/^-?\d+$/.test(r))o=Number.parseInt(r,10);else{let a=e.state.env.get(r);o=a?Number.parseInt(a,10):0}}if(o<0){let a=Y(e,n),l=e.state.currentLine;if(a.length===0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
10
+ `,!1;if(o=Math.max(...a)+1+o,o<0)return e.state.expansionStderr=(e.state.expansionStderr||"")+`bash: line ${l}: ${n}: bad array subscript
11
+ `,!1}return e.state.env.has(`${n}_${o}`)}return e.state.env.has(t)?!0:e.state.associativeArrays?.has(t)?Ce(e,t).length>0:Y(e,t).length>0}async function Ne(e,t){switch(t.type){case"CondBinary":{let s=await T(e,t.left),n=t.right.parts.length>0&&t.right.parts.every(i=>i.type==="SingleQuoted"||i.type==="DoubleQuoted"||i.type==="Escaped"&&t.operator!=="=~"),r;if(t.operator==="=~")if(n){let i=await T(e,t.right);r=an(i)}else r=await cn(e,t.right);else Ge(t.operator)&&!n?r=await un(e,t.right):r=await T(e,t.right);if(Ge(t.operator)){let i=e.state.shoptOptions.nocasematch;return bt(t.operator,s,r,!n,i,!0)}if(wt(t.operator))return vt(t.operator,await Pn(e,s),await Pn(e,r));if(yt(t.operator))return gt(e,t.operator,s,r);switch(t.operator){case"=~":try{let i=e.state.shoptOptions.nocasematch,o=fi(r),l=qe(o,i?"i":"").match(s);if(ge(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<r;case">":return s>r;default:return!1}}case"CondUnary":{let s=await T(e,t.operand);return pt(t.operator)?mt(e,t.operator,s):Et(t.operator)?$t(t.operator,s):t.operator==="-v"?await St(e,s):t.operator==="-o"?ns(e,s):!1}case"CondNot":return e.state.shoptOptions.extglob&&t.operand.type==="CondGroup"&&t.operand.expression.type==="CondWord"?`!(${await T(e,t.operand.expression.word)})`!=="":!await Ne(e,t.operand);case"CondAnd":return await Ne(e,t.left)?await Ne(e,t.right):!1;case"CondOr":return await Ne(e,t.left)?!0:await Ne(e,t.right);case"CondGroup":return await Ne(e,t.expression);case"CondWord":return await T(e,t.word)!=="";default:return!1}}async function Ke(e,t){if(t.length===0)return _("","",1);if(t.length===1)return U(!!t[0]);if(t.length===2){let n=t[0],r=t[1];return n==="("?S(`test: '(' without matching ')'
12
+ `,2):pt(n)?U(await mt(e,n,r)):Et(n)?U($t(n,r)):n==="!"?U(!r):n==="-v"?U(await St(e,r)):n==="-o"?U(ns(e,r)):n==="="||n==="=="||n==="!="||n==="<"||n===">"||n==="-eq"||n==="-ne"||n==="-lt"||n==="-le"||n==="-gt"||n==="-ge"||n==="-nt"||n==="-ot"||n==="-ef"?S(`test: ${n}: unary operator expected
13
+ `,2):_("","",1)}if(t.length===3){let n=t[0],r=t[1],i=t[2];if(Ge(r))return U(bt(r,n,i));if(wt(r)){let o=At(n),a=At(i);return!o.valid||!a.valid?_("","",2):U(vt(r,o.value,a.value))}if(yt(r))return U(await gt(e,r,n,i));switch(r){case"-a":return U(n!==""&&i!=="");case"-o":return U(n!==""||i!=="");case">":return U(n>i);case"<":return U(n<i)}if(n==="!"){let o=await Ke(e,[r,i]);return _("",o.stderr,o.exitCode===0?1:o.exitCode===1?0:o.exitCode)}if(n==="("&&i===")")return U(r!=="")}if(t.length===4){if(t[0]==="!"){let n=await Ke(e,t.slice(1));return _("",n.stderr,n.exitCode===0?1:n.exitCode===1?0:n.exitCode)}if(t[0]==="("&&t[3]===")")return Ke(e,[t[1],t[2]])}let s=await Nn(e,t,0);return s.pos<t.length?S(`test: too many arguments
14
+ `,2):U(s.value)}async function Nn(e,t,s){return li(e,t,s)}async function li(e,t,s){let{value:n,pos:r}=await Cn(e,t,s);for(;t[r]==="-o";){let i=await Cn(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function Cn(e,t,s){let{value:n,pos:r}=await ss(e,t,s);for(;t[r]==="-a";){let i=await ss(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function ss(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await ss(e,t,s+1);return{value:!n,pos:r}}return ci(e,t,s)}async function ci(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:o}=await Nn(e,t,s+1);return{value:i,pos:t[o]===")"?o+1:o}}let r=t[s+1];if(Ge(r)){let i=n,o=t[s+2]??"";return{value:bt(r,i,o),pos:s+3}}if(wt(r)){let i=At(n),o=At(t[s+2]??"0");return!i.valid||!o.valid?{value:!1,pos:s+3}:{value:vt(r,i.value,o.value),pos:s+3}}if(yt(r)){let i=n,o=t[s+2]??"";return{value:await gt(e,r,i,o),pos:s+3}}if(pt(n)){let i=t[s+1]??"";return{value:await mt(e,n,i),pos:s+2}}if(Et(n)){let i=t[s+1]??"";return{value:$t(n,i),pos:s+2}}if(n==="-v"){let i=t[s+1]??"";return{value:await St(e,i),pos:s+2}}if(n==="-o"){let i=t[s+1]??"";return{value:ns(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function Me(e,t,s=!1,n=!1){let r=`^${On(t,n)}$`;return qe(r,s?"is":"s").test(e)}function On(e,t){let s="";for(let n=0;n<e.length;n++){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=xn(e,n+1);if(i!==-1){let o=e.slice(n+2,i),a=Dn(o),l=a.map(u=>On(u,t)),c=l.length>0?l.join("|"):"(?:)";if(r==="@")s+=`(?:${c})`;else if(r==="*")s+=`(?:${c})*`;else if(r==="+")s+=`(?:${c})+`;else if(r==="?")s+=`(?:${c})?`;else if(r==="!")if(i<e.length-1){let f=a.map(h=>Tn(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})$).*`;n=i;continue}}if(r==="\\")if(n+1<e.length){let i=e[n+1];/[\\^$.|+(){}[\]*?]/.test(i)?s+=`\\${i}`:s+=i,n++}else s+="\\\\";else if(r==="*")s+=".*";else if(r==="?")s+=".";else if(r==="["){let i=e.indexOf("]",n+1);i!==-1?(s+=e.slice(n,i+1),n=i):s+="\\["}else/[\\^$.|+(){}]/.test(r)?s+=`\\${r}`:s+=r}return s}function xn(e,t){let s=1,n=t+1;for(;n<e.length&&s>0;){let r=e[n];if(r==="\\"){n+=2;continue}if(r==="(")s++;else if(r===")"&&(s--,s===0))return n;n++}return-1}function Dn(e){let t=[],s="",n=0,r=0;for(;r<e.length;){let i=e[r];if(i==="\\"){s+=i,r+1<e.length?(s+=e[r+1],r+=2):r++;continue}i==="("?(n++,s+=i):i===")"?(n--,s+=i):i==="|"&&n===0?(t.push(s),s=""):s+=i,r++}return t.push(s),t}function Tn(e,t){let s=0,n=0;for(;n<e.length;){let r=e[n];if(t&&(r==="@"||r==="*"||r==="+"||r==="?"||r==="!")&&n+1<e.length&&e[n+1]==="("){let i=xn(e,n+1);if(i!==-1){if(r==="@"){let o=e.slice(n+2,i),l=Dn(o).map(c=>Tn(c,t));if(l.every(c=>c!==null)&&l.every(c=>c===l[0])){s+=l[0],n=i+1;continue}return null}return null}}if(r==="*")return null;if(r==="?"){s+=1,n++;continue}if(r==="["){let i=e.indexOf("]",n+1);if(i!==-1){s+=1,n=i+1;continue}s+=1,n++;continue}if(r==="\\"){s+=1,n+=2;continue}s+=1,n++}return s}function ns(e,t){let n=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 n?n():!1}async function Pn(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 kn(t);try{let s=new M,n=q(s,t);return await z(e,n.expression)}catch{return kn(t)}}function ui(e,t){let s=0;for(let n of e){let r;if(n>="0"&&n<="9")r=n.charCodeAt(0)-48;else if(n>="a"&&n<="z")r=n.charCodeAt(0)-97+10;else if(n>="A"&&n<="Z")r=n.charCodeAt(0)-65+36;else if(n==="@")r=62;else if(n==="_")r=63;else return Number.NaN;if(r>=t)return Number.NaN;s=s*t+r}return s}function kn(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,n=e.match(/^(\d+)#([a-zA-Z0-9@_]+)$/);if(n){let r=Number.parseInt(n[1],10);r>=2&&r<=64?s=ui(n[2],r):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 At(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 fi(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 n=di(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function di(e,t){let s=t+1,n="[";s<e.length&&(e[s]==="^"||e[s]==="!")&&(n+="^",s++);let r=!1;s<e.length&&e[s]==="]"&&(r=!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+=hi(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?(r&&(n+="\\]"),i&&(n+="\\["),n+=o,n+="]",{converted:n,endIndex:s}):{converted:"\\[",endIndex:t+1}}function hi(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 ve(e){let t=[],s="",n=!1,r=!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==="'"&&!r){n||(o=!0),n=!n;continue}if(a==='"'&&!n){r||(o=!0),r=!r;continue}if((a===" "||a===" "||a===`
15
+ `)&&!n&&!r){o&&(t.push(s),s="",o=!1);continue}s+=a,o=!0}return o&&t.push(s),t}function _t(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 n="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)n+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&e[s]!=="]"&&e[s]!=="=";)n+=e[s],s++;for(;s<e.length&&e[s]!=="]";)s++;if(e[s]==="]"&&s++,e[s]!=="=")continue;s++;let r="";if(e[s]==="'"||e[s]==='"'){let i=e[s];for(s++;s<e.length&&e[s]!==i;)e[s]==="\\"&&s+1<e.length&&s++,r+=e[s],s++;e[s]===i&&s++}else for(;s<e.length&&!/\s/.test(e[s]);)r+=e[s],s++;t.push([n,r])}return t}function In(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:ve(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 n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function pi(e,t){try{let s=new M,n=q(s,t);return await z(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Rn(e,t,s={}){let{name:n,isArray:r,arrayElements:i,value:o,arrayIndex:a}=t,{makeReadonly:l=!1,checkReadonly:c=!0}=s;if(c){let u=K(e,n);if(u)return u}if(r&&i){for(let u=0;u<i.length;u++)e.state.env.set(`${n}_${u}`,i[u]);e.state.env.set(`${n}__length`,String(i.length))}else if(a!==void 0&&o!==void 0){let u=await pi(e,a);e.state.env.set(`${n}_${u}`,o);let f=parseInt(e.state.env.get(`${n}__length`)??"0",10);u>=f&&e.state.env.set(`${n}__length`,String(u+1))}else o!==void 0&&e.state.env.set(n,o);return l&&ne(e,n),null}function Oe(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function Ve(e,t){return e.state.localVarDepth?.get(t)}function Ct(e,t){e.state.localVarDepth?.delete(t)}function Ln(e,t,s){e.state.localVarStack=e.state.localVarStack||new Map;let n=e.state.localVarStack.get(t)||[];n.push({value:s,scopeIndex:e.state.localScopes.length-1}),e.state.localVarStack.set(t,n)}function Pt(e,t){let s=e.state.localVarStack?.get(t);if(!(!s||s.length===0))return s.pop()}function Fn(e,t){if(e.state.localVarStack)for(let[s,n]of e.state.localVarStack.entries()){for(;n.length>0&&n[n.length-1].scopeIndex===t;)n.pop();n.length===0&&e.state.localVarStack.delete(s)}}var rs=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function Wn(e){return rs.has(e)}var is=new Set(["if","then","else","elif","fi","case","esac","for","select","while","until","do","done","in","function","{","}","time","[[","]]","!"]),Xe=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 Te(e,t,s,n){try{if((await e.fs.stat(t)).isDirectory)return`bash: ${s}: Is a directory
16
16
  `;if(n.checkNoclobber&&e.state.options.noclobber&&!n.isClobber&&s!=="/dev/null")return`bash: ${s}: cannot overwrite existing file
17
- `}catch{}return null}function X(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return"utf8";return"binary"}function ii(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),f=o.indexOf(":");if(f===-1)return null;let l=Number.parseInt(o.slice(0,f),10);if(Number.isNaN(l)||l<0)return null;let c=o.slice(f+1);return{path:i,position:l,content:c}}async function Dn(e,t){let s=new Map;for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;if(r.operator===">&"||r.operator==="<&"){if(zt(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
18
- `};s.set(n,await I(e,r.target))}else{let a=await ot(e,r.target);if("error"in a)return{targets:s,error:a.error};s.set(n,a.target)}}return{targets:s}}function ai(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function At(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 I(e,s.target)==="-"){let i=e.state.env.get(s.fdVariable);if(i!==void 0){let a=Number.parseInt(i,10);Number.isNaN(a)||e.state.fileDescriptors.delete(a)}continue}let n=ai(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await I(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let a=e.state.fileDescriptors.get(i);a!==void 0&&e.state.fileDescriptors.set(n,a);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(n,`${r}
19
- `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,r),a=await e.fs.readFile(i);e.state.fileDescriptors.set(n,a)}catch{return _("",`bash: ${r}: No such file or directory
20
- `,1)}}}return null}async function me(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let n=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!n)continue;let r;if(n){if(r=await I(e,s.target),r==="-"||!Number.isNaN(Number.parseInt(r,10))||s.fd!=null)continue}else{let o=await ot(e,s.target);if("error"in o)return _("",o.error,1);r=o.target}let i=e.fs.resolvePath(e.state.cwd,r),a=s.operator===">|";try{let o=await e.fs.stat(i);if(o.isDirectory)return _("",`bash: ${r}: Is a directory
21
- `,1);if(e.state.options.noclobber&&!a&&!o.isDirectory&&r!=="/dev/null")return _("",`bash: ${r}: cannot overwrite existing file
17
+ `}catch{}return null}function X(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return"utf8";return"binary"}function mi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 Mn(e,t){let s=new Map;for(let n=0;n<t.length;n++){let r=t[n];if(r.target.type==="HereDoc")continue;if(r.operator===">&"||r.operator==="<&"){if(qt(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
18
+ `};s.set(n,await T(e,r.target))}else{let o=await ft(e,r.target);if("error"in o)return{targets:s,error:o.error};s.set(n,o.target)}}return{targets:s}}function yi(e){e.state.nextFd===void 0&&(e.state.nextFd=10);let t=e.state.nextFd;return e.state.nextFd++,t}async function kt(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 T(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 n=yi(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await T(e,s.target);if(s.operator===">&"||s.operator==="<&"){let i=Number.parseInt(r,10);if(!Number.isNaN(i)){let o=e.state.fileDescriptors.get(i);o!==void 0&&e.state.fileDescriptors.set(n,o);continue}}if(s.operator===">"||s.operator===">>"||s.operator===">|"||s.operator==="&>"||s.operator==="&>>"){let i=e.fs.resolvePath(e.state.cwd,r);(s.operator===">"||s.operator===">|"||s.operator==="&>")&&await e.fs.writeFile(i,"","binary"),e.state.fileDescriptors.set(n,`__file__:${i}`)}else if(s.operator==="<<<")e.state.fileDescriptors.set(n,`${r}
19
+ `);else if(s.operator==="<"||s.operator==="<>")try{let i=e.fs.resolvePath(e.state.cwd,r),o=await e.fs.readFile(i);e.state.fileDescriptors.set(n,o)}catch{return _("",`bash: ${r}: No such file or directory
20
+ `,1)}}}return null}async function be(e,t){for(let s of t){if(s.target.type==="HereDoc")continue;let n=s.operator===">&";if(s.operator!==">"&&s.operator!==">|"&&s.operator!=="&>"&&!n)continue;let r;if(n){if(r=await T(e,s.target),r==="-"||!Number.isNaN(Number.parseInt(r,10))||s.fd!=null)continue}else{let a=await ft(e,s.target);if("error"in a)return _("",a.error,1);r=a.target}let i=e.fs.resolvePath(e.state.cwd,r),o=s.operator===">|";try{let a=await e.fs.stat(i);if(a.isDirectory)return _("",`bash: ${r}: Is a directory
21
+ `,1);if(e.state.options.noclobber&&!o&&!a.isDirectory&&r!=="/dev/null")return _("",`bash: ${r}: cannot overwrite existing file
22
22
  `,1)}catch{}if(r!=="/dev/null"&&r!=="/dev/stdout"&&r!=="/dev/stderr"&&r!=="/dev/full"&&await e.fs.writeFile(i,"","binary"),r==="/dev/full")return _("",`bash: /dev/full: No space left on device
23
- `,1)}return null}async function B(e,t,s,n){let{stdout:r,stderr:i,exitCode:a}=t;for(let l=0;l<s.length;l++){let c=s[l];if(c.target.type==="HereDoc")continue;let u,d=n?.get(l);if(d!==void 0)u=d;else if(c.operator===">&"||c.operator==="<&"){if(zt(e,c.target)){i+=`bash: $@: ambiguous redirect
24
- `,a=1,r="";continue}u=await I(e,c.target)}else{let m=await ot(e,c.target);if("error"in m){i+=m.error,a=1,r="";continue}u=m.target}if(!c.fdVariable)switch(c.operator){case">":case">|":{let h=c.fd??1,m=c.operator===">|";if(h===1){if(u==="/dev/stdout")break;if(u==="/dev/stderr"){i+=r,r="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
25
- `,a=1,r="";break}let p=e.fs.resolvePath(e.state.cwd,u),g=await ke(e,p,u,{checkNoclobber:!0,isClobber:m});if(g){i+=g,a=1,r="";break}await e.fs.writeFile(p,r,X(r)),r=""}else if(h===2){if(u==="/dev/stderr")break;if(u==="/dev/stdout"){r+=i,i="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
26
- `,a=1;break}if(u==="/dev/null")i="";else{let p=e.fs.resolvePath(e.state.cwd,u),g=await ke(e,p,u,{checkNoclobber:!0,isClobber:m});if(g){i+=g,a=1;break}await e.fs.writeFile(p,i,X(i)),i=""}}break}case">>":{let h=c.fd??1;if(h===1){if(u==="/dev/stdout")break;if(u==="/dev/stderr"){i+=r,r="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
27
- `,a=1,r="";break}let m=e.fs.resolvePath(e.state.cwd,u),p=await ke(e,m,u,{});if(p){i+=p,a=1,r="";break}await e.fs.appendFile(m,r,X(r)),r=""}else if(h===2){if(u==="/dev/stderr")break;if(u==="/dev/stdout"){r+=i,i="";break}if(u==="/dev/full"){i+=`bash: echo: write error: No space left on device
28
- `,a=1;break}let m=e.fs.resolvePath(e.state.cwd,u),p=await ke(e,m,u,{});if(p){i+=p,a=1;break}await e.fs.appendFile(m,i,X(i)),i=""}break}case">&":case"<&":{let h=c.fd??1;if(u==="-")break;if(u.endsWith("-")){let m=u.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
29
- `,a=1)}break}if(u==="2"||u==="&2")h===1&&(i+=r,r="");else if(u==="1"||u==="&1")r+=i,i="";else{let m=Number.parseInt(u,10);if(Number.isNaN(m)){if(c.operator===">&"){let p=e.fs.resolvePath(e.state.cwd,u),g=await ke(e,p,u,{checkNoclobber:!0});if(g){i=g,a=1,r="";break}if(c.fd==null){let v=r+i;await e.fs.writeFile(p,v,X(v)),r="",i=""}else h===1?(await e.fs.writeFile(p,r,X(r)),r=""):h===2&&(await e.fs.writeFile(p,i,X(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,r,X(r)),r=""):h===2&&(await e.fs.appendFile(g,i,X(i)),i="")}else if(p?.startsWith("__rw__:")){let g=ii(p);g&&(h===1?(await e.fs.appendFile(g.path,r,X(r)),r=""):h===2&&(await e.fs.appendFile(g.path,i,X(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=r,r="");else{let v=e.state.fileDescriptors?.get(g);if(v?.startsWith("__file__:")){let $=v.slice(9);h===1?(await e.fs.appendFile($,r,X(r)),r=""):h===2&&(await e.fs.appendFile($,i,X(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
30
- `,a=1,r=""):m>=3&&(i+=`bash: ${m}: Bad file descriptor
31
- `,a=1,r="")}}break}case"&>":{if(u==="/dev/full"){i=`bash: echo: write error: No space left on device
32
- `,a=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,u),m=await ke(e,h,u,{checkNoclobber:!0});if(m){i=m,a=1,r="";break}let p=r+i;await e.fs.writeFile(h,p,X(p)),r="",i="";break}case"&>>":{if(u==="/dev/full"){i=`bash: echo: write error: No space left on device
33
- `,a=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,u),m=await ke(e,h,u,{});if(m){i=m,a=1,r="";break}let p=r+i;await e.fs.appendFile(h,p,X(p)),r="",i="";break}}}let o=e.state.fileDescriptors?.get(1);if(o){if(o==="__dupout__:2")i+=r,r="";else if(o.startsWith("__file__:")){let l=o.slice(9);await e.fs.appendFile(l,r,X(r)),r=""}else if(o.startsWith("__file_append__:")){let l=o.slice(16);await e.fs.appendFile(l,r,X(r)),r=""}}let f=e.state.fileDescriptors?.get(2);if(f){if(f==="__dupout__:1")r+=i,i="";else if(f.startsWith("__file__:")){let l=f.slice(9);await e.fs.appendFile(l,i,X(i)),i=""}else if(f.startsWith("__file_append__:")){let l=f.slice(16);await e.fs.appendFile(l,i,X(i)),i=""}}return _(r,i,a)}function Tn(e,t){if(e.state.options.posix&&Qt.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
34
- `;throw new z(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function oi(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await I(e,r.content);r.stripTabs&&(i=i.split(`
35
- `).map(o=>o.replace(/^\t+/,"")).join(`
36
- `)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await I(e,n.target)}
37
- `;else if(n.operator==="<"&&n.target.type==="Word"){let r=await I(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function _t(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,we(`${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(r??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 l=0;l<s.length;l++)i.set(String(l+1),e.state.env.get(String(l+1))),e.state.env.set(String(l+1),s[l]);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 a=()=>{let l=e.state.localScopes.length-1,c=e.state.localScopes.pop();if(c)for(let[u,d]of c)d===void 0?e.state.env.delete(u):e.state.env.set(u,d);if(kn(e,l),e.state.fullyUnsetLocals)for(let[u,d]of e.state.fullyUnsetLocals.entries())d===l&&e.state.fullyUnsetLocals.delete(u);if(e.state.localExportedVars&&e.state.localExportedVars.length>0){let u=e.state.localExportedVars.pop();if(u)for(let d of u)e.state.exportedVars?.delete(d)}for(let[u,d]of i)d===void 0?e.state.env.delete(u):e.state.env.set(u,d);e.state.funcNameStack?.shift(),e.state.callLineStack?.shift(),e.state.sourceStack?.shift(),e.state.callDepth--},{targets:o,error:f}=await Dn(e,t.redirections);if(f)return a(),_("",f,1);try{let l=await oi(e,t.redirections),c=n||l,u=await e.executeCommand(t.body,c);return a(),B(e,u,t.redirections,o)}catch(l){if(a(),l instanceof ee){let c=_(l.stdout,l.stderr,l.exitCode);return B(e,c,t.redirections,o)}throw l}}var xn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],ts=[".",":","[","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"],li=["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"],ci=ts;async function ss(e,t){let s=[],n=null,r="",i="",a=null,o=!1,f=!1,l=!1,c=null,u=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
38
- `,2);let b=t[y];if(!m.includes(b))return S(`compgen: ${b}: invalid action name
39
- `,2);s.push(b)}else if(w==="-W"){if(y++,y>=t.length)return S(`compgen: -W: option requires an argument
23
+ `,1)}return null}async function B(e,t,s,n){let{stdout:r,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=n?.get(c);if(d!==void 0)f=d;else if(u.operator===">&"||u.operator==="<&"){if(qt(e,u.target)){i+=`bash: $@: ambiguous redirect
24
+ `,o=1,r="";continue}f=await T(e,u.target)}else{let m=await ft(e,u.target);if("error"in m){i+=m.error,o=1,r="";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+=r,r="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
25
+ `,o=1,r="";break}let p=e.fs.resolvePath(e.state.cwd,f),g=await Te(e,p,f,{checkNoclobber:!0,isClobber:m});if(g){i+=g,o=1,r="";break}await e.fs.writeFile(p,r,X(r)),r=""}else if(h===2){if(f==="/dev/stderr")break;if(f==="/dev/stdout"){r+=i,i="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
26
+ `,o=1;break}if(f==="/dev/null")i="";else{let p=e.fs.resolvePath(e.state.cwd,f),g=await Te(e,p,f,{checkNoclobber:!0,isClobber:m});if(g){i+=g,o=1;break}await e.fs.writeFile(p,i,X(i)),i=""}}break}case">>":{let h=u.fd??1;if(h===1){if(f==="/dev/stdout")break;if(f==="/dev/stderr"){i+=r,r="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
27
+ `,o=1,r="";break}let m=e.fs.resolvePath(e.state.cwd,f),p=await Te(e,m,f,{});if(p){i+=p,o=1,r="";break}await e.fs.appendFile(m,r,X(r)),r=""}else if(h===2){if(f==="/dev/stderr")break;if(f==="/dev/stdout"){r+=i,i="";break}if(f==="/dev/full"){i+=`bash: echo: write error: No space left on device
28
+ `,o=1;break}let m=e.fs.resolvePath(e.state.cwd,f),p=await Te(e,m,f,{});if(p){i+=p,o=1;break}await e.fs.appendFile(m,i,X(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
29
+ `,o=1)}break}if(f==="2"||f==="&2")h===1&&(i+=r,r="");else if(f==="1"||f==="&1")r+=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 Te(e,p,f,{checkNoclobber:!0});if(g){i=g,o=1,r="";break}if(u.fd==null){let b=r+i;await e.fs.writeFile(p,b,X(b)),r="",i=""}else h===1?(await e.fs.writeFile(p,r,X(r)),r=""):h===2&&(await e.fs.writeFile(p,i,X(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,r,X(r)),r=""):h===2&&(await e.fs.appendFile(g,i,X(i)),i="")}else if(p?.startsWith("__rw__:")){let g=mi(p);g&&(h===1?(await e.fs.appendFile(g.path,r,X(r)),r=""):h===2&&(await e.fs.appendFile(g.path,i,X(i)),i=""))}else if(p?.startsWith("__dupout__:")){let g=Number.parseInt(p.slice(11),10);if(g!==1)if(g===2)h===1&&(i+=r,r="");else{let b=e.state.fileDescriptors?.get(g);if(b?.startsWith("__file__:")){let E=b.slice(9);h===1?(await e.fs.appendFile(E,r,X(r)),r=""):h===2&&(await e.fs.appendFile(E,i,X(i)),i="")}}}else p?.startsWith("__dupin__:")?(i+=`bash: ${m}: Bad file descriptor
30
+ `,o=1,r=""):m>=3&&(i+=`bash: ${m}: Bad file descriptor
31
+ `,o=1,r="")}}break}case"&>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
32
+ `,o=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Te(e,h,f,{checkNoclobber:!0});if(m){i=m,o=1,r="";break}let p=r+i;await e.fs.writeFile(h,p,X(p)),r="",i="";break}case"&>>":{if(f==="/dev/full"){i=`bash: echo: write error: No space left on device
33
+ `,o=1,r="";break}let h=e.fs.resolvePath(e.state.cwd,f),m=await Te(e,h,f,{});if(m){i=m,o=1,r="";break}let p=r+i;await e.fs.appendFile(h,p,X(p)),r="",i="";break}}}let a=e.state.fileDescriptors?.get(1);if(a){if(a==="__dupout__:2")i+=r,r="";else if(a.startsWith("__file__:")){let c=a.slice(9);await e.fs.appendFile(c,r,X(r)),r=""}else if(a.startsWith("__file_append__:")){let c=a.slice(16);await e.fs.appendFile(c,r,X(r)),r=""}}let l=e.state.fileDescriptors?.get(2);if(l){if(l==="__dupout__:1")r+=i,i="";else if(l.startsWith("__file__:")){let c=l.slice(9);await e.fs.appendFile(c,i,X(i)),i=""}else if(l.startsWith("__file_append__:")){let c=l.slice(16);await e.fs.appendFile(c,i,X(i)),i=""}}return _(r,i,o)}function Vn(e,t){if(e.state.options.posix&&rs.has(t.name)){let n=`bash: line ${e.state.currentLine}: \`${t.name}': is a special builtin
34
+ `;throw new V(2,"",n)}let s={...t,sourceFile:t.sourceFile??e.state.currentSource??"main"};return e.state.functions.set(t.name,s),L}async function gi(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await T(e,r.content);r.stripTabs&&(i=i.split(`
35
+ `).map(a=>a.replace(/^\t+/,"")).join(`
36
+ `)),(n.fd??0)===0&&(s=i)}else if(n.operator==="<<<"&&n.target.type==="Word")s=`${await T(e,n.target)}
37
+ `;else if(n.operator==="<"&&n.target.type==="Word"){let r=await T(e,n.target),i=e.fs.resolvePath(e.state.cwd,r);try{s=await e.fs.readFile(i)}catch{}}return s}async function Nt(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,Se(`${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(r??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(Fn(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 Mn(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await gi(e,t.redirections),u=n||c,f=await e.executeCommand(t.body,u);return o(),B(e,f,t.redirections,a)}catch(c){if(o(),c instanceof se){let u=_(c.stdout,c.stderr,c.exitCode);return B(e,u,t.redirections,a)}throw c}}var Bn=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],as=[".",":","[","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"],wi=["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"],vi=as;async function ls(e,t){let s=[],n=null,r="",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
38
+ `,2);let v=t[y];if(!m.includes(v))return S(`compgen: ${v}: invalid action name
39
+ `,2);s.push(v)}else if(w==="-W"){if(y++,y>=t.length)return S(`compgen: -W: option requires an argument
40
40
  `,2);n=t[y]}else if(w==="-P"){if(y++,y>=t.length)return S(`compgen: -P: option requires an argument
41
41
  `,2);r=t[y]}else if(w==="-S"){if(y++,y>=t.length)return S(`compgen: -S: option requires an argument
42
42
  `,2);i=t[y]}else if(w==="-o"){if(y++,y>=t.length)return S(`compgen: -o: option requires an argument
43
- `,2);let b=t[y];if(b==="plusdirs")o=!0;else if(b==="dirnames")f=!0;else if(b==="default")l=!0;else if(!(b==="filenames"||b==="nospace"||b==="bashdefault"||b==="noquote"))return S(`compgen: ${b}: invalid option name
43
+ `,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
44
44
  `,2)}else if(w==="-F"){if(y++,y>=t.length)return S(`compgen: -F: option requires an argument
45
- `,2);u=t[y]}else if(w==="-C"){if(y++,y>=t.length)return S(`compgen: -C: option requires an argument
45
+ `,2);f=t[y]}else if(w==="-C"){if(y++,y>=t.length)return S(`compgen: -C: option requires an argument
46
46
  `,2);d=t[y]}else if(w==="-X"){if(y++,y>=t.length)return S(`compgen: -X: option requires an argument
47
- `,2);c=t[y]}else if(w==="-G"){if(y++,y>=t.length)return S(`compgen: -G: option requires an argument
48
- `,2)}else if(w==="--"){h.push(...t.slice(y+1));break}else w.startsWith("-")||h.push(w)}a=h[0]??null;let p=[];if(f){let y=await es(e,a);p.push(...y)}if(l){let y=await In(e,a);p.push(...y)}for(let y of s)if(y==="variable"){let w=fi(e,a);p.push(...w)}else if(y==="export"){let w=ui(e,a);p.push(...w)}else if(y==="function"){let w=di(e,a);p.push(...w)}else if(y==="builtin"){let w=hi(a);p.push(...w)}else if(y==="keyword"){let w=pi(a);p.push(...w)}else if(y==="alias"){let w=mi(e,a);p.push(...w)}else if(y==="shopt"){let w=yi(a);p.push(...w)}else if(y==="helptopic"){let w=gi(a);p.push(...w)}else if(y==="directory"){let w=await es(e,a);p.push(...w)}else if(y==="file"){let w=await In(e,a);p.push(...w)}else if(y==="user"){let w=wi(a);p.push(...w)}else if(y==="command"){let w=await vi(e,a);p.push(...w)}if(n!==null)try{let y=await bi(e,n),w=Ei(e,y);for(let b of w)(a===null||b.startsWith(a))&&p.push(b)}catch{return _("","",1)}if(o){let y=await es(e,a);for(let w of y)p.includes(w)||p.push(w)}let g="";if(u!==null){let y=e.state.functions.get(u);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 O of e.state.env.keys())(O==="COMPREPLY"||O.startsWith("COMPREPLY_")||O==="COMPREPLY__length")&&(b.set(O,e.state.env.get(O)),e.state.env.delete(O));let C=["compgen",h[0]??"",""];try{let O=await _t(e,y,C,"");if(O.exitCode!==0)return We(e,w),We(e,b),_("",O.stderr,1);g=O.stdout;let D=$i(e);p.push(...D)}catch{return We(e,w),We(e,b),_("","",1)}We(e,w),We(e,b)}}if(d!==null)try{let y=ue(d),w=await e.executeScript(y);if(w.exitCode!==0)return _("",w.stderr,w.exitCode);if(w.stdout){let b=w.stdout.split(`
49
- `);for(let C of b)C.length>0&&p.push(C)}}catch(y){if(y.name==="ParseException")return S(`compgen: -C: ${y.message}
50
- `,2);throw y}let v=p;if(c!==null){let y=c.startsWith("!"),w=y?c.slice(1):c;v=p.filter(b=>{let C=Re(b,w,!1,!0);return y?C:!C})}if(v.length===0&&a!==null)return _(g,"",1);let $=v.map(y=>`${r}${y}${i}`).join(`
51
- `),N=g+($?`${$}
52
- `:"");return W(N)}function fi(e,t){let s=new Set;for(let r of e.state.env.keys()){if(r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length"))continue;let i=r.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?s.add(r):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function ui(e,t){let s=e.state.exportedVars??new Set,n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n=n.filter(r=>r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length")?!1:e.state.env.has(r)),n.sort()}function di(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function hi(e){let t=[...ts];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function pi(e){let t=[...xn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function mi(e,t){let s=[];for(let r of e.state.env.keys())if(r.startsWith("BASH_ALIAS_")){let i=r.slice(11);s.push(i)}let n=s;return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function yi(e){let t=[...li];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function gi(e){let t=[...ci];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function es(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i){let o=`${n}/${a}`;try{if((await e.fs.stat(o)).isDirectory&&(!r||a.startsWith(r)))if(t?.includes("/")){let l=t.lastIndexOf("/"),c=t.slice(0,l+1);s.push(c+a)}else s.push(a)}catch{}}}catch{}return s.sort()}async function In(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let a=t.lastIndexOf("/");if(a!==-1){let o=t.slice(0,a)||"/";r=t.slice(a+1),o.startsWith("/")?n=o:n=`${e.state.cwd}/${o}`}}let i=await e.fs.readdir(n);for(let a of i)if(!r||a.startsWith(r))if(t?.includes("/")){let o=t.lastIndexOf("/"),f=t.slice(0,o+1);s.push(f+a)}else s.push(a)}catch{}return s.sort()}function wi(e){return["root","nobody"]}async function vi(e,t){let s=new Set;for(let i of ts)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 xn)s.add(i);let n=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of n.split(":"))if(i)try{let a=await e.fs.readdir(i);for(let o of a)s.add(o)}catch{}let r=Array.from(s);return t!==null&&(r=r.filter(i=>i.startsWith(t))),r.sort()}async function bi(e,t){let n=new M().parseWordFromString(t,!1,!1);return await I(e,n)}function Ei(e,t){let s=e.state.env.get("IFS")??`
53
- `;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],i="",a=0;for(;a<t.length;){let o=t[a];if(o==="\\"&&a+1<t.length){let f=t[a+1];i+=f,a+=2}else n.has(o)?(i.length>0&&(r.push(i),i=""),a++):(i+=o,a++)}return i.length>0&&r.push(i),r}function We(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function $i(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=le(e,"COMPREPLY");for(let[,i]of r)t.push(i)}else{let r=e.state.env.get("COMPREPLY");r!==void 0&&t.push(r)}return t}var Si=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function rs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!1,i,a,o,f=[],l=[],c=[];for(let u=0;u<t.length;u++){let d=t[u];if(d==="-p")s=!0;else if(d==="-r")n=!0;else if(d==="-D")r=!0;else if(d==="-W"){if(u++,u>=t.length)return S(`complete: -W: option requires an argument
54
- `,2);i=t[u]}else if(d==="-F"){if(u++,u>=t.length)return S(`complete: -F: option requires an argument
55
- `,2);a=t[u]}else if(d==="-o"){if(u++,u>=t.length)return S(`complete: -o: option requires an argument
56
- `,2);let h=t[u];if(!Si.includes(h))return S(`complete: ${h}: invalid option name
57
- `,2);f.push(h)}else if(d==="-A"){if(u++,u>=t.length)return S(`complete: -A: option requires an argument
58
- `,2);l.push(t[u])}else if(d==="-C"){if(u++,u>=t.length)return S(`complete: -C: option requires an argument
59
- `,2);o=t[u]}else if(d==="-G"){if(u++,u>=t.length)return S(`complete: -G: option requires an argument
60
- `,2)}else if(d==="-P"){if(u++,u>=t.length)return S(`complete: -P: option requires an argument
61
- `,2)}else if(d==="-S"){if(u++,u>=t.length)return S(`complete: -S: option requires an argument
62
- `,2)}else if(d==="-X"){if(u++,u>=t.length)return S(`complete: -X: option requires an argument
63
- `,2)}else if(d==="--"){c.push(...t.slice(u+1));break}else d.startsWith("-")||c.push(d)}if(n){if(c.length===0)return e.state.completionSpecs.clear(),W("");for(let u of c)e.state.completionSpecs.delete(u);return W("")}if(s)return c.length===0?ns(e):ns(e,c);if(t.length===0||c.length===0&&!i&&!a&&!o&&f.length===0&&l.length===0&&!r)return ns(e);if(a&&c.length===0&&!r)return S(`complete: -F: option requires a command name
64
- `,2);if(r){let u={isDefault:!0};return i!==void 0&&(u.wordlist=i),a!==void 0&&(u.function=a),o!==void 0&&(u.command=o),f.length>0&&(u.options=f),l.length>0&&(u.actions=l),e.state.completionSpecs.set("__default__",u),W("")}for(let u of c){let d={};i!==void 0&&(d.wordlist=i),a!==void 0&&(d.function=a),o!==void 0&&(d.command=o),f.length>0&&(d.options=f),l.length>0&&(d.actions=l),e.state.completionSpecs.set(u,d)}return W("")}function ns(e,t){let s=e.state.completionSpecs;if(!s||s.size===0){if(t&&t.length>0){let i="";for(let a of t)i+=`complete: ${a}: no completion specification
65
- `;return _("",i,1)}return W("")}let n=[],r=t||Array.from(s.keys());for(let i of r){if(i==="__default__")continue;let a=s.get(i);if(!a){if(t)return _(n.join(`
47
+ `,2);u=t[y]}else if(w==="-G"){if(y++,y>=t.length)return S(`compgen: -G: option requires an argument
48
+ `,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 os(e,o);p.push(...y)}if(c){let y=await zn(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=bi(e,o);p.push(...w)}else if(y==="export"){let w=Ei(e,o);p.push(...w)}else if(y==="function"){let w=$i(e,o);p.push(...w)}else if(y==="builtin"){let w=Si(o);p.push(...w)}else if(y==="keyword"){let w=Ai(o);p.push(...w)}else if(y==="alias"){let w=_i(e,o);p.push(...w)}else if(y==="shopt"){let w=Ci(o);p.push(...w)}else if(y==="helptopic"){let w=Pi(o);p.push(...w)}else if(y==="directory"){let w=await os(e,o);p.push(...w)}else if(y==="file"){let w=await zn(e,o);p.push(...w)}else if(y==="user"){let w=ki(o);p.push(...w)}else if(y==="command"){let w=await Ni(e,o);p.push(...w)}if(n!==null)try{let y=await Oi(e,n),w=xi(e,y);for(let v of w)(o===null||v.startsWith(o))&&p.push(v)}catch{return _("","",1)}if(a){let y=await os(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 C=["compgen",h[0]??"",""];try{let x=await Nt(e,y,C,"");if(x.exitCode!==0)return ze(e,w),ze(e,v),_("",x.stderr,1);g=x.stdout;let D=Di(e);p.push(...D)}catch{return ze(e,w),ze(e,v),_("","",1)}ze(e,w),ze(e,v)}}if(d!==null)try{let y=ye(d),w=await e.executeScript(y);if(w.exitCode!==0)return _("",w.stderr,w.exitCode);if(w.stdout){let v=w.stdout.split(`
49
+ `);for(let C of v)C.length>0&&p.push(C)}}catch(y){if(y.name==="ParseException")return S(`compgen: -C: ${y.message}
50
+ `,2);throw y}let b=p;if(u!==null){let y=u.startsWith("!"),w=y?u.slice(1):u;b=p.filter(v=>{let C=Me(v,w,!1,!0);return y?C:!C})}if(b.length===0&&o!==null)return _(g,"",1);let E=b.map(y=>`${r}${y}${i}`).join(`
51
+ `),k=g+(E?`${E}
52
+ `:"");return F(k)}function bi(e,t){let s=new Set;for(let r of e.state.env.keys()){if(r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length"))continue;let i=r.split("_")[0];/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(r)?s.add(r):i&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(i)&&e.state.env.has(`${i}__length`)&&s.add(i)}let n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function Ei(e,t){let s=e.state.exportedVars??new Set,n=Array.from(s);return t!==null&&(n=n.filter(r=>r.startsWith(t))),n=n.filter(r=>r.includes("_")&&/^[a-zA-Z_][a-zA-Z0-9_]*_\d+$/.test(r)||r.endsWith("__length")?!1:e.state.env.has(r)),n.sort()}function $i(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function Si(e){let t=[...as];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ai(e){let t=[...Bn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function _i(e,t){let s=[];for(let r of e.state.env.keys())if(r.startsWith("BASH_ALIAS_")){let i=r.slice(11);s.push(i)}let n=s;return t!==null&&(n=n.filter(r=>r.startsWith(t))),n.sort()}function Ci(e){let t=[...wi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Pi(e){let t=[...vi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function os(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";r=t.slice(o+1),a.startsWith("/")?n=a:n=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(n);for(let o of i){let a=`${n}/${o}`;try{if((await e.fs.stat(a)).isDirectory&&(!r||o.startsWith(r)))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 zn(e,t){let s=[];try{let n=e.state.cwd,r=t??"";if(t){let o=t.lastIndexOf("/");if(o!==-1){let a=t.slice(0,o)||"/";r=t.slice(o+1),a.startsWith("/")?n=a:n=`${e.state.cwd}/${a}`}}let i=await e.fs.readdir(n);for(let o of i)if(!r||o.startsWith(r))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 ki(e){return["root","nobody"]}async function Ni(e,t){let s=new Set;for(let i of as)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 Bn)s.add(i);let n=e.state.env.get("PATH")??"/usr/bin:/bin";for(let i of n.split(":"))if(i)try{let o=await e.fs.readdir(i);for(let a of o)s.add(a)}catch{}let r=Array.from(s);return t!==null&&(r=r.filter(i=>i.startsWith(t))),r.sort()}async function Oi(e,t){let n=new M().parseWordFromString(t,!1,!1);return await T(e,n)}function xi(e,t){let s=e.state.env.get("IFS")??`
53
+ `;if(s.length===0)return[t];let n=new Set(s.split("")),r=[],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 n.has(a)?(i.length>0&&(r.push(i),i=""),o++):(i+=a,o++)}return i.length>0&&r.push(i),r}function ze(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function Di(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=pe(e,"COMPREPLY");for(let[,i]of r)t.push(i)}else{let r=e.state.env.get("COMPREPLY");r!==void 0&&t.push(r)}return t}var Ti=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function us(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=!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")n=!0;else if(d==="-D")r=!0;else if(d==="-W"){if(f++,f>=t.length)return S(`complete: -W: option requires an argument
54
+ `,2);i=t[f]}else if(d==="-F"){if(f++,f>=t.length)return S(`complete: -F: option requires an argument
55
+ `,2);o=t[f]}else if(d==="-o"){if(f++,f>=t.length)return S(`complete: -o: option requires an argument
56
+ `,2);let h=t[f];if(!Ti.includes(h))return S(`complete: ${h}: invalid option name
57
+ `,2);l.push(h)}else if(d==="-A"){if(f++,f>=t.length)return S(`complete: -A: option requires an argument
58
+ `,2);c.push(t[f])}else if(d==="-C"){if(f++,f>=t.length)return S(`complete: -C: option requires an argument
59
+ `,2);a=t[f]}else if(d==="-G"){if(f++,f>=t.length)return S(`complete: -G: option requires an argument
60
+ `,2)}else if(d==="-P"){if(f++,f>=t.length)return S(`complete: -P: option requires an argument
61
+ `,2)}else if(d==="-S"){if(f++,f>=t.length)return S(`complete: -S: option requires an argument
62
+ `,2)}else if(d==="-X"){if(f++,f>=t.length)return S(`complete: -X: option requires an argument
63
+ `,2)}else if(d==="--"){u.push(...t.slice(f+1));break}else d.startsWith("-")||u.push(d)}if(n){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?cs(e):cs(e,u);if(t.length===0||u.length===0&&!i&&!o&&!a&&l.length===0&&c.length===0&&!r)return cs(e);if(o&&u.length===0&&!r)return S(`complete: -F: option requires a command name
64
+ `,2);if(r){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 cs(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
65
+ `;return _("",i,1)}return F("")}let n=[],r=t||Array.from(s.keys());for(let i of r){if(i==="__default__")continue;let o=s.get(i);if(!o){if(t)return _(n.join(`
66
66
  `)+(n.length>0?`
67
67
  `:""),`complete: ${i}: no completion specification
68
- `,1);continue}let o="complete";if(a.options)for(let f of a.options)o+=` -o ${f}`;if(a.actions)for(let f of a.actions)o+=` -A ${f}`;a.wordlist!==void 0&&(a.wordlist.includes(" ")||a.wordlist.includes("'")?o+=` -W '${a.wordlist}'`:o+=` -W ${a.wordlist}`),a.function!==void 0&&(o+=` -F ${a.function}`),a.isDefault&&(o+=" -D"),o+=` ${i}`,n.push(o)}return n.length===0?W(""):W(`${n.join(`
68
+ `,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}`,n.push(a)}return n.length===0?F(""):F(`${n.join(`
69
69
  `)}
70
- `)}var Rn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function is(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],a=[];for(let o=0;o<t.length;o++){let f=t[o];if(f==="-D")s=!0;else if(f==="-E")n=!0;else if(f==="-o"){if(o++,o>=t.length)return S(`compopt: -o: option requires an argument
71
- `,2);let l=t[o];if(!Rn.includes(l))return S(`compopt: ${l}: invalid option name
72
- `,2);r.push(l)}else if(f==="+o"){if(o++,o>=t.length)return S(`compopt: +o: option requires an argument
73
- `,2);let l=t[o];if(!Rn.includes(l))return S(`compopt: ${l}: invalid option name
74
- `,2);i.push(l)}else if(f==="--"){a.push(...t.slice(o+1));break}else!f.startsWith("-")&&!f.startsWith("+")&&a.push(f)}if(s){let o=e.state.completionSpecs.get("__default__")??{isDefault:!0},f=new Set(o.options??[]);for(let l of r)f.add(l);for(let l of i)f.delete(l);return o.options=f.size>0?Array.from(f):void 0,e.state.completionSpecs.set("__default__",o),W("")}if(n){let o=e.state.completionSpecs.get("__empty__")??{},f=new Set(o.options??[]);for(let l of r)f.add(l);for(let l of i)f.delete(l);return o.options=f.size>0?Array.from(f):void 0,e.state.completionSpecs.set("__empty__",o),W("")}if(a.length>0){for(let o of a){let f=e.state.completionSpecs.get(o)??{},l=new Set(f.options??[]);for(let c of r)l.add(c);for(let c of i)l.delete(c);f.options=l.size>0?Array.from(l):void 0,e.state.completionSpecs.set(o,f)}return W("")}return S(`compopt: not currently executing completion function
75
- `,1)}function as(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new be;return L}if(t.length>1)throw new z(1,"",`bash: continue: too many arguments
76
- `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new z(1,"",`bash: continue: ${t[0]}: numeric argument required
77
- `);s=n}throw new re(s)}function j(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 os(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function ls(e){let t="$'";for(let s=0;s<e.length;s++){let n=e[s],r=e.charCodeAt(s);r===7?t+="\\a":r===8?t+="\\b":r===9?t+="\\t":r===10?t+="\\n":r===11?t+="\\v":r===12?t+="\\f":r===13?t+="\\r":r===27?t+="\\e":r===39?t+="\\'":r===92?t+="\\\\":r<32||r===127?t+=`\\${r.toString(8).padStart(3,"0")}`:t+=n}return t+="'",t}function Ct(e){return os(e)?ls(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Oe(e){return os(e)?ls(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function cs(e){return os(e)?ls(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ln(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),ae(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 fs(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Wn(e,t){let s="",n="",r=!1;for(let i of t){let a=Ln(e,i);if(e.state.associativeArrays?.has(i)){let c=$e(e,i);if(c.length===0)s+=`declare -A ${i}=()
78
- `;else{let u=c.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=fs(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${u.join(" ")})
79
- `}continue}let f=Y(e,i);if(f.length>0){let c=f.map(u=>{let d=e.state.env.get(`${i}_${u}`)??"";return`[${u}]=${Oe(d)}`});s+=`declare -a ${i}=(${c.join(" ")})
70
+ `)}var jn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function fs(e,t){e.state.completionSpecs||(e.state.completionSpecs=new Map);let s=!1,n=!1,r=[],i=[],o=[];for(let a=0;a<t.length;a++){let l=t[a];if(l==="-D")s=!0;else if(l==="-E")n=!0;else if(l==="-o"){if(a++,a>=t.length)return S(`compopt: -o: option requires an argument
71
+ `,2);let c=t[a];if(!jn.includes(c))return S(`compopt: ${c}: invalid option name
72
+ `,2);r.push(c)}else if(l==="+o"){if(a++,a>=t.length)return S(`compopt: +o: option requires an argument
73
+ `,2);let c=t[a];if(!jn.includes(c))return S(`compopt: ${c}: invalid option name
74
+ `,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 r)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(n){let a=e.state.completionSpecs.get("__empty__")??{},l=new Set(a.options??[]);for(let c of r)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 r)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
75
+ `,1)}function ds(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ae;return L}if(t.length>1)throw new V(1,"",`bash: continue: too many arguments
76
+ `);let s=1;if(t.length>0){let n=Number.parseInt(t[0],10);if(Number.isNaN(n)||n<1)throw new V(1,"",`bash: continue: ${t[0]}: numeric argument required
77
+ `);s=n}throw new le(s)}function j(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 hs(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function ps(e){let t="$'";for(let s=0;s<e.length;s++){let n=e[s],r=e.charCodeAt(s);r===7?t+="\\a":r===8?t+="\\b":r===9?t+="\\t":r===10?t+="\\n":r===11?t+="\\v":r===12?t+="\\f":r===13?t+="\\r":r===27?t+="\\e":r===39?t+="\\'":r===92?t+="\\\\":r<32||r===127?t+=`\\${r.toString(8).padStart(3,"0")}`:t+=n}return t+="'",t}function Ot(e){return hs(e)?ps(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function Ie(e){return hs(e)?ps(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function ms(e){return hs(e)?ps(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Hn(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),fe(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 ys(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Un(e,t){let s="",n="",r=!1;for(let i of t){let o=Hn(e,i);if(e.state.associativeArrays?.has(i)){let u=Ce(e,i);if(u.length===0)s+=`declare -A ${i}=()
78
+ `;else{let f=u.map(d=>{let h=e.state.env.get(`${i}_${d}`)??"",m=ys(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${f.join(" ")})
79
+ `}continue}let l=Y(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${Ie(d)}`});s+=`declare -a ${i}=(${u.join(" ")})
80
80
  `;continue}if(e.state.env.has(`${i}__length`)){s+=`declare -a ${i}=()
81
- `;continue}let l=e.state.env.get(i);if(l!==void 0)s+=`declare ${a} ${i}=${cs(l)}
82
- `;else{let c=e.state.declaredVars?.has(i),u=e.state.localVarDepth?.has(i);c||u?s+=`declare ${a} ${i}
81
+ `;continue}let c=e.state.env.get(i);if(c!==void 0)s+=`declare ${o} ${i}=${ms(c)}
82
+ `;else{let u=e.state.declaredVars?.has(i),f=e.state.localVarDepth?.has(i);u||f?s+=`declare ${o} ${i}
83
83
  `:(n+=`bash: declare: ${i}: not found
84
- `,r=!0)}}return _(s,n,r?1:0)}function Fn(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:a}=t,o=s||n||r||i||a,f="",l=new Set;for(let u of e.state.env.keys()){if(u.startsWith("BASH_"))continue;if(u.endsWith("__length")){let h=u.slice(0,-8);l.add(h);continue}let d=u.lastIndexOf("_");if(d>0){let h=u.slice(0,d),m=u.slice(d+1);if(/^\d+$/.test(m)||e.state.associativeArrays?.has(h)){l.add(h);continue}}l.add(u)}if(e.state.localVarDepth)for(let u of e.state.localVarDepth.keys())l.add(u);if(e.state.associativeArrays)for(let u of e.state.associativeArrays)l.add(u);let c=Array.from(l).sort();for(let u of c){let d=Ln(e,u),h=e.state.associativeArrays?.has(u),m=Y(e,u),p=!h&&(m.length>0||e.state.env.has(`${u}__length`));if(o&&(a&&!h||i&&!p||s&&!e.state.exportedVars?.has(u)||n&&!e.state.readonlyVars?.has(u)||r&&!ae(e,u)))continue;if(h){let v=$e(e,u);if(v.length===0)f+=`declare -A ${u}=()
85
- `;else{let $=v.map(N=>{let y=e.state.env.get(`${u}_${N}`)??"",w=fs(y);return`['${N}']=${w}`});f+=`declare -A ${u}=(${$.join(" ")})
86
- `}continue}if(m.length>0){let v=m.map($=>{let N=e.state.env.get(`${u}_${$}`)??"";return`[${$}]=${Oe(N)}`});f+=`declare -a ${u}=(${v.join(" ")})
87
- `;continue}if(e.state.env.has(`${u}__length`)){f+=`declare -a ${u}=()
88
- `;continue}let g=e.state.env.get(u);g!==void 0&&(f+=`declare ${d} ${u}=${cs(g)}
89
- `)}return W(f)}function Mn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=$e(e,n);if(r.length===0)t+=`declare -A ${n}=()
90
- `;else{let i=r.map(a=>{let o=e.state.env.get(`${n}_${a}`)??"",f=fs(o);return`['${a}']=${f}`});t+=`declare -A ${n}=(${i.join(" ")})
91
- `}}return W(t)}function zn(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);e.state.associativeArrays?.has(a)||s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);/^\d+$/.test(o)&&(e.state.associativeArrays?.has(a)||s.add(a))}}let n=Array.from(s).sort();for(let r of n){let i=Y(e,r);if(i.length===0)t+=`declare -a ${r}=()
92
- `;else{let a=i.map(o=>{let f=e.state.env.get(`${r}_${o}`)??"";return`[${o}]=${Oe(f)}`});t+=`declare -a ${r}=(${a.join(" ")})
93
- `}}return W(t)}function Vn(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let a=r.slice(0,-8);s.add(a);continue}let i=r.lastIndexOf("_");if(i>0){let a=r.slice(0,i),o=r.slice(i+1);if(/^\d+$/.test(o)||e.state.associativeArrays?.has(a)){s.add(a);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||Y(e,r).length>0||e.state.env.has(`${r}__length`))continue;let o=e.state.env.get(r);o!==void 0&&(t+=`${r}=${Ct(o)}
94
- `)}return W(t)}function us(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Ze(e,t){return e.state.integerVars?.has(t)??!1}function ds(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Ai(e,t){return e.state.lowercaseVars?.has(t)??!1}function hs(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function _i(e,t){return e.state.uppercaseVars?.has(t)??!1}function Fe(e,t,s){return Ai(e,t)?s.toLowerCase():_i(e,t)?s.toUpperCase():s}async function Bn(e,t){try{let s=new M,n=q(s,t),r=await V(e,n.expression);return String(r)}catch{return"0"}}function Ci(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],n=s.length;if(e[n]!=="[")return null;let r=0,i=n+1;for(;n<e.length;n++)if(e[n]==="[")r++;else if(e[n]==="]"&&(r--,r===0))break;if(r!==0)return null;let a=e.slice(i,n);if(n++,e[n]!=="=")return null;n++;let o=e.slice(n);return{name:s,indexExpr:a,value:o}}async function ps(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=!1,f=!1,l=!1,c=!1,u=!1,d=!1,h=!1,m=!1,p=!1,g=!1,v=[];for(let D=0;D<t.length;D++){let x=t[D];if(x==="-a")s=!0;else if(x==="-A")n=!0;else if(x==="-r")r=!0;else if(x==="-x")i=!0;else if(x==="-p")a=!0;else if(x==="-n")o=!0;else if(x==="+n")f=!0;else if(x==="+a")l=!0;else if(x==="+x")c=!0;else if(x==="--"){v.push(...t.slice(D+1));break}else if(x.startsWith("+")){for(let A of x.slice(1))if(A==="n")f=!0;else if(A==="a")l=!0;else if(A==="x")c=!0;else if(A!=="r"){if(A!=="i"){if(!(A==="f"||A==="F"))return _("",`bash: typeset: +${A}: invalid option
95
- `,2)}}}else if(x==="-i")u=!0;else if(x==="-l")d=!0;else if(x==="-u")h=!0;else if(x==="-f")m=!0;else if(x==="-F")p=!0;else if(x==="-g")g=!0;else if(x.startsWith("-"))for(let A of x.slice(1))if(A==="a")s=!0;else if(A==="A")n=!0;else if(A==="r")r=!0;else if(A==="x")i=!0;else if(A==="p")a=!0;else if(A==="n")o=!0;else if(A==="i")u=!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 _("",`bash: typeset: -${A}: invalid option
96
- `,2);else v.push(x)}let N=e.state.localScopes.length>0&&!g,y=D=>{if(!N)return;let x=e.state.localScopes[e.state.localScopes.length-1];x.has(D)||x.set(D,e.state.env.get(D))},w=D=>{if(!N)return;let x=e.state.localScopes[e.state.localScopes.length-1];x.has(D)||x.set(D,e.state.env.get(D));let A=`${D}_`;for(let T of e.state.env.keys())T.startsWith(A)&&!T.includes("__")&&(x.has(T)||x.set(T,e.state.env.get(T)));let P=`${D}__length`;e.state.env.has(P)&&!x.has(P)&&x.set(P,e.state.env.get(P))},b=D=>{N&&Ce(e,D)};if(p){if(v.length===0){let A=Array.from(e.state.functions.keys()).sort(),P="";for(let T of A)P+=`declare -f ${T}
97
- `;return W(P)}let D=!0,x="";for(let A of v)e.state.functions.has(A)?x+=`${A}
98
- `:D=!1;return _(x,"",D?0:1)}if(m){if(v.length===0){let x="",A=Array.from(e.state.functions.keys()).sort();for(let P of A)x+=`${P} ()
84
+ `,r=!0)}}return _(s,n,r?1:0)}function qn(e,t){let{filterExport:s,filterReadonly:n,filterNameref:r,filterIndexedArray:i,filterAssocArray:o}=t,a=s||n||r||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=Hn(e,f),h=e.state.associativeArrays?.has(f),m=Y(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)||n&&!e.state.readonlyVars?.has(f)||r&&!fe(e,f)))continue;if(h){let b=Ce(e,f);if(b.length===0)l+=`declare -A ${f}=()
85
+ `;else{let E=b.map(k=>{let y=e.state.env.get(`${f}_${k}`)??"",w=ys(y);return`['${k}']=${w}`});l+=`declare -A ${f}=(${E.join(" ")})
86
+ `}continue}if(m.length>0){let b=m.map(E=>{let k=e.state.env.get(`${f}_${E}`)??"";return`[${E}]=${Ie(k)}`});l+=`declare -a ${f}=(${b.join(" ")})
87
+ `;continue}if(e.state.env.has(`${f}__length`)){l+=`declare -a ${f}=()
88
+ `;continue}let g=e.state.env.get(f);g!==void 0&&(l+=`declare ${d} ${f}=${ms(g)}
89
+ `)}return F(l)}function Zn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Ce(e,n);if(r.length===0)t+=`declare -A ${n}=()
90
+ `;else{let i=r.map(o=>{let a=e.state.env.get(`${n}_${o}`)??"",l=ys(a);return`['${o}']=${l}`});t+=`declare -A ${n}=(${i.join(" ")})
91
+ `}}return F(t)}function Gn(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let o=r.slice(0,-8);e.state.associativeArrays?.has(o)||s.add(o);continue}let i=r.lastIndexOf("_");if(i>0){let o=r.slice(0,i),a=r.slice(i+1);/^\d+$/.test(a)&&(e.state.associativeArrays?.has(o)||s.add(o))}}let n=Array.from(s).sort();for(let r of n){let i=Y(e,r);if(i.length===0)t+=`declare -a ${r}=()
92
+ `;else{let o=i.map(a=>{let l=e.state.env.get(`${r}_${a}`)??"";return`[${a}]=${Ie(l)}`});t+=`declare -a ${r}=(${o.join(" ")})
93
+ `}}return F(t)}function Kn(e){let t="",s=new Set;for(let r of e.state.env.keys()){if(r.startsWith("BASH_"))continue;if(r.endsWith("__length")){let o=r.slice(0,-8);s.add(o);continue}let i=r.lastIndexOf("_");if(i>0){let o=r.slice(0,i),a=r.slice(i+1);if(/^\d+$/.test(a)||e.state.associativeArrays?.has(o)){s.add(o);continue}}s.add(r)}let n=Array.from(s).sort();for(let r of n){if(e.state.associativeArrays?.has(r)||Y(e,r).length>0||e.state.env.has(`${r}__length`))continue;let a=e.state.env.get(r);a!==void 0&&(t+=`${r}=${Ot(a)}
94
+ `)}return F(t)}function gs(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Ye(e,t){return e.state.integerVars?.has(t)??!1}function ws(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Ii(e,t){return e.state.lowercaseVars?.has(t)??!1}function vs(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Ri(e,t){return e.state.uppercaseVars?.has(t)??!1}function Be(e,t,s){return Ii(e,t)?s.toLowerCase():Ri(e,t)?s.toUpperCase():s}async function Xn(e,t){try{let s=new M,n=q(s,t),r=await z(e,n.expression);return String(r)}catch{return"0"}}function Li(e){let t=e.match(/^[a-zA-Z_][a-zA-Z0-9_]*/);if(!t)return null;let s=t[0],n=s.length;if(e[n]!=="[")return null;let r=0,i=n+1;for(;n<e.length;n++)if(e[n]==="[")r++;else if(e[n]==="]"&&(r--,r===0))break;if(r!==0)return null;let o=e.slice(i,n);if(n++,e[n]!=="=")return null;n++;let a=e.slice(n);return{name:s,indexExpr:o,value:a}}async function bs(e,t){let s=!1,n=!1,r=!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 D=0;D<t.length;D++){let I=t[D];if(I==="-a")s=!0;else if(I==="-A")n=!0;else if(I==="-r")r=!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(D+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 _("",`bash: typeset: +${A}: invalid option
95
+ `,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")n=!0;else if(A==="r")r=!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 _("",`bash: typeset: -${A}: invalid option
96
+ `,2);else b.push(I)}let k=e.state.localScopes.length>0&&!g,y=D=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(D)||I.set(D,e.state.env.get(D))},w=D=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(D)||I.set(D,e.state.env.get(D));let A=`${D}_`;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 P=`${D}__length`;e.state.env.has(P)&&!I.has(P)&&I.set(P,e.state.env.get(P))},v=D=>{k&&Oe(e,D)};if(p){if(b.length===0){let A=Array.from(e.state.functions.keys()).sort(),P="";for(let N of A)P+=`declare -f ${N}
97
+ `;return F(P)}let D=!0,I="";for(let A of b)e.state.functions.has(A)?I+=`${A}
98
+ `:D=!1;return _(I,"",D?0:1)}if(m){if(b.length===0){let I="",A=Array.from(e.state.functions.keys()).sort();for(let P of A)I+=`${P} ()
99
99
  {
100
100
  # function body
101
101
  }
102
- `;return W(x)}let D=!0;for(let x of v)e.state.functions.has(x)||(D=!1);return _("","",D?0:1)}if(a&&v.length>0)return Wn(e,v);if(a&&v.length===0)return Fn(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(v.length===0&&n&&!a)return Mn(e);if(v.length===0&&s&&!a)return zn(e);if(v.length===0&&!a)return Vn(e);let C="",O=0;for(let D of v){let x=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(x&&!l){let E=x[1],k=x[2];if(n&&Y(e,E).length>0){C+=`bash: declare: ${E}: cannot convert indexed to associative array
103
- `,O=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has(E)){C+=`bash: declare: ${E}: cannot convert associative to indexed array
104
- `,O=1;continue}if(w(E),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add(E)),de(e,E),e.state.env.delete(E),e.state.env.delete(`${E}__length`),n&&k.includes("[")){let R=Et(k);for(let[G,F]of R){let H=j(e,F);e.state.env.set(`${E}_${G}`,H)}}else if(n){let R=pe(k);for(let G=0;G<R.length;G+=2){let F=R[G],H=G+1<R.length?j(e,R[G+1]):"";e.state.env.set(`${E}_${F}`,H)}}else{let R=pe(k);if(R.some(F=>/^\[[^\]]+\]=/.test(F))){let F=0;for(let H of R){let Q=H.match(/^\[([^\]]+)\]=(.*)$/);if(Q){let se=Q[1],De=Q[2],Tr=j(e,De),Ve;if(/^-?\d+$/.test(se))Ve=Number.parseInt(se,10);else try{let Ir=new M,xr=q(Ir,se);Ve=await V(e,xr.expression)}catch{Ve=0}e.state.env.set(`${E}_${Ve}`,Tr),F=Ve+1}else{let se=j(e,H);e.state.env.set(`${E}_${F}`,se),F++}}}else{for(let F=0;F<R.length;F++)e.state.env.set(`${E}_${F}`,R[F]);e.state.env.set(`${E}__length`,String(R.length))}}b(E),r&&te(e,E),i&&ce(e,E);continue}if(f){let E=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(Zs(e,E),!D.includes("="))continue}if(c){let E=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(at(e,E),!D.includes("="))continue}let A=Ci(D);if(A){let{name:E,indexExpr:k,value:R}=A,G=K(e,E);if(G)return G;w(E);let F;try{let Q=new M,se=q(Q,k);F=await V(e,se.expression)}catch{let Q=parseInt(k,10);F=Number.isNaN(Q)?0:Q}e.state.env.set(`${E}_${F}`,R);let H=parseInt(e.state.env.get(`${E}__length`)??"0",10);F>=H&&e.state.env.set(`${E}__length`,String(F+1)),b(E),r&&te(e,E),i&&ce(e,E);continue}let P=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(P&&!l){let E=P[1],k=P[2],R=K(e,E);if(R)return R;w(E);let G=pe(k);if(e.state.associativeArrays?.has(E)){let F=Et(k);for(let[H,Q]of F){let se=j(e,Q);e.state.env.set(`${E}_${H}`,se)}}else{let F=Y(e,E),H=0,Q=e.state.env.get(E);F.length===0&&Q!==void 0?(e.state.env.set(`${E}_0`,Q),e.state.env.delete(E),H=1):F.length>0&&(H=Math.max(...F)+1);for(let De=0;De<G.length;De++)e.state.env.set(`${E}_${H+De}`,j(e,G[De]));let se=H+G.length;e.state.env.set(`${E}__length`,String(se))}b(E),r&&te(e,E),i&&ce(e,E);continue}let T=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(T){let E=T[1],k=j(e,T[2]),R=K(e,E);if(R)return R;y(E),u&&us(e,E),d&&ds(e,E),h&&hs(e,E);let F=Y(e,E).length>0||e.state.associativeArrays?.has(E);if(Ze(e,E)){let H=e.state.env.get(E)??"0",Q=parseInt(H,10)||0,se=parseInt(await Bn(e,k),10)||0;k=String(Q+se),e.state.env.set(E,k)}else if(F){k=Fe(e,E,k);let H=`${E}_0`,Q=e.state.env.get(H)??"";e.state.env.set(H,Q+k)}else{k=Fe(e,E,k);let H=e.state.env.get(E)??"";e.state.env.set(E,H+k)}b(E),r&&te(e,E),i&&ce(e,E),e.state.options.allexport&&!c&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(E));continue}if(D.includes("=")){let E=D.indexOf("="),k=D.slice(0,E),R=D.slice(E+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k)){C+=`bash: typeset: \`${k}': not a valid identifier
105
- `,O=1;continue}let G=K(e,k);if(G)return G;if(y(k),o){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){C+=`bash: declare: \`${R}': invalid variable name for name reference
106
- `,O=1;continue}e.state.env.set(k,R),ge(e,k),R!==""&&Ft(e,R)&&Wt(e,k),b(k),r&&te(e,k),i&&ce(e,k);continue}if(u&&us(e,k),d&&ds(e,k),h&&hs(e,k),Ze(e,k)&&(R=await Bn(e,R)),R=Fe(e,k,R),ae(e,k)){let F=Se(e,k);F&&F!==k?e.state.env.set(F,R):e.state.env.set(k,R)}else e.state.env.set(k,R);b(k),r&&te(e,k),i&&ce(e,k),e.state.options.allexport&&!c&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(k))}else{let E=D;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(E)){C+=`bash: typeset: \`${E}': not a valid identifier
107
- `,O=1;continue}if(s||n?w(E):y(E),o){ge(e,E);let R=e.state.env.get(E);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?Gs(e,E):R&&Ft(e,R)&&Wt(e,E),b(E),r&&te(e,E),i&&ce(e,E);continue}if(u&&us(e,E),d&&ds(e,E),h&&hs(e,E),n){if(Y(e,E).length>0){C+=`bash: declare: ${E}: cannot convert indexed to associative array
108
- `,O=1;continue}e.state.associativeArrays??=new Set,e.state.associativeArrays.add(E)}let k=Array.from(e.state.env.keys()).some(R=>R.startsWith(`${E}_`)&&!R.startsWith(`${E}__length`));!e.state.env.has(E)&&!k&&(s||n?e.state.env.set(`${E}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add(E))),b(E),r&&te(e,E),i&&ce(e,E)}}return _("",C,O)}async function ms(e,t){let s=!1,n=!1,r=!1,i=[];for(let a=0;a<t.length;a++){let o=t[a];if(o==="-a")s=!0;else if(o==="-A")n=!0;else if(o==="-p")r=!0;else if(o==="--"){i.push(...t.slice(a+1));break}else o.startsWith("-")||i.push(o)}if(i.length===0){let a="",o=Array.from(e.state.readonlyVars||[]).sort();for(let f of o){let l=e.state.env.get(f);if(l!==void 0){let c=l.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -r ${f}="${c}"
109
- `}}return W(a)}for(let a of i){let o=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(o){let u=o[1],d=o[2],h=K(e,u);if(h)return h;let m=pe(d);if(e.state.associativeArrays?.has(u)){let p=Et(d);for(let[g,v]of p){let $=j(e,v);e.state.env.set(`${u}_${g}`,$)}}else{let p=Y(e,u),g=0,v=e.state.env.get(u);p.length===0&&v!==void 0?(e.state.env.set(`${u}_0`,v),e.state.env.delete(u),g=1):p.length>0&&(g=Math.max(...p)+1);for(let N=0;N<m.length;N++)e.state.env.set(`${u}_${g+N}`,j(e,m[N]));let $=g+m.length;e.state.env.set(`${u}__length`,String($))}te(e,u);continue}let f=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(f){let u=f[1],d=j(e,f[2]),h=K(e,u);if(h)return h;let m=e.state.env.get(u)??"";e.state.env.set(u,m+d),te(e,u);continue}let l=Cn(a);if(l.value===void 0&&!l.isArray){te(e,l.name);continue}let c=await Pn(e,l,{makeReadonly:!0});if(c)return c}return L}function ys(e){return e.state.directoryStack??=[],e.state.directoryStack}function Ge(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Pi(e){let t=e.split("/").filter(n=>n&&n!=="."),s=[];for(let n of t)n===".."?s.pop():s.push(n);return`/${s.join("/")}`}async function gs(e,t){let s=ys(e),n;for(let o=0;o<t.length;o++){let f=t[o];if(f==="--"){if(o+1<t.length){if(n!==void 0)return S(`bash: pushd: too many arguments
110
- `,2);n=t[o+1],o++}}else{if(f.startsWith("-")&&f!=="-")return S(`bash: pushd: ${f}: invalid option
102
+ `;return F(I)}let D=!0;for(let I of b)e.state.functions.has(I)||(D=!1);return _("","",D?0:1)}if(o&&b.length>0)return Un(e,b);if(o&&b.length===0)return qn(e,{filterExport:i,filterReadonly:r,filterNameref:a,filterIndexedArray:s,filterAssocArray:n});if(b.length===0&&n&&!o)return Zn(e);if(b.length===0&&s&&!o)return Gn(e);if(b.length===0&&!o)return Kn(e);let C="",x=0;for(let D of b){let I=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let $=I[1],O=I[2];if(n&&Y(e,$).length>0){C+=`bash: declare: ${$}: cannot convert indexed to associative array
103
+ `,x=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has($)){C+=`bash: declare: ${$}: cannot convert associative to indexed array
104
+ `,x=1;continue}if(w($),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)),ge(e,$),e.state.env.delete($),e.state.env.delete(`${$}__length`),n&&O.includes("[")){let R=_t(O);for(let[G,W]of R){let H=j(e,W);e.state.env.set(`${$}_${G}`,H)}}else if(n){let R=ve(O);for(let G=0;G<R.length;G+=2){let W=R[G],H=G+1<R.length?j(e,R[G+1]):"";e.state.env.set(`${$}_${W}`,H)}}else{let R=ve(O);if(R.some(W=>/^\[[^\]]+\]=/.test(W))){let W=0;for(let H of R){let J=H.match(/^\[([^\]]+)\]=(.*)$/);if(J){let oe=J[1],Re=J[2],Br=j(e,Re),Ue;if(/^-?\d+$/.test(oe))Ue=Number.parseInt(oe,10);else try{let jr=new M,Hr=q(jr,oe);Ue=await z(e,Hr.expression)}catch{Ue=0}e.state.env.set(`${$}_${Ue}`,Br),W=Ue+1}else{let oe=j(e,H);e.state.env.set(`${$}_${W}`,oe),W++}}}else{for(let W=0;W<R.length;W++)e.state.env.set(`${$}_${W}`,R[W]);e.state.env.set(`${$}__length`,String(R.length))}}v($),r&&ne(e,$),i&&me(e,$);continue}if(l){let $=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(tn(e,$),!D.includes("="))continue}if(u){let $=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(ut(e,$),!D.includes("="))continue}let A=Li(D);if(A){let{name:$,indexExpr:O,value:R}=A,G=K(e,$);if(G)return G;w($);let W;try{let J=new M,oe=q(J,O);W=await z(e,oe.expression)}catch{let J=parseInt(O,10);W=Number.isNaN(J)?0:J}e.state.env.set(`${$}_${W}`,R);let H=parseInt(e.state.env.get(`${$}__length`)??"0",10);W>=H&&e.state.env.set(`${$}__length`,String(W+1)),v($),r&&ne(e,$),i&&me(e,$);continue}let P=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(P&&!c){let $=P[1],O=P[2],R=K(e,$);if(R)return R;w($);let G=ve(O);if(e.state.associativeArrays?.has($)){let W=_t(O);for(let[H,J]of W){let oe=j(e,J);e.state.env.set(`${$}_${H}`,oe)}}else{let W=Y(e,$),H=0,J=e.state.env.get($);W.length===0&&J!==void 0?(e.state.env.set(`${$}_0`,J),e.state.env.delete($),H=1):W.length>0&&(H=Math.max(...W)+1);for(let Re=0;Re<G.length;Re++)e.state.env.set(`${$}_${H+Re}`,j(e,G[Re]));let oe=H+G.length;e.state.env.set(`${$}__length`,String(oe))}v($),r&&ne(e,$),i&&me(e,$);continue}let N=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(N){let $=N[1],O=j(e,N[2]),R=K(e,$);if(R)return R;y($),f&&gs(e,$),d&&ws(e,$),h&&vs(e,$);let W=Y(e,$).length>0||e.state.associativeArrays?.has($);if(Ye(e,$)){let H=e.state.env.get($)??"0",J=parseInt(H,10)||0,oe=parseInt(await Xn(e,O),10)||0;O=String(J+oe),e.state.env.set($,O)}else if(W){O=Be(e,$,O);let H=`${$}_0`,J=e.state.env.get(H)??"";e.state.env.set(H,J+O)}else{O=Be(e,$,O);let H=e.state.env.get($)??"";e.state.env.set($,H+O)}v($),r&&ne(e,$),i&&me(e,$),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add($));continue}if(D.includes("=")){let $=D.indexOf("="),O=D.slice(0,$),R=D.slice($+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(O)){C+=`bash: typeset: \`${O}': not a valid identifier
105
+ `,x=1;continue}let G=K(e,O);if(G)return G;if(y(O),a){if(R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)){C+=`bash: declare: \`${R}': invalid variable name for name reference
106
+ `,x=1;continue}e.state.env.set(O,R),$e(e,O),R!==""&&Ht(e,R)&&jt(e,O),v(O),r&&ne(e,O),i&&me(e,O);continue}if(f&&gs(e,O),d&&ws(e,O),h&&vs(e,O),Ye(e,O)&&(R=await Xn(e,R)),R=Be(e,O,R),fe(e,O)){let W=Pe(e,O);W&&W!==O?e.state.env.set(W,R):e.state.env.set(O,R)}else e.state.env.set(O,R);v(O),r&&ne(e,O),i&&me(e,O),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(O))}else{let $=D;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)){C+=`bash: typeset: \`${$}': not a valid identifier
107
+ `,x=1;continue}if(s||n?w($):y($),a){$e(e,$);let R=e.state.env.get($);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?sn(e,$):R&&Ht(e,R)&&jt(e,$),v($),r&&ne(e,$),i&&me(e,$);continue}if(f&&gs(e,$),d&&ws(e,$),h&&vs(e,$),n){if(Y(e,$).length>0){C+=`bash: declare: ${$}: cannot convert indexed to associative array
108
+ `,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||n?e.state.env.set(`${$}__length`,"0"):(e.state.declaredVars??=new Set,e.state.declaredVars.add($))),v($),r&&ne(e,$),i&&me(e,$)}}return _("",C,x)}async function Es(e,t){let s=!1,n=!1,r=!1,i=[];for(let o=0;o<t.length;o++){let a=t[o];if(a==="-a")s=!0;else if(a==="-A")n=!0;else if(a==="-p")r=!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}"
109
+ `}}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=ve(d);if(e.state.associativeArrays?.has(f)){let p=_t(d);for(let[g,b]of p){let E=j(e,b);e.state.env.set(`${f}_${g}`,E)}}else{let p=Y(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}`,j(e,m[k]));let E=g+m.length;e.state.env.set(`${f}__length`,String(E))}ne(e,f);continue}let l=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(l){let f=l[1],d=j(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),ne(e,f);continue}let c=In(o);if(c.value===void 0&&!c.isArray){ne(e,c.name);continue}let u=await Rn(e,c,{makeReadonly:!0});if(u)return u}return L}function $s(e){return e.state.directoryStack??=[],e.state.directoryStack}function Qe(e,t){return t&&e===t?"~":t&&e.startsWith(`${t}/`)?`~${e.slice(t.length)}`:e}function Fi(e){let t=e.split("/").filter(n=>n&&n!=="."),s=[];for(let n of t)n===".."?s.pop():s.push(n);return`/${s.join("/")}`}async function Ss(e,t){let s=$s(e),n;for(let a=0;a<t.length;a++){let l=t[a];if(l==="--"){if(a+1<t.length){if(n!==void 0)return S(`bash: pushd: too many arguments
110
+ `,2);n=t[a+1],a++}}else{if(l.startsWith("-")&&l!=="-")return S(`bash: pushd: ${l}: invalid option
111
111
  `,2);if(n!==void 0)return S(`bash: pushd: too many arguments
112
- `,2);n=f}}if(n===void 0){if(s.length<2)return S(`bash: pushd: no other directory
113
- `,1);let o=s[0];s[0]=s[1],s[1]=o,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let o=e.state.cwd.split("/").filter(f=>f);o.pop(),r=`/${o.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=Pi(r);try{if(!(await e.fs.stat(r)).isDirectory)return S(`bash: pushd: ${n}: Not a directory
112
+ `,2);n=l}}if(n===void 0){if(s.length<2)return S(`bash: pushd: no other directory
113
+ `,1);let a=s[0];s[0]=s[1],s[1]=a,n=s[0]}let r;if(n.startsWith("/"))r=n;else if(n===".."){let a=e.state.cwd.split("/").filter(l=>l);a.pop(),r=`/${a.join("/")}`}else n==="."?r=e.state.cwd:n.startsWith("~")?r=(e.state.env.get("HOME")||"/")+n.slice(1):r=`${e.state.cwd}/${n}`;r=Fi(r);try{if(!(await e.fs.stat(r)).isDirectory)return S(`bash: pushd: ${n}: Not a directory
114
114
  `,1)}catch{return S(`bash: pushd: ${n}: No such file or directory
115
- `,1)}s.unshift(e.state.cwd),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 i=e.state.env.get("HOME")||"",a=`${[r,...s].map(o=>Ge(o,i)).join(" ")}
116
- `;return W(a)}function ws(e,t){let s=ys(e);for(let a of t)if(a!=="--")return a.startsWith("-")&&a!=="-"?S(`bash: popd: ${a}: invalid option
115
+ `,1)}s.unshift(e.state.cwd),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 i=e.state.env.get("HOME")||"",o=`${[r,...s].map(a=>Qe(a,i)).join(" ")}
116
+ `;return F(o)}function As(e,t){let s=$s(e);for(let o of t)if(o!=="--")return o.startsWith("-")&&o!=="-"?S(`bash: popd: ${o}: invalid option
117
117
  `,2):S(`bash: popd: too many arguments
118
118
  `,2);if(s.length===0)return S(`bash: popd: directory stack empty
119
119
  `,1);let n=s.shift();if(!n)return S(`bash: popd: directory stack empty
120
- `,1);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 r=e.state.env.get("HOME")||"",i=`${[n,...s].map(a=>Ge(a,r)).join(" ")}
121
- `;return W(i)}function vs(e,t){let s=ys(e),n=!1,r=!1,i=!1,a=!1;for(let c of t)if(c!=="--")if(c.startsWith("-"))for(let u of c.slice(1))if(u==="c")n=!0;else if(u==="l")r=!0;else if(u==="p")i=!0;else if(u==="v")i=!0,a=!0;else return S(`bash: dirs: -${u}: invalid option
120
+ `,1);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 r=e.state.env.get("HOME")||"",i=`${[n,...s].map(o=>Qe(o,r)).join(" ")}
121
+ `;return F(i)}function _s(e,t){let s=$s(e),n=!1,r=!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")n=!0;else if(f==="l")r=!0;else if(f==="p")i=!0;else if(f==="v")i=!0,o=!0;else return S(`bash: dirs: -${f}: invalid option
122
122
  `,2);else return S(`bash: dirs: too many arguments
123
- `,1);if(n)return e.state.directoryStack=[],L;let o=[e.state.cwd,...s],f=e.state.env.get("HOME")||"",l;return a?(l=o.map((c,u)=>{let d=r?c:Ge(c,f);return` ${u} ${d}`}).join(`
124
- `),l+=`
125
- `):i?l=o.map(c=>r?c:Ge(c,f)).join(`
123
+ `,1);if(n)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=r?u:Qe(u,l);return` ${f} ${d}`}).join(`
124
+ `),c+=`
125
+ `):i?c=a.map(u=>r?u:Qe(u,l)).join(`
126
126
  `)+`
127
- `:l=o.map(c=>r?c:Ge(c,f)).join(" ")+`
128
- `,W(l)}async function Pt(e,t,s){let n=t;if(n.length>0){let o=n[0];if(o==="--")n=n.slice(1);else if(o.startsWith("-")&&o!=="-"&&o.length>1)return S(`bash: eval: ${o}: invalid option
127
+ `:c=a.map(u=>r?u:Qe(u,l)).join(" ")+`
128
+ `,F(c)}async function xt(e,t,s){let n=t;if(n.length>0){let a=n[0];if(a==="--")n=n.slice(1);else if(a.startsWith("-")&&a!=="-"&&a.length>1)return S(`bash: eval: ${a}: invalid option
129
129
  eval: usage: eval [arg ...]
130
- `,2)}if(n.length===0)return L;let r=n.join(" ");if(r.trim()==="")return L;let i=e.state.groupStdin,a=s??e.state.groupStdin;a!==void 0&&(e.state.groupStdin=a);try{let o=ue(r);return await e.executeScript(o)}catch(o){if(o instanceof ne||o instanceof re||o instanceof ee||o instanceof z)throw o;if(o.name==="ParseException")return S(`bash: eval: ${o.message}
131
- `);throw o}finally{e.state.groupStdin=i}}function bs(e,t){let s,n="";if(t.length===0)s=e.state.lastExitCode;else{let r=t[0],i=Number.parseInt(r,10);r===""||Number.isNaN(i)||!/^-?\d+$/.test(r)?(n=`bash: exit: ${r}: numeric argument required
132
- `,s=2):s=(i%256+256)%256}throw new z(s,"",n)}function Es(e,t){let s=!1,n=[];for(let a of t)a==="-n"?s=!0:a==="-p"||a==="--"||n.push(a);if(n.length===0&&!s){let a="",o=e.state.exportedVars??new Set,f=Array.from(o).sort();for(let l of f){let c=e.state.env.get(l);if(c!==void 0){let u=c.replace(/\\/g,"\\\\").replace(/"/g,'\\"');a+=`declare -x ${l}="${u}"
133
- `}}return W(a)}if(s){for(let a of n){let o,f;if(a.includes("=")){let l=a.indexOf("=");o=a.slice(0,l),f=j(e,a.slice(l+1)),e.state.env.set(o,f)}else o=a;at(e,o)}return L}let r="",i=0;for(let a of n){let o,f,l=!1,c=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(c)o=c[1],f=j(e,c[2]),l=!0;else if(a.includes("=")){let u=a.indexOf("=");o=a.slice(0,u),f=j(e,a.slice(u+1))}else o=a;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(o)){r+=`bash: export: \`${a}': not a valid identifier
134
- `,i=1;continue}if(f!==void 0)if(l){let u=e.state.env.get(o)??"";e.state.env.set(o,u+f)}else e.state.env.set(o,f);else e.state.env.has(o)||e.state.env.set(o,"");ce(e,o)}return _("",r,i)}function Nt(e,t){if(t.length<2)return S(`bash: getopts: usage: getopts optstring name [arg ...]
135
- `);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),i=s.startsWith(":"),a=i?s.slice(1):s,o;if(t.length>2)o=t.slice(2);else{let p=Number.parseInt(e.state.env.get("#")||"0",10);o=[];for(let g=1;g<=p;g++)o.push(e.state.env.get(String(g))||"")}let f=Number.parseInt(e.state.env.get("OPTIND")||"1",10);f<1&&(f=1);let l=Number.parseInt(e.state.env.get("__GETOPTS_CHARINDEX")||"0",10);if(e.state.env.set("OPTARG",""),f>o.length)return r||e.state.env.set(n,"?"),e.state.env.set("OPTIND",String(o.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:1,stdout:"",stderr:""};let c=o[f-1];if(!c||c==="-"||!c.startsWith("-"))return r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};if(c==="--")return e.state.env.set("OPTIND",String(f+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};let u=l===0?1:l,d=c[u];if(!d)return e.state.env.set("OPTIND",String(f+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),Nt(e,t);let h=a.indexOf(d);if(h===-1){let p="";return i?e.state.env.set("OPTARG",d):p=`bash: illegal option -- ${d}
136
- `,r||e.state.env.set(n,"?"),u+1<c.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(u+1)),e.state.env.set("OPTIND",String(f))):(e.state.env.set("OPTIND",String(f+1)),e.state.env.set("__GETOPTS_CHARINDEX","0")),{exitCode:r?2:0,stdout:"",stderr:p}}if(h+1<a.length&&a[h+1]===":")if(u+1<c.length)e.state.env.set("OPTARG",c.slice(u+1)),e.state.env.set("OPTIND",String(f+1)),e.state.env.set("__GETOPTS_CHARINDEX","0");else{if(f>=o.length){let p="";return i?(e.state.env.set("OPTARG",d),r||e.state.env.set(n,":")):(p=`bash: option requires an argument -- ${d}
137
- `,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(f+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:0,stdout:"",stderr:p}}e.state.env.set("OPTARG",o[f]),e.state.env.set("OPTIND",String(f+2)),e.state.env.set("__GETOPTS_CHARINDEX","0")}else u+1<c.length?(e.state.env.set("__GETOPTS_CHARINDEX",String(u+1)),e.state.env.set("OPTIND",String(f))):(e.state.env.set("OPTIND",String(f+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"));return r||e.state.env.set(n,d),{exitCode:r?2:0,stdout:"",stderr:""}}async function $s(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,n=!1,r=!1,i=!1,a=!1,o="",f=[],l=0;for(;l<t.length;){let m=t[l];if(m==="--"){l++,f.push(...t.slice(l));break}if(m==="-r")s=!0,l++;else if(m==="-d")n=!0,l++;else if(m==="-l")r=!0,l++;else if(m==="-t")a=!0,l++;else if(m==="-p"){if(i=!0,l++,l>=t.length)return S(`bash: hash: -p: option requires an argument
138
- `,1);o=t[l],l++}else if(m.startsWith("-")&&m.length>1){for(let p of m.slice(1))if(p==="r")s=!0;else if(p==="d")n=!0;else if(p==="l")r=!0;else if(p==="t")a=!0;else return p==="p"?S(`bash: hash: -p: option requires an argument
130
+ `,2)}if(n.length===0)return L;let r=n.join(" ");if(r.trim()==="")return L;let i=e.state.groupStdin,o=s??e.state.groupStdin;o!==void 0&&(e.state.groupStdin=o);try{let a=ye(r);return await e.executeScript(a)}catch(a){if(a instanceof ae||a instanceof le||a instanceof se||a instanceof V)throw a;if(a.name==="ParseException")return S(`bash: eval: ${a.message}
131
+ `);throw a}finally{e.state.groupStdin=i}}function Cs(e,t){let s,n="";if(t.length===0)s=e.state.lastExitCode;else{let r=t[0],i=Number.parseInt(r,10);r===""||Number.isNaN(i)||!/^-?\d+$/.test(r)?(n=`bash: exit: ${r}: numeric argument required
132
+ `,s=2):s=(i%256+256)%256}throw new V(s,"",n)}function Ps(e,t){let s=!1,n=[];for(let o of t)o==="-n"?s=!0:o==="-p"||o==="--"||n.push(o);if(n.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}"
133
+ `}}return F(o)}if(s){for(let o of n){let a,l;if(o.includes("=")){let c=o.indexOf("=");a=o.slice(0,c),l=j(e,o.slice(c+1)),e.state.env.set(a,l)}else a=o;ut(e,a)}return L}let r="",i=0;for(let o of n){let a,l,c=!1,u=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(u)a=u[1],l=j(e,u[2]),c=!0;else if(o.includes("=")){let f=o.indexOf("=");a=o.slice(0,f),l=j(e,o.slice(f+1))}else a=o;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(a)){r+=`bash: export: \`${o}': not a valid identifier
134
+ `,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,"");me(e,a)}return _("",r,i)}function Dt(e,t){if(t.length<2)return S(`bash: getopts: usage: getopts optstring name [arg ...]
135
+ `);let s=t[0],n=t[1],r=!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(n),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 r||e.state.env.set(n,"?"),e.state.env.set("OPTIND",String(a.length+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?2:1,stdout:"",stderr:""};let u=a[l-1];if(!u||u==="-"||!u.startsWith("-"))return r||e.state.env.set(n,"?"),{exitCode:r?2:1,stdout:"",stderr:""};if(u==="--")return e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),r||e.state.env.set(n,"?"),{exitCode:r?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"),Dt(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}
136
+ `,r||e.state.env.set(n,"?"),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:r?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),r||e.state.env.set(n,":")):(p=`bash: option requires an argument -- ${d}
137
+ `,r||e.state.env.set(n,"?")),e.state.env.set("OPTIND",String(l+1)),e.state.env.set("__GETOPTS_CHARINDEX","0"),{exitCode:r?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 r||e.state.env.set(n,d),{exitCode:r?2:0,stdout:"",stderr:""}}async function ks(e,t){e.state.hashTable||(e.state.hashTable=new Map);let s=!1,n=!1,r=!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")n=!0,c++;else if(m==="-l")r=!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
138
+ `,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")n=!0;else if(p==="l")r=!0;else if(p==="t")o=!0;else return p==="p"?S(`bash: hash: -p: option requires an argument
139
139
  `,1):S(`bash: hash: -${p}: invalid option
140
- `,1);l++}else f.push(m),l++}if(s)return e.state.hashTable.clear(),L;if(n){if(f.length===0)return S(`bash: hash: -d: option requires an argument
141
- `,1);let m=!1,p="";for(let g of f)e.state.hashTable.has(g)?e.state.hashTable.delete(g):(p+=`bash: hash: ${g}: not found
142
- `,m=!0);return m?S(p,1):L}if(a){if(f.length===0)return S(`bash: hash: -t: option requires an argument
143
- `,1);let m="",p=!1,g="";for(let v of f){let $=e.state.hashTable.get(v);$?f.length>1?m+=`${v} ${$}
144
- `:m+=`${$}
145
- `:(g+=`bash: hash: ${v}: not found
146
- `,p=!0)}return p?{exitCode:1,stdout:m,stderr:g}:W(m)}if(i){if(f.length===0)return S(`bash: hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
147
- `,1);let m=f[0];return e.state.hashTable.set(m,o),L}if(f.length===0){if(e.state.hashTable.size===0)return W(`hash: hash table empty
140
+ `,1);c++}else l.push(m),c++}if(s)return e.state.hashTable.clear(),L;if(n){if(l.length===0)return S(`bash: hash: -d: option requires an argument
141
+ `,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
142
+ `,m=!0);return m?S(p,1):L}if(o){if(l.length===0)return S(`bash: hash: -t: option requires an argument
143
+ `,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}
144
+ `:m+=`${E}
145
+ `:(g+=`bash: hash: ${b}: not found
146
+ `,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 ...]
147
+ `,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
148
148
  `);let m="";if(r)for(let[p,g]of e.state.hashTable)m+=`builtin hash -p ${g} ${p}
149
149
  `;else{m=`hits command
150
150
  `;for(let[,p]of e.state.hashTable)m+=` 1 ${p}
151
- `}return W(m)}let c=!1,u="",h=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let m of f){if(m.includes("/")){u+=`bash: hash: ${m}: cannot use / in name
152
- `,c=!0;continue}let p=!1;for(let g of h){if(!g)continue;let v=`${g}/${m}`;if(await e.fs.exists(v)){e.state.hashTable.set(m,v),p=!0;break}}p||(u+=`bash: hash: ${m}: not found
153
- `,c=!0)}return c?S(u,1):L}var jn=new Map([[":",[": [arguments]",`Null command.
151
+ `}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
152
+ `,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
153
+ `,u=!0)}return u?S(f,1):L}var Yn=new Map([[":",[": [arguments]",`Null command.
154
154
  No effect; the command does nothing.
155
155
  Exit Status:
156
156
  Always succeeds.`]],[".",[". filename [arguments]",`Execute commands from a file in the current shell.
@@ -495,29 +495,32 @@ eval: usage: eval [arg ...]
495
495
  job specification, and reports its termination status.
496
496
  Exit Status:
497
497
  Returns the status of the last ID; fails if ID is invalid or an invalid
498
- option is given.`]]]),Hn=[...jn.keys()].sort();function Ss(e,t){let s=!1,n=[],r=0;for(;r<t.length;){let f=t[r];if(f==="--"){for(r++;r<t.length;)n.push(t[r]),r++;break}if(f.startsWith("-")&&f.length>1){for(let l=1;l<f.length;l++){let c=f[l];if(c==="s")s=!0;else return S(`bash: help: -${c}: invalid option
499
- `,2)}r++}else n.push(f),r++}if(n.length===0)return ki();let i="",a=!1,o="";for(let f of n){let l=Ni(f);if(l.length===0){o+=`bash: help: no help topics match \`${f}'. Try \`help help' or \`man -k ${f}' or \`info ${f}'.
500
- `,a=!0;continue}for(let c of l){let u=jn.get(c);if(!u)continue;let[d,h]=u;s?i+=`${c}: ${d}
501
- `:i+=`${c}: ${d}
498
+ option is given.`]]]),Qn=[...Yn.keys()].sort();function Ns(e,t){let s=!1,n=[],r=0;for(;r<t.length;){let l=t[r];if(l==="--"){for(r++;r<t.length;)n.push(t[r]),r++;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
499
+ `,2)}r++}else n.push(l),r++}if(n.length===0)return Mi();let i="",o=!1,a="";for(let l of n){let c=Wi(l);if(c.length===0){a+=`bash: help: no help topics match \`${l}'. Try \`help help' or \`man -k ${l}' or \`info ${l}'.
500
+ `,o=!0;continue}for(let u of c){let f=Yn.get(u);if(!f)continue;let[d,h]=f;s?i+=`${u}: ${d}
501
+ `:i+=`${u}: ${d}
502
502
  ${h}
503
- `}}return{exitCode:a?1:0,stdout:i,stderr:o}}function Ni(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=Be(`^${t}$`);return Hn.filter(n=>s.test(n))}function ki(){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=Hn.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",a=s[r+n]||"",o=i.padEnd(t);e.push(a?`${o}${a}`:i)}return W(`${e.join(`
503
+ `}}return{exitCode:o?1:0,stdout:i,stderr:a}}function Wi(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=qe(`^${t}$`);return Qn.filter(n=>s.test(n))}function Mi(){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=Qn.slice(),n=Math.ceil(s.length/2);for(let r=0;r<n;r++){let i=s[r]||"",o=s[r+n]||"",a=i.padEnd(t);e.push(o?`${a}${o}`:i)}return F(`${e.join(`
504
504
  `)}
505
- `)}function Oi(e){let t=[],s="",n=0;for(let r of e){for(let i of r)i==="("?n++:i===")"&&n--;s?s+=` ${r}`:s=r,n===0&&(t.push(s),s="")}return s&&t.push(s),t}async function As(e,t){if(t.length===0)return S(`bash: let: expression expected
506
- `);let s=Oi(t),n=0;for(let r of s)try{let a=ue(`(( ${r} ))`).statements[0];if(a&&a.pipelines.length>0&&a.pipelines[0].commands.length>0){let o=a.pipelines[0].commands[0];o.type==="ArithmeticCommand"&&(n=await V(e,o.expression.expression))}}catch(i){return S(`bash: let: ${r}: ${i.message}
507
- `)}return _("","",n===0?1:0)}async function _s(e,t){if(e.state.localScopes.length===0)return S(`bash: local: can only be used in a function
508
- `);let s=e.state.localScopes[e.state.localScopes.length-1],n="",r=0,i=!1,a=!1,o=!1,f=[];for(let l of t)if(l==="-n")i=!0;else if(l==="-a")a=!0;else if(l==="-p")o=!0;else if(l.startsWith("-")&&!l.includes("="))for(let c of l.slice(1))c==="n"?i=!0:c==="a"?a=!0:c==="p"&&(o=!0);else f.push(l);if(f.length===0){let l="",c=Array.from(s.keys()).filter(u=>!u.includes("_")||!u.match(/_\d+$/)).filter(u=>!u.includes("__length")).sort();for(let u of c){let d=e.state.env.get(u);d!==void 0&&(l+=`${u}=${d}
509
- `)}return _(l,"",0)}for(let l of f){let c,u,d=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(d){c=d[1];let v=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c)){n+=`bash: local: \`${l}': not a valid identifier
510
- `,r=1;continue}if(K(e,c,"bash"),!s.has(c)){s.set(c,e.state.env.get(c));let y=`${c}_`;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 $=`${c}_`;for(let y of e.state.env.keys())y.startsWith($)&&!y.includes("__")&&e.state.env.delete(y);let N=pe(v);for(let y=0;y<N.length;y++)e.state.env.set(`${c}_${y}`,N[y]);e.state.env.set(`${c}__length`,String(N.length)),Ce(e,c),i&&ge(e,c);continue}let h=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=\((.*)\)$/s);if(h){c=h[1];let v=h[2];if(K(e,c,"bash"),!s.has(c)){s.set(c,e.state.env.get(c));let C=`${c}_`;for(let D of e.state.env.keys())D.startsWith(C)&&!D.includes("__")&&(s.has(D)||s.set(D,e.state.env.get(D)));let O=`${c}__length`;e.state.env.has(O)&&!s.has(O)&&s.set(O,e.state.env.get(O))}let $=pe(v),N=Y(e,c),y=0,w=e.state.env.get(c);N.length===0&&w!==void 0?(e.state.env.set(`${c}_0`,w),e.state.env.delete(c),y=1):N.length>0&&(y=Math.max(...N)+1);for(let C=0;C<$.length;C++)e.state.env.set(`${c}_${y+C}`,j(e,$[C]));let b=y+$.length;e.state.env.set(`${c}__length`,String(b)),Ce(e,c),i&&ge(e,c);continue}let m=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){c=m[1];let v=j(e,m[2]);K(e,c,"bash"),s.has(c)||s.set(c,e.state.env.get(c));let $=e.state.env.get(c)??"";e.state.env.set(c,$+v),Ce(e,c),i&&ge(e,c);continue}let p=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){c=p[1];let v=p[2],$=j(e,p[3]);if(K(e,c,"bash"),!s.has(c)){s.set(c,e.state.env.get(c));let w=`${c}_`;for(let C of e.state.env.keys())C.startsWith(w)&&!C.includes("__")&&(s.has(C)||s.set(C,e.state.env.get(C)));let b=`${c}__length`;e.state.env.has(b)&&!s.has(b)&&s.set(b,e.state.env.get(b))}let N;try{let w=new M,b=q(w,v);N=await V(e,b.expression)}catch{let w=parseInt(v,10);N=Number.isNaN(w)?0:w}e.state.env.set(`${c}_${N}`,$);let y=parseInt(e.state.env.get(`${c}__length`)??"0",10);N>=y&&e.state.env.set(`${c}__length`,String(N+1)),Ce(e,c),i&&ge(e,c);continue}if(l.includes("=")){let v=l.indexOf("=");c=l.slice(0,v),u=j(e,l.slice(v+1))}else c=l;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(c)){n+=`bash: local: \`${l}': not a valid identifier
511
- `,r=1;continue}let g=s.has(c);if(u!==void 0){let v=e.state.env.get(c);if(e.state.tempEnvBindings){let $=e.state.accessedTempEnvVars?.has(c),N=e.state.mutatedTempEnvVars?.has(c);if(!$&&!N)for(let y=e.state.tempEnvBindings.length-1;y>=0;y--){let w=e.state.tempEnvBindings[y];if(w.has(c)){v=w.get(c);break}}}Nn(e,c,v)}if(!g){let v=e.state.env.get(c);if(e.state.tempEnvBindings)for(let $=e.state.tempEnvBindings.length-1;$>=0;$--){let N=e.state.tempEnvBindings[$];if(N.has(c)){v=N.get(c);break}}if(s.set(c,v),a){let $=`${c}_`;for(let y of e.state.env.keys())y.startsWith($)&&!y.includes("__")&&(s.has(y)||s.set(y,e.state.env.get(y)));let N=`${c}__length`;e.state.env.has(N)&&!s.has(N)&&s.set(N,e.state.env.get(N))}}if(a&&u===void 0){let v=`${c}_`;for(let $ of e.state.env.keys())$.startsWith(v)&&!$.includes("__")&&e.state.env.delete($);e.state.env.set(`${c}__length`,"0")}else if(u!==void 0){if(K(e,c,"bash"),i&&u!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(u)){n+=`bash: local: \`${u}': invalid variable name for name reference
512
- `,r=1;continue}e.state.env.set(c,u),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(c))}else{let v=e.state.tempEnvBindings?.some($=>$.has(c));!g&&!v&&e.state.env.delete(c)}Ce(e,c),i&&ge(e,c)}return _("",n,r)}function Cs(e,t,s){let n=`
513
- `,r=0,i=0,a=0,o=!1,f="MAPFILE",l=0;for(;l<t.length;){let v=t[l];v==="-d"&&l+1<t.length?(n=t[l+1]===""?"\0":t[l+1]||`
514
- `,l+=2):v==="-n"&&l+1<t.length?(r=Number.parseInt(t[l+1],10)||0,l+=2):v==="-O"&&l+1<t.length?(i=Number.parseInt(t[l+1],10)||0,l+=2):v==="-s"&&l+1<t.length?(a=Number.parseInt(t[l+1],10)||0,l+=2):v==="-t"?(o=!0,l++):v==="-u"||v==="-C"||v==="-c"?l+=2:(v.startsWith("-")||(f=v),l++)}let c=s;!c&&e.state.groupStdin!==void 0&&(c=e.state.groupStdin);let u=[],d=c,h=0,m=0;for(;d.length>0;){let v=d.indexOf(n);if(v===-1){if(d.length>0){if(m<a)m++;else if(r===0||h<r){let y=d,w=y.indexOf("\0");w!==-1&&(y=y.substring(0,w)),u.push(y),h++}}break}let $=d.substring(0,v),N=$.indexOf("\0");if(N!==-1&&($=$.substring(0,N)),!o&&n!=="\0"&&($+=n),d=d.substring(v+n.length),m<a){m++;continue}if(r>0&&h>=r)break;u.push($),h++}i===0&&de(e,f);for(let v=0;v<u.length;v++)e.state.env.set(`${f}_${i+v}`,u[v]);let p=parseInt(e.state.env.get(`${f}__length`)||"0",10),g=i+u.length;return e.state.env.set(`${f}__length`,String(Math.max(p,g))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),_("","",0)}function Di(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),f=o.indexOf(":");if(f===-1)return null;let l=Number.parseInt(o.slice(0,f),10);if(Number.isNaN(l)||l<0)return null;let c=o.slice(f+1);return{path:i,position:l,content:c}}function Ti(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Ps(e,t,s,n=-1){let r=!1,i=`
515
- `,a="",o=-1,f=-1,l=null,c=-1,u=-1,d=[],h=0,m=!1,p=(A,P)=>{let T=1;for(;T<A.length;){let E=A[T];if(E==="r")r=!0,T++;else if(E==="s")T++;else{if(E==="d")return T+1<A.length?(i=A.substring(T+1),{nextArgIndex:P+1}):P+1<t.length?(i=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(E==="n"){if(T+1<A.length){let k=A.substring(T+1);return o=Number.parseInt(k,10),(Number.isNaN(o)||o<0)&&(m=!0,o=0),{nextArgIndex:P+1}}else if(P+1<t.length)return o=Number.parseInt(t[P+1],10),(Number.isNaN(o)||o<0)&&(m=!0,o=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else if(E==="N"){if(T+1<A.length){let k=A.substring(T+1);return f=Number.parseInt(k,10),(Number.isNaN(f)||f<0)&&(m=!0,f=0),{nextArgIndex:P+1}}else if(P+1<t.length)return f=Number.parseInt(t[P+1],10),(Number.isNaN(f)||f<0)&&(m=!0,f=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else{if(E==="a")return T+1<A.length?(l=A.substring(T+1),{nextArgIndex:P+1}):P+1<t.length?(l=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(E==="p")return T+1<A.length?(a=A.substring(T+1),{nextArgIndex:P+1}):P+1<t.length?(a=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(E==="u"){if(T+1<A.length){let k=A.substring(T+1);return c=Number.parseInt(k,10),Number.isNaN(c)||c<0?{nextArgIndex:-2}:{nextArgIndex:P+1}}else if(P+1<t.length)return c=Number.parseInt(t[P+1],10),Number.isNaN(c)||c<0?{nextArgIndex:-2}:{nextArgIndex:P+2};return{nextArgIndex:P+1}}else if(E==="t"){if(T+1<A.length){let k=A.substring(T+1);return u=Number.parseFloat(k),Number.isNaN(u)&&(u=0),{nextArgIndex:P+1}}else if(P+1<t.length)return u=Number.parseFloat(t[P+1]),Number.isNaN(u)&&(u=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else if(E==="e"||E==="i"||E==="P"){if(E==="i"&&P+1<t.length)return{nextArgIndex:P+2};T++}else T++}}}return{nextArgIndex:P+1}};for(;h<t.length;){let A=t[h];if(A.startsWith("-")&&A.length>1&&A!=="--"){let P=p(A,h);if(P.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(P.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=P.nextArgIndex}else if(A==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(A),h++}if(m)return _("","",1);if(d.length===0&&l===null&&d.push("REPLY"),u===0){if(l)de(e,l);else{for(let A of d)e.state.env.set(A,"");d.length===0&&e.state.env.set("REPLY","")}return _("","",0)}if(u<0&&u!==-1)return _("","",1);let g=s;c>=0?e.state.fileDescriptors?g=e.state.fileDescriptors.get(c)||"":g="":!g&&e.state.groupStdin!==void 0&&(g=e.state.groupStdin);let v=i===""?"\0":i,$="",N=0,y=!0,w=A=>{if(c>=0&&e.state.fileDescriptors)e.state.fileDescriptors.set(c,g.substring(A));else if(n>=0&&e.state.fileDescriptors){let P=e.state.fileDescriptors.get(n);if(P?.startsWith("__rw__:")){let T=Di(P);if(T){let E=T.position+A;e.state.fileDescriptors.set(n,Ti(T.path,E,T.content))}}}else e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=g.substring(A))};if(f>=0){let A=Math.min(f,g.length);$=g.substring(0,A),N=A,y=A>=f,w(N);let P=d[0]||"REPLY";e.state.env.set(P,$);for(let T=1;T<d.length;T++)e.state.env.set(d[T],"");return _("","",y?0:1)}else if(o>=0){let A=0,P=0,T=!1;for(;P<g.length&&A<o;){let E=g[P];if(E===v){N=P+1,T=!0;break}if(!r&&E==="\\"&&P+1<g.length){let k=g[P+1];if(k===v&&v===`
516
- `){P+=2,N=P;continue}if(k===v){P+=2,A++,$+=k,N=P;continue}$+=k,P+=2,A++,N=P}else $+=E,P++,A++,N=P}y=A>=o||T,w(N)}else{N=0;let A=0;for(;A<g.length;){let P=g[A];if(P===v){N=A+v.length,y=!0;break}if(!r&&P==="\\"&&A+1<g.length){let T=g[A+1];if(T===`
517
- `){A+=2;continue}if(T===v){$+=T,A+=2;continue}$+=P,$+=T,A+=2;continue}$+=P,A++}if(A>=g.length&&(y=!1,N=A,$.length===0&&g.length===0)){for(let P of d)e.state.env.set(P,"");return l&&de(e,l),_("","",1)}w(N)}v===`
518
- `&&$.endsWith(`
519
- `)&&($=$.slice(0,-1));let b=A=>r?A:A.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",b($)),_("","",y?0:1);let C=Us(e.state.env);if(l){let{words:A}=Lt($,C,void 0,r);de(e,l);for(let P=0;P<A.length;P++)e.state.env.set(`${l}_${P}`,b(A[P]));return _("","",y?0:1)}let O=d.length,{words:D,wordStarts:x}=Lt($,C,O,r);for(let A=0;A<d.length;A++){let P=d[A];if(A<d.length-1)e.state.env.set(P,b(D[A]??""));else if(A<x.length){let T=$.substring(x[A]);T=qs(T,C,r),T=b(T),e.state.env.set(P,T)}else e.state.env.set(P,"")}return _("","",y?0:1)}function Ns(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 n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return S(`bash: return: ${n}: numeric argument required
520
- `,2);s=(r%256+256)%256}throw new ee(s)}var kt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
505
+ `)}function Vi(e){let t=[],s="",n=0;for(let r of e){for(let i of r)i==="("?n++:i===")"&&n--;s?s+=` ${r}`:s=r,n===0&&(t.push(s),s="")}return s&&t.push(s),t}async function Os(e,t){if(t.length===0)return S(`bash: let: expression expected
506
+ `);let s=Vi(t),n=0;for(let r of s)try{let o=ye(`(( ${r} ))`).statements[0];if(o&&o.pipelines.length>0&&o.pipelines[0].commands.length>0){let a=o.pipelines[0].commands[0];a.type==="ArithmeticCommand"&&(n=await z(e,a.expression.expression))}}catch(i){return S(`bash: let: ${r}: ${i.message}
507
+ `)}return _("","",n===0?1:0)}async function xs(e,t){if(e.state.localScopes.length===0)return S(`bash: local: can only be used in a function
508
+ `);let s=e.state.localScopes[e.state.localScopes.length-1],n="",r=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}
509
+ `)}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 b=d[2];if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
510
+ `,r=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=ve(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)),Oe(e,u),i&&$e(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 C=`${u}_`;for(let D of e.state.env.keys())D.startsWith(C)&&!D.includes("__")&&(s.has(D)||s.set(D,e.state.env.get(D)));let x=`${u}__length`;e.state.env.has(x)&&!s.has(x)&&s.set(x,e.state.env.get(x))}let E=ve(b),k=Y(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 C=0;C<E.length;C++)e.state.env.set(`${u}_${y+C}`,j(e,E[C]));let v=y+E.length;e.state.env.set(`${u}__length`,String(v)),Oe(e,u),i&&$e(e,u);continue}let m=c.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){u=m[1];let b=j(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),Oe(e,u),i&&$e(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=j(e,p[3]);if(K(e,u,"bash"),!s.has(u)){s.set(u,e.state.env.get(u));let w=`${u}_`;for(let C of e.state.env.keys())C.startsWith(w)&&!C.includes("__")&&(s.has(C)||s.set(C,e.state.env.get(C)));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 M,v=q(w,b);k=await z(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)),Oe(e,u),i&&$e(e,u);continue}if(c.includes("=")){let b=c.indexOf("=");u=c.slice(0,b),f=j(e,c.slice(b+1))}else u=c;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(u)){n+=`bash: local: \`${c}': not a valid identifier
511
+ `,r=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}}}Ln(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)){n+=`bash: local: \`${f}': invalid variable name for name reference
512
+ `,r=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)}Oe(e,u),i&&$e(e,u)}return _("",n,r)}function Ds(e,t,s){let n=`
513
+ `,r=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?(n=t[c+1]===""?"\0":t[c+1]||`
514
+ `,c+=2):E==="-n"&&c+1<t.length?(r=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(n);if(E===-1){if(d.length>0){if(m<o)m++;else if(r===0||h<r){if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
515
+ `,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&&n!=="\0"&&(k+=n),d=d.substring(E+n.length),m<o){m++;continue}if(r>0&&h>=r)break;if(i+h>=p)return _("",`mapfile: array element limit exceeded (${p})
516
+ `,1);f.push(k),h++}i===0&&ge(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=""),_("","",0)}function zi(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 Bi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Ts(e,t,s,n=-1){let r=!1,i=`
517
+ `,o="",a=-1,l=-1,c=null,u=-1,f=-1,d=[],h=0,m=!1,p=(A,P)=>{let N=1;for(;N<A.length;){let $=A[N];if($==="r")r=!0,N++;else if($==="s")N++;else{if($==="d")return N+1<A.length?(i=A.substring(N+1),{nextArgIndex:P+1}):P+1<t.length?(i=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+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:P+1}}else if(P+1<t.length)return a=Number.parseInt(t[P+1],10),(Number.isNaN(a)||a<0)&&(m=!0,a=0),{nextArgIndex:P+2};return{nextArgIndex:P+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:P+1}}else if(P+1<t.length)return l=Number.parseInt(t[P+1],10),(Number.isNaN(l)||l<0)&&(m=!0,l=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else{if($==="a")return N+1<A.length?(c=A.substring(N+1),{nextArgIndex:P+1}):P+1<t.length?(c=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if($==="p")return N+1<A.length?(o=A.substring(N+1),{nextArgIndex:P+1}):P+1<t.length?(o=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+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:P+1}}else if(P+1<t.length)return u=Number.parseInt(t[P+1],10),Number.isNaN(u)||u<0?{nextArgIndex:-2}:{nextArgIndex:P+2};return{nextArgIndex:P+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:P+1}}else if(P+1<t.length)return f=Number.parseFloat(t[P+1]),Number.isNaN(f)&&(f=0),{nextArgIndex:P+2};return{nextArgIndex:P+1}}else if($==="e"||$==="i"||$==="P"){if($==="i"&&P+1<t.length)return{nextArgIndex:P+2};N++}else N++}}}return{nextArgIndex:P+1}};for(;h<t.length;){let A=t[h];if(A.startsWith("-")&&A.length>1&&A!=="--"){let P=p(A,h);if(P.nextArgIndex===-1)return{stdout:"",stderr:"",exitCode:2};if(P.nextArgIndex===-2)return{stdout:"",stderr:"",exitCode:1};h=P.nextArgIndex}else if(A==="--")for(h++;h<t.length;)d.push(t[h]),h++;else d.push(A),h++}if(m)return _("","",1);if(d.length===0&&c===null&&d.push("REPLY"),f===0){if(c)ge(e,c);else{for(let A of d)e.state.env.set(A,"");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 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(n>=0&&e.state.fileDescriptors){let P=e.state.fileDescriptors.get(n);if(P?.startsWith("__rw__:")){let N=zi(P);if(N){let $=N.position+A;e.state.fileDescriptors.set(n,Bi(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 P=d[0]||"REPLY";e.state.env.set(P,E);for(let N=1;N<d.length;N++)e.state.env.set(d[N],"");return _("","",y?0:1)}else if(a>=0){let A=0,P=0,N=!1;for(;P<g.length&&A<a;){let $=g[P];if($===b){k=P+1,N=!0;break}if(!r&&$==="\\"&&P+1<g.length){let O=g[P+1];if(O===b&&b===`
518
+ `){P+=2,k=P;continue}if(O===b){P+=2,A++,E+=O,k=P;continue}E+=O,P+=2,A++,k=P}else E+=$,P++,A++,k=P}y=A>=a||N,w(k)}else{k=0;let A=0;for(;A<g.length;){let P=g[A];if(P===b){k=A+b.length,y=!0;break}if(!r&&P==="\\"&&A+1<g.length){let N=g[A+1];if(N===`
519
+ `){A+=2;continue}if(N===b){E+=N,A+=2;continue}E+=P,E+=N,A+=2;continue}E+=P,A++}if(A>=g.length&&(y=!1,k=A,E.length===0&&g.length===0)){for(let P of d)e.state.env.set(P,"");return c&&ge(e,c),_("","",1)}w(k)}b===`
520
+ `&&E.endsWith(`
521
+ `)&&(E=E.slice(0,-1));let v=A=>r?A:A.replace(/\\(.)/g,"$1");if(d.length===1&&d[0]==="REPLY")return e.state.env.set("REPLY",v(E)),_("","",y?0:1);let C=Js(e.state.env);if(c){let{words:A}=Bt(E,C,void 0,r),P=e.limits?.maxArrayElements??1e5;if(A.length>P)return _("",`read: array element limit exceeded (${P})
522
+ `,1);ge(e,c);for(let N=0;N<A.length;N++)e.state.env.set(`${c}_${N}`,v(A[N]));return _("","",y?0:1)}let x=d.length,{words:D,wordStarts:I}=Bt(E,C,x,r);for(let A=0;A<d.length;A++){let P=d[A];if(A<d.length-1)e.state.env.set(P,v(D[A]??""));else if(A<I.length){let N=E.substring(I[A]);N=en(N,C,r),N=v(N),e.state.env.set(P,N)}else e.state.env.set(P,"")}return _("","",y?0:1)}function Is(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 n=t[0],r=Number.parseInt(n,10);if(n===""||Number.isNaN(r)||!/^-?\d+$/.test(n))return S(`bash: return: ${n}: numeric argument required
523
+ `,2);s=(r%256+256)%256}throw new se(s)}var Tt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
521
524
  Options:
522
525
  -e Exit immediately if a command exits with non-zero status
523
526
  +e Disable -e
@@ -533,148 +536,151 @@ Options:
533
536
  +o pipefail Disable pipefail
534
537
  -o xtrace Same as -x
535
538
  +o xtrace Disable xtrace
536
- `,Un=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]]),qn=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]]),Zn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Gn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Kn(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,xe(e))}function Ii(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function xi(e,t){let s=Y(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${Oe(i)}`});return`${t}=(${n.join(" ")})`}function Ri(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Li(e,t){let s=$e(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Ri(r)}]=${Oe(i)}`});return`${t}=(${n.join(" ")} )`}function Wi(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let n of e.state.env.keys()){let r=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(r){let i=r[1];s.has(i)||t.add(i)}}return t}function Fi(e){return e.state.associativeArrays??new Set}function Os(e,t){if(t.includes("--help"))return W(kt);if(t.length===0){let n=Wi(e),r=Fi(e),i=f=>{for(let l of r){let c=`${l}_`,u=`${l}__length`;if(f!==u&&f.startsWith(c)){if(f.slice(c.length).startsWith("_length"))continue;return!0}}return!1},a=[];for(let[f,l]of e.state.env){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(f)||n.has(f)||r.has(f))continue;let c=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(c&&n.has(c[1]))continue;let u=f.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);u&&n.has(u[1])||i(f)||u&&r.has(u[1])||a.push([f,l])}let o=[];for(let[f,l]of a.sort(([c],[u])=>c<u?-1:c>u?1:0))o.push(`${f}=${Ct(l)}`);for(let f of[...n].sort((l,c)=>l<c?-1:l>c?1:0))o.push(xi(e,f));for(let f of[...r].sort((l,c)=>l<c?-1:l>c?1:0))o.push(Li(e,f));return o.sort((f,l)=>{let c=f.split("=")[0],u=l.split("=")[0];return c<u?-1:c>u?1:0}),W(o.length>0?`${o.join(`
539
+ `,Jn=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]]),er=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]]),tr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],sr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function nr(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,We(e))}function ji(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Hi(e,t){let s=Y(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${Ie(i)}`});return`${t}=(${n.join(" ")})`}function Ui(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function qi(e,t){let s=Ce(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Ui(r)}]=${Ie(i)}`});return`${t}=(${n.join(" ")} )`}function Zi(e){let t=new Set,s=e.state.associativeArrays??new Set;for(let n of e.state.env.keys()){let r=n.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(r){let i=r[1];s.has(i)||t.add(i)}}return t}function Gi(e){return e.state.associativeArrays??new Set}function Ls(e,t){if(t.includes("--help"))return F(Tt);if(t.length===0){let n=Zi(e),r=Gi(e),i=l=>{for(let c of r){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)||n.has(l)||r.has(l))continue;let u=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)_(\d+)$/);if(u&&n.has(u[1]))continue;let f=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)__length$/);f&&n.has(f[1])||i(l)||f&&r.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}=${Ot(c)}`);for(let l of[...n].sort((c,u)=>c<u?-1:c>u?1:0))a.push(Hi(e,l));for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(qi(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(`
537
540
  `)}
538
- `:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&Ii(t,s)){let r=t[s+1];if(!qn.has(r)){let i=`bash: set: ${r}: invalid option name
539
- ${kt}`;if(e.state.options.posix)throw new oe(1,"",i);return S(i)}Kn(e,qn.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=Zn.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=Gn.map(o=>`${o.padEnd(16)}off`),a=[...r,...i].sort();return W(`${a.join(`
541
+ `:"")}let s=0;for(;s<t.length;){let n=t[s];if((n==="-o"||n==="+o")&&ji(t,s)){let r=t[s+1];if(!er.has(r)){let i=`bash: set: ${r}: invalid option name
542
+ ${Tt}`;if(e.state.options.posix)throw new de(1,"",i);return S(i)}nr(e,er.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=tr.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=sr.map(a=>`${a.padEnd(16)}off`),o=[...r,...i].sort();return F(`${o.join(`
540
543
  `)}
541
- `)}if(n==="+o"){let r=Zn.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=Gn.map(o=>`set +o ${o}`),a=[...r,...i].sort();return W(`${a.join(`
544
+ `)}if(n==="+o"){let r=tr.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=sr.map(a=>`set +o ${a}`),o=[...r,...i].sort();return F(`${o.join(`
542
545
  `)}
543
- `)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let a=n[i];if(!Un.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
544
- ${kt}`;if(e.state.options.posix)throw new oe(1,"",o);return S(o)}Kn(e,Un.get(a)??null,r)}s++;continue}if(n==="--")return ks(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,xe(e),s+1<t.length)return ks(e,t.slice(s+1)),L;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
545
- ${kt}`;if(e.state.options.posix)throw new oe(1,"",r);return S(r)}return ks(e,t.slice(s)),L}return L}function ks(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let n=0;n<t.length;n++)e.state.env.set(String(n+1),t[n]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Ds(e,t){let s=1;if(t.length>0){let a=Number.parseInt(t[0],10);if(Number.isNaN(a)||a<0){let o=`bash: shift: ${t[0]}: numeric argument required
546
- `;if(e.state.options.posix)throw new oe(1,"",o);return S(o)}s=a}let n=Number.parseInt(e.state.env.get("#")||"0",10);if(s>n){let a=`bash: shift: shift count out of range
547
- `;if(e.state.options.posix)throw new oe(1,"",a);return S(a)}if(s===0)return L;let r=[];for(let a=1;a<=n;a++)r.push(e.state.env.get(String(a))||"");let i=r.slice(s);for(let a=1;a<=n;a++)e.state.env.delete(String(a));for(let a=0;a<i.length;a++)e.state.env.set(String(a+1),i[a]);return e.state.env.set("#",String(i.length)),e.state.env.set("@",i.join(" ")),L}async function Ts(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return _("",`bash: source: filename argument required
548
- `,2);let n=s[0],r=null,i=null;if(n.includes("/")){let l=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(l),r=l}catch{}}else{let c=(e.state.env.get("PATH")||"").split(":").filter(u=>u);for(let u of c){let d=e.fs.resolvePath(e.state.cwd,`${u}/${n}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),r=d;break}catch{}}if(i===null){let u=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(u),r=u}catch{}}}if(i===null)return S(`bash: ${n}: No such file or directory
549
- `);let a=new Map;if(s.length>1){for(let c=1;c<=9;c++)a.set(String(c),e.state.env.get(String(c)));a.set("#",e.state.env.get("#")),a.set("@",e.state.env.get("@"));let l=s.slice(1);e.state.env.set("#",String(l.length)),e.state.env.set("@",l.join(" "));for(let c=0;c<l.length&&c<9;c++)e.state.env.set(String(c+1),l[c]);for(let c=l.length+1;c<=9;c++)e.state.env.delete(String(c))}let o=e.state.currentSource,f=()=>{if(e.state.sourceDepth--,e.state.currentSource=o,s.length>1)for(let[l,c]of a)c===void 0?e.state.env.delete(l):e.state.env.set(l,c)};e.state.sourceDepth++,e.state.currentSource=n;try{let l=ue(i),c=await e.executeScript(l);return f(),c}catch(l){if(f(),l instanceof z)throw l;if(l instanceof ee)return _(l.stdout,l.stderr,l.exitCode);if(l.name==="ParseException")return S(`bash: ${n}: ${l.message}
550
- `);throw l}}function Xn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Mi(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Yn(e,t){if(Mi(t))return null;try{let s=new M,n=q(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function Qn(e,t){if(e.state.localVarStack?.has(t)){let n=St(e,t);if(n){n.value===void 0?e.state.env.delete(t):e.state.env.set(t,n.value);let r=e.state.localVarStack?.get(t);if(!r||r.length===0)$t(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),Is(e,t);else{let i=r[r.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),$t(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let n=e.state.localScopes.length-1;n>=0;n--){let r=e.state.localScopes[n];if(r.has(t)){let i=r.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),r.delete(t);let a=!1;for(let o=n-1;o>=0;o--)if(e.state.localScopes[o].has(t)){e.state.localVarDepth&&e.state.localVarDepth.set(t,o+1),a=!0;break}return a||$t(e,t),!0}}return!1}function Is(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 n=e.state.tempEnvBindings[s];if(n.has(t)){let r=n.get(t);return r===void 0?e.state.env.delete(t):e.state.env.set(t,r),n.delete(t),!0}}return!1}async function Jn(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),r=new M().parseWordFromString(s,!0,!1);return I(e,r)}if(t.includes("$")){let n=new M().parseWordFromString(t,!1,!1);return I(e,n)}return t}async function xs(e,t){let s="both",n="",r=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 l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let d=l[1],h=l[2];if(h==="@"||h==="*"){let N=le(e,d);for(let[y]of N)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let N=await Jn(e,h);e.state.env.delete(`${d}_${N}`);continue}let p=Mt(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){n+=`bash: unset: ${d}: not an array variable
551
- `,r=1;continue}let $=await Yn(e,h);if($===null&&p){n+=`bash: unset: ${h}: not a valid identifier
552
- `,r=1;continue}if($===null)continue;if($<0){let N=le(e,d),y=N.length,w=e.state.currentLine;if(y===0){n+=`bash: line ${w}: unset: [${$}]: bad array subscript
553
- `,r=1;continue}let b=y+$;if(b<0){n+=`bash: line ${w}: unset: [${$}]: bad array subscript
554
- `,r=1;continue}let C=N[b][0];e.state.env.delete(`${d}_${C}`);continue}e.state.env.delete(`${d}_${$}`);continue}if(!Xn(i)){n+=`bash: unset: \`${i}': not a valid identifier
555
- `,r=1;continue}let c=i;if(ae(e,i)){let d=Se(e,i);d&&d!==i&&(c=d)}if(Ne(e,c)){n+=`bash: unset: ${c}: cannot unset: readonly variable
556
- `,r=1;continue}let u=Le(e,c);if(u!==void 0&&u!==e.state.callDepth)Qn(e,c);else if(e.state.fullyUnsetLocals?.has(c))e.state.env.delete(c);else if(u!==void 0){let d=e.state.accessedTempEnvVars?.has(c),h=e.state.mutatedTempEnvVars?.has(c);if((d||h)&&e.state.localVarStack?.has(c)){let m=St(e,c);m?m.value===void 0?e.state.env.delete(c):e.state.env.set(c,m.value):e.state.env.delete(c)}else e.state.env.delete(c)}else Is(e,c)||e.state.env.delete(c);e.state.exportedVars?.delete(c);continue}let a=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(a){let l=a[1],c=a[2];if(c==="@"||c==="*"){let p=le(e,l);for(let[g]of p)e.state.env.delete(`${l}_${g}`);e.state.env.delete(l);continue}let u=e.state.associativeArrays?.has(l);if(u){let p=await Jn(e,c);e.state.env.delete(`${l}_${p}`);continue}let d=Mt(e,l);if(e.state.env.has(l)&&!d&&!u){n+=`bash: unset: ${l}: not an array variable
557
- `,r=1;continue}let m=await Yn(e,c);if(m===null&&d){n+=`bash: unset: ${c}: not a valid identifier
558
- `,r=1;continue}if(m===null)continue;if(m<0){let p=le(e,l),g=p.length,v=e.state.currentLine;if(g===0){n+=`bash: line ${v}: unset: [${m}]: bad array subscript
559
- `,r=1;continue}let $=g+m;if($<0){n+=`bash: line ${v}: unset: [${m}]: bad array subscript
560
- `,r=1;continue}let N=p[$][0];e.state.env.delete(`${l}_${N}`);continue}e.state.env.delete(`${l}_${m}`);continue}if(!Xn(i)){n+=`bash: unset: \`${i}': not a valid identifier
561
- `,r=1;continue}let o=i;if(ae(e,i)){let l=Se(e,i);l&&l!==i&&(o=l)}if(Ne(e,o)){n+=`bash: unset: ${o}: cannot unset: readonly variable
562
- `,r=1;continue}let f=Le(e,o);if(f!==void 0&&f!==e.state.callDepth)Qn(e,o);else if(e.state.fullyUnsetLocals?.has(o))e.state.env.delete(o);else if(f!==void 0){let l=e.state.accessedTempEnvVars?.has(o),c=e.state.mutatedTempEnvVars?.has(o);if((l||c)&&e.state.localVarStack?.has(o)){let u=St(e,o);u?u.value===void 0?e.state.env.delete(o):e.state.env.set(o,u.value):e.state.env.delete(o)}else e.state.env.delete(o)}else Is(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return _("",n,r)}var Rs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],zi=["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 Ot(e){return Rs.includes(e)}function Vi(e){return zi.includes(e)}function er(e,t){let s=!1,n=!1,r=!1,i=!1,a=!1,o=[],f=0;for(;f<t.length;){let d=t[f];if(d==="--"){f++;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":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":a=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
563
- `}}}f++}else break}for(;f<t.length;)o.push(t[f]),f++;if(a)return Bi(e,o,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
564
- `};if(o.length===0){if(s||n){let h=[];for(let m of Rs){let p=e.state.shoptOptions[m];s&&p?h.push(r?`shopt -s ${m}`:`${m} on`):n&&!p&&h.push(r?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
546
+ `)}if(n.length>1&&(n[0]==="-"||n[0]==="+")&&n[1]!=="-"){let r=n[0]==="-";for(let i=1;i<n.length;i++){let o=n[i];if(!Jn.has(o)){let a=`bash: set: ${n[0]}${o}: invalid option
547
+ ${Tt}`;if(e.state.options.posix)throw new de(1,"",a);return S(a)}nr(e,Jn.get(o)??null,r)}s++;continue}if(n==="--")return Rs(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,We(e),s+1<t.length)return Rs(e,t.slice(s+1)),L;s++;continue}if(n==="+"){s++;continue}if(n.startsWith("-")||n.startsWith("+")){let r=`bash: set: ${n}: invalid option
548
+ ${Tt}`;if(e.state.options.posix)throw new de(1,"",r);return S(r)}return Rs(e,t.slice(s)),L}return L}function Rs(e,t){let s=1;for(;e.state.env.has(String(s));)e.state.env.delete(String(s)),s++;for(let n=0;n<t.length;n++)e.state.env.set(String(n+1),t[n]);e.state.env.set("#",String(t.length)),e.state.env.set("@",t.join(" ")),e.state.env.set("*",t.join(" "))}function Fs(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
549
+ `;if(e.state.options.posix)throw new de(1,"",a);return S(a)}s=o}let n=Number.parseInt(e.state.env.get("#")||"0",10);if(s>n){let o=`bash: shift: shift count out of range
550
+ `;if(e.state.options.posix)throw new de(1,"",o);return S(o)}if(s===0)return L;let r=[];for(let o=1;o<=n;o++)r.push(e.state.env.get(String(o))||"");let i=r.slice(s);for(let o=1;o<=n;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 Ws(e,t){let s=t;if(s.length>0&&s[0]==="--"&&(s=s.slice(1)),s.length===0)return _("",`bash: source: filename argument required
551
+ `,2);let n=s[0],r=null,i=null;if(n.includes("/")){let c=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(c),r=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}/${n}`);try{if((await e.fs.stat(d)).isDirectory)continue;i=await e.fs.readFile(d),r=d;break}catch{}}if(i===null){let f=e.fs.resolvePath(e.state.cwd,n);try{i=await e.fs.readFile(f),r=f}catch{}}}if(i===null)return S(`bash: ${n}: No such file or directory
552
+ `);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=n;try{let c=ye(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof V)throw c;if(c instanceof se)return _(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return S(`bash: ${n}: ${c.message}
553
+ `);throw c}}function rr(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Ki(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function ir(e,t){if(Ki(t))return null;try{let s=new M,n=q(s,t);return await z(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function or(e,t){if(e.state.localVarStack?.has(t)){let n=Pt(e,t);if(n){n.value===void 0?e.state.env.delete(t):e.state.env.set(t,n.value);let r=e.state.localVarStack?.get(t);if(!r||r.length===0)Ct(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,n.scopeIndex),Ms(e,t);else{let i=r[r.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),Ct(e,t),e.state.localVarStack?.delete(t),e.state.fullyUnsetLocals=e.state.fullyUnsetLocals||new Map,e.state.fullyUnsetLocals.set(t,0),!0}for(let n=e.state.localScopes.length-1;n>=0;n--){let r=e.state.localScopes[n];if(r.has(t)){let i=r.get(t);i===void 0?e.state.env.delete(t):e.state.env.set(t,i),r.delete(t);let o=!1;for(let a=n-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||Ct(e,t),!0}}return!1}function Ms(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 n=e.state.tempEnvBindings[s];if(n.has(t)){let r=n.get(t);return r===void 0?e.state.env.delete(t):e.state.env.set(t,r),n.delete(t),!0}}return!1}async function ar(e,t){if(t.startsWith("'")&&t.endsWith("'"))return t.slice(1,-1);if(t.startsWith('"')&&t.endsWith('"')){let s=t.slice(1,-1),r=new M().parseWordFromString(s,!0,!1);return T(e,r)}if(t.includes("$")){let n=new M().parseWordFromString(t,!1,!1);return T(e,n)}return t}async function Vs(e,t){let s="both",n="",r=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=pe(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 ar(e,h);e.state.env.delete(`${d}_${k}`);continue}let p=Ut(e,d),g=e.state.declaredVars?.has(d);if((e.state.env.has(d)||g)&&!p&&!m){n+=`bash: unset: ${d}: not an array variable
554
+ `,r=1;continue}let E=await ir(e,h);if(E===null&&p){n+=`bash: unset: ${h}: not a valid identifier
555
+ `,r=1;continue}if(E===null)continue;if(E<0){let k=pe(e,d),y=k.length,w=e.state.currentLine;if(y===0){n+=`bash: line ${w}: unset: [${E}]: bad array subscript
556
+ `,r=1;continue}let v=y+E;if(v<0){n+=`bash: line ${w}: unset: [${E}]: bad array subscript
557
+ `,r=1;continue}let C=k[v][0];e.state.env.delete(`${d}_${C}`);continue}e.state.env.delete(`${d}_${E}`);continue}if(!rr(i)){n+=`bash: unset: \`${i}': not a valid identifier
558
+ `,r=1;continue}let u=i;if(fe(e,i)){let d=Pe(e,i);d&&d!==i&&(u=d)}if(De(e,u)){n+=`bash: unset: ${u}: cannot unset: readonly variable
559
+ `,r=1;continue}let f=Ve(e,u);if(f!==void 0&&f!==e.state.callDepth)or(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=Pt(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 Ms(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=pe(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 ar(e,u);e.state.env.delete(`${c}_${p}`);continue}let d=Ut(e,c);if(e.state.env.has(c)&&!d&&!f){n+=`bash: unset: ${c}: not an array variable
560
+ `,r=1;continue}let m=await ir(e,u);if(m===null&&d){n+=`bash: unset: ${u}: not a valid identifier
561
+ `,r=1;continue}if(m===null)continue;if(m<0){let p=pe(e,c),g=p.length,b=e.state.currentLine;if(g===0){n+=`bash: line ${b}: unset: [${m}]: bad array subscript
562
+ `,r=1;continue}let E=g+m;if(E<0){n+=`bash: line ${b}: unset: [${m}]: bad array subscript
563
+ `,r=1;continue}let k=p[E][0];e.state.env.delete(`${c}_${k}`);continue}e.state.env.delete(`${c}_${m}`);continue}if(!rr(i)){n+=`bash: unset: \`${i}': not a valid identifier
564
+ `,r=1;continue}let a=i;if(fe(e,i)){let c=Pe(e,i);c&&c!==i&&(a=c)}if(De(e,a)){n+=`bash: unset: ${a}: cannot unset: readonly variable
565
+ `,r=1;continue}let l=Ve(e,a);if(l!==void 0&&l!==e.state.callDepth)or(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=Pt(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 Ms(e,a)||e.state.env.delete(a);e.state.exportedVars?.delete(a),e.state.functions.delete(i)}return _("",n,r)}var zs=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Xi=["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 It(e){return zs.includes(e)}function Yi(e){return Xi.includes(e)}function lr(e,t){let s=!1,n=!1,r=!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":n=!0;break;case"p":r=!0;break;case"q":i=!0;break;case"o":o=!0;break;default:return{exitCode:2,stdout:"",stderr:`shopt: -${m}: invalid option
566
+ `}}}l++}else break}for(;l<t.length;)a.push(t[l]),l++;if(o)return Qi(e,a,s,n,r,i);if(s&&n)return{exitCode:1,stdout:"",stderr:`shopt: cannot set and unset shell options simultaneously
567
+ `};if(a.length===0){if(s||n){let h=[];for(let m of zs){let p=e.state.shoptOptions[m];s&&p?h.push(r?`shopt -s ${m}`:`${m} on`):n&&!p&&h.push(r?`shopt -u ${m}`:`${m} off`)}return{exitCode:0,stdout:h.length>0?`${h.join(`
565
568
  `)}
566
- `:"",stderr:""}}let d=[];for(let h of Rs){let m=e.state.shoptOptions[h];d.push(r?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
569
+ `:"",stderr:""}}let d=[];for(let h of zs){let m=e.state.shoptOptions[h];d.push(r?`shopt ${m?"-s":"-u"} ${h}`:`${h} ${m?"on":"off"}`)}return{exitCode:0,stdout:`${d.join(`
567
570
  `)}
568
- `,stderr:""}}let l=!1,c="",u=[];for(let d of o){if(!Ot(d)&&!Vi(d)){c+=`shopt: ${d}: invalid shell option name
569
- `,l=!0;continue}if(s)Ot(d)&&(e.state.shoptOptions[d]=!0,Ut(e));else if(n)Ot(d)&&(e.state.shoptOptions[d]=!1,Ut(e));else if(Ot(d)){let h=e.state.shoptOptions[d];i?h||(l=!0):r?(u.push(`shopt ${h?"-s":"-u"} ${d}`),h||(l=!0)):(u.push(`${d} ${h?"on":"off"}`),h||(l=!0))}else i?l=!0:r?(u.push(`shopt -u ${d}`),l=!0):(u.push(`${d} off`),l=!0)}return{exitCode:l?1:0,stdout:u.length>0?`${u.join(`
571
+ `,stderr:""}}let c=!1,u="",f=[];for(let d of a){if(!It(d)&&!Yi(d)){u+=`shopt: ${d}: invalid shell option name
572
+ `,c=!0;continue}if(s)It(d)&&(e.state.shoptOptions[d]=!0,Yt(e));else if(n)It(d)&&(e.state.shoptOptions[d]=!1,Yt(e));else if(It(d)){let h=e.state.shoptOptions[d];i?h||(c=!0):r?(f.push(`shopt ${h?"-s":"-u"} ${d}`),h||(c=!0)):(f.push(`${d} ${h?"on":"off"}`),h||(c=!0))}else i?c=!0:r?(f.push(`shopt -u ${d}`),c=!0):(f.push(`${d} off`),c=!0)}return{exitCode:c?1:0,stdout:f.length>0?`${f.join(`
570
573
  `)}
571
- `:"",stderr:c}}function Bi(e,t,s,n,r,i){let a=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),o=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],f=[...a.keys(),...o].sort();if(t.length===0){let d=[];for(let h of f){let m=o.includes(h),p=a.get(h),g=m||!p?!1:e.state.options[p];s&&!g||n&&g||d.push(r?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
574
+ `:"",stderr:u}}function Qi(e,t,s,n,r,i){let o=new Map([["errexit","errexit"],["pipefail","pipefail"],["nounset","nounset"],["xtrace","xtrace"],["verbose","verbose"],["posix","posix"],["allexport","allexport"],["noclobber","noclobber"],["noglob","noglob"],["noexec","noexec"],["vi","vi"],["emacs","emacs"]]),a=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"],l=[...o.keys(),...a].sort();if(t.length===0){let d=[];for(let h of l){let m=a.includes(h),p=o.get(h),g=m||!p?!1:e.state.options[p];s&&!g||n&&g||d.push(r?`set ${g?"-o":"+o"} ${h}`:`${h} ${g?"on":"off"}`)}return{exitCode:0,stdout:d.length>0?`${d.join(`
572
575
  `)}
573
- `:"",stderr:""}}let l=!1,c="",u=[];for(let d of t){let h=a.has(d),m=o.includes(d);if(!h&&!m){c+=`shopt: ${d}: invalid option name
574
- `,l=!0;continue}if(m){s||n||(i?l=!0:r?(u.push(`set +o ${d}`),l=!0):(u.push(`${d} off`),l=!0));continue}let p=a.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,xe(e);else if(n)e.state.options[p]=!1,xe(e);else{let g=e.state.options[p];i?g||(l=!0):r?(u.push(`set ${g?"-o":"+o"} ${d}`),g||(l=!0)):(u.push(`${d} ${g?"on":"off"}`),g||(l=!0))}}return{exitCode:l?1:0,stdout:u.length>0?`${u.join(`
576
+ `:"",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
577
+ `,c=!0;continue}if(m){s||n||(i?c=!0:r?(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,We(e);else if(n)e.state.options[p]=!1,We(e);else{let g=e.state.options[p];i?g||(c=!0):r?(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(`
575
578
  `)}
576
- `:"",stderr:c}}async function tr(e,t,s){if(t.includes("/")){let a=e.fs.resolvePath(e.state.cwd,t);if(!await e.fs.exists(a))return{error:"not_found",path:a};let o=a.split("/").pop()||t,f=e.commands.get(o);try{let l=await e.fs.stat(a);return l.isDirectory?{error:"permission_denied",path:a}:f?{cmd:f,path:a}:(l.mode&73)!==0?{script:!0,path:a}:{error:"permission_denied",path:a}}catch{return{error:"not_found",path:a}}}if(!s&&e.state.hashTable){let a=e.state.hashTable.get(t);if(a)if(await e.fs.exists(a)){let o=e.commands.get(t);if(o)return{cmd:o,path:a};try{let f=await e.fs.stat(a);if(!f.isDirectory&&(f.mode&73)!==0)return{script:!0,path:a}}catch{}}else e.state.hashTable.delete(t)}let r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let a of r){if(!a)continue;let f=`${a.startsWith("/")?a:e.fs.resolvePath(e.state.cwd,a)}/${t}`;if(await e.fs.exists(f))try{let l=await e.fs.stat(f);if(l.isDirectory)continue;let c=(l.mode&73)!==0,u=e.commands.get(t),d=a==="/bin"||a==="/usr/bin";if(u&&d)return{cmd:u,path:f};if(c){if(u&&!d)return{script:!0,path:f};if(!u)return{script:!0,path:f}}}catch{}}if(!await e.fs.exists("/usr/bin")){let a=e.commands.get(t);if(a)return{cmd:a,path:`/usr/bin/${t}`}}return null}async function Dt(e,t){let s=[];if(t.includes("/")){let i=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(i))try{let a=await e.fs.stat(i);a.isDirectory||(a.mode&73)!==0&&s.push(t)}catch{}return s}let r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){if(!i)continue;let o=`${i.startsWith("/")?i:e.fs.resolvePath(e.state.cwd,i)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}s.push(i.startsWith("/")?o:`${i}/${t}`)}}return s}async function ir(e,t,s,n){let r=!1,i=!1,a=!1,o=!1,f=!1,l=[];for(let p of t)if(p.startsWith("-")&&p.length>1)for(let g of p.slice(1))g==="t"?r=!0:g==="p"?i=!0:g==="P"?a=!0:g==="a"?o=!0:g==="f"&&(f=!0);else l.push(p);let c="",u="",d=0,h=!1,m=!1;for(let p of l){let g=!1;if(a){if(o){let b=await n(p);if(b.length>0){for(let C of b)c+=`${C}
577
- `;h=!0,g=!0}}else{let b=await s(p);b&&(c+=`${b}
578
- `,h=!0,g=!0)}g||(m=!0);continue}let v=!f&&e.state.functions.has(p);if(o&&v){if(!i)if(r)c+=`function
579
- `;else{let b=e.state.functions.get(p),C=b?sr(p,b):`${p} is a function
580
- `;c+=C}g=!0}let $=e.state.env.get(`BASH_ALIAS_${p}`);if($!==void 0&&(o||!g)&&(i||(r?c+=`alias
581
- `:c+=`${p} is aliased to \`${$}'
582
- `),g=!0,!o)||Jt.has(p)&&(o||!g)&&(i||(r?c+=`keyword
583
- `:c+=`${p} is a shell keyword
584
- `),g=!0,!o))continue;if(!o&&v&&!g){if(!i)if(r)c+=`function
585
- `;else{let b=e.state.functions.get(p),C=b?sr(p,b):`${p} is a function
586
- `;c+=C}g=!0;continue}if(!(qe.has(p)&&(o||!g)&&(i||(r?c+=`builtin
587
- `:c+=`${p} is a shell builtin
588
- `),g=!0,!o))){if(o){let b=await n(p);for(let C of b)i?c+=`${C}
589
- `:r?c+=`file
590
- `:c+=`${p} is ${C}
591
- `,h=!0,g=!0}else if(!g){let b=await s(p);b&&(i?c+=`${b}
592
- `:r?c+=`file
593
- `:c+=`${p} is ${b}
594
- `,h=!0,g=!0)}if(!g&&(m=!0,!r&&!i)){let b=!0;if(p.includes("/")){let C=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(C)&&(b=!1)}b&&(u+=`bash: type: ${p}: not found
595
- `)}}}return i?d=m&&!h?1:0:d=m?1:0,_(c,u,d)}function sr(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>Ke(r)).join("; "):s=Ke(t.body),`${e} is a function
579
+ `:"",stderr:u}}async function cr(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 r=(s??e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let o of r){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 Rt(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 r=(e.state.env.get("PATH")||"/usr/bin:/bin").split(":");for(let i of r){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 hr(e,t,s,n){let r=!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"?r=!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 n(p);if(v.length>0){for(let C of v)u+=`${C}
580
+ `;h=!0,g=!0}}else{let v=await s(p);v&&(u+=`${v}
581
+ `,h=!0,g=!0)}g||(m=!0);continue}let b=!l&&e.state.functions.has(p);if(a&&b){if(!i)if(r)u+=`function
582
+ `;else{let v=e.state.functions.get(p),C=v?ur(p,v):`${p} is a function
583
+ `;u+=C}g=!0}let E=e.state.env.get(`BASH_ALIAS_${p}`);if(E!==void 0&&(a||!g)&&(i||(r?u+=`alias
584
+ `:u+=`${p} is aliased to \`${E}'
585
+ `),g=!0,!a)||is.has(p)&&(a||!g)&&(i||(r?u+=`keyword
586
+ `:u+=`${p} is a shell keyword
587
+ `),g=!0,!a))continue;if(!a&&b&&!g){if(!i)if(r)u+=`function
588
+ `;else{let v=e.state.functions.get(p),C=v?ur(p,v):`${p} is a function
589
+ `;u+=C}g=!0;continue}if(!(Xe.has(p)&&(a||!g)&&(i||(r?u+=`builtin
590
+ `:u+=`${p} is a shell builtin
591
+ `),g=!0,!a))){if(a){let v=await n(p);for(let C of v)i?u+=`${C}
592
+ `:r?u+=`file
593
+ `:u+=`${p} is ${C}
594
+ `,h=!0,g=!0}else if(!g){let v=await s(p);v&&(i?u+=`${v}
595
+ `:r?u+=`file
596
+ `:u+=`${p} is ${v}
597
+ `,h=!0,g=!0)}if(!g&&(m=!0,!r&&!i)){let v=!0;if(p.includes("/")){let C=e.fs.resolvePath(e.state.cwd,p);await e.fs.exists(C)&&(v=!1)}v&&(f+=`bash: type: ${p}: not found
598
+ `)}}}return i?d=m&&!h?1:0:d=m?1:0,_(u,f,d)}function ur(e,t){let s;return t.body.type==="Group"?s=t.body.body.map(r=>Je(r)).join("; "):s=Je(t.body),`${e} is a function
596
599
  ${e} ()
597
600
  {
598
601
  ${s}
599
602
  }
600
- `}function Ke(e){if(Array.isArray(e))return e.map(t=>Ke(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(ji(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(nr(t.name));for(let n of t.args)s.push(nr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>Ke(n)).join("; ")}; }`:"..."}function ji(e){let t=e.commands.map(s=>Ke(s));return(e.negated?"! ":"")+t.join(" | ")}function nr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>rr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=rr(s);return t}function rr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function ar(e,t,s,n){let r="",i="",a=0;for(let o of t){if(!o){a=1;continue}let f=e.state.env.get(`BASH_ALIAS_${o}`);if(f!==void 0)n?r+=`${o} is an alias for "${f}"
601
- `:r+=`alias ${o}='${f}'
602
- `;else if(Jt.has(o))n?r+=`${o} is a shell keyword
603
- `:r+=`${o}
604
- `;else if(qe.has(o))n?r+=`${o} is a shell builtin
605
- `:r+=`${o}
606
- `;else if(e.state.functions.has(o))n?r+=`${o} is a function
607
- `:r+=`${o}
608
- `;else if(o.includes("/")){let l=e.fs.resolvePath(e.state.cwd,o),c=!1;if(await e.fs.exists(l))try{let u=await e.fs.stat(l);u.isDirectory||(u.mode&73)!==0&&(n?r+=`${o} is ${o}
609
- `:r+=`${o}
610
- `,c=!0)}catch{}c||(n&&(i+=`${o}: not found
611
- `),a=1)}else if(e.commands.has(o)){let c=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":"),u=null;for(let d of c){if(!d)continue;let h=`${d}/${o}`;try{let m=await e.fs.stat(h);if(!m.isDirectory&&(m.mode&73)!==0){u=h;break}}catch{}}u||(u=`/usr/bin/${o}`),n?r+=`${o} is ${u}
612
- `:r+=`${u}
613
- `}else n&&(i+=`${o}: not found
614
- `),a=1}return _(r,i,a)}async function or(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{let i=await e.fs.stat(r);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let n=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let r of n){if(!r)continue;let a=`${r.startsWith("/")?r:e.fs.resolvePath(e.state.cwd,r)}/${t}`;if(await e.fs.exists(a)){try{if((await e.fs.stat(a)).isDirectory)continue}catch{continue}return`${r}/${t}`}}if(e.commands.has(t)){for(let r of n)if(r==="/usr/bin"||r==="/bin")return`${r}/${t}`;return`/usr/bin/${t}`}return null}async function lr(e,t,s,n,r,i,a,o){let{ctx:f,runCommand:l}=e;if(t==="export")return Es(f,s);if(t==="unset")return xs(f,s);if(t==="exit")return bs(f,s);if(t==="local")return _s(f,s);if(t==="set")return Os(f,s);if(t==="break")return Zt(f,s);if(t==="continue")return as(f,s);if(t==="return")return Ns(f,s);if(t==="eval"&&f.state.options.posix)return Pt(f,s,r);if(t==="shift")return Ds(f,s);if(t==="getopts")return Nt(f,s);if(t==="compgen")return ss(f,s);if(t==="complete")return rs(f,s);if(t==="compopt")return is(f,s);if(t==="pushd")return await gs(f,s);if(t==="popd")return ws(f,s);if(t==="dirs")return vs(f,s);if(t==="source"||t===".")return Ts(f,s);if(t==="read")return Ps(f,s,r,o);if(t==="mapfile"||t==="readarray")return Cs(f,s,r);if(t==="declare"||t==="typeset")return ps(f,s);if(t==="readonly")return ms(f,s);if(!i){let c=f.state.functions.get(t);if(c)return _t(f,c,s,r)}if(t==="eval")return Pt(f,s,r);if(t==="cd")return await Gt(f,s);if(t===":"||t==="true")return L;if(t==="false")return U(!1);if(t==="let")return As(f,s);if(t==="command")return Hi(e,s,r);if(t==="builtin")return Ui(e,s,r);if(t==="shopt")return er(f,s);if(t==="exec"){if(s.length===0)return L;let[c,...u]=s;return l(c,u,[],r,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await ir(f,s,c=>or(f,c),c=>Dt(f,c));if(t==="hash")return $s(f,s);if(t==="help")return Ss(f,s);if(t==="["||t==="test"){let c=s;if(t==="["){if(s[s.length-1]!=="]")return S("[: missing `]'\n",2);c=s.slice(0,-1)}return Ue(f,c)}return null}async function Hi(e,t,s){let{ctx:n,runCommand:r}=e;if(t.length===0)return L;let i=!1,a=!1,o=!1,f=t;for(;f.length>0&&f[0].startsWith("-");){let u=f[0];if(u==="--"){f=f.slice(1);break}for(let d of u.slice(1))d==="p"?i=!0:d==="V"?a=!0:d==="v"&&(o=!0);f=f.slice(1)}if(f.length===0)return L;if(o||a)return await ar(n,f,o,a);let[l,...c]=f;return r(l,c,[],s,!0,i,-1)}async function Ui(e,t,s){let{runCommand:n}=e;if(t.length===0)return L;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return L;let i=r[0];if(!qe.has(i))return S(`bash: builtin: ${i}: not a shell builtin
615
- `);let[,...a]=r;return n(i,a,[],s,!0,!1,-1)}async function cr(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,l=await tr(i,t,r?"/usr/bin:/bin":void 0);if(!l)return gn(t)?S(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
603
+ `}function Je(e){if(Array.isArray(e))return e.map(t=>Je(t)).join("; ");if(e.type==="Statement"){let t=[];for(let s=0;s<e.pipelines.length;s++){let n=e.pipelines[s];t.push(Ji(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(fr(t.name));for(let n of t.args)s.push(fr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>Je(n)).join("; ")}; }`:"..."}function Ji(e){let t=e.commands.map(s=>Je(s));return(e.negated?"! ":"")+t.join(" | ")}function fr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>dr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=dr(s);return t}function dr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function pr(e,t,s,n){let r="",i="",o=0;for(let a of t){if(!a){o=1;continue}let l=e.state.env.get(`BASH_ALIAS_${a}`);if(l!==void 0)n?r+=`${a} is an alias for "${l}"
604
+ `:r+=`alias ${a}='${l}'
605
+ `;else if(is.has(a))n?r+=`${a} is a shell keyword
606
+ `:r+=`${a}
607
+ `;else if(Xe.has(a))n?r+=`${a} is a shell builtin
608
+ `:r+=`${a}
609
+ `;else if(e.state.functions.has(a))n?r+=`${a} is a function
610
+ `:r+=`${a}
611
+ `;else if(a.includes("/")){let c=e.fs.resolvePath(e.state.cwd,a),u=!1;if(await e.fs.exists(c))try{let f=await e.fs.stat(c);f.isDirectory||(f.mode&73)!==0&&(n?r+=`${a} is ${a}
612
+ `:r+=`${a}
613
+ `,u=!0)}catch{}u||(n&&(i+=`${a}: not found
614
+ `),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}`),n?r+=`${a} is ${f}
615
+ `:r+=`${f}
616
+ `}else n&&(i+=`${a}: not found
617
+ `),o=1}return _(r,i,o)}async function mr(e,t){if(t.includes("/")){let r=e.fs.resolvePath(e.state.cwd,t);if(await e.fs.exists(r)){try{let i=await e.fs.stat(r);if(i.isDirectory||!((i.mode&73)!==0))return null}catch{return null}return t}return null}let n=(e.state.env.get("PATH")??"/usr/bin:/bin").split(":");for(let r of n){if(!r)continue;let o=`${r.startsWith("/")?r:e.fs.resolvePath(e.state.cwd,r)}/${t}`;if(await e.fs.exists(o)){try{if((await e.fs.stat(o)).isDirectory)continue}catch{continue}return`${r}/${t}`}}if(e.commands.has(t)){for(let r of n)if(r==="/usr/bin"||r==="/bin")return`${r}/${t}`;return`/usr/bin/${t}`}return null}async function yr(e,t,s,n,r,i,o,a){let{ctx:l,runCommand:c}=e;if(t==="export")return Ps(l,s);if(t==="unset")return Vs(l,s);if(t==="exit")return Cs(l,s);if(t==="local")return xs(l,s);if(t==="set")return Ls(l,s);if(t==="break")return Jt(l,s);if(t==="continue")return ds(l,s);if(t==="return")return Is(l,s);if(t==="eval"&&l.state.options.posix)return xt(l,s,r);if(t==="shift")return Fs(l,s);if(t==="getopts")return Dt(l,s);if(t==="compgen")return ls(l,s);if(t==="complete")return us(l,s);if(t==="compopt")return fs(l,s);if(t==="pushd")return await Ss(l,s);if(t==="popd")return As(l,s);if(t==="dirs")return _s(l,s);if(t==="source"||t===".")return Ws(l,s);if(t==="read")return Ts(l,s,r,a);if(t==="mapfile"||t==="readarray")return Ds(l,s,r);if(t==="declare"||t==="typeset")return bs(l,s);if(t==="readonly")return Es(l,s);if(!i){let u=l.state.functions.get(t);if(u)return Nt(l,u,s,r)}if(t==="eval")return xt(l,s,r);if(t==="cd")return await es(l,s);if(t===":"||t==="true")return L;if(t==="false")return U(!1);if(t==="let")return Os(l,s);if(t==="command")return eo(e,s,r);if(t==="builtin")return to(e,s,r);if(t==="shopt")return lr(l,s);if(t==="exec"){if(s.length===0)return L;let[u,...f]=s;return c(u,f,[],r,!1,!1,-1)}if(t==="wait")return L;if(t==="type")return await hr(l,s,u=>mr(l,u),u=>Rt(l,u));if(t==="hash")return ks(l,s);if(t==="help")return Ns(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 Ke(l,u)}return null}async function eo(e,t,s){let{ctx:n,runCommand:r}=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 pr(n,l,a,o);let[c,...u]=l;return r(c,u,[],s,!0,i,-1)}async function to(e,t,s){let{runCommand:n}=e;if(t.length===0)return L;let r=t;if(r[0]==="--"&&(r=r.slice(1),r.length===0))return L;let i=r[0];if(!Xe.has(i))return S(`bash: builtin: ${i}: not a shell builtin
618
+ `);let[,...o]=r;return n(i,o,[],s,!0,!1,-1)}async function gr(e,t,s,n,r){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await cr(i,t,r?"/usr/bin:/bin":void 0);if(!c)return _n(t)?S(`bash: ${t}: command not available in browser environments. Exclude '${t}' from your commands or use the Node.js bundle.
616
619
  `,127):S(`bash: ${t}: command not found
617
- `,127);if("error"in l)return l.error==="permission_denied"?S(`bash: ${t}: Permission denied
620
+ `,127);if("error"in c)return c.error==="permission_denied"?S(`bash: ${t}: Permission denied
618
621
  `,126):S(`bash: ${t}: No such file or directory
619
- `,127);if("script"in l)return t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,l.path)),await o(l.path,s,n);let{cmd:c,path:u}=l;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,u));let d=n||i.state.groupStdin||"",h=a(),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 c.execute(s,m)}catch(p){return S(`${t}: ${ye(p)}
620
- `)}}async function Ls(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let n="",r="",i=0;try{for(let a of t){let o=await e.executeStatement(a);n+=o.stdout,r+=o.stderr,i=o.exitCode}}finally{e.state.inCondition=s}return{stdout:n,stderr:r,exitCode:i}}function Xe(e,t,s,n){if(e instanceof ne)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>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 re)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>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 ee||e instanceof ie||e instanceof z||e instanceof J)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=ye(e);return{action:"error",stdout:t,stderr:`${s}${r}
621
- `,exitCode:1}}async function Tt(e,t,s="",n=""){let r=s,i=n,a=0;try{for(let o of t){let f=await e.executeStatement(o);r+=f.stdout,i+=f.stderr,a=f.exitCode}}catch(o){if(nt(o)||o instanceof ie||o instanceof z||o instanceof J||o instanceof be)throw o.prependOutput(r,i),o;return{stdout:r,stderr:`${i}${ye(o)}
622
- `,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function fr(e,t){let s="",n="";for(let r of t.clauses){let i=await Ls(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return Tt(e,r.body,s,n)}return t.elseBody?Tt(e,t.elseBody,s,n):_(s,n,0)}async function ur(e,t){let s=await me(e,t.redirections);if(s)return s;let n="",r="",i=0,a=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return S(`bash: \`${t.variable}': not a valid identifier
623
- `);let o=[];if(t.words===null)o=(e.state.env.get("@")||"").split(" ").filter(Boolean);else if(t.words.length===0)o=[];else try{for(let l of t.words){let c=await he(e,l);o.push(...c.values)}}catch(l){if(l instanceof st)return{stdout:"",stderr:l.stderr,exitCode:1};throw l}e.state.loopDepth++;try{for(let l of o){a++,a>e.limits.maxLoopIterations&&we(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,l);try{for(let c of t.body){let u=await e.executeStatement(c);n+=u.stdout,r+=u.stderr,i=u.exitCode}}catch(c){let u=Xe(c,n,r,e.state.loopDepth);if(n=u.stdout,r=u.stderr,u.action==="break")break;if(u.action==="continue")continue;if(u.action==="error"){let d=_(n,r,u.exitCode??1);return B(e,d,t.redirections)}throw u.error}}}finally{e.state.loopDepth--}let f=_(n,r,i);return B(e,f,t.redirections)}async function dr(e,t){let s=await me(e,t.redirections);if(s)return s;let n=t.line;n!==void 0&&(e.state.currentLine=n);let r="",i="",a=0,o=0;t.init&&await V(e,t.init.expression),e.state.loopDepth++;try{for(;o++,o>e.limits.maxLoopIterations&&we(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await V(e,t.condition.expression)===0));){try{for(let l of t.body){let c=await e.executeStatement(l);r+=c.stdout,i+=c.stderr,a=c.exitCode}}catch(l){let c=Xe(l,r,i,e.state.loopDepth);if(r=c.stdout,i=c.stderr,c.action==="break")break;if(c.action==="continue"){t.update&&await V(e,t.update.expression);continue}if(c.action==="error"){let u=_(r,i,c.exitCode??1);return B(e,u,t.redirections)}throw c.error}t.update&&await V(e,t.update.expression)}}finally{e.state.loopDepth--}let f=_(r,i,a);return B(e,f,t.redirections)}async function hr(e,t,s=""){let n="",r="",i=0,a=0,o=s;for(let l of t.redirections)if((l.operator==="<<"||l.operator==="<<-")&&l.target.type==="HereDoc"){let c=l.target,u=await I(e,c.content);c.stripTabs&&(u=u.split(`
622
+ `,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,n);let{cmd:u,path:f}=c;t.includes("/")||(i.state.hashTable||(i.state.hashTable=new Map),i.state.hashTable.set(t,f));let d=n||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}: ${Ee(p)}
623
+ `)}}async function Bs(e,t){let s=e.state.inCondition;e.state.inCondition=!0;let n="",r="",i=0;try{for(let o of t){let a=await e.executeStatement(o);n+=a.stdout,r+=a.stderr,i=a.exitCode}}finally{e.state.inCondition=s}return{stdout:n,stderr:r,exitCode:i}}function et(e,t,s,n){if(e instanceof ae)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>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 le)return t+=e.stdout,s+=e.stderr,e.levels>1&&n>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 se||e instanceof ue||e instanceof V||e instanceof te)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=Ee(e);return{action:"error",stdout:t,stderr:`${s}${r}
624
+ `,exitCode:1}}async function Lt(e,t,s="",n=""){let r=s,i=n,o=0;try{for(let a of t){let l=await e.executeStatement(a);r+=l.stdout,i+=l.stderr,o=l.exitCode}}catch(a){if(at(a)||a instanceof ue||a instanceof V||a instanceof te||a instanceof Ae)throw a.prependOutput(r,i),a;return{stdout:r,stderr:`${i}${Ee(a)}
625
+ `,exitCode:1}}return{stdout:r,stderr:i,exitCode:o}}async function wr(e,t){let s="",n="";for(let r of t.clauses){let i=await Bs(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return Lt(e,r.body,s,n)}return t.elseBody?Lt(e,t.elseBody,s,n):_(s,n,0)}async function vr(e,t){let s=await be(e,t.redirections);if(s)return s;let n="",r="",i=0,o=0;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t.variable))return S(`bash: \`${t.variable}': not a valid identifier
626
+ `);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 we(e,c);a.push(...u.values)}}catch(c){if(c instanceof ot)return{stdout:"",stderr:c.stderr,exitCode:1};throw c}e.state.loopDepth++;try{for(let c of a){o++,o>e.limits.maxLoopIterations&&Se(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r),e.state.env.set(t.variable,c);try{for(let u of t.body){let f=await e.executeStatement(u);n+=f.stdout,r+=f.stderr,i=f.exitCode}}catch(u){let f=et(u,n,r,e.state.loopDepth);if(n=f.stdout,r=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error"){let d=_(n,r,f.exitCode??1);return B(e,d,t.redirections)}throw f.error}}}finally{e.state.loopDepth--}let l=_(n,r,i);return B(e,l,t.redirections)}async function br(e,t){let s=await be(e,t.redirections);if(s)return s;let n=t.line;n!==void 0&&(e.state.currentLine=n);let r="",i="",o=0,a=0;t.init&&await z(e,t.init.expression),e.state.loopDepth++;try{for(;a++,a>e.limits.maxLoopIterations&&Se(`for loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",r,i),!(t.condition&&(n!==void 0&&(e.state.currentLine=n),await z(e,t.condition.expression)===0));){try{for(let c of t.body){let u=await e.executeStatement(c);r+=u.stdout,i+=u.stderr,o=u.exitCode}}catch(c){let u=et(c,r,i,e.state.loopDepth);if(r=u.stdout,i=u.stderr,u.action==="break")break;if(u.action==="continue"){t.update&&await z(e,t.update.expression);continue}if(u.action==="error"){let f=_(r,i,u.exitCode??1);return B(e,f,t.redirections)}throw u.error}t.update&&await z(e,t.update.expression)}}finally{e.state.loopDepth--}let l=_(r,i,o);return B(e,l,t.redirections)}async function Er(e,t,s=""){let n="",r="",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 T(e,u.content);u.stripTabs&&(f=f.split(`
624
627
  `).map(d=>d.replace(/^\t+/,"")).join(`
625
- `)),o=u}else if(l.operator==="<<<"&&l.target.type==="Word")o=`${await I(e,l.target)}
626
- `;else if(l.operator==="<"&&l.target.type==="Word")try{let c=await I(e,l.target),u=e.fs.resolvePath(e.state.cwd,c);o=await e.fs.readFile(u)}catch{let c=await I(e,l.target);return S(`bash: ${c}: No such file or directory
627
- `)}let f=e.state.groupStdin;o&&(e.state.groupStdin=o),e.state.loopDepth++;try{for(;;){a++,a>e.limits.maxLoopIterations&&we(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);let l=0,c=!1,u=!1,d=e.state.inCondition;e.state.inCondition=!0;try{for(let h of t.condition){let m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,l=m.exitCode}}catch(h){if(h instanceof ne){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;c=!0}else if(h instanceof re){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;u=!0}else throw e.state.inCondition=d,h}finally{e.state.inCondition=d}if(c)break;if(!u){if(l!==0)break;try{for(let h of t.body){let m=await e.executeStatement(h);n+=m.stdout,r+=m.stderr,i=m.exitCode}}catch(h){let m=Xe(h,n,r,e.state.loopDepth);if(n=m.stdout,r=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return _(n,r,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=f}return _(n,r,i)}async function pr(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&we(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let a=await Ls(e,t.condition);if(s+=a.stdout,n+=a.stderr,a.exitCode===0)break;try{for(let o of t.body){let f=await e.executeStatement(o);s+=f.stdout,n+=f.stderr,r=f.exitCode}}catch(o){let f=Xe(o,s,n,e.state.loopDepth);if(s=f.stdout,n=f.stderr,f.action==="break")break;if(f.action==="continue")continue;if(f.action==="error")return _(s,n,f.exitCode??1);throw f.error}}}finally{e.state.loopDepth--}return _(s,n,r)}async function mr(e,t){let s=await me(e,t.redirections);if(s)return s;let n="",r="",i=0,a=await I(e,t.word),o=!1;for(let l=0;l<t.items.length;l++){let c=t.items[l],u=o;if(!o)for(let d of c.patterns){let h=await I(e,d);Js(d)&&(h=Ys(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(Re(a,h,m,p)){u=!0;break}}if(u){let d=await Tt(e,c.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,c.terminator===";;")break;c.terminator===";&"?o=!0:o=!1}else o=!1}let f=_(n,r,i);return B(e,f,t.redirections)}function Ws(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function yr(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),a=r+n+1,o=t.slice(a),f=o.indexOf(":");if(f===-1)return null;let l=Number.parseInt(o.slice(0,f),10);if(Number.isNaN(l)||l<0)return null;let c=o.slice(f+1);return{path:i,position:l,content:c}}var gr="+ ";async function wr(e){let t=e.state.env.get("PS4");if(t===void 0)return gr;if(t==="")return"";try{let n=new M().parseWordFromString(t,!1,!1);return await I(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
628
- `,t||gr}}function qi(e){return e.map(t=>Zi(t)).join(" ")}function Zi(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
629
- `),r=e.includes(" "),i=e.includes("\\"),a=e.includes("'");if(s||n||r||i){let f="";for(let l of e){let c=l.charCodeAt(0);l===`
630
- `?f+="\\n":l===" "?f+="\\t":l==="\\"?f+="\\\\":l==="'"?f+="'":l==='"'?f+='"':c<32||c===127?c<256?f+=`\\x${c.toString(16).padStart(2,"0")}`:f+=`\\u${c.toString(16).padStart(4,"0")}`:f+=l}return`$'${f}'`}return a?`"${e.replace(/([\\$`"])/g,"\\$1")}"`:`'${e}'`}async function vr(e,t,s){if(!e.state.options.xtrace)return"";let n=await wr(e),r=[t,...s],i=qi(r);return`${n}${i}
631
- `}async function br(e,t,s){return e.state.options.xtrace?`${await wr(e)}${t}=${s}
632
- `:""}async function Er(e,t,s){let n=t.timed?performance.now():0,r="",i=L,a=0,o=[],f=t.commands.length>1,l=e.state.lastArg;for(let u=0;u<t.commands.length;u++){let d=t.commands[u],h=u===t.commands.length-1;f&&(e.state.lastArg="");let p=f&&(!h||!e.state.shoptOptions.lastpipe)?new Map(e.state.env):null,g;try{g=await s(d,r)}catch(v){if(v instanceof tt)g={stdout:v.stdout,stderr:v.stderr,exitCode:1};else if(v instanceof z&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else if(v instanceof ie&&t.commands.length>1)g={stdout:v.stdout,stderr:v.stderr,exitCode:v.exitCode};else throw p&&(e.state.env=p),v}p&&(e.state.env=p),o.push(g.exitCode),g.exitCode!==0&&(a=g.exitCode),h?i=g:t.pipeStderr?.[u]??!1?(r=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(r=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 u of e.state.env.keys())u.startsWith("PIPESTATUS_")&&e.state.env.delete(u);for(let u=0;u<o.length;u++)e.state.env.set(`PIPESTATUS_${u}`,String(o[u]));e.state.env.set("PIPESTATUS__length",String(o.length))}if(e.state.options.pipefail&&a!==0&&(i={...i,exitCode:a}),t.negated&&(i={...i,exitCode:i.exitCode===0?1:0}),t.timed){let d=(performance.now()-n)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
628
+ `)),a=f}else if(c.operator==="<<<"&&c.target.type==="Word")a=`${await T(e,c.target)}
629
+ `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await T(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await T(e,c.target);return S(`bash: ${u}: No such file or directory
630
+ `)}let l=e.state.groupStdin;a&&(e.state.groupStdin=a),e.state.loopDepth++;try{for(;;){o++,o>e.limits.maxLoopIterations&&Se(`while loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",n,r);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);n+=m.stdout,r+=m.stderr,c=m.exitCode}}catch(h){if(h instanceof ae){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,e.state.inCondition=d,h;u=!0}else if(h instanceof le){if(n+=h.stdout,r+=h.stderr,h.levels>1&&e.state.loopDepth>1)throw h.levels--,h.stdout=n,h.stderr=r,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);n+=m.stdout,r+=m.stderr,i=m.exitCode}}catch(h){let m=et(h,n,r,e.state.loopDepth);if(n=m.stdout,r=m.stderr,m.action==="break")break;if(m.action==="continue")continue;if(m.action==="error")return _(n,r,m.exitCode??1);throw m.error}}}}finally{e.state.loopDepth--,e.state.groupStdin=l}return _(n,r,i)}async function $r(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Se(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let o=await Bs(e,t.condition);if(s+=o.stdout,n+=o.stderr,o.exitCode===0)break;try{for(let a of t.body){let l=await e.executeStatement(a);s+=l.stdout,n+=l.stderr,r=l.exitCode}}catch(a){let l=et(a,s,n,e.state.loopDepth);if(s=l.stdout,n=l.stderr,l.action==="break")break;if(l.action==="continue")continue;if(l.action==="error")return _(s,n,l.exitCode??1);throw l.error}}}finally{e.state.loopDepth--}return _(s,n,r)}async function Sr(e,t){let s=await be(e,t.redirections);if(s)return s;let n="",r="",i=0,o=await T(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 T(e,d);ln(d)&&(h=on(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(Me(o,h,m,p)){f=!0;break}}if(f){let d=await Lt(e,u.body,n,r);if(n=d.stdout,r=d.stderr,i=d.exitCode,u.terminator===";;")break;u.terminator===";&"?a=!0:a=!1}else a=!1}let l=_(n,r,i);return B(e,l,t.redirections)}function js(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function Ar(e){if(!e.startsWith("__rw__:"))return null;let t=e.slice(7),s=t.indexOf(":");if(s===-1)return null;let n=Number.parseInt(t.slice(0,s),10);if(Number.isNaN(n)||n<0)return null;let r=s+1,i=t.slice(r,r+n),o=r+n+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 _r="+ ";async function Cr(e){let t=e.state.env.get("PS4");if(t===void 0)return _r;if(t==="")return"";try{let n=new M().parseWordFromString(t,!1,!1);return await T(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
631
+ `,t||_r}}function so(e){return e.map(t=>no(t)).join(" ")}function no(e){if(e==="")return"''";if(!/[\s'"\\$`!*?[\]{}|&;<>()~#\n\t]/.test(e))return e;let s=/[\x00-\x1f\x7f]/.test(e),n=e.includes(`
632
+ `),r=e.includes(" "),i=e.includes("\\"),o=e.includes("'");if(s||n||r||i){let l="";for(let c of e){let u=c.charCodeAt(0);c===`
633
+ `?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 Pr(e,t,s){if(!e.state.options.xtrace)return"";let n=await Cr(e),r=[t,...s],i=so(r);return`${n}${i}
634
+ `}async function kr(e,t,s){return e.state.options.xtrace?`${await Cr(e)}${t}=${s}
635
+ `:""}async function Nr(e,t,s){let n=t.timed?performance.now():0,r="",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,r)}catch(b){if(b instanceof it)g={stdout:b.stdout,stderr:b.stderr,exitCode:1};else if(b instanceof V&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else if(b instanceof ue&&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?(r=g.stderr+g.stdout,i={stdout:"",stderr:"",exitCode:g.exitCode}):(r=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()-n)/1e3,h=Math.floor(d/60),m=d%60,p;t.timePosix?p=`real ${d.toFixed(2)}
633
636
  user 0.00
634
637
  sys 0.00
635
638
  `:p=`
636
639
  real ${`${h}m${m.toFixed(3)}s`}
637
640
  user 0m0.000s
638
641
  sys 0m0.000s
639
- `,i={...i,stderr:i.stderr+p}}return f&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=l),i}async function $r(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let c=await Gi(e,t,i,r.array,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};if(n+=c.xtraceOutput,c.continueToNext)continue}let a=r.value?await I(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:_("",`bash: ${i}: bad array subscript
640
- `,1)};let f=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(f){let c=await Ji(e,t,f[1],f[2],a,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};if(c.continueToNext)continue}let l=await ta(e,t,i,a,r.append,s);if(l.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:l.error};n+=l.xtraceOutput,l.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function Gi(e,t,s,n,r,i){let a="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
641
- `,1)};if(ae(e,s)){let c=Ks(e,s);if(c===void 0||c==="")throw new z(1,"","");let u=Se(e,s);if(u&&/^[a-zA-Z_][a-zA-Z0-9_]*\[@\]$/.test(u))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
642
- `,1)}}if(Ne(e,s)){if(t.name)return a+=`bash: ${s}: readonly variable
643
- `,{continueToNext:!0,xtraceOutput:a};let c=K(e,s);if(c)return{continueToNext:!1,xtraceOutput:"",error:c}}let o=e.state.associativeArrays?.has(s),f=Ki(n),l=()=>{let c=`${s}_`;for(let u of e.state.env.keys())u.startsWith(c)&&!u.includes("__")&&e.state.env.delete(u);e.state.env.delete(s)};if(o&&f?await Xi(e,t,s,n,r,l,c=>{a+=c}):f?await Yi(e,s,n,r,l):await Qi(e,s,n,r,l),t.name){i.set(s,e.state.env.get(s));let u=`(${n.map(d=>it(d)).join(" ")})`;e.state.env.set(s,u)}return{continueToNext:!0,xtraceOutput:a}}function Ki(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],n=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(t.parts.length<3)return!1;let r=t.parts[2];return r.type!=="Literal"?!1:r.value.startsWith("]=")||r.value.startsWith("]+=")}return n.type!=="Literal"?!1:n.value.startsWith("]")?n.value.startsWith("]=")||n.value.startsWith("]+="):s.pattern.endsWith("]")?n.value.startsWith("=")||n.value.startsWith("+="):!1}return!1})}async function Xi(e,t,s,n,r,i,a){let o=[];for(let f of n){let l=Rt(f);if(l){let{key:c,valueParts:u,append:d}=l,h;u.length>0?h=await I(e,{type:"Word",parts:u}):h="",h=j(e,h),o.push({type:"keyed",key:c,value:h,append:d})}else{let c=await I(e,f);o.push({type:"invalid",expandedValue:c})}}r||i();for(let f of o)if(f.type==="keyed")if(f.append){let l=e.state.env.get(`${s}_${f.key}`)??"";e.state.env.set(`${s}_${f.key}`,l+f.value)}else e.state.env.set(`${s}_${f.key}`,f.value);else{let l=t.line??e.state.currentLine??1;a(`bash: line ${l}: ${s}: ${f.expandedValue}: must use subscript when assigning associative array
644
- `)}}async function Yi(e,t,s,n,r){let i=[];for(let o of s){let f=Rt(o);if(f){let{key:l,valueParts:c,append:u}=f,d;c.length>0?d=await I(e,{type:"Word",parts:c}):d="",d=j(e,d),i.push({type:"keyed",indexExpr:l,value:d,append:u})}else{let l=await he(e,o);i.push({type:"non-keyed",values:l.values})}}n||r();let a=0;for(let o of i)if(o.type==="keyed"){let f;try{let l=new M,c=q(l,o.indexExpr);f=await V(e,c.expression,!1)}catch{if(/^-?\d+$/.test(o.indexExpr))f=Number.parseInt(o.indexExpr,10);else{let l=e.state.env.get(o.indexExpr);f=l?Number.parseInt(l,10):0,Number.isNaN(f)&&(f=0)}}if(o.append){let l=e.state.env.get(`${t}_${f}`)??"";e.state.env.set(`${t}_${f}`,l+o.value)}else e.state.env.set(`${t}_${f}`,o.value);a=f+1}else for(let f of o.values)e.state.env.set(`${t}_${a++}`,f)}async function Qi(e,t,s,n,r){let i=[];for(let o of s){let f=await he(e,o);i.push(...f.values)}let a=0;if(n){let o=le(e,t);if(o.length>0)a=Math.max(...o.map(([l])=>typeof l=="number"?l:0))+1;else{let f=e.state.env.get(t);f!==void 0&&(e.state.env.set(`${t}_0`,f),e.state.env.delete(t),a=1)}}else r();for(let o=0;o<i.length;o++)e.state.env.set(`${t}_${a+o}`,i[o]);n||e.state.env.set(`${t}__length`,String(i.length))}async function Ji(e,t,s,n,r,i,a){let o=s;if(ae(e,s)){let u=Se(e,s);if(u&&u!==s){if(u.includes("["))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: \`${u}': not a valid identifier
645
- `,1)};o=u}}if(Ne(e,o)){if(t.name)return{continueToNext:!0,xtraceOutput:""};let u=K(e,o);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let f=e.state.associativeArrays?.has(o),l;if(f)l=await Sr(e,o,n);else{let u=await ea(e,o,n);if(u.error)return{continueToNext:!1,xtraceOutput:"",error:u.error};l=`${o}_${u.index}`}let c=i?(e.state.env.get(l)||"")+r:r;if(t.name)a.set(l,e.state.env.get(l)),e.state.env.set(l,c);else{let u=Le(e,o);if(u!==void 0&&u===e.state.callDepth&&e.state.localScopes.length>0){let d=e.state.localScopes[e.state.localScopes.length-1];d.has(l)||d.set(l,e.state.env.get(l))}e.state.env.set(l,c)}return{continueToNext:!0,xtraceOutput:""}}async function Sr(e,t,s){let n;if(s.startsWith("'")&&s.endsWith("'"))n=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let r=s.slice(1,-1),a=new M().parseWordFromString(r,!0,!1);n=await I(e,a)}else if(s.includes("$")){let i=new M().parseWordFromString(s,!1,!1);n=await I(e,i)}else n=s;return`${t}_${n}`}async function ea(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new M,a=q(i,n);r=await V(e,a.expression,!1)}catch(i){if(i instanceof Pe){let f=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
646
- `;if(i.fatal)throw new z(1,"",f);return{index:0,error:_("",f,1)}}let a=e.state.env.get(s);r=a?Number.parseInt(a,10):0}Number.isNaN(r)&&(r=0)}if(r<0){let i=le(e,t);if(i.length===0){let o=e.state.currentLine;return{index:0,error:_("",`bash: line ${o}: ${t}[${s}]: bad array subscript
647
- `,1)}}if(r=Math.max(...i.map(([o])=>typeof o=="number"?o:0))+1+r,r<0){let o=e.state.currentLine;return{index:0,error:_("",`bash: line ${o}: ${t}[${s}]: bad array subscript
648
- `,1)}}}return{index:r}}async function ta(e,t,s,n,r,i){let a="",o=s,f=null;if(ae(e,s)){let u=Xs(e,s,n);if(u===void 0)return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: circular name reference
649
- `,1)};if(u===null)return{continueToNext:!0,xtraceOutput:""};o=u;let d=o.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);d&&(f={arrayName:d[1],subscriptExpr:d[2]},o=d[1])}if(Ne(e,o)){if(t.name)return a+=`bash: ${o}: readonly variable
650
- `,{continueToNext:!0,xtraceOutput:a};let u=K(e,o);if(u)return{continueToNext:!1,xtraceOutput:"",error:u}}let l;if(Ze(e,o))try{let u=new M;if(r){let h=`(${e.state.env.get(o)||"0"}) + (${n})`,m=q(u,h);l=String(await V(e,m.expression))}else{let d=q(u,n);l=String(await V(e,d.expression))}}catch{l="0"}else{let{isArray:u}=await import("./chunks/expansion-D4M4UY4T.js"),d=u(e,o)?`${o}_0`:o;l=r?(e.state.env.get(d)||"")+n:n}l=Fe(e,o,l),a+=await br(e,o,l);let c=o;if(f)c=await sa(e,f);else{let{isArray:u}=await import("./chunks/expansion-D4M4UY4T.js");u(e,o)&&(c=`${o}_0`)}return t.name?(i.set(c,e.state.env.get(c)),e.state.env.set(c,l)):(e.state.env.set(c,l),e.state.options.allexport&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(o)),e.state.tempEnvBindings?.some(u=>u.has(o))&&(e.state.mutatedTempEnvVars=e.state.mutatedTempEnvVars||new Set,e.state.mutatedTempEnvVars.add(o))),{continueToNext:!1,xtraceOutput:a}}async function sa(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return Sr(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let a=new M,o=q(a,n);i=await V(e,o.expression,!1)}catch{let a=e.state.env.get(n);i=a?Number.parseInt(a,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let a=le(e,s);a.length>0&&(i=Math.max(...a.map(f=>f[0]))+1+i)}return`${s}_${i}`}async function Ar(e,t,s,n){let r=await me(e,t.redirections);if(r)return r;let i=new Map(e.state.env),a=e.state.cwd,o={...e.state.options},f=e.state.localScopes,l=e.state.localVarStack,c=e.state.localVarDepth,u=e.state.fullyUnsetLocals;if(e.state.localScopes=f.map(b=>new Map(b)),l){e.state.localVarStack=new Map;for(let[b,C]of l.entries())e.state.localVarStack.set(b,C.map(O=>({...O})))}c&&(e.state.localVarDepth=new Map(c)),u&&(e.state.fullyUnsetLocals=new Map(u));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 v="",$="",N=0,y=()=>{e.state.env=i,e.state.cwd=a,e.state.options=o,e.state.localScopes=f,e.state.localVarStack=l,e.state.localVarDepth=c,e.state.fullyUnsetLocals=u,e.state.loopDepth=d,e.state.parentHasLoopContext=h,e.state.groupStdin=g,e.state.bashPid=p,e.state.lastArg=m};try{for(let b of t.body){let C=await n(b);v+=C.stdout,$+=C.stderr,N=C.exitCode}}catch(b){if(y(),b instanceof J)throw b;if(b instanceof be){v+=b.stdout,$+=b.stderr;let O=_(v,$,0);return B(e,O,t.redirections)}if(b instanceof ne||b instanceof re){v+=b.stdout,$+=b.stderr;let O=_(v,$,0);return B(e,O,t.redirections)}if(b instanceof z){v+=b.stdout,$+=b.stderr;let O=_(v,$,b.exitCode);return B(e,O,t.redirections)}if(b instanceof ee){v+=b.stdout,$+=b.stderr;let O=_(v,$,b.exitCode);return B(e,O,t.redirections)}if(b instanceof ie){let O=_(v+b.stdout,$+b.stderr,b.exitCode);return B(e,O,t.redirections)}let C=_(v,`${$}${ye(b)}
651
- `,1);return B(e,C,t.redirections)}y();let w=_(v,$,N);return B(e,w,t.redirections)}async function _r(e,t,s,n){let r="",i="",a=0,o=await At(e,t.redirections);if(o)return o;let f=s;for(let u of t.redirections)if((u.operator==="<<"||u.operator==="<<-")&&u.target.type==="HereDoc"){let d=u.target,h=await I(e,d.content);d.stripTabs&&(h=h.split(`
642
+ `,i={...i,stderr:i.stderr+p}}return l&&!e.state.shoptOptions.lastpipe&&(e.state.lastArg=c),i}async function Or(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let u=await ro(e,t,i,r.array,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(n+=u.xtraceOutput,u.continueToNext)continue}let o=r.value?await T(e,r.value):"";if(i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[\]$/))return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:_("",`bash: ${i}: bad array subscript
643
+ `,1)};let l=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(l){let u=await co(e,t,l[1],l[2],o,r.append,s);if(u.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:u.error};if(u.continueToNext)continue}let c=await fo(e,t,i,o,r.append,s);if(c.error)return{continueToNext:!1,xtraceOutput:n,tempAssignments:s,error:c.error};n+=c.xtraceOutput,c.continueToNext}return{continueToNext:!1,xtraceOutput:n,tempAssignments:s}}async function ro(e,t,s,n,r,i){let o="";if(/\[.+\]$/.test(s))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: cannot assign list to array member
644
+ `,1)};if(fe(e,s)){let u=nn(e,s);if(u===void 0||u==="")throw new V(1,"","");let f=Pe(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
645
+ `,1)}}if(De(e,s)){if(t.name)return o+=`bash: ${s}: readonly variable
646
+ `,{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=io(n),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 oo(e,t,s,n,r,c,u=>{o+=u}):l?await ao(e,s,n,r,c):await lo(e,s,n,r,c),t.name){i.set(s,e.state.env.get(s));let f=`(${n.map(d=>ct(d)).join(" ")})`;e.state.env.set(s,f)}return{continueToNext:!0,xtraceOutput:o}}function io(e){return e.some(t=>{if(t.parts.length>=2){let s=t.parts[0],n=t.parts[1];if(s.type!=="Glob"||!s.pattern.startsWith("["))return!1;if(s.pattern==="["&&(n.type==="DoubleQuoted"||n.type==="SingleQuoted")){if(t.parts.length<3)return!1;let r=t.parts[2];return r.type!=="Literal"?!1:r.value.startsWith("]=")||r.value.startsWith("]+=")}return n.type!=="Literal"?!1:n.value.startsWith("]")?n.value.startsWith("]=")||n.value.startsWith("]+="):s.pattern.endsWith("]")?n.value.startsWith("=")||n.value.startsWith("+="):!1}return!1})}async function oo(e,t,s,n,r,i,o){let a=[];for(let l of n){let c=zt(l);if(c){let{key:u,valueParts:f,append:d}=c,h;f.length>0?h=await T(e,{type:"Word",parts:f}):h="",h=j(e,h),a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await T(e,l);a.push({type:"invalid",expandedValue:u})}}r||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
647
+ `)}}async function ao(e,t,s,n,r){let i=[];for(let a of s){let l=zt(a);if(l){let{key:c,valueParts:u,append:f}=l,d;u.length>0?d=await T(e,{type:"Word",parts:u}):d="",d=j(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await we(e,a);i.push({type:"non-keyed",values:c.values})}}n||r();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new M,u=q(c,a.indexExpr);l=await z(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 lo(e,t,s,n,r){let i=[];for(let a of s){let l=await we(e,a);i.push(...l.values)}let o=0;if(n){let a=pe(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 r();for(let a=0;a<i.length;a++)e.state.env.set(`${t}_${o+a}`,i[a]);n||e.state.env.set(`${t}__length`,String(i.length))}async function co(e,t,s,n,r,i,o){let a=s;if(fe(e,s)){let f=Pe(e,s);if(f&&f!==s){if(f.includes("["))return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: \`${f}': not a valid identifier
648
+ `,1)};a=f}}if(De(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 xr(e,a,n);else{let f=await uo(e,a,n);if(f.error)return{continueToNext:!1,xtraceOutput:"",error:f.error};c=`${a}_${f.index}`}let u=i?(e.state.env.get(c)||"")+r:r;if(t.name)o.set(c,e.state.env.get(c)),e.state.env.set(c,u);else{let f=Ve(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 xr(e,t,s){let n;if(s.startsWith("'")&&s.endsWith("'"))n=s.slice(1,-1);else if(s.startsWith('"')&&s.endsWith('"')){let r=s.slice(1,-1),o=new M().parseWordFromString(r,!0,!1);n=await T(e,o)}else if(s.includes("$")){let i=new M().parseWordFromString(s,!1,!1);n=await T(e,i)}else n=s;return`${t}_${n}`}async function uo(e,t,s){let n=s;s.startsWith('"')&&s.endsWith('"')&&s.length>=2&&(n=s.slice(1,-1));let r;if(/^-?\d+$/.test(n))r=Number.parseInt(n,10);else{try{let i=new M,o=q(i,n);r=await z(e,o.expression,!1)}catch(i){if(i instanceof xe){let l=`bash: line ${e.state.currentLine}: ${s}: ${i.message}
649
+ `;if(i.fatal)throw new V(1,"",l);return{index:0,error:_("",l,1)}}let o=e.state.env.get(s);r=o?Number.parseInt(o,10):0}Number.isNaN(r)&&(r=0)}if(r<0){let i=pe(e,t);if(i.length===0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
650
+ `,1)}}if(r=Math.max(...i.map(([a])=>typeof a=="number"?a:0))+1+r,r<0){let a=e.state.currentLine;return{index:0,error:_("",`bash: line ${a}: ${t}[${s}]: bad array subscript
651
+ `,1)}}}return{index:r}}async function fo(e,t,s,n,r,i){let o="",a=s,l=null;if(fe(e,s)){let f=rn(e,s,n);if(f===void 0)return{continueToNext:!1,xtraceOutput:"",error:_("",`bash: ${s}: circular name reference
652
+ `,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(De(e,a)){if(t.name)return o+=`bash: ${a}: readonly variable
653
+ `,{continueToNext:!0,xtraceOutput:o};let f=K(e,a);if(f)return{continueToNext:!1,xtraceOutput:"",error:f}}let c;if(Ye(e,a))try{let f=new M;if(r){let h=`(${e.state.env.get(a)||"0"}) + (${n})`,m=q(f,h);c=String(await z(e,m.expression))}else{let d=q(f,n);c=String(await z(e,d.expression))}}catch{c="0"}else{let{isArray:f}=await import("./chunks/expansion-QOAPT4NU.js"),d=f(e,a)?`${a}_0`:a;c=r?(e.state.env.get(d)||"")+n:n}c=Be(e,a,c),o+=await kr(e,a,c);let u=a;if(l)u=await ho(e,l);else{let{isArray:f}=await import("./chunks/expansion-QOAPT4NU.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 ho(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return xr(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let o=new M,a=q(o,n);i=await z(e,a.expression,!1)}catch{let o=e.state.env.get(n);i=o?Number.parseInt(o,10):0}Number.isNaN(i)&&(i=0)}if(i<0){let o=pe(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function Dr(e,t,s,n){let r=await be(e,t.redirections);if(r)return r;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,C]of c.entries())e.state.localVarStack.set(v,C.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 C=await n(v);b+=C.stdout,E+=C.stderr,k=C.exitCode}}catch(v){if(y(),v instanceof te)throw v;if(v instanceof Ae){b+=v.stdout,E+=v.stderr;let x=_(b,E,0);return B(e,x,t.redirections)}if(v instanceof ae||v instanceof le){b+=v.stdout,E+=v.stderr;let x=_(b,E,0);return B(e,x,t.redirections)}if(v instanceof V){b+=v.stdout,E+=v.stderr;let x=_(b,E,v.exitCode);return B(e,x,t.redirections)}if(v instanceof se){b+=v.stdout,E+=v.stderr;let x=_(b,E,v.exitCode);return B(e,x,t.redirections)}if(v instanceof ue){let x=_(b+v.stdout,E+v.stderr,v.exitCode);return B(e,x,t.redirections)}let C=_(b,`${E}${Ee(v)}
654
+ `,1);return B(e,C,t.redirections)}y();let w=_(b,E,k);return B(e,w,t.redirections)}async function Tr(e,t,s,n){let r="",i="",o=0,a=await kt(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 T(e,d.content);d.stripTabs&&(h=h.split(`
652
655
  `).map(p=>p.replace(/^\t+/,"")).join(`
653
- `));let m=u.fd??0;m!==0?(e.state.fileDescriptors||(e.state.fileDescriptors=new Map),e.state.fileDescriptors.set(m,h)):f=h}else if(u.operator==="<<<"&&u.target.type==="Word")f=`${await I(e,u.target)}
654
- `;else if(u.operator==="<"&&u.target.type==="Word")try{let d=await I(e,u.target),h=e.fs.resolvePath(e.state.cwd,d);f=await e.fs.readFile(h)}catch{let d=await I(e,u.target);return _("",`bash: ${d}: No such file or directory
655
- `,1)}let l=e.state.groupStdin;f&&(e.state.groupStdin=f);try{for(let u of t.body){let d=await n(u);r+=d.stdout,i+=d.stderr,a=d.exitCode}}catch(u){if(e.state.groupStdin=l,u instanceof J)throw u;if(nt(u)||u instanceof ie||u instanceof z)throw u.prependOutput(r,i),u;return _(r,`${i}${ye(u)}
656
- `,1)}e.state.groupStdin=l;let c=_(r,i,a);return B(e,c,t.redirections)}async function Cr(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return S(`bash: ${t}: No such file or directory
656
+ `));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 T(e,f.target)}
657
+ `;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await T(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await T(e,f.target);return _("",`bash: ${d}: No such file or directory
658
+ `,1)}let c=e.state.groupStdin;l&&(e.state.groupStdin=l);try{for(let f of t.body){let d=await n(f);r+=d.stdout,i+=d.stderr,o=d.exitCode}}catch(f){if(e.state.groupStdin=c,f instanceof te)throw f;if(at(f)||f instanceof ue||f instanceof V)throw f.prependOutput(r,i),f;return _(r,`${i}${Ee(f)}
659
+ `,1)}e.state.groupStdin=c;let u=_(r,i,o);return B(e,u,t.redirections)}async function Ir(e,t,s,n,r){let i;try{i=await e.fs.readFile(t)}catch{return S(`bash: ${t}: No such file or directory
657
660
  `,127)}if(i.startsWith("#!")){let g=i.indexOf(`
658
- `);g!==-1&&(i=i.slice(g+1))}let a=new Map(e.state.env),o=e.state.cwd,f={...e.state.options},l=e.state.loopDepth,c=e.state.parentHasLoopContext,u=e.state.lastArg,d=e.state.bashPid,h=e.state.groupStdin,m=e.state.currentSource;e.state.parentHasLoopContext=l>0,e.state.loopDepth=0,e.state.bashPid=e.state.nextVirtualPid++,n&&(e.state.groupStdin=n),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=a,e.state.cwd=o,e.state.options=f,e.state.loopDepth=l,e.state.parentHasLoopContext=c,e.state.lastArg=u,e.state.bashPid=d,e.state.groupStdin=h,e.state.currentSource=m};try{let v=new M().parse(i),$=await r(v);return p(),$}catch(g){if(p(),g instanceof z||g instanceof J)throw g;if(g.name==="ParseException")return S(`bash: ${t}: ${g.message}
659
- `);throw g}}var Ye=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,n=new Set;if(t)for(let i of t)n.add(i);if(s)for(let i of s)n.add(i);if(n.size===0)return Object.create(null);let r=Object.create(null);for(let i of n){let a=this.ctx.state.env.get(i);a!==void 0&&(r[i]=a)}return r}async executeScript(t){let s="",n="",r=0;for(let i of t.statements)try{let a=await this.executeStatement(i);s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}catch(a){if(a instanceof z)throw a.prependOutput(s,n),a;if(a instanceof oe)return s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ee(this.ctx.state.env)};if(a instanceof J)throw a;if(a instanceof ie)return s+=a.stdout,n+=a.stderr,r=a.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ee(this.ctx.state.env)};if(a instanceof zs)return s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ee(this.ctx.state.env)};if(a instanceof tt)return s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:Ee(this.ctx.state.env)};if(a instanceof Pe){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof Vs){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof ne||a instanceof re){if(this.ctx.state.loopDepth>0)throw a.prependOutput(s,n),a;s+=a.stdout,n+=a.stderr;continue}throw a instanceof ee&&a.prependOutput(s,n),a}return{stdout:s,stderr:n,exitCode:r,env:Ee(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Cr(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&we(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new rt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
660
- `);let r=0,i=-1,a=!1;for(let l=0;l<t.pipelines.length;l++){let c=t.pipelines[l],u=l>0?t.operators[l-1]:null;if(u==="&&"&&r!==0||u==="||"&&r===0)continue;let d=await this.executePipeline(c);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=l,a=c.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}let o=i<t.pipelines.length-1,f=this.ctx.state.errexitSafe;if(this.ctx.state.errexitSafe=o||a||f,this.ctx.state.options.errexit&&r!==0&&i===t.pipelines.length-1&&!a&&!this.ctx.state.inCondition&&!f)throw new ie(r,s,n);return _(s,n,r)}async executePipeline(t){return Er(this.ctx,t,(s,n)=>this.executeCommand(s,n))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return fr(this.ctx,t);case"For":return ur(this.ctx,t);case"CStyleFor":return dr(this.ctx,t);case"While":return hr(this.ctx,t,s);case"Until":return pr(this.ctx,t);case"Case":return mr(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Tn(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(n){if(n instanceof st)return S(n.stderr);throw n}}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 n=await $r(this.ctx,t);if(n.error)return n.error;let r=n.tempAssignments,i=n.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await me(this.ctx,t.redirections);if(w)return w;let b=_("",i,0);return B(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 a=t.name&&Ws(t.name,["local","declare","typeset","export","readonly"]),o=Array.from(r.keys());if(o.length>0&&!a){this.ctx.state.tempExportedVars=this.ctx.state.tempExportedVars||new Set;for(let y of o)this.ctx.state.tempExportedVars.add(y)}let f=await At(this.ctx,t.redirections);if(f){for(let[y,w]of r)w===void 0?this.ctx.state.env.delete(y):this.ctx.state.env.set(y,w);return f}let l=-1;for(let y of t.redirections){if((y.operator==="<<"||y.operator==="<<-")&&y.target.type==="HereDoc"){let w=y.target,b=await I(this.ctx,w.content);w.stripTabs&&(b=b.split(`
661
- `).map(O=>O.replace(/^\t+/,"")).join(`
662
- `));let C=y.fd??0;C!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set(C,b)):s=b;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await I(this.ctx,y.target)}
663
- `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await I(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 I(this.ctx,y.target);for(let[b,C]of r)C===void 0?this.ctx.state.env.delete(b):this.ctx.state.env.set(b,C);return S(`bash: ${w}: No such file or directory
664
- `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await I(this.ctx,y.target),b=Number.parseInt(w,10);if(!Number.isNaN(b)&&this.ctx.state.fileDescriptors){let C=this.ctx.state.fileDescriptors.get(b);if(C!==void 0)if(C.startsWith("__rw__:")){let O=yr(C);O&&(s=O.content.slice(O.position),l=b)}else C.startsWith("__file__:")||C.startsWith("__file_append__:")||(s=C)}}}let c=await I(this.ctx,t.name),u=[],d=[];if(Ws(t.name,["local","declare","typeset","export","readonly"])&&(c==="local"||c==="declare"||c==="typeset"||c==="export"||c==="readonly"))for(let y of t.args){let w=await mn(this.ctx,y);if(w)u.push(w),d.push(!0);else{let b=await yn(this.ctx,y);if(b!==null)u.push(b),d.push(!0);else{let C=await he(this.ctx,y);for(let O of C.values)u.push(O),d.push(C.quoted)}}}else for(let y of t.args){let w=await he(this.ctx,y);for(let b of w.values)u.push(b),d.push(w.quoted)}if(!c){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(u.length>0){let w=u.shift();return d.shift(),await this.runCommand(w,u,d,s,!1,!1,l)}return _("","",this.ctx.state.lastExitCode)}return S(`bash: : command not found
665
- `,127)}if(c==="exec"&&(u.length===0||u[0]==="--")){for(let y of t.redirections){if(y.target.type==="HereDoc"||y.fdVariable)continue;let w=await I(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 C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile(C,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__file__:${C}`);break}case">>":{let C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(b,`__file_append__:${C}`);break}case"<":{let C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let O=await this.ctx.fs.readFile(C);this.ctx.state.fileDescriptors.set(b,O)}catch{return S(`bash: ${w}: No such file or directory
666
- `)}break}case"<>":{let C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let O=await this.ctx.fs.readFile(C);this.ctx.state.fileDescriptors.set(b,`__rw__:${C.length}:${C}:0:${O}`)}catch{await this.ctx.fs.writeFile(C,"","utf8"),this.ctx.state.fileDescriptors.set(b,`__rw__:${C.length}:${C}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let C=w.slice(0,-1),O=Number.parseInt(C,10);if(!Number.isNaN(O)){let D=this.ctx.state.fileDescriptors.get(O);D!==void 0?this.ctx.state.fileDescriptors.set(b,D):this.ctx.state.fileDescriptors.set(b,`__dupout__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let C=Number.parseInt(w,10);Number.isNaN(C)||this.ctx.state.fileDescriptors.set(b,`__dupout__:${C}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(b);else if(w.endsWith("-")){let C=w.slice(0,-1),O=Number.parseInt(C,10);if(!Number.isNaN(O)){let D=this.ctx.state.fileDescriptors.get(O);D!==void 0?this.ctx.state.fileDescriptors.set(b,D):this.ctx.state.fileDescriptors.set(b,`__dupin__:${O}`),this.ctx.state.fileDescriptors.delete(O)}}else{let C=Number.parseInt(w,10);Number.isNaN(C)||this.ctx.state.fileDescriptors.set(b,`__dupin__:${C}`)}break}}}for(let[y,w]of r)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 r.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await vr(this.ctx,c,u);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,g=null;try{p=await this.runCommand(c,u,d,s,!1,!1,l)}catch(y){if(y instanceof ne||y instanceof re)g=y,p=L;else throw y}let v=i+m;if(v&&(p={...p,stderr:v+p.stderr}),p=await B(this.ctx,p,t.redirections),g)throw g;if(u.length>0){let y=u[u.length-1];if((c==="declare"||c==="local"||c==="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=c;let $=On(c)&&c!=="unset"&&c!=="eval";if(!this.ctx.state.options.posix||!$)for(let[y,w]of r)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 r.keys())this.ctx.state.tempExportedVars.delete(y);return r.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,n,r,i=!1,a=!1,o=-1){let f={ctx:this.ctx,runCommand:(c,u,d,h,m,p,g)=>this.runCommand(c,u,d,h,m,p,g),buildExportedEnv:()=>this.buildExportedEnv(),executeUserScript:(c,u,d)=>this.executeUserScript(c,u,d)},l=await lr(f,t,s,n,r,i,a,o);return l!==null?l:cr(f,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return qt(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Dt(this.ctx,t)}async executeSubshell(t,s=""){return Ar(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return _r(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await me(this.ctx,t.redirections);if(s)return s;try{let n=await V(this.ctx,t.expression.expression),r=U(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),B(this.ctx,r,t.redirections)}catch(n){let r=S(`bash: arithmetic expression: ${n.message}
667
- `);return B(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await me(this.ctx,t.redirections);if(s)return s;try{let n=await _e(this.ctx,t.expression),r=U(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),B(this.ctx,r,t.redirections)}catch(n){let r=n instanceof Pe?1:2,i=S(`bash: conditional expression: ${n.message}
668
- `,r);return B(this.ctx,i,t.redirections)}}};var ve={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4};function Pr(e){return e?{maxCallDepth:e.maxCallDepth??ve.maxCallDepth,maxCommandCount:e.maxCommandCount??ve.maxCommandCount,maxLoopIterations:e.maxLoopIterations??ve.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??ve.maxAwkIterations,maxSedIterations:e.maxSedIterations??ve.maxSedIterations,maxJqIterations:e.maxJqIterations??ve.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??ve.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??ve.maxPythonTimeoutMs}:{...ve}}function Nr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function na(e){let t=Nr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function ra(e,t){let s=Nr(e);if(!s)return!1;let n=na(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function Fs(e,t){return!t||t.length===0?!1:t.some(s=>ra(e,s))}var Qe=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},Je=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},et=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},It=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var ia=20,aa=3e4,oa=["GET","HEAD"],la=new Set(["GET","HEAD","OPTIONS"]),ca=new Set([301,302,303,307,308]);function Ms(e){let t=e.maxRedirects??ia,s=e.timeoutMs??aa,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??oa;function r(o){if(!e.dangerouslyAllowFullInternetAccess&&!Fs(o,e.allowedUrlPrefixes??[]))throw new Qe(o)}function i(o){if(e.dangerouslyAllowFullInternetAccess)return;let f=o.toUpperCase();if(!n.includes(f))throw new It(f,n)}async function a(o,f={}){let l=f.method?.toUpperCase()??"GET";r(o),i(l);let c=o,u=0,d=f.followRedirects??!0,h=f.timeoutMs!==void 0?Math.min(f.timeoutMs,s):s;for(;;){let m=new AbortController,p=setTimeout(()=>m.abort(),h);try{let g={method:l,headers:f.headers,signal:m.signal,redirect:"manual"};f.body&&!la.has(l)&&(g.body=f.body);let v=await fetch(c,g);if(ca.has(v.status)&&d){let $=v.headers.get("location");if(!$)return await kr(v,c);let N=new URL($,c).href;if(!e.dangerouslyAllowFullInternetAccess&&!Fs(N,e.allowedUrlPrefixes??[]))throw new et(N);if(u++,u>t)throw new Je(t);c=N;continue}return await kr(v,c)}finally{clearTimeout(p)}}}return a}async function kr(e,t){let s=Object.create(null);return e.headers.forEach((n,r)=>{s[r.toLowerCase()]=n}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}var xt=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;state;constructor(t={}){let s=t.fs??new je(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
669
- `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Pr({...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=Ms(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.state={env:r,cwd:n,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",jt(this.state.options)),this.state.env.set("BASHOPTS",Ht(this.state.shoptOptions)),cn(s,this.useDefaultLayout),n!=="/"&&s instanceof je)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of nn(t.commands))this.registerCommand(i);if(t.network)for(let i of rn())this.registerCommand(i);if(t.python)for(let i of an())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)on(i)?this.registerCommand(ln(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
661
+ `);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++,n&&(e.state.groupStdin=n),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 M().parse(i),E=await r(b);return p(),E}catch(g){if(p(),g instanceof V||g instanceof te)throw g;if(g.name==="ParseException")return S(`bash: ${t}: ${g.message}
662
+ `);throw g}}var tt=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,n=new Set;if(t)for(let i of t)n.add(i);if(s)for(let i of s)n.add(i);if(n.size===0)return Object.create(null);let r=Object.create(null);for(let i of n){let o=this.ctx.state.env.get(i);o!==void 0&&(r[i]=o)}return r}async executeScript(t){let s="",n="",r=0;for(let i of t.statements)try{let o=await this.executeStatement(i);s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}catch(o){if(o instanceof V)throw o.prependOutput(s,n),o;if(o instanceof de)return s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(o instanceof te)throw o;if(o instanceof ue)return s+=o.stdout,n+=o.stderr,r=o.exitCode,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(o instanceof Gs)return s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(o instanceof it)return s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r)),{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)};if(o instanceof xe){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof Ks){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof ae||o instanceof le){if(this.ctx.state.loopDepth>0)throw o.prependOutput(s,n),o;s+=o.stdout,n+=o.stderr;continue}throw o instanceof se&&o.prependOutput(s,n),o}return{stdout:s,stderr:n,exitCode:r,env:_e(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Ir(this.ctx,t,s,n,r=>this.executeScript(r))}async executeStatement(t){if(this.ctx.state.commandCount++,this.ctx.state.commandCount>this.ctx.limits.maxCommandCount&&Se(`too many commands executed (>${this.ctx.limits.maxCommandCount}), increase executionLimits.maxCommandCount`,"commands"),t.deferredError)throw new lt(t.deferredError.message,t.line??1,1);if(this.ctx.state.options.noexec)return L;this.ctx.state.errexitSafe=!1;let s="",n="";this.ctx.state.options.verbose&&!this.ctx.state.suppressVerbose&&t.sourceText&&(n+=`${t.sourceText}
663
+ `);let r=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==="&&"&&r!==0||f==="||"&&r===0)continue;let d=await this.executePipeline(u);s+=d.stdout,n+=d.stderr,r=d.exitCode,i=c,o=u.negated,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r))}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&&r!==0&&i===t.pipelines.length-1&&!o&&!this.ctx.state.inCondition&&!l)throw new ue(r,s,n);return _(s,n,r)}async executePipeline(t){return Nr(this.ctx,t,(s,n)=>this.executeCommand(s,n))}async executeCommand(t,s){switch(t.type){case"SimpleCommand":return this.executeSimpleCommand(t,s);case"If":return wr(this.ctx,t);case"For":return vr(this.ctx,t);case"CStyleFor":return br(this.ctx,t);case"While":return Er(this.ctx,t,s);case"Until":return $r(this.ctx,t);case"Case":return Sr(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return Vn(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(n){if(n instanceof ot)return S(n.stderr);throw n}}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 n=await Or(this.ctx,t);if(n.error)return n.error;let r=n.tempAssignments,i=n.xtraceOutput;if(!t.name){if(t.redirections.length>0){let w=await be(this.ctx,t.redirections);if(w)return w;let v=_("",i,0);return B(this.ctx,v,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&&js(t.name,["local","declare","typeset","export","readonly"]),a=Array.from(r.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 kt(this.ctx,t.redirections);if(l){for(let[y,w]of r)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 T(this.ctx,w.content);w.stripTabs&&(v=v.split(`
664
+ `).map(x=>x.replace(/^\t+/,"")).join(`
665
+ `));let C=y.fd??0;C!==0?(this.ctx.state.fileDescriptors||(this.ctx.state.fileDescriptors=new Map),this.ctx.state.fileDescriptors.set(C,v)):s=v;continue}if(y.operator==="<<<"&&y.target.type==="Word"){s=`${await T(this.ctx,y.target)}
666
+ `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await T(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 T(this.ctx,y.target);for(let[v,C]of r)C===void 0?this.ctx.state.env.delete(v):this.ctx.state.env.set(v,C);return S(`bash: ${w}: No such file or directory
667
+ `)}if(y.operator==="<&"&&y.target.type==="Word"){let w=await T(this.ctx,y.target),v=Number.parseInt(w,10);if(!Number.isNaN(v)&&this.ctx.state.fileDescriptors){let C=this.ctx.state.fileDescriptors.get(v);if(C!==void 0)if(C.startsWith("__rw__:")){let x=Ar(C);x&&(s=x.content.slice(x.position),c=v)}else C.startsWith("__file__:")||C.startsWith("__file_append__:")||(s=C)}}}let u=await T(this.ctx,t.name),f=[],d=[];if(js(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 Sn(this.ctx,y);if(w)f.push(w),d.push(!0);else{let v=await An(this.ctx,y);if(v!==null)f.push(v),d.push(!0);else{let C=await we(this.ctx,y);for(let x of C.values)f.push(x),d.push(C.quoted)}}}else for(let y of t.args){let w=await we(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 _("","",this.ctx.state.lastExitCode)}return S(`bash: : command not found
668
+ `,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 T(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 C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);await this.ctx.fs.writeFile(C,"","utf8"),this.ctx.state.fileDescriptors.set(v,`__file__:${C}`);break}case">>":{let C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);this.ctx.state.fileDescriptors.set(v,`__file_append__:${C}`);break}case"<":{let C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let x=await this.ctx.fs.readFile(C);this.ctx.state.fileDescriptors.set(v,x)}catch{return S(`bash: ${w}: No such file or directory
669
+ `)}break}case"<>":{let C=this.ctx.fs.resolvePath(this.ctx.state.cwd,w);try{let x=await this.ctx.fs.readFile(C);this.ctx.state.fileDescriptors.set(v,`__rw__:${C.length}:${C}:0:${x}`)}catch{await this.ctx.fs.writeFile(C,"","utf8"),this.ctx.state.fileDescriptors.set(v,`__rw__:${C.length}:${C}:0:`)}break}case">&":{if(w==="-")this.ctx.state.fileDescriptors.delete(v);else if(w.endsWith("-")){let C=w.slice(0,-1),x=Number.parseInt(C,10);if(!Number.isNaN(x)){let D=this.ctx.state.fileDescriptors.get(x);D!==void 0?this.ctx.state.fileDescriptors.set(v,D):this.ctx.state.fileDescriptors.set(v,`__dupout__:${x}`),this.ctx.state.fileDescriptors.delete(x)}}else{let C=Number.parseInt(w,10);Number.isNaN(C)||this.ctx.state.fileDescriptors.set(v,`__dupout__:${C}`)}break}case"<&":{if(w==="-")this.ctx.state.fileDescriptors.delete(v);else if(w.endsWith("-")){let C=w.slice(0,-1),x=Number.parseInt(C,10);if(!Number.isNaN(x)){let D=this.ctx.state.fileDescriptors.get(x);D!==void 0?this.ctx.state.fileDescriptors.set(v,D):this.ctx.state.fileDescriptors.set(v,`__dupin__:${x}`),this.ctx.state.fileDescriptors.delete(x)}}else{let C=Number.parseInt(w,10);Number.isNaN(C)||this.ctx.state.fileDescriptors.set(v,`__dupin__:${C}`)}break}}}for(let[y,w]of r)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 r.keys())this.ctx.state.tempExportedVars.delete(y);return L}let m=await Pr(this.ctx,u,f);r.size>0&&(this.ctx.state.tempEnvBindings=this.ctx.state.tempEnvBindings||[],this.ctx.state.tempEnvBindings.push(new Map(r)));let p,g=null;try{p=await this.runCommand(u,f,d,s,!1,!1,c)}catch(y){if(y instanceof ae||y instanceof le)g=y,p=L;else throw y}let b=i+m;if(b&&(p={...p,stderr:b+p.stderr}),p=await B(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=Wn(u)&&u!=="unset"&&u!=="eval";if(!this.ctx.state.options.posix||!E)for(let[y,w]of r)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 r.keys())this.ctx.state.tempExportedVars.delete(y);return r.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,n,r,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 yr(l,t,s,n,r,i,o,a);return c!==null?c:gr(l,t,s,r,o)}aliasExpansionStack=new Set;expandAlias(t){return Qt(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Rt(this.ctx,t)}async executeSubshell(t,s=""){return Dr(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Tr(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await be(this.ctx,t.redirections);if(s)return s;try{let n=await z(this.ctx,t.expression.expression),r=U(n!==0);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),B(this.ctx,r,t.redirections)}catch(n){let r=S(`bash: arithmetic expression: ${n.message}
670
+ `);return B(this.ctx,r,t.redirections)}}async executeConditionalCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await be(this.ctx,t.redirections);if(s)return s;try{let n=await Ne(this.ctx,t.expression),r=U(n);return this.ctx.state.expansionStderr&&(r={...r,stderr:this.ctx.state.expansionStderr+r.stderr},this.ctx.state.expansionStderr=""),B(this.ctx,r,t.redirections)}catch(n){let r=n instanceof xe?1:2,i=S(`bash: conditional expression: ${n.message}
671
+ `,r);return B(this.ctx,i,t.redirections)}}};var re={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 Rr(e){return e?{maxCallDepth:e.maxCallDepth??re.maxCallDepth,maxCommandCount:e.maxCommandCount??re.maxCommandCount,maxLoopIterations:e.maxLoopIterations??re.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??re.maxAwkIterations,maxSedIterations:e.maxSedIterations??re.maxSedIterations,maxJqIterations:e.maxJqIterations??re.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??re.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??re.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??re.maxGlobOperations,maxStringLength:e.maxStringLength??re.maxStringLength,maxArrayElements:e.maxArrayElements??re.maxArrayElements,maxHeredocSize:e.maxHeredocSize??re.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??re.maxSubstitutionDepth}:{...re}}function Lr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function po(e){let t=Lr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function mo(e,t){let s=Lr(e);if(!s)return!1;let n=po(t);return!n||s.origin!==n.origin?!1:n.pathPrefix==="/"||n.pathPrefix===""?!0:s.pathname.startsWith(n.pathPrefix)}function Hs(e,t){return!t||t.length===0?!1:t.some(s=>mo(e,s))}var st=class extends Error{constructor(t){super(`Network access denied: URL not in allow-list: ${t}`),this.name="NetworkAccessDeniedError"}},nt=class extends Error{constructor(t){super(`Too many redirects (max: ${t})`),this.name="TooManyRedirectsError"}},rt=class extends Error{constructor(t){super(`Redirect target not in allow-list: ${t}`),this.name="RedirectNotAllowedError"}},Ft=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var yo=20,go=3e4,wo=["GET","HEAD"],vo=new Set(["GET","HEAD","OPTIONS"]),bo=new Set([301,302,303,307,308]);function Us(e){let t=e.maxRedirects??yo,s=e.timeoutMs??go,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??wo;function r(a){if(!e.dangerouslyAllowFullInternetAccess&&!Hs(a,e.allowedUrlPrefixes??[]))throw new st(a)}function i(a){if(e.dangerouslyAllowFullInternetAccess)return;let l=a.toUpperCase();if(!n.includes(l))throw new Ft(l,n)}async function o(a,l={}){let c=l.method?.toUpperCase()??"GET";r(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&&!vo.has(c)&&(g.body=l.body);let b=await fetch(u,g);if(bo.has(b.status)&&d){let E=b.headers.get("location");if(!E)return await Fr(b,u);let k=new URL(E,u).href;if(!e.dangerouslyAllowFullInternetAccess&&!Hs(k,e.allowedUrlPrefixes??[]))throw new rt(k);if(f++,f>t)throw new nt(t);u=k;continue}return await Fr(b,u)}finally{clearTimeout(p)}}}return o}async function Fr(e,t){let s=Object.create(null);return e.headers.forEach((n,r)=>{s[r.toLowerCase()]=n}),{status:e.status,statusText:e.statusText,headers:s,body:await e.text(),url:t}}function Wr(){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 Wt=typeof __BROWSER__<"u"&&__BROWSER__;function Mr(){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 Zs=null;if(!Wt)try{let{createRequire:e}=await import("node:module");Zs=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 Eo=`
672
+
673
+ This is a defense-in-depth measure and indicates a bug in just-bash. Please report this at security@vercel.com`,ie=class extends Error{violation;constructor(t,s){super(t+Eo),this.violation=s,this.name="SecurityViolationError"}},ce=!Wt&&Zs?new Zs:null,$o=1e3,qs={enabled:!0,auditMode:!1};function So(e){return e===void 0?{...qs,enabled:!1}:typeof e=="boolean"?{...qs,enabled:e}:{...qs,...e}}var Mt=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(So(t))),e.instance}static resetInstance(){e.instance&&(e.instance.forceDeactivate(),e.instance=null)}static isInSandboxedContext(){return ce?ce?.getStore()?.sandboxActive===!0:!1}static getCurrentExecutionId(){if(ce)return ce?.getStore()?.executionId}updateConfig(t){this.config={...this.config,...t}}activate(){if(Wt||!this.config.enabled){let s=Mr();return{run:n=>n(),deactivate:()=>{},executionId:s}}this.refCount++,this.refCount===1&&(this.applyPatches(),this.activationTime=Date.now());let t=Mr();return{run:s=>ce.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 Wt||this.config.auditMode||!ce?!1:ce?.getStore()?.sandboxActive===!0}recordViolation(t,s,n){let r={timestamp:Date.now(),type:t,message:n,path:s,stack:new Error().stack,executionId:ce?.getStore()?.executionId};if(this.violations.length<$o&&this.violations.push(r),this.config.onViolation)try{this.config.onViolation(r)}catch(i){console.debug("[DefenseInDepthBox] onViolation callback threw:",i instanceof Error?i.message:i)}return r}createBlockingProxy(t,s,n){let r=this;return new Proxy(t,{apply(i,o,a){if(r.shouldBlock()){let l=`${s} is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(l,c)}return r.config.auditMode&&ce?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} called (audit mode)`),Reflect.apply(i,o,a)},construct(i,o,a){if(r.shouldBlock()){let l=`${s} constructor is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(l,c)}return r.config.auditMode&&ce?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} constructor called (audit mode)`),Reflect.construct(i,o,a)}})}createBlockingObjectProxy(t,s,n){let r=this;return new Proxy(t,{get(i,o,a){if(r.shouldBlock()){let l=`${s}.${String(o)}`,c=`${l} is blocked during script execution`,u=r.recordViolation(n,l,c);throw new ie(c,u)}if(r.config.auditMode&&ce?.getStore()?.sandboxActive===!0){let l=`${s}.${String(o)}`;r.recordViolation(n,l,`${l} accessed (audit mode)`)}return Reflect.get(i,o,a)},set(i,o,a,l){if(r.shouldBlock()){let c=`${s}.${String(o)}`,u=`${c} modification is blocked during script execution`,f=r.recordViolation(n,c,u);throw new ie(u,f)}return Reflect.set(i,o,a,l)},ownKeys(i){if(r.shouldBlock()){let o=`${s} enumeration is blocked during script execution`,a=r.recordViolation(n,s,o);throw new ie(o,a)}return Reflect.ownKeys(i)},getOwnPropertyDescriptor(i,o){if(r.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} descriptor access is blocked during script execution`,c=r.recordViolation(n,a,l);throw new ie(l,c)}return Reflect.getOwnPropertyDescriptor(i,o)},has(i,o){if(r.shouldBlock()){let a=`${s}.${String(o)}`,l=`${a} existence check is blocked during script execution`,c=r.recordViolation(n,a,l);throw new ie(l,c)}return Reflect.has(i,o)}})}applyPatches(){let t=Wr();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 n=s?.value;Object.defineProperty(Error,"prepareStackTrace",{get(){return n},set(r){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 ie(i,o)}t.config.auditMode&&ce?.getStore()?.sandboxActive===!0&&t.recordViolation("error_prepare_stack_trace","Error.prepareStackTrace","Error.prepareStackTrace set (audit mode)"),n=r},configurable:!0})}catch(s){console.debug("[DefenseInDepthBox] Could not protect Error.prepareStackTrace:",s instanceof Error?s.message:s)}}patchPrototypeConstructor(t,s,n){let r=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(r.shouldBlock()){let a=`${s} access is blocked during script execution`,l=r.recordViolation(n,s,a);throw new ie(a,l)}return r.config.auditMode&&ce?.getStore()?.sandboxActive===!0&&r.recordViolation(n,s,`${s} accessed (audit mode)`),o},set(a){if(r.shouldBlock()){let l=`${s} modification is blocked during script execution`,c=r.recordViolation(n,s,l);throw new ie(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:n,violationType:r,strategy:i}=t;try{let o=s[n];if(o===void 0)return;let a=Object.getOwnPropertyDescriptor(s,n);if(this.originalDescriptors.push({target:s,prop:n,descriptor:a}),i==="freeze")typeof o=="object"&&o!==null&&Object.freeze(o);else{let l=this.getPathForTarget(s,n),c=typeof o=="function"?this.createBlockingProxy(o,l,r):this.createBlockingObjectProxy(o,l,r);Object.defineProperty(s,n,{value:c,writable:!0,configurable:!0})}}catch(o){let a=this.getPathForTarget(s,n);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:n,descriptor:r}=this.originalDescriptors[t];try{r?Object.defineProperty(s,n,r):delete s[n]}catch(i){let o=this.getPathForTarget(s,n);console.debug(`[DefenseInDepthBox] Could not restore ${o}:`,i instanceof Error?i.message:i)}}this.originalDescriptors=[]}};var Vt=class{fs;commands=new Map;useDefaultLayout=!1;limits;secureFetch;sleepFn;traceFn;logger;defenseInDepthConfig;state;constructor(t={}){let s=t.fs??new Ze(t.files);this.fs=s,this.useDefaultLayout=!t.cwd&&!t.files;let n=t.cwd||(this.useDefaultLayout?"/home/user":"/"),r=new Map([["HOME",this.useDefaultLayout?"/home/user":"/"],["PATH","/usr/bin:/bin"],["IFS",`
674
+ `],["OSTYPE","linux-gnu"],["MACHTYPE","x86_64-pc-linux-gnu"],["HOSTTYPE","x86_64"],["HOSTNAME","localhost"],["PWD",n],["OLDPWD",n],["OPTIND","1"],...Object.entries(t.env??{})]);if(this.limits=Rr({...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=Us(t.network)),this.sleepFn=t.sleep,this.traceFn=t.trace,this.logger=t.logger,this.defenseInDepthConfig=t.defenseInDepth,this.state={env:r,cwd:n,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",Kt(this.state.options)),this.state.env.set("BASHOPTS",Xt(this.state.shoptOptions)),gn(s,this.useDefaultLayout),n!=="/"&&s instanceof Ze)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of dn(t.commands))this.registerCommand(i);if(t.network)for(let i of hn())this.registerCommand(i);if(t.python)for(let i of pn())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)mn(i)?this.registerCommand(yn(i)):this.registerCommand(i)}registerCommand(t){this.commands.set(t.name,t);let s=this.fs;if(typeof s.writeFileSync=="function"){let n=`#!/bin/bash
670
675
  # Built-in command: ${t.name}
671
676
  `;try{s.writeFileSync(`/bin/${t.name}`,n)}catch{}try{s.writeFileSync(`/usr/bin/${t.name}`,n)}catch{}}}logResult(t){return this.logger&&(t.stdout&&this.logger.debug("stdout",{output:t.stdout}),t.stderr&&this.logger.info("stderr",{output:t.stderr}),this.logger.info("exit",{exitCode:t.exitCode})),t}async exec(t,s){if(this.state.callDepth===0&&(this.state.commandCount=0),this.state.commandCount++,this.state.commandCount>this.limits.maxCommandCount)return{stdout:"",stderr:`bash: maximum command count (${this.limits.maxCommandCount}) exceeded (possible infinite loop). Increase with executionLimits.maxCommandCount option.
672
- `,exitCode:1,env:fe(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:fe(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let a=new Map(this.state.env);if(s?.env)for(let[l,c]of Object.entries(s.env))a.set(l,c);r!==void 0&&a.set("PWD",r);let o={...this.state,env:a,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable},f=t;s?.rawScript||(f=fa(t));try{let l=ue(f),c={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn},d=await new Ye(c,o).executeScript(l);return this.logResult(d)}catch(l){if(l instanceof z)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode,env:fe(this.state.env,s?.env)});if(l instanceof oe)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode,env:fe(this.state.env,s?.env)});if(l instanceof Pe)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:1,env:fe(this.state.env,s?.env)});if(l instanceof J)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:J.EXIT_CODE,env:fe(this.state.env,s?.env)});if(l.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${l.message}
673
- `,exitCode:2,env:fe(this.state.env,s?.env)});if(l instanceof Hs)return this.logResult({stdout:"",stderr:`bash: ${l.message}
674
- `,exitCode:2,env:fe(this.state.env,s?.env)});if(l instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${l.message}
675
- `,exitCode:1,env:fe(this.state.env,s?.env)});throw l}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,s){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),s)}getCwd(){return this.state.cwd}getEnv(){return Ee(this.state.env)}};function fa(e){let t=e.split(`
676
- `),s=[],n=[];for(let r=0;r<t.length;r++){let i=t[r];if(n.length>0){let f=n[n.length-1];if((f.stripTabs?i.replace(/^\t+/,""):i)===f.delimiter){s.push(i.trimStart()),n.pop();continue}s.push(i);continue}let a=i.trimStart();s.push(a);let o=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let f of a.matchAll(o)){let l=f[1]==="-",c=f[3];n.push({delimiter:c,stripTabs:l})}}return s.join(`
677
- `)}import*as Z from"node:fs";import*as Me from"node:path";var ua="/home/user/project",ze=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=Me.resolve(t.root);let s=t.mountPoint??ua;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);if(this.readOnly=t.readOnly??!1,!Z.existsSync(this.root))throw new Error(`OverlayFs root does not exist: ${this.root}`);if(!Z.statSync(this.root).isDirectory())throw new Error(`OverlayFs root is not a directory: ${this.root}`);this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=this.normalizePath(t).split("/").filter(Boolean),i="";for(let a of r)i+=`/${a}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=this.normalizePath(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=this.normalizePath(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=Me.join(this.root,n),i=Me.resolve(r);return!i.startsWith(this.root)&&i!==this.root.replace(/\/$/,"")?null:i}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=this.normalizePath(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.toRealPath(s);if(!n)return!1;try{return await Z.promises.access(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=Ae(s);return lt(n,r)}async readFileBuffer(t,s=new Set){let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.readFileBuffer(a,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let a=await Z.promises.lstat(i);if(a.isSymbolicLink()){let f=await Z.promises.readlink(i),l=this.resolveSymlink(n,f);return this.readFileBuffer(l,s)}if(a.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);let o=await Z.promises.readFile(i);return new Uint8Array(o)}catch(a){throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):a}}async writeFile(t,s,n){this.assertWritable(`write '${t}'`);let r=this.normalizePath(t);this.ensureParentDirs(r);let i=Ae(n),a=Ie(s,i);this.memory.set(r,{type:"file",content:a,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){this.assertWritable(`append '${t}'`);let r=this.normalizePath(t),i=Ae(n),a=Ie(s,i),o;try{o=await this.readFileBuffer(r)}catch{o=new Uint8Array(0)}let f=new Uint8Array(o.length+a.length);f.set(o),f.set(a,o.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:f,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return this.existsInOverlay(t)}async stat(t,s=new Set){let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.stat(o,s)}let a=0;return r.type==="file"&&(a=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:a,mtime:r.mtime}}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let a=await Z.promises.stat(i);return{isFile:a.isFile(),isDirectory:a.isDirectory(),isSymbolicLink:!1,mode:a.mode,size:a.size,mtime:a.mtime}}catch(a){throw a.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):a}}async lstat(t){let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await Z.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):i}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}async mkdir(t,s){this.assertWritable(`mkdir '${t}'`);let n=this.normalizePath(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let o of this.deleted)if(o.startsWith(i)){let f=o.slice(i.length),l=f.split("/")[0];l&&!f.includes("/",l.length)&&r.add(l)}for(let[o,f]of this.memory)if(o!==s&&o.startsWith(i)){let l=o.slice(i.length),c=l.split("/")[0];c&&!r.has(c)&&!l.includes("/",1)&&n.set(c,{name:c,isFile:f.type==="file",isDirectory:f.type==="directory",isSymbolicLink:f.type==="symlink"})}let a=this.toRealPath(s);if(a)try{let o=await Z.promises.readdir(a,{withFileTypes:!0});for(let f of o)!r.has(f.name)&&!n.has(f.name)&&n.set(f.name,{name:f.name,isFile:f.isFile(),isDirectory:f.isDirectory(),isSymbolicLink:f.isSymbolicLink()})}catch(o){if(o.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else if(o.code!=="ENOTDIR")throw o}return n}async resolveForReaddir(t,s=!1){let n=this.normalizePath(t),r=new Set,i=s,a=this.memory.get(n);for(;a&&a.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,a.target),a=this.memory.get(n)}if(a)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let f=this.toRealPath(n);if(!f)return{normalized:n,outsideOverlay:!0};try{if((await Z.promises.lstat(f)).isSymbolicLink()){let c=await Z.promises.readlink(f),u=this.resolveSymlink(n,c);return this.resolveForReaddir(u,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,a)=>i<a?-1:i>a?1:0)}async readdirWithFileTypes(t){let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,a)=>i.name<a.name?-1:i.name>a.name?1:0)}async rm(t,s){this.assertWritable(`rm '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let a=await this.readdir(n);if(a.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let o of a){let f=n==="/"?`/${o}`:`${n}/${o}`;await this.rm(f,s)}}}}catch{}this.deleted.add(n),this.memory.delete(n)}async cp(t,s,n){this.assertWritable(`cp '${s}'`);let r=this.normalizePath(t),i=this.normalizePath(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let o=await this.stat(r);if(o.isFile){let f=await this.readFileBuffer(r);await this.writeFile(i,f)}else if(o.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let f=await this.readdir(r);for(let l of f){let c=r==="/"?`/${l}`:`${r}/${l}`,u=i==="/"?`/${l}`:`${i}/${l}`;await this.cp(c,u,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.toRealPath(t);if(n)try{let r=Z.readdirSync(n);for(let i of r){let a=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(a))continue;s.add(a);let o=Me.join(n,i);Z.statSync(o).isDirectory()&&this.scanRealFs(a,s)}}catch{}}async chmod(t,s){this.assertWritable(`chmod '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let a=await this.stat(n);if(a.isFile){let o=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:o,mode:s,mtime:new Date})}else a.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){this.assertWritable(`symlink '${s}'`);let n=this.normalizePath(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){this.assertWritable(`link '${s}'`);let n=this.normalizePath(t),r=this.normalizePath(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let a=await this.stat(n);if(!a.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let f=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:f,mode:a.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{return await Z.promises.readlink(r)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):i.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):i}}async realpath(t){let s=this.normalizePath(t),n=new Set,r=async o=>{let f=o==="/"?[]:o.slice(1).split("/"),l="";for(let c of f){if(l=`${l}/${c}`,n.has(l))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(l))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let u=this.memory.get(l),d=0,h=40;for(;u&&u.type==="symlink"&&d<h;){if(n.add(l),l=this.resolveSymlink(l,u.target),d++,n.has(l))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(l))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);u=this.memory.get(l)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!u){let m=this.toRealPath(l);if(m)try{if((await Z.promises.lstat(m)).isSymbolicLink()){let g=await Z.promises.readlink(m);return n.add(l),l=this.resolveSymlink(l,g),r(l)}}catch(p){throw p.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}}}return l||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){this.assertWritable(`utimes '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let a=this.memory.get(r);if(a){a.mtime=n;return}let o=await this.stat(r);if(o.isFile){let f=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:f,mode:o.mode,mtime:n})}else o.isDirectory&&this.memory.set(r,{type:"directory",mode:o.mode,mtime:n})}};function Dr(){console.log(`just-bash - A secure bash environment for AI agents
677
+ `,exitCode:1,env:he(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:he(this.state.env,s?.env)};this.logger?.info("exec",{command:t});let n=s?.cwd??this.state.cwd,r,i=n;if(s?.cwd)if(s.env&&"PWD"in s.env)r=s.env.PWD;else if(s?.env&&!("PWD"in s.env))try{r=await this.fs.realpath(n),i=r}catch{r=n}else r=n;let o=new Map(this.state.env);if(s?.env)for(let[f,d]of Object.entries(s.env))o.set(f,d);r!==void 0&&o.set("PWD",r);let a={...this.state,env:o,cwd:i,functions:new Map(this.state.functions),localScopes:[...this.state.localScopes],options:{...this.state.options},hashTable:this.state.hashTable},l=t;s?.rawScript||(l=Ao(t));let u=(this.defenseInDepthConfig?Mt.getInstance(this.defenseInDepthConfig):null)?.activate();try{let f=async()=>{let d=ye(l),h={fs:this.fs,commands:this.commands,limits:this.limits,exec:this.exec.bind(this),fetch:this.secureFetch,sleep:this.sleepFn,trace:this.traceFn},p=await new tt(h,a).executeScript(d);return this.logResult(p)};return u?await u.run(f):await f()}catch(f){if(f instanceof V)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:he(this.state.env,s?.env)});if(f instanceof de)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:he(this.state.env,s?.env)});if(f instanceof xe)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:he(this.state.env,s?.env)});if(f instanceof te)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:te.EXIT_CODE,env:he(this.state.env,s?.env)});if(f instanceof ie)return this.logResult({stdout:"",stderr:`bash: security violation: ${f.message}
678
+ `,exitCode:1,env:he(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${f.message}
679
+ `,exitCode:2,env:he(this.state.env,s?.env)});if(f instanceof Qs)return this.logResult({stdout:"",stderr:`bash: ${f.message}
680
+ `,exitCode:2,env:he(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${f.message}
681
+ `,exitCode:1,env:he(this.state.env,s?.env)});throw f}finally{u?.deactivate()}}async readFile(t){return this.fs.readFile(this.fs.resolvePath(this.state.cwd,t))}async writeFile(t,s){return this.fs.writeFile(this.fs.resolvePath(this.state.cwd,t),s)}getCwd(){return this.state.cwd}getEnv(){return _e(this.state.env)}};function Ao(e){let t=e.split(`
682
+ `),s=[],n=[];for(let r=0;r<t.length;r++){let i=t[r];if(n.length>0){let l=n[n.length-1];if((l.stripTabs?i.replace(/^\t+/,""):i)===l.delimiter){s.push(i.trimStart()),n.pop();continue}s.push(i);continue}let o=i.trimStart();s.push(o);let a=/<<(-?)\s*(['"]?)([\w-]+)\2/g;for(let l of o.matchAll(a)){let c=l[1]==="-",u=l[3];n.push({delimiter:u,stripTabs:c})}}return s.join(`
683
+ `)}import*as Z from"node:fs";import*as je from"node:path";var _o="/home/user/project";function Q(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var He=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=je.resolve(t.root);let s=t.mountPoint??_o;if(this.mountPoint=s==="/"?"/":s.replace(/\/+$/,""),!this.mountPoint.startsWith("/"))throw new Error(`Mount point must be an absolute path: ${s}`);if(this.readOnly=t.readOnly??!1,!Z.existsSync(this.root))throw new Error(`OverlayFs root does not exist: ${this.root}`);if(!Z.statSync(this.root).isDirectory())throw new Error(`OverlayFs root is not a directory: ${this.root}`);this.createMountPointDirs()}assertWritable(t){if(this.readOnly)throw new Error(`EROFS: read-only file system, ${t}`)}createMountPointDirs(){let t=this.mountPoint.split("/").filter(Boolean),s="";for(let n of t)s+=`/${n}`,this.memory.has(s)||this.memory.set(s,{type:"directory",mode:493,mtime:new Date});this.memory.has("/")||this.memory.set("/",{type:"directory",mode:493,mtime:new Date})}getMountPoint(){return this.mountPoint}mkdirSync(t,s){let r=this.normalizePath(t).split("/").filter(Boolean),i="";for(let o of r)i+=`/${o}`,this.memory.has(i)||this.memory.set(i,{type:"directory",mode:493,mtime:new Date})}writeFileSync(t,s){let n=this.normalizePath(t),r=this.getDirname(n);r!=="/"&&this.mkdirSync(r);let i=s instanceof Uint8Array?s:new TextEncoder().encode(s);this.memory.set(n,{type:"file",content:i,mode:420,mtime:new Date})}getDirname(t){let s=t.lastIndexOf("/");return s===0?"/":t.slice(0,s)}normalizePath(t){if(!t||t==="/")return"/";let s=t.endsWith("/")&&t!=="/"?t.slice(0,-1):t;s.startsWith("/")||(s=`/${s}`);let n=s.split("/").filter(i=>i&&i!=="."),r=[];for(let i of n)i===".."?r.pop():r.push(i);return`/${r.join("/")}`||"/"}getRelativeToMount(t){return this.mountPoint==="/"?t:t===this.mountPoint?"/":t.startsWith(`${this.mountPoint}/`)?t.slice(this.mountPoint.length):null}toRealPath(t){let s=this.normalizePath(t),n=this.getRelativeToMount(s);if(n===null)return null;let r=je.join(this.root,n),i=je.resolve(r);return!i.startsWith(this.root)&&i!==this.root.replace(/\/$/,"")?null:i}dirname(t){let s=this.normalizePath(t);if(s==="/")return"/";let n=s.lastIndexOf("/");return n===0?"/":s.slice(0,n)}ensureParentDirs(t){let s=this.dirname(t);s!=="/"&&(this.memory.has(s)||(this.ensureParentDirs(s),this.memory.set(s,{type:"directory",mode:493,mtime:new Date})),this.deleted.delete(s))}async existsInOverlay(t){let s=this.normalizePath(t);if(this.deleted.has(s))return!1;if(this.memory.has(s))return!0;let n=this.toRealPath(s);if(!n)return!1;try{return await Z.promises.access(n),!0}catch{return!1}}async readFile(t,s){let n=await this.readFileBuffer(t),r=ke(s);return dt(n,r)}async readFileBuffer(t,s=new Set){Q(t,"open");let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, open '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, open '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let o=this.resolveSymlink(n,r.target);return this.readFileBuffer(o,s)}if(r.type!=="file")throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);return r.content}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, open '${t}'`);try{let o=await Z.promises.lstat(i);if(o.isSymbolicLink()){let l=await Z.promises.readlink(i),c=this.resolveSymlink(n,l);return this.readFileBuffer(c,s)}if(o.isDirectory())throw new Error(`EISDIR: illegal operation on a directory, read '${t}'`);let a=await Z.promises.readFile(i);return new Uint8Array(a)}catch(o){throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, open '${t}'`):o}}async writeFile(t,s,n){Q(t,"write"),this.assertWritable(`write '${t}'`);let r=this.normalizePath(t);this.ensureParentDirs(r);let i=ke(n),o=Fe(s,i);this.memory.set(r,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){Q(t,"append"),this.assertWritable(`append '${t}'`);let r=this.normalizePath(t),i=ke(n),o=Fe(s,i),a;try{a=await this.readFileBuffer(r)}catch{a=new Uint8Array(0)}let l=new Uint8Array(a.length+o.length);l.set(a),l.set(o,a.length),this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:420,mtime:new Date}),this.deleted.delete(r)}async exists(t){return t.includes("\0")?!1:this.existsInOverlay(t)}async stat(t,s=new Set){Q(t,"stat");let n=this.normalizePath(t);if(s.has(n))throw new Error(`ELOOP: too many levels of symbolic links, stat '${t}'`);if(s.add(n),this.deleted.has(n))throw new Error(`ENOENT: no such file or directory, stat '${t}'`);let r=this.memory.get(n);if(r){if(r.type==="symlink"){let a=this.resolveSymlink(n,r.target);return this.stat(a,s)}let o=0;return r.type==="file"&&(o=r.content.length),{isFile:r.type==="file",isDirectory:r.type==="directory",isSymbolicLink:!1,mode:r.mode,size:o,mtime:r.mtime}}let i=this.toRealPath(n);if(!i)throw new Error(`ENOENT: no such file or directory, stat '${t}'`);try{let o=await Z.promises.stat(i);return{isFile:o.isFile(),isDirectory:o.isDirectory(),isSymbolicLink:!1,mode:o.mode,size:o.size,mtime:o.mtime}}catch(o){throw o.code==="ENOENT"?new Error(`ENOENT: no such file or directory, stat '${t}'`):o}}async lstat(t){Q(t,"lstat");let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);let n=this.memory.get(s);if(n){if(n.type==="symlink")return{isFile:!1,isDirectory:!1,isSymbolicLink:!0,mode:n.mode,size:n.target.length,mtime:n.mtime};let i=0;return n.type==="file"&&(i=n.content.length),{isFile:n.type==="file",isDirectory:n.type==="directory",isSymbolicLink:!1,mode:n.mode,size:i,mtime:n.mtime}}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, lstat '${t}'`);try{let i=await Z.promises.lstat(r);return{isFile:i.isFile(),isDirectory:i.isDirectory(),isSymbolicLink:i.isSymbolicLink(),mode:i.mode,size:i.size,mtime:i.mtime}}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, lstat '${t}'`):i}}resolveSymlink(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=this.dirname(t);return this.normalizePath(n==="/"?`/${s}`:`${n}/${s}`)}async mkdir(t,s){Q(t,"mkdir"),this.assertWritable(`mkdir '${t}'`);let n=this.normalizePath(t);if(await this.existsInOverlay(n)){if(!s?.recursive)throw new Error(`EEXIST: file already exists, mkdir '${t}'`);return}let i=this.dirname(n);if(i!=="/"&&!await this.existsInOverlay(i))if(s?.recursive)await this.mkdir(i,{recursive:!0});else throw new Error(`ENOENT: no such file or directory, mkdir '${t}'`);this.memory.set(n,{type:"directory",mode:493,mtime:new Date}),this.deleted.delete(n)}async readdirCore(t,s){if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`);let n=new Map,r=new Set,i=s==="/"?"/":`${s}/`;for(let a of this.deleted)if(a.startsWith(i)){let l=a.slice(i.length),c=l.split("/")[0];c&&!l.includes("/",c.length)&&r.add(c)}for(let[a,l]of this.memory)if(a!==s&&a.startsWith(i)){let c=a.slice(i.length),u=c.split("/")[0];u&&!r.has(u)&&!c.includes("/",1)&&n.set(u,{name:u,isFile:l.type==="file",isDirectory:l.type==="directory",isSymbolicLink:l.type==="symlink"})}let o=this.toRealPath(s);if(o)try{let a=await Z.promises.readdir(o,{withFileTypes:!0});for(let l of a)!r.has(l.name)&&!n.has(l.name)&&n.set(l.name,{name:l.name,isFile:l.isFile(),isDirectory:l.isDirectory(),isSymbolicLink:l.isSymbolicLink()})}catch(a){if(a.code==="ENOENT"){if(!this.memory.has(s))throw new Error(`ENOENT: no such file or directory, scandir '${t}'`)}else if(a.code!=="ENOTDIR")throw a}return n}async resolveForReaddir(t,s=!1){let n=this.normalizePath(t),r=new Set,i=s,o=this.memory.get(n);for(;o&&o.type==="symlink";){if(r.has(n))throw new Error(`ELOOP: too many levels of symbolic links, scandir '${t}'`);r.add(n),i=!0,n=this.resolveSymlink(n,o.target),o=this.memory.get(n)}if(o)return{normalized:n,outsideOverlay:!1};if(this.getRelativeToMount(n)===null)return{normalized:n,outsideOverlay:!0};let l=this.toRealPath(n);if(!l)return{normalized:n,outsideOverlay:!0};try{if((await Z.promises.lstat(l)).isSymbolicLink()){let u=await Z.promises.readlink(l),f=this.resolveSymlink(n,u);return this.resolveForReaddir(f,!0)}return{normalized:n,outsideOverlay:!1}}catch{return i?{normalized:n,outsideOverlay:!0}:{normalized:n,outsideOverlay:!1}}}async readdir(t){Q(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.keys()).sort((i,o)=>i<o?-1:i>o?1:0)}async readdirWithFileTypes(t){Q(t,"scandir");let{normalized:s,outsideOverlay:n}=await this.resolveForReaddir(t);if(n)return[];let r=await this.readdirCore(t,s);return Array.from(r.values()).sort((i,o)=>i.name<o.name?-1:i.name>o.name?1:0)}async rm(t,s){Q(t,"rm"),this.assertWritable(`rm '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n)){if(s?.force)return;throw new Error(`ENOENT: no such file or directory, rm '${t}'`)}try{if((await this.stat(n)).isDirectory){let o=await this.readdir(n);if(o.length>0){if(!s?.recursive)throw new Error(`ENOTEMPTY: directory not empty, rm '${t}'`);for(let a of o){let l=n==="/"?`/${a}`:`${n}/${a}`;await this.rm(l,s)}}}}catch{}this.deleted.add(n),this.memory.delete(n)}async cp(t,s,n){Q(t,"cp"),Q(s,"cp"),this.assertWritable(`cp '${s}'`);let r=this.normalizePath(t),i=this.normalizePath(s);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, cp '${t}'`);let a=await this.stat(r);if(a.isFile){let l=await this.readFileBuffer(r);await this.writeFile(i,l)}else if(a.isDirectory){if(!n?.recursive)throw new Error(`EISDIR: is a directory, cp '${t}'`);await this.mkdir(i,{recursive:!0});let l=await this.readdir(r);for(let c of l){let u=r==="/"?`/${c}`:`${r}/${c}`,f=i==="/"?`/${c}`:`${i}/${c}`;await this.cp(u,f,n)}}}async mv(t,s){this.assertWritable(`mv '${s}'`),await this.cp(t,s,{recursive:!0}),await this.rm(t,{recursive:!0})}resolvePath(t,s){if(s.startsWith("/"))return this.normalizePath(s);let n=t==="/"?`/${s}`:`${t}/${s}`;return this.normalizePath(n)}getAllPaths(){let t=new Set(this.memory.keys());for(let s of this.deleted)t.delete(s);return this.scanRealFs("/",t),Array.from(t)}scanRealFs(t,s){if(this.deleted.has(t))return;let n=this.toRealPath(t);if(n)try{let r=Z.readdirSync(n);for(let i of r){let o=t==="/"?`/${i}`:`${t}/${i}`;if(this.deleted.has(o))continue;s.add(o);let a=je.join(n,i);Z.statSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){Q(t,"chmod"),this.assertWritable(`chmod '${t}'`);let n=this.normalizePath(t);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, chmod '${t}'`);let i=this.memory.get(n);if(i){i.mode=s;return}let o=await this.stat(n);if(o.isFile){let a=await this.readFileBuffer(n);this.memory.set(n,{type:"file",content:a,mode:s,mtime:new Date})}else o.isDirectory&&this.memory.set(n,{type:"directory",mode:s,mtime:new Date})}async symlink(t,s){Q(s,"symlink"),this.assertWritable(`symlink '${s}'`);let n=this.normalizePath(s);if(await this.existsInOverlay(n))throw new Error(`EEXIST: file already exists, symlink '${s}'`);this.ensureParentDirs(n),this.memory.set(n,{type:"symlink",target:t,mode:511,mtime:new Date}),this.deleted.delete(n)}async link(t,s){Q(t,"link"),Q(s,"link"),this.assertWritable(`link '${s}'`);let n=this.normalizePath(t),r=this.normalizePath(s);if(!await this.existsInOverlay(n))throw new Error(`ENOENT: no such file or directory, link '${t}'`);let o=await this.stat(n);if(!o.isFile)throw new Error(`EPERM: operation not permitted, link '${t}'`);if(await this.existsInOverlay(r))throw new Error(`EEXIST: file already exists, link '${s}'`);let l=await this.readFileBuffer(n);this.ensureParentDirs(r),this.memory.set(r,{type:"file",content:l,mode:o.mode,mtime:new Date}),this.deleted.delete(r)}async readlink(t){Q(t,"readlink");let s=this.normalizePath(t);if(this.deleted.has(s))throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);let n=this.memory.get(s);if(n){if(n.type!=="symlink")throw new Error(`EINVAL: invalid argument, readlink '${t}'`);return n.target}let r=this.toRealPath(s);if(!r)throw new Error(`ENOENT: no such file or directory, readlink '${t}'`);try{return await Z.promises.readlink(r)}catch(i){throw i.code==="ENOENT"?new Error(`ENOENT: no such file or directory, readlink '${t}'`):i.code==="EINVAL"?new Error(`EINVAL: invalid argument, readlink '${t}'`):i}}async realpath(t){Q(t,"realpath");let s=this.normalizePath(t),n=new Set,r=async a=>{let l=a==="/"?[]:a.slice(1).split("/"),c="";for(let u of l){if(c=`${c}/${u}`,n.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);let f=this.memory.get(c),d=0,h=40;for(;f&&f.type==="symlink"&&d<h;){if(n.add(c),c=this.resolveSymlink(c,f.target),d++,n.has(c))throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(this.deleted.has(c))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);f=this.memory.get(c)}if(d>=h)throw new Error(`ELOOP: too many levels of symbolic links, realpath '${t}'`);if(!f){let m=this.toRealPath(c);if(m)try{if((await Z.promises.lstat(m)).isSymbolicLink()){let g=await Z.promises.readlink(m);return n.add(c),c=this.resolveSymlink(c,g),r(c)}}catch(p){throw p.code==="ENOENT"?new Error(`ENOENT: no such file or directory, realpath '${t}'`):p}}}return c||"/"},i=await r(s);if(!await this.existsInOverlay(i))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return i}async utimes(t,s,n){Q(t,"utimes"),this.assertWritable(`utimes '${t}'`);let r=this.normalizePath(t);if(!await this.existsInOverlay(r))throw new Error(`ENOENT: no such file or directory, utimes '${t}'`);let o=this.memory.get(r);if(o){o.mtime=n;return}let a=await this.stat(r);if(a.isFile){let l=await this.readFileBuffer(r);this.memory.set(r,{type:"file",content:l,mode:a.mode,mtime:n})}else a.isDirectory&&this.memory.set(r,{type:"directory",mode:a.mode,mtime:n})}};function zr(){console.log(`just-bash - A secure bash environment for AI agents
678
684
 
679
685
  Usage:
680
686
  just-bash [options] [script-file]
@@ -720,5 +726,5 @@ Examples:
720
726
 
721
727
  # Allow write operations (writes stay in memory)
722
728
  just-bash -c 'echo test > /tmp/file.txt && cat /tmp/file.txt' --allow-write
723
- `)}function da(){console.log("just-bash 1.0.0")}function ha(e){let t={root:process.cwd(),cwd:"/",cwdOverridden:!1,errexit:!1,allowWrite:!1,python:!1,json:!1,help:!1,version:!1},s=0;for(;s<e.length;){let n=e[s];if(n==="-h"||n==="--help")t.help=!0,s++;else if(n==="-v"||n==="--version")t.version=!0,s++;else if(n==="-c")s+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[s+1],s+=2;else if(n==="-e"||n==="--errexit")t.errexit=!0,s++;else if(n==="--root")s+1>=e.length&&(console.error("Error: --root requires a path argument"),process.exit(1)),t.root=Or(e[s+1]),s+=2;else if(n==="--cwd")s+1>=e.length&&(console.error("Error: --cwd requires a path argument"),process.exit(1)),t.cwd=e[s+1],t.cwdOverridden=!0,s+=2;else if(n==="--json")t.json=!0,s++;else if(n==="--allow-write")t.allowWrite=!0,s++;else if(n==="--python")t.python=!0,s++;else if(n.startsWith("-"))if(n.length>2&&!n.startsWith("--")){let r=n.slice(1);for(let i of r)if(i==="e")t.errexit=!0;else if(i==="h")t.help=!0;else if(i==="v")t.version=!0;else if(i==="c"){s+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[s+1],s++;break}else console.error(`Error: Unknown option: -${i}`),process.exit(1);s++}else console.error(`Error: Unknown option: ${n}`),process.exit(1);else!t.scriptFile&&!t.script?t.scriptFile=n:t.scriptFile&&t.root===process.cwd()&&(t.root=Or(n)),s++}return t}async function pa(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}async function ma(){let e=process.argv.slice(2),t=ha(e);t.help&&(Dr(),process.exit(0)),t.version&&(da(),process.exit(0));let s;if(t.script)s=t.script;else if(t.scriptFile){let o=new ze({root:t.root}),f=o.getMountPoint();try{let l=t.scriptFile.startsWith("/")?t.scriptFile:`${f}/${t.scriptFile}`;s=await o.readFile(l,"utf-8")}catch(l){console.error(`Error: Cannot read script file: ${t.scriptFile}`),console.error(l instanceof Error?l.message:String(l)),process.exit(1)}}else process.stdin.isTTY?(Dr(),process.exit(1)):s=await pa();s.trim()||(t.json&&console.log(JSON.stringify({stdout:"",stderr:"",exitCode:0})),process.exit(0));let n=new ze({root:t.root,readOnly:!t.allowWrite}),r=n.getMountPoint(),i=t.cwdOverridden?t.cwd:r,a=new xt({fs:n,cwd:i,python:t.python});t.errexit&&(s=`set -e
724
- ${s}`);try{let o=await a.exec(s);t.json?console.log(JSON.stringify({stdout:o.stdout,stderr:o.stderr,exitCode:o.exitCode})):(o.stdout&&process.stdout.write(o.stdout),o.stderr&&process.stderr.write(o.stderr)),process.exit(o.exitCode)}catch(o){t.json?console.log(JSON.stringify({stdout:"",stderr:o instanceof Error?o.message:String(o),exitCode:1})):console.error(o instanceof Error?o.message:String(o)),process.exit(1)}}ma().catch(e=>{console.error("Fatal error:",e),process.exit(1)});
729
+ `)}function Co(){console.log("just-bash 1.0.0")}function Po(e){let t={root:process.cwd(),cwd:"/",cwdOverridden:!1,errexit:!1,allowWrite:!1,python:!1,json:!1,help:!1,version:!1},s=0;for(;s<e.length;){let n=e[s];if(n==="-h"||n==="--help")t.help=!0,s++;else if(n==="-v"||n==="--version")t.version=!0,s++;else if(n==="-c")s+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[s+1],s+=2;else if(n==="-e"||n==="--errexit")t.errexit=!0,s++;else if(n==="--root")s+1>=e.length&&(console.error("Error: --root requires a path argument"),process.exit(1)),t.root=Vr(e[s+1]),s+=2;else if(n==="--cwd")s+1>=e.length&&(console.error("Error: --cwd requires a path argument"),process.exit(1)),t.cwd=e[s+1],t.cwdOverridden=!0,s+=2;else if(n==="--json")t.json=!0,s++;else if(n==="--allow-write")t.allowWrite=!0,s++;else if(n==="--python")t.python=!0,s++;else if(n.startsWith("-"))if(n.length>2&&!n.startsWith("--")){let r=n.slice(1);for(let i of r)if(i==="e")t.errexit=!0;else if(i==="h")t.help=!0;else if(i==="v")t.version=!0;else if(i==="c"){s+1>=e.length&&(console.error("Error: -c requires a script argument"),process.exit(1)),t.script=e[s+1],s++;break}else console.error(`Error: Unknown option: -${i}`),process.exit(1);s++}else console.error(`Error: Unknown option: ${n}`),process.exit(1);else!t.scriptFile&&!t.script?t.scriptFile=n:t.scriptFile&&t.root===process.cwd()&&(t.root=Vr(n)),s++}return t}async function ko(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf-8")}async function No(){let e=process.argv.slice(2),t=Po(e);t.help&&(zr(),process.exit(0)),t.version&&(Co(),process.exit(0));let s;if(t.script)s=t.script;else if(t.scriptFile){let a=new He({root:t.root}),l=a.getMountPoint();try{let c=t.scriptFile.startsWith("/")?t.scriptFile:`${l}/${t.scriptFile}`;s=await a.readFile(c,"utf-8")}catch(c){console.error(`Error: Cannot read script file: ${t.scriptFile}`),console.error(c instanceof Error?c.message:String(c)),process.exit(1)}}else process.stdin.isTTY?(zr(),process.exit(1)):s=await ko();s.trim()||(t.json&&console.log(JSON.stringify({stdout:"",stderr:"",exitCode:0})),process.exit(0));let n=new He({root:t.root,readOnly:!t.allowWrite}),r=n.getMountPoint(),i=t.cwdOverridden?t.cwd:r,o=new Vt({fs:n,cwd:i,python:t.python});t.errexit&&(s=`set -e
730
+ ${s}`);try{let a=await o.exec(s);t.json?console.log(JSON.stringify({stdout:a.stdout,stderr:a.stderr,exitCode:a.exitCode})):(a.stdout&&process.stdout.write(a.stdout),a.stderr&&process.stderr.write(a.stderr)),process.exit(a.exitCode)}catch(a){t.json?console.log(JSON.stringify({stdout:"",stderr:a instanceof Error?a.message:String(a),exitCode:1})):console.error(a instanceof Error?a.message:String(a)),process.exit(1)}}No().catch(e=>{console.error("Fatal error:",e),process.exit(1)});