Download raw body.
On 11/14/24 22:19, Fred wrote:
> ...
> $ doas kdump -f ktrace.out > gorilla.dump
>
> Cheers
>
> Fred
>
The dump file.
Thanks again
58849 ktrace RET ktrace 0
58849 ktrace CALL mmap(0,0x4c,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ktrace RET mmap 16041849253888/0xe9708b9f000
58849 ktrace CALL execve(0x7a759b00f400,0x7a759b00fa08,0x7a759b00fa18)
58849 ktrace NAMI "/usr/bin/gorilla"
58849 ktrace RET execve -1 errno 2 No such file or directory
58849 ktrace CALL execve(0x7a759b00f400,0x7a759b00fa08,0x7a759b00fa18)
58849 ktrace NAMI "/bin/gorilla"
58849 ktrace RET execve -1 errno 2 No such file or directory
58849 ktrace CALL execve(0x7a759b00f400,0x7a759b00fa08,0x7a759b00fa18)
58849 ktrace NAMI "/usr/sbin/gorilla"
58849 ktrace RET execve -1 errno 2 No such file or directory
58849 ktrace CALL execve(0x7a759b00f400,0x7a759b00fa08,0x7a759b00fa18)
58849 ktrace NAMI "/sbin/gorilla"
58849 ktrace RET execve -1 errno 2 No such file or directory
58849 ktrace CALL execve(0x7a759b00f400,0x7a759b00fa08,0x7a759b00fa18)
58849 ktrace NAMI "/usr/X11R6/bin/gorilla"
58849 ktrace RET execve -1 errno 2 No such file or directory
58849 ktrace CALL execve(0x7a759b00f400,0x7a759b00fa08,0x7a759b00fa18)
58849 ktrace NAMI "/usr/local/bin/gorilla"
58849 ktrace NAMI "/bin/ksh"
58849 ktrace ARGS
[0] = "/bin/ksh"
[1] = "/usr/local/bin/gorilla"
58849 ksh RET execve JUSTRETURN
58849 ksh CALL issetugid()
58849 ksh RET issetugid 0
58849 ksh CALL mmap(0,0x40,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16274045935616/0xecd18ba2000
58849 ksh CALL getthrid()
58849 ksh RET getthrid 539678/0x83c1e
58849 ksh CALL __set_tcb(0xecd18ba2000)
58849 ksh RET __set_tcb 0
58849 ksh CALL mimmutable(0xeca9deda000,0x28fc4)
58849 ksh RET mimmutable 0
58849 ksh CALL mimmutable(0xeca9df03fd0,0x90750)
58849 ksh RET mimmutable 0
58849 ksh CALL mprotect(0xeca9df95720,0x68e0,0x1<PROT_READ>)
58849 ksh RET mprotect 0
58849 ksh CALL mimmutable(0xeca9df95720,0x68e0)
58849 ksh RET mimmutable 0
58849 ksh CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16272573665280/0xeccc0f91000
58849 ksh CALL mprotect(0xeccc0f91000,0x1000,0x1<PROT_READ>)
58849 ksh RET mprotect 0
58849 ksh CALL issetugid()
58849 ksh RET issetugid 0
58849 ksh CALL pledge(0xeca9deeaae9,0)
58849 ksh STRU promise="stdio rpath wpath cpath fattr flock getpw proc \
exec tty"
58849 ksh RET pledge 0
58849 ksh CALL sysctl(2.12<vm.malloc_conf>,0x76d475de2a90,0x76d475de2aa8,0,0)
58849 ksh RET sysctl 0
58849 ksh CALL issetugid()
58849 ksh RET issetugid 0
58849 ksh CALL getentropy(0x76d475de2a00,40)
58849 ksh RET getentropy 0
58849 ksh CALL mmap(0,0x450,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16273253081088/0xecce9782000
58849 ksh CALL minherit(0xecce9782000,0x450,MAP_INHERIT_ZERO)
58849 ksh RET minherit 0
58849 ksh CALL mmap(0,0xe000,0<PROT_NONE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16273672986624/0xecd027f6000
58849 ksh CALL mprotect(0xecd027f7000,0xc000,0x3<PROT_READ|PROT_WRITE>)
58849 ksh RET mprotect 0
58849 ksh CALL mimmutable(0xecd027f6000,0xe000)
58849 ksh RET mimmutable 0
58849 ksh CALL mprotect(0xeca9df9e000,0x1000,0x1<PROT_READ>)
58849 ksh RET mprotect 0
58849 ksh CALL mimmutable(0xeca9df9e000,0x1000)
58849 ksh RET mimmutable 0
58849 ksh CALL mmap(0,0x2200,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16273988116480/0xecd1547e000
58849 ksh CALL mimmutable(0xecd1547e000,0x2200)
58849 ksh RET mimmutable 0
58849 ksh CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16273619906560/0xeccff557000
58849 ksh CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16272276336640/0xeccaf403000
58849 ksh CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16272981155840/0xeccd942e000
58849 ksh CALL sigaction(SIGINT,0xeca9dfa2160,0x76d475de2b80)
58849 ksh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGINT,0x76d475de2b80,0)
58849 ksh STRU struct sigaction { handler=0xeca9df2f560, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGQUIT,0xeca9dfa2160,0x76d475de2b80)
58849 ksh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGQUIT,0x76d475de2b80,0)
58849 ksh STRU struct sigaction { handler=0xeca9df2f560, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGTERM,0xeca9dfa2160,0x76d475de2b80)
58849 ksh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGTERM,0x76d475de2b80,0)
58849 ksh STRU struct sigaction { handler=0xeca9df2f560, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGHUP,0xeca9dfa2160,0x76d475de2bb0)
58849 ksh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGHUP,0x76d475de2bb0,0)
58849 ksh STRU struct sigaction { handler=0xeca9df2f560, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL mmap(0xeccff582000,0x13000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 ksh RET mmap -1 errno 12 Cannot allocate memory
58849 ksh CALL mmap(0,0x14000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16275772981248/0xecd7faac000
58849 ksh CALL issetugid()
58849 ksh RET issetugid 0
58849 ksh CALL issetugid()
58849 ksh RET issetugid 0
58849 ksh CALL stat(0xeccff55ba10,0xeccff558300)
58849 ksh NAMI "/root/.terminfo"
58849 ksh RET stat -1 errno 2 No such file or directory
58849 ksh CALL stat(0xeccff55ba20,0xeccff558300)
58849 ksh NAMI "/usr/share/terminfo"
58849 ksh STRU struct stat { dev=1029, ino=1995882, mode=drwxr-xr-x , nlink=44, uid=0<"root">, gid=0<"wheel">, rdev=8005588, atime=1731634204<"Nov 15 01:30:04 2024">.631571659, mtime=1727706843<"Sep 30 15:34:03 2024">.003021695, ctime=1731076735<"Nov 8 14:38:55 2024">.314189373, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0xdb82c74 }
58849 ksh RET stat 0
58849 ksh CALL stat(0xeccff55ba34,0xeccff558380)
58849 ksh NAMI "/usr/local/share/terminfo"
58849 ksh RET stat -1 errno 2 No such file or directory
58849 ksh CALL stat(0xeccff55ba62,0xeccff558380)
58849 ksh NAMI "none"
58849 ksh RET stat -1 errno 2 No such file or directory
58849 ksh CALL stat(0xeccff55ba20,0x76d475dda4f8)
58849 ksh NAMI "/usr/share/terminfo"
58849 ksh STRU struct stat { dev=1029, ino=1995882, mode=drwxr-xr-x , nlink=44, uid=0<"root">, gid=0<"wheel">, rdev=8005588, atime=1731634204<"Nov 15 01:30:04 2024">.631571659, mtime=1727706843<"Sep 30 15:34:03 2024">.003021695, ctime=1731076735<"Nov 8 14:38:55 2024">.314189373, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0xdb82c74 }
58849 ksh RET stat 0
58849 ksh CALL access(0x76d475de2630,0x4<R_OK>)
58849 ksh NAMI "/usr/share/terminfo/w/wsvt25"
58849 ksh RET access 0
58849 ksh CALL mprotect(0xeccc0f91000,0x1000,0x3<PROT_READ|PROT_WRITE>)
58849 ksh RET mprotect 0
58849 ksh CALL mprotect(0xeccc0f91000,0x1000,0x1<PROT_READ>)
58849 ksh RET mprotect 0
58849 ksh CALL open(0x76d475de2630,0<O_RDONLY>)
58849 ksh NAMI "/usr/share/terminfo/w/wsvt25"
58849 ksh RET open 3
58849 ksh CALL fstat(3,0x76d475dd23f0)
58849 ksh STRU struct stat { dev=1029, ino=1998344, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=8008195, atime=1731660556<"Nov 15 08:49:16 2024">.841595616, mtime=1727706842<"Sep 30 15:34:02 2024">.323021757, ctime=1731076735<"Nov 8 14:38:55 2024">.234189051, size=1597, blocks=4, blksize=16384, flags=0x0, gen=0x36209d8c }
58849 ksh RET fstat 0
58849 ksh CALL mmap(0,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16272804724736/0xecccebec000
58849 ksh CALL read(3,0xecccebec000,0x4000)
58849 ksh GIO fd 3 read 1597 bytes
"\^Z\^A/\0&\0\^P\0i\^A\M-i\^Bwsvt25|NetBSD wscons in 25 line DEC VT220 \
mode\0\0\^A\0\0\^A\0\0\0\0\0\0\0\0\^A\^A\0\0\0\0\0\^A\0\^A\0\0\0\0\0\
\^A\0\0\0\0\0\0\0\0\^A\0P\0\b\0\^Y\0\M^?\M^?\M^?\M^?\M^?\M^?\^C\0\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\b\0@\0\^B\0\M^?\M^?\0\0\
\^B\0\^D\0\^U\0\^Z\0!\0%\0\M^?\M^?\M^?\M^?)\0:\0<\0@\0G\0\M^?\M^?I\0P\
\0\M^?\M^?T\0\M^?\M^?X\0\\\0\M^?\M^?\M^?\M^?`\0h\0m\0\M^?\M^?\M^?\M^?\
\M^?\M^?r\0\M^?\M^?\M^?\M^?w\0|\0\M^A\0\M^F\0\M^O\0\M^W\0\M^?\M^?\M^?\
\M^?\M^^\0\M-#\0\M-)\0\M-/\0\M^?\M^?\M^?\M^?\M^?\M^?\M-A\0\M^?\M^?\M-L\
\0\M^?\M^?\M-d\0\M^?\M^?\M-h\0\M^?\M^?\M^?\M^?\M^?\M^?\M-j\0\M^?\M^?\
\M-o\0\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M-s\0\M-y\0\M^?\0\^E\^A\v\^A\^Q\
\^A\^W\^A\^]\^A#\^A)\^A/\^A4\^A\M^?\M^?9\^A\M^?\M^?=\^AB\^AG\^A\M^?\
\M^?\M^?\M^?\M^?\M^?K\^A\M^?\M^?\M^?\M^?\M^?\M^?O\^A\M^?\M^?S\^AW\^A[\
\^A\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?_\^A\M^?\
\M^?b\^Ak\^At\^A}\^A\M^?\M^?\M^F\^A\M^O\^A\M^X\^A\M^?\M^?\M-!\^A\M^?\
\M^?\M^?\M^?\M^?\M^?\M-*\^A\M-.\^A\M-3\^A\M^?\M^?\M-8\^A\M^?\M^?\M^?\
\M^?\M^?\M^?\M-;\^A\M^?\M^?\M->\^A\M-A\^A\M-D\^A\M-G\^A\^R\^B\M^?\M^?\
\^U\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\^W\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?J\^BP\^B\
\M^?\M^?\M^?\M^?V\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?Z\^B\M^?\M^?\M^?\M^?_\^Bd\^B\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?j\^B\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?p\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?u\^B{\^B\M^A\^B\M^G\^B\M^?\M^?\M^?\M^?\M^M\^B\M^S\^B\M^Y\^B\M^_\^B\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M-%\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M-*\^B\
\M-5\^B\M-:\^B\M-M\^B\M-Q\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M-U\^B\M-_\^B\a\0\r\0\^[[%i%p\
1%d;%p2%dr\0\^[[3g\0\^[[H\^[[J\0\^[[K\0\^[[J\0\^[[%i%p1%d;%p2%dH\0
\0\^[[H\0\^[[?25l\0\b\0\^[[?25h\0\^[[C\0\^[[A\0\^[[P\0\^[[M\0\^[(0$<2>\
\0\^[[5m\0\^[[1m\0\^[[4h\0\^[[7m\0\^[[7m\0\^[[4m\0\^[[%p1%dX\0\^[(B$<4\
>\0\^[[m\^[(B\0\^[[4l\0\^[[27m\0\^[[24m\0\^[[?5h$<200/>\^[[?5l\0\^[[r\
\^[[25;1H\0/usr/share/tabset/vt100\0\^[[L\0\b\0\^[[3~\0\^[[B\0\^[[11~\
\0\^[[21~\0\^[[12~\0\^[[13~\0\^[[14~\0\^[[15~\0\^[[17~\0\^[[18~\0\^[[1\
9~\0\^[[20~\0\^[[7~\0\^[[2~\0\^[[D\0\^[[6~\0\^[[5~\0\^[[C\0\^[[A\0pf1\
\0pf2\0pf3\0pf4\0\^[E\0\^[[%p1%dP\0\^[[%p1%dM\0\^[[%p1%dB\0\^[[%p1%d@\
\0\^[[%p1%dL\0\^[[%p1%dD\0\^[[%p1%dC\0\^[[%p1%dA\0\^[[i\0\^[[4i\0\^[[5\
i\0\^[c\0\^[8\0\^[7\0\^[D\0\^[M\0\^[[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%\
;%?%p1%p3%|%t;7%;m%?%p9%t\^[(0%e\^[(B%;$<2>\0\^[H\0 \0``aaffggjjkk\
llmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~\0\^[[?7h\0\^[[?7l\0\^[)0\0\^[[8\
~\0\^[[1~\0\^[[28~\0\^[[29~\0\^[[4~\0\^[[23~\0\^[[24~\0\^[[25~\0\^[[26\
~\0\^[[31~\0\^[[32~\0\^[[33~\0\^[[34~\0\^[[1K\0\^[[%i%d;%dR\0\^[[6n\0\
\^[[?%[;0123456789]c\0\^[[c\0\^[[m\0\^[[3%p1%dm\0\^[[4%p1%dm\0"
58849 ksh RET read 1597/0x63d
58849 ksh CALL read(3,0xecccebec000,0x4000)
58849 ksh RET read 0
58849 ksh CALL close(3)
58849 ksh RET close 0
58849 ksh CALL fcntl(2,F_ISATTY)
58849 ksh RET fcntl 1
58849 ksh CALL ioctl(2,TIOCGETA,0xeccff55e94c)
58849 ksh RET ioctl 0
58849 ksh CALL ioctl(2,TIOCGETA,0xeccff55e978)
58849 ksh RET ioctl 0
58849 ksh CALL fcntl(2,F_ISATTY)
58849 ksh RET fcntl 1
58849 ksh CALL ioctl(2,TIOCGWINSZ,0x76d475de25d0)
58849 ksh RET ioctl 0
58849 ksh CALL getpid()
58849 ksh RET getpid 58849/0xe5e1
58849 ksh CALL stat(0xeccff584fd4,0x76d475de2c70)
58849 ksh NAMI "/home/moss"
58849 ksh STRU struct stat { dev=1066, ino=101784576, mode=drwxr-xr-x , nlink=62, uid=1000<"moss">, gid=1000<"moss">, rdev=406362008, atime=1731660269<"Nov 15 08:44:29 2024">.371459428, mtime=1731660585<"Nov 15 08:49:45 2024">.691461604, ctime=1731660585<"Nov 15 08:49:45 2024">.691461604, size=2048, blocks=8, blksize=32768, flags=0x0, gen=0xc23d2a4c }
58849 ksh RET stat 0
58849 ksh CALL stat(0xeca9deeb1a2,0x76d475de2bf0)
58849 ksh NAMI "."
58849 ksh STRU struct stat { dev=1066, ino=101784576, mode=drwxr-xr-x , nlink=62, uid=1000<"moss">, gid=1000<"moss">, rdev=406362008, atime=1731660269<"Nov 15 08:44:29 2024">.371459428, mtime=1731660585<"Nov 15 08:49:45 2024">.691461604, ctime=1731660585<"Nov 15 08:49:45 2024">.691461604, size=2048, blocks=8, blksize=32768, flags=0x0, gen=0xc23d2a4c }
58849 ksh RET stat 0
58849 ksh CALL getppid()
58849 ksh RET getppid 41949/0xa3dd
58849 ksh CALL geteuid()
58849 ksh RET geteuid 0<"root">
58849 ksh CALL getuid()
58849 ksh RET getuid 0<"root">
58849 ksh CALL getgid()
58849 ksh RET getgid 0<"wheel">
58849 ksh CALL getegid()
58849 ksh RET getegid 0<"wheel">
58849 ksh CALL open(0x76d475de3011,0<O_RDONLY>)
58849 ksh NAMI "/usr/local/bin/gorilla"
58849 ksh RET open 3
58849 ksh CALL fcntl(3,F_DUPFD,0xa)
58849 ksh RET fcntl 10/0xa
58849 ksh CALL close(3)
58849 ksh RET close 0
58849 ksh CALL fcntl(10,F_SETFD,FD_CLOEXEC)
58849 ksh RET fcntl 0
58849 ksh CALL fstat(0,0x76d475de2c70)
58849 ksh STRU struct stat { dev=1024, ino=78326, mode=crw--w---- , nlink=1, uid=1000<"moss">, gid=4<"tty">, rdev=1282, atime=1731660508<"Nov 15 08:48:28 2024">.581509448, mtime=1731660585<"Nov 15 08:49:45 2024">.681588815, ctime=1731660585<"Nov 15 08:49:45 2024">.681588815, size=0, blocks=0, blksize=65536, flags=0x0, gen=0x436ea8bc }
58849 ksh RET fstat 0
58849 ksh CALL sigprocmask(SIG_SETMASK,0<>)
58849 ksh RET sigprocmask 0<>
58849 ksh CALL sigaction(SIGCHLD,0xeca9dfa2160,0x76d475de2b80)
58849 ksh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGCHLD,0x76d475de2b80,0)
58849 ksh STRU struct sigaction { handler=0xeca9df2f560, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 ksh RET mmap 16274816303104/0xecd46a50000
58849 ksh CALL read(10,0xeccff590a58,0x200)
58849 ksh GIO fd 10 read 60 bytes
"#!/bin/ksh
exec /usr/local/lib/password-gorilla/gorilla.tcl
"
58849 ksh RET read 60/0x3c
58849 ksh CALL stat(0xeccff58f850,0x76d475de2838)
58849 ksh NAMI "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 ksh STRU struct stat { dev=1031, ino=1194764, mode=-rwxr-xr-x , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805944, atime=1731660490<"Nov 15 08:48:10 2024">.561459708, mtime=1727487360<"Sep 28 02:36:00 2024">, ctime=1731074792<"Nov 8 14:06:32 2024">.435977633, size=272195, blocks=576, blksize=16384, flags=0x0, gen=0x48ae4750 }
58849 ksh RET stat 0
58849 ksh CALL access(0xeccff58f850,0x1<X_OK>)
58849 ksh NAMI "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 ksh RET access 0
58849 ksh CALL sigprocmask(SIG_BLOCK,0x80000<SIGCHLD>)
58849 ksh RET sigprocmask 0<>
58849 ksh CALL sigprocmask(SIG_SETMASK,0<>)
58849 ksh RET sigprocmask 0x80000<SIGCHLD>
58849 ksh CALL sigaction(SIGHUP,0x76d475de27c0,0)
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGINT,0x76d475de27c0,0)
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGQUIT,0x76d475de27c0,0)
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGTERM,0x76d475de27c0,0)
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL sigaction(SIGCHLD,0x76d475de27c0,0)
58849 ksh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 ksh RET sigaction 0
58849 ksh CALL execve(0xeccff58f850,0xeccff5818c0,0xeccff580790)
58849 ksh NAMI "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 ksh NAMI "/bin/sh"
58849 ksh ARGS
[0] = "/bin/sh"
[1] = "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 sh RET execve JUSTRETURN
58849 sh CALL issetugid()
58849 sh RET issetugid 0
58849 sh CALL mmap(0,0x40,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14870059171840/0xd8634984000
58849 sh CALL getthrid()
58849 sh RET getthrid 539678/0x83c1e
58849 sh CALL __set_tcb(0xd8634984000)
58849 sh RET __set_tcb 0
58849 sh CALL mimmutable(0xd83d2c6e000,0x28fc4)
58849 sh RET mimmutable 0
58849 sh CALL mimmutable(0xd83d2c97fd0,0x90750)
58849 sh RET mimmutable 0
58849 sh CALL mprotect(0xd83d2d29720,0x68e0,0x1<PROT_READ>)
58849 sh RET mprotect 0
58849 sh CALL mimmutable(0xd83d2d29720,0x68e0)
58849 sh RET mimmutable 0
58849 sh CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14869137997824/0xd85fdb04000
58849 sh CALL mprotect(0xd85fdb04000,0x1000,0x1<PROT_READ>)
58849 sh RET mprotect 0
58849 sh CALL issetugid()
58849 sh RET issetugid 0
58849 sh CALL pledge(0xd83d2c7eae9,0)
58849 sh STRU promise="stdio rpath wpath cpath fattr flock getpw proc \
exec tty"
58849 sh RET pledge 0
58849 sh CALL sysctl(2.12<vm.malloc_conf>,0x77a3d28e05f0,0x77a3d28e0608,0,0)
58849 sh RET sysctl 0
58849 sh CALL issetugid()
58849 sh RET issetugid 0
58849 sh CALL getentropy(0x77a3d28e0560,40)
58849 sh RET getentropy 0
58849 sh CALL mmap(0,0x450,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14869086724096/0xd85faa1e000
58849 sh CALL minherit(0xd85faa1e000,0x450,MAP_INHERIT_ZERO)
58849 sh RET minherit 0
58849 sh CALL mmap(0,0xe000,0<PROT_NONE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14871565946880/0xd868e67d000
58849 sh CALL mprotect(0xd868e67e000,0xc000,0x3<PROT_READ|PROT_WRITE>)
58849 sh RET mprotect 0
58849 sh CALL mimmutable(0xd868e67d000,0xe000)
58849 sh RET mimmutable 0
58849 sh CALL mprotect(0xd83d2d32000,0x1000,0x1<PROT_READ>)
58849 sh RET mprotect 0
58849 sh CALL mimmutable(0xd83d2d32000,0x1000)
58849 sh RET mimmutable 0
58849 sh CALL mmap(0,0x2200,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14871709540352/0xd8696f6e000
58849 sh CALL mimmutable(0xd8696f6e000,0x2200)
58849 sh RET mimmutable 0
58849 sh CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14869142163456/0xd85fdefd000
58849 sh CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14869689516032/0xd861e8fc000
58849 sh CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14872690626560/0xd86d1711000
58849 sh CALL sigaction(SIGINT,0xd83d2d36160,0x77a3d28e06e0)
58849 sh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGINT,0x77a3d28e06e0,0)
58849 sh STRU struct sigaction { handler=0xd83d2cc3560, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGQUIT,0xd83d2d36160,0x77a3d28e06e0)
58849 sh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGQUIT,0x77a3d28e06e0,0)
58849 sh STRU struct sigaction { handler=0xd83d2cc3560, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGTERM,0xd83d2d36160,0x77a3d28e06e0)
58849 sh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGTERM,0x77a3d28e06e0,0)
58849 sh STRU struct sigaction { handler=0xd83d2cc3560, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGHUP,0xd83d2d36160,0x77a3d28e0710)
58849 sh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGHUP,0x77a3d28e0710,0)
58849 sh STRU struct sigaction { handler=0xd83d2cc3560, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL mmap(0xd85fdf3c000,0x13000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 sh RET mmap -1 errno 12 Cannot allocate memory
58849 sh CALL mmap(0,0x14000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14871342727168/0xd868119c000
58849 sh CALL issetugid()
58849 sh RET issetugid 0
58849 sh CALL issetugid()
58849 sh RET issetugid 0
58849 sh CALL stat(0xd85fdf03850,0xd85fdf10600)
58849 sh NAMI "/root/.terminfo"
58849 sh RET stat -1 errno 2 No such file or directory
58849 sh CALL stat(0xd85fdf03860,0xd85fdf10600)
58849 sh NAMI "/usr/share/terminfo"
58849 sh STRU struct stat { dev=1029, ino=1995882, mode=drwxr-xr-x , nlink=44, uid=0<"root">, gid=0<"wheel">, rdev=8005588, atime=1731634204<"Nov 15 01:30:04 2024">.631571659, mtime=1727706843<"Sep 30 15:34:03 2024">.003021695, ctime=1731076735<"Nov 8 14:38:55 2024">.314189373, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0xdb82c74 }
58849 sh RET stat 0
58849 sh CALL stat(0xd85fdf03874,0xd85fdf10680)
58849 sh NAMI "/usr/local/share/terminfo"
58849 sh RET stat -1 errno 2 No such file or directory
58849 sh CALL stat(0xd85fdf038a2,0xd85fdf10680)
58849 sh NAMI "none"
58849 sh RET stat -1 errno 2 No such file or directory
58849 sh CALL stat(0xd85fdf03860,0x77a3d28d8058)
58849 sh NAMI "/usr/share/terminfo"
58849 sh STRU struct stat { dev=1029, ino=1995882, mode=drwxr-xr-x , nlink=44, uid=0<"root">, gid=0<"wheel">, rdev=8005588, atime=1731634204<"Nov 15 01:30:04 2024">.631571659, mtime=1727706843<"Sep 30 15:34:03 2024">.003021695, ctime=1731076735<"Nov 8 14:38:55 2024">.314189373, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0xdb82c74 }
58849 sh RET stat 0
58849 sh CALL access(0x77a3d28e0190,0x4<R_OK>)
58849 sh NAMI "/usr/share/terminfo/w/wsvt25"
58849 sh RET access 0
58849 sh CALL mprotect(0xd85fdb04000,0x1000,0x3<PROT_READ|PROT_WRITE>)
58849 sh RET mprotect 0
58849 sh CALL mprotect(0xd85fdb04000,0x1000,0x1<PROT_READ>)
58849 sh RET mprotect 0
58849 sh CALL open(0x77a3d28e0190,0<O_RDONLY>)
58849 sh NAMI "/usr/share/terminfo/w/wsvt25"
58849 sh RET open 3
58849 sh CALL fstat(3,0x77a3d28cff50)
58849 sh STRU struct stat { dev=1029, ino=1998344, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=8008195, atime=1731660585<"Nov 15 08:49:45 2024">.691461604, mtime=1727706842<"Sep 30 15:34:02 2024">.323021757, ctime=1731076735<"Nov 8 14:38:55 2024">.234189051, size=1597, blocks=4, blksize=16384, flags=0x0, gen=0x36209d8c }
58849 sh RET fstat 0
58849 sh CALL mmap(0,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14869551910912/0xd86165c1000
58849 sh CALL read(3,0xd86165c1000,0x4000)
58849 sh GIO fd 3 read 1597 bytes
"\^Z\^A/\0&\0\^P\0i\^A\M-i\^Bwsvt25|NetBSD wscons in 25 line DEC VT220 \
mode\0\0\^A\0\0\^A\0\0\0\0\0\0\0\0\^A\^A\0\0\0\0\0\^A\0\^A\0\0\0\0\0\
\^A\0\0\0\0\0\0\0\0\^A\0P\0\b\0\^Y\0\M^?\M^?\M^?\M^?\M^?\M^?\^C\0\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\b\0@\0\^B\0\M^?\M^?\0\0\
\^B\0\^D\0\^U\0\^Z\0!\0%\0\M^?\M^?\M^?\M^?)\0:\0<\0@\0G\0\M^?\M^?I\0P\
\0\M^?\M^?T\0\M^?\M^?X\0\\\0\M^?\M^?\M^?\M^?`\0h\0m\0\M^?\M^?\M^?\M^?\
\M^?\M^?r\0\M^?\M^?\M^?\M^?w\0|\0\M^A\0\M^F\0\M^O\0\M^W\0\M^?\M^?\M^?\
\M^?\M^^\0\M-#\0\M-)\0\M-/\0\M^?\M^?\M^?\M^?\M^?\M^?\M-A\0\M^?\M^?\M-L\
\0\M^?\M^?\M-d\0\M^?\M^?\M-h\0\M^?\M^?\M^?\M^?\M^?\M^?\M-j\0\M^?\M^?\
\M-o\0\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M-s\0\M-y\0\M^?\0\^E\^A\v\^A\^Q\
\^A\^W\^A\^]\^A#\^A)\^A/\^A4\^A\M^?\M^?9\^A\M^?\M^?=\^AB\^AG\^A\M^?\
\M^?\M^?\M^?\M^?\M^?K\^A\M^?\M^?\M^?\M^?\M^?\M^?O\^A\M^?\M^?S\^AW\^A[\
\^A\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?_\^A\M^?\
\M^?b\^Ak\^At\^A}\^A\M^?\M^?\M^F\^A\M^O\^A\M^X\^A\M^?\M^?\M-!\^A\M^?\
\M^?\M^?\M^?\M^?\M^?\M-*\^A\M-.\^A\M-3\^A\M^?\M^?\M-8\^A\M^?\M^?\M^?\
\M^?\M^?\M^?\M-;\^A\M^?\M^?\M->\^A\M-A\^A\M-D\^A\M-G\^A\^R\^B\M^?\M^?\
\^U\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\^W\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?J\^BP\^B\
\M^?\M^?\M^?\M^?V\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?Z\^B\M^?\M^?\M^?\M^?_\^Bd\^B\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?j\^B\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?p\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?u\^B{\^B\M^A\^B\M^G\^B\M^?\M^?\M^?\M^?\M^M\^B\M^S\^B\M^Y\^B\M^_\^B\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M-%\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M-*\^B\
\M-5\^B\M-:\^B\M-M\^B\M-Q\^B\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M-U\^B\M-_\^B\a\0\r\0\^[[%i%p\
1%d;%p2%dr\0\^[[3g\0\^[[H\^[[J\0\^[[K\0\^[[J\0\^[[%i%p1%d;%p2%dH\0
\0\^[[H\0\^[[?25l\0\b\0\^[[?25h\0\^[[C\0\^[[A\0\^[[P\0\^[[M\0\^[(0$<2>\
\0\^[[5m\0\^[[1m\0\^[[4h\0\^[[7m\0\^[[7m\0\^[[4m\0\^[[%p1%dX\0\^[(B$<4\
>\0\^[[m\^[(B\0\^[[4l\0\^[[27m\0\^[[24m\0\^[[?5h$<200/>\^[[?5l\0\^[[r\
\^[[25;1H\0/usr/share/tabset/vt100\0\^[[L\0\b\0\^[[3~\0\^[[B\0\^[[11~\
\0\^[[21~\0\^[[12~\0\^[[13~\0\^[[14~\0\^[[15~\0\^[[17~\0\^[[18~\0\^[[1\
9~\0\^[[20~\0\^[[7~\0\^[[2~\0\^[[D\0\^[[6~\0\^[[5~\0\^[[C\0\^[[A\0pf1\
\0pf2\0pf3\0pf4\0\^[E\0\^[[%p1%dP\0\^[[%p1%dM\0\^[[%p1%dB\0\^[[%p1%d@\
\0\^[[%p1%dL\0\^[[%p1%dD\0\^[[%p1%dC\0\^[[%p1%dA\0\^[[i\0\^[[4i\0\^[[5\
i\0\^[c\0\^[8\0\^[7\0\^[D\0\^[M\0\^[[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%\
;%?%p1%p3%|%t;7%;m%?%p9%t\^[(0%e\^[(B%;$<2>\0\^[H\0 \0``aaffggjjkk\
llmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~\0\^[[?7h\0\^[[?7l\0\^[)0\0\^[[8\
~\0\^[[1~\0\^[[28~\0\^[[29~\0\^[[4~\0\^[[23~\0\^[[24~\0\^[[25~\0\^[[26\
~\0\^[[31~\0\^[[32~\0\^[[33~\0\^[[34~\0\^[[1K\0\^[[%i%d;%dR\0\^[[6n\0\
\^[[?%[;0123456789]c\0\^[[c\0\^[[m\0\^[[3%p1%dm\0\^[[4%p1%dm\0"
58849 sh RET read 1597/0x63d
58849 sh CALL read(3,0xd86165c1000,0x4000)
58849 sh RET read 0
58849 sh CALL close(3)
58849 sh RET close 0
58849 sh CALL fcntl(2,F_ISATTY)
58849 sh RET fcntl 1
58849 sh CALL ioctl(2,TIOCGETA,0xd85fdf2f34c)
58849 sh RET ioctl 0
58849 sh CALL ioctl(2,TIOCGETA,0xd85fdf2f378)
58849 sh RET ioctl 0
58849 sh CALL fcntl(2,F_ISATTY)
58849 sh RET fcntl 1
58849 sh CALL ioctl(2,TIOCGWINSZ,0x77a3d28e0130)
58849 sh RET ioctl 0
58849 sh CALL getpid()
58849 sh RET getpid 58849/0xe5e1
58849 sh CALL stat(0xd85fdf1bef4,0x77a3d28e07d0)
58849 sh NAMI "/home/moss"
58849 sh STRU struct stat { dev=1066, ino=101784576, mode=drwxr-xr-x , nlink=62, uid=1000<"moss">, gid=1000<"moss">, rdev=406362008, atime=1731660269<"Nov 15 08:44:29 2024">.371459428, mtime=1731660585<"Nov 15 08:49:45 2024">.691461604, ctime=1731660585<"Nov 15 08:49:45 2024">.691461604, size=2048, blocks=8, blksize=32768, flags=0x0, gen=0xc23d2a4c }
58849 sh RET stat 0
58849 sh CALL stat(0xd83d2c7f1a2,0x77a3d28e0750)
58849 sh NAMI "."
58849 sh STRU struct stat { dev=1066, ino=101784576, mode=drwxr-xr-x , nlink=62, uid=1000<"moss">, gid=1000<"moss">, rdev=406362008, atime=1731660269<"Nov 15 08:44:29 2024">.371459428, mtime=1731660585<"Nov 15 08:49:45 2024">.691461604, ctime=1731660585<"Nov 15 08:49:45 2024">.691461604, size=2048, blocks=8, blksize=32768, flags=0x0, gen=0xc23d2a4c }
58849 sh RET stat 0
58849 sh CALL getppid()
58849 sh RET getppid 41949/0xa3dd
58849 sh CALL geteuid()
58849 sh RET geteuid 0<"root">
58849 sh CALL getuid()
58849 sh RET getuid 0<"root">
58849 sh CALL getgid()
58849 sh RET getgid 0<"wheel">
58849 sh CALL getegid()
58849 sh RET getegid 0<"wheel">
58849 sh CALL open(0x77a3d28e0b70,0<O_RDONLY>)
58849 sh NAMI "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 sh RET open 3
58849 sh CALL fcntl(3,F_DUPFD,0xa)
58849 sh RET fcntl 10/0xa
58849 sh CALL close(3)
58849 sh RET close 0
58849 sh CALL fcntl(10,F_SETFD,FD_CLOEXEC)
58849 sh RET fcntl 0
58849 sh CALL fstat(0,0x77a3d28e07d0)
58849 sh STRU struct stat { dev=1024, ino=78326, mode=crw--w---- , nlink=1, uid=1000<"moss">, gid=4<"tty">, rdev=1282, atime=1731660508<"Nov 15 08:48:28 2024">.581509448, mtime=1731660585<"Nov 15 08:49:45 2024">.681588815, ctime=1731660585<"Nov 15 08:49:45 2024">.681588815, size=0, blocks=0, blksize=65536, flags=0x0, gen=0x436ea8bc }
58849 sh RET fstat 0
58849 sh CALL sigprocmask(SIG_SETMASK,0<>)
58849 sh RET sigprocmask 0<>
58849 sh CALL sigaction(SIGCHLD,0xd83d2d36160,0x77a3d28e06e0)
58849 sh STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0<> }
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGCHLD,0x77a3d28e06e0,0)
58849 sh STRU struct sigaction { handler=0xd83d2cc3560, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 sh RET mmap 14871017574400/0xd866db85000
58849 sh CALL read(10,0xd85fdf10058,0x200)
58849 sh GIO fd 10 read 512 bytes
"#! /bin/sh
# the next line restarts using wish \\
exec /usr/local/bin/wish8.5 "$0" ${1+"$@"}
#
# --------------------------------------------------------------------\
--
# Password Gorilla, a password database manager
# --------------------------------------------------------------------\
--
#
# Copyright (c) 2005-2009 Frank Pilhofer
# Copyright (c) 2010-2013 Richard Ellis and Zbigniew Diaczyszyn
#
# Version 1.5.3.7 tested with ActiveState's Tcl/Tk 8.5.13.0
#
# This program is free software; you can redistribut"
58849 sh RET read 512/0x200
58849 sh CALL stat(0xd85fdf29dc0,0x77a3d28e0398)
58849 sh NAMI "/usr/local/bin/wish8.5"
58849 sh STRU struct stat { dev=1031, ino=544805, mode=-rwxr-xr-x , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=2204944, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727371912<"Sep 26 18:31:52 2024">, ctime=1731074790<"Nov 8 14:06:30 2024">.615976713, size=6632, blocks=16, blksize=16384, flags=0x0, gen=0x608d1cc3 }
58849 sh RET stat 0
58849 sh CALL access(0xd85fdf29dc0,0x1<X_OK>)
58849 sh NAMI "/usr/local/bin/wish8.5"
58849 sh RET access 0
58849 sh CALL sigprocmask(SIG_BLOCK,0x80000<SIGCHLD>)
58849 sh RET sigprocmask 0<>
58849 sh CALL sigprocmask(SIG_SETMASK,0<>)
58849 sh RET sigprocmask 0x80000<SIGCHLD>
58849 sh CALL sigaction(SIGHUP,0x77a3d28e0320,0)
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGINT,0x77a3d28e0320,0)
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGQUIT,0x77a3d28e0320,0)
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGTERM,0x77a3d28e0320,0)
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL sigaction(SIGCHLD,0x77a3d28e0320,0)
58849 sh STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> }
58849 sh RET sigaction 0
58849 sh CALL execve(0xd85fdf29dc0,0xd85fdf2eb20,0xd85fdf0b8d0)
58849 sh NAMI "/usr/local/bin/wish8.5"
58849 sh ARGS
[0] = "/usr/local/bin/wish8.5"
[1] = "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 wish8.5 NAMI "/usr/libexec/ld.so"
58849 wish8.5 RET execve JUSTRETURN
58849 wish8.5 CALL getentropy(0x7b2fec32f180,40)
58849 wish8.5 RET getentropy 0
58849 wish8.5 CALL getentropy(0x7b2fec32f180,40)
58849 wish8.5 RET getentropy 0
58849 wish8.5 CALL mmap(0,0x4000,0<PROT_NONE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650091507712/0x43aaf0d7000
58849 wish8.5 CALL mprotect(0x43aaf0d8000,0x2000,0x3<PROT_READ|PROT_WRITE>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651715207168/0x43b0fd52000
58849 wish8.5 CALL issetugid()
58849 wish8.5 RET issetugid 0
58849 wish8.5 CALL mprotect(0x43b49e39000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b49e39000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650423197696/0x43ac2d2a000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652947972096/0x43b594fa000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650240532480/0x43ab7ef6000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651962867712/0x43b1e982000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653297991680/0x43b6e2c8000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653755633664/0x43b89739000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652187795456/0x43b2c004000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651915497472/0x43b1bc55000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650747461632/0x43ad6268000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653912371200/0x43b92cb3000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4649891041280/0x43aa31a9000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650836447232/0x43adb745000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653165649920/0x43b66492000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650888081408/0x43ade883000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650052763648/0x43aacbe4000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653587001344/0x43b7f667000
58849 wish8.5 CALL open(0x43b49d3960e,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/var/run/ld.so.hints"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32efa0)
58849 wish8.5 STRU struct stat { dev=1028, ino=2306891, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=0<"wheel">, rdev=9230856, atime=1731660238<"Nov 15 08:43:58 2024">.541459125, mtime=1731660237<"Nov 15 08:43:57 2024">.451460121, ctime=1731660237<"Nov 15 08:43:57 2024">.451460121, size=78569, blocks=156, blksize=16384, flags=0x0, gen=0x7674d036 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL mmap(0,0x132e9,0x1<PROT_READ>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4652435734528/0x43b3ac78000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651132280832/0x43aed166000
58849 wish8.5 CALL mimmutable(0x43b3ac78000,0x132e9)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac82a4b,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libfontconfig.so.13.1"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103726, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=442496, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727401610<"Sep 27 02:46:50 2024">.583021698, ctime=1731076741<"Nov 8 14:39:01 2024">.764188814, size=1072440, blocks=2144, blksize=16384, flags=0x0, gen=0xe2b742a9 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\M-xS\^P\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0%\0#\0\^F\0\0\0\^D\
\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\0\0\
\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\M-U\^A\0\0\0\0\0\f\M-U\^A\0\0\0\0\0\
\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\^P\M-U\^A\0\0\0\0\0\^P\M-e\^A\0\0\
\0\0\0\^P\M-e\^A\0\0\0\0\0\M-P\M-v\^B\0\0\0\0\0\M-P\M-v\^B\0\0\0\0\0\0\
\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\M-`\M-K\^D\0\0\0\0\0\M-`\M-k\^D\0\0\
\0\0\0\M-`\M-k\^D\0\0\0\0\0\M-X'\0\0\0\0\0\0\M-X'\0\0\0\0\0\0\0\^P\0\0\
\0\0\0\0\^A\0\0\0\^F\0\0\0\M-8\M-s\^D\0\0\0\0\0\M-8#\^E\0\0\0\0\0\M-8#\
\^E\0\0\0\0\0\^P\0\0\0\0\0\0\0\^E\^A\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\
\0\0\^F\0\0\0h\M-n\^D\0\0\0\0\0h\^N\^E\0\0\0\0\0h\^N\^E\0\0\0\0\0P\^A\
\0\0\0\0\0\0P\^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\M-`\M-K\
\^D\0\0\0\0\0\M-`\M-k\^D\0\0\0\0\0\M-`\M-k\^D\0\0\0\0\0\M-X'\0\0\0\0\0\
\0 4\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0Pf\^A\0\0\0\0\0Pf\^A\
\0\0\0\0\0Pf\^A\0\0\0\0\0,\^R\0\0\0\0\0\0,\^R\0\0\0\0\0\0\^D\0\0\0\0\0\
\0\0\M-f\M-[\M-#e\^F\0\0\0\b\M-L\^D\0\0\0\0\0\b\M-l\^D\0\0\0\0\0\b\M-l\
\^D\0\0\0\0\0\0\^Q\0\0\0\0\0\0\0\^Q\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\
\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\
\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\
\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\
\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\
\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\
\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\
\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\
\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0b\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0g\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0n\0\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0z\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^?\0\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^F\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M^[\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-.\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-A\0\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-H\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-O\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-T\
\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-[\0\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-c\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-j\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-q\0\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \^A\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\^Q\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\^W\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^_\^A\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\^A\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0-\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0004\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;\^A\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^]\^D\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0%\^D\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\b\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0m\b\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0v\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\
\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^E\b\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^^\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-&\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-0\b\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-b \0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-h \0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-o \0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-v\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-} \0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^B
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^O
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^W
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^]
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-,
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-4
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^C\f\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0
\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^O\f\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^V\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\^\\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!\f\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0001\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\f\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\f\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0G\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
O\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0W\f\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\\\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0e\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0V\r\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\r\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0d\r\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0o\r\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\r\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0/\^N\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\^N\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\^N\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M-s\^N\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0/\^O\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-(\^O\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-9\^O\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-I\^O\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-c\^O\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-y\^O\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^U\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0#\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0003\
\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\^P\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0c\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\^P\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^D\^P\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M^O\^P\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-J\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-X\^P\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-j\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^A\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^R\
\^Q\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\^Q\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0001\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0E\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\^Q\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0p\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M^A\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M^M\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Z\^Q\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-+\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-I\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-[\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-m\^Q\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^?\^Q\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^P\^R\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^^\
\^R\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\^R\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\^R\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0C\^R\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-O\^R\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^M\^S\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M^T\^S\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M^Y\^A\0\0\^R\0\f\0\240#\^B\0\0\0\0\0000\0\0\0\0\0\0\0\M-Q\^A\0\
\0\^R\0\f\0\M-`\M-h\^A\0\0\0\0\0`\^B\0\0\0\0\0\0K \0\0\^R\0\f\0\
\M-0\M-m\^B\0\0\0\0\0000\0\0\0\0\0\0\09
\0\0\^R\0\f\0\M-p\0\^C\0\0\0\0\0\M-D\^A\0\0\0\0\0\0\M-4\^E\0\0\^R\0\f\
\0\M-p\\\^B\0\0\0\0\0=\0\0\0\0\0\0\0x\a\0\0\^R\0\f\0\M-P\^?\^B\0\0\0\0\
\0+\^C\0\0\0\0\0\0003\b\0\0\^R\0\f\0\M^P\M^Y\^B\0\0\0\0\0\M-p\0\0\0\0\
\0\0\0\M-r\^A\0\0\^R\0\f\0\240\M-g\^A\0\0\0\0\0@\^A\0\0\0\0\0\0\M^M\^E\
\0\0\^R\0\f\0\M^@\\\^B\0\0\0\0\0=\0\0\0\0\0\0\0k \0\0\^R\0\f\0\
\M-P\M-q\^B\0\0\0\0\0\M-P\0\0\0\0\0\0\0\^? \0\0\^R\0\f\0\240\M-r\
\^B\0\0\0\0\0`\0\0\0\0\0\0\0k\v\0\0\^R\0\f\0\M-0\^Y\^C\0\0\0\0\0\M-p\0\
\0\0\0\0\0\0P\^N\0\0\^R\0\f\0p\M^X\^C\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M-:\
\0\0\^R\0\f\0\M-0\M-t\^B\0\0\0\0\0p\0\0\0\0\0\0\0*
\0\0\^R\0\f\0\M-`\M^?\^B\0\0\0\0\0\^P\^A\0\0\0\0\0\0\M^M
\0\0\^R\0\f\0\M^@\^C\^C\0\0\0\0\0N\0\0\0\0\0\0\0\^Q\^O\0\0\^R\0\f\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x53000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4653212196864/0x43b690f6000
58849 wish8.5 CALL mmap(0x43b690f6000,0x1e000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4653212196864/0x43b690f6000
58849 wish8.5 CALL mmap(0x43b69114000,0x30000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x1d000)
58849 wish8.5 RET mmap 4653212319744/0x43b69114000
58849 wish8.5 CALL mmap(0x43b69144000,0x4000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x4c000)
58849 wish8.5 RET mmap 4653212516352/0x43b69144000
58849 wish8.5 CALL mmap(0x43b69148000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x4f000)
58849 wish8.5 RET mmap 4653212532736/0x43b69148000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652294971392/0x43b3263a000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651313115136/0x43af7ddb000
58849 wish8.5 CALL open(0x43b3ac82851,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libXss.so.6.0"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103713, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=439632, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727400909<"Sep 27 02:35:09 2024">.563023581, ctime=1731076741<"Nov 8 14:39:01 2024">.664189023, size=14792, blocks=32, blksize=16384, flags=0x0, gen=0x738409cc }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0H2\0\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^^\0\^\\0\^F\0\0\0\^D\
\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\0\0\
\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\^P\0\0\0\0\0\0T\^P\0\0\0\0\0\0\0\^P\
\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0`\^P\0\0\0\0\0\0` \0\0\0\0\0\0` \0\0\0\0\
\0\0\^P\^T\0\0\0\0\0\0\^P\^T\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\
\0\0\0p$\0\0\0\0\0\0pD\0\0\0\0\0\0pD\0\0\0\0\0\0\M-H\^B\0\0\0\0\0\0\
\M-H\^B\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\08'\0\0\0\0\0\08W\
\0\0\0\0\0\08W\0\0\0\0\0\0`\0\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0\0\^P\0\0\0\
\0\0\0\^B\0\0\0\^F\0\0\0000%\0\0\0\0\0\0000E\0\0\0\0\0\0000E\0\0\0\0\0\
\0P\^A\0\0\0\0\0\0P\^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0p$\0\
\0\0\0\0\0pD\0\0\0\0\0\0pD\0\0\0\0\0\0\M-H\^B\0\0\0\0\0\0\M^P\v\0\0\0\
\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0\M^H\f\0\0\0\0\0\0\M^H\f\0\0\0\
\0\0\0\M^H\f\0\0\0\0\0\0\M^\\0\0\0\0\0\0\0\M^\\0\0\0\0\0\0\0\^D\0\0\0\
\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0\M^X$\0\0\0\0\0\0\M^XD\0\0\0\0\0\0\M^XD\
\0\0\0\0\0\0\M^X\0\0\0\0\0\0\0\M^X\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-et\
d\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\
\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\
\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\
\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\
\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\
\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\
\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\
\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\0\0\0\^R\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M^_\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-,\0\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-4\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-\\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\
\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\^A\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M^X\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-B\^A\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-U\^A\0\0\^R\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M-o\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\^A\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\^R\
\0\f\0\M-p!\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0\M-F\0\0\0\^R\0\f\0\^P$\0\0\0\
\0\0\0\^S\0\0\0\0\0\0\0\^A\0\0\0\^R\0\r\0\M-`1\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M-c\0\0\0\^R\0\f\0000$\0\0\0\0\0\0\M^@\^A\0\0\0\0\0\0\^Q\^A\0\0\
\^R\0\f\0\M-P&\0\0\0\0\0\0m\^D\0\0\0\0\0\0P\^A\0\0\^R\0\f\0P,\0\0\0\0\
\0\0\M-0\0\0\0\0\0\0\0\M^A\^A\0\0\^R\0\f\0\0-\0\0\0\0\0\0\M^@\0\0\0\0\
\0\0\0\a\0\0\0\^R\0\^N\0\0002\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^F\0\0\0\^R\
\0\f\0\240"\0\0\0\0\0\0p\^A\0\0\0\0\0\0\M-y\0\0\0\^R\0\f\0\M-0%\0\0\0\
\0\0\0 \^A\0\0\0\0\0\0004\^A\0\0\^R\0\f\0@+\0\0\0\0\0\0\^P\^A\0\0\0\0\
\0\0\M-(\^A\0\0\^R\0\f\0\M^@-\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\M-[\^A\0\0\
\^R\0\f\0\M^P.\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\^C\0\0\0\^S\0\0\0\^D\0\0\
\0\^Z\0\0\0\b\0\^D\0\^A\0\0\^D\^A\0\0\0\0\0*\0\b\^P\^B\^PH\0\b\M^A\b@\
\^P\0$\^D\^B\^A\^S\0\0\0\^U\0\0\0\^Z\0\0\0\M^P%\f\M-Mul\M-g\M-F\M-8\
\M^M\M-q\^N \M-d\M-4J\M-p\M-f\M^Z\M-a\M-"\M^Z\M^A\M^O\M-'|\0q\M-j\M-S\
\M-o\^N:\M-=\M-_\^O\M-N\M^R\M-Q\M^I\M-T\M^B\M-6\M^V\M^L\a\M-|\M-~A\^_\
\M-X\M-L \0\0\0 \0\0\0\0\0\0\0\0\0\0\0\^Y\0\0\0\^]\0\0\0\^_\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0\0\0\0\0\^B\0\0\0\0\0\0\0\0\0\0\0\
\^[\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^W\0\0\0\^\\0\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\^O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\0\0\0\0\0\0\
\0\^V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^E\0\0\0\
\^A\0\0\0\0\0\0\0\0\0\0\0\^C\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\^F\0\0\0\r\
\0\0\0\^D\0\0\0\^N\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\^R\0\0\0\^T\0\0\
\0
\0\0\0\v\0\0\0\^X\0\0\0\^Q\0\0\0\^S\0\0\0\a\0\0\0\0\0\0\0\^U\0\0\0\^^\
\0\0\0\0_init\0_fini\0__cxa_atexit\0_thread_atfork\0_Jv_RegisterClasse\
s\0__cxa_finalize\0XScreenSaverQueryExtension\0XextFindDisplay\0XextAd\
dDisplay\0XScreenSaverQueryVersion\0_XGetRequest\0_XReply\0XMissingExt\
ension\0XScreenSaverAllocInfo\0malloc\0XScreenSaverQueryInfo\0XScreenS\
averSelectInput\0XScreenSaverSetAttributes\0_XData32\0XScreenSaverUnse\
tAttributes\0XScreenSaverRegister\0XInternAtom\0XChangeProperty\0XScre\
enSaverUnregister\0XDeleteProperty\0XScreenSaverGetRegistered\0XGetWin\
dowProperty\0XFree\0XScreenSaverSuspend\0XextRemoveDisplay\0_XSetLastR\
equestRead\0libXext.so.13.0\0libX11.so.18.2\0libxcb.so.4.1\0libpthread\
.so.27.1\0\0\08W\0\0\0\0\0\0\b\0\0\0\0\0\0\08W\0\0\0\0\0\0pW\0\0\0\0\0\
\0\b\0\0\0\0\0\0\0\240/\0\0\0\0\0\0xW\0\0\0\0\0\0\b\0\0\0\0\0\0\0\M-@/\
\0\0\0\0\0\0\M^@W\0\0\0\0\0\0\b\0\0\0\0\0\0\0\M-P0\0\0\0\0\0\0\M^@F\0\
\0\0\0\0\0\^F\0\0\0\^C\0\0\0\0\0\0\0\0\0\0\0\M^HF\0\0\0\0\0\0\^F\0\0\0\
\^D\0\0\0\0\0\0\0\0\0\0\0\M-(F\0\0\0\0\0\0\a\0\0\0\^A\0\0\0\0\0\0\0\0\
\0\0\0\M-0F\0\0\0\0\0\0\a\0\0\0\^B\0\0\0\0\0\0\0\0\0\0\0\M-8F\0\0\0\0\
\0\0\a\0\0\0\^C\0\0\0\0\0\0\0\0\0\0\0\M-@F\0\0\0\0\0\0\a\0\0\0\^D\0\0\
\0\0\0\0\0\0\0\0\0\M-HF\0\0\0\0\0\0\a\0\0\0\^E\0\0\0\0\0\0\0\0\0\0\0\
\M-PF\0\0\0\0\0\0\a\0\0\0\^F\0\0\0\0\0\0\0\0\0\0\0\M-XF\0\0\0\0\0\0\a\
\0\0\0\a\0\0\0\0\0\0\0\0\0\0\0\M-`F\0\0\0\0\0\0\a\0\0\0\b\0\0\0\0\0\0\
\0\0\0\0\0\M-hF\0\0\0\0\0\0\a\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\M-pF\0\
\0\0\0\0\0\a\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\M-xF\0\0\0\0\0\0\a\0\0\0\v\0\0\0\0\0\0\0\0\0\0\
\0\0G\0\0\0\0\0\0\a\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\bG\0\0\0\0\0\0\a\0\0\
\0\r\0\0\0\0\0\0\0\0\0\0\0\^PG\0\0\0\0\0\0\a\0\0\0\^N\0\0\0\0\0\0\0\0\
\0\0\0\^XG\0\0\0\0\0\0\a\0\0\0\^O\0\0\0\0\0\0\0\0\0\0\0 G\0\0\0\0\0\0\
\a\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0(G\0\0\0\0\0\0\a\0\0\0\^Q\0\0\0\0\0\0\
\0\0\0\0\0000G\0\0\0\0\0\0\a\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0MIT-SCREEN-\
SAVER\0_MIT_SCREEN_SAVER_ID\0\0\0\^A\^[\^C;\M^\\0\0\0\^R\0\0\0\M-X\^S\
\0\0\M-8\0\0\0\M-x\^S\0\0\M-X\0\0\0\^X\^T\0\0\M-x\0\0\0\M-X\^T\0\0 \^A\
\0\0h\^U\0\0H\^A\0\0\^X\^V\0\0t\^A\0\0\M^H\^W\0\0\240\^A\0\0\M-(\^W\0\
\0\M-@\^A\0\0(\^Y\0\0\M-l\^A\0\0H\^Z\0\0(\^B\0\0\M-8\^^\0\0d\^B\0\0\
\M-H\^_\0\0\M^\\^B\0\0x \0\0\M-H\^B\0\0\M-x \0\0\M-p\^B\0\0\b"\0\0\^\\
\^C\0\0\^X#\0\0T\^C\0\08#\0\0t\^C\0\0H$\0\0\M^\\^C\0\0\0\0\0\0\^T\0\0\
\0\0\0\0\0\^AzR\0\^Ax\^P\^A\^[\f\a\b\M^P\^A\0\0\^\\0\0\0\^\\0\0\0\^X\
\^S\0\0\^W\0\0\0\0E\^N\^P\M^F\^BC\r\^FJ\f\a\b\0\0\0\^\\0\0\0<\0\0\0\^X\
\^S\0\0\^U\0\0\0\0E\^N\^P\M^F\^BC\r\^FH\f\a\b\0\0\0$\0\0\0\\\0\0\0\^X\
\^S\0\0\M-@\0\0\0\0P\^N\^P\M^F\^BC\r\^FH\M^L\^F\M^N\^E\M^O\^D\M^K\^C\
\^B\M^J\f\a\b\0$\0\0\0\M^D\0\0\0\M-0\^S\0\0\M^P\0\0\0\0P\^N\^P\M^F\^BC\
\r\^FD\M^N\^D\M^K\^C\^B\\\f\a\b\0\0\0\0\0(\0\0\0\M-,\0\0\0\^X\^T\0\0\
\M-0\0\0\0\0P\^N\^P\M^F\^BC\r\^FK\M^L\a\M^M\^F\M^N\^E\M^O\^D\M^K\^C\^B\
\M^A\f\a\b\0\0\0(\0\0\0\M-X\0\0\0\M^\\^T\0\0p\^A\0\0\0P\^N\^P\M^F\^BC\
\r\^FN\M^L\a\M^M\^F\M^N\^E\M^O\^D\M^K\^C\^C0\^A\f\a\b\0\0\^\\0\0\0\^D\
\^A\0\0\M-`\^U\0\0\^S\0\0\0\0E\^N\^P\M^F\^BC\r\^FF\f\a\b\0\0\0(\0\0\0$\
\^A\0\0\M-`\^U\0\0\M^@\^A\0\0\0P\^N\^P\M^F\^BC\r\^FN\M^L\a\M^M\^F\M^N\
\^E\M^O\^D\M^K\^C\^CH\^A\f\a\b\0\08\0\0\0P\^A\0\0004\^W\0\0 \^A\0\0\0P\
\^N\^P\M^F\^BC\r\^FK\M^L\a\M^M\^F\M^N\^E\M^O\^D\M^K\^C\^B\M->\f\a\bB\f\
\^F\^PY\f\a\bE\f\^F\^PO\f\a\b\0\0\08\0\0\0\M^L\^A\0\0\^X\^X\0\0m\^D\0\
\0\0P\^N\^P\M^F\^BC\r\^FR\M^C\b\M^L\a\M^M\^F\M^N\^E\M^O\^D\M^K\^C\^C\
\^O\^A\f\a\bE\f\^F\^P\^C\M-9\^A\f\a\b^\f\^F\^P\0\0004\0\0\0\M-H\^A\0\0\
L\^\\0\0\^P\^A\0\0\0P\^N\^P\M^F\^BC\r\^FH\M^L\^F\M^N\^E\M^O\^D\M^K\^C\
\^B\M-3\f\a\bB\f\^F\^PS\f\a\bE\f\^F\^PI\f\a\b\0(\0\0\0\0\^B\0\0$\^]\0\
\0\M-0\0\0\0\0P\^N\^P\M^F\^BC\r\^FO\M^C\b\M^L\a\M^M\^F\M^N\^E\M^O\^D\
\M^K\^C\^Br\f\a\b\0$\0\0\0,\^B\0\0\M-(\^]\0\0\M^@\0\0\0\0P\^N\^P\M^F\
\^BC\r\^FH\M^L\^F\M^N\^E\M^O\^D\M^K\^C\^BL\f\a\b\0(\0\0\0T\^B\0\0\0\^^\
\0\0\^P\^A\0\0\0P\^N\^P\M^F\^BC\r\^FO\M^C\b\M^L\a\M^M\^F\M^N\^E\M^O\^D\
\M^K\^C\^B\M-U\f\a\b\0004\0\0\0\M^@\^B\0\0\M-d\^^\0\0\^P\^A\0\0\0P\^N\
\^P\M^F\^BC\r\^FH\M^L\^F\M^N\^E\M^O\^D\M^K\^C\^B\M-3\f\a\bB\f\^F\^PS\f\
\a\bE\f\^F\^PI\f\a\b\0\^\\0\0\0\M-8\^B\0\0\M-<\^_\0\0\^X\0\0\0\0E\^N\
\^P\M^F\^BC\r\^FK\f\a\b\0\0\0$\0\0\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x6000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4653553713152/0x43b7d6a8000
58849 wish8.5 CALL mmap(0x43b7d6a8000,0x2000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4653553713152/0x43b7d6a8000
58849 wish8.5 CALL mmap(0x43b7d6aa000,0x2000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x1000)
58849 wish8.5 RET mmap 4653553721344/0x43b7d6aa000
58849 wish8.5 CALL mmap(0x43b7d6ac000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2000)
58849 wish8.5 RET mmap 4653553729536/0x43b7d6ac000
58849 wish8.5 CALL mmap(0x43b7d6ad000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2000)
58849 wish8.5 RET mmap 4653553733632/0x43b7d6ad000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac820c9,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/lib/libm.so.10.1"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1029, ino=2099540, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=8430680, atime=1731660548<"Nov 15 08:49:08 2024">.931459695, mtime=1727706817<"Sep 30 15:33:37 2024">.153021918, ctime=1731076718<"Nov 8 14:38:38 2024">.054188381, size=597520, blocks=1216, blksize=16384, flags=0x0, gen=0x35c4e387 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\^P\^U \0\0\0\0\0\0\0\0\0@\08\0\v\0@\0$\0"\0\^F\0\0\0\
\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0h\^B\0\0\0\0\0\0\
h\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\M-M\0\0\0\0\0\0D\M-M\0\0\0\0\0\0\0\^P\0\
\0\0\0\0\0\^A\0\0\0\^A\0\0\0P\M-M\0\0\0\0\0\0P\M-]\0\0\0\0\0\0P\M-]\0\
\0\0\0\0\0\M-p\M^?\^A\0\0\0\0\0\M-p\M^?\^A\0\0\0\0\0\0\^P\0\0\0\0\0\0\
\^A\0\0\0\^F\0\0\0@\M-M\^B\0\0\0\0\0@\M-m\^B\0\0\0\0\0@\M-m\^B\0\0\0\0\
\08\v\0\0\0\0\0\08\v\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\
\M^@\M-X\^B\0\0\0\0\0\M^@\b\^C\0\0\0\0\0\M^@\b\^C\0\0\0\0\0\0
\0\0\0\0\0\0D
\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0x\M-V\^B\0\0\0\0\0x\M-v\
\^B\0\0\0\0\0x\M-v\^B\0\0\0\0\0 \^A\0\0\0\0\0\0 \^A\0\0\0\0\0\0\b\0\0\
\0\0\0\0\0R\M-etd\^D\0\0\0@\M-M\^B\0\0\0\0\0@\M-m\^B\0\0\0\0\0@\M-m\^B\
\0\0\0\0\08\v\0\0\0\0\0\0\M-@\^R\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\
\^D\0\0\0\M-H\M^\\0\0\0\0\0\0\M-H\M^\\0\0\0\0\0\0\M-H\M^\\0\0\0\0\0\0d\
\b\0\0\0\0\0\0d\b\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0h\
\M-M\^B\0\0\0\0\0h\M-m\^B\0\0\0\0\0h\M-m\^B\0\0\0\0\0\^P \0\0\0\
\0\0\0\^P \0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\M-(\^B\0\0\0\0\0\0\M-(\^B\0\0\0\0\0\
\0\M-(\^B\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\
\0\b\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\^N\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^]\0\0\0 \0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0001\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0S\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\0\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-Q\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-x\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\^P\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\^B\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M^E\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-W\^B\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-z\^B\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0x\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-,\^D\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\^E\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^I\^E\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M^V\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-G\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-N\^F\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\a\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M-5\^A\0\0\^R\0\v\0\0#\^A\0\0\0\0\0`\0\0\0\0\0\0\
\0\M-`\^A\0\0\^Q\0\^W\0\M^P\b\^C\0\0\0\0\0 \0\0\0\0\0\0\0\M-I\a\0\0\^R\
\0\v\0\240\M-7\^B\0\0\0\0\0M\0\0\0\0\0\0\0\M-O\^D\0\0\^R\0\v\0 \M-e\^A\
\0\0\0\0\0-\0\0\0\0\0\0\0S\a\0\0\^R\0\v\0P\M-*\^B\0\0\0\0\0000\^A\0\0\
\0\0\0\0j\0\0\0\^R\0\v\0P\M-g\0\0\0\0\0\0=\0\0\0\0\0\0\0\b\^A\0\0\^R\0\
\v\0 \^O\^A\0\0\0\0\0f\^A\0\0\0\0\0\09\^A\0\0\^R\0\v\0\M^@ \^A\0\0\0\0\
\0@\0\0\0\0\0\0\0D\^B\0\0\^R\0\v\0 F\^A\0\0\0\0\0\M-p\0\0\0\0\0\0\0\^[\
\^D\0\0\^R\0\v\0000\M->\^A\0\0\0\0\0\M-`\^A\0\0\0\0\0\0!\^D\0\0\^R\0\v\
\0\^P\M-@\^A\0\0\0\0\0 \^A\0\0\0\0\0\0w\^B\0\0\^R\0\v\0000V\^A\0\0\0\0\
\0\M-P\^D\0\0\0\0\0\0\M-"\^E\0\0\^R\0\v\0\0 \^B\0\0\0\0\0\^U\0\0\0\0\0\
\0\0\^Q\^C\0\0\^R\0\v\0\M-pz\^A\0\0\0\0\0\M-T\^A\0\0\0\0\0\0\M-`\^F\0\
\0\^R\0\v\0\M^@{\^B\0\0\0\0\0S\^A\0\0\0\0\0\0\M-A\0\0\0\^R\0\v\0 \M-{\
\0\0\0\0\0\0=\0\0\0\0\0\0\0\M-w\0\0\0\^R\0\v\0\M-p\v\^A\0\0\0\0\0000\0\
\0\0\0\0\0\0Y\^D\0\0\^R\0\v\0\M^P\M-T\^A\0\0\0\0\0\M^P\0\0\0\0\0\0\0\
\M-{\^E\0\0\^R\0\v\0\240+\^B\0\0\0\0\0\^U\0\0\0\0\0\0\0M\a\0\0\^R\0\v\
\0P\M-(\^B\0\0\0\0\0\0\^B\0\0\0\0\0\0\M-D\^A\0\0\^R\0\v\0`#\^A\0\0\0\0\
\0`\0\0\0\0\0\0\0\M-0\^B\0\0"\0\v\0\M^Pe\^A\0\0\0\0\0=\0\0\0\0\0\0\0\
\M^\\^B\0\0\^R\0\v\0\0b\^A\0\0\0\0\0\0\^A\0\0\0\0\0\0\M-K\^B\0\0\^R\0\
\v\0\M-0h\^A\0\0\0\0\0000\0\0\0\0\0\0\0\M-Q\^B\0\0\^R\0\v\0\M-`h\^A\0\
\0\0\0\0\240\0\0\0\0\0\0\0\M-u\^D\0\0\^R\0\v\0\M^@\M-j\^A\0\0\0\0\0!\0\
\0\0\0\0\0\0\M-/\^E\0\0\^R\0\v\0@!\^B\0\0\0\0\0w\^B\0\0\0\0\0\0\M-e\^F\
\0\0\^R\0\v\0\M-`|\^B\0\0\0\0\0\^N\0\0\0\0\0\0\0i\a\0\0\^R\0\v\0 \M-,\
\^B\0\0\0\0\0\M-V\^A\0\0\0\0\0\0\M-C\^E\0\0\^R\0\v\0000%\^B\0\0\0\0\0\
\^N\0\0\0\0\0\0\0\M-Y\^E\0\0\^R\0\v\0\M^P'\^B\0\0\0\0\0\M^@\^A\0\0\0\0\
\0\0\M-/\0\0\0\^R\0\v\0\0\M-z\0\0\0\0\0\0\240\0\0\0\0\0\0\0\^C\^D\0\0\
\^R\0\v\0\M^@\M-8\^A\0\0\0\0\0\M-`\0\0\0\0\0\0\0=\^D\0\0\^R\0\v\0\M-@\
\M-B\^A\0\0\0\0\0 \^B\0\0\0\0\0\0?\^E\0\0\^R\0\v\0 \^D\^B\0\0\0\0\0\0\
\^A\0\0\0\0\0\0\M-5\^E\0\0\^R\0\v\0\M-@#\^B\0\0\0\0\0\240\0\0\0\0\0\0\
\0\^B\^F\0\0\^R\0\v\0\M-@+\^B\0\0\0\0\0\M-p\0\0\0\0\0\0\0F\0\0\0\^R\0\
\v\0\^P\M-b\0\0\0\0\0\0\M-Y\^C\0\0\0\0\0\0#\^A\0\0\^Q\0\^X\0\M-@\^R\^C\
\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-"\^B\0\0\^R\0\v\0\0c\^A\0\0\0\0\0\M^M\0\
\0\0\0\0\0\0\M-8\^D\0\0\^R\0\v\0\M^P\M-a\^A\0\0\0\0\0\M-0\0\0\0\0\0\0\
\0001\^F\0\0\^R\0\v\0p>\^B\0\0\0\0\0x\^A\0\0\0\0\0\0\M-&\a\0\0\^R\0\v\
\0\M-P\M-5\^B\0\0\0\0\0M\0\0\0\0\0\0\0\M-%\^A\0\0\^R\0\v\0@ \^A\0\0\0\
\0\0@\0\0\0\0\0\0\0\M-~\^A\0\0\^R\0\v\0\M-p<\^A\0\0\0\0\0P\0\0\0\0\0\0\
\0W\^B\0\0\^R\0\v\0 P\^A\0\0\0\0\0000\0\0\0\0\0\0\0k\^D\0\0\^R\0\v\0p\
\M-V\^A\0\0\0\0\0@\0\0\0\0\0\0\0\M-o\^E\0\0\^R\0\v\0\M^P*\^B\0\0\0\0\0\
\M^P\0\0\0\0\0\0\0r\^F\0\0\^R\0\v\0PI\^B\0\0\0\0\0\M-0\0\0\0\0\0\0\0\
\M^Y\^F\0\0\^R\0\v\0000R\^B\0\0\0\0\0000\0\0\0\0\0\0\0+\^A\0\0\^R\0\v\
\0\0 \^A\0\0\0\0\0@\0\0\0\0\0\0\0\M-m\^C\0\0\^R\0\v\0\240\M-,\^A\0\0\0\
\0\0>\^E\0\0\0\0\0\0\M-j\^E\0\0\^R\0\v\0\M-p)\^B\0\0\0\0\0\240\0\0\0\0\
\0\0\0\0\a\0\0\^R\0\v\0\^P\M^A\^B\0\0\0\0\0\0\^D\0\0\0\0\0\0\M-+\0\0\0\
\^R\0\v\0 \M-y\0\0\0\0\0\0\M-]\0\0\0\0\0\0\0o\^A\0\0\^R\0\v\0\M^P!\^A\
\0\0\0\0\0`\0\0\0\0\0\0\0.\^D\0\0\^R\0\v\0p\M-B\^A\0\0\0\0\0M\0\0\0\0\
\0\0\0v\^D\0\0\^R\0\v\0\M-p\M-X\^A\0\0\0\0\0\M-`\^A\0\0\0\0\0\0\M^C\^A\
\0\0\^R\0\v\0 "\^A\0\0\0\0\0P\0\0\0\0\0\0\0\M-'\^C\0\0\^R\0\v\0\M-`\
\240\^A\0\0\0\0\0\M-p\0\0\0\0\0\0\0\M-u\^C\0\0\^R\0\v\0\M^@\M-3\^A\0\0\
\0\0\0@\^A\0\0\0\0\0\0\M->\^D\0\0\^R\0\v\0@\M-b\^A\0\0\0\0\0\M-`\0\0\0\
\0\0\0\0\^_\^F\0\0\^R\0\v\0@1\^B\0\0\0\0\0\240\^A\0\0\0\0\0\0,\^F\0\0\
\^R\0\v\0\M^@<\^B\0\0\0\0\0\M-p\^A\0\0\0\0\0\0\M-=\^F\0\0\^R\0\v\0p_\
\^B\0\0\0\0\0@\^A\0\0\0\0\0\0\M-C\^F\0\0\^R\0\v\0\M-Pd\^B\0\0\0\0\0\
\M-`\0\0\0\0\0\0\0\M^@\a\0\0\^R\0\v\0\M-0\M-0\^B\0\0\0\0\0\0\^B\0\0\0\
\0\0\0\M-N\a\0\0\^R\0\v\0\M-p\M-7\^B\0\0\0\0\0\^U\0\0\0\0\0\0\0\M-6\0\
\0\0\^R\0\v\0\240\M-z\0\0\0\0\0\0M\0\0\0\0\0\0\0\M-\\0\0\0\^R\0\v\0\
\M-@ \^A\0\0\0\0\0@\0\0\0\0\0\0\0)\^B\0\0\^R\0\v\0\M^PB\^A\0\0\0\0\
\0\M-p\^B\0\0\0\0\0\0\M-]\a\0\0\^R\0\v\0\M-`\M-8\^B\0\0\0\0\0!\^A\0\0\
\0\0\0\0^\^B\0\0\^R\0\v\0PP\^A\0\0\0\0\0=\0\0\0\0\0\0\08\^C\0\0\^R\0\v\
\0\M-P\M^A\^A\0\0\0\0\0-\0\0\0\0\0\0\0T\^C\0\0\^R\0\v\0\M^@\M^M\^A\0\0\
\0\0\0\^P\^B\0\0\0\0\0\0\M^S\^C\0\0\^R\0\v\0\M-p\M^V\^A\0\0\0\0\0\M-M\
\0\0\0\0\0\0\0Z\a\0\0\^R\0\v\0\M^@\M-+\^B\0\0\0\0\0\240\0\0\0\0\0\0\0\
\M^V\^B\0\0\^R\0\v\0\^Pa\^A\0\0\0\0\0\M-p\0\0\0\0\0\0\0\M^X\^D\0\0\^R\
\0\v\0 \M-`\^A\0\0\0\0\0000\0\0\0\0\0\0\0\M-u\^E\0\0\^R\0\v\0 +\^B\0\0\
\0\0\0\M^@\0\0\0\0\0\0\0\^O\a\0\0\^R\0\v\0 \M^K\^B\0\0\0\0\0 \^B\0\0\0\
\0\0\0\^T\a\0\0\^R\0\v\0@\M^M\^B\0\0\0\0\0\M-p\0\0\0\0\0\0\0\^O\b\0\0\
\^R\0\v\0\M-0\M-K\^B\0\0\0\0\0-\0\0\0\0\0\0\0\^S\^E\0\0\^R\0\v\0\M-`\
\M-p\^A\0\0\0\0\0\M-!\^D\0\0\0\0\0\0.\^E\0\0\^R\0\v\0\M-0\^C\^B\0\0\0\
\0\0=\0\0\0\0\0\0\0\M^Y\^A\0\0\^R\0\v\0\240"\^A\0\0\0\0\0`\0\0\0\0\0\0\
\0\M^Q\^D\0\0\^R\0\v\0\^P\M-`\^A\0\0\0\0\0\^N\0\0\0\0\0\0\0\^\\^E\0\0\
\^R\0\v\0\M-P\M-u\^A\0\0\0\0\0\^T\^C\0\0\0\0\0\0\M-^\^E\0\0\^R\0\v\0\
\^P)\^B\0\0\0\0\0\M-0\0\0\0\0\0\0\0\^[\^A\0\0\^R\0\v\0\M-P\^V\^A\0\0\0\
\0\0' \0\0\0\0\0\0\^D\^B\0\0\^R\0\v\0@=\^A\0\0\0\0\0\M-0\^B\0\0\0\0\
\0\0)\^C\0\0\^R\0\v\0\M-p\^?\^A\0\0\0\0\0000\0\0\0\0\0\0\0\M-{\^D\0\0\
\^R\0\v\0\M-0\M-j\^A\0\0\0\0\0\^U\0\0\0\0\0\0\0\^S\^F\0\0\^R\0\v\0\M-0\
.\^B\0\0\0\0\0`\^A\0\0\0\0\0\0e\^F\0\0\^R\0\v\0\M^@G\^B\0\0\0\0\0P\0\0\
\0\0\0\0\0\M-0\a\0\0\^R\0\v\0 \M-6\^B\0\0\0\0\0=\0\0\0\0\0\0\0\M--\^C\
\0\0\^R\0\v\0\M-P\M-!\^A\0\0\0\0\0W\^C\0\0\0\0\0\0\M-{\^C\0\0\^R\0\v\0\
\M-@\M-4\^A\0\0\0\0\0\M-8\^C\0\0\0\0\0\0D\^C\0\0\^R\0\v\0\M^P\M^B\^A\0\
\0\0\0\0\M-*\0\0\0\0\0\0\0\M-L\^C\0\0\^R\0\v\0\M-@\M-'\^A\0\0\0\0\0p\0\
\0\0\0\0\0\0\M-b\^C\0\0\^R\0\v\0P\M-,\^A\0\0\0\0\0M\0\0\0\0\0\0\0\M-i\
\^D\0\0\^R\0\v\0\0\M-i\^A\0\0\0\0\0000\^A\0\0\0\0\0\0\M^F\^F\0\0\^R\0\
\v\0PP\^B\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M^D\0\0\0\^R\0\v\0\M-@\M-k\0\0\0\
\0\0\0`\0\0\0\0\0\0\0\^T\^A\0\0\^R\0\v\0P\^S\^A\0\0\0\0\0\M^@\^C\0\0\0\
\0\0\0(\^D\0\0\^R\0\v\0000\M-A\^A\0\0\0\0\0@\^A\0\0\0\0\0\0\M-$\^F\0\0\
\^R\0\v\0\M-@X\^B\0\0\0\0\0;\^D\0\0\0\0\0\0\M-5\^F\0\0\^R\0\v\0\M-`^\
\^B\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M^M\a\0\0\^R\0\v\0\M-P\M-2\^B\0\0\0\0\
\0;\^A\0\0\0\0\0\0\^_\^B\0\0\^R\0\v\0@B\^A\0\0\0\0\0P\0\0\0\0\0\0\0\
\M-h\^B\0\0\^R\0\v\0\0l\^A\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M^C\^E\0\0\^R\0\
\v\0p\^Z\^B\0\0\0\0\0|\0\0\0\0\0\0\0L\0\0\0\^R\0\v\0\M-p\M-e\0\0\0\0\0\
\0\M-~\0\0\0\0\0\0\0\M-1\^F\0\0\^R\0\v\0\M-`]\^B\0\0\0\0\0\0\^A\0\0\0\
\0\0\0z\^A\0\0\^R\0\v\0\M-p!\^A\0\0\0\0\0000\0\0\0\0\0\0\0\M-b\^B\0\0\
\^R\0\v\0\M^@i\^A\0\0\0\0\0\M^@\^B\0\0\0\0\0\0\^A\^E\0\0\^R\0\v\0\M-P\
\M-j\^A\0\0\0\0\0P\0\0\0\0\0\0\08\^E\0\0\^R\0\v\0\M-p\^C\^B\0\0\0\0\
\0000\0\0\0\0\0\0\0\M^Q\^E\0\0\^R\0\v\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x32000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4651642871808/0x43b0b856000
58849 wish8.5 CALL mmap(0x43b0b856000,0xd000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4651642871808/0x43b0b856000
58849 wish8.5 CALL mmap(0x43b0b863000,0x21000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xc000)
58849 wish8.5 RET mmap 4651642925056/0x43b0b863000
58849 wish8.5 CALL mmap(0x43b0b884000,0x2000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2c000)
58849 wish8.5 RET mmap 4651643060224/0x43b0b884000
58849 wish8.5 CALL mmap(0x43b0b886000,0x2000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2d000)
58849 wish8.5 RET mmap 4651643068416/0x43b0b886000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653565394944/0x43b7e1cc000
58849 wish8.5 CALL open(0x43b3ac87258,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/local/lib/libtcl85.so.1.8"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1031, ino=1090470, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=5972392, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727371330<"Sep 26 18:22:10 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.955975902, size=1405512, blocks=2784, blksize=16384, flags=0x0, gen=0xd66925af }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\M^Hj\^U\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^_\0\^]\0\^F\0\0\0\
\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\
\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^D\M-"\^D\0\0\0\0\0\^D\M-"\^D\0\0\
\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\^P\M-"\^D\0\0\0\0\0\^P\M-2\
\^D\0\0\0\0\0\^P\M-2\^D\0\0\0\0\0\0\M-"\r\0\0\0\0\0\0\M-"\r\0\0\0\0\0\
\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\^PD\^R\0\0\0\0\0\^Pd\^R\0\0\0\0\0\
\^Pd\^R\0\0\0\0\0\M^P\M^A\0\0\0\0\0\0\M^P\M^A\0\0\0\0\0\0\0\^P\0\0\0\0\
\0\0\^A\0\0\0\^F\0\0\0\240\M-E\^R\0\0\0\0\0\240\M-u\^R\0\0\0\0\0\240\
\M-u\^R\0\0\0\0\0xJ\0\0\0\0\0\0`R\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\
\0\^F\0\0\0\0\M-.\^R\0\0\0\0\0\0\M-N\^R\0\0\0\0\0\0\M-N\^R\0\0\0\0\0 \
\^A\0\0\0\0\0\0 \^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\^PD\^R\
\0\0\0\0\0\^Pd\^R\0\0\0\0\0\^Pd\^R\0\0\0\0\0\M^P\M^A\0\0\0\0\0\0\M-p\
\M^K\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0\^PH\^C\0\0\0\0\0\^PH\
\^C\0\0\0\0\0\^PH\^C\0\0\0\0\0\M-|7\0\0\0\0\0\0\M-|7\0\0\0\0\0\0\^D\0\
\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\08D\^R\0\0\0\0\08d\^R\0\0\0\0\08d\^R\
\0\0\0\0\0000-\0\0\0\0\0\0000-\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\^F\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\
\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\
\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\
\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\^D\0\0\0\
\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\
\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\0\0OpenB\
SD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\0\0\^A\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0 \
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\0\0 \
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0m\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\0\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{\0\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M^_\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M-&\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M--\0\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-5\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-N\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\
\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\^A\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^G\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M^M\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^R\^A\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Y\^A\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-2\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-B\^A\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-S\^A\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-,\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-j\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-W\a\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-W\v\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-k\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0+\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0N\f\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0|\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^A\f\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^F\f\0\0\^R\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M^L\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M^P\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^U\f\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Y\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M^^\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-$\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-(\f\0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-.\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-2\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-6\
\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-;\f\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-?\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M^Q\r\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-R\r\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-U\^N\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M-p\^N\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-w\^N\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Q\^Q\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\^R\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M-v\^S\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-/\^V\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-h\^X\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\^Y\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0X\^Z\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^W\
\^]\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^^\^]\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Z&\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M->&\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-I&\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-M)\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M^S.\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0J0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0003\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^F3\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-$:\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-2:\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-7:\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M-=:\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-G:\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-Q:\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-]:\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-d:\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-i:\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-p:\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\r;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\^U;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^\;\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0,;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0003;\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0?;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E;\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0X;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d;\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0p;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0v;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^B;\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^L;\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M^X;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M-%;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-2;\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-7;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-<;\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-t;\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^T<\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\^Z<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0"<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)<\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0002<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0:<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B<\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0Q<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0X<\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0i<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0o<\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0|<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^B<\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^H<\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M^Q<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M^Z<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-$<\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-)<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-/<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-6<\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-=<\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-C<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M-H<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-P<\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-U<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-Z<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-b<\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-h<\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M-m<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-t<\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-{<\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^B=\0\0\^P\0\0\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x135000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4650087010304/0x43aaec8d000
58849 wish8.5 CALL mmap(0x43aaec8d000,0x4b000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4650087010304/0x43aaec8d000
58849 wish8.5 CALL mmap(0x43aaecd8000,0xdb000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x4a000)
58849 wish8.5 RET mmap 4650087317504/0x43aaecd8000
58849 wish8.5 CALL mmap(0x43aaedb3000,0x9000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x124000)
58849 wish8.5 RET mmap 4650088214528/0x43aaedb3000
58849 wish8.5 CALL mmap(0x43aaedbc000,0x6000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x12c000)
58849 wish8.5 RET mmap 4650088251392/0x43aaedbc000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651309731840/0x43af7aa1000
58849 wish8.5 CALL open(0x43b3ac82642,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libXext.so.13.0"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103701, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=439152, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727400840<"Sep 27 02:34:00 2024">.723022975, ctime=1731076741<"Nov 8 14:39:01 2024">.644188576, size=97224, blocks=192, blksize=16384, flags=0x0, gen=0xecd638ec }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0Ht\^A\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^^\0\^\\0\^F\0\0\0\^D\
\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\0\0\
\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-<Y\0\0\0\0\0\0\M-<Y\0\0\0\0\0\0\0\
\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\M-@Y\0\0\0\0\0\0\M-@i\0\0\0\0\0\0\
\M-@i\0\0\0\0\0\0\M-@\M-B\0\0\0\0\0\0\M-@\M-B\0\0\0\0\0\0\0\^P\0\0\0\0\
\0\0\^A\0\0\0\^F\0\0\0\M^@\^\\^A\0\0\0\0\0\M^@<\^A\0\0\0\0\0\M^@<\^A\0\
\0\0\0\0 \0\0\0\0\0\0 \0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\
\^F\0\0\0\240%\^A\0\0\0\0\0\240U\^A\0\0\0\0\0\240U\^A\0\0\0\0\0P\^D\0\
\0\0\0\0\0@\^F\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0000"\^A\0\
\0\0\0\0000B\^A\0\0\0\0\0000B\^A\0\0\0\0\0@\^A\0\0\0\0\0\0@\^A\0\0\0\0\
\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\M^@\^\\^A\0\0\0\0\0\M^@<\^A\0\0\0\
\0\0\M^@<\^A\0\0\0\0\0 \0\0\0\0\0\0\M^@\^S\0\0\0\0\0\0\^A\0\0\0\0\0\0\
\0P\M-etd\^D\0\0\0(7\0\0\0\0\0\0(7\0\0\0\0\0\0(7\0\0\0\0\0\0\M^\\^E\0\
\0\0\0\0\0\M^\\^E\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0\
\M-(\^\\^A\0\0\0\0\0\M-(<\^A\0\0\0\0\0\M-(<\^A\0\0\0\0\0\M^H\^E\0\0\0\
\0\0\0\M^H\^E\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\
\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^D\0\0\0\
\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\0\0\
\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0000\^C\0\
\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\
\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\0\0\0\0\0\^D\0\
\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\
\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\0\0 \0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M^M\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M^Z\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^P\^A\0\0\^R\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^H\^B\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M^W\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-$\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-+\^B\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-1\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-9\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-@\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-G\^B\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-L\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-S\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-Z\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^^\^C\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-5\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\^D\
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-B\^D\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0%\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0<\^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M\^F\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M^@\^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M^\\^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f \0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^E \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M^T \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0007
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0V\v\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0[\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0b\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-*\v\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-1\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-?\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-K\
\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-X\v\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-d\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-t\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^B\f\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^T\f\0\0\^R\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\^_\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0000\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\f\0\0\^Q\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M\f\0\0\^Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0[\f\0\0\^Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^_\f\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M->\^A\0\0\^R\0\f\0\M^P}\0\0\0\
\0\0\0\0\^A\0\0\0\0\0\0\M-~\^D\0\0\^R\0\f\0\^P\M-2\0\0\0\0\0\0p\^A\0\0\
\0\0\0\0W\a\0\0\^R\0\f\0\M-`\M-X\0\0\0\0\0\0\M-p\0\0\0\0\0\0\0z\a\0\0\
\^R\0\f\0\M-@\M-Z\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0\^A\0\0\0\^R\0\r\0\M-p$\
\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\M-`\0\0\0\^R\0\f\0@q\0\0\0\0\0\0\0\^A\0\
\0\0\0\0\0\^S\^B\0\0\^R\0\f\0\240\M^C\0\0\0\0\0\0000\0\0\0\0\0\0\0\M-|\
\^B\0\0\^R\0\f\0`\M^N\0\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M-w\^F\0\0\^R\0\f\
\0\^P\M-W\0\0\0\0\0\0000\0\0\0\0\0\0\0\^T \0\0\^R\0\f\0\M-0\M-m\
\0\0\0\0\0\0000\0\0\0\0\0\0\0\M-s \0\0\^R\0\f\0P\M-z\0\0\0\0\0\0\
J\^A\0\0\0\0\0\0\^U
\0\0\^R\0\f\0`\M-}\0\0\0\0\0\0006\0\0\0\0\0\0\0'\v\0\0\^R\0\f\0000\^W\
\^A\0\0\0\0\0P\0\0\0\0\0\0\0007 \0\0\^R\0\f\0P\M-n\0\0\0\0\0\0\M^@\0\0\
\0\0\0\0\0G
\0\0\^R\0\f\0 \^C\^A\0\0\0\0\0\M-0\0\0\0\0\0\0\0\M-y
\0\0\^R\0\f\0\M-`\^Q\^A\0\0\0\0\0\0\^A\0\0\0\0\0\0\M-w\0\0\0\^R\0\f\0@\
s\0\0\0\0\0\0 \^A\0\0\0\0\0\0!\^A\0\0\^R\0\f\0\M-`u\0\0\0\0\0\0\M-0\0\
\0\0\0\0\0\0\^V\^F\0\0\^R\0\f\0\M^P\M-H\0\0\0\0\0\0000\^A\0\0\0\0\0\
\0004\b\0\0\^R\0\f\0\M^P\M-g\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0\M-n\b\0\0\
\^R\0\f\0P\M-m\0\0\0\0\0\0000\0\0\0\0\0\0\0\M-i
\0\0\^R\0\f\0P\^P\^A\0\0\0\0\0\M^P\^A\0\0\0\0\0\0004\^E\0\0\^R\0\f\000\
0\M-6\0\0\0\0\0\0\M-0\^A\0\0\0\0\0\0\^E\^F\0\0\^R\0\f\0@\M-G\0\0\0\0\0\
\0P\^A\0\0\0\0\0\0\M-;\^F\0\0\^R\0\f\0\^P\M-T\0\0\0\0\0\0p\0\0\0\0\0\0\
\0D\b\0\0\^R\0\f\0`\M-h\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0f\b\0\0\^R\0\f\0P\
\M-j\0\0\0\0\0\0`\^A\0\0\0\0\0\0\M-H\b\0\0\^R\0\f\0\M-P\M-l\0\0\0\0\0\
\0P\0\0\0\0\0\0\0\M-1
\0\0\^R\0\f\0@\^N\^A\0\0\0\0\0\^P\^A\0\0\0\0\0\0006\a\0\0\^R\0\f\0\M^@\
\M-X\0\0\0\0\0\0000\0\0\0\0\0\0\0^\^A\0\0\^R\0\f\0\M-`x\0\0\0\0\0\0p\
\^A\0\0\0\0\0\0Q\^C\0\0\^R\0\f\0\M-P\M^Q\0\0\0\0\0\0`\^A\0\0\0\0\0\0\
\^O\^D\0\0\^R\0\f\0@\M^]\0\0\0\0\0\0\^P\^B\0\0\0\0\0\0\M^C\^E\0\0\^R\0\
\f\0\M-`\M-;\0\0\0\0\0\0\M-`\^A\0\0\0\0\0\0\M-<\a\0\0\^R\0\f\0\M-P\M-`\
\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0"\b\0\0\^R\0\f\0\M-@\M-f\0\0\0\0\0\0\M-P\
\0\0\0\0\0\0\0\M-^\b\0\0\^R\0\f\0 \M-m\0\0\0\0\0\0000\0\0\0\0\0\0\0\b\
\v\0\0\^R\0\f\0\M-`\^R\^A\0\0\0\0\0\0\^A\0\0\0\0\0\0L\0\0\0\^R\0\f\0Pk\
\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0\^O\^A\0\0\^R\0\f\0p"\^A\0\0\0\0\0\M-p\0\
\0\0\0\0\0\08\^A\0\0\^R\0\f\0\M^Pv\0\0\0\0\0\0\0\^A\0\0\0\0\0\0\M-i\^B\
\0\0\^R\0\f\0\240\M^M\0\0\0\0\0\0\M-@\0\0\0\0\0\0\0\M^O\^F\0\0\^R\0\f\
\0\0\M-N\0\0\0\0\0\0\M-`\^A\0\0\0\0\0\0\240\a\0\0\^R\0\f\0\M-0\M-\\0\0\
\0\0\0\0\M-p\^A\0\0\0\0\0\0v \0\0\^R\0\f\0@\M-t\0\0\0\0\0\0\M^V\^B\
\0\0\0\0\0\0\M-k\0\0\0\^R\0\f\0@r\0\0\0\0\0\0\0\^A\0\0\0\0\0\0\M-z\^A\
\0\0\^R\0\f\0P\M^B\0\0\0\0\0\0P\^A\0\0\0\0\0\0e\^B\0\0\^R\0\f\0\M-@\
\M^D\0\0\0\0\0\0\M^@\^A\0\0\0\0\0\0(\^B\0\0\^R\0\f\0\M-P\M^C\0\0\0\0\0\
\0000\0\0\0\0\0\0\0|\^D\0\0\^R\0\f\0\^P\M-*\0\0\0\0\0\0\^X\0\0\0\0\0\0\
\0g\a\0\0\^R\0\f\0\M-P\M-Y\0\0\0\0\0\0\M-p\0\0\0\0\0\0\0\0\b\0\0\^R\0\
\f\0\M-@\M-d\0\0\0\0\0\0 \^A\0\0\0\0\0\0\M-h \0\0\^R\0\f\0000\M-y\0\
\0\0\0\0\0\^Z\^A\0\0\0\0\0\0\^U\v\0\0\^R\0\f\0\M-`\^S\^A\0\0\0\0\0C\^C\
\0\0\0\0\0\0s\v\0\0\^R\0\f\0\M^P\^\\^A\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-4\
\0\0\0\^R\0\f\0`m\0\0\0\0\0\0000\^A\0\0\0\0\0\0\^Q\b\0\0\^R\0\f\0\M-`\
\M-e\0\0\0\0\0\0\M-`\0\0\0\0\0\0\0\M-"\0\0\0\^R\0\f\0\M-0$\^A\0\0\0\0\
\08\0\0\0\0\0\0\0F\a\0\0\^R\0\f\0\M-0\M-X\0\0\0\0\0\0000\0\0\0\0\0\0\0\
\M-o\a\0\0\^R\0\f\0\M-`\M-c\0\0\0\0\0\0\M-`\0\0\0\0\0\0\0\M^N
\0\0\^R\0\f\0P \^A\0\0\0\0\0h\^C\0\0\0\0\0\0\^Q\^E\0\0\^R\0\f\0\M^@\
\M-3\0\0\0\0\0\0\M-0\^B\0\0\0\0\0\0L\^E\0\0\^R\0\f\0\M-`\M-7\0\0\0\0\0\
\0`\^A\0\0\0\0\0\0\M-+\a\0\0\^R\0\f\0\240\M-^\0\0\0\0\0\0\0\^A\0\0\0\0\
\0\0V\b\0\0\^R\0\f\0000\M-i\0\0\0\0\0\0 \^A\0\0\0\0\0\0\M^\\b\0\0\^R\0\
\f\0000\M-l\0\0\0\0\0\0P\0\0\0\0\0\0\0\M-K \0\0\^R\0\f\0\M-`\M-v\
\0\0\0\0\0\0*\^A\0\0\0\0\0\0\M^E\v\0\0\^R\0\f\0\^P\^]\^A\0\0\0\0\0\M^P\
\0\0\0\0\0\0\0\M^U\v\0\0\^R\0\f\0\0 \^A\0\0\0\0\0\^[\0\0\0\0\0\0\0K\^A\
\0\0\^R\0\f\0\M^Pw\0\0\0\0\0\0000\^A\0\0\0\0\0\0n\^A\0\0\^R\0\f\0Pz\0\
\0\0\0\0\0\0\^B\0\0\0\0\0\0t\^C\0\0\^R\0\f\0\M-@\M^T\0\0\0\0\0\0\^P\^A\
\0\0\0\0\0\0\M-O\^F\0\0\^R\0\f\0\M^@\M-T\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0\
o
\0\0\^R\0\f\0\M-P\^F\^A\0\0\0\0\0\M^@\^B\0\0\0\0\0\0l\f\0\0\^R\0\f\0\
\^P$\^A\0\0\0\0\0@\0\0\0\0\0\0\0\^F\^A\0\0\^R\0\f\0`t\0\0\0\0\0\0`\^A\
\0\0\0\0\0\0\M^Y\^A\0\0\^R\0\f\0P|\0\0\0\0\0\0@\^A\0\0\0\0\0\0Q\^B\0\0\
\^R\0\f\0\M-0\^_\^A\0\0\0\0\0P\0\0\0\0\0\0\0\M-N\a\0\0\^R\0\f\0\240\
\M-a\0\0\0\0\0\0@\^A\0\0\0\0\0\0\a\0\0\0\^R\0\^N\0\^P%\^A\0\0\0\0\0\0\
\0\0\0\0\0\0\0a\^C\0\0\^R\0\f\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x16000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4651639267328/0x43b0b4e6000
58849 wish8.5 CALL mmap(0x43b0b4e6000,0x6000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4651639267328/0x43b0b4e6000
58849 wish8.5 CALL mmap(0x43b0b4ec000,0xd000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x5000)
58849 wish8.5 RET mmap 4651639291904/0x43b0b4ec000
58849 wish8.5 CALL mmap(0x43b0b4f9000,0x2000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x11000)
58849 wish8.5 RET mmap 4651639345152/0x43b0b4f9000
58849 wish8.5 CALL mmap(0x43b0b4fb000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x12000)
58849 wish8.5 RET mmap 4651639353344/0x43b0b4fb000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac82702,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libXft.so.12.0"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103704, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=439336, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727400846<"Sep 27 02:34:06 2024">.663021715, ctime=1731076741<"Nov 8 14:39:01 2024">.654188800, size=119824, blocks=236, blksize=16384, flags=0x0, gen=0x2df8d899 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\M^P\M-L\^A\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^^\0\^\\0\^F\0\
\0\0\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\
\0\0\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$b\0\0\0\0\0\0$b\0\0\0\0\0\0\0\
\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0000b\0\0\0\0\0\0000r\0\0\0\0\0\0000r\
\0\0\0\0\0\0\M-p\^Y\^A\0\0\0\0\0\M-p\^Y\^A\0\0\0\0\0\0\^P\0\0\0\0\0\0\
\^A\0\0\0\^F\0\0\0 |\^A\0\0\0\0\0 \M^\\^A\0\0\0\0\0 \M^\\^A\0\0\0\0\0\
\M-X
\0\0\0\0\0\0\M-X
\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\0\M^G\^A\0\0\0\0\0\0\
\M-7\^A\0\0\0\0\0\0\M-7\^A\0\0\0\0\0@\^A\0\0\0\0\0\0\M^X\^A\0\0\0\0\0\
\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0h\M^@\^A\0\0\0\0\0h\240\^A\0\0\0\
\0\0h\240\^A\0\0\0\0\0\M^P\^A\0\0\0\0\0\0\M^P\^A\0\0\0\0\0\0\b\0\0\0\0\
\0\0\0R\M-etd\^D\0\0\0 |\^A\0\0\0\0\0 \M^\\^A\0\0\0\0\0 \M^\\^A\0\0\0\
\0\0\M-X
\0\0\0\0\0\0\M-`\^S\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0@H\0\0\
\0\0\0\0@H\0\0\0\0\0\0@H\0\0\0\0\0\0,\^D\0\0\0\0\0\0,\^D\0\0\0\0\0\0\
\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0H|\^A\0\0\0\0\0H\M^\\^A\0\0\0\0\
\0H\M^\\^A\0\0\0\0\0 \^D\0\0\0\0\0\0 \^D\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\
\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\
\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\
\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\
\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\
\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\
\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\
\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\
\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^\0\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^B\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M^[\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-'\0\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-6\0\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-y\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\a\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Q\^A\0\0\^R\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^[\^A\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0#\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\
\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\09\^A\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0T\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\^A\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0g\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0n\^A\
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\^A\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M^N\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-$\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-<\^A\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-P\^A\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-U\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-Z\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-l\^A\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-s\^A\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\^D\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\09\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\^B\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\\\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l\^B\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0x\^B\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\^?\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M^R\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-!\^B\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-(\^B\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M-Q\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-b\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-|\^B\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^P\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\^]\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0000\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\^C\0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^H\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-g\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\
\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^_\^D\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0004\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0X\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\^D\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-1\^D\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-<\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\^]\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0*\^E\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-a\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-n\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-|\^E\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\^^\^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D\
\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\^F\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-c\^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-v\^F\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^E\a\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^X\a\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0000\a\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0d\a\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^M\a\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^^\a\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-;\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-@\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-H\a\0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-T\a\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\^A\b\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^T\b\
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\b\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0/\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0006\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\b\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0P\b\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0a\b\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\b\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^E\b\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M^X\b\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-m\b\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A \0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^S \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0% \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0003 \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M \0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\ \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0p \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M^M \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-? \0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-W \0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-e \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-{ \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\v
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^S
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0007
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0X
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^L
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^^
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-3
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-D
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-X
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-m
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^E\v\0\0\^R\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\^R\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0$\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0003\v\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0p\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0}\v\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^E\v\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M^^\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-7\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-O\v\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-`\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-w\v\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^N\
\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-h\f\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-{\f\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\^B\r\0\0\^R\0\0\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x1c000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4652698587136/0x43b4a725000
58849 wish8.5 CALL mmap(0x43b4a725000,0x7000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4652698587136/0x43b4a725000
58849 wish8.5 CALL mmap(0x43b4a72c000,0x12000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x6000)
58849 wish8.5 RET mmap 4652698615808/0x43b4a72c000
58849 wish8.5 CALL mmap(0x43b4a73e000,0x2000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x17000)
58849 wish8.5 RET mmap 4652698689536/0x43b4a73e000
58849 wish8.5 CALL mmap(0x43b4a740000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x18000)
58849 wish8.5 RET mmap 4652698697728/0x43b4a740000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac8253c,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libX11.so.18.2"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103692, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=438000, atime=1731660548<"Nov 15 08:49:08 2024">.921459436, mtime=1727400826<"Sep 27 02:33:46 2024">.873021709, ctime=1731076741<"Nov 8 14:39:01 2024">.634188842, size=1554992, blocks=3072, blksize=16384, flags=0x0, gen=0x922ccb21 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\M-p\M-1\^W\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0!\0\^_\0\^F\0\0\
\0\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\
\0\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-,\M^Z
\0\0\0\0\0\M-,\M^Z
\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\M-0\M^Z
\0\0\0\0\0\M-0\M-*
\0\0\0\0\0\M-0\M-*
\0\0\0\0\0P\M-x \0\0\0\0\0P\M-x \0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\
\^F\0\0\0\0\M^S\^T\0\0\0\0\0\0\M-3\^T\0\0\0\0\0\0\M-3\^T\0\0\0\0\0\M^P\
V\0\0\0\0\0\0\M^PV\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\M^P\
\M-i\^T\0\0\0\0\0\M^P\^Y\^U\0\0\0\0\0\M^P\^Y\^U\0\0\0\0\0\M-X%\0\0\0\0\
\0\0y,\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0\M-p\M-Q\^T\0\0\0\
\0\0\M-p\M-q\^T\0\0\0\0\0\M-p\M-q\^T\0\0\0\0\0p\^A\0\0\0\0\0\0p\^A\0\0\
\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\0\M^S\^T\0\0\0\0\0\0\M-3\^T\0\
\0\0\0\0\0\M-3\^T\0\0\0\0\0\M^PV\0\0\0\0\0\0\0]\0\0\0\0\0\0\^A\0\0\0\0\
\0\0\0P\M-etd\^D\0\0\0\M-@A \0\0\0\0\0\M-@A \0\0\0\0\0\M-@A \0\0\0\
\0\0\M-l8\0\0\0\0\0\0\M-l8\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\
\^F\0\0\0(\M^S\^T\0\0\0\0\0(\M-3\^T\0\0\0\0\0(\M-3\^T\0\0\0\0\0@-\0\0\
\0\0\0\0@-\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\
\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\
\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\
\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\
\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\
\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\
\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\
\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-Z\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-~\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-1\^B\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^]\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-z\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\^A\^D\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\09\^D\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^P\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M^V\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^]\
\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\^F\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-}\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0P\a\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0; \0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M^\ \0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-" \0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-0 \0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-5 \0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-< \0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-A
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-I
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-P
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^U\r\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0 \r\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0'\r\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\^Q\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^X\^R\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^U\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0000\^U\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^^\^U\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^C\^V\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\^V\^V\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\^V\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A\^V\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0S\^V\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\
\^V\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0z\^V\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^N\^V\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0`\^\\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g\^\\0\0\^R\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\^\\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\^\\^]\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-k\^]\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-!\^^\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M^D\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^J\
\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Q\^_\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^^\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-#\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-+\
\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^E \0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^?$\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0?&\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l&\0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~&\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-$&\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-0&\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-H&\0\0\^R\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M-X&\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-{&\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^F'\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)'\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0001'\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0;'\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0V'\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0i'\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0y'\0\0\^R\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^N'\0\0\^R\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-('\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M^O(\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^U(\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^^(\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-$(\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<)\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0A)\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0G)\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0L)\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|)\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M^C)\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M^H)\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^P)\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^V)\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0]+\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w+\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0!,\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-=.\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-V.\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^N2\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0*4\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\
4\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^S8\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z8\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0!8\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)8\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00008\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\088\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B8\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-,8\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-r8\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-V:\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-p@\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M-}@\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0 A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^VA\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0+A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0003A\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0KA\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0QA\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0WA\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~A\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^GA\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-'A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0000B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0006B\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-QB\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-XB\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-"K\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-'K\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-.K\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M-jP\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\^N\0\0\^R\0\f\
\0Pb\v\0\0\0\0\0p\^A\0\0\0\0\0\0M \0\0\^R\0\f\0\^P\M-!\r\0\0\0\0\0`\0\
\0\0\0\0\0\0\M-w#\0\0\^R\0\f\0`\^S\r\0\0\0\0\0(\0\0\0\0\0\0\0\M-z0\0\0\
\^R\0\f\0\0\M^R\^N\0\0\0\0\0@\^A\0\0\0\0\0\0\bJ\0\0\^R\0\f\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x155000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4650657579008/0x43ad0cb0000
58849 wish8.5 CALL mmap(0x43ad0cb0000,0xaa000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4650657579008/0x43ad0cb0000
58849 wish8.5 CALL mmap(0x43ad0d5a000,0xa1000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xa9000)
58849 wish8.5 RET mmap 4650658275328/0x43ad0d5a000
58849 wish8.5 CALL mmap(0x43ad0dfb000,0x6000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x149000)
58849 wish8.5 RET mmap 4650658934784/0x43ad0dfb000
58849 wish8.5 CALL mmap(0x43ad0e01000,0x3000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x14e000)
58849 wish8.5 RET mmap 4650658959360/0x43ad0e01000
58849 wish8.5 CALL mmap(0x43ad0e04000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650658971648/0x43ad0e04000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650523963392/0x43ac8d43000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653327167488/0x43b6fe9b000
58849 wish8.5 CALL open(0x43b3ac872a3,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/local/lib/libtk85.so.0.19"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1031, ino=1090478, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=5974552, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727371912<"Sep 26 18:31:52 2024">, ctime=1731074790<"Nov 8 14:06:30 2024">.615976713, size=1595392, blocks=3168, blksize=16384, flags=0x0, gen=0x946c8fea }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0@P\^X\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^_\0\^]\0\^F\0\0\0\^D\
\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\0\0\
\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-T\M^H\^E\0\0\0\0\0\M-T\M^H\^E\0\0\0\
\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\M-`\M^H\^E\0\0\0\0\0\M-`\M^X\
\^E\0\0\0\0\0\M-`\M^X\^E\0\0\0\0\0000\r\^N\0\0\0\0\0000\r\^N\0\0\0\0\0\
\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\^P\M^V\^S\0\0\0\0\0\^P\M-6\^S\0\0\
\0\0\0\^P\M-6\^S\0\0\0\0\0\M^@\^X\^A\0\0\0\0\0\M^@\^X\^A\0\0\0\0\0\0\
\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\M^P\M-.\^T\0\0\0\0\0\M^P\M-^\^T\0\0\
\0\0\0\M^P\M-^\^T\0\0\0\0\0\M-P\M-_\0\0\0\0\0\0P\M-e\0\0\0\0\0\0\0\^P\
\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0@\M^Z\^T\0\0\0\0\0@\M-:\^T\0\0\0\0\0@\
\M-:\^T\0\0\0\0\0p\^A\0\0\0\0\0\0p\^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-e\
td\^D\0\0\0\^P\M^V\^S\0\0\0\0\0\^P\M-6\^S\0\0\0\0\0\^P\M-6\^S\0\0\0\0\
\0\M^@\^X\^A\0\0\0\0\0\M-p\^Y\^A\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\
\0\0\0T\f\^D\0\0\0\0\0T\f\^D\0\0\0\0\0T\f\^D\0\0\0\0\0\M-$<\0\0\0\0\0\
\0\M-$<\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\08\M^V\^S\0\0\
\0\0\08\M-6\^S\0\0\0\0\08\M-6\^S\0\0\0\0\0P/\0\0\0\0\0\0P/\0\0\0\0\0\0\
\b\0\0\0\0\0\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\
\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\
\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\
\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\
\0\^D\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\
\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\
\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GN\
U\0\^B\0\0\M-@\^D\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\
\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-5\
\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-<\^A\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-D\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-m\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-r\
\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-v\^A\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^V\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0^\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\^B\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^D\^B\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-5\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-X\^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K\^C\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0Z\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\
\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-2\^C\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0001\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08\^E\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\^E\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0}\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\r\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0%\a\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\a\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M^K\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^E\b\0\0\^R\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0>\b\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0M\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\b\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^O \0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\^Y \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0U \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\f\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-^\f\0\0\^R\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0'\r\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0002\r\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\r\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^F\r\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M^P\r\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^]\r\
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-]\^N\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-b\^N\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-q\^N\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-2\^O\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M->\^O\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0k\^P\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-"\^P\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0.\^Q\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0I\^R\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0W\^R\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\
\^R\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0s\^R\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^I\^R\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-O\^R\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^?\^R\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^X\^S\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0R\^S\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0x\^S\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^K\^S\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-;\^S\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M^S\^U\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-k\^U\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\^V\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\^W\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0+\^W\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0y\^W\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^A\^W\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^[\^W\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-E\^W\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-r\^W\
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"\^X\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0.\^X\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0<\^X\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0f\^X\0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\^X\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M^T\^X\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-F\
\^X\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-t\^X\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^^\^Y\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0005\^Y\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\^Y\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^C\^Z\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M^E\^Z\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M^L\^Z\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^R\^Z\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-/\^Z\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0S\^[\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0a\^[\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\^[\0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^A\^[\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M^N\^[\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-5\
\^[\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-?\^[\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^K\^]\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-'\^]\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-G\
\^]\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-^\^]\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-z\^]\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0-\^^\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-Z\^^\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-i\^^\0\0\^R\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0%\^_\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M^Z\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-!\^_\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-*\^_\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-3\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-8\^_\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M->\^_\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-K\^_\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-U\^_\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M^R \0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d!\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^X!\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-(!\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-0!\
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-9!\0\0\^R\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M-d"\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-q"\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^E#\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 #\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^U#\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0000#\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0006#\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0L#\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-?$\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-D$\0\0\^R\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-_$\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-x$\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^N%\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$%\0\0\^R\0\0\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x15d000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4653112778752/0x43b63226000
58849 wish8.5 CALL mmap(0x43b63226000,0x59000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4653112778752/0x43b63226000
58849 wish8.5 CALL mmap(0x43b6327f000,0xe2000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x58000)
58849 wish8.5 RET mmap 4653113143296/0x43b6327f000
58849 wish8.5 CALL mmap(0x43b63361000,0x12000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x139000)
58849 wish8.5 RET mmap 4653114068992/0x43b63361000
58849 wish8.5 CALL mmap(0x43b63373000,0xf000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x14a000)
58849 wish8.5 RET mmap 4653114142720/0x43b63373000
58849 wish8.5 CALL mmap(0x43b63382000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653114204160/0x43b63382000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac81efd,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/lib/libc.so.100.3"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1029, ino=2099638, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=8423928, atime=1731660585<"Nov 15 08:49:45 2024">.681588815, mtime=1731660224<"Nov 15 08:43:44 2024">.671460501, ctime=1731660224<"Nov 15 08:43:44 2024">.671460501, size=3810520, blocks=7488, blksize=16384, flags=0x0, gen=0x44dc2a87 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\M^X\^X:\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0001\0/\0\^F\0\0\0\
\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\
\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Dp\^C\0\0\0\0\0\M^Dp\^C\0\0\0\0\
\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\M^Pp\^C\0\0\0\0\0\M^P\M^@\^C\0\0\
\0\0\0\M^P\M^@\^C\0\0\0\0\0 h\v\0\0\0\0\0 h\v\0\0\0\0\0\0\^P\0\0\0\0\0\
\0\^A\0\0\0\^F\0\0\0\M-0\M-X\^N\0\0\0\0\0\M-0\M-x\^N\0\0\0\0\0\M-0\M-x\
\^N\0\0\0\0\0\M^XW\0\0\0\0\0\0\M^XW\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\
\0\0\^F\0\0\0P0\^O\0\0\0\0\0P`\^O\0\0\0\0\0P`\^O\0\0\0\0\0\M-0/\0\0\0\
\0\0\0\M^Q\a\^A\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0\M-P-\^O\0\
\0\0\0\0\M-PM\^O\0\0\0\0\0\M-PM\^O\0\0\0\0\0@\^A\0\0\0\0\0\0@\^A\0\0\0\
\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\M-0\M-X\^N\0\0\0\0\0\M-0\M-x\^N\
\0\0\0\0\0\M-0\M-x\^N\0\0\0\0\0\M^XW\0\0\0\0\0\0Pg\0\0\0\0\0\0\^A\0\0\
\0\0\0\0\0P\M-etd\^D\0\0\0\M-P$\^B\0\0\0\0\0\M-P$\^B\0\0\0\0\0\M-P$\^B\
\0\0\0\0\0$7\0\0\0\0\0\0$7\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-e\M-[\M-#e\
\^F\0\0\0\0P\^O\0\0\0\0\0\0\M^@\^O\0\0\0\0\0\0\M^@\^O\0\0\0\0\0\0\^P\0\
\0\0\0\0\0\0\^P\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0\M-0\
\M-X\^N\0\0\0\0\0\M-0\M-x\^N\0\0\0\0\0\M-0\M-x\^N\0\0\0\0\0\M-P4\0\0\0\
\0\0\0\M-P4\0\0\0\0\0\0\b\0\0\0\0\0\0\0\M-i\M-[\M-#e\^D\0\0\0\M-d\M^A5\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-p\^F\0\0\0\0\0\0\M-p\^F\0\
\0\0\0\0\0\^D\0\0\0\0\0\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\
\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\
\^A\0\0\0OpenBSD\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M^C\^N\0\0"\0\v\0\M-P\M^K\^E\0\0\0\0\0000\0\0\0\0\0\0\0O\^T\0\0"\
\0\v\0\M-0\^W\^F\0\0\0\0\0`\0\0\0\0\0\0\0\M-n\^]\0\0\^R\0\v\0\M-PV\a\0\
\0\0\0\0000\0\0\0\0\0\0\0003?\0\0"\0\v\0\M-P\r\f\0\0\0\0\0\^U\0\0\0\0\
\0\0\0\M-N\^V\0\0\^R\0\v\0\M^Pp\^F\0\0\0\0\0P\0\0\0\0\0\0\0\M-L\^_\0\0\
"\0\v\0pu\a\0\0\0\0\0\240\0\0\0\0\0\0\0\M-#!\0\0"\0\v\0\M-p\M-O\a\0\0\
\0\0\0m\0\0\0\0\0\0\0\^T/\0\0"\0\v\0\240\M-` \0\0\0\0\0P\^A\0\0\0\0\
\0\0G\^Q\0\0"\0\v\0\0\M-W\^E\0\0\0\0\0\M-`\^A\0\0\0\0\0\0\M-]\^Z\0\0"\
\0\v\0\M-P\^U\a\0\0\0\0\0K\0\0\0\0\0\0\0y!\0\0"\0\v\0\M-P\M-E\a\0\0\0\
\0\0p\0\0\0\0\0\0\0IA\0\0\^R\0\v\0P\M-F\f\0\0\0\0\0\M^@\0\0\0\0\0\0\0,\
\^R\0\0\^R\0\v\0\240\M-h\^E\0\0\0\0\0M\0\0\0\0\0\0\0\^Q\r\0\0"\0\v\0\
\M^@b\^E\0\0\0\0\0\M-@\0\0\0\0\0\0\0@'\0\0\^R\0\v\0\M-Po\b\0\0\0\0\0P\
\0\0\0\0\0\0\0\M-F8\0\0\^R\0\v\0pC\v\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M-A\
\^A\0\0"\0\v\0\240\M^T\^C\0\0\0\0\0M\0\0\0\0\0\0\0z\^_\0\0"\0\v\0\M-0v\
\a\0\0\0\0\0\240\0\0\0\0\0\0\0\M-v\^A\0\0\^R\0\v\0@\M-/\^C\0\0\0\0\000\
0\0\0\0\0\0\0\0\M-*\^T\0\0\^R\0\v\0\M-P%\^F\0\0\0\0\0\M-0\0\0\0\0\0\0\
\0J\^V\0\0\^R\0\v\0000n\^F\0\0\0\0\0\M-"\0\0\0\0\0\0\0\M-m\^Z\0\0"\0\v\
\0\M^P\^V\a\0\0\0\0\0p\0\0\0\0\0\0\0\M-q \0\0\^R\0\v\0\M-@\M-,\a\0\0\0\
\0\0M\0\0\0\0\0\0\0\M-k)\0\0"\0\v\0\^Pa \0\0\0\0\0M\0\0\0\0\0\0\0\^F*\
\0\0\^R\0\v\0\M-pe \0\0\0\0\0M\0\0\0\0\0\0\0pA\0\0"\0\v\0p\M-J\f\
\0\0\0\0\0\^N\0\0\0\0\0\0\0\^QE\0\0"\0\v\0`x\r\0\0\0\0\0p\0\0\0\0\0\0\
\0D\^E\0\0"\0\v\0000\M-}\^C\0\0\0\0\0\^E\^A\0\0\0\0\0\0q\^[\0\0\^R\0\v\
\0`\^^\a\0\0\0\0\0\M-0\0\0\0\0\0\0\0R6\0\0"\0\v\0\M-0\r\v\0\0\0\0\0`\0\
\0\0\0\0\0\0<\^E\0\0"\0\v\0\^P\M-}\^C\0\0\0\0\0\^R\0\0\0\0\0\0\0\M-m\
\0\0"\0\v\0\M-P\M-4\^D\0\0\0\0\0\M-&\^A\0\0\0\0\0\0)
\0\0\^R\0\v\0\M^@\M-8\^D\0\0\0\0\0`\0\0\0\0\0\0\0004$\0\0\^R\0\v\0 \^E\
\b\0\0\0\0\0`\0\0\0\0\0\0\0\M^N&\0\0"\0\v\0\M-P<\b\0\0\0\0\0M\0\0\0\0\
\0\0\0.-\0\0"\0\v\0\240\M^\ \0\0\0\0\0p\0\0\0\0\0\0\0\M-#4\0\0"\0\
\v\0\M-0\M^W
\0\0\0\0\0p\^A\0\0\0\0\0\0aK\0\0"\0\v\0\M-`a\^N\0\0\0\0\0\M-`\0\0\0\0\
\0\0\0\M-.\^^\0\0"\0\v\0\M-`h\a\0\0\0\0\0r\^B\0\0\0\0\0\0<(\0\0"\0\v\0\
\M-@\M-'\b\0\0\0\0\0J\0\0\0\0\0\0\0\^TA\0\0"\0\v\0\0\M-E\f\0\0\0\0\0P\
\0\0\0\0\0\0\0\^BH\0\0"\0\v\0\M-@\M-K\r\0\0\0\0\0\M^E\0\0\0\0\0\0\0c\a\
\0\0"\0\v\0PH\^D\0\0\0\0\0\M-0\0\0\0\0\0\0\0,.\0\0"\0\v\0`\M-D \0\0\0\
\0\0\M^^\^B\0\0\0\0\0\0\M-8\^E\0\0"\0\v\0\^P!\^D\0\0\0\0\0\0\^A\0\0\0\
\0\0\0\M-B!\0\0"\0\v\0\240\M-Q\a\0\0\0\0\0\M^@\0\0\0\0\0\0\0)+\0\0"\0\
\v\0`u \0\0\0\0\0\M^@\^A\0\0\0\0\0\0D2\0\0"\0\v\0P0
\0\0\0\0\0M\0\0\0\0\0\0\0\M^VG\0\0"\0\v\0p\M--\r\0\0\0\0\0\^\\0\0\0\0\
\0\0\0\M^S(\0\0"\0\v\0\M-P\M-M\b\0\0\0\0\0\M^P\^A\0\0\0\0\0\0\M-F2\0\0\
"\0\v\0\^PR
\0\0\0\0\0\^N\0\0\0\0\0\0\0\M^H8\0\0\^R\0\v\0@?\v\0\0\0\0\0\M^@\0\0\0\
\0\0\0\0\^Z9\0\0"\0\v\0pU\v\0\0\0\0\0P\^B\0\0\0\0\0\0^>\0\0"\0\v\0\240\
\M-^\v\0\0\0\0\0M\0\0\0\0\0\0\0TE\0\0"\0\v\0pw\r\0\0\0\0\0\M-`\0\0\0\0\
\0\0\0tH\0\0"\0\v\0\M^P\M-e\r\0\0\0\0\0M\0\0\0\0\0\0\0\M-tL\0\0"\0\v\0\
\M-`\M-"\^N\0\0\0\0\0\M-~\0\0\0\0\0\0\0z*\0\0"\0\v\0000r \0\0\0\
\0\0\^N\0\0\0\0\0\0\0,:\0\0\^R\0\v\0\240~\v\0\0\0\0\0\^R\0\0\0\0\0\0\0\
\M-II\0\0\^R\0\v\0`\^Y\^N\0\0\0\0\0M\0\0\0\0\0\0\0[K\0\0\^R\0\v\0Pa\^N\
\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M-c&\0\0"\0\v\0p@\b\0\0\0\0\0\^P\0\0\0\0\
\0\0\0t,\0\0\^R\0\v\0\M-0\M^T \0\0\0\0\0P\0\0\0\0\0\0\0N\b\0\0"\0\v\
\0\M-`\M^B\^D\0\0\0\0\0\M^E\0\0\0\0\0\0\0n\^S\0\0"\0\v\0p\r\^F\0\0\0\0\
\0M\0\0\0\0\0\0\0\M-/'\0\0"\0\v\0\M^@\M^Z\b\0\0\0\0\0\M-`\0\0\0\0\0\0\
\0\M^Q.\0\0\^R\0\v\0\M-p\M-K \0\0\0\0\0M\0\0\0\0\0\0\0\M-D6\0\0\^R\
\0\v\0@+\v\0\0\0\0\0@\0\0\0\0\0\0\0\^W7\0\0"\0\v\0\M^@,\v\0\0\0\0\0\
\M^P\0\0\0\0\0\0\0\M^G:\0\0"\0\v\0\M-0\M^Z\v\0\0\0\0\0>\0\0\0\0\0\0\0i\
>\0\0"\0\v\0\M-p\M-^\v\0\0\0\0\0`\0\0\0\0\0\0\0\M-6L\0\0"\0\v\0@\M^L\
\^N\0\0\0\0\0\M-X\0\0\0\0\0\0\0\M-e\^U\0\0\^R\0\v\0\M-@l\^F\0\0\0\0\0M\
\0\0\0\0\0\0\0g\^V\0\0"\0\v\0\M-`n\^F\0\0\0\0\0M\0\0\0\0\0\0\0\M-z\^\\
\0\0\^R\0\v\0\M-`F\a\0\0\0\0\0P\0\0\0\0\0\0\0\M^_\a\0\0\^R\0\v\0`S\^D\
\0\0\0\0\0000\0\0\0\0\0\0\0\M-5>\0\0"\0\v\0\M-p\M-x\v\0\0\0\0\0\M^E\0\
\0\0\0\0\0\0\^EB\0\0"\0\v\0000=\r\0\0\0\0\0\M-@\0\0\0\0\0\0\0\^C\^A\0\
\0"\0\v\0\M-0\M^J\^C\0\0\0\0\0p\0\0\0\0\0\0\0\M-E1\0\0"\0\v\0P
\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-16\0\0\^R\0\v\0\0+\v\0\0\0\0\0@\0\0\0\0\
\0\0\0\M-,A\0\0\^R\0\v\0000\M-i\f\0\0\0\0\0@\0\0\0\0\0\0\0b\^R\0\0"\0\
\v\0 \M-u\^E\0\0\0\0\0M\0\0\0\0\0\0\0\M^X\^\\0\0"\0\v\0000E\a\0\0\0\0\
\0M\0\0\0\0\0\0\0 \^_\0\0"\0\v\0\M^@p\a\0\0\0\0\0\M-P\0\0\0\0\0\
\0\0\M-u&\0\0\^R\0\v\0@W\b\0\0\0\0\0000\0\0\0\0\0\0\0\M-&'\0\0"\0\v\0`\
\M^[\b\0\0\0\0\0\M-`\0\0\0\0\0\0\0\M-WG\0\0"\0\v\0\^P\M-2\r\0\0\0\0\0\
\M^E\0\0\0\0\0\0\0\^Z1\0\0\^R\0\v\0\M-p\^S
\0\0\0\0\0\M^]\0\0\0\0\0\0\0\M-z$\0\0"\0\v\0`\^P\b\0\0\0\0\0l\0\0\0\0\
\0\0\0\M-j'\0\0\^R\0\v\0 \M-$\b\0\0\0\0\0@\0\0\0\0\0\0\0sC\0\0"\0\v\0P\
Y\r\0\0\0\0\0-\0\0\0\0\0\0\0}\^E\0\0\^R\0\v\0P\^N\^D\0\0\0\0\0\M-P\0\0\
\0\0\0\0\0\^^\^P\0\0\^R\0\v\0\M-0\M-<\^E\0\0\0\0\0@\0\0\0\0\0\0\0\M-d%\
\0\0"\0\v\0\0-\b\0\0\0\0\0`\r\0\0\0\0\0\0\M-%A\0\0\^R\0\v\0\M-p\M-V\f\
\0\0\0\0\0=\^R\0\0\0\0\0\0\a\^P\0\0\^R\0\v\0\M-@\M-4\^E\0\0\0\0\0@\^E\
\0\0\0\0\0\0\M-N"\0\0\^R\0\v\0`\M-`\a\0\0\0\0\0\^P\^A\0\0\0\0\0\0VA\0\
\0"\0\v\0\M-P\M-F\f\0\0\0\0\0\M-@\^A\0\0\0\0\0\0\M-v\^E\0\0\^R\0\v\0@"\
\^D\0\0\0\0\0M\0\0\0\0\0\0\0F\^P\0\0"\0\v\0`\M->\^E\0\0\0\0\0M\0\0\0\0\
\0\0\0_\^U\0\0"\0\v\0pM\^F\0\0\0\0\0\240\^A\0\0\0\0\0\0\^O\^X\0\0\^R\0\
\v\0\M-@\M^L\^F\0\0\0\0\0M\0\0\0\0\0\0\0\M-,H\0\0\^R\0\v\0\0\M-q\r\0\0\
\0\0\0006\0\0\0\0\0\0\0hJ\0\0"\0\v\0\M-`0\^N\0\0\0\0\0\240\^B\0\0\0\0\
\0\0\M-~\^Q\0\0"\0\v\0\0\M-e\^E\0\0\0\0\0M\0\0\0\0\0\0\0C(\0\0"\0\v\0\
\^P\M-(\b\0\0\0\0\0`\0\0\0\0\0\0\0\M^A\0\0\0"\0\v\0\^P\M^F\^C\0\0\0\0\
\0M\0\0\0\0\0\0\0j\^N\0\0"\0\v\0\240\M^K\^E\0\0\0\0\0000\0\0\0\0\0\0\
\0005\^]\0\0"\0\v\0\M^PH\a\0\0\0\0\0\M-`\^A\0\0\0\0\0\0L,\0\0\^R\0\v\0\
P\M^P \0\0\0\0\0000\0\0\0\0\0\0\0\^EN\0\0"\0\v\0 \M-4\^N\0\0\0\0\0p\
\0\0\0\0\0\0\0\M^I\^[\0\0\^Q\0\^O\0\M-p>\^O\0\0\0\0\0\M^P\0\0\0\0\0\0\
\0\M-+%\0\0"\0\v\0P+\b\0\0\0\0\0M\0\0\0\0\0\0\0[\^A\0\0"\0\v\0000\M^N\
\^C\0\0\0\0\0p\0\0\0\0\0\0\0)\^_\0\0"\0\v\0`r\a\0\0\0\0\0\M^A\0\0\0\0\
\0\0\0\^X\v\0\0\^R\0\v\0\M-p\^\\^E\0\0\0\0\0P\^A\0\0\0\0\0\0\M-K%\0\0"\
\0\v\0`,\b\0\0\0\0\0M\0\0\0\0\0\0\0z2\0\0"\0\v\0\0007
\0\0\0\0\0F\^A\0\0\0\0\0\0,@\0\0\^R\0\v\0\M-Ph\f\0\0\0\0\0\M^@\0\0\0\0\
\0\0\0HN\0\0"\0\v\0\240\M-@\^N\0\0\0\0\0\^P\^A\0\0\0\0\0\0m.\0\0\^R\0\
\v\0\M-p\M-H \0\0\0\0\0\M^V\^B\0\0\0\0\0\0\M^H>\0\0"\0\v\0p\M-t\v\0\
\0\0\0\0\M-d\0\0\0\0\0\0\0006D\0\0\^R\0\v\0pf\r\0\0\0\0\0\^S\0\0\0\0\0\
\0\0"\^E\0\0\^R\0\v\0\240\M-y\^C\0\0\0\0\0\^U\0\0\0\0\0\0\0\M-G \0\0"\
\0\v\0\240\M-1\^D\0\0\0\0\0\M-P\0\0\0\0\0\0\0\M^C\^O\0\0"\0\v\0\M^@\
\M^M\^E\0\0\0\0\0000\0\0\0\0\0\0\0>.\0\0"\0\v\0 \M-? \0\0\0\0\0P\^B\
\0\0\0\0\0\0b8\0\0"\0\v\0000<\v\0\0\0\0\0005\^A\0\0\0\0\0\0\M-H<\0\0"\
\0\v\0@\M-J\v\0\0\0\0\0<\^B\0\0\0\0\0\0002H\0\0"\0\v\0\M-0\M-Q\r\0\0\0\
\0\0%\^D\0\0\0\0\0\0\M-1
\0\0"\0\v\0@\^R\^E\0\0\0\0\0\M^G\^B\0\0\0\0\0\0\^Z\f\0\0\^R\0\v\0P7\^E\
\0\0\0\0\0000\0\0\0\0\0\0\0;\^^\0\0"\0\v\0PX\a\0\0\0\0\0\M-H\0\0\0\0\0\
\0\0\M^U&\0\0\^R\0\v\0 =\b\0\0\0\0\0M\0\0\0\0\0\0\0\M-s*\0\0"\0\v\0\
\M-pr \0\0\0\0\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x107000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4652835966976/0x43b52a29000
58849 wish8.5 CALL mmap(0x43b52a29000,0x38000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4652835966976/0x43b52a29000
58849 wish8.5 CALL mmap(0x43b52a61000,0xb7000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x37000)
58849 wish8.5 RET mmap 4652836196352/0x43b52a61000
58849 wish8.5 CALL mmap(0x43b52b18000,0x7000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xed000)
58849 wish8.5 RET mmap 4652836945920/0x43b52b18000
58849 wish8.5 CALL mmap(0x43b52b1f000,0x3000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xf3000)
58849 wish8.5 RET mmap 4652836974592/0x43b52b1f000
58849 wish8.5 CALL mmap(0x43b52b22000,0xe000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652836986880/0x43b52b22000
58849 wish8.5 CALL mmap(0,0x6f0,0x1<PROT_READ>,0x2<MAP_PRIVATE>,3,0x3581e4)
58849 wish8.5 RET mmap 4650245304804/0x43ab83831e4
58849 wish8.5 CALL munmap(0x43ab83831e4,0x6f0)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL pinsyscalls(0x43b52a61000,0xb7000,0x43b6e2c8800,0x14b)
58849 wish8.5 RET pinsyscalls 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4649866338304/0x43aa1a1a000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650115551232/0x43ab07c5000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653427609600/0x43b75e65000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652908822528/0x43b56fa4000
58849 wish8.5 CALL open(0x43b3ac8230e,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/lib/libz.so.7.1"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1029, ino=2099556, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=8435072, atime=1731660548<"Nov 15 08:49:08 2024">.931459695, mtime=1727706818<"Sep 30 15:33:38 2024">.333021722, ctime=1731076718<"Nov 8 14:38:38 2024">.194188576, size=297880, blocks=640, blksize=16384, flags=0x0, gen=0xc25e5f7d }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0X\M^B\^D\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0%\0#\0\^F\0\0\0\^D\
\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\0\0\
\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0D}\0\0\0\0\0\0D}\0\0\0\0\0\0\0\^P\0\0\
\0\0\0\0\^A\0\0\0\^A\0\0\0P}\0\0\0\0\0\0P\M^M\0\0\0\0\0\0P\M^M\0\0\0\0\
\0\0 "\^A\0\0\0\0\0 "\^A\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0p\
\M^_\^A\0\0\0\0\0p\M-?\^A\0\0\0\0\0p\M-?\^A\0\0\0\0\0(\b\0\0\0\0\0\0(\
\b\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\M^X\M-'\^A\0\0\0\0\0\
\M^X\M-W\^A\0\0\0\0\0\M^X\M-W\^A\0\0\0\0\0\b\0\0\0\0\0\0\0\r\0\0\0\0\0\
\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0\M-p\M-$\^A\0\0\0\0\0\M-p\M-D\
\^A\0\0\0\0\0\M-p\M-D\^A\0\0\0\0\0 \^A\0\0\0\0\0\0 \^A\0\0\0\0\0\0\b\0\
\0\0\0\0\0\0R\M-etd\^D\0\0\0p\M^_\^A\0\0\0\0\0p\M-?\^A\0\0\0\0\0p\M-?\
\^A\0\0\0\0\0(\b\0\0\0\0\0\0\M^P\^P\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-et\
d\^D\0\0\0\0e\0\0\0\0\0\0\0e\0\0\0\0\0\0\0e\0\0\0\0\0\0\^T\^D\0\0\0\0\
\0\0\^T\^D\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0\M^X\M^_\
\^A\0\0\0\0\0\M^X\M-?\^A\0\0\0\0\0\M^X\M-?\^A\0\0\0\0\0\b\^D\0\0\0\0\0\
\0\b\^D\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\
\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\
\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\
\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\
\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\
\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\
\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^N\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^]\0\
\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0001\0\0\0 \0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M-m\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\^D\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^R\^A\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0-\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0005\
\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0J\^A\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0j\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\^A\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-;\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0H\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0n\
\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\^B\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0|\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M^R\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-Y\^C\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-&\^A\0\0\^R\0\f\0\M-0\
\M-/\0\0\0\0\0\0\M-p\0\0\0\0\0\0\0\M^K\^B\0\0\^R\0\f\0\M-p\M-r\0\0\0\0\
\0\0\M^P\0\0\0\0\0\0\0\M-.\^B\0\0\^R\0\f\0p\M-w\0\0\0\0\0\0\^N\0\0\0\0\
\0\0\0\M-*\^D\0\0\^R\0\f\0 \M-&\^A\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-0\^A\
\0\0\^R\0\f\0 \M-~\0\0\0\0\0\09\^A\0\0\0\0\0\0\M->\^B\0\0\^R\0\f\0\M-`\
\M-w\0\0\0\0\0\0`\0\0\0\0\0\0\0\M-P\^B\0\0\^R\0\f\0\M-P\M-x\0\0\0\0\0\
\0\M^P\0\0\0\0\0\0\0\^?\^C\0\0\^R\0\f\0\M-P1\^A\0\0\0\0\0\M^B\^B\0\0\0\
\0\0\0\M-`\^C\0\0\^R\0\f\0pd\^A\0\0\0\0\0`\0\0\0\0\0\0\0U\^B\0\0\^R\0\
\f\0\M-`\M-n\0\0\0\0\0\0E\0\0\0\0\0\0\0\M-g\^B\0\0\^R\0\f\0\^P\M-z\0\0\
\0\0\0\0\M^@\0\0\0\0\0\0\0\M-t\^C\0\0\^R\0\f\0Po\^A\0\0\0\0\0p-\0\0\0\
\0\0\0\M-B\0\0\0\^R\0\f\0`\M-"\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0U\^A\0\0\
\^R\0\f\0`\M^?\0\0\0\0\0\0 \^A\0\0\0\0\0\0\M-5\^B\0\0\^R\0\f\0\M^@\M-w\
\0\0\0\0\0\0`\0\0\0\0\0\0\0\M^_\^C\0\0\^R\0\f\0\M^P\\\^A\0\0\0\0\0\M^P\
\0\0\0\0\0\0\0\M-A\^A\0\0\^R\0\f\0\240\M-0\0\0\0\0\0\0000\^A\0\0\0\0\0\
\0\M-_\^B\0\0\^R\0\f\0\240\M-y\0\0\0\0\0\0p\0\0\0\0\0\0\0\M^K\^C\0\0\
\^R\0\f\0\^PY\^A\0\0\0\0\0\M^_\0\0\0\0\0\0\0\M-W\^D\0\0\^R\0\f\0\240\
\M-'\^A\0\0\0\0\0\M-S\^A\0\0\0\0\0\0_\^D\0\0\^R\0\f\0`\240\^A\0\0\0\0\
\0p\0\0\0\0\0\0\0\M^Y\^D\0\0\^R\0\f\0\M-0\M-%\^A\0\0\0\0\0p\0\0\0\0\0\
\0\0\M-T\0\0\0\^R\0\f\0000\M-#\0\0\0\0\0\0p\0\0\0\0\0\0\0b\^A\0\0\^R\0\
\f\0\^P\^O\^A\0\0\0\0\0:\^N\0\0\0\0\0\0\M^L\^A\0\0\^R\0\f\0\M-P\M-.\0\
\0\0\0\0\0\M-`\0\0\0\0\0\0\0\^[\^B\0\0\^R\0\f\0\M-P\M-m\0\0\0\0\0\0000\
\0\0\0\0\0\0\0\M-.\^C\0\0\^R\0\f\0\M-0]\^A\0\0\0\0\0\M-.\^A\0\0\0\0\0\
\0005\^D\0\0\^R\0\f\0\M^P\M^^\^A\0\0\0\0\0\M-@\0\0\0\0\0\0\0\M-.\0\0\0\
\^R\0\f\0\M^P\M-!\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0\^Y\^A\0\0\^R\0\f\0\M-`\
\M-(\0\0\0\0\0\0u\^A\0\0\0\0\0\0\M-R\^A\0\0\^R\0\f\0\M-P\M-1\0\0\0\0\0\
\0Q\^T\0\0\0\0\0\0\M-m\^A\0\0\^R\0\f\0\M-@\M-j\0\0\0\0\0\0`\^A\0\0\0\0\
\0\0\^D\^B\0\0\^R\0\f\0 \M-l\0\0\0\0\0\0`\^A\0\0\0\0\0\08\^B\0\0\^R\0\
\f\0000\M-n\0\0\0\0\0\0P\0\0\0\0\0\0\0\M^\\^B\0\0\^R\0\f\0\M-`\M-s\0\0\
\0\0\0\0\M-p\0\0\0\0\0\0\0-\^C\0\0\^R\0\f\0\M-p \^A\0\0\0\0\0\M^O\0\0\
\0\0\0\0\0\^[\^D\0\0\^R\0\f\0\M^@n\^A\0\0\0\0\0\^X\0\0\0\0\0\0\0\M-:\
\^D\0\0\^R\0\f\0\240\M-&\^A\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M^J\0\0\0\^R\0\
\f\0@\M^_\0\0\0\0\0\0\^P\0\0\0\0\0\0\0\v\^A\0\0\^R\0\f\0@\M-(\0\0\0\0\
\0\0\240\0\0\0\0\0\0\0\M-^\^A\0\0\^R\0\f\0000\M-F\0\0\0\0\0\0`\0\0\0\0\
\0\0\0\M-r\^B\0\0\^R\0\f\0\M-@\b\^A\0\0\0\0\0'\^A\0\0\0\0\0\0\^X\^C\0\
\0\^R\0\f\0\M-`\a\^A\0\0\0\0\0\M-_\0\0\0\0\0\0\0\M^B\0\0\0\^R\0\f\0\
\M-P\M^U\0\0\0\0\0\0p \0\0\0\0\0\0<\^A\0\0\^R\0\f\0\^P\M-{\0\0\0\0\0\
\0\^P\^C\0\0\0\0\0\0{\^A\0\0\^R\0\f\0\M^P\M--\0\0\0\0\0\0\M-0\0\0\0\0\
\0\0\0>\^C\0\0\^R\0\f\0\M^@
\^A\0\0\0\0\0\M-!\0\0\0\0\0\0\0\M-D\^C\0\0\^R\0\f\0\240l\^A\0\0\0\0\0\
\M-`\^A\0\0\0\0\0\0'\^B\0\0\^R\0\f\0\0\M-n\0\0\0\0\0\0000\0\0\0\0\0\0\
\0\M^S\^B\0\0\^R\0\f\0\M^@\M-s\0\0\0\0\0\0`\0\0\0\0\0\0\0\r\^B\0\0\^R\
\0\f\0\M^@\M-m\0\0\0\0\0\0P\0\0\0\0\0\0\0\M-E\^B\0\0\^R\0\f\0@\M-x\0\0\
\0\0\0\0\M^P\0\0\0\0\0\0\0\M-F\^D\0\0\^R\0\f\0000\M-'\^A\0\0\0\0\0p\0\
\0\0\0\0\0\0\^C\^C\0\0\^R\0\f\0\M^@\0\^A\0\0\0\0\0\M^U\^B\0\0\0\0\0\0\
\M^W\^C\0\0\^R\0\f\0\M-`[\^A\0\0\0\0\0\M-'\0\0\0\0\0\0\0\M-e\0\0\0\^R\
\0\f\0\240\M-#\0\0\0\0\0\0p\0\0\0\0\0\0\0M\^C\0\0\^R\0\f\0000\v\^A\0\0\
\0\0\0\M^O\0\0\0\0\0\0\0\M-i\^C\0\0\^R\0\f\0\0\M^^\^A\0\0\0\0\0\M^P\0\
\0\0\0\0\0\0(\^D\0\0\^R\0\f\0\240n\^A\0\0\0\0\0\M-0\0\0\0\0\0\0\0J\0\0\
\0\^R\0\f\0p\M^S\0\0\0\0\0\0\^P\0\0\0\0\0\0\0\M-}\0\0\0\^R\0\f\0@\M-&\
\0\0\0\0\0\0\0\^A\0\0\0\0\0\0g\^B\0\0\^R\0\f\0000\M-o\0\0\0\0\0\0\^S\0\
\0\0\0\0\0\0\M^B\^B\0\0\^R\0\f\0\M-P\M-r\0\0\0\0\0\0\^V\0\0\0\0\0\0\0\
\M-%\^B\0\0\^R\0\f\0\M-P\M-t\0\0\0\0\0\0\M^O\^A\0\0\0\0\0\0f\^C\0\0\^R\
\0\f\0`\^_\^A\0\0\0\0\0\M^_\0\0\0\0\0\0\0J\^D\0\0\^R\0\f\0P\M^_\^A\0\0\
\0\0\0\^P\^A\0\0\0\0\0\0@\0\0\0\^R\0\f\0\M-`\M^N\0\0\0\0\0\0\M^P\^D\0\
\0\0\0\0\0\M-w\^A\0\0\^R\0\f\0\M-@\M-z\0\0\0\0\0\0P\0\0\0\0\0\0\0R\0\0\
\0\^R\0\f\0\M^@\M^S\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\240\0\0\0\^R\0\f\0p\
\240\0\0\0\0\0\0 \^A\0\0\0\0\0\0\M^D\^A\0\0\^R\0\f\0@\M-.\0\0\0\0\0\0\
\M^P\0\0\0\0\0\0\0?\^B\0\0\^Q\0\^U\0\0\M-D\^A\0\0\0\0\0P\0\0\0\0\0\0\0\
\M-Y\^B\0\0\^R\0\f\0`\M-y\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-|\^C\0\0\^R\0\f\
\0Pi\^A\0\0\0\0\0\0\^A\0\0\0\0\0\0]\^B\0\0\^R\0\f\0\M-Pd\^A\0\0\0\0\0\
\M-P\0\0\0\0\0\0\0\M-7\^C\0\0\^R\0\f\0Pj\^A\0\0\0\0\0@\^A\0\0\0\0\0\0\
\M^X\^A\0\0\^R\0\f\0\0\r\^A\0\0\0\0\0\^O\^B\0\0\0\0\0\0\M-&\^C\0\0\^R\
\0\f\0 ]\^A\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M-c\^D\0\0\^R\0\f\0\M^@\M-)\^A\
\0\0\0\0\0@\0\0\0\0\0\0\0\M-t\0\0\0\^R\0\f\0\M^P\M-%\0\0\0\0\0\0\M-+\0\
\0\0\0\0\0\0\M-R\^C\0\0\^R\0\f\0000a\^A\0\0\0\0\0\M-P\^A\0\0\0\0\0\0\r\
\^D\0\0\^R\0\f\0\M^Pk\^A\0\0\0\0\0\^P\^A\0\0\0\0\0\0b\0\0\0\^R\0\f\0\
\M^P\M^T\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\M^P\0\0\0\^R\0\f\0P\M^_\0\0\0\0\
\0\0 \^A\0\0\0\0\0\0r\^C\0\0\^R\0\f\0\0 \^A\0\0\0\0\0\M-H\^A\0\0\0\0\0\
\0t\0\0\0\^R\0\f\0\240\M^U\0\0\0\0\0\0000\0\0\0\0\0\0\0Y\^C\0\0\^R\0\f\
\0\M-@\v\^A\0\0\0\0\0@\^A\0\0\0\0\0\0p\^D\0\0\^R\0\f\0\M-P\240\^A\0\0\
\0\0\0\240\^B\0\0\0\0\0\0|\^D\0\0\^R\0\f\0p\M-#\^A\0\0\0\0\0p\0\0\0\0\
\0\0\0\M^M\^D\0\0\^R\0\f\0\M-`\M-#\^A\0\0\0\0\0\M-P\^A\0\0\0\0\0\0\^V\
\0\0\0\^V\0\0\0 \0\0\0\^Z\0\0\0\0\0\^B\0\^D\0\0\0\0\b\bA\^N\b\^D\^P\^D\
\0\0\^D\0\M^D\0\0\^E\^A\0\0\0\^P\^B\^A\b!\0\^P\^D\0\0\0\M^@\b\0\^D\0 \
\M-$\M^@\0\^P\^P\0\0 \^D\^A\0\^P\M^C\0\0\0\0\0\0\0 \0\0\0\0\^P\0\0\^B\
\0\0\^B\0\0\0\0\0\0\0\0\0\0\^A\^AB\0\0\^P\M^B\^A\^A.\^A"\^A\^B\0\0\0\0\
\^B\0\0\0\0\^B\0\0\0\0 \0\^P\0\0\0\b\0"\M-@\^D\0\0\^BA\0\b\^A\0@@\0\0\
\0\0\0\0\b\0\^A\0\0\0\0\0\0\0\^A\0\^B\0\^Q\0\0\0A\0\M^P\^D\M^B \^P\0(\
\^D\0\0\M^@\^P\0\^A\M^Q\^Q@\0@H\M^R\M^@\^A\^D\0\0\0\0\^P\0\^A\0\^P\M^@\
\0\0\0\^P\^D\^C\b\^C\^AK\^P\^O\0\^D@\^A\^P\0\0 \^P\0 \0\^P\b\0\0\
\b\0\0\0\b\0\0\0\0\0\0\0\^P\b\M^@\0\0\0\^B\0\0!\0\0\0\0\0\0\0\
\0\^V\0\0\0\^Z\0\0\0\^_\0\0\0"\0\0\0&\0\0\0*\0\0\0,\0\0\0002\0\0\0<\0\
\0\0A\0\0\0F\0\0\0H\0\0\0K\0\0\0M\0\0\0Q\0\0\0X\0\0\0Z\0\0\0`\0\0\0b\0\
\0\0e\0\0\0h\0\0\0k\0\0\0\M-2\M^AY0\^\\M-FS \M-.\M-U\^B\^Asi\^V,p\M-.c\
E\M-vb\^C\^A\f+\M-MC\^Tj\M-X\M-qa\^Na*\M-|\^E@ \M-V\M-"\M-w" \M-&l\
\M^^\M-v\M^Z\M-%F\^\\M-+\M-o-\M-`\^ChO C\M-|\0\M-lP'\M-c\M^P\M^Mg \
\M-BH\^B\^AG\M-d\^S\M-lP\M-J\M^I\M-'\M-o+\M^\\M-I|\M-n\M-'\^Q\M^Z\b\
\M^K\b\^Vd`\M-x\^\qD6\M^L5]R\M^_\M-Vc\^D\M-`;x\M^F.\M^]q\M-p\M-XD\^F\
\M-1"t\M-]B\M-P9\^V@(s\M^U)n\M-5\M-CJ.}\M-R"z\M-GT\M-R\M-sN\f\M-1"\M-)\
>\^O\M^Rv\^A\^AP\M-v\a\M^A"\M-M\^D\M-&qV\M-r\M-OZ\M^F\M^M\M-Y~9\M^D\
\M-Wx\v\M-}F\M->E7\M-Nm\M-1\M-m\^\\M-l\M-r*\M-D!S\M^I&"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x1e000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4650979442688/0x43ae3fa4000
58849 wish8.5 CALL mmap(0x43ae3fa4000,0x8000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4650979442688/0x43ae3fa4000
58849 wish8.5 CALL mmap(0x43ae3fac000,0x13000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x7000)
58849 wish8.5 RET mmap 4650979475456/0x43ae3fac000
58849 wish8.5 CALL mmap(0x43ae3fbf000,0x2000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x19000)
58849 wish8.5 RET mmap 4650979553280/0x43ae3fbf000
58849 wish8.5 CALL mmap(0x43ae3fc1000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x1a000)
58849 wish8.5 RET mmap 4650979561472/0x43ae3fc1000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac8220d,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/lib/libpthread.so.27.1"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1029, ino=2099546, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=8433272, atime=1731660548<"Nov 15 08:49:08 2024">.921459436, mtime=1727706817<"Sep 30 15:33:37 2024">.473021808, ctime=1731076718<"Nov 8 14:38:38 2024">.124188479, size=124184, blocks=244, blksize=16384, flags=0x0, gen=0xc65e1df1 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\^X\M-\\^A\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0$\0"\0\^F\0\0\0\
\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\
\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^LB\0\0\0\0\0\0\M^LB\0\0\0\0\0\0\
\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\M^PB\0\0\0\0\0\0\M^PR\0\0\0\0\0\0\
\M^PR\0\0\0\0\0\0000E\0\0\0\0\0\0000E\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\
\0\0\0\^F\0\0\0\M-@\M^G\0\0\0\0\0\0\M-@\M-'\0\0\0\0\0\0\M-@\M-'\0\0\0\
\0\0\0(\a\0\0\0\0\0\0(\a\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\
\0\M-h\M^N\0\0\0\0\0\0\M-h\M->\0\0\0\0\0\0\M-h\M->\0\0\0\0\0\0X\0\0\0\
\0\0\0\0\M^X\^A\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0x\M^K\0\
\0\0\0\0\0x\M-+\0\0\0\0\0\0x\M-+\0\0\0\0\0\0000\^A\0\0\0\0\0\0000\^A\0\
\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\M-@\M^G\0\0\0\0\0\0\M-@\M-'\
\0\0\0\0\0\0\M-@\M-'\0\0\0\0\0\0(\a\0\0\0\0\0\0@\b\0\0\0\0\0\0\^A\0\0\
\0\0\0\0\0P\M-etd\^D\0\0\0\M^P.\0\0\0\0\0\0\M^P.\0\0\0\0\0\0\M^P.\0\0\
\0\0\0\0\M^T\^C\0\0\0\0\0\0\M^T\^C\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\
\M-[\M-#e\^F\0\0\0\M-h\M^G\0\0\0\0\0\0\M-h\M-'\0\0\0\0\0\0\M-h\M-'\0\0\
\0\0\0\0\M^P\^C\0\0\0\0\0\0\M^P\^C\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\
\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\
\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\
\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\
\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\
\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\
\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\
\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\
\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\^A\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^N\0\0\0 \0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\^]\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0001\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^\0\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0k\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0s\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^I\0\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^_\0\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M-7\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-D\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-S\0\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-]\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-i\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-t\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0+\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0001\^A\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0007\^A\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0b\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0s\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^@\^A\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^O\^A\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M-$\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\^E\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \^B\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-&\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-9\
\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-+\^C\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-r\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\^]\^D\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0X\^D\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\^D\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0J\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0P\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^\^E\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0p\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0u\^E\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M^Z\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M--\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-?\^E\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-U\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^W\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\
\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^T\^F\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^[\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-&\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-/\
\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-4\^F\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-:\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-B\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-H\
\^F\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-g\^F\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0006\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-9\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-J\b\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-Y\b\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-n\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0005\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-Z\^A\0\0\^R\
\0\f\0\240`\0\0\0\0\0\0`\0\0\0\0\0\0\0004\^D\0\0\^R\0\f\0@h\0\0\0\0\0\
\0P\0\0\0\0\0\0\0\M^I\^D\0\0\^R\0\f\0000j\0\0\0\0\0\0\M^@\0\0\0\0\0\0\
\0s\b\0\0\^R\0\f\0000\M^G\0\0\0\0\0\0000\0\0\0\0\0\0\0- \0\0\^R\0\f\0\
\M^@\M^J\0\0\0\0\0\0@\0\0\0\0\0\0\0{ \0\0\^R\0\f\0000\M^K\0\0\0\0\0\
\0@\0\0\0\0\0\0\0\M-X \0\0\^R\0\f\0\M-`\M^K\0\0\0\0\0\0000\0\0\0\0\0\
\0\0\M-1
\0\0\^R\0\f\0 \M^N\0\0\0\0\0\0@\0\0\0\0\0\0\0%\^B\0\0\^R\0\f\0\M-pa\0\
\0\0\0\0\0000\0\0\0\0\0\0\0u\^D\0\0\^R\0\f\0\M-Pi\0\0\0\0\0\0`\0\0\0\0\
\0\0\0\0 \0\0\^R\0\f\0\M-`\M^I\0\0\0\0\0\0@\0\0\0\0\0\0\0q\^F\0\
\0\^R\0\f\0\M-`{\0\0\0\0\0\0K\^A\0\0\0\0\0\0\M-G\^A\0\0\^R\0\f\0\M-p_\
\0\0\0\0\0\0J\0\0\0\0\0\0\0\M-\\^F\0\0\^R\0\f\0@\M^A\0\0\0\0\0\0\M^@\0\
\0\0\0\0\0\0o\^C\0\0\^R\0\f\0\M^@e\0\0\0\0\0\0p\0\0\0\0\0\0\0\M^V\^C\0\
\0\^R\0\f\0Pf\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0004\^E\0\0\^R\0\f\0\M-pn\0\
\0\0\0\0\0\M-0\0\0\0\0\0\0\0\M-j\^E\0\0\^R\0\f\0Pt\0\0\0\0\0\0\M-,\0\0\
\0\0\0\0\0\M-R\a\0\0\^R\0\f\0\M-p\M^C\0\0\0\0\0\0000\0\0\0\0\0\0\0\M^U
\0\0\^R\0\f\0\M-p\M^M\0\0\0\0\0\0000\0\0\0\0\0\0\0S\^A\0\0\^R\0\f\0\
\M^P\\\0\0\0\0\0\0\M^@\^B\0\0\0\0\0\0\M-^\^C\0\0\^R\0\f\0\M-0g\0\0\0\0\
\0\0004\0\0\0\0\0\0\0=\^F\0\0\^R\0\f\0\M^Px\0\0\0\0\0\0}\0\0\0\0\0\0\0\
\^?\^F\0\0\^R\0\f\0000}\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0003
\0\0\^R\0\f\0\240\M^L\0\0\0\0\0\0p\0\0\0\0\0\0\0\a\v\0\0\^R\0\f\0\M-P\
\M^N\0\0\0\0\0\0P\0\0\0\0\0\0\0\M-g\^B\0\0\^R\0\f\0\0d\0\0\0\0\0\0P\0\
\0\0\0\0\0\0R\^F\0\0\^R\0\f\0\M-Py\0\0\0\0\0\0`\0\0\0\0\0\0\0_\^F\0\0\
\^R\0\f\0000z\0\0\0\0\0\0p\0\0\0\0\0\0\0\^C\^E\0\0\^R\0\f\0\M-0n\0\0\0\
\0\0\0\^X\0\0\0\0\0\0\0\r\^A\0\0\^R\0\f\0pY\0\0\0\0\0\0`\^A\0\0\0\0\0\
\0\^C\^C\0\0\^R\0\f\0Pd\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-n\^F\0\0\^R\0\f\0\
\M-@\M^A\0\0\0\0\0\0`\0\0\0\0\0\0\0?\a\0\0\^R\0\f\0\M^P\M^B\0\0\0\0\0\
\0@\0\0\0\0\0\0\0]\a\0\0\^R\0\f\0\^P\M^F\0\0\0\0\0\0p\0\0\0\0\0\0\0?\b\
\0\0\^R\0\f\0\M^@\M^F\0\0\0\0\0\0000\0\0\0\0\0\0\0h\^F\0\0\^R\0\f\0\
\240z\0\0\0\0\0\0005\^A\0\0\0\0\0\0\^V
\0\0\^R\0\f\0P\M^L\0\0\0\0\0\0P\0\0\0\0\0\0\0z
\0\0\^R\0\f\0\M-@\M^M\0\0\0\0\0\0000\0\0\0\0\0\0\0S\^B\0\0\^R\0\f\0`b\
\0\0\0\0\0\0b\0\0\0\0\0\0\0'\v\0\0\^R\0\f\0\M^@\M^O\0\0\0\0\0\0\^N\0\0\
\0\0\0\0\0A\^C\0\0\^R\0\f\0\M-`d\0\0\0\0\0\0P\0\0\0\0\0\0\0\^F\a\0\0\
\^R\0\f\0 \M^B\0\0\0\0\0\0@\0\0\0\0\0\0\0\M^I\a\0\0\^R\0\f\0P\M^C\0\0\
\0\0\0\0@\0\0\0\0\0\0\0\M-n\a\0\0\^R\0\f\0 \M^D\0\0\0\0\0\0@\0\0\0\0\0\
\0\0I
\0\0\^R\0\f\0\^P\M^M\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0W\0\0\0"\0\f\0 T\0\0\
\0\0\0\0000\0\0\0\0\0\0\0X\^C\0\0\^R\0\f\0000e\0\0\0\0\0\0P\0\0\0\0\0\
\0\0D\^D\0\0\^R\0\f\0\M^Ph\0\0\0\0\0\0@\^A\0\0\0\0\0\0F\^F\0\0\^R\0\f\
\0\^Py\0\0\0\0\0\0\M-4\0\0\0\0\0\0\0\M^^\a\0\0\^R\0\f\0\M^P\M^C\0\0\0\
\0\0\0000\0\0\0\0\0\0\0\M-p\^A\0\0\^R\0\f\0\0a\0\0\0\0\0\0p\0\0\0\0\0\
\0\0 \^D\0\0\^R\0\f\0\M-pg\0\0\0\0\0\0D\0\0\0\0\0\0\0\M-R\^F\0\0\^R\
\0\f\0\M-@\M^@\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0
\b\0\0\^R\0\f\0`\M^D\0\0\0\0\0\0@\0\0\0\0\0\0\0a \0\0\^R\0\f\0\
\0\M^K\0\0\0\0\0\0000\0\0\0\0\0\0\0\M-j
\0\0\^R\0\f\0\M^P\M^N\0\0\0\0\0\0@\0\0\0\0\0\0\0\M^E\^E\0\0\^R\0\f\0Ps\
\0\0\0\0\0\0\0\^A\0\0\0\0\0\0G \0\0\^R\0\f\0\M-@\M^J\0\0\0\0\0\0@\0\0\
\0\0\0\0\0_
\0\0\^R\0\f\0\M^P\M^M\0\0\0\0\0\0000\0\0\0\0\0\0\0\f\^B\0\0\^R\0\f\0pa\
\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0l\^B\0\0\^R\0\f\0\M-Pb\0\0\0\0\0\0@\0\0\
\0\0\0\0\0\M-N\^B\0\0\^R\0\f\0\M^Pc\0\0\0\0\0\0p\0\0\0\0\0\0\0\240\^D\
\0\0\^R\0\f\0\M-0j\0\0\0\0\0\0\^T\0\0\0\0\0\0\0\M-8\^A\0\0\^R\0\f\0\
\M^P_\0\0\0\0\0\0`\0\0\0\0\0\0\0Y\b\0\0\^R\0\f\0\M-0\M^F\0\0\0\0\0\0\
\M^@\0\0\0\0\0\0\0\M^M\b\0\0\^R\0\f\0`\M^G\0\0\0\0\0\0000\0\0\0\0\0\0\
\0\M-9\^D\0\0\^R\0\f\0\M-@l\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\M-j\^D\0\0\^R\
\0\f\0\0m\0\0\0\0\0\0\^T\0\0\0\0\0\0\0D\^A\0\0\^R\0\f\0\M-`[\0\0\0\0\0\
\0\M-0\0\0\0\0\0\0\0\^B\^F\0\0\^R\0\f\0\0u\0\0\0\0\0\0\M^@\^A\0\0\0\0\
\0\0\M^K\^F\0\0\^R\0\f\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0xd000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4651607769088/0x43b096dc000
58849 wish8.5 CALL mmap(0x43b096dc000,0x5000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4651607769088/0x43b096dc000
58849 wish8.5 CALL mmap(0x43b096e1000,0x5000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x4000)
58849 wish8.5 RET mmap 4651607789568/0x43b096e1000
58849 wish8.5 CALL mmap(0x43b096e6000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x8000)
58849 wish8.5 RET mmap 4651607810048/0x43b096e6000
58849 wish8.5 CALL mmap(0x43b096e7000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x8000)
58849 wish8.5 RET mmap 4651607814144/0x43b096e7000
58849 wish8.5 CALL mmap(0x43b096e8000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651607818240/0x43b096e8000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac8282c,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libXrender.so.6.0"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103712, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=439608, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727400843<"Sep 27 02:34:03 2024">.233021748, ctime=1731076741<"Nov 8 14:39:01 2024">.664189023, size=47280, blocks=96, blksize=16384, flags=0x0, gen=0x43d92c }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0000\M-1\0\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^^\0\^\\0\^F\0\0\
\0\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\
\0\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^\&\0\0\0\0\0\0\M^\&\0\0\0\0\0\
\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\240&\0\0\0\0\0\0\2406\0\0\0\0\0\
\0\2406\0\0\0\0\0\0\0i\0\0\0\0\0\0\0i\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\
\0\0\0\^F\0\0\0\240\M^O\0\0\0\0\0\0\240\M-/\0\0\0\0\0\0\240\M-/\0\0\0\
\0\0\0\M-0\^D\0\0\0\0\0\0\M-0\^D\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\
\^F\0\0\0P\M^T\0\0\0\0\0\0P\M-D\0\0\0\0\0\0P\M-D\0\0\0\0\0\0\^P\^A\0\0\
\0\0\0\08\^A\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0\M^@\M^Q\0\
\0\0\0\0\0\M^@\M-1\0\0\0\0\0\0\M^@\M-1\0\0\0\0\0\0@\^A\0\0\0\0\0\0@\^A\
\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\240\M^O\0\0\0\0\0\0\240\
\M-/\0\0\0\0\0\0\240\M-/\0\0\0\0\0\0\M-0\^D\0\0\0\0\0\0`\^P\0\0\0\0\0\
\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0\M-x\^Z\0\0\0\0\0\0\M-x\^Z\0\0\0\0\
\0\0\M-x\^Z\0\0\0\0\0\0\M-D\^A\0\0\0\0\0\0\M-D\^A\0\0\0\0\0\0\^D\0\0\0\
\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0\M-H\M^O\0\0\0\0\0\0\M-H\M-/\0\0\0\0\0\0\
\M-H\M-/\0\0\0\0\0\0\M-8\^A\0\0\0\0\0\0\M-8\^A\0\0\0\0\0\0\b\0\0\0\0\0\
\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\
\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\
\0\0\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\
\0\0\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\
\0\0\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\
\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\
\0\^A\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\
\M-@\^D\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0o\0\0\0\^R\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0v\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M^C\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^K\0\
\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^T\0\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M--\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-5\0\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Q\^A\0\0\^R\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0`\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\
\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0q\^A\0\0\^R\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^@\^A\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M^J\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-'\^A\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\^B\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0004\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\^W\^C\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\^C\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-c\^C\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0c\^D\0\0\^Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\
\^D\0\0\^Q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^@\^D\0\0\^Q\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^Q\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M^^\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-/\
\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-=\^D\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-I\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\M-d\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-s\
\^D\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\^E\0\0\^R\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^S\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0C\^E\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\^E\0\0\
\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c\^E\0\0\^R\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0L\0\0\0\^R\0\f\00008\0\0\0\0\0\0P\^B\0\0\0\0\0\0\
\M-f\0\0\0\^R\0\f\0\240?\0\0\0\0\0\0`\^A\0\0\0\0\0\0\M-D\^A\0\0\^R\0\f\
\0000J\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0T\^B\0\0\^R\0\f\0\240U\0\0\0\0\0\0\
@\^C\0\0\0\0\0\0\M^O\^C\0\0\^R\0\f\0pq\0\0\0\0\0\0 \^B\0\0\0\0\0\0\^Y\
\^E\0\0\^R\0\f\0P\M^J\0\0\0\0\0\0p\0\0\0\0\0\0\0\M-~\0\0\0\^R\0\f\0\0A\
\0\0\0\0\0\0\M-@\^A\0\0\0\0\0\0\M-1\^B\0\0\^R\0\f\0000d\0\0\0\0\0\0\^P\
\^A\0\0\0\0\0\0\M-{\^B\0\0\^R\0\f\0\240j\0\0\0\0\0\0\0\^B\0\0\0\0\0\0\
\^^\^D\0\0\^R\0\f\0@\M^A\0\0\0\0\0\0\M^@\^B\0\0\0\0\0\0\a\0\0\0\^R\0\
\^N\0p\M^Z\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^B\^B\0\0\^R\0\f\0\M-PM\0\0\0\0\
\0\0P\^A\0\0\0\0\0\0\M-R\0\0\0\^R\0\f\0\M-0>\0\0\0\0\0\0\M-p\0\0\0\0\0\
\0\0\M-F\^B\0\0\^R\0\f\0\240g\0\0\0\0\0\0\M-`\0\0\0\0\0\0\0\M-O\^D\0\0\
\^Q\0\^X\0`\M-D\0\0\0\0\0\0\a\0\0\0\0\0\0\0\M-%\^E\0\0\^R\0\f\0\M^P\
\M^S\0\0\0\0\0\0\M-%\0\0\0\0\0\0\0\^A\0\0\0\^R\0\r\0P\M^Z\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\\\0\0\0\^R\0\f\0P\M^F\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\
\M-A\0\0\0\^R\0\f\0`=\0\0\0\0\0\0P\^A\0\0\0\0\0\0\^S\^A\0\0\^R\0\f\0\
\M-@B\0\0\0\0\0\0P\^B\0\0\0\0\0\0)\^A\0\0\^R\0\f\0\^PE\0\0\0\0\0\0\M-6\
\^B\0\0\0\0\0\0007\^D\0\0\^R\0\f\0\M-@\M^C\0\0\0\0\0\0\M^P\^B\0\0\0\0\
\0\0m\^B\0\0\^R\0\f\0\M-`X\0\0\0\0\0\0\M-0\^C\0\0\0\0\0\0\M-[\^B\0\0\
\^R\0\f\0\M^@h\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0.\^C\0\0\^R\0\f\0\240l\0\0\
\0\0\0\0\^P\^A\0\0\0\0\0\0\^D\^D\0\0\^R\0\f\0\M-@~\0\0\0\0\0\0\M^@\^B\
\0\0\0\0\0\0\M^M\^E\0\0\^R\0\f\0\0\M^S\0\0\0\0\0\0\M^P\0\0\0\0\0\0\0s\
\^C\0\0\^R\0\f\0`o\0\0\0\0\0\0\^P\^B\0\0\0\0\0\0\M^[\0\0\0\^R\0\f\0\
\M^@:\0\0\0\0\0\0\M-`\^B\0\0\0\0\0\0=\^A\0\0\^R\0\f\0@\M^K\0\0\0\0\0\0\
\M-(\^F\0\0\0\0\0\0\^T\^B\0\0\^R\0\f\0 O\0\0\0\0\0\0@\^C\0\0\0\0\0\0\\\
\^C\0\0\^R\0\f\0`n\0\0\0\0\0\0\0\^A\0\0\0\0\0\0\M^C\^B\0\0\^R\0\f\0\
\M^P\\\0\0\0\0\0\0\M-`\^C\0\0\0\0\0\0\M-+\^C\0\0\^R\0\f\0\M^Ps\0\0\0\0\
\0\0\^P\^B\0\0\0\0\0\0\M-O\^E\0\0\^R\0\f\0@\M^V\0\0\0\0\0\0P\0\0\0\0\0\
\0\0\M-.\^A\0\0\^R\0\f\0`I\0\0\0\0\0\0\M-P\0\0\0\0\0\0\0\M-q\^A\0\0\^R\
\0\f\0\M-0K\0\0\0\0\0\0 \^B\0\0\0\0\0\0\M-i\^C\0\0\^R\0\f\0000|\0\0\0\
\0\0\0\M^P\^B\0\0\0\0\0\0/\^E\0\0\^R\0\f\0\M-@\M^J\0\0\0\0\0\0\M^@\0\0\
\0\0\0\0\0;\^B\0\0\^R\0\f\0`R\0\0\0\0\0\0@\^C\0\0\0\0\0\0\M^Z\^B\0\0\
\^R\0\f\0p`\0\0\0\0\0\0\M-@\^C\0\0\0\0\0\0N\^D\0\0\^Q\0\^Y\0h\M-E\0\0\
\0\0\0\0\^X\0\0\0\0\0\0\0\M^O\^A\0\0\^R\0\f\0\M-PG\0\0\0\0\0\0\M^P\^A\
\0\0\0\0\0\0\M-]\^A\0\0\^R\0\f\0\0K\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0I\^C\
\0\0\^R\0\f\0\M-0m\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0\M-H\^C\0\0\^R\0\f\0\
\240u\0\0\0\0\0\0Q\^F\0\0\0\0\0\0s\^E\0\0\^R\0\f\0\M^@\M^R\0\0\0\0\0\0\
\M^@\0\0\0\0\0\0\0\M-=\^E\0\0\^R\0\f\0@\M^T\0\0\0\0\0\0\M-v\^A\0\0\0\0\
\0\0\M-i\^E\0\0\^R\0\f\0\M^P\M^V\0\0\0\0\0\0\M-~\^A\0\0\0\0\0\0\f\0\0\
\0(\0\0\0\^P\0\0\0\^Z\0\0\0\0\0\0\0@\0\^A\0\0\0 \M-F\0\0\0\^A\^P\0@\^A\
\0\b\0\0\M^P\M^@\^B\0@\0\0\M^@\0\b\0\0 \0\0\0\0\0\^P\^Q
\^P\0\0\b(\0\0\^B@`\^A\0A\0\M^@\0\^P \^X\0\0000\^D\0 *\^A\^P\^A\0\0\
\^A\0\M^@\0000\0\0\^A\b\0\0\0\^X\0 \0\M^@\^B\^B\0\M^@\M^R(\^P\0\M^@\^E\
\M^@\M^@ \^B\^P\M^@\M^@\^P\0\M^@\^B\0@\0\M^H\^D\M^H\0\0\^D\0\^D\0\0(\0\
\0\0.\0\0\0002\0\0\0004\0\0\08\0\0\0>\0\0\0C\0\0\0D\0\0\0H\0\0\0K\0\0\
\0O\0\0\0R\0\0\0000\M^D\r\M^[\^T\M-jbh\M-|\M--\M-9 \M-l-\M-n\M-U\M-LN\
\M-XuQ\M-*\M^F3\M-x\M^N\M-I3,\^B\M-1\M-T\M-p\M-*\M-!w\M-Q\M^@\M-2\^Q\
\M-j\M-S\M-o\^N\M^W\\\M-`\M-,N3\M-B\M-p\M-~(\M-t\^_\^Z\M-k\M^K=\M-{\
\M-]\M-M|\M-8\M^M\M-q\^NTEPbP\^^{\^B\M^Ln\M-{\M-,l\M-Eh\M^M\^U\M-#G\
\M-`\M^L
\M-d\M^BT\^_\M-;\M-r`\^E\M--rXD8h\^Qo\^B\M-h\M-[\M-7H\^\\^V\M-s\^\\M^Q\
\M-Nd\M-P\M^[~^\M-"\M-!\M-3S\M-RE|[e\M-_\M^X e\^Qy\M-HMy\240\M-yp6\^\\
\M^O\v\M-^T\M-P6|9\^F$T\M-.-\M-n\M-U\M-:[e\M-_\M-'c\M^I=\M^J\M-)}\M-Yn\
_if:\M-f,\M-u\M-n\M-nT,\M-z\^E\M-=:F\M-_\M-3\M^S\vM\M-1\M^TY\0\0\0Y\0\
\0\0J\0\0\0\0\0\0\0\^\\0\0\0M\0\0\0\^_\0\0\0:\0\0\0\^U\0\0\0B\0\0\0\^N\
\0\0\08\0\0\0X\0\0\0\0\0\0\0Q\0\0\0\0\0\0\0#\0\0\0\0\0\0\0\0\0\0\0W\0\
\0\0E\0\0\0;\0\0\0\0\0\0\0H\0\0\0\f\0\0\0G\0\0\0N\0\0\0/\0\0\0\^X\0\0\
\0L\0\0\0<\0\0\0)\0\0\0\0\0\0\0\0\0\0\0S\0\0\0K\0\0\0\0\0\0\0\0\0\0\
\0000\0\0\0V\0\0\0002\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\0\0\^R\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0T\0\0\0P\0\0\0004\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0R\0\0\0>\0\0\0\^Y\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0.\0\0\0\v\0\0\0\0\
\0\0\0'\0\0\0\0\0\0\0\^[\0\0\0\0\0\0\0@\0\0\0-\0\0\0\0\0\0\0+\0\0\0\0\
\0\0\0007\0\0\0\0\0\0\0"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0U\0\0\0?\
\0\0\0\^B\0\0\0\0\0\0\0005\0\0\0\^D\0\0\0\0\0\0\0\^^\0\0\0D\0\0\0\a\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^C\0\0\0 \0\0\0\0\0\0\0\r\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0\^]\0\0\0\0\0\0\0\^E\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\^V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0001\0\0\0\0\0\0\0\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\09\
\0\0\0\0\0\0\0*\0\0\0\0\0\0\0\^W\0\0\0%\0\0\0&\0\0\0\^O\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0A\0\0\0\^T\0\0\0\0\0\0\0(\0\0\0\0\0\0\0006\0\0\0\b\0\0\
\0003\0\0\0\^Q\0\0\0F\0\0\0C\0\0\0\0\0\0\0,\0\0\0
\0\0\0I\0\0\0\^S\0\0\0$\0\0\0O\0\0\0!\0\0\0\0_in"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0xd000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4650466836480/0x43ac56c8000
58849 wish8.5 CALL mmap(0x43ac56c8000,0x3000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4650466836480/0x43ac56c8000
58849 wish8.5 CALL mmap(0x43ac56cb000,0x7000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2000)
58849 wish8.5 RET mmap 4650466848768/0x43ac56cb000
58849 wish8.5 CALL mmap(0x43ac56d2000,0x2000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x8000)
58849 wish8.5 RET mmap 4650466877440/0x43ac56d2000
58849 wish8.5 CALL mmap(0x43ac56d4000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x9000)
58849 wish8.5 RET mmap 4650466885632/0x43ac56d4000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac82aa2,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libfreetype.so.30.4"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103728, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=443048, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727401610<"Sep 27 02:46:50 2024">.523023772, ctime=1731076741<"Nov 8 14:39:01 2024">.784188772, size=939192, blocks=1888, blksize=16384, flags=0x0, gen=0x42c57069 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\M-xL\^N\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^_\0\^]\0\^F\0\0\0\
\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\
\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\^E\^C\0\0\0\0\0<\^E\^C\0\0\0\0\0\
\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0@\^E\^C\0\0\0\0\0@\^U\^C\0\0\0\0\0@\
\^U\^C\0\0\0\0\0@\M-h\b\0\0\0\0\0@\M-h\b\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\
\0\0\0\^F\0\0\0\M^@\M-m\v\0\0\0\0\0\M^@\r\f\0\0\0\0\0\M^@\r\f\0\0\0\0\
\0\^P\M^D\0\0\0\0\0\0\^P\M^D\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\
\0\0\0\M^Pq\f\0\0\0\0\0\M^P\M-!\f\0\0\0\0\0\M^P\M-!\f\0\0\0\0\0\b\0\0\
\0\0\0\0\0\r\0\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0\M^Hl\f\0\
\0\0\0\0\M^H\M^L\f\0\0\0\0\0\M^H\M^L\f\0\0\0\0\0000\^A\0\0\0\0\0\0000\
\^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\M^@\M-m\v\0\0\0\0\0\
\M^@\r\f\0\0\0\0\0\M^@\r\f\0\0\0\0\0\^P\M^D\0\0\0\0\0\0\M^@\M^R\0\0\0\
\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0\M-p\^]\^B\0\0\0\0\0\M-p\^]\^B\
\0\0\0\0\0\M-p\^]\^B\0\0\0\0\0|&\0\0\0\0\0\0|&\0\0\0\0\0\0\^D\0\0\0\0\
\0\0\0\M-f\M-[\M-#e\^F\0\0\0\M-(\M-m\v\0\0\0\0\0\M-(\r\f\0\0\0\0\0\M-(\
\r\f\0\0\0\0\0\M-h!\0\0\0\0\0\0\M-h!\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-et\
d\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\
\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\
\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\
\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\
\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\
\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\
\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\
\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\0\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M-(\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M-&\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M--\^A\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^F\^B\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\r\^B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M-%\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-,\a\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M^Y\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-!\
\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-)\b\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^_
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-'
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\v\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0g\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0l\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0r\v\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0x\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0}\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^C\v\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^J\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M^O\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M^W\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^\\v\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-#\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-P\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-W\
\v\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-^\v\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-C\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-Q\f\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-\\f\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-i\f\0\0\^R\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0k\r\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\M-D\0\0\0\^R\0\f\0\0`\^C\0\0\0\0\0@\0\0\0\0\0\0\0y \0\0\^R\0\f\0p\
\M^[\^D\0\0\0\0\0004\^A\0\0\0\0\0\0\M-)\r\0\0\^R\0\f\0000\M-d \0\0\0\
\0\0@\0\0\0\0\0\0\0\M-l\^A\0\0\^R\0\f\0P\M^U\^C\0\0\0\0\0000\0\0\0\0\0\
\0\0\M-F\^B\0\0\^R\0\f\0p\M-:\^C\0\0\0\0\0\M-k\0\0\0\0\0\0\0\M-n\a\0\0\
\^R\0\f\0P1\^D\0\0\0\0\0\0\^A\0\0\0\0\0\0
\f\0\0\^R\0\f\0\M^@^\a\0\0\0\0\0001\^A\0\0\0\0\0\0\^\\^D\0\0\^R\0\f\0\
\M-P\M-X\^C\0\0\0\0\0\M-0\0\0\0\0\0\0\0\M-I\a\0\0\^R\0\f\0P#\^D\0\0\0\
\0\0\240\^A\0\0\0\0\0\0\M^H\b\0\0\^R\0\f\0p>\^D\0\0\0\0\0\M-0\0\0\0\0\
\0\0\0\M^P \0\0\^R\0\f\0\M-0\M^\\^D\0\0\0\0\0\M-r\0\0\0\0\0\0\0&\
\v\0\0\^R\0\f\0 \a\^E\0\0\0\0\0\^P\^A\0\0\0\0\0\0\M-u\a\0\0\^R\0\f\0P2\
\^D\0\0\0\0\0000\^A\0\0\0\0\0\0\M-]
\0\0\^R\0\f\0\M-0\^B\^E\0\0\0\0\0\^P\^A\0\0\0\0\0\0\M-/\f\0\0\^R\0\f\0\
\240\M^I\b\0\0\0\0\0\M-0\0\0\0\0\0\0\0\M^Z\0\0\0\^R\0\f\0 X\^C\0\0\0\0\
\0\M-`\a\0\0\0\0\0\0%\^C\0\0\^R\0\f\0`\M-;\^C\0\0\0\0\0P\0\0\0\0\0\0\0\
|\^D\0\0\^R\0\f\0\M-p\M-\\^C\0\0\0\0\0\M-p\0\0\0\0\0\0\0\M^S\^E\0\0\^R\
\0\f\0\M-P\M-j\^C\0\0\0\0\0\240\0\0\0\0\0\0\0\M-a\^F\0\0\^R\0\f\0p\M-|\
\^C\0\0\0\0\0`\^D\0\0\0\0\0\0u\^N\0\0\^R\0\f\0\0005
\0\0\0\0\0p\^C\0\0\0\0\0\0\M^J\a\0\0\^R\0\f\0\M-`\^N\^D\0\0\0\0\0\M-0\
\^B\0\0\0\0\0\0\M^J\^C\0\0\^R\0\f\0000\M-M\^C\0\0\0\0\0\M^P\0\0\0\0\0\
\0\0\M-k\^E\0\0\^R\0\f\0\M-P\M-u\^C\0\0\0\0\0@\0\0\0\0\0\0\0\M-)\^F\0\
\0\^R\0\f\0`\M-{\^C\0\0\0\0\0`\0\0\0\0\0\0\0T\b\0\0\^R\0\f\0000;\^D\0\
\0\0\0\0\M-@\0\0\0\0\0\0\0\M-g\0\0\0\^R\0\f\0\0a\^C\0\0\0\0\0\M-0\^A\0\
\0\0\0\0\0W\^E\0\0\^R\0\f\0\M-P\M-d\^C\0\0\0\0\0P\0\0\0\0\0\0\0\^D\b\0\
\0\^R\0\f\0\M^@3\^D\0\0\0\0\0\^P\^A\0\0\0\0\0\0\v\b\0\0\^R\0\f\0\M^P4\
\^D\0\0\0\0\0P\^A\0\0\0\0\0\0\a\0\0\0\^R\0\^N\0\M-P\M-n\v\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-P\0\0\0\^R\0\f\0@`\^C\0\0\0\0\0@\0\0\0\0\0\0\0k\^B\0\
\0\^R\0\f\0\^P\M-*\^C\0\0\0\0\0\M-`\0\0\0\0\0\0\0\^O\^F\0\0\^R\0\f\0\
\M-@\M-v\^C\0\0\0\0\0_\0\0\0\0\0\0\0\M-k
\0\0\^R\0\f\0\M-@\^C\^E\0\0\0\0\0`\0\0\0\0\0\0\0\M^T\r\0\0\^R\0\f\0 \
\M-c \0\0\0\0\0\^P\^A\0\0\0\0\0\0\M-:\r\0\0\^R\0\f\0p\M-d \0\0\0\
\0\0000\0\0\0\0\0\0\0\M-s\^O\0\0\^R\0\f\0\^Pr
\0\0\0\0\0@\0\0\0\0\0\0\0\0\^Q\0\0\^R\0\f\0\^P\M^Y
\0\0\0\0\0\M^C\^C\0\0\0\0\0\0\M-S\^B\0\0\^R\0\f\0\240\M-7\^C\0\0\0\0\0\
p\0\0\0\0\0\0\0\^?\^B\0\0\^R\0\f\0\M-p\M-*\^C\0\0\0\0\0P\0\0\0\0\0\0\0\
i\^C\0\0\^R\0\f\0\240\M-K\^C\0\0\0\0\0\M-l\0\0\0\0\0\0\0-\^D\0\0\^R\0\
\f\0\M^@\M-Y\^C\0\0\0\0\0P\^A\0\0\0\0\0\0`\a\0\0\^R\0\f\0\M-p\a\^D\0\0\
\0\0\0\^Q\0\0\0\0\0\0\0\M-E \0\0\^R\0\f\0\240\M^_\^D\0\0\0\0\0\M-r\
\0\0\0\0\0\0\0\M^O\^A\0\0\^R\0\f\0\M-pu\^C\0\0\0\0\0P\0\0\0\0\0\0\0\
\M^\\^B\0\0\^R\0\f\0\M-0\M-+\^C\0\0\0\0\0`\0\0\0\0\0\0\0\M-2\^D\0\0\^R\
\0\f\0\M-`\M-^\^C\0\0\0\0\0\0\^A\0\0\0\0\0\0\M^N\^F\0\0\^R\0\f\0\^P\
\M-{\^C\0\0\0\0\0P\0\0\0\0\0\0\0\M-q\f\0\0\^R\0\f\0\M-0\240\b\0\0\0\0\
\0@\0\0\0\0\0\0\0\M-b\^C\0\0\^R\0\f\0\M^P\M-R\^C\0\0\0\0\0\M^P\0\0\0\0\
\0\0\0\^Y\^E\0\0\^R\0\f\0\M-p\M-b\^C\0\0\0\0\0\M-@\0\0\0\0\0\0\0\M-z\
\^N\0\0\^R\0\f\0\M-0H
\0\0\0\0\0\M-P\0\0\0\0\0\0\0\^?\^Q\0\0\^R\0\f\0\M-@\M-(
\0\0\0\0\0@\0\0\0\0\0\0\08\a\0\0\^R\0\f\0\240\^E\^D\0\0\0\0\0\M-`\^A\0\
\0\0\0\0\0t\a\0\0\^R\0\f\0\^P\b\^D\0\0\0\0\0\M-J\^F\0\0\0\0\0\0x\b\0\0\
\^R\0\f\0\M-p=\^D\0\0\0\0\0\M^@\0\0\0\0\0\0\0V\0\0\0\^R\0\f\0 \M^_\^C\
\0\0\0\0\0\M-`\0\0\0\0\0\0\0@\^D\0\0\^R\0\f\0\M-P\M-Z\^C\0\0\0\0\0 \^A\
\0\0\0\0\0\0\M-N
\0\0\^R\0\f\0\M-0\M-0\b\0\0\0\0\0p\0\0\0\0\0\0\0W\f\0\0\^R\0\f\0\M-`\
\M^L\a\0\0\0\0\0p\0\0\0\0\0\0\0\M-x\0\0\0\^R\0\f\0\^Pd\^C\0\0\0\0\0P\0\
\0\0\0\0\0\0l\^A\0\0\^R\0\f\0pu\^C\0\0\0\0\0000\0\0\0\0\0\0\0|\^A\0\0\
\^R\0\f\0\240u\^C\0\0\0\0\0P\0\0\0\0\0\0\0\M-:\^E\0\0\^R\0\f\0\M^P\M-m\
\^C\0\0\0\0\0P\^B\0\0\0\0\0\0\^[\b\0\0\^R\0\f\00007\^D\0\0\0\0\0\0\^B\
\0\0\0\0\0\0K\v\0\0\^R\0\f\0\240
\^E\0\0\0\0\0\M-C\0\0\0\0\0\0\0|\^P\0\0\^R\0\f\0\240~
\0\0\0\0\0\240\^F\0\0\0\0\0\0\M->\^Q\0\0\^R\0\f\0P\M-:
\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-0\b\0\0\^R\0\f\0@\\\^D\0\0\0\0\0\M-`\0\
\0\0\0\0\0\0\M-8\^N\0\0\^R\0\f\0@@
\0\0\0\0\0\^Z\^D\0\0\0\0\0\0\M-"\^P\0\0\^R\0\f\0\M-0\M^P
\0\0\0\0\0p\0\0\0\0\0\0\0\M-#\^N\0\0\^R\0\f\0\240:
\0\0\0\0\0\M-:\^C\0\0\0\0\0\0E\^B\0\0\^R\0\f\0000\M-'\^C\0\0\0\0\0\M^@\
\0\0\0\0\0\0\0\M-K\^E\0\0\^R\0\f\0\240\M-r\^C\0\0\0\0\0\^P\^A\0\0\0\0\
\0\0R\^Q\0\0\^R\0\f\0000\M-#
\0\0\0\0\0\M-P\^A\0\0\0\0\0\0\M-5\^A\0\0\^R\0\f\0@\M^R\^C\0\0\0\0\0`\0\
\0\0\0\0\0\0\M-+\v\0\0\^R\0\f\0\M-0\M^]\b\0\0\0\0\0006\^A\0\0\0\0\0\0\
\^N\0\0\^R\0\f\0 )
\0\0\0\0\0p\0\0\0\0\0\0\0\M^R\^Q\0\0\^R\0\f\0\0\M-)
\0\0\0\0\0\M^P\0\0\0\0\0\0\0"\^F\0\0\^R\0\f\0 \M-w\^C\0\0\0\0\0\0\^B\0\
\0\0\0\0\0\M-v\^F\0\0\^R\0\f\0\M-P\0\^D\0\0\0\0\0\M-o\^A\0\0\0\0\0\0\
\M^H\^E\0\0\^R\0\f\0000\M-g\^C\0\0\0\0\0p\0\0\0\0\0\0\0C\f\0\0\^R\0\f\
\0P\M^L\a\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M^O\^B\0\0\^R\0\f\0@\M-+\^C\0\0\
\0\0\0p\0\0\0\0\0\0\0?\^E\0\0\^R\0\f\0P\M-d\^C\0\0\0\0\0\M^@\0\0\0\0\0\
\0\0\^E\a\0\0\^R\0\f\0\M-@\^B\^D\0\0\0\0\0\M-@\0\0\0\0\0\0\0i\b\0\0\^R\
\0\f\0\240=\^D\0\0\0\0\0P\0\0\0\0\0\0\0M \0\0\^R\0\f\0\M-`\M^Y\
\^D\0\0\0\0\0P\0\0\0\0\0\0\0\M-x\v\0\0\^R\0\f\0\M-P\M-)
\0\0\0\0\0V\^B\0\0\0\0\0\0I\^O\0\0\^R\0\f\0\^PO
\0\0\0\0\0\M^P\^A\0\0\0\0\0\0\M-T\^Q\0\0\^R\0\f\0\M-`\M-U
\0\0\0\0\0\240\0\0\0\0\0\0\0\M-/\0\0\0\^R\0\f\0\M-0\M-(\^C\0\0\0\0\0\0\
\^A\0\0\0\0\0\0M\^C\0\0\^R\0\f\0000\M-A\^C\0\0\0\0\0P\^A\0\0\0\0\0\0\
\M-?
\0\0\^R\0\f\0\M-p\240\b\0\0\0\0\0p\^B\0\0\0\0\0\0\M^D\f\0\0\^R\0\f\0\
\M-`\M^M\a\0\0\0\0\0\M^P\0\0\0\0\0\0\0\M^C\r\0\0\^R\0\f\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0xcb000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4651295170560/0x43af6cbe000
58849 wish8.5 CALL mmap(0x43af6cbe000,0x31000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4651295170560/0x43af6cbe000
58849 wish8.5 CALL mmap(0x43af6cef000,0x8f000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x30000)
58849 wish8.5 RET mmap 4651295371264/0x43af6cef000
58849 wish8.5 CALL mmap(0x43af6d7e000,0xa000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xbe000)
58849 wish8.5 RET mmap 4651295956992/0x43af6d7e000
58849 wish8.5 CALL mmap(0x43af6d88000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xc7000)
58849 wish8.5 RET mmap 4651295997952/0x43af6d88000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650183901184/0x43ab48f4000
58849 wish8.5 CALL open(0x43b3ac81ff7,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/lib/libexpat.so.14.1"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1029, ino=2099534, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=8429352, atime=1731660490<"Nov 15 08:48:10 2024">.041541259, mtime=1727706816<"Sep 30 15:33:36 2024">.903022433, ctime=1731076718<"Nov 8 14:38:38 2024">.004188241, size=560208, blocks=1152, blksize=16384, flags=0x0, gen=0xec467d03 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\^P\M^C\b\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0%\0#\0\^F\0\0\0\^D\
\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\0\0\
\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-D\M^@\0\0\0\0\0\0\M-D\M^@\0\0\0\0\0\
\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\M-P\M^@\0\0\0\0\0\0\M-P\M^P\0\0\
\0\0\0\0\M-P\M^P\0\0\0\0\0\0\M-`1\^B\0\0\0\0\0\M-`1\^B\0\0\0\0\0\0\^P\
\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\M-0\M-2\^B\0\0\0\0\0\M-0\M-R\^B\0\0\0\0\
\0\M-0\M-R\^B\0\0\0\0\0\M-h%\0\0\0\0\0\0\M-h%\0\0\0\0\0\0\0\^P\0\0\0\0\
\0\0\^A\0\0\0\^F\0\0\0\M^X\M-X\^B\0\0\0\0\0\M^X\b\^C\0\0\0\0\0\M^X\b\
\^C\0\0\0\0\0\b\0\0\0\0\0\0\0\r\0\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\
\0\^F\0\0\0\M^H\M-V\^B\0\0\0\0\0\M^H\M-v\^B\0\0\0\0\0\M^H\M-v\^B\0\0\0\
\0\0 \^A\0\0\0\0\0\0 \^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\
\M-0\M-2\^B\0\0\0\0\0\M-0\M-R\^B\0\0\0\0\0\M-0\M-R\^B\0\0\0\0\0\M-h%\0\
\0\0\0\0\0P-\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0004J\0\0\0\0\
\0\0004J\0\0\0\0\0\0004J\0\0\0\0\0\0L \0\0\0\0\0\0L \0\0\0\0\0\0\
\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0\M-X\M-2\^B\0\0\0\0\0\M-X\M-R\
\^B\0\0\0\0\0\M-X\M-R\^B\0\0\0\0\0\M-p\b\0\0\0\0\0\0\M-p\b\0\0\0\0\0\0\
\b\0\0\0\0\0\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\
\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\
\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\
\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\
\0\^D\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\
\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\
\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GN\
U\0\^B\0\0\M-@\^D\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\
\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^D\
\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^K\0\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^S\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-7\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M->\0\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-E\0\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\M-M\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\r\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^W\^E\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0&\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0+\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0003\
\^E\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-L\^F\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0002\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\08\a\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\a\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\M-Q\^B\0\0\^R\0\f\0 \M-7\0\0\0\0\0\0@\0\0\0\0\0\0\0\a\0\
\0\0\^R\0\^N\0\M-`\M-?\^B\0\0\0\0\0\0\0\0\0\0\0\0\0\^N\^F\0\0\^R\0\f\
\0000\M-H\0\0\0\0\0\0@\0\0\0\0\0\0\0k\^F\0\0\^R\0\f\0\M-@\M-O\0\0\0\0\
\0\0@\0\0\0\0\0\0\0\^A\0\0\0\^R\0\r\0\M-@\M-?\^B\0\0\0\0\0\0\0\0\0\0\0\
\0\0000\^B\0\0\^R\0\f\0\M-P\M-5\0\0\0\0\0\0000\0\0\0\0\0\0\0;\^E\0\0\
\^R\0\f\0\0\M-C\0\0\0\0\0\0\M^P\0\0\0\0\0\0\0Z\^F\0\0\^R\0\f\0\M^P\M-O\
\0\0\0\0\0\0000\0\0\0\0\0\0\0\M^N\^A\0\0\^R\0\f\0\M^P\M-4\0\0\0\0\0\0@\
\0\0\0\0\0\0\0\240\^C\0\0\^R\0\f\0\M^P\M-8\0\0\0\0\0\0000\0\0\0\0\0\0\
\0\^D\^A\0\0\^R\0\f\0@\M-2\0\0\0\0\0\0000\0\0\0\0\0\0\0\M-[\^C\0\0\^R\
\0\f\0\M-p\M-8\0\0\0\0\0\0000\0\0\0\0\0\0\0\^^\^D\0\0\^R\0\f\0`\M-9\0\
\0\0\0\0\0000\0\0\0\0\0\0\0\r\a\0\0\^R\0\f\0\0\M-Q\0\0\0\0\0\0@\0\0\0\
\0\0\0\0\M-W\^A\0\0\^R\0\f\0@\M-5\0\0\0\0\0\0000\0\0\0\0\0\0\0J\^F\0\0\
\^R\0\f\0\M^P\M-K\0\0\0\0\0\0\0\^D\0\0\0\0\0\0c\^C\0\0\^R\0\f\0 \M-8\0\
\0\0\0\0\0@\0\0\0\0\0\0\0c\^A\0\0\^R\0\f\0\^P\M-4\0\0\0\0\0\0@\0\0\0\0\
\0\0\0\M-k\^B\0\0\^R\0\f\0`\M-7\0\0\0\0\0\0000\0\0\0\0\0\0\0'\^C\0\0\
\^R\0\f\0\M-@\M-7\0\0\0\0\0\0000\0\0\0\0\0\0\0\^?\^C\0\0\^R\0\f\0`\M-8\
\0\0\0\0\0\0000\0\0\0\0\0\0\0r\^D\0\0\^R\0\f\0\0\M-:\0\0\0\0\0\0000\0\
\0\0\0\0\0\0\M-}\^D\0\0\^R\0\f\0\M^@\M-@\0\0\0\0\0\0M\^B\0\0\0\0\0\0\
\M-^\^E\0\0\^R\0\f\0p\M-G\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-'\0\0\0\^R\0\
\f\0@\M^V\0\0\0\0\0\0\M-`\^D\0\0\0\0\0\0\M-p\^A\0\0\^R\0\f\0p\M-5\0\0\
\0\0\0\0000\0\0\0\0\0\0\0\M-{\^C\0\0\^R\0\f\0 \M-9\0\0\0\0\0\0@\0\0\0\
\0\0\0\0\M-y\^E\0\0\^R\0\f\0\M-p\M-G\0\0\0\0\0\0@\0\0\0\0\0\0\0]\0\0\0\
\^R\0\f\0\M^@\M^R\0\0\0\0\0\0\r\0\0\0\0\0\0\0\M-U\^D\0\0\^R\0\f\0\M-`\
\M-:\0\0\0\0\0\0p\0\0\0\0\0\0\0q\0\0\0\^R\0\f\0\M^P\M^R\0\0\0\0\0\0P\0\
\0\0\0\0\0\0\M^A\^B\0\0\^R\0\f\0p\M-6\0\0\0\0\0\0000\0\0\0\0\0\0\0J\^E\
\0\0\^R\0\f\0\M^P\M-C\0\0\0\0\0\0\M-0\^A\0\0\0\0\0\0[\^E\0\0\^R\0\f\0@\
\M-E\0\0\0\0\0\0o\0\0\0\0\0\0\0007\^F\0\0\^R\0\f\0\M-p\M-H\0\0\0\0\0\0\
\M-0\^A\0\0\0\0\0\0\M^@\^F\0\0\^R\0\f\0\0\M-P\0\0\0\0\0\0000\0\0\0\0\0\
\0\0\M-e\0\0\0\^R\0\f\0 \M^_\0\0\0\0\0\0\M-4\b\0\0\0\0\0\0G\^A\0\0\^R\
\0\f\0\0\M-3\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-<\^A\0\0\^R\0\f\0\^P\M-5\0\0\
\0\0\0\0000\0\0\0\0\0\0\0H\^C\0\0\^R\0\f\0\M-p\M-7\0\0\0\0\0\0000\0\0\
\0\0\0\0\0\M-;\^D\0\0\^R\0\f\0\M^P\M-:\0\0\0\0\0\0P\0\0\0\0\0\0\0\M^S\
\^F\0\0\^R\0\f\0000\M-P\0\0\0\0\0\0\M^G\0\0\0\0\0\0\0o\^A\0\0\^R\0\f\0\
P\M-4\0\0\0\0\0\0@\0\0\0\0\0\0\0\f\^B\0\0\^R\0\f\0\240\M-5\0\0\0\0\0\
\0000\0\0\0\0\0\0\0\M-e\^D\0\0\^R\0\f\0P\M-;\0\0\0\0\0\0E\^A\0\0\0\0\0\
\0\M^Y\^E\0\0\^R\0\f\0@\M-F\0\0\0\0\0\0P\0\0\0\0\0\0\0\M-E\^E\0\0\^R\0\
\f\0\M-p\M-F\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0\^\\^F\0\0\^R\0\f\0p\M-H\0\0\
\0\0\0\0@\0\0\0\0\0\0\0000\^A\0\0\^R\0\f\0\M-@\M-2\0\0\0\0\0\0@\0\0\0\
\0\0\0\0F\^B\0\0\^R\0\f\0\0\M-6\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-%\^D\0\0\
\^R\0\f\0`\M-:\0\0\0\0\0\0000\0\0\0\0\0\0\0\M-1\^E\0\0\^R\0\f\0\M^P\
\M-F\0\0\0\0\0\0`\0\0\0\0\0\0\0\M^X\0\0\0\^R\0\f\0P\M-+\0\0\0\0\0\0\^X\
\^E\0\0\0\0\0\0a\^B\0\0\^R\0\f\0@\M-6\0\0\0\0\0\0000\0\0\0\0\0\0\0\M^_\
\^B\0\0\^R\0\f\0\240\M-6\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-?\^C\0\0\^R\0\f\
\0\M-@\M-8\0\0\0\0\0\0000\0\0\0\0\0\0\0:\^D\0\0\^R\0\f\0\M^P\M-9\0\0\0\
\0\0\0@\0\0\0\0\0\0\0\M^L\^D\0\0\^R\0\f\0000\M-:\0\0\0\0\0\0000\0\0\0\
\0\0\0\0p\^E\0\0\^R\0\f\0\M-0\M-E\0\0\0\0\0\0@\0\0\0\0\0\0\0+\^F\0\0\
\^R\0\f\0\M-0\M-H\0\0\0\0\0\0@\0\0\0\0\0\0\0W\^A\0\0\^R\0\f\0@\M-3\0\0\
\0\0\0\0\M-P\0\0\0\0\0\0\0\M-5\^B\0\0\^R\0\f\0\M-`\M-6\0\0\0\0\0\0@\0\
\0\0\0\0\0\0X\^D\0\0\^R\0\f\0\M-P\M-9\0\0\0\0\0\0000\0\0\0\0\0\0\0\M-o\
\^D\0\0\^R\0\f\0\M-`\M-=\0\0\0\0\0\0\M^U\^B\0\0\0\0\0\0\M^A\^E\0\0\^R\
\0\f\0\M-p\M-E\0\0\0\0\0\0P\0\0\0\0\0\0\0\M-U\^F\0\0\^R\0\f\0\M-@\M-P\
\0\0\0\0\0\0@\0\0\0\0\0\0\0L\0\0\0\^R\0\f\0`\M^R\0\0\0\0\0\0\^Q\0\0\0\
\0\0\0\0\M-U\0\0\0\^R\0\f\0`\M^^\0\0\0\0\0\0\M-@\0\0\0\0\0\0\0\^^\^A\0\
\0\^R\0\f\0p\M-2\0\0\0\0\0\0P\0\0\0\0\0\0\0\M-&\^A\0\0\^R\0\f\0\M-P\
\M-4\0\0\0\0\0\0@\0\0\0\0\0\0\0
\^C\0\0\^R\0\f\0\M^P\M-7\0\0\0\0\0\0000\0\0\0\0\0\0\0\^Q\0\0\0\^V\0\0\
\0\^P\0\0\0\^Z\0\0\0@\0\M-!DX\M^@" \0\^P\0\^D\0\0\0000\^B1\0\0L\0\0\0\
\0\0\0\0\0\0\^E\0\b\^P$ \0\0\0H\^R\M^@\M-A\^SDB\0001\b\0@\^B$@\^D\^A\0\
\0\0 \0\0\0\0"\^E
\^D\^A\b\M-`\0\0\^Bh\M^P(\0\0\M^H\b\b\M^@\b\0\M^@@\0\0\^Q\^B\0 \^ARD\
\^D"@$@\^D\M^@\^T\0\0\0\M^@\0\f\0\0\0\0\0\^B\M-X\0@`\^X\M-h\0\0\^P\M^F\
\0\0\^V\0\0\0\^W\0\0\0\^Z\0\0\0\^^\0\0\0 \0\0\0$\0\0\0&\0\0\0'\0\0\0.\
\0\0\0002\0\0\0004\0\0\0:\0\0\0@\0\0\0F\0\0\0J\0\0\0R\0\0\0X\0\0\0\M-O\
s\M-~\^S\M-j\M-S\M-o\^N\M-L\M-F\M-sF\M-i\aa7\M-8\M^M\M-q\^N\M-2\M-M\
\M-{\M-8\b:EG=H\M^C\M^R\M-N\M-gl\M-=\M-[\M-!\^Saz\M^J\M-/N<\M-C\M^R\
\M-hL\M-d\M-=j\M-#\M^DE0 \M-^\M^?\^W\M-7{\M-0f\M-e\M^O\M-K,P!.\M^I|\
\M-U8\M-a\M-v\M-b\M-n\M-y\^R\^U%2|\M^H\M-%\M-uj\M-#\M-.}\M-/\M-~l\^N\
\M-d\M^R,\M-k&0\M-bhV\M-mab\^C\M-q&uN\M-9\M^W\M-p\M^Y=G\M^U\M^V\M^^#l\
\b\M^Z\M-#\M-T\^R~\M^B)\f\^Scu\M-<\v\M^\\M-y})\M-C\^F\M^V\M-m\M-z\M^K\
\^Z\M-V;\M-^\^V\M-t\M-d\M-Db\M^BI\M-}\M-"\M-G\M-L\M^_k/\M-u\M-->\M-I\
\M-a\M-n\^^\M-t\M-8@\M-pTs\M-J\^T\M-(E^\b\^C#\M^X7Z\M-]\M-.\M-&\M-Hc\
\M^O\M-pj\M-! \b\M^NN\^F+k\M-m\M-^D)\M-5s^\^B(\M^U\M-$\M-K5\M^[XqR\M^[\
\^V\^?#\M-*\M-t\M-b90\^Z\M-O*\vWZ\M^OV\\\M-z\M-h$$|\^_\M-W\M^@ }\M^I.\
\M^P\M^^\M^NDe\M-1^\rEFU\M-6\^N\M-%.\M-hjl\M^T\M^H\M^@\M-r6h9\M-D\M-9\
\a\M^\[\M-<]\0\0\0]\0\0\0T\0\0\0\0\0\0\0007\0\0\0B\0\0\0\0\0\0\0\0\0\0\
\0!\0\0\0<\0\0\0\0\0\0\0\0\0\0\0\\\0\0\0\0\0\0\0=\0\0\0\0\0\0\0.\0\0\0\
;\0\0\0\^[\0\0\0\0\0\0\0Z\0\0\0\0\0\0\0\v\0\0\0N\0\0\0001\0\0\0\0\0\0\
\08\0\0\0-\0\0\0\0\0\0\0J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Y\0\0\0L\0\0\0\
\0\0\0\0S\0\0\0\0\0\0\0\^_\0\0\0\^O\0\0\09\0\0\0\0\0\0\0#\0\0\0\0\0\0\
\0U\0\0\0C\0\0\0>\0\0\0\0\0\0\0V\0\0\0'\0\0\0\0\0\0\0\0\0\0\0H\0\0\0@\
\0\0\0X\0\0\0P\0\0\0I\0\0\0+\0\0\0\0\0\0\0000\0\0\0002\0\0\0\0\0\0\0\0\
\0\0\0"\0\0\0[\0\0\0005\0\0\0\0\0\0\0\0\0\0\0)\0\0\0\0\0\0\0\0\0\0\0Q\
\0\0\0\0\0\0\0\^F\0\0\0\0\0\0\0\0\0\0\0K\0\0\0\^]\0\0\0 \0\0\0\^Q\0\0\
\0\^U\0\0\0\^W\0\0\0\^V\0\0\0A\0\0\0\^B\0\0\0(\0\0\0004\0\0\0\0\0\0\0\
\0\0\0\0O\0\0\0E\0\0\0D\0\0\0W\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0\0\0\
\0\0\0\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\a\0\0\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x31000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4652795817984/0x43b503df000
58849 wish8.5 CALL mmap(0x43b503df000,0x9000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4652795817984/0x43b503df000
58849 wish8.5 CALL mmap(0x43b503e8000,0x24000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x8000)
58849 wish8.5 RET mmap 4652795854848/0x43b503e8000
58849 wish8.5 CALL mmap(0x43b5040c000,0x3000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2b000)
58849 wish8.5 RET mmap 4652796002304/0x43b5040c000
58849 wish8.5 CALL mmap(0x43b5040f000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2d000)
58849 wish8.5 RET mmap 4652796014592/0x43b5040f000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651804614656/0x43b15296000
58849 wish8.5 CALL open(0x43b3ac83161,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libxcb.so.4.1"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103767, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=446720, atime=1731660548<"Nov 15 08:49:08 2024">.921459436, mtime=1727401612<"Sep 27 02:46:52 2024">.203022080, ctime=1731076741<"Nov 8 14:39:01 2024">.874189317, size=652728, blocks=1312, blksize=16384, flags=0x0, gen=0x83a3c938 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0x\M-l \0\0\0\0\0\0\0\0\0@\08\0\r\0@\0%\0#\0\^F\0\0\0\
\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\
\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^TR\^A\0\0\0\0\0\^TR\^A\0\0\0\0\0\
\0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0 R\^A\0\0\0\0\0 b\^A\0\0\0\0\0 b\^A\
\0\0\0\0\0\M^@k\^A\0\0\0\0\0\M^@k\^A\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\
\0\^F\0\0\0\240\M-=\^B\0\0\0\0\0\240\M-]\^B\0\0\0\0\0\240\M-]\^B\0\0\0\
\0\0\M^X\^Y\0\0\0\0\0\0\M^X\^Y\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\
\^F\0\0\0@\M-W\^B\0\0\0\0\0@\a\^C\0\0\0\0\0@\a\^C\0\0\0\0\0H\0\0\0\0\0\
\0\0p\0\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0(\M-S\^B\0\0\0\0\
\0(\M-s\^B\0\0\0\0\0(\M-s\^B\0\0\0\0\0@\^A\0\0\0\0\0\0@\^A\0\0\0\0\0\0\
\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\240\M-=\^B\0\0\0\0\0\240\M-]\^B\0\0\0\
\0\0\240\M-]\^B\0\0\0\0\0\M^X\^Y\0\0\0\0\0\0`"\0\0\0\0\0\0\^A\0\0\0\0\
\0\0\0P\M-etd\^D\0\0\0\b\M-\\0\0\0\0\0\0\b\M-\\0\0\0\0\0\0\b\M-\\0\0\0\
\0\0\0T\^V\0\0\0\0\0\0T\^V\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\
\^F\0\0\0\M-H\M-=\^B\0\0\0\0\0\M-H\M-]\^B\0\0\0\0\0\M-H\M-]\^B\0\0\0\0\
\0\240\^T\0\0\0\0\0\0\240\^T\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\^F\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\
\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\
\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\
\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\^D\0\0\0\^D\
\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\
\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\
\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\0\0\0\^A\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\0\0 \0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\0\0 \0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^V\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\^]\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-`\
\b\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^P>\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^W>\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\M^^>\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-#>\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-+>\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-3>\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-;>\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-t>\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\^V?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^]?\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0$?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0/?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:?\0\0\^P\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Q?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0W?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]?\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i?\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M^M?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\240?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-5?\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-=?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-`?\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-s?\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0b@\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0l@\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^A@\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-u@\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\M-}@\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\M-?A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-FA\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-yA\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\M-~A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^CB\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^OB\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\^[B\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0'B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<B\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0CB\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0RB\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0YB\0\0\^P\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0^B\0\0\^R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0lD\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0rD\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0{D\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M^MD\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^UD\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^\E\0\0\^P\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\M-{\b\0\0\^R\0\f\0000\M^Q\^A\0\0\0\0\0000\0\0\0\0\
\0\0\0e\^S\0\0\^R\0\f\0@\M-A\^A\0\0\0\0\0p\0\0\0\0\0\0\0[\^Y\0\0\^R\0\
\f\0\M-@\M-V\^A\0\0\0\0\0P\0\0\0\0\0\0\0\b\^\\0\0\^R\0\f\0\240\M-^\^A\
\0\0\0\0\0@\0\0\0\0\0\0\0\\\0\0\0\^R\0\f\0\M-pc\^A\0\0\0\0\0P\0\0\0\0\
\0\0\0\M^S\^Y\0\0\^R\0\f\0 \M-W\^A\0\0\0\0\0000\0\0\0\0\0\0\0&-\0\0\^R\
\0\f\0`1\^B\0\0\0\0\0@\0\0\0\0\0\0\0\M-V<\0\0\^R\0\f\0Ph\^B\0\0\0\0\
\0000\0\0\0\0\0\0\0\M-@)\0\0\^R\0\f\0P'\^B\0\0\0\0\0@\0\0\0\0\0\0\0C:\
\0\0\^R\0\f\0Pa\^B\0\0\0\0\0`\0\0\0\0\0\0\0\M-x=\0\0\^R\0\f\0\M-`j\^B\
\0\0\0\0\0@\0\0\0\0\0\0\0\^ZA\0\0\^R\0\f\0 \M^M\^B\0\0\0\0\0\^_\^A\0\0\
\0\0\0\0005\^^\0\0\^R\0\f\0\0\M-q\^A\0\0\0\0\0\240\0\0\0\0\0\0\0\M-*\
\^Q\0\0\^R\0\f\0\0\M-:\^A\0\0\0\0\0@\0\0\0\0\0\0\0\M-a\^^\0\0\^R\0\f\0\
\M-~\^A\0\0\0\0\0@\0\0\0\0\0\0\0\a1\0\0\^R\0\f\0\M-@<\^B\0\0\0\0\0000\
\0\0\0\0\0\0\0D6\0\0\^R\0\f\0@Q\^B\0\0\0\0\0 \^A\0\0\0\0\0\0\M-L\
\0\0\^R\0\f\0\0\M^Y\^A\0\0\0\0\0\240\0\0\0\0\0\0\0\M^D\^B\0\0\
\^R\0\f\0\M^@m\^A\0\0\0\0\0P\0\0\0\0\0\0\0d"\0\0\^R\0\f\0\^P\^N\^B\0\0\
\0\0\0000\0\0\0\0\0\0\0v,\0\0\^R\0\f\0\M-P/\^B\0\0\0\0\0\^N\0\0\0\0\0\
\0\0\M-,6\0\0\^R\0\f\0000T\^B\0\0\0\0\0\M-0\0\0\0\0\0\0\0k\0\0\0\^R\0\
\f\0@d\^A\0\0\0\0\0@\0\0\0\0\0\0\0\^E\^T\0\0\^R\0\f\0\0\M-D\^A\0\0\0\0\
\0\^N\0\0\0\0\0\0\0\M^Z\^X\0\0\^R\0\f\0\M-p\M-T\^A\0\0\0\0\0p\0\0\0\0\
\0\0\0t(\0\0\^R\0\f\0000#\^B\0\0\0\0\0000\0\0\0\0\0\0\0\^[8\0\0\^R\0\f\
\0\M-pX\^B\0\0\0\0\0\M^@\0\0\0\0\0\0\0lA\0\0\^R\0\f\0p\M^Q\^B\0\0\0\0\
\0\M-N\0\0\0\0\0\0\0\M^Y\a\0\0\^R\0\f\0P\M^A\^A\0\0\0\0\0\M-P\^A\0\0\0\
\0\0\0\^B\^R\0\0\^R\0\f\0\M-@\M-:\^A\0\0\0\0\0p\0\0\0\0\0\0\0\^S\^U\0\
\0\^R\0\f\0\^P\M-I\^A\0\0\0\0\0p\0\0\0\0\0\0\0\M-E\^[\0\0\^R\0\f\0@\
\M-^\^A\0\0\0\0\0000\0\0\0\0\0\0\0\M-L\^\\0\0\^R\0\f\0`\M-b\^A\0\0\0\0\
\0\M-P\0\0\0\0\0\0\0\M-9\0\0\0\^R\0\f\0\240e\^A\0\0\0\0\0P\0\0\0\0\0\0\
\0I\^\\0\0\^R\0\f\0\M-p\M-^\^A\0\0\0\0\0\M-P\0\0\0\0\0\0\0>!\0\0\^R\0\
\f\0000\b\^B\0\0\0\0\0\240\0\0\0\0\0\0\0\^B0\0\0\^R\0\f\0\^P9\^B\0\0\0\
\0\0\M^P\0\0\0\0\0\0\0\M^J\^A\0\0\^R\0\f\0Pi\^A\0\0\0\0\0@\0\0\0\0\0\0\
\0\M-;\^P\0\0\^R\0\f\0\M-p\M-7\^A\0\0\0\0\0000\0\0\0\0\0\0\0\M-o(\0\0\
\^R\0\f\0\M-p$\^B\0\0\0\0\0000\0\0\0\0\0\0\0h6\0\0\^R\0\f\0`R\^B\0\0\0\
\0\0 \^A\0\0\0\0\0\0\^V\^C\0\0\^R\0\f\0\^Pp\^A\0\0\0\0\0@\0\0\0\0\0\0\
\0f\^F\0\0\^R\0\f\0 |\^A\0\0\0\0\0@\0\0\0\0\0\0\0l\b\0\0\^R\0\f\0\0\
\M^M\^A\0\0\0\0\0P\0\0\0\0\0\0\0\^_\^N\0\0\^R\0\f\0p\M-/\^A\0\0\0\0\0`\
\0\0\0\0\0\0\0\M-`7\0\0\^R\0\f\0`X\^B\0\0\0\0\0\^N\0\0\0\0\0\0\0D\^B\0\
\0\^R\0\f\0`l\^A\0\0\0\0\0P\0\0\0\0\0\0\0e\r\0\0\^R\0\f\0\M-p\M-,\^A\0\
\0\0\0\0000\0\0\0\0\0\0\0\M^K\^N\0\0\^R\0\f\0p\M-0\^A\0\0\0\0\0\^N\0\0\
\0\0\0\0\0\M-&-\0\0\^R\0\f\0\M^@2\^B\0\0\0\0\0\^N\0\0\0\0\0\0\0\M-N'\0\
\0\^R\0\f\0\0!\^B\0\0\0\0\0000\0\0\0\0\0\0\0\M-B>\0\0\^R\0\f\0\M-pp\^B\
\0\0\0\0\0\^S\0\0\0\0\0\0\0\M^H!\0\0\^R\0\f\0\M-P
\^B\0\0\0\0\0000\0\0\0\0\0\0\0*&\0\0\^R\0\f\0`\^Z\^B\0\0\0\0\0000\0\0\
\0\0\0\0\0\M--=\0\0\^R\0\f\0\M^@j\^B\0\0\0\0\0000\0\0\0\0\0\0\0\f!\0\0\
\^R\0\f\0\M-P\^F\^B\0\0\0\0\0`\0\0\0\0\0\0\0d8\0\0\^R\0\f\0000Z\^B\0\0\
\0\0\0\^N\0\0\0\0\0\0\0\M-c\^[\0\0\^R\0\f\0p\M-^\^A\0\0\0\0\0000\0\0\0\
\0\0\0\0\M-B-\0\0\^R\0\f\0\M^P2\^B\0\0\0\0\0000\0\0\0\0\0\0\0f/\0\0\^R\
\0\f\0\0007\^B\0\0\0\0\0\M^@\0\0\0\0\0\0\0&1\0\0\^R\0\f\0\M-p<\^B\0\0\
\0\0\0@\0\0\0\0\0\0\0\M-X\^Z\0\0\^R\0\f\0@\M-\\^A\0\0\0\0\0\^N\0\0\0\0\
\0\0\0\M-Q3\0\0\^R\0\f\0\M-pG\^B\0\0\0\0\0@\0\0\0\0\0\0\0\M-b;\0\0\^R\
\0\f\0\240f\^B\0\0\0\0\0\^N\0\0\0\0\0\0\0\M-"1\0\0\^R\0\f\0\M^P>\^B\0\
\0\0\0\0\^N\0\0\0\0\0\0\089\0\0\^R\0\f\0\240\\\^B\0\0\0\0\0000\0\0\0\0\
\0\0\0=>\0\0\^R\0\f\0000k\^B\0\0\0\0\0`\0\0\0\0\0\0\0\M-{>\0\0\^R\0\f\
\0\M^@\M-(\^B\0\0\0\0\0\M-K\^B\0\0\0\0\0\0|E\0\0\^R\0\f\0 \M-?\^B\0\0\
\0\0\0\0\^A\0\0\0\0\0\0\M^Z\0\0\0\^R\0\f\0\^Pe\^A\0\0\0\0\0P\0\0\0\0\0\
\0\0\M-|&\0\0\^R\0\f\0\M-0\^]\^B\0\0\0\0\0000\0\0\0\0\0\0\0u<\0\0\^R\0\
\f\0\M-Pg\^B\0\0\0\0\0000\0\0\0\0\0\0\0\M-N>\0\0\^R\0\f\0\^Pq\^B\0\0\0\
\0\0\M-z\^C\0\0\0\0\0\0g\^A\0\0\^R\0\f\0\M-@h\^A\0\0\0\0\0@\0\0\0\0\0\
\0\0\M-T\^W\0\0\^R\0\f\0 \M-R\^A\0\0\0\0\0000\0\0\0\0\0\0\0\M-[$\0\0\
\^R\0\f\0\M-0\^V\^B\0\0\0\0\0000\0\0\0\0\0\0\0}.\0\0\^R\0\f\0`4\^B\0\0\
\0\0\0\^N\0\0\0\0\0\0\0\M-)\0\0\0\^R\0\f\0`e\^A\0\0\0\0\0@\0\0\0\0\0\0\
\0K\^^\0\0\^R\0\f\0\240\M-q\^A\0\0\0\0\0\240\0\0\0\0\0\0\0g \0\0\^R\0\
\f\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x31000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4653297995776/0x43b6e2c9000
58849 wish8.5 CALL mmap(0x43b6e2c9000,0x16000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4653297995776/0x43b6e2c9000
58849 wish8.5 CALL mmap(0x43b6e2df000,0x17000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x15000)
58849 wish8.5 RET mmap 4653298085888/0x43b6e2df000
58849 wish8.5 CALL mmap(0x43b6e2f6000,0x3000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2b000)
58849 wish8.5 RET mmap 4653298180096/0x43b6e2f6000
58849 wish8.5 CALL mmap(0x43b6e2f9000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2d000)
58849 wish8.5 RET mmap 4653298192384/0x43b6e2f9000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac82690,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libXdmcp.so.11.0"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103700, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=439136, atime=1731660548<"Nov 15 08:49:08 2024">.921459436, mtime=1727400779<"Sep 27 02:32:59 2024">.533021739, ctime=1731076741<"Nov 8 14:39:01 2024">.644188576, size=28552, blocks=56, blksize=16384, flags=0x0, gen=0xd3b6fd4a }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\bh\0\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^^\0\^\\0\^F\0\0\0\^D\
\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\0\0\
\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0004*\0\0\0\0\0\0004*\0\0\0\0\0\0\0\^P\
\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0@*\0\0\0\0\0\0@:\0\0\0\0\0\0@:\0\0\0\0\0\
\0\M-p&\0\0\0\0\0\0\M-p&\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\
\0000Q\0\0\0\0\0\0000q\0\0\0\0\0\0000q\0\0\0\0\0\0p\^C\0\0\0\0\0\0p\^C\
\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\240T\0\0\0\0\0\0\240\
\M^D\0\0\0\0\0\0\240\M^D\0\0\0\0\0\0\b\0\0\0\0\0\0\0\r\0\0\0\0\0\0\0\0\
\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0\M-PR\0\0\0\0\0\0\M-Pr\0\0\0\0\0\0\
\M-Pr\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\
\M-etd\^D\0\0\0000Q\0\0\0\0\0\0000q\0\0\0\0\0\0000q\0\0\0\0\0\0p\^C\0\
\0\0\0\0\0\M-P\^N\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0\M-@!\0\
\0\0\0\0\0\M-@!\0\0\0\0\0\0\M-@!\0\0\0\0\0\0|\^A\0\0\0\0\0\0|\^A\0\0\0\
\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0XQ\0\0\0\0\0\0Xq\0\0\0\0\
\0\0Xq\0\0\0\0\0\0x\^A\0\0\0\0\0\0x\^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\
\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\0\0\
\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\
\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\0\0\
\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\
\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\
\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\
\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\M-@\^D\
\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0]\0\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\M-8\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-O\0\0\
\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-i\0\0\0\^P\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\v\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0M\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^^\^A\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-2\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-J\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
d\0\0\0\^R\0\f\0@<\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0Q\^B\0\0\^R\0\f\0\^PG\
\0\0\0\0\0\0P\0\0\0\0\0\0\0\M^B\^B\0\0\^R\0\f\0\M-`I\0\0\0\0\0\0\M-0\0\
\0\0\0\0\0\0\M-5\^B\0\0\^R\0\f\0pO\0\0\0\0\0\0 \^B\0\0\0\0\0\0\b\^C\0\
\0\^R\0\f\0\M-@R\0\0\0\0\0\0`\0\0\0\0\0\0\0\M-m\^B\0\0\^R\0\f\0\M-`L\0\
\0\0\0\0\0\M^P\^B\0\0\0\0\0\0\M-'\0\0\0\^R\0\f\0\M-@=\0\0\0\0\0\0P\0\0\
\0\0\0\0\0`\^B\0\0\^R\0\f\0`G\0\0\0\0\0\0\a\^A\0\0\0\0\0\0\M-N\^B\0\0\
\^R\0\f\0pW\0\0\0\0\0\0\M-@\^B\0\0\0\0\0\0f\^A\0\0\^R\0\f\0PA\0\0\0\0\
\0\0P\0\0\0\0\0\0\0:\^C\0\0\^R\0\f\0 T\0\0\0\0\0\0\240\0\0\0\0\0\0\0o\
\^C\0\0\^R\0\f\0`V\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0L\0\0\0\^R\0\f\0\M-P;\
\0\0\0\0\0\0p\0\0\0\0\0\0\0\M-9\^A\0\0\^R\0\f\0`C\0\0\0\0\0\0\^S\0\0\0\
\0\0\0\0\^^\^B\0\0\^R\0\f\0pE\0\0\0\0\0\0`\0\0\0\0\0\0\0\M-)\^B\0\0\^R\
\0\f\0\M^@K\0\0\0\0\0\0`\^A\0\0\0\0\0\0\M-?\0\0\0\^R\0\f\0\^P>\0\0\0\0\
\0\0\M^@\0\0\0\0\0\0\0&\^A\0\0\^R\0\f\0000@\0\0\0\0\0\0\M^@\0\0\0\0\0\
\0\0:\^A\0\0\^R\0\f\0\M-0@\0\0\0\0\0\0P\0\0\0\0\0\0\0z\^A\0\0\^R\0\f\0\
\240A\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0\M-Y\^A\0\0\^R\0\f\0\M^@C\0\0\0\0\0\
\0p\0\0\0\0\0\0\0.\^B\0\0\^R\0\f\0\M-PE\0\0\0\0\0\0000\0\0\0\0\0\0\0\
\M-w\^B\0\0\^R\0\f\0\M^PQ\0\0\0\0\0\0000\^A\0\0\0\0\0\0\M-j\^A\0\0\^R\
\0\f\0\M-pC\0\0\0\0\0\0P\0\0\0\0\0\0\0A\^B\0\0\^R\0\f\0\0F\0\0\0\0\0\0\
\^D\^A\0\0\0\0\0\0\^Y\^C\0\0\^R\0\f\0 S\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0v\
\0\0\0\^R\0\f\0\M-@<\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-V\0\0\0\^R\0\f\0\
\M^P>\0\0\0\0\0\0p\0\0\0\0\0\0\0R\^A\0\0\^R\0\f\0\0A\0\0\0\0\0\0P\0\0\
\0\0\0\0\0\M-|\^A\0\0\^R\0\f\0@D\0\0\0\0\0\0P\0\0\0\0\0\0\0\M-^\^B\0\0\
\^R\0\f\0000Z\0\0\0\0\0\0P\^D\0\0\0\0\0\0^\^C\0\0\^R\0\f\0\M-@U\0\0\0\
\0\0\0\240\0\0\0\0\0\0\0\^A\0\0\0\^R\0\r\0\M^@^\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\a\0\0\0\^R\0\^N\0\240^\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^H\0\0\0\^R\
\0\f\0@=\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M^T\^A\0\0\^R\0\f\0PB\0\0\0\0\0\
\0\M-@\0\0\0\0\0\0\0*\^C\0\0\^R\0\f\0\M-PS\0\0\0\0\0\0P\0\0\0\0\0\0\0\
\M-q\0\0\0\^R\0\f\0\0?\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0\^R\^A\0\0\^R\0\f\
\0\M-0?\0\0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-'\^A\0\0\^R\0\f\0\^PC\0\0\0\0\
\0\0P\0\0\0\0\0\0\0\^N\^B\0\0\^R\0\f\0\M^PD\0\0\0\0\0\0\M-`\0\0\0\0\0\
\0\0q\^B\0\0\^R\0\f\0pH\0\0\0\0\0\0g\^A\0\0\0\0\0\0\M^R\^B\0\0\^R\0\f\
\0\M^PJ\0\0\0\0\0\0\M-m\0\0\0\0\0\0\0L\^C\0\0\^R\0\f\0\M-@T\0\0\0\0\0\
\0\0\^A\0\0\0\0\0\0\v\0\0\0\^O\0\0\0\^P\0\0\0\^Z\0\0\0\0\0\M^@\0\0\0\0\
\^B\0\0\0\0\0\0\0\0\M^H\0\^XB \M^@\M^I\^D\0\^A\0D\^D\0\0\0\b\0\0\^T\^Q\
\0\^R\0\0\0\0\0\0\0\0\0\^X\^B\0\0\b\0 \^A\^B\0\^D`\0\0\M^@\^D\^A\0\^A0\
,\0\0\^D\M^@\0\0\0\b\0\0\0\M^@@\0\b\^B\0\M^L\M^@\0\0\0 @\0\0\0@\0$\0\0\
\0\M^@\0\0\^A\^A\0\b \M^@\M^@\^A@\0\0\^P\M-*\0\^D \0\0@\M^A\M^L\
\^D\0\^O\0\0\0\^T\0\0\0\^U\0\0\0\^X\0\0\0\^[\0\0\0\^_\0\0\0&\0\0\0)\0\
\0\0/\0\0\0004\0\0\09\0\0\0\M-R1@u\M-._}9\^\U)i4}_\M^P\M--oh\^B\M^[~1\
\M-|\M-0\M-H\M-I\M-Mb.\^F\^\\M-#!\M-5&\^\\M-N\M^?\M-i\^R\M-#(\M-]\M-7\
\\\M-e\^]"n\M-r\M^V\^T\M-C\M-{\^X\M-^T)i\M-_\^C\M-%\M-I\M-2\M-zR\M-^\
\M-fG\M-b\M-,\M-.\M-8\M-hL\M^Bp\\\M^U\M-$\M-76\M-h\^V\0\M-?\M-e\M-5u\
\M-&\^P\M-nO\M^Y\M^B\M^T\M^\\M-2ec\M-7\M-q\M-~\^P2@u\^Z\M-%-\M-G\M-^\
\M-M\M^?\M-i\M-@\^]\M^V\M-]"2$\^A\M-koh\^B\M-8\M^M\M-q\^N\M-j\M-S\M-o\
\^Nv\M-{\M^\\M-4H\a(\M-|\M^_\M-\\M-L\M-h\M^N\M-V\M-c\M-J\M-(G\M-b\M-,\
\^B\M-=*\M^A\M-fZgw\M-!.\^F\^\\M-H`\M-,\M^HQ\M-#(\M-];\0\0\0;\0\0\0
\0\0\0\0\0\0\0\0\0\0\0#\0\0\0\0\0\0\0\^V\0\0\0,\0\0\0004\0\0\0\0\0\0\0\
)\0\0\0\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^U\0\0\0\0\0\0\09\0\0\
\0\f\0\0\0*\0\0\0!\0\0\0006\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0.\0\0\08\0\0\0000\0\0\0\^E\0\0\0\0\0\0\0"\0\0\0003\0\0\0001\0\0\0'\
\0\0\0\^Z\0\0\0\0\0\0\0\^]\0\0\0\0\0\0\0\^W\0\0\0007\0\0\0\^N\0\0\0%\0\
\0\0\0\0\0\0\^F\0\0\0002\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:\0\0\0\0\0\0\0(\
\0\0\0&\0\0\0\0\0\0\0\^\\0\0\0\0\0\0\0005\0\0\0\^S\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^C\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\^R\0\0\0\0\0\0\0 \0\0\0\^O\0\0\0\^T\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\^X\0\0\0\b\0\0\0\0\0\0\0\^B\0\0\0\^[\0\0\0\0\0\0\0\0\0\0\0\
\^^\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^_\0\0\0$\0\0\0\0\0\0\0\^Y\
\0\0\0\0\0\0\0\0\0\0\0+\0\0\0\0\0\0\0\^A\0\0\0\0\0\0\0-\0\0\0\0\0\0\0\
\^Q\0\0\0\v\0\0\0 \0\0\0\0\0\0\0\0\0\0\0/\0\0\0\0\0\0\0\0_init\0_fini\
\0__cxa_atexit\0_thread_atfork\0_Jv_RegisterClasses\0__cxa_finalize\0X\
dmcpAllocARRAY8\0malloc\0XdmcpAllocARRAY16\0XdmcpAllocARRAY32\0XdmcpAl\
locARRAYofARRAY8\0calloc\0XdmcpARRAY8Equal\0memcmp\0XdmcpCopyARRAY8\0m\
emcpy\0XdmcpReallocARRAY8\0realloc\0XdmcpReallocARRAYofARRAY8\0memset\
\0XdmcpReallocARRAY16\0XdmcpReallocARRAY32\0XdmcpDisposeARRAY8\0free\0\
XdmcpDisposeARRAY16\0XdmcpDisposeARRAY32\0XdmcpDisposeARRAYofARRAY8\0X\
dmcpFill\0recvfrom\0XdmcpFlush\0sendto\0XdmcpGenerateKey\0arc4random_b\
uf\0XdmcpCompareKeys\0XdmcpIncrementKey\0XdmcpDecrementKey\0XdmcpReadH\
eader\0XdmcpReadCARD16\0XdmcpReadRemaining\0XdmcpReadARRAY8\0XdmcpRead\
CARD8\0XdmcpReadARRAY16\0XdmcpReadARRAY32\0XdmcpReadCARD32\0XdmcpReadA\
RRAYofARRAY8\0XdmcpUnwrap\0_XdmcpWrapperToOddParity\0_XdmcpAuthSetup\0\
_XdmcpAuthDoIt\0XdmcpWrap\0XdmcpWriteHeader\0XdmcpWriteCARD16\0XdmcpWr\
iteARRAY8\0XdmcpWriteCARD8\0XdmcpWriteARRAY16\0XdmcpWriteARRAY32\0Xdmc\
pWriteCARD32\0XdmcpWriteARRAYofARRAY8\0\0\0\0\0\0\240\M^D\0\0\0\0\0\0\
\b\0\0\0\0\0\0\0\240\M^D\0\0\0\0\0\0\M-`s\0\0\0\0\0\0\^F\0\0\0\^C\0\0\
\0\0\0\0\0\0\0\0\0\M-hs\0\0\0\0\0\0\^F\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\bt\0\0\0\0\0\0"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x9000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4652142911488/0x43b29536000
58849 wish8.5 CALL mmap(0x43b29536000,0x3000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4652142911488/0x43b29536000
58849 wish8.5 CALL mmap(0x43b29539000,0x4000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2000)
58849 wish8.5 RET mmap 4652142923776/0x43b29539000
58849 wish8.5 CALL mmap(0x43b2953d000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x5000)
58849 wish8.5 RET mmap 4652142940160/0x43b2953d000
58849 wish8.5 CALL mmap(0x43b2953e000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x5000)
58849 wish8.5 RET mmap 4652142944256/0x43b2953e000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL open(0x43b3ac82581,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/X11R6/lib/libXau.so.10.0"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32f058)
58849 wish8.5 STRU struct stat { dev=1030, ino=103694, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=438776, atime=1731660548<"Nov 15 08:49:08 2024">.921459436, mtime=1727400776<"Sep 27 02:32:56 2024">.463021734, ctime=1731076741<"Nov 8 14:39:01 2024">.634188842, size=14392, blocks=32, blksize=16384, flags=0x0, gen=0x628ff91a }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x7b2fec32db40,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\0\0\0\0\0\0\0\0@\0\
\0\0\0\0\0\0\M-80\0\0\0\0\0\0\0\0\0\0@\08\0\r\0@\0\^^\0\^\\0\^F\0\0\0\
\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\M-X\^B\0\0\0\0\
\0\0\M-X\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0l\^P\0\0\0\0\0\0l\^P\0\0\0\0\0\0\0\
\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0p\^P\0\0\0\0\0\0p \0\0\0\0\0\0p \0\0\
\0\0\0\0p\^R\0\0\0\0\0\0p\^R\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\
\0\0\0\M-`"\0\0\0\0\0\0\M-`B\0\0\0\0\0\0\M-`B\0\0\0\0\0\0\M-P\^B\0\0\0\
\0\0\0\M-P\^B\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\M-0%\0\0\
\0\0\0\0\M-0U\0\0\0\0\0\0\M-0U\0\0\0\0\0\0\b\0\0\0\0\0\0\0(\0\0\0\0\0\
\0\0\0\^P\0\0\0\0\0\0\^B\0\0\0\^F\0\0\0\M^@#\0\0\0\0\0\0\M^@C\0\0\0\0\
\0\0\M^@C\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\^P\^A\0\0\0\0\0\0\b\0\0\0\0\0\
\0\0R\M-etd\^D\0\0\0\M-`"\0\0\0\0\0\0\M-`B\0\0\0\0\0\0\M-`B\0\0\0\0\0\
\0\M-P\^B\0\0\0\0\0\0 \r\0\0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0\
\M^T\r\0\0\0\0\0\0\M^T\r\0\0\0\0\0\0\M^T\r\0\0\0\0\0\0|\0\0\0\0\0\0\0|\
\0\0\0\0\0\0\0\^D\0\0\0\0\0\0\0\M-f\M-[\M-#e\^F\0\0\0\b#\0\0\0\0\0\0\b\
C\0\0\0\0\0\0\bC\0\0\0\0\0\0x\0\0\0\0\0\0\0x\0\0\0\0\0\0\0\b\0\0\0\0\0\
\0\0Q\M-etd\^F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0S\M-etd\^D\0\0\0000\^C\0\
\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\
\0\0\0\b\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\^X\^C\0\0\0\0\0\0\^X\^C\0\0\0\
\0\0\0\^X\^C\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^D\0\0\0\0\
\0\0\0\^D\0\0\0\^D\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\0\0\0\0000\^C\0\0\
\0\0\0\0 \0\0\0\0\0\0\0 \0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\
\0\^A\0\0\0OpenBSD\0\0\0\0\0\^D\0\0\0\^P\0\0\0\^E\0\0\0GNU\0\^B\0\0\
\M-@\^D\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\r\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\0\0\0 \0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0=\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0[\0\0\0\^P\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0{\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^B\0\0\0\
\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M^I\0\0\0\^P\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\M^P\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\M^Y\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-4\0\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-;\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\M-M\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\M-T\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\M-p\0\0\0\^P\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^D\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0 \^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^N\^A\
\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^U\^A\0\0\^P\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\^Z\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0 \^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)\^A\0\0\^P\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0.\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0006\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\
\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0C\^A\0\0\^P\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0d\^A\0\0\^P\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\^A\0\0\0\^R\0\r\0\M-0.\0\0\0\0\0\0\0\0\0\0\0\0\0\0\a\0\0\0\^R\
\0\^N\0\M-P.\0\0\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0\^R\0\f\0\0"\0\0\0\0\0\
\0\M^@\0\0\0\0\0\0\0o\0\0\0\^R\0\f\0\M^@"\0\0\0\0\0\0^\^A\0\0\0\0\0\0\
\M-x\0\0\0\^R\0\f\0\M-P'\0\0\0\0\0\0H\^B\0\0\0\0\0\0W\^A\0\0\^R\0\f\0\
\M-`,\0\0\0\0\0\0\M-P\^A\0\0\0\0\0\0\M-#\0\0\0\^R\0\f\0000$\0\0\0\0\0\
\0\M^S\^A\0\0\0\0\0\0\M-A\0\0\0\^R\0\f\0 *\0\0\0\0\0\0000\^A\0\0\0\0\0\
\0\M-[\0\0\0\^R\0\f\0\M-P%\0\0\0\0\0\0\M-t\^A\0\0\0\0\0\0I\^A\0\0\^R\0\
\f\0000,\0\0\0\0\0\0\M-0\0\0\0\0\0\0\0\^B\0\0\0\^]\0\0\0\^B\0\0\0\^Z\0\
\0\0*B\0\M^\\0\0\M^@A \0\^S\0 D\0\0\^]\0\0\0#\0\0\0\M-8\M^M\M-q\^N\
\M-j\M-S\M-o\^N\M^\\M^Jj\^VT\^Y \M-8\M^N\M-]\M-X\M-z\M-Q\M-7]\^A\M^Z\
\^Y\M^P\M-]\M^@~t}\M^H\M-Z\M-|i\M-QP!\M^U'\0\0\0'\0\0\0\0\0\0\0\0\0\0\
\0
\0\0\0\0\0\0\0&\0\0\0\^P\0\0\0\^S\0\0\0\^B\0\0\0\0\0\0\0\^Y\0\0\0\^A\0\
\0\0$\0\0\0\^O\0\0\0%\0\0\0\0\0\0\0\^X\0\0\0"\0\0\0\v\0\0\0\0\0\0\0\0\
\0\0\0\^_\0\0\0\0\0\0\0\b\0\0\0!\0\0\0\^F\0\0\0\^^\0\0\0\0\0\0\0\^\\0\
\0\0\0\0\0\0\0\0\0\0\^]\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\
\^C\0\0\0\^E\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\r\0\0\0\^N\0\0\0\^D\0\0\0\^Q\0\0\0\0\0\0\0\0\0\0\0\^R\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^U\0\0\0\a\0\0\
\0\^V\0\0\0\^W\0\0\0\^Z\0\0\0\0\0\0\0\^[\0\0\0\^T\0\0\0\0\0\0\0#\0\0\0\
\0_init\0_fini\0__cxa_atexit\0_thread_atfork\0_Jv_RegisterClasses\0__c\
xa_finalize\0XauDisposeAuth\0free\0explicit_bzero\0XauFileName\0getenv\
\0strlen\0malloc\0snprintf\0__assert2\0XauGetAuthByAddr\0access\0fopen\
\0XauReadAuth\0memcmp\0fclose\0XauGetBestAuthByAddr\0strncmp\0XauLockA\
uth\0stat\0time\0remove\0open\0close\0pathconf\0link\0__errno\0sleep\0\
rename\0fread\0XauUnlockAuth\0XauWriteAuth\0fwrite\0\0\0\0\0\0\M-0U\0\
\0\0\0\0\0\b\0\0\0\0\0\0\0\M-0U\0\0\0\0\0\0\M^PD\0\0\0\0\0\0\^F\0\0\0\
\^C\0\0\0\0\0\0\0\0\0\0\0\M^XD\0\0\0\0\0\0\^F\0\0\0\^D\0\0\0\0\0\0\0\0\
\0\0\0\M-8D\0\0\0\0\0\0\a\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\M-@D\0\0\0\0\
\0\0\a\0\0\0\^B\0\0\0\0\0\0\0\0\0\0\0\M-HD\0\0\0\0\0\0\a\0\0\0\^C\0\0\
\0\0\0\0\0\0\0\0\0\M-PD\0\0\0\0\0\0\a\0\0\0\^D\0\0\0\0\0\0\0\0\0\0\0\
\M-XD\0\0\0\0\0\0\a\0\0\0\^_\0\0\0\0\0\0\0\0\0\0\0\M-`D\0\0\0\0\0\0\a\
\0\0\0\^E\0\0\0\0\0\0\0\0\0\0\0\M-hD\0\0\0\0\0\0\a\0\0\0\^F\0\0\0\0\0\
\0\0\0\0\0\0\M-pD\0\0\0\0\0\0\a\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\M-xD\0\0\
\0\0\0\0\a\0\0\0\a\0\0\0\0\0\0\0\0\0\0\0\0E\0\0\0\0\0\0\a\0\0\0\b\0\0\
\0\0\0\0\0\0\0\0\0\bE\0\0\0\0\0\0\a\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\
\^PE\0\0\0\0\0\0\a\0\0\0
\0\0\0\0\0\0\0\0\0\0\0\^XE\0\0\0\0\0\0\a\0\0\0\v\0\0\0\0\0\0\0\0\0\0\0\
E\0\0\0\0\0\0\a\0\0\0\f\0\0\0\0\0\0\0\0\0\0\0(E\0\0\0\0\0\0\a\0\0\0\r\
\0\0\0\0\0\0\0\0\0\0\0000E\0\0\0\0\0\0\a\0\0\0$\0\0\0\0\0\0\0\0\0\0\08\
E\0\0\0\0\0\0\a\0\0\0\^N\0\0\0\0\0\0\0\0\0\0\0@E\0\0\0\0\0\0\a\0\0\0\
\^O\0\0\0\0\0\0\0\0\0\0\0HE\0\0\0\0\0\0\a\0\0\0\^P\0\0\0\0\0\0\0\0\0\0\
\0PE\0\0\0\0\0\0\a\0\0\0\^Q\0\0\0\0\0\0\0\0\0\0\0XE\0\0\0\0\0\0\a\0\0\
\0\^R\0\0\0\0\0\0\0\0\0\0\0`E\0\0\0\0\0\0\a\0\0\0\^S\0\0\0\0\0\0\0\0\0\
\0\0hE\0\0\0\0\0\0\a\0\0\0\^T\0\0\0\0\0\0\0\0\0\0\0pE\0\0\0\0\0\0\a\0\
\0\0\^U\0\0\0\0\0\0\0\0\0\0\0xE\0\0\0\0\0\0\a\0\0\0\^V\0\0\0\0\0\0\0\0\
\0\0\0\M^@E\0\0\0\0\0\0\a\0\0\0\^W\0\0\0\0\0\0\0\0\0\0\0\M^HE\0\0\0\0\
\0\0\a\0\0\0\^X\0\0\0\0\0\0\0\0\0\0\0\M^PE\0\0\0\0\0\0\a\0\0\0\^Y\0\0\
\0\0\0\0\0\0\0\0\0\M^XE\0\0\0\0\0\0\a\0\0\0\^Z\0\0\0\0\0\0\0\0\0\0\0\
\240E\0\0\0\0\0\0\a\0\0\0\^[\0\0\0\0\0\0\0\0\0\0\0\M-(E\0\0\0\0\0\0\a\
\0\0\0\^\\0\0\0\0\0\0\0\0\0\0\0%s-l\0XAUTHORITY\0/usr/xenocara/lib/lib\
Xau/AuFileName.c\0%s%s\0XauFileName\0size > 0\0HOME\0rb\0/.Xauthority\
\0%s-c\0\0\0\^A\^[\^C;x\0\0\0\^N\0\0\0\M-\\^R\0\0\M^T\0\0\0\M-|\^R\0\0\
\M-4\0\0\0\^\\^S\0\0\M-T\0\0\0\M-\\^S\0\0\M-|\0\0\0l\^T\0\0$\^A\0\0\
\M-l\^T\0\0L\^A\0\0L\^V\0\0x\^A\0\0\M^\\^V\0\0\M^\\^A\0\0<\^X\0\0\M-L\
\^A\0\0<\^Z\0\0\M-|\^A\0\0\M^L\^\\0\0,\^B\0\0\M-<\^]\0\0P\^B\0\0\M^\\
\^^\0\0|\^B\0\0L\^_\0\0\M-$\^B\0\0\^T\0\0\0\0\0\0\0\^AzR\0\^Ax\^P\^A\
\^[\f\a\b\M^P\^A\0\0\^\\0\0\0\^\\0\0\0@\^R\0\0\^W\0\0\0\0E\^N\^P\M^F\
\^BC\r\^FJ\f\a\b\0\0\0\^\\0\0\0<\0\0\0@\^R\0\0\^U\0\0\0\0E\^N\^P\M^F\
\^BC\r\^FH\f\a\b\0\0\0$\0\0\0\\\0\0\0@\^R\0\0\M-@\0\0\0\0P\^N\^P\M^F\
\^BC\r\^FH\M^L\^F\M^N\^E\M^O\^D\M^K\^C\^B\M^J\f\a\b\0$\0\0\0\M^D\0\0\0\
\M-X\^R\0\0\M^P\0\0\0\0P\^N\^P\M^F\^BC\r\^FD\M^N\^D\M^K\^C\^B\\\f\a\b\
\0\0\0\0\0$\0\0\0\M-,\0\0\0@\^S\0\0\M^@\0\0\0\0U\^N\^P\M^F\^BC\r\^FD\
\M^N\^D\M^K\^C\^BB\f\a\bE\M-F\M-K\M-N\0(\0\0\0\M-T\0\0\0\M^X\^S\0\0^\
\^A\0\0\0P\^N\^P\M^F\^BC\r\^FG\M^N\^E\M^O\^D\M^K\^C\^B\M-w\f\a\b_\f\^F\
\^P\0\0\0 \0\0\0\0\^A\0\0\M-L\^T\0\0P\0\0\0\0P\^N\^P\M^F\^BC\r\^FC\M^K\
\^C^\f\a\b\0\0\0\0,\0\0\0$\^A\0\0\M-x\^T\0\0\M^S\^A\0\0\0P\^N\^P\M^F\
\^BC\r\^FO\M^C\b\M^L\a\M^M\^F\M^N\^E\M^O\^D\M^K\^C\^BF\f\a\bX\f\^F\^P\
\0,\0\0\0T\^A\0\0h\^V\0\0\M-t\^A\0\0\0P\^N\^P\M^F\^BC\r\^FO\M^C\b\M^L\
\a\M^M\^F\M^N\^E\M^O\^D\M^K\^C\^BG\f\a\bW\f\^F\^P\0,\0\0\0\M^D\^A\0\08\
\^X\0\0H\^B\0\0\0P\^N\^P\M^F\^BC\r\^FR\M^C\b\M^L\a\M^M\^F\M^N\^E\M^O\
\^D\M^K\^C\^C\M-~\^A\f\a\b]\f\^F\^P \0\0\0\M-4\^A\0\0X\^Z\0\0000\^A\0\
\0\0P\^N\^P\M^F\^BC\r\^FH\M^N\^D\M^K\^C\^C\^E\^A\f\a\b(\0\0\0\M-X\^A\0\
\0d\^[\0\0\M-`\0\0\0\0L\^N\^P\M^F\^BC\r\^FO\M^C\b"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x6000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0)
58849 wish8.5 RET mmap 4651129520128/0x43aecec4000
58849 wish8.5 CALL mmap(0x43aecec4000,0x2000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0)
58849 wish8.5 RET mmap 4651129520128/0x43aecec4000
58849 wish8.5 CALL mmap(0x43aecec6000,0x2000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x1000)
58849 wish8.5 RET mmap 4651129528320/0x43aecec6000
58849 wish8.5 CALL mmap(0x43aecec8000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2000)
58849 wish8.5 RET mmap 4651129536512/0x43aecec8000
58849 wish8.5 CALL mmap(0x43aecec9000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x2000)
58849 wish8.5 RET mmap 4651129540608/0x43aecec9000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650675093504/0x43ad1d64000
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653314101248/0x43b6f225000
58849 wish8.5 CALL getthrid()
58849 wish8.5 RET getthrid 539678/0x83c1e
58849 wish8.5 CALL __set_tcb(0x43b1e982a00)
58849 wish8.5 RET __set_tcb 0
58849 wish8.5 CALL issetugid()
58849 wish8.5 RET issetugid 0
58849 wish8.5 CALL mprotect(0x43b52b188b0,0x6750,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b52b188b0,0x6750)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b52a29000,0xef8b0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b52b1f000,0x2000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b52b22000,0xe000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43ae3fbff70,0x1090,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43ae3fbff70,0x1090)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43ae3fa4000,0x1bf70)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43ae3fc1000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43af6d7ed80,0x9280,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43af6d7ed80,0x9280)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43af6cbe000,0xc0d80)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43af6d88000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b5040c2b0,0x2d50,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b5040c2b0,0x2d50)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b503df000,0x2d2b0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b5040f000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b69144be0,0x3420,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b69144be0,0x3420)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b690f6000,0x4ebe0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b69148000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43aecec82e0,0xd20,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43aecec82e0,0xd20)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43aecec4000,0x42e0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43aecec9000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b2953d130,0xed0,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b2953d130,0xed0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b29536000,0x7130)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b2953e000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b6e2f6da0,0x2260,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b6e2f6da0,0x2260)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b6e2c9000,0x2dda0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b6e2f9000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b096e67c0,0x840,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b096e67c0,0x840)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b096dc000,0xa7c0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b096e7000,0x2000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43ad0dfb300,0x5d00,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43ad0dfb300,0x5d00)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43ad0cb0000,0x14b300)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43ad0e01000,0x4000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL kbind(0x7b2fec32f078,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f048,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL sysctl(2.12<vm.malloc_conf>,0x7b2fec32f000,0x7b2fec32f018,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL issetugid()
58849 wish8.5 RET issetugid 0
58849 wish8.5 CALL getentropy(0x7b2fec32ef70,40)
58849 wish8.5 RET getentropy 0
58849 wish8.5 CALL mmap(0,0x450,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652288294912/0x43b31fdc000
58849 wish8.5 CALL minherit(0x43b31fdc000,0x450,MAP_INHERIT_ZERO)
58849 wish8.5 RET minherit 0
58849 wish8.5 CALL mmap(0,0xe000,0<PROT_NONE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650274615296/0x43ab9f77000
58849 wish8.5 CALL mprotect(0x43ab9f78000,0xc000,0x3<PROT_READ|PROT_WRITE>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43ab9f77000,0xe000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b52b21000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b52b21000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mmap(0,0x2200,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650506993664/0x43ac7d14000
58849 wish8.5 CALL mimmutable(0x43ac7d14000,0x2200)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652431523840/0x43b3a874000
58849 wish8.5 CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652500119552/0x43b3e9df000
58849 wish8.5 CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650188795904/0x43ab4d9f000
58849 wish8.5 CALL kbind(0x7b2fec32f048,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mprotect(0x43ac56d2fa0,0x1060,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43ac56d2fa0,0x1060)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43ac56c8000,0xafa0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43ac56d4000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b4a73ec20,0x13e0,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b4a73ec20,0x13e0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b4a725000,0x19c20)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b4a740000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b0b4f9c80,0x1380,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b0b4f9c80,0x1380)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b0b4e6000,0x13c80)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b0b4fb000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b7d6ac470,0xb90,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b7d6ac470,0xb90)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b7d6a8000,0x4470)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b7d6ad000,0x1000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b0b884d40,0x12c0,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b0b884d40,0x12c0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b0b856000,0x2ed40)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b0b886000,0x2000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43b63361610,0x119f0,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43b63361610,0x119f0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b63226000,0x13b610)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43b63373000,0x10000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43aaedb3410,0x8bf0,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43aaedb3410,0x8bf0)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43aaec8d000,0x126410)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mimmutable(0x43aaedbc000,0x6000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mprotect(0x43895d18fd0,0x1030,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mimmutable(0x43895d18fd0,0x1030)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL kbind(0x7b2fec32f2f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0x43b49d3c000,0x2000,0<PROT_NONE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652688195584/0x43b49d3c000
58849 wish8.5 CALL mimmutable(0x43b49d3c000,0x2000)
58849 wish8.5 RET mimmutable 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652267802624/0x43b30c51000
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL kbind(0x7b2fec32f2e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x3<PROT_READ|PROT_WRITE>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL kbind(0x7b2fec32f2c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f248,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL lseek(0,0,SEEK_CUR)
58849 wish8.5 RET lseek 533/0x215
58849 wish8.5 CALL lseek(1,0,SEEK_CUR)
58849 wish8.5 RET lseek 533/0x215
58849 wish8.5 CALL lseek(2,0,SEEK_CUR)
58849 wish8.5 RET lseek 533/0x215
58849 wish8.5 CALL kbind(0x7b2fec32f248,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL sigaction(SIGPIPE,0x7b2fec32f2e0,0x7b2fec32f2d0)
58849 wish8.5 STRU struct sigaction { handler=SIG_IGN, mask=0<>, flags=0x2<SA_RESTART> }
58849 wish8.5 STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0x2<SA_RESTART> }
58849 wish8.5 RET sigaction 0
58849 wish8.5 CALL kbind(0x7b2fec32f248,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e988,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e988,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e958,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e928,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e928,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f228,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f198,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f198,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f258,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eee8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f238,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4649839316992/0x43aa0055000
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eed8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee78,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ecb8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eb68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651552804864/0x43b06271000
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL getrlimit(RLIMIT_STACK,0x7b2fec32f2e0)
58849 wish8.5 STRU struct rlimit { cur=8388608, max=33554432 }
58849 wish8.5 RET getrlimit 0
58849 wish8.5 CALL kbind(0x7b2fec32f218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f0c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f078,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eff8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eff8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f0c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f0c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f028,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32efd8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f0c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f0c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef98,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f228,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32efd8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650114637824/0x43ab06e6000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653335658496/0x43b706b4000
58849 wish8.5 CALL kbind(0x7b2fec32f1e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f238,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f1b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f148,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f148,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f148,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f148,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f148,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f108,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650889945088/0x43adea4a000
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f128,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f128,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f128,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f128,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f128,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f128,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653734002688/0x43b88298000
58849 wish8.5 CALL kbind(0x7b2fec32ec48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL sysctl(1.1<kern.ostype>,0x7b2fec32ed18,0x7b2fec32ecc8,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL sysctl(1.10<kern.hostname>,0x7b2fec32ee18,0x7b2fec32ecc8,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL sysctl(1.2<kern.osrelease>,0x7b2fec32ef18,0x7b2fec32ecc8,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL sysctl(1.27<kern.osversion>,0x7b2fec32f018,0x7b2fec32ecc8,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL sysctl(6.1<hw.machine>,0x7b2fec32f118,0x7b2fec32ecc8,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL kbind(0x7b2fec32ec48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL getuid()
58849 wish8.5 RET getuid 0<"root">
58849 wish8.5 CALL kbind(0x7b2fec32ec48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL open(0x43b52a4608b,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/etc/pwd.db"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32eb48)
58849 wish8.5 STRU struct stat { dev=1024, ino=104677, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=0<"wheel">, rdev=426776, atime=1731660585<"Nov 15 08:49:45 2024">.681588815, mtime=1731116711<"Nov 9 01:45:11 2024">.216003666, ctime=1731116711<"Nov 9 01:45:11 2024">.216003666, size=40960, blocks=80, blksize=16384, flags=0x0, gen=0x5e2b92f2 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL read(3,0x43b3a8a1300,0x104)
58849 wish8.5 GIO fd 3 read 260 bytes
"\0\^F\^Ua\0\0\0\^B\0\0\^D\M-R\0\0\^P\0\0\0\0\f\0\0\^A\0\0\0\^A\0\0\0\0\
\b\0\0\0\^C\0\0\0\^B\0\0\0\a\0\0\0\^O\0\0\0\a\0\0\0 \0\0\0\M-v\0\0\0\
\^A\M^Un}\M-c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^X\^A\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
58849 wish8.5 RET read 260/0x104
58849 wish8.5 CALL mmap(0,0x470,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4649826267136/0x43a9f3e3000
58849 wish8.5 CALL pread(3,0x43b3a881000,0x1000,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"B\0\M-x\^O\M-1\^O\M-(\^O[\^OS\^O\M-|\^N\M-t\^N\M-$\^N\M^^\^NU\^NP\^N\
\^E\^N\M-~\r\M-3\r\M--\rb\rZ\r\r\r\b\r\M-7\f\M-2\fk\ff\f\r\f\b\f\M-<\v\
\M-7\vl\vg\v\^U\v\^P\v\M-E
\M-@
j
e
\^[
\^V
\M-9 \M-4 i d \^S \^N \M-C\b\M->\b`\b[\b\^N\
\b \b\M-3\a\M-.\aV\aQ\a\M-y\^F\M-t\^F\M^X\^F\M^Q\^FB\^F=\^F\M-^\
\^E\M-Y\^Ez\^Eq\^E/\^E*\^E\M-h\^D^\^D\M-h\^D\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?_adblock\0*\0\M-j\^C\0\0\M-j\^C\0\0\0\0\0\
\0\0\0\0\0\0\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003\
\M-j\^C\0\0_adblock\0*\0\M-j\^C\0\0\M-j\^C\0\0\0\0\0\0\0\0\0\0\0\0/var\
/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_adblock_snowflakepr\
oxy\0*\0j\^C\0\0j\^C\0\0\0\0\0\0\0\0\0\0\0snowflake_proxy user\0/nonex\
istent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002N\0\0\0_snowflakepro\
xy\0*\0j\^C\0\0j\^C\0\0\0\0\0\0\0\0\0\0\0snowflake_proxy user\0/nonexi\
stent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003j\^C\0\0_dictd\0*\0\
\^?\^B\0\0\^?\^B\0\0\0\0\0\0\0\0\0\0\0dictd Account\0/nonexistent\0/sb\
in/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_dictd_pulse\0*\0\M-+\^B\0\0\
\M-+\^B\0\0\0\0\0\0\0\0\0\0\0PulseAudio System Daemon\0/var/run/pulse\
\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003\M-+\^B\0\0_geoclue\0*\0\
\M-[\^B\0\0\M-[\^B\0\0\0\0\0\0\0\0\0\0\0GeoClue service user\0/nonexis\
tent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002F\0\0\0_geoclue\0*\0\
\M-[\^B\0\0\M-[\^B\0\0\0\0\0\0\0\0\0\0\0GeoClue service user\0/nonexis\
tent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003\M-[\^B\0\0_sndiop\0*\
\0n\0\0\0n\0\0\0\0\0\0\0\0\0\0\0\0sndio privileged user\0/var/empty\0/\
sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002>\0\0\0_iscsid\0*\0f\0\0\0f\0\
\0\0\0\0\0\0\0\0\0\0\0iSCSI Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\
\0\0\0\0\0\0\0\0\00026\0\0\0_rad\0*\0^\0\0\0^\0\0\0\0\0\0\0\0\0\0\0\0I\
Pv6 Router Advertisement Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\
\0\0\0\0\0\0\0002.\0\0\0_ospfd\0*\0U\0\0\0U\0\0\0\0\0\0\0\0\0\0\0\0OSP\
F Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002&\0\0\
\0_tcpdump\0*\0L\0\0\0L\0\0\0\0\0\0\0\0\0\0\0\0tcpdump privsep\0/var/e\
mpty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002\^^\0\0\0_spamd\0*\0>\
\0\0\0>\0\0\0\0\0\0\0\0\0\0\0\0Spam Daemon\0/var/empty\0/sbin/nologin\
\0\0\0\0\0\0\0\0\0\0\0\0\0002\^V\0\0\0_traceroute\0*\0002\0\0\0002\0\0\
\0\0\0\0\0\0\0\0\0\0traceroute privdrop user\0/var/empty\0/sbin/nologi\
n\0\0\0\0\0\0\0\0\0\0\0\0\0002\^N\0\0\0sshd\0*\0\^[\0\0\0\^[\0\0\0\0\0\
\0\0\0\0\0\0\0sshd privsep\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\
\0\0\0\0\0002\^F\0\0\0_ftp_proxy\0*\0m\0\0\0m\0\0\0\0\0\0\0\0\0\0\0\0f\
tp proxy daemon\0/nonexistent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\
\0003m\0\0\0_iked\0*\0e\0\0\0e\0\0\0\0\0\0\0\0\0\0\0\0IKEv2 Daemon\0/v\
ar/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003e\0\0\0_ypldap\0*\
\0]\0\0\0]\0\0\0\0\0\0\0\0\0\0\0\0YP to LDAP Daemon\0/var/empty\0/sbin\
/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003]\0\0\0_ospfd\0*\0U\0\0\0U\0\0\0\
\0\0\0\0\0\0\0\0\0OSPF Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\
\0\0\0\0\0\0003U\0\0\0_dhcp\0*\0M\0\0\0M\0\0\0\0\0\0\0\0\0\0\0\0DHCP p\
rograms\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003M\0\0\0\
_unbound\0*\0005\0\0\0005\0\0\0\0\0\0\0\0\0\0\0unbound\0Unbound Daemon\
\0/var/unbound\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\00035\0\0\0_iden\
td\0*\0\^]\0\0\0\^]\0\0\0\0\0\0\0\0\0\0\0\0identd\0/var/empty\0/sbin/n\
ologin\0\0\0\0\0\0\0\0\0\0\0\0\0003\^]\0\0\0build\0*\0\^U\0\0\0\^U\0\0\
\0\0\0\0\0\0\0\0\0\0base and xenocara build\0/var/empty\0/bin/ksh\0\0\
\0\0\0\0\0\0\0\0\0\0\0003\^U\0\0\0_slaacd\0*\0s\0\0\0s\0\0\0\0\0\0\0\0\
\0\0\0\0SLAAC Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\
\0\0001_slaacd_file\0*\0h\0\0\0h\0\0\0\0\0\0\0\0\0\0\0\0file privsep\0\
/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_file_smtpd\0*\0\
_\0\0\0_\0\0\0\0\0\0\0\0\0\0\0\0SMTP Daemon\0/var/empty\0/sbin/nologin\
\0\0\0\0\0\0\0\0\0\0\0\0\0001_smtpd_ppp\0*\0R\0\0\0R\0\0\0\0\0\0\0\0\0\
\0\0\0PPP utilities\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\
\0001_ppp_mopd\0*\0N\0\0\0N\0\0\0\0\0\0\0\0\0\0\0\0MOP Daemon\0/var/em\
pty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_mopd_bgplgd\0*\0G\0\0\
\0G\0\0\0\0\0\0\0\0\0\0\0\0bgplgd Daemon\0/nonexistent\0/sbin/nologin\
\0\0\0\0\0\0\0\0\0\0\0\0\0001_bgplgd_pbuild\0*\0007\0\0\0007\0\0\0\0\0\
\0\0\0\0\0\0pbuild\0dpb build user\0/nonexistent\0/sbin/nologin\0\0\0\
\0\0\0\0\0\0\0\0\0\0001_pbuild_rusersd\0*\0 \0\0\0 \0\0\0\0\0\0\0\0\0\
\0\0\0rpc.rusersd\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\
\0001_rusersd_identd\0*\0\^]\0\0\0\^]\0\0\0\0\0\0\0\0\0\0\0\0identd\0/\
var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_identd"
58849 wish8.5 RET pread 4096/0x1000
58849 wish8.5 CALL pread(3,0x43b3a898000,0x1000,0x5000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"8\0\M-v\^O\M-#\^O\M^Y\^OF\^O>\^O\M-o\^N\M-h\^N\M^]\^N\M^W\^NN\^NE\^N\
\M-v\r\M-o\r\M^\\r\M^W\rK\rF\r\M-}\f\M-x\f\M-%\f\240\fQ\fL\f\M^?\v\M-z\
\v\M-2\v\M--\v^\vY\v\r\v\b\v\M-;
\M-6
_
Z
\^E
\M-7 \M-2 e ` \^W \^R \M-E\b\M-@\bm\bd\b\f\b\
\a\b\M-3\a\M-.\a_\aO\a\M-p\^F\M-k\^F\M-)\^F3\^F\M-)\^F\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?_adblock\0*\0\M-j\^C\0\0\M-j\^C\0\0\0\0\0\0\0\0\0\0\0\0/var/em\
pty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002R\0\0\0_snowflakeproxy\
\0*\0j\^C\0\0j\^C\0\0\0\0\0\0\0\0\0\0\0snowflake_proxy user\0/nonexist\
ent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_snowflakeproxy_dictd\0\
*\0\^?\^B\0\0\^?\^B\0\0\0\0\0\0\0\0\0\0\0dictd Account\0/nonexistent\0\
/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003\^?\^B\0\0_polkitd\0*\0\M-=\
\^B\0\0\M-=\^B\0\0\0\0\0\0\0\0\0\0\0Polkit Daemon User\0/var/empty\0/s\
bin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002J\0\0\0_geoclue\0*\0\M-[\^B\0\
\0\M-[\^B\0\0\0\0\0\0\0\0\0\0\0GeoClue service user\0/nonexistent\0/sb\
in/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_geocluenobody\0*\0\M^?\^?\0\0\
\M^?\^?\0\0\0\0\0\0\0\0\0\0\0Unprivileged user\0/nonexistent\0/sbin/no\
login\0\0\0\0\0\0\0\0\0\0\0\0\0002B\0\0\0_eigrpd\0*\0j\0\0\0j\0\0\0\0\
\0\0\0\0\0\0\0\0EIGRP Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\
\0\0\0\0\0\0002:\0\0\0_ldpd\0*\0b\0\0\0b\0\0\0\0\0\0\0\0\0\0\0\0LDP Da\
emon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\00022\0\0\0_re\
layd\0*\0Y\0\0\0Y\0\0\0\0\0\0\0\0\0\0\0\0Relay Daemon\0/var/empty\0/sb\
in/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002*\0\0\0_rbootd\0*\0P\0\0\0P\0\0\
\0\0\0\0\0\0\0\0\0\0rbootd Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\
\0\0\0\0\0\0\0\0002"\0\0\0_bgplgd\0*\0G\0\0\0G\0\0\0\0\0\0\0\0\0\0\0\0\
bgplgd Daemon\0/nonexistent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\000\
2\^Z\0\0\0_pbuild\0*\0007\0\0\0007\0\0\0\0\0\0\0\0\0\0\0pbuild\0dpb bu\
ild user\0/nonexistent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002\^R\
\0\0\0_rusersd\0*\0 \0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0rpc.rusersd\0/var/e\
mpty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002
\0\0\0daemon\0*\0\^A\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0The devil himself\
\0/root\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002\^B\0\0\0_radiusd\0\
*\0i\0\0\0i\0\0\0\0\0\0\0\0\0\0\0\0RADIUS Daemon\0/var/empty\0/sbin/no\
login\0\0\0\0\0\0\0\0\0\0\0\0\0003i\0\0\0_nsd\0*\0a\0\0\0a\0\0\0\0\0\0\
\0\0\0\0\0\0NSD Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\
\0\0\0003a\0\0\0_relayd\0*\0Y\0\0\0Y\0\0\0\0\0\0\0\0\0\0\0\0Relay Daem\
on\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003Y\0\0\0_sysl\
ogd\0*\0I\0\0\0I\0\0\0\0\0\0\0\0\0\0\0\0Syslog Daemon\0/var/empty\0/sb\
in/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003I\0\0\0_pkgfetch\0*\09\0\0\09\0\
\0\0\0\0\0\0\0\0\0\0\0pkg fetch user\0/nonexistent\0/sbin/nologin\0\0\
\0\0\0\0\0\0\0\0\0\0\00039\0\0\0_fingerd\0*\0!\0\0\0!\0\0\0\0\0\0\0\0\
\0\0\0\0fingerd\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\000\
3!\0\0\0daemon\0*\0\^A\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\0The devil himse\
lf\0/root\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003\^A\0\0\0nobody\0\
*\0\M^?\^?\0\0\M^?\^?\0\0\0\0\0\0\0\0\0\0\0Unprivileged user\0/nonexis\
tent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001nobody_radiusd\0*\0i\0\
\0\0i\0\0\0\0\0\0\0\0\0\0\0\0RADIUS Daemon\0/var/empty\0/sbin/nologin\
\0\0\0\0\0\0\0\0\0\0\0\0\0001_radiusd_ldpd\0*\0b\0\0\0b\0\0\0\0\0\0\0\
\0\0\0\0\0LDP Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\
\0\0001_ldpd_ospfd\0*\0U\0\0\0U\0\0\0\0\0\0\0\0\0\0\0\0OSPF Daemon\0/v\
ar/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_ospfd_pflogd\0*\0\
J\0\0\0J\0\0\0\0\0\0\0\0\0\0\0\0pflogd privsep\0/var/empty\0/sbin/nolo\
gin\0\0\0\0\0\0\0\0\0\0\0\0\0001_pflogd_pkguntar\0*\0:\0\0\0:\0\0\0\0\
\0\0\0\0\0\0\0\0pkg untar user\0/nonexistent\0/sbin/nologin\0\0\0\0\0\
\0\0\0\0\0\0\0\0001_pkguntar_pkgfetch\0*\09\0\0\09\0\0\0\0\0\0\0\0\0\0\
\0\0pkg fetch user\0/nonexistent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\
\0\0001_pkgfetch"
58849 wish8.5 RET pread 4096/0x1000
58849 wish8.5 CALL pread(3,0x43b3a886000,0x1000,0x4000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"B\0\M-{\^O\M-1\^O\M-(\^O_\^OV\^O\M-}\^N\M-t\^N\M-%\^N\M^]\^NP\^NE\^N\
\M-o\r\M-b\r\M^K\r\M^F\r8\r3\r\M-p\f\M-k\f\M^^\f\M^Y\fK\fF\f\M-u\v\M-p\
\v\M-"\v\M^]\vT\vO\v\^D\v\M^?
\M-4
\M-/
R
M
\^E
\M-: \M-5 l g \^O
\M-?\b\M-:\bq\bl\b$\b\^_\b\M-P\a\M-K\at\an\a\^R\a\r\a\M-<\^F\
\M-7\^FU\^FP\^F\r\^F\^F\^F\M-3\^E\M-(\^Ed\^E_\^E\^[\^E\M^Q\^D\^[\^E\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?_pfbadhost\0*\0\
\M-i\^C\0\0\M-i\^C\0\0\0\0\0\0\0\0\0\0\0\0/var/empty\0/sbin/nologin\0\
\0\0\0\0\0\0\0\0\0\0\0\0002Q\0\0\0_pfbadhost\0*\0\M-i\^C\0\0\M-i\^C\0\
\0\0\0\0\0\0\0\0\0\0\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\
\0\0001_pfbadhost_saned\0*\0)\^B\0\0)\^B\0\0\0\0\0\0\0\0\0\0\0SANE Sca\
nner Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_sa\
ned_tor\0*\0006\^B\0\0006\^B\0\0\0\0\0\0\0\0\0\0\0tor\0/nonexistent\0/\
sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\00036\^B\0\0_transmission\0*\0\
\M^V\^B\0\0\M^V\^B\0\0\0\0\0\0\0\0\0\0\0Transmission Account\0/var/tra\
nsmission\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003\M^V\^B\0\0_netsn\
mp\0*\0\M-x\^B\0\0\M-x\^B\0\0\0\0\0\0\0\0\0\0\0Net-SNMP user\0/nonexis\
tent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002I\0\0\0_cups\0*\0\^]\
\^B\0\0\^]\^B\0\0\0\0\0\0\0\0\0\0\0CUPS printer spooler daemon\0/nonex\
istent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_cups_dhcp6leased\0*\
\0t\0\0\0t\0\0\0\0\0\0\0\0\0\0\0\0DHCP6Lease Daemon\0/var/empty\0/sbin\
/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002A\0\0\0_radiusd\0*\0i\0\0\0i\0\0\
\0\0\0\0\0\0\0\0\0\0RADIUS Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\
\0\0\0\0\0\0\0\00029\0\0\0_nsd\0*\0a\0\0\0a\0\0\0\0\0\0\0\0\0\0\0\0NSD\
Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\00021\0\0\0\
_ripd\0*\0X\0\0\0X\0\0\0\0\0\0\0\0\0\0\0\0RIP Daemon\0/var/empty\0/sbi\
n/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002)\0\0\0_tftpd\0*\0O\0\0\0O\0\0\0\
\0\0\0\0\0\0\0\0\0TFTP Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\
\0\0\0\0\0\0002!\0\0\0_rpki-client\0*\0F\0\0\0F\0\0\0\0\0\0\0\0\0\0\0\
\0rpki-client user\0/nonexistent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\
\0\0002\^Y\0\0\0_dpb\0*\0006\0\0\0006\0\0\0\0\0\0\0\0\0\0\0\0dpb privs\
ep\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002\^Q\0\0\0_rs\
tatd\0*\0\^^\0\0\0\^^\0\0\0\0\0\0\0\0\0\0\0\0rpc.rstatd\0/var/empty\0/\
sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0002 \0\0\0root\0*\0\0\0\0\
\0\0\0\0\0\0\0\0\0\0\0\0\0daemon\0Charlie &\0/root\0/bin/ksh\0\0\0\0\0\
\0\0\0\0\0\0\0\0002\^A\0\0\0_syspatch\0*\0p\0\0\0p\0\0\0\0\0\0\0\0\0\0\
\0\0syspatch unprivileged user\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\
\0\0\0\0\0\0\0003p\0\0\0_file\0*\0h\0\0\0h\0\0\0\0\0\0\0\0\0\0\0\0file\
privsep\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003h\0\0\
\0_rwalld\0*\0`\0\0\0`\0\0\0\0\0\0\0\0\0\0\0\0rpc.rwalld\0/var/empty\0\
/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003`\0\0\0_ripd\0*\0X\0\0\0X\0\
\0\0\0\0\0\0\0\0\0\0\0RIP Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\
\0\0\0\0\0\0\0\0003X\0\0\0_rbootd\0*\0P\0\0\0P\0\0\0\0\0\0\0\0\0\0\0\0\
rbootd Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0003P\
\0\0\0_pfetch\0*\08\0\0\08\0\0\0\0\0\0\0\0\0\0\0\0dpb fetch user\0/non\
existent\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\00038\0\0\0_unwind\0*\
\0000\0\0\0000\0\0\0\0\0\0\0\0\0\0\0\0Unwind Daemon\0/var/empty\0/sbin\
/nologin\0\0\0\0\0\0\0\0\0\0\0\0\00030\0\0\0_rusersd\0*\0 \0\0\0 \0\0\
\0\0\0\0\0\0\0\0\0\0rpc.rusersd\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\
\0\0\0\0\0\0\0003 \0\0\0root\0*\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0daemo\
n\0Charlie &\0/root\0/bin/ksh\0\0\0\0\0\0\0\0\0\0\0\0\0003\0\0\0\0moss\
\0*\0\M-h\^C\0\0\M-h\^C\0\0\0\0\0\0\0\0\0\0staff\0Maurice McCarthy\0/h\
ome/moss\0/bin/ksh\0\0\0\0\0\0\0\0\0\0\0\0\0001moss_dhcp6leased\0*\0t\
\0\0\0t\0\0\0\0\0\0\0\0\0\0\0\0DHCP6Lease Daemon\0/var/empty\0/sbin/no\
login\0\0\0\0\0\0\0\0\0\0\0\0\0001_dhcp6leased_ftp_proxy\0*\0m\0\0\0m\
\0\0\0\0\0\0\0\0\0\0\0\0ftp proxy daemon\0/nonexistent\0/sbin/nologin\
\0\0\0\0\0\0\0\0\0\0\0\0\0001_ftp_proxy_eigrpd\0*\0j\0\0\0j\0\0\0\0\0\
\0\0\0\0\0\0\0EIGRP Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\
\0\0\0\0\0001_eigrpd_hostapd\0*\0V\0\0\0V\0\0\0\0\0\0\0\0\0\0\0\0HostA\
P Daemon\0/var/empty\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_hosta\
pd_unbound\0*\0005\0\0\0005\0\0\0\0\0\0\0\0\0\0\0unbound\0Unbound Daem\
on\0/var/unbound\0/sbin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_unbound_p\
ortmap\0*\0\^\\0\0\0\^\\0\0\0\0\0\0\0\0\0\0\0\0portmap\0/var/empty\0/s\
bin/nologin\0\0\0\0\0\0\0\0\0\0\0\0\0001_portmapsshd\0*\0\^[\0\0\0\^[\
\0\0\0\0\0\0\0\0\0\0\0\0sshd privsep\0/var/empty\0/sbin/nologin\0\0\0\
\0\0\0\0\0\0\0\0\0\0001sshd"
58849 wish8.5 RET pread 4096/0x1000
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f268,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f2c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f098,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f078,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef78,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ebc8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e4b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e4b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e6e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e898,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e898,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e7d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e7d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8a8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e768,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __realpath(0x7b2fec32e610,0x7b2fec32dd00)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL stat(0x43b3a887c00,0x7b2fec32e9a8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/encoding"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192365, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4794279, atime=1731634208<"Nov 15 01:30:08 2024">.621571581, mtime=1731074786<"Nov 8 14:06:26 2024">.865977925, ctime=1731074786<"Nov 8 14:06:26 2024">.865977925, size=2048, blocks=4, blksize=16384, flags=0x0, gen=0x4f3ca4f2 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL kbind(0x7b2fec32ebc8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ebc8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eb18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __realpath(0x7b2fec32ea20,0x7b2fec32e110)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/encoding"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/encoding"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL kbind(0x7b2fec32eb08,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL open(0x43b3a887c30,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/encoding/us-ascii.enc"
58849 wish8.5 RET open -1 errno 2 No such file or directory
58849 wish8.5 CALL kbind(0x7b2fec32ef78,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f098,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e948,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f098,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL fcntl(0,F_ISATTY)
58849 wish8.5 RET fcntl 1
58849 wish8.5 CALL kbind(0x7b2fec32f068,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f068,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32edb8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ede8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32df48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32df48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32def8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32da98,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32dff8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32dda8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ede8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e008,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32dd18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e008,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e948,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e888,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e948,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef28,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee98,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee38,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d338,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d338,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d658,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d188,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32db68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32db68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d678,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d638,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ebe8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eb48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ebd8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e958,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea38,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ebe8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eae8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e788,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ebe8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __realpath(0x7b2fec32e700,0x7b2fec32ddf0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL access(0x43b3a8889f0,0<F_OK>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/init.tcl"
58849 wish8.5 RET access 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaf8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e948,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL stat(0x43b3a8889f0,0x7b2fec32e940)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/init.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192367, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4794392, atime=1731660490<"Nov 15 08:48:10 2024">.051459345, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.965976303, size=25025, blocks=52, blksize=16384, flags=0x0, gen=0xe5e9665e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43b3a8889f0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/init.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL kbind(0x7b2fec32e7b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL kbind(0x7b2fec32e7b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL kbind(0x7b2fec32e7b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e768,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e878,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e878,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651440959488/0x43aff7c7000
58849 wish8.5 CALL kbind(0x7b2fec32e778,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"# init.tcl --
#
# Default system startup file for Tcl-based applications. Defines
# "unknown" procedure and auto-load facilities.
#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1996 Sun Microsystems, Inc.
# Copyright (c) 1998-1999 Scriptics Corporation.
# Copyright (c) 2004 by Kevin B. Kenny. All rights reserved.
#
# See the file "license.terms" for information on usage and redistribu\
tion
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
# This test intentionally written in pre-7.5 Tcl
if {[info commands package] == ""} {
error "version mismatch: library\\nscripts expect Tcl version 7.5b\
1 or later but the loaded version is\\nonly [info patchlevel]"
}
package require -exact Tcl 8.5.19
# Compute the auto path to use in this interpreter.
# The values on the path come from several locations:
#
# The environment variable TCLLIBPATH
#
# tcl_library, which is the directory containing this init.tcl script.
# [tclInit] (Tcl_Init()) searches around for the directory containing \
this
# init.tcl and defines tcl_library to that location before sourcing it\
.
#
# The parent directory of tcl_library. Adding the parent
# means that packages in peer directories will be found automatically.
#
# Also add the directory ../lib relative to the directory where the
# executable is located. This is meant to find binary packages for th\
e
# same architecture as the current executable.
#
# tcl_pkgPath, which is set by the platform-specific initialization ro\
utines
# On UNIX it is compiled in
# On Windows, it is not used
if {![info exists auto_path]} {
if {[info exists env(TCLLIBPATH)]} {
set auto_path $env(TCLLIBPATH)
} else {
set auto_path ""
}
}
namespace eval tcl {
variable Dir
foreach Dir [list $::tcl_library [file dirname $::tcl_library]] {
if {$Dir ni $::auto_path} {
lappend ::auto_path $Dir
}
}
# OpenBSD layout.
# Tcl extensions shouldn't be installed in /usr/local/lib.
# Don't add /usr/local/lib to the auto_path.
set Dir [file join [file dirname [file dirname \\
[info nameofexecutable]]] lib]
if {$Dir ne {/usr/local/lib} && $Dir ni $::auto_path} {
lappend ::auto_path $Dir
}
catch {
foreach Dir $::tcl_pkgPath {
if {$Dir ni $::auto_path} {
lappend ::auto_path $Dir
}
}
}
if {![interp issafe]} {
variable Path [encoding dirs]
set Dir [file join $::tcl_library encoding]
if {$Dir ni $Path} {
lappend Path $Dir
encoding dirs $Path
}
}
# TIP #255 min and max functions
namespace eval mathfunc {
proc min {args} {
if {![llength $args]} {
return -code error \\
"too few arguments to math function \\"min\\""
}
set val Inf
foreach arg $args {
# This will handle forcing the numeric value without
# ruining the internal type of a numeric object
if {[catch {expr {double($arg)}} err]} {
return -code error $err
}
if {$arg < $val} {set val $arg}
}
return $val
}
proc max {args} {
if {![llength $args]} {
return -code error \\
"too few arguments to math function \\"max\\""
}
set val -Inf
foreach arg $args {
# This will handle forcing the numeric value without
# ruining the internal type of a numeric object
if {[catch {expr {double($arg)}} err]} {
return -code error $err
}
if {$arg > $val} {set val $arg}
}
return $val
}
namespace export min max
}
}
# Windows specific end of initialization
if {(![interp issafe]) && ($tcl_platform(platform) eq "windows")} {
namespace eval tcl {
proc EnvTraceProc {lo n1 n2 op} {
global env
set x $env($n2)
set env($lo) $x
set env([string toupper $lo]) $x
}
proc InitWinEnv {} {
global env tcl_platform
foreach p [array names env] {
set u [string toupper $p]
if {$u ne $p} {
switch -- $u {
COMSPEC -
PATH {
set temp $env($p)
unset env($p)
set env($u) $temp
trace add variable env($p) write \\
[namespace code [list EnvTraceProc\
$p]]
trace add vari"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL kbind(0x7b2fec32e728,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e6d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e818,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650598146048/0x43acd402000
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"able env($u) write \\
[namespace code [list EnvTraceProc\
$p]]
}
}
}
}
if {![info exists env(COMSPEC)]} {
if {$tcl_platform(os) eq "Windows NT"} {
set env(COMSPEC) cmd.exe
} else {
set env(COMSPEC) command.com
}
}
}
InitWinEnv
}
}
# Setup the unknown package handler
if {[interp issafe]} {
package unknown {::tcl::tm::UnknownHandler ::tclPkgUnknown}
} else {
# Set up search for Tcl Modules (TIP #189).
# and setup platform specific unknown package handlers
if {$tcl_platform(os) eq "Darwin"
&& $tcl_platform(platform) eq "unix"} {
package unknown {::tcl::tm::UnknownHandler \\
{::tcl::MacOSXPkgUnknown ::tclPkgUnknown}}
} else {
package unknown {::tcl::tm::UnknownHandler ::tclPkgUnknown}
}
# Set up the 'clock' ensemble
namespace eval ::tcl::clock [list variable TclLibDir $::tcl_librar\
y]
proc clock args {
namespace eval ::tcl::clock [list namespace ensemble create -c\
ommand \\
[uplevel 1 [list namespace origin [lindex [info level \
0] 0]]] \\
-subcommands {
add clicks format microseconds milliseconds scan s\
econds
}]
# Auto-loading stubs for 'clock.tcl'
foreach cmd {add format scan} {
proc ::tcl::clock::$cmd args {
variable TclLibDir
source -encoding utf-8 [file join $TclLibDir clock.tcl\
]
return [uplevel 1 [info level 0]]
}
}
return [uplevel 1 [info level 0]]
}
}
# Conditionalize for presence of exec.
if {[namespace which -command exec] eq ""} {
# Some machines do not have exec. Also, on all
# platforms, safe interpreters do not have exec.
set auto_noexec 1
}
# Define a log command (which can be overwitten to log errors
# differently, specially when stderr is not available)
if {[namespace which -command tclLog] eq ""} {
proc tclLog {string} {
catch {puts stderr $string}
}
}
# unknown --
# This procedure is called when a Tcl command is invoked that doesn't
# exist in the interpreter. It takes the following steps to make the
# command available:
#
# 1. See if the command has the form "namespace inscope ns cmd" \
and
# if so, concatenate its arguments onto the end and evaluate \
it.
# 2. See if the autoload facility can locate the command in a
# Tcl script file. If so, load it and execute it.
# 3. If the command was invoked interactively at top-level:
# (a) see if the command exists as an executable UNIX progra\
m.
# If so, "exec" the command.
# (b) see if the command requests csh-like history substitut\
ion
# in one of the common forms !!, !<number>, or ^old^new.\
If
# so, emulate csh's history substitution.
# (c) see if the command is a unique abbreviation for anothe\
r
# command. If so, invoke the command.
#
# Arguments:
# args - A list whose elements are the words of the original
# command, including the command name.
proc unknown args {
variable ::tcl::UnknownPending
global auto_noexec auto_noload env tcl_interactive errorInfo error\
Code
# If the command word has the form "namespace inscope ns cmd"
# then concatenate its arguments onto the end and evaluate it.
set cmd [lindex $args 0]
if {[regexp "^:*namespace\\[ \\t\\n\\]+inscope" $cmd] && [llength \
$cmd] == 4} {
#return -code error "You need an {*}"
set arglist [lrange $args 1 end]
set ret [catch {uplevel 1 ::$cmd $arglist} result opts]
dict unset opts -errorinfo
dict incr opts -level
return -options $opts $result
}
catch {set savedErrorInfo $errorInfo}
catch {set savedErrorCode $errorCode}
set name $cmd
if {![info exists auto_noload]} {
#
# Make sure we're not trying to load the same proc twice.
#
if {[info exists UnknownPending($name)]} {
return -code error "self-referential recursion\\
in \\"unknown\\" for command \\"$name\\""
}
set UnknownPending($name) pending
set ret [catch {
auto_load $name [uplevel 1 {::namespace current}]
} msg opts]
unset UnknownPending($name)
if {$ret != 0} {
dict append opts -errorinfo "\\n (autoloading \\"$name\
\\")"
return -options $opts $msg
}
if {![array size UnknownPending]} {
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" unset UnknownPending
}
if {$msg} {
if {[info exists savedErrorCode]} {
set ::errorCode $savedErrorCode
} else {
unset -nocomplain ::errorCode
}
if {[info exists savedErrorInfo]} {
set errorInfo $savedErrorInfo
} else {
unset -nocomplain errorInfo
}
set code [catch {uplevel 1 $args} msg opts]
if {$code == 1} {
#
# Compute stack trace contribution from the [uplevel].
# Note the dependence on how Tcl_AddErrorInfo, etc.
# construct the stack trace.
#
set errInfo [dict get $opts -errorinfo]
set errCode [dict get $opts -errorcode]
set cinfo $args
if {[string bytelength $cinfo] > 150} {
set cinfo [string range $cinfo 0 150]
while {[string bytelength $cinfo] > 150} {
set cinfo [string range $cinfo 0 end-1]
}
append cinfo ...
}
append cinfo "\\"\\n (\\"uplevel\\" body line 1)"
append cinfo "\\n invoked from within"
append cinfo "\\n\\"uplevel 1 \\$args\\""
#
# Try each possible form of the stack trace
# and trim the extra contribution from the matching ca\
se
#
set expect "$msg\\n while executing\\n\\"$cinfo"
if {$errInfo eq $expect} {
#
# The stack has only the eval from the expanded co\
mmand
# Do not generate any stack trace here.
#
dict unset opts -errorinfo
dict incr opts -level
return -options $opts $msg
}
#
# Stack trace is nested, trim off just the contributio\
n
# from the extra "eval" of $args due to the "catch" ab\
ove.
#
set expect "\\n invoked from within\\n\\"$cinfo"
set exlen [string length $expect]
set eilen [string length $errInfo]
set i [expr {$eilen - $exlen - 1}]
set einfo [string range $errInfo 0 $i]
#
# For now verify that $errInfo consists of what we are\
about
# to return plus what we expected to trim off.
#
if {$errInfo ne "$einfo$expect"} {
error "Tcl bug: unexpected stack trace in \\"unkno\
wn\\"" {} \\
[list CORE UNKNOWN BADTRACE $einfo $expect $er\
rInfo]
}
return -code error -errorcode $errCode \\
-errorinfo $einfo $msg
} else {
dict incr opts -level
return -options $opts $msg
}
}
}
if {([info level] == 1) && ([info script] eq "")
&& [info exists tcl_interactive] && $tcl_interactive} {
if {![info exists auto_noexec]} {
set new [auto_execok $name]
if {$new ne ""} {
set redir ""
if {[namespace which -command console] eq ""} {
set redir ">&@stdout <@stdin"
}
uplevel 1 [list ::catch \\
[concat exec $redir $new [lrange $args 1 end]]\
\\
::tcl::UnknownResult ::tcl::UnknownOptions]
dict incr ::tcl::UnknownOptions -level
return -options $::tcl::UnknownOptions $::tcl::Unknown\
Result
}
}
if {$name eq "!!"} {
set newcmd [history event]
} elseif {[regexp {^!(.+)$} $name -> event]} {
set newcmd [history event $event]
} elseif {[regexp {^\\^([^^]*)\\^([^^]*)\\^?$} $name -> old ne\
w]} {
set newcmd [history event -1]
catch {regsub -all -- $old $newcmd $new newcmd}
}
if {[info exists newcmd]} {
tclLog $newcmd
history change $newcmd 0
uplevel 1 [list ::catch $newcmd \\
::tcl::UnknownResult ::tcl::UnknownOptions]
dict incr ::tcl::UnknownOptions -level
return -options $::tcl::UnknownOptions $::tcl::UnknownResu\
lt
}
set ret [catch {set candidates [info commands $name*]} msg]
if {$name eq "::"} {
set name ""
}
if {$ret != 0} {
dict append opts -errorinfo \\
"\\n (expanding command prefix \\"$name\\" in u\
nknown)"
return -options $opts $msg
}
# Filter out bogus matches when $name contained
# a glob-special char [Bug 946952]
if {$name eq ""} {
# Handle empty $name separately due to strangeness
# in [string first] (See RFE 1243354)
set cmds $candidates
} else {
set cmds [list]
foreach x $candidates {
if {[string first $name $x] == 0} {
lappend cmds $x
}
}
}
if {[llength $cmds] == 1} {
uplevel 1 [list ::catch [lreplace $args 0 0 [lindex $cmds \
0]] \\
::tcl::UnknownResult ::tcl::UnknownOptions]
dict incr ::tcl::UnknownOptions -level
return"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0x43acd405000,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650598158336/0x43acd405000
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" -options $::tcl::UnknownOptions $::tcl::UnknownResult
}
if {[llength $cmds]} {
return -code error "ambiguous command name \\"$name\\": [l\
sort $cmds]"
}
}
return -code error "invalid command name \\"$name\\""
}
# auto_load --
# Checks a collection of library directories to see if a procedure
# is defined in one of them. If so, it sources the appropriate
# library file to create the procedure. Returns 1 if it successfully
# loaded the procedure, 0 otherwise.
#
# Arguments:
# cmd - Name of the command to find and load.
# namespace (optional) The namespace where the command is being used \
- must be
# a canonical namespace as returned [namespace c\
urrent]
# for instance. If not given, namespace current \
is used.
proc auto_load {cmd {namespace {}}} {
global auto_index auto_path
if {$namespace eq ""} {
set namespace [uplevel 1 [list ::namespace current]]
}
set nameList [auto_qualify $cmd $namespace]
# workaround non canonical auto_index entries that might be around
# from older auto_mkindex versions
lappend nameList $cmd
foreach name $nameList {
if {[info exists auto_index($name)]} {
namespace eval :: $auto_index($name)
# There's a couple of ways to look for a command of a give\
n
# name. One is to use
# info commands $name
# Unfortunately, if the name has glob-magic chars in it li\
ke *
# or [], it may not match. For our purposes here, a bette\
r
# route is to use
# namespace which -command $name
if {[namespace which -command $name] ne ""} {
return 1
}
}
}
if {![info exists auto_path]} {
return 0
}
if {![auto_load_index]} {
return 0
}
foreach name $nameList {
if {[info exists auto_index($name)]} {
namespace eval :: $auto_index($name)
if {[namespace which -command $name] ne ""} {
return 1
}
}
}
return 0
}
# auto_load_index --
# Loads the contents of tclIndex files on the auto_path directory
# list. This is usually invoked within auto_load to load the index
# of available commands. Returns 1 if the index is loaded, and 0 if
# the index is already loaded and up to date.
#
# Arguments:
# None.
proc auto_load_index {} {
variable ::tcl::auto_oldpath
global auto_index auto_path
if {[info exists auto_oldpath] && ($auto_oldpath eq $auto_path)} {
return 0
}
set auto_oldpath $auto_path
# Check if we are a safe interpreter. In that case, we support onl\
y
# newer format tclIndex files.
set issafe [interp issafe]
for {set i [expr {[llength $auto_path] - 1}]} {$i >= 0} {incr i -1\
} {
set dir [lindex $auto_path $i]
set f ""
if {$issafe} {
catch {source [file join $dir tclIndex]}
} elseif {[catch {set f [open [file join $dir tclIndex]]}]} {
continue
} else {
set error [catch {
set id [gets $f]
if {$id eq "# Tcl autoload index file, version 2.0"} {
eval [read $f]
} elseif {$id eq "# Tcl autoload index file: each line\
identifies a Tcl"} {
while {[gets $f line] >= 0} {
if {([string index $line 0] eq "#") \\
|| ([llength $line] != 2)} {
continue
}
set name [lindex $line 0]
set auto_index($name) \\
"source [file join $dir [lindex $line \
1]]"
}
} else {
error "[file join $dir tclIndex] isn't a proper Tc\
l index file"
}
} msg opts]
if {$f ne ""} {
close $f
}
if {$error} {
return -options $opts $msg
}
}
}
return 1
}
# auto_qualify --
#
# Compute a fully qualified names list for use in the auto_index array\
.
# For historical reasons, commands in the global namespace do not have\
leading
# :: in the index key. The list has two elements when the command name\
is
# relative (no leading ::) and the namespace is not the global one. Ot\
herwise
# only one name is returned (and searched in the auto_index).
#
# Arguments -
# cmd The command name. Can be any name accepted for command
# invocations (Like "foo::::bar").
# namespace The namespace where the command is being used - must b\
e
# "
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" a canonical namespace as returned by [namespace current]
# for instance.
proc auto_qualify {cmd namespace} {
# count separators and clean them up
# (making sure that foo:::::bar will be treated as foo::bar)
set n [regsub -all {::+} $cmd :: cmd]
# Ignore namespace if the name starts with ::
# Handle special case of only leading ::
# Before each return case we give an example of which category it \
is
# with the following form :
# (inputCmd, inputNameSpace) -> output
if {[string match ::* $cmd]} {
if {$n > 1} {
# (::foo::bar , *) -> ::foo::bar
return [list $cmd]
} else {
# (::global , *) -> global
return [list [string range $cmd 2 end]]
}
}
# Potentially returning 2 elements to try :
# (if the current namespace is not the global one)
if {$n == 0} {
if {$namespace eq "::"} {
# (nocolons , ::) -> nocolons
return [list $cmd]
} else {
# (nocolons , ::sub) -> ::sub::nocolons nocolons
return [list ${namespace}::$cmd $cmd]
}
} elseif {$namespace eq "::"} {
# (foo::bar , ::) -> ::foo::bar
return [list ::$cmd]
} else {
# (foo::bar , ::sub) -> ::sub::foo::bar ::foo::bar
return [list ${namespace}::$cmd ::$cmd]
}
}
# auto_import --
#
# Invoked during "namespace import" to make see if the imported comman\
ds
# reside in an autoloaded library. If so, the commands are loaded so
# that they will be available for the import links. If not, then this
# procedure does nothing.
#
# Arguments -
# pattern The pattern of commands being imported (like "foo::*")
# a canonical namespace as returned by [namespace curren\
t]
proc auto_import {pattern} {
global auto_index
# If no namespace is specified, this will be an error case
if {![string match *::* $pattern]} {
return
}
set ns [uplevel 1 [list ::namespace current]]
set patternList [auto_qualify $pattern $ns]
auto_load_index
foreach pattern $patternList {
foreach name [array names auto_index $pattern] {
if {([namespace which -command $name] eq "")
&& ([namespace qualifiers $pattern] eq [namespace \
qualifiers $name])} {
namespace eval :: $auto_index($name)
}
}
}
}
# auto_execok --
#
# Returns string that indicates name of program to execute if
# name corresponds to a shell builtin or an executable in the
# Windows search path, or "" otherwise. Builds an associative
# array auto_execs that caches information about previous checks,
# for speed.
#
# Arguments:
# name - Name of a command.
if {$tcl_platform(platform) eq "windows"} {
# Windows version.
#
# Note that info executable doesn't work under Windows, so we have to
# look for files with .exe, .com, or .bat extensions. Also, the path
# may be in the Path or PATH environment variables, and path
# components are separated with semicolons, not colons as under Unix.
#
proc auto_execok name {
global auto_execs env tcl_platform
if {[info exists auto_execs($name)]} {
return $auto_execs($name)
}
set auto_execs($name) ""
set shellBuiltins [list cls copy date del dir echo erase md mkdir \
\\
mklink rd ren rename rmdir start time type ver vol]
if {[info exists env(PATHEXT)]} {
# Add an initial ; to have the {} extension check first.
set execExtensions [split ";$env(PATHEXT)" ";"]
} else {
set execExtensions [list {} .com .exe .bat .cmd]
}
if {[string tolower $name] in $shellBuiltins} {
# When this is command.com for some reason on Win2K, Tcl won't
# exec it unless the case is right, which this corrects. COMS\
PEC
# may not point to a real file, so do the check.
set cmd $env(COMSPEC)
if {[file exists $cmd]} {
set cmd [file attributes $cmd -shortname]
}
return [set auto_execs($name) [list $cmd /c $name]]
}
if {[llength [file split $name]] != 1} {
foreach ext $execExtensions {
set file ${name}${ext}
if {[file exists $file] && ![file isdirectory $file]} {
return [set auto_execs($name) [list $file]]
}
}
return ""
}
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" set path "[file dirname [info nameof]];.;"
if {[info exists env(WINDIR)]} {
set windir $env(WINDIR)
}
if {[info exists windir]} {
if {$tcl_platform(os) eq "Windows NT"} {
append path "$windir/system32;"
}
append path "$windir/system;$windir;"
}
foreach var {PATH Path path} {
if {[info exists env($var)]} {
append path ";$env($var)"
}
}
foreach ext $execExtensions {
unset -nocomplain checked
foreach dir [split $path {;}] {
# Skip already checked directories
if {[info exists checked($dir)] || ($dir eq "")} {
continue
}
set checked($dir) {}
set file [file join $dir ${name}${ext}]
if {[file exists $file] && ![file isdirectory $file]} {
return [set auto_execs($name) [list $file]]
}
}
}
return ""
}
} else {
# Unix version.
#
proc auto_execok name {
global auto_execs env
if {[info exists auto_execs($name)]} {
return $auto_execs($name)
}
set auto_execs($name) ""
if {[llength [file split $name]] != 1} {
if {[file executable $name] && ![file isdirectory $name]} {
set auto_execs($name) [list $name]
}
return $auto_execs($name)
}
foreach dir [split $env(PATH) :] {
if {$dir eq ""} {
set dir .
}
set file [file join $dir $name]
if {[file executable $file] && ![file isdirectory $file]} {
set auto_execs($name) [list $file]
return $auto_execs($name)
}
}
return ""
}
}
# ::tcl::CopyDirectory --
#
# This procedure is called by Tcl's core when attempts to call the
# filesystem's copydirectory function fail. The semantics of the call
# are that 'dest' does not yet exist, i.e. dest should become the exac\
t
# image of src. If dest does exist, we throw an error.
#
# Note that making changes to this procedure can change the results
# of running Tcl's tests.
#
# Arguments:
# action - "renaming" or "copying"
# src - source directory
# dest - destination directory
proc tcl::CopyDirectory {action src dest} {
set nsrc [file normalize $src]
set ndest [file normalize $dest]
if {$action eq "renaming"} {
# Can't rename volumes. We could give a more precise
# error message here, but that would break the test suite.
if {$nsrc in [file volumes]} {
return -code error "error $action \\"$src\\" to\\
\\"$dest\\": trying to rename a volume or move a directo\
ry\\
into itself"
}
}
if {[file exists $dest]} {
if {$nsrc eq $ndest} {
return -code error "error $action \\"$src\\" to\\
\\"$dest\\": trying to rename a volume or move a directo\
ry\\
into itself"
}
if {$action eq "copying"} {
# We used to throw an error here, but, looking more closel\
y
# at the core copy code in tclFCmd.c, if the destination
# exists, then we should only call this function if -force
# is true, which means we just want to over-write. So,
# the following code is now commented out.
#
# return -code error "error $action \\"$src\\" to\\
# \\"$dest\\": file already exists"
} else {
# Depending on the platform, and on the current
# working directory, the directories '.', '..'
# can be returned in various combinations. Anyway,
# if any other file is returned, we must signal an error.
set existing [glob -nocomplain -directory $dest * .*]
lappend existing {*}[glob -nocomplain -directory $dest \\
-type hidden * .*]
foreach s $existing {
if {[file tail $s] ni {. ..}} {
return -code error "error $action \\"$src\\" to\\
\\"$dest\\": file already exists"
}
}
}
} else {
if {[string first $nsrc $ndest] != -1} {
set srclen [expr {[llength [file split $nsrc]] - 1}]
set ndest [lindex [file split $ndest] $srclen]
if {$ndest eq [file tail $nsrc]} {
return -code error "error $action \\"$src\\" to\\
\\"$dest\\": trying to rename a volume or move a dir\
ectory\\
into itself"
}
}
file mkdir $dest
}
# Have to be careful to capture both visible and hidden files.
# We will also be more generous to the file system and not
# assume the hidden and non-hid"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 GIO fd 3 read 449 bytes
"den lists are non-overlapping.
#
# On Unix 'hidden' files begin with '.'. On other platforms
# or filesystems hidden files may have other interpretations.
set filelist [concat [glob -nocomplain -directory $src *] \\
[glob -nocomplain -directory $src -types hidden *]]
foreach s [lsort -unique $filelist] {
if {[file tail $s] ni {. ..}} {
file copy -force -- $s [file join $dest [file tail $s]]
}
}
return
}
"
58849 wish8.5 RET read 449/0x1c1
58849 wish8.5 CALL mmap(0x43acd409000,0x6000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650598174720/0x43acd409000
58849 wish8.5 CALL read(3,0x43aff7c7028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL kbind(0x7b2fec32e878,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e838,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e808,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e7d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e748,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e748,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32e778,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e7f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e878,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d538,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d358,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d358,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d358,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d6b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e608,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e528,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e608,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650808713216/0x43ad9cd2000
58849 wish8.5 CALL kbind(0x7b2fec32e0d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e1e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32dd68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e088,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e158,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL munmap(0x43ad9d07000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43ad9cda000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43ad9cfa000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43ad9ce5000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL kbind(0x7b2fec32d578,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652336353280/0x43b34db1000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651441737728/0x43aff885000
58849 wish8.5 CALL kbind(0x7b2fec32ebe8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee08,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32edd8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f038,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f008,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f068,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ee88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ed88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ebc8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea78,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL issetugid()
58849 wish8.5 RET issetugid 0
58849 wish8.5 CALL kbind(0x7b2fec32ea78,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651082403840/0x43aea1d5000
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e568,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e568,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e568,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e568,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL socket(AF_UNIX,0x8001<SOCK_STREAM|SOCK_CLOEXEC>,0)
58849 wish8.5 RET socket 3
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL getsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32ead4,0x7b2fec32ead0)
58849 wish8.5 RET getsockopt 0
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL setsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32ead4,4)
58849 wish8.5 RET setsockopt 0
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL connect(3,0x7b2fec32ea40,106)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 NAMI "/tmp/.X11-unix/X0"
58849 wish8.5 RET connect 0
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e7e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL getpeername(3,0x43b3a89a900,0x7b2fec32e8e0)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 RET getpeername 0
58849 wish8.5 CALL kbind(0x7b2fec32e7e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL sysctl(1.10<kern.hostname>,0x7b2fec32e8e0,0x7b2fec32e890,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL kbind(0x7b2fec32e7d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e748,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e718,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e718,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e718,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e718,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e718,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x3<PROT_READ|PROT_WRITE>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL kbind(0x7b2fec32e718,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e748,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL access(0x43b3a87c120,0x4<R_OK>)
58849 wish8.5 NAMI "/root/.Xauthority"
58849 wish8.5 RET access -1 errno 2 No such file or directory
58849 wish8.5 CALL kbind(0x7b2fec32e978,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x6000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651596005376/0x43b08ba4000
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL fcntl(3,F_GETFL)
58849 wish8.5 RET fcntl 2
58849 wish8.5 CALL fcntl(3,F_SETFL,0x6<O_RDWR|O_NONBLOCK>)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8a8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e7a8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e7a8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL poll(0x7b2fec32e908,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x5<POLLIN|POLLOUT>, revents=0x4<POLLOUT> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL kbind(0x7b2fec32e7a8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL writev(3,0x7b2fec32e9a0,2)
58849 wish8.5 STRU struct iovec [2] { base=0x7b2fec32ea00, len=12 } { base=0x43b6e2d6bfc, len=0 }
58849 wish8.5 GIO fd 3 wrote 12 bytes
"l\0\v\0\0\0\0\0\0\0\0\0"
58849 wish8.5 RET writev 12/0xc
58849 wish8.5 CALL kbind(0x7b2fec32e888,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL futex(0x43b3a8b3a20,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,2147483647,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL kbind(0x7b2fec32e868,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL futex(0x43b3a899360,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,1,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL kbind(0x7b2fec32e868,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e868,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL recvfrom(3,0x43b3a87d2c0,0x8,0,0,0)
58849 wish8.5 RET recvfrom -1 errno 35 Resource temporarily unavailable
58849 wish8.5 CALL kbind(0x7b2fec32e868,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL poll(0x7b2fec32e948,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x1<POLLIN>, revents=0x1<POLLIN> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL recvfrom(3,0x43b3a87d2c0,0x8,0,0,0)
58849 wish8.5 GIO fd 3 read 8 bytes
"\0@\v\0\0\0\^P\0"
58849 wish8.5 RET recvfrom 8
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL recvfrom(3,0x43b3a8a65a8,0x40,0,0,0)
58849 wish8.5 GIO fd 3 read 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET recvfrom 64/0x40
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL write(2,0x43b3a8a65a8,0x40)
58849 wish8.5 GIO fd 2 wrote 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET write 64/0x40
58849 wish8.5 CALL write(2,0x7b2fec32e9a0,0x1)
58849 wish8.5 GIO fd 2 wrote 1 bytes
"
"
58849 wish8.5 RET write 1
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL shutdown(3,SHUT_RDWR)
58849 wish8.5 RET shutdown 0
58849 wish8.5 CALL kbind(0x7b2fec32e8b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32e8b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e888,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32eaa8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea58,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ea38,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ec18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL socket(AF_UNIX,0x8001<SOCK_STREAM|SOCK_CLOEXEC>,0)
58849 wish8.5 RET socket 3
58849 wish8.5 CALL getsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32eb24,0x7b2fec32eb20)
58849 wish8.5 RET getsockopt 0
58849 wish8.5 CALL setsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32eb24,4)
58849 wish8.5 RET setsockopt 0
58849 wish8.5 CALL connect(3,0x7b2fec32ea90,106)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 NAMI "/tmp/.X11-unix/X0"
58849 wish8.5 RET connect 0
58849 wish8.5 CALL getpeername(3,0x43b3a8a3700,0x7b2fec32e930)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 RET getpeername 0
58849 wish8.5 CALL sysctl(1.10<kern.hostname>,0x7b2fec32e930,0x7b2fec32e8e0,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL access(0x43b3a87c120,0x4<R_OK>)
58849 wish8.5 NAMI "/root/.Xauthority"
58849 wish8.5 RET access -1 errno 2 No such file or directory
58849 wish8.5 CALL fcntl(3,F_GETFL)
58849 wish8.5 RET fcntl 2
58849 wish8.5 CALL fcntl(3,F_SETFL,0x6<O_RDWR|O_NONBLOCK>)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL poll(0x7b2fec32e958,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x5<POLLIN|POLLOUT>, revents=0x4<POLLOUT> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL writev(3,0x7b2fec32e9f0,2)
58849 wish8.5 STRU struct iovec [2] { base=0x7b2fec32ea50, len=12 } { base=0x43b6e2d6bfc, len=0 }
58849 wish8.5 GIO fd 3 wrote 12 bytes
"l\0\v\0\0\0\0\0\0\0\0\0"
58849 wish8.5 RET writev 12/0xc
58849 wish8.5 CALL futex(0x43b3a87da00,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,2147483647,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL futex(0x43b3a89d200,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,1,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL recvfrom(3,0x43b3a8990b0,0x8,0,0,0)
58849 wish8.5 RET recvfrom -1 errno 35 Resource temporarily unavailable
58849 wish8.5 CALL poll(0x7b2fec32e998,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x1<POLLIN>, revents=0x1<POLLIN> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL recvfrom(3,0x43b3a8990b0,0x8,0,0,0)
58849 wish8.5 GIO fd 3 read 8 bytes
"\0@\v\0\0\0\^P\0"
58849 wish8.5 RET recvfrom 8
58849 wish8.5 CALL recvfrom(3,0x43b3a8a62d8,0x40,0,0,0)
58849 wish8.5 GIO fd 3 read 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET recvfrom 64/0x40
58849 wish8.5 CALL write(2,0x43b3a8a62d8,0x40)
58849 wish8.5 GIO fd 2 wrote 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET write 64/0x40
58849 wish8.5 CALL write(2,0x7b2fec32e9f0,0x1)
58849 wish8.5 GIO fd 2 wrote 1 bytes
"
"
58849 wish8.5 RET write 1
58849 wish8.5 CALL shutdown(3,SHUT_RDWR)
58849 wish8.5 RET shutdown 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32f098,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32f028,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL lseek(2,0,SEEK_CUR)
58849 wish8.5 RET lseek 663/0x297
58849 wish8.5 CALL kbind(0x7b2fec32eff8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL fcntl(2,F_ISATTY)
58849 wish8.5 RET fcntl 1
58849 wish8.5 CALL kbind(0x7b2fec32ef78,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL ioctl(2,TIOCGETA,0x43b3a875d10)
58849 wish8.5 RET ioctl 0
58849 wish8.5 CALL kbind(0x7b2fec32eff8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ef18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL write(2,0x43aea1d5028,0x21)
58849 wish8.5 GIO fd 2 wrote 33 bytes
"Application initialization failed"
58849 wish8.5 RET write 33/0x21
58849 wish8.5 CALL write(2,0x43aea1d5028,0x2)
58849 wish8.5 GIO fd 2 wrote 2 bytes
": "
58849 wish8.5 RET write 2
58849 wish8.5 CALL write(2,0x43aea1d5028,0x20)
58849 wish8.5 GIO fd 2 wrote 32 bytes
"couldn't connect to display ":0""
58849 wish8.5 RET write 32/0x20
58849 wish8.5 CALL write(2,0x43aea1d5028,0x2)
58849 wish8.5 GIO fd 2 wrote 2 bytes
"\r
"
58849 wish8.5 RET write 2
58849 wish8.5 CALL __realpath(0x7b2fec32ee70,0x7b2fec32e560)
58849 wish8.5 NAMI "/usr/local/lib/password-gorilla"
58849 wish8.5 NAMI "/usr/local/lib/password-gorilla"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43b3a896de0,0x7b2fec32f090)
58849 wish8.5 NAMI "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194764, mode=-rwxr-xr-x , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805944, atime=1731660585<"Nov 15 08:49:45 2024">.691461604, mtime=1727487360<"Sep 28 02:36:00 2024">, ctime=1731074792<"Nov 8 14:06:32 2024">.435977633, size=272195, blocks=576, blksize=16384, flags=0x0, gen=0x48ae4750 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43b3a896de0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/password-gorilla/gorilla.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"#! /bin/sh
# the next line restarts using wish \\
exec /usr/local/bin/wish8.5 "$0" ${1+"$@"}
#
# --------------------------------------------------------------------\
--
# Password Gorilla, a password database manager
# --------------------------------------------------------------------\
--
#
# Copyright (c) 2005-2009 Frank Pilhofer
# Copyright (c) 2010-2013 Richard Ellis and Zbigniew Diaczyszyn
#
# Version 1.5.3.7 tested with ActiveState's Tcl/Tk 8.5.13.0
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License al\
ong
# with this program; if not, write to the Free Software Foundation 51
# Franklin Street, Suite 500 Boston, MA 02110-1335
# --------------------------------------------------------------------\
--
#
# For further information and contact see https:/github.com/zdia/goril\
la
#
package provide app-gorilla 1.0
namespace eval ::gorilla {
variable Version {$Revision: 1.5.3.7 $}
variable Dir "/usr/local/lib/password-gorilla"
variable PicsDir [ file join $::gorilla::Dir pics ]
}
# --------------------------------------------------------------------\
--
# Make sure that our prerequisite packages are available. Don't want
# that to fail with a cryptic error message.
# --------------------------------------------------------------------\
--
#
if {[catch {package require Tk 8.5} oops]} {
#
# Because of using Themed Widgets we need Tk 8.5
#
puts "Password Gorilla has been unable to load Tk 8.5, which i\
s required."
puts "Reason: '$oops'"
exit 1
}
# Fix the issue of TTk widgets having different default background col\
ors
# from Tk widgets (esp. toplevel widgets) by automatically placing a \
TTk
# frame in each toplevel when the toplevel is created - this way when
# widgets are positioned in the toplevel, what should show through beh\
ind
# them is the ::ttk::frame background color, not the ::tk::toplevel
# background color.
rename toplevel _toplevel
proc toplevel {path args} {
_toplevel $path {*}$args
::ttk::frame $path.ttkbkg
place $path.ttkbkg -in $path -anchor nw -x 0 -y 0 -bordermode \
outside \\
-relheight 1.0 -relwidth 1.0
# this lower should be redundant, but do it just to be sure
lower $path.ttkbkg
return $path
}
option add *Dialog.msg.wrapLength 6i
if {[catch {package require Tcl 8.5}]} {
wm withdraw .
tk_messageBox -type ok -icon error -default ok \\
-title "Need more recent Tcl/Tk" \\
-message "The Password Gorilla requires at least Tcl/T\
k 8.5\\
to run. This smells like Tcl/Tk [info patchlevel].\\
Please upgrade."
exit 1
}
# --------------------------------------------------------------------\
--
proc ::gorilla::if-platform? { test body } {
if { $::tcl_platform(platform) eq $test } {
uplevel 1 $body
}
#ruff
# Tests the tcl_platform(platform) global against passed param\
eter
# test, and executes body if the test is true.
#
# test - value to compare against tcl_platform(platform) conte\
nts
# body - script to execute when the test passes
} ; # end proc if-platform?
# --------------------------------------------------------------------\
--
# Note - the load-package proc is defined in the global namespace beca\
use it
# is called from outside the gorilla namespace in order to load
# packages
proc load-package { args } {
# A helper proc to load packages. This collects the details o\
f "catching"
# and reporting errors upon package loading into one single pr\
oc.
#
# args - package(s) to load
foreach package $args {
if { [ catch "package require $package" catchResult ca\
tchOptions ] } {
# a package load error occurred - create log f\
ile and report to user
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651258540032/0x43af49cf000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" set statusinfo [ subst {
-begin----------------------------------------------------------------\
--
Statusinfo created [ clock format [ clock seconds ] -format "%b %d %Y \
%H:%M:%S" ]
Password Gorilla version: $::gorilla::Version
Failure to load package: $package
catch result: $catchResult
catch options: $catchOptions
auto_path: $::auto_path
modules path: [ ::tcl::tm::path list ]
tcl_platform: [ array get ::tcl_platform ]
info library: [ info library ]
gorilla::Dir: $::gorilla::Dir
gorilla::Dir contents:
[ join [ glob -directory $::gorilla::Dir -nocomplain * ] "\\n\
\\t" ]
auto_path dir contents:
[ set result ""
foreach dir $::auto_path {
append result "$dir\\n"
append result "\\t[ join [ glob -directory $dir -nocomplain -- * ]\
"\\n\\t" ]\\n"
}
return $result ]
modules dir contents:
[ set result ""
foreach dir [ ::tcl::tm::path list ] {
append result "$dir\\n"
append result "\\t[ join [ glob -directory $dir -nocomplain -- * ]\
"\\n\\t" ]\\n"
}
return $result ]
-end------------------------------------------------------------------\
--
} ] ; # end of subst
# for Linux, put failure status log in users h\
ome dir - for anything
# else, use "Desktop"
if { $::tcl_platform(os) eq "Linux" } {
set logfile [ file join ~ gorilla-debu\
g-log ]
} else {
set logfile [ file join ~ Desktop gori\
lla-debug-log.txt ]
}
set logfile [ file normalize $logfile ]
if { [ catch { set logfd [ open $logfile {WRON\
LY CREAT APPEND} ] } ] } {
# could not create log file - limp alo\
ng as best we can
text .error
pack .error
.error insert end "\\nPassword Gorilla\
was unable to create a debug log file.\\n"
.error insert end "Please copy and pas\
te the contents of this window into am email to\\nPWGorilla@t-online.d\
e\\n"
.error insert end "Use Control+c to co\
py\\n\\n$statusinfo\\n"
.error tag add sel 0.0 end
vwait forever
} else {
puts $logfd $statusinfo
close $logfd
}
# also output to the terminal as well
puts $statusinfo
set message "Couldn't find the package $packag\
e.\\n$package is required for Password Gorilla\\nThe file $logfile was\
created for debugging purposes.\\nPlease mail this file to 'PWGorilla\
@t-online.de'.\\nPassword Gorilla will now terminate."
tk_messageBox -type ok -icon error -message $m\
essage
exit
} ; # end if catch package require
} ; # end foreach package in args
} ; # end proc gorilla::load-package
load-package msgcat
namespace import msgcat::*
mcload [file join $::gorilla::Dir msgs]
# The message files will be loaded according to the system's actual
# language. During initialization of Gorilla's preferences the command
# 'mclocale' will set the language accoring to Gorilla's resource file\
.
#
# Look out! If you use a file ROOT.msg in the msgs folder it will be u\
sed
# without regard to the Unix LOCALE configuration
#
# The isaac and viewhelp packages should be in the current directory
#
foreach file {isaac.tcl viewhelp.tcl} {
if {[catch {source [file join $::gorilla::Dir $file]} oops]} {
wm withdraw .
tk_messageBox -type ok -icon error -default ok \\
-title [ mc "Need %s" $file ] \\
-message [ mc "The Password Gorilla requires t\
he \\"%s\\"\\
package. This seems to be an installation prob\
lem, as\\
this file ought to be part of the Password Gor\
illa\\
distribution.\\n\\nError message: %s" $file $o\
ops ]
exit 1
}
} ; unset file
#
# Itcl 3.4 is in an subdirectory available to auto_path
# The environment variable ::env(ITCL_LIBRARY) is set
# to the subdirectory Itcl3.4 in the pkgindex.tcl
# This is necessary for the embedded standalone version in MacOSX
#
if {[tk windowingsystem] == "aqua"} {
# set auto_path /Library/Tcl/teapot/package/macosx-universal/l\
ib/Itcl3.4
set auto_path ""
}
foreach testitdir [glob -nocomplain [file join $::gorilla::Dir itcl*]]\
{
if {[file isdirectory $testitdir]} {
lappend auto_path $testitdir
}
} ; unset -nocomplain testitdir
#
# Check the subdirectories for needed packages
#
# Set our own install directory and our local tcllib directory as firs\
t
# elements in auto_path, so t"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"hat local items will be found before system
# installed items
set auto_path [ list $::gorilla::Dir [ file join $::gorilla::Dir tclli\
b ] {*}$auto_path ]
# Initialize the Tcl modules system to look into modules/ directory
::tcl::tm::add [ file join $::gorilla::Dir modules ]
foreach package {Itcl pwsafe tooltip PWGprogress} {
load-package $package
} ; unset package
#
# If installed, we can use the uuid package (part of Tcllib) to genera\
te
# UUIDs for new logins, but we don't depend on it.
#
catch {package require uuid}
# Detect whether or not the file containing download sites exists
set ::gorilla::hasDownloadsFile [ file exists [ file join $::gorilla::\
Dir downloads.txt ] ]
#
# --------------------------------------------------------------------\
--
# Prepare and hide main window
# --------------------------------------------------------------------\
--
#
namespace eval gorilla {}
if {![info exists ::gorilla::init]} {
wm withdraw .
set ::gorilla::init 0
}
# --------------------------------------------------------------------\
--
# GUI and other Initialization
# --------------------------------------------------------------------\
--
proc gorilla::Init {} {
set ::gorilla::status ""
set ::gorilla::uniquenodeindex 0
set ::gorilla::dirty 0
set ::gorilla::overridePasswordPolicy 0
set ::gorilla::isPRNGInitialized 0
set ::gorilla::activeSelection 0
catch {unset ::gorilla::dirName}
catch {unset ::gorilla::fileName}
catch {unset ::gorilla::db}
catch {unset ::gorilla::statusClearId}
catch {unset ::gorilla::clipboardClearId}
catch {unset ::gorilla::idleTimeoutTimerId}
if {[llength [trace info variable ::gorilla::status]] == 0} {
trace add variable ::gorilla::status write ::gorilla::\
StatusModified
}
# New preferences system by Richard Ellis
#
# This dict defines all the preference variables, their defaul\
ts, and
# an anonymous validation proc for use in loading stored prefe\
rences
# from disk. The format is name of pref as key, each value be\
ing a
# two element list. Each two element list is preference defau\
lt and
# anonymous validation proc in that order. The validation pro\
c
# returns true for valid, false for invalid.
set ::gorilla::preference(all-preferences) {
autoclearMultiplier { 1 { {value} { expr { ( \
[ string is integer $value ] ) && ( $value >= 0 ) } } } }
autocopyUserid { 0 { {value} { string is\
boolean $value } } }
backupPath { {} { {value} { file exis\
ts $value } } }
browser-exe { {} { {value} { return tr\
ue } } }
browser-param { {} { {value} { return tr\
ue } } }
caseSensitiveFind { 0 { {value} { string is\
boolean $value } } }
clearClipboardAfter { 0 { {value} { expr { ( \
[ string is integer $value ] ) && ( $value >= 0 ) } } } }
defaultVersion { 3 { {value} { expr { ( \
[ string is integer $value ] ) && ( $value >= 0 ) } } } }
doubleClickAction { nothing { {value} { return tr\
ue } } }
exportAsUnicode { 0 { {value} { string is\
boolean $value } } }
exportFieldSeparator { , { {value} { expr { ( \
[ string length $value ] == 1 ) && ( $value in [list , \\; :] ) } } } \
}
exportIncludeNotes { 1 { {value} { string is\
boolean $value } } }
exportIncludePassword { 1 { {value} { string is\
boolean $value } } }
exportShowWarning { 1 { {value} { string is\
boolean $value } } }
findInAny { 0 { {value} { string is\
boolean $value } } }
findInNotes { 1 { {"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0x43af49d2000,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651258552320/0x43af49d2000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"value} { string is boolean $value } } \
}
findInPassword { 1 { {value} { string is\
boolean $value } } }
findInTitle { 1 { {value} { string is\
boolean $value } } }
findInURL { 1 { {value} { string is\
boolean $value } } }
findInUsername { 1 { {value} { string is\
boolean $value } } }
findThisText { {} { {value} { return tr\
ue } } }
fontsize { 10 { {value} { string is\
integer $value } } }
gorillaAutocopy { 0 { {value} { string is\
boolean $value } } }
gorillaIcon { 0 { {value} { string is\
boolean $value } } }
hideLogins { 0 { {value} { string is\
boolean $value } } }
iconifyOnAutolock { 0 { {value} { string is\
boolean $value } } }
idleTimeoutDefault { 5 { {value} { expr { ( \
[ string is integer $value ] ) && ( $value >= 0 ) } } } }
keepBackupFile { 0 { {value} { string is\
boolean $value } } }
lang { en { {value} { return tr\
ue } } }
lockDatabaseAfter { 0 { {value} { expr { ( \
[ string is integer $value ] ) && ( $value >= 0 ) } } } }
lruSize { 10 { {value} { expr { ( \
[ string is integer $value ] ) && ( $value >= 0 ) } } } }
lru { {} { {value} { file exis\
ts $value } } }
rememberGeometries { 1 { {value} { string is\
boolean $value } } }
saveImmediatelyDefault { 0 { {value} { string is\
boolean $value } } }
timeStampBackup { 0 { {value} { string is\
boolean $value } } }
unicodeSupport { 1 { {value} { expr { ( \
[ string is integer $value ] ) && ( $value >= 0 ) } } } }
} ; # end set ::gorilla::preferences(all-preferences)
# initialize all the default preference settings now
dict for {pref value} $::gorilla::preference(all-preferences) \
{
set ::gorilla::preference($pref) [ lindex $value 0 ]
}
# make the ::tcl::mathop operators and functions visible
namespace path {::tcl::mathop ::tcl::mathfunc}
} ; # end proc gorilla::Init
# This callback traces writes to the ::gorilla::status variable, which
# is shown in the UI's status line. We arrange for the variable to be
# cleared after some time, so that potentially sensible information
# like "password copied to clipboard" does not show forever.
#
proc gorilla::StatusModified {name1 name2 op} {
if {![string equal $::gorilla::status ""] && \\
![string equal $::gorilla::status "Ready."] && \\
![string equal $::gorilla::status [mc "Welcome to the \
Password Gorilla."]]} {
if {[info exists ::gorilla::statusClearId]} {
after cancel $::gorilla::statusClearId
}
set ::gorilla::statusClearId [after 5000 ::gorilla::Cl\
earStatus]
} else {
if {[info exists ::gorilla::statusClearId]} {
after cancel $::gorilla::statusClearId
}
}
.status configure -text $::gorilla::status
}
proc gorilla::Feedback { message } {
# A proc to place a message string into the Gorilla status lin\
e. This
# encapuslates the "set" to a global var plus the update idlet\
asks for
# the status line into a single proc, making the code elsewher\
e slightly
# cleaner.
#
# message - the message string to be placed in the status line\
.
#
# returns GORILLA_OK as it should alway"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"s perform its task
set ::gorilla::status $message
update idletasks
return GORILLA_OK
} ; # end proc gorilla::Feedback
proc gorilla::ClearStatus {} {
catch {unset ::gorilla::statusClearId}
set ::gorilla::status ""
}
proc gorilla::InitGui {} {
# themed widgets do'nt know a resource database
# option add *Button.font {Helvetica 10 bold}
# option add *title.font {Helvetica 16 bold}
option add *Menu.tearOff 0
menu .mbar
# Struktur im menu_desc(ription):
# label widgetname {item tag command shortcut}
# the "tag" value is used to group menu entries for parallel
# enablement/disablement via the setmenustate proc
set meta Control
set menu_meta Ctrl
if {[tk windowingsystem] == "aqua"} {
set meta Command
set menu_meta Cmd
# mac is showing the Apple key icon but app is hanging\
if a procedure
# is calling a vwait loop. So we just show the letter.\
Both meta keys
# are working later on (Tk 8.5.8)
# set menu_meta ""
}
# Note - the string below, because it is passed through subst,\
needs
# to be formatted as a proper string representation of a list.\
That
# is why all of the [mc] calls are surrounded by quotes. This
# assures that the result of the [mc] call (unless the result
# contains a ") will be a proper single element of the string \
rep.
# of a list.
set ::gorilla::menu_desc [ subst {
"[ mc File ]" file {"[ mc New ] ..." {} gori\
lla::New ""
"[ mc Open ] ..." {} gori\
lla::Open $menu_meta+O
"[ mc Merge ] ..." open gori\
lla::Merge ""
"[ mc Save ]" save gori\
lla::Save $menu_meta+S
"[ mc "Save As" ] ..." open gori\
lla::SaveAs ""
separator "" "" \
""
"[ mc Export ] ..." open gori\
lla::Export ""
"[ mc Import ] ..." open gori\
lla::Import ""
separator mac "" \
""
"[ mc Preferences ] ..." mac gori\
lla::Preferences ""
separator mac "" \
""
"[ mc Exit ]" mac gori\
lla::Exit $menu_meta+X
}
"[ mc Edit ]" edit {"[ mc "Copy Username" ]" login \
{gorilla::CopyToClipboard Username} $menu_meta+U
"[ mc "Copy Password" ]" login \
{gorilla::CopyToClipboard Password} $menu_meta+P
"[ mc "Copy URL" ]" login \
{gorilla::CopyToClipboard URL} $menu_meta+W
separator "" \
"" ""
"[ mc "Clear Clipboard" ]" "" \
gorilla::ClearClipboard $menu_meta+C
separator "" \
"" ""
"[ mc Find ] ..." open \
gorilla::Find $menu_meta+F
"[ mc "Find next" ]" open \
gorilla::FindNext $menu_meta+G
}
"[ mc Login ]" login {"[ mc "Add Login" ]" open\
gorilla::AddLogin $menu_meta+A
"[ mc "Edit Login" ]" open\
gorilla::EditLogin $menu_meta+E
"[ mc "View Login" ]" open\
gorilla::ViewLogin $menu_meta+V
"[ mc "Delete Login" ]" logi\
n gorilla::DeleteLogin ""
"[ mc "Move Login" ] ..." logi\
n gorilla::MoveLogin ""
separator "" \
"" ""
"[ mc "Add Group" ] ..." open\
gorilla::AddGroup ""
"[ mc "Add Subgroup" ] ..." grou\
p gorilla::AddSubgroup ""
"[ mc "Rename Group" ] ..." grou\
p gorilla::RenameGroup ""
"[ mc "Move Group" ] ..." grou\
p gorilla::MoveGroup ""
"[ mc "Delete Group" ]" grou\
p gorilla::DeleteGroup ""
}
"[ mc Security ]" security {"[ mc "Password Policy" ] \
..." open gorilla::PasswordPolicy ""
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" "[ mc Customize ] ..." \
open gorilla::DatabasePreferencesDialog ""
separator \
"" "" ""
"[ mc "Change Master Passw\
ord" ] ..." open gorilla::ChangePassword ""
separator \
"" "" ""
"[ mc "Lock now" ]" \
open gorilla::LockDatabase $menu_meta+L
}
"[ mc Help ]" help {"[ mc Help ] ..." mac gorilla::He\
lp ""
"[ mc License ] ..." "" \
gorilla::License ""
"[ mc "Look for Update"]" dld \
gorilla::versionLookup ""
separator mac \
"" ""
"[ mc About ] ..." mac \
tkAboutDialog ""
}
} ] ;# end ::gorilla::menu_desc
foreach {menu_name menu_widget menu_itemlist} $::gorilla::menu\
_desc {
.mbar add cascade -label $menu_name -menu .mbar.$menu_\
widget
menu .mbar.$menu_widget
set taglist ""
foreach {menu_item menu_tag menu_command shortcut} $me\
nu_itemlist {
# erstelle f\M-C\M-<r jedes widget eine Tag-Li\
ste
lappend taglist $menu_tag
if {$menu_tag eq "mac" && [tk windowingsystem]\
== "aqua"} {
continue
}
if {$menu_item eq "separator"} {
.mbar.$menu_widget add separator
} else {
.mbar.$menu_widget add command -label \
$menu_item \\
-command $menu_command -accele\
rator $shortcut
}
}
set ::gorilla::tag_list($menu_widget) $taglist
}
# modify the "About" menuitem in the Apple application menu
if {[tk windowingsystem] == "aqua"} {
menu .mbar.apple
.mbar add cascade -menu .mbar.apple
.mbar.apple add command -label "[mc "About"] Password \
Gorilla" -command gorilla::About
# .mbar.apple add separator
}
# This command must be last menu oriented command due to TkCoc\
oa for MacOSX
. configure -menu .mbar
# note - if the help menu widget name changes, this will need \
to be updated
# To generate documentation use command line: gorilla --sourcedoc
# ::gorilla::addRufftoHelp .mbar.help
# menueintrag deaktivieren mit dem tag "login
# suche in menu_tag(widget) in den Listen dort nach dem Tag "o\
pen" mit lsearch -all
# etwa in $menu_tag(file) = {"" login}, ergibt index=2
# Zust\M-C\M-$ndige Prozedur: setmenustate .mbar login disable\
d/normal
# Index des Menueintrags finden:
# suche alle Eintr\M-C\M-$ge mit dem Tag tag und finde den Ind\
ex
# .mbar.file entryconfigure 2 -state disabled
wm title . "Password Gorilla"
wm iconname . "Gorilla"
wm iconphoto . $::gorilla::images(application)
if {[info exists ::gorilla::preference(geometry,.)]} {
TryResizeFromPreference .
} else {
wm geometry . 640x480
}
#-------------------------------------------------------------\
--------
# Arbeitsfl\M-C\M-$che bereitstellen unter Verwendung von ttk:\
:treeview
# Code aus ActiveTcl demo/tree.tcl
#-------------------------------------------------------------\
--------
set tree [ttk::treeview .tree \\
-yscroll [ list .vsb set ] -xscroll [ list .hsb set ] \
-show tree \\
-style gorilla.Treeview]
.tree tag configure red -foreground red
.tree tag configure black -foreground black
if {[tk windowingsystem] ne "aqua"} {
set sbtype ttk::scrollbar
} else {
set sbtype scrollbar
}
$sbtype .vsb -orient vertical -command [ list .tree yview ]
$sbtype .hsb -orient horizontal -command [ list .tree xview ]
ttk::label .status -relief sunken -padding [list 5 2]
## Arrange the tree, its scrollbars, and the status line in th\
e toplevel
grid .tree .vsb -sticky nsew
# .hsb does not do anything at the moment - therefore do not d\
isplay it
#grid .hsb x -sticky news
grid .status - -sticky news
grid columnconfigure . 0 -weight 1
grid rowconfigure . 0 -weight 1
bind .tree <Double-Button-1> {gorilla::TreeNodeDouble [.tree f\
ocus]}
bind .tree <Button-3> { gorilla::TreeNodePopup [ gorilla::GetS\
electedNode %x %y ] }
bind .tree <<TreeviewSelect>> gorilla::TreeNodeSelectionChange\
d
# On the Macintosh, make the context menu also pop up on
# Control-Le"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0x43af49d6000,0x6000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651258568704/0x43af49d6000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"ft Mousebutton and button 2 <right-click>
catch {
if {[tk windowingsystem] == "aqua"} {
bind .tree <$meta-Button-1> { gorilla::TreeNod\
ePopup [ gorilla::GetSelectedNode %x %y ] }
bind .tree <Button-2> { gorilla::TreeNodePopup\
[ gorilla::GetSelectedNode %x %y ] }
}
}
#
# remember widgets
#
set ::gorilla::toplevel(.) "."
set ::gorilla::widgets(main) ".mbar"
set ::gorilla::widgets(tree) ".tree"
#
# Initialize menu state
#
UpdateMenu
# setmenustate .mbar group disabled
# setmenustate .mbar login disabled
#
# bindings
#
catch {bind . <MouseWheel> "$tree yview scroll \\[expr {-%D/12\
0}\\] units"}
bind . <$meta-o> {.mbar.file invoke 1}
bind . <$meta-s> {.mbar.file invoke 3}
bind . <$meta-x> {.mbar.file invoke 11}
bind . <$meta-u> {.mbar.edit invoke 0}
bind . <$meta-p> {.mbar.edit invoke 1}
bind . <$meta-w> {.mbar.edit invoke 2}
bind . <$meta-c> {.mbar.edit invoke 4}
bind . <$meta-f> {.mbar.edit invoke 6}
bind . <$meta-g> {.mbar.edit invoke 7}
bind . <$meta-a> {.mbar.login invoke 0}
bind . <$meta-e> {.mbar.login invoke 1}
bind . <$meta-v> {.mbar.login invoke 2}
bind . <$meta-l> {.mbar.security invoke 5}
# bind . <$meta-L> "gorilla::Reload"
# bind . <$meta-R> "gorilla::Refresh"
# bind . <$meta-C> "gorilla::ToggleConsole"
# bind . <$meta-q> "gorilla::Exit"
# bind . <$meta-q> "gorilla::msg"
# ctrl-x ist auch exit, ctrl-q reicht
if {[tk windowingsystem] == "aqua"} {
# for some reason, on MacOS, PWGorilla will "freeze" i\
f the Cmd+o key is
# used to access the "File->Open" function. The "free\
ze" happens once
# PGWorilla enters the vwait loop within the OpenDatab\
ase proc. For
# some reason the event loop stops processing user inp\
ut from that point
# forward. However, inserting a short amount of delay\
before invoking
# the open dialog prevents the "freeze" from happening\
. Note, this is a
# workaround. A true fix will involve rewriting the o\
pen dialog to
# remove the internal vwait event loop.
bind . <$meta-o> "after 150 [ bind . <$meta-o> ]"
}
#
# Handler for the X Selection
#
selection handle -selection PRIMARY . gorilla::XSelectionHan\
dler
selection handle -selection CLIPBOARD . gorilla::XSelectionHan\
dler
#
# Handler for the WM_DELETE_WINDOW event, which is sent when t\
he
# user asks the window manager to destroy the application
#
wm protocol . WM_DELETE_WINDOW gorilla::Exit
# attach drag and drop functionality to the tree
::gorilla::dnd init $::gorilla::widgets(tree)
}
#
# Initialize the Pseudo Random Number Generator
#
proc gorilla::InitPRNG {{seed ""}} {
# Initialize the ISAAC PRNG seed. Takes one parameter.
#
# Try to compose a not very predictable seed
#
append seed "20041201"
append seed [ clock seconds ] [ clock clicks ] [ pid ]
append seed [ winfo id . ] [ winfo geometry . ] [ winfo pointe\
rxy . ]
set hashseed [ ::sha2::sha256 -bin $seed ]
# Determine if a /dev/urandom device exists, if so attempt to \
obtain 992
# bytes more random data to produce an even better seed. Wrap\
everything
# in a catch so that if something goes wrong, PWGorilla will c\
ontinue on
# as if nothing had happened - lack of a better seed value is \
not a reason
# to abort. This will also cover instances where [file] think\
s urandom
# exists and is readable, but open throws an error for some re\
ason.
if { [ file exists /dev/urandom ] && [ file readable /dev/uran\
dom ] } {
catch {
set rfd [ open /dev/urandom {RDONLY BINARY} ]
append hashseed [ read $rfd 992 ]
close $rfd
}
}
# Help the randomness for our friends on Windows or anywhere e\
lse that
# /dev/urandom does not exist or is unreadable - this recommen\
dation comes
# from the IASSC webpage (http://burtleburtle.net/bob/rand/isa\
acafa.html)
# where it states:
#
# As ISAAC is intended to be a secure cipher, if you want to\
reseed it,
# one way is to use some other cipher to seed some initial v\
ersion of
# ISAAC, then use ISAAC's output as a seed for other instanc\
es of ISAAC
# whenever they need to be reseeded.
#
# As it happens, PWGorilla calls this seed fu"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"nction twice. Once when
# first starting, then a second time after entry of the unlock\
password.
# The second call includes some additional entropy derived fro\
m timing the
# time between keystrokes during password entry. Leverage tha\
t second
# call to add ISAAC feedback entropy when /dev/urandom has not\
been
# available to pad out to 1024 bytes of seed material.
if { $::gorilla::isPRNGInitialized
&& ( [ string length $hashseed ] < 1024 ) } {
while { [ string length $hashseed ] < 1024 } {
append hashseed [ binary format i [ ::isaac::int32 ]\
]
}
}
#
# Init PRNG
#
#puts "seeding with [ string length $hashseed ] bytes" ; # deb\
ugging
isaac::srand $hashseed
set ::gorilla::isPRNGInitialized 1
# The original version of this proc utilized the pwsafe v2 mod\
ified sha1
# hash to scramble the incoming seed value. In the time since\
PWGorilla
# was first written, there have been some cryptanalysis result\
s that have
# weakened the sha1 hash function. So this seems like a good \
time to move
# up to a better hash. In this case sha256.
#ruff
# seed - a value to use as the seed for the PRNG. The input v\
alue will
# have some more tidbits of system details appended to hopeful\
ly increase
# the possible entropy and will then be hashed by sha256 to ob\
tain 32
# bytes of binary seed data.
#
# If /dev/urandom is available, it will be used to obtain 992 \
more bytes
# of higher quality random data to fill out the full 256 by 32\
bit seed
# size of the ISAAC PRNG. If /dev/urandom is not available, I\
SAAC itself
# will be used to pad out 992 additional bytes of seed data du\
ring a
# second call to this proc by the password unlock code.
#
# Note as well that the choice of /dev/urandom for additional \
PRNG seed
# randomness is purposeful. The /dev/random device is defined\
as blocking
# if there is insufficient entropy in the kernel random pool t\
o generate
# random output data. Blocking on /dev/random will make all o\
f PWGorilla
# appear to hang, potentially for a quite lengthy and complete\
ly
# indeterminate amount of time given that 992 bytes of data ar\
e being
# read.
#
# 992 bytes of very good quality random data from /dev/urandom\
is an order
# of magnitude or more (likely much more) better random seed s\
ource than
# what PWGorilla was historically utilizing (16 bytes of modif\
ied sha1
# output). As such the fact that /dev/urandom is not defined \
as
# cryptographic quality is mitigated somewhat by obtaining suc\
h a large
# amount of data, of a much higher quality than previously, th\
at the net
# effect is that PWGorilla's random number generation has incr\
eased in
# quality significantly on any system having a working /dev/ur\
andom
# device. All without appearing to hang for a lengthy period \
of time.
} ; # end proc gorilla::InitPRNG
proc setmenustate {widget tag_pattern state} {
if {$tag_pattern eq "all"} {
foreach {menu_name menu_widget menu_itemlist} $::goril\
la::menu_desc {
set index 0
foreach {title a b c } $menu_itemlist {
if { $title ne "separator" } {
$widget.$menu_widget entryconf\
igure $index -state $state
}
incr index
}
}
if { [tk windowingsystem] eq "aqua" } {
# appmenu's About
.mbar.apple entryconfigure 0 -state $state
}
return
}
foreach {menu_name menu_widget menu_itemlist} $::gorilla::menu\
_desc {
set result [lsearch -all $::gorilla::tag_list($menu_wi\
dget) $tag_pattern]
foreach index $result {
$widget.$menu_widget entryconfigure $index -st\
ate $state
}
}
}
proc gorilla::getMenuState { menu } {
# Walk a Tk "menu" hierarchy, building a script that captures the cu\
rrent
# state (normal/disabled) of each item in the menu heirarchy.
#
# menu - The menu widget at which to start traversing the hierarchy.
#
# Returns a script which can be "eval'ed" to return the menu hierarc\
hy to
# the state it was in when this command was called.
set result ""
for {set idx 0} {$idx <= [ $menu index end ]} {incr idx} {
if { [ catch {$menu entrycget $idx -menu } submenu ] } {
if { ! [ catch {$menu entrycget $idx -"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"state} state ] } {
append result "$menu entryconfigure $idx -state $state" \\n
}
} else {
append result [ getMenuState $submenu ]
}
}
return $result
} ; # end proc gorilla::getMenuState
proc gorilla::EvalIfStateNormal {menuentry index} {
if {[$menuentry entrycget $index -state] == "normal"} {
eval [$menuentry entrycget 0 -command]
}
}
# --------------------------------------------------------------------\
--
# Tree Management: Select a node
# --------------------------------------------------------------------\
--
#
proc gorilla::GetSelectedNode { x y } {
# returns node at mouse position
return [ .tree identify row $x $y ]
}
proc gorilla::TreeNodeSelect {node} {
ArrangeIdleTimeout
set selection [$::gorilla::widgets(tree) selection]
if {[llength $selection] > 0} {
set currentselnode [lindex $selection 0]
if {$node == $currentselnode} {
return
}
}
focus $::gorilla::widgets(tree)
$::gorilla::widgets(tree) selection set $node
$::gorilla::widgets(tree) see $node
set ::gorilla::activeSelection 0
}
# proc gorilla::TreeNodeSelectionChanged {widget nodes} {
proc gorilla::TreeNodeSelectionChanged {} {
UpdateMenu
ArrangeIdleTimeout
}
#
# --------------------------------------------------------------------\
--
# Tree Management: Double click
# --------------------------------------------------------------------\
--
#
# Double click on a group toggles its openness
#; already implemented in ttk::treeview
# Double click on a login copies the password to the clipboard; implem\
ented
#
proc gorilla::TreeNodeDouble {node} {
ArrangeIdleTimeout
focus $::gorilla::widgets(tree)
$::gorilla::widgets(tree) see $node
set data [$::gorilla::widgets(tree) item $node -values]
set type [lindex $data 0]
if {$type == "Group" || $type == "Root"} {
# set open [$::gorilla::widgets(tree) itemcget $node -\
open]
# if {$open} {
# $::gorilla::widgets(tree) itemconfigure $nod\
e -open 0
# } else {
# $::gorilla::widgets(tree) itemconfigure $nod\
e -open 1
# }
return
} else {
switch -- $::gorilla::preference(doubleClickAction) {
copyPassword {
gorilla::CopyToClipboard Password
}
editLogin {
gorilla::EditLogin
}
launchBrowser {
::gorilla::LaunchBrowser [ ::gorilla::\
GetSelectedRecord ]
}
default {
# do nothing
}
}
}
}
#
# --------------------------------------------------------------------\
--
# Tree Management: Popup
# --------------------------------------------------------------------\
--
#
proc gorilla::TreeNodePopup {node} {
ArrangeIdleTimeout
TreeNodeSelect $node
set xpos [expr [winfo pointerx .] + 5]
set ypos [expr [winfo pointery .] + 5]
set data [$::gorilla::widgets(tree) item $node -values]
set type [lindex $data 0]
switch -- $type {
Root -
Group {
GroupPopup $node $xpos $ypos
}
Login {
LoginPopup $node $xpos $ypos
}
}
}
# --------------------------------------------------------------------\
--
# Tree Management: Popup for a Group
# --------------------------------------------------------------------\
--
#
proc gorilla::GroupPopup {node xpos ypos} {
if {![info exists ::gorilla::widgets(popup,Group)]} {
set ::gorilla::widgets(popup,Group) [menu .popupForGro\
up]
$::gorilla::widgets(popup,Group) add command \\
-label [mc "Add Login"] \\
-command "::gorilla::LoginDialog::AddLogin"
$::gorilla::widgets(popup,Group) add command \\
-label [mc "Add Subgroup"] \\
-command "gorilla::PopupAddSubgroup"
$::gorilla::widgets(popup,Group) add command \\
-label [mc "Rename Group"] \\
-command "gorilla::PopupRenameGroup"
$::gorilla::widgets(popup,Group) add separator
$::gorilla::widgets(popup,Group) add command \\
-label [mc "Delete Group"] \\
-command "gorilla::PopupDeleteGroup"
}
set data [$::gorilla::widgets(tree) item $node -values]
set type [lindex $data 0]
if {$type == "Root"} {
$::gorilla::widgets(popup,Group) entryconfigure 2 -sta\
te disabled
$::gorilla::widgets(popup,Group) entryconfigure 4 -sta\
te disabled
} else {
$::gorilla::widgets(popup,Group) entryconfigure 2 -sta\
te normal
$"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"::gorilla::widgets(popup,Group) entryconfigure 4 -state normal
}
# this catch is necessary to prevent a "grab failed" error
# when opening a menu while another app is holding the
# "grab"
catch { tk_popup $::gorilla::widgets(popup,Group) $xpos $ypos \
}
}
proc gorilla::LookupNodeData { node } {
# Takes a treeview node ID value and returns the node values a\
nd the
# node type value as a list.
#
# node - a treeview node identifier
set data [ $::gorilla::widgets(tree) item $node -values ]
set type [ lindex $data 0 ]
return [ list $data $type ]
} ; # end proc gorilla::LookupNodeData
proc gorilla::PopupAddSubgroup {} {
gorilla::AddSubgroup
}
proc gorilla::PopupDeleteGroup {} {
gorilla::DeleteGroup
}
proc gorilla::PopupRenameGroup {} {
gorilla::RenameGroup
}
# --------------------------------------------------------------------\
--
# Tree Management: Popup for a Login
# --------------------------------------------------------------------\
--
#
proc gorilla::LoginPopup {node xpos ypos} {
# Creates the popup menu widget for the right clicks on a tree\
item
# node - node index for right-clicked tree item
# xpos, ypos - root coordinates for the popup menu
if {![info exists ::gorilla::widgets(popup,Login)]} {
set ::gorilla::widgets(popup,Login) [menu .popupForLog\
in]
$::gorilla::widgets(popup,Login) add command \\
-label [mc "Open URL"] \\
-command { ::gorilla::LaunchBrowser [ ::gorill\
a::GetSelectedRecord ] }
$::gorilla::widgets(popup,Login) add command \\
-label [mc "Copy Username to Clipboard"] \\
-command "gorilla::PopupCopyUsername"
$::gorilla::widgets(popup,Login) add command \\
-label [mc "Copy Password to Clipboard"] \\
-command "gorilla::PopupCopyPassword"
$::gorilla::widgets(popup,Login) add command \\
-label [mc "Copy URL to Clipboard"] \\
-command "gorilla::PopupCopyURL"
$::gorilla::widgets(popup,Login) add separator
$::gorilla::widgets(popup,Login) add command \\
-label [mc "Add Login"] \\
-command "::gorilla::LoginDialog::AddLogin"
$::gorilla::widgets(popup,Login) add command \\
-label [mc "Edit Login"] \\
-command "gorilla::PopupEditLogin"
$::gorilla::widgets(popup,Login) add command \\
-label [mc "View Login"] \\
-command "gorilla::PopupViewLogin"
$::gorilla::widgets(popup,Login) add separator
$::gorilla::widgets(popup,Login) add cascade \\
-label [ mc "Move Login to:" ] \\
-menu [ set submenu $::gorilla::widgets(popup,\
Login).movesub ]
$::gorilla::widgets(popup,Login) add separator
$::gorilla::widgets(popup,Login) add command \\
-label [mc "Delete Login"] \\
-command "gorilla::PopupDeleteLogin"
# now setup the cascade menu
menu $submenu -postcommand [ list ::gorilla::populateL\
oginPopup $submenu ]
}
# this catch is necessary to prevent a "grab failed" error
# when opening a menu while another app is holding the
# "grab"
catch { tk_popup $::gorilla::widgets(popup,Login) $xpos $ypos \
}
}
proc gorilla::populateLoginPopup { win } {
# builds the dynamic menu of group names for the right click m\
ove-to
# function
$win delete 0 end
lassign [ ::gorilla::get-selected-tree-data ] node type rn
# count is used to "split" the menu into elements of 20 units \
each
set count -1
foreach group [ lsort [ array names ::gorilla::groupNodes ] ] \
{
incr count
set grouplist [ split $group "." ]
set grouplen [ llength $grouplist ]
if { $grouplen <= 1 } {
set leader ""
} else {
set leader "[ string repeat " " [ expr { $grouplen\
- 2 } ] ] \\u2022 "
}
$win add command -label "$leader[ lindex $grouplist en\
d ]" -command [ list ::gorilla::MoveTreeNode $node $::gorilla::groupNo\
des($group) ] \\
-columnbreak [ expr { ( $count % 20 )\
== 0 } ]
}
} ; # end proc gorilla::populateLoginPopup
proc gorilla::PopupEditLogin {} {
::gorilla::EditLogin
}
proc gorilla::PopupViewLogin {} {
::gorilla::ViewLogin
}
proc gorilla::PopupCopyUsername {} {
gorilla::CopyToClipboard Username
}
proc gorilla::PopupCopyPassword {} {
gorilla::CopyToClipboard Password
}
proc gorilla::PopupCopyURL {} {
gorilla::CopyToClipb"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"oard URL
}
proc gorilla::PopupDeleteLogin {} {
::gorilla::DeleteLogin
}
# --------------------------------------------------------------------\
--
# New
# --------------------------------------------------------------------\
--
#
#
# Attempt to resize a toplevel window based on our preference
#
proc gorilla::TryResizeFromPreference {top} {
if {!$::gorilla::preference(rememberGeometries)} {
return
}
if {![info exists ::gorilla::preference(geometry,$top)]} {
return
}
if {[scan $::gorilla::preference(geometry,$top) "%dx%d" width \
height] != 2} {
unset ::gorilla::preference(geometry,$top)
return
}
if {$width < 10 || $width > [winfo screenwidth .] || \\
$height < 10 || $height > [winfo screenheight .]} {
unset ::gorilla::preference(geometry,$top)
return
}
wm geometry $top ${width}x${height}
}
proc gorilla::CollectTicks {} {
lappend ::gorilla::collectedTicks [clock clicks]
}
proc gorilla::New {} {
ArrangeIdleTimeout
#
# If the current database was modified, give user a chance to \
think
#
if {$::gorilla::dirty} {
set answer [tk_messageBox -parent . \\
-type yesnocancel -icon warning -default yes \\
-title [ mc "Save changes?" ] \\
-message [ mc "The current password database is modifi\
ed. Do you want to save the current database before creating the new d\
atabase?"]]
# switch $answer {}
# yes {}
# no {aktuelle Datenbank schlie\M-C\M^_en, Variable ne\
u initialisieren}
# default {return}
if {$answer == "yes"} {
if {[info exists ::gorilla::fileName]} {
if { [::gorilla::Save] ne "GORILLA_OK"\
} {
return
}
} else {
if { [::gorilla::SaveAs] ne "GORILLA_O\
K" } {
return
}
}
} elseif {$answer != "no"} {
return
}
}
#
# Timing between clicks is used for our initial random seed
#
set ::gorilla::collectedTicks [list [clock clicks]]
gorilla::InitPRNG [join $::gorilla::collectedTicks -] ;# not a\
very good seed yet
if { [catch {set password [GetPassword 1 [mc "New Database: Ch\
oose Master Password"]]} \\
error] } {
# canceled
return
}
lappend ::gorilla::collectedTicks [clock clicks]
gorilla::InitPRNG [join $::gorilla::collectedTicks -] ;# much \
better seed now
set myOldCursor [. cget -cursor]
. configure -cursor watch
update idletasks
wm title . [mc "Password Gorilla - <New Database>"]
# Aufr\M-C\M-$umarbeiten
if {[info exists ::gorilla::db]} {
itcl::delete object $::gorilla::db
}
set ::gorilla::dirty 0
# create an pwsafe object ::gorilla::db
# with accessible by methods like: GetPreference <name>
set ::gorilla::db [namespace current]::[pwsafe::db \\#auto $pa\
ssword]
pwsafe::int::randomizeVar password
catch {unset ::gorilla::fileName}
#
# Apply defaults: auto-save, idle timeout, version, Unicode su\
pport
#
$::gorilla::db setPreference SaveImmediately \\
$::gorilla::preference(saveImmediatelyDefault)
if {$::gorilla::preference(idleTimeoutDefault) > 0} {
$::gorilla::db setPreference LockOnIdleTimeout 1
$::gorilla::db setPreference IdleTimeout \\
$::gorilla::preference(idleTimeoutDefault)
} else {
$::gorilla::db setPreference LockOnIdleTimeout 0
}
if {$::gorilla::preference(defaultVersion) == 3} {
$::gorilla::db setHeaderField 0 [list 3 0]
}
$::gorilla::db setPreference IsUTF8 \\
$::gorilla::preference(unicodeSupport)
$::gorilla::widgets(tree) selection set {}
# pathname delete itemList ;# Baum l\M-C\M-6schen
catch { $::gorilla::widgets(tree) delete [$::gorilla::widgets(\
tree) children {}] }
# catch { $::gorilla::widgets(tree) delete [$::gorilla::\
widgets(tree) nodes root] }
# ttk:treeview: pathname insert parent index ?-id id? options.\
..
# BWidget: pathName insert index parent\
node ?option value...?
$::gorilla::widgets(tree) insert {} end -id "RootNode" \\
-open true \\
-text [mc "<New Database>"]\\
-values [list Root] \\
-image $::gorilla::images(group)
set ::gorilla::status [mc "Add logins using <Add Login> in the\
<Login> menu."]
. configure -cursor $myOldCursor
# Must also unset the cache of group names to ttk::treeview no\
de identifiers
unset -nocomplain ::gorilla::groupNodes
if {[$::gor"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"illa::db getPreference "SaveImmediately"]} {
gorilla::SaveAs
}
UpdateMenu
}
# --------------------------------------------------------------------\
--
# Open a database file; used by "Open" and "Merge"
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyOpenDatabaseDialog {} {
set ::gorilla::guimutex 2
}
;# proc gorilla::OpenDatabase {title defaultFile} {}
# proc gorilla::OpenDatabase {title {defaultFile ""}} {
proc gorilla::OpenDatabase {title {defaultFile ""} {allowNew 0}} {
ArrangeIdleTimeout
set top .openDialog
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
# TryResizeFromPreference $top
set aframe [ttk::frame $top.right -padding [list 10 5]\
]
if {$::gorilla::preference(gorillaIcon)} {
# label $top.splash -bg "#ffffff" -image $::go\
rilla::images(splash)
ttk::label $top.splash -image $::gorilla::imag\
es(splash)
pack $top.splash -side left -fill both -padx 1\
0 -pady 10
}
ttk::label $aframe.info -anchor w -width 80 -relief su\
nken \\
-padding [list 5 5 5 5]
# -background #F6F69E ;# helles Gelb
ttk::labelframe $aframe.file -text [mc "Database:"] -w\
idth 70
ttk::combobox $aframe.file.cb -width 40
ttk::button $aframe.file.sel -image $::gorilla::images\
(browse) \\
-command "set ::gorilla::guimutex 3"
pack $aframe.file.cb -side left -padx 10 -pady 10 -fil\
l x -expand yes
pack $aframe.file.sel -side right -padx 10
ttk::labelframe $aframe.pw -text [mc "Password:"] -wid\
th 40
ttk::entry $aframe.pw.pw -width 40 -show "*"
bind $aframe.pw.pw <KeyPress> "+::gorilla::CollectTick\
s"
bind $aframe.pw.pw <KeyRelease> "+::gorilla::CollectTi\
cks"
pack $aframe.pw.pw -side left -padx 10 -pady 10 -fill \
x -expand yes
ttk::frame $aframe.buts
set but1 [ttk::button $aframe.buts.b1 -width 9 -text [\
mc "OK" ]\\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $aframe.buts.b2 -width 9 -text [\
mc "Exit"] \\
-command "set ::gorilla::guimutex 2"]
set but3 [ttk::button $aframe.buts.b3 -width 9 -text [\
mc "New"] \\
-command "set ::gorilla::guimutex 4"]
pack $but1 $but2 $but3 -side left -pady 10 -padx 5 -ex\
pand 1
set sep [ttk::separator $aframe.sep -orient horizontal\
]
grid $aframe.file -row 0 -column 0 -columnspan 2 -stic\
ky we
grid $aframe.pw $aframe.buts -pady 10
grid $sep -sticky we -columnspan 2 -pady 5
grid $aframe.info -row 3 -column 0 -columnspan 2 -pady\
5 -sticky we
grid configure $aframe.pw -sticky w
grid configure $aframe.buts -sticky nse
bind $aframe.file.cb <Return> "set ::gorilla::guimutex\
1"
bind $aframe.pw.pw <Return> "set ::gorilla::guimutex 1\
"
bind $aframe.buts.b1 <Return> "set ::gorilla::guimutex\
1"
bind $aframe.buts.b2 <Return> "set ::gorilla::guimutex\
2"
bind $aframe.buts.b3 <Return> "set ::gorilla::guimutex\
4"
pack $aframe -side right -fill both -expand yes
pack $aframe -expand 1
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyOpen\
DatabaseDialog
} else {
set aframe $top.right
wm deiconify $top
}
wm title $top $title
wm iconphoto $top $::gorilla::images(application)
$aframe.pw.pw delete 0 end
if { [llength $::gorilla::preference(lru)] } {
$aframe.file.cb configure -values $::gorilla::preferen\
ce(lru)
$aframe.file.cb current 0
}
if {$allowNew} {
set info [mc "Select a database, and enter its passwor\
d. Click \\"New\\" to create a new database."]
$aframe.buts.b3 configure -state normal
} else {
set info [mc "Select a database, and enter its passwor\
d."]
$aframe.buts.b3 configure -state disabled
}
$aframe.info configure -text $info
if {$defaultFile != ""} {
catch {set ::gorilla::dirName [file dirname $defaultFi\
le]}
set values [$aframe.file.cb get]
set found [lsearch -exact $values $defaultFile]
if {$found != -1} {
$aframe.file.cb current $found
} else {
set values [linsert $values 0 $defaultFile]
$aframe.file.cb configure -values $values
$aframe.file.cb current 0
}
}
#
# Disable the main menu, so that it is not accessible, even o"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"n the Mac.
#
setmenustate $::gorilla::widgets(main) all disabled
#
# Run dialog
#
set oldGrab [grab current .]
update idletasks
raise $top
focus $aframe.pw.pw
if {[tk windowingsystem] != "aqua"} {
catch {grab $top}
}
#
# Timing between clicks is used for our initial random seed
#
set ::gorilla::collectedTicks [list [clock clicks]]
gorilla::InitPRNG [join $::gorilla::collectedTicks -] ;# not a\
very good seed yet
while {42} {
ArrangeIdleTimeout
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
lappend myClicks [clock clicks]
if {$::gorilla::guimutex == 2} {
# Cancel
break
} elseif {$::gorilla::guimutex == 4} {
# New
break
} elseif {$::gorilla::guimutex == 1} {
set fileName [$aframe.file.cb get]
set nativeName [file nativename $fileName]
if {$fileName == ""} {
tk_messageBox -parent $top -type ok -i\
con error -default ok \\
-title [mc "No File"] \\
-message [mc "Please select a \
password database."]
continue
}
# work around an issue with "file readable" an\
d Windows samba mounts
# by simply attempting to open the PWFile in r\
ead only mode. If the
# open succeeds then we have read access. If \
it fails, we don't have
# access of some form.
# If the open succeeds, immediately close the \
file because the open is
# just a test for access.
if { [ catch { close [ open $fileName RDONLY ]\
} ] } {
# also generate a more meaningful erro\
r message
if { [ file exists $fileName ] } {
set error_message [ mc "The password\
database %s can not be read." $nativeName ]
} else {
set error_message [ mc "The password\
database %s does not exist." $nativeName ]
}
tk_messageBox -parent $top -type ok -i\
con error -default ok \\
-title [ mc "Error Accessing F\
ile" ] \\
-message $error_message
continue
}
$aframe.info configure -text [mc "Please be pa\
tient. Verifying password ..."]
set myOldCursor [$top cget -cursor]
set dotOldCursor [. cget -cursor]
$top configure -cursor watch
. configure -cursor watch
update idletasks
lappend ::gorilla::collectedTicks [clock click\
s]
gorilla::InitPRNG [join $::gorilla::collectedT\
icks -] ;# much better seed now
set password [$aframe.pw.pw get]
set pvar [ ::gorilla::progress init -win $afra\
me.info -message [ mc "Opening ... %d %%" ] -max 200 ]
#set a [ clock milliseconds ]
if { [ catch { set newdb [ pwsafe::createFromF\
ile $fileName $password \\
$pvar ] } oops ] } {
pwsafe::int::randomizeVar password
::gorilla::progress finished $aframe.i\
nfo
. configure -cursor $dotOldCursor
$top configure -cursor $myOldCursor
tk_messageBox -parent $top -type ok -i\
con error -default ok \\
-title [mc "Error Opening Data\
base"] \\
-message [mc "Can not open pas\
sword database \\"%s\\": %s" $nativeName $oops]
$aframe.info configure -text $info
$aframe.pw.pw delete 0 end
focus $aframe.pw.pw
continue
}
#set b [ clock milliseconds ]
#puts stderr "elapsed open time: [ expr { $b - $a } ]ms"
# all seems well
::gorilla::progress finished $aframe.info
. configure -cursor $dotOldCursor
$top configure -cursor $myOldCursor
pwsafe::int::randomizeVar password
break
} elseif {$::gorilla::guimutex == 3} {
set fileName [ filename_query Open -parent $to\
p \\
-title [ mc "Browse for a pass\
word database ..." ] ]
if {$fileName == ""} {
continue
}
set nativeName [file nativename $fileName]
catch {
set ::gorilla::dirName [file dirname $\
fileName]
}
set values [$aframe.file.cb cget -values]
set found [lsearch -exact $values $nativeName]
if {$found != -1} {
$aframe.file.cb current $found
} else {
set values [linsert $values 0 $nativeN\
ame]
$aframe.file.cb configure -values $val\
ues
$aframe.file.cb current 0
# $aframe.file.cb setvalue @0
}
focus $aframe.pw.pw
}
} ;# end while
set fileName [$aframe.file.cb get]
set nativeName [file nativename $fileName]
pwsafe::int::randomizeVar ::gorilla::collectedTicks
# make sure collect"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0x43af49dc000,0xe000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651258593280/0x43af49dc000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"edTicks is a proper list again after
# having been randomized above - this avoids an error
# message from the lappend in gorilla::CollectTicks when
# attempting to lappend after randomizing the variable
set ::gorilla::collectedTicks [ list [ clock clicks ] ]
$aframe.pw.pw configure -text ""
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
wm withdraw $top
update
#
# Re-enable the main menu. The UpdateMenu call is needed to a\
djust the
# individual menu entries based upon gorilla internal status. \
Otherwise
# every menu entry becomes enabled, even if it does not make s\
ense for
# that entry to be enabled at this time.
#
setmenustate $::gorilla::widgets(main) all normal
UpdateMenu
if {$::gorilla::guimutex == 2} {
# Cancel
return "Cancel"
} elseif {$::gorilla::guimutex == 4} {
# New
return "New"
}
#
# Add file to LRU preference
#
set found [lsearch -exact $::gorilla::preference(lru) $nativeN\
ame]
if {$found == -1} {
# not found
set ::gorilla::preference(lru) [linsert $::gorilla::pr\
eference(lru) 0 $nativeName]
} elseif {$found != 0} {
set tmp [lreplace $::gorilla::preference(lru) $found $\
found]
set ::gorilla::preference(lru) [linsert $tmp 0 $native\
Name]
}
#
# Show any warnings?
#
set dbWarnings [$newdb cget -warningsDuringOpen]
if {[llength $dbWarnings] > 0} {
set message $fileName
append message ": " [join $dbWarnings "\\n"]
tk_messageBox -parent . \\
-type ok -icon warning -title "File Warning" \
\\
-message $message
}
#
# All seems well
#
ArrangeIdleTimeout
return [list "Open" $fileName $newdb]
}
#
# --------------------------------------------------------------------\
--
# Open a file
# --------------------------------------------------------------------\
--
#
# Open erh\M-C\M-$lt eine Liste, die kann auch leer sein...
proc gorilla::Open {{defaultFile ""}} {
#
# If the current database was modified, give user a chance to \
think
#
if {$::gorilla::dirty} {
set answer [tk_messageBox -parent . \\
-type yesnocancel -icon warning -default yes \
\\
-title [mc "Save changes?"] \\
-message [mc "The current password database is\
modified.\\
Do you want to save the database?\\n\\
\\"Yes\\" saves the database, and continues to\
the \\"Open File\\" dialog.\\n\\
\\"No\\" discards all changes, and continues t\
o the \\"Open File\\" dialog.\\n\\
\\"Cancel\\" returns to the main menu."] ]
if {$answer == "yes"} {
if {[info exists ::gorilla::fileName]} {
if { [::gorilla::Save] ne "GORILLA_OK"\
} {
return
}
} else {
if { [::gorilla::SaveAs] ne "GORILLA_O\
K" } {
return
}
}
} elseif {$answer != "no"} {
return
}
}
if { $::gorilla::DEBUG(TEST) } {
# Skip OpenDialog
set ::gorilla::collectedTicks [list [clock clicks]]
gorilla::InitPRNG [join $::gorilla::collectedTicks -] \
;# not a very good seed yet
set fileName [file join $::gorilla::Dir ../unit-tests \
testdb.psafe3]
set newdb [pwsafe::createFromFile $fileName test ::gor\
illa::openPercent]
set openInfo [list "Open" $fileName $newdb ]
} else {
set openInfo [OpenDatabase [mc "Open Password Database\
"] $defaultFile 1]
}
set action [lindex $openInfo 0]
if {$action == "Cancel"} {
return "Cancel"
} elseif {$action == "New"} {
gorilla::New
return "New"
}
set fileName [lindex $openInfo 1]
set newdb [lindex $openInfo 2]
set nativeName [file nativename $fileName]
wm title . "Password Gorilla - $nativeName"
if {[info exists ::gorilla::db]} {
itcl::delete object $::gorilla::db
}
set ::gorilla::status [mc "Password database %s loaded." $nati\
veName ]
set ::gorilla::fileName $fileName
set ::gorilla::db $newdb
set ::gorilla::dirty 0
$::gorilla::widgets(tree) selection set ""
# delete all the tree
# $::gorilla::widgets(tree) delete [$::gorilla::widgets(tree) \
nodes root]
$::gorilla::widgets(tree) delete [$::gorilla::widgets(tree) ch\
ildren {}]
catch {array unset ::gorilla::groupNodes}
$::gorilla::widgets(tree) insert {} end -id "RootNode" \\
-open 1 \\
-image $::gorilla::images(group) \\
-text $nativeName \\
-v"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"alues [list Root]
FocusRootNode
AddAllRecordsToTree
UpdateMenu
return "Open"
}
#
# --------------------------------------------------------------------\
--
# Non-modal password add/edit dialog boxes
# --------------------------------------------------------------------\
--
#
#
# Put everything into a namespace so that there is no interference wit\
h the
# rest of PWGorilla
#
# The code will be ready for refactoring in regard to OO facilities in\
Tcl/Tk 8.6
#
namespace eval ::gorilla::LoginDialog {
namespace path ::gorilla
variable seq 0
# The idle-windows list and the push/pop procs are used to imp\
liment
# window reuse like in the rest of PWGorilla. However the nor\
mal
# PWGorilla method of window reuse does not work when there ar\
e
# multiple windows to be remembered. Idle-windows is a stack \
of
# toplevel names that are not in use and push/pop manipulate t\
hat
# stack in the obvious manner
variable idle-windows [ list ]
namespace import ::tcl::mathop::+ ::tcl::mathop::* ::tcl::math\
op::/
# arbiter is a dict used to prevent more than one open edit di\
alog for an
# individual db record number
variable arbiter [ dict create ]
# --------------------------------------------------------------------\
---------
proc push { win } {
# add an window name to the end of the namespace varia\
ble idle-windows
# win - the window name to "push" onto the idle-window\
s stack variable
# Side-effect: Modifes namespace variable idle-windows\
.
#
# This is used to maintain a list of "inactive" withdr\
awn dialogs for
# reuse in future edit requests. Such avoids having t\
o rebuild both the
# dialog as well as the dialog state space and GUI han\
dling procs.
variable idle-windows
lappend idle-windows $win
} ; # end proc push
# --------------------------------------------------------------------\
---------
# see http://wiki.tcl.tk/1923
proc K { x y } { set x }
# --------------------------------------------------------------------\
---------
proc pop { } {
# Remove a window name from the stack in the idle-wind\
ows namespace variable.
# Side-effect: Modifes namespace variable idle-windows\
.
#
# This is used to maintain a list of "inactive" withdr\
awn dialogs for
# reuse in future edit requests. Such avoids having t\
o rebuild both the
# dialog as well as the dialog state space and GUI han\
dling procs.
variable idle-windows
return [ K [ lindex ${idle-windows} end ] [ set idle-w\
indows [ lrange ${idle-windows} 0 end-1 ] ] ]
# returns the name of the window that was popped from \
the stack.
}
# --------------------------------------------------------------------\
---------
proc info { } {
# A testing proc for debugging purposes
variable idle-windows
return "idle-windows -> '${idle-windows}'"
# returns the contents of the idle-windows namespace v\
ariable stack
}
# --------------------------------------------------------------------\
---------
# parameters =================================================\
===============
# -rn - record number to edit, default of -999 means cre\
ate new record
# -group - initial group name to use for creation of a new \
record
# -treenode - the ttk::treeview node ID for editing an existin\
g record
# + This is simply passed through to the final Ok pr\
oc for use
# + in updating an existing record in the treeview.
# ============================================================\
===============
proc LoginDialog { args } {
# Open a dialog to edit/create an entry in the login D\
B.
#
# -rn - Record number from Itcl login DB to edit. Mag\
ic record number
# -999 is defined to mean edit a new (blank) record. \
Defaults to -999
# if not provided.
#
# -group - Set initial "group" name to apply to a new \
record. This
# initializes the "group" field of the edit dialog.
#
# -treenode - The ttk::treeview node ID of an existing\
record when a
# user requests editing of an existing record. This \
is used to update
# the tree display when a user clicks "Ok" to their c\
hanges.
#
# Requirements: If -rn is not -999 then the"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" record number must exist in
# the Itcl DB when called. In addition, to edit an ex\
isting record, the
# -treenode value must also be passed in.
#
# Additionally, a simple check is made such that there\
is a one to one
# mapping of existing record numbers to open edit dial\
ogs. It is
# disallowed to edit the exact same record in two inde\
pendent dialogs
# simultaneously.
variable arbiter
if { 0 != [ expr { [ llength $args ] % 2 } ] } {
error "[ namespace current ]::LoginDialog: Mus\
t have an even number of arguments."
}
ArrangeIdleTimeout
# very simple command line handling, first set default\
values, then
# overwrite those valies with args (if any)
array set {} [ list -rn -999 -group "" -treenode "" ]
array set {} $args
# a bit of sanity checking of the inputs
if { $(-rn) != -999 } {
# != -999 means an attempt to edit an existing\
record
if { $(-treenode) eq "" } {
error "[ namespace current ]::LoginDia\
log: Editing an existing record requires that -treenode option be non-\
null."
}
if { ! [ $::gorilla::db existsRecord $(-rn) ] \
} {
error "[ namespace current ]::LoginDia\
log: Can not edit a record number ('$(-rn)') which does not exist in t\
he database."
}
# should only have one dialog open per unique \
record entry in the db
if { [ dict exists $arbiter $(-rn) ] } {
wm deiconify [ dict get $arbiter $(-rn\
) ]
raise [ dict get $arbiter $(-rn) ]
return
}
} ; # end if -rn != -999
set top [ pop ]
if { $top ne "" } {
set pvns [ get-pvns-from-toplevel $top ]
wm deiconify $top
} else {
variable seq
set top [ toplevel .nmLoginDialog$seq ]
set pvns [ namespace eval [ namespace current \
]::$seq { namespace current } ] ; # pvns -> private variable name spac\
e
incr seq
wm title $top [ mc "Add/Edit/View Login" ]
wm protocol $top WM_DELETE_WINDOW [ namespace \
code [ list DestroyLoginDialog $top ] ]
# add a binding to clean out the namespace if \
the window is ever explicity destroyed
# fixme - the catch is here for testing, should not be needed for prod\
uction
bind $top <Destroy> [ list catch "namespace de\
lete $pvns" ]
BuildLoginDialog $top $pvns
} ; # end if top ne ""
# store away -treenode value in the pvns for use later\
during processing
# by the ${pvns}::Ok proc
set ${pvns}::treenode $(-treenode)
if { $(-rn) != -999 } {
# remember that we are editing this -rn in thi\
s $top window
dict set arbiter $(-rn) $top
}
set ::gorilla::toplevel($top) $top
TryResizeFromPreference $top
${pvns}::PopulateLoginDialog $(-rn) $(-group)
} ; # end proc LoginDialog
# --------------------------------------------------------------------\
---------
proc DestroyLoginDialog { win } {
# Used to withdraw, reset, and store for later an edit\
dialog from the
# screen.
#
# win - the toplevel name of the edit dialog to withdr\
aw, reset, and
# store.
variable arbiter
unset -nocomplain ::gorilla::toplevel($win)
push $win
# unmap the ppf pane, if it is mapped - otherwise the \
width added by the
# ppf pane will end up getting added as a base minwidt\
h value - i.e.,
# the window will be permanently wider than it should \
be.
set [ get-pvns-from-toplevel $win ]::overridePasswordP\
olicy 0
wm withdraw $win
# remove the entry for this window from the arbiter di\
ct
dict unset arbiter [ set [ get-pvns-from-toplevel $win\
]::rn ]
} ; # end proc DestroyLoginDialog
# --------------------------------------------------------------------\
---------
# the name of the private variable namespace is the numeric su\
ffix of
# the toplevel name, so extract the numeric suffix from the to\
plevel
# name
proc get-pvns-from-toplevel { top } {
# Extracts the private namespace name for an edit dial\
og
#
# top - the toplevel name of an edit dialog from which\
to extract the
# private variable namespace
return [ namespace current ]::[ lindex [ regexp -inlin\
e {([0-9]+)$} $top ] 1 ]
# returns The name of the private variable namespace a\
ssociated with the
# passed toplevel name.
} "
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"; # end proc get-pvns-from-toplevel
# --------------------------------------------------------------------\
---------
proc make-label { top text } {
# A helper proc to generate a ttk::label element for t\
he Edit Login
# Dialog. Collapses all of the details of label creat\
ion into one
# place. Also autogenerates a unique label name.
#
# top - the parent window of the new label window.
#
# text - the textual value to place in the label. Wil\
l have a colon
# appended and the result will then be passed through \
mc for
# translation purposes (i.e., the colon becomes part o\
f the "mc"
# string for translation).
#
# Returns the generated label name.
variable seq
return [ ttk::label $top.l-[ incr seq ] -text [ wrap-m\
easure "${text}:" ] -style Wrapping.TLabel ]
} ; # end
# --------------------------------------------------------------------\
---------
proc BuildLoginDialog { top pvns } {
# Builds out the widgets to create a single instance o\
f an edit login
# dialog window.
#
# top - the parent window for all of the component wid\
gets.
#
# pvns - the private variable namespace which has been\
assigned to
# this login dialog window to hold -textvariables and \
GUI event
# callback procedures specific to this particular edit\
login window.
#
# Does not return any useful value to the caller.
set widget(top) $top
ttk::style configure Wrapping.TLabel -wraplength {} -a\
nchor e -justify right -padding {10 0 5 0}
foreach {child label w} [ list group [ mc Group \
] combobox \\
title [ mc Title \
] entry \\
url [ mc URL \
] entry \\
user [ mc Username \
] entry \\
password [ mc Password \
] entry ] {
grid [ make-label $top $label ] \\
[ set widget($child) [ ttk::$w $top.e-$ch\
ild -width 40 -textvariable ${pvns}::$child ] ] \\
-sticky news -pady 5
} ; # end foreach {child label}
# password should show "*" by default
$widget(password) configure -show "*"
# group combox box needs to receive its values list of\
group names
$widget(group) configure -postcommand [ fill-combobox-\
with-grouplist $widget(group) ]
# The notes text widget - with scrollbar - in an embed\
ded frame
# because the text widget plus scrollbar needs to fit \
into the single
# column holding all the other ttk::entries in the out\
er grid
set textframe [ ttk::frame $top.e-notes-f ]
set widget(notes) [ set ${pvns}::notes [ text $textfra\
me.e-notes -width 40 -height 5 -wrap word -yscrollcommand [ list $text\
frame.vsb set ] ] ]
grid $widget(notes) [ scrollbar $textframe.vsb -comman\
d [ list $widget(notes) yview ] ] -sticky news
grid rowconfigure $textframe $widget(notes) -weight 1
grid columnconfigure $textframe $widget(notes) -weight\
1
grid [ make-label $top [mc Notes] ] \\
$textframe \\
-sticky news -pady 5
grid rowconfigure $top $textframe -weight 1
grid columnconfigure $top $textframe -weight 1
set lastChangeList [list last-pass-change [mc "Last Pa\
ssword Change"] last-modified [mc "Last Modified"] ]
foreach {child label} $lastChangeList {
grid [ make-label $top $label ] \\
[ ttk::label $top.e-$child -textvariable \
${pvns}::$child -width 40 -anchor w ] \\
-sticky news -pady 5
}
# bias the lengths of the labels to a slightly larger \
size than the average
ttk::style configure Wrapping.TLabel -wraplength [ + 4\
0 [ wrap-measure ] ]
set bf [ ttk::frame $top.bf ] ; # button frame
set frt [ ttk::frame $bf.top ] ; # frame right - top
ttk::button $frt.ok -width 16 -text [ mc "OK" ] -comma\
nd [ list namespace inscope $pvns Ok ]
ttk::button $frt.c -width 16 -text [ mc "Cancel" ] -co\
mmand [ namespace code [ list DestroyLoginDialog $top ] ]
pack $frt.ok $frt.c -side top -padx 10 -pady 5
pack $frt -side top -pady 20
set frb [ ttk::frame $bf.pws ] ; # frame right - botto\
m
set widget(showhide) [ ttk::button $frb.show -width 16\
-text [ mc "Show Password" ] -command [ list name"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"space inscope $pvns ShowPassword ] ]
ttk::button $frb.gen -width 16 -text [ mc "Generate Pa\
ssword" ] -command [ list namespace inscope $pvns MakeNewPassword ]
ttk::checkbutton $frb.override -text [ mc "Override Pa\
ssword Policy" ] -variable ${pvns}::overridePasswordPolicy
# -justify left
set ${pvns}::overridePasswordPolicy 0
pack $frb.show $frb.gen $frb.override -side top -padx \
10 -pady 5
pack $frb -side top -pady 20
grid $bf -row 0 -column 2 -rowspan 8 -sticky news
# this adds a feedback line along the bottom edge of t\
he window
grid [ set widget(feedback) [ ttk::label $top.feedback\
-borderwidth 3 ] ] -columnspan 3 -sticky news
set ${pvns}::feedbacktimer -1 ; # to keep track of "\
after" id value
# create, but do not make visible yet, a pane for over\
riding password
# policy settings
set ppf [ set widget(ppf) [ ttk::frame $top.ppf -borde\
rwidth 2 -relief solid ] ] ; # ppf -> Pass Policy Frame
set plf [ ttk::frame $ppf.plen -padding [ list 0 10 0 \
0 ] ] ; # ppf -> Pass Length Frame
ttk::label $plf.l -text [ mc "Password Length" ]
spinbox $plf.s -from 1 -to 999 -increment 1 \\
-width 4 -justify right \\
-textvariable ${pvns}::PassPolicy(length)
pack $plf.l -side left
pack $plf.s -side left -padx 10
pack $plf -side top -anchor w -padx 10 -pady 3
foreach {item label} [ list \
\\
uselowercase {Use lowercase letters} \
\\
useuppercase {Use UPPERCASE letters} \
\\
usedigits {Use digits} \
\\
usehexdigits {Use hexadecimal digits} \
\\
usesymbols {Use symbols (%, $, @, #, etc.)} \
\\
easytoread {Use easy to read characters only\
(e.g. no "0" or "O")} ] {
ttk::checkbutton $ppf.$item -text [ wrap-measu\
re [ mc $label ] ] \\
-variable ${pvns}::PassPolicy($item) \
\\
-style Wrapping.TCheckbutton
pack $ppf.$item -anchor w -side top -padx 10 -\
pady 3
} ; # end foreach item,label
ttk::style configure Wrapping.TCheckbutton -wraplength\
[ wrap-measure ]
# force geometry calculations to happen - the ppf fram\
e map/unmap code
# depends on this having been run now
update idletasks
# do not allow resize smaller than the native requeste\
d size of the
# internal widgets
wm minsize $top [ winfo reqwidth $top ] [ winfo reqhei\
ght $top ]
# Now build the callback procs that will handle this w\
indow's gui
# interactions with the user
build-gui-callbacks $pvns [ array get widget ]
} ; # end proc buildLoginDialog
# --------------------------------------------------------------------\
---------
# a proc to make computing the average pixel width of a set of\
lines of
# text easier
# if called with a parameter, adds the length of that paramete\
r to an internal list
# if called without a parameter, returns the average accumulat\
ed length and resets itself to empty
proc wrap-measure { {text ""} } {
variable ___accumulated_lengths___
if { ( $text eq "" ) && ( [ llength $___accumulated_le\
ngths___ ] > 0 ) } {
return [ K [ calculateWraplength $___accumulat\
ed_lengths___ ] [ set ___accumulated_lengths___ [ list ] ] ]
} else {
lappend ___accumulated_lengths___ [ font measu\
re [ ttk::style configure . -font ] $text ]
return $text
}
} ; # end proc wraplength
# --------------------------------------------------------------------\
---------
# calculates a "wraplength" value from the list of integer len\
gths passed
# to the proc. The resulting length will be an integer repres\
enting the
# mean of the passed in list, rounded up to the next even unit\
of 10.
proc calculateWraplength { lengths } {
return [ * [ / [ + [ / [ + {*}$lengths ] [ llength $le\
ngths ] ] 9 ] 10 ] 10 ]
} ; # end proc computeWraplength
# --------------------------------------------------------------------\
---------
# smacro -> simple macro processor. The idea is inspired by L\
isp macros,
# but this simple implimentation has more in common with cpp s\
tyle macro"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"s,
# in that it is a simple string substiution.
proc smacro { map body } {
return [ string map [ convert_map $map ] $body ]
} ; # end proc smacro
# --------------------------------------------------------------------\
---------
# preprocess the macro substitution map. Each key in the map \
is prefixed
# by m: and then the result is surrounded by hyphens, i.e. "-m\
:key-".
# This format was chosen because this is highly unlikely to be\
utilized as
# valid Tcl code otherwise.
proc convert_map { map } {
foreach {key value} $map {
lappend result "-m:$key-" $value
} ; # end foreach key,value in map
return $result
} ; # end proc smacro_map
# --------------------------------------------------------------------\
---------
proc build-gui-callbacks { pvns widgets } {
# This builds the callback procs that will handle this\
dialogs
# interaction with the user - generation of these proc\
s borrows a bit of
# ideas from Lisp macros to avoid having to pass a bun\
ch of constants
# around in proc parameters (i.e., the pvns name or th\
e widget path/proc
# names) or having the procs reference a bunch of quas\
i-global variables
#
# pvns - the name of the private variable namespace fo\
r the dialog. The
# GUI interaction procs will be built within this nam\
espace.
#
# widgets - A key/value list (i.e. a dict or a list fr\
om array get) of
# descriptive widget names and the actual widget wind\
ow pathname to
# apply as the "macro" transformations for each proc \
built. Each key
# will be substituted for the value of that key in th\
e body of each
# proc, with the result being that the resulting proc\
s are "customized"
# at build time to know which GUI widgets to access f\
or performing
# their relevant functions.
namespace eval $pvns [ smacro $widgets {
namespace import ::tcl::mathop::+ ::tcl::mathop::-
namespace path ::gorilla
# since TogglePassPolicyFrame is a trace callb\
ack, it will need "args"
# to accept the extra args that trace adds - t\
he args are ignored
proc TogglePassPolicyFrame { args } {
variable overridePasswordPolicy
# The resize code below increases (or \
decreases) the width and
# minwidth of the toplevel window by t\
he width of the ppf pane.
# This resizing code turned out to be \
necessary because when gorilla
# withdrew and then deiconified edit w\
indows upon a lock/unlock
# event, it also set an explicit geome\
try. By setting a geometry
# the window would no longer auto-resi\
ze when the ppf pane was
# mapped/unmapped.
# The extra 10 in the increment/decrem\
ent calculations is because of
# the -padx 5 given to grid. Five pix\
els per side of padding is 10
# extra pixels above the width of the \
ppf frame itself.
# Note - this code also depends upon t\
he BuildDialog proc having run
# "update idletasks" to assure that th\
e initial window geometry
# calculations have all occurred.
# 2011-03-18 - Finally deduced how to \
expand/shrink the width of the
# parent window while otherwise mainta\
ining its exact position on
# screen. The winfo rootx|rooty comma\
nd is the magic.
if { $overridePasswordPolicy } {
# true - map the ppf frame
if { ! [ winfo ismapped -m:ppf\
- ] } {
# only expand window s\
ize if the ppf is not currently mapped
set parent [ winfo par\
ent -m:ppf- ]
set inc [ + 10 [ winfo\
reqwidth -m:ppf- ] ]
wm geometry $parent "=\
[ + $inc [ winfo width $parent ] ]x[ winfo height $parent ]+[ winfo ro\
otx $parent ]+[ winfo rooty $parent ]"
lassign [ wm minsize $\
parent ] minw minh
wm minsize $parent [ +\
$inc $minw ] $minh
}
grid -m:ppf- -row 0 -column 3 \
-sticky news -rowspan 9 -padx 5 -pady 5
} else {
if { [ winfo ismapped -m:ppf- \
] } {
# only shrink window s\
ize if the ppf was mapped to start with
set parent [ winfo par\
ent -m:ppf- ]
set dec [ + 10 [ winfo\
reqwidth -m:ppf- ] ]
wm geometry $parent "=\
[ - [ winfo width $parent ] $dec ]x[ winfo height $parent ]+[ winfo ro\
otx $parent ]+[ winfo r"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"ooty $parent ]"
lassign [ wm minsize $\
parent ] minw minh
wm minsize $parent [ -\
$minw $dec ] $minh
}
grid forget -m:ppf-
} ; # end if overridePasswordPolicy
} ; # end proc TogglePassPolicyFrame
# install a variable trace on the password pol\
icy checkbutton variable
# to trigger opening/closing of the adjust pas\
s policy pane.
trace add variable overridePasswordPolicy writ\
e [ namespace code TogglePassPolicyFrame ]
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc ShowPassword { } {
-m:password- configure -show {}
-m:showhide- configure -command [ name\
space code HidePassword ] -text [ mc "Hide Password" ]
} ; # end proc ShowPassword
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc HidePassword { } {
-m:password- configure -show "*"
-m:showhide- configure -command [ name\
space code ShowPassword ] -text [ mc "Show Password" ]
} ; # end proc HidePassword
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc MakeNewPassword { } {
variable overridePasswordPolicy
variable PassPolicy
variable password
if { $overridePasswordPolicy } {
set policy [ array get PassPol\
icy ]
} else {
set policy [ GetDefaultPasswor\
dPolicy ]
} ; # end if override
if { [ catch { set newPassword [ Gener\
atePassword $policy ] } oops ] } {
feedback [ mc "Password policy\
settings invalid." ]
} else {
set password $newPassword
::pwsafe::int::randomizeVar ne\
wPassword
} ; # end if catch
} ; # end proc MakeNewPassword
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc feedback { text } {
-m:feedback- configure -relief sunken \
-text $text -background yellow
set-feedback-timer 300 clearHighlight
} ; # end proc feedback
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc clearHighlight { } {
-m:feedback- configure -background {}
set-feedback-timer 9700 clearFeedback
} ; # end proc clearHighlight
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc clearFeedback { } {
variable feedbacktimer
-m:feedback- configure -relief flat -t\
ext "" -background {}
set feedbacktimer -1
} ; # end proc clearFeedback
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc set-feedback-timer { length next } {
variable feedbacktimer
if { $feedbacktimer != -1 } {
after cancel $feedbacktimer
}
set feedbacktimer [ after $length [ na\
mespace code $next ] ]
} ; # end proc set-feedback-timer
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
# extracts fields from the gorilla db record a\
nd inserts them into the
# proper linked variables or widgets in the di\
alog
proc PopulateLoginDialog { in_rn in_group } {
variable rn
variable overridePasswordPolicy 0
variable PassPolicy
array set PassPolicy [ GetDefaultPassw\
ordPolicy ]
foreach item { group title url user pa\
ssword } {
variable $item
set $item [ dbget $item $in_rn\
]
}
if { $in_group ne "" } {
set group $in_group
}
-m:notes- delete 0.0 end
-m:notes- insert end [ dbget notes $in\
_rn ]
foreach item { last-pass-change last-m\
odified } {
variable $item
set $item [ dbget $item $in_rn\
[ mc "<unknown>" ] ]
}
clearFeedback
set rn $in_rn
HidePassword
} ; # end proc PopulateLoginDialog
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc PopulateRecord { rn } {
# Insert the state data from the linke\
d
# login window into a db record
#
# rn - the db record number into which\
to
# insert the state data
set varlist { group title user passwor\
d url }
foreach var $varlist {
variable $var
}
set modified 0
set now [clock seconds]
if { [ dbget uuid $rn ] eq "" } {
if { ! [ catch { package prese\
nt u"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"uid } ] } {
dbset uuid $rn [uuid::\
uuid generate]
} \
}
foreach element [ list {*}$varlist not\
es ] {
if { $element ne "notes" } {
set new_value [ set $e\
lement ]
} else {
set new_value [ string\
trimright [ -m:notes- get 0.0 end ] ]
}
set old_value [ dbget $element\
$rn ]
if { $new_value ne $old_value \
} {
set modified 1
if { $new_value eq "" \
} {
dbunset $eleme\
nt $rn
} else {
dbset $element\
$rn $new_value
if { $element \
eq "password" } {
dbset \
last-pass-change $rn $now
} ; # end if e\
lement eq password
} ; # end if new_value\
eq ""
} ; # end if new_value ne old_\
value
# note - "$element" is correct\
below. For all but "notes", the
# element variable contains a \
variable name, it is that inner
# variable name that should be\
cleansed
if { $element ne "notes" } {
::pwsafe::int::randomi\
zeVar $element new_value old_value
}
} ; # end foreach element
if { $modified } {
dbset last-modified $rn $now
}
return $modified
} ; # end proc PopulateRecord
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
proc Ok { } {
variable title
variable group
variable rn
variable treenode
variable url
variable user
if { 0 == [ string length [ string tri\
m $title ] ] } {
# use url, if none use usernam\
e
if { 0 < [ string length [ str\
ing trim $url ] ] } {
set title $url
} else {
if { 0 == [ string len\
gth [ string trim $user ] ] } {
feedback [ mc \
"This login must have a title, url or username." ]
return
} else {
set title $use\
r
}
}
}
if { [ catch { ::pwsafe::db::splitGrou\
p $group } ] } {
feedback [ mc "This login's gr\
oup name is not valid." ] $pvns
return
}
if { $rn == -999 } {
set modified [ PopulateRecord \
[ set newrn [ $::gorilla::db createRecord ] ] ]
} else {
set modified [ PopulateRecord \
$rn ]
}
# Once the database has been updated, \
the
# dialog window is no longer necessary\
.
# Withdrawing it now prevents a flash \
of
# random data in the entries if a user\
has
# "auto-save-on-change" turned on.
[ namespace parent ]::DestroyLoginDial\
og -m:top-
if { $modified } {
if { $rn == -999 } {
set ::gorilla::status \
[ mc "New login added." ]
AddRecordToTree $newrn
} else {
# this takes a shortcu\
t, for an existing record, simply delete from
# tree then reinsert i\
nto tree
$::gorilla::widgets(tr\
ee) delete $treenode
AddRecordToTree $rn \
set ::gorilla::status \
[ mc "Login modified." ]
}
MarkDatabaseAsDirty
} ; # end if modified
} ; # end proc Ok
# = - = - = - = - = - = - = - = - = - = - = - = - = - \
= - = - = - = - = -
} ] ; # end smacro namespace eval
} ; # end proc build-gui-callbacks
# --------------------------------------------------------------------\
---------
proc EditLogin {} {
ArrangeIdleTimeout
lassign [ ::gorilla::get-selected-tree-data "Please se\
lect a login entry first." ] node type rn
if {$type == "Group" || $type == "Root"} {
set ::gorilla::status [ mc "Group entries may \
be renamed, not edited." ]
return
}
LoginDialog -rn $rn -treenode $node
} ; # end proc EditLogin
# --------------------------------------------------------------------\
---------
proc AddLogin {} {
set tree $::gorilla::widgets(tree)
set node [ lindex [ $tree selection ] 0 ]
lassign [ ::gorilla::LookupNodeData $node ] data type
# if "type" is Login, repeat the data lookup, but for \
the parent of the
# node, to result in an "add to group" action occurrin\
g instead.
if { $type eq "Login" } {
lassign [ gorilla::LookupNodeData [ $tree pare\
nt $node ] ] data type
}
# if no entry in tree is selected, then "type" will be\
{},
# so in that case perform the same action as an add to\
root
switch -exact -- $type {
Group {"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" LoginDialog -group [ lindex $data 1 ] }
Root { LoginDialog -group "" }
Login { LoginDialog -group [ lindex [ $tree \
item [ $tree parent $node ] -values ] 1 ] }
{} { LoginDialog -group "" }
}
} ; # end proc AddLogin
# --------------------------------------------------------------------\
---------
# --------------------------------------------------------------------\
---------
# #
# # Set up bindings
# #
#
# bind $top.l.group2 <Shift-Tab> "after 0 \\"focus $top.r.top.ok\
\\""
# bind $top.l.title2 <Shift-Tab> "after 0 \\"focus $top.l.group2\
\\""
# bind $top.l.user2 <Shift-Tab> "after 0 \\"focus $top.l.title2\
\\""
# bind $top.l.pass2 <Shift-Tab> "after 0 \\"focus $top.l.user2\\\
""
# bind $top.l.notes <Tab> "after 0 \\"focus $top.r.top.ok\\""
# bind $top.l.notes <Shift-Tab> "after 0 \\"focus $top.l.pass2\\\
""
#
# bind $top.l.group2 <Return> "set ::gorilla::guimutex 1"
# bind $top.l.title2 <Return> "set ::gorilla::guimutex 1"
# bind $top.l.user2 <Return> "set ::gorilla::guimutex 1"
# bind $top.l.pass2 <Return> "set ::gorilla::guimutex 1"
# bind $top.r.top.ok <Return> "set ::gorilla::guimutex 1"
# bind $top.r.top.c <Return> "set ::gorilla::guimutex 2"
#
} ; # end namespace eval ::gorilla::LoginDialog
# --------------------------------------------------------------------\
--
# Add a Login
# --------------------------------------------------------------------\
--
proc gorilla::AddLogin {} {
# since version 1.5.3.4 only the non-modal version is used
::gorilla::LoginDialog::AddLogin
}
# --------------------------------------------------------------------\
--
# Edit a Login
# --------------------------------------------------------------------\
--
proc gorilla::EditLogin {} {
# modal version is deprecated, renamed to gorilla::EditLoginMo\
dal
# since version 1.5.3.4 only the non-modal version is used
::gorilla::LoginDialog::EditLogin
}
# --------------------------------------------------------------------\
--
# Move a Login
# --------------------------------------------------------------------\
--
#
proc gorilla::MoveLogin {} {
gorilla::MoveDialog [mc Login]
}
proc gorilla::MoveGroup {} {
gorilla::MoveDialog [mc Group]
}
proc gorilla::MoveDialog {type} {
ArrangeIdleTimeout
lassign [ ::gorilla::get-selected-tree-data "Please select an \
entry in the tree to move." ] node nodetype rn
set top .moveDialog
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
TryResizeFromPreference $top
wm title $top [mc "Move %s" "$type"]
ttk::labelframe $top.source -text $type -padding [list\
10 10]
ttk::entry $top.source.e -width 40 -textvariable ::gor\
illa::MoveDialogSource
ttk::labelframe $top.dest \\
-text [mc "Destination Group with format <Group.Subgro\
up> :"] \\
-padding [list 10 10]
ttk::combobox $top.dest.e -width 40 -textvariable ::go\
rilla::MoveDialogDest \\
-postcommand [ list ::gorilla::fill-comb\
obox-with-grouplist $top.dest.e ]
# Format: group.subgroup
pack $top.source.e -side left -expand yes -fill x
pack $top.source -side top -expand yes -fill x -pady 1\
0 -padx 10
pack $top.dest.e -side left -expand yes -fill x
pack $top.dest -side top -expand yes -fill x -fill y -\
pady 10 -padx 10
ttk::frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 10 -text "OK\
" \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 10 -text [mc\
"Cancel"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -pady 10 -padx 20
pack $top.buts -side bottom -pady 10 -fill y -expand y\
es
bind $top.source.e <Shift-Tab> "after 0 \\"focus $top.\
buts.b1\\""
bind $top.dest.e <Shift-Tab> "after 0 \\"focus $top.so\
urce.e\\""
bind $top.source.e <Return> "set ::gorilla::guimutex 1\
"
bind $top.dest.e <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b1 <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b2 <Return> "set ::gorilla::guimutex 2"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyAddS\
ubgroupDialog
} else {
wm deiconify $top
}
# Configure Dialog
if {$nodetype == "Group"} {
#"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" for group entries the "rn" field contains the group name
set ::gorilla::MoveDialogSource $rn
} elseif {$nodetype == "Login"} {
if {[$::gorilla::db existsField $rn 3]} {
set ::gorilla::MoveDialogSource [ ::gorilla::d\
bget title $rn ]
}
} else {
return
}
set ::gorilla::MoveDialogDest ""
# Run Dialog
set oldGrab [grab current .]
update idletasks
raise $top
focus $top.dest.e
catch {grab $top}
while {42} {
ArrangeIdleTimeout
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
set sourceNode [$top.source.e get]
set destGroup [$top.dest.e get]
if {$::gorilla::guimutex != 1} {
break
}
#
# The group name must not be empty
#
if {$destGroup == ""} {
tk_messageBox -parent $top \\
-type ok -icon error -default ok \\
-title [ mc "Invalid Group Name" ] \\
-message [ mc "The group name can not \
be empty." ]
continue
}
#
# See if the destination's group name can be parsed
#
if {[catch {
set destNode $::gorilla::groupNodes($destGroup\
)
}]} {
tk_messageBox -parent $top \\
-type ok -icon error -default ok \\
-title [ mc "Invalid Group Name" ] \\
-message [ mc "The name of the parent \
group is invalid." ]
continue
}
# all seems well
break
}
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
wm withdraw $top
if {$::gorilla::guimutex != 1} {
set ::gorilla::status [mc "Moving of %s canceled." $ty\
pe]
return
}
gorilla::MoveTreeNode $node $destNode
$::gorilla::widgets(tree) item $destNode -open 1
$::gorilla::widgets(tree) item "RootNode" -open 1
set ::gorilla::status [mc "%s moved." $type]
MarkDatabaseAsDirty
}
# --------------------------------------------------------------------\
--
# Delete a Login
# --------------------------------------------------------------------\
--
#
proc gorilla::DeleteLogin {} {
ArrangeIdleTimeout
lassign [ ::gorilla::get-selected-tree-data RETURN ] node type\
rn
if {$type != "Login"} {
error "oops"
}
# It is good if there is necessarily a question, no if-questio\
n necessary
if {0} {
set answer [tk_messageBox -parent . \\
-type yesno -icon question -default no \\
-title [mc "Delete Login"] \\
-message [mc "Are you sure that you want to de\
lete this login?"]]
if {$answer != "yes"} {
return
}
}
$::gorilla::db deleteRecord $rn
$::gorilla::widgets(tree) delete $node
set ::gorilla::status [mc "Login deleted."]
MarkDatabaseAsDirty
}
# --------------------------------------------------------------------\
--
# Add a new group
# --------------------------------------------------------------------\
--
#
proc gorilla::AddGroup {} {
gorilla::AddSubgroup
# gorilla::AddSubgroupToGroup ""
}
#
# --------------------------------------------------------------------\
--
# Add a new subgroup (to the selected group)
# --------------------------------------------------------------------\
--
#
proc gorilla::AddSubgroup {} {
lassign [ ::gorilla::get-selected-tree-data ] node type rn
if { ( $node eq "" ) && ( $type eq "" ) } {
# No selection. Add to toplevel
#
gorilla::AddSubgroupToGroup ""
} else {
if {$type == "Group"} {
# for group entries, rn field contains group n\
ame
gorilla::AddSubgroupToGroup $rn
} elseif {$type == "Root"} {
gorilla::AddSubgroupToGroup ""
} else {
# A login is selected. Add to its parent group\
.
#
set parent [$::gorilla::widgets(tree) parent $\
node]
if {[string equal $parent "RootNode"]} {
gorilla::AddSubgroupToGroup ""
} else {
set pdata [ $::gorilla::widgets(tree) \
item $parent -values ]
gorilla::AddSubgroupToGroup [lindex $p\
data 1]
}
}
}
} ; # end proc gorilla::AddSubgroup
#
# --------------------------------------------------------------------\
--
# Add a new subgroup
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyAddSubgroupDialog {} {
set ::gorilla::guimutex 2
}
proc gorilla::AddSubgroupToGroup {parentName} {
ArrangeIdleTimeout
if {![info exists ::gorilla::db]} {
tk_messageBox -parent . \\
-type ok -"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"icon error -default ok \\
-title [mc "No Database"] \\
-message [mc "Please create a new database, or\
open an existing\\
database first."]
return
}
set top .subgroupDialog
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
TryResizeFromPreference $top
wm title $top [mc "Add a new Group"]
ttk::labelframe $top.parent -text [mc "Parent:"] \\
-padding [list 10 10]
ttk::entry $top.parent.e -width 40 -textvariable ::gor\
illa::subgroup.parent
pack $top.parent.e -side left -expand yes -fill x
pack $top.parent -side top -expand yes -fill x -pady 1\
0 -padx 10
ttk::labelframe $top.group -text [mc "New Group Name:"\
] -padding [list 10 10]
ttk::entry $top.group.e -width 40 -textvariable ::gori\
lla::subgroup.group
pack $top.group.e -side left -expand yes -fill x
pack $top.group -side top -expand yes -fill x -pady 10\
-padx 10
ttk::frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 10 -text [ m\
c "OK" ] \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 10 -text [mc\
"Cancel"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -pady 10 -padx 20
pack $top.buts -side bottom -pady 10
bind $top.parent.e <Shift-Tab> "after 0 \\"focus $top.\
buts.b1\\""
bind $top.group.e <Shift-Tab> "after 0 \\"focus $top.p\
arent.e\\""
bind $top.parent.e <Return> "set ::gorilla::guimutex 1\
"
bind $top.group.e <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b1 <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b2 <Return> "set ::gorilla::guimutex 2"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyAddS\
ubgroupDialog
} else {
wm deiconify $top
}
# $top.parent configure -text $parentName
# $top.group configure -text ""
set ::gorilla::subgroup.parent $parentName
set ::gorilla::subgroup.group ""
set oldGrab [grab current .]
update idletasks
raise $top
focus $top.group.e
catch {grab $top}
while {42} {
ArrangeIdleTimeout
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
set parent [$top.parent.e get]
set group [$top.group.e get]
if {$::gorilla::guimutex != 1} {
break
}
#
# The group name must not be empty
#
if {$group == ""} {
tk_messageBox -parent $top \\
-type ok -icon error -default ok \\
-title [mc "Invalid Group Name"] \\
-message [mc "The group name can not b\
e empty."]
continue
}
#
# See if the parent's group name can be parsed
#
if {[catch {
set parents [pwsafe::db::splitGroup $parent]
}]} {
tk_messageBox -parent $top \\
-type ok -icon error -default ok \\
-title [mc "Invalid Group Name"] \\
-message ["The name of the parent grou\
p is invalid."]
continue
}
break
}
if {$oldGrab != ""} {
catch { grab $oldGrab }
} else {
catch { grab release $top }
}
wm withdraw $top
if {$::gorilla::guimutex != 1} {
set ::gorilla::status [mc "Addition of group canceled.\
"]
return
}
lappend parents $group
set fullGroupName [pwsafe::db::concatGroups $parents]
AddGroupToTree $fullGroupName
set piter [list]
foreach parent $parents {
lappend piter $parent
set fullParentName [pwsafe::db::concatGroups $piter]
set node $::gorilla::groupNodes($fullParentName)
$::gorilla::widgets(tree) item $node -open 1
}
$::gorilla::widgets(tree) item "RootNode" -open 1
set ::gorilla::status [mc "New group added."]
# MarkDatabaseAsDirty
}
# --------------------------------------------------------------------\
--
# Move Node to a new Group
# --------------------------------------------------------------------\
--
#
proc gorilla::MoveTreeNode {node dest} {
set nodedata [$::gorilla::widgets(tree) item $node -values]
set destdata [$::gorilla::widgets(tree) item $dest -values]
set nodetype [lindex $nodedata 0]
set desttype [lindex $destdata 0]
# node6 to node3
#node7 node1
# men\M-C\M-< move login erscheint nur, wenn ein Login angekli\
ckt ist
# entsprechend MOVE GROUP nur, wenn tag group aktiviert ist
if {$nodetype == "Root"} {
tk_messageBox -parent . \\
-type ok -icon error -defau"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"lt ok \\
-title [ mc "Root Node Can Not Be Moved" ] \\
-message [ mc "The root node can not be moved.\
" ]
return
}
if {$desttype == "RootNode"} {
set destgroup ""
} elseif { $desttype == "Login" } {
# if moving to a "Login", actually move to the parent \
of the
# login (which will be a group)
set dest [ $::gorilla::widgets(tree) parent $dest ]
set destdata [ $::gorilla::widgets(tree) item $dest -v\
alues ]
lassign $destdata desttype destgroup
} else {
set destgroup [lindex $destdata 1]
}
#
# Move a Login
#
if {$nodetype == "Login"} {
set rn [lindex $nodedata 1]
$::gorilla::db setFieldValue $rn 2 $destgroup
$::gorilla::widgets(tree) delete $node
AddRecordToTree $rn
MarkDatabaseAsDirty
return
}
# bis hier
#
# Moving a group to its immediate parent does not have any eff\
ect
#
if {$dest == [$::gorilla::widgets(tree) parent $node]} {
return
}
#
# When we are moving a group, make sure that destination is no\
t a
# child of this group
#
set destiter $dest
while {$destiter != "RootNode"} {
if {$destiter == $node} {
break
}
set destiter [$::gorilla::widgets(tree) parent $destit\
er]
}
if {$destiter != "RootNode" || $node == "RootNode"} {
tk_messageBox -parent . \\
-type ok -icon error -default ok \\
-title [ mc "Can Not Move Node" ] \\
-message [ mc "Can not move a group to a subgr\
oup of itself." ]
return
}
#
# Move recursively
#
MoveTreeNodeRek $node [pwsafe::db::splitGroup $destgroup]
MarkDatabaseAsDirty
}
#
# Moves the children of tree node to the newParents group
#
proc gorilla::MoveTreeNodeRek {node newParents} {
set nodedata [$::gorilla::widgets(tree) item $node -values]
set nodename [$::gorilla::widgets(tree) item $node -text]
lappend newParents $nodename
set newParentName [pwsafe::db::concatGroups $newParents]
set newParentNode [AddGroupToTree $newParentName]
foreach child [$::gorilla::widgets(tree) children $node] {
set childdata [$::gorilla::widgets(tree) item $child -\
values]
set childtype [lindex $childdata 0]
if {$childtype == "Login"} {
set rn [lindex $childdata 1]
$::gorilla::db setFieldValue $rn 2 $newParentN\
ame
$::gorilla::widgets(tree) delete $child
AddRecordToTree $rn
} else {
MoveTreeNodeRek $child $newParents
}
}
set oldGroupName [lindex $nodedata 1]
unset ::gorilla::groupNodes($oldGroupName)
$::gorilla::widgets(tree) item $newParentNode \\
-open [$::gorilla::widgets(tree) item $node -open]
$::gorilla::widgets(tree) delete $node
}
#
# --------------------------------------------------------------------\
--
# Delete Group
# --------------------------------------------------------------------\
--
#
proc gorilla::DeleteGroup {} {
ArrangeIdleTimeout
lassign [ ::gorilla::get-selected-tree-data RETURN ] node type\
rn
if {$type == "Root"} {
tk_messageBox -parent . \\
-type ok -icon error -default ok \\
-title [mc "Can Not Delete Root"] \\
-message [mc "The root node can not be deleted\
."]
return
}
if {$type != "Group"} {
error "oops"
}
if {[llength [$::gorilla::widgets(tree) children $node]] > 0} \
{
set answer [tk_messageBox -parent . \\
-type yesno -icon question -default no \\
-title [mc "Delete Group"] \\
-message [mc "Are you sure that you want to de\
lete group and all its contents?"]]
if {$answer != "yes"} {
return
}
set hadchildren 1
} else {
set hadchildren 0
}
set ::gorilla::status [mc "Group deleted."]
gorilla::DeleteGroupRek $node
if {$hadchildren} {
MarkDatabaseAsDirty
}
}
proc gorilla::DeleteGroupRek {node} {
set children [$::gorilla::widgets(tree) children $node]
foreach child $children {
set data [$::gorilla::widgets(tree) item $child -value\
s]
set type [lindex $data 0]
if {$type == "Login"} {
$::gorilla::db deleteRecord [lindex $data 1]
$::gorilla::widgets(tree) delete $child
} else {
DeleteGroupRek $child
}
}
set groupName [lindex [$::gorilla::widgets(tree) item $node -v\
alues] 1]
unset ::gorilla::groupNodes($groupName)
$::gorilla::widgets(tree) delete $node
}
#
# --------------------------------------"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"--------------------------------
# Rename Group
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyRenameGroupDialog {} {
set ::gorilla::guimutex 2
}
proc gorilla::RenameGroup {} {
ArrangeIdleTimeout
lassign [ ::gorilla::get-selected-tree-data RETURN ] node type\
fullGroupName
if {$type == "Root"} {
tk_messageBox -parent . \\
-type ok -icon error -default ok \\
-title [mc "Can Not Rename Root"] \\
-message [mc "The root node can not be renamed\
."]
return
}
if {$type != "Group"} {
error "oops"
}
set groupName [$::gorilla::widgets(tree) item $node -text]
set parentNode [$::gorilla::widgets(tree) parent $node]
set parentData [$::gorilla::widgets(tree) item $parentNode -va\
lues]
set parentType [lindex $parentData 0]
if {$parentType == "Group"} {
set parentName [lindex $parentData 1]
} else {
set parentName ""
}
set top .renameGroup
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
TryResizeFromPreference $top
wm title $top [mc "Rename Group"]
# set title [label $top.title -anchor center -text [mc\
"Rename Group"]]
# pack $title -side top -fill x -pady 10
# set sep1 [ttk::separator $top.sep1 -orient horizonta\
l]
# pack $sep1 -side top -fill x -pady 10
ttk::labelframe $top.parent -text [mc "Parent:"]
ttk::entry $top.parent.e -width 40 -textvariable ::gor\
illa::renameGroupParent
pack $top.parent.e -side left -expand yes -fill x -pad\
y 5 -padx 10
pack $top.parent -side top -expand yes -fill x -pady 5\
-padx 10
ttk::labelframe $top.group -text [ mc Name ]
ttk::entry $top.group.e -width 40 -textvariable ::gori\
lla::renameGroupName
pack $top.group.e -side top -expand yes -fill x -pady \
5 -padx 10
pack $top.group -side top -expand yes -fill x -pady 5 \
-padx 10
bind $top.group.e <Shift-Tab> "after 0 \\"focus $top.p\
arent.e\\""
set sep2 [ttk::separator $top.sep2 -orient horizontal]
pack $sep2 -side top -fill x -pady 10
ttk::frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 15 -text [ m\
c "OK" ] \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 15 -text [mc\
"Cancel"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -pady 10 -padx 20
pack $top.buts
bind $top.parent.e <Return> "set ::gorilla::guimutex 1\
"
bind $top.group.e <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b1 <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b2 <Return> "set ::gorilla::guimutex 2"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyRena\
meGroupDialog
} else {
wm deiconify $top
}
set ::gorilla::renameGroupParent $parentName
set ::gorilla::renameGroupName $groupName
set oldGrab [grab current .]
update idletasks
raise $top
focus $top.group.e
catch {grab $top}
while {42} {
ArrangeIdleTimeout
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
if {$::gorilla::guimutex != 1} {
break
}
set newParent [$top.parent.e get]
set newGroup [$top.group.e get]
#
# Validate that both group names are valid
#
if {$newGroup == ""} {
tk_messageBox -parent $top \\
-type ok -icon error -default ok \\
-title [mc "Invalid Group Name"] \\
-message [mc "The group name can not b\
e empty."]
continue
}
if {[catch {
set newParents [pwsafe::db::splitGroup $newPar\
ent]
}]} {
tk_messageBox -parent $top \\
-type ok -icon error -default ok \\
-title [mc "Invalid Group Name"] \\
-message [mc "The name of the group's \
parent node\\
is invalid."]
continue
}
#
# if we got this far, all is well
#
break
}
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
wm withdraw $top
if {$::gorilla::guimutex != 1} {
return
}
if {$parentName == $newParent && $groupName == $newGroup} {
#
# Unchanged
#
set ::gorilla::status [mc "Group name unchanged."]
return
}
#
# See if the parent of the new group exists, or create it
#
set destparentnode [AddGroupToTree $newParent]
set destparentdata [$"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"::gorilla::widgets(tree) item $destparentnode -values]
set destparenttype [lindex $destparentdata 0]
#
# Works nearly the same as dragging and dropping
#
#
# When we are moving a group, make sure that destination is no\
t a
# child of this group
#
set destiter $destparentnode
while {$destiter != "RootNode"} {
if {$destiter == $node} {
break
}
set destiter [$::gorilla::widgets(tree) parent $destit\
er]
}
if {$destiter != "RootNode" || $node == "RootNode"} {
tk_messageBox -parent . \\
-type ok -icon error -default ok \\
-title [mc "Can Not Move Node"] \\
-message [mc "Can not move a group to a subgro\
up\\
of itself."]
return
}
#
# Move recursively
#
if {$newGroup != ""} {
lappend newParents $newGroup
}
set newParentName [pwsafe::db::concatGroups $newParents]
set newParentNode [AddGroupToTree $newParentName]
foreach child [$::gorilla::widgets(tree) children $node] {
set childdata [$::gorilla::widgets(tree) item $child -\
values]
set childtype [lindex $childdata 0]
if {$childtype == "Login"} {
set rn [lindex $childdata 1]
$::gorilla::db setFieldValue $rn 2 $newParentN\
ame
$::gorilla::widgets(tree) delete $child
AddRecordToTree $rn
} else {
MoveTreeNodeRek $child $newParents
}
}
unset ::gorilla::groupNodes($fullGroupName)
$::gorilla::widgets(tree) item $newParentNode \\
-open [$::gorilla::widgets(tree) item $node -open]
$::gorilla::widgets(tree) delete $node
set ::gorilla::status [mc "Group renamed."]
MarkDatabaseAsDirty
}
# --------------------------------------------------------------------\
--
# Export Database
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyExportDialog {} {
set ::gorilla::guimutex 2
}
proc gorilla::Export {} {
ArrangeIdleTimeout
set top .export
if {$::gorilla::preference(exportShowWarning)} {
set answer [tk_messageBox -parent . \\
-type yesno -icon warning -default no \
\\
-title [mc "Export Security Warning"] \
\\
-message [mc "You are about to export \
the password\\
database to a plain-text file. The fil\
e will\\
not be encrypted or password-protected\
. Anybody\\
with access can read the file, and lea\
rn your\\
user names and passwords. Make sure to\
store the\\
file in a secure location. Do you want\
to\\
continue?"] ]
if {$answer ne "yes"} {
return
}
}
setup-default-dirname
if { $::gorilla::DEBUG(CSVEXPORT) } {
set fileName testexport.csv
} else {
set types {
{{CSV Files} {.csv}}
{{Text Files} {.txt}}
{{All Files} *}
}
set fileName [ tk_getSaveFile -parent . \\
-title [ mc "Export password database as text \
..." ] \\
-defaultextension ".csv" \\
-filetypes $types \\
-initialdir $::gorilla::dirName ]
};# end if $::gorilla::DEBUG(CSVEXPORT)
if {$fileName == ""} {
return
}
set nativeName [file nativename $fileName]
set myOldCursor [. cget -cursor]
. configure -cursor watch
update idletasks
if {[catch {
set txtFile [ open $fileName {WRONLY CREAT TRUNC} ]
} oops]} {
. configure -cursor $myOldCursor
error_popup [ mc "Error Exporting Database" ] \\
"[ mc "Failed to export password database \
to" ] ${nativeName}: $oops"
return
}
load-package csv
::gorilla::Feedback [ mc "Exporting ..." ]
fconfigure $txtFile -encoding utf-8
set separator [subst -nocommands -novariables $::gorilla::pref\
erence(exportFieldSeparator)]
# output a csv header describing what data values are present \
in each
# column of the csv file
set csv_data [ list uuid group title url user ]
if { $::gorilla::preference(exportIncludePassword) } {
lappend csv_data password
}
if { $::gorilla::preference(exportIncludeNotes) } {
lappend csv_data notes
}
puts $txtFile [ ::csv::join $csv_data $separator ]
# now output the contents of the database
foreach rn [$::gorilla::db getAllRecordNumbers] {
set csv_data [ list [ dbget uuid $rn ] [ dbget group \
$rn ] \\
[ dbget title $rn ] [ dbget url $r\
n ] \\
[ dbget user $rn ] ]
# Password - optional export
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0x43af49ea000,0x1c000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651258650624/0x43af49ea000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" if {$::gorilla::preference(exportIncludePassword)} {
lappend csv_data [ dbget password $rn ]
}
# Notes - need to escape newlines and slashes. The CS\
V module will
# handle escaping commas and double quotes
if {$::gorilla::preference(exportIncludeNotes)} {
lappend csv_data [ string map {\\\\ \\\\\\\\ \
\\n \\\\n} [ dbget notes $rn ] ]
}
puts $txtFile [ ::csv::join $csv_data $separator ]
} ; # end foreach rn in gorilla db
catch {close $txtFile}
. configure -cursor $myOldCursor
::gorilla::Feedback [ mc "Database exported." ]
return GORILLA_OK
} ; # end proc gorilla::Export
# --------------------------------------------------------------------\
--
# Import data from a CSV file
# --------------------------------------------------------------------\
--
#
proc gorilla::Import { {input_file ""} } {
# Import a csv file and add the entries therein to the current\
ly open
# database
ArrangeIdleTimeout
setup-default-dirname
set types {
{{CSV Files} {.csv}}
}
if { $input_file eq "" } {
set input_file [ tk_getOpenFile -parent . \\
-title [ mc "Import CSV datafile" ] \\
-defaultextension ".csv" \\
-filetypes $types \\
-initialdir $::gorilla::dirName ]
}
if { $input_file eq "" } {
return
}
if { [ catch { set infd [ open $input_file {RDONLY} ] } oops ]\
} {
ErrorPopup [ mc "Error opening import CSV file" ] \\
"[ mc "Could not access file "\
] ${input_file}:\\n$oops"
return GORILLA_OPENERROR
}
fconfigure $infd -encoding utf-8
load-package csv
# if { [ catch { package require csv } oops ] } {
# ErrorPopup [ mc "Error loading CSV parsing package."\
] \\
# "[ mc "Could not access the tcllib CSV pa\
rsing package." ]\\n[ mc "This should not have happened." ]\\n[ mc "Un\
able to continue." ]"
# return
# }
set myOldCursor [. cget -cursor]
. configure -cursor watch
update idletasks
set possible_columns { create-time group last-access last-modi\
fied
last-pass-change lifetime notes passwo\
rd title
url user uuid }
if { [ catch { set columns_present [ ::csv::split [ gets $infd\
] ] } oops ] } {
ErrorPopup [ mc "Error parsing CSV file" ] \\
"[ mc "Error parsing first line of CSV file\
, unable to continue." ]\\n$oops"
catch { close $infd }
. configure -cursor $myOldCursor
return GORILLA_FIRSTLINEERROR
}
# puts "columns_present: $columns_present"
# Must have at least one data column present
if { [ llength $columns_present ] == 0 } {
ErrorPopup [ mc "Error, nothing to import." ] \\
[ mc "No valid import data was found. Ple\
ase see\\nthe help for details on how to format import\\nCSV data file\
s for Password Gorilla." ]
catch { close $infd }
. configure -cursor $myOldCursor
return GORILLA_NODATA
}
# Make sure that only the possible columns are present. Note,\
this does
# not test for duplicate columns, that is intentional. The re\
sult of
# duplicate columns is that the last duplicate column on a lin\
e will
# override the value of previous occurrences of the same colum\
n on that
# line.
foreach item $columns_present {
if { $item ni $possible_columns } {
lappend error_columns $item
}
}
if { [ info exists error_columns ] } {
ErrorPopup [ mc "Error, undefined data columns" ] \\
"[ mc "The following data items are not recogn\
ized as import data items.\\nUnable to continue." ]\\n[ join $error_co\
lumns " " ]"
catch { close $infd }
. configure -cursor $myOldCursor
return GORILLA_UNDEFINEDCOLUMNS
}
# This is utilized below to apply a "default" group to any imp\
orts
# which do not contain a group column in the input data. It i\
s
# setup before the loop so that the "group" name is identical \
for
# all records in the import batch
if { "group" ni $columns_present } {
set default_group_name "Newly Imported [ clock format \
[ clock seconds ] ]"
if { $::gorilla::DEBUG(CSVIMPORT) } {
. configure -cursor $myOldCursor
return GORILLA_ADDDEFAULTGROUP
}
}
set new_add_counter 0
foreach line [ split [ read $infd [ file size $input_file ] ] \
"\\n" ] {
# puts "line: $line"
if { [ catch"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" { set data [ ::csv::split $line ] } oops ] } {
lappend error_lines [ list "Unable to parse as\
CSV" $line ]
continue
} ; # end if catch csv::split
if { [ llength $data ] == 0 } {
continue
}
if { [ llength $data ] != [ llength $columns_present ]\
} {
lappend error_lines [ list "Unequal number of \
columns" $line ]
continue
}
set newrn [ $::gorilla::db createRecord ]
# puts "newrn: $newrn"
set no_errors 1
foreach key $columns_present value $data {
# puts "key: $key value $value"
switch -exact -- $key {
group {
if { [ catch { ::pwsafe::db::s\
plitGroup $value } ] } {
lappend error_lines [ \
list "Invalid group name" $line ]
set no_errors 0
}
dbset group $newrn $value
}
uuid {
# uuid is allowed to be empty,\
but if not empty it must be in
# this format: f29b9ef7-9e62-4\
1e1-7dfd-14ae13986059
if { ( $value ne "" ) &&
( ! [ regexp {^[[:xdigit:\
]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}\
$} $value ] ) } {
# puts "invalid uuid $value"
lappend error_lines [ \
list "Invalid UUID field" $line ]
set no_errors 0
}
dbset uuid $newrn $value
}
create-time -
last-access -
last-modified -
last-pass-change -
lifetime {
if { [ catch { set time [ cloc\
k scan $value -format "%Y-%m-%d %k-%M-%S %z" ] } ] } {
lappend error_lines [ \
list "Invalid time: field $key" $line ]
set no_errors 0
} else {
dbset $key $newrn $tim\
e
}
}
notes {
dbset notes $newrn [ subst -no\
commands -novariables $value ]
}
default { dbset $key $newrn $value }
} ; # end switch
} ; # end foreach key/value
# puts ""
if { $no_errors } {
# setup some reasonable defaults if certain it\
ems are not provided
# in the CSV file
if { [ info exists default_group_name ] } {
# puts "setting a default group"
dbset group $newrn $default_group_name
}
if { ( "uuid" ni $columns_present )
&& ( ! [ catch { package present uuid \
} ] ) } {
# puts "setting a new uuid"
dbset uuid $newrn [uuid::uuid generate\
]
}
if { "title" ni $columns_present } {
# puts "setting a default title"
dbset title $newrn "Newly Imported [ c\
lock format [ clock seconds ] ]"
}
AddRecordToTree $newrn
incr new_add_counter
} else {
$::gorilla::db deleteRecord $newrn
}
} ; # end foreach line in input file
if { [ info exists error_lines ] } {
if { $::gorilla::DEBUG(CSVIMPORT) } {
. configure -cursor $myOldCursor
return [lindex $error_lines 0 0]
}
# puts "errors exist from import: $error_lines"
set answer [ tk_messageBox -default yes -icon info \\
-message [ mc "Some records from the CSV file \
were not imported.\\nDo you wish to save a log of skipped records?" ] \
\\
-parent . -title [ mc "Some records skipped du\
ring import" ] -type yesno ]
if { $answer eq "yes" } {
set fn [ tk_getSaveFile -parent . -title [ mc \
"Enter a file into which to save the log" ] ]
if { $fn ne "" } {
set outfd [ open $fn {WRONLY CREAT TRU\
NC} ]
fconfigure $outfd -encoding utf-8
foreach item $error_lines {
puts $outfd [ join $item "\\t"\
]
}
close $outfd
} ; # end if fn ne ""
} ; # end if answer eq yes
} ; # end if exists error_lines
if { $new_add_counter > 0 } {
set ::gorilla::status "$new_add_counter [ mc "record(s\
) successfully imported." ]"
MarkDatabaseAsDirty
}
catch { close $infd }
. configure -cursor $myOldCursor
package forget csv
return GORILLA_OK
} ; # end proc gorilla::Import
proc gorilla::ErrorPopup {title message} {
# a small helper proc to encapsulate all the details of openin\
g a
# tk_messageBox with a title and message
if { $::gorilla::DEBUG(CSVIMPORT) } { return }
tk_messageBox -parent . -type ok -icon error -default ok \\
-title $title \\
-message $message
} ; # end proc gorilla::ErrorPopup
proc gorilla::setup-default-dirname { } {
# Makes sure that the global ::gorilla::dirName variable is se\
t to a
# sensible default if it does not "
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"already exist.
#
# Side-effect of modifying the global ::gorilla::dirName varia\
ble
if { ! [ info exists ::gorilla::dirName ] } {
if { [ tk windowingsystem ] == "aqua" } {
set ::gorilla::dirName "~/Documents"
} else {
# pay attention to Windows environment
set ::gorilla::dirName [ pwd ]
}
}
} ; # end proc setup-default-dirname
# --------------------------------------------------------------------\
--
# Mark database as dirty
# --------------------------------------------------------------------\
--
proc gorilla::MarkDatabaseAsDirty {} {
set ::gorilla::dirty 1
$::gorilla::widgets(tree) item "RootNode" -tags red
if {[info exists ::gorilla::db]} {
if {[$::gorilla::db getPreference "SaveImmediately"]} \
{
if {[info exists ::gorilla::fileName]} {
gorilla::Save
} else {
gorilla::SaveAs
}
}
}
UpdateMenu
}
# --------------------------------------------------------------------\
--
# Merge file
# --------------------------------------------------------------------\
--
#
variable gorilla::fieldNames [ list "" \\
"UUID" \\
"group name" \\
"title" \\
"user name" \\
"notes" \\
"password" \\
"creation time" \\
"password modification time" \\
"last access time" \\
"password lifetime" \\
"password policy" \\
"last modification time" \\
"URL" ]
proc gorilla::DestroyMergeReport {} {
ArrangeIdleTimeout
trace remove variable ::gorilla::merge_conflict_data {*}[ lind\
ex [ trace info variable ::gorilla::merge_conflict_data ] 0 ]
set top .mergeReport
catch {destroy $top}
unset ::gorilla::toplevel($top)
}
proc gorilla::DestroyDialog { top } {
ArrangeIdleTimeout
catch {destroy $top}
unset ::gorilla::toplevel($top)
}
proc gorilla::CloseDialog { top } {
if {[info exists ::gorilla::toplevel($top)]} {
wm withdraw $top
}
}
proc gorilla::Merge {} {
set openInfo [OpenDatabase [mc "Merge Password Database"] "" 0\
]
# set openInfo [OpenDatabase "Merge Password Database" "" 0]
# enth\M-C\M-$lt [list $fileName $newdb]
set action [lindex $openInfo 0]
if {$action != "Open"} {
return
}
set ::gorilla::status [mc "Merging"]
set fileName [lindex $openInfo 1]
set newdb [lindex $openInfo 2]
set nativeName [file nativename $fileName]
set totalLogins 0
set addedNodes [list]
set conflictNodes [list]
set identicalLogins 0
set addedReport [list]
set conflictReport [list]
set identicalReport [list]
set totalRecords [llength [$newdb getAllRecordNumbers]]
::gorilla::progress init -win . -message [mc "Merging (%d %% d\
one)"]
foreach nrn [$newdb getAllRecordNumbers] {
unset -nocomplain rn node
incr totalLogins
::gorilla::progress update-pbar . [expr {int(100.*$tot\
alLogins/$totalRecords)}]
set ngroup ""
set ntitle ""
set nuser ""
if {[$newdb existsField $nrn 2]} {
set ngroup [$newdb getFieldValue $nrn 2]
}
if {[$newdb existsField $nrn 3]} {
set ntitle [$newdb getFieldValue $nrn 3]
}
if {[$newdb existsField $nrn 4]} {
set nuser [$newdb getFieldValue $nrn 4]
}
#
# See if the current database has a login with the sam\
e,
# group, title and user
#
set found 0
if {$ngroup == "" || [info exists ::gorilla::groupNode\
s($ngroup)]} {
if {$ngroup != ""} {
set parent $::gorilla::groupNodes($ngr\
oup)
} else {
set parent "RootNode"
}
foreach node [$::gorilla::widgets(tree) childr\
en $parent] {
set data [$::gorilla::widgets(tree) it\
em $node -values]
set type [lindex $data 0]
if {$type != "Login"} {
continue
}
set rn [lindex $data 1]
set title [ ::gorilla::dbget title $rn\
]
set user [ ::gorilla::dbget user $rn\
]
if {[string equal $ntitle $title] && \
\\
[string equal $nuser $user]} {
set found 1
break
}
}
}
if {[info exists title]} {
pwsafe::int::randomizeVar title user
}
#
# If a record with the same group, title and user was \
found,
# see if the other fields are also the same.
#
if {$found} {
#
# See if they both define the same fields. If \
one defines
# a field that the other doesn't have, the log\
ins can not
# be identical. This works both way"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"s. However, ignore
# timestamps and the UUID, which may go AWOL b\
etween
# different Password Safe clones.
#
set nfields [$newdb getFieldsForRecord $nrn]
set fields [$::gorilla::db getFieldsForRecord \
$rn]
set identical 1
foreach nfield $nfields {
if {$nfield == 1 || $nfield == 7 || $n\
field == 8 || \\
$nfield == 9 || $nfield == 12}\
{
continue
}
if {[$newdb getFieldValue $nrn $nfield\
] == ""} {
continue
}
if {[lsearch -integer -exact $fields $\
nfield] == -1} {
set reason "existing login is \
missing "
if {$nfield > 0 && \\
$nfield < [llength $::\
gorilla::fieldNames]} {
append reason "the " \
\\
[lindex $::gor\
illa::fieldNames $nfield] \\
" field"
} else {
append reason "field n\
umber $nfield"
}
set identical 0
break
}
}
if {$identical} {
foreach field $fields {
if {$field == 1 || $field == 7\
|| $field == 8 || \\
$field == 9 || $field \
== 12} {
continue
}
if {[$::gorilla::db getFieldVa\
lue $rn $field] == ""} {
continue
}
if {[lsearch -integer -exact $\
nfields $field] == -1} {
set reason "merged log\
in is missing "
if {$field > 0 && \\
$field < [llen\
gth $::gorilla::fieldNames]} {
append reason \
"the " \\
[linde\
x $::gorilla::fieldNames $field] \\
" fiel\
d"
} else {
append reason \
"field number $field"
}
set identical 0
break
}
}
}
#
# See if fields have the same content
#
if {$identical} {
foreach field $fields {
if {$field == 1 || $field == 7\
|| $field == 8 || \\
$field == 9 || $field \
== 12} {
continue
}
if {[$::gorilla::db getFieldVa\
lue $rn $field] == "" && \\
[lsearch -integer -exa\
ct $nfields $field] == -1} {
continue
}
if {![string equal [$newdb get\
FieldValue $nrn $field] \\
[$::gorilla::db getFie\
ldValue $rn $field]]} {
set reason ""
if {$field > 0 && \\
$field < [llen\
gth $::gorilla::fieldNames]} {
append\
reason \\
\
[lindex $::gorilla::fieldNames $field] \\
\
" differs"
} else {
append reason \
"field number $field differs"
}
set identical 0
break
}
}
}
}
# not found
#
# If the two records are not identical, then we have a\
conflict.
# Add the new record, but with a modified title.
#
# If the record has a "Last Modified" field, append th\
at
# timestamp to the title.
#
# Else, append " - merged <timestamp>" to the new reco\
rd.
#
if {$found && !$identical} {
set timestampFormat "%Y-%m-%d %H:%M:%S"
if {[$newdb existsField $nrn 3]} {
set title [$newdb getFieldValue $nrn 3\
]
} else {
set title "<No Title>"
}
if {[set index [string first " - modified " $t\
itle]] >= 0} {
set title [string range $title 0 [expr\
{$index-1}]]
} elseif {[set index [string first " - merged \
" $title]] >= 0} {
set title [string range $title 0 [expr\
{$index-1}]]
}
if {[$newdb existsField $nrn 12]} {
append title " - modified " [clock for\
mat \\
[$newdb getFieldValue $nrn 12] \\
-format $timestampFormat]
} else {
append title " - merged " [clock forma\
t \\
[clock seconds] \\
-format $timestampFormat]
}
$newdb setFieldValue $nrn 3 $title
pwsafe::int::randomizeVar title
}
#
# Add the record to the database, if this is either a \
new login
# that does not exist in this database, or if the logi\
n was found,
# but not identical.
#
if {!$found || !$identical} {
set oldrn [ expr { [ info exists rn ] ? $rn : \
"" } ]
set rn [$::gorilla::db createRecord]
foreach field [$newdb getFieldsForRecord $nrn]\
{
$::gorilla::db setFieldValue $rn $fiel\
d [$newdb getFieldValue $nrn $field]
}
set oldnode [ expr { [ info exists node ] ? $n\
ode : "" } ]
set node [AddRecordToTree $rn]
if {$found && !$identical} {
#
# Remember that there was a conflict
#
lappend conflictNodes $node
set report [mc "Conflict for login %s"\
$ntitle]
if {$ngroup != "
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"""} {
append report " [mc "(in group\
%s)" $ngroup]"
}
append report ": " [mc %s $reason] "."
lappend conflictReport [ list $report \
$rn $oldrn $node $oldnode ]
#
# Make sure that this node is visible
#
set parent [$::gorilla::widgets(tree) \
parent $node]
while {$parent != "RootNode"} {
$::gorilla::widgets(tree) item\
$parent -open 1
set parent [$::gorilla::widget\
s(tree) parent $parent]
}
} else {
lappend addedNodes $node
set report [mc "Added login %s" $ntitl\
e]
if {$ngroup != ""} {
append report " [mc "(in group\
%s)" $ngroup]"
}
append report "."
lappend addedReport [ list $report $rn\
]
}
} else {
incr identicalLogins
set report [mc "Identical login %s" $ntitle]
if {$ngroup != ""} {
append report " [mc "(in group %s)" $n\
group]"
}
append report "."
lappend identicalReport $report
}
pwsafe::int::randomizeVar ngroup ntitle nuser
}
::gorilla::progress finished .
itcl::delete object $newdb
MarkDatabaseAsDirty
set numAddedLogins [llength $addedNodes]
set numConflicts [llength $conflictNodes]
set message [ mc "Merged %s;\\n%d %s, %d identical, %d added, \
%d %s." \\
$nativeName $totalLogins \\
[ expr { $totalLogins == 1 ? [ mc "login" ] : [ mc "lo\
gins" ] } ] \\
$identicalLogins $numAddedLogins $numConflicts \\
[ expr { $numConflicts == 1 ? [ mc "conflict" ] : [ mc\
"conflicts" ] } ] \\
]
set ::gorilla::status $message
if {$numConflicts > 0} {
set default "yes"
set icon "warning"
} else {
set default "no"
set icon "info"
}
# Build a list suitable for passing to ::gorilla::conflict-dia\
log and
# save it to the global "conflicts" variable. This is so that
# someone can resolve conflicts "later" if they just want to g\
et on
# with merging right now. Also append to anything that might \
be
# already present, allowing multiple sequential merges to then\
all
# be conflict resolved from a single dialog.
foreach {item} $conflictReport {
lappend ::gorilla::merge_conflict_data [ lindex $item \
2 ] [ lindex $item 1 ] [ lindex $item 4 ] [ lindex $item 3 ]
}
UpdateMenu
set answer [tk_messageBox -parent . -type yesno \\
-icon $icon -default $default \\
-title [mc "Merge Results"] \\
-message "$message\\n[ mc "Do you want to view a detai\
led report?"]"]
if {$answer != "yes"} {
return
}
set top ".mergeReport"
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
wm title $top [mc "Merge Report for $nativeName"]
set text [text $top.text -relief sunken -width 100 -wr\
ap word \\
-yscrollcommand "$top.vsb set"]
if {[tk windowingsystem] ne "aqua"} {
ttk::scrollbar $top.vsb -orient vertical -comm\
and "$top.text yview"
} else {
scrollbar $top.vsb -orient vertical -command "\
$top.text yview"
}
## Arrange the tree and its scrollbars in the toplevel
lower [ttk::frame $top.dummy]
pack $top.dummy -fill both -fill both -expand 1
grid $top.text $top.vsb -sticky nsew -in $top.dummy
grid columnconfigure $top.dummy 0 -weight 1
grid rowconfigure $top.dummy 0 -weight 1
set botframe [ ttk::frame $top.botframe ]
set resolve_b [ ttk::button $botframe.resolve -text [\
mc "Resolve Conflicts" ] -state disabled \\
-command [ list catch {::gorilla::conflict-dia\
log $::gorilla::merge_conflict_data} ] ]
trace add variable ::gorilla::merge_conflict_data writ\
e [ list apply [ list args [ string map [ list %rcb $resolve_b ] {
if { ( ! [ info exists ::gorilla::merge_confli\
ct_data ] ) ||
( [ llength $::gorilla::merge_conflict_da\
ta ] == 0 ) } {
%rcb configure -state disabled
# also turn off File->Resolve Conflict\
s menu entry
::gorilla::UpdateMenu
} else {
%rcb configure -state normal
}
} ] ] ]
if { [ info exists ::gorilla::merge_conflict_data ] &&\
[ llength $::gorilla::merge_conflict_data ] > 0 }\
{
$resolve_b configure -state normal
}
set close_b [ttk::button $botframe.but2 -text [mc "Clo\
se"] \\
-command "gorilla::DestroyMergeReport"]
grid $resolve_b $close_b
grid columnconfigure $botframe all -w"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"eight 1
pack $botframe -side top -fill x -pady 10
bind $top <Prior> "$text yview scroll -1 pages; break"
bind $top <Next> "$text yview scroll 1 pages; break"
bind $top <Up> "$text yview scroll -1 units"
bind $top <Down> "$text yview scroll 1 units"
bind $top <Home> "$text yview moveto 0"
bind $top <End> "$text yview moveto 1"
bind $top <Return> "gorilla::DestroyMergeReport"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyMerg\
eReport
} else {
wm deiconify $top
set text "$top.text"
set botframe "$top.botframe"
}
$text configure -state normal
$text delete 1.0 end
$text tag delete {*}[ $text tag names ]
$text insert end $message
$text insert end "\\n\\n"
$text insert end [string repeat "-" 70]
$text insert end "\\n"
$text insert end "[mc "Conflicts"]\\n"
$text insert end [string repeat "-" 70]
$text insert end "\\n"
$text insert end "\\n"
set seq 0
set default_cursor [ lindex [ $text configure -cursor ] 3 ]
if {[llength $conflictReport] > 0} {
foreach report $conflictReport {
$text tag configure link$seq -foreground blue \
-underline true
$text tag bind link$seq <Enter> [ list $text c\
onfigure -cursor hand2 ]
$text tag bind link$seq <Leave> [ list $text c\
onfigure -cursor $default_cursor ]
$text tag bind link$seq <Button-1> " ::gorilla\
::ViewEntry [ lindex $report 1 ]
::gori\
lla::ViewEntry [ lindex $report 2 ]"
$text insert end "[ lindex $report 0 ]\\n" lin\
k$seq
incr seq
}
} else {
$text insert end "None.\\n"
}
$text insert end "\\n"
$text insert end [string repeat "-" 70]
$text insert end "\\n"
$text insert end "Added Logins\\n"
$text insert end [string repeat "-" 70]
$text insert end "\\n"
$text insert end "\\n"
if {[llength $addedReport] > 0} {
foreach report $addedReport {
$text tag configure link$seq -foreground blue \
-underline true
$text tag bind link$seq <Enter> [ list $text c\
onfigure -cursor hand2 ]
$text tag bind link$seq <Leave> [ list $text c\
onfigure -cursor $default_cursor ]
$text tag bind link$seq <Button-1> " ::gorilla\
::ViewEntry [ lindex $report 1 ] "
$text insert end "[ lindex $report 0 ]\\n" lin\
k$seq
incr seq
}
} else {
$text insert end "None.\\n"
}
$text insert end "\\n"
$text insert end [string repeat "-" 70]
$text insert end "\\n"
$text insert end "Identical Logins\\n"
$text insert end [string repeat "-" 70]
$text insert end "\\n"
$text insert end "\\n"
if {[llength $identicalReport] > 0} {
foreach report $identicalReport {
$text insert end $report
$text insert end "\\n"
}
} else {
$text insert end "None.\\n"
}
$text insert end "\\n"
$text configure -state disabled
update idletasks
wm deiconify $top
raise $top
# focus $botframe.but
} ; # end ::gorilla::Merge
proc gorilla::Save {} {
ArrangeIdleTimeout
#
# Test for write access to the pwsafe database
#
# If not writable, give user the option to change it to writab\
le and
# retry, or to abort the save operation entirely
#
# Work around tcl-Bugs-1852572 regarding "file writable" and s\
amba mounts
# by simply attempting to open the file in write only append m\
ode (append
# so as not to destroy the file while testing for write access\
). If the
# open succeeds, we have write permission.
while { [ catch { set fd [ open $::gorilla::fileName {WRONLY A\
PPEND} ] } ] } {
# build the message in two stages:
set message "[ mc "Warning: Can not save to" ] '[ f\
ile normalize $::gorilla::fileName ]' [ mc "because the file permissio\
ns are set for read-only access." ]\\n\\n"
append message "[ mc "Please change the file permissio\
ns to read-write and hit 'Retry' or hit 'Cancel' and use 'File'->'Save\
As' to save into a different file." ]\\n"
set answer [ tk_messageBox -icon warning -type retryca\
ncel -title [ mc "Warning: Read-only password file" ] -message $messag\
e ]
if { $answer eq "cancel" } {
return 0
}
} ; # end while gorilla::fileName read-only
# don't need the open file descriptor once out of the while lo\
op
close $fd
set myOldCursor [. cget -cursor]
. configure -cursor"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" watch
update idletasks
set nativeName [file nativename $::gorilla::fileName]
if-platform? unix {
# note - failure to retreive permissions (i.e., db fil\
e on
# Samba share mounted on Linux machine) is not conside\
red a
# fatal issue
if { [ catch { set unix_permissions [ file attributes \
$::gorilla::fileName -permissions ] } m1 m2 ] } {
puts stderr "Warning: failure retreiving Unix permis\
sions on file $::gorilla::fileName.\\n$m1\\n$m2"
}
}
#
# Determine file version. If there is a header field of type 0\
,
# it should indicate the version. Otherwise, default to versio\
n 2.
#
set majorVersion 2
if {[$::gorilla::db hasHeaderField 0]} {
set version [$::gorilla::db getHeaderField 0]
if {[lindex $version 0] == 3} {
set majorVersion 3
}
}
set pvar [ ::gorilla::progress init -win .status -message [ mc\
"Saving ... %d %%" ] -max 200 ]
# avoid gray area during save
update
if { [ catch { pwsafe::writeToFile $::gorilla::db $nativeName \
$majorVersion \\
$pvar } oops ] } {
::gorilla::progress finished .status
. configure -cursor $myOldCursor
gorilla::ErrorPopup [ mc "Error Saving Backup of Datab\
ase"] \\
[mc "Failed to save password database as\\n%s:\
%s" $nativeName $oops ]
return GORILLA_SAVEBACKUPERROR
}
::gorilla::progress finished .status
# The actual data are saved. Now take care of a backup file
set message [ gorilla::SaveBackup $::gorilla::fileName ]
if { $message ne "GORILLA_OK" } {
. configure -cursor $myOldCursor
gorilla::ErrorPopup [lindex $message 0] [lindex $mess\
age 1]
return GORILLA_SAVEBACKUPERROR
}
. configure -cursor $myOldCursor
set ::gorilla::dirty 0
$::gorilla::widgets(tree) item "RootNode" -tags black
UpdateMenu
# attempt to restore cached file permissions under unix
if-platform? unix {
# note - failure to set cached permissions on the new \
file
# is not considered a fatal issue
if { [ catch { file attributes $::gorilla::fileName -p\
ermissions $unix_permissions } m1 m2 ] } {
puts stderr "Warning: failure applying cached Unix p\
ermissions to file $::gorilla::fileName.\\n$m1\\n$m2"
}
}
# The actual data are saved. Now take care of a backup file
if {$::gorilla::preference(keepBackupFile)} {
set message [ gorilla::SaveBackup $::gorilla::fileName\
]
if { [lindex $message 0] ne "GORILLA_OK" } {
# gorilla::ErrorPopup [lindex $message 0] [li\
ndex $message 1]
set ::gorilla::status [mc "Password database s\
aved but backup copy failed: [lindex $message 1]." ]
return GORILLA_SAVEBACKUPERROR
} else {
set ::gorilla::status [mc "Password database s\
aved with backup copy." ]
return GORILLA_OK
}
}
set ::gorilla::status [mc "Password database saved."]
return GORILLA_OK
}
#
# --------------------------------------------------------------------\
--
# Save As
# --------------------------------------------------------------------\
--
#
proc gorilla::SaveAs {} {
ArrangeIdleTimeout
if {![info exists ::gorilla::db]} {
gorilla::ErrorPopup [ mc "Nothing To Save" ] \\
[ mc "No password database to save." ]
return GORILLA_SAVEERROR
}
#
# Determine file version. If there is a header field of type 0\
,
# it should indicate the version. Otherwise, default to versio\
n 2.
#
set majorVersion 2
if {[$::gorilla::db hasHeaderField 0]} {
set version [$::gorilla::db getHeaderField 0]
if {[lindex $version 0] == 3} {
set majorVersion 3
}
}
if {$majorVersion == 3} {
set defaultExtension ".psafe3"
} else {
set defaultExtension ".dat"
}
#
# Query user for file name
#
set fileName [ filename_query Save -parent . \\
-title [ mc "Save password database ..." ] ]
if {$fileName == ""} {
return 0
}
# -defaultextension seems not to work on Linux
# set fileName [gorilla::CheckDefaultExtension $fileName $defa\
ultExtension]
set nativeName [file nativename $fileName]
set myOldCursor [. cget -cursor]
. configure -cursor watch
update idletasks
set pvar [ ::gorilla::progress init -win .status -message [ mc\
"Saving ... %d %%" ] -max 200 ]
if { [ catch { pwsafe::writeToFile $::gorilla::db $fileName $m\
ajorVe"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"rsion $pvar } oops] } {
::gorilla::progress finished .status
. configure -cursor $myOldCursor
tk_messageBox -parent . -type ok -icon error -default \
ok \\
-title [mc "Error Saving Database"] \\
-message [mc "Failed to save password database\
as \\"%s\\": %s" \\
$nativeName $oops]
return 0
}
::gorilla::progress finished .status
# The actual data are saved. Now take care of a backup file
set ::gorilla::fileName $fileName
set message [ gorilla::SaveBackup $::gorilla::fileName ]
if { $message ne "GORILLA_OK" } {
. configure -cursor $myOldCursor
gorilla::ErrorPopup [lindex $message 0] [lindex $mess\
age 1]
return GORILLA_SAVEBACKUPERROR
}
# clean up
. configure -cursor $myOldCursor
set ::gorilla::dirty 0
$::gorilla::widgets(tree) item "RootNode" -tags black
wm title . "Password Gorilla - $nativeName"
$::gorilla::widgets(tree) item "RootNode" -text $nativeName
if {$::gorilla::preference(keepBackupFile)} {
set ::gorilla::status [mc "Password database saved wit\
h backup copy" ]
} else {
set ::gorilla::status [mc "Password database saved."]
}
# Add file to LRU preference
set found [lsearch -exact $::gorilla::preference(lru) $nativeN\
ame]
if {$found == -1} {
set ::gorilla::preference(lru) [linsert $::gorilla::pr\
eference(lru) 0 $nativeName]
} elseif {$found != 0} {
set tmp [lreplace $::gorilla::preference(lru) $found $\
found]
set ::gorilla::preference(lru) [linsert $tmp 0 $native\
Name]
}
UpdateMenu
# The actual data are saved. Now take care of a backup file
if {$::gorilla::preference(keepBackupFile)} {
set message [ gorilla::SaveBackup $::gorilla::fileName\
]
if { [lindex $message 0] ne "GORILLA_OK" } {
# gorilla::ErrorPopup [lindex $message 0] [li\
ndex $message 1]
set ::gorilla::status [mc "Password database s\
aved but backup copy failed: [lindex $message 1]." ]
return GORILLA_SAVEBACKUPERROR
} else {
set ::gorilla::status [mc "Password database s\
aved with backup copy." ]
return GORILLA_OK
}
}
set ::gorilla::status [mc "Password database saved."]
return GORILLA_OK
} ; # end proc gorilla::SaveAs
proc gorilla::filename_query {type args} {
if { $type ni {Open Save} } {
error "type parameter must be one of 'Open' or 'Save'"
}
set types { {{Password Database Files} {.psafe3 .dat}}
{{All Files} *} }
if {[tk windowingsystem] == "aqua"} {
# if MacOSX - remove the .psafe3 type leaving only "*"
# set types [ lreplace $types 0 0 ]
set types [list ]
}
setup-default-dirname
tk_get${type}File {*}$args -filetypes $types -initialdir $::go\
rilla::dirName
} ; # end proc gorilla::filename_query
proc gorilla::SaveBackup { filename } {
# tries to backup the actual database observing the keepBackup\
File flag.
# If the backup fails an errorType and a errorMessage string f\
iltered
# by msgcat are returned.
#
# If the timestamp flag is set the backup file gets a timestam\
p appendix
# according to the local settings
#
# filename - name of current database containing full path
#
set errorType [ mc "Error Saving Backup of Database" ]
# create a backup filename based upon timeStampBackup preferen\
ce
if { ! $::gorilla::preference(timeStampBackup) } {
set backupFileName "[file rootname [file tail $filenam\
e] ].bak"
} else {
# Note: The following characters are reserved in Windo\
ws and
# cannot be used in a file name: < > : " / \\ | ? *
set backupFileName [ file rootname [file tail $filenam\
e] ]
append backupFileName "[clock format [clock seconds] -\
format "-%Y-%m-%d-%H-%M-%S" ]"
append backupFileName [file extension $filename]
}
# determine where to save the backup based upon preference setting
if { $::gorilla::preference(backupPath) eq "" } {
# place backup file into same directory as current pas\
sword db file
set backupPath [ file dirname $filename ]
} else {
# place backup file into users preference directory
set backupPath $::gorilla::preference(backupPath)
if { ! [file isdirectory $backupPath] } {
return [list $errorType [mc "No valid director\
y. - \\nPlease define a valid backup dire"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"ctory\\nin the Preferences menu."] ]
} elseif { ! [file exists $filename] } {
return [list $errorType [mc "Unknown file. - \
\\nPlease select a valid database filename."] ]
} elseif { [ info exists ::gorilla::isLocked ] &\
& $::gorilla::isLocked } {
set backupFileName "[ file tail $filen\
ame ]~"
}
} ; # end if backupPath preference
set backupFile [ file join $backupPath $backupFileName ]
if {[catch {
file copy -force -- $filename $backupFile
} oops]} {
set backupNativeName [file nativename $backupFileName]
return $errorType [ mc "Failed to make backup copy of \
password\\ndatabase as %s: \\n%s" $backupNativeName $oops ]
}
return GORILLA_OK
} ;# end of proc gorilla::SaveBackup
# --------------------------------------------------------------------\
--
# Rebuild Tree
# --------------------------------------------------------------------\
--
#
proc gorilla::AddAllRecordsToTree {} {
foreach rn [$::gorilla::db getAllRecordNumbers] {
AddRecordToTree $rn
}
}
proc gorilla::AddRecordToTree {rn} {
set groupName [ ::gorilla::dbget group $rn ]
set parentNode [AddGroupToTree $groupName]
set title [ ::gorilla::dbget title $rn ]
if { ( [ ::gorilla::dbget user $rn ] ne "" ) &&
( ! $::gorilla::preference(hideLogins) ) } {
append title " \\[" [ ::gorilla::dbget user $rn ] "\\]\
"
}
#
# Insert the new login in alphabetical order, after all groups
#
# set childNodes [$::gorilla::widgets(tree) nodes $parentNode]
set childNodes [$::gorilla::widgets(tree) children $parentNode\
]
for {set i 0} {$i < [llength $childNodes]} {incr i} {
set childNode [lindex $childNodes $i]
set childData [$::gorilla::widgets(tree) item $childNo\
de -values]
if {[lindex $childData 0] != "Login"} {
continue
}
set childName [$::gorilla::widgets(tree) item $childNo\
de -text]
if {[string compare $title $childName] < 0} {
break
}
}
if {$i >= [llength $childNodes]} {
set i "end"
}
set nodename "node[incr ::gorilla::uniquenodeindex]"
$::gorilla::widgets(tree) insert $parentNode $i -id $nodename \
\\
-open 0 \\
-image $::gorilla::images(login) \\
-text $title \\
-values [list Login $rn]
# -drawcross never
return $nodename
}
proc gorilla::AddGroupToTree {groupName} {
if {[info exists ::gorilla::groupNodes($groupName)]} {
set parentNode $::gorilla::groupNodes($groupName)
} elseif {$groupName == ""} {
set parentNode "RootNode"
} else {
set parentNode "RootNode"
set partialGroups [list]
foreach group [pwsafe::db::splitGroup $groupName] {
lappend partialGroups $group
set partialGroupName [pwsafe::db::concatGroups\
$partialGroups]
if {[info exists ::gorilla::groupNodes($partia\
lGroupName)]} {
set parentNode $::gorilla::groupNodes(\
$partialGroupName)
} else {
set childNodes [$::gorilla::widgets(tr\
ee) children $parentNode]
#
# Insert group in alphabetical order, \
before all logins
#
for {set i 0} {$i < [llength $childNod\
es]} {incr i} {
set childNode [lindex $childNo\
des $i]
set childData [$::gorilla::wid\
gets(tree) item $childNode -values]
if {[lindex $childData 0] != "\
Group"} {
break
}
set childName [$::gorilla::wid\
gets(tree) item $childNode -text]
if {[string compare $group $ch\
ildName] < 0} {
break
}
}
if {$i >= [llength $childNodes]} {
set i "end"
}
set nodename "node[incr ::gorilla::uni\
quenodeindex]"
$::gorilla::widgets(tree) insert $pare\
ntNode $i -id $nodename \\
-open 0 \\
-image $::gorilla::images(grou\
p) \\
-text $group \\
-values [list Group $partialGr\
oupName]
set parentNode $nodename
set ::gorilla::groupNodes($partialGrou\
pName) $nodename
}
}
}
return $parentNode
}
proc gorilla::FocusRootNode {} {
focus .tree
.tree focus "RootNode"
}
#
# Update Menu items
#
proc gorilla::UpdateMenu {} {
lassign [ ::gorilla::get-selected-tree-data ] node type rn
if { ( $node eq "" ) && ( $type eq "" ) } {
setmenustate $::gorilla::widgets(main) group disabled
setmenustate $::gorilla::widgets(main) login disabled
} else {
if {$type == ""
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"Group" || $type == "Root"} {
setmenustate $::gorilla::widgets(main) group n\
ormal
setmenustate $::gorilla::widgets(main) login d\
isabled
} else {
setmenustate $::gorilla::widgets(main) group d\
isabled
setmenustate $::gorilla::widgets(main) login n\
ormal
}
}
if {[info exists ::gorilla::fileName] && [info exists ::gorill\
a::db] && $::gorilla::dirty} {
setmenustate $::gorilla::widgets(main) save normal
} else {
setmenustate $::gorilla::widgets(main) save disabled
}
if {[info exists ::gorilla::db]} {
setmenustate $::gorilla::widgets(main) open normal
} else {
setmenustate $::gorilla::widgets(main) open disabled
}
if { [ info exists ::gorilla::merge_conflict_data ] &&
( [ llength $::gorilla::merge_conflict_data ] > 0 ) }\
{
setmenustate $::gorilla::widgets(main) conflict normal
} else {
setmenustate $::gorilla::widgets(main) conflict disabl\
ed
}
if { ! $::gorilla::hasDownloadsFile } {
setmenustate $::gorilla::widgets(main) dld disabled
}
}
proc gorilla::Exit {} {
ArrangeIdleTimeout
#
# Protect against reentrancy, i.e., if the user clicks on the \
"X"
# window manager decoration multiple times.
#
if {[info exists ::gorilla::exiting] && $::gorilla::exiting} {
return
}
set ::gorilla::exiting 1
#
# If the current database was modified, give user a chance to \
think
#
if {$::gorilla::dirty} {
set myParent [grab current .]
if {$myParent == ""} {
set myParent "."
}
set answer [tk_messageBox -parent $myParent \\
-type yesnocancel -icon warning -default yes \\
-title [ mc "Save changes?" ] \\
-message [ mc "The current password database is modifi\
ed. Do you want to save the database? <Yes> saves the database and exi\
ts. <No> discards all changes and exits. <Cancel> returns to the main \
menu." ]]
if {$answer == "yes"} {
if {[info exists ::gorilla::fileName]} {
if { [::gorilla::Save] ne "GORILLA_OK"\
} {
set ::gorilla::exiting 0
}
} else {
if { [::gorilla::SaveAs] ne "GORILLA_O\
K" } {
set ::gorilla::exiting 0
}
}
} elseif {$answer != "no"} {
set ::gorilla::exiting 0
}
if {!$::gorilla::exiting} {
return 0
}
}
#
# Save preferences
#
SavePreferences
#
# Clear the clipboard, if we were meant to do that sooner or l\
ater.
#
if {[info exists ::gorilla::clipboardClearId]} {
after cancel $::gorilla::clipboardClearId
ClearClipboard
}
#
# Goodbye, cruel world
#
destroy .
exit
}
# --------------------------------------------------------------------\
--
# Clear clipboard
# --------------------------------------------------------------------\
--
#
proc gorilla::ClearClipboard {} {
clipboard clear
clipboard append -- ""
foreach sel { PRIMARY CLIPBOARD } {
if {[selection own -selection $sel ] == "."} {
selection clear -selection $sel
}
}
set ::gorilla::activeSelection 0
set ::gorilla::status [mc "Clipboard cleared."]
catch {unset ::gorilla::clipboardClearId}
}
# --------------------------------------------------------------------\
--
# Clear the clipboard after a configurable number of seconds
# --------------------------------------------------------------------\
--
#
proc gorilla::ArrangeToClearClipboard { {mult 1} } {
if {[info exists ::gorilla::clipboardClearId]} {
after cancel $::gorilla::clipboardClearId
}
if {$::gorilla::preference(clearClipboardAfter) == 0} {
catch {unset ::gorilla::clipboardClearId}
return
}
set seconds $::gorilla::preference(clearClipboardAfter)
set mseconds [expr {$seconds * 1000 * $mult }]
if { $mseconds == 0 } { return }
set ::gorilla::clipboardClearId [after $mseconds ::gorilla::Cl\
earClipboard]
}
# --------------------------------------------------------------------\
--
# Arrange for an Idle Timeout after a number of minutes
# --------------------------------------------------------------------\
--
#
proc gorilla::ArrangeIdleTimeout {} {
if {[info exists ::gorilla::idleTimeoutTimerId]} {
after cancel $::gorilla::idleTimeoutTimerId
}
if {[info exists ::gorilla::db]} {
set minutes [$::gorilla::db getPreference "IdleTimeout\
"]
if {![$:"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
":gorilla::db getPreference "LockOnIdleTimeout"] || $minutes <= 0} {
catch {unset ::gorilla::idleTimeoutTimerId}
return
}
set seconds [expr {$minutes * 60}]
set mseconds [expr {$seconds * 1000}]
set ::gorilla::idleTimeoutTimerId [after $mseconds ::gorilla::\
IdleTimeout]
}
}
# --------------------------------------------------------------------\
--
# Idle Timeout
# --------------------------------------------------------------------\
--
proc gorilla::IdleTimeout {} {
LockDatabase
}
# --------------------------------------------------------------------\
--
# Lock Database
# --------------------------------------------------------------------\
--
#
proc gorilla::CloseLockedDatabaseDialog {} {
set ::gorilla::lockedMutex 2
}
proc gorilla::LockDatabase {} {
if {![info exists ::gorilla::db]} {
return
}
if {[info exists ::gorilla::isLocked] && $::gorilla::isLocked}\
{
return
}
if {[info exists ::gorilla::idleTimeoutTimerId]} {
after cancel $::gorilla::idleTimeoutTimerId
}
ClearClipboard
set ::gorilla::isLocked 1
set oldGrab [grab current .]
# close all open windows and remember their status and locatio\
n
foreach tl [array names ::gorilla::toplevel] {
set ws [wm state $tl]
switch -- $ws {
normal -
iconic -
zoomed {
set withdrawn($tl) [ list $ws [ wm geo\
metry $tl ] ]
wm withdraw $tl
}
}
}
# MacOSX gives access to the menubar as long as the applicatio\
n is launched
# so we grey out the menuitems
if {[tk windowingsystem] eq "aqua"} {
# save current state of menu entries
set stateofmenus [ getMenuState $::gorilla::widgets(ma\
in) ]
setmenustate $::gorilla::widgets(main) all disabled
rename ::tk::mac::ShowPreferences ""
}
if { $::gorilla::preference(keepBackupFile) } {
if { ![info exists ::gorilla::fileName] } {
set nosave [tk_dialog .nosave [mc "Database not saved!"] \\
[mc "This database has not been saved. Do you want to save it no\
w?"] \\
"" 0 [mc Yes] [mc No] ]
if {$nosave} { set message GORILLA_OK
} else { set message [gorilla::SaveAs] }
} else { set message [ gorilla::SaveBackup $::gorilla::fileName ] \
}
if { $message ne "GORILLA_OK" } {
gorilla::ErrorPopup [lindex $message 0] [lind\
ex $message 1]
}
} ;# endif $::gorilla::preference(keepBackupFile)
set top .lockedDialog
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
TryResizeFromPreference $top
if {$::gorilla::preference(gorillaIcon)} {
ttk::label $top.splash -image $::gorilla::imag\
es(splash)
pack $top.splash -side left -fill both
ttk::separator $top.vsep -orient vertical
pack $top.vsep -side left -fill y -padx 3
}
set aframe [ttk::frame $top.right -padding {10 10}]
# Titel packen
# ttk::label $aframe.title -anchor center -font {Helve\
tica 12 bold}
ttk::label $aframe.title -anchor center
pack $aframe.title -side top -fill x -pady 10
ttk::labelframe $aframe.file -text [mc "Database:"]
ttk::entry $aframe.file.f -width 40 -state disabled
pack $aframe.file.f -side left -padx 10 -pady 5 -fill \
x -expand yes
pack $aframe.file -side top -pady 5 -fill x -expand ye\
s
ttk::frame $aframe.mitte
ttk::labelframe $aframe.mitte.pw -text [mc "Password:"\
]
entry $aframe.mitte.pw.pw -width 20 -show "*"
# -background #FFFFCC
pack $aframe.mitte.pw.pw -side left -padx 10 -pady 5 -\
fill x -expand 0
pack $aframe.mitte.pw -side left -pady 5 -expand 0
ttk::frame $aframe.mitte.buts
set but1 [ttk::button $aframe.mitte.buts.b1 -width 10 \
-text [ mc "OK" ] \\
-command "set ::gorilla::lockedMutex 1"]
set but2 [ttk::button $aframe.mitte.buts.b2 -width 10 \
-text [mc "Exit"] \\
-command "set ::gorilla::lockedMutex 2"]
pack $but1 $but2 -side left -pady 10 -padx 10
pack $aframe.mitte.buts -side right
pack $aframe.mitte -side top -fill x -expand 1 -pady 1\
5
ttk::label $aframe.info -relief sunken -anchor w -padd\
ing [list 5 5 5 5]
pack $aframe.info -side bottom -fill x -expand yes
bind $aframe.mitte.pw.pw <Return> "set ::gorilla::lock\
edMutex 1"
bind $aframe.mitte.buts.b"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"1 <Return> "set ::gorilla::lockedMutex 1"
bind $aframe.mitte.buts.b2 <Return> "set ::gorilla::lo\
ckedMutex 2"
pack $aframe -side right -fill both -expand yes
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::CloseLocked\
DatabaseDialog
} else {
set aframe $top.right
if { ! $::gorilla::preference(iconifyOnAutolock) } {
wm deiconify $top
}
}
wm title $top "Password Gorilla"
$aframe.title configure -text [ ::gorilla::LockDirtyMessage ]
# and setup a pair of variable write traces to toggle the titl\
e text
#
# the toggle happens upon
# 1) database marked dirty/clean
# 2) open/close of edit password dialogs
trace add variable ::gorilla::dirty write [ namespace code [ l\
ist ::gorilla::LockDirtyHandler $aframe.title ] ]
trace add variable ::gorilla::LoginDialog::arbiter write [ nam\
espace code [ list ::gorilla::LockDirtyHandler $aframe.title ] ]
$aframe.mitte.pw.pw delete 0 end
$aframe.info configure -text [mc "Enter the Master Password."]
if {[info exists ::gorilla::fileName]} {
$aframe.file.f configure -state normal
$aframe.file.f delete 0 end
$aframe.file.f insert 0 [file nativename $::gorilla::f\
ileName]
$aframe.file.f configure -state disabled
} else {
$aframe.file.f configure -state normal
$aframe.file.f delete 0 end
$aframe.file.f insert 0 [mc "<New Database>"]
$aframe.file.f configure -state disabled
}
#
# Run dialog
#
focus $aframe.mitte.pw.pw
# synchronize Tk's event-loop with Aqua's event-loop
update idletasks
if {[catch { grab $top } oops]} {
set ::gorilla::status [mc "error: %s" $oops]
}
if { $::gorilla::preference(iconifyOnAutolock) } {
wm iconify $top
}
if { ! $::gorilla::DEBUG(TEST) } {
while {42} {
set ::gorilla::lockedMutex 0
vwait ::gorilla::lockedMutex
if {$::gorilla::lockedMutex == 1} {
if {[$::gorilla::db checkPassword [$af\
rame.mitte.pw.pw get]]} {
break
}
tk_messageBox -parent $top \\
-type ok -icon error -default \
ok \\
-title [ mc "Wrong Password" ]\
\\
-message [ mc "That password i\
s not correct." ]
# clear the PW entry upon invalid PW
$aframe.mitte.pw.pw delete 0 end
} elseif {$::gorilla::lockedMutex == 2} {
#
# This may return, if the database was\
modified, and the user
# answers "Cancel" to the question whe\
ther to save the database
# or not.
#
gorilla::Exit
}
}
}
# restore all closed window statuses and positions
foreach tl [array names withdrawn] {
wm state $tl [ lindex $withdrawn($tl) 0 ]
wm geometry $tl [ lindex $withdrawn($tl) 1 ]
}
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
if { [tk windowingsystem] eq "aqua"} {
# restore saved menu entry states
eval $stateofmenus
eval $::gorilla::MacShowPreferences
}
wm withdraw $top
set ::gorilla::status [mc "Welcome back."]
set ::gorilla::isLocked 0
wm withdraw .
wm deiconify .
raise .
ArrangeIdleTimeout
return GORILLA_OK
}
# --------------------------------------------------------------------\
--
proc gorilla::LockDirtyMessage {} {
if { $::gorilla::dirty || ( [ dict size $::gorilla::LoginDialog::arb\
iter ] > 0 ) } {
return [ mc "Database Locked (with unsaved changes)" ]
} else {
return [ mc "Database Locked" ]
}
}
# --------------------------------------------------------------------\
--
proc gorilla::LockDirtyHandler { win args } {
$win configure -text [ ::gorilla::LockDirtyMessage ]
}
# --------------------------------------------------------------------\
--
# Prompt for a Password
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyGetPasswordDialog {} {
set ::gorilla::guimutex 2
}
proc gorilla::GetPassword {confirm title} {
set top .passwordDialog-$confirm
if {![info exists ::gorilla::toplevel($top)]} {
if {[tk windowingsystem] == "aqua"} {
toplevel $top -background #ededed -class "Gori\
lla"
} else {
toplevel $top -class "Gorilla"
}
TryResizeFromPreference $top
ttk::labelframe $top.password -"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"text $title -padding [list 10 10]
ttk::entry $top.password.e -show "*" -width 30 -textva\
riable ::gorilla::passwordDialog.pw
pack $top.password.e -side left
pack $top.password -fill x -pady 15 -padx 15 -expand 1
bind $top.password.e <KeyPress> "+::gorilla::CollectTi\
cks"
bind $top.password.e <KeyRelease> "+::gorilla::Collect\
Ticks"
if {$confirm} {
ttk::labelframe $top.confirm -text [mc "Confir\
m:"] -padding [list 10 10]
ttk::entry $top.confirm.e -show "*" -width 30 \
-textvariable ::gorilla::passwordDialog.c
pack $top.confirm.e -side left
pack $top.confirm -fill x -pady 5 -padx 15 -ex\
pand 1
bind $top.confirm.e <KeyPress> "+::gorilla::Co\
llectTicks"
bind $top.confirm.e <KeyRelease> "+::gorilla::\
CollectTicks"
# bind $top.confirm.e <Shift-Tab> "after 0 \\"\
focus $top.password.e\\""
# bind $top.confirm.e <Tab> "after 0 \\"focus \
$top.password.e\\""
}
ttk::frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 10 -text [ m\
c OK ] \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 10 -text [mc\
"Cancel"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -pady 15 -padx 30
pack $top.buts -fill x -expand 1
bind $top.password.e <Return> "set ::gorilla::guimutex\
1"
bind $top.buts.b1 <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b2 <Return> "set ::gorilla::guimutex 2"
if {$confirm} {
bind $top.confirm.e <Return> "set ::gorilla::g\
uimutex 1"
}
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyGetP\
asswordDialog
} else {
wm deiconify $top
}
wm title $top $title
# $top.password configure -text ""
set ::gorilla::passwordDialog.pw ""
if {$confirm} {
# $top.confirm configure -text ""
set ::gorilla::passwordDialog.c ""
}
#
# Run dialog
#
set oldGrab [grab current .]
update idletasks
raise $top
focus $top.password.e
catch {grab $top}
while {42} {
ArrangeIdleTimeout
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
if {$::gorilla::guimutex != 1} {
break
}
set password [$top.password.e get]
if {$confirm} {
set confirmed [$top.confirm.e get]
if {![string equal $password $confirmed]} {
tk_messageBox -parent $top \\
-type ok -icon error -default \
ok \\
-title [ mc "Passwords Do Not \
Match" ] \\
-message [ mc "The confirmed p\
assword does not match." ]
} else {
break
}
} else {
break
}
}
set ::gorilla::passwordDialog.pw ""
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
wm withdraw $top
if {$::gorilla::guimutex != 1} {
error "canceled"
}
return $password
}
# --------------------------------------------------------------------\
--
# Default Password Policy
# --------------------------------------------------------------------\
--
#
proc gorilla::GetDefaultPasswordPolicy {} {
array set defaults [list \\
length [$::gorilla::db getPreference "PWLenDefault"] \
\\
uselowercase [$::gorilla::db getPreference "PWUseLower\
case"] \\
useuppercase [$::gorilla::db getPreference "PWUseUpper\
case"] \\
usedigits [$::gorilla::db getPreference "PWUseDigits"]\
\\
usesymbols [$::gorilla::db getPreference "PWUseSymbols\
"] \\
usehexdigits [$::gorilla::db getPreference "PWUseHexDi\
gits"] \\
easytoread [$::gorilla::db getPreference "PWEasyVision\
"]]
return [array get defaults]
}
proc gorilla::SetDefaultPasswordPolicy {settings} {
array set defaults $settings
if {[info exists defaults(length)]} {
$::gorilla::db setPreference "PWLenDefault" $defaults(\
length)
}
if {[info exists defaults(uselowercase)]} {
$::gorilla::db setPreference "PWUseLowercase" $default\
s(uselowercase)
}
if {[info exists defaults(useuppercase)]} {
$::gorilla::db setPreference "PWUseUppercase" $default\
s(useuppercase)
}
if {[info exists defaults(usedigits)]} {
$::gorilla::db setPreference "PWUseDigits" $defaults(u\
sedigits)
}
if {[info exists defaults(usesymbols)]} {
$::gorilla::db setPreference "PWUseSymbols" $defaults(\
usesymbols)
}
if {[info exists defaults(usehexdigits)]} {
$::gorilla::"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"db setPreference "PWUseHexDigits" $defaults(usehexdigits)
}
if {[info exists defaults(easytoread)]} {
$::gorilla::db setPreference "PWEasyVision" $defaults(\
easytoread)
}
}
# --------------------------------------------------------------------\
--
# Set the Password Policy
# --------------------------------------------------------------------\
--
#
proc gorilla::PasswordPolicy {} {
ArrangeIdleTimeout
if {![info exists ::gorilla::db]} {
tk_messageBox -parent . \\
-type ok -icon error -default ok \\
-title [mc "No Database"] \\
-message [mc "Please create a new database, or\
open an existing\\
database first."]
return
}
set oldSettings [GetDefaultPasswordPolicy]
set newSettings [PasswordPolicyDialog [mc "Password Policy"] $\
oldSettings]
if {[llength $newSettings]} {
SetDefaultPasswordPolicy $newSettings
set ::gorilla::status [mc "Password policy changed."]
MarkDatabaseAsDirty
}
}
#
# --------------------------------------------------------------------\
--
# Dialog box for password policy
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyPasswordPolicyDialog {} {
set ::gorilla::guimutex 2
}
proc gorilla::PasswordPolicyDialog {title settings} {
ArrangeIdleTimeout
array set ::gorilla::ppd [list \\
length 8 \\
uselowercase 1 \\
useuppercase 1 \\
usedigits 1 \\
usehexdigits 0 \\
usesymbols 0 \\
easytoread 1]
array set ::gorilla::ppd $settings
set top .passPolicyDialog
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
TryResizeFromPreference $top
ttk::frame $top.plen -padding [list 0 10 0 0 ]
ttk::label $top.plen.l -text [mc "Password Length"]
spinbox $top.plen.s -from 1 -to 999 -increment 1 \\
-width 4 -justify right \\
-textvariable ::gorilla::ppd(length)
pack $top.plen.l -side left
pack $top.plen.s -side left -padx 10
pack $top.plen -side top -anchor w -padx 10 -pady 3
ttk::checkbutton $top.lower -text [mc "Use lowercase letters"]\
\\
-variable ::gorilla::ppd(uselowercase)
ttk::checkbutton $top.upper -text [mc "Use UPPERCASE letters"]\
\\
-variable ::gorilla::ppd(useuppercase)
ttk::checkbutton $top.digits -text [mc "Use digits"] \\
-variable ::gorilla::ppd(usedigits)
ttk::checkbutton $top.hex -text [mc "Use hexadecimal digits"] \
\\
-variable ::gorilla::ppd(usehexdigits)
ttk::checkbutton $top.symbols -text [mc "Use symbols (%, \\$, \
@, #, etc.)"] \\
-variable ::gorilla::ppd(usesymbols)
ttk::checkbutton $top.easy \\
-text [mc "Use easy to read characters only (e.g. no \
\\"0\\" or \\"O\\")"] \\
-variable ::gorilla::ppd(easytoread)
pack $top.lower $top.upper $top.digits $top.hex $top.symbols \
\\
$top.easy -anchor w -side top -padx 10 -pady 3
ttk::separator $top.sep -orient horizontal
pack $top.sep -side top -fill x -pady 10
frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 15 -text "OK" \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 15 -text [mc "Cancel\
"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -pady 10 -padx 20
pack $top.buts -padx 10
bind $top.lower <Return> "set ::gorilla::guimutex 1"
bind $top.upper <Return> "set ::gorilla::guimutex 1"
bind $top.digits <Return> "set ::gorilla::guimutex 1"
bind $top.hex <Return> "set ::gorilla::guimutex 1"
bind $top.symbols <Return> "set ::gorilla::guimutex 1"
bind $top.easy <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b1 <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b2 <Return> "set ::gorilla::guimutex 2"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyPasswordPoli\
cyDialog
} else {
wm deiconify $top
}
set top .passPolicyDialog
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top
TryResizeFromPreference $top
ttk::frame $top.plen -padding [list 0 10 0 0 ]
ttk::label $top.plen.l -text [mc "Password Length"]
spinbox $top.plen.s -from 1 -to 999 -increment 1 \\
-width 4 -justify right \\
-textvariable ::gorilla::ppd(length)
pack $top.plen.l -side left
pack $top.plen.s -side left -pad"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"x 10
pack $top.plen -side top -anchor w -padx 10 -pady 3
ttk::checkbutton $top.lower -text [mc "Use lowercase l\
etters"] \\
-variable ::gorilla::ppd(uselowercase)
ttk::checkbutton $top.upper -text [mc "Use UPPERCASE l\
etters"] \\
-variable ::gorilla::ppd(useuppercase)
ttk::checkbutton $top.digits -text [mc "Use digits"] \
\\
-variable ::gorilla::ppd(usedigits)
ttk::checkbutton $top.hex -text [mc "Use hexadecimal d\
igits"] \\
-variable ::gorilla::ppd(usehexdigits)
ttk::checkbutton $top.symbols -text [mc "Use symbols (\
%, \\$, @, #, etc.)"] \\
-variable ::gorilla::ppd(usesymbols)
ttk::checkbutton $top.easy \\
-text [mc "Use easy to read characters only (e\
.g. no \\"0\\" or \\"O\\")"] \\
-variable ::gorilla::ppd(easytoread)
pack $top.lower $top.upper $top.digits $top.hex $top.s\
ymbols \\
$top.easy -anchor w -side top -padx 10 -pady 3
ttk::separator $top.sep -orient horizontal
pack $top.sep -side top -fill x -pady 10
frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 15 -text [ m\
c "OK" ] \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 15 -text [mc\
"Cancel"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -pady 10 -padx 20
pack $top.buts -padx 10
bind $top.lower <Return> "set ::gorilla::guimutex 1"
bind $top.upper <Return> "set ::gorilla::guimutex 1"
bind $top.digits <Return> "set ::gorilla::guimutex 1"
bind $top.hex <Return> "set ::gorilla::guimutex 1"
bind $top.symbols <Return> "set ::gorilla::guimutex 1"
bind $top.easy <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b1 <Return> "set ::gorilla::guimutex 1"
bind $top.buts.b2 <Return> "set ::gorilla::guimutex 2"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyPass\
wordPolicyDialog
} else {
wm deiconify $top
}
set oldGrab [grab current .]
update idletasks
wm title $top $title
raise $top
focus $top.plen.s
catch {grab $top}
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
wm withdraw $top
if {$::gorilla::guimutex != 1} {
return [list]
}
return [array get ::gorilla::ppd]
}
#
# --------------------------------------------------------------------\
--
# Generate a password
# --------------------------------------------------------------------\
--
#
proc gorilla::GeneratePassword {settings} {
set easyLowercaseLetters "abcdefghkmnpqrstuvwxyz"
set notEasyLowercaseLetters "ijlo"
set easyUppercaseLetters [string toupper $easyLowercaseLetters\
]
set notEasyUppercaseLetters [string toupper $notEasyLowercaseL\
etters]
set easyDigits "23456789"
set notEasyDigits "01"
set easySymbols "+-=_@#\\$%^&<>/~\\\\?"
set notEasySymbols "!|()"
array set params [list \\
length 0 \\
uselowercase 0 \\
useuppercase 0 \\
usedigits 0 \\
usehexdigits 0 \\
usesymbols 0 \\
easytoread 0]
array set params $settings
set symbolSet ""
if {$params(uselowercase)} {
append symbolSet $easyLowercaseLetters
if {!$params(easytoread)} {
append symbolSet $notEasyLowercaseLetters
}
}
if {$params(useuppercase)} {
append symbolSet $easyUppercaseLetters
if {!$params(easytoread)} {
append symbolSet $notEasyUppercaseLetters
}
}
if {$params(usehexdigits)} {
if {!$params(uselowercase)} {
append symbolSet "0123456789abcdef"
} else {
append symbolSet "0123456789"
}
} elseif {$params(usedigits)} {
append symbolSet $easyDigits
if {!$params(easytoread)} {
append symbolSet $notEasyDigits
}
}
if {$params(usesymbols)} {
append symbolSet $easySymbols
if {!$params(easytoread)} {
append symbolSet $notEasySymbols
}
}
set numSymbols [string length $symbolSet]
if {$numSymbols == 0} {
error "invalid settings"
}
set generatedPassword ""
for {set i 0} {$i < $params(length)} {incr i} {
set rand [::isaac::rand]
set randSymbol [expr {int($rand*$numSymbols)}]
append generatedPassword [string index $symbolSet $ran\
dSymbol]
}
return $generatedPassword
}
# -----------------------------------"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"-----------------------------------
# Dialog box for database-specific preferences
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyDatabasePreferencesDialog {} {
set ::gorilla::guimutex 2
}
proc gorilla::DatabasePreferencesDialog {} {
ArrangeIdleTimeout
set top .dbPrefsDialog
if {![info exists ::gorilla::db]} {
return
}
foreach pref {IdleTimeout IsUTF8 LockOnIdleTimeout SaveImmedia\
tely} {
set ::gorilla::dpd($pref) [$::gorilla::db getPreferenc\
e $pref]
}
if {!$::gorilla::dpd(LockOnIdleTimeout)} {
set ::gorilla::dpd(IdleTimeout) 0
}
if {[$::gorilla::db hasHeaderField 0]} {
set oldVersion [lindex [$::gorilla::db getHeaderField \
0] 0]
} else {
set oldVersion 2
}
set ::gorilla::dpd(defaultVersion) $oldVersion
set ::gorilla::dpd(keyStretchingIterations) \\
[$::gorilla::db cget -keyStretchingIterations]
set oldKeyStretchingIterations $::gorilla::dpd(keyStretchingIt\
erations)
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
wm title $top [mc "Database Preferences"]
TryResizeFromPreference $top
ttk::frame $top.il -padding [list 10 15 10 5]
ttk::label $top.il.l1 -text [mc "Lock when idle after"\
]
spinbox $top.il.s -from 0 -to 999 -increment 1 \\
-justify right -width 4 \\
-textvariable ::gorilla::dpd(IdleTimeo\
ut)
ttk::label $top.il.l2 -text [mc "minutes (0=never)"]
pack $top.il.l1 $top.il.s $top.il.l2 -side left -padx \
3
pack $top.il -side top -anchor w
ttk::checkbutton $top.si -text [mc "Auto-save database\
immediately when changed"] \\
-variable ::gorilla::dpd(SaveImmediately)
pack $top.si -anchor w -side top -pady 3 -padx 10
ttk::checkbutton $top.ver -text [mc "Use Password Safe\
3 format"] \\
-variable ::gorilla::dpd(defaultVersion) \\
-onvalue 3 -offvalue 2
pack $top.ver -anchor w -side top -pady 3 -padx 10
ttk::checkbutton $top.uni -text [mc "V2 Unicode suppor\
t"] \\
-variable ::gorilla::dpd(IsUTF8)
pack $top.uni -anchor w -side top -pady 3 -padx 10
# === keystretch spinbox
ttk::frame $top.stretch -padding [list 10 5]
spinbox $top.stretch.spin -from 2048 -to 2147483647 -i\
ncrement 256 \\
-justify right -width 12 \\
-textvariable ::gorilla::dpd(keyStretchingIter\
ations)
ttk::label $top.stretch.label -text [mc "V3 key stretc\
hing iterations"]
pack $top.stretch.spin $top.stretch.label -side left -\
padx 3
pack $top.stretch -anchor w -side top
# === keystretch delay timer
set delayf [ ttk::labelframe $top.delay -padding {10 5\
} -text [ mc "Calculate delay time" ] ]
pack $delayf -anchor w -side top -fill x -expand true \
-padx {10 10} -pady {0 2m}
ttk::label $delayf.feedback -text [ mc "Default: %s" \
$::gorilla::dpd(keyStretchingIterations) ]
ttk::button $delayf.compute -text [ mc "Calculate" ] \
-command [ namespace code [ subst {
$delayf.compute configure -text "[ mc "Calculating" \
]"
update idletasks
$delayf.feedback configure -text \\[ mc "%s sec(s) f\
or %d iterations" \\
\\[ expr { \\[ pwsafe::int::keyStre\
tchMsDelay \\[ $top.stretch.spin get ] ] / 1000.0 } ] \\
\\[ $top.stretch.spin get ] ]
$delayf.compute configure -text [ mc "Calculate" ]
} ] ]
grid $delayf.feedback $delayf.compute -sticky news -pa\
dx {1m 1m} -pady {1m 1m}
# === auto iter computation
set aiterf [ ttk::labelframe $top.autoiter -padding {1\
0 5} -text [ mc "Calculate iterations" ] ]
pack $aiterf -anchor w -side top -fill x -expand true \
-padx {10 10}
ttk::label $aiterf.label1 -text [ mc "Delay for" ]
spinbox $aiterf.spin -from 1 -to 600 -increment 1 -jus\
tify right -width 5
ttk::label $aiterf.spinlabel2 -text [ mc "sec(s)" ]
ttk::button $aiterf.calculate -text [ mc "Calculate" ]\
\\
-command [ namespace code [ subst {
$aiterf.calculate configure -text "[ mc "Calculati\
ng" ]"
update idletasks
$top.stretch.spin set \\[ pwsafe::int::calculateKe\
yStrechForDelay \\[ $aiterf.spin get ] ]
$aiterf.calculate configure -text [ mc "Calculate"\
]
} ] ]
grid $aiterf.labe"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"l1 $aiterf.spin $aiterf.spinlabel2 $aiterf.calculate -padx {1m 1m} -pa\
dy {1m 1m}
# ===
ttk::separator $top.sep -orient horizontal
pack $top.sep -side top -fill x -pady 10
ttk::frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 15 -text [ m\
c "OK" ] \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 15 -text [mc\
"Cancel"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -padx 20
pack $top.buts -side top -pady 10
bind $top.uni <Return> "set ::gorilla::guimutex 1"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyData\
basePreferencesDialog
} else {
wm deiconify $top
}
set oldGrab [grab current .]
update idletasks
raise $top
focus $top.buts.b1
catch {grab $top}
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
wm withdraw $top
if {$::gorilla::guimutex != 1} {
return
}
set isModified 0
if {$::gorilla::dpd(IdleTimeout) > 0} {
set ::gorilla::dpd(LockOnIdleTimeout) 1
} else {
set ::gorilla::dpd(LockOnIdleTimeout) 0
}
foreach pref {IdleTimeout IsUTF8 LockOnIdleTimeout SaveImmedia\
tely} {
set oldPref [$::gorilla::db getPreference $pref]
if {![string equal $::gorilla::dpd($pref) $oldPref]} {
set isModified 1
$::gorilla::db setPreference $pref $::gorilla:\
:dpd($pref)
}
}
set newVersion $::gorilla::dpd(defaultVersion)
if {$newVersion != $oldVersion} {
$::gorilla::db setHeaderField 0 [list $newVersion 0]
set isModified 1
}
$::gorilla::db configure -keyStretchingIterations \\
$::gorilla::dpd(keyStretchingIterations)
if {$::gorilla::dpd(keyStretchingIterations) != $oldKeyStretch\
ingIterations} {
set isModified 1
}
if {$isModified} {
MarkDatabaseAsDirty
}
ArrangeIdleTimeout
} ; # end proc gorilla::DatabasePreferencesDialog
# --------------------------------------------------------------------\
--
# Preferences Dialog
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyPreferencesDialog {} {
set ::gorilla::guimutex 2
}
proc gorilla::PreferencesDialog {} {
ArrangeIdleTimeout
set top .preferencesDialog
# copy current preferences settings to a temp variable to hand\
le
# "canceling" of preference changes
dict for {pref value} $::gorilla::preference(all-preferences) \
{
set ::gorilla::prefTemp($pref) $::gorilla::preference(\
$pref)
}
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
# TryResizeFromPreference $top
wm title $top [mc "Preferences"]
ttk::notebook $top.nb
#
# First NoteBook tab: (g)eneral (p)re(f)erences
#
set gpf $top.nb.gpf
$top.nb add [ttk::frame $gpf] -text [mc "General"]
ttk::labelframe $gpf.dca -text [mc "When double clicki\
ng a login ..."] \\
-padding [list 5 5]
ttk::radiobutton $gpf.dca.cp -text [mc "Copy password \
to clipboard"] \\
-variable ::gorilla::prefTemp(doubleClickActio\
n) \\
-value "copyPassword"
ttk::radiobutton $gpf.dca.ed -text [mc "Edit Login"] \
\\
-variable ::gorilla::prefTemp(doubleClickActio\
n) \\
-value "editLogin"
ttk::radiobutton $gpf.dca.lb -text [mc "Launch Browser\
directed to URL"] \\
-variable ::gorilla::prefTemp(doubleClickActio\
n) \\
-value "launchBrowser"
ttk::radiobutton $gpf.dca.nop -text [mc "Do nothing"] \
\\
-variable ::gorilla::prefTemp(doubleClickActio\
n) \\
-value "nothing"
pack $gpf.dca.cp $gpf.dca.ed $gpf.dca.lb $gpf.dca.nop \
-side top -anchor w -pady 3
pack $gpf.dca -side top -padx 10 -pady 5 -fill x -expa\
nd yes
ttk::frame $gpf.cc -padding [list 8 5]
ttk::label $gpf.cc.l1 -text [mc "Clear clipboard after\
"]
spinbox $gpf.cc.s -from 0 -to 999 -increment 1 \\
-justify right -width 4 \\
-textvariable ::gorilla::prefTemp(clearClipboa\
rdAfter)
ttk::label $gpf.cc.l2 -text [mc "seconds (0=never)"]
pack $gpf.cc.l1 $gpf.cc.s $gpf.cc.l2 -side left -padx \
3
pack $gpf.cc -side top -anchor w
ttk::frame $gpf.lru -padding [list 8 5]
ttk::label $gpf.lru.l1 -text [mc "Remember"]
s"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"pinbox $gpf.lru.s -from 0 -to 32 -increment 1 \\
-justify right -width 4 \\
-textvariable ::gorilla::prefTemp(lruSize)
ttk::label $gpf.lru.l2 -text [mc "database names"]
ttk::button $gpf.lru.c -width 10 -text [mc "Clear"] \\
-command "set ::gorilla::guimutex 3"
pack $gpf.lru.l1 $gpf.lru.s $gpf.lru.l2 -side left -pa\
dx 3
pack $gpf.lru.c -side right
pack $gpf.lru -side top -anchor w -pady 3 -fill x
ttk::checkbutton $gpf.bu -text [mc "Backup database on\
save"] \\
-variable ::gorilla::prefTemp(keepBackupFile)
ttk::checkbutton $gpf.geo -text [mc "Remember sizes of\
dialog boxes"] \\
-variable ::gorilla::prefTemp(rememberGeometri\
es)
ttk::checkbutton $gpf.gac -text [ mc "Use Gorilla auto\
-copy" ] \\
-variable ::gorilla::prefTemp(gorillaAutocopy)
if { $::tcl_platform(platform) eq "x11" } {
::tooltip::tooltip $gpf.gac [ mc "Automaticall\
y copy password associated\\nwith login to clipboard after pasting\\no\
f user-name." ]
} else {
::tooltip::tooltip $gpf.gac [ mc "This option \
does not function on\\nWindows(TM) or MacOS(TM) platforms.\\nSee the h\
elp system for details." ]
}
pack $gpf.bu $gpf.geo $gpf.gac -side top -anchor w -pa\
dx 10 -pady 5
#
# Second NoteBook tab: (d)efault (p)re(f)erences
#
set dpf $top.nb.dpf
$top.nb add [ttk::frame $dpf] -text [mc "Defaults"]
ttk::frame $dpf.il -padding [list 10 10]
ttk::label $dpf.il.l1 -text [mc "Lock when idle after"\
]
spinbox $dpf.il.s -from 0 -to 999 -increment 1 \\
-justify right -width 4 \\
-textvariable ::gorilla::prefTemp(idleTimeoutD\
efault)
ttk::label $dpf.il.l2 -text [mc "minutes (0=never)"]
pack $dpf.il.l1 $dpf.il.s $dpf.il.l2 -side left -padx \
3
pack $dpf.il -side top -anchor w -pady 3
ttk::checkbutton $dpf.si -text [mc "Auto-save database\
immediately when changed"] \\
-variable ::gorilla::prefTemp(saveImmediatelyD\
efault)
ttk::checkbutton $dpf.ver -text [mc "Use Password Safe\
3 format"] \\
-variable ::gorilla::prefTemp(defaultVersion) \
\\
-onvalue 3 -offvalue 2
ttk::checkbutton $dpf.uni -text [mc "V2 Unicode suppor\
t"] \\
-variable ::gorilla::prefTemp(unicodeSupport)
ttk::checkbutton $dpf.ts -text [mc "Time stamp backup"\
] \\
-variable ::gorilla::prefTemp(timeStampBackup)
ttk::frame $dpf.bakpath
# puts $::gorilla::prefTemp(backupPath)
ttk::entry $dpf.bakpath.e -textvariable ::gorilla::pre\
fTemp(backupPath)
ttk::label $dpf.bakpath.l -text [mc "Backup path:"]
ttk::button $dpf.bakpath.b -image $::gorilla::images(b\
rowse) \\
-command { eval set ::gorilla::prefTemp(backup\
Path) \\
[tk_chooseDirectory -initialdir $::gor\
illa::prefTemp(backupPath) \\
-title [mc "Choose a directory"] ] }
pack $dpf.bakpath.l -side left
pack $dpf.bakpath.e -side left -padx 3 -expand 1 -fill\
x
pack $dpf.bakpath.b -side left -padx 3
pack $dpf.si $dpf.ver $dpf.uni $dpf.ts $dpf.bakpath -s\
ide top -anchor w -pady 3 -padx 10 -fill x
ttk::label $dpf.note -justify center -anchor w -wraple\
n 300 \\
-text [mc "Note: these defaults will be applie\
d to new databases. To change a setting for an existing database, go t\
o \\"Customize\\" in the \\"Security\\" menu."]
pack $dpf.note -side bottom -anchor center -pady 3
#
# Third NoteBook tab: export preferences
#
set epf $top.nb.epf
$top.nb add [ttk::frame $epf -padding [list 10 10]] -t\
ext [mc "Export"]
ttk::checkbutton $epf.password -text [mc "Include pass\
word field"] \\
-variable ::gorilla::prefTemp(exportIncludePas\
sword)
ttk::checkbutton $epf.notes -text [mc "Include \\"Note\
s\\" field"] \\
-variable ::gorilla::prefTemp(exportIncludeNot\
es)
ttk::frame $epf.fs
ttk::label $epf.fs.l -text [mc "Field separator"] -wid\
th 20 -anchor w
spinbox $epf.fs.e \\
-values [list , \\; :] \\
-textvariable ::gorilla::prefTemp(exportFieldS\
eparator) \\
-width 2 \\
-state readonly \\
-relief sunken
pack $epf.fs.l $epf.fs.e -side left
ttk::checkbutton $epf.warning -text [mc "Show security\
warning"] \\
-variable ::gorilla::prefTemp(exportShowWarnin\
g)
pack $epf.password $epf.notes $epf.warning $epf.fs \\
-anchor w -side top -pady 3
#
# Fou"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"rth NoteBook tab: Display
#
set languages [gorilla::getAvailableLanguages]
# format: {en English de Deutsch ...}
# Fehlerabfrage f\M-C\M-<r falschen prefTemp(lang) Ein\
trag in der gorillarc
if {[lsearch $languages $::gorilla::prefTemp(lang)] ==\
-1} {
set ::gorilla::prefTemp(lang) en
}
set ::gorilla::fullLangName [dict get $languages $::go\
rilla::prefTemp(lang)]
set display $top.nb.display
$top.nb add [ttk::frame $display -padding [list 10 10]\
] -text [mc "Display"]
ttk::frame $display.lang -padding {10 10}
ttk::label $display.lang.label -text [mc "Language:"] \
-width 9
ttk::menubutton $display.lang.mb -textvariable ::goril\
la::fullLangName \\
-width 8 -direction right
set m [menu $display.lang.mb.menu -tearoff 0]
$display.lang.mb configure -menu $m
foreach {lang name} $languages {
$m add radio -label $name -variable ::gorilla:\
:prefTemp(lang) -value $lang \\
-command "set ::gorilla::fullLangName \
$name"
}
pack $display.lang.label $display.lang.mb -side left
pack $display.lang -anchor w
# font options
ttk::frame $display.size -padding {10 10}
ttk::label $display.size.label -text "[mc "Size"]:" -w\
idth 9
ttk::menubutton $display.size.mb -textvariable ::goril\
la::prefTemp(fontsize) \\
-width 8 -direction right
set m [menu $display.size.mb.menu -tearoff 0]
$display.size.mb configure -menu $m
set sizes "8 9 10 11 12 14 16"
foreach {size} $sizes {
$m add radio -label $size -variable ::gorilla:\
:prefTemp(fontsize) -value $size \\
-command [ list ::apply { {size} {
font configure TkDefaultFont -\
size $size
font configure TkTextFont -\
size $size
font configure TkMenuFont -\
size $size
font configure TkCaptionFont -\
size $size
font configure TkFixedFont -\
size $size
# note - this has an explicit \
dependency upon Treeview using TkDefaultFont for display
ttk::style configure gorilla.T\
reeview -rowheight [ expr { 2 + [ font metrics TkDefaultFont -linespac\
e ] } ]
} } $size ]
}
pack $display.size.label $display.size.mb -side left
pack $display.size -anchor w
# gorilla icon in OpenDatabase
ttk::checkbutton $display.icon \\
-variable ::gorilla::prefTemp(gorillaIcon) \\
-text [mc "Show Gorilla Icon"]
pack $display.icon -anchor w
# auto iconify upon lock
ttk::checkbutton $display.autoiconify \\
-variable ::gorilla::prefTemp(iconifyOnAutoloc\
k) \\
-text [mc "Iconify upon auto-lock"]
pack $display.autoiconify -anchor w -pady 5
# hide logins in main window
ttk::checkbutton $display.hideLogins \\
-variable ::gorilla::prefTemp(hideLogins) \\
-text [mc "Hide login name in tree view" ]
pack $display.hideLogins -anchor w -pady 5
::tooltip::tooltip $display.hideLogins [ mc "This opti\
on takes effect after exiting\\nand restarting of Password Gorilla" ]
#
# Fifth NoteBook tab: Browser
#
$top.nb add [ set browser [ ttk::frame $top.nb.browser\
-padding [ list 10 0 ] ] ] -text [ mc "Browser" ]
ttk::label $browser.lexe -text [ mc "Browser executabl\
e to launch (required):" ]
ttk::entry $browser.exe -textvariable ::gorilla::prefT\
emp(browser-exe)
ttk::label $browser.lparam -text [ mc "Command line pa\
rameter (if any) to pass (optional):" ]
ttk::entry $browser.param -textvariable ::gorilla::pre\
fTemp(browser-param)
ttk::button $browser.findgui -text [ mc "Find Browser"\
] -command "set ::gorilla::prefTemp(browser-exe) \\[ tk_getOpenFile -\
parent $browser \\]"
ttk::style configure biwrap.TLabel -wraplength 75
ttk::label $browser.inst -style biwrap.TLabel -text [\
mc "If a command line parameter is provided, it must contain the char\
acter sequence: %url%. This sequence will be replaced with the actual \
URL during launch. See the help system for details." ]
bind $browser.inst <Configure> "ttk::style configure b\
iwrap.TLabel -wraplength \\[ winfo width $browser.inst \\]"
ttk::checkbutton $browser.autocopyuserid \\
-variable ::gorilla::prefTemp(autocopyUserid) \
\\
-text [ mc "Also copy username to clipboard" ]
::tooltip::tooltip $browser.autocopyuserid [ mc "When \
selected th"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"e username\\nfrom the login entry will also\\nbe copied to the clipboa\
rd\\nwhen opening a browser." ]
# note - switch to ttk::spinbox when upgrading to tcl/\
tk 8.5.9 or better
set subframe [ ttk::frame $browser.acmf ]
::tooltip::tooltip $subframe [ mc "Determines how Pass\
word\\nGorilla handles clearing the\\nclipboard.\\n\\nRange zero to tw\
enty.\\n\\nSee Help for details." ]
spinbox $subframe.spin -from 0 -to 20 -increment 1 -wi\
dth 3 \\
-command { set ::gorilla::prefTemp(autoclearMu\
ltiplier) %s } \\
-validatecommand { ::gorilla::PreferencesSpinB\
oxValidate %P } \\
-validate all
$subframe.spin set $::gorilla::prefTemp(autoclearMulti\
plier)
ttk::label $subframe.spinlbl -text [mc "Clipboard auto\
clear multiplier"]
pack $subframe.spin $subframe.spinlbl -side left -padx\
{0 2m}
grid $browser.lexe -sticky nw -pady { 5m 0 }
grid $browser.exe -sticky new
grid $browser.findgui -sticky ne -pady { 1m 5m }
grid $browser.lparam -sticky nw
grid $browser.param -sticky new
grid $browser.inst -sticky new -pady { 2m 0 }
grid $browser.autocopyuserid -sticky new -pady {2m 0}
grid $subframe -sticky new -pady { 2m 2m }
#
# End of NoteBook tabs
#
# $top.nb compute_size
# $top.nb raise gpf
pack $top.nb -side top -fill both -expand yes -ipady 1\
0
#
# Bottom
#
# Separator $top.sep -orient horizontal
# pack $top.sep -side top -fill x -pady 7
ttk::frame $top.buts
set but1 [ttk::button $top.buts.b1 -width 15 -text [ m\
c "OK" ] \\
-command "set ::gorilla::guimutex 1"]
set but2 [ttk::button $top.buts.b2 -width 15 -text [mc\
"Cancel"] \\
-command "set ::gorilla::guimutex 2"]
pack $but1 $but2 -side left -pady 10 -padx 20
pack $top.buts -side top -ipady 10 -fill both
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyPref\
erencesDialog
} else {
wm deiconify $top
}
set oldGrab [grab current .]
update idletasks
raise $top
focus $top.buts.b1
catch {grab $top}
while {42} {
ArrangeIdleTimeout
set ::gorilla::guimutex 0
vwait ::gorilla::guimutex
if {$::gorilla::guimutex == 1} {
break
} elseif {$::gorilla::guimutex == 2} {
break
} elseif {$::gorilla::guimutex == 3} {
set ::gorilla::preference(lru) [list]
set ::gorilla::status [mc "History deleted. Af\
ter a restart the list will be empty."]
}
}
if {$oldGrab != ""} {
catch {grab $oldGrab}
} else {
catch {grab release $top}
}
wm withdraw $top
if {$gorilla::guimutex != 1} {
return
}
# copy the temporary preferences back into the global preferen\
ces
# array
dict for {pref value} $::gorilla::preference(all-preferences) \
{
set ::gorilla::preference($pref) $::gorilla::prefTemp(\
$pref)
}
}
proc gorilla::Preferences {} {
gorilla::PreferencesDialog
}
proc gorilla::PreferencesSpinBoxValidate { value } {
if { ( ! [ string is integer -strict $value ] ) || ( ( $value \
< 0 ) || ( 20 < $value ) ) } {
return 0
} else {
return 1
}
} ; # end proc gorilla::PreferencesSpinBoxValidate
# --------------------------------------------------------------------\
--
# Save Preferences
# --------------------------------------------------------------------\
--
#
# Results:
# returns 1 if platform is Windows and registry save was success\
ful
# returns 0 if platform is Mac or Linux doing nothing
proc gorilla::SavePreferencesToRegistry {} {
if {![info exists ::tcl_platform(platform)] || \\
$::tcl_platform(platform) != "windows" || \\
[catch {package require registry}]} {
return 0
}
set key {HKEY_CURRENT_USER\\Software\\FPX\\Password Gorilla}
if {![regexp {Revision: ([0-9.]+)} $::gorilla::Version dummy r\
evision]} {
set revision "<unknown>"
}
registry set $key revision $revision sz
#
# Note: findInText omitted on purpose. It might contain a pass\
word.
#
foreach {pref type} {caseSensitiveFind dword \\
clearClipboardAfter dword \\
defaultVersion dword \\
doubleClickAction sz \\
exportFieldSeparator sz \\
exportIncludeNotes dword \\
exportIncludePassword dword \\
exportShowWarning dword \\
findInAny dword \\
findInNotes dword \\
fin"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"dInPassword dword \\
findInTitle dword \\
findInURL dword \\
findInUsername dword \\
idleTimeoutDefault dword \\
keepBackupFile dword \\
lruSize dword \\
rememberGeometries dword \\
saveImmediatelyDefault dword \\
unicodeSupport dword} {
if {[info exists ::gorilla::preference($pref)]} {
registry set $key $pref $::gorilla::preference\
($pref) $type
}
}
if {[info exists ::gorilla::preference(lru)]} {
if {[info exists ::gorilla::preference(lruSize)]} {
set lruSize $::gorilla::preference(lruSize)
} else {
set lruSize 10
}
if {[llength $::gorilla::preference(lru)] > $lruSize} \
{
set lru [lrange $::gorilla::preference(lru) 0 \
[expr {$lruSize-1}]]
} else {
set lru $::gorilla::preference(lru)
}
registry set $key lru $lru multi_sz
}
if {![info exists ::gorilla::preference(rememberGeometries)] |\
| \\
$::gorilla::preference(rememberGeometries)} {
foreach top [array names ::gorilla::toplevel] {
if {[scan [wm geometry $top] "%dx%d" width hei\
ght] == 2} {
registry set $key "geometry,$top" "${w\
idth}x${height}"
}
}
} elseif {[info exists ::gorilla::preference(rememberGeometrie\
s)] && \\
!$::gorilla::preference(rememberGeometries)} {
foreach value [registry values $key geometry,*] {
registry delete $key $value
}
}
return 1
}
proc gorilla::SavePreferencesToRCFile {} {
if {[info exists ::gorilla::preference(rc)]} {
set fileName $::gorilla::preference(rc)
} else {
if {[info exists ::env(HOME)] && [file isdirectory $::\
env(HOME)]} {
set homeDir $::env(HOME)
} else {
set homeDir "~"
}
#
# On the Mac, use $HOME/Library/Preferences/gorilla.rc
# Elsewhere, use $HOME/.gorillarc
#
if {[tk windowingsystem] == "aqua" && \\
[file isdirectory [file join $homeDir "Library" "Prefe\
rences"]]} {
set fileName [file join $homeDir "Library" "Pr\
eferences" "gorilla.rc"]
} else {
set fileName [file join $homeDir ".gorillarc"]
}
}
if { [catch {set f [open $fileName "w"]}] } {
return 0
}
if {![regexp {Revision: ([0-9.]+)} $::gorilla::Version dummy r\
evision]} {
set revision "<unknown>"
}
puts $f "revision=$revision"
#
# Note: findThisText omitted on purpose. It might contain a pa\
ssword.
#
dict for {pref value} $::gorilla::preference(all-preferences) \
{
# lru and exportFieldSeparator are handled specially b\
elow
if { $pref ni { lru exportFieldSeparator findThisText \
} } {
puts $f "$pref=[ quoteBackslashes $::gorilla::\
preference($pref) ]"
}
}
puts $f "exportFieldSeparator=\\"[string map {\\t \\\\t} $::go\
rilla::preference(exportFieldSeparator)]\\""
set lruSize $::gorilla::preference(lruSize)
if {[llength $::gorilla::preference(lru)] > $lruSize} {
set lru [lrange $::gorilla::preference(lru) 0 [expr {$\
lruSize-1}]]
} else {
set lru $::gorilla::preference(lru)
}
foreach file $lru {
puts $f "lru=\\"[ quoteBackslashes $file ]\\""
}
if {$::gorilla::preference(rememberGeometries)} {
foreach top [array names ::gorilla::toplevel] {
if {[scan [wm geometry $top] "%dx%d" width hei\
ght] == 2} {
puts $f "geometry,$top=${width}x${heig\
ht}"
}
}
}
if {[catch {close $f}]} {
gorilla::ErrorPopup [mc "Error"] [mc "Error while savi\
ng RC-File"]
return 0
}
return 1
}
proc gorilla::quoteBackslashes { str } {
string map {\\\\ \\\\\\\\} $str
}
proc gorilla::SavePreferences {} {
if {[info exists ::gorilla::preference(norc)] && $::gorilla::p\
reference(norc)} {
return 0
}
SavePreferencesToRCFile
return 1
}
# --------------------------------------------------------------------\
--
# Load Preferences
# --------------------------------------------------------------------\
--
#
proc gorilla::LoadPreferencesFromRegistry {} {
if {![info exists ::tcl_platform(platform)] || \\
$::tcl_platform(platform) != "windows" || \\
[catch {package require registry}]} {
return 0
}
set key {HKEY_CURRENT_USER\\Software\\FPX\\Password Gorilla}
if {[catch {registry values $key}]} {
return 0
}
if {![regexp {Revision: ([0-9.]+)} $::gorilla::Version dummy r\
evision]} {
set revision "<unmatchable>"
}
if {[llength [registry values $key revision"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"]] == 1} {
set prefsRevision [registry get $key revision]
} else {
set prefsRevision "<unknown>"
}
if {[llength [registry values $key lru]] == 1} {
set ::gorilla::preference(lru) [registry get $key lru]
}
foreach {pref type} {caseSensitiveFind boolean \\
clearClipboardAfter integer \\
defaultVersion integer \\
doubleClickAction ascii \\
exportFieldSeparator ascii \\
exportIncludeNotes boolean \\
exportIncludePassword boolean \\
exportShowWarning boolean \\
findInAny boolean \\
findInNotes boolean \\
findInPassword boolean \\
findInTitle boolean \\
findInURL boolean \\
findInUsername boolean \\
findThisText ascii \\
idleTimeoutDefault integer \\
keepBackupFile boolean \\
lruSize integer \\
rememberGeometries boolean \\
saveImmediatelyDefault boolean \\
unicodeSupport integer} {
if {[llength [registry values $key $pref]] == 1} {
set value [registry get $key $pref]
if {[string is $type $value]} {
set ::gorilla::preference($pref) $valu\
e
}
}
}
if {[info exists ::gorilla::preference(rememberGeometries)] &&\
\\
$::gorilla::preference(rememberGeometries)} {
foreach value [registry values $key geometry,*] {
set data [registry get $key $value]
if {[scan $data "%dx%d" width height] == 2} {
set ::gorilla::preference($value) "${w\
idth}x${height}"
}
}
}
#
# If the revision numbers of our preferences don't match, forg\
et
# about window geometries, as they might have changed.
#
if {![string equal $revision $prefsRevision]} {
foreach geo [array names ::gorilla::preference geometr\
y,*] {
unset ::gorilla::preference($geo)
}
}
return 1
}
proc gorilla::LoadPreferencesFromRCFile {} {
# The (rc) entry in the preferences array is utilized to hold the v\
alue
# from the command line -rc switch
if { [ info exists ::gorilla::preference(rc) ] } {
set fileName $::gorilla::preference(rc)
} else {
if { [ info exists ::env(HOME) ] && [ file isdirectory\
$::env(HOME) ] } {
set homeDir $::env(HOME)
} else {
set homeDir "~"
}
#
# On the Mac, use $HOME/Library/Preferences/gorilla.rc
# Elsewhere, use $HOME/.gorillarc
#
if { [tk windowingsystem] == "aqua" && \\
[ file isdirectory [ file join $homeDir "Libra\
ry" "Preferences" ] ] } {
set fileName [ file join $homeDir "Library" "P\
references" "gorilla.rc" ]
} else {
set fileName [ file join $homeDir ".gorillarc"\
]
}
} ; # end if info exists ::gorilla::preference(rc)
if { ! [ regexp {Revision: ([0-9.]+)} $::gorilla::Version -> r\
evision ] } {
set revision "<unmatchable>"
}
set prefsRevision "<unknown>"
if { [ catch { set f [ open $fileName ] } ] } {
return 0
}
while { ! [ eof $f ] } {
set line [ string trim [ gets $f ] ]
if { [ string index $line 0 ] == "#" } {
continue
}
set temp [ split $line = ]
if { [ llength $temp ] != 2 } {
continue
}
lassign $temp pref value
set pref [ string trim $pref ]
# the subst is to perform backslash substitutions upon\
the value of the preference
set value [ subst -nocommands -novariables [ string tr\
im [ string trim $value "\\"" ] ] ]
switch -glob -- $pref {
lru {
if { [ apply [ lindex [ dict get $::go\
rilla::preference(all-preferences) lru ] 1 ] $value ] } {
lappend ::gorilla::preference(\
$pref) $value
}
}
revision {
set prefsRevision $value
}
geometry,* {
if {[scan $value "%dx%d" width height]\
== 2} {
set ::gorilla::preference($pre\
f) "${width}x${height}"
}
}
default {
if { ! [ dict exists $::gorilla::prefe\
rence(all-preferences) $pref ] } {
continue
}
# apply the validator proc from the pr\
eferences definition list to the value
if { [ apply [ lindex [ dict get $::go\
rilla::preference(all-preferences) $pref ] 1 ] $value ] } {
set ::gorilla::preference($pre\
f) $value
}
}
} ; # end switch pref
} ; # end while ! eof f
# MacOS launches default browser with "open http://url"
if {[tk windowingsystem] == "aqua" && $::gorilla::preference(b\
rowser-exe) eq "" } {
set ::gorilla::preference(browser-exe) "open"
}
# in"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"itialize locale and fonts from the preference values
mclocale $::gorilla::preference(lang)
# Load msgcat data into the global namespace so that it is vis\
ible
# from both the ::gorilla and ::pwsafe namespaces.
namespace eval :: { mcload [file join $::gorilla::Dir msgs] }
set value $::gorilla::preference(fontsize)
font configure TkDefaultFont -size $value
font configure TkTextFont -size $value
font configure TkMenuFont -size $value
font configure TkCaptionFont -size $value
font configure TkFixedFont -size $value
# undocumented option for ttk::treeview
# note - this has an explicit dependency upon Treeview using T\
kDefaultFont for display
ttk::style configure gorilla.Treeview -rowheight [ expr { 2 + \
[ font metrics TkDefaultFont -linespace ] } ]
#
# If the revision numbers of our preferences don't match, forg\
et
# about window geometries, as they might have changed.
#
if {![string equal $revision $prefsRevision]} {
foreach geo [array names ::gorilla::preference geometr\
y,*] {
unset ::gorilla::preference($geo)
}
}
catch {close $f}
return 1
} ; # end proc gorilla::LoadPreferencesFromRCFile
proc gorilla::LoadPreferences {} {
if {[info exists ::gorilla::preference(norc)] && \\
$::gorilla::preference(norc)} {
return 0
}
LoadPreferencesFromRCFile
return 1
}
# --------------------------------------------------------------------\
--
# Change the password
# --------------------------------------------------------------------\
--
#
proc gorilla::ChangePassword {} {
ArrangeIdleTimeout
if {![info exists ::gorilla::db]} {
tk_messageBox -parent . \\
-type ok -icon error -default ok \\
-title [ mc "No Database" ] \\
-message [ mc "Please create a new database, o\
r open an existing\\ndatabase first." ]
return
}
if {[catch {set currentPassword [GetPassword 0 [mc "Current Ma\
ster Password:"]]} err]} {
# canceled
return
}
if {![$::gorilla::db checkPassword $currentPassword]} {
tk_messageBox -parent . \\
-type ok -icon error -default ok \\
-title [ mc "Wrong Password" ] \\
-message [ mc "That password is not correct." \
]
return
}
pwsafe::int::randomizeVar currentPassword
if {[catch {set newPassword [GetPassword 1 [mc "New Master Pas\
sword:"]] } err]} {
tk_messageBox -parent . \\
-type ok -icon info -default ok \\
-title [ mc "Password Not Changed" ] \\
-message [ mc "You canceled the setting of a n\
ew password.\\nTherefore, the existing password remains in effect." ]
return
}
$::gorilla::db setPassword $newPassword
pwsafe::int::randomizeVar newPassword
set ::gorilla::status [mc "Master password changed."]
MarkDatabaseAsDirty
}
# --------------------------------------------------------------------\
--
# X Selection Handler
# --------------------------------------------------------------------\
--
#
proc gorilla::XSelectionHandler {offset maxChars} {
switch -- $::gorilla::activeSelection {
0 {
set data ""
}
1 {
set data [gorilla::GetSelectedUsername]
if { $::gorilla::preference(gorillaAutocopy) }\
{
after idle { after 200 { ::gorilla::Co\
pyToClipboard Password } }
}
}
2 {
set data [gorilla::GetSelectedPassword]
}
3 {
set data [gorilla::GetSelectedURL]
}
default {
set data ""
}
}
return [string range $data $offset [expr {$offset+$maxChars-1}\
]]
}
# --------------------------------------------------------------------\
--
# Copy data to the Clipboard
# --------------------------------------------------------------------\
--
#
proc gorilla::CopyToClipboard { what {mult 1} } {
# Copies a data value to the clipboard
#
# what - One of "URL" "Username" or "Password"
# mult - Clipboard clear time multiplication factor, optional,\
defaults to 1
#
# Consolidates all of the copy to clipboard management code in\
to a
# single proc.
switch -exact -- $what {
Username { set ::gorilla::activeSelection 1 }
Password { set ::gorilla::activeSelection 2 }
URL { set ::gorilla::activeSelection 3 }
default { error [mc "gorilla::CopyToClipboard: parame\
ter %s not one of 'Username', 'Password', 'URL'" [mc $what]] }
}
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"ArrangeIdleTimeout
set item [ gorilla::GetSelected$what ]
if {$item == ""} {
set ::gorilla::status [ mc "Can not copy %s to clipboa\
rd: no %s defined." [ mc $what ] [ mc $what ] ]
} else {
switch -exact -- [ tk windowingsystem ] {
aqua -
win32 { # win32 and aqua only support "clipb\
oard"
clipboard clear
clipboard append -- [ ::gorilla::GetSe\
lected$what ]
}
x11 -
default { # x11 supports PRIMARY and
# CLIPBOARD x11 style clipboards
# setup to return data for both PRIMAR\
Y and
# CLIPBOARD so that no matter how a us\
er
# pastes, they will receive the data t\
hey
# expect
foreach sel { PRIMARY CLIPBOARD } {
selection clear -selection $se\
l
selection own -selection $se\
l .
} ; # end foreach sel
}
}
ArrangeToClearClipboard $mult
set ::gorilla::status [ mc "Copied %s to clipboard." [\
mc $what ] ]
} ; # end if item == ""
} ; # end proc gorilla::CopyToClipboard
# --------------------------------------------------------------------\
--
# Helper procs to get various items from selected db records
# --------------------------------------------------------------------\
--
#
proc gorilla::GetSelectedURL {} {
if {[catch {set rn [gorilla::GetSelectedRecord]}]} {
return
}
#
# Password Safe v3 has a dedicated URL field.
#
if {[$::gorilla::db existsField $rn 13]} {
return [ ::gorilla::dbget url $rn ]
}
#
# Password Safe v2 kept the URL in the "Notes" field.
#
if {![$::gorilla::db existsField $rn 5]} {
return
}
set notes [ ::gorilla::dbget notes $rn ]
if {[set index [string first "url:" $notes]] != -1} {
incr index 4
while {$index < [string length $notes] && \\
[string is space [string index $notes $index]]\
} {
incr index
}
if {[string index $notes $index] == "\\""} {
incr index
set URL ""
while {$index < [string length $notes]} {
set c [string index $notes $index]
if {$c == "\\\\"} {
append URL [string index $note\
s [incr index]]
} elseif {$c == "\\""} {
break
} else {
append URL $c
}
incr index
}
} else {
if {![regexp -start $index -- {\\s*(\\S+)} $no\
tes dummy URL]} {
set URL ""
}
}
} elseif {![regexp -nocase -- {http(s)?://\\S*} $notes URL]} {
set URL ""
}
return $URL
}
# --------------------------------------------------------------------\
--
proc gorilla::GetSelectedPassword {} {
# Retreive the password of the selected item in the treeview
if {[catch {set rn [gorilla::GetSelectedRecord]} err]} {
return
}
if {![$::gorilla::db existsField $rn 6]} {
return
}
return [ ::gorilla::dbget password $rn ]
}
# --------------------------------------------------------------------\
--
proc gorilla::GetSelectedRecord {} {
# Obtain the db record number of the selected item in the tree\
view
lassign [ ::gorilla::get-selected-tree-data ] node type rn
if { ( $node eq "" ) && ( $type eq "" ) } {
error "oops"
}
if {$type != "Login"} {
error "oops"
}
return $rn
}
proc gorilla::GetSelectedUsername {} {
# Retreive the username of the selected item in the treeview
if {[catch {set rn [gorilla::GetSelectedRecord]}]} {
return
}
if {![$::gorilla::db existsField $rn 6]} {
return
}
return [ ::gorilla::dbget user $rn ]
}
# --------------------------------------------------------------------\
--
# Miscellaneous
# --------------------------------------------------------------------\
--
#
proc gorilla::DestroyAboutDialog {} {
ArrangeIdleTimeout
set top .about
catch {destroy $top}
unset ::gorilla::toplevel($top)
}
proc tkAboutDialog {} {
##about dialog code goes here
gorilla::About
}
proc gorilla::About {} {
ArrangeIdleTimeout
set top .about
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
set w .about.mainframe
if {![regexp {Revision: ([0-9.]+)} $::gorilla::Version\
dummy revision]} {
set revision "<unknown>"
}
ttk::frame $w -padding {10 10}
ttk::label $w.image -image $::gorilla::images(splash)
ttk::label $w.title -text "[ mc "Password Gorilla" ] $\
revision" \\
-font {sans 16 b"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"old} -padding {10 10}
ttk::label $w.description -text [ mc "Gorilla will pro\
tect your passwords and help you to manage them with a pwsafe 3.2 comp\
atible database" ] -wraplength 350 -padding {10 0}
ttk::label $w.copyright \\
-text "\\u00a9 2004-2009 Frank Pillhofer\\n\\u\
00a9 2010-2013 Zbigniew Diaczyszyn and\\n\\u00a9 2010-2013 Richard Ell\
is" \\
-font {sans 9} -padding {10 0}
ttk::label $w.url -text "https://github.com/zdia/goril\
la" -foreground blue \\
-font {sans 10}
set stdopts [ list -padding {10 0} -font {sans 9} -wra\
plength 350 ]
lappend ctr [ ttk::label $w.contributors -text [ mc "C\
ontributors" ] {*}$stdopts -font {sans 10} ]
lappend ctr [ ttk::label $w.contrib1 -text "\\u2022 [ \
mc "Gorilla artwork contributed by %s" "Andrew J. Sniezek." ]" {*}$std\
opts ]
lappend ctr [ ttk::label $w.contrib2 -text "\\u2022 [ \
mc "German translation by %s" "Zbigniew Diaczyszyn" ]" {*}$stdopts ]
lappend ctr [ ttk::label $w.contrib3 -text "\\u2022 [ \
mc "Russian translation by %s" "Evgenii Terechkov" ]" {*}$stdopts ]
lappend ctr [ ttk::label $w.contrib4 -text "\\u2022 [ \
mc "Italian translation by %s" "Marco Ciampa" ]" {*}$stdopts ]
lappend ctr [ ttk::label $w.contrib5 -text "\\u2022 [ \
mc "French translation by %s" "Benoit Mercier, Alexandre Raymond" ]" {\
*}$stdopts ]
lappend ctr [ ttk::label $w.contrib6 -text "\\u2022 [ \
mc "Spanish translation by %s" "Juan Roldan Ruiz" ]" {*}$stdopts ]
lappend ctr [ ttk::label $w.contrib7 -text "\\u2022 [ \
mc "Portuguese translation by %s" "Daniel Bruno" ]" {*}$stdopts ]
set I [ expr { [ info exists ::sha2::accel(critcl) ] &\
& $::sha2::accel(critcl) ? "C" : "Tcl" } ]
ttk::label $w.exten -text [ mc "Using %s sha256 extens\
ion." $I ] {*}$stdopts
ttk::frame $w.buttons
ttk::button $w.buttons.license -text [mc License] -com\
mand gorilla::License
ttk::button $w.buttons.close -text [mc "Close"] -comma\
nd gorilla::DestroyAboutDialog
pack $w.buttons.license $w.buttons.close -side left -p\
adx 30
pack $w.image -side top
pack $w.title -side top -pady 5
pack $w.description -side top
pack $w.copyright -side top -pady 5 -fill x
pack $w.url -side top -pady 5
pack {*}$ctr -side top -pady 0 -fill x
pack $w.exten -side top -pady {2m 0} -fill x
pack $w.buttons -side bottom -pady 10
pack $w
wm title $top [mc "About Password Gorilla"]
bind $top <Return> "gorilla::DestroyAboutDialog"
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW gorilla::DestroyAbou\
tDialog
} else {
set w "$top.mainframe"
}
update idletasks
wm deiconify $top
raise $top
focus $w.buttons.close
wm resizable $top 0 0
}
proc gorilla::Help {} {
ArrangeIdleTimeout
# ReadHelpFiles is looking in the given directory
# for a file named help.txt
::Help::ReadHelpFiles $::gorilla::Dir $::gorilla::preference(l\
ang)
::Help::Help Overview
}
proc gorilla::License {} {
ArrangeIdleTimeout
ShowTextFile .license [mc "Password Gorilla License"] "LICENSE\
.txt"
}
proc gorilla::DestroyTextFileDialog {top} {
ArrangeIdleTimeout
catch {destroy $top}
unset ::gorilla::toplevel($top)
}
proc gorilla::ShowTextFile {top title fileName} {
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
wm title $top $title
set text [text $top.text -relief sunken -width 80 \\
-yscrollcommand "$top.vsb set"]
if {[tk windowingsystem] ne "aqua"} {
ttk::scrollbar $top.vsb -orient vertical -comm\
and "$top.text yview"
} else {
scrollbar $top.vsb -orient vertical -command "\
$top.text yview"
}
## Arrange the tree and its scrollbars in the toplevel
lower [ttk::frame $top.dummy]
pack $top.dummy -fill both -fill both -expand 1
grid $top.text $top.vsb -sticky nsew -in $top.dummy
grid columnconfigure $top.dummy 0 -weight 1
grid rowconfigure $top.dummy 0 -weight 1
set botframe [ttk::frame $top.botframe]
set botbut [ttk::button $botframe.but -width 10 -text \
[mc "Close"] \\
-command "gorilla::DestroyTextFileDial\
og $top"]
pack $botbut
pack $botframe -side top -fill x -pady 10
bind $top <Prior> "$text yview scroll -1 pages; break"
bind $t"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"op <Next> "$text yview scroll 1 pages; break"
bind $top <Up> "$text yview scroll -1 units"
bind $top <Down> "$text yview scroll 1 units"
bind $top <Home> "$text yview moveto 0"
bind $top <End> "$text yview moveto 1"
bind $top <Return> "gorilla::DestroyTextFileDialog $to\
p"
$text configure -state normal
$text delete 1.0 end
set filename [file join $::gorilla::Dir $fileName]
if {[catch {
set file [open $filename]
$text insert 1.0 [read $file]
close $file}]} {
$text insert 1.0 "Oops: file not found: $fileN\
ame"
}
$text configure -state disabled
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW "gorilla::DestroyTex\
tFileDialog $top"
} else {
set botframe "$top.botframe"
}
update idletasks
wm deiconify $top
raise $top
focus $botframe.but
wm resizable $top 0 0
}
# --------------------------------------------------------------------\
--
# Find
# --------------------------------------------------------------------\
--
#
proc gorilla::CloseFindDialog {} {
set top .findDialog
if {[info exists ::gorilla::toplevel($top)]} {
wm withdraw $top
}
}
proc gorilla::Find {} {
ArrangeIdleTimeout
if {![info exists ::gorilla::db]} {
return
}
set top .findDialog
if {![info exists ::gorilla::toplevel($top)]} {
toplevel $top -class "Gorilla"
TryResizeFromPreference $top
wm title $top "[mc Find]"
ttk::frame $top.text -padding [list 10 10]
ttk::label $top.text.l -text [mc "Find Text:"] -anchor\
w -width 10
ttk::entry $top.text.e -width 40 \\
-textvariable ::gorilla::preference(fi\
ndThisText)
pack $top.text.l $top.text.e -side left
ttk::labelframe $top.find -text [mc "Find Options ..."\
] \\
-padding [list 10 10]
ttk::checkbutton $top.find.any -text [mc "Any field"] \
\\
-variable ::gorilla::preference(findIn\
Any)
ttk::checkbutton $top.find.title -text [mc "Title"] -w\
idth 10 \\
-variable ::gorilla::preference(findIn\
Title)
ttk::checkbutton $top.find.username -text [mc "Usernam\
e"] \\
-variable ::gorilla::preference(findIn\
Username)
ttk::checkbutton $top.find.password -text [mc "Passwor\
d"] \\
-variable ::gorilla::preference(findIn\
Password)
ttk::checkbutton $top.find.notes -text [mc "Notes"] \\
-variable ::gorilla::preference(findIn\
Notes)
ttk::checkbutton $top.find.url -text [ mc "URL" ] \\
-variable ::gorilla::preference(findIn\
URL)
ttk::checkbutton $top.find.case -text [mc "Case sensit\
ive find"] \\
-variable ::gorilla::preference(caseSe\
nsitiveFind)
grid $top.find.any $top.find.title $top.find.password\
-sticky nsew
grid ^ $top.find.username $top.find.notes -sticky nse\
w
grid ^ $top.find.url -sticky nsew
grid $top.find.case -sticky nsew
grid columnconfigure $top.find 0 -weight 1
ttk::frame $top.buts -padding [list 10 10]
set but1 [ttk::button $top.buts.b1 -width 10 -text [mc\
"Find"] \\
-command "::gorilla::R\
unFind"]
set but2 [ttk::button $top.buts.b2 -width 10 -text [mc\
"Close"] \\
-command "::gorilla::C\
loseFindDialog"]
pack $but1 $but2 -side left -pady 10 -padx 20 -fill x \
-expand 1
pack $top.buts -side bottom -expand yes -fill x -padx \
20 -pady 5
pack $top.text -side top -expand yes -fill x -pady 5
pack $top.find -side left -expand yes -fill x -padx 20\
-pady 5
bind $top.text.e <Return> "::gorilla::RunFind"
# if any then all checked
# $top.find.case state selected
bind $top.text.e <Return> "::gorilla::RunFind"
set ::gorilla::toplevel($top) $top
wm attributes $top -topmost 1
focus $top.text.e
update idletasks
wm protocol $top WM_DELETE_WINDOW gorilla::CloseFindDi\
alog
} else {
wm deiconify $top
# Dialog_Wait
}
#
# Start with the currently selected node, if any.
#
set selection [$::gorilla::widgets(tree) selection]
if {[llength $selection] > 0} {
set ::gorilla::findCurrentNode [lindex $selection 0]
} else {
set ::gorilla::findCurrentNode [lindex [$::gorilla::wi\
dgets(tree) children {}] 0]
}
}
proc gorilla::FindNextNode {node} {
#
# If this node has children, return the first child.
#
set children [$::gorilla::widgets(tree)"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" children $node]
if {[llength $children] > 0} {
return [lindex $children 0]
}
while {42} {
#
# Go to the parent, and find its next child.
#
set parent [$::gorilla::widgets(tree) parent $node]
set children [$::gorilla::widgets(tree) children $pare\
nt]
set indexInParent [$::gorilla::widgets(tree) index $no\
de]
incr indexInParent
# gets stdin
# break
if {$indexInParent < [llength $children]} {
set node [lindex $children $indexInParent]
break
}
#
# Parent doesn't have any more children. Go up one lev\
el.
#
set node $parent
#
# If we are at the root node, return its first child (\
wrap around).
#
if {$node == {} } {
set node [lindex [$::gorilla::widgets(tree) ch\
ildren {}] 0]
break
}
#
# Find the parent's next sibling (Geschwister)
#
} ;# end while
return $node
}
proc gorilla::FindCompare {needle haystack caseSensitive} {
if {$caseSensitive} {
set cmp [string first $needle $haystack]
} else {
set cmp [string first [string tolower $needle] [string\
tolower $haystack]]
}
return [expr {($cmp == -1) ? 0 : 1}]
}
proc gorilla::RunFind {} {
# The call to "tree exists" below is to prevent an error messa\
ge in the
# instance that the node referenced by "findCurrentNode" has b\
een deleted
# from the tree prior to calling "RunFind"
if { [ info exists ::gorilla::findCurrentNode ]
&& [ $::gorilla::widgets(tree) exists $::gorilla::findCurren\
tNode ] } {
set ::gorilla::findCurrentNode [::gorilla::FindNextNod\
e $::gorilla::findCurrentNode]
} else {
set ::gorilla::findCurrentNode [lindex [$::gorilla::wi\
dgets(tree) children {}] 0]
}
set text $::gorilla::preference(findThisText)
set node $::gorilla::findCurrentNode
set found 0
set recordsSearched 0
set totalRecords [llength [$::gorilla::db getAllRecordNumbers]\
]
while {!$found} {
# puts "\\n--- Runfind while-schleife: next node is $node"
# set node [::gorilla::FindNextNode $node]
set data [$::gorilla::widgets(tree) item $node -values\
]
set type [lindex $data 0]
if {$type == "Group" || $type == "Root"} {
set node [::gorilla::FindNextNode $node]
if {$node == $::gorilla::findCurrentNode} {
break
}
continue
}
incr recordsSearched
set percent [expr {int(100.*$recordsSearched/$totalRec\
ords)}]
set ::gorilla::status "Searching ... ${percent}%"
update idletasks
set rn [lindex $data 1]
set fa $::gorilla::preference(findInAny)
set cs $::gorilla::preference(caseSensitiveFind)
if {($fa || $::gorilla::preference(findInTitle)) && \\
[$::gorilla::db existsField $rn 3]} {
if {[FindCompare $text [ ::gorilla::db\
get title $rn ] $cs]} {
set found 3
break
}
}
if {($fa || $::gorilla::preference(findInUsername)) &&\
\\
[$::gorilla::db existsField $rn 4]} {
if {[FindCompare $text [ ::gorilla::db\
get user $rn ] $cs]} {
set found 4
break
}
}
if {($fa || $::gorilla::preference(findInPassword)) &&\
\\
[$::gorilla::db existsField $rn 6]} {
if {[FindCompare $text [ ::gorilla::db\
get password $rn ] $cs]} {
set found 6
break
}
}
if {($fa || $::gorilla::preference(findInNotes)) && \\
[$::gorilla::db existsField $rn 5]} {
if {[FindCompare $text [ ::gorilla::db\
get notes $rn ] $cs]} {
set found 5
break
}
}
if {($fa || $::gorilla::preference(findInURL)) && \\
[$::gorilla::db existsField $rn 13]} {
if {[FindCompare $text [ ::gorilla::db\
get url $rn ] $cs]} {
set found 13
break
}
}
set node [::gorilla::FindNextNode $node]
if {$node == $::gorilla::findCurrentNode} {
#
# Wrapped around.
#
break
}
} ;# end while loop
if {!$found} {
set ::gorilla::status [mc "Text not found."]
return
}
#
# Text found.
#
#
# Make sure that all of node's parents are open.
#
set parent [$::gorilla::widgets(tree) parent $node]
while {$parent != "RootNode"} {
$::gorilla::widgets(tree) item $parent -open 1
set parent [$::gorilla::widgets(tree) parent $parent]
}
#
# Make sure that the node is visible.
#
$::gorilla::widgets(tree) see $node
$::gorilla:"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
":widgets(tree) selection set $node
#
# Report.
#
switch -- $found {
3 {
set ::gorilla::status "Found matching title."
}
4 {
set ::gorilla::status "Found matching username\
."
}
5 {
set ::gorilla::status "Found matching notes."
}
6 {
set ::gorilla::status "Found matching password\
."
}
13 {
set ::gorilla::status "Found matching URL."
}
default {
set ::gorilla::status "Found match."
}
}
#
# Remember.
#
set ::gorilla::findCurrentNode $node
}
proc gorilla::FindNext {} {
if { [ info exists ::gorilla::findCurrentNode ] } {
set ::gorilla::findCurrentNode [::gorilla::FindNextNod\
e $::gorilla::findCurrentNode]
gorilla::RunFind
} else {
# if no find state - just jump into a regular "find" o\
peration
gorilla::Find
}
}
proc gorilla::getAvailableLanguages { } {
set files [glob -tail -path "$::gorilla::Dir/msgs/" *.msg]
set msgList [list ] ;# en.msg exists
foreach file $files {
lappend msgList [lindex [split $file "."] 0]
}
# FIXME: This dictionary of possible languages has to be expan\
ded
set langFullName [list en English de Deutsch fr Fran\\u00e7ais\
es Espa\\u00f1ol ru Russian it Italiano pt Portuguese]
# create langList from *.msg pool
set langList {}
foreach lang $msgList {
set res [lsearch $langFullName $lang]
lappend langList [lindex $langFullName $res] [lindex $\
langFullName [incr res]]
}
return $langList
}
# --------------------------------------------------------------------\
--
# Icons
# --------------------------------------------------------------------\
--
#
set ::gorilla::images(application) [image create photo -file [file joi\
n $::gorilla::PicsDir application.gif]]
set ::gorilla::images(browse) [image create photo -file [file join $::\
gorilla::PicsDir browse.gif]]
set ::gorilla::images(group) [image create photo -file [file join $::g\
orilla::PicsDir group.gif]]
set ::gorilla::images(login) [image create photo -file [file join $::g\
orilla::PicsDir login.gif]]
# vgl. auch Quelle: http://www.clipart-kiste.de/archiv/Tiere/Affen/aff\
e_08.gif
set ::gorilla::images(splash) [image create photo -file [file join $::\
gorilla::PicsDir splash.gif]]
proc gorilla::CheckDefaultExtension {name extension} {
set res [split $name .]
if {[llength $res ] == 1} {
set name [join "$res $extension" .]
}
return $name
}
proc gorilla::ViewLogin {} {
ArrangeIdleTimeout
# proc gorilla::GetRnFromSelectedNode
lassign [ ::gorilla::get-selected-tree-data RETURN ] node type\
rn
if {$type == "Group" || $type == "Root"} {
set ::gorilla::status [ mc "Please select a login entr\
y first." ]
return
}
gorilla::ViewEntry $rn
} ; # end gorilla::ViewLogin
proc gorilla::ViewEntry {rn} {
# proposed by Richard Ellis, 04.08.2010
# ViewLogin: non modal and everything disabled
# EditLogin: modal dialog with changes saved
ArrangeIdleTimeout
#
# Set up dialog
#
# dervive a unique toplevel name
set seq 0
while { [ winfo exists .view$seq ] } {
incr seq
}
set top .view$seq
if {[info exists ::gorilla::toplevel($top)]} {
wm deiconify $top
} else {
toplevel $top -class "Gorilla"
wm title $top [ mc "View Login" ]
set ::gorilla::toplevel($top) $top
wm protocol $top WM_DELETE_WINDOW "gorilla::DestroyDia\
log $top"
# now create infoframe and populate it
set infoframe [ ttk::frame $top.if -padding {5 5} ]
foreach {child childname} { group Group title Title ur\
l URL
user Username pass Pas\
sword
lpc {Last Password Cha\
nge}
mod {Last Modified}
uuid UUID } {
ttk::label $infoframe.${child}L -text [mc ${ch\
ildname}]:
ttk::label $infoframe.${child}E -width 40 -bac\
kground white
grid $infoframe.${child}L $infoframe.${child}E\
-sticky ew -pady 5
}
ttk::label $infoframe.notesL -text [mc Notes]:
ttk::label $infoframe.notesE -width 40 -background whi\
te -anchor nw -justify left
# automatic word wrap width adjustment of the notes wi\
dget
# based upon window width
bind $infoframe.notesE <Configure> "$infoframe.notesE \
configure -wraplength \\[ expr \\[ winfo width $infoframe.note"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0x43af4a06000,0x38000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651258765312/0x43af4a06000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"sE \\] - 2 \\]"
# the minus 2 in the bind command above is to work aro\
und
# bug # 3049971 in the ttk::label implementation in tk\
8.5.5
# where if the wraplength is equal to the window width\
, or
# one less than the widow width, then certain pixel wi\
dths
# result in no word wrapping at all, see
# https://sourceforge.net/tracker/index.php?func=detai\
l&aid=3049971&group_id=11464&atid=111464
grid $infoframe.notesL $infoframe.notesE -sticky news \
-pady 5
grid columnconfigure $infoframe 1 -weight 1
grid rowconfigure $infoframe $infoframe.notesE -weight\
1
$infoframe.groupE configure -text [ ::gorilla::dbget g\
roup $rn ]
$infoframe.titleE configure -text [ ::gorilla::dbget t\
itle $rn ]
$infoframe.userE configure -text [ ::gorilla::dbget u\
ser $rn ]
$infoframe.notesE configure -text [ ::gorilla::dbget n\
otes $rn ]
$infoframe.passE configure -text [ string repeat "*" \
[ string length [ ::gorilla::dbget password $rn ] ] ]
$infoframe.lpcE configure -text [ ::gorilla::dbget l\
ast-pass-change $rn "<unknown>" ]
$infoframe.modE configure -text [ ::gorilla::dbget l\
ast-modified $rn "<unknown>" ]
$infoframe.urlE configure -text [ ::gorilla::dbget u\
rl $rn ]
$infoframe.uuidE configure -text [ ::gorilla::dbget u\
uid $rn ]
# now create button frame and populate it
set buttonframe [ ttk::frame $top.bf -padding {10 10} \
]
ttk::button $buttonframe.close -text [mc "Close"] -com\
mand "gorilla::DestroyDialog $top"
ttk::button $buttonframe.showpassw -text [mc "Show Pas\
sword"] \\
-command [ list ::gorilla::ViewEntryShowPWHelp\
er $buttonframe.showpassw $infoframe.passE $rn ]
pack $buttonframe.showpassw -side top -fill x
pack $buttonframe.close -side top -fill x -pady 5
grid $infoframe $buttonframe -sticky news
grid columnconfigure $top 0 -weight 1
grid rowconfigure $top 0 -weight 1
}
} ; # end proc gorilla::ViewEntry
#
# --------------------------------------------------------------------\
--
# A helper proc to make the show password button an actual toggle butt\
on
# --------------------------------------------------------------------\
--
#
proc gorilla::ViewEntryShowPWHelper { button entry rn } {
if { [ $button cget -text ] eq [ mc "Show Password" ] } {
$entry configure -text [ ::gorilla::dbget password $rn\
]
$button configure -text [ mc "Hide Password" ]
} else {
$entry configure -text [ string repeat "*" [ string le\
ngth [ ::gorilla::dbget password $rn ] ] ]
$button configure -text [ mc "Show Password" ]
}
} ; # end proc gorilla::ViewEntryShowPWHelper
#
# --------------------------------------------------------------------\
--
# A helper proc to fill ttk::comboxes with password "group" listings
# --------------------------------------------------------------------\
--
#
proc gorilla::fill-combobox-with-grouplist { win } {
# handles filling in the entries in the dropdown list for the \
group
# combo box - done this way for two reasons: 1) the dropdown b\
ox
# will always reflect the current group names; and 2) I am
# contemplating allowing a "limit the list" capability based u\
pon
# the current value of the combo box
# There is a dependency upon the ::gorilla::groupNodes global
# variable
$win configure -values [ lsort [ array names ::gorilla::groupN\
odes ] ]
} ; # end proc gorilla::fill-combobox-with-grouplist
#
# --------------------------------------------------------------------\
--
# A helper proc to obtain type and record number of selected tree entr\
y
# --------------------------------------------------------------------\
--
#
proc gorilla::get-selected-tree-data { {returninfo {}} } {
# Returns the type (group/login) and db record number of the
# selected ttk::treeview entry
#
# If nothing in tree is selected, then what is returned depend\
s upon
# the returninfo variable. If returninfo is empty, return an \
empty
# three element list. If returninfo is the word RETURN, then
# perform a -code return to cause the calling proc to return.
# Otherwise, f"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"eed the contents of returninfo through mc and set the
# gorilla::status variable, and then return a -code return.
if { [ llength [ set sel [ $::gorilla::widgets(tree) selection\
] ] ] == 0 } {
# nothing selected - what we return depends upon
# $returninfo, one of an empty list, a code of return,\
or
# setting of the status variable followed by a code of
# return
switch -- $returninfo {
{} { return [ list {} {} {} ] }
{RETURN} { return -code return }
default { set ::gorilla::status [ mc $returnin\
fo ]
return -code return
}
}
}
set node [ lindex $sel 0 ]
set data [ $::gorilla::widgets(tree) item $node -values ]
return [ list $node {*}[ lrange $data 0 1 ] ]
} ; # end proc ???
#
# --------------------------------------------------------------------\
--
# Launch a browser to the current selected records URL
# --------------------------------------------------------------------\
--
#
proc gorilla::LaunchBrowser { rn } {
# add quotes around the URL value to protect it from most issu\
es
# with {*} expansion
set URL \\"[ dbget url $rn ]\\"
if { $URL eq "" } {
set ::gorilla::status [ mc "The selected login does no\
t contain a URL value." ]
} elseif { $::gorilla::preference(browser-exe) eq "" } {
set ::gorilla::status [ mc "Browser launching is not c\
onfigured. See help." ]
} else {
set param $::gorilla::preference(browser-param)
if { $param ne "" } {
if { [ string match "*%url%*" $param ] } {
set URL [ string map [ list %url% $URL\
] $param ]
} else {
set ::gorilla::status [ mc "Browser pa\
rameter lacks '%url%' string. See help." ]
return
}
}
if { [ catch { exec $::gorilla::preference(browser-exe\
) {*}$URL & } mesg ] } {
tk_dialog .errorurl [ mc "Error" ] "[ mc "Erro\
r launching browser, the OS error message is:" ]\\n\\n$mesg" "" "" [ m\
c "Oh well..." ]
} else {
set ::gorilla::status "[ mc "Launched browser:\
" ] $::gorilla::preference(browser-exe)"
if { $::gorilla::preference(autocopyUserid) } \
{
::gorilla::CopyToClipboard Username $:\
:gorilla::preference(autoclearMultiplier)
}
}
}
} ; # end proc gorilla::LaunchBrowser
#
# --------------------------------------------------------------------\
--
# DB access by name: dbget, dbset, dbunset
# --------------------------------------------------------------------\
--
#
# A namespace ensemble to make retrieval from the gorilla::db object \
more
# straightforward (retrieval of record elements by name instead of num\
ber).
# This also consolidates almost all of the "if record exists" and "if \
field
# exists" checks into one place, simplifying the dialog builder code a\
bove,
# as well as consolidating the date formatting code into one single
# location.
# Example: dbget title
# At the moment there is a dependency upon the global ::gorilla::db
# variable/object. A future change might be to pass in the database o\
bject
# into which to perform the lookup as well.
namespace eval ::gorilla::dbget {
# Generate a set of procs which will be the subcommands of the\
dbget
# ensemble, the procs simply chain over to a generic "get-reco\
rd"
# proc, passing "get-record" the record number value that corr\
esponds
# to the field the subcommand name represents.
# The "get-date-record" proc is the same idea, except it forma\
ts
# returning data as a date instead of returning the integer va\
lue
# representing seconds from epoch.
# As all of the subcommand procs are identical (except for cal\
ling
# get-record vs get-date-record) generate them in a loop inste\
ad of
# enumerating them.
foreach {procname recnum} [ list uuid 1 group 2 title 3 us\
er 4 username 4 \\
notes 5 password 6 url 13 ] \
{
proc $procname { rn {default ""} } [ string map [ list\
%recnum $recnum ] {
get-record %recnum $rn $default
} ]
} ; # end foreach procname,recnum
foreach {procname recnum} [ list create-time 7 last-pass-cha\
nge 8 last-access 9 \\
lifetime 10 last-modified 12 \
] {
proc $procname { rn {default ""} } [ string m"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"ap [ list %recnum $recnum ] {
get-date-record %recnum $rn $default
} ]
} ; # end foreach procname,recnum
namespace export uuid group title user username notes password\
url create-time last-pass-change last-access lifetime last-modified
# get-record -> a helper proc for the ensemble that hides in o\
ne place all
# the complexity of checking for a records/fields existance an\
d returning
# a default value when something does not exist
proc get-record { element recnum default } {
if { ( [ $::gorilla::db existsRecord $recnum ] ) \\
&& ( [ $::gorilla::db existsField $recnum $el\
ement ] ) } {
return [ $::gorilla::db getFieldValue \
$recnum $element ]
}
return $default
} ; # end proc get-record
# get-date-record -> a second helper proc to consolidate forma\
tting of
# date values in one place. This calls the get-record helper,\
and
# then either formats a date value or returns the default if t\
he
# formatting fails. A future modification could be to provide
# custom language specific date formatting.
proc get-date-record { element recnum default } {
set datetime [ get-record $element $recnum $default ]
if { [ catch { set formatted [ clock format $datetime \
\\
-format "%Y-%m-%d %H:%M:%S" ] } ] } {
return $default
} else {
return $formatted
}
} ; # end proc get-date-record
namespace ensemble create
} ; # end namespace eval ::gorilla::dbget
# A namespace ensemble to make setting fields to the gorilla::db objec\
t more
# straightforward (setting of record elements by name instead of numbe\
r).
# At the moment there is a dependency upon the global ::gorilla::db
# variable/object. A future change might be to pass in the database o\
bject
# into which to perform the lookup as well.
namespace eval ::gorilla::dbset {
# Generate a set of procs which will be the subcommands of the\
dbset
# ensemble, the procs simply chain over to the ::gorilla::db o\
bject
# with the proper parameters to set a numeric record number
# corresponding to the record name.
# As all of the subcommand procs are identical (except for sca\
nning
# a date/time vs. assuming it is an integer generate them in a\
pair
# of loops instead of enumerating them.
# note - field #11 is marked as reserved in the pwsafe v3
# documentation
foreach {procname fieldnum} [ list uuid 1 group 2 title 3 \
user 4 username 4 \\
notes 5 password 6 create-ti\
me 7 \\
last-pass-change 8 last-acce\
ss 9 \\
lifetime 10 last-modi\
fied 12 \\
url 13 ] {
proc $procname { rn value } [ string map [ list %field\
num $fieldnum ] {
$::gorilla::db setFieldValue $rn %fieldnum $va\
lue
} ]
} ; # end foreach procname,fieldnum
foreach {procname fieldnum} [ list create-time-string 7 last\
-pass-change-string 8 last-access-string 9 \\
lifetime-string 10 last-modif\
ied-string 12 ] {
proc $procname { rn value } [ string map [ list %field\
num $fieldnum ] {
$::gorilla::db setFieldValue $rn %fieldnum [ c\
lock scan $value -format "%Y-%m-%d %H:%M:%S" ]
} ]
} ; # end foreach procname,fieldnum
namespace export uuid group title user username notes password\
url create-time last-pass-change last-access lifetime last-modified
namespace ensemble create
} ; # end namespace eval ::gorilla::dbset
namespace eval ::gorilla::dbunset {
# Generate a set of procs which will be the subcommands of the\
dbunset
# ensemble, the procs simply chain over to the ::gorilla::db o\
bject
# with the proper parameters to unset a numeric record number
# corresponding to the record name.
# As all of the subcommand procs are identical generate them i\
n a
# loop instead of enumerating them.
# note - field #11 is marked as reserved in the pwsafe v3
# documentation
foreach {procname fieldnum} [ list uuid 1 group 2 title 3 \
user 4 \\
notes 5 password 6 create-ti\
me 7 \\
last-pass-change 8 last-acce\
ss 9 \\
lifetime 10 "
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" last-modified 12 \\
url 13 ] {
proc $procname { rn } [ string map [ list %fieldnum $f\
ieldnum ] {
$::gorilla::db unsetFieldValue $rn %fieldnum
} ]
} ; # end foreach procname,fieldnum
namespace export uuid group title user notes password url crea\
te-time last-pass-change last-access lifetime last-modified
namespace ensemble create
} ; # end namespace eval ::gorilla::dbunset
# --------------------------------------------------------------------\
--
proc ::gorilla::addRufftoHelp { menu } {
# Appends an entry to the menu passed in that will call the Ru\
ff!
# documentation processor to produce source docs.
#
# menu - The menu proc to which to append the ruff command ent\
ry
#
# This needs ruff! and struct::list from tcllib - both should \
be
# installed properly for this option to work
if { ( ! [ catch { package require ruff } ] ) \\
&& ( ! [ catch { package require struct::list } ] ) } {
proc ::gorilla::makeRuffdoc { } {
# document all namespaces, except for tcl/tk s\
ystem namespaces
# (tk, ttk, itcl, etc.)
set nslist [ ::struct::list filterfor z [ name\
space children :: ] \\
{ ! [ regexp {^::(ttk|uuid|msgcat|pkg|tcl|auto\
_mkindex_parser|itcl|sha2|tk|struct|ruff|textutil|cmdline|critcl|activ\
estate|platform)$} $z ] } ]
::ruff::document_namespaces html $nslist -outp\
ut gorilladoc.html -recurse true
}
$menu add command -label [mc "Generate gorilladoc.html\
"] -command ::gorilla::makeRuffdoc
}
} ; # end proc addRufftoHelp
# --------------------------------------------------------------------\
--
#
# --------------------------------------------------------------------\
--
# Drag and Drop for ttk::treeview widget
# --------------------------------------------------------------------\
--
#
namespace eval ::gorilla::dnd {
namespace ensemble create
variable dragging 0 ; # flag to indicate if user i\
s dragging items
variable selectedItems [ list ] ; # list of items (tree node n\
ames) that
# need to be "moved" to perf\
orm the move
# action
variable clickPx -Inf ; # mouse cursor x position at\
start of drag
variable clickPy -Inf ; # mouse cursor y position at\
start of drag
# ------------------------------------------------------------\
----------
namespace export init
proc ::gorilla::dnd::init { tree } {
# Adds drag and drop bindings to the tree widget comma\
nd passed as a
# parameter
#
# tree - name of tree widget onto which to add DND bin\
dings
bind $tree <ButtonPress-1> +[ namespace code "press\
$tree %x %y" ]
bind $tree <Button1-Motion> +[ namespace code "motio\
n $tree %x %y" ]
bind $tree <ButtonRelease-1> +[ namespace code "relea\
se $tree %x %y" ]
bind $tree <<TreeviewSelect>> +[ namespace code "selec\
t $tree" ]
# create - but do not map yet - a label to use as a dr\
ag indicator
ttk::label $tree.dnd
#ruff
# Attaches event bindings to the widget passed as the \
sole parameter for
# handling drag and drop operations. Also creates a s\
ingle label widget
# as a child of the parameter which will be utilized a\
s a drag
# indicator.
#
# tree - the widget name to attach the event bindings.\
The created
# label will be a child of this widget
} ; # end ::gorilla::dnd::init
# ------------------------------------------------------------\
----------
proc ::gorilla::dnd::select { tree } {
variable dragging
variable selectedItems
if { ! $dragging } {
set tempitems [ $tree selection ]
# keep only items that are 1) visible 2) not a\
child of an item
# already in the list
set selectedItems [ list ]
set labeltexts [ list ]
foreach item $tempitems {
# bbox is documented as returning empt\
y list for a not visible item
if { [ llength [ $tree bbox $item ] ] \
== 0 } {
continue
}
# at this point the item is visible, s\
o add its label to the
# labeltexts list
lappend labeltexts [ $tree item $item \
-text ]
# skip if parent item already in selec\
tion list
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" if { [ $tree parent $item ] in $tempit\
ems } {
continue
}
# otherwise remember the item as a mov\
e candidate
lappend selectedItems $item
} ; # end foreach item in tempitems
# put the selected item names into the label w\
idget that is the drag
# feedback indicator
$tree.dnd configure -text [ join $labeltexts "\
\\n" ]
} ; # end if not dragging
#ruff
# Called by event loop when treeview selection changes\
#
# tree - the name of the treeview widget
#
# If a drag is happening then retreives the list of se\
lected treeview
# rows and stores them in a namespace varaible in prep\
raration for a
# drag operation occurring. Also inserts the names of\
the rows in the
# drag label as feedback to a user for what items are \
being dragged.
#
# If a drag is not happening then do nothing.
} ; # end proc ::gorilla::dnd::select
# ------------------------------------------------------------\
----------
proc ::gorilla::dnd::press {tree x y} {
variable clickPx -Inf
variable clickPy -Inf
# can not drag empty area of tree, nor root node of tr\
ee - leave set to
# -Inf in those cases
if { ( [ $tree identify row $x $y ] ni {"" RootNode} )\
} {
set clickPx $x
set clickPy $y
} ; # end if selrow ni ""/RootNode
#ruff
# Called by mouse button press event to record the x,y\
position of the
# mouse cursor in preparation for a possible drag occu\
rring.
#
# tree - the tree widget
# x - x mouse cursor position
# y - y mouse cursor position
} ; # end proc ::gorilla::dnd::press
# ------------------------------------------------------------\
----------
proc ::gorilla::dnd::motion {tree x y} {
variable dragging
variable clickPx
variable clickPy
# the -Inf default for clickP[xy] is the magic which m\
akes this code
# below work. Any x,y position subtracted from -Inf i\
s still -Inf, and
# -Inf is always smaller than zero, so as long as Px,P\
y are -Inf, a drag
# will never initiate
# a small hysteresis of 5 pixels of motion before we d\
ecide that a drag
# is occurring
if { ( ! $dragging )
&& (
( [ expr { abs( $clickPx - $x ) } ] > 5 )
|| ( [ expr { abs( $clickPy - $y ) } ] > 5 )
) } {
set dragging 1
}
if { $dragging } {
# I do not understand why, but configuring -cu\
rsor on the tree did not
# work, yet configuring it on . did work prop\
erly.
. configure -cursor double_arrow
set selrow [ $tree identify row $x $y ]
if { $selrow ne "" } {
$tree selection set $selrow
# the "see" causes edge scrolling to h\
appen automatically
$tree see $selrow
}
# use place to position the drag indicator - t\
he +5 pixels positions
# it just to the right of the cursor bitmap so\
it does not overlap
# with the cursor
place $tree.dnd -x [ expr { $x + 5 } ] -y $y -\
anchor w
} ; # end if dragging
#ruff
# Called by mouse motion event to both decide when to \
initiate a drag
# and to animate the drag as it occurs
#
# tree - the tree widget
# x - new mouse x position
# y - new mouse y position
} ; # end proc ::gorilla::dnd::motion
# ------------------------------------------------------------\
----------
proc ::gorilla::dnd::release {tree x y} {
variable dragging
variable selectedItems
if { $dragging } {
# clean up
set dragging 0
place forget $tree.dnd
set dropIdx [ $tree identify row $x $y ]
# can not drop into empty section of tree
if { $dropIdx ne "" } {
. configure -cursor watch
update idletasks
foreach item $selectedItems {
::gorilla::MoveTreeNode $item \
$dropIdx
}
# if a drop occurs while "find" state \
exists, set "find" state to
# the root of the tree
if { [ info exists ::gorilla::findCurr\
entNode ] } {
set ::gorilla::findCurrentNode\
[lindex [$::gorilla::widgets(tree) children {}] 0]
}
}
. configure -cursor {}
} ; # end if dragging
#ruff
# Called by mouse button release event. If a drag was\
occurring then
# handle actually performing the "move" of the selecte\
d items to the
# d"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"estination location in the tree.
#
# tree - the tree widget
# x - mouse x position of release event
# y - mouse y position of release event
} ; # end proc ::gorilla::dnd::release
} ; # end namespace eval ::gorilla::dnd
proc ::gorilla::conflict-dialog { conflict_list } {
# Creates a toplevel dialog for use in handling merge conflict\
s in a
# straightforward manner
#
# conflict_list - a list of database record ID numbers that ar\
e in
# conflict, each pair of ID numbers is one conflict, first num\
ber is the
# current DB entry, second number is the new merged DB entry
::gorilla::ArrangeIdleTimeout
if { ( [ llength $conflict_list ] % 4 ) != 0 } {
error "conflict_list must have a multiple of four elem\
ents"
}
if { [ llength $conflict_list ] == 0 } {
return
}
# find a unique toplevel name - this linear search is technica\
lly
# inefficient, but unless someone has thousands of these windo\
ws open, the
# actual inefficiency is miniscule. And if someone has thousa\
nds of these
# windows open, they likely have a much larger window manageme\
nt nightmare
# on their hands anyway.
# this code always builds a new toplevel window, and destroys \
the toplevel
# when it completes.
set seq -1
set top .conflict-dialog[ incr seq ]
while { [ winfo exists $top ] } {
set top .conflict-dialog[ incr seq ]
}
# build toplevel and the outer tabset
toplevel $top
wm withdraw $top
wm title $top [ mc "Conflict Merge Tool" ]
# put the toplevel into the "hide these windows upon lock" arr\
ay
set ::gorilla::toplevel($top) $top
# and set things up so if the user closes the window, the entr\
y in the
# "hide" array is removed
wm protocol $top WM_DELETE_WINDOW [ list apply [ list {} "unse\
t -nocomplain ::gorilla::toplevel($top) \\n destroy $top" ] ]
set tabs [ ttk::notebook ${top}.tabs ]
pack $top.tabs -side top -expand true -fill both
ttk::style configure conflict.TLabelframe.Label -background li\
ghtgreen
ttk::style configure conflict.TLabelframe -background li\
ghtgreen
ttk::style configure conflict.TRadiobutton -background li\
ghtgreen
# now fill the tabset with one tab per conflict pair
set seq 0
foreach { current_dbidx merged_dbidx current_tree_node merged_\
tree_node } $conflict_list {
# if either of current or merged dbidx values no longe\
r exist in the db,
# then remove them from the global conflict list and d\
o nothing more
# with them
if { ( ! [ $::gorilla::db existsRecord $current_dbidx \
] ) ||
( ! [ $::gorilla::db existsRecord $merged_dbidx \
] ) } {
::gorilla::remove-from-conflict-list $current_\
dbidx $merged_dbidx $current_tree_node $merged_tree_node
UpdateMenu
continue
}
set container [ ttk::frame ${tabs}.tab[ incr seq ] ]
set ns ::merger::$container
namespace eval $ns { }
# remove the namespace when the container is deleted
trace add command $container delete [ list ::apply [ l\
ist args [ list namespace delete $ns ] ] ]
$tabs insert end $container -sticky news -text [ mc "C\
onflict %d" $seq ] -padding { 2m 2m 2m 0m }
# build out the actual "difference" view widgets withi\
n the container frame
set merge_widgets [ ::gorilla::build-merge-widgets $co\
ntainer $ns $current_dbidx $merged_dbidx ]
# now build a button frame to hold the control buttons\
for this tab
set bf [ ::ttk::frame ${container}.buttonf ]
grid [ ::ttk::button $bf.save -text [ mc "Combine an\
d Save" ] -state disabled ] \\
[ ::ttk::button $bf.reset -text [ mc "Reset Valu\
es" ] ] \\
[ ::ttk::button $bf.ignore -text [ mc "Ignore Con\
flict" ] ] -sticky news -padx {5m 5m}
grid columnconfigure $bf all -weight 1
$bf.save configure -command [ list ${ns}::save-data-\
to-db $current_dbidx $merged_dbidx $current_tree_node $merged_tree_nod\
e $container $tabs ]
$bf.reset configure -command [ list ${ns}::reset-widg\
ets ]
$bf.ignore configure -command [ list ::gorilla::merge-\
destroy $container $tabs ]
set feedback [ ::ttk::label $container.feedback -text \
"" -relief sunken -padding {1m 1m 1m 1m} ]
pack $feedback $bf -side bottom -pady {0m 2m} -fil"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"l x
# Build a custom proc to handle setting the feedback m\
essage plus
# managing an after event to clear the message after t\
wenty seconds
#
# Everything wrapped in "catch" because a user might c\
lose the window,
# thereby destroying it, before the after has fired.
proc ${ns}::feedback {message} [ string map [ list %fe\
edback $feedback %ns $ns ] {
catch { %feedback configure -text $message }
catch { after cancel [ set %ns::feedback_after\
_id ] }
set %ns::feedback_after_id [ after 20000 {catc\
h {%feedback configure -text ""}} ]
} ]
# Build a custom proc to handle changing the state of \
the save button from disabled to normal
# $merge_widgets format {rb1 en1 rb2 en2 item var}
# first extract the radio button shared variable names\
from the list, and setup a write trace to fire save-button-mgr
set rbvars [ list ]
foreach {rb1 en1 rb2 en2 item var} $merge_widgets {
lappend rbvars $var
}
proc ${ns}::save-button-mgr {args} [ string map [ list\
%rbvars $rbvars %savebutton $bf.save ] {
foreach rbvar {%rbvars} {
if { [ set $rbvar ] eq "" } {
# performing the disablment he\
re prevents a "flashing" of the save button
# after it has been enabled on\
ce
%savebutton configure -state d\
isabled
return
}
}
%savebutton configure -state normal
} ]
} ; # end foreach current_dbidx, merged_dbidx in conflict_list
# make sure at least one tab was created, otherwise it means t\
hat there
# was nothing to show
if { [ llength [ $tabs tabs ] ] == 0 } {
destroy $top
# nothing to show means that there should be nothing i\
n the conflict data list as well
set ::gorilla::merge_conflict_data [ list ]
unset ::gorilla::toplevel($top)
UpdateMenu
set ::gorilla::status [ mc "No existing merge conflict\
s were found." ]
return
}
# prevent the window from shrinking spontaneously when the tal\
ler tabs are
# closed
after 2000 [ subst -nocommands {catch {wm minsize $top [ winfo\
width $top ] [ winfo height $top ]} } ]
wm deiconify $top
} ; # end proc ::gorilla::conflict-dialog
# --------------------------------------------------------------------\
--
proc text+vsb {path args} {
# Creates a text plus vertical scrollbar combo widget.
#
# path - the path name to create. This will also be the name \
that is used
# to access the embedded text widget
# args - additional arguments, passed directly to the embedded\
text widget
#
# returns the input $path name
ttk::frame $path
set text [ text ${path}.text {*}$args ]
set vsb [ ttk::scrollbar ${path}.vsb -orient vertical -comman\
d [ list $text yview ] ]
$text configure -yscrollcommand [ list $vsb set ]
grid $text $vsb -sticky news
grid columnconfigure $path 0 -weight 1
grid rowconfigure $path 0 -weight 1
# Now map the frame name to access the internal text widget in\
stead of the
# frame. But first hide the frame name so it does not get des\
troyed as
# part of the remapping
rename $path $path.text.frame
interp alias {} $path {} $text
return $path
} ; # end proc text+vsb
# --------------------------------------------------------------------\
--
proc ::gorilla::build-merge-widgets { container ns current_dbidx merge\
d_dbidx } {
# Builds the actual contents of each conflict tab in the tabse\
t
#
# container - the outer "frame" into which to build the widget\
s
# ns - the namespace assigned to this conflict pair
# current_dbidx - the gorillaDB index value of the existing db\
entry
# merged_dbidx - the gorilalDB index value of the entry that w\
as
# merged into this db and conflicted with an existing entry
set seq -1
foreach {item widget} {group ::ttk::entry
title ::ttk::entry
url ::ttk::entry
username ::ttk::entry
password ::ttk::entry
notes text+vsb } {
set labelframe [ ::ttk::labelframe ${container}.${item\
} -text [ mc [ string totitle $item ] ] ]
# make sure the radiobutton -variable exists
set ${ns}::rb$item ""
set en1 [ $widget ${labelframe}.en1 -width"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" 60 ]
set en2 [ $widget ${labelframe}.en2 -width 60 ]
set rb1 [ ::ttk::radiobutton ${labelframe}.rb1 -text [\
mc Current ] -variable ${ns}::rb$item -value [ list $en1 get ] ]
set rb2 [ ::ttk::radiobutton ${labelframe}.rb2 -text [\
mc Merged ] -variable ${ns}::rb$item -value [ list $en2 get ] ]
# The after idle calls below are necessary because the\
variable attached
# to the radio button is not set set until after this \
button release
# binding has fired. The save-button-mgr proc queries\
the variable
# values to adjust the save button state. An after id\
le firing will
# allow the variable to be set by the radio button bin\
dings before
# save-button-mgr queries the same variable.
bind $rb1 <ButtonRelease-1> +[ list after idle ${ns}::\
save-button-mgr ]
bind $rb2 <ButtonRelease-1> +[ list after idle ${ns}::\
save-button-mgr ]
grid $rb1 $en1 -sticky news
grid $rb2 $en2 -sticky news
grid configure $rb1 -padx {2m 0m} -pady {0m 2m}
grid configure $rb2 -padx {2m 0m} -pady {0m 2m}
grid configure $en1 -padx {0m 2m} -pady {0m 2m}
grid configure $en2 -padx {0m 2m} -pady {0m 2m}
grid columnconfigure $labelframe 1 -weight 1
pack $labelframe -side top -pady {0m 2m} -fill x
# save entry/text names, the db item number, and radio\
button variable
# name for use later in filling the widgets with data \
from the db and managing the save button
lappend entries $rb1 $en1 $rb2 $en2 $item ${ns}::rb$it\
em
# special extras for text widgets and password entry
switch $item {
notes {
$rb1 configure -value [ list $en1 get \
0.0 end-1c ]
$rb2 configure -value [ list $en2 get \
0.0 end-1c ]
# the max/min below constrains the hei\
ght of the text widgets to be
# somewhere between 5 lines and 10 lin\
es depending on the amount of
# data in the database notes field
set height [ max 5 \\
[ llength [ split [ ::goril\
la::dbget $item $current_dbidx ] "\\n" ] ] \\
[ llength [ split [ ::goril\
la::dbget $item $merged_dbidx ] "\\n" ] ] \\
]
$en1 configure -height [ min 10 $heigh\
t ]
$en2 configure -height [ min 10 $heigh\
t ]
# end notes arm
}
password {
$en1 configure -show *
$en2 configure -show *
foreach widget [ list $en1 $en2 ] {
bind $widget <Button-3> +[ lis\
t ::apply { {args} {
foreach win $args {
$win configure\
-show [ expr { [ $win cget -show ] eq "*" ? {} : "*" } ]
}
} } $en1 $en2 ]
} ; # end foreach widget
# end password arm
}
} ; # end switch item
} ; # end foreach item,widget
# finally, now that we know all the widget names, build a rese\
t proc that
# knows how to set the widgets and texts to the current data i\
n the
# database and a save proc that knows how to extract data from\
the entries
# and save to the database
proc ${ns}::reset-widgets {} [ string map [ list %entries $ent\
ries \\
%current_dbid\
x $current_dbidx \\
%merged_dbidx\
$merged_dbidx ] {
::gorilla::ArrangeIdleTimeout
foreach {rb1 en1 rb2 en2 item var} {%entries} {
if { $item ne "notes" } {
$en1 delete 0 end
$en2 delete 0 end
} else {
$en1 delete 0.0 end
$en2 delete 0.0 end
}
$en1 insert end [ ::gorilla::dbget $item %curr\
ent_dbidx ]
$en2 insert end [ ::gorilla::dbget $item %merg\
ed_dbidx ]
if { [ ::gorilla::dbget $item %current_dbidx ]\
eq [ ::gorilla::dbget $item %merged_dbidx ] } {
$rb1 invoke
$rb2 configure -style {}
[ winfo parent $rb1 ] configure -style\
{}
} else {
$rb1 configure -style conflict.TRadiob\
utton
$rb2 configure -style conflict.TRadiob\
utton
[ winfo parent $rb1 ] configure -style\
conflict.TLabelframe
}
}
} ]
# and immediately call the reset proc to initially fill the wi\
dgets
${ns}::reset-widgets
# also build a proc to save the selected entries to the gorill\
a db,
# delete the duplicate conflicting db entry, and close out thi\
s
# tabset
proc ${ns}::save-data-to-db { current_dbidx merged_dbidx curre\
nt_tree_node merged_tree_node container tabs} [ string map [ list %ns \
$ns ] {
::gorilla::ArrangeIdleTimeout
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"# verify that all radio buttons are checked
set missing [ list ]
foreach item {group title url username password notes}\
{
if { ( ! [ info exists %ns::rb$item ] ) || ( [\
set %ns::rb$item ] eq "" ) } {
lappend missing [ mc [ string totitle \
$item ] ]
} ; # end if var does not exist or is empty
} ; # end foreach item
if { [ llength $missing ] > 0 } {
%ns::feedback "[ mc "A selection is required f\
or:" ] [ join $missing ", " ]"
return
} ; # end if llength missing > 0
foreach item {group title url username password notes}\
{
::gorilla::dbset $item $current_dbidx [ {*}[ s\
et %ns::rb$item ] ]
}
$::gorilla::db deleteRecord $merged_dbidx
# if multiple conflicts occur, then a user may have de\
leted the tree
# node in another conflict resolution tab or session -\
prevent user
# visible errors in that case
catch { $::gorilla::widgets(tree) delete $current_tree\
_node }
catch { $::gorilla::widgets(tree) delete $merged_tree_\
node }
::gorilla::AddRecordToTree $current_dbidx
::gorilla::merge-destroy $container $tabs
::gorilla::remove-from-conflict-list $current_dbidx $m\
erged_dbidx $current_tree_node $merged_tree_node
} ] ; # end proc {ns}::save-data-to-db
# return the widget names to our caller so it can make use of \
them
# to adjust the state of the "save" button
return $entries
} ; # end proc ::gorilla::build-merge-widgets
# --------------------------------------------------------------------\
--
proc ::gorilla::merge-destroy { container tabset } {
# Called to destroy a merge widget set. Also checks to see if\
the
# tabset of the toplevel window becomes empty due to the destr\
uction of
# the last contained merge widget set and if so also destroys \
the toplevel
#
# container - the container to destroy
# tabset - the tabset to check for emptiness
::gorilla::ArrangeIdleTimeout
set top [ winfo toplevel $container ]
destroy $container
if { [ llength [ $tabset tabs ] ] == 0 } {
destroy $top
# remove the toplevel name from the "windows to hide u\
pon lock" array
unset ::gorilla::toplevel($top)
# disable the "merge conflict" menu entry
UpdateMenu
}
} ; # end proc ::gorilla::merge-destroy
# --------------------------------------------------------------------\
--
proc ::gorilla::remove-from-conflict-list { current_dbidx merged_dbidx\
current_tree_node merged_tree_node } {
# remove this entry from the global merge conflict dat\
a list
# An O(N) complexity removal for now - thankfully this\
list will be no
# longer than the number of password entries, and so t\
he O(N) complexity
# factor should not be a huge loss.
set temp [ list ]
foreach {a b c d} $::gorilla::merge_conflict_data {
if { ( $a ne $current_dbidx ) &&
( $b ne $merged_dbidx ) &&
( $c ne $current_tree_node ) &&
( $d ne $merged_tree_node ) } {
lappend temp $a $b $c $d
}
}
set ::gorilla::merge_conflict_data $temp
} ; # end proc ::gorilla::remove-from-conflict-list
# ====================================================================\
==
# Lookup for new Version
# ====================================================================\
==
# --------------------------------------------------------------------\
--
proc gorilla::versionIsNewer { server } {
# server - Version downloaded from version.txt on server
# format is: n.n.n(...)
# returns 1 if server version is newer otherwise 0
regexp {Revision: ([0-9.]+)} $::gorilla::Version dummy version
set localList [split $version .]
set serverList [split $server .]
foreach remote $serverList local $localList {
if { $remote > $local } {
return 1
} else {
continue
}
}
return 0
}
# --------------------------------------------------------------------\
--
proc gorilla::versionCheckHttp { url {flag 0} } {
# --------------------------------------------------------------------\
--
# tries to connect to the passed url and returns results
# url - see downloads.txt
# flag - the optional validate flag prevents downloading the whole d\
ata
# if there is a check for th"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"e large binaries
# returns { 0 errortext } || { fileLen http::data }
set result ""
if { [ catch { set token [::http::geturl $url -validate $flag ] } oo\
ps ] } {
# in error case no http::cleanup necessary
return [list 0 "Error: $oops -\\n\\nTried: $url"]
} elseif { [::http::status $token] ne "ok" } {
set result [list 0 "[::http::error $token]"]
} elseif { [string index [::http::ncode $token] 0] != 2 } {
# codes beginning with 2 are ok.
set result [list 0 "[::http::code $token]"]
} else {
# get file length and http::data
set result [list [dict get [http::meta $token] Content-Length] [\
http::data $token]]
}
http::cleanup $token
return $result
}
# --------------------------------------------------------------------\
--
proc gorilla::versionGet { platform } {
# /sources/downloads.txt contains download sites
# version.txt on the server contains version information
#
# platform - The user's actual Tk windowingsystem
# returns list: version url || 0 errormessage
set fh [open $::gorilla::Dir/downloads.txt r]
set data [read $fh]
close $fh
lassign $data mirrors
#
# connect to mirrors
#
foreach mirror $mirrors {
set url $mirror/version.txt
set error 0
lassign [gorilla::versionCheckHttp $url] fileLen data
if { $fileLen == 0 } { set error 1 }
} ;# end foreach mirror
if { $error } { return [list 0 "Last mirror: $url\\n\\n$data"] }
#
# extract version data
#
set version [dict get $data $platform version]
set exe [dict get $data $platform executable $::tcl_platform(machine\
)]
return [list $version $mirror/$exe]
} ;# end proc gorilla::versionGet
# --------------------------------------------------------------------\
--
proc gorilla::versionCallback { w token total current } {
$w configure -value $current
}
# --------------------------------------------------------------------\
--
proc gorilla::versionDownload { url } {
# url - url of new version
#
# define target location
#
if { $::gorilla::preference(backupPath) eq "" } {
if {[tk windowingsystem] == "aqua"} {
set backupPath "~/Downloads"
} else {
set backupPath "~"
}
} else {
# place backup file into user''s preference directory
set backupPath $::gorilla::preference(backupPath)
if { ! [file isdirectory $backupPath] } {
gorilla::ErrorPopup [mc "No valid directory. -\
\\nPlease define a valid backup directory\\nin the Preferences menu."\
]
return DIR_ERROR
}
}
set filename [ file join $backupPath [file tail $url] ]
#
# check the connection
#
lassign [gorilla::versionCheckHttp $url 1] fileLen message
if { $fileLen == 0 } {
gorilla::ErrorPopup [mc "Http Error"] $message
return
}
#
# prepare display
#
ttk::frame .status-dl -relief sunken
ttk::progressbar .status-dl.pb -mode determinate -orient horizontal \
\\
-value 0 -maximum $fileLen
ttk::label .status-dl.lb -text [mc "Downloading %s: " $url ] -relief\
sunken
grid .status-dl.lb .status-dl.pb -sticky news
grid columnconfigure .status-dl 1 -weight 1
grid .status-dl - -sticky news
#
# start download
#
set out [open $filename w]
if { [catch {set download [::http::geturl $url -channel $out \\
-progress [ list gorilla::versionCallback .status-dl.pb ] \
-blocksize 4096]} oops] } {
gorilla::ErrorPopup "[mc "Http error"]" $oops
} else {
# go on and check file size
if { [file size $filename] != $fileLen } {
gorilla::ErrorPopup "[mc "Download Error"]" "[mc "Downloaded Fil\
e has wrong size."]"
} else {
tk_messageBox -title [mc "Download finished"] \\
-message [mc "The new version was successfully downloaded as\\\
n%s." [ file nativename $filename ] ] \\
-icon info -type ok
}
}
http::cleanup $download
destroy .status-dl
close $out
return
} ;# end proc gorilla::versionDownload
# --------------------------------------------------------------------\
--
proc gorilla::versionLookup"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
" {} {
# Look if there is a new version on the mirrors defined in
# /source/downloads.txt. The version data are lying in the file
# version.txt on the mirrors
load-package http
switch [tk windowingsystem] {
x11 { set platform Linux }
win32 { set platform Windows }
aqua { set platform MacOSX }
default { set platform unknown }
}
if { $platform eq "unknown" } {
gorilla::ErrorPopup [mc Error] [mc "Unknown windowing system"]
return
}
lassign [gorilla::versionGet $platform] version url
if { $version == 0 } {
gorilla::ErrorPopup [mc "Connection error"] $url
return
}
if { ! [gorilla::versionIsNewer $version] } {
set message [mc "No new version available"]
tk_messageBox -message $message -icon info -type ok
return
}
set message "[ mc "You are running version %s." [ regexp {Revision: \
([0-9.]+)} $::gorilla::Version dummy actual ; set actual ] ]\\n\\n"
append message "[mc "There is a new version %s for %s." $version $pl\
atform]"
append message "\\n\\n[mc "Shall I download the new version?"]"
# Tk font default style is ugly bold
option add *Dialog.msg.font {Arial 11}
set answer [tk_dialog .download [mc "New version available"] $messag\
e "" 0 [mc "Executable"] [mc "Sourcecode"] [mc "Cancel"] ]
switch $answer {
0 { gorilla::versionDownload $url }
1 { gorilla::versionDownload [regsub [file tail $url] $ur\
l gorilla-$version.zip] }
default { return }
}
return
} ;# end proc gorilla::versionLookup
#
# --------------------------------------------------------------------\
--
# Init
# --------------------------------------------------------------------\
--
#
if {[tk windowingsystem] == "aqua"} {
# we have to delete the psn_nr in argv
if {[string first "-psn" [lindex $argv 0]] == 0} { set argv [l\
range $argv 1 end]}
set ::gorilla::MacShowPreferences {
proc ::tk::mac::ShowPreferences {} {
gorilla::PreferencesDialog
}
}
proc ::tk::mac::Quit {} {
gorilla::Exit
}
proc tk::mac::ShowHelp {} {
gorilla::Help
}
}
proc usage {} {
puts stdout "usage: $::argv0 \\[Options\\] \\[<database>\\]"
puts stdout " Options:"
puts stdout " --rc <name> Use <name> as configuration file \
(not the Registry)."
puts stdout " --norc Do not use a configuration file (\
or the Registry)."
puts stdout " <database> Open <database> on startup."
}
if {$::gorilla::init == 0} {
if {[string first "-norc" $argv0] != -1} {
set ::gorilla::preference(norc) 1
}
set haveDatabaseToLoad 0
set databaseToLoad ""
array set ::gorilla::DEBUG {
TCLTEST 0 \\
TEST 0 \\
CSVEXPORT 0 \\
CSVIMPORT 0 \\
}
# set argc [llength $argv] ;# obsolete
for {set i 0} {$i < $argc} {incr i} {
switch -- [lindex $argv $i] {
--sourcedoc {
# Need ruff! and struct::list \
from tcllib -
# Ruff! is installed under /utilities/ruff
lappend auto_path "$::gorilla::Dir/../utilities/ruff"
foreach pkg { ruff struct::lis\
t } {
if { [ catch { package\
require $pkg } ] } {
puts stderr "C\
ould not load package $pkg, aborting documentation processing."
exit
}
} ; # end foreach pkg
# document all namespaces, except for tcl/tk system namespac\
es
# (tk, ttk, itcl, etc.)
set nslist [ ::struct::list filterfor z [ namespace children\
:: ] \\
{ ! [ regexp {^::(ttk|uuid|msgcat|pkg|tcl|auto_mkindex_parse\
r|itcl|sha2|tk|struct|ruff|textutil|cmdline|critcl|activestate|platfor\
m)$} $z ] } ]
if { [ catch { ::ruff::document_namespaces html $nslist -out\
put $::gorilla::Dir/../utilities/gorilladoc.html -recurse true } oops \
] } {
puts stderr "Could not generate documentation - $oops."
exit
}
# cleanup after ourselves
unset -nocomplain nslist pkg z\
puts "Documentation file $::gorilla::Dir/../utilities/gorill\
adoc.html has been successfully generated."
exit
}
--norc -
-norc {
set ::gorilla::preference(norc) 1
}
"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 GIO fd 3 read 1859 bytes
" --rc -
-rc {
if {$i+1 >= $argc} {
puts stderr "Error: [lindex $a\
rgv $i] needs a parameter."
exit 1
}
incr i
set ::gorilla::preference(rc) [lindex \
$argv $i]
}
--help -
-help {
usage
exit 0
}
--chkmsgcat -
-chkmsgcat {
# Redefine mcunknown to dump to stderr\
unknown msgcat translations
# in a format almost suitable for addi\
ng to the msgcat files. The
# one difference is that each line is \
prefixed with the locale ID to
# which it belongs. Note, no effort i\
s made to filter duplicates.
# sort and uniq will already handle th\
at task externally to
# PWGorilla.
#
# I realized this would work after rea\
ding the msgcat(n) man page.
proc ::msgcat::mcunknown {locale src_s\
tring} {
puts stderr "$locale \\"[ string map\
[ list "\\n" "\\\\n" ] $src_string ]\\" \\"\\" \\\\"
return $src_string
}
}
--tcltest {
# TCLTEST 1 and TEST 1:
# skip the OpenDatabase dialog and loa\
d testdb.psafe3
array set ::gorilla::DEBUG { TCLTEST 1\
TEST 1 }
}
--test {
array set ::gorilla::DEBUG { TEST 1 }
}
default {
if {$haveDatabaseToLoad} {
usage
exit 0
}
set haveDatabaseToLoad 1
set databaseToLoad [lindex $argv $i]
}
}
} ; unset i
}
gorilla::Init
gorilla::LoadPreferences
gorilla::InitGui
set ::gorilla::init 1
if {$haveDatabaseToLoad} {
set action [gorilla::Open $databaseToLoad]
} else {
set action [gorilla::Open]
}
if {$action == "Cancel"} {
destroy .
exit
} ; unset action haveDatabaseToLoad databaseToLoad
if { [tk windowingsystem] eq "aqua" } {
eval $gorilla::MacShowPreferences
}
wm deiconify .
raise .
update
set ::gorilla::status [mc "Welcome to the Password Gorilla."]
if { $::gorilla::DEBUG(TCLTEST) } {
set argv ""
source [file join $::gorilla::Dir .. unit-tests RunAllTests.tc\
l]
}
"
58849 wish8.5 RET read 1859/0x743
58849 wish8.5 CALL read(3,0x43aea1d5028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32d758,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d708,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32bac8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0x43ad9d0e000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap -1 errno 12 Cannot allocate memory
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653330530304/0x43b701d0000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652043862016/0x43b236c0000
58849 wish8.5 CALL kbind(0x7b2fec32d248,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cfe8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653337305088/0x43b70846000
58849 wish8.5 CALL kbind(0x7b2fec32d248,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d1f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d188,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x9000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651471921152/0x43b0154e000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650873769984/0x43addadd000
58849 wish8.5 CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651318001664/0x43af8284000
58849 wish8.5 CALL kbind(0x7b2fec32d1d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d068,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d248,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cf68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d218,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d1e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32d1b8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32b958,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ca48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ca48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ca48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32c938,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cbc8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cbc8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __realpath(0x7b2fec32c920,0x7b2fec32c010)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL open(0x43b3a8a53c0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tclIndex"
58849 wish8.5 RET open -1 errno 2 No such file or directory
58849 wish8.5 CALL kbind(0x7b2fec32ca08,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32c9d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32c9d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32c9d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ca08,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __realpath(0x7b2fec32c8c0,0x7b2fec32bfb0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32c980,0x7b2fec32c070)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL open(0x43b3a891e10,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/tclIndex"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL kbind(0x7b2fec32cac8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL lseek(0,0,SEEK_CUR)
58849 wish8.5 RET lseek 732/0x2dc
58849 wish8.5 CALL fcntl(0,F_ISATTY)
58849 wish8.5 RET fcntl 1
58849 wish8.5 CALL ioctl(0,TIOCGETA,0x43b3a8868d0)
58849 wish8.5 RET ioctl 0
58849 wish8.5 CALL lseek(1,0,SEEK_CUR)
58849 wish8.5 RET lseek 732/0x2dc
58849 wish8.5 CALL fcntl(1,F_ISATTY)
58849 wish8.5 RET fcntl 1
58849 wish8.5 CALL ioctl(1,TIOCGETA,0x43b3a886f90)
58849 wish8.5 RET ioctl 0
58849 wish8.5 CALL kbind(0x7b2fec32cac8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32ca88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cad8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653214482432/0x43b69324000
58849 wish8.5 CALL read(3,0x43b69324028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"# Tcl autoload index file, version 2.0
# This file is generated by the "auto_mkindex" command
# and sourced to set up indexing information for one or
# more commands. Typically each line is a command that
# sets an element in the auto_index array, where the
# element name is the name of a command and the value is
# a script that loads the command.
set auto_index(auto_reset) [list source [file join $dir auto.tcl]]
set auto_index(tcl_findLibrary) [list source [file join $dir auto.tcl]\
]
set auto_index(auto_mkindex) [list source [file join $dir auto.tcl]]
set auto_index(auto_mkindex_old) [list source [file join $dir auto.tcl\
]]
set auto_index(::auto_mkindex_parser::init) [list source [file join $d\
ir auto.tcl]]
set auto_index(::auto_mkindex_parser::cleanup) [list source [file join\
$dir auto.tcl]]
set auto_index(::auto_mkindex_parser::mkindex) [list source [file join\
$dir auto.tcl]]
set auto_index(::auto_mkindex_parser::hook) [list source [file join $d\
ir auto.tcl]]
set auto_index(::auto_mkindex_parser::slavehook) [list source [file jo\
in $dir auto.tcl]]
set auto_index(::auto_mkindex_parser::command) [list source [file join\
$dir auto.tcl]]
set auto_index(::auto_mkindex_parser::commandInit) [list source [file \
join $dir auto.tcl]]
set auto_index(::auto_mkindex_parser::fullname) [list source [file joi\
n $dir auto.tcl]]
set auto_index(history) [list source [file join $dir history.tcl]]
set auto_index(::tcl::HistAdd) [list source [file join $dir history.tc\
l]]
set auto_index(::tcl::HistKeep) [list source [file join $dir history.t\
cl]]
set auto_index(::tcl::HistClear) [list source [file join $dir history.\
tcl]]
set auto_index(::tcl::HistInfo) [list source [file join $dir history.t\
cl]]
set auto_index(::tcl::HistRedo) [list source [file join $dir history.t\
cl]]
set auto_index(::tcl::HistIndex) [list source [file join $dir history.\
tcl]]
set auto_index(::tcl::HistEvent) [list source [file join $dir history.\
tcl]]
set auto_index(::tcl::HistChange) [list source [file join $dir history\
.tcl]]
set auto_index(pkg_mkIndex) [list source [file join $dir package.tcl]]
set auto_index(tclPkgSetup) [list source [file join $dir package.tcl]]
set auto_index(tclPkgUnknown) [list source [file join $dir package.tcl\
]]
set auto_index(::tcl::MacOSXPkgUnknown) [list source [file join $dir p\
ackage.tcl]]
set auto_index(::pkg::create) [list source [file join $dir package.tcl\
]]
set auto_index(parray) [list source [file join $dir parray.tcl]]
set auto_index(::safe::InterpStatics) [list source [file join $dir saf\
e.tcl]]
set auto_index(::safe::InterpNested) [list source [file join $dir safe\
.tcl]]
set auto_index(::safe::interpCreate) [list source [file join $dir safe\
.tcl]]
set auto_index(::safe::interpInit) [list source [file join $dir safe.t\
cl]]
set auto_index(::safe::CheckInterp) [list source [file join $dir safe.\
tcl]]
set auto_index(::safe::interpConfigure) [list source [file join $dir s\
afe.tcl]]
set auto_index(::safe::InterpCreate) [list source [file join $dir safe\
.tcl]]
set auto_index(::safe::InterpSetConfig) [list source [file join $dir s\
afe.tcl]]
set auto_index(::safe::interpFindInAccessPath) [list source [file join\
$dir safe.tcl]]
set auto_index(::safe::interpAddToAccessPath) [list source [file join \
$dir safe.tcl]]
set auto_index(::safe::InterpInit) [list source [file join $dir safe.t\
cl]]
set auto_index(::safe::AddSubDirs) [list source [file join $dir safe.t\
cl]]
set auto_index(::safe::interpDelete) [list source [file join $dir safe\
.tcl]]
set auto_index(::safe::setLogCmd) [list source [file join $dir safe.tc\
l]]
set auto_index(::safe::SyncAccessPath) [list source [file join $dir sa\
fe.tcl]]
set auto_index(::safe::InterpStateName) [list source [file join $dir s\
afe.tcl]]
set auto_index(::safe::IsInterp) [list source [file join $dir safe.tcl\
]]
set auto_index(::safe::PathToken) [list source [file join $dir safe.tc\
l]]
set auto_index(::safe::PathListName) [list source [file join $dir safe\
.tcl]]
set auto_index(::safe::VirtualPathListName) [list source [file join $d\
ir safe.tcl]]
set auto_index(::safe::PathNumberName) [list source [file join $dir sa\
fe.tcl]]
set auto_index(::sa"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653227843584/0x43b69fe2000
58849 wish8.5 CALL read(3,0x43b69324028,0x1000)
58849 wish8.5 GIO fd 3 read 2283 bytes
"fe::StaticsOkName) [list source [file join $dir safe.tcl]]
set auto_index(::safe::NestedOkName) [list source [file join $dir safe\
.tcl]]
set auto_index(::safe::Toplevel) [list source [file join $dir safe.tcl\
]]
set auto_index(::safe::Set) [list source [file join $dir safe.tcl]]
set auto_index(::safe::Lappend) [list source [file join $dir safe.tcl]\
]
set auto_index(::safe::Unset) [list source [file join $dir safe.tcl]]
set auto_index(::safe::Exists) [list source [file join $dir safe.tcl]]
set auto_index(::safe::GetAccessPath) [list source [file join $dir saf\
e.tcl]]
set auto_index(::safe::StaticsOk) [list source [file join $dir safe.tc\
l]]
set auto_index(::safe::NestedOk) [list source [file join $dir safe.tcl\
]]
set auto_index(::safe::DeleteHookName) [list source [file join $dir sa\
fe.tcl]]
set auto_index(::safe::TranslatePath) [list source [file join $dir saf\
e.tcl]]
set auto_index(::safe::Log) [list source [file join $dir safe.tcl]]
set auto_index(::safe::CheckFileName) [list source [file join $dir saf\
e.tcl]]
set auto_index(::safe::AliasSource) [list source [file join $dir safe.\
tcl]]
set auto_index(::safe::AliasLoad) [list source [file join $dir safe.tc\
l]]
set auto_index(::safe::FileInAccessPath) [list source [file join $dir \
safe.tcl]]
set auto_index(::safe::Subset) [list source [file join $dir safe.tcl]]
set auto_index(::safe::AliasSubset) [list source [file join $dir safe.\
tcl]]
set auto_index(::safe::AliasEncoding) [list source [file join $dir saf\
e.tcl]]
set auto_index(tcl_wordBreakAfter) [list source [file join $dir word.t\
cl]]
set auto_index(tcl_wordBreakBefore) [list source [file join $dir word.\
tcl]]
set auto_index(tcl_endOfWord) [list source [file join $dir word.tcl]]
set auto_index(tcl_startOfNextWord) [list source [file join $dir word.\
tcl]]
set auto_index(tcl_startOfPreviousWord) [list source [file join $dir w\
ord.tcl]]
set auto_index(::tcl::tm::add) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::remove) [list source [file join $dir tm.tcl]\
]
set auto_index(::tcl::tm::list) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::UnknownHandler) [list source [file join $dir\
tm.tcl]]
set auto_index(::tcl::tm::roots) [list source [file join $dir tm.tcl]]
set auto_index(::tcl::tm::path) [list source [file join $dir tm.tcl]]
"
58849 wish8.5 RET read 2283/0x8eb
58849 wish8.5 CALL read(3,0x43b69324028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL kbind(0x7b2fec32c568,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653848682496/0x43b8eff6000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650988158976/0x43ae47f4000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650384707584/0x43ac0875000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653922074624/0x43b935f4000
58849 wish8.5 CALL kbind(0x7b2fec32cae8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32ca50,0x7b2fec32c140)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43b3a8960f0,0x7b2fec32cc10)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/tm.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192591, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796168, atime=1731660490<"Nov 15 08:48:10 2024">.561459708, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=11734, blocks=24, blksize=16384, flags=0x0, gen=0xdba8ef7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43b3a8960f0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/tm.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b69fe2028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"# -*- tcl -*-
#
# Searching for Tcl Modules. Defines a procedure, declares it as the
# primary command for finding packages, however also uses the former
# 'package unknown' command as a fallback.
#
# Locates all possible packages in a directory via a less restricted
# glob. The targeted directory is derived from the name of the
# requested package. I.e. the TM scan will look only at directories
# which can contain the requested package. It will register all
# packages it found in the directory so that future requests have a
# higher chance of being fulfilled by the ifneeded database without
# having to come to us again.
#
# We do not remember where we have been and simply rescan targeted
# directories when invoked again. The reasoning is this:
#
# - The only way we get back to the same directory is if someone is
# trying to [package require] something that wasn't there on the
# first scan.
#
# Either
# 1) It is there now: If we rescan, you get it; if not you don't.
#
# This covers the possibility that the application asked for a
# package late, and the package was actually added to the
# installation after the application was started. It shoukld
# still be able to find it.
#
# 2) It still is not there: Either way, you don't get it, but the
# rescan takes time. This is however an error case and we dont't
# care that much about it
#
# 3) It was there the first time; but for some reason a "package
# forget" has been run, and "package" doesn't know about it
# anymore.
#
# This can be an indication that the application wishes to reload
# some functionality. And should work as well.
#
# Note that this also strikes a balance between doing a glob targeting
# a single package, and thus most likely requiring multiple globs of
# the same directory when the application is asking for many packages,
# and trying to glob for _everything_ in all subdirectories when
# looking for a package, which comes with a heavy startup cost.
#
# We scan for regular packages only if no satisfying module was found.
namespace eval ::tcl::tm {
# Default paths. None yet.
variable paths {}
# The regex pattern a file name has to match to make it a Tcl Modu\
le.
set pkgpattern {^([_[:alpha:]][:_[:alnum:]]*)-([[:digit:]].*)[.]tm\
$}
# Export the public API
namespace export path
namespace ensemble create -command path -subcommands {add remove l\
ist}
}
# ::tcl::tm::path implementations --
#
# Public API to the module path. See specification.
#
# Arguments
# cmd - The subcommand to execute
# args - The paths to add/remove. Must not appear querying the
# path with 'list'.
#
# Results
# No result for subcommands 'add' and 'remove'. A list of paths
# for 'list'.
#
# Sideeffects
# The subcommands 'add' and 'remove' manipulate the list of
# paths to search for Tcl Modules. The subcommand 'list' has no
# sideeffects.
proc ::tcl::tm::add {path args} {
# PART OF THE ::tcl::tm::path ENSEMBLE
#
# The path is added at the head to the list of module paths.
#
# The command enforces the restriction that no path may be an
# ancestor directory of any other path on the list. If the new
# path violates this restriction an error wil be raised.
#
# If the path is already present as is no error will be raised and
# no action will be taken.
variable paths
# We use a copy of the path as source during validation, and
# extend it as well. Because we not only have to detect if the new
# paths are bogus with respect to the existing paths, but also
# between themselves. Otherwise we can still add bogus paths, by
# specifying them in a single call. This makes the use of the new
# paths simpler as well, a trivial assignment of the collected
# paths to the official state var.
set newpaths $paths
foreach p [linsert $args 0 $path] {
if {$p in $newpaths} {
# Ignore a path already on the list.
continue
}
# Search for paths which are subdirectories of the new one. If
# there are any then the new path violat"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43b69fe2028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"es the restriction
# about ancestors.
set pos [lsearch -glob $newpaths ${p}/*]
# Cannot use "in", we need the position for the message.
if {$pos >= 0} {
return -code error \\
"$p is ancestor of existing module path [lindex $newpa\
ths $pos]."
}
# Now look for existing paths which are ancestors of the new
# one. This reverse question forces us to loop over the
# existing paths, as each element is the pattern, not the new
# path :(
foreach ep $newpaths {
if {[string match ${ep}/* $p]} {
return -code error \\
"$p is subdirectory of existing module path $ep."
}
}
set newpaths [linsert $newpaths 0 $p]
}
# The validation of the input is complete and successful, and
# everything in newpaths is either an old path, or added. We can
# now extend the official list of paths, a simple assignment is
# sufficient.
set paths $newpaths
return
}
proc ::tcl::tm::remove {path args} {
# PART OF THE ::tcl::tm::path ENSEMBLE
#
# Removes the path from the list of module paths. The command is
# silently ignored if the path is not on the list.
variable paths
foreach p [linsert $args 0 $path] {
set pos [lsearch -exact $paths $p]
if {$pos >= 0} {
set paths [lreplace $paths $pos $pos]
}
}
}
proc ::tcl::tm::list {} {
# PART OF THE ::tcl::tm::path ENSEMBLE
variable paths
return $paths
}
# ::tcl::tm::UnknownHandler --
#
# Unknown handler for Tcl Modules, i.e. packages in module form.
#
# Arguments
# original - Original [package unknown] procedure.
# name - Name of desired package.
# version - Version of desired package. Can be the
# empty string.
# exact - Either -exact or ommitted.
#
# Name, version, and exact are used to determine
# satisfaction. The original is called iff no satisfaction was
# achieved. The name is also used to compute the directory to
# target in the search.
#
# Results
# None.
#
# Sideeffects
# May populate the package ifneeded database with additional
# provide scripts.
proc ::tcl::tm::UnknownHandler {original name args} {
# Import the list of paths to search for packages in module form.
# Import the pattern used to check package names in detail.
variable paths
variable pkgpattern
# Without paths to search we can do nothing. (Except falling back
# to the regular search).
if {[llength $paths]} {
set pkgpath [string map {:: /} $name]
set pkgroot [file dirname $pkgpath]
if {$pkgroot eq "."} {
set pkgroot ""
}
# We don't remember a copy of the paths while looping. Tcl
# Modules are unable to change the list while we are searching
# for them. This also simplifies the loop, as we cannot get
# additional directories while iterating over the list. A
# simple foreach is sufficient.
set satisfied 0
foreach path $paths {
if {![interp issafe] && ![file exists $path]} {
continue
}
set currentsearchpath [file join $path $pkgroot]
if {![interp issafe] && ![file exists $currentsearchpath]}\
{
continue
}
set strip [llength [file split $path]]
# We can't use glob in safe interps, so enclose the follow\
ing
# in a catch statement, where we get the module files out
# of the subdirectories. In other words, Tcl Modules are
# not-functional in such an interpreter. This is the same
# as for the command "tclPkgUnknown", i.e. the search for
# regular packages.
catch {
# We always look for _all_ possible modules in the cur\
rent
# path, to get the max result out of the glob.
foreach file [glob -nocomplain -directory $currentsear\
chpath *.tm] {
set pkgfilename [join [lrange [file split $file] $\
strip end] ::]
if {![regexp -- $pkgpattern $pkgfilename --> pkgna\
me pkgversion]} {
# Ignore everything not matching our pattern
# for package names.
continue
}
if {[catch {package vcompare $pkgversion 0}]} {
# Ignore everything where the version part is
# not acceptable to "package vcompare".
continue
}
if {[package ifneeded $pkgname $pkgversion] ne {}}\
{
# There'"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43b69fe2028,0x1000)
58849 wish8.5 GIO fd 3 read 3542 bytes
"s already a provide script registered for
# this version of this package. Since all uni\
ts of
# code claiming to be the same version of the \
same
# package ought to be identical, just stick wi\
th
# the one we already have.
continue
}
# We have found a candidate, generate a "provide
# script" for it, and remember it. Note that we
# are using ::list to do this; locally [list]
# means something else without the namespace
# specifier.
# NOTE. When making changes to the format of the
# provide command generated below CHECK that the
# 'LOCATE' procedure in core file
# 'platform/shell.tcl' still understands it, or,
# if not, update its implementation appropriately.
#
# Right now LOCATE's implementation assumes that
# the path of the package file is the last element
# in the list.
package ifneeded $pkgname $pkgversion \\
"[::list package provide $pkgname $pkgversion]\
;[::list source -encoding utf-8 $file]"
# We abort in this unknown handler only if we got
# a satisfying candidate for the requested
# package. Otherwise we still have to fallback to
# the regular package search to complete the
# processing.
if {($pkgname eq $name)
&& [package vsatisfies $pkgversion {*}$arg\
s]} {
set satisfied 1
# We do not abort the loop, and keep adding
# provide scripts for every candidate in the
# directory, just remember to not fall back to
# the regular search anymore.
}
}
}
}
if {$satisfied} {
return
}
}
# Fallback to previous command, if existing. See comment above
# about ::list...
if {[llength $original]} {
uplevel 1 $original [::linsert $args 0 $name]
}
}
# ::tcl::tm::Defaults --
#
# Determines the default search paths.
#
# Arguments
# None
#
# Results
# None.
#
# Sideeffects
# May add paths to the list of defaults.
proc ::tcl::tm::Defaults {} {
global env tcl_platform
lassign [split [info tclversion] .] major minor
set exe [file normalize [info nameofexecutable]]
# Note that we're using [::list], not [list] because [list] means
# something other than [::list] in this namespace.
# OpenBSD layout
add [file join [info library] modules] \\
[file join [lindex $::tcl_pkgPath 0] modules 85]
if {$tcl_platform(platform) eq "windows"} {
set sep ";"
} else {
set sep ":"
}
for {set n $minor} {$n >= 0} {incr n -1} {
foreach ev [::list \\
TCL${major}.${n}_TM_PATH \\
TCL${major}_${n}_TM_PATH \\
] {
if {![info exists env($ev)]} continue
foreach p [split $env($ev) $sep] {
path add $p
}
}
}
return
}
# ::tcl::tm::roots --
#
# Public API to the module path. See specification.
#
# Arguments
# paths - List of 'root' paths to derive search paths from.
#
# Results
# No result.
#
# Sideeffects
# Calls 'path add' to paths to the list of module search paths.
proc ::tcl::tm::roots {paths} {
lassign [split [package present Tcl] .] major minor
foreach pa $paths {
set p [file join $pa tcl$major]
for {set n $minor} {$n >= 0} {incr n -1} {
set px [file join $p ${major}.${n}]
if {![interp issafe]} { set px [file normalize $px] }
path add $px
}
set px [file join $p site-tcl]
if {![interp issafe]} { set px [file normalize $px] }
path add $px
}
return
}
# Initialization. Set up the default paths, then insert the new
# handler into the chain.
if {![interp issafe]} { ::tcl::tm::Defaults }
"
58849 wish8.5 RET read 3542/0xdd6
58849 wish8.5 CALL mmap(0x43af8287000,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651318013952/0x43af8287000
58849 wish8.5 CALL read(3,0x43b69fe2028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32c428,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32c428,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0x43ad9cfa000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650808877056/0x43ad9cfa000
58849 wish8.5 CALL __realpath(0x7b2fec32bfb0,0x7b2fec32b6a0)
58849 wish8.5 NAMI "/usr/local/bin"
58849 wish8.5 NAMI "/usr/local/bin"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL kbind(0x7b2fec32c058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32bdf8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32c278,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __realpath(0x7b2fec32c870,0x7b2fec32bf60)
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules"
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL access(0x43ad9cf5d20,0<F_OK>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules/85"
58849 wish8.5 RET access 0
58849 wish8.5 CALL access(0x43ad9cf5d20,0<F_OK>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules/85"
58849 wish8.5 RET access 0
58849 wish8.5 CALL kbind(0x7b2fec32c808,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32c408,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL stat(0x7b2fec32c640,0x7b2fec32c5b0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules/85/"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192809, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796855, atime=1731660490<"Nov 15 08:48:10 2024">.561459708, mtime=1731074791<"Nov 8 14:06:31 2024">.445977738, ctime=1731074791<"Nov 8 14:06:31 2024">.445977738, size=1536, blocks=4, blksize=16384, flags=0x0, gen=0x68245ba4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL kbind(0x7b2fec32c408,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL open(0x7b2fec32c640,0x30000<O_RDONLY|O_CLOEXEC|O_DIRECTORY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules/85/"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32c3f8)
58849 wish8.5 STRU struct stat { dev=1031, ino=1192809, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796855, atime=1731660490<"Nov 15 08:48:10 2024">.561459708, mtime=1731074791<"Nov 8 14:06:31 2024">.445977738, ctime=1731074791<"Nov 8 14:06:31 2024">.445977738, size=1536, blocks=4, blksize=16384, flags=0x0, gen=0x68245ba4 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL mmap(0,0x10000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653252304896/0x43b6b736000
58849 wish8.5 CALL kbind(0x7b2fec32c408,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 2528/0x9e0
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 0
58849 wish8.5 CALL kbind(0x7b2fec32c408,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32c808,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4649704308736/0x43a97f94000
58849 wish8.5 CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650564251648/0x43acb3af000
58849 wish8.5 CALL munmap(0x43acb3c2000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3da000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL kbind(0x7b2fec32cbd8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL munmap(0x43acb3bd000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3b1000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3c9000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3dd000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3ec000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3bc000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3d8000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL munmap(0x43acb3e8000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL __realpath(0x7b2fec32c870,0x7b2fec32bf60)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL access(0x43ad9cfe930,0<F_OK>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/modules"
58849 wish8.5 RET access 0
58849 wish8.5 CALL access(0x43ad9cfe930,0<F_OK>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/modules"
58849 wish8.5 RET access 0
58849 wish8.5 CALL stat(0x7b2fec32c640,0x7b2fec32c5b0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/modules/"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192582, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4794959, atime=1731660490<"Nov 15 08:48:10 2024">.561459708, mtime=1731074786<"Nov 8 14:06:26 2024">.875977932, ctime=1731074786<"Nov 8 14:06:26 2024">.875977932, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4a4635bc }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x7b2fec32c640,0x30000<O_RDONLY|O_CLOEXEC|O_DIRECTORY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/modules/"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32c3f8)
58849 wish8.5 STRU struct stat { dev=1031, ino=1192582, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4794959, atime=1731660490<"Nov 15 08:48:10 2024">.561459708, mtime=1731074786<"Nov 8 14:06:26 2024">.875977932, ctime=1731074786<"Nov 8 14:06:26 2024">.875977932, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4a4635bc }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 280/0x118
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32cc68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cc68,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650585849856/0x43acc848000
58849 wish8.5 CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652571557888/0x43b42e00000
58849 wish8.5 CALL __realpath(0x7b2fec32bf10,0x7b2fec32b600)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cdb180,0x7b2fec32c0d0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/package.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192588, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796136, atime=1731660490<"Nov 15 08:48:10 2024">.561459708, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=23329, blocks=48, blksize=16384, flags=0x0, gen=0x7db15ee3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cdb180,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/package.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43acc848028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"# package.tcl --
#
# utility procs formerly in init.tcl which can be loaded on demand
# for package management.
#
# Copyright (c) 1991-1993 The Regents of the University of California.
# Copyright (c) 1994-1998 Sun Microsystems, Inc.
#
# See the file "license.terms" for information on usage and redistribu\
tion
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
namespace eval tcl::Pkg {}
# ::tcl::Pkg::CompareExtension --
#
# Used internally by pkg_mkIndex to compare the extension of a file t\
o
# a given extension. On Windows, it uses a case-insensitive compariso\
n
# because the file system can be file insensitive.
#
# Arguments:
# fileName name of a file whose extension is compared
# ext (optional) The extension to compare against; you must
# provide the starting dot.
# Defaults to [info sharedlibextension]
#
# Results:
# Returns 1 if the extension matches, 0 otherwise
proc tcl::Pkg::CompareExtension { fileName {ext {}} } {
global tcl_platform
if {$ext eq ""} {set ext [info sharedlibextension]}
if {$tcl_platform(platform) eq "windows"} {
return [string equal -nocase [file extension $fileName] $ext]
} else {
# Some unices add trailing numbers after the .so, so
# we could have something like '.so.1.2'.
set root $fileName
while {1} {
set currExt [file extension $root]
if {$currExt eq $ext} {
return 1
}
# The current extension does not match; if it is not a num\
eric
# value, quit, as we are only looking to ignore version nu\
mber
# extensions. Otherwise we might return 1 in this case:
# tcl::Pkg::CompareExtension foo.so.bar .so
# which should not match.
if { ![string is integer -strict [string range $currExt 1 \
end]] } {
return 0
}
set root [file rootname $root]
}
}
}
# pkg_mkIndex --
# This procedure creates a package index in a given directory. The
# package index consists of a "pkgIndex.tcl" file whose contents are
# a Tcl script that sets up package information with "package require"
# commands. The commands describe all of the packages defined by the
# files given as arguments.
#
# Arguments:
# -direct (optional) If this flag is present, the genera\
ted
# code in pkgMkIndex.tcl will cause the package \
to be
# loaded when "package require" is executed, rat\
her
# than lazily when the first reference to an exp\
orted
# procedure in the package is made.
# -verbose (optional) Verbose output; the name of each fi\
le that
# was successfully rocessed is printed out. Addi\
tionally,
# if processing of a file failed a message is pr\
inted.
# -load pat (optional) Preload any packages whose names ma\
tch
# the pattern. Used to handle DLLs that depend \
on
# other packages during their Init procedure.
# dir - Name of the directory in which to create the i\
ndex.
# args - Any number of additional arguments, each givin\
g
# a glob pattern that matches the names of one o\
r
# more shared libraries or Tcl script files in
# dir.
proc pkg_mkIndex {args} {
set usage {"pkg_mkIndex ?-direct? ?-lazy? ?-load pattern? ?-verbos\
e? ?--? dir ?pattern ...?"};
set argCount [llength $args]
if {$argCount < 1} {
return -code error "wrong # args: should be\\n$usage"
}
set more ""
set direct 1
set doVerbose 0
set loadPat ""
for {set idx 0} {$idx < $argCount} {incr idx} {
set flag [lindex $args $idx]
switch -glob -- $flag {
-- {
# done with the flags
incr idx
break
}
-verbose {
set doVerbose 1
}
-lazy {
set direct 0
append more " -lazy"
}
-direct {
append more " -direct"
}
-load {
incr idx
set loadPat [lindex $args $idx]
append more " -load $loadPat"
}
-* {
return -code error "unknown flag $flag: should be\\n$u\
sage"
}
default {
# done with the flags
break
}
}
}
set dir [lindex $args $idx]
set patternList [lrange $args [expr {$idx + 1}] end]
if {[llength $patternList] == 0} {
set patternList [list "*.tcl" "*[info sharedli"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43acc848028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"bextension]"]
}
if {[catch {
glob -directory $dir -tails -types {r f} -- {*}$patternLis\
t
} fileList o]} {
return -options $o $fileList
}
foreach file $fileList {
# For each file, figure out what commands and packages it prov\
ides.
# To do this, create a child interpreter, load the file into t\
he
# interpreter, and get a list of the new commands and packages
# that are defined.
if {$file eq "pkgIndex.tcl"} {
continue
}
set c [interp create]
# Load into the child any packages currently loaded in the par\
ent
# interpreter that match the -load pattern.
if {$loadPat ne ""} {
if {$doVerbose} {
tclLog "currently loaded packages: '[info loaded]'"
tclLog "trying to load all packages matching $loadPat"
}
if {![llength [info loaded]]} {
tclLog "warning: no packages are currently loaded, not\
hing"
tclLog "can possibly match '$loadPat'"
}
}
foreach pkg [info loaded] {
if {! [string match -nocase $loadPat [lindex $pkg 1]]} {
continue
}
if {$doVerbose} {
tclLog "package [lindex $pkg 1] matches '$loadPat'"
}
if {[catch {
load [lindex $pkg 0] [lindex $pkg 1] $c
} err]} {
if {$doVerbose} {
tclLog "warning: load [lindex $pkg 0] [lindex $pkg\
1]\\nfailed with: $err"
}
} elseif {$doVerbose} {
tclLog "loaded [lindex $pkg 0] [lindex $pkg 1]"
}
if {[lindex $pkg 1] eq "Tk"} {
# Withdraw . if Tk was loaded, to avoid showing a wind\
ow.
$c eval [list wm withdraw .]
}
}
$c eval {
# Stub out the package command so packages can
# require other packages.
rename package __package_orig
proc package {what args} {
switch -- $what {
require { return ; # ignore transitive requires }
default { __package_orig $what {*}$args }
}
}
proc tclPkgUnknown args {}
package unknown tclPkgUnknown
# Stub out the unknown command so package can call
# into each other during their initialilzation.
proc unknown {args} {}
# Stub out the auto_import mechanism
proc auto_import {args} {}
# reserve the ::tcl namespace for support procs
# and temporary variables. This might make it awkward
# to generate a pkgIndex.tcl file for the ::tcl namespace.
namespace eval ::tcl {
variable dir ;# Current directory being pro\
cessed
variable file ;# Current file being processe\
d
variable direct ;# -direct flag value
variable x ;# Loop variable
variable debug ;# For debugging
variable type ;# "load" or "source", for -di\
rect
variable namespaces ;# Existing namespaces (e.g., \
::tcl)
variable packages ;# Existing packages (e.g., Tc\
l)
variable origCmds ;# Existing commands
variable newCmds ;# Newly created commands
variable newPkgs {} ;# Newly created packages
}
}
$c eval [list set ::tcl::dir $dir]
$c eval [list set ::tcl::file $file]
$c eval [list set ::tcl::direct $direct]
# Download needed procedures into the slave because we've
# just deleted the unknown procedure. This doesn't handle
# procedures with default arguments.
foreach p {::tcl::Pkg::CompareExtension} {
$c eval [list namespace eval [namespace qualifiers $p] {}]
$c eval [list proc $p [info args $p] [info body $p]]
}
if {[catch {
$c eval {
set ::tcl::debug "loading or sourcing"
# we need to track command defined by each package eve\
n in
# the -direct case, because they are needed internally\
by
# the "partial pkgIndex.tcl" step above.
proc ::tcl::GetAllNamespaces {{root ::}} {
set list $root
foreach ns [namespace children $root] {
lappend list {*}[::tcl::GetAllNamespaces $ns]
}
return $list
}
# init the list of existing namespaces, packages, comm\
ands
foreach ::tcl::x [::tcl::GetAllNamespaces] {
set ::tcl::namespaces($::tcl::x) 1
}
foreach ::tcl::x [package names] {
if {[package provide $::tcl::x] ne ""} {
set ::tcl::packages($::tcl::x) 1
}
}
set ::tcl::origCmds [info commands]
# Try to load the file if it has the shared library
# extension, otherwise source "
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43acc848028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"it. It's important not to
# try to load files that aren't shared libraries, beca\
use
# on some systems (like SunOS) the loader will abort t\
he
# whole application when it gets an error.
if {[::tcl::Pkg::CompareExtension $::tcl::file [info s\
haredlibextension]]} {
# The "file join ." command below is necessary.
# Without it, if the file name has no \\'s and we'\
re
# on UNIX, the load command will invoke the
# LD_LIBRARY_PATH search mechanism, which could ca\
use
# the wrong file to be used.
set ::tcl::debug loading
load [file join $::tcl::dir $::tcl::file]
set ::tcl::type load
} else {
set ::tcl::debug sourcing
source [file join $::tcl::dir $::tcl::file]
set ::tcl::type source
}
# As a performance optimization, if we are creating
# direct load packages, don't bother figuring out the
# set of commands created by the new packages. We
# only need that list for setting up the autoloading
# used in the non-direct case.
if { !$::tcl::direct } {
# See what new namespaces appeared, and import com\
mands
# from them. Only exported commands go into the i\
ndex.
foreach ::tcl::x [::tcl::GetAllNamespaces] {
if {! [info exists ::tcl::namespaces($::tcl::x\
)]} {
namespace import -force ${::tcl::x}::*
}
# Figure out what commands appeared
foreach ::tcl::x [info commands] {
set ::tcl::newCmds($::tcl::x) 1
}
foreach ::tcl::x $::tcl::origCmds {
unset -nocomplain ::tcl::newCmds($::tcl::x\
)
}
foreach ::tcl::x [array names ::tcl::newCmds] \
{
# determine which namespace a command come\
s from
set ::tcl::abs [namespace origin $::tcl::x\
]
# special case so that global names have n\
o leading
# ::, this is required by the unknown comm\
and
set ::tcl::abs \\
[lindex [auto_qualify $::tcl::abs \
::] 0]
if {$::tcl::x ne $::tcl::abs} {
# Name changed during qualification
set ::tcl::newCmds($::tcl::abs) 1
unset ::tcl::newCmds($::tcl::x)
}
}
}
}
# Look through the packages that appeared, and if ther\
e is
# a version provided, then record it
foreach ::tcl::x [package names] {
if {[package provide $::tcl::x] ne ""
&& ![info exists ::tcl::packages($::tcl::x\
)]} {
lappend ::tcl::newPkgs \\
[list $::tcl::x [package provide $::tcl::x\
]]
}
}
}
} msg] == 1} {
set what [$c eval set ::tcl::debug]
if {$doVerbose} {
tclLog "warning: error while $what $file: $msg"
}
} else {
set what [$c eval set ::tcl::debug]
if {$doVerbose} {
tclLog "successful $what of $file"
}
set type [$c eval set ::tcl::type]
set cmds [lsort [$c eval array names ::tcl::newCmds]]
set pkgs [$c eval set ::tcl::newPkgs]
if {$doVerbose} {
if { !$direct } {
tclLog "commands provided were $cmds"
}
tclLog "packages provided were $pkgs"
}
if {[llength $pkgs] > 1} {
tclLog "warning: \\"$file\\" provides more than one pa\
ckage ($pkgs)"
}
foreach pkg $pkgs {
# cmds is empty/not used in the direct case
lappend files($pkg) [list $file $type $cmds]
}
if {$doVerbose} {
tclLog "processed $file"
}
}
interp delete $c
}
append index "# Tcl package index file, version 1.1\\n"
append index "# This file is generated by the \\"pkg_mkIndex$more\
\\" command\\n"
append index "# and sourced either when an application starts up o\
r\\n"
append index "# by a \\"package unknown\\" script. It invokes the\
\\n"
append index "# \\"package ifneeded\\" command to set up package-r\
elated\\n"
append index "# information so that packages will be loaded automa\
tically\\n"
append index "# in response to \\"package require\\" commands. Wh\
en this\\n"
append index "# script is sourced, the variable \\$dir must contai\
n the\\n"
append index "# full path name of this file's directory.\\n"
foreach pkg [lsort [array names files]] {
set cmd {}
lassign $pkg name version
lappend cmd ::tcl::Pkg::Create -name $name -version $version
foreach spec [lsort -"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0x43b42e03000,0x4000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652571570176/0x43b42e03000
58849 wish8.5 CALL read(3,0x43acc848028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"index 0 $files($pkg)] {
foreach {file type procs} $spec {
if { $direct } {
set procs {}
}
lappend cmd "-$type" [list $file $procs]
}
}
append index "\\n[eval $cmd]"
}
set f [open [file join $dir pkgIndex.tcl] w]
puts $f $index
close $f
}
# tclPkgSetup --
# This is a utility procedure use by pkgIndex.tcl files. It is invoke\
d
# as part of a "package ifneeded" script. It calls "package provide"
# to indicate that a package is available, then sets entries in the
# auto_index array so that the package's files will be auto-loaded whe\
n
# the commands are used.
#
# Arguments:
# dir - Directory containing all the files for this pa\
ckage.
# pkg - Name of the package (no version number).
# version - Version number for the package, such as 2.1.3.
# files - List of files that constitute the package. Ea\
ch
# element is a sub-list with three elements. Th\
e first
# is the name of a file relative to $dir, the se\
cond is
# "load" or "source", indicating whether the fil\
e is a
# loadable binary or a script to source, and the\
third
# is a list of commands defined by this file.
proc tclPkgSetup {dir pkg version files} {
global auto_index
package provide $pkg $version
foreach fileInfo $files {
set f [lindex $fileInfo 0]
set type [lindex $fileInfo 1]
foreach cmd [lindex $fileInfo 2] {
if {$type eq "load"} {
set auto_index($cmd) [list load [file join $dir $f] $p\
kg]
} else {
set auto_index($cmd) [list source [file join $dir $f]]
}
}
}
}
# tclPkgUnknown --
# This procedure provides the default for the "package unknown" functi\
on.
# It is invoked when a package that's needed can't be found. It scans
# the auto_path directories and their immediate children looking for
# pkgIndex.tcl files and sources any such files that are found to setu\
p
# the package database. As it searches, it will recognize changes
# to the auto_path and scan any new directories.
#
# Arguments:
# name - Name of desired package. Not used.
# version - Version of desired package. Not used.
# exact - Either "-exact" or omitted. Not used.
proc tclPkgUnknown {name args} {
global auto_path env
if {![info exists auto_path]} {
return
}
# Cache the auto_path, because it may change while we run through
# the first set of pkgIndex.tcl files
set old_path [set use_path $auto_path]
while {[llength $use_path]} {
set dir [lindex $use_path end]
# Make sure we only scan each directory one time.
if {[info exists tclSeenPath($dir)]} {
set use_path [lrange $use_path 0 end-1]
continue
}
set tclSeenPath($dir) 1
# we can't use glob in safe interps, so enclose the following
# in a catch statement, where we get the pkgIndex files out
# of the subdirectories
catch {
foreach file [glob -directory $dir -join -nocomplain \\
* pkgIndex.tcl] {
set dir [file dirname $file]
if {![info exists procdDirs($dir)]} {
set code [catch {source $file} msg opt]
if {$code == 1 &&
[lindex [dict get $opt -errorcode] 0] eq "\
POSIX" &&
[lindex [dict get $opt -errorcode] 1] eq "\
EACCES"} {
# $file was not readable; silently ignore
continue
}
if {$code} {
tclLog "error reading package index file $file\
: $msg"
} else {
set procdDirs($dir) 1
}
}
}
}
set dir [lindex $use_path end]
if {![info exists procdDirs($dir)]} {
set file [file join $dir pkgIndex.tcl]
# safe interps usually don't have "file exists",
if {([interp issafe] || [file exists $file])} {
set code [catch {source $file} msg opt]
if {$code == 1 &&
[lindex [dict get $opt -errorcode] 0] eq "POSI\
X" &&
[lindex [dict get $opt -errorcode] 1] eq "EACC\
ES"} {
# $file was not readable; silently ignore
continue
}
if {$code} {
tclLog "error reading package index file $file: $m\
sg"
} else {
set procdDirs($dir) 1
}
}
}
set use_path [lrange $use_path 0 end-1]
# Check whether any of the index scripts we [source]d above
# set a new value for $::auto_path. If so, then find any
# new di"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43acc848028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"rectories on the $::auto_path, and lappend them to
# the $use_path we are working from. This gives index scripts
# the (arguably unwise) power to expand the index script searc\
h
# path while the search is in progress.
set index 0
if {[llength $old_path] == [llength $auto_path]} {
foreach dir $auto_path old $old_path {
if {$dir ne $old} {
# This entry in $::auto_path has changed.
break
}
incr index
}
}
# $index now points to the first element of $auto_path that
# has changed, or the beginning if $auto_path has changed leng\
th
# Scan the new elements of $auto_path for directories to add t\
o
# $use_path. Don't add directories we've already seen, or one\
s
# already on the $use_path.
foreach dir [lrange $auto_path $index end] {
if {![info exists tclSeenPath($dir)] && ($dir ni $use_path\
)} {
lappend use_path $dir
}
}
set old_path $auto_path
}
}
# tcl::MacOSXPkgUnknown --
# This procedure extends the "package unknown" function for MacOSX.
# It scans the Resources/Scripts directories of the immediate children
# of the auto_path directories for pkgIndex files.
#
# Arguments:
# original - original [package unknown] procedure
# name - Name of desired package. Not used.
# version - Version of desired package. Not used.
# exact - Either "-exact" or omitted. Not used.
proc tcl::MacOSXPkgUnknown {original name args} {
# First do the cross-platform default search
uplevel 1 $original [linsert $args 0 $name]
# Now do MacOSX specific searching
global auto_path
if {![info exists auto_path]} {
return
}
# Cache the auto_path, because it may change while we run through
# the first set of pkgIndex.tcl files
set old_path [set use_path $auto_path]
while {[llength $use_path]} {
set dir [lindex $use_path end]
# Make sure we only scan each directory one time.
if {[info exists tclSeenPath($dir)]} {
set use_path [lrange $use_path 0 end-1]
continue
}
set tclSeenPath($dir) 1
# get the pkgIndex files out of the subdirectories
foreach file [glob -directory $dir -join -nocomplain \\
* Resources Scripts pkgIndex.tcl] {
set dir [file dirname $file]
if {![info exists procdDirs($dir)]} {
set code [catch {source $file} msg opt]
if {$code == 1 &&
[lindex [dict get $opt -errorcode] 0] eq "POSI\
X" &&
[lindex [dict get $opt -errorcode] 1] eq "EACC\
ES"} {
# $file was not readable; silently ignore
continue
}
if {$code} {
tclLog "error reading package index file $file: $m\
sg"
} else {
set procdDirs($dir) 1
}
}
}
set use_path [lrange $use_path 0 end-1]
# Check whether any of the index scripts we [source]d above
# set a new value for $::auto_path. If so, then find any
# new directories on the $::auto_path, and lappend them to
# the $use_path we are working from. This gives index scripts
# the (arguably unwise) power to expand the index script searc\
h
# path while the search is in progress.
set index 0
if {[llength $old_path] == [llength $auto_path]} {
foreach dir $auto_path old $old_path {
if {$dir ne $old} {
# This entry in $::auto_path has changed.
break
}
incr index
}
}
# $index now points to the first element of $auto_path that
# has changed, or the beginning if $auto_path has changed leng\
th
# Scan the new elements of $auto_path for directories to add t\
o
# $use_path. Don't add directories we've already seen, or one\
s
# already on the $use_path.
foreach dir [lrange $auto_path $index end] {
if {![info exists tclSeenPath($dir)] && ($dir ni $use_path\
)} {
lappend use_path $dir
}
}
set old_path $auto_path
}
}
# ::tcl::Pkg::Create --
#
# Given a package specification generate a "package ifneeded" st\
atement
# for the package, suitable for inclusion in a pkgIndex.tcl file\
.
#
# Arguments:
# args arguments used by the Create function:
# -name packageName
# -version packageVersion
# -load {filename ?{procs}?}
# ...
# -source {filename ?{procs}?}
# ...
#
# Any number of -load and -source parameters may\
be
# speci"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43acc848028,0x1000)
58849 wish8.5 GIO fd 3 read 2849 bytes
"fied, so long as there is at least one -load or
# -source parameter. If the procs component of \
a
# module specifier is left off, that module will\
be
# set up for direct loading; otherwise, it will \
be
# set up for lazy loading. If both -source and \
-load
# are specified, the -load'ed files will be load\
ed
# first, followed by the -source'd files.
#
# Results:
# An appropriate "package ifneeded" statement for the package.
proc ::tcl::Pkg::Create {args} {
append err(usage) "[lindex [info level 0] 0] "
append err(usage) "-name packageName -version packageVersion"
append err(usage) "?-load {filename ?{procs}?}? ... "
append err(usage) "?-source {filename ?{procs}?}? ..."
set err(wrongNumArgs) "wrong # args: should be \\"$err(usage)\\""
set err(valueMissing) "value for \\"%s\\" missing: should be \\"$e\
rr(usage)\\""
set err(unknownOpt) "unknown option \\"%s\\": should be \\"$err(\
usage)\\""
set err(noLoadOrSource) "at least one of -load and -source must be\
given"
# process arguments
set len [llength $args]
if { $len < 6 } {
error $err(wrongNumArgs)
}
# Initialize parameters
array set opts {-name {} -version {} -source {} -load {}}
# process parameters
for {set i 0} {$i < $len} {incr i} {
set flag [lindex $args $i]
incr i
switch -glob -- $flag {
"-name" -
"-version" {
if { $i >= $len } {
error [format $err(valueMissing) $flag]
}
set opts($flag) [lindex $args $i]
}
"-source" -
"-load" {
if { $i >= $len } {
error [format $err(valueMissing) $flag]
}
lappend opts($flag) [lindex $args $i]
}
default {
error [format $err(unknownOpt) [lindex $args $i]]
}
}
}
# Validate the parameters
if { [llength $opts(-name)] == 0 } {
error [format $err(valueMissing) "-name"]
}
if { [llength $opts(-version)] == 0 } {
error [format $err(valueMissing) "-version"]
}
if { [llength $opts(-source)] == 0 && [llength $opts(-load)] == 0 \
} {
error $err(noLoadOrSource)
}
# OK, now everything is good. Generate the package ifneeded statm\
ent.
set cmdline "package ifneeded $opts(-name) $opts(-version) "
set cmdList {}
set lazyFileList {}
# Handle -load and -source specs
foreach key {load source} {
foreach filespec $opts(-$key) {
lassign $filespec filename proclist
if { [llength $proclist] == 0 } {
set cmd "\\[list $key \\[file join \\$dir [list $filen\
ame]\\]\\]"
lappend cmdList $cmd
} else {
lappend lazyFileList [list $filename $key $proclist]
}
}
}
if { [llength $lazyFileList] > 0 } {
lappend cmdList "\\[list tclPkgSetup \\$dir $opts(-name)\\
$opts(-version) [list $lazyFileList]\\]"
}
append cmdline [join $cmdList "\\\\n"]
return $cmdline
}
interp alias {} ::pkg::create {} ::tcl::Pkg::Create
"
58849 wish8.5 RET read 2849/0xb21
58849 wish8.5 CALL read(3,0x43acc848028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0x43acc84a000,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650585858048/0x43acc84a000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651886948352/0x43b1a11b000
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652956733440/0x43b59d55000
58849 wish8.5 CALL mmap(0x43acb3dc000,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1812<MAP_PRIVATE|MAP_FIXED|__MAP_NOREPLACE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap -1 errno 12 Cannot allocate memory
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652490862592/0x43b3e10b000
58849 wish8.5 CALL kbind(0x7b2fec32bce8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b8e0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192360, mode=drwxr-xr-x , nlink=112, uid=0<"root">, gid=0<"wheel">, rdev=4794268, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1731074898<"Nov 8 14:08:18 2024">.115977960, ctime=1731074898<"Nov 8 14:08:18 2024">.115977960, size=2048, blocks=4, blksize=16384, flags=0x0, gen=0xfa94d644 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x7b2fec32b970,0x30000<O_RDONLY|O_CLOEXEC|O_DIRECTORY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32b728)
58849 wish8.5 STRU struct stat { dev=1031, ino=1192360, mode=drwxr-xr-x , nlink=112, uid=0<"root">, gid=0<"wheel">, rdev=4794268, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1731074898<"Nov 8 14:08:18 2024">.115977960, ctime=1731074898<"Nov 8 14:08:18 2024">.115977960, size=2048, blocks=4, blksize=16384, flags=0x0, gen=0xfa94d644 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 3888/0xf30
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192361, mode=drwxr-xr-x , nlink=8, uid=0<"root">, gid=0<"wheel">, rdev=4794269, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1731074786<"Nov 8 14:06:26 2024">.925976325, ctime=1731074786<"Nov 8 14:06:26 2024">.925976325, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x7d762bc1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192808, mode=drwxr-xr-x , nlink=4, uid=0<"root">, gid=0<"wheel">, rdev=4796831, atime=1731634208<"Nov 15 01:30:08 2024">.661571772, mtime=1731074897<"Nov 8 14:08:17 2024">.435978186, ctime=1731074897<"Nov 8 14:08:17 2024">.435978186, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x83e91a71 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/itcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193297, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4794535, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074787<"Nov 8 14:06:27 2024">.475978587, ctime=1731074787<"Nov 8 14:06:27 2024">.475978587, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xf427f5ac }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/0compatibility"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193301, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796879, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.086083339, ctime=1731074788<"Nov 8 14:06:28 2024">.086083339, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x5e16dc6b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/amazon-s3"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193307, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796882, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.715979716, ctime=1731074788<"Nov 8 14:06:28 2024">.715979716, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xc66c43b4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base64"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193310, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796920, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.885977449, ctime=1731074788<"Nov 8 14:06:28 2024">.885977449, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4899914d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/cache"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193316, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796935, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.095977027, ctime=1731074788<"Nov 8 14:06:28 2024">.095977027, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xb07e1a1a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clay"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193319, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796943, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.105976960, ctime=1731074788<"Nov 8 14:06:28 2024">.105976960, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xf6f0e133 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clock"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193322, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796949, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.885977449, ctime=1731074788<"Nov 8 14:06:28 2024">.885977449, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x1e673bcf }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/coroutine"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193324, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796950, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.105976960, ctime=1731074788<"Nov 8 14:06:28 2024">.105976960, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x201a4fc6 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/crc"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193328, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4797007, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.895976881, ctime=1731074788<"Nov 8 14:06:28 2024">.895976881, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x93215414 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/debug"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193332, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796999, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.895976881, ctime=1731074788<"Nov 8 14:06:28 2024">.895976881, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xd0961186 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/dns"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193335, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4796988, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.115977539, ctime=1731074788<"Nov 8 14:06:28 2024">.115977539, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x6de1b871 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193345, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4796989, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.895976881, ctime=1731074788<"Nov 8 14:06:28 2024">.895976881, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xfd163e0 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2base"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193386, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4797249, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.905976966, ctime=1731074788<"Nov 8 14:06:28 2024">.905976966, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xdf76682a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2idx"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193388, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4797251, atime=1731634208<"Nov 15 01:30:08 2024">.671572743, mtime=1731074788<"Nov 8 14:06:28 2024">.915976983, ctime=1731074788<"Nov 8 14:06:28 2024">.915976983, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x84a304b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2toc"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193392, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4797259, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.915976983, ctime=1731074788<"Nov 8 14:06:28 2024">.915976983, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xc3d077ab }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fileutil"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193396, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4797267, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.915976983, ctime=1731074788<"Nov 8 14:06:28 2024">.915976983, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x278133e5 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fumagic"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193402, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4797271, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.175979638, ctime=1731074788<"Nov 8 14:06:28 2024">.175979638, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xcd946f07 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/generator"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193408, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4797335, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.185977431, ctime=1731074788<"Nov 8 14:06:28 2024">.185977431, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xed90b60 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpd"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193411, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798023, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.185977431, ctime=1731074788<"Nov 8 14:06:28 2024">.185977431, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xd01cd0d7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpwget"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193414, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798055, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.735977265, ctime=1731074788<"Nov 8 14:06:28 2024">.735977265, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xdf0afceb }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/inifile"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193416, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798013, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.185977431, ctime=1731074788<"Nov 8 14:06:28 2024">.185977431, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x13906ffd }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/irc"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193419, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798015, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.195977805, ctime=1731074788<"Nov 8 14:06:28 2024">.195977805, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xd340ff97 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/json"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193423, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798063, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.735977265, ctime=1731074788<"Nov 8 14:06:28 2024">.735977265, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x9b58e097 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ldap"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193426, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798084, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.195977805, ctime=1731074788<"Nov 8 14:06:28 2024">.195977805, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xec12bd1c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/log"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193430, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4798126, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.935978877, ctime=1731074788<"Nov 8 14:06:28 2024">.935978877, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x2fbbdcee }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/math"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193437, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798175, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.955977164, ctime=1731074788<"Nov 8 14:06:28 2024">.955977164, size=1536, blocks=4, blksize=16384, flags=0x0, gen=0x7ed273c9 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/markdown"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193434, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798158, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.205977363, ctime=1731074788<"Nov 8 14:06:28 2024">.205977363, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x40a7c558 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193472, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798415, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.745977394, ctime=1731074788<"Nov 8 14:06:28 2024">.745977394, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x8af8c802 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mime"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193476, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798519, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.245977076, ctime=1731074788<"Nov 8 14:06:28 2024">.245977076, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xd98bd4b2 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mkdoc"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193480, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798551, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.245977076, ctime=1731074788<"Nov 8 14:06:28 2024">.245977076, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x3db54243 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oometa"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193504, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798903, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.775978885, ctime=1731074788<"Nov 8 14:06:28 2024">.775978885, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xe0e5d59c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/practcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193506, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799007, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.275977321, ctime=1731074788<"Nov 8 14:06:28 2024">.275977321, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x761b0e12 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/processman"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193509, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4798630, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.285976307, ctime=1731074788<"Nov 8 14:06:28 2024">.285976307, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x227156f8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pt"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193512, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4798685, atime=1731634208<"Nov 15 01:30:08 2024">.681571807, mtime=1731074788<"Nov 8 14:06:28 2024">.995977231, ctime=1731074788<"Nov 8 14:06:28 2024">.995977231, size=1536, blocks=4, blksize=16384, flags=0x0, gen=0xebf732cb }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sha1"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193525, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799199, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.805977646, ctime=1731074788<"Nov 8 14:06:28 2024">.805977646, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x36d0fae8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/simulation"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193534, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799335, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.995977231, ctime=1731074788<"Nov 8 14:06:28 2024">.995977231, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xa4c3dd2a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/struct"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193537, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799375, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074789<"Nov 8 14:06:29 2024">.035976791, ctime=1731074789<"Nov 8 14:06:29 2024">.035976791, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0x315e435c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/term"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193553, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4799615, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074789<"Nov 8 14:06:29 2024">.035976791, ctime=1731074789<"Nov 8 14:06:29 2024">.035976791, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x5c0dd6be }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/textutil"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193561, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799644, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074789<"Nov 8 14:06:29 2024">.045976778, ctime=1731074789<"Nov 8 14:06:29 2024">.045976778, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xa71b2341 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tie"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193566, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799652, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.335977101, ctime=1731074788<"Nov 8 14:06:28 2024">.335977101, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x880be901 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_base"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193575, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799688, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074789<"Nov 8 14:06:29 2024">.065977253, ctime=1731074789<"Nov 8 14:06:29 2024">.065977253, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xdd6ff330 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/yaml"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193580, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799697, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.835977131, ctime=1731074788<"Nov 8 14:06:28 2024">.835977131, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x36f2cacd }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/zip"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193584, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799703, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.835977131, ctime=1731074788<"Nov 8 14:06:28 2024">.835977131, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x2bae9d95 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650267693056/0x43ab98dd000
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base32"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193589, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799745, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.885977449, ctime=1731074788<"Nov 8 14:06:28 2024">.885977449, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x64f57f2f }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/control"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193592, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799750, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.885977449, ctime=1731074788<"Nov 8 14:06:28 2024">.885977449, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x1a1cdd0 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/defer"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193598, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799767, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.715979716, ctime=1731074788<"Nov 8 14:06:28 2024">.715979716, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x35ab8af1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/des"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193601, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799776, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.895976881, ctime=1731074788<"Nov 8 14:06:28 2024">.895976881, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x42f2cac3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/docstrip"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193603, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799781, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.895976881, ctime=1731074788<"Nov 8 14:06:28 2024">.895976881, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x5547c869 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ftp"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193614, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799783, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.735977265, ctime=1731074788<"Nov 8 14:06:28 2024">.735977265, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x9a2dbfd2 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_fa"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193618, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799807, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.925977335, ctime=1731074788<"Nov 8 14:06:28 2024">.925977335, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4e0b225a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/http"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193620, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799882, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.735977265, ctime=1731074788<"Nov 8 14:06:28 2024">.735977265, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xc107573c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/map"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193629, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4799887, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.945977631, ctime=1731074788<"Nov 8 14:06:28 2024">.945977631, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xace1ffa8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md4"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193641, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800030, atime=1731634208<"Nov 15 01:30:08 2024">.691571785, mtime=1731074788<"Nov 8 14:06:28 2024">.745977394, ctime=1731074788<"Nov 8 14:06:28 2024">.745977394, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x56dfffd7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5crypt"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193646, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800051, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.955977164, ctime=1731074788<"Nov 8 14:06:28 2024">.955977164, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x91c2e88e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nettool"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193659, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800063, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.765977744, ctime=1731074788<"Nov 8 14:06:28 2024">.765977744, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xeb423275 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntp"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193662, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800183, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.955977164, ctime=1731074788<"Nov 8 14:06:28 2024">.955977164, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xb585d1da }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oodialect"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193664, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800215, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.765977744, ctime=1731074788<"Nov 8 14:06:28 2024">.765977744, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xf2d93767 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ooutil"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193669, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800271, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.775978885, ctime=1731074788<"Nov 8 14:06:28 2024">.775978885, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x2af63a03 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pop3d"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193672, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800279, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.985976187, ctime=1731074788<"Nov 8 14:06:28 2024">.985976187, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x576bdc49 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/rc4"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193711, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800505, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.995977231, ctime=1731074788<"Nov 8 14:06:28 2024">.995977231, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xb2ffbfd0 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ripemd"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193714, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800515, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.805977646, ctime=1731074788<"Nov 8 14:06:28 2024">.805977646, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xa23d48fc }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sasl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193718, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800534, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.805977646, ctime=1731074788<"Nov 8 14:06:28 2024">.805977646, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x707c576a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/string"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193726, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800559, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074789<"Nov 8 14:06:29 2024">.015977600, ctime=1731074789<"Nov 8 14:06:29 2024">.015977600, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x702c5b20 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tepam"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193730, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800595, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.815976465, ctime=1731074788<"Nov 8 14:06:28 2024">.815976465, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x67eb168b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tool"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193740, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800720, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.825977588, ctime=1731074788<"Nov 8 14:06:28 2024">.825977588, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x40b85695 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/try"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193743, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800723, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074789<"Nov 8 14:06:29 2024">.045976778, ctime=1731074789<"Nov 8 14:06:29 2024">.045976778, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xd6747d0c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/udpcluster"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193746, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800726, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.825977588, ctime=1731074788<"Nov 8 14:06:28 2024">.825977588, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xbef560ca }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uri"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193749, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800761, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.825977588, ctime=1731074788<"Nov 8 14:06:28 2024">.825977588, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x458b4de3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/valtype"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193753, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800787, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074789<"Nov 8 14:06:29 2024">.055977781, ctime=1731074789<"Nov 8 14:06:29 2024">.055977781, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x76e570c3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_transform"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193759, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800791, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074789<"Nov 8 14:06:29 2024">.065977253, ctime=1731074789<"Nov 8 14:06:29 2024">.065977253, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xc41e91c4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/bench"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193774, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4800861, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.885977449, ctime=1731074788<"Nov 8 14:06:28 2024">.885977449, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4e80255d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_aycock"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193845, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801102, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.925977335, ctime=1731074788<"Nov 8 14:06:28 2024">.925977335, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x3e3545c0 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_me"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193854, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801152, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.935978877, ctime=1731074788<"Nov 8 14:06:28 2024">.935978877, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x862aeb3d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_peg"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193861, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801158, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.935978877, ctime=1731074788<"Nov 8 14:06:28 2024">.935978877, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4b591ed4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/interp"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193866, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801199, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.935978877, ctime=1731074788<"Nov 8 14:06:28 2024">.935978877, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x61845b04 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nns"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193895, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801271, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.955977164, ctime=1731074788<"Nov 8 14:06:28 2024">.955977164, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xf8d0052d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/page"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193903, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4801303, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074788<"Nov 8 14:06:28 2024">.985976187, ctime=1731074788<"Nov 8 14:06:28 2024">.985976187, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0xecb15e7c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/snit"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193968, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801655, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074789<"Nov 8 14:06:29 2024">.005977064, ctime=1731074789<"Nov 8 14:06:29 2024">.005977064, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x342c2ecb }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stooop"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193978, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801847, atime=1731634208<"Nov 15 01:30:08 2024">.701572062, mtime=1731074789<"Nov 8 14:06:29 2024">.015977600, ctime=1731074789<"Nov 8 14:06:29 2024">.015977600, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4bb8543c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stringprep"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193985, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4801895, atime=1731634208<"Nov 15 01:30:08 2024">.711571666, mtime=1731074789<"Nov 8 14:06:29 2024">.015977600, ctime=1731074789<"Nov 8 14:06:29 2024">.015977600, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xeb11aab4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/transfer"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194021, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802159, atime=1731634208<"Nov 15 01:30:08 2024">.711571666, mtime=1731074789<"Nov 8 14:06:29 2024">.045976778, ctime=1731074789<"Nov 8 14:06:29 2024">.045976778, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xde60063a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/treeql"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194030, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802191, atime=1731634208<"Nov 15 01:30:08 2024">.711571666, mtime=1731074789<"Nov 8 14:06:29 2024">.045976778, ctime=1731074789<"Nov 8 14:06:29 2024">.045976778, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x5bbe1be3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uev"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194036, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802224, atime=1731634208<"Nov 15 01:30:08 2024">.711571666, mtime=1731074789<"Nov 8 14:06:29 2024">.055977781, ctime=1731074789<"Nov 8 14:06:29 2024">.055977781, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xa581dd4b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_core"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194061, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802268, atime=1731634208<"Nov 15 01:30:08 2024">.711571666, mtime=1731074789<"Nov 8 14:06:29 2024">.065977253, ctime=1731074789<"Nov 8 14:06:29 2024">.065977253, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x2179889b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wip"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194077, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802295, atime=1731634208<"Nov 15 01:30:08 2024">.711571666, mtime=1731074789<"Nov 8 14:06:29 2024">.065977253, ctime=1731074789<"Nov 8 14:06:29 2024">.065977253, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xc7a8187d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.5"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194081, mode=drwxr-xr-x , nlink=6, uid=0<"root">, gid=0<"wheel">, rdev=4802311, atime=1731660271<"Nov 15 08:44:31 2024">.711460955, mtime=1731074790<"Nov 8 14:06:30 2024">.515977018, ctime=1731074790<"Nov 8 14:06:30 2024">.515977018, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0x9e223a8d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/canvas"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194547, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802330, atime=1731634208<"Nov 15 01:30:08 2024">.731572687, mtime=1731074791<"Nov 8 14:06:31 2024">.445977738, ctime=1731074791<"Nov 8 14:06:31 2024">.445977738, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x46998447 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/diagrams"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194553, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802863, atime=1731634208<"Nov 15 01:30:08 2024">.731572687, mtime=1731074791<"Nov 8 14:06:31 2024">.455977720, ctime=1731074791<"Nov 8 14:06:31 2024">.455977720, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xe716a6cc }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/getstring"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194557, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4802879, atime=1731634208<"Nov 15 01:30:08 2024">.731572687, mtime=1731074791<"Nov 8 14:06:31 2024">.455977720, ctime=1731074791<"Nov 8 14:06:31 2024">.455977720, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xdd62517e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ico"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194559, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4803119, atime=1731634208<"Nov 15 01:30:08 2024">.731572687, mtime=1731074791<"Nov 8 14:06:31 2024">.455977720, ctime=1731074791<"Nov 8 14:06:31 2024">.455977720, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x12b85d9e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/khim"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194562, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4803127, atime=1731634208<"Nov 15 01:30:08 2024">.731572687, mtime=1731074791<"Nov 8 14:06:31 2024">.455977720, ctime=1731074791<"Nov 8 14:06:31 2024">.455977720, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x258a0fc8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mentry"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194565, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4803191, atime=1731634208<"Nov 15 01:30:08 2024">.731572687, mtime=1731074791<"Nov 8 14:06:31 2024">.105978454, ctime=1731074791<"Nov 8 14:06:31 2024">.105978454, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x867f5b8b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/scrollutil"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194579, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4803605, atime=1731634208<"Nov 15 01:30:08 2024">.731572687, mtime=1731074791<"Nov 8 14:06:31 2024">.165977415, ctime=1731074791<"Nov 8 14:06:31 2024">.165977415, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x70d3263c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653268553728/0x43b6c6b5000
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tablelist"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194583, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4803621, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.205978226, ctime=1731074791<"Nov 8 14:06:31 2024">.205978226, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x3d000ad4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/menubar"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194589, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4803686, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.455977720, ctime=1731074791<"Nov 8 14:06:31 2024">.455977720, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xae389fec }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntext"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194605, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4803687, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.135978432, ctime=1731074791<"Nov 8 14:06:31 2024">.135978432, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xd669634d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/plotchart"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194608, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4803927, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.465976159, ctime=1731074791<"Nov 8 14:06:31 2024">.465976159, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0x5b606025 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/shtmlview"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194635, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4804653, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.165977415, ctime=1731074791<"Nov 8 14:06:31 2024">.165977415, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x3abcdc05 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tooltip"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194658, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4805485, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.475976746, ctime=1731074791<"Nov 8 14:06:31 2024">.475976746, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x2e0bfb08 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wcb"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194661, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4805512, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.215977564, ctime=1731074791<"Nov 8 14:06:31 2024">.215977564, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xcd26d763 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widget"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194672, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4805542, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.485976297, ctime=1731074791<"Nov 8 14:06:31 2024">.485976297, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xcea97bda }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194676, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4805543, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.215977564, ctime=1731074791<"Nov 8 14:06:31 2024">.215977564, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xfc7725ec }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/controlwidget"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194680, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4805566, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.445977738, ctime=1731074791<"Nov 8 14:06:31 2024">.445977738, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xf57c2a5d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/style"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194730, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4805766, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.465976159, ctime=1731074791<"Nov 8 14:06:31 2024">.465976159, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4d4147fc }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tkpiechart"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194735, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4805814, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.475976746, ctime=1731074791<"Nov 8 14:06:31 2024">.475976746, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x478c31bb }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetv"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194760, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4805879, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074791<"Nov 8 14:06:31 2024">.485976297, ctime=1731074791<"Nov 8 14:06:31 2024">.485976297, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xa6f8cdf7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.6"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194829, mode=drwxr-xr-x , nlink=8, uid=0<"root">, gid=0<"wheel">, rdev=4806590, atime=1731634208<"Nov 15 01:30:08 2024">.741571671, mtime=1731074897<"Nov 8 14:08:17 2024">.345976834, ctime=1731074897<"Nov 8 14:08:17 2024">.345976834, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x81eebec }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.6"
58849 wish8.5 STRU struct stat { dev=1031, ino=1218377, mode=drwxr-xr-x , nlink=6, uid=0<"root">, gid=0<"wheel">, rdev=4892647, atime=1731634208<"Nov 15 01:30:08 2024">.801571822, mtime=1731074898<"Nov 8 14:08:18 2024">.375978027, ctime=1731074898<"Nov 8 14:08:18 2024">.375978027, size=1024, blocks=4, blksize=16384, flags=0x0, gen=0x977a3b60 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32b240,0x7b2fec32a930)
58849 wish8.5 NAMI "/usr/local/lib"
58849 wish8.5 NAMI "/usr/local/lib"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32b300,0x7b2fec32a9f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32b360,0x7b2fec32aa50)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL kbind(0x7b2fec32b3f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32af78,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __getcwd(0x7b2fec32b040,1025)
58849 wish8.5 NAMI "/home/moss"
58849 wish8.5 RET __getcwd 0
58849 wish8.5 CALL __realpath(0x7b2fec32b2b0,0x7b2fec32a9a0)
58849 wish8.5 NAMI "/home"
58849 wish8.5 NAMI "/home"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32b300,0x7b2fec32a9f0)
58849 wish8.5 NAMI "/home/moss"
58849 wish8.5 NAMI "/home/moss"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL kbind(0x7b2fec32b4e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL lstat(0x43ad9cd4750,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/pkgIndex.tcl"
58849 wish8.5 RET lstat -1 errno 2 No such file or directory
58849 wish8.5 CALL lstat(0x43ad9ce1210,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/modules/pkgIndex.tcl"
58849 wish8.5 RET lstat -1 errno 2 No such file or directory
58849 wish8.5 CALL lstat(0x43ad9cdb360,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/itcl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193300, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4795009, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1727375138<"Sep 26 19:25:38 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.485977535, size=186, blocks=4, blksize=16384, flags=0x0, gen=0x58a7fa54 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4870,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/0compatibility/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193306, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796881, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=1048, blocks=4, blksize=16384, flags=0x0, gen=0xfdd32640 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd48a0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/amazon-s3/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193588, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799744, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=299, blocks=4, blksize=16384, flags=0x0, gen=0x573d507 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce17e0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base64/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193313, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796934, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=360, blocks=4, blksize=16384, flags=0x0, gen=0x9448250b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4690,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/cache/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193318, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796942, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=140, blocks=4, blksize=16384, flags=0x0, gen=0xc669c651 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd46c0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clay/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193321, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796983, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=599, blocks=4, blksize=16384, flags=0x0, gen=0xc53dbf28 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1450,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clock/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193782, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800901, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=220, blocks=4, blksize=16384, flags=0x0, gen=0x903e6b90 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe5d0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/coroutine/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193327, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796951, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=236, blocks=4, blksize=16384, flags=0x0, gen=0xfaec13c1 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cdb570,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/crc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193331, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796998, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=340, blocks=4, blksize=16384, flags=0x0, gen=0x9c67da8 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cdb510,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/debug/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193334, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797015, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=393, blocks=4, blksize=16384, flags=0x0, gen=0xa9082be5 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650568060928/0x43acb751000
58849 wish8.5 CALL lstat(0x43ad9cdb4b0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/dns/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193342, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797071, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=358, blocks=4, blksize=16384, flags=0x0, gen=0xfbe1e28d }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe9c0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193385, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797248, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=489, blocks=4, blksize=16384, flags=0x0, gen=0x28159677 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be180,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2base/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193387, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797250, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=1004, blocks=4, blksize=16384, flags=0x0, gen=0x4607129b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3bec60,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2idx/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193391, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797254, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=2063, blocks=8, blksize=16384, flags=0x0, gen=0x38094252 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1a80,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2toc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193395, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797262, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=2061, blocks=8, blksize=16384, flags=0x0, gen=0x4a725353 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe780,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fileutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193400, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797270, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=810, blocks=4, blksize=16384, flags=0x0, gen=0x816115f7 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be720,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fumagic/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193406, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797334, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=465, blocks=4, blksize=16384, flags=0x0, gen=0xff8d1013 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe360,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/generator/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193410, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798022, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=213, blocks=4, blksize=16384, flags=0x0, gen=0x81f72f79 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be3f0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpd/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193413, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798054, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=134, blocks=4, blksize=16384, flags=0x0, gen=0x86cab88f }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3bef30,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpwget/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193623, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799886, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=538, blocks=4, blksize=16384, flags=0x0, gen=0x2e488359 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1210,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/inifile/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193418, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798014, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=136, blocks=4, blksize=16384, flags=0x0, gen=0x8c33dd0a }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1900,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/irc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193422, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798062, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=265, blocks=4, blksize=16384, flags=0x0, gen=0xb947b7f3 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce18a0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/json/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193425, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798083, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=313, blocks=4, blksize=16384, flags=0x0, gen=0xe55b7987 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4120,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ldap/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193429, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798125, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=271, blocks=4, blksize=16384, flags=0x0, gen=0xedf5e654 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3bee10,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/log/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193433, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798127, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=509, blocks=4, blksize=16384, flags=0x0, gen=0x6884dc1b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3beb10,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/math/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193456, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798488, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=3290, blocks=8, blksize=16384, flags=0x0, gen=0xa79f7dbc }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651286495232/0x43af6478000
58849 wish8.5 CALL lstat(0x43acb3be930,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/markdown/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193436, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798159, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=138, blocks=4, blksize=16384, flags=0x0, gen=0xd8d4845 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4270,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193475, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798503, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=195, blocks=4, blksize=16384, flags=0x0, gen=0x399ca967 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfea50,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mime/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193478, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798535, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=261, blocks=4, blksize=16384, flags=0x0, gen=0x1c98af97 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfedb0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mkdoc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193482, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798583, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=132, blocks=4, blksize=16384, flags=0x0, gen=0xa99cf1e4 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4150,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oometa/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193668, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800270, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=321, blocks=4, blksize=16384, flags=0x0, gen=0xa03f53ff }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1db0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/practcl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193507, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798629, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=142, blocks=4, blksize=16384, flags=0x0, gen=0x29191c6d }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce17b0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/processman/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193510, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798631, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=176, blocks=4, blksize=16384, flags=0x0, gen=0xcd3d608d }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce11b0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pt/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193514, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798853, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=4331, blocks=12, blksize=16384, flags=0x0, gen=0xcbb13f1d }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3bee40,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sha1/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193526, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799333, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=816, blocks=4, blksize=16384, flags=0x0, gen=0xe937d689 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1840,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/simulation/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193535, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799359, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=262, blocks=4, blksize=16384, flags=0x0, gen=0xbcf7e680 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be8a0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/struct/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193548, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799614, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=1924, blocks=4, blksize=16384, flags=0x0, gen=0xe37143ea }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be960,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/term/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193560, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799643, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=1151, blocks=4, blksize=16384, flags=0x0, gen=0x1291dd2f }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd44b0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/textutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193563, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799648, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=992, blocks=4, blksize=16384, flags=0x0, gen=0x13ee16ce }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be6f0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tie/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193567, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799653, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=655, blocks=4, blksize=16384, flags=0x0, gen=0x45e04f28 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3d6e00,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_base/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193579, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799696, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=1338, blocks=4, blksize=16384, flags=0x0, gen=0x107cac86 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe3f0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/yaml/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193582, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799699, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=301, blocks=4, blksize=16384, flags=0x0, gen=0x21bb3060 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd47e0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/zip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193587, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799743, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=364, blocks=4, blksize=16384, flags=0x0, gen=0xd659ead1 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4650633773056/0x43acf5fc000
58849 wish8.5 CALL lstat(0x43acb3bef90,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base32/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193771, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800855, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=295, blocks=4, blksize=16384, flags=0x0, gen=0xfc53f69f }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4510,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/control/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193787, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800905, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=136, blocks=4, blksize=16384, flags=0x0, gen=0xa28923ab }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4210,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/defer/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193600, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799775, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=157, blocks=4, blksize=16384, flags=0x0, gen=0x907b1941 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3bedb0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/des/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193792, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800911, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=305, blocks=4, blksize=16384, flags=0x0, gen=0x97d69eb0 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe060,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/docstrip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193605, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799782, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=669, blocks=4, blksize=16384, flags=0x0, gen=0x9822c495 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1f30,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ftp/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193617, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799799, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=219, blocks=4, blksize=16384, flags=0x0, gen=0x9107bb80 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfefc0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_fa/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193853, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801127, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=411, blocks=4, blksize=16384, flags=0x0, gen=0x3bcf6310 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be210,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/http/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193622, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799885, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=138, blocks=4, blksize=16384, flags=0x0, gen=0x75639355 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4ba0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/map/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193631, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799955, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=452, blocks=4, blksize=16384, flags=0x0, gen=0xa8019256 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4840,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md4/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193644, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800031, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=185, blocks=4, blksize=16384, flags=0x0, gen=0xd419d4d7 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4ae0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5crypt/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193892, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801263, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=167, blocks=4, blksize=16384, flags=0x0, gen=0x4ec78d6b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4c00,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nettool/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193661, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800167, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=285, blocks=4, blksize=16384, flags=0x0, gen=0x8519a71d }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1810,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntp/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193902, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801302, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=130, blocks=4, blksize=16384, flags=0x0, gen=0x6b506958 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4f30,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oodialect/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193666, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800263, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=80, blocks=4, blksize=16384, flags=0x0, gen=0xebff68c5 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd48d0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ooutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193671, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800278, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=240, blocks=4, blksize=16384, flags=0x0, gen=0xc697b2a4 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe030,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pop3d/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193951, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801598, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=828, blocks=4, blksize=16384, flags=0x0, gen=0x82110c92 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be990,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/rc4/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193964, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801631, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=326, blocks=4, blksize=16384, flags=0x0, gen=0xcea35622 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653519589376/0x43b7b61d000
58849 wish8.5 CALL lstat(0x43ad9cd4960,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ripemd/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193715, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800516, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=390, blocks=4, blksize=16384, flags=0x0, gen=0x24c6949a }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe180,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sasl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193721, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800519, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=625, blocks=4, blksize=16384, flags=0x0, gen=0x57578589 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1960,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/string/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193727, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800581, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=261, blocks=4, blksize=16384, flags=0x0, gen=0x9ec39793 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1bd0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tepam/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193731, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800596, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=228, blocks=4, blksize=16384, flags=0x0, gen=0x7939d04 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be750,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tool/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193741, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800721, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=595, blocks=4, blksize=16384, flags=0x0, gen=0x85d87abd }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be3c0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/try/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193744, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800724, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=554, blocks=4, blksize=16384, flags=0x0, gen=0xa8e7a33b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cd4bd0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/udpcluster/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193747, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800727, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=291, blocks=4, blksize=16384, flags=0x0, gen=0xb137947e }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1300,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uri/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193750, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800762, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=238, blocks=4, blksize=16384, flags=0x0, gen=0xb2b7e0a7 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1f00,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/valtype/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193755, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800790, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=1215, blocks=4, blksize=16384, flags=0x0, gen=0x600301a3 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3cad40,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_transform/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193760, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800800, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=1127, blocks=4, blksize=16384, flags=0x0, gen=0x8086e6b1 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe300,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/bench/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193780, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800879, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=406, blocks=4, blksize=16384, flags=0x0, gen=0xe064cc0e }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1f90,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_aycock/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193849, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801103, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=354, blocks=4, blksize=16384, flags=0x0, gen=0xe34174c7 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be420,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_me/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193860, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801175, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=496, blocks=4, blksize=16384, flags=0x0, gen=0x9ca4c628 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce1120,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_peg/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193864, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801159, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=173, blocks=4, blksize=16384, flags=0x0, gen=0xfd04a509 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e29c0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/interp/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193870, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801204, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=340, blocks=4, blksize=16384, flags=0x0, gen=0xb3d65016 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be9c0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nns/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193899, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801319, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=448, blocks=4, blksize=16384, flags=0x0, gen=0x3b4a6867 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4651817500672/0x43b15ee0000
58849 wish8.5 CALL lstat(0x43acb3befc0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/page/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193923, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801533, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=4561, blocks=12, blksize=16384, flags=0x0, gen=0xddeed417 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e2270,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/snit/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193972, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801719, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=208, blocks=4, blksize=16384, flags=0x0, gen=0xc62fe7c2 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3eddb0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stooop/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193980, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801867, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=936, blocks=4, blksize=16384, flags=0x0, gen=0x5cabacc2 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be000,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stringprep/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193986, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801896, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=331, blocks=4, blksize=16384, flags=0x0, gen=0x8da76507 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e2030,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/transfer/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194026, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802167, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=706, blocks=4, blksize=16384, flags=0x0, gen=0xfd09fb7b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9ce10f0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/treeql/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194031, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802198, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=163, blocks=4, blksize=16384, flags=0x0, gen=0x85081c62 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3edb40,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uev/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194037, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802225, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=229, blocks=4, blksize=16384, flags=0x0, gen=0x21421df5 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43b3a8a1400,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_core/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194064, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802272, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=372, blocks=4, blksize=16384, flags=0x0, gen=0xc35567eb }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e2570,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194078, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802296, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=254, blocks=4, blksize=16384, flags=0x0, gen=0x6b3fb845 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3edea0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.5/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194262, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803183, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371912<"Sep 26 18:31:52 2024">, ctime=1731074790<"Nov 8 14:06:30 2024">.675976976, size=146, blocks=4, blksize=16384, flags=0x0, gen=0x5bc0b8b2 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3bef60,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/canvas/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194694, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805615, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=1295, blocks=4, blksize=16384, flags=0x0, gen=0xad25808e }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be030,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/diagrams/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194708, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805702, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=847, blocks=4, blksize=16384, flags=0x0, gen=0x36158dd0 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be8d0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/getstring/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194710, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805703, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=612, blocks=4, blksize=16384, flags=0x0, gen=0x447ed659 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3ed4e0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ico/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194711, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805718, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=292, blocks=4, blksize=16384, flags=0x0, gen=0xba0b4a85 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3beab0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/khim/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194717, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805719, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=534, blocks=4, blksize=16384, flags=0x0, gen=0x6a22448b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be300,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mentry/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194569, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803967, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=792, blocks=4, blksize=16384, flags=0x0, gen=0x2f3d18f1 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e20c0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/scrollutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194618, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4804319, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=840, blocks=4, blksize=16384, flags=0x0, gen=0x9ac4c3fc }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4653939884032/0x43b946f0000
58849 wish8.5 CALL lstat(0x43acb3e2990,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tablelist/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194640, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4804801, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=827, blocks=4, blksize=16384, flags=0x0, gen=0x3c0133e8 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be390,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/menubar/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194721, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805751, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=299, blocks=4, blksize=16384, flags=0x0, gen=0xdaded6cb }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e2cc0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntext/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194607, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803831, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=132, blocks=4, blksize=16384, flags=0x0, gen=0x9251968b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3ed9f0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/plotchart/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194609, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803975, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=321, blocks=4, blksize=16384, flags=0x0, gen=0x3c12ca24 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be570,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/shtmlview/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194636, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4804654, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=187, blocks=4, blksize=16384, flags=0x0, gen=0xa2c7980b }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be060,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tooltip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194659, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805486, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=166, blocks=4, blksize=16384, flags=0x0, gen=0x39087d8d }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e2bd0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wcb/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194662, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805513, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=427, blocks=4, blksize=16384, flags=0x0, gen=0xed8603b8 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e2f30,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widget/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194752, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805871, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=1144, blocks=4, blksize=16384, flags=0x0, gen=0xf8db9fa4 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43ad9cfe7b0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194679, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805565, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=237, blocks=4, blksize=16384, flags=0x0, gen=0x48d75bd8 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3be600,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/controlwidget/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194681, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805567, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=903, blocks=4, blksize=16384, flags=0x0, gen=0x55bdd561 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e4930,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/style/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194733, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805767, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=684, blocks=4, blksize=16384, flags=0x0, gen=0xc6cf9768 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e4090,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tkpiechart/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194743, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805864, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=154, blocks=4, blksize=16384, flags=0x0, gen=0xcf3dd75a }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e48a0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetv/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194761, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805887, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=146, blocks=4, blksize=16384, flags=0x0, gen=0xcfa6db91 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3e2d50,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.6/pkgIndex.tcl"
58849 wish8.5 RET lstat -1 errno 2 No such file or directory
58849 wish8.5 CALL lstat(0x43acb3e2180,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.6/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1218404, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4892927, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371422<"Sep 26 18:23:42 2024">, ctime=1731074898<"Nov 8 14:08:18 2024">.525976389, size=157, blocks=4, blksize=16384, flags=0x0, gen=0xec7530cd }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/itcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl/itcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cdb360,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/itcl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193300, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4795009, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1727375138<"Sep 26 19:25:38 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.485977535, size=186, blocks=4, blksize=16384, flags=0x0, gen=0x58a7fa54 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cdb360,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/itcl/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4649716817920/0x43a98b82000
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 186 bytes
"# Tcl package index file, version 1.0
if {![package vsatisfies [package present Tcl] 8.5]} {return}
package ifneeded Itcl 3.4 [list load [file join $dir ../.. "libitcl34.\
so.0.0"] Itcl]
"
58849 wish8.5 RET read 186/0xba
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/0compatibility"
58849 wish8.5 NAMI "/usr/local/lib/tcl/0compatibility"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4870,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/0compatibility/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193306, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796881, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=1048, blocks=4, blksize=16384, flags=0x0, gen=0xfdd32640 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4870,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/0compatibility/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 1048 bytes
"# Compatibility wrapper for deprecated packages.
##
# Stages
# [D1] Next Release - Noted deprecated, with redirection wrappers
# [D2] Release After - Wrappers become Blockers, throwing error notin\
g redirection
# [D3] Release Beyond - All removed.
##
# Currently in deprecation
# - D1 doctools::path (doctools2base)
# - D1 doctools::config (doctools2base)
# - D1 configuration (pt)
# - D1 paths (pt)
#
# :Attention:
# - Original `doctools::paths` Tcl 8.4 required
# Replacement `fileutilutil::paths` Tcl 8.5 required!
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded configuration 1 [list source [file join $dir p_c\
onfig.tcl]]
package ifneeded doctools::config 0.1 [list source [file join $dir d_c\
onfig.tcl]]
package ifneeded doctools::paths 0.1 [list source [file join $dir d_p\
aths.tcl]]
package ifneeded paths 1 [list source [file join $dir p_p\
aths.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
"
58849 wish8.5 RET read 1048/0x418
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32c058,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/amazon-s3"
58849 wish8.5 NAMI "/usr/local/lib/tcl/amazon-s3"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd48a0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/amazon-s3/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193588, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799744, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=299, blocks=4, blksize=16384, flags=0x0, gen=0x573d507 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd48a0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/amazon-s3/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 299 bytes
"# pkgIndex.tcl --
# Copyright (c) 2006 Darren New
# This is for the Amazon S3 web service packages.
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded xsxp 1.0 [list source [file join $dir xsxp.tcl]]
package ifneeded S3 1.0.3 [list source [file join $dir S3.tcl]]
"
58849 wish8.5 RET read 299/0x12b
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base64"
58849 wish8.5 NAMI "/usr/local/lib/tcl/base64"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce17e0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base64/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193313, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796934, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=360, blocks=4, blksize=16384, flags=0x0, gen=0x9448250b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce17e0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base64/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 360 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded base64 2.5 [list source [file join $dir base64.tcl]\
]
package ifneeded uuencode 1.1.5 [list source [file join $dir uuencode.\
tcl]]
package ifneeded yencode 1.1.3 [list source [file join $dir yencode.t\
cl]]
package ifneeded ascii85 1.0 [list source [file join $dir ascii85.t\
cl]]
"
58849 wish8.5 RET read 360/0x168
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/cache"
58849 wish8.5 NAMI "/usr/local/lib/tcl/cache"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4690,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/cache/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193318, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796942, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=140, blocks=4, blksize=16384, flags=0x0, gen=0xc669c651 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4690,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/cache/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 140 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded cache::async 0.3.1 [list source [file join $dir async\
.tcl]]
"
58849 wish8.5 RET read 140/0x8c
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clay"
58849 wish8.5 NAMI "/usr/local/lib/tcl/clay"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd46c0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clay/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193321, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796983, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=599, blocks=4, blksize=16384, flags=0x0, gen=0xc53dbf28 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd46c0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clay/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 599 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded clay 0.8.6 [list source [file join $dir clay.tcl]]
"
58849 wish8.5 RET read 599/0x257
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clock"
58849 wish8.5 NAMI "/usr/local/lib/tcl/clock"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1450,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clock/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193782, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800901, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=220, blocks=4, blksize=16384, flags=0x0, gen=0x903e6b90 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1450,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/clock/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 220 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded clock::rfc2822 0.1 [list source [file join $dir rfc28\
22.tcl]]
package ifneeded clock::iso8601 0.1 [list source [file join $dir iso86\
01.tcl]]
"
58849 wish8.5 RET read 220/0xdc
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/coroutine"
58849 wish8.5 NAMI "/usr/local/lib/tcl/coroutine"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe5d0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/coroutine/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193327, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796951, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=236, blocks=4, blksize=16384, flags=0x0, gen=0xfaec13c1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe5d0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/coroutine/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 236 bytes
"if {![package vsatisfies [package provide Tcl] 8.6]} return
package ifneeded coroutine 1.3 [
list source [file join $dir coroutine.tcl]]
package ifneeded coroutine::auto 1.2 [
list source [file join $dir coro_auto.tcl]]
"
58849 wish8.5 RET read 236/0xec
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/crc"
58849 wish8.5 NAMI "/usr/local/lib/tcl/crc"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cdb570,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/crc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193331, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796998, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=340, blocks=4, blksize=16384, flags=0x0, gen=0x9c67da8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cdb570,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/crc/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 340 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded cksum 1.1.4 [list source [file join $dir cksum.tcl]]
package ifneeded crc16 1.1.4 [list source [file join $dir crc16.tcl]]
package ifneeded crc32 1.3.3 [list source [file join $dir crc32.tcl]]
package ifneeded sum 1.1.2 [list source [file join $dir sum.tcl]]
"
58849 wish8.5 RET read 340/0x154
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/debug"
58849 wish8.5 NAMI "/usr/local/lib/tcl/debug"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cdb510,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/debug/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193334, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797015, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=393, blocks=4, blksize=16384, flags=0x0, gen=0xa9082be5 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cdb510,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/debug/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 393 bytes
"if {![package vsatisfies [package require Tcl] 8.5]} return
package ifneeded debug 1.0.6 [list source [file join $dir d\
ebug.tcl]]
package ifneeded debug::heartbeat 1.0.1 [list source [file join $dir h\
eartbeat.tcl]]
package ifneeded debug::timestamp 1 [list source [file join $dir t\
imestamp.tcl]]
package ifneeded debug::caller 1.1 [list source [file join $dir c\
aller.tcl]]
"
58849 wish8.5 RET read 393/0x189
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/dns"
58849 wish8.5 NAMI "/usr/local/lib/tcl/dns"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cdb4b0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/dns/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193342, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797071, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=358, blocks=4, blksize=16384, flags=0x0, gen=0xfbe1e28d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cdb4b0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/dns/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 358 bytes
"# pkgIndex.tcl -
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded dns 1.5.0 [list source [file join $dir dns.tcl]]
package ifneeded resolv 1.0.3 [list source [file join $dir resolv.tcl]\
]
package ifneeded ip 1.4 [list source [file join $dir ip.tcl]]
package ifneeded spf 1.1.1 [list source [file join $dir spf.tcl]]
"
58849 wish8.5 RET read 358/0x166
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools"
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe9c0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193385, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797248, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=489, blocks=4, blksize=16384, flags=0x0, gen=0x28159677 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe9c0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 489 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded doctools 1.5.6 [list source [file join $di\
r doctools.tcl]]
package ifneeded doctools::toc 1.2 [list source [file join $di\
r doctoc.tcl]]
package ifneeded doctools::idx 1.1 [list source [file join $di\
r docidx.tcl]]
package ifneeded doctools::cvs 1 [list source [file join $di\
r cvs.tcl]]
package ifneeded doctools::changelog 1.1 [list source [file join $di\
r changelog.tcl]]
"
58849 wish8.5 RET read 489/0x1e9
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2base"
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2base"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be180,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2base/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193387, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797250, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=1004, blocks=4, blksize=16384, flags=0x0, gen=0x4607129b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be180,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2base/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 1004 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
# Packages for the doctools {idx,toc,doc} v2 implementation
# (still v1.1 doc{idx,toc} languages).
# Supporting packages
# - Handling text generation, the nroff man.macros definitions,
# HTML/XML generation, and the default CSS style
# - Handling of message catalogs as packages.
# - Recursive descent parser for Tcl strings (as expected by 'subst -n\
ovariables').
package ifneeded doctools::text 0.1 [list source [file jo\
in $dir text.tcl]]
package ifneeded doctools::nroff::man_macros 0.1 [list source [file jo\
in $dir nroff_manmacros.tcl]]
package ifneeded doctools::html 0.1 [list source [file jo\
in $dir html.tcl]]
package ifneeded doctools::html::cssdefaults 0.1 [list source [file jo\
in $dir html_cssdefaults.tcl]]
package ifneeded doctools::msgcat 0.1 [list source [file jo\
in $dir msgcat.tcl]]
package ifneeded doctools::tcl::parse 0.1 [list source [file jo\
in $dir tcl_parse.tcl]]
"
58849 wish8.5 RET read 1004/0x3ec
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2idx"
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2idx"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3bec60,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2idx/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193391, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797254, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=2063, blocks=8, blksize=16384, flags=0x0, gen=0x38094252 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3bec60,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2idx/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 2063 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
# Packages for the doctools idx v2 implementation
# (still v1.1 docidx language).
# - Index container, mutable index objects
# - Export and import management
# - Export and import plugins
# - Parser for docidx markup, and handling serializations
# - Message catalogs for the parser
package ifneeded doctools::idx 2 [list source [fil\
e join $dir container.tcl]]
package ifneeded doctools::idx::export 0.2.1 [list source [fil\
e join $dir export.tcl]]
package ifneeded doctools::idx::export::docidx 0.1 [list source [file \
join $dir export_docidx.tcl]]
package ifneeded doctools::idx::export::html 0.2 [list source [file \
join $dir export_html.tcl]]
package ifneeded doctools::idx::export::json 0.1 [list source [file \
join $dir export_json.tcl]]
package ifneeded doctools::idx::export::nroff 0.3 [list source [file \
join $dir export_nroff.tcl]]
package ifneeded doctools::idx::export::text 0.2 [list source [file \
join $dir export_text.tcl]]
package ifneeded doctools::idx::export::wiki 0.2 [list source [file \
join $dir export_wiki.tcl]]
package ifneeded doctools::idx::import::docidx 0.1 [list source [file \
join $dir import_docidx.tcl]]
package ifneeded doctools::idx::import::json 0.1 [list source [file \
join $dir import_json.tcl]]
package ifneeded doctools::idx::parse 0.1 [list source [file \
join $dir parse.tcl]]
package ifneeded doctools::idx::structure 0.1 [list source [file \
join $dir structure.tcl]]
package ifneeded doctools::msgcat::idx::c 0.1 [list source [file \
join $dir msgcat_c.tcl]]
package ifneeded doctools::msgcat::idx::de 0.1 [list source [file \
join $dir msgcat_de.tcl]]
package ifneeded doctools::msgcat::idx::en 0.1 [list source [file \
join $dir msgcat_en.tcl]]
package ifneeded doctools::msgcat::idx::fr 0.1 [list source [file \
join $dir msgcat_fr.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded doctools::idx::import 0.2.1 [list source [fil\
e join $dir import.tcl]]
"
58849 wish8.5 RET read 2063/0x80f
58849 wish8.5 CALL mmap(0,0x2000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652632776704/0x43b46862000
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2toc"
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2toc"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1a80,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2toc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193395, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797262, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=2061, blocks=8, blksize=16384, flags=0x0, gen=0x4a725353 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1a80,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/doctools2toc/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 2061 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
# Packages for the doctools toc v2 implementation
# (still v1.1 doctoc language).
# - Index container, mutable toc objects
# - Export and import management
# - Export and import plugins
# - Parser for doctoc markup, and handling serializations
# - Message catalogs for the parser
package ifneeded doctools::toc 2 [list source [fil\
e join $dir container.tcl]]
package ifneeded doctools::toc::export 0.2.1 [list source [fil\
e join $dir export.tcl]]
package ifneeded doctools::toc::export::doctoc 0.1 [list source [file \
join $dir export_doctoc.tcl]]
package ifneeded doctools::toc::export::html 0.1 [list source [file \
join $dir export_html.tcl]]
package ifneeded doctools::toc::export::json 0.1 [list source [file \
join $dir export_json.tcl]]
package ifneeded doctools::toc::export::nroff 0.2 [list source [file \
join $dir export_nroff.tcl]]
package ifneeded doctools::toc::export::text 0.1 [list source [file \
join $dir export_text.tcl]]
package ifneeded doctools::toc::export::wiki 0.1 [list source [file \
join $dir export_wiki.tcl]]
package ifneeded doctools::toc::import::doctoc 0.1 [list source [file \
join $dir import_doctoc.tcl]]
package ifneeded doctools::toc::import::json 0.1 [list source [file \
join $dir import_json.tcl]]
package ifneeded doctools::toc::parse 0.1 [list source [file \
join $dir parse.tcl]]
package ifneeded doctools::toc::structure 0.1 [list source [file \
join $dir structure.tcl]]
package ifneeded doctools::msgcat::toc::c 0.1 [list source [file \
join $dir msgcat_c.tcl]]
package ifneeded doctools::msgcat::toc::de 0.1 [list source [file \
join $dir msgcat_de.tcl]]
package ifneeded doctools::msgcat::toc::en 0.1 [list source [file \
join $dir msgcat_en.tcl]]
package ifneeded doctools::msgcat::toc::fr 0.1 [list source [file \
join $dir msgcat_fr.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded doctools::toc::import 0.2.1 [list source [fil\
e join $dir import.tcl]]
"
58849 wish8.5 RET read 2061/0x80d
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fileutil"
58849 wish8.5 NAMI "/usr/local/lib/tcl/fileutil"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe780,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fileutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193400, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797270, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=810, blocks=4, blksize=16384, flags=0x0, gen=0x816115f7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe780,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fileutil/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 810 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded fileutil 1.16.1 [list source [file join $dir fileutil\
.tcl]]
if {![package vsatisfies [package provide Tcl] 8.3]} {return}
package ifneeded fileutil::traverse 0.6 [list source [file join $dir t\
raverse.tcl]]
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded fileutil::multi 0.1 [list source [file join $di\
r multi.tcl]]
package ifneeded fileutil::multi::op 0.5.3 [list source [file join $di\
r multiop.tcl]]
package ifneeded fileutil::decode 0.2.1 [list source [file join $di\
r decode.tcl]]
package ifneeded fileutil::paths 1 [list source [file join $di\
r paths.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} return
if {![package vsatisfies [package provide Tcl] 8.6]} return
"
58849 wish8.5 RET read 810/0x32a
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fumagic"
58849 wish8.5 NAMI "/usr/local/lib/tcl/fumagic"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be720,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fumagic/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193406, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4797334, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=465, blocks=4, blksize=16384, flags=0x0, gen=0xff8d1013 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be720,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/fumagic/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 465 bytes
"if {![package vsatisfies [package provide Tcl] 8.6]} {return}
# Recognizers
package ifneeded fileutil::magic::filetype 2.0.1 [list source [file jo\
in $dir filetypes.tcl]]
# Runtime
package ifneeded fileutil::magic::rt 3.0 [list source [file join $dir \
rtcore.tcl]]
# Compiler packages
package ifneeded fileutil::magic::cgen 1.3.0 [list source [file join\
$dir cgen.tcl]]
package ifneeded fileutil::magic::cfront 1.3.0 [list source [file join\
$dir cfront.tcl]]
"
58849 wish8.5 RET read 465/0x1d1
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/generator"
58849 wish8.5 NAMI "/usr/local/lib/tcl/generator"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe360,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/generator/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193410, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798022, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=213, blocks=4, blksize=16384, flags=0x0, gen=0x81f72f79 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe360,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/generator/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 213 bytes
"# Requires Tcl 8.6 and higher, to have the coroutines underlying gener\
ators.
if {![package vsatisfies [package provide Tcl] 8.6]} return
package ifneeded generator 0.2 [list source [file join $dir generator.\
tcl]]
"
58849 wish8.5 RET read 213/0xd5
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpd"
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpd"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be3f0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpd/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193413, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798054, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=134, blocks=4, blksize=16384, flags=0x0, gen=0x86cab88f }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be3f0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpd/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 134 bytes
"
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded httpd 4.3.5 [list source [file join $dir httpd.tcl]]
"
58849 wish8.5 RET read 134/0x86
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpwget"
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpwget"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3bef30,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpwget/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193623, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799886, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=538, blocks=4, blksize=16384, flags=0x0, gen=0x2e488359 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3bef30,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/httpwget/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 538 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
package ifneeded http::wget 0.1 [list source [file join $dir wget.tcl]\
]
"
58849 wish8.5 RET read 538/0x21a
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/inifile"
58849 wish8.5 NAMI "/usr/local/lib/tcl/inifile"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1210,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/inifile/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193418, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798014, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=136, blocks=4, blksize=16384, flags=0x0, gen=0x8c33dd0a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1210,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/inifile/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 136 bytes
"if { ![package vsatisfies [package provide Tcl] 8.2] } { return }
package ifneeded inifile 0.3.2 [list source [file join $dir ini.tcl]]
"
58849 wish8.5 RET read 136/0x88
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/irc"
58849 wish8.5 NAMI "/usr/local/lib/tcl/irc"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1900,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/irc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193422, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798062, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=265, blocks=4, blksize=16384, flags=0x0, gen=0xb947b7f3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1900,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/irc/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 265 bytes
"# pkgIndex.tcl -*- tcl -*-
if { ![package vsatisfies [package provide Tcl] 8.6] } {
# PRAGMA: returnok
return
}
package ifneeded irc 0.7.0 [list source [file join $dir irc.tcl]]
package ifneeded picoirc 0.13.0 [list source [file join $dir picoirc.t\
cl]]
"
58849 wish8.5 RET read 265/0x109
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/json"
58849 wish8.5 NAMI "/usr/local/lib/tcl/json"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce18a0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/json/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193425, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798083, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=313, blocks=4, blksize=16384, flags=0x0, gen=0xe55b7987 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce18a0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/json/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 313 bytes
"# Tcl package index file, version 1.1
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded json 1.3.4 [list source [file join $dir json.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded json::write 1.0.4 [list source [file join $dir json_w\
rite.tcl]]
"
58849 wish8.5 RET read 313/0x139
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ldap"
58849 wish8.5 NAMI "/usr/local/lib/tcl/ldap"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4120,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ldap/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193429, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798125, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=271, blocks=4, blksize=16384, flags=0x0, gen=0xedf5e654 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4120,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ldap/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 271 bytes
"# Tcl package index file, version 1.1
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded ldap 1.10.1 [list source [file join $dir ldap.tcl]]
# the OO level wrapper for ldap
package ifneeded ldapx 1.2 [list source [file join $dir ldapx.tcl]]
"
58849 wish8.5 RET read 271/0x10f
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/log"
58849 wish8.5 NAMI "/usr/local/lib/tcl/log"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3bee10,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/log/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193433, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798127, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=509, blocks=4, blksize=16384, flags=0x0, gen=0x6884dc1b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3bee10,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/log/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 509 bytes
"if {![package vsatisfies [package provide Tcl] 8]} {return}
package ifneeded log 1.4 [list source [file join $dir log.tcl]]
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded logger 0.9.4 [list source [file join $dir l\
ogger.tcl]]
package ifneeded logger::appender 1.3 [list source [file join $dir l\
oggerAppender.tcl]]
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded logger::utils 1.3.1 [list source [file join $dir l\
oggerUtils.tcl]]
"
58849 wish8.5 RET read 509/0x1fd
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/math"
58849 wish8.5 NAMI "/usr/local/lib/tcl/math"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3beb10,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/math/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193456, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798488, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=3290, blocks=8, blksize=16384, flags=0x0, gen=0xa79f7dbc }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3beb10,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/math/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 3290 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded math 1.2.5 [list source [file join\
$dir math.tcl]]
package ifneeded math::fuzzy 0.2.1 [list source [file join\
$dir fuzzy.tcl]]
package ifneeded math::complexnumbers 1.0.2 [list source [file join\
$dir qcomplex.tcl]]
package ifneeded math::constants 1.0.2 [list source [file join\
$dir constants.tcl]]
package ifneeded math::polynomials 1.0.1 [list source [file join\
$dir polynomials.tcl]]
package ifneeded math::rationalfunctions 1.0.1 [list source [file join\
$dir rational_funcs.tcl]]
package ifneeded math::fourier 1.0.2 [list source [file join\
$dir fourier.tcl]]
if {![package vsatisfies [package provide Tcl] 8.3]} {return}
package ifneeded math::roman 1.0 [list source [file join\
$dir romannumerals.tcl]]
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded math::optimize 1.0.1 [list source [file join\
$dir optimize.tcl]]
package ifneeded math::interpolate 1.1.2 [list source [file join\
$dir interpolate.tcl]]
package ifneeded math::bignum 3.1.1 [list source [file join\
$dir bignum.tcl]]
package ifneeded math::bigfloat 1.2.3 [list source [file join\
$dir bigfloat.tcl]]
package ifneeded math::machineparameters 0.1 [list source [file join\
$dir machineparameters.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded math::calculus 1.0 [list source [file join\
$dir calculus.tcl]]
# statistics depends on linearalgebra (for multi-variate linear regres\
sion).
# statistics depends on optimize (for logistic regression).
package ifneeded math::statistics 1.5.0 [list source [file join\
$dir statistics.tcl]]
package ifneeded math::linearalgebra 1.1.6 [list source [file join\
$dir linalg.tcl]]
package ifneeded math::calculus::symdiff 1.0.1 [list source [file join\
$dir symdiff.tcl]]
package ifneeded math::bigfloat 2.0.3 [list source [file join\
$dir bigfloat2.tcl]]
package ifneeded math::numtheory 1.1.3 [list source [file join\
$dir numtheory.tcl]]
package ifneeded math::decimal 1.0.4 [list source [file join\
$dir decimal.tcl]]
package ifneeded math::geometry 1.4.1 [list source [file join\
$dir geometry.tcl]]
package ifneeded math::trig 1.0 [list source [file join\
$dir trig.tcl]]
package ifneeded math::quasirandom 1.0 [list source [file join\
$dir quasirandom.tcl]]
package ifneeded math::special 0.5.2 [list source [file join\
$dir special.tcl]]
if {![package vsatisfies [package require Tcl] 8.6]} {return}
package ifneeded math::exact 1.0.1 [list source [file join\
$dir exact.tcl]]
package ifneeded math::PCA 1.0 [list source [file join\
$dir pca.tcl]]
package ifneeded math::figurate 1.0 [list source [file join\
$dir figurate.tcl]]
package ifneeded math::filters 0.1 [list source [file join\
$dir filtergen.tcl]]
package ifneeded math::probopt 1.0 [list source [file join\
$dir probopt.tcl]]
package ifneeded math::changepoint 0.1 [list source [file join\
$dir changepoint.tcl]]
package ifneeded math::combinatorics 2.0 [list source [file join\
$dir combinatoricsExt.tcl]]
"
58849 wish8.5 RET read 3290/0xcda
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/markdown"
58849 wish8.5 NAMI "/usr/local/lib/tcl/markdown"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be930,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/markdown/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193436, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798159, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=138, blocks=4, blksize=16384, flags=0x0, gen=0xd8d4845 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be930,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/markdown/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 138 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded Markdown 1.2.2 [list source [file join $dir markdown.\
tcl]]
"
58849 wish8.5 RET read 138/0x8a
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4270,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193475, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798503, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=195, blocks=4, blksize=16384, flags=0x0, gen=0x399ca967 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4270,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 195 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded md5 2.0.8 [list source [file join $dir md5x.tcl]]
package ifneeded md5 1.4.5 [list source [file join $dir md5.tcl]]
"
58849 wish8.5 RET read 195/0xc3
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mime"
58849 wish8.5 NAMI "/usr/local/lib/tcl/mime"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfea50,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mime/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193478, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798535, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=261, blocks=4, blksize=16384, flags=0x0, gen=0x1c98af97 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfea50,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mime/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 261 bytes
"if {![package vsatisfies [package provide Tcl] 8.3]} {return}
package ifneeded smtp 1.5.1 [list source [file join $dir smtp.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded mime 1.7.0 [list source [file join $dir mime.tcl]]
"
58849 wish8.5 RET read 261/0x105
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mkdoc"
58849 wish8.5 NAMI "/usr/local/lib/tcl/mkdoc"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfedb0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mkdoc/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193482, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798583, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=132, blocks=4, blksize=16384, flags=0x0, gen=0xa99cf1e4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfedb0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mkdoc/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 132 bytes
"if {![package vsatisfies [package require Tcl] 8.6]} {return}
package ifneeded mkdoc 0.7.0 [list source [file join $dir mkdoc.tcl]]
"
58849 wish8.5 RET read 132/0x84
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oometa"
58849 wish8.5 NAMI "/usr/local/lib/tcl/oometa"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4150,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oometa/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193668, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800270, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=321, blocks=4, blksize=16384, flags=0x0, gen=0xa03f53ff }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4150,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oometa/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 321 bytes
"#checker -scope global exclude warnUndefinedVar
# var in question is 'dir'.
if {![package vsatisfies [package provide Tcl] 8.6]} {
# PRAGMA: returnok
return
}
package ifneeded oo::meta 0.7.1 [list source [file join $dir oometa.\
tcl]]
package ifneeded oo::option 0.3.1 [list source [file join $dir oooptio\
n.tcl]]
"
58849 wish8.5 RET read 321/0x141
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/practcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl/practcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1db0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/practcl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193507, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798629, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=142, blocks=4, blksize=16384, flags=0x0, gen=0x29191c6d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1db0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/practcl/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 142 bytes
"###
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded practcl 0.16.4 [list source [file join $dir practcl.t\
cl]]
"
58849 wish8.5 RET read 142/0x8e
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/processman"
58849 wish8.5 NAMI "/usr/local/lib/tcl/processman"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce17b0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/processman/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193510, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798631, atime=1731660490<"Nov 15 08:48:10 2024">.571458932, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=176, blocks=4, blksize=16384, flags=0x0, gen=0xcd3d608d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce17b0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/processman/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 176 bytes
"# -*- tcl -*-
package ifneeded odie::processman 0.6 [list source [file join $dir pro\
cessman.tcl]]
package ifneeded processman 0.6 [list source [file join $dir processma\
n.tcl]]
"
58849 wish8.5 RET read 176/0xb0
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pt"
58849 wish8.5 NAMI "/usr/local/lib/tcl/pt"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce11b0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pt/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193514, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4798853, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=4331, blocks=12, blksize=16384, flags=0x0, gen=0xcbb13f1d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce11b0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pt/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} return
# General utilities.
package ifneeded char 1.0.2 [list source [file join $dir char\
.tcl]]
package ifneeded text::write 1 [list source [file join $dir text_wri\
te.tcl]]
# AST support
package ifneeded pt::ast 1.1 [list source [file join $dir pt_astre\
e.tcl]]
# General parser support. Currently only conversion of structured
# syntax errors (or parts thereof) into a human-readable form.
package ifneeded pt::util 1.1 [list source [file join $dir pt_util.\
tcl]]
# Parsing Expression support
package ifneeded pt::pe 1.0.2 [list source [file join $dir pt_p\
expression.tcl]]
package ifneeded pt::pe::op 1.0.1 [list source [file join $dir pt_p\
expr_op.tcl]]
# Parsing Expression Grammar support.
package ifneeded pt::peg 1 [list source [file join $dir\
pt_pegrammar.tcl]]
package ifneeded pt::peg::container 1 [list source [file join $dir\
pt_peg_container.tcl]]
package ifneeded pt::peg::interp 1.0.1 [list source [file join $dir\
pt_peg_interp.tcl]]
package ifneeded pt::peg::op 1.1.0 [list source [file join $dir\
pt_peg_op.tcl]]
package ifneeded pt::parse::peg 1.0.1 [list source [file join $dir\
pt_parse_peg.tcl]]
# Export/import managers. Assumes an untrusted environment.
package ifneeded pt::peg::export 1.0.1 [list source [file j\
oin $dir pt_peg_export.tcl]]
package ifneeded pt::peg::import 1.0.1 [list source [file j\
oin $dir pt_peg_import.tcl]]
# Export plugins, connecting manager to the core conversion packages.
package ifneeded pt::peg::export::container 1 [list source [file join \
$dir pt_peg_export_container.tcl]]
package ifneeded pt::peg::export::json 1 [list source [file join \
$dir pt_peg_export_json.tcl]]
package ifneeded pt::peg::export::peg 1 [list source [file join \
$dir pt_peg_export_peg.tcl]]
# Import plugins, connecting manager to the core conversion packages.
package ifneeded pt::peg::import::json 1 [list source [file join \
$dir pt_peg_import_json.tcl]]
package ifneeded pt::peg::import::peg 1 [list source [file join \
$dir pt_peg_import_peg.tcl]]
# Export core functionality: Conversion from PEG to a specific format.
package ifneeded pt::peg::to::container 1 [list source [file join \
$dir pt_peg_to_container.tcl]]
package ifneeded pt::peg::to::cparam 1.1.3 [list source [file join \
$dir pt_peg_to_cparam.tcl]]
package ifneeded pt::peg::to::json 1 [list source [file join \
$dir pt_peg_to_json.tcl]]
package ifneeded pt::peg::to::param 1.0.1 [list source [file join \
$dir pt_peg_to_param.tcl]]
package ifneeded pt::peg::to::peg 1.0.2 [list source [file join \
$dir pt_peg_to_peg.tcl]]
package ifneeded pt::peg::to::tclparam 1.0.3 [list source [file join \
$dir pt_peg_to_tclparam.tcl]]
# Import core functionality: Conversion from a specific format to PEG.
package ifneeded pt::peg::from::json 1 [list source [file join $d\
ir pt_peg_from_json.tcl]]
package ifneeded pt::peg::from::peg 1.0.3 [list source [file join $d\
ir pt_peg_from_peg.tcl]]
# PARAM runtime.
package ifneeded pt::rde 1.1 [list source [file join $dir pt_rden\
gine.tcl]]
package ifneeded pt::rde::oo 1.1 [list source [file join $dir pt_rden\
gine_oo.tcl]]
# Note: The last two numbers are the rde::nx version itself. The
# preceding version information is the rde::oo version it is based on.
package ifneeded pt::rde::nx 1.1.1.1 [list source [file join $dir pt_\
rdengine_nx.tcl]]
# PEG grammar specification, as CONTAINER
package ifneeded pt::peg::container::peg 1 [list source [file join $di\
r pt_peg_container_peg.tcl]]
# */PARAM support (canned configurations).
package ifneeded pt::cparam::configuration::critcl 1.0.2 [list source\
[file join $dir pt_cparam_config_critcl.tcl]]
package ifneeded pt::cparam::configuration::tea 0.1 [list source\
[file join $dir pt_cparam_config_tea.tcl]]
package ifneeded pt::tclparam::configuration::snit 1.0.2 [list source\
[file join $dir pt_tclparam_config_snit.tcl]]
package ifneeded pt::tclparam::configuration::tcloo 1.0.4 [list source\
[file join $dir pt_tclpara"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652636643328/0x43b46c12000
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 235 bytes
"m_config_tcloo.tcl]]
package ifneeded pt::tclparam::configuration::nx 1.0.1 [list source\
[file join $dir pt_tclparam_config_nx.tcl]]
# Parser generator core.
package ifneeded pt::pgen 1.1 [list source [file join $dir pt_pgen.tcl\
]]
"
58849 wish8.5 RET read 235/0xeb
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sha1"
58849 wish8.5 NAMI "/usr/local/lib/tcl/sha1"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3bee40,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sha1/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193526, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799333, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=816, blocks=4, blksize=16384, flags=0x0, gen=0xe937d689 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3bee40,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sha1/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 816 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded sha256 1.0.4 [list source [file join $dir sha256.tcl]\
]
package ifneeded sha256c 1.0.4 [list source [file join $dir sha256c.tc\
l]]
package ifneeded sha1 2.0.4 [list source [file join $dir sha1.tcl]]
package ifneeded sha1 1.1.1 [list source [file join $dir sha1v1.tcl]\
]
"
58849 wish8.5 RET read 816/0x330
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/simulation"
58849 wish8.5 NAMI "/usr/local/lib/tcl/simulation"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1840,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/simulation/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193535, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799359, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=262, blocks=4, blksize=16384, flags=0x0, gen=0xbcf7e680 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1840,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/simulation/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 262 bytes
"package ifneeded simulation::random 0.4.0 [list source [file join $dir\
random.tcl]]
package ifneeded simulation::montecarlo 0.1 [list source [file join $d\
ir montecarlo.tcl]]
package ifneeded simulation::annealing 0.2 [list source [file join $di\
r annealing.tcl]]
"
58849 wish8.5 RET read 262/0x106
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/struct"
58849 wish8.5 NAMI "/usr/local/lib/tcl/struct"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be8a0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/struct/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193548, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799614, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=1924, blocks=4, blksize=16384, flags=0x0, gen=0xe37143ea }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be8a0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/struct/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 1924 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded struct 2.1 [list source [file join $dir \
struct.tcl]]
package ifneeded struct 1.4 [list source [file join $dir \
struct1.tcl]]
package ifneeded struct::queue 1.4.5 [list source [file join $dir \
queue.tcl]]
package ifneeded struct::stack 1.5.3 [list source [file join $dir \
stack.tcl]]
package ifneeded struct::tree 2.1.2 [list source [file join $dir \
tree.tcl]]
package ifneeded struct::matrix 2.0.4 [list source [file join $dir \
matrix.tcl]]
package ifneeded struct::pool 1.2.3 [list source [file join $dir \
pool.tcl]]
package ifneeded struct::record 1.2.2 [list source [file join $dir \
record.tcl]]
package ifneeded struct::set 2.2.3 [list source [file join $dir \
sets.tcl]]
package ifneeded struct::prioqueue 1.4 [list source [file join $dir \
prioqueue.tcl]]
package ifneeded struct::skiplist 1.3 [list source [file join $dir \
skiplist.tcl]]
package ifneeded struct::graph 1.2.1 [list source [file join $dir \
graph1.tcl]]
package ifneeded struct::tree 1.2.2 [list source [file join $dir \
tree1.tcl]]
package ifneeded struct::matrix 1.2.2 [list source [file join $dir \
matrix1.tcl]]
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded struct::list 1.8.5 [list source [file join $d\
ir list.tcl]]
package ifneeded struct::list::test 1.8.4 [list source [file join $d\
ir list.test.tcl]]
package ifneeded struct::graph 2.4.3 [list source [file join $dir\
graph.tcl]]
package ifneeded struct::map 1 [list source [file join $dir\
map.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded struct::disjointset 1.1 [list source [file join $dir \
disjointset.tcl]]
package ifneeded struct::graph::op 0.11.3 [list source [file join $dir\
graphops.tcl]]
"
58849 wish8.5 RET read 1924/0x784
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/term"
58849 wish8.5 NAMI "/usr/local/lib/tcl/term"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be960,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/term/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193560, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799643, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=1151, blocks=4, blksize=16384, flags=0x0, gen=0x1291dd2f }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be960,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/term/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 1151 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} return
package ifneeded term 0.1 [list source [file join \
$dir term.tcl]]
package ifneeded term::ansi::code 0.2 [list source [file join \
$dir ansi/code.tcl]]
package ifneeded term::ansi::code::attr 0.1 [list source [file join \
$dir ansi/code/attr.tcl]]
package ifneeded term::ansi::code::ctrl 0.3 [list source [file join \
$dir ansi/code/ctrl.tcl]]
package ifneeded term::ansi::code::macros 0.1 [list source [file join \
$dir ansi/code/macros.tcl]]
package ifneeded term::ansi::ctrl::unix 0.1.1 [list source [file joi\
n $dir ansi/ctrlunix.tcl]]
package ifneeded term::ansi::send 0.2 [list source [file join \
$dir ansi/send.tcl]]
package ifneeded term::interact::menu 0.1 [list source [file join \
$dir imenu.tcl]]
package ifneeded term::interact::pager 0.1 [list source [file join \
$dir ipager.tcl]]
package ifneeded term::receive 0.1 [list source [file join \
$dir receive.tcl]]
package ifneeded term::receive::bind 0.1 [list source [file join \
$dir bind.tcl]]
package ifneeded term::send 0.1 [list source [file join \
$dir send.tcl]]
"
58849 wish8.5 RET read 1151/0x47f
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/textutil"
58849 wish8.5 NAMI "/usr/local/lib/tcl/textutil"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd44b0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/textutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193563, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799648, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=992, blocks=4, blksize=16384, flags=0x0, gen=0x13ee16ce }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd44b0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/textutil/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 992 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {
# FRINK: nocheck
return
}
package ifneeded textutil 0.9 [list source [file join $dir\
textutil.tcl]]
package ifneeded textutil::adjust 0.7.3 [list source [file join $dir\
adjust.tcl]]
package ifneeded textutil::split 0.8 [list source [file join $dir\
split.tcl]]
package ifneeded textutil::trim 0.7 [list source [file join $dir\
trim.tcl]]
package ifneeded textutil::tabify 0.7 [list source [file join $dir\
tabify.tcl]]
package ifneeded textutil::repeat 0.7 [list source [file join $dir\
repeat.tcl]]
package ifneeded textutil::string 0.8 [list source [file join $dir\
string.tcl]]
package ifneeded textutil::expander 1.3.1 [list source [file join $dir\
expander.tcl]]
package ifneeded textutil::wcswidth 35.1 [list source [file join $dir\
wcswidth.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} { return }
package ifneeded textutil::patch 0.1 [list source [file join $dir patc\
h.tcl]]
"
58849 wish8.5 RET read 992/0x3e0
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tie"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tie"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be6f0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tie/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193567, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799653, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=655, blocks=4, blksize=16384, flags=0x0, gen=0x45e04f28 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be6f0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tie/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 655 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded tie 1.2 [list source [file join $dir t\
ie.tcl]]
package ifneeded tie::std::file 1.1 [list source [file join $dir t\
ie_file.tcl]]
package ifneeded tie::std::growfile 1.1 [list source [file join $dir t\
ie_growfile.tcl]]
package ifneeded tie::std::log 1.1 [list source [file join $dir t\
ie_log.tcl]]
package ifneeded tie::std::array 1.1 [list source [file join $dir t\
ie_array.tcl]]
package ifneeded tie::std::rarray 1.1 [list source [file join $dir t\
ie_rarray.tcl]]
package ifneeded tie::std::dsource 1.1 [list source [file join $dir t\
ie_dsource.tcl]]
"
58849 wish8.5 RET read 655/0x28f
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_base"
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_base"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3d6e00,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_base/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193579, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799696, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=1338, blocks=4, blksize=16384, flags=0x0, gen=0x107cac86 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3d6e00,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_base/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 1338 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded tcl::chan::cat 1.0.3 [list source [file join $di\
r cat.tcl]]
package ifneeded tcl::chan::facade 1.0.1 [list source [file join $di\
r facade.tcl]]
package ifneeded tcl::chan::fifo 1 [list source [file join $di\
r fifo.tcl]]
package ifneeded tcl::chan::fifo2 1 [list source [file join $di\
r fifo2.tcl]]
package ifneeded tcl::chan::halfpipe 1.0.2 [list source [file join $di\
r halfpipe.tcl]]
package ifneeded tcl::chan::memchan 1.0.4 [list source [file join $di\
r memchan.tcl]]
package ifneeded tcl::chan::null 1 [list source [file join $di\
r null.tcl]]
package ifneeded tcl::chan::nullzero 1 [list source [file join $di\
r nullzero.tcl]]
package ifneeded tcl::chan::random 1 [list source [file join $di\
r random.tcl]]
package ifneeded tcl::chan::std 1.0.1 [list source [file join $di\
r std.tcl]]
package ifneeded tcl::chan::string 1.0.3 [list source [file join $di\
r string.tcl]]
package ifneeded tcl::chan::textwindow 1 [list source [file join $di\
r textwindow.tcl]]
package ifneeded tcl::chan::variable 1.0.4 [list source [file join $di\
r variable.tcl]]
package ifneeded tcl::chan::zero 1 [list source [file join $di\
r zero.tcl]]
package ifneeded tcl::randomseed 1 [list source [file join $di\
r randseed.tcl]]
"
58849 wish8.5 RET read 1338/0x53a
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/yaml"
58849 wish8.5 NAMI "/usr/local/lib/tcl/yaml"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe3f0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/yaml/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193582, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799699, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=301, blocks=4, blksize=16384, flags=0x0, gen=0x21bb3060 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe3f0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/yaml/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 301 bytes
"
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded yaml 0.4.1 [list source [file join $dir yaml.\
tcl]]
package ifneeded huddle 0.4 [list source [file join $dir huddl\
e.tcl]]
package ifneeded huddle::json 0.1 [list source [file join $dir json2\
huddle.tcl]]
"
58849 wish8.5 RET read 301/0x12d
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/zip"
58849 wish8.5 NAMI "/usr/local/lib/tcl/zip"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd47e0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/zip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193587, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799743, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=364, blocks=4, blksize=16384, flags=0x0, gen=0xd659ead1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd47e0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/zip/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 364 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded zipfile::decode 0.9 [list source [file join $dir deco\
de.tcl]]
package ifneeded zipfile::encode 0.4 [list source [file join $dir enco\
de.tcl]]
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded zipfile::mkzip 1.2.1 [list source [file join $dir mkz\
ip.tcl]]
"
58849 wish8.5 RET read 364/0x16c
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base32"
58849 wish8.5 NAMI "/usr/local/lib/tcl/base32"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3bef90,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base32/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193771, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800855, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=295, blocks=4, blksize=16384, flags=0x0, gen=0xfc53f69f }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3bef90,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/base32/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 295 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} return
package ifneeded base32 0.1 [list source [file join $dir base32.\
tcl]]
package ifneeded base32::hex 0.1 [list source [file join $dir base32h\
ex.tcl]]
package ifneeded base32::core 0.1 [list source [file join $dir base32c\
ore.tcl]]
"
58849 wish8.5 RET read 295/0x127
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/control"
58849 wish8.5 NAMI "/usr/local/lib/tcl/control"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4510,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/control/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193787, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800905, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=136, blocks=4, blksize=16384, flags=0x0, gen=0xa28923ab }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4510,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/control/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 136 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded control 0.1.3 [list source [file join $dir control.tc\
l]]
"
58849 wish8.5 RET read 136/0x88
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/defer"
58849 wish8.5 NAMI "/usr/local/lib/tcl/defer"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4210,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/defer/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193600, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799775, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=157, blocks=4, blksize=16384, flags=0x0, gen=0x907b1941 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4210,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/defer/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 157 bytes
"if {![package vsatisfies [package provide Tcl] 8.6]} {
# PRAGMA: returnok
return
}
package ifneeded defer 1 [list source [file join $dir defer.tcl]]
"
58849 wish8.5 RET read 157/0x9d
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/des"
58849 wish8.5 NAMI "/usr/local/lib/tcl/des"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3bedb0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/des/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193792, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800911, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=305, blocks=4, blksize=16384, flags=0x0, gen=0x97d69eb0 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3bedb0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/des/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 305 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {
# PRAGMA: returnok
return
}
package ifneeded des 1.1.0 [list source [file join $dir des.tcl]]
package ifneeded tclDES 1.0.0 [list source [file join $dir tcldes.tcl]\
]
package ifneeded tclDESjr 1.0.0 [list source [file join $dir tcldesjr.\
tcl]]
"
58849 wish8.5 RET read 305/0x131
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/docstrip"
58849 wish8.5 NAMI "/usr/local/lib/tcl/docstrip"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe060,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/docstrip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193605, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799782, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.166021974, size=669, blocks=4, blksize=16384, flags=0x0, gen=0x9822c495 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe060,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/docstrip/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 669 bytes
"##
## This is the file `pkgIndex.tcl',
## generated with the SAK utility
## (sak docstrip/regen).
##
## The original source files were:
##
## tcldocstrip.dtx (with options: `idx')
##
## In other words:
## **************************************
## * This Source is not the True Source *
## **************************************
## the true source is the file from which this one was generated.
##
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded docstrip 1.2\\
[list source [file join $dir docstrip.tcl]]
package ifneeded docstrip::util 1.3.1\\
[list source [file join $dir docstrip_util.tcl]]
##
##
## End of file `pkgIndex.tcl'."
58849 wish8.5 RET read 669/0x29d
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ftp"
58849 wish8.5 NAMI "/usr/local/lib/tcl/ftp"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1f30,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ftp/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193617, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799799, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=219, blocks=4, blksize=16384, flags=0x0, gen=0x9107bb80 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1f30,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ftp/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 219 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded ftp 2.4.13 [list source [file join $dir ftp.t\
cl]]
package ifneeded ftp::geturl 0.2.2 [list source [file join $dir ftp_g\
eturl.tcl]]
"
58849 wish8.5 RET read 219/0xdb
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_fa"
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_fa"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfefc0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_fa/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193853, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801127, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=411, blocks=4, blksize=16384, flags=0x0, gen=0x3bcf6310 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfefc0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_fa/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 411 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded grammar::fa 0.5 [list source [file join \
$dir fa.tcl]]
package ifneeded grammar::fa::op 0.4.1 [list source [file join \
$dir faop.tcl]]
package ifneeded grammar::fa::dacceptor 0.1.1 [list source [file join \
$dir dacceptor.tcl]]
package ifneeded grammar::fa::dexec 0.2 [list source [file join \
$dir dexec.tcl]]
"
58849 wish8.5 RET read 411/0x19b
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/http"
58849 wish8.5 NAMI "/usr/local/lib/tcl/http"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be210,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/http/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193622, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799885, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=138, blocks=4, blksize=16384, flags=0x0, gen=0x75639355 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be210,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/http/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 138 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded autoproxy 1.7 [list source [file join $dir autoproxy.\
tcl]]
"
58849 wish8.5 RET read 138/0x8a
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/map"
58849 wish8.5 NAMI "/usr/local/lib/tcl/map"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4ba0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/map/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193631, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4799955, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=452, blocks=4, blksize=16384, flags=0x0, gen=0xa8019256 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4ba0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/map/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 452 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded map::slippy 0.5 [list source [file join $\
dir map_slippy.tcl]]
package ifneeded map::slippy::fetcher 0.4 [list source [file join $\
dir map_slippy_fetcher.tcl]]
package ifneeded map::slippy::cache 0.2 [list source [file join $\
dir map_slippy_cache.tcl]]
package ifneeded map::geocode::nominatim 0.1 [list source [file join $\
dir map_geocode_nominatim.tcl]]
"
58849 wish8.5 RET read 452/0x1c4
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md4"
58849 wish8.5 NAMI "/usr/local/lib/tcl/md4"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4840,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md4/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193644, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800031, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=185, blocks=4, blksize=16384, flags=0x0, gen=0xd419d4d7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4840,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md4/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 185 bytes
"# This package has been tested with tcl 8.2.3 and above.
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded md4 1.0.7 [list source [file join $dir md4.tcl]]
"
58849 wish8.5 RET read 185/0xb9
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5crypt"
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5crypt"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4ae0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5crypt/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193892, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801263, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=167, blocks=4, blksize=16384, flags=0x0, gen=0x4ec78d6b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4ae0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/md5crypt/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 167 bytes
"# package index for md5crypt
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded md5crypt 1.1.0 [list source [file join $dir md5crypt.\
tcl]]
"
58849 wish8.5 RET read 167/0xa7
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nettool"
58849 wish8.5 NAMI "/usr/local/lib/tcl/nettool"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4c00,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nettool/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193661, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800167, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=285, blocks=4, blksize=16384, flags=0x0, gen=0x8519a71d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4c00,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nettool/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 285 bytes
"
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
# Backward compatible alias
package ifneeded nettool::available_ports 0.1 {package require nettool\
; package provide nettool::available_ports 0.1}
package ifneeded nettool 0.5.2 [list source [file join $dir nettool.tc\
l]]
"
58849 wish8.5 RET read 285/0x11d
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntp"
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntp"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1810,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntp/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193902, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801302, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=130, blocks=4, blksize=16384, flags=0x0, gen=0x6b506958 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1810,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntp/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 130 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded time 1.2.1 [list source [file join $dir time.tcl]]
"
58849 wish8.5 RET read 130/0x82
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oodialect"
58849 wish8.5 NAMI "/usr/local/lib/tcl/oodialect"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4f30,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oodialect/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193666, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800263, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=80, blocks=4, blksize=16384, flags=0x0, gen=0xebff68c5 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4f30,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/oodialect/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 80 bytes
"package ifneeded oo::dialect 0.3.3 [list source [file join $dir oodial\
ect.tcl]]
"
58849 wish8.5 RET read 80/0x50
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ooutil"
58849 wish8.5 NAMI "/usr/local/lib/tcl/ooutil"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd48d0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ooutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193671, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800278, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=240, blocks=4, blksize=16384, flags=0x0, gen=0xc697b2a4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd48d0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ooutil/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 240 bytes
"#checker -scope global exclude warnUndefinedVar
# var in question is 'dir'.
if {![package vsatisfies [package provide Tcl] 8.5]} {
# PRAGMA: returnok
return
}
package ifneeded oo::util 1.2.2 [list source [file join $dir ooutil.tc\
l]]"
58849 wish8.5 RET read 240/0xf0
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pop3d"
58849 wish8.5 NAMI "/usr/local/lib/tcl/pop3d"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe030,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pop3d/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193951, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801598, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=828, blocks=4, blksize=16384, flags=0x0, gen=0x82110c92 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe030,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pop3d/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 828 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded pop3d::udb 1.1 [list source [file join $dir pop3d_\
udb.tcl]]
if {![package vsatisfies [package provide Tcl] 8.3]} {return}
package ifneeded pop3d 1.1.0 [list source [file join $dir pop3d.\
tcl]]
package ifneeded pop3d::dbox 1.0.2 [list source [file join $dir pop3d_\
dbox.tcl]]
"
58849 wish8.5 RET read 828/0x33c
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/rc4"
58849 wish8.5 NAMI "/usr/local/lib/tcl/rc4"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be990,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/rc4/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193964, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801631, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=326, blocks=4, blksize=16384, flags=0x0, gen=0xcea35622 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be990,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/rc4/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 326 bytes
"# pkgIndex.tcl -
#
# RC4 package index file
#
# This package has been tested with tcl 8.2.3 and above.
#
# $Id: pkgIndex.tcl,v 1.4 2005/12/20 16:19:38 patthoyts Exp $
if {![package vsatisfies [package provide Tcl] 8.2]} {
# PRAGMA: returnok
return
}
package ifneeded rc4 1.1.0 [list source [file join $dir rc4.tcl]]
"
58849 wish8.5 RET read 326/0x146
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ripemd"
58849 wish8.5 NAMI "/usr/local/lib/tcl/ripemd"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4960,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ripemd/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193715, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800516, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=390, blocks=4, blksize=16384, flags=0x0, gen=0x24c6949a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4960,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ripemd/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 390 bytes
"# pkgIndex.tcl -
#
# RIPEMD package index file
#
# This package has been tested with tcl 8.2.3 and above.
#
# $Id: pkgIndex.tcl,v 1.6 2009/05/07 01:12:59 patthoyts Exp $
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded ripemd128 1.0.5 [list source [file join $dir ripemd12\
8.tcl]]
package ifneeded ripemd160 1.0.5 [list source [file join $dir ripemd16\
0.tcl]]
"
58849 wish8.5 RET read 390/0x186
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sasl"
58849 wish8.5 NAMI "/usr/local/lib/tcl/sasl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe180,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sasl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193721, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800519, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=625, blocks=4, blksize=16384, flags=0x0, gen=0x57578589 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe180,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/sasl/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 625 bytes
"# pkgIndex.tcl -*- tcl \
-*-
# Copyright (C) 2005 Pat Thoyts <patthoyts@users.sourceforge.net>
# $Id: pkgIndex.tcl,v 1.11 2008/01/29 00:51:39 patthoyts Exp $
if {![package vsatisfies [package provide Tcl] 8.2]} {
# PRAGMA: returnok
return
}
package ifneeded SASL 1.3.3 [list source [file join $dir\
sasl.tcl]]
package ifneeded SASL::NTLM 1.1.2 [list source [file join $dir\
ntlm.tcl]]
package ifneeded SASL::XGoogleToken 1.0.1 [list source [file join $dir\
gtoken.tcl]]
package ifneeded SASL::SCRAM 0.1 [list source [file join $dir\
scram.tcl]]
"
58849 wish8.5 RET read 625/0x271
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/string"
58849 wish8.5 NAMI "/usr/local/lib/tcl/string"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1960,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/string/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193727, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800581, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=261, blocks=4, blksize=16384, flags=0x0, gen=0x9ec39793 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1960,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/string/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 261 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {
# FRINK: nocheck
return
}
package ifneeded string::token 1 [list source [file join $dir\
token.tcl]]
package ifneeded string::token::shell 1.2 [list source [file join $dir\
token_shell.tcl]]
"
58849 wish8.5 RET read 261/0x105
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tepam"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tepam"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1bd0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tepam/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193731, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800596, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=228, blocks=4, blksize=16384, flags=0x0, gen=0x7939d04 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1bd0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tepam/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 228 bytes
"if {![package vsatisfies [package provide Tcl] 8.3]} {return}
package ifneeded tepam 0.5.2 [list source [file join $dir tep\
am.tcl]]
package ifneeded tepam::doc_gen 0.1.1 [list source [file join $dir tep\
am_doc_gen.tcl]]
"
58849 wish8.5 RET read 228/0xe4
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tool"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tool"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be750,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tool/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193741, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800721, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=595, blocks=4, blksize=16384, flags=0x0, gen=0x85d87abd }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be750,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tool/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 595 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded tool 0.7 [list source [file join $dir tool.tcl]]
"
58849 wish8.5 RET read 595/0x253
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/try"
58849 wish8.5 NAMI "/usr/local/lib/tcl/try"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be3c0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/try/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193744, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800724, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=554, blocks=4, blksize=16384, flags=0x0, gen=0xa8e7a33b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be3c0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/try/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 554 bytes
"#checker -scope global exclude warnUndefinedVar
# var in question is 'dir'.
if {![package vsatisfies [package provide Tcl] 8.5]} {
# PRAGMA: returnok
return
}
# The package below is a backward compatible implementation of
# try/catch/finally, for use by Tcl 8.5 only. On 8.6 it does nothing.
package ifneeded try 1 [list source [file join $dir try.tcl]]
# The package below is a backward compatible implementation of
# "throw", for use by Tcl 8.5 only. On 8.6 it does nothing.
package ifneeded throw 1 [list source [file join $dir throw.tcl]]
"
58849 wish8.5 RET read 554/0x22a
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/udpcluster"
58849 wish8.5 NAMI "/usr/local/lib/tcl/udpcluster"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cd4bd0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/udpcluster/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193747, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800727, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=291, blocks=4, blksize=16384, flags=0x0, gen=0xb137947e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cd4bd0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/udpcluster/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 291 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
# Backward compatible alias
package ifneeded nameserv::cluster 0.2.5 {package require udpcluster \
; package provide nameserv::cluster 0.2.5}
package ifneeded udpcluster 0.3.3 [list source [file join $dir\
udpcluster.tcl]]
"
58849 wish8.5 RET read 291/0x123
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uri"
58849 wish8.5 NAMI "/usr/local/lib/tcl/uri"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1300,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uri/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193750, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800762, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=238, blocks=4, blksize=16384, flags=0x0, gen=0xb2b7e0a7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1300,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uri/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 238 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {
# FRINK: nocheck
return
}
package ifneeded uri 1.2.7 [list source [file join $dir uri.tcl]]
package ifneeded uri::urn 1.0.3 [list source [file join $dir urn-schem\
e.tcl]]
"
58849 wish8.5 RET read 238/0xee
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/valtype"
58849 wish8.5 NAMI "/usr/local/lib/tcl/valtype"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1f00,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/valtype/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193755, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800790, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=1215, blocks=4, blksize=16384, flags=0x0, gen=0x600301a3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1f00,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/valtype/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 1215 bytes
"package ifneeded valtype::common 1 [list source [file \
join $dir valtype.tcl]]
package ifneeded valtype::creditcard::amex 1 [list source [file \
join $dir cc_amex.tcl]]
package ifneeded valtype::creditcard::discover 1 [list source [file \
join $dir cc_discover.tcl]]
package ifneeded valtype::creditcard::mastercard 1 [list source [file \
join $dir cc_mastercard.tcl]]
package ifneeded valtype::creditcard::visa 1 [list source [file \
join $dir cc_visa.tcl]]
package ifneeded valtype::gs1::ean13 1 [list source [file \
join $dir ean13.tcl]]
package ifneeded valtype::imei 1 [list source [file \
join $dir imei.tcl]]
package ifneeded valtype::isbn 1 [list source [file \
join $dir isbn.tcl]]
package ifneeded valtype::luhn 1 [list source [file \
join $dir luhn.tcl]]
package ifneeded valtype::luhn5 1 [list source [file \
join $dir luhn5.tcl]]
package ifneeded valtype::usnpi 1 [list source [file \
join $dir usnpi.tcl]]
package ifneeded valtype::verhoeff 1 [list source [file \
join $dir verhoeff.tcl]]
package ifneeded valtype::iban 1.7 [list source [file \
join $dir iban.tcl]]
"
58849 wish8.5 RET read 1215/0x4bf
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_transform"
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_transform"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3cad40,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_transform/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193760, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800800, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=1127, blocks=4, blksize=16384, flags=0x0, gen=0x8086e6b1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3cad40,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_transform/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 1127 bytes
"if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded tcl::transform::adler32 1 [list source [file join\
$dir adler32.tcl]]
package ifneeded tcl::transform::base64 1 [list source [file join\
$dir base64.tcl]]
package ifneeded tcl::transform::counter 1 [list source [file join\
$dir counter.tcl]]
package ifneeded tcl::transform::crc32 1 [list source [file join\
$dir crc32.tcl]]
package ifneeded tcl::transform::hex 1 [list source [file join\
$dir hex.tcl]]
package ifneeded tcl::transform::identity 1 [list source [file join\
$dir identity.tcl]]
package ifneeded tcl::transform::limitsize 1 [list source [file join\
$dir limitsize.tcl]]
package ifneeded tcl::transform::observe 1 [list source [file join\
$dir observe.tcl]]
package ifneeded tcl::transform::otp 1 [list source [file join\
$dir otp.tcl]]
package ifneeded tcl::transform::rot 1 [list source [file join\
$dir rot.tcl]]
package ifneeded tcl::transform::spacer 1 [list source [file join\
$dir spacer.tcl]]
package ifneeded tcl::transform::zlib 1.0.1 [list source [file join\
$dir zlib.tcl]]
"
58849 wish8.5 RET read 1127/0x467
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/bench"
58849 wish8.5 NAMI "/usr/local/lib/tcl/bench"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe300,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/bench/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193780, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4800879, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183355<"Jul 30 13:15:55 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.155976467, size=406, blocks=4, blksize=16384, flags=0x0, gen=0xe064cc0e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe300,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/bench/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 406 bytes
"if {![package vsatisfies [package provide Tcl] 8.2]} {
return
}
package ifneeded bench 0.4 [list source [file join $dir ben\
ch.tcl]]
package ifneeded bench::out::text 0.1.2 [list source [file join $dir b\
ench_wtext.tcl]]
package ifneeded bench::out::csv 0.1.2 [list source [file join $dir b\
ench_wcsv.tcl]]
package ifneeded bench::in 0.1 [list source [file join $dir b\
ench_read.tcl]]
"
58849 wish8.5 RET read 406/0x196
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_aycock"
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_aycock"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1f90,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_aycock/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193849, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801103, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=354, blocks=4, blksize=16384, flags=0x0, gen=0xe34174c7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1f90,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_aycock/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 354 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded grammar::aycock 1.0 \\
[list source [file join $dir aycock-build.tcl]]
package ifneeded grammar::aycock::debug 1.0 \\
[list source [file join $dir aycock-debug.tcl]]
package ifneeded grammar::aycock::runtime 1.0 \\
[list source [file join $dir aycock-runtime.tcl]]
"
58849 wish8.5 RET read 354/0x162
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_me"
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_me"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be420,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_me/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193860, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801175, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=496, blocks=4, blksize=16384, flags=0x0, gen=0x9ca4c628 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be420,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_me/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 496 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded grammar::me::util 0.1 [list source [file join $d\
ir me_util.tcl]]
package ifneeded grammar::me::tcl 0.1 [list source [file join $d\
ir me_tcl.tcl]]
package ifneeded grammar::me::cpu 0.2 [list source [file join $d\
ir me_cpu.tcl]]
package ifneeded grammar::me::cpu::core 0.2 [list source [file join $d\
ir me_cpucore.tcl]]
package ifneeded grammar::me::cpu::gasm 0.1 [list source [file join $d\
ir gasm.tcl]]
"
58849 wish8.5 RET read 496/0x1f0
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_peg"
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_peg"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce1120,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_peg/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193864, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801159, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=173, blocks=4, blksize=16384, flags=0x0, gen=0xfd04a509 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce1120,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/grammar_peg/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 173 bytes
"package ifneeded grammar::peg 0.2 [list source [file join $d\
ir peg.tcl]]
package ifneeded grammar::peg::interp 0.1.1 [list source [file join $d\
ir peg_interp.tcl]]
"
58849 wish8.5 RET read 173/0xad
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/interp"
58849 wish8.5 NAMI "/usr/local/lib/tcl/interp"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e29c0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/interp/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193870, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801204, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.175977066, size=340, blocks=4, blksize=16384, flags=0x0, gen=0xb3d65016 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e29c0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/interp/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 340 bytes
"if {![package vsatisfies [package provide Tcl] 8.3]} return
package ifneeded interp 0.1.2 [list source [file joi\
n $dir interp.tcl]]
package ifneeded interp::delegate::proc 0.2 [list source [file joi\
n $dir deleg_proc.tcl]]
package ifneeded interp::delegate::method 0.2 [list source [file joi\
n $dir deleg_method.tcl]]
"
58849 wish8.5 RET read 340/0x154
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nns"
58849 wish8.5 NAMI "/usr/local/lib/tcl/nns"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be9c0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nns/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193899, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801319, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.185977759, size=448, blocks=4, blksize=16384, flags=0x0, gen=0x3b4a6867 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be9c0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/nns/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 448 bytes
"if {![package vsatisfies [package provide Tcl] 8]} {return}
package ifneeded nameserv::common 0.1 [list source [file join $dir com\
mon.tcl]]
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded nameserv 0.4.2 [list source [file join $dir n\
ns.tcl]]
package ifneeded nameserv::server 0.3.2 [list source [file join $dir s\
erver.tcl]]
package ifneeded nameserv::auto 0.3 [list source [file join $dir n\
ns_auto.tcl]]
"
58849 wish8.5 RET read 448/0x1c0
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/page"
58849 wish8.5 NAMI "/usr/local/lib/tcl/page"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3befc0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/page/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193923, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801533, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183356<"Jul 30 13:15:56 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.195976956, size=4561, blocks=12, blksize=16384, flags=0x0, gen=0xddeed417 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3befc0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/page/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 4096 bytes
"# -- PAGE application packages --
# -- ---- plugin management
package ifneeded page::pluginmgr 0.2 [list source [file join $dir plug\
inmgr.tcl]]
# -- PAGE plugin packages
# -- ---- Canned configurations
package ifneeded page::config::peg 0.1 [list source [file join $dir \
plugins/config_peg.tcl]]
# -- PAGE plugin packages
# -- ---- Readers
package ifneeded page::reader::peg 0.1 [list source [file join $di\
r plugins/reader_peg.tcl]]
package ifneeded page::reader::lemon 0.1 [list source [file join $di\
r plugins/reader_lemon.tcl]]
package ifneeded page::reader::hb 0.1 [list source [file join $di\
r plugins/reader_hb.tcl]]
package ifneeded page::reader::ser 0.1 [list source [file join $di\
r plugins/reader_ser.tcl]]
package ifneeded page::reader::treeser 0.1 [list source [file join $di\
r plugins/reader_treeser.tcl]]
# -- PAGE plugin packages
# -- ---- Writers
package ifneeded page::writer::null 0.1 [list source [file join \
$dir plugins/writer_null.tcl]]
package ifneeded page::writer::me 0.1 [list source [file join \
$dir plugins/writer_me.tcl]]
package ifneeded page::writer::mecpu 0.1.1 [list source [file join \
$dir plugins/writer_mecpu.tcl]]
package ifneeded page::writer::tree 0.1 [list source [file join \
$dir plugins/writer_tree.tcl]]
package ifneeded page::writer::tpc 0.1 [list source [file join \
$dir plugins/writer_tpc.tcl]]
package ifneeded page::writer::hb 0.1 [list source [file join \
$dir plugins/writer_hb.tcl]]
package ifneeded page::writer::ser 0.1 [list source [file join \
$dir plugins/writer_ser.tcl]]
package ifneeded page::writer::peg 0.1 [list source [file join \
$dir plugins/writer_peg.tcl]]
package ifneeded page::writer::identity 0.1 [list source [file join \
$dir plugins/writer_identity.tcl]]
# -- PAGE plugin packages
# -- ---- Transformations
package ifneeded page::transform::reachable 0.1 \\
[list source [file join $dir plugins/transform_reachable.tcl]]
package ifneeded page::transform::realizable 0.1 \\
[list source [file join $dir plugins/transform_realizable.tcl]\
]
package ifneeded page::transform::mecpu 0.1 \\
[list source [file join $dir plugins/transform_mecpu.tcl]]
# -- PAGE packages --
# -- --- Parsing and normalization packages used by the reader plugins\
.
package ifneeded page::parse::peg 0.1 [list source [file join $\
dir parse_peg.tcl]]
package ifneeded page::parse::lemon 0.1 [list source [file join $\
dir parse_lemon.tcl]]
package ifneeded page::parse::pegser 0.1 [list source [file join $\
dir parse_pegser.tcl]]
package ifneeded page::parse::peghb 0.1 [list source [file join $\
dir parse_peghb.tcl]]
package ifneeded page::util::norm::peg 0.1 [list source [file join $\
dir util_norm_peg.tcl]]
package ifneeded page::util::norm::lemon 0.1 [list source [file join $\
dir util_norm_lemon.tcl]]
# @mdgen EXCLUDE: peg_grammar.tcl
### package ifneeded pg::peg::grammar 0.1 [list source [file join\
$dir peg_grammar.tcl]]
# -- PAGE packages --
# -- --- Code generation packages used by the writer plugins.
package ifneeded page::gen::tree::text 0.1 [list source [file join $di\
r gen_tree_text.tcl]]
package ifneeded page::gen::peg::cpkg 0.1 [list source [file join $di\
r gen_peg_cpkg.tcl]]
package ifneeded page::gen::peg::hb 0.1 [list source [file join $di\
r gen_peg_hb.tcl]]
package ifneeded page::gen::peg::ser 0.1 [list source [file join $di\
r gen_peg_ser.tcl]]
package ifneeded page::gen::peg::canon 0.1 [list source [file join $di\
r gen_peg_canon.tcl]]
package ifneeded page::gen::peg::me 0.1 [list source [file join $di\
r gen_peg_me.tcl]]
package ifneeded page::gen::peg::mecpu 0.1 [list source [file join $di\
r gen_peg_mecpu.tcl]]
# -- Transformation Helper Packages --
package ifneeded page::analysis::peg::minimize 0.1 [list source [fil\
e join $dir analysis_peg_minimize.tcl]]
package ifneeded page::analysis::peg::reachable 0.1 [list source [fil\
e join $dir analysis_peg_reachable.tcl]]
package ifneeded page::analysis::peg::realizable 0.1 [list source [fil\
e join $dir analysis_peg_realizable.tcl]]
package ifneeded page::analysis::peg::"
58849 wish8.5 RET read 4096/0x1000
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 465 bytes
"emodes 0.1 [list source [file join $dir analysis_peg_emodes.tcl]]
package ifneeded page::compiler::peg::mecpu 0.1.1 [list source [f\
ile join $dir compiler_peg_mecpu.tcl]]
# -- Various other utilities --
package ifneeded page::util::peg 0.1 [list source [file join $dir ut\
il_peg.tcl]]
package ifneeded page::util::quote 0.1 [list source [file join $dir ut\
il_quote.tcl]]
package ifneeded page::util::flow 0.1 [list source [file join $dir ut\
il_flow.tcl]]
"
58849 wish8.5 RET read 465/0x1d1
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/snit"
58849 wish8.5 NAMI "/usr/local/lib/tcl/snit"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2270,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/snit/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193972, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801719, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=208, blocks=4, blksize=16384, flags=0x0, gen=0xc62fe7c2 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2270,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/snit/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 208 bytes
"if {[package vsatisfies [package provide Tcl] 8.5]} {
package ifneeded snit 2.3.2 \\
[list source [file join $dir snit2.tcl]]
}
package ifneeded snit 1.4.2 [list source [file join $dir snit.tcl]]
"
58849 wish8.5 RET read 208/0xd0
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stooop"
58849 wish8.5 NAMI "/usr/local/lib/tcl/stooop"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3eddb0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stooop/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193980, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801867, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=936, blocks=4, blksize=16384, flags=0x0, gen=0x5cabacc2 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3eddb0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stooop/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 936 bytes
"# @mdgen EXCLUDE: xifo.tcl
# @mdgen EXCLUDE: mkpkgidx.tcl
#
# Copyright (c) 2001 by Jean-Luc Fontaine <jfontain@free.fr>.
# This code may be distributed under the same terms as Tcl.
#
# $Id: pkgIndex.tcl,v 1.10 2007/03/23 17:31:51 andreas_kupries Exp $
# Since stooop redefines the proc command and the default package faci\
lity will
# only load the stooop package at the first unknown command, proc bein\
g
# obviously known by default, forcing the loading of stooop is mandato\
ry prior
# to the first proc declaration.
if {![package vsatisfies [package provide Tcl] 8.3]} {return}
package ifneeded stooop 4.4.1 [list source [file join $dir stooop.tcl]\
]
# the following package index instruction was generated using:
# "tclsh mkpkgidx.tcl switched switched.tcl"
# (comment out the following line if you do not want to use the switch\
ed class
# as a package)
package ifneeded switched 2.2.1 [list source [file join $dir switched.\
tcl]]
"
58849 wish8.5 RET read 936/0x3a8
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stringprep"
58849 wish8.5 NAMI "/usr/local/lib/tcl/stringprep"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be000,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stringprep/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1193986, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4801896, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.205976841, size=331, blocks=4, blksize=16384, flags=0x0, gen=0x8da76507 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be000,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/stringprep/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 331 bytes
"package ifneeded stringprep 1.0.1 [list source [file join $dir stringp\
rep.tcl]]
package ifneeded stringprep::data 1.0.1 [list source [file join $dir s\
tringprep_data.tcl]]
package ifneeded unicode 1.0.0 [list source [file join $dir unicode.tc\
l]]
package ifneeded unicode::data 1.0.0 [list source [file join $dir unic\
ode_data.tcl]]
"
58849 wish8.5 RET read 331/0x14b
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/transfer"
58849 wish8.5 NAMI "/usr/local/lib/tcl/transfer"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2030,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/transfer/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194026, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802167, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=706, blocks=4, blksize=16384, flags=0x0, gen=0xfd09fb7b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2030,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/transfer/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 706 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} return
package ifneeded transfer::copy 0.3 [list source [file jo\
in $dir copyops.tcl]]
package ifneeded transfer::copy::queue 0.1 [list source [file jo\
in $dir tqueue.tcl]]
package ifneeded transfer::data::source 0.2 [list source [file jo\
in $dir dsource.tcl]]
package ifneeded transfer::data::destination 0.2 [list source [file jo\
in $dir ddest.tcl]]
package ifneeded transfer::connect 0.2 [list source [file jo\
in $dir connect.tcl]]
package ifneeded transfer::transmitter 0.2 [list source [file jo\
in $dir transmitter.tcl]]
package ifneeded transfer::receiver 0.2 [list source [file jo\
in $dir receiver.tcl]]
"
58849 wish8.5 RET read 706/0x2c2
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/treeql"
58849 wish8.5 NAMI "/usr/local/lib/tcl/treeql"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9ce10f0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/treeql/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194031, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802198, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=163, blocks=4, blksize=16384, flags=0x0, gen=0x85081c62 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9ce10f0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/treeql/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 163 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {
# PRAGMA: returnok
return
}
package ifneeded treeql 1.3.1 [list source [file join $dir treeql.tcl]\
]
"
58849 wish8.5 RET read 163/0xa3
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uev"
58849 wish8.5 NAMI "/usr/local/lib/tcl/uev"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3edb40,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uev/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194037, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802225, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=229, blocks=4, blksize=16384, flags=0x0, gen=0x21421df5 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3edb40,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/uev/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 229 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded uevent 0.3.1 [list source [file join $dir uev\
ent.tcl]]
package ifneeded uevent::onidle 0.1 [list source [file join $dir uev\
ent_onidle.tcl]]
"
58849 wish8.5 RET read 229/0xe5
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_core"
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_core"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43b3a8a1400,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_core/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194064, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802272, atime=1731660490<"Nov 15 08:48:10 2024">.581458740, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=372, blocks=4, blksize=16384, flags=0x0, gen=0xc35567eb }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43b3a8a1400,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/virtchannel_core/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 372 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded tcl::chan::core 1 [list source [file join $dir core\
.tcl]]
package ifneeded tcl::chan::events 1 [list source [file join $dir even\
ts.tcl]]
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded tcl::transform::core 1 [list source [file join $dir t\
ransformcore.tcl]]
"
58849 wish8.5 RET read 372/0x174
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wip"
58849 wish8.5 NAMI "/usr/local/lib/tcl/wip"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2570,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194078, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4802296, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183357<"Jul 30 13:15:57 2022">, ctime=1731074789<"Nov 8 14:06:29 2024">.215976845, size=254, blocks=4, blksize=16384, flags=0x0, gen=0x6b3fb845 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2570,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wip/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 254 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded wip 1.2 [list source [file join $dir wip.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded wip 2.2 [list source [file join $dir wip2.tcl]]
"
58849 wish8.5 RET read 254/0xfe
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3edea0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.5/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194262, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803183, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371912<"Sep 26 18:31:52 2024">, ctime=1731074790<"Nov 8 14:06:30 2024">.675976976, size=146, blocks=4, blksize=16384, flags=0x0, gen=0x5bc0b8b2 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3edea0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.5/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 146 bytes
"if {[catch {package present Tcl 8.5.0}]} return
package ifneeded Tk 8.5.19 [list load [file normalize [file join $dir \
.. .. libtk85.so.0.19]] Tk]
"
58849 wish8.5 RET read 146/0x92
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32b918,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32b3f8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL readlink(0x43acb3e6ac0,0x7b2fec32b4c0,1024)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.5"
58849 wish8.5 RET readlink -1 errno 22 Invalid argument
58849 wish8.5 CALL readlink(0x43acb3e6300,0x7b2fec32b4c0,1024)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET readlink -1 errno 22 Invalid argument
58849 wish8.5 CALL __realpath(0x7b2fec32b880,0x7b2fec32af70)
58849 wish8.5 NAMI "/usr/local/lib"
58849 wish8.5 NAMI "/usr/local/lib"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/canvas"
58849 wish8.5 NAMI "/usr/local/lib/tcl/canvas"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3bef60,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/canvas/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194694, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805615, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=1295, blocks=4, blksize=16384, flags=0x0, gen=0xad25808e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3bef60,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/canvas/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 1295 bytes
"if {![package vsatisfies [package provide Tcl] 8.4]} {return}
package ifneeded canvas::sqmap 0.3.1 [list source [file join $dir canv\
as_sqmap.tcl]]
package ifneeded canvas::zoom 0.2.1 [list source [file join $dir canv\
as_zoom.tcl]]
if {![package vsatisfies [package provide Tcl] 8.5]} { return }
package ifneeded canvas::drag 0.1 [list source [file \
join $dir canvas_drag.tcl]]
package ifneeded canvas::edit::points 0.1 [list source [file \
join $dir canvas_epoints.tcl]]
package ifneeded canvas::edit::polyline 0.1 [list source [file \
join $dir canvas_epolyline.tcl]]
package ifneeded canvas::edit::quadrilateral 0.1 [list source [file \
join $dir canvas_equad.tcl]]
package ifneeded canvas::gradient 0.2 [list source [file \
join $dir canvas_gradient.tcl]]
package ifneeded canvas::highlight 0.1 [list source [file \
join $dir canvas_highlight.tcl]]
package ifneeded canvas::mvg 1 [list source [file \
join $dir canvas_mvg.tcl]]
package ifneeded canvas::snap 1.0.1 [list source [file \
join $dir canvas_snap.tcl]]
package ifneeded canvas::tag 0.1 [list source [file \
join $dir canvas_tags.tcl]]
package ifneeded canvas::track::lines 0.1 [list source [file \
join $dir canvas_trlines.tcl]]
"
58849 wish8.5 RET read 1295/0x50f
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/diagrams"
58849 wish8.5 NAMI "/usr/local/lib/tcl/diagrams"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be030,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/diagrams/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194708, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805702, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=847, blocks=4, blksize=16384, flags=0x0, gen=0x36158dd0 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be030,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/diagrams/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 847 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {
# PRAGMA: returnok
return
}
package ifneeded diagram::navigation 1 [list source [file join $dir n\
avigation.tcl]]
package ifneeded diagram::direction 1 [list source [file join $dir d\
irection.tcl]]
package ifneeded diagram::element 1 [list source [file join $dir e\
lement.tcl]]
package ifneeded diagram::attribute 1 [list source [file join $dir a\
ttributes.tcl]]
package ifneeded diagram::point 1 [list source [file join $dir p\
oint.tcl]]
package ifneeded diagram::core 1 [list source [file join $dir c\
ore.tcl]]
package ifneeded diagram::basic 1.0.1 [list source [file join $dir b\
asic.tcl]]
package ifneeded diagram 1 [list source [file join $dir d\
iagram.tcl]]
package ifneeded diagram::application 1.2 [list source [file join $dir\
application.tcl]]
"
58849 wish8.5 RET read 847/0x34f
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/getstring"
58849 wish8.5 NAMI "/usr/local/lib/tcl/getstring"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be8d0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/getstring/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194710, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805703, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=612, blocks=4, blksize=16384, flags=0x0, gen=0x447ed659 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be8d0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/getstring/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 612 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
if { ![package vsatisfies [package provide Tcl] 8.4] } { return }
package ifneeded getstring 0.1 [list source [file join $dir tk_getStri\
ng.tcl]]
"
58849 wish8.5 RET read 612/0x264
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ico"
58849 wish8.5 NAMI "/usr/local/lib/tcl/ico"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3ed4e0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ico/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194711, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805718, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=292, blocks=4, blksize=16384, flags=0x0, gen=0xba0b4a85 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3ed4e0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ico/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 292 bytes
"# pkgIndex.tcl --
#
# Copyright (c) 2003 ActiveState Corporation.
# All rights reserved.
#
# RCS: @(#) $Id: pkgIndex.tcl,v 1.11 2011/10/05 00:10:46 hobbs Exp $
package ifneeded ico 0.3.2 [list source [file join $dir ico0.tcl]]
package ifneeded ico 1.1 [list source [file join $dir ico.tcl]]
"
58849 wish8.5 RET read 292/0x124
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/khim"
58849 wish8.5 NAMI "/usr/local/lib/tcl/khim"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3beab0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/khim/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194717, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805719, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=534, blocks=4, blksize=16384, flags=0x0, gen=0x6a22448b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3beab0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/khim/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 534 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
package ifneeded khim 1.0.1 [list source [file join $dir khim.tcl]]
"
58849 wish8.5 RET read 534/0x216
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mentry"
58849 wish8.5 NAMI "/usr/local/lib/tcl/mentry"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be300,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mentry/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194569, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803967, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=792, blocks=4, blksize=16384, flags=0x0, gen=0x2f3d18f1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be300,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/mentry/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 792 bytes
"#=====================================================================\
=========
# Mentry and Mentry_tile package index file.
#
# Copyright (c) 1999-2022 Csaba Nemethi (E-mail: csaba.nemethi@t-onli\
ne.de)
#=====================================================================\
=========
#
# Regular packages:
#
package ifneeded mentry 3.15 \\
[list source [file join $dir mentry.tcl]]
package ifneeded mentry_tile 3.15 \\
[list source [file join $dir mentry_tile.tcl]]
#
# Aliases:
#
package ifneeded Mentry 3.15 \\
[list package require -exact mentry 3.15]
package ifneeded Mentry_tile 3.15 \\
[list package require -exact mentry_tile 3.15]
#
# Code common to all packages:
#
package ifneeded mentry::common 3.15 \\
[list source [file join $dir mentryCommon.tcl]]
"
58849 wish8.5 RET read 792/0x318
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/scrollutil"
58849 wish8.5 NAMI "/usr/local/lib/tcl/scrollutil"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e20c0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/scrollutil/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194618, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4804319, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=840, blocks=4, blksize=16384, flags=0x0, gen=0x9ac4c3fc }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e20c0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/scrollutil/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 840 bytes
"#=====================================================================\
=========
# Scrollutil and Scrollutil_tile package index file.
#
# Copyright (c) 2019-2022 Csaba Nemethi (E-mail: csaba.nemethi@t-onli\
ne.de)
#=====================================================================\
=========
#
# Regular packages:
#
package ifneeded scrollutil 1.16 \\
[list source [file join $dir scrollutil.tcl]]
package ifneeded scrollutil_tile 1.16 \\
[list source [file join $dir scrollutil_tile.tcl]]
#
# Aliases:
#
package ifneeded Scrollutil 1.16 \\
[list package require -exact scrollutil 1.16]
package ifneeded Scrollutil_tile 1.16 \\
[list package require -exact scrollutil_tile 1.16]
#
# Code common to all packages:
#
package ifneeded scrollutil::common 1.16 \\
[list source [file join $dir scrollutilCommon.tcl]]
"
58849 wish8.5 RET read 840/0x348
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tablelist"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tablelist"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2990,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tablelist/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194640, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4804801, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=827, blocks=4, blksize=16384, flags=0x0, gen=0x3c0133e8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2990,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tablelist/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 827 bytes
"#=====================================================================\
=========
# Tablelist and Tablelist_tile package index file.
#
# Copyright (c) 2000-2022 Csaba Nemethi (E-mail: csaba.nemethi@t-onli\
ne.de)
#=====================================================================\
=========
#
# Regular packages:
#
package ifneeded tablelist 6.19 \\
[list source [file join $dir tablelist.tcl]]
package ifneeded tablelist_tile 6.19 \\
[list source [file join $dir tablelist_tile.tcl]]
#
# Aliases:
#
package ifneeded Tablelist 6.19 \\
[list package require -exact tablelist 6.19]
package ifneeded Tablelist_tile 6.19 \\
[list package require -exact tablelist_tile 6.19]
#
# Code common to all packages:
#
package ifneeded tablelist::common 6.19 \\
[list source [file join $dir tablelistCommon.tcl]]
"
58849 wish8.5 RET read 827/0x33b
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/menubar"
58849 wish8.5 NAMI "/usr/local/lib/tcl/menubar"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be390,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/menubar/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194721, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805751, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=299, blocks=4, blksize=16384, flags=0x0, gen=0xdaded6cb }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be390,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/menubar/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 299 bytes
"package ifneeded menubar::node 0.5 [list source [file join $dir node.t\
cl]]
package ifneeded menubar::tree 0.5 [list source [file join $dir tree.t\
cl]]
package ifneeded menubar 0.5 [list source [file join $dir menubar.tcl]\
]
package ifneeded menubar::debug 0.5 [list source [file join $dir debug\
.tcl]]
"
58849 wish8.5 RET read 299/0x12b
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntext"
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntext"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2cc0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntext/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194607, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803831, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=132, blocks=4, blksize=16384, flags=0x0, gen=0x9251968b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2cc0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/ntext/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 132 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded ntext 1.0b3 [list source [file join $dir ntext.tcl]]
"
58849 wish8.5 RET read 132/0x84
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/plotchart"
58849 wish8.5 NAMI "/usr/local/lib/tcl/plotchart"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3ed9f0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/plotchart/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194609, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4803975, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=321, blocks=4, blksize=16384, flags=0x0, gen=0x3c12ca24 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3ed9f0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/plotchart/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 321 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {
# PRAGMA: returnok
return
}
package ifneeded Plotchart 2.5.2 [list source [file join $dir plotchar\
t.tcl]]
package ifneeded xyplot 1.0.1 [list source [file join $dir xyplot.t\
cl]]
package ifneeded plotanim 0.2 [list source [file join $dir plotanim\
.tcl]]
"
58849 wish8.5 RET read 321/0x141
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/shtmlview"
58849 wish8.5 NAMI "/usr/local/lib/tcl/shtmlview"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be570,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/shtmlview/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194636, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4804654, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=187, blocks=4, blksize=16384, flags=0x0, gen=0xa2c7980b }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be570,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/shtmlview/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 187 bytes
"package ifneeded shtmlview::shtmlview 1.1.0 [list source [file join $d\
ir shtmlview.tcl]]
package ifneeded shtmlview::doctools 0.1 [list source [file join $d\
ir shtmlview-doctools.tcl]]
"
58849 wish8.5 RET read 187/0xbb
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tooltip"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tooltip"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be060,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tooltip/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194659, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805486, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=166, blocks=4, blksize=16384, flags=0x0, gen=0x39087d8d }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be060,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tooltip/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 166 bytes
"# -*- tcl -*-
package ifneeded tooltip 1.5 [list source [file join $dir tooltip.t\
cl]]
package ifneeded tipstack 1.0.1 [list source [file join $dir tipstack.\
tcl]]
"
58849 wish8.5 RET read 166/0xa6
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wcb"
58849 wish8.5 NAMI "/usr/local/lib/tcl/wcb"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2bd0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wcb/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194662, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805513, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=427, blocks=4, blksize=16384, flags=0x0, gen=0xed8603b8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2bd0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/wcb/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 427 bytes
"#=====================================================================\
=========
# Wcb package index file.
#
# Copyright (c) 1999-2020 Csaba Nemethi (E-mail: csaba.nemethi@t-onli\
ne.de)
#=====================================================================\
=========
#
# Regular package:
#
package ifneeded wcb 3.7 [list source [file join $dir wcb.tcl]]
#
# Alias:
#
package ifneeded Wcb 3.7 { package require -exact wcb 3.7 }
"
58849 wish8.5 RET read 427/0x1ab
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widget"
58849 wish8.5 NAMI "/usr/local/lib/tcl/widget"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2f30,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widget/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194752, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805871, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=1144, blocks=4, blksize=16384, flags=0x0, gen=0xf8db9fa4 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2f30,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widget/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 GIO fd 3 read 1144 bytes
"# Tcl Package Index File 1.0
if {![llength [info commands ::tcl::pkgindex]]} {
proc ::tcl::pkgindex {dir bundle bundlev packages} {
set allpkgs [list]
foreach {pkg ver file} $packages {
lappend allpkgs [list package require $pkg $ver]
package ifneeded $pkg $ver [list source [file join $dir $f\
ile]]
}
if {$bundle != ""} {
lappend allpkgs [list package provide $bundle $bundlev]
package ifneeded $bundle $bundlev [join $allpkgs \\n]
}
return
}
}
if {![package vsatisfies [package provide Tcl] 8.4]} {return}
::tcl::pkgindex $dir widget::all 1.2.4 {
widget 3.1 widget.tcl
widget::arrowbutton 1.0 arrowb.tcl
widget::calendar 1.0.1 calendar.tcl
widget::dateentry 0.96 dateentry.tcl
widget::dialog 1.3.1 dialog.tcl
widget::menuentry 1.0.1 mentry.tcl
widget::panelframe 1.1 panelframe.tcl
widget::ruler 1.1 ruler.tcl
widget::screenruler 1.2 ruler.tcl
widget::scrolledtext 1.0 stext.tcl
widget::scrolledwindow 1.2.1 scrollw.tcl
widget::statusbar 1.2.1 statusbar.tcl
widget::superframe 1.0.1 superframe.tcl
widget::toolbar 1.2.1 toolbar.tcl
}
"
58849 wish8.5 RET read 1144/0x478
58849 wish8.5 CALL read(3,0x43a98b82028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetl"
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43ad9cfe7b0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetl/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194679, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805565, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=237, blocks=4, blksize=16384, flags=0x0, gen=0x48d75bd8 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43ad9cfe7b0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetl/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 237 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded widget::listsimple 0.1.2 [list source [file join $dir\
listsimple.tcl]]
package ifneeded widget::listentry 0.1.2 [list source [file join $dir\
listentry.tcl]]
"
58849 wish8.5 RET read 237/0xed
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/controlwidget"
58849 wish8.5 NAMI "/usr/local/lib/tcl/controlwidget"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3be600,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/controlwidget/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194681, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805567, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.895977167, size=903, blocks=4, blksize=16384, flags=0x0, gen=0x55bdd561 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3be600,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/controlwidget/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 903 bytes
"# pkgIndex.tcl --
# Index script for controlwidget package
# Note:
# We could split this into several parts. Now it is presented
# as a single package.
#
if {![package vsatisfies [package provide Tcl] 8.5]} {
# PRAGMA: returnok
return
}
package ifneeded controlwidget 0.1 [list source [file join $dir contro\
lwidget.tcl]]
package ifneeded meter 1.0 [list source [file join $dir vertic\
al_meter.tcl]]
package ifneeded led 1.0 [list source [file join $dir led.tc\
l]]
package ifneeded rdial 0.7 [list source [file join $dir rdial.\
tcl]]
package ifneeded tachometer 0.1 [list source [file join $dir tachom\
eter.tcl]]
package ifneeded voltmeter 0.1 [list source [file join $dir voltme\
ter.tcl]]
package ifneeded radioMatrix 1.0 [list source [file join $dir radioM\
atrix.tcl]]
package ifneeded bindDown 1.0 [list source [file join $dir bindDo\
wn.tcl]]
"
58849 wish8.5 RET read 903/0x387
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/style"
58849 wish8.5 NAMI "/usr/local/lib/tcl/style"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e4930,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/style/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194733, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805767, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=684, blocks=4, blksize=16384, flags=0x0, gen=0xc6cf9768 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e4930,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/style/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 684 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
package ifneeded style 0.3 [list source [file join $dir style.tcl]]
package ifneeded style::as 1.4.1 [list source [file join $dir as.tcl]]
package ifneeded style::lobster 0.2 [list source [file join $dir lobst\
er.tcl]]
"
58849 wish8.5 RET read 684/0x2ac
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tkpiechart"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tkpiechart"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e4090,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tkpiechart/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194743, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805864, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=154, blocks=4, blksize=16384, flags=0x0, gen=0xcf3dd75a }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e4090,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tkpiechart/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 154 bytes
"# Package index file created with stooop version 4.4.1 for stooop pack\
ages
package ifneeded tkpiechart 6.6 [list source [file join $dir tkpiechar\
t.tcl]]
"
58849 wish8.5 RET read 154/0x9a
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetv"
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetv"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e48a0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetv/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1194761, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4805887, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1659183312<"Jul 30 13:15:12 2022">, ctime=1731074791<"Nov 8 14:06:31 2024">.905977284, size=146, blocks=4, blksize=16384, flags=0x0, gen=0xcfa6db91 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e48a0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/widgetv/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 146 bytes
"if {![package vsatisfies [package provide Tcl] 8.5]} {return}
package ifneeded widget::validator 0.1 [list source [file join $dir va\
lidator.tcl]]
"
58849 wish8.5 RET read 146/0x92
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 NAMI "/usr/local/lib/tcl"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.6"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.6"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3e2180,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.6/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1218404, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4892927, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371422<"Sep 26 18:23:42 2024">, ctime=1731074898<"Nov 8 14:08:18 2024">.525976389, size=157, blocks=4, blksize=16384, flags=0x0, gen=0xec7530cd }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3e2180,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tk8.6/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 157 bytes
"if {![package vsatisfies [package provide Tcl] 8.6.0]} return
package ifneeded Tk 8.6.13 [list load [file normalize [file join $dir \
.. .. libtk86.so.1.13]]]
"
58849 wish8.5 RET read 157/0x9d
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL access(0x43acb3e66e0,0<F_OK>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/pkgIndex.tcl"
58849 wish8.5 RET access -1 errno 2 No such file or directory
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b8e0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192361, mode=drwxr-xr-x , nlink=8, uid=0<"root">, gid=0<"wheel">, rdev=4794269, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1731074786<"Nov 8 14:06:26 2024">.925976325, ctime=1731074786<"Nov 8 14:06:26 2024">.925976325, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x7d762bc1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x7b2fec32b970,0x30000<O_RDONLY|O_CLOEXEC|O_DIRECTORY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32b728)
58849 wish8.5 STRU struct stat { dev=1031, ino=1192361, mode=drwxr-xr-x , nlink=8, uid=0<"root">, gid=0<"wheel">, rdev=4794269, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1731074786<"Nov 8 14:06:26 2024">.925976325, ctime=1731074786<"Nov 8 14:06:26 2024">.925976325, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x7d762bc1 }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 736/0x2e0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/tclConfig.sh"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192362, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4794272, atime=1727371330<"Sep 26 18:22:10 2024">, mtime=1727371330<"Sep 26 18:22:10 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=7143, blocks=16, blksize=16384, flags=0x0, gen=0x24e93022 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/auto.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192363, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4794280, atime=1731660271<"Nov 15 08:44:31 2024">.541460349, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.955975902, size=20613, blocks=44, blksize=16384, flags=0x0, gen=0x771df2cd }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/clock.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192364, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4794288, atime=1731588091<"Nov 14 12:41:31 2024">.031571751, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.955975902, size=130093, blocks=256, blksize=16384, flags=0x0, gen=0xd1b195bd }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/encoding"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192365, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4794279, atime=1731634208<"Nov 15 01:30:08 2024">.621571581, mtime=1731074786<"Nov 8 14:06:26 2024">.865977925, ctime=1731074786<"Nov 8 14:06:26 2024">.865977925, size=2048, blocks=4, blksize=16384, flags=0x0, gen=0x4f3ca4f2 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/init.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192367, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4794392, atime=1731660585<"Nov 15 08:49:45 2024">.701460766, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.965976303, size=25025, blocks=52, blksize=16384, flags=0x0, gen=0xe5e9665e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/man"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192368, mode=drwxr-xr-x , nlink=5, uid=0<"root">, gid=0<"wheel">, rdev=4794270, atime=1731634208<"Nov 15 01:30:08 2024">.621571581, mtime=1731074813<"Nov 8 14:06:53 2024">.855976116, ctime=1731074813<"Nov 8 14:06:53 2024">.855976116, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x7ff188ab }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/modules"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192582, mode=drwxr-xr-x , nlink=3, uid=0<"root">, gid=0<"wheel">, rdev=4794959, atime=1731660585<"Nov 15 08:49:45 2024">.971461877, mtime=1731074786<"Nov 8 14:06:26 2024">.875977932, ctime=1731074786<"Nov 8 14:06:26 2024">.875977932, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4a4635bc }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/package.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192588, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796136, atime=1731660585<"Nov 15 08:49:45 2024">.981459890, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=23329, blocks=48, blksize=16384, flags=0x0, gen=0x7db15ee3 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/parray.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192589, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4795351, atime=1727371332<"Sep 26 18:22:12 2024">, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=816, blocks=4, blksize=16384, flags=0x0, gen=0xccf8f060 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/safe.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192590, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796152, atime=1727371332<"Sep 26 18:22:12 2024">, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=33295, blocks=68, blksize=16384, flags=0x0, gen=0x5f16154c }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/tm.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192591, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796168, atime=1731660585<"Nov 15 08:49:45 2024">.971461877, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=11734, blocks=24, blksize=16384, flags=0x0, gen=0xdba8ef7 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/history.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192669, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796800, atime=1727371332<"Sep 26 18:22:12 2024">, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.965976303, size=8965, blocks=20, blksize=16384, flags=0x0, gen=0xf150ddcd }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/http1.0"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192670, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4794893, atime=1731634208<"Nov 15 01:30:08 2024">.661571772, mtime=1731074786<"Nov 8 14:06:26 2024">.875977932, ctime=1731074786<"Nov 8 14:06:26 2024">.875977932, size=512, blocks=4, blksize=16384, flags=0x0, gen=0x4579a09e }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/msgs"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192674, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796824, atime=1731634208<"Nov 15 01:30:08 2024">.661571772, mtime=1731074786<"Nov 8 14:06:26 2024">.925976325, ctime=1731074786<"Nov 8 14:06:26 2024">.925976325, size=2560, blocks=8, blksize=16384, flags=0x0, gen=0x5fc350ca }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/opt0.4"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192802, mode=drwxr-xr-x , nlink=2, uid=0<"root">, gid=0<"wheel">, rdev=4796828, atime=1731634208<"Nov 15 01:30:08 2024">.661571772, mtime=1731074786<"Nov 8 14:06:26 2024">.925976325, ctime=1731074786<"Nov 8 14:06:26 2024">.925976325, size=512, blocks=4, blksize=16384, flags=0x0, gen=0xe204cf15 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/tclAppInit.c"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192805, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796848, atime=1727371332<"Sep 26 18:22:12 2024">, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=4598, blocks=12, blksize=16384, flags=0x0, gen=0x14338073 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/tclIndex"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192806, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796851, atime=1731660585<"Nov 15 08:49:45 2024">.971461877, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=6379, blocks=16, blksize=16384, flags=0x0, gen=0xed25aed0 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL stat(0x7b2fec32b970,0x7b2fec32b748)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/word.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192807, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796856, atime=1727371332<"Sep 26 18:22:12 2024">, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=4674, blocks=12, blksize=16384, flags=0x0, gen=0x3ca98c1 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL getdents(3,0x43b6b736000,0x10000)
58849 wish8.5 RET getdents 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL lstat(0x43acb3d4690,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/encoding/pkgIndex.tcl"
58849 wish8.5 RET lstat -1 errno 2 No such file or directory
58849 wish8.5 CALL lstat(0x43acb3dfe10,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/man/pkgIndex.tcl"
58849 wish8.5 RET lstat -1 errno 2 No such file or directory
58849 wish8.5 CALL lstat(0x43acb3d4ab0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/modules/pkgIndex.tcl"
58849 wish8.5 RET lstat -1 errno 2 No such file or directory
58849 wish8.5 CALL lstat(0x43acb3d48a0,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/http1.0/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192672, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4794894, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.965976303, size=735, blocks=4, blksize=16384, flags=0x0, gen=0xa918f489 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL lstat(0x43acb3df960,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/msgs/pkgIndex.tcl"
58849 wish8.5 RET lstat -1 errno 2 No such file or directory
58849 wish8.5 CALL lstat(0x43acb3d4210,0x7b2fec32b5b8)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/opt0.4/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192804, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796830, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=607, blocks=4, blksize=16384, flags=0x0, gen=0x7b412d94 }
58849 wish8.5 RET lstat 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/http1.0"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/http1.0"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3d48a0,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/http1.0/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192672, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4794894, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074786<"Nov 8 14:06:26 2024">.965976303, size=735, blocks=4, blksize=16384, flags=0x0, gen=0xa918f489 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3d48a0,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/http1.0/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 735 bytes
"# Tcl package index file, version 1.0
# This file is generated by the "pkg_mkIndex" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
package ifneeded http 1.0 [list tclPkgSetup $dir http 1.0 {{http.tcl s\
ource {httpCopyDone httpCopyStart httpEof httpEvent httpFinish httpMap\
Reply httpProxyRequired http_code http_config http_data http_formatQue\
ry http_get http_reset http_size http_status http_wait}}}]
"
58849 wish8.5 RET read 735/0x2df
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf00,0x7b2fec32b5f0)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL __realpath(0x7b2fec32bf60,0x7b2fec32b650)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/opt0.4"
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/opt0.4"
58849 wish8.5 RET __realpath 0
58849 wish8.5 CALL stat(0x43acb3d4210,0x7b2fec32c120)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/opt0.4/pkgIndex.tcl"
58849 wish8.5 STRU struct stat { dev=1031, ino=1192804, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=4796830, atime=1731660490<"Nov 15 08:48:10 2024">.591458702, mtime=1727371332<"Sep 26 18:22:12 2024">, ctime=1731074787<"Nov 8 14:06:27 2024">.095976054, size=607, blocks=4, blksize=16384, flags=0x0, gen=0x7b412d94 }
58849 wish8.5 RET stat 0
58849 wish8.5 CALL open(0x43acb3d4210,0<O_RDONLY>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/opt0.4/pkgIndex.tcl"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_ISATTY)
58849 wish8.5 RET fcntl -1 errno 25 Inappropriate ioctl for device
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 GIO fd 3 read 607 bytes
"# Tcl package index file, version 1.1
# This file is generated by the "pkg_mkIndex -direct" command
# and sourced either when an application starts up or
# by a "package unknown" script. It invokes the
# "package ifneeded" command to set up package-related
# information so that packages will be loaded automatically
# in response to "package require" commands. When this
# script is sourced, the variable $dir must contain the
# full path name of this file's directory.
if {![package vsatisfies [package provide Tcl] 8.2]} {return}
package ifneeded opt 0.4.5 [list source [file join $dir optparse.tcl]]
"
58849 wish8.5 RET read 607/0x25f
58849 wish8.5 CALL read(3,0x43b46862028,0x1000)
58849 wish8.5 RET read 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL access(0x43ad9cd4c00,0<F_OK>)
58849 wish8.5 NAMI "/usr/local/lib/tcl/tcl8.5/pkgIndex.tcl"
58849 wish8.5 RET access -1 errno 2 No such file or directory
58849 wish8.5 CALL kbind(0x7b2fec32c708,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cf48,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cf88,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32cdc8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL open(0x43b3ac872a3,0x10000<O_RDONLY|O_CLOEXEC>)
58849 wish8.5 NAMI "/usr/local/lib/libtk85.so.0.19"
58849 wish8.5 RET open 3
58849 wish8.5 CALL fstat(3,0x7b2fec32cc68)
58849 wish8.5 STRU struct stat { dev=1031, ino=1090478, mode=-rw-r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=5974552, atime=1731660585<"Nov 15 08:49:45 2024">.691461604, mtime=1727371912<"Sep 26 18:31:52 2024">, ctime=1731074790<"Nov 8 14:06:30 2024">.615976713, size=1595392, blocks=3168, blksize=16384, flags=0x0, gen=0x946c8fea }
58849 wish8.5 RET fstat 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
58849 wish8.5 RET mmap 4652592787456/0x43b4423f000
58849 wish8.5 CALL kbind(0x7b2fec32ccf8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL socket(AF_UNIX,0x8001<SOCK_STREAM|SOCK_CLOEXEC>,0)
58849 wish8.5 RET socket 3
58849 wish8.5 CALL getsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32c9f4,0x7b2fec32c9f0)
58849 wish8.5 RET getsockopt 0
58849 wish8.5 CALL setsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32c9f4,4)
58849 wish8.5 RET setsockopt 0
58849 wish8.5 CALL connect(3,0x7b2fec32c960,106)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 NAMI "/tmp/.X11-unix/X0"
58849 wish8.5 RET connect 0
58849 wish8.5 CALL getpeername(3,0x43b3a894b80,0x7b2fec32c800)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 RET getpeername 0
58849 wish8.5 CALL sysctl(1.10<kern.hostname>,0x7b2fec32c800,0x7b2fec32c7b0,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL access(0x43b3a87c120,0x4<R_OK>)
58849 wish8.5 NAMI "/root/.Xauthority"
58849 wish8.5 RET access -1 errno 2 No such file or directory
58849 wish8.5 CALL fcntl(3,F_GETFL)
58849 wish8.5 RET fcntl 2
58849 wish8.5 CALL fcntl(3,F_SETFL,0x6<O_RDWR|O_NONBLOCK>)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL poll(0x7b2fec32c828,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x5<POLLIN|POLLOUT>, revents=0x4<POLLOUT> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL writev(3,0x7b2fec32c8c0,2)
58849 wish8.5 STRU struct iovec [2] { base=0x7b2fec32c920, len=12 } { base=0x43b6e2d6bfc, len=0 }
58849 wish8.5 GIO fd 3 wrote 12 bytes
"l\0\v\0\0\0\0\0\0\0\0\0"
58849 wish8.5 RET writev 12/0xc
58849 wish8.5 CALL futex(0x43acb3e5490,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,2147483647,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL futex(0x43acb3e5a20,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,1,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL recvfrom(3,0x43b3a87da40,0x8,0,0,0)
58849 wish8.5 RET recvfrom -1 errno 35 Resource temporarily unavailable
58849 wish8.5 CALL poll(0x7b2fec32c868,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x1<POLLIN>, revents=0x1<POLLIN> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL recvfrom(3,0x43b3a87da40,0x8,0,0,0)
58849 wish8.5 GIO fd 3 read 8 bytes
"\0@\v\0\0\0\^P\0"
58849 wish8.5 RET recvfrom 8
58849 wish8.5 CALL recvfrom(3,0x43b3a889c38,0x40,0,0,0)
58849 wish8.5 GIO fd 3 read 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET recvfrom 64/0x40
58849 wish8.5 CALL write(2,0x43b3a889c38,0x40)
58849 wish8.5 GIO fd 2 wrote 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET write 64/0x40
58849 wish8.5 CALL write(2,0x7b2fec32c8c0,0x1)
58849 wish8.5 GIO fd 2 wrote 1 bytes
"
"
58849 wish8.5 RET write 1
58849 wish8.5 CALL shutdown(3,SHUT_RDWR)
58849 wish8.5 RET shutdown 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL socket(AF_UNIX,0x8001<SOCK_STREAM|SOCK_CLOEXEC>,0)
58849 wish8.5 RET socket 3
58849 wish8.5 CALL getsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32ca44,0x7b2fec32ca40)
58849 wish8.5 RET getsockopt 0
58849 wish8.5 CALL setsockopt(3,SOL_SOCKET,SO_SNDBUF,0x7b2fec32ca44,4)
58849 wish8.5 RET setsockopt 0
58849 wish8.5 CALL connect(3,0x7b2fec32c9b0,106)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 NAMI "/tmp/.X11-unix/X0"
58849 wish8.5 RET connect 0
58849 wish8.5 CALL getpeername(3,0x43b3a8a3680,0x7b2fec32c850)
58849 wish8.5 STRU struct sockaddr { AF_UNIX, "/tmp/.X11-unix/X0" }
58849 wish8.5 RET getpeername 0
58849 wish8.5 CALL sysctl(1.10<kern.hostname>,0x7b2fec32c850,0x7b2fec32c800,0,0)
58849 wish8.5 RET sysctl 0
58849 wish8.5 CALL access(0x43b3a87c120,0x4<R_OK>)
58849 wish8.5 NAMI "/root/.Xauthority"
58849 wish8.5 RET access -1 errno 2 No such file or directory
58849 wish8.5 CALL fcntl(3,F_GETFL)
58849 wish8.5 RET fcntl 2
58849 wish8.5 CALL fcntl(3,F_SETFL,0x6<O_RDWR|O_NONBLOCK>)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(3,F_SETFD,FD_CLOEXEC)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL poll(0x7b2fec32c878,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x5<POLLIN|POLLOUT>, revents=0x4<POLLOUT> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL writev(3,0x7b2fec32c910,2)
58849 wish8.5 STRU struct iovec [2] { base=0x7b2fec32c970, len=12 } { base=0x43b6e2d6bfc, len=0 }
58849 wish8.5 GIO fd 3 wrote 12 bytes
"l\0\v\0\0\0\0\0\0\0\0\0"
58849 wish8.5 RET writev 12/0xc
58849 wish8.5 CALL futex(0x43ad9cff4d0,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,2147483647,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL futex(0x43ad9d09f70,0x82<FUTEX_WAKE|FUTEX_PRIVATE_FLAG>,1,0,0)
58849 wish8.5 RET futex 0
58849 wish8.5 CALL recvfrom(3,0x43b3a898830,0x8,0,0,0)
58849 wish8.5 RET recvfrom -1 errno 35 Resource temporarily unavailable
58849 wish8.5 CALL poll(0x7b2fec32c8b8,1,INFTIM)
58849 wish8.5 STRU struct pollfd { fd=3, events=0x1<POLLIN>, revents=0x1<POLLIN> }
58849 wish8.5 RET poll 1
58849 wish8.5 CALL recvfrom(3,0x43b3a898830,0x8,0,0,0)
58849 wish8.5 GIO fd 3 read 8 bytes
"\0@\v\0\0\0\^P\000"
58849 wish8.5 RET recvfrom 8
58849 wish8.5 CALL recvfrom(3,0x43b3a8890a8,0x40,0,0,0)
58849 wish8.5 GIO fd 3 read 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET recvfrom 64/0x40
58849 wish8.5 CALL write(2,0x43b3a8890a8,0x40)
58849 wish8.5 GIO fd 2 wrote 64 bytes
"Authorization required, but no authorization protocol specified
"
58849 wish8.5 RET write 64/0x40
58849 wish8.5 CALL write(2,0x7b2fec32c910,0x1)
58849 wish8.5 GIO fd 2 wrote 1 bytes
"
"
58849 wish8.5 RET write 1
58849 wish8.5 CALL shutdown(3,SHUT_RDWR)
58849 wish8.5 RET shutdown 0
58849 wish8.5 CALL close(3)
58849 wish8.5 RET close 0
58849 wish8.5 CALL kbind(0x7b2fec32dd18,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL write(1,0x43b46862028,0x45)
58849 wish8.5 GIO fd 1 wrote 69 bytes
"Password Gorilla has been unable to load Tk 8.5, which is required.\r
"
58849 wish8.5 RET write 69/0x45
58849 wish8.5 CALL write(1,0x43b46862028,0x2c)
58849 wish8.5 GIO fd 1 wrote 44 bytes
"Reason: 'couldn't connect to display ":0"'\r
"
58849 wish8.5 RET write 44/0x2c
58849 wish8.5 CALL kbind(0x7b2fec32e9e8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9a8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e968,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e8d8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e878,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL fcntl(1,F_GETFL)
58849 wish8.5 RET fcntl 2
58849 wish8.5 CALL fcntl(1,F_SETFL,0x2<O_RDWR>)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL fcntl(0,F_GETFL)
58849 wish8.5 RET fcntl 2
58849 wish8.5 CALL fcntl(0,F_SETFL,0x2<O_RDWR>)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL kbind(0x7b2fec32e928,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL fcntl(2,F_GETFL)
58849 wish8.5 RET fcntl 2
58849 wish8.5 CALL fcntl(2,F_SETFL,0x2<O_RDWR>)
58849 wish8.5 RET fcntl 0
58849 wish8.5 CALL kbind(0x7b2fec32e9a8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e998,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL kbind(0x7b2fec32e9c8,24,0x59de7f1740a05b34)
58849 wish8.5 RET kbind 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x3<PROT_READ|PROT_WRITE>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x3<PROT_READ|PROT_WRITE>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x3<PROT_READ|PROT_WRITE>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL mprotect(0x43b30c51000,0x1000,0x1<PROT_READ>)
58849 wish8.5 RET mprotect 0
58849 wish8.5 CALL munmap(0x43b30c51000,0x1000)
58849 wish8.5 RET munmap 0
58849 wish8.5 CALL exit(1)