just-bash 2.8.1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,156 +1,156 @@
1
1
  #!/usr/bin/env node
2
- import{B as Js,C as en,D as se,E as ke,F as K,G as ue,H as at,I as tn,J as T,K as sn,L as nn,M as me,N as Vt,O as ot,P as V,a as js,b as Us,c as qs,d as rt,e as q,f as F,g as he,h as Q,i as pe,j as Se,k as Lt,l as it,m as Zs,n as Wt,o as Gs,p as oe,q as we,r as Ks,s as Xs,t as Mt,u as Ft,v as Ae,w as Ys,x as Qs,y as fe,z as zt}from"./chunks/chunk-CQZVMYQ3.js";import{a as $e,b as de}from"./chunks/chunk-4PRVMER6.js";import{a as re,b as ie,c as te,d as ae,e as Bs,f as z,g as Ne,h as tt,i as st,j as Hs,k as ee,l as Ee,m as nt,n as ce}from"./chunks/chunk-K5IXNHO5.js";import{a as Be}from"./chunks/chunk-SE4C7FJY.js";import"./chunks/chunk-OBH7XN5N.js";import{a as le}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import*as Ir from"node:fs";import*as Tr from"node:readline";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 Bt=[];(typeof __BROWSER__>"u"||!__BROWSER__)&&(Bt.push({name:"python3",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).python3Command}),Bt.push({name:"python",load:async()=>(await import("./chunks/python3-ZWX5SFJ3.js")).pythonCommand}));var Wr=[{name:"curl",load:async()=>(await import("./chunks/curl-7IUASLUJ.js")).curlCommand}],rn=new Map;function Ht(e){return{name:e.name,async execute(t,s){let n=rn.get(e.name);return n||(n=await e.load(),rn.set(e.name,n)),n.execute(t,s)}}}function an(e){return(e?Te.filter(s=>e.includes(s.name)):Te).map(Ht)}function on(){return Wr.map(Ht)}function ln(){return Bt.map(Ht)}function cn(e){return"load"in e&&typeof e.load=="function"}function fn(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var Mr=new TextEncoder,Fr=new TextDecoder;function xe(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)):Mr.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):Fr.decode(e)}function _e(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ct=new TextEncoder;function zr(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}var He=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))zr(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=_e(n),o=xe(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=_e(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=_e(n),o=xe(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 Vr(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Br(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 Hr(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 jr(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${js}
2
+ import{B as an,C as ln,D as re,E as xe,F as K,G as ge,H as ut,I as cn,J as x,K as un,L as fn,M as be,N as qt,O as ft,P as z,a as Ys,b as Qs,c as Js,d as lt,e as q,f as W,g as we,h as Q,i as ve,j as Pe,k as zt,l as ct,m as en,n as Bt,o as tn,p as de,q as Se,r as sn,s as nn,t as jt,u as Ht,v as ke,w as rn,x as on,y as ye,z as Ut}from"./chunks/chunk-2ODUA7YH.js";import{a as Ce,b as me}from"./chunks/chunk-4PRVMER6.js";import{a as le,b as ce,c as ne,d as fe,e as Ks,f as V,g as Te,h as it,i as ot,j as Xs,k as se,l as _e,m as at,n as pe}from"./chunks/chunk-K5IXNHO5.js";import{a as qe}from"./chunks/chunk-SE4C7FJY.js";import"./chunks/chunk-OBH7XN5N.js";import{a as he}from"./chunks/chunk-4VDEBYW7.js";import"./chunks/chunk-KGOUQS5A.js";import*as zr from"node:fs";import*as Br from"node:readline";var Fe=[{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__)&&(Fe.push({name:"tar",load:async()=>(await import("./chunks/tar-CLEBMI4R.js")).tarCommand}),Fe.push({name:"yq",load:async()=>(await import("./chunks/yq-WS7WDP36.js")).yqCommand}),Fe.push({name:"xan",load:async()=>(await import("./chunks/xan-OR7RSXSZ.js")).xanCommand}),Fe.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 qr=[{name:"curl",load:async()=>(await import("./chunks/curl-7IUASLUJ.js")).curlCommand}],dn=new Map;function Gt(e){return{name:e.name,async execute(t,s){let n=dn.get(e.name);return n||(n=await e.load(),dn.set(e.name,n)),n.execute(t,s)}}}function hn(e){return(e?Fe.filter(s=>e.includes(s.name)):Fe).map(Gt)}function pn(){return qr.map(Gt)}function mn(){return Zt.map(Gt)}function yn(e){return"load"in e&&typeof e.load=="function"}function gn(e){let t=null;return{name:e.name,async execute(s,n){return t||(t=await e.load()),t.execute(s,n)}}}var Zr=new TextEncoder,Gr=new TextDecoder;function Me(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)):Zr.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):Gr.decode(e)}function Ne(e){if(e!=null)return typeof e=="string"?e:e.encoding??void 0}var ht=new TextEncoder;function Kr(e){return typeof e=="object"&&e!==null&&!(e instanceof Uint8Array)&&"content"in e}function te(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var 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))Kr(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){te(t,"write");let i=this.normalizePath(t);this.ensureParentDirs(i);let o=Ne(n),a=Me(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=Ne(s);return dt(n,r)}async readFileBuffer(t){te(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){te(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=Ne(n),a=Me(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){te(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){te(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){te(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){te(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){te(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){te(t,"cp"),te(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){te(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){te(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){te(t,"link"),te(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){te(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){te(t,"realpath");let s=this.resolvePathWithSymlinks(t);if(!this.data.has(s))throw new Error(`ENOENT: no such file or directory, realpath '${t}'`);return s}async utimes(t,s,n){te(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 Xr(e){let t=e;return typeof t.mkdirSync=="function"&&typeof t.writeFileSync=="function"}function Yr(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 Qr(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 Jr(e){e.mkdirSync("/proc/self/fd",{recursive:!0}),e.writeFileSync("/proc/version",`${Ys}
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",Us()),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 un(e,t){Vr(e)&&(Br(e,t),Hr(e),jr(e))}var Ur=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],qr=["braceexpand","hashall","interactive-comments"];function jt(e){let t=[],s=[...qr.map(n=>({name:n,enabled:!0})),...Ur.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 Re(e){e.state.env.set("SHELLOPTS",jt(e.state.options))}var Zr=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Ut(e){let t=[];for(let s of Zr)e[s]&&t.push(s);return t.join(":")}function qt(e){e.state.env.set("BASHOPTS",Ut(e.state.shoptOptions))}var Gr="BASH_ALIAS_";function dn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function hn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function pn(e,t){return e.env.get(`${Gr}${t}`)}function Zt(e,t,s){if(!t.name||!dn(t.name))return t;let n=hn(t.name);if(!n)return t;let r=pn(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new F,a=r,o=r.endsWith(" ");if(!o)for(let u of t.args){let d=yn(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 mn(t,r);let l=f.statements[0].pipelines[0].commands[0];if(l.type!=="SimpleCommand")return mn(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(dn(u)){let d=hn(u);if(d&&pn(e,d)){let h={type:"SimpleCommand",name:u,args:c.args.slice(1),assignments:[],redirections:[]},m=Zt(e,h,s);m!==h&&(c={...c,name:m.name,args:[...m.args]})}}}return c}catch(i){throw s.delete(n),i}}function mn(e,t){let s=t;for(let a of e.args){let o=yn(a);s+=` ${o}`}let n=new F,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 yn(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 gn(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 me(e,{type:"Word",parts:[c]});i.push(...d.values)}else{(c.type==="SingleQuoted"||c.type==="DoubleQuoted"||c.type==="Escaped")&&(f=!0);let u=await T(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 wn(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 T(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 T(e,d):"";return`${u}${r?"+=":"="}${h}`}var Kr=["tar","yq","xan","sqlite3","python3","python"];function vn(e){return Kr.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 ve(e,t,s="",n=""){throw new ee(e,t,s,n)}function Gt(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ee;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 re(s)}async function Kt(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",Qs()),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 wn(e,t){Xr(e)&&(Yr(e,t),Qr(e),Jr(e))}var ei=["allexport","errexit","noglob","noclobber","noexec","nounset","pipefail","posix","verbose","xtrace"],ti=["braceexpand","hashall","interactive-comments"];function Kt(e){let t=[],s=[...ti.map(n=>({name:n,enabled:!0})),...ei.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 si=["dotglob","expand_aliases","extglob","failglob","globskipdots","globstar","lastpipe","nocaseglob","nocasematch","nullglob","xpg_echo"];function Xt(e){let t=[];for(let s of si)e[s]&&t.push(s);return t.join(":")}function Yt(e){e.state.env.set("BASHOPTS",Xt(e.state.shoptOptions))}var ni="BASH_ALIAS_";function vn(e){return e.parts.length!==1?!1:e.parts[0].type==="Literal"}function bn(e){if(e.parts.length!==1)return null;let t=e.parts[0];return t.type==="Literal"?t.value:null}function En(e,t){return e.env.get(`${ni}${t}`)}function Qt(e,t,s){if(!t.name||!vn(t.name))return t;let n=bn(t.name);if(!n)return t;let r=En(e,n);if(!r||s.has(n))return t;try{s.add(n);let i=new W,o=r,a=r.endsWith(" ");if(!a)for(let f of t.args){let d=Sn(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 $n(t,r);let c=l.statements[0].pipelines[0].commands[0];if(c.type!=="SimpleCommand")return $n(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(vn(f)){let d=bn(f);if(d&&En(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 $n(e,t){let s=t;for(let o of e.args){let a=Sn(o);s+=` ${a}`}let n=new W,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 Sn(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 An(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 be(e,{type:"Word",parts:[u]});i.push(...d.values)}else{(u.type==="SingleQuoted"||u.type==="DoubleQuoted"||u.type==="Escaped")&&(l=!0);let f=await x(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 _n(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 x(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 x(e,d):"";return`${f}${r?"+=":"="}${h}`}var ri=["tar","yq","xan","sqlite3","python3","python"];function Cn(e){return ri.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 Ae(e,t,s="",n=""){throw new se(e,t,s,n)}function Jt(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new _e;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 le(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 Xt(e,t){return e.fs.resolvePath(e.state.cwd,t)}var Xr=["-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 Xr.includes(e)}async function ut(e,t,s){let n=Xt(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 Yr=["-nt","-ot","-ef"];function dt(e){return Yr.includes(e)}async function ht(e,t,s,n){let r=Xt(e,s),i=Xt(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 Qr=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function pt(e){return Qr.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 je(e){return e==="="||e==="=="||e==="!="}function yt(e,t,s,n=!1,r=!1,i=!1){if(n){let o=Le(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 Jr=new Set(["-z","-n"]);function gt(e){return Jr.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 F,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=Q(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)?Se(e,t).length>0:Q(e,t).length>0}async function Ce(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=en(i)}else r=await sn(e,t.right);else je(t.operator)&&!n?r=await nn(e,t.right):r=await T(e,t.right);if(je(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 En(e,s),await En(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=ni(r),f=Be(a,i?"i":"").match(s);if(pe(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 T(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"?Qt(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 Ce(e,t.operand);case"CondAnd":return await Ce(e,t.left)?await Ce(e,t.right):!1;case"CondOr":return await Ce(e,t.left)?!0:await Ce(e,t.right);case"CondGroup":return await Ce(e,t.expression);case"CondWord":return await T(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(Qt(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(je(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 Sn(e,t,0);return s.pos<t.length?S(`test: too many arguments
14
- `,2):U(s.value)}async function Sn(e,t,s){return ei(e,t,s)}async function ei(e,t,s){let{value:n,pos:r}=await bn(e,t,s);for(;t[r]==="-o";){let i=await bn(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function bn(e,t,s){let{value:n,pos:r}=await Yt(e,t,s);for(;t[r]==="-a";){let i=await Yt(e,t,r+1);n=n&&i.value,r=i.pos}return{value:n,pos:r}}async function Yt(e,t,s){if(t[s]==="!"){let{value:n,pos:r}=await Yt(e,t,s+1);return{value:!n,pos:r}}return ti(e,t,s)}async function ti(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:a}=await Sn(e,t,s+1);return{value:i,pos:t[a]===")"?a+1:a}}let r=t[s+1];if(je(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:Qt(e,i),pos:s+2}}return{value:n!==void 0&&n!=="",pos:s+1}}function Le(e,t,s=!1,n=!1){let r=`^${An(t,n)}$`;return Be(r,s?"is":"s").test(e)}function An(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=_n(e,n+1);if(i!==-1){let a=e.slice(n+2,i),o=Cn(a),f=o.map(c=>An(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=>Pn(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 _n(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 Cn(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 Pn(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=_n(e,n+1);if(i!==-1){if(r==="@"){let a=e.slice(n+2,i),f=Cn(a).map(l=>Pn(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 Qt(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 En(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 $n(t);try{let s=new F,n=q(s,t);return await V(e,n.expression)}catch{return $n(t)}}function si(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 $n(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=si(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 ni(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=ri(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function ri(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+=ii(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 ii(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 ye(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 Nn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:ye(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 ai(e,t){try{let s=new F,n=q(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function kn(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 ai(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&&se(e,n),null}function Pe(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function We(e,t){return e.state.localVarDepth?.get(t)}function $t(e,t){e.state.localVarDepth?.delete(t)}function On(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 Dn(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 Jt=new Set([":",".","break","continue","eval","exec","exit","export","readonly","return","set","shift","trap","unset"]);function In(e){return Jt.has(e)}var es=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 Oe(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 ii=["-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 ii.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 oi=["-nt","-ot","-ef"];function yt(e){return oi.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 ai=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]);function wt(e){return ai.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=Ve(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 li=new Set(["-z","-n"]);function Et(e){return li.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 W,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=Q(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)?Pe(e,t).length>0:Q(e,t).length>0}async function Oe(e,t){switch(t.type){case"CondBinary":{let s=await x(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 x(e,t.right);r=ln(i)}else r=await un(e,t.right);else Ge(t.operator)&&!n?r=await fn(e,t.right):r=await x(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 kn(e,s),await kn(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=di(r),l=qe(o,i?"i":"").match(s);if(ve(e,"BASH_REMATCH"),l)for(let c=0;c<l.length;c++)e.state.env.set(`BASH_REMATCH_${c}`,l[c]||"");return l!==null}catch{throw new Error("syntax error in regular expression")}case"<":return s<r;case">":return s>r;default:return!1}}case"CondUnary":{let s=await x(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 x(e,t.operand.expression.word)})`!=="":!await Oe(e,t.operand);case"CondAnd":return await Oe(e,t.left)?await Oe(e,t.right):!1;case"CondOr":return await Oe(e,t.left)?!0:await Oe(e,t.right);case"CondGroup":return await Oe(e,t.expression);case"CondWord":return await x(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 On(e,t,0);return s.pos<t.length?S(`test: too many arguments
14
+ `,2):U(s.value)}async function On(e,t,s){return ci(e,t,s)}async function ci(e,t,s){let{value:n,pos:r}=await Pn(e,t,s);for(;t[r]==="-o";){let i=await Pn(e,t,r+1);n=n||i.value,r=i.pos}return{value:n,pos:r}}async function Pn(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 ui(e,t,s)}async function ui(e,t,s){let n=t[s];if(n==="("){let{value:i,pos:o}=await On(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 Ve(e,t,s=!1,n=!1){let r=`^${Dn(t,n)}$`;return qe(r,s?"is":"s").test(e)}function Dn(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=Tn(e,n+1);if(i!==-1){let o=e.slice(n+2,i),a=xn(o),l=a.map(u=>Dn(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=>In(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 Tn(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 xn(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 In(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=Tn(e,n+1);if(i!==-1){if(r==="@"){let o=e.slice(n+2,i),l=xn(o).map(c=>In(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 kn(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 Nn(t);try{let s=new W,n=q(s,t);return await z(e,n.expression)}catch{return Nn(t)}}function fi(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 Nn(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=fi(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 di(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=hi(e,s);t+=n.converted,s=n.endIndex}else t+=e[s],s++;return t}function hi(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+=pi(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 pi(e){return new Map([["alnum","a-zA-Z0-9"],["alpha","a-zA-Z"],["ascii","\\x00-\\x7F"],["blank"," \\t"],["cntrl","\\x00-\\x1F\\x7F"],["digit","0-9"],["graph","!-~"],["lower","a-z"],["print"," -~"],["punct","!-/:-@\\[-`{-~"],["space"," \\t\\n\\r\\f\\v"],["upper","A-Z"],["word","a-zA-Z0-9_"],["xdigit","0-9A-Fa-f"]]).get(e)??""}function Ee(e){let t=[],s="",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 Rn(e){let t=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(t)return{name:t[1],isArray:!0,arrayElements:Ee(t[2])};let s=e.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(s)return{name:s[1],isArray:!1,arrayIndex:s[2],value:s[3]};if(e.includes("=")){let n=e.indexOf("=");return{name:e.slice(0,n),isArray:!1,value:e.slice(n+1)}}return{name:e,isArray:!1}}async function mi(e,t){try{let s=new W,n=q(s,t);return await z(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}async function Ln(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 mi(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&&re(e,n),null}function De(e,t){e.state.localVarDepth=e.state.localVarDepth||new Map,e.state.localVarDepth.set(t,e.state.callDepth)}function ze(e,t){return e.state.localVarDepth?.get(t)}function Ct(e,t){e.state.localVarDepth?.delete(t)}function Fn(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 Mn(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 Ie(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 oi(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 Tn(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(Vt(e,r.target))return{targets:s,error:`bash: $@: ambiguous redirect
18
- `};s.set(n,await T(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 li(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 T(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=li(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 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 ge(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 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 yi(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 Vn(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 x(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 gi(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 x(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=gi(e);if(e.state.env.set(s.fdVariable,String(n)),s.target.type==="Word"){let r=await x(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 $e(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 x(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(Vt(e,c.target)){i+=`bash: $@: ambiguous redirect
24
- `,a=1,r="";continue}u=await T(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 Oe(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 Oe(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 Oe(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 Oe(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 Oe(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=oi(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 Oe(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 Oe(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 xn(e,t){if(e.state.options.posix&&Jt.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 ci(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(o=>o.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 _t(e,t,s,n="",r){e.state.callDepth++,e.state.callDepth>e.limits.maxCallDepth&&(e.state.callDepth--,ve(`${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(Dn(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 Tn(e,t.redirections);if(f)return a(),_("",f,1);try{let l=await ci(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 te){let c=_(l.stdout,l.stderr,l.exitCode);return B(e,c,t.redirections,o)}throw l}}var Ln=["!","[[","]]","case","do","done","elif","else","esac","fi","for","function","if","in","then","time","until","while","{","}"],ss=[".",":","[","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"],fi=["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"],ui=ss;async function ns(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 x(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 Ie(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 Ie(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 Ie(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 Ie(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 Ie(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=yi(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 Ie(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 Ie(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 zn(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 wi(e,t){let s="";for(let n of t)if((n.operator==="<<"||n.operator==="<<-")&&n.target.type==="HereDoc"){let r=n.target,i=await x(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 x(e,n.target)}
37
+ `;else if(n.operator==="<"&&n.target.type==="Word"){let r=await x(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--,Ae(`${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(Mn(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 Vn(e,t.redirections);if(l)return o(),_("",l,1);try{let c=await wi(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 ne){let u=_(c.stdout,c.stderr,c.exitCode);return B(e,u,t.redirections,a)}throw c}}var jn=["!","[[","]]","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"],vi=["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"],bi=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 ts(e,a);p.push(...y)}if(l){let y=await Rn(e,a);p.push(...y)}for(let y of s)if(y==="variable"){let w=di(e,a);p.push(...w)}else if(y==="export"){let w=hi(e,a);p.push(...w)}else if(y==="function"){let w=pi(e,a);p.push(...w)}else if(y==="builtin"){let w=mi(a);p.push(...w)}else if(y==="keyword"){let w=yi(a);p.push(...w)}else if(y==="alias"){let w=gi(e,a);p.push(...w)}else if(y==="shopt"){let w=wi(a);p.push(...w)}else if(y==="helptopic"){let w=vi(a);p.push(...w)}else if(y==="directory"){let w=await ts(e,a);p.push(...w)}else if(y==="file"){let w=await Rn(e,a);p.push(...w)}else if(y==="user"){let w=bi(a);p.push(...w)}else if(y==="command"){let w=await Ei(e,a);p.push(...w)}if(n!==null)try{let y=await $i(e,n),w=Si(e,y);for(let b of w)(a===null||b.startsWith(a))&&p.push(b)}catch{return _("","",1)}if(o){let y=await ts(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 Me(e,w),Me(e,b),_("",O.stderr,1);g=O.stdout;let D=Ai(e);p.push(...D)}catch{return Me(e,w),Me(e,b),_("","",1)}Me(e,w),Me(e,b)}}if(d!==null)try{let y=he(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=Le(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 di(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 hi(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 pi(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function mi(e){let t=[...ss];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function yi(e){let t=[...Ln];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function gi(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 wi(e){let t=[...fi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function vi(e){let t=[...ui];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}async function ts(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 Rn(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 bi(e){return["root","nobody"]}async function Ei(e,t){let s=new Set;for(let i of ss)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 Ln)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 $i(e,t){let n=new F().parseWordFromString(t,!1,!1);return await T(e,n)}function Si(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 Me(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function Ai(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=fe(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 _i=["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=!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(!_i.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?rs(e):rs(e,c);if(t.length===0||c.length===0&&!i&&!a&&!o&&f.length===0&&l.length===0&&!r)return rs(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 rs(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 Bn(e,o);p.push(...y)}for(let y of s)if(y==="variable"){let w=Ei(e,o);p.push(...w)}else if(y==="export"){let w=$i(e,o);p.push(...w)}else if(y==="function"){let w=Si(e,o);p.push(...w)}else if(y==="builtin"){let w=Ai(o);p.push(...w)}else if(y==="keyword"){let w=_i(o);p.push(...w)}else if(y==="alias"){let w=Ci(e,o);p.push(...w)}else if(y==="shopt"){let w=Pi(o);p.push(...w)}else if(y==="helptopic"){let w=ki(o);p.push(...w)}else if(y==="directory"){let w=await os(e,o);p.push(...w)}else if(y==="file"){let w=await Bn(e,o);p.push(...w)}else if(y==="user"){let w=Ni(o);p.push(...w)}else if(y==="command"){let w=await Oi(e,o);p.push(...w)}if(n!==null)try{let y=await Di(e,n),w=Ti(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 D of e.state.env.keys())(D==="COMPREPLY"||D.startsWith("COMPREPLY_")||D==="COMPREPLY__length")&&(v.set(D,e.state.env.get(D)),e.state.env.delete(D));let C=["compgen",h[0]??"",""];try{let D=await Nt(e,y,C,"");if(D.exitCode!==0)return Be(e,w),Be(e,v),_("",D.stderr,1);g=D.stdout;let T=xi(e);p.push(...T)}catch{return Be(e,w),Be(e,v),_("","",1)}Be(e,w),Be(e,v)}}if(d!==null)try{let y=we(d),w=await e.executeScript(y);if(w.exitCode!==0)return _("",w.stderr,w.exitCode);if(w.stdout){let 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=Ve(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 Ei(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 $i(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 Si(e,t){let s=Array.from(e.state.functions.keys());return t!==null&&(s=s.filter(n=>n.startsWith(t))),s.sort()}function Ai(e){let t=[...as];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function _i(e){let t=[...jn];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function Ci(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 Pi(e){let t=[...vi];return e!==null&&(t=t.filter(s=>s.startsWith(e))),t.sort()}function ki(e){let t=[...bi];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 Bn(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 Ni(e){return["root","nobody"]}async function Oi(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 jn)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 Di(e,t){let n=new W().parseWordFromString(t,!1,!1);return await x(e,n)}function Ti(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 Be(e,t){for(let[s,n]of t)n===void 0?e.state.env.delete(s):e.state.env.set(s,n)}function xi(e){let t=[];if(e.state.env.get("COMPREPLY__length")!==void 0){let r=ye(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 Ii=["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(!Ii.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 Wn=["bashdefault","default","dirnames","filenames","noquote","nosort","nospace","plusdirs"];function as(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(!Wn.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(!Wn.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 os(e,t){if(e.state.loopDepth===0){if(e.state.parentHasLoopContext)throw new Ee;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 ie(s)}function H(e,t){let s=e.state.env.get("HOME")||"/home/user";return t.split(":").map(i=>i==="~"?s:i==="~root"?"/root":i.startsWith("~/")?s+i.slice(1):i.startsWith("~root/")?`/root${i.slice(5)}`:i).join(":")}function ls(e){for(let t=0;t<e.length;t++){let s=e.charCodeAt(t);if(s<32||s===127)return!0}return!1}function cs(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 ls(e)?cs(e):/^[a-zA-Z0-9_/.:\-@%+,=]*$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}function De(e){return ls(e)?cs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function fs(e){return ls(e)?cs(e):`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Mn(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),oe(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 us(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function Fn(e,t){let s="",n="",r=!1;for(let i of t){let a=Mn(e,i);if(e.state.associativeArrays?.has(i)){let c=Se(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=us(h);return`['${d}']=${m}`});s+=`declare -A ${i}=(${u.join(" ")})
79
- `}continue}let f=Q(e,i);if(f.length>0){let c=f.map(u=>{let d=e.state.env.get(`${i}_${u}`)??"";return`[${u}]=${De(d)}`});s+=`declare -a ${i}=(${c.join(" ")})
70
+ `)}var Hn=["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(!Hn.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(!Hn.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 _e;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 ce(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 Re(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 Un(e,t){let s="";return e.state.integerVars?.has(t)&&(s+="i"),e.state.lowercaseVars?.has(t)&&(s+="l"),de(e,t)&&(s+="n"),e.state.readonlyVars?.has(t)&&(s+="r"),e.state.uppercaseVars?.has(t)&&(s+="u"),e.state.exportedVars?.has(t)&&(s+="x"),s===""?"--":`-${s}`}function ys(e){return e===""?"''":/[\s'\\]/.test(e)?`'${e.replace(/'/g,"'\\''")}'`:e}function qn(e,t){let s="",n="",r=!1;for(let i of t){let o=Un(e,i);if(e.state.associativeArrays?.has(i)){let u=Pe(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=Q(e,i);if(l.length>0){let u=l.map(f=>{let d=e.state.env.get(`${i}_${f}`)??"";return`[${f}]=${Re(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}=${fs(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 zn(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=Mn(e,u),h=e.state.associativeArrays?.has(u),m=Q(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&&!oe(e,u)))continue;if(h){let v=Se(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=us(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`[${$}]=${De(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}=${fs(g)}
89
- `)}return W(f)}function Vn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Se(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=us(o);return`['${a}']=${f}`});t+=`declare -A ${n}=(${i.join(" ")})
91
- `}}return W(t)}function Bn(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=Q(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}]=${De(f)}`});t+=`declare -a ${r}=(${a.join(" ")})
93
- `}}return W(t)}function Hn(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)||Q(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 ds(e,t){e.state.integerVars??=new Set,e.state.integerVars.add(t)}function Ze(e,t){return e.state.integerVars?.has(t)??!1}function hs(e,t){e.state.lowercaseVars??=new Set,e.state.lowercaseVars.add(t),e.state.uppercaseVars?.delete(t)}function Ci(e,t){return e.state.lowercaseVars?.has(t)??!1}function ps(e,t){e.state.uppercaseVars??=new Set,e.state.uppercaseVars.add(t),e.state.lowercaseVars?.delete(t)}function Pi(e,t){return e.state.uppercaseVars?.has(t)??!1}function Fe(e,t,s){return Ci(e,t)?s.toLowerCase():Pi(e,t)?s.toUpperCase():s}async function jn(e,t){try{let s=new F,n=q(s,t),r=await V(e,n.expression);return String(r)}catch{return"0"}}function Ni(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 ms(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 I of e.state.env.keys())I.startsWith(A)&&!I.includes("__")&&(x.has(I)||x.set(I,e.state.env.get(I)));let P=`${D}__length`;e.state.env.has(P)&&!x.has(P)&&x.set(P,e.state.env.get(P))},b=D=>{N&&Pe(e,D)};if(p){if(v.length===0){let A=Array.from(e.state.functions.keys()).sort(),P="";for(let I of A)P+=`declare -f ${I}
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 Zn(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=Un(e,f),h=e.state.associativeArrays?.has(f),m=Q(e,f),p=!h&&(m.length>0||e.state.env.has(`${f}__length`));if(a&&(o&&!h||i&&!p||s&&!e.state.exportedVars?.has(f)||n&&!e.state.readonlyVars?.has(f)||r&&!de(e,f)))continue;if(h){let b=Pe(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}]=${Re(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 Gn(e){let t="",s=Array.from(e.state.associativeArrays??[]).sort();for(let n of s){let r=Pe(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 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);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=Q(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}]=${Re(l)}`});t+=`declare -a ${r}=(${o.join(" ")})
93
+ `}}return F(t)}function Xn(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)||Q(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 Ri(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 Li(e,t){return e.state.uppercaseVars?.has(t)??!1}function je(e,t,s){return Ri(e,t)?s.toLowerCase():Li(e,t)?s.toUpperCase():s}async function Yn(e,t){try{let s=new W,n=q(s,t),r=await z(e,n.expression);return String(r)}catch{return"0"}}function Fi(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 T=0;T<t.length;T++){let I=t[T];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(T+1));break}else if(I.startsWith("+")){for(let A of I.slice(1))if(A==="n")l=!0;else if(A==="a")c=!0;else if(A==="x")u=!0;else if(A!=="r"){if(A!=="i"){if(!(A==="f"||A==="F"))return _("",`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=T=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(T)||I.set(T,e.state.env.get(T))},w=T=>{if(!k)return;let I=e.state.localScopes[e.state.localScopes.length-1];I.has(T)||I.set(T,e.state.env.get(T));let A=`${T}_`;for(let N of e.state.env.keys())N.startsWith(A)&&!N.includes("__")&&(I.has(N)||I.set(N,e.state.env.get(N)));let P=`${T}__length`;e.state.env.has(P)&&!I.has(P)&&I.set(P,e.state.env.get(P))},v=T=>{k&&De(e,T)};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 T=!0,I="";for(let A of b)e.state.functions.has(A)?I+=`${A}
98
+ `:T=!1;return _(I,"",T?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 Fn(e,v);if(a&&v.length===0)return zn(e,{filterExport:i,filterReadonly:r,filterNameref:o,filterIndexedArray:s,filterAssocArray:n});if(v.length===0&&n&&!a)return Vn(e);if(v.length===0&&s&&!a)return Bn(e);if(v.length===0&&!a)return Hn(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&&Q(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)),pe(e,E),e.state.env.delete(E),e.state.env.delete(`${E}__length`),n&&k.includes("[")){let R=Et(k);for(let[G,M]of R){let j=H(e,M);e.state.env.set(`${E}_${G}`,j)}}else if(n){let R=ye(k);for(let G=0;G<R.length;G+=2){let M=R[G],j=G+1<R.length?H(e,R[G+1]):"";e.state.env.set(`${E}_${M}`,j)}}else{let R=ye(k);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let j of R){let J=j.match(/^\[([^\]]+)\]=(.*)$/);if(J){let ne=J[1],Ie=J[2],xr=H(e,Ie),Ve;if(/^-?\d+$/.test(ne))Ve=Number.parseInt(ne,10);else try{let Rr=new F,Lr=q(Rr,ne);Ve=await V(e,Lr.expression)}catch{Ve=0}e.state.env.set(`${E}_${Ve}`,xr),M=Ve+1}else{let ne=H(e,j);e.state.env.set(`${E}_${M}`,ne),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${E}_${M}`,R[M]);e.state.env.set(`${E}__length`,String(R.length))}}b(E),r&&se(e,E),i&&ue(e,E);continue}if(f){let E=D.includes("=")?D.slice(0,D.indexOf("=")):D;if(Ks(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=Ni(D);if(A){let{name:E,indexExpr:k,value:R}=A,G=K(e,E);if(G)return G;w(E);let M;try{let J=new F,ne=q(J,k);M=await V(e,ne.expression)}catch{let J=parseInt(k,10);M=Number.isNaN(J)?0:J}e.state.env.set(`${E}_${M}`,R);let j=parseInt(e.state.env.get(`${E}__length`)??"0",10);M>=j&&e.state.env.set(`${E}__length`,String(M+1)),b(E),r&&se(e,E),i&&ue(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=ye(k);if(e.state.associativeArrays?.has(E)){let M=Et(k);for(let[j,J]of M){let ne=H(e,J);e.state.env.set(`${E}_${j}`,ne)}}else{let M=Q(e,E),j=0,J=e.state.env.get(E);M.length===0&&J!==void 0?(e.state.env.set(`${E}_0`,J),e.state.env.delete(E),j=1):M.length>0&&(j=Math.max(...M)+1);for(let Ie=0;Ie<G.length;Ie++)e.state.env.set(`${E}_${j+Ie}`,H(e,G[Ie]));let ne=j+G.length;e.state.env.set(`${E}__length`,String(ne))}b(E),r&&se(e,E),i&&ue(e,E);continue}let I=D.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(I){let E=I[1],k=H(e,I[2]),R=K(e,E);if(R)return R;y(E),u&&ds(e,E),d&&hs(e,E),h&&ps(e,E);let M=Q(e,E).length>0||e.state.associativeArrays?.has(E);if(Ze(e,E)){let j=e.state.env.get(E)??"0",J=parseInt(j,10)||0,ne=parseInt(await jn(e,k),10)||0;k=String(J+ne),e.state.env.set(E,k)}else if(M){k=Fe(e,E,k);let j=`${E}_0`,J=e.state.env.get(j)??"";e.state.env.set(j,J+k)}else{k=Fe(e,E,k);let j=e.state.env.get(E)??"";e.state.env.set(E,j+k)}b(E),r&&se(e,E),i&&ue(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),we(e,k),R!==""&&Ft(e,R)&&Mt(e,k),b(k),r&&se(e,k),i&&ue(e,k);continue}if(u&&ds(e,k),d&&hs(e,k),h&&ps(e,k),Ze(e,k)&&(R=await jn(e,R)),R=Fe(e,k,R),oe(e,k)){let M=Ae(e,k);M&&M!==k?e.state.env.set(M,R):e.state.env.set(k,R)}else e.state.env.set(k,R);b(k),r&&se(e,k),i&&ue(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){we(e,E);let R=e.state.env.get(E);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?Xs(e,E):R&&Ft(e,R)&&Mt(e,E),b(E),r&&se(e,E),i&&ue(e,E);continue}if(u&&ds(e,E),d&&hs(e,E),h&&ps(e,E),n){if(Q(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&&se(e,E),i&&ue(e,E)}}return _("",C,O)}async function ys(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=ye(d);if(e.state.associativeArrays?.has(u)){let p=Et(d);for(let[g,v]of p){let $=H(e,v);e.state.env.set(`${u}_${g}`,$)}}else{let p=Q(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}`,H(e,m[N]));let $=g+m.length;e.state.env.set(`${u}__length`,String($))}se(e,u);continue}let f=a.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(f){let u=f[1],d=H(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),se(e,u);continue}let l=Nn(a);if(l.value===void 0&&!l.isArray){se(e,l.name);continue}let c=await kn(e,l,{makeReadonly:!0});if(c)return c}return L}function gs(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 ki(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 ws(e,t){let s=gs(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 T=!0;for(let I of b)e.state.functions.has(I)||(T=!1);return _("","",T?0:1)}if(o&&b.length>0)return qn(e,b);if(o&&b.length===0)return Zn(e,{filterExport:i,filterReadonly:r,filterNameref:a,filterIndexedArray:s,filterAssocArray:n});if(b.length===0&&n&&!o)return Gn(e);if(b.length===0&&s&&!o)return Kn(e);if(b.length===0&&!o)return Xn(e);let C="",D=0;for(let T of b){let I=T.match(/^([a-zA-Z_][a-zA-Z0-9_]*)=\((.*)\)$/s);if(I&&!c){let $=I[1],O=I[2];if(n&&Q(e,$).length>0){C+=`bash: declare: ${$}: cannot convert indexed to associative array
103
+ `,D=1;continue}if((s||!n&&!s)&&e.state.associativeArrays?.has($)){C+=`bash: declare: ${$}: cannot convert associative to indexed array
104
+ `,D=1;continue}if(w($),n&&(e.state.associativeArrays??=new Set,e.state.associativeArrays.add($)),ve(e,$),e.state.env.delete($),e.state.env.delete(`${$}__length`),n&&O.includes("[")){let R=_t(O);for(let[G,M]of R){let H=j(e,M);e.state.env.set(`${$}_${G}`,H)}}else if(n){let R=Ee(O);for(let G=0;G<R.length;G+=2){let M=R[G],H=G+1<R.length?j(e,R[G+1]):"";e.state.env.set(`${$}_${M}`,H)}}else{let R=Ee(O);if(R.some(M=>/^\[[^\]]+\]=/.test(M))){let M=0;for(let H of R){let ee=H.match(/^\[([^\]]+)\]=(.*)$/);if(ee){let ae=ee[1],Le=ee[2],jr=j(e,Le),Ue;if(/^-?\d+$/.test(ae))Ue=Number.parseInt(ae,10);else try{let Hr=new W,Ur=q(Hr,ae);Ue=await z(e,Ur.expression)}catch{Ue=0}e.state.env.set(`${$}_${Ue}`,jr),M=Ue+1}else{let ae=j(e,H);e.state.env.set(`${$}_${M}`,ae),M++}}}else{for(let M=0;M<R.length;M++)e.state.env.set(`${$}_${M}`,R[M]);e.state.env.set(`${$}__length`,String(R.length))}}v($),r&&re(e,$),i&&ge(e,$);continue}if(l){let $=T.includes("=")?T.slice(0,T.indexOf("=")):T;if(sn(e,$),!T.includes("="))continue}if(u){let $=T.includes("=")?T.slice(0,T.indexOf("=")):T;if(ut(e,$),!T.includes("="))continue}let A=Fi(T);if(A){let{name:$,indexExpr:O,value:R}=A,G=K(e,$);if(G)return G;w($);let M;try{let ee=new W,ae=q(ee,O);M=await z(e,ae.expression)}catch{let ee=parseInt(O,10);M=Number.isNaN(ee)?0:ee}e.state.env.set(`${$}_${M}`,R);let H=parseInt(e.state.env.get(`${$}__length`)??"0",10);M>=H&&e.state.env.set(`${$}__length`,String(M+1)),v($),r&&re(e,$),i&&ge(e,$);continue}let P=T.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=Ee(O);if(e.state.associativeArrays?.has($)){let M=_t(O);for(let[H,ee]of M){let ae=j(e,ee);e.state.env.set(`${$}_${H}`,ae)}}else{let M=Q(e,$),H=0,ee=e.state.env.get($);M.length===0&&ee!==void 0?(e.state.env.set(`${$}_0`,ee),e.state.env.delete($),H=1):M.length>0&&(H=Math.max(...M)+1);for(let Le=0;Le<G.length;Le++)e.state.env.set(`${$}_${H+Le}`,j(e,G[Le]));let ae=H+G.length;e.state.env.set(`${$}__length`,String(ae))}v($),r&&re(e,$),i&&ge(e,$);continue}let N=T.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 M=Q(e,$).length>0||e.state.associativeArrays?.has($);if(Ye(e,$)){let H=e.state.env.get($)??"0",ee=parseInt(H,10)||0,ae=parseInt(await Yn(e,O),10)||0;O=String(ee+ae),e.state.env.set($,O)}else if(M){O=je(e,$,O);let H=`${$}_0`,ee=e.state.env.get(H)??"";e.state.env.set(H,ee+O)}else{O=je(e,$,O);let H=e.state.env.get($)??"";e.state.env.set($,H+O)}v($),r&&re(e,$),i&&ge(e,$),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add($));continue}if(T.includes("=")){let $=T.indexOf("="),O=T.slice(0,$),R=T.slice($+1);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(O)){C+=`bash: typeset: \`${O}': not a valid identifier
105
+ `,D=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
+ `,D=1;continue}e.state.env.set(O,R),Se(e,O),R!==""&&Ht(e,R)&&jt(e,O),v(O),r&&re(e,O),i&&ge(e,O);continue}if(f&&gs(e,O),d&&ws(e,O),h&&vs(e,O),Ye(e,O)&&(R=await Yn(e,R)),R=je(e,O,R),de(e,O)){let M=ke(e,O);M&&M!==O?e.state.env.set(M,R):e.state.env.set(O,R)}else e.state.env.set(O,R);v(O),r&&re(e,O),i&&ge(e,O),e.state.options.allexport&&!u&&(e.state.exportedVars=e.state.exportedVars||new Set,e.state.exportedVars.add(O))}else{let $=T;if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test($)){C+=`bash: typeset: \`${$}': not a valid identifier
107
+ `,D=1;continue}if(s||n?w($):y($),a){Se(e,$);let R=e.state.env.get($);R!==void 0&&R!==""&&!/^[a-zA-Z_][a-zA-Z0-9_]*(\[.+\])?$/.test(R)?nn(e,$):R&&Ht(e,R)&&jt(e,$),v($),r&&re(e,$),i&&ge(e,$);continue}if(f&&gs(e,$),d&&ws(e,$),h&&vs(e,$),n){if(Q(e,$).length>0){C+=`bash: declare: ${$}: cannot convert indexed to associative array
108
+ `,D=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&&re(e,$),i&&ge(e,$)}}return _("",C,D)}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=Ee(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=Q(e,f),g=0,b=e.state.env.get(f);p.length===0&&b!==void 0?(e.state.env.set(`${f}_0`,b),e.state.env.delete(f),g=1):p.length>0&&(g=Math.max(...p)+1);for(let k=0;k<m.length;k++)e.state.env.set(`${f}_${g+k}`,j(e,m[k]));let E=g+m.length;e.state.env.set(`${f}__length`,String(E))}re(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),re(e,f);continue}let c=Rn(o);if(c.value===void 0&&!c.isArray){re(e,c.name);continue}let u=await Ln(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 Mi(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=ki(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=Mi(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 vs(e,t){let s=gs(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 bs(e,t){let s=gs(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 Dt(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=he(r);return await e.executeScript(o)}catch(o){if(o instanceof re||o instanceof ie||o instanceof te||o instanceof z)throw o;if(o.name==="ParseException")return S(`bash: eval: ${o.message}
131
- `);throw o}finally{e.state.groupStdin=i}}function Es(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 $s(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=H(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=H(e,c[2]),l=!0;else if(a.includes("=")){let u=a.indexOf("=");o=a.slice(0,u),f=H(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,"");ue(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 Ss(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=we(r);return await e.executeScript(a)}catch(a){if(a instanceof le||a instanceof ce||a instanceof ne||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,"");ge(e,a)}return _("",r,i)}function Tt(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"),Tt(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 Un=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 Qn=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.`]]]),qn=[...Un.keys()].sort();function As(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 Di();let i="",a=!1,o="";for(let f of n){let l=Oi(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=Un.get(c);if(!u)continue;let[d,h]=u;s?i+=`${c}: ${d}
501
- `:i+=`${c}: ${d}
498
+ option is given.`]]]),Jn=[...Qn.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 Vi();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=Qn.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 Oi(e){let t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,"."),s=Be(`^${t}$`);return qn.filter(n=>s.test(n))}function Di(){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]||"",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 Jn.filter(n=>s.test(n))}function Vi(){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=Jn.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 Ii(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 _s(e,t){if(t.length===0)return S(`bash: let: expression expected
506
- `);let s=Ii(t),n=0;for(let r of s)try{let a=he(`(( ${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 Cs(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=ye(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)),Pe(e,c),i&&we(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 $=ye(v),N=Q(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}`,H(e,$[C]));let b=y+$.length;e.state.env.set(`${c}__length`,String(b)),Pe(e,c),i&&we(e,c);continue}let m=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\+=(.*)$/);if(m){c=m[1];let v=H(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),Pe(e,c),i&&we(e,c);continue}let p=l.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[([^\]]+)\]=(.*)$/s);if(p){c=p[1];let v=p[2],$=H(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 F,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)),Pe(e,c),i&&we(e,c);continue}if(l.includes("=")){let v=l.indexOf("=");c=l.slice(0,v),u=H(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}}}On(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)}Pe(e,c),i&&we(e,c)}return _("",n,r)}function Ps(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&&pe(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 Ti(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 xi(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function Ns(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 I=1;for(;I<A.length;){let E=A[I];if(E==="r")r=!0,I++;else if(E==="s")I++;else{if(E==="d")return I+1<A.length?(i=A.substring(I+1),{nextArgIndex:P+1}):P+1<t.length?(i=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(E==="n"){if(I+1<A.length){let k=A.substring(I+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(I+1<A.length){let k=A.substring(I+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 I+1<A.length?(l=A.substring(I+1),{nextArgIndex:P+1}):P+1<t.length?(l=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(E==="p")return I+1<A.length?(a=A.substring(I+1),{nextArgIndex:P+1}):P+1<t.length?(a=t[P+1],{nextArgIndex:P+2}):{nextArgIndex:P+1};if(E==="u"){if(I+1<A.length){let k=A.substring(I+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(I+1<A.length){let k=A.substring(I+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};I++}else I++}}}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)pe(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 I=Ti(P);if(I){let E=I.position+A;e.state.fileDescriptors.set(n,xi(I.path,E,I.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 I=1;I<d.length;I++)e.state.env.set(d[I],"");return _("","",y?0:1)}else if(o>=0){let A=0,P=0,I=!1;for(;P<g.length&&A<o;){let E=g[P];if(E===v){N=P+1,I=!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||I,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 I=g[A+1];if(I===`
517
- `){A+=2;continue}if(I===v){$+=I,A+=2;continue}$+=P,$+=I,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&&pe(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=Zs(e.state.env);if(l){let{words:A}=Wt($,C,void 0,r);pe(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}=Wt($,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 I=$.substring(x[A]);I=Gs(I,C,r),I=b(I),e.state.env.set(P,I)}else e.state.env.set(P,"")}return _("","",y?0:1)}function ks(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 te(s)}var kt=`set: usage: set [-eux] [+eux] [-o option] [+o option]
505
+ `)}function zi(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=zi(t),n=0;for(let r of s)try{let o=we(`(( ${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 Ds(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=Ee(b);for(let y=0;y<k.length;y++)e.state.env.set(`${u}_${y}`,k[y]);e.state.env.set(`${u}__length`,String(k.length)),De(e,u),i&&Se(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 T of e.state.env.keys())T.startsWith(C)&&!T.includes("__")&&(s.has(T)||s.set(T,e.state.env.get(T)));let D=`${u}__length`;e.state.env.has(D)&&!s.has(D)&&s.set(D,e.state.env.get(D))}let E=Ee(b),k=Q(e,u),y=0,w=e.state.env.get(u);k.length===0&&w!==void 0?(e.state.env.set(`${u}_0`,w),e.state.env.delete(u),y=1):k.length>0&&(y=Math.max(...k)+1);for(let 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)),De(e,u),i&&Se(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),De(e,u),i&&Se(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 W,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)),De(e,u),i&&Se(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}}}Fn(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)}De(e,u),i&&Se(e,u)}return _("",n,r)}function Ts(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&&ve(e,l);for(let E=0;E<f.length;E++)e.state.env.set(`${l}_${i+E}`,f[E]);let g=parseInt(e.state.env.get(`${l}__length`)||"0",10),b=i+f.length;return e.state.env.set(`${l}__length`,String(Math.max(g,b))),e.state.groupStdin!==void 0&&!s&&(e.state.groupStdin=""),_("","",0)}function Bi(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 ji(e,t,s){return`__rw__:${e.length}:${e}:${t}:${s}`}function xs(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)ve(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=Bi(P);if(N){let $=N.position+A;e.state.fileDescriptors.set(n,ji(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&&ve(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=en(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);ve(e,c);for(let N=0;N<A.length;N++)e.state.env.set(`${c}_${N}`,v(A[N]));return _("","",y?0:1)}let D=d.length,{words:T,wordStarts:I}=Bt(E,C,D,r);for(let A=0;A<d.length;A++){let P=d[A];if(A<d.length-1)e.state.env.set(P,v(T[A]??""));else if(A<I.length){let N=E.substring(I[A]);N=tn(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 ne(s)}var xt=`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,150 +536,153 @@ Options:
533
536
  +o pipefail Disable pipefail
534
537
  -o xtrace Same as -x
535
538
  +o xtrace Disable xtrace
536
- `,Zn=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]]),Gn=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]]),Kn=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],Xn=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function Yn(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,Re(e))}function Ri(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Li(e,t){let s=Q(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${De(i)}`});return`${t}=(${n.join(" ")})`}function Wi(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Mi(e,t){let s=Se(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${Wi(r)}]=${De(i)}`});return`${t}=(${n.join(" ")} )`}function Fi(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 zi(e){return e.state.associativeArrays??new Set}function Ds(e,t){if(t.includes("--help"))return W(kt);if(t.length===0){let n=Fi(e),r=zi(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(Li(e,f));for(let f of[...r].sort((l,c)=>l<c?-1:l>c?1:0))o.push(Mi(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
+ `,er=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]]),tr=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]]),sr=["errexit","nounset","pipefail","verbose","xtrace","posix","allexport","noclobber","noglob","noexec","vi","emacs"],nr=["braceexpand","errtrace","functrace","hashall","histexpand","history","ignoreeof","interactive-comments","keyword","monitor","nolog","notify","onecmd","physical","privileged"];function rr(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 Hi(e,t){return t+1<e.length&&!e[t+1].startsWith("-")&&!e[t+1].startsWith("+")}function Ui(e,t){let s=Q(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${r}]=${Re(i)}`});return`${t}=(${n.join(" ")})`}function qi(e){return/^[a-zA-Z0-9_]+$/.test(e)?e:`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Zi(e,t){let s=Pe(e,t);if(s.length===0)return`${t}=()`;let n=s.map(r=>{let i=e.state.env.get(`${t}_${r}`)??"";return`[${qi(r)}]=${Re(i)}`});return`${t}=(${n.join(" ")} )`}function Gi(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 Ki(e){return e.state.associativeArrays??new Set}function Ls(e,t){if(t.includes("--help"))return F(xt);if(t.length===0){let n=Gi(e),r=Ki(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(Ui(e,l));for(let l of[...r].sort((c,u)=>c<u?-1:c>u?1:0))a.push(Zi(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")&&Ri(t,s)){let r=t[s+1];if(!Gn.has(r)){let i=`bash: set: ${r}: invalid option name
539
- ${kt}`;if(e.state.options.posix)throw new ce(1,"",i);return S(i)}Yn(e,Gn.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=Kn.map(o=>`${o.padEnd(16)}${e.state.options[o]?"on":"off"}`),i=Xn.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")&&Hi(t,s)){let r=t[s+1];if(!tr.has(r)){let i=`bash: set: ${r}: invalid option name
542
+ ${xt}`;if(e.state.options.posix)throw new pe(1,"",i);return S(i)}rr(e,tr.get(r)??null,n==="-o"),s+=2;continue}if(n==="-o"){let r=sr.map(a=>`${a.padEnd(16)}${e.state.options[a]?"on":"off"}`),i=nr.map(a=>`${a.padEnd(16)}off`),o=[...r,...i].sort();return F(`${o.join(`
540
543
  `)}
541
- `)}if(n==="+o"){let r=Kn.map(o=>`set ${e.state.options[o]?"-o":"+o"} ${o}`),i=Xn.map(o=>`set +o ${o}`),a=[...r,...i].sort();return W(`${a.join(`
544
+ `)}if(n==="+o"){let r=sr.map(a=>`set ${e.state.options[a]?"-o":"+o"} ${a}`),i=nr.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(!Zn.has(a)){let o=`bash: set: ${n[0]}${a}: invalid option
544
- ${kt}`;if(e.state.options.posix)throw new ce(1,"",o);return S(o)}Yn(e,Zn.get(a)??null,r)}s++;continue}if(n==="--")return Os(e,t.slice(s+1)),L;if(n==="-"){if(e.state.options.xtrace=!1,e.state.options.verbose=!1,Re(e),s+1<t.length)return Os(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 ce(1,"",r);return S(r)}return Os(e,t.slice(s)),L}return L}function Os(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 Is(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 ce(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 ce(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=he(i),c=await e.executeScript(l);return f(),c}catch(l){if(f(),l instanceof z)throw l;if(l instanceof te)return _(l.stdout,l.stderr,l.exitCode);if(l.name==="ParseException")return S(`bash: ${n}: ${l.message}
550
- `);throw l}}function Qn(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Vi(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function Jn(e,t){if(Vi(t))return null;try{let s=new F,n=q(s,t);return await V(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function er(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),xs(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 xs(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 tr(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 F().parseWordFromString(s,!0,!1);return T(e,r)}if(t.includes("$")){let n=new F().parseWordFromString(t,!1,!1);return T(e,n)}return t}async function Rs(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=fe(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 tr(e,h);e.state.env.delete(`${d}_${N}`);continue}let p=zt(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 Jn(e,h);if($===null&&p){n+=`bash: unset: ${h}: not a valid identifier
552
- `,r=1;continue}if($===null)continue;if($<0){let N=fe(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(!Qn(i)){n+=`bash: unset: \`${i}': not a valid identifier
555
- `,r=1;continue}let c=i;if(oe(e,i)){let d=Ae(e,i);d&&d!==i&&(c=d)}if(ke(e,c)){n+=`bash: unset: ${c}: cannot unset: readonly variable
556
- `,r=1;continue}let u=We(e,c);if(u!==void 0&&u!==e.state.callDepth)er(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 xs(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=fe(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 tr(e,c);e.state.env.delete(`${l}_${p}`);continue}let d=zt(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 Jn(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=fe(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(!Qn(i)){n+=`bash: unset: \`${i}': not a valid identifier
561
- `,r=1;continue}let o=i;if(oe(e,i)){let l=Ae(e,i);l&&l!==i&&(o=l)}if(ke(e,o)){n+=`bash: unset: ${o}: cannot unset: readonly variable
562
- `,r=1;continue}let f=We(e,o);if(f!==void 0&&f!==e.state.callDepth)er(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 xs(e,o)||e.state.env.delete(o);e.state.exportedVars?.delete(o),e.state.functions.delete(i)}return _("",n,r)}var Ls=["extglob","dotglob","nullglob","failglob","globstar","globskipdots","nocaseglob","nocasematch","expand_aliases","lastpipe","xpg_echo"],Bi=["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 Ls.includes(e)}function Hi(e){return Bi.includes(e)}function sr(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 ji(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 Ls){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(!er.has(o)){let a=`bash: set: ${n[0]}${o}: invalid option
547
+ ${xt}`;if(e.state.options.posix)throw new pe(1,"",a);return S(a)}rr(e,er.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
+ ${xt}`;if(e.state.options.posix)throw new pe(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 pe(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 pe(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 Ms(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=we(i),u=await e.executeScript(c);return l(),u}catch(c){if(l(),c instanceof V)throw c;if(c instanceof ne)return _(c.stdout,c.stderr,c.exitCode);if(c.name==="ParseException")return S(`bash: ${n}: ${c.message}
553
+ `);throw c}}function ir(e){return/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)}function Xi(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')}async function or(e,t){if(Xi(t))return null;try{let s=new W,n=q(s,t);return await z(e,n.expression)}catch{let s=parseInt(t,10);return Number.isNaN(s)?0:s}}function ar(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),Ws(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 Ws(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 lr(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 W().parseWordFromString(s,!0,!1);return x(e,r)}if(t.includes("$")){let n=new W().parseWordFromString(t,!1,!1);return x(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=ye(e,d);for(let[y]of k)e.state.env.delete(`${d}_${y}`);e.state.env.delete(d);continue}let m=e.state.associativeArrays?.has(d);if(m){let k=await lr(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 or(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=ye(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(!ir(i)){n+=`bash: unset: \`${i}': not a valid identifier
558
+ `,r=1;continue}let u=i;if(de(e,i)){let d=ke(e,i);d&&d!==i&&(u=d)}if(xe(e,u)){n+=`bash: unset: ${u}: cannot unset: readonly variable
559
+ `,r=1;continue}let f=ze(e,u);if(f!==void 0&&f!==e.state.callDepth)ar(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 Ws(e,u)||e.state.env.delete(u);e.state.exportedVars?.delete(u);continue}let o=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(o){let c=o[1],u=o[2];if(u==="@"||u==="*"){let p=ye(e,c);for(let[g]of p)e.state.env.delete(`${c}_${g}`);e.state.env.delete(c);continue}let f=e.state.associativeArrays?.has(c);if(f){let p=await lr(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 or(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=ye(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(!ir(i)){n+=`bash: unset: \`${i}': not a valid identifier
564
+ `,r=1;continue}let a=i;if(de(e,i)){let c=ke(e,i);c&&c!==i&&(a=c)}if(xe(e,a)){n+=`bash: unset: ${a}: cannot unset: readonly variable
565
+ `,r=1;continue}let l=ze(e,a);if(l!==void 0&&l!==e.state.callDepth)ar(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 Ws(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"],Yi=["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 Qi(e){return Yi.includes(e)}function cr(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 Ji(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 Ls){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)&&!Hi(d)){c+=`shopt: ${d}: invalid shell option name
569
- `,l=!0;continue}if(s)Ot(d)&&(e.state.shoptOptions[d]=!0,qt(e));else if(n)Ot(d)&&(e.state.shoptOptions[d]=!1,qt(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)&&!Qi(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 ji(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 Ji(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,Re(e);else if(n)e.state.options[p]=!1,Re(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 nr(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 or(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?rr(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)||es.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?rr(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 rr(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 ur(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 pr(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?fr(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?fr(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 fr(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(Ui(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(ir(t.name));for(let n of t.args)s.push(ir(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>Ke(n)).join("; ")}; }`:"..."}function Ui(e){let t=e.commands.map(s=>Ke(s));return(e.negated?"! ":"")+t.join(" | ")}function ir(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>ar(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=ar(s);return t}function ar(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function lr(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(es.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 cr(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 fr(e,t,s,n,r,i,a,o){let{ctx:f,runCommand:l}=e;if(t==="export")return $s(f,s);if(t==="unset")return Rs(f,s);if(t==="exit")return Es(f,s);if(t==="local")return Cs(f,s);if(t==="set")return Ds(f,s);if(t==="break")return Gt(f,s);if(t==="continue")return os(f,s);if(t==="return")return ks(f,s);if(t==="eval"&&f.state.options.posix)return Pt(f,s,r);if(t==="shift")return Is(f,s);if(t==="getopts")return Nt(f,s);if(t==="compgen")return ns(f,s);if(t==="complete")return is(f,s);if(t==="compopt")return as(f,s);if(t==="pushd")return await ws(f,s);if(t==="popd")return vs(f,s);if(t==="dirs")return bs(f,s);if(t==="source"||t===".")return Ts(f,s);if(t==="read")return Ns(f,s,r,o);if(t==="mapfile"||t==="readarray")return Ps(f,s,r);if(t==="declare"||t==="typeset")return ms(f,s);if(t==="readonly")return ys(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 Kt(f,s);if(t===":"||t==="true")return L;if(t==="false")return U(!1);if(t==="let")return _s(f,s);if(t==="command")return qi(e,s,r);if(t==="builtin")return Zi(e,s,r);if(t==="shopt")return sr(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 or(f,s,c=>cr(f,c),c=>Dt(f,c));if(t==="hash")return Ss(f,s);if(t==="help")return As(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 qi(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 lr(n,f,o,a);let[l,...c]=f;return r(l,c,[],s,!0,i,-1)}async function Zi(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 ur(e,t,s,n,r){let{ctx:i,buildExportedEnv:a,executeUserScript:o}=e,l=await nr(i,t,r?"/usr/bin:/bin":void 0);if(!l)return vn(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(eo(n)),e.operators[s]&&t.push(e.operators[s])}return t.join(" ")}if(e.type==="SimpleCommand"){let t=e,s=[];t.name&&s.push(dr(t.name));for(let n of t.args)s.push(dr(n));return s.join(" ")}return e.type==="Group"?`{ ${e.body.map(n=>Je(n)).join("; ")}; }`:"..."}function eo(e){let t=e.commands.map(s=>Je(s));return(e.negated?"! ":"")+t.join(" | ")}function dr(e){let t="";for(let s of e.parts)s.type==="Literal"?t+=s.value:s.type==="DoubleQuoted"?t+=`"${s.parts.map(n=>hr(n)).join("")}"`:s.type==="SingleQuoted"?t+=`'${s.value}'`:t+=hr(s);return t}function hr(e){let t=e;return t.type==="Literal"?t.value??"":t.type==="Variable"?`$${t.name}`:""}async function mr(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 yr(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 gr(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 Ds(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 Dt(l,s,r);if(t==="shift")return Fs(l,s);if(t==="getopts")return Tt(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 Ms(l,s);if(t==="read")return xs(l,s,r,a);if(t==="mapfile"||t==="readarray")return Ts(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 Dt(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 to(e,s,r);if(t==="builtin")return so(e,s,r);if(t==="shopt")return cr(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 pr(l,s,u=>yr(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 to(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 mr(n,l,a,o);let[c,...u]=l;return r(c,u,[],s,!0,i,-1)}async function so(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 wr(e,t,s,n,r){let{ctx:i,buildExportedEnv:o,executeUserScript:a}=e,c=await ur(i,t,r?"/usr/bin:/bin":void 0);if(!c)return Cn(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}: ${le(p)}
620
- `)}}async function Ws(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 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:"break",stdout:t,stderr:s};if(e instanceof ie)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 te||e instanceof ae||e instanceof z||e instanceof ee)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=le(e);return{action:"error",stdout:t,stderr:`${s}${r}
621
- `,exitCode:1}}async function It(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 ae||o instanceof z||o instanceof ee||o instanceof Ee)throw o.prependOutput(r,i),o;return{stdout:r,stderr:`${i}${le(o)}
622
- `,exitCode:1}}return{stdout:r,stderr:i,exitCode:a}}async function dr(e,t){let s="",n="";for(let r of t.clauses){let i=await Ws(e,r.condition);if(s+=i.stdout,n+=i.stderr,i.exitCode===0)return It(e,r.body,s,n)}return t.elseBody?It(e,t.elseBody,s,n):_(s,n,0)}async function hr(e,t){let s=await ge(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 me(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&&ve(`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 pr(e,t){let s=await ge(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&&ve(`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 mr(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 T(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}: ${he(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 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:"break",stdout:t,stderr:s};if(e instanceof ce)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 ne||e instanceof fe||e instanceof V||e instanceof se)return e.prependOutput(t,s),{action:"rethrow",stdout:t,stderr:s,error:e};let r=he(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 fe||a instanceof V||a instanceof se||a instanceof _e)throw a.prependOutput(r,i),a;return{stdout:r,stderr:`${i}${he(a)}
625
+ `,exitCode:1}}return{stdout:r,stderr:i,exitCode:o}}async function vr(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 br(e,t){let s=await $e(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 be(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&&Ae(`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 Er(e,t){let s=await $e(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&&Ae(`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 $r(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 x(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 T(e,l.target)}
626
- `;else if(l.operator==="<"&&l.target.type==="Word")try{let c=await T(e,l.target),u=e.fs.resolvePath(e.state.cwd,c);o=await e.fs.readFile(u)}catch{let c=await T(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&&ve(`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 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;c=!0}else if(h instanceof ie){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 yr(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&ve(`until loop: too many iterations (${e.limits.maxLoopIterations}), increase executionLimits.maxLoopIterations`,"iterations",s,n);let a=await Ws(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 gr(e,t){let s=await ge(e,t.redirections);if(s)return s;let n="",r="",i=0,a=await T(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 T(e,d);tn(d)&&(h=Js(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(Le(a,h,m,p)){u=!0;break}}if(u){let d=await It(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 Ms(e,t){if(e.parts.length!==1)return!1;let s=e.parts[0];return s.type!=="Literal"?!1:t.includes(s.value)}function wr(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 vr="+ ";async function br(e){let t=e.state.env.get("PS4");if(t===void 0)return vr;if(t==="")return"";try{let n=new F().parseWordFromString(t,!1,!1);return await T(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
628
- `,t||vr}}function Gi(e){return e.map(t=>Ki(t)).join(" ")}function Ki(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 Er(e,t,s){if(!e.state.options.xtrace)return"";let n=await br(e),r=[t,...s],i=Gi(r);return`${n}${i}
631
- `}async function $r(e,t,s){return e.state.options.xtrace?`${await br(e)}${t}=${s}
632
- `:""}async function Sr(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 ae&&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 x(e,c.target)}
629
+ `;else if(c.operator==="<"&&c.target.type==="Word")try{let u=await x(e,c.target),f=e.fs.resolvePath(e.state.cwd,u);a=await e.fs.readFile(f)}catch{let u=await x(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&&Ae(`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 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;u=!0}else if(h instanceof ce){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 Sr(e,t){let s="",n="",r=0,i=0;e.state.loopDepth++;try{for(;;){i++,i>e.limits.maxLoopIterations&&Ae(`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 Ar(e,t){let s=await $e(e,t.redirections);if(s)return s;let n="",r="",i=0,o=await x(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 x(e,d);cn(d)&&(h=an(h));let m=e.state.shoptOptions.nocasematch,p=e.state.shoptOptions.extglob;if(Ve(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 _r(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 Cr="+ ";async function Pr(e){let t=e.state.env.get("PS4");if(t===void 0)return Cr;if(t==="")return"";try{let n=new W().parseWordFromString(t,!1,!1);return await x(e,n)}catch{return e.state.expansionStderr=`${e.state.expansionStderr||""}bash: ${t}: bad substitution
631
+ `,t||Cr}}function no(e){return e.map(t=>ro(t)).join(" ")}function ro(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 kr(e,t,s){if(!e.state.options.xtrace)return"";let n=await Pr(e),r=[t,...s],i=no(r);return`${n}${i}
634
+ `}async function Nr(e,t,s){return e.state.options.xtrace?`${await Pr(e)}${t}=${s}
635
+ `:""}async function Or(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 fe&&t.commands.length>1)g={stdout:b.stdout,stderr:b.stderr,exitCode:b.exitCode};else throw p&&(e.state.env=p),b}p&&(e.state.env=p),a.push(g.exitCode),g.exitCode!==0&&(o=g.exitCode),h?i=g:t.pipeStderr?.[f]??!1?(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 Ar(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let c=await Xi(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 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
640
- `,1)};let f=i.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\[(.+)\]$/);if(f){let c=await ta(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 na(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 Xi(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(oe(e,s)){let c=Ys(e,s);if(c===void 0||c==="")throw new z(1,"","");let u=Ae(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(ke(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=Yi(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 Qi(e,t,s,n,r,l,c=>{a+=c}):f?await Ji(e,s,n,r,l):await ea(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 Yi(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 Qi(e,t,s,n,r,i,a){let o=[];for(let f of n){let l=Lt(f);if(l){let{key:c,valueParts:u,append:d}=l,h;u.length>0?h=await T(e,{type:"Word",parts:u}):h="",h=H(e,h),o.push({type:"keyed",key:c,value:h,append:d})}else{let c=await T(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 Ji(e,t,s,n,r){let i=[];for(let o of s){let f=Lt(o);if(f){let{key:l,valueParts:c,append:u}=f,d;c.length>0?d=await T(e,{type:"Word",parts:c}):d="",d=H(e,d),i.push({type:"keyed",indexExpr:l,value:d,append:u})}else{let l=await me(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 F,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 ea(e,t,s,n,r){let i=[];for(let o of s){let f=await me(e,o);i.push(...f.values)}let a=0;if(n){let o=fe(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 ta(e,t,s,n,r,i,a){let o=s;if(oe(e,s)){let u=Ae(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(ke(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 _r(e,o,n);else{let u=await sa(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=We(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 _r(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 F().parseWordFromString(r,!0,!1);n=await T(e,a)}else if(s.includes("$")){let i=new F().parseWordFromString(s,!1,!1);n=await T(e,i)}else n=s;return`${t}_${n}`}async function sa(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 F,a=q(i,n);r=await V(e,a.expression,!1)}catch(i){if(i instanceof Ne){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=fe(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 na(e,t,s,n,r,i){let a="",o=s,f=null;if(oe(e,s)){let u=Qs(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(ke(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 F;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 $r(e,o,l);let c=o;if(f)c=await ra(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 ra(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return _r(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let a=new F,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=fe(e,s);a.length>0&&(i=Math.max(...a.map(f=>f[0]))+1+i)}return`${s}_${i}`}async function Cr(e,t,s,n){let r=await ge(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 ee)throw b;if(b instanceof Ee){v+=b.stdout,$+=b.stderr;let O=_(v,$,0);return B(e,O,t.redirections)}if(b instanceof re||b instanceof ie){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 te){v+=b.stdout,$+=b.stderr;let O=_(v,$,b.exitCode);return B(e,O,t.redirections)}if(b instanceof ae){let O=_(v+b.stdout,$+b.stderr,b.exitCode);return B(e,O,t.redirections)}let C=_(v,`${$}${le(b)}
651
- `,1);return B(e,C,t.redirections)}y();let w=_(v,$,N);return B(e,w,t.redirections)}async function Pr(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 T(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 Dr(e,t){let s=new Map,n="";for(let r of t.assignments){let i=r.name;if(r.array){let u=await io(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 x(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 uo(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 ho(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 io(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(de(e,s)){let u=rn(e,s);if(u===void 0||u==="")throw new V(1,"","");let f=ke(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(xe(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=oo(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 ao(e,t,s,n,r,c,u=>{o+=u}):l?await lo(e,s,n,r,c):await co(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 oo(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 ao(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 x(e,{type:"Word",parts:f}):h="",h=j(e,h),a.push({type:"keyed",key:u,value:h,append:d})}else{let u=await x(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 lo(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 x(e,{type:"Word",parts:u}):d="",d=j(e,d),i.push({type:"keyed",indexExpr:c,value:d,append:f})}else{let c=await be(e,a);i.push({type:"non-keyed",values:c.values})}}n||r();let o=0;for(let a of i)if(a.type==="keyed"){let l;try{let c=new W,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 co(e,t,s,n,r){let i=[];for(let a of s){let l=await be(e,a);i.push(...l.values)}let o=0;if(n){let a=ye(e,t);if(a.length>0)o=Math.max(...a.map(([c])=>typeof c=="number"?c:0))+1;else{let l=e.state.env.get(t);l!==void 0&&(e.state.env.set(`${t}_0`,l),e.state.env.delete(t),o=1)}}else 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 uo(e,t,s,n,r,i,o){let a=s;if(de(e,s)){let f=ke(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(xe(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 Tr(e,a,n);else{let f=await fo(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=ze(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 Tr(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 W().parseWordFromString(r,!0,!1);n=await x(e,o)}else if(s.includes("$")){let i=new W().parseWordFromString(s,!1,!1);n=await x(e,i)}else n=s;return`${t}_${n}`}async function fo(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 W,o=q(i,n);r=await z(e,o.expression,!1)}catch(i){if(i instanceof Te){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=ye(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 ho(e,t,s,n,r,i){let o="",a=s,l=null;if(de(e,s)){let f=on(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(xe(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 W;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=je(e,a,c),o+=await Nr(e,a,c);let u=a;if(l)u=await po(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 po(e,t){let{arrayName:s,subscriptExpr:n}=t;if(e.state.associativeArrays?.has(s))return Tr(e,s,n);let i;if(/^-?\d+$/.test(n))i=Number.parseInt(n,10);else{try{let o=new W,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=ye(e,s);o.length>0&&(i=Math.max(...o.map(l=>l[0]))+1+i)}return`${s}_${i}`}async function xr(e,t,s,n){let r=await $e(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(D=>({...D})))}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 se)throw v;if(v instanceof _e){b+=v.stdout,E+=v.stderr;let D=_(b,E,0);return B(e,D,t.redirections)}if(v instanceof le||v instanceof ce){b+=v.stdout,E+=v.stderr;let D=_(b,E,0);return B(e,D,t.redirections)}if(v instanceof V){b+=v.stdout,E+=v.stderr;let D=_(b,E,v.exitCode);return B(e,D,t.redirections)}if(v instanceof ne){b+=v.stdout,E+=v.stderr;let D=_(b,E,v.exitCode);return B(e,D,t.redirections)}if(v instanceof fe){let D=_(b+v.stdout,E+v.stderr,v.exitCode);return B(e,D,t.redirections)}let C=_(b,`${E}${he(v)}
654
+ `,1);return B(e,C,t.redirections)}y();let w=_(b,E,k);return B(e,w,t.redirections)}async function Ir(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 x(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 T(e,u.target)}
654
- `;else if(u.operator==="<"&&u.target.type==="Word")try{let d=await T(e,u.target),h=e.fs.resolvePath(e.state.cwd,d);f=await e.fs.readFile(h)}catch{let d=await T(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 ee)throw u;if(nt(u)||u instanceof ae||u instanceof z)throw u.prependOutput(r,i),u;return _(r,`${i}${le(u)}
656
- `,1)}e.state.groupStdin=l;let c=_(r,i,a);return B(e,c,t.redirections)}async function Nr(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 x(e,f.target)}
657
+ `;else if(f.operator==="<"&&f.target.type==="Word")try{let d=await x(e,f.target),h=e.fs.resolvePath(e.state.cwd,d);l=await e.fs.readFile(h)}catch{let d=await x(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 se)throw f;if(at(f)||f instanceof fe||f instanceof V)throw f.prependOutput(r,i),f;return _(r,`${i}${he(f)}
659
+ `,1)}e.state.groupStdin=c;let u=_(r,i,o);return B(e,u,t.redirections)}async function Rr(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 F().parse(i),$=await r(v);return p(),$}catch(g){if(p(),g instanceof z||g instanceof ee)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 ce)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:$e(this.ctx.state.env)};if(a instanceof ee)throw a;if(a instanceof ae)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:$e(this.ctx.state.env)};if(a instanceof Bs)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:$e(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:$e(this.ctx.state.env)};if(a instanceof Ne){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof Hs){s+=a.stdout,n+=a.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(a instanceof re||a instanceof ie){if(this.ctx.state.loopDepth>0)throw a.prependOutput(s,n),a;s+=a.stdout,n+=a.stderr;continue}throw a instanceof te&&a.prependOutput(s,n),a}return{stdout:s,stderr:n,exitCode:r,env:$e(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Nr(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&&ve(`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 ae(r,s,n);return _(s,n,r)}async executePipeline(t){return Sr(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 dr(this.ctx,t);case"For":return hr(this.ctx,t);case"CStyleFor":return pr(this.ctx,t);case"While":return mr(this.ctx,t,s);case"Until":return yr(this.ctx,t);case"Case":return gr(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return xn(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 Ar(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 ge(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&&Ms(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 T(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 T(this.ctx,y.target)}
663
- `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await T(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 T(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 T(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=wr(C);O&&(s=O.content.slice(O.position),l=b)}else C.startsWith("__file__:")||C.startsWith("__file_append__:")||(s=C)}}}let c=await T(this.ctx,t.name),u=[],d=[];if(Ms(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 gn(this.ctx,y);if(w)u.push(w),d.push(!0);else{let b=await wn(this.ctx,y);if(b!==null)u.push(b),d.push(!0);else{let C=await me(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 me(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 T(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 Er(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 re||y instanceof ie)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 $=In(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 fr(f,t,s,n,r,i,a,o);return l!==null?l:ur(f,t,s,r,a)}aliasExpansionStack=new Set;expandAlias(t){return Zt(this.ctx.state,t,this.aliasExpansionStack)}async findCommandInPath(t){return Dt(this.ctx,t)}async executeSubshell(t,s=""){return Cr(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Pr(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await ge(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 ge(this.ctx,t.redirections);if(s)return s;try{let n=await Ce(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 Ne?1:2,i=S(`bash: conditional expression: ${n.message}
668
- `,r);return B(this.ctx,i,t.redirections)}}};var be={maxCallDepth:100,maxCommandCount:1e4,maxLoopIterations:1e4,maxAwkIterations:1e4,maxSedIterations:1e4,maxJqIterations:1e4,maxSqliteTimeoutMs:5e3,maxPythonTimeoutMs:3e4};function kr(e){return e?{maxCallDepth:e.maxCallDepth??be.maxCallDepth,maxCommandCount:e.maxCommandCount??be.maxCommandCount,maxLoopIterations:e.maxLoopIterations??be.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??be.maxAwkIterations,maxSedIterations:e.maxSedIterations??be.maxSedIterations,maxJqIterations:e.maxJqIterations??be.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??be.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??be.maxPythonTimeoutMs}:{...be}}function Or(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function ia(e){let t=Or(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function aa(e,t){let s=Or(e);if(!s)return!1;let n=ia(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=>aa(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"}},Tt=class extends Error{constructor(t,s){super(`HTTP method '${t}' not allowed. Allowed methods: ${s.join(", ")}`),this.name="MethodNotAllowedError"}};var oa=20,la=3e4,ca=["GET","HEAD"],fa=new Set(["GET","HEAD","OPTIONS"]),ua=new Set([301,302,303,307,308]);function zs(e){let t=e.maxRedirects??oa,s=e.timeoutMs??la,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??ca;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 Tt(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&&!fa.has(l)&&(g.body=f.body);let v=await fetch(c,g);if(ua.has(v.status)&&d){let $=v.headers.get("location");if(!$)return await Dr(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 Dr(v,c)}finally{clearTimeout(p)}}}return a}async function Dr(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 He(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=kr({...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=zs(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",Ut(this.state.shoptOptions)),un(s,this.useDefaultLayout),n!=="/"&&s instanceof He)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of an(t.commands))this.registerCommand(i);if(t.network)for(let i of on())this.registerCommand(i);if(t.python)for(let i of ln())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)cn(i)?this.registerCommand(fn(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 W().parse(i),E=await r(b);return p(),E}catch(g){if(p(),g instanceof V||g instanceof se)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 pe)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:Ce(this.ctx.state.env)};if(o instanceof se)throw o;if(o instanceof fe)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:Ce(this.ctx.state.env)};if(o instanceof Ks)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:Ce(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:Ce(this.ctx.state.env)};if(o instanceof Te){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof Xs){s+=o.stdout,n+=o.stderr,r=1,this.ctx.state.lastExitCode=r,this.ctx.state.env.set("?",String(r));continue}if(o instanceof le||o instanceof ce){if(this.ctx.state.loopDepth>0)throw o.prependOutput(s,n),o;s+=o.stdout,n+=o.stderr;continue}throw o instanceof ne&&o.prependOutput(s,n),o}return{stdout:s,stderr:n,exitCode:r,env:Ce(this.ctx.state.env)}}async executeUserScript(t,s,n=""){return Rr(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&&Ae(`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 fe(r,s,n);return _(s,n,r)}async executePipeline(t){return Or(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 vr(this.ctx,t);case"For":return br(this.ctx,t);case"CStyleFor":return Er(this.ctx,t);case"While":return $r(this.ctx,t,s);case"Until":return Sr(this.ctx,t);case"Case":return Ar(this.ctx,t);case"Subshell":return this.executeSubshell(t,s);case"Group":return this.executeGroup(t,s);case"FunctionDef":return zn(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 Dr(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 $e(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 x(this.ctx,w.content);w.stripTabs&&(v=v.split(`
664
+ `).map(D=>D.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 x(this.ctx,y.target)}
666
+ `;continue}if(y.operator==="<"&&y.target.type==="Word")try{let w=await x(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 x(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 x(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 D=_r(C);D&&(s=D.content.slice(D.position),c=v)}else C.startsWith("__file__:")||C.startsWith("__file_append__:")||(s=C)}}}let u=await x(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 An(this.ctx,y);if(w)f.push(w),d.push(!0);else{let v=await _n(this.ctx,y);if(v!==null)f.push(v),d.push(!0);else{let C=await be(this.ctx,y);for(let D of C.values)f.push(D),d.push(C.quoted)}}}else for(let y of t.args){let w=await be(this.ctx,y);for(let v of w.values)f.push(v),d.push(w.quoted)}if(!u){if(t.name.parts.every(w=>w.type==="CommandSubstitution"||w.type==="ParameterExpansion"||w.type==="ArithmeticExpansion")){if(f.length>0){let w=f.shift();return d.shift(),await this.runCommand(w,f,d,s,!1,!1,c)}return _("","",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 x(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 D=await this.ctx.fs.readFile(C);this.ctx.state.fileDescriptors.set(v,D)}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 D=await this.ctx.fs.readFile(C);this.ctx.state.fileDescriptors.set(v,`__rw__:${C.length}:${C}:0:${D}`)}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),D=Number.parseInt(C,10);if(!Number.isNaN(D)){let T=this.ctx.state.fileDescriptors.get(D);T!==void 0?this.ctx.state.fileDescriptors.set(v,T):this.ctx.state.fileDescriptors.set(v,`__dupout__:${D}`),this.ctx.state.fileDescriptors.delete(D)}}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),D=Number.parseInt(C,10);if(!Number.isNaN(D)){let T=this.ctx.state.fileDescriptors.get(D);T!==void 0?this.ctx.state.fileDescriptors.set(v,T):this.ctx.state.fileDescriptors.set(v,`__dupin__:${D}`),this.ctx.state.fileDescriptors.delete(D)}}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 kr(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 le||y instanceof ce)g=y,p=L;else throw y}let b=i+m;if(b&&(p={...p,stderr:b+p.stderr}),p=await 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 gr(l,t,s,n,r,i,o,a);return c!==null?c:wr(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 xr(this.ctx,t,s,n=>this.executeStatement(n))}async executeGroup(t,s=""){return Ir(this.ctx,t,s,n=>this.executeStatement(n))}async executeArithmeticCommand(t){t.line!==void 0&&(this.ctx.state.currentLine=t.line);let s=await $e(this.ctx,t.redirections);if(s)return s;try{let 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 $e(this.ctx,t.redirections);if(s)return s;try{let n=await Oe(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 Te?1:2,i=S(`bash: conditional expression: ${n.message}
671
+ `,r);return B(this.ctx,i,t.redirections)}}};var ie={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 Lr(e){return e?{maxCallDepth:e.maxCallDepth??ie.maxCallDepth,maxCommandCount:e.maxCommandCount??ie.maxCommandCount,maxLoopIterations:e.maxLoopIterations??ie.maxLoopIterations,maxAwkIterations:e.maxAwkIterations??ie.maxAwkIterations,maxSedIterations:e.maxSedIterations??ie.maxSedIterations,maxJqIterations:e.maxJqIterations??ie.maxJqIterations,maxSqliteTimeoutMs:e.maxSqliteTimeoutMs??ie.maxSqliteTimeoutMs,maxPythonTimeoutMs:e.maxPythonTimeoutMs??ie.maxPythonTimeoutMs,maxGlobOperations:e.maxGlobOperations??ie.maxGlobOperations,maxStringLength:e.maxStringLength??ie.maxStringLength,maxArrayElements:e.maxArrayElements??ie.maxArrayElements,maxHeredocSize:e.maxHeredocSize??ie.maxHeredocSize,maxSubstitutionDepth:e.maxSubstitutionDepth??ie.maxSubstitutionDepth}:{...ie}}function Fr(e){try{let t=new URL(e);return{origin:t.origin,pathname:t.pathname,href:t.href}}catch{return null}}function mo(e){let t=Fr(e);return t?{origin:t.origin,pathPrefix:t.pathname}:null}function yo(e,t){let s=Fr(e);if(!s)return!1;let n=mo(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=>yo(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 go=20,wo=3e4,vo=["GET","HEAD"],bo=new Set(["GET","HEAD","OPTIONS"]),Eo=new Set([301,302,303,307,308]);function Us(e){let t=e.maxRedirects??go,s=e.timeoutMs??wo,n=e.dangerouslyAllowFullInternetAccess?["GET","HEAD","POST","PUT","DELETE","PATCH","OPTIONS"]:e.allowedMethods??vo;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&&!bo.has(c)&&(g.body=l.body);let b=await fetch(u,g);if(Eo.has(b.status)&&d){let E=b.headers.get("location");if(!E)return await Mr(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 Mr(b,u)}finally{clearTimeout(p)}}}return o}async function Mr(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}}import{AsyncLocalStorage as $o}from"node:async_hooks";import{randomUUID as Vr}from"node:crypto";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 Zs=typeof __BROWSER__<"u"&&__BROWSER__,So=`
672
+
673
+ This is a defense-in-depth measure and indicates a bug in just-bash. Please report this at security@vercel.com`,oe=class extends Error{violation;constructor(t,s){super(t+So),this.violation=s,this.name="SecurityViolationError"}},ue=Zs?null:new $o,Ao=1e3,qs={enabled:!0,auditMode:!1};function _o(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(_o(t))),e.instance}static resetInstance(){e.instance&&(e.instance.forceDeactivate(),e.instance=null)}static isInSandboxedContext(){return ue?ue?.getStore()?.sandboxActive===!0:!1}static getCurrentExecutionId(){if(ue)return ue?.getStore()?.executionId}updateConfig(t){this.config={...this.config,...t}}activate(){if(Zs||!this.config.enabled){let s=Vr();return{run:n=>n(),deactivate:()=>{},executionId:s}}this.refCount++,this.refCount===1&&(this.applyPatches(),this.activationTime=Date.now());let t=Vr();return{run:s=>ue.run({sandboxActive:!0,executionId:t},s),deactivate:()=>{this.refCount--,this.refCount===0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount<0&&(this.refCount=0)},executionId:t}}forceDeactivate(){this.refCount>0&&(this.restorePatches(),this.totalActiveTimeMs+=Date.now()-this.activationTime),this.refCount=0}isActive(){return this.refCount>0}getStats(){return{violationsBlocked:this.violations.length,violations:[...this.violations],activeTimeMs:this.totalActiveTimeMs+(this.refCount>0?Date.now()-this.activationTime:0),refCount:this.refCount}}clearViolations(){this.violations=[]}getPathForTarget(t,s){return t===globalThis?`globalThis.${s}`:t===process?`process.${s}`:t===Error?`Error.${s}`:t===Function.prototype?`Function.prototype.${s}`:t===Object.prototype?`Object.prototype.${s}`:`<object>.${s}`}shouldBlock(){return Zs||this.config.auditMode||!ue?!1:ue?.getStore()?.sandboxActive===!0}recordViolation(t,s,n){let r={timestamp:Date.now(),type:t,message:n,path:s,stack:new Error().stack,executionId:ue?.getStore()?.executionId};if(this.violations.length<Ao&&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 oe(l,c)}return r.config.auditMode&&ue?.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 oe(l,c)}return r.config.auditMode&&ue?.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 oe(c,u)}if(r.config.auditMode&&ue?.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 oe(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 oe(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 oe(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 oe(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 oe(i,o)}t.config.auditMode&&ue?.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 oe(a,l)}return r.config.auditMode&&ue?.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 oe(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 Wt=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=Lr({...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)),wn(s,this.useDefaultLayout),n!=="/"&&s instanceof Ze)try{s.mkdirSync(n,{recursive:!0})}catch{}for(let i of hn(t.commands))this.registerCommand(i);if(t.network)for(let i of pn())this.registerCommand(i);if(t.python)for(let i of mn())this.registerCommand(i);if(t.customCommands)for(let i of t.customCommands)yn(i)?this.registerCommand(gn(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:de(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:de(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=da(t));try{let l=he(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:de(this.state.env,s?.env)});if(l instanceof ce)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:l.exitCode,env:de(this.state.env,s?.env)});if(l instanceof Ne)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:1,env:de(this.state.env,s?.env)});if(l instanceof ee)return this.logResult({stdout:l.stdout,stderr:l.stderr,exitCode:ee.EXIT_CODE,env:de(this.state.env,s?.env)});if(l.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${l.message}
673
- `,exitCode:2,env:de(this.state.env,s?.env)});if(l instanceof qs)return this.logResult({stdout:"",stderr:`bash: ${l.message}
674
- `,exitCode:2,env:de(this.state.env,s?.env)});if(l instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${l.message}
675
- `,exitCode:1,env:de(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 $e(this.state.env)}};function da(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 ze from"node:path";var ha="/home/user/project",Rt=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=ze.resolve(t.root);let s=t.mountPoint??ha;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=ze.join(this.root,n),i=ze.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=_e(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=_e(n),a=xe(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=_e(n),a=xe(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=ze.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})}};var Y={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"},Vs=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new Rt({root:s,mountPoint:"/"});this.env=new xt({fs:n,cwd:t.cwd||"/",env:{HOME:"/",USER:"user",SHELL:"/bin/bash",TERM:"xterm-256color",...t.env},network:t.network!==!1?{dangerouslyAllowFullInternetAccess:!0}:void 0}),this.isInteractive=process.stdin.isTTY===!0,this.rl=Tr.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
677
+ `,exitCode:1,env:me(this.state.env,s?.env)};if(!t.trim())return{stdout:"",stderr:"",exitCode:0,env:me(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=Co(t));let u=(this.defenseInDepthConfig?Mt.getInstance(this.defenseInDepthConfig):null)?.activate();try{let f=async()=>{let d=we(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:me(this.state.env,s?.env)});if(f instanceof pe)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:f.exitCode,env:me(this.state.env,s?.env)});if(f instanceof Te)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:1,env:me(this.state.env,s?.env)});if(f instanceof se)return this.logResult({stdout:f.stdout,stderr:f.stderr,exitCode:se.EXIT_CODE,env:me(this.state.env,s?.env)});if(f instanceof oe)return this.logResult({stdout:"",stderr:`bash: security violation: ${f.message}
678
+ `,exitCode:1,env:me(this.state.env,s?.env)});if(f.name==="ParseException")return this.logResult({stdout:"",stderr:`bash: syntax error: ${f.message}
679
+ `,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof Js)return this.logResult({stdout:"",stderr:`bash: ${f.message}
680
+ `,exitCode:2,env:me(this.state.env,s?.env)});if(f instanceof RangeError)return this.logResult({stdout:"",stderr:`bash: ${f.message}
681
+ `,exitCode:1,env:me(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 Ce(this.state.env)}};function Co(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 He from"node:path";var Po="/home/user/project";function J(e,t){if(e.includes("\0"))throw new Error(`ENOENT: path contains null byte, ${t} '${e}'`)}var Vt=class{root;mountPoint;readOnly;memory=new Map;deleted=new Set;constructor(t){this.root=He.resolve(t.root);let s=t.mountPoint??Po;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=He.join(this.root,n),i=He.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=Ne(s);return dt(n,r)}async readFileBuffer(t,s=new Set){J(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){J(t,"write"),this.assertWritable(`write '${t}'`);let r=this.normalizePath(t);this.ensureParentDirs(r);let i=Ne(n),o=Me(s,i);this.memory.set(r,{type:"file",content:o,mode:420,mtime:new Date}),this.deleted.delete(r)}async appendFile(t,s,n){J(t,"append"),this.assertWritable(`append '${t}'`);let r=this.normalizePath(t),i=Ne(n),o=Me(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){J(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){J(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){J(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){J(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){J(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){J(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){J(t,"cp"),J(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=He.join(n,i);Z.statSync(a).isDirectory()&&this.scanRealFs(o,s)}}catch{}}async chmod(t,s){J(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){J(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){J(t,"link"),J(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){J(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){J(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){J(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})}};var Y={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",cyan:"\x1B[36m"},Gs=class{env;rl;running=!0;history=[];isInteractive;constructor(t={}){let s=process.cwd(),n=new Vt({root:s,mountPoint:"/"});this.env=new Wt({fs:n,cwd:t.cwd||"/",env:{HOME:"/",USER:"user",SHELL:"/bin/bash",TERM:"xterm-256color",...t.env},network:t.network!==!1?{dangerouslyAllowFullInternetAccess:!0}:void 0}),this.isInteractive=process.stdin.isTTY===!0,this.rl=Br.createInterface({input:process.stdin,output:process.stdout,terminal:this.isInteractive}),this.rl.on("SIGINT",()=>{process.stdout.write(`^C
678
684
  `),this.prompt()}),process.stdin.isTTY&&this.rl.on("close",()=>{this.running=!1,console.log(`
679
- Goodbye!`),process.exit(0)})}syncHistory(){let t=this.env.getEnv();t.BASH_HISTORY=JSON.stringify(this.history)}getPrompt(){let t=this.env.getCwd(),s=this.env.getEnv().HOME||"/home/user",n=t;return t===s?n="~":t.startsWith(`${s}/`)&&(n=`~${t.slice(s.length)}`),`${Y.green}${Y.bold}user@virtual${Y.reset}:${Y.blue}${Y.bold}${n}${Y.reset}$ `}async executeCommand(t){let s=t.trim();if(s){if(this.history.push(s),s==="exit"||s.startsWith("exit ")){let n=s.split(/\s+/),r=n[1]?parseInt(n[1],10):0;console.log("exit"),process.exit(r)}this.syncHistory();try{let n=await this.env.exec(s);n.stdout&&process.stdout.write(n.stdout),n.stderr&&process.stderr.write(`${Y.red}${n.stderr}${Y.reset}`)}catch(n){console.error(`${Y.red}Error: ${le(n)}${Y.reset}`)}}}printWelcome(){console.log(`
685
+ Goodbye!`),process.exit(0)})}syncHistory(){let t=this.env.getEnv();t.BASH_HISTORY=JSON.stringify(this.history)}getPrompt(){let t=this.env.getCwd(),s=this.env.getEnv().HOME||"/home/user",n=t;return t===s?n="~":t.startsWith(`${s}/`)&&(n=`~${t.slice(s.length)}`),`${Y.green}${Y.bold}user@virtual${Y.reset}:${Y.blue}${Y.bold}${n}${Y.reset}$ `}async executeCommand(t){let s=t.trim();if(s){if(this.history.push(s),s==="exit"||s.startsWith("exit ")){let n=s.split(/\s+/),r=n[1]?parseInt(n[1],10):0;console.log("exit"),process.exit(r)}this.syncHistory();try{let n=await this.env.exec(s);n.stdout&&process.stdout.write(n.stdout),n.stderr&&process.stderr.write(`${Y.red}${n.stderr}${Y.reset}`)}catch(n){console.error(`${Y.red}Error: ${he(n)}${Y.reset}`)}}}printWelcome(){console.log(`
680
686
  ${Y.cyan}${Y.bold}\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
681
687
  \u2551 Virtual Shell v1.0 \u2551
682
688
  \u2551 A simulated bash environment in TypeScript \u2551
@@ -686,7 +692,7 @@ ${Y.dim}Exploring: ${process.cwd()}${Y.reset}
686
692
 
687
693
  Type ${Y.green}help${Y.reset} for available commands, ${Y.green}exit${Y.reset} to quit.
688
694
  Reads from real filesystem, writes stay in memory (OverlayFs).
689
- `)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function pa(){let e=process.argv.slice(2),t={network:!0};for(let s=0;s<e.length;s++)if(e[s]==="--cwd"&&e[s+1])t.cwd=e[++s];else if(e[s]==="--files"&&e[s+1]){let n=e[++s];try{let r=Ir.readFileSync(n,"utf-8");t.files=JSON.parse(r)}catch(r){console.error(`Error reading files from ${n}:`,r),process.exit(1)}}else e[s]==="--no-network"?t.network=!1:(e[s]==="--help"||e[s]==="-h")&&(console.log(`
695
+ `)}prompt(){this.rl.question(this.getPrompt(),async t=>{this.running&&(await this.executeCommand(t),this.prompt())})}async run(){if(this.isInteractive)this.printWelcome(),this.prompt();else{let t=[];this.rl.on("line",s=>{t.push(s)}),await new Promise(s=>{this.rl.on("close",s)});for(let s of t)await this.executeCommand(s)}}};function ko(){let e=process.argv.slice(2),t={network:!0};for(let s=0;s<e.length;s++)if(e[s]==="--cwd"&&e[s+1])t.cwd=e[++s];else if(e[s]==="--files"&&e[s+1]){let n=e[++s];try{let r=zr.readFileSync(n,"utf-8");t.files=JSON.parse(r)}catch(r){console.error(`Error reading files from ${n}:`,r),process.exit(1)}}else e[s]==="--no-network"?t.network=!1:(e[s]==="--help"||e[s]==="-h")&&(console.log(`
690
696
  Usage: pnpm shell [options]
691
697
 
692
698
  Interactive shell using OverlayFs - reads from the current directory,
@@ -700,4 +706,4 @@ Options:
700
706
  Example:
701
707
  pnpm shell
702
708
  pnpm shell --no-network
703
- `),process.exit(0));return t}var ma=pa(),ya=new Vs(ma);ya.run();
709
+ `),process.exit(0));return t}var No=ko(),Oo=new Gs(No);Oo.run();