0707070000020007011006440001460001440000010053150351540372400000500000000004Size375 0707070000020010331006440001460001440000010056350351540365100000500000000104NameDSH -- MS-DOS Cmds for the Korn Shell v1.0 7/85 - From THE STORE! 0707070000020007141006440001460001440000010053250351527133700001000000001213Install# Install for DSH MS-DOS shell functions for ksh # on AT&T UNIX PC 7300 # S.Coffin 6/3/85 PATH=/bin:/usr/bin:/etc LIB=/usr/lib/dsh BIN=/usr/bin if [ ! -d $LIB ] ; then mkdir $LIB fi if [ ! -x /bin/ksh ] ; then echo "You must have ksh installed to use DSH!" echo "Loading ksh as /bin/ksh...." mv ksh /bin/ksh else echo "ksh ok...." fi echo "Building dsh library in $LIB" mv dsh.stuff/* $LIB cd $LIB ./dsh_install $BIN echo "\nDSH Documention will be found in /usr/lib/dsh/dsh.memo" echo To use dsh, type \"dsh\" from the Korn shell, or put the echo \"dsh\" command at the end of your \".profile\" echo "Hit ENTER to continue." read DUMMY 0707070000020007701006440001460001440000010053260351527117100000700000000135Remove# Remove for dsh # S.Coffin 7/85 BIN=/usr/bin LIB=/usr/lib/dsh /bin/rm -rf $BIN/dsh $LIB 0707070000020007530407550001460001440000020053300351540327000001200000000000dsh.stuff0707070000020007131007770001460001440000010053310351527117200001500000000061dsh.stuff/A:echo "No $0 drive - use 'CD directory' instead." 0707070000020007671007770001460001440000010053320351527117200001500000000061dsh.stuff/B:echo "No $0 drive - use 'CD directory' instead." 0707070000020007621007770001460001440000010053330351527117200001500000000061dsh.stuff/C:echo "No $0 drive - use 'CD directory' instead." 0707070000020006321006660001460001440000010053340351527117300002100000001750dsh.stuff/DevPkgfunction tr # limited tr for dsh { case $1 in -s) sq=y; shift;; -*) echo 'dsh tr only recognizes -s option **' >&2 return 4;; esac case $1 in \[a-z]) set -- abcdefghijklmnopqrstuvwxyz "$2";; \[A-Z]) set -- ABCDEFGHIJKLMNOPQRSTUVWXYZ "$2";; *\\*) set -- `echo "$1"` "$2";; esac case $2 in \[a-z]) set -- "$1" abcdefghijklmnopqrstuvwxyz ;; \[A-Z]) set -- "$1" ABCDEFGHIJKLMNOPQRSTUVWXYZ ;; *\\012*) set -- "$1" "`echo \"${2%%\\012*}\\004${2##*\\012}\"`";; *\\*) set -- "$1" `echo "$2"`;; esac case $sq in y) sq="${2%${2#?}}" sq="s/$sq$sq*/$sq/g";; esac sed "y/$1/$2/ s:`echo \\004`:\\ :g $sq" } function xargs # limited xargs for dsh { case $1 in -i) shift cmd=`echo "$*" | sed 's/{}/\$a/g'` while read a do eval $cmd done;; *) echo 'dsh xargs only recognizes -i option **' >&2 return 4;; esac } alias -x exe2bin='echo exe2bin requires development package' \ EXE2BIN='echo exe2bin requires development package' typeset -xf tr xargs 0707070000020007711007770001460001440000010053350351527117300002000000000412dsh.stuff/PRINTfunction PRINT # DOS printer/spooler { typeset args for i in "$@" do case "$i" in -*) print "$@" return;; /[TtCcPp]) ;; *) test -r $i && args="$args $i";; esac done _Ducmd "$DOSPRINT $args" } typeset -xf PRINT unalias PRINT alias -x print=PRINT 0707070000020006671007770001460001440000010053360351527117300001700000000560dsh.stuff/TIMEtypeset -Z2 hr min case $1 in '') _Ducmd "/bin/date '+Current time is %r%nEnter new time:'" read ans test -z "$ans" && exit 1;; [0-9]*[:.]*) ans="$1";; *) time "$@" exit;; esac hr=${ans%%[.:]*} ans=${ans#*[.:]} min=${ans%[.:]*} _Ducmd "/bin/date `/bin/date \"+%m%d$hr$min%y\"`" || print - "Sytem time unchanged - only superuser can change system time" 0707070000020007651007770001460001440000010053370351527117300001500000000061dsh.stuff/a:echo "No $0 drive - use 'CD directory' instead." 0707070000020007771006660001460001440000010053400351527117300002100000000555dsh.stuff/assignfunction assign # define new file structure { export DRSPEC typeset oldIFS="$IFS" IFS="$IFS=" set -- $* IFS="$oldIFS" set -- $* case $1 in '') _Ducmd "/etc/umount $DRSPEC" DRSPEC=;; /dev/ifdsk[0-9]*) _Ducmd "/etc/mount $1 $2" DRSPEC="$1";; *) echo "ASSIGN: $1 unknown";; esac } unalias assign alias -x ASSIGN=assign typeset -xf assign 0707070000020010001007770001460001440000010053410351527117300001500000000061dsh.stuff/b:echo "No $0 drive - use 'CD directory' instead." 0707070000020010011007770001460001440000010053420351527117300002100000002656dsh.stuff/backupsubdir= findopt= cpioopt="-p" typeset -Z2 mon day year hour min eval `date '+mon=%m day=%d year=%y'` dstr= hour=00 min=00 arg= farg= last= lcmd= while true do case "$1" in '') break;; /[sS]) findopt="$findopt -depth"; cpioopt="${cpioopt}d" subdir=Y;; /[mM]) cpioopt="${cpioopt}m";; /[aA]) cpioopt="${cpioopt}u";; /[pP]) ;; /[lL]:*) logfile=${1#*:} logfile=${logfile:-BACKUP.LOG} lcmd="tee -a $logfile |";; /[tT]:*) hstr=${1#*:} hour=${hstr%%[.:]*} hstr=${hstr#*[.:]} min=${hstr%[.:]*} ;; /[dD]:*) dstr=${1#*:} mon=${dstr%%[-/]*} dstr=${dstr#*[-/]} day=${dstr%[-/]*} year=${dstr#*[-/]} ;; *) if test -f "$1" then arg="$arg $1" last= else farg="${farg} ${last}" last="$1" fi ;; esac shift done if test -n "$dstr$hstr" then trap "rm /tmp/dsh$$" 0 trap exit 1 2 3 15 touch "${mon}${day}${hour}${min}${year}" /tmp/dsh$$ findopt="$findopt -newer /tmp/dsh$$" if test "$arg" != "" then temp=`ls -t /tmp/dsh$$ $arg` arg=${temp%?/tmp/dsh$$*} if test "$temp" = "$arg" then print - "Nothing to backup" rm /tmp/dsh$$ ; exit 1 fi fi else arg=`ls $arg` fi if test ! -d "$last" then print - "$0: Error - no directory specified for backups" exit 2 fi if test -n "$lcmd" then /bin/date "+%D %T To $last:" >>$logfile fi if test -n "$subdir" then _Ducmd "find $farg $findopt -print | $lcmd cpio $cpioopt $last" else _Ducmd "echo \"$arg\" | $lcmd cpio $cpioopt $last" fi 0707070000020010021006660001460001440000010053440351527117400002300000000161dsh.stuff/bat.makeBATC = $(DOSPATH)/batc .SUFFIXES : .bat .BAT .bat .BAT : .SILENT echo "\tCompiling $< into $*"; \ $(BATC) $* 0707070000020010031007770001460001440000010053450351527117400001700000003741dsh.stuff/batcfile="$1.bat" test -r "$file" || { file="$1.BAT" test -r "$file" || { echo "Error: $0 cannot find $1.bat" >&2 exit 2; }; } sed ' 1i\ _label=::top\ while true\ do case $_label in\ ::top) s/~/\ /g s/\\\\/~/g s:\\:/:g s/~/\\/g :p1 s/%/~/ t p2 b p3 :p2 s/~\([0-9]\)/$\1/ t p1 s/~\([^~% ][^% ]*\)%/${\1}/ t p1 s/~%/~/ b p1 :p3 s/~/%/g s/^\([ ]*\)\(.*\)/ \1~\2 / s/~for\([ ][ ]*\)/~FOR\1/ s/\(~FOR[^~]*[ ]\)[([]/\1[ /g s/\(~FOR[^~]*\)[ ]*[])]\([ ]\)/\1 ]\2/g s/~FOR[^~]*[ ]][ ][ ]*[Dd][Oo][ ][ ]*/&~/g s/~if\([ ][ ]*\)/~IF\1/ /~IF\([ ][ ]*\)/{ s/\([ ][ ]*\)if\([ ][ ]*\)/\1~IF\2/g s/\([ ][ ]*\)break\([ ][ ]*\)/\1~BREAK\2/g s/\([ ][ ]*\)echo[ ][ ]*off\([ ][ ]*\)/\1~ECHO OFF\2/g s/\([ ][ ]*\)echo[ ][ ]*on\([ ][ ]*\)/\1~ECHO ON\2/g s/\([ ][ ]*\)for\([ ][ ]*\)/\1~FOR\2/g s/\([ ][ ]*\)FOR\([ ][ ]*\)/\1~FOR\2/g s/\(~FOR[^~]*[ ]\)(/\1[ /g s/\(~FOR[^~]*\)[ ]*)\([ ]\)/\1 ]\2/g s/~FOR[^~]*[ ]][ ][ ]*[Dd][Oo][ ][ ]*/&~/g s/\([ ][ ]*\)goto\([ ][ ]*\)/\1~GOTO\2/g s/\([ ][ ]*\)GOTO\([ ][ ]*\)/\1~GOTO\2/g s/~GOTO[ ]*$/~GOTO : /g s/~GOTO[ ]*\(.*\)/_label=:\1\\; else false \&\& continue/ s/\([ ][ ]*\)set\([ ][ ]*\)/\1~SET\2/g s/\([ ][ ]*\)time\([ ][ ]*\)/\1~TIME\2/g } s/~break\([ ][ ]*\)/~BREAK\1/g s/~echo[ ][ ]*off\([ ][ ]*\)$/~ECHO OFF\1/g s/~echo[ ][ ]*on\([ ][ ]*\)$/~ECHO ON\1/g s/~goto\([ ][ ]*\)/~GOTO\1/g s/~set\([ ][ ]*\)/~SET\1/g s/~time\([ ][ ]*\)/~TIME\1/g s/~GOTO[ ]*$/~GOTO : /g /~GOTO\([ ][ ]*\)/{ s/~GOTO[ ]*\(.*\)/_label=:\1; continue/ h } s/~ECHO ON[ ]*$/set -x/ s/~ECHO OFF[ ]*$/set +x/ s/~//g s/[ ][ ]*$// s/\n/~/g /^[ ]*:/{s/^[ ]*\(:.*\)[ ]*$/ _label=\1; continue;;\ \1)/ x G s/^[ ]*_.*ue;;/ ;;/ s/^\n// x s/.*// x } $a\ exit;;\ *) exit;;\ esac\ done ' <$file | case $0 in *batcg) file=$1; shift { echo set -- "$@"; tee $file; } | $SHELL;; *) cat >$1 chmod +rx $1;; esac 0707070000020010041007770001460001440000010053470351527117400002000000003741dsh.stuff/batcgfile="$1.bat" test -r "$file" || { file="$1.BAT" test -r "$file" || { echo "Error: $0 cannot find $1.bat" >&2 exit 2; }; } sed ' 1i\ _label=::top\ while true\ do case $_label in\ ::top) s/~/\ /g s/\\\\/~/g s:\\:/:g s/~/\\/g :p1 s/%/~/ t p2 b p3 :p2 s/~\([0-9]\)/$\1/ t p1 s/~\([^~% ][^% ]*\)%/${\1}/ t p1 s/~%/~/ b p1 :p3 s/~/%/g s/^\([ ]*\)\(.*\)/ \1~\2 / s/~for\([ ][ ]*\)/~FOR\1/ s/\(~FOR[^~]*[ ]\)[([]/\1[ /g s/\(~FOR[^~]*\)[ ]*[])]\([ ]\)/\1 ]\2/g s/~FOR[^~]*[ ]][ ][ ]*[Dd][Oo][ ][ ]*/&~/g s/~if\([ ][ ]*\)/~IF\1/ /~IF\([ ][ ]*\)/{ s/\([ ][ ]*\)if\([ ][ ]*\)/\1~IF\2/g s/\([ ][ ]*\)break\([ ][ ]*\)/\1~BREAK\2/g s/\([ ][ ]*\)echo[ ][ ]*off\([ ][ ]*\)/\1~ECHO OFF\2/g s/\([ ][ ]*\)echo[ ][ ]*on\([ ][ ]*\)/\1~ECHO ON\2/g s/\([ ][ ]*\)for\([ ][ ]*\)/\1~FOR\2/g s/\([ ][ ]*\)FOR\([ ][ ]*\)/\1~FOR\2/g s/\(~FOR[^~]*[ ]\)(/\1[ /g s/\(~FOR[^~]*\)[ ]*)\([ ]\)/\1 ]\2/g s/~FOR[^~]*[ ]][ ][ ]*[Dd][Oo][ ][ ]*/&~/g s/\([ ][ ]*\)goto\([ ][ ]*\)/\1~GOTO\2/g s/\([ ][ ]*\)GOTO\([ ][ ]*\)/\1~GOTO\2/g s/~GOTO[ ]*$/~GOTO : /g s/~GOTO[ ]*\(.*\)/_label=:\1\\; else false \&\& continue/ s/\([ ][ ]*\)set\([ ][ ]*\)/\1~SET\2/g s/\([ ][ ]*\)time\([ ][ ]*\)/\1~TIME\2/g } s/~break\([ ][ ]*\)/~BREAK\1/g s/~echo[ ][ ]*off\([ ][ ]*\)$/~ECHO OFF\1/g s/~echo[ ][ ]*on\([ ][ ]*\)$/~ECHO ON\1/g s/~goto\([ ][ ]*\)/~GOTO\1/g s/~set\([ ][ ]*\)/~SET\1/g s/~time\([ ][ ]*\)/~TIME\1/g s/~GOTO[ ]*$/~GOTO : /g /~GOTO\([ ][ ]*\)/{ s/~GOTO[ ]*\(.*\)/_label=:\1; continue/ h } s/~ECHO ON[ ]*$/set -x/ s/~ECHO OFF[ ]*$/set +x/ s/~//g s/[ ][ ]*$// s/\n/~/g /^[ ]*:/{s/^[ ]*\(:.*\)[ ]*$/ _label=\1; continue;;\ \1)/ x G s/^[ ]*_.*ue;;/ ;;/ s/^\n// x s/.*// x } $a\ exit;;\ *) exit;;\ esac\ done ' <$file | case $0 in *batcg) file=$1; shift { echo set -- "$@"; tee $file; } | $SHELL;; *) cat >$1 chmod +rx $1;; esac 0707070000020010051007770001460001440000010054010351527117400001500000000061dsh.stuff/c:echo "No $0 drive - use 'CD directory' instead." 0707070000020010061007770001460001440000010051570351527117400002100000000251dsh.stuff/chkdskargs= opts= optq=-q for i in "$@" do case $i in /[fF]) opts="$opts -y";; /[vV]) optq='';; *) args="$args $i";; esac done _Ducmd "/etc/fsck $optq $opts ${args:-.}" 0707070000020010071006660001460001440000010053750351527117500001700000003626dsh.stuff/compfunction _comp # DOC file compare (cmp) { trap "set +f" 0 fromdir="$1/*" todir=${2:=.} if test -d $1 then set +f _Ducmd ls $fromdir \| xargs -i cmp $1/{} ${todir}/{} ls $1 | xargs -i cmp $1/{} ${todir}/{} elif test -d $2 then set +f _Ducmd ls $fromdir \| xargs -i cmp {} ${todir}/{} ls $1 | xargs -i cmp {} ${todir}/{} elif test -r $2 then set +f _Ducmd ls $fromdir \| xargs -i cmp {} ${todir} ls $1 | xargs -i cmp {} ${todir} else # compare on matching wildcards typeset prefix suffix rest prefix2 suffix2 rest2 dir rest=`basename ${1}` dir=${1%$rest} if test "$dir" = "*" then dir="" # a ksh patch fi set $rest ${2:=.} case $1 in \**) prefix='*' rest=${1#[$prefix]};; \?*) rest="`expr $1 : '\?*\([^?]*\)'`" prefix=${1%$rest};; *\*) suffix='*' rest=${1%[$suffix]};; *\?) rest="`expr $1 : '\([^?]*\)\?*'`" suffix="${1#$rest}";; *) prefix= suffix= rest="$1";; esac case $2 in \**) prefix2='*' rest2=${2#[$prefix2]};; \?*) rest2="`expr $2 : '\?*\([^?]*\)'`" prefix2="${2%$rest2}";; *\*) suffix2='*' rest2=${2%[$suffix2]};; *\?) rest2="`expr $2 : '\([^?]*\)\?*'`" suffix2="${2#$rest2}";; *) prefix2= suffix2= rest2="$2";; esac set +f for i in $dir$1 do i=`basename $i` case $1 in \**|\?*) case $2 in *\*) tofile="${rest2}${i%$rest}";; \**) tofile="${i%$rest}${rest2}";; \?*) tofile="${i%${i#$prefix2}}${rest2}";; *\?) tofile="${rest2}${i#${i%$suffix2}}";; esac ;; *\*|*\?) case $2 in *\*) tofile="${rest2}${i#$rest}";; \**) tofile="${i#$rest}${rest2}";; \?*) tofile="${i%${i#$prefix2}}${rest2}";; *\?) tofile="${rest2}${i#${i%$suffix2}}";; esac ;; *) tofile=$2;; esac if test "$tofile" != "" then _Ducmd "cmp ${dir}$i $tofile" cmp ${dir}$i $tofile else print "Error: ${dir}$i invalid" fi done fi } alias -x COMP='set -f; _comp'\ comp='set -f; _comp' typeset -xf _comp 0707070000020010101006660001460001440000010051550351527117500001700000004722dsh.stuff/copyfunction _copy # DOS copy { trap 'set +f' 0 typeset a d df f ifs mat mode plus=y root tgt=y x y typeset -i j n=0 for a do case $a in /[VABvab]) ;; *) y="$y $a";; esac done set -- $y case $* in *+*) case $# in 1) tgt=n;; *) let j=$#-1 eval "x=\$$j\ \$$#" case $x in *+\ *|*\ *+*) tgt=n;; esac;; esac IFS="+$IFS" ifs="$IFS" set -- $* IFS="$ifs" set -- $*;; *) case $# in 0) echo 'copy: no arguments' >&2; return;; [12]) plus=n;; esac;; esac case $# in 1) set -- $1 .;; esac for a do let n=$n+1 test $n -le 2 && { test -d $a && df[$n]=d || df[$n]=f; } case $a in */*) d[$n]=${a%/*}/ f=${a##*/};; *) d[$n]= f=$a;; esac case $f in [*?]*) mode[$n]=p x="$f." x=${x%%[!*?]*} case $x in \*) x=?;; esac root[$n]=${f#$x};; *[*?]) mode[$n]=s x=${f##*[!*?]} case $x in \*) x=?;; esac root[$n]=${f%$x};; *) mode[$n]=x root[$n]=$f;; esac done case $plus in n) case $1 in "$2") echo copy: 'input=output' >&2; return;; esac case ${df[1]}${mode[1]}:${df[2]}${mode[2]} in dx:dx) _Ducmd "cp $1/* $2";; dx:fx) _Ducmd "cat $1/* >$2";; fx:?x|f?:dx) _Ducmd "cp $1 $2";; f?:fx) _Ducmd "cat $1 >$2";; f?:f?) plus=y;; *) echo 'copy error' >&2; return;; esac;; esac case $plus in n) return;; esac case $tgt in y) y= x= for a do y="$y $x" x=$a done set -- $y;; n) let n=$n+1 d[$n]=${d[1]} root[$n]=${root[1]} mode[$n]=${mode[1]};; esac tgt=${d[$n]}${root[$n]} case ${mode[1]} in x) case $#${mode[2]} in *x) _Ducmd "cat $* >${d[$n]}DOStemp;" \ "mv ${d[$n]}DOStemp $tgt";; 2?) _Ducmd "cat $2 >${d}DOStemp;" \ "mv ${d}DOStemp ${d[1]}${root[1]}";; *) echo 'copy error' >&2; return;; esac;; *) _Ducmd ">${d[$n]}DOStemp" for f in `set +f; ls $1` do mat=${f#${d[1]}} case ${mode[1]} in p) mat=${mat%${root[1]}};; s) mat=${mat#${root[1]}};; esac y= j=0 while test $j -lt $n do let j=$j+1 case ${mode[$j]} in p) x=${d[$j]}$mat${root[$j]};; s) x=${d[$j]}${root[$j]}$mat;; esac case $j in $n) ;; *) y="$y $x";; esac done _Ducmd "cat -s $y >>${d[$n]}DOStemp" case ${mode[$n]} in [ps]) _Ducmd "mv ${d[$n]}DOStemp $x";; esac done case ${mode[$n]} in x) _Ducmd "mv ${d[$n]}DOStemp $tgt";; esac;; esac } alias -x COPY='set -f; _copy'\ copy='set -f; _copy' typeset -xf _copy 0707070000020010111007770001460001440000010054030351527117500001700000000711dsh.stuff/datetypeset -Z2 mon day yr case $1 in '') _Ducmd "/bin/date '+Current date is %D%nEnter new date:'" read ans test -z "$ans" && exit 1;; [0-9]*[-/][0-9]*[-/]*) ans="$1";; +*) exec /bin/date "$@";; *) print - 'Invalid date specification' exit;; esac mon=${ans%%[-/]*} ans=${ans#*[-/]} day=${ans%[-/]*} yr=${ans#*[-/]} _Ducmd "/bin/date `/bin/date \"+$mon$day%H%M$yr\"`" || print - "System date unchanged - only superuser can change system date" 0707070000020010121007770001460001440000010051620351527117500001600000000225dsh.stuff/diropt=-l more= arg= for i in "$@" do case $i in /[Pp]) more=' | more';; /[Ww]) opt=-C;; *) arg="$arg $i";; esac done _Ducmd "ls $opt $arg $more" 0707070000020010131007770001460001440000010054040351527117600002300000001525dsh.stuff/diskcompargs= dtrac= for i do case $i in /[Ll8]) ;; *) args="$args $i";; esac done set -- $args D0=$PWD D1=$1 D2=${2:-$PWD} test ! -d "$D1" -o ! -d "$D2" && echo "Usage: $0 dir1 dir2" && exit 2 cd $D1 trap "rm -f /usr/tmp/dc$$*; exit" 1 2 3 15 ls -ad * >/usr/tmp/dc$$a cd $D0 cd $D2 ls -ad * | comm /usr/tmp/dc$$a - | sed -n " /^ /w /usr/tmp/dc$$c /^ [^ ]/w /usr/tmp/dc$$d /^[^ ]/w /usr/tmp/dc$$e" echo "\n$D1 only .. and $D2 only:\n" pr -mto1 /usr/tmp/dc$$e /usr/tmp/dc$$d rm -f /usr/tmp/dc$$a /usr/tmp/dc$$e /usr/tmp/dc$$d cd $D0 echo "\nComparison of $D1 and $D2:\n" while read a do if [ -d $D1/"$a" ] then echo " directory $a" elif [ -f $D1/"$a" ] then cmp -s $D1/"$a" $D2/"$a" if [ $? = 0 ] then echo " same $a" else echo " different $a" fi else echo " special $a" fi done $PRN .DE .P UNIX makes use of file extensions (e.g., .c for C program source, .o for object code, etc.) of arbitrary length, not just the three characters of DOS. The .bat and .BAT extensions are recognized by the UNIX make command, when invoked from the dsh environment, as DOS code to be compiled to a dsh command file. Once compiled, typing the filename and any arguments will result in execution, exactly analogous to DOS. The .exe and .com extensions are meaningless to UNIX. .H 2 Initialization If dsh finds an ``autoexec'' file in the user's home directory, it will execute it when it first starts. This is analogous to DOS execution of an ``autoexec.bat'' file, but dsh requires the compilation to ``autoexec''. In addition, dsh will define CTRL-C to be the interrupt and line-delete sequence when it initializes. .H 2 "Function Keys" DOS initializes the first five function keys (F1-F5) to permit editing of the previous command. A similar capability exists in dsh, but the keys must be loaded by the user. On most terminals, this can be done once, and then remembered or down-loaded as needed. The key definitions in Table 2 are recommended, since the first five keys closely match the DOS definitions. .DF .TB "Function Key Definitions" .SP .TS box tab(;); lBlBlBlB l1wl2wc1wl. Key;Label;Definition;Function; _ F1;T{ .ll .75i .fi NEXT CHAR T};^F;T{ .ll 1.85i .fi Move cursor to next position T}; _ F2;T{ .ll .75i .fi FIND CHAR T};^];T{ .ll 1.85i .fi Find next instance of a given character T}; _ F3;T{ .ll .75i .fi TO END OF LINE T};^E;T{ .ll 1.85i .fi Move cursor to end of line T}; _ F4;T{ .ll .75i .fi DELETE CHAR T};^D;T{ .ll 1.85i .fi Delete character at cursor T}; _ F5;REFRESH;^A\f2esc\f1-p^L;T{ .ll 1.85i .fi Refresh the command line display T}; _ F6;T{ .ll .75i .fi EDIT PREV CMD T};^P^A;T{ .ll 1.85i .fi Edit previous command T}; _ F7;T{ .ll .75i .fi DELETE TO EOL T};^K;T{ .ll 1.85i .fi Delete all characters to the end of the line T}; _ F8;T{ .ll .75i .fi PREV CHAR T};^B;T{ .ll 1.85i .fi Move cursor to previous character T}; .TE .DE In the table, ^X represents CTRL and key X (simultaneously), and \f2esc\f1-X represents escape followed by key X. .P With these function key definitions, any previously issued command may be recalled (by pushing the F6 button multiple times) and edited. Those familiar with UNIX will recognize the function key definitions as emacs editor commands, and indeed, most of the emacs editor is available to process the command history. The emacs commands can be given directly from the keyboard, if desired. One emacs command that is useful, and can be used with the function keys, is \f2esc\f1-number. When an \f2esc\f1-number is followed by a function key, the effect of the function key is multiplied by the number. For example, \f2esc\f1-10 followed by F6 retrieves the tenth previous command. .P The command editing is not completely identical to DOS, but is similar, easy to use, and more powerful. .H 2 Installation The dsh commands should be saved in a file not customarily searched by vanilla UNIX users, since some dsh commands overwrite UNIX commands with the same name. The dsh shell script itself should be copied to a directory that is searched, so that it will become available for execution. The installation procedure has been mechanized to the greatest extent possible. After moving all source files to the directory where they are to be kept, and changing to that directory, type .DS CB dsh_install dirname printer commands .DE where dirname is the name of the directory to be searched for dsh (typically \f3NOT\f1 the directory containing the source), and the rest of the command line is the UNIX command to be used as the default printer command. Be sure you have write permission for dirname. The printer commands are optional, and will default to ``lp''. For example, .DS C dsh_install /usr/lbin lp -d x10 .DE will install the dsh command in /usr/lbin, and spool user's print requests to destination x10 via the lp command. 0707070000020010171006660001460001440000010054140351527120100002100000013172dsh.stuff/dosenvfunction dtrace # turn on/off echo of unix version of DOS commands { export dtrac case $1 in ''|ON|on) dtrac=Y;; *) dtrac=;; esac } function _Ducmd # echo and/or execute UNIX version of DOS command { case $dtrac in [YO]) print -r - '$' "$@" >&2;; esac case $dtrac/$- in Y*f*|/*f*) set +f; eval "$@"; set -f;; Y*|/*) eval "$@";; esac } function basename { print -r ${1##*/}; } function BREAK # toggle ctrl-C { case $1 in ON|on) stty intr '^C' 2>/dev/null break_=on;; OFF|off) stty intr '^-' 2>/dev/null break_=off;; *) echo "BREAK is $break_";; esac } function CD # DOS change directory { typeset cdpath unalias cd case $1 in '') _Ducmd pwd;; /) _Ducmd cd '$HOME';; /*) CDPATH="$HOME:/" cdpath="$CDPATH" _Ducmd cd "${1#/}" CDPATH="$cdpath";; *) _Ducmd cd $1;; esac alias -x cd=CD eval PS1="\"$DOSPS1\"" } function del # DOS delete { typeset ans if test -n "$2" then echo "erase $@" read ans?'Are you sure? (Y|N) ' test "$ans" != "Y" -a "$ans" != "y" && return fi _Ducmd rm "$@" } function FOR # DOS for, with parends, no "done" { typeset args vbl="$1" uvbl i=1 j uvbl="\${${vbl#%}}" while : do case $i.$1 in 1.*) args="${1#%} in"; i=2;; 2.in|2.IN) i=3;; 3.[[\(]*) args="$args ${1#[[(]}"; i=4;; 4.*[]\)]) args="$args ${1%[])]}"; i=5;; 4.*) args="$args $1";; 5.do|5.DO) shift; break;; *) print - 'FOR: syntax error' return 1;; esac shift done i="$*" while : do case $i in *$vbl*) j="$j${i%%$vbl*}$uvbl" i="${i#*$vbl}";; *) break;; esac done _Ducmd "for $args; do $j; done" } function IF # DOS if { typeset eoexp returncode=$? args='if test' while true do case $1 in '') break;; errorlevel|ERRORLEVEL) args="$args $returncode -ge $2; then" eoexp=Y shift;; not|NOT) if test "$eoexp" = Y then args="$args $1" else args="$args !" fi;; exist|EXIST) args="$args -f $2; then" eoexp=Y shift;; ==) args="$args = $2; then" eoexp=Y shift;; fi) break;; *) args="$args $1";; esac shift done _Ducmd "$args; fi" } function path # set path { if test -z "$1" then echo $PATH else PATH="$DOSPATH::`echo \"$1\" | tr ';' :`" fi } function _prompt # prompt setting { case $# in 0) DOSPS1="$n$g";; *) DOSPS1=`echo "$@" | sed "s/$$/"'\\$_dlr/ s/'"$e"'\[7m/\`tput smso\`/g s/'"$e"']m/\`tput rmso\`/g ' | tr '\006\025' ' \012'`;; esac case $DOSPS1 in *\`tput\ *) tput bw;; esac # be sure tputtc executed eval PS1="\"$DOSPS1\"" } function SET # DOS parameter definition { typeset a tmp tmp2 case $1 in '') set; return;; *=*) a="$1"; shift;; *) case $2 in =*) a="$1$2"; shift 2;; *) echo "Usage: $0 string = string";; esac;; esac tmp="${a%=*}" tmp2="${a#*=}" _Ducmd "$tmp=\"$tmp2${*:+ $*}\"; export $tmp" } function tput { unset -f tput whence tput >/dev/null || { eval "`$DOSPATH/tputtc`"; typeset -xf tput; } tput "$@" } function no_op { print - $1 not needed in Unix } alias -x ASSIGN=". $DOSPATH/assign; assign"\ BACKUP=backup\ CHDIR=CD\ CHKDSK=chkdsk\ CLS='tput clear'\ COMMAND='_Ducmd $SHELL'\ COMP=". $DOSPATH/comp; set -f; _comp"\ COPY=". $DOSPATH/copy; set -f; _copy"\ CTTY='exec <'\ DATE=date\ DEL=del\ DIR=dir\ DISKCOMP=diskcomp\ DISKCOPY=diskcopy\ ECHO=echo\ EDLIN=ed\ ERASE=del\ EXE2BIN=strip\ EXIT=exit\ FC=$DOSPATH/fc\ FDISK='no_op FDISK'\ FIND=find\ FORMAT=format\ GOTO='echo GOTO commands must be removed by batc: .bat files only'\ GRAPHICS='tput mc0'\ MD=mkdir\ MKDIR=mkdir\ MODE='no_op MODE'\ MORE=more\ PATH=path\ PAUSE=pause\ PRINT='unalias print; . $DOSPATH/PRINT; PRINT'\ PROMPT=": `echo '\025'`; _prompt"\ RD=rmdir\ RECOVER='/etc/fsck -y'\ RESTORE=restore\ REM='#'\ REN=". $DOSPATH/ren; set -f; _rename"\ RENAME=". $DOSPATH/ren; set -f; _rename"\ RMDIR=rmdir\ SHIFT=shift\ SORT=sort\ SYS='no_op SYS'\ TREE=tree\ TYPE=cat\ VER='uname -r'\ VERIFY='no_op VERIFY'\ VOL=df\ assign=". $DOSPATH/assign; assign"\ cd=CD\ chdir=CD\ cls='tput clear'\ command='_Ducmd $SHELL'\ comp=". $DOSPATH/comp; set -f; _comp"\ copy=". $DOSPATH/copy; set -f; _copy"\ ctty='exec <'\ edlin=ed\ erase=del\ exe2bin=strip\ fc=$DOSPATH/fc\ fdisk='no_op FDISK'\ goto='echo GOTO commands must be removed by make: .bat files only'\ graphics='tput mc0'\ md=mkdir\ mode='no_op MODE'\ print='unalias print; . $DOSPATH/PRINT; PRINT'\ prompt=": `echo '\025'`; _prompt"\ rd=rmdir\ recover='/etc/fsck -y'\ rem='#'\ ren=". $DOSPATH/ren; set -f; _rename"\ rename=". $DOSPATH/ren; set -f; _rename"\ sys='no_op SYS'\ type=cat\ ver='uname -r'\ verify='no_op VERIFY'\ vol=df\ _pg="more -2"\ make="make -f $DOSPATH/bat.make" whence pg >/dev/null && alias -x \ _pg="pg -2 -enp ''"\ MORE="pg -enp '-- More --'"\ more="pg -enp '-- More --'" whence tr xargs >/dev/null || . $DOSPATH/DevPkg typeset -xf dtrace _Ducmd basename BREAK CD del FOR IF \ path _prompt SET no_op tput case $DOSenvx in '') export PS1 CDPATH DOSPS1 DOSPRINT CON AUX NUL PRN COM1 COM2 \ break_ t d p v n g l b s e h _dlr SHELL=`whence $SHELL` \ ENV=$DOSENV \ CDPATH=:$HOME:/ \ DOSPS1='${PWD#$HOME/}>' \ PS1="${PWD#$HOME/}>" \ CON=/dev/tty \ AUX=/dev/null \ NUL=/dev/null \ PRN=/dev/null \ COM1=/dev/null \ COM2=/dev/null \ break_=on \ t='`/bin/date +%r`' \ d='`/bin/date +%D`' \ p='`basename $PWD`' \ v='`uname -r`' \ n='${PWD#$HOME/}' \ g='>' \ l='<' \ b='|' \ s=`echo '\006'` \ e=`echo '\033'` \ h=`echo '\b'` \ _dlr='$' readonly CON NUL t d p v n g l b s e h _dlr set -o emacs trap "stty `stty -g 2>/dev/null` 2>/dev/null" 0 stty intr '^C' kill '^C' 2>/dev/null test -r $HOME/autoexec && . $HOME/autoexec DOSenvx=Y;; esac 0707070000020010201007770001460001440000010054220351527120100001600000000547dsh.stuff/dsh: DSH ${DOSPATH:=$WBIN} ${DOSPRINT:='lp -dxnohole'} if test "$DOSPATH" = "$WBIN" then _=bsh : ksh case $_ in ksh) DOSPATH=${WBIN%/*}/dos;; bsh) DOSPATH=`dirname $WBIN`/dos;; esac fi SHELL=ksh # the above variables should be changed on installation DOSENV=$ENV ENV=$DOSPATH/dosenv PATH=$DOSPATH::$PATH export ENV PATH DOSENV DOSPATH SHELL exec $SHELL 0707070000020010211007770001460001440000010054230351527120100002600000000715dsh.stuff/dsh_installcmddir="$1" case $# in 0) echo "Usage: $0 directory_name [print_cmd]"; exit 1;; 1) set lp;; *) shift;; esac test ! -r dsh && { echo "$0 error: cannot read dsh"; exit 2; } test ! -d $cmddir -o ! -w $cmddir && { echo "$0 error: $cmddir not a writable directory"; exit 3; } mv dsh old_dsh || exit 4 sed " /^: DSH/{ s?=\$WBIN?=`pwd`? s/DOSPRINT:=[^}]*/DOSPRINT:='$*'/ } " old_dsh >$cmddir/dsh chmod +rx $cmddir/dsh echo "dsh installed in $cmddir" 0707070000020010221007770001460001440000010054240351527120100002300000001501dsh.stuff/dsh_testecho start DOS benchmark DOSPRINT="echo $DOSPRINT ! faked ! " dtrace on mkdir /tmp/dos1 cd /tmp/dos1 echo "echo on\ngoto b\n:a\npause In Batch mode\nexit\n:b\ndate\ntime\necho off\ \ngoto a" >temp.bat echo This is file1 >file1 echo This is file2 >file2 mkdir /tmp/dos2 copy file? /tmp/dos2 copy file3+file* copy file1+file2+file3 file4 copy file4+file1+file2+file3 diskcomp /tmp/dos1 /tmp/dos2 rename file? FILE? cls dir batc temp temp diskcopy /tmp/dos2 /tmp/dos1 dir FC FILE1 file1 find /n 1 * IF exist temp echo there is a temp file here! erase temp* FOR %i in [ file1 file4 ] do echo %i still here. path prompt $p$g rem Almost finished dir cd sort /r file* ver type FILE4 verify vol SET A=Thats All Folks !!!!!!!!!!!!! SET B = Yet more ?????????? echo $A $B ls -l file1 print file1 cd /tmp rmdir dos1 dos2 rm -r dos1 dos2 cd / 0707070000020010231007770001460001440000010054250351527120200001500000000720dsh.stuff/fc# DOS fc - not the ksh built-in! typeset arg cmd pre first second cmd=diff arg= for i in "$@" do case $i in /[Bb]) cmd=cmp;; /[Cc]) pre="$pre | tr '[a-z]' '[A-Z]'";; /[Ww]) pre="$pre | tr -s ' ' ' '";; /[1-9][0-9]*) ;; *) arg="$arg $i" second="$first" first="$i";; esac done if test "$cmd" = cmp -o "$pre" = "" then _Ducmd $cmd $arg else eval cat $second $pre >/tmp/$LOGNAME$$ eval cat $first $pre | diff /tmp/$LOGNAME$$ - rm /tmp/$LOGNAME$$ fi 0707070000020010241007770001460001440000010054260351527120200001700000000346dsh.stuff/findcmd=fgrep arg= for i in "$@" do case $i in /[Vv]) opt="$opt -v";; /[Cc]) opt="$opt -c";; /[Nn]) opt="$opt -n";; -print|-cpio|-exec|-ok) cmd='/bin/find'; arg="$arg $i";; *) arg="$arg $i";; esac done _Ducmd "$cmd $opt $arg" 0707070000020010251007770001460001440000010054270351527120200002100000000225dsh.stuff/formatmachtyp=`uname -m` case $machtype in 3B2) fmtflop /dev/floppy;; mc68k) Fformat;; *) echo "Floppy formatting command unknown for $machtype";; esac 0707070000020010261007770001460001440000010054300351527120200002100000000561dsh.stuff/hpkeysexec ~wmbr/bin/h. 1 0 `echo '\006'` 1 ' NEXT CHAR' 14 \ 2 0 `echo '\035'` 1 ' FIND CHAR' 14 \ 3 0 `echo '\013\031'` 2 ' TO END OF LINE' 16 \ 4 0 `echo '\004'` 1 ' DELETE CHAR' 14 \ 5 0 `echo '\001\033p\f'` 4 REFRESH 7 \ 6 0 `echo '\020\001'` 2 ' EDIT PREV CMD' 16 \ 7 0 `echo '\013'` 1 ' DELETE TO EOL' 15 \ 8 0 `echo '\002'` 1 ' PREV CHAR' 14 0707070000020010271007770001460001440000010054310351527120200002000000000070dsh.stuff/pause_Ducmd "_pg <$PRN UNIX makes use of file extensions (e.g., .c for C program source, .o for object code, etc.) of arbitrary length, not just the three characters of DOS. The .bat and .BAT extensions are recognized by the UNIX make command, when invoked from the dsh environment, as DOS code to be compiled to a dsh command file. Once compiled, typing the filename and any arguments will result in execution, exactly analogous to DOS. The .exe and .com extensions are meaningless to UNIX. 12 DDDDSSSSHHHH 4.2 IIIInnnniiiittttiiiiaaaalllliiiizzzzaaaattttiiiioooonnnn If dsh finds an ``autoexec'' file in the user's home directory, it will execute it when it first starts. This is analogous to DOS execution of an ``autoexec.bat'' file, but dsh requires the compilation to ``autoexec''. In addition, dsh will define CTRL-C to be the interrupt and line-delete sequence when it initializes. 4.3 FFFFuuuunnnnccccttttiiiioooonnnn KKKKeeeeyyyyssss DOS initializes the first five function keys (F1-F5) to permit editing of the previous command. A similar capability exists in dsh, but the keys must be loaded by the user. On most terminals, this can be done once, and then remembered or down-loaded as needed. The key definitions in Table 2 are recommended, since the first five keys closely match the DOS definitions. TTTTAAAABBBBLLLLEEEE 2222.... Function Key Definitions ____________________________________________ _|K_KKKe_eeey_yyy_L_LLLa_aaab_bbbe_eeel_lll____D_DDDe_eeef_fffi_iiin_nnni_iiit_ttti_iiio_ooon_nnn_F_FFFu_uuun_nnnc_ccct_ttti_iiio_ooon_nnn___________| |F1 NEXT ^F Move cursor to | | CHAR next position | _|___________________________________________| |F2 FIND ^] Find next instance | | CHAR of a given | _|________________________c_h_a_r_a_c_t_e_r___________| |F3 TO END ^E Move cursor to end | | OF LINE of line | _|___________________________________________| |F4 DELETE ^D Delete character | _|____C_H_A_R_________________a_t__c_u_r_s_o_r___________| |F5 REFRESH ^A_e_s_c-p^L Refresh the | | command line | | display | _|___________________________________________| |F6 EDIT ^P^A Edit previous | | PREV command | _|____C_M_D_____________________________________| |F7 DELETE ^K Delete all | | TO EOL characters to the | | end of the line | _|___________________________________________| |F8 PREV ^B Move cursor to | _||____C_H_A_R_________________p_r_e_v_i_o_u_s__c_h_a_r_a_c_t_e_r__|| In the table, ^X represents CTRL and key X (simultaneously), and _e_s_c-X represents escape followed by key X. DDDDSSSSHHHH 13 With these function key definitions, any previously issued command may be recalled (by pushing the F6 button multiple times) and edited. Those familiar with UNIX will recognize the function key definitions as emacs editor commands, and indeed, most of the emacs editor is available to process the command history. The emacs commands can be given directly from the keyboard, if desired. One emacs command that is useful, and can be used with the function keys, is _e_s_c- number. When an _e_s_c-number is followed by a function key, the effect of the function key is multiplied by the number. For example, _e_s_c-10 followed by F6 retrieves the tenth previous command. The command editing is not completely identical to DOS, but is similar, easy to use, and more powerful. 4.4 IIIInnnnssssttttaaaallllllllaaaattttiiiioooonnnn The dsh commands should be saved in a file not customarily searched by vanilla UNIX users, since some dsh commands overwrite UNIX commands with the same name. The dsh shell script itself should be copied to a directory that is searched, so that it will become available for execution. The installation procedure has been mechanized to the greatest extent possible. After moving all source files to the directory where they are to be kept, and changing to that directory, type dsh_install dirname printer commands where dirname is the name of the directory to be searched for dsh (typically NNNNOOOOTTTT the directory containing the source), and the rest of the command line is the UNIX command to be used as the default printer command. Be sure you have write permission for dirname. The printer commands are optional, and will default to ``lp''. For example, dsh_install /usr/lbin lp -d x10 will install the dsh command in /usr/lbin, and spool user's print requests to destination x10 via the lp command. 0707070000020010311007550001460001440000010055050351527123400000400000254674kshQ|ZUv .textU .data vVF@.bss v v OQ./HJf/H# vNi/N U|0<N@NVH<|$n&jtB# ~ .S b@0; NJ!Bb XXDv t jl D$Xp. n/(NXB x g 9 g .v`/9 ~N2(X`FL<|N^NuN "Jlp`< N;@NBp./ NXp.N3./. NX# `Bp# `$B.z/ NXXS Jg6&j g. -f(+HH-@g. `/ N IXJgp . 9 N R#  @@gp-@ g0J f.u/9 ~N2(X y (P `~g (y  f^.u/9 ~N2(X`H g< 9 Ѐ"瀐"| I, HH@f.wN/9 ~N2(X`(y , .NM.A//.N0PJg(f"Sm lRr `.p /N MX g"NC`  l.x/9 ~N2(XS gX.N 'Jfp`p# `t`tp--@`pt gHH`p-@B  -g +fp./ N$X$Xg g.u/9 ~N2(XJ g-|B f. g.u/9 ~N2(X-y p-@`2g$pg.u/9 ~N2(X-y `-y g&-y f.u/9 ~N2(X`-y .NMJf&Jg p./.`L./<hN <~X`Jg`p./ NX` +fp`p./.p//.` f -y `0 g$ -fp./ NX$XS -y `-y   l.x/9 ~N2(X` nر f<,gp]./ N IX @ f l0pg.w/, N2(X.N @z`6 g~./ NnX @/NX @(H f .wB/ `n  o A.Nn./NtX`,HnN LX. NMp ./.N^Xp ./.N^Xp ./.N^Xp ./.N^X`J g, g .N C` 9 # p./9 N H>XN "Jm  g .N C` 9 .N2`fJ g\p# #  g.N C#  9  o#  ` 9 D# `J gp# #  g.N C#  9  o#  ` g-KfHH"|/1gp`pf X -fRX&R gfHH"|/1g .N C`.}/ NXS$p!nJl.wr/ N2(X`Jg .N;` "| .N .N @(H "| # nJg .N;`N.N:`B. NMtp!n "| Jg(p:./NXp . "| /1NXR`*|y9 g.v``  o.x/9 ~N2(X  f.Hn/*/ y HAZ/N BX @/N `2 gJf y HAl` -fJ+f y HAV.N B @&H gJf(  f |v@` |wd./9 ~N2(X /g y HA .N B @*H f*|y .fI .fRJg /f*|y(M./ NjX @*H. LN C|$l fJl.wd/ N2(X y HAV.N B @g  f(K&y LJg> :g89 g.p/./ N IX @ g. NMp ./ NX y HAZ.N B @-H. y HAV/N -X /f.HnN S`"Hn/.N8P @(H/./ N8XG.N 2. y HAZ/N -X./< cNXJf.N C|` g .N '`p$m 9 Pl.v/9 ~N2(` ѹ T P`p. g / N CX`p/N "t`B ` .~/ N $XXS J+g&j g -gg(y `& g 9 Ѐ"瀐"| I`(| , HH@f.wN/9 ~N2(X, HH.N RJg. XNM p?./ N IX @&H gr, HH@g*. e, HH/N CX/NMX @-Hf-| .NM.A/NSX g .N M ./ A/NP, g&p# g. NNB B \, ` 9 |$ gP./. NX&pn 9 g . A"剑.Nn p | Jg.N f nJ fp./9 //9 N `x grA./ `Rp-@BBBBBB N=P(y  f.u/9 ~N2(X`./ N X$f6R .CA2,H S B  fF`VgX-jf.u/9 ~N2(XgR gRgRX&j g -gf$.plV&j gNfHH"|/1f2 -g*Jfp=.A/N IX @ gf-K`XJl Jg.0,Hr$pl$-BtJf"Jg0,HS`0,HU` .-@0,y `=@n=|t`R C 12.Hm&Jfp`p( C 12,Hm.v/9 ~N2(XRpmJg( n -f .g.v/9 ~N2(Xp-@Jnp$ C*1pC 1lp-@Jg-y &| g`HnNPX @-H&| jR.NM C 1r29 `ЀC=qJfp . C/1N`.Jg* nSm n"hRp `.p /N MX.p/0.HЬ/NFPJg9 bg .N2pC,1 C 1g CA".Ӑ`(p.p//N EZPJf. NM&n f y HA.N B @&H f&|y -gA-HBHn/ NP.NQHnNOX @-HHnN U.X.NCp Jg././9 ~NJP`&J f.̑/NT`:.N M9 fp ` g -f./ NhX$XS  l.x/9 ~N2(X. NM./ Nb` g.N <.N U`|. NMp.p/N UX-@ /N AX @&H. N UR0p ./ NX`,v g -f.?/ NX$&jgv g$.N '-@l.v/9 ~N2(X`Sp-@./N ThX-@l.v/9 ~N2(X f. NMp ./.NX` g -f./ NX$.N <``  l.x/9 ~N2(XNMPt -fnR lfN`"fHH"|/1g .N C`.}/ NXS$Jmp m.u/9 ~N2(XXS S gX&R./ N Xѹ `X&R ggL. / NX @(H g*g -f` +fp`R ` .Ȁ./ NRX @(HJg" g -fp.N`fJf -gp=./ N IX @ fn g$.N B @ g .Nh`R `p./ NXJf./ NSXp ./<wNXR `-T -fT .Ā&g?`" gpƀg` g` g` F&Jg^J n .İgL.g-l nr0 0-@ n2(-A .n n0 ."nCJg.(. // N ' P ."nC qrƒ R`. // N ' P`S gHX&R./ NX @(H fVp# `RfHH"|/1fJf>&jR.N C& C# -f CA2,HSӐX`Jp.p/0,HS//*NG -@R CA2.H l.wB/*N2(X`NVH t nE`  "| RHH&gPf. |/08g 9 Ѐ"Ё"0Ё# `./< N IX @&H f`  f L N^Nu.u/9 ~N2(X`NVH $n&n HnNLX gHn/ NL*P-K` g.NLHn/ N G Pp.p /N!:X @-H9 fp  fJ gNCp.NLp ./.N XL N^NuNVH$n&nJg<(n JfB`L` < fp.NR @&Hp&R N>p.Nx @$H g\ | fN$< n gBp.Nl @./<NdX @./ /NVP @/p/NP @$H g'J K L N^Nu J`NVH$. N 9 fp  LN^Nup .NR @$HB`N>p./9 N X y  $  ) g$ | gN>r)g | gN | gp p.p/NX @%H ; f.N" @%H` .N`B J`8NVH<J. gp./NX @&H` 9 Jg (g gr g\ g g g g 0g 8fzp.NR @$H  fp `p .NR @$HN y A %HN@.N~  f <"` <(.N @%Hp$`Bp.NR @$Hp$p./<$NX @%Hp./<NtX @%H$9  fp./<NPX` f# p.N @`%H f J L<N^Nup $B N y A %HNP  fJNvp.N0 @%H g ; gN f p.NrVN` ; fp# N>.N"p.  f <!` <(/NXX @%H`p .NR @$H  fp`p$p./<NX @%Hp./<!NX @%H`p./<(N`0p.NR @(Hp.p)/NX @)Hp(.p/N:X @$H`H f`B-|BBp.NR @$H%KK`(y B 9 g"p./ N*X(-L `fB p./ NX,fp-@Jm$ .RJf. fJf ( fN> ) f# -y -y .0NR @$Hp $B 0 fN y A %HN.Np.NH9 gN=PJ g: y -P 0(H"y Щ"n"iA"n `p%@p./<(NX @-Hp.NH(y | L# |(%L y g#  J g .fNC.NCp R N>p./ NX @&H g,p-@.p/NX @$H%K gp$`p(# J. gp./*NX @%HJ gv .@$B(jJo./ NX @)H .r 㨁%n  `NV` p.NrVR N>r g 9 N^NuNVH $9  9  g fJ fBB > f B@`:B`4p.Nʰ &fB` >fB`HH@# Npp.NR @$H y A %H$g%y # N>p./.N&X @%H J g  J L N^Nu n`NVN>JgNXN^NuNVH $.  &g `  gN$L N^NuNVH$.g"$|}`PJg *f. X/` f. X/<z NS` g8 y XSm y X"hR `. X 2/N MXp f. X/< ` y XSm y X"hR `. X 2/N MX y XSm y X"hRp'LN^Nu. Xp'/N MX`NVH$|z$9 . NMp./<uNnX9 f*. X/<znNSXp . y /(NXp`./<zNXJg.Nf`p'. y A /NX g g$|z"p ./ NXNCp.N2LN^NuNVH $nB*vA -HB.`^C`Vf "fC`BJ.f< *g ?g [f* nJf [gC` "fp.@C nRg.fHH"|/z1g $gx `fx`lJ fpƀJfL N^Nug* `gg|`I &L` "gfB`NVH . T.NR @$HX(J n&h`A $&S fB L LN^Nu  @  ""@@@@@@@@@@@@@@@@@@@@@@@@@@00112233445566778899aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZNVH$n n X &P gB`HH$ \fJfRHH 0gr \gd bg8 cg6 fg: ng6 rg2 tg. vfVt `Rt`LpLN^Nut `:t `6t `2t `.t\`*tI`HHr0Rd 0m 7oSSm jR"`. 2/N MXRJf n Jg"Sm jRr `.p /N MX9 bg.N2`p` y XSm y X"hRp `. Xp /N MXp ./ NXp.N L N^NuNVHp $# gp./9 N H>Xp |  g# p.NLN^Nu f8NMP y  P. y /N G XNNVp.NUp# # B NCp8 |By # p./9 N H>X`nNVH $.&9 $y  gB p./ N,X`p N<.N 9 |g$ y J f y  P( HH.N9 g . N8TNMPpg9 gN DBrfN @Jg&./N JX.N Q/N HTXN H.N U|L N^NuNVH$y `.N U..N $jb# LN^NuNVH< B.B-y A-H9 bfT&n$K nB(t&HHJg. *gJ /g4 ?g: [g, ]fJg`&J gJfpL< N^NuRv`R`Sf$|y` #/fBf$| p./ NxXHHg J` | -H.@/</NPJg<. p//.N SxP/NMX @-HgR.Hn/.N G P./ NXBJfJ.g(K /f -LBB Jf`x nJPgn (.f .f^. nA/NX. nA/N 6XJg. nA// NPRp. nA/NXX.p/p//.N D rf 9 bg^.NQJg>*y # Jg"B`p.A /NXѮ*m f n/$n`HHr€gHH`p/f .`NVHN @(H,G $n`pĀf/` HH$f$n `Rf$n g/RJf9 |g$B.@/<A /NPJg/.N)y # LN^NuNVH $n$. `HH"|/z1g RfL N^NuNVH $np../ N RZX @&HB+. / N8X-y ` nA .N U. n-hJfL N^NuNVH$n B N @(H./.N8X @&H g./ N8X @&H.Np./ NXLN^NuNVH $.pf9 bL N^Nu.9/N JXp f .Nv`pfj9 gJ o9 g ./<uXN2(X` p<.N Hp ./<u8NXNMP`f "| Jgp`p& 9 b | "0(pn2 b`&NVHt!.9p /N JXp.N\`F | 0(HHr`€f2.N@Jf( | 0(g |9` |3./N JX SJfLN^NuNVH &.p f.N.w|/<wrN2(X`0./N JX @fp`p$f | 8 L N^NuNVH$. | 0(f .NtJf.9/N JXLN^NuNVHt"`& "| $q gJg.N$ | B0( SJfB9 bLN^NuNVH$. "| Jg .N "| B | 0(g80(g.9` | 0(g$p./N JX | 0(LN^Nu.3`NVHt"9 b9 g9 }f$J gxJ Dg 9 g\. N2`N | 0(g@0( "| $q g(-y p./ N,X# #  SfLN^NuNVH.N R @$H rf./<uN2(XJ pf# p .A# "y pc./<uN2(XLN^NuNVH< BtJ g L< N^Nu y HA.N B @(H f\J 8fJ9 4g`H.N M`./ NQX @$H./ N CX`p.p/* HH/N SfP$Jg .N4JflJ9 4g bZ fHnNPX @$H g8p.* HH/NX X.N M. p/NMX @$H fp`~ y HA.N B @*H g.N '-@`-|3 `` `p09 `cSy `p09 `Ѐ.N @&H g@# &.N @./ N G X7|Bk BkBkBkBJf.NtJgBHn/.N G P$. c-|p. .D//.N EZP`D jR"`4. 2/N MX`p fp-@`Jf JgR nSm n"hRp` .NV&pg mSm`|.NQJg./ NX7@NJ.g HnN U.Xp`NVH$np.// N EZPSm jRp`.NV g pLN^NuSm jR`.NVp.p// N EZPp`NVH$nt& 09 ` gp./. / N EZP`pl r„Ё$RSm jRp`.NV(pgHpf LN^NuJf  f y ". ҂\!Atv`R`p.p// N EZP y r!Ap`NVJ g y .N MN^NuNVH $y 0*H&B R-@p. *Ѓ//N EZP`f f p-@Sj`JJg f>oRj` fSj0*Hr29 `ЀCA"0 R-@ RSm R"hRp`.NV$pgR .SJoh`Bj 5@L N^NuNVH $n&y Sm jR<`./<N MXSmF jRr.N MTkSk0+Hr29 ` ЀC3L N^Nu.p/N MX`NVH $y  gj9 g^p &RBj p ke p$p gf |/z0(fpѫ k &JnSj`XL N^NuSm kRr `.p /N MXSm kRr`.p/N MX.N Mp.p/+ HH/N SfPj 5@*g.RjSm kRr`.p/N MX.N MRj0*Hr29 `$ ЀC3 ЀC01H$ cp09 `&ժp"Aj` SЀCA"PJlSm kR<`./<N MX0*H@$Sm kR"`. 2/N MX0*H@$Sm kR"`. 2/N MXSm kRr`.p/N MXRj.N`"NVH Jlp ./<z.NXpL N^Nu y $Pp././ N EZPSm jRp`.NV$`JgN gHSm jRp`.NV&pg&p f(Jg. X/.NS`H & f .`d y XSm y X"hR `. X 2/N MX$R`fNVH $y =| f`XJoRR `P0*H-@Jl,p09 ` lp-@ . n` . m`S . p09 ` ЀC01HЪ-@BnJmp././N EZP-np-@&nJgj RSm R"hRp`.NV$pgBJg>Rp fRnJg nHHf Jl-nHHfR`Jf=n`0Jg JgpfN . fp.p//N EZP .L N^NuNVH $n&y vI f pL N^Nup09 ` ЀC01HЫ-@p././N EZP` gJm .f eB"`F  SSm S"hRp`.NV$g pgp f Rg Jm` g&*HH$p fSBp.p//N EZP `4NVH $nvJ f y  L N^Nup. y 0(HS//.NP`>f |/z0(gp`p$gJg BS g v`Jf Jf-JRRHH$fB n`NVH$.&. ֮J ft`Jnj y 0(Hr29 `(Jl^Smp./p/NPր`t =@ .LN^Nup./p/NP(nR y 0(Hn` =@`NVH $nN @&HR =f n Sm n "hRp` . NV$pg `.N @-H. N MBN @&H./ /./.N @ gH.N QA.N|= y ./ NSXN p./ N,XL N^Nu.v@/.N2(X`NVH. /.N8X @$H.# B  LN^NuNVH$y $Bp%@LN^NuNVH&n$n (y (| %K K%H| $p)@ fp`p* * HHrLN^NuNVH$n%y  B# LN^NuNVH $.$y J gB&R+ HH&JfJopgpg g.N# pL N^Nup`NVH$n y XgN"# X.  Ѐ"瀐"| GB @ BHH ag& rg wg( L N^Nu `p.p//N SfP *+f + + K`NVHnN FXJm JmJl./<vN2(X. /.N(X @"n". /.NX @"n#HN^NuNVH$nJg.N MJg .N MLN^NuNVH $n.  p// N SxP/NX @&H f.v/ N2(X K L N^NuNVH $. v Ѐ"瀐"| Epo 9 fv n( HHgJfp.p//N FP&J* g.N8.p/ n( HH/N FP n( HH(g&| "` n( g | %` | '&H.N M./NX @$H @ Xf. <` y f* f. D/ N G X` n$ n%h n%hp./.N G XJf {pf.p//N FPL N^NuNVH$nt &| 9 gN Q.Nf @.NR . /9 NfX @/N8X.NR @(H f SJf g../ N8X./ NfX @(H f.vR/ N2(X L LN^NuNVH. )/</.N D`P/N:X @$H J LN^NuNVH $n&n g(.N M. ,p// N SxP/NX @&H K L N^NuNVH$n.N .N Mp./ N G XLN^NuNVH t &n g -@&.N-k.N@Jgp.NB @(H. N @'HHn/ N G P'y # N @-HJg`R n  g nR$H nBJ.g|'` nP  fg8 y f. y J g g./** HH/N8`J9 }glgd y fX y J g gF./** HH/NP$%jSlL f6 * g.* `&N./** HH/N S` Bp` jRp`NVH $.&. Jm*.N R.p//N FPp.p//N FPL N^NuNVH . ` y LR L9 HH.NgJf y LBgN L N^NuNVH . ``HH "g $g `g`>HH.N`0J g y R HH`NFr{fp}.NJ g y R HH`NFgfxgN&L N^NuNVH`B 9 PR-@B.A-Hp{fp`p@g^J g y R HH`NF&`6J g y R HH`NF&p}fB.`R.ff |/08HHrP€gP 9 L l @$H`4 y LR L"J g y R HH`NF&f |/08HHrX€fp[f>J.g6J g y R HH`NF&f |/08gp n"B.J g y R HH`NFr]gp`p&gNtJ g y R HH`NF&B`9 HH-@ y LR L[J g y S ` @# B9 p].N  y LR L]J g y R HH`NF& y LB "y lA.N -h @(H "y lA# L.N B @&H-l Jf8,g0 lr2(RD-A` lRPRg.N B @&H gJ g y S ` @# `ft |/08HHr €g^ n"B.f |/08gp-@v1p0Jf y `z Pn "y T q``p-@`Tp$f &| `Xp!f&| `Hp#fJ.f. P` p?f. Nf` p-f N @&H` J.gN 4J g y R HH`NF&J.ghp}gN JfJg g6.N Q`.Jo&9 P`"Jl lr2(R&` gp`p&.Nf @&HBv}p:f2J.g,|J g y R HH`NF&`B.f |/08f J.gN HJ.gnp}g 9 L l @$H g J.gJfp`p(f |/08gp`pg p}.N`p}.N "y lE`$J g y S ` @# vp#gp%ffJgN gPJgLpѹ L./9 LN SX.NHHfCR./ /9 LN ZP @&HgS# L gJ.gJgp+g n *f9 HH@ `p Jf0J9 g( y LR L` y LR L"9 HH&fJghR .䰮lXJo ."y T&q`, lRP.N B @&H f lRP .RJf g y LR L`Vt$`4 gbp?f.J ffHHg J` |v./.N2(X`p=f g.N./ N -X`N`9 ~gJ gN`.v./.N2(X`J gR y S `J g y R HH`NF&f |/08HHr}€g`T @# `v. gn `fJ fN` "fRR9  9 J g y R HH`NFfHH"|/z1HHrA€fHHLN^Nu $fv` NVH 9 9 # NB9 B9 p.NhB J9 g4 y l Lf&. 0/.N IXJg y LR L  . LN @ L N^NuNVH -y -|. LN @-Hp -@v-y ,J g . N MN`6 g f y LR L\ y LR L"J g y R HH`NF$p`gJf. LN @(H.N-y p HnNLXHn/ NL*Pp./<N!:X @&HJfpf r?ro-y 9 fnHnNPX @$Hp.* HH/NX X.N M. 5p/NMX @$H J 8gHnN U.X`8 `.$| .N MJgp.p/p/N SfP# ,# .NM Sm jR<`./<N MXp .p// NPSm jRr`.p/N MX  9 X./<v@N2(XN^NuNVH $n $<p-@#  . NM#  N C# 8. N LN:B lp.NHNN-@.N @&H -f R 4Jo. L/ N IXJft./.NX# P .A"9 PS P剑# T  Pl } 9 |@ f S PX T. N H. y T# . N Q/NfX @/N8XN DB# N. NK9 JR9 JJf 9 |@f.9 }g$p.N RJgp.N RJg   fR9 4 9 4mT9 4.z/<yNX @"y "g.Nb y .N M y HAl.N B @&H.z g K` |y/NX @"y "g.N  y .N M y HAZ.N B @&H gJg. P/ NXJfr y HAl.N B @&H g0 /f*. R/ NXJg. y HAZ/N -`$9 gtp |p./<{,N,X y HrZp./< 8NRX y HA.N B @&H gJJgF.Ni0 @&H./<yNX @"y "g.N  y .N MJgJf J dgHn/9 dNL*P`<&y # 9 }g | ` .NO @"y "# S dp | p.NP9 g y XSm& y X"hRp p.N3L N^Nu. Xp /N MX`NVH $. y $PJ* g* HH&pgJo^p./NX X.N M. Tp/NMX @"y "$H. D/ N G XJf6p./< N G X`".NVHJg` | D./ N G X9 gr gJf. D/ N G XJ 8g |z` |z. y HA/NdX p.N:N=PJ g6 `, p p | }Jf  |&y . tN H.JgJg.N ML N^Nu# t p# # B B  g.NL* g`NB`J o p.N H9 g6 g2NB. SSm S"hR `.p9 /N MXp | p p.p /N!:X @-H gNCp-@Jf9 |gp"nf./.N X.NN#   p |@@@ Jgp . NM9 g y J f* f p | p.N < y HA2.N B @(H f y HA~.N B @(H g,HnN LX .萹  m.Nb#  gNB. y HA.N B @.Ni0 @.NfJ o . N HB9 bNF# * f * g9 g y J f* fv* 9 ~g" y X( fp ./<vN`LN "Jl~`>NVH$.f9 gF y J f:Jg | ` y  PJn". NM. XJg y HAD`LN^Nu y HA$/N BX @/NSX`NVH$nJg&J` ?g %f f(KRJg :fB gBB Hn/ N SPJmNJgHJgB .谹 m6 .䰮n,J fLp0. @f8. V/ N8XJ gb y E # `NLN^Nu-y # p . f |u`A/Ni0X @/NX# ` f0 g?$KJf.N`NVH $nNMP. NM&J`p!fDRHH$p!g0p.J g y 0(` Ry 09 H/NXJg y XSm* y X"hR `0 y X hBL N^Nu. X 2/N MXRHH$g`ZNVHp/./.N RZX @$H f n LN^NuA`@(#)Version 02/12/85 shell time out in 60 secondstimed out waiting for inputrecursive callno query processno history filebad option(s)you have mail in $_no spacesyntax error) expectedargument expected] missingbad numberparameter null or not setparameter not setbad substitutioncannot createrestrictedcannot fork: too many processesprocess already existscannot fork: no swap spacecannot make pipeUse 'exit' to logoutcannot open - core dumpedptrace: arg list too longtext busytoo bigcannot execute not foundbad file unit numberbad directorybad trapcannot trap 11is read onlyinvalid identifiertestsetunknown test operator alias not found is a reserved word is a built-in command is an alias for is a function is an exported alias for is a tracked alias for is an exported function is onoffdivision by zerosubscript out of rangebad argument count { fc -e "${VISUAL:-${EDITOR:-vi}}" Done & |& | Running(coredump)You have stopped jobs You have running jobs No such jobNo such processPermission deniedkill: Arguments should be jobs or process idsNo job controlrwxdcbfugkLpsnztCurrent option settings :/bin:/usr/bin/bin/ed: -end of file unexpected unmatchedarithmetic expression ending in single ')' at line /dev/null+ # $ .profile/etc/profile/.historyexportreadonlyuppercase lowercase leftjust rightjust zerofill tagged integer unsigned function long base PWD=`/bin/pwd` realusersysy  '07?FOSW^ c elt z~ !)48EHPU_dnqy "! $ &((*038:<?FPUix~ !%*.37; ? D H M QV[`ejnr"v     $)zz+1:@ EJ P V ]cjoq x{ !EGCDFHE   PATHPS1PS2> IFSMAILCHECKPWDHOMEMAILREPLYSHELL/bin/shEDITOR/bin/edRANDOMENVHISTFILEHISTSIZEFCEDIT/bin/edCDPATHMAILPATHPS3#? OLDPWDPPID_VISUALCOLUMNSTMOUTcat/bin/catchmod/bin/chmodcc/bin/cccp/bin/cpdate/bin/dateechoprint -ed/bin/edfalselet 0functionstypeset -fgrep/bin/grephashalias -thistoryfc -lintegertypeset -ilpr/usr/bin/lprls/bin/lsmake/bin/makemail/bin/mailmv/bin/mvnohupnohup pr/bin/prrfc -e -rm/bin/rmsed/bin/sedsh/bin/shtrue:typewhence -vvi/bin/viwho/bin/whoinesaccasefordoneifwhiledothenelseeliffiuntil{}functionselecttimeHangupInterruptQuitIllegal instructionTrace/BPT trapabortEMT trapFloating exceptionKilledBus errorMemory faultBad system callBroken PipeAlarm callTerminatedSignal 16Signal 17Death of ChildPower failEXITHUPINTQUITILLTRAPIOTEMTFPEKILLBUSSEGVSYSPIPEALRMTERMUSR1USR2CLDPWRERRallexportbgniceerrexitemacsgmacsignoreeofinteractivekeywordmarkdirsmonitornoglobnoexecnounsetrestrictedtrackallverbosevivirawxtracecdreadset:trapwaiteval.breakcontinueshiftexitexectimesumaskulimitloginnewgrptest[returnfcprintlettypesetunsetaliasunaliaswhencejobskill=!=-gt-lt-eq-ne-ge-le-gt-o-a-ef-nt-otNVH &n n`&f ./.N IXJf +L N^NuP$S fp`NVH $.$|~. NMp ./<yNX`Vp&p ./NX.N Qr.p /NX g p ./<x` p ./<xNXP&*fL N^NuNVH $n$. 9 ~g^B`V*gA .N @&H`G ./ NBX$R9 g". NM gp `p ./ NX fL N^NuNVH $nHH$f |/0(HHrP€f@.gf2 |/z0(HHr€g.w/.N2(X L N^NuRHH$f |/0(HHrX€fp[f.N 4 @EHH$gp=g.w/.N2(XB.g*p./9 /.N 2P @&H @g6`..gp./9 /.N 2P` .N -h @&H p=f2 Hf9 gJ.v`/.N2(X`6 y HAf(.Nt @-Hpr./N IX @ gB ./ N -X . Hf$./</9 /<N < y HAg y HAfz y HJfl.Nt @$H. b/ N 6XJg | }. f/ N 6XJg$ | gf <` < | K`NVH$nLN^NuNVH$n. N @&H(jp g /g -@.N @z$` g./ N IXJg ./ N -X.N B @ LN^NuNV nJf. /N -XN^NuNVH $np-@ .gp | .gp'`p-@A-HJg4p?./N IX @-HgB.N -h @&HJg n?` y HG 9 L l @-H. lN -h @.N B @-H.f-|y y -PJ f.u/< pN2(X n "y g\( f n Jf6  f. NVHJf.N @./. N G X.NL. NL`BJgJfJ.gJf< y L lc.p L y LHH./.N IX @ fR L y LB y l./ N -X y l# L9 ~gJg .N -h @`&HJ.fp-@`B.y/ N -X9 ~gJg.N -h @` y LR L.NʰHH./.N IX @ gp`p-@fHH"|/z1gp`p@JgJgJ.fHH./<yN IX @ g~`t&H f( nʱ g p.NL9 gNC p | L N^NuNVHJg2.N QR.N @$H./.N PX J LN^Nu`NVH$nA-H9 bg .N2(y X*fp f./<{NSX./* NSX jJm*./<xNSX. up/ j/NFP`"Sm lRr `.p /N MX0*HRLN^Nu.N B @&H gF./* NSX*g\*g.HnN SXGSm lRr[`p`.p[/N MXp]. n Pr2/NXJ gp `p=-@ Sm lR.`.p./N MX gp ./ NXp` NV y X "n R  n(g n h"n"i0N^NuNVH $n.NMN @# -HB  J g . /. /./<N < `./<N <~X.  /.N 8X`p./. nX/NrP @&H gr+g\-k nr0 0-@ n2(-A .찮n: n0 ."nCJg ./ N XR`./ NX 9  S  Jf^L N^NuNVH $n. L/* NX @&H=./. NX @&HA  l.NR @ L N^NuNVH $n&y JgB*gp ./<zNX*gp ./<zNX*g./<zNSX*gj*g ./<{ `*g./<{ NSX*g./<{NS`./<{NSX j g~./<{&`V*g ./<z`*g./<zNSX g>*g ./<z`*g>./<zNSXp .0*H/NXp ./* NXL N^Nu./<z`NVH$y vp#  g` p./NVXJf 9 LN^NuNVR  N^NuNVH $n*gpL N^Nu.N B @&H g./ NX @"y X "`NVHB  p.//9 /<N < 9  X.NR @$H# p.//9 /<"N < y X B J LN^NuNVH.N @# Hp.//<{LNP @#  y H!| Z y Hr*!A y H1| y Hr !AH y H1| X y Hr!A y H1| .N @$Hp./ /<|NVP @# p .N 5 @# LN^NuNV y Hr !Ah y H1| x y H!|zN^NuNVH.N 5 @$H&n (n`R'T 'lBJg" .@-@Jg l /f&Bk./ N 9XPJf J LN^NuNVH$y p.N 5 @#  ./.NXLN^NuNVH$y # ./<N ;X.N LN^NuNV`N y JfN^NuNVH$np.N.N LN^NuNVH<$nK @f&*g((Up0,$`( r @.N :`L<N^Nu.N @zB`JmD SC&q g fKJg @f+g U P` U.N `.N B`NVH &n `p./ /.N 2P @$H&S g g gJf L N^Nu J J`NVH $n&n JfS K L N^NuNVH $. `Jg. X/ NSX.N 1t&.}/ NHXJgJg|$|w`rJgV. / N$X @&H g@+f8.N B @$H g(Jg:+g(|x.`(|x . X/ `.XLN^NuNVH $n -y B-y T-y -y P-y -y -y -y -y |-y -y -y DB  g*.N# B DHn/ NP @-HA# HnN H.X-@fL  9 R  op./9 N H>`. g n P` n/N XS #  gX g0&y  g& ng# p./ N,X.N L N^NuNVH $n g&J` gRfBL N^NuNVH.Na @$H.N J LN^NuNVH$y R .X.NR @&H .(KB`HA 'Jg*f.NT$j g*g -@ro ./ N 8X(K f K LN^NuNVH tJgh n$h`X**f2G *g .Na @&H*HHr./ N0XԀ`%y # R$R f L N^NuNVH B9 ~fp`p-@J g y HA6.N B @`-H.f-|y9 bg .N2N @&HE `  nRHH$g./.N RZX @ gA f4Jf .L N^NuJ g./<yN RZX @ fx`JfS.N+Jgp.A /N4X$gծ`R'y #  y `NVH nA r$$y lչ l# l L 9  l d .N< J LN^NuNV 9  l d .N< y l N^NuNVH $nB&y lA r @# L# l K L N^NuNVH$n`.N y |# | y |b xc J` y x# l# L y c.N4LN^NuNVH $< 9  x&`n Jg D.N g`p.N܄`& af p.NĀ`.u/<wN2(X 9   l$p.NH @$HJg )fJ*fS  LN^Nu -fJ*fR of`hNV 9   m(JgR  N^Nu.u/<wN2(X 9 R "y $ q`NVH p.N @$H !fJ*fNJgnpL N^Nu (f@J*f:p.N$p.NX @&H )fJ+g.u/<wN2(X `p.N( @&H g$ =fJ+gH !f +=fJ+g2 -fR *tfJJ*fD g,f&HH"|/1gJ+f HHr0`S p.N R`& -fJ*f*HH./<yN RZX @ g g )fJ+f.u/<wN2(X*HHL .bL@0; NJ/<<<<<<<<<<<<<<<<<<<<<<<<<<<$< <^<<x<0p./ N QXJgp`4p./ N QXJgp`p./ N QXJgpp`.@`. /<`.``.`./</ N>P`./<`./<`p`./<`.N8`Jfp`|Jgp`p g )fJ+fS Jfp`N.L/ NX$-Kf p.N @&HJf.w/.N2(Xg.N '-@.N '-@  g g g g g Cg Dg Eg Fg Gg Hg g fpS Jfp`^./ N IXJgp`F./ N IXJfp`../ N>X` ./ NXJnzp` ./ NXJmdp` .gRp` .f@p` .n0p` .m p` .lp` .np`p`NVHn/.N SPJlpN^Nup0. fp`p`NVHn/.N SPJlpN^NuJop`p`NVHn/.N SPJlBHn/. N SPJlB .N^NuNVHn/.N SPJm.Hn/. N SPJm0.nf0.nfpN^Nup`NVdH -y l-n-np -@9 bg .N2Jfp $n g J f p-@#  B  b @0; NJ   l l F0 2 X-y -j-jg n(g r?$`t r -@Jg n-h`*B .N-@.N @-H&P.N9 bg .N2Jf g. y HA.N B @-Hgf n-HJf./.NX`Fp# S p./.NX`(-R`p n(g nA .Na @(H` nI n(f./ N 6XJf./ NXJg./*N^X` n-PJf g$j g`r nRHH-@g 0l 9oJg-n`.N CS-@Jm .m-n ../ N -X gX`(n./*NXJ lR gp`p# `NVH $n&n g HHrHHgpL N^NuJfp`p`NV9 gR. NM. X/<zNSX. X/.p/N0P y XSm y X"hRp N^Nu. Xp /N MX`NVH BB J f 9 gp`p@ N @# E J g|B "p.p)/p(// NF @$H|"p.NB  )g" y A # l.zBNN-2S.NpL N^NuB`" #fBN*  gJfHH# p.NtfHH"|/z1g` ~f-JJ fp`p@ffHH"|/z1HHr.€gJfHH"|/z1gp.NfHH@#  g  y  PSm y  P"hR ` y . 2/N MXp fR`+ g  `+ 9 bg@ y XSm y X"hRp `. Xp /N MX.N2``9 bgH9 g> y XSm y X"hRp `. Xp /N MXN<NV` Sn t L N^NuSm kRp`.NV$pgJfHJg. jX/NL*XJft `$ + f2J ,fp./ N G Xp./9 ,/< N EZP` + g`lNVH$.J hgJJy gBJy gD. Z/<T/NJPrf* zg. /< N2(XLN^NuBy `NVH$. y g. NM y g2. Z/<T/N RPrg 9 af pLN^Nu | Z"| l""""2y3 l my rB9 z y g  e  f . l/<T/NBPrf `~p./<T/N$Pp09 ^r# h3 p`LNVH vB z`<./. /.N RP$pg L N^Nu  zfB zR SJfp`NVH$. y g y f.N. Z/<T/NjPrg 9 af pLN^Nu | Z"| l""""2y l my0 r y z g   { e  f . l/<T/NPrf `rp09 ^rr ep`p# h3 p`FNVHtO y HA.N B @$H g".N CS$pl$ o$< LN^NuNVH y X$h y g* 9 ./ y X( HH/N U`P# LN^NuNVH  y X&h# d y 3 0(y `3 J@lBy NU@3 #   y X hBp ./ N RZX @$H f$KJf B9 `R&y  . AA-H `*pfJ9 f d p mp~oB9 HH$f 9 S BNMPL N^NuNVHE( n "nG I"n-H\BT* ~Sc"HH$f |/z0(HHr.€gR-KX`R |/z0(gB9 ~ HH$f |/z0(HHr.€gA(gB .~(f^I`E(`Jg /fBHn`N =X @(H g0.HnN SX.HnN SXHnHn(N SPRTHn(N QXC(E` JSB *g. ~Hn(N8X-@P m .\ e pLN^Nu.Hn`N SX&nX 2PoBPBL.N Q-@H(y `(RLCAC A .N QѮH(l .LPm .LѮH .HA"nCeBPJPfA(-H. Hn(N SXRP.PHnN 8XBL`*.RLC/1N8X @&H .LPl .LPm n "  .Hn`N8X @&H n"  p`NVHxdJy g2Sy 09 HЀ"| 201H&p fv LN^NuNtB z9 bf SJgB z.Hn/9 dN SP$pg`XSA0(HHr&09 Ry HЀ"| 2A"0Jf"By p.N9p./< N H>XJnJy o p.N`@Jfp`p./< N H>X`"NVH$. y l09 Ry HЀ"| 2A"0LN^NuNVH $n&n .A-HB-n`| nf -@p mp~oVfNp f" $ Pr$` Snt `$^ B@ nf9 }g -@ RHH$f|B .L N^NuNV$H<$n A# A# "A# A# #  y "B.N\Jl"NMP./ /.N SPLR `Jfx 9 9 HHo 9 9 HH( p.N ` x9 |f 9  fJ 9 9 HHTmS2HH& 9 S"9 U 9 U"`H 9 "9 Ro 9 2HH& 9 "R 9 R"R p.`x9 HH`Dx#  `Jfx`F9 HH# xJfv` y "9 HH҃8R9 HHЃ m y "B08 9 A.9 HHA/N SX 9  9 HH# p.N TB9 ` 9  &#     9 A./9 "N SX 9 B2p.NxpfH f . Nzp.N$9 HHg .N.`  f B `p# . N,`x.N`.N@(`./ NXx`Jfx D.09 H/09 H/NJ P# 3  x09 y l3  p.NR3  09 H.09 H/9 HHA/NHP.N Q# # `3  3  p# p.N 9 R   9 B2p .NpfBy p.N9 HHB29 HHA./ N SXN&.N.N Q&g `p`Jfx.09 H/09 H/NJ P# 09 y oxp.N`"3  x`NVH. $y  _f B y X"  mN&# LN^NuNVH$n`.NHH$fLN^NuNVH $nBv`փ ր r0րp-@p.N$p0mp9oJg.`-B  g~ g *g .g g Cg _g bg. dg fgv hg pgT fh$9 9 HHoS9 HHod2(HH.NJg`N  `8p.N.p`$9 `RJ2(g2(HH.NJg`p.N.09 H29 HRL N^Nup.N.09 H` 9   d   9 A.HnN SX-y ` 9 R "HRR  nJfHn 9 A/N SPp.N`:. /< / N|PJl`|_ @B..NJgp./9 HnN 2P @(H gb.N B @(H gP&y "t`  gR l Jg  fB  g  fHH.N.p.N.`.N.p.N.p\.N. `~RJ2(g2(HH.NJf fgn Cfp`  gp.N.  `*p.N(p`S9 HHo S2HH.NJf bf # `~p.N. 9 `NVH $y y pc./ HnN IP9 HHB2. / N SX9 HHT&`9 HHToSB28# p`rp.NP`l9 HHf p.N6`p\f. R\B28# p.Np.N$SB28 R"B28# p.Np.N$g p gp g9 HHfn`<.N Q$  lp`p-@ 9 HHTg*9 HHTA./9 N SX# `-y  . p/09 H//9 NG -@0.H$oJ 3 3 09 H.09 H/9 HH"nA/NHPL N^NuJl0p.NJ g y 0( H`p3 3  pc.Hn/ N IP.HH# `NVH$.f |/0(HHrX€g pLN^Nup`NVVH Gh$y  9 A-H^Ah-Hd| cJf^ #  ` y R "JRJf y BB  9 HH# L N^Nu f8B   y Bp .N#  9 HH# Jy g g B9 ` n^(HH$ fXJ9 gP n^JfHp mBp~n< 9  29 HSl".N y R " y B`*p.//9 / / NnA-Hd.N Q.N QA-HZ^f-KdAh".d$ o09 Hй m 29 H⁐# 9 HHl 9 fp` 9 HH#  9 9 HHm2J f*#   y Bp .N p#  9 ChG$y 09 H$`>RR`8 9  ./9  /NHPHH.N#  SJg"JfB+ JfB* f`09 Hй ChA"nZe$ 9 9 HHo|*c`"|>c` 9 9 HHo|N y Jgj. */9 N SX. *N QS# B p.N `R gp# p.p#/NXp.N p`p./<  y X( HH/N U`P3 `NVH $.  &gJo./9 `jL N^Nu D&J9 g2 9 "y l9 HHЁ‶n` y R  SJf`N b "y l. I/N |X# `NVH $. 9 29  Hl,p./<  y X( HH/N U`PL N^NuJo 9 "y ES Ђ o 9  $ J f"p2(&B2(./9 "N SX (A(./ N SX`NV gJfNB By  p. 9 R/NXp.N p# B  # p#  y l!@ y lB y lB y lB y l!| y lB y pBN^NuNVH$. g,N>&9 .Nrf"./< N IX @ g pLN^Nu(9  f@o<`So4 S"y 1f" S"y 1"|/z1fƸ f@plg: S"y 1f( S"y 1"|/1HHrX€f./< N IX @ gRfRo # ` (. /NjXp`NVH $. &9 `L y 08f y r08 |/z0f nR y 08f" y r08 |/z0g opEg y 08fd y r08 |/0HHpXgB y 08f y r08 |/0HHpXgr nhR`R y 08f y r08 |/0HHpXf2 y 08f y r08 |/z0f o09  HoS .SJf# L N^NuR y 08f y r08 |/z0f n`NVH $.&9  SJg .Wf:`R y 08f y r08 |/z0f m` y 08f y r08 |/0HHpXg y 08f y r08 |/0HHpXg lR`# L N^Nu y 08f$ y r08 |/z0g lR`R y 08f y r08 |/0HHpXf2 y 08f y r08 |/z0f m y 08f y r08 |/z0gl lbR`NVH . R9 v`$ Ѐ"ЁHHЁr0&p.NfHH"|/1fJnv 29 3 HHL N^NuNVH$.3 pfd`p.N&./NXp.N`>9 HHfv`"9 HHfv`9 HHfv  gr g| g gh g g fpشf&p./<  y X( HH/N U`P`N@(p縀g`pgX$`r 9 "y  1\fp.p/NPX.9 `pشf&J fBy  p.p/N"XLN^Nup.p/N X` 9 29  Ho@S"y 1f0 9 S"y 1"|/z1g p.p`v(9 pb.p/NXp.  R/NX` 9 "y  1\fp.p/NdX.9 HH/`Lpشfp# p.p$/N8`4p.N`, f(By pشgN `./NXp.N 9 29 Hl 9 29 Hm2 9 "y  1\gR  I \p.NV`p.N&pf\`6NVH|$.z|  g. g^ $g ,g 0g ;g BgZ Egh Fg Tg WgP ^gt bg eg. fg hg lg tgn wf(9 .09 H/NX f`x`09  H( y 0Hf y r0H |/z0g lxR`(9 `j(9 09  Hoh09 H09  Hl>09  H(`0(9  l209 H؀ o (9 `(9 .09 H/N `(9 .09 H/NJX 9 f`9 HH Fg Tg fg tfp;`p,f*,9 z` ,9 z  p.N (9 09 H& SJg2؅. N Jn y 0H9 f. N Jo`(9 HHrrTf# pL|N^Nup`NVH$y ` y R JfLN^NuNVH $.&. ` R"y .1"y R  SJfL N^NuNVH< y l(&9 mL y l g< y lf: y  0 8e" 0~8b y l m ~ o Bt&`.p-@ y l$(&( y  0 8e 0~8cRR 9 R"y B1.//9 /9 ./9 Nn-@. .N Q$SlB `#  g .䰄m29 H҄m*.N .29 H⁐(lx y l#  y lfN ."HmB f8 y l$( &`* y p08"y .1(f(RR`L` 9 29 H҄l y lr nSm n"hRp` .NV$HHg pL N^NuRJfp`NVH $y t` &R.N $K fB By By ` | B0(SlL N^NuNVH.N& @$H g.* p* LN^Nup`NVH$y (y Jg` *g * f&J$R f$y  g# `$p&.N @$H f./<uN2(XRy Ry  g $&k `$ N@ # %n| %y  g$0,HSr29 `ЀC01HЬ`p%@Bj y m p./NNX J LN^Nu`NVH$.f LN^Nu$y ` *g$R f J`NVH<$.BBp-@ܕʴgRJgNJ g.N @$H  f gB ` .Nd @$HJ g gB* f8p* -@J f9 g g.NNMP`J g `9 b.N @$Hf9 g ../ NX gfSy  \f B \B g 9 f6.N" @-Hg(Jgf9 g.N n$(`jp(9 gp~b8f |/z08HHr€f$`:f |/08HHrX€f pL N^Nu Ѐ"$RHH&f `NVH&n$K(J` /f `R /gRf$KJgp /f .fIR /fR`8 .f*R /gJfBp/./ N RZX @(H f(K`JfBJg.A/N SX$L`$K`RJf "/fBJf/B+LN^NuNVH $ng [fJgB".f.N 1t# &9 f.w/.N2(X n 0(HSƀp. "HCA//.NP @-HJgJf`. n hBP` Jf n(gJg n(g n&h`p./N 7X @&H-J J.N @$HB nA.N '& lJl.x/.N2(X` 6 n(fNJf .N `x.N B @$H g, n. N$ @-H"n ./.N -X'np0+c./ N 7X @&H n!K n n h"0 n L N^NuNVH $nt` R`p]fSJoRHH&gp[f` J L N^NuNVH n $P&J`.+f . /.N IXJf g<)k`*(K&k fJf LN^Nu.N @&H'J n K`NVH.N Q.N @$H g$A%H ./N SXBBBBj J LN^NuNVH$. S .N @$H 5@B`S CBJf J LN^NuNVH $n nRHH$gJg pĀf$<HH& Jg *g ?g [fB.p-@B !fp-@HH&gp]f*Jm$.HHg./.N\XL N^Nup`p-fHJmB ]g<HH&Jg .noR.` .lnR.`xpƀJg gR.`g-C`VJgp`xpg`dR *gJghpHHr&`R`. nR/NXJf6 nJgHHrg ?g [g`p`R *gJfp`p`NVH. N(Jfp` nr2(.N$  m.x/. NfX @/N2(X$n&J goh SP.N @$H5nv` CBRm gFv` C(q C#Rp0+c.N ` . r2*c5n4 J LN^NuNVH .r& o <L N^Nu `NVHv`փ o ЀS(JjDD`gZ . -@vl$`: "nE. /2N IXJn -r %$蔄JlR`LN^NuNVH n-h .N 1t-@ n 0(HS nB ."n CI` g. /.N IXJf*fF.N 5X @&H'j(p@&p./N 7X @-H'H n!J7j$K-j nRP0r2-A nr2( .谁c./N 7X @-H%H ."nC-qg.gp @.N0 ."nC#LN^NuI$T`(`NVH  n$E f*g$Rg gJg.`&R g.N .N L N^NuNVH $n&n `*fHH"|/1g  `RRJfBL N^NuNV# # . /.NXp# # N^NuNVH 9 @&t` "HC$q`  fr*gT&j gVp0-@p-@6 .r2+b>6 .CJg. nNp0-@R`pfJg. nN$j fzR n 0(HmVL N^NuNVH$n `./.N ;X$R fLN^NuNVH$n `././ /.N ;x $R fLN^NuNVHB$n g` .HH0-@f .LN^NuNVH .N Q$ nE(`SJg " g g. o2 nB0(&n KA( $H n b`L N^Nu . "nGBJfc< ` JS SJf nf nHH"|/1f| c.`NVH $n ~g L N^NuHH$g`p/gXp-gp+fX*HH$gp/fF +f y HAZ.N B @` y HAV.N B @-Hf y HAl`p/./ N RZX @&H gB.N @$H g/ J`PNVH &nBp-@.N QrlP. / N IXJf |  L N^Nu. p//< N SxP/NMX @$H f`Hn/ N G P`p:fJf&| Sm jRp`.NV$pgTp gLp:fSfSm jRp`.NV$pgp:gp g  4e`RB./< N SX-| `2Sm jRp`.NV$pgp f&npfp./ N G X.N M n`Sm jRp`.NV$pgp:gHHf`NVH$nG*g$(S TgNp0C 1r @G g(*g&S*gB*gHJgD.N `:LN^NuBT`.NRT0lc.N BB`*fJfB*fBj`NVH $n&n `0f$HH"|/1g _g  `RRJfBL N^NuNVHJm .` .D$. /N X @$HJl<- J LN^NuNVH $. &.$| wpmpDbB`". N TxЀ"|0z1. N S& 4cJfJf<0p gD<#p . N RЀ"|0z1p . N Hh$gp . N RЀ"|0z1 J L N^NuNVH$nG*gX Sr2-A jr2( .c.x/NfX @/N2(X ."SC(q gP r @G*gJg&S*g*g S LN^Nu*g S PN-@`Jf` S-P @ g0*H./.N A`0*H./.N AX @`0< N@dN UrBNu0<N@dN UrBNu0<)N@dN UrNu0<N@ NuNVH $nt&HH gX gN +g& -g` Ѐ"ЁHHЁr0$`RR 0m 9oJg DL N^NuR` `0<N@ Nu0< N@dN UrBNu0<N@dN UrNu0<"N@dN UrNuNVH$nJ oJn pLN^Nu. .N J$Jn0.NVrf Ю S. N S". `SRd ` &./*/.N HP @A8-HתJlp` (* HH"|  1l.N Qfj .`HNVH$n* * g lJg* fv$-n Jf$p.p/* HH/N SfP"Ӯ` * f6Jo2 .n* ."*m .Ѫ .pLN^Nu* g %j* ./. * HH/N SfP-@B`J* HH@g<.N M* gB* %j./. * HH/N SfP-@ fp`hp`b0<>N@dN UrNu0<*N@dN Ur o BNuNV# N^NuNV.ANm 9 N J09# rN^NuNVH$n* HH$Jg* g .N * %n fz pl> "|  q%HA&H* HH"| #%jBLN^Nu "| LA%HA(H* HH"| #`* HH"| A"jC .N RJg `NVp.N H N^Nu0<'N@Nu0<N@Nu0<N@dN UrBNu o HBNu o /fpL.Nu0<%N@dN UrBNuNVH<zJlDD&".l&DD` NVH<z .lDD&". lDD( lB@H@40H@0H@`* l$//N TPlS JlDL