ࡱ>  Rbjbj JPP<WD{JZZZJ J J J J J J%LNp J>8"Z>> J5J""">RJ">J""RE"Gl~!$LF JKJ0{J F7Op!7O<GG87O&HZ"|"ZZZ J J"ZZZ{J>>>>7OZZZZZZZZZP Y: System Administration Course Notes #2 The Bash Shell Bash stands for Bourne Again Shell, based on the earlier Bourne shell. Bash is the default shell in Linux and the one that we will be using. The Bash shell features a number of improvements over standard shells, particularly with respect to command line editing (the ability to edit the command as you enter it) including tab completion. The Bash shell is a popular interface for Linux. The Bash shell itself performs several operations, although to the user, it really just appears to be a prompt where you can type in your linux commands. The Bash shell does the following steps: Reads input from the terminal window (or a file) Breaks input into words and operators, obeying the quoting rules. Each item is stored as a separate token. Alias expansion takes place here if the command contains any aliases. The tokens are parsed into simple and compound commands. Shell expansions take place if any are called for. This breaks tokens into lists of filenames, commands and arguments. Any called for redirections are then performed (pipes). The command is then executed and upon completion, the shell obtains the exit status of the command (if necessary), with results displayed to the terminal window if no output redirection was called for. Details of some of these steps are provided below such as quoting rules, alias expansion and shell expansion. Variables The shell allows you to define variables whose values can be used by the OS itself, or by your own scripts and commands. Variables are denoted simply by their name, such as NAME or PWD. By convention, variable names are fully capitalized. In order to obtain the value stored in a variable, you precede the name with $ such as $NAME or $PWD. A common instruction to use to find out the value of a variable is echo such as echo $NAME which will output the value stored in NAME. To assign a variable a value, use an assignment statement (much like in Java). The form is VAR=value. Value can either be a string or a number. If the string does not contain any blanks or special characters, then the string does not need quote marks. If the string does contain blanks or special characters (such as \n) then you must use quote marks around it. There is a difference between using and , which will be described later. Example: NAME=Frank NAME=Frank Zappa NAME=Frank Zappa Here are some useful variables defined in your Bash shell: DISPLAY the Linux name for standard output (defaults to :0.0) HISTSIZE the number of commands that can stored in the history list HOME the users home directory PATH a list of directories that are checked whenever the user enters a command, this allows the user to execute some programs without having to specify the entire path. Common entries for the PATH variable include /bin where much of the linux kernel is stored, /usr/local/bin where a lot of the application software is stored, and /usr/X11R6/bin where much of the windowing interface is located. Without PATH, executing a command would require specifying the full path name of that command. For instance, who would instead be /usr/bin/who. PS1 defines the users prompt, which might include special characters that represent the users name or the current directory or the number of the command as it will be stored in the history list. For instance, your prompt is probably defined as \u@\h$ : which stands for the users name followed by @ followed by the host machine name followed by the $ character (so you might see something like zappaf@kosh$). You can also define a number of other things in your prompt such as the current date (\d), the current working directory (\w), the number of the current command as it would appear in the history list (\!). You can redefine your prompt in the Bash shell by typing PS1= such as PS1=\d \! $ which would output the date, the command number, and a $ followed by a blank space. PS2, PS3 and PS4 may be used to define other prompts that are used in various programs PWD the current directory (called the working directory), OLDPWD is the previous directory SHELL the default shell for this user USER the users user name Some variables are global variables defined in your bash shells environment. You can obtain a listing of all such environment variables through the command env. Such variables may not be available when running software, so you would have to first export any variables that you want to make available in a new environment. This is done by using export VARNAME. For instance, if you define a variable in your Bash shell and then open a new Bash shell, the variable is not known in the new shell. If you had first exported the variable, then it would be known. Alternatively, if you create a variable, say FOO and store 1 in it and then open a new Bash shell and set FOO to 2. When you leave your new Bash shell and resume the old one, FOO would have a value of 1 unless you had first exported FOO. FOO=1 echo $FOO ( outputs 1 bash echo $FOO ( outputs nothing FOO=2 echo $FOO ( outputs 2 exit echo $FOO ( outputs 1 If you had instead done export FOO before bash, then echo $FOO in the new Bash shell would respond with 1 and the final echo $FOO would respond with 2. Aliases An alias is merely a new name for something. You can define aliases at any time although typically they are defined in one of your start-up scripts. The reason for an alias is to save yourself the difficulty of having to remember how to type in a command later that you might not remember or that you might want to shorten. Consider for instance that you always want to use ls al instead of just ls. You could define this as an alias by typing alias ls=ls al whenever you start your Bash shell. Now, whenever you type ls, the ls al is substituted for it. You can also prevent a costly mistake using an alias by doing alias rm=rm i. The i means to delete a file in interactive mode where the system asks you to confirm your deletion before the file is actually deleted. In this way, you have a safety valve in case you accidentally type the wrong thing (you meant to type rm foo but instead type rm fox and you accidentally deleted the wrong file). Aliases can be defined by you at the command prompt, or they can be created automatically in a start up script. To define an alias, you type alias string1=string2 where string1 will be replaced by string2 every time you type string1. If string2 has spaces in it, then you must enclose string2 in or marks. Note that you can turn off an alias at a later point by typing unalias string1. Here are some aliases that you might find defined in one of your startup scripts: alias ..='cd ..' shortcut examples alias ...='cd ../..' alias ....='cd ../../..' alias m=less alias md=mkdir alias egrep='grep -E' simplify parameter options alias fgrep='grep -F' alias h='history 10' alias xt='xterm -bg black -fg white &' alias sl=ls typo examples alias mroe=more Expansion Several of the steps involved when the Bash shell executes an operation are forms of expansion. Each of these steps is designed to take a users input, which might include some shorthand notation, and expand them into actual Linux commands. The forms of expansion are listed below. Brace expansion if you have a list of items and you want them all carried out, you place them in { } separated by commas. This is commonly used when you want to specify several directories. For instance, you may want to perform ls on three subdirectories of the directory /home/zappaf/ called stuff1, stuff2 and stuff3. You can accomplish this by doing ls /home/zappaf/{stuff1,stuff2,stuff3}. Brace expansion can be more complex by having lists within lists such as ls mystuff/{a1/{b1,b2},a2/{c1/c2},a3. This would result in the command ls mystuff/a1/b1; ls mystuff/a1/b2; ls mystuff/a2/c1; ls mystuff/a2/c2; ls mystuff/a3. Tilde expansion for convenience, you can use ~ to indicate your home directory. For instance, the user zappaf could specify ls ~ meaning ls /home/zappaf. The value ~ is expanded into the value of the variable HOME. ~ can also be used in conjunction with + to get the value stored in the directory PWD, ~- to get the value stored in OLDPWD, and ~N where N is a number to access a directory that has been stored on the file spaces stack. We wont worry about these latter uses of ~. Command substitution the output of a command can replace a command, for instance, a command might generate the output ls al which is then executed as if it was the original command. Arithmetic Expansion the shell can perform simple arithmetic using operators like !, ++, -- (as in Java) or perform simple arithmetic operations. The operation is placed inside of (( )). For instance, imagine that N is a variable equal to 0. You have directories called foo1, foo2, foo3, etc. You can ls the directories by using ls foo$((N+1)), ls foo$((N+2)), ls foo$((N+3)), etc. Pattern Matching the Bash shell has the ability to take a string that represents a partial pattern, and find matches. The string is called a regular expression. The regular expression comprises a series of characters with wildcards. The simplest wildcard is *. An example of using * might be to do ls on all of the foo directories in one command by doing ls foo*. This lss all directories that start with the characters f, o, o. For instance, foo, foo1, foo3, fool, foobar would all match. We will cover regular expressions and more complex forms of pattern matching in separate notes. Special Interpretation of Characters, Words and Quoting When entering some Linux commands, you do not want the particular parameter to be evaluated or treated as indicated, and so you have to specify how you want the parameter treated. This is done using a combination of symbols: \, $, , , ``, and the rules are generally known as Quoting rules. Quoting rules can be complicated, so examples are offered below. To remove the special meaning from a single character use an escape character (\) To obtain the value stored in a variable, use $ To inhibit the interpretation of a sequence of characters use single quotes anything in is output literally including anything preceded by \ or $, note that you cannot output single quotes inside of single quotes, so you would have to combine and as in echo hi to get the output hi To suppress most of the interpretation of a sequence of characters use double quotes in this way, you can output such things as the values of variables or have escape characters take effect To obtain the output of a linux command and use it in the current instruction, use the backtick quote `` Here are some examples that use echo. Assume NAME stores Frank Zappa Command Output echo hello there hello there echo hello\nthere hello there echo hello \n there hello \n there echo hello $NAME hello Frank Zappa echo hello $NAME hello $NAME echo hello $NAME hello Frank Zappa echo date date echo `date` Wed Aug 22 19:43:36 UTC 2007 echo $NAME, todays date is date Frank Zappa, todays date is date echo $NAME, todays date is `date` Frank Zappa, todays date is Wed Aug 22 echo the directory $PWD stores ls the directory /home/zappaf stores ls echo the directory $PWD stores `ls` the directory /home/zappaf stores [all files/subdirs in /home/zappaf are listed] Note: the \n may or may not work as presented above. The single quote marks ( ) cause the value of the variable to not be interpreted, but the double quote marks ( ) cause the value of the variable to be interpreted, this is what is meant when it says to suppress the interpretation most of the time. Suppose you want to output hello friend, how would you do that given that the quote marks have special purposes? Use the escape character \ as in echo hello \friend\ but not echo hello \friend\ which would output hello \friend\ instead! Note that * is interpreted as a wild card character, so to output *, you would use \*. For instance, if you did echo * hi *, the * would be wildcards that would cause echo to output all items found in the current directory. So this would be like doing ls; echo hi; ls; so instead you would want to say echo \* hi \* If you were to embed \* hi \* in quotes, then you would see the literal item, \* hi \* instead of * hi *. Redirection In Linux, you are able to redirect input to a program from standard input (keyboard) to come from some other source such as a file or another program, and you can redirect output of a program from standard output (the window where you entered the command) to other destinations such as a file or another program. You can also chain together the output of one program to become the input to another program. This is known as a pipe or pipeline. Consider for instance that you want to list a directory using ls, but the directory is lengthy and the items will scroll off the screen. A simple way to handle this is to redirect ls output to either less or more. Pipes are performed using the | symbol. So the instruction becomes ls | more (or ls | less). Redirecting input and output is performed using <, >, <<, and >>. In order to redirect standard input, use < In order to redirect standard output, use > In order to redirect standard output to an existing file by appending, use >> Examples: sort < names.txt uses the contents of names.txt as input to sort sort < names.txt > sortednames.txt names.txt is input, sends output to sortednames.txt cat f1 f2 f3 >> fall appends to fall the files f1, f2 and f3 The redirection << allows you to input from keyboard until a given input is found, which performs the end of the input. For instance, if you want to sort a list of items that you are inputting from keyboard, and you want the input to end with the text bye, then you would say sort << bye and then type in each item one at a time, ending with bye. At this point, the input is sent to sort and the output is displayed in the window. If you want to redirect the output of sort, you might say sort > sortedlist.txt << bye . Now, the sorted list will be stored in the file sortedlist.txt. Shell Initialization When you first open a Bash shell, the operating system executes one or more scripts that contain various definitions and initialization steps to tailor your shells environment. The primary two scripts are the systems bash profile script located in /etc (this script might have different names in different systems, but is called bash.bashrc on Kosh), and the .bashrc file in your home directory. Some of the things set up through these scripts are: Your user prompts appearance (stored in the variable PS1) Your PATH variable Your HOME variable If there is a bash_completion file, execute it If there is a bash_alias file, execute it Any aliases that you want set up Other Bash Features Tab completion: When typing in a command or a file name, once you reach a unique part of the item being typed in, you can complete the item by pressing the escape key. For instance, imaging that you have the files abba_lyrics.txt, abracadabra, and abrupt_stuff. If you type more abb[tab] the Bash shell will complete this for you and you will see on the line more abba_lyrics.txt. If you type more abr[tab], the Bash shell will beep at you because it was not able to complete the file name since there are two files that could be used. If you typed more abra[tab] or more abru[tab], it would complete as you expect. Additionally, if you press the tab key twice, you will get a list of all items that match. So you could type more abr[tab twice] then abracadabra and abrupt_stuff will both appear. Tab completion will also work on commands. For instance, you might type fing[tab] to get finger and then fox[tab] to get foxr. Tab completion not only completes the command or file name based on what is found in the current directory, but also follows all of the directories located in your PATH variable. So you might find that a part of a name is not unique because those characters are found in a file somewhere else. History: The shell will remember each of your previous commands in a history list. You can recall a previous command by stepping through the history list. To obtain the history list, type history. To re-execute a previous command, type !number where number is the number of the command in the list. For instance, imagine that you have typed: cd ~ ls -al cd somefiles Now if you type !2, this recalls ls al from the history list for you. There are other variations of accessing the history list. For instance, !! repeats the last command, and the history list can also receive a partial command name, for instance !l (that is a lower case letter l, not the number 1) will repeat the last item on the history list that starts with the letter l. Editing commands at the command prompt: Bash allows you to edit and move along the command being entered in the command line prompt. Many of these movement/editing commands are taken from the Emacs text editor. cntrl+a move the cursor to the beginning of the line cntrl+e move the cursor to the end of the line cntrl+b/left arrow move the cursor one character back cntrl+f/right arrow move the cursor one character forward cntrl+d delete the next character cntrl+k delete the rest of the line starting at the cursor (k for kill) cntrl+y paste at the cursor what was most recently killed (y for yank) cntrl+p/up arrow repeat the previous line (same as !!) doing multiple cntrl+p/up arrows steps you backward through the history list cntrl+n/down arrow move forward in the history list backspace or del delete the character prior to the cursor cntrl+_ or cntrl+u undo the last command esc+f move forward by one word (to the next blank) esc+b move backward by one word esc+d delete the current word from the point of the cursor to the next white space cntrl+l (that is control + the letter L) clear the screen and reposition the cursor at the top Help: there are several forms of help available in Linux. The first, man, you have already used. Another form is called help. Type help [pattern] and you will get helpful information on anything that matches the pattern supplied. If you want help on a specific instruction, say alias, type help alias. You can also find all instructions that might reference a give pattern using apropos. For instance, you might want to find out what instructions use .bashrc by typing apropos .bashrc. Editors: there are several default editors available in the Bash shell because linux users and system administrators will often have to edit text files such as scripts. Perhaps the most common two are vi and emacs. You should have covered vi in CIT 140. There are notes and a lab on emacs if you wish to learn it, and a lab on vi if you need practice. "%&'567[d E f      * 7 Q T   UBMzŽ͵h9\ hIP5 h9\5h9\h9\5hh,T3hCh hChCCJaJhV*hG$CJaJh#CJaJh1CJaJh&.hV*CJaJA&'67 g  T  9Oi$a$gd,T3 $ & Fa$gd`$a$gd`$a$gd&.89f?nMS&U>,-CchhhIP5 h5hh5 jhth%Ahth5thYhkh hKnh h h9uh9\hS~DEfU}"8$a$gdt $`a$gdt$a$gd` $h^ha$gd5t $ & F a$gd` $ & F a$gdKn $ & F a$gdN!!!0"1"""""""(#>#S#z######$F'.)) $ & Fa$gd` & F gd - & F gdoQ$a$gd`QYZk !0"""""""""" #'#R#S##############$$$$%%[&&ͼۮͼۮۼ~zh(Mh -h"L6h"Lh -h=h=hIP5 h=5h=h=5 h -hoQhoQCJOJQJ^JaJ h -h -CJOJQJ^JaJh -CJOJQJ^JaJ h -hoQCJOJQJ^JaJh~,h hkhhoQ-&&&&E'F''') )),)-).)C)D)E)))**+l+m+),3,-----...].u........,/m///90=0>01'1+1C1b1n1r1s11E2̿ᮦᦢᦢh0%hY6hhYhdZhChChIP5 hC5hChC5 h 5 h0%5h=h&h}_th5h0%h hNh"Lh -h h(Mh(M;)m+--..m///>01s11E2F22222223>3a3 $ & F a$gddZ $ & F a$gd $ & F a$gd0%$a$gd` $ & Fa$gd`E2F2U2]2f2n2222222222222233(3,3Q3U3t3x33a4&5'5a5b5e5y5|5}55555K6O6^666667U799999999F9h9w99999J:ŽŽŹչչչչh`hIP5 h&5h`h&5h&hh-hhYhY6hHh9Dhww hdZhhdZh>*hdZh hYhhIP@a33334a444&5'5`5a5]6^69999K<w<<< $ & F a$gdKb $^a$gd` $^a$gd $`a$gd $`a$gddZ$a$gd`J::::::;;;;;;;;;;;<J<K<L<M<w<<<==7@8@9@N@@@PAAAAAAABBBBCCCCEEFGGGJJJKLLHLTLCMLMMMξξºҺҺhiDhChiD5h?h?5h?h h|hh`5h`h-hIPhKjh UmHnHuhKbh9Dh&6h&h9DA<<<<<B====8@9@N@O@BOBbBuBBBBBCC$a$gd? $ & Fa$gd|$a$gd`$hh^h`ha$gdIP$a$gdIP$a$gdKbCGG0I6I>ILIJJKKL@L}LLL;MuMMM8NdNNNOvOwO$a$gd$ $a$gdiD$a$gd?MMMM;O& qF>"Uf@ɂik@Hf,>eFQZLxG6yQ((NYarNgca;IQ֛l凪\v?T6-Z9'?iԷiC!@v8~Wn@q8Ӈ,)y<"o% aA>QMWK! //SsWX{g3?6 vn킼52 ӇPZ'>s\.L!h\s\YY&Wuܬ8ӇPZ'>|裘G7Pw?pځ;|VJba'=(|^c&82'W[ץn$ lC/Z)Vž>MA-PZ,h:%)R(rjaA3 iTNi%&5aa|ً>\/ITnu^ P6IsY*j< Y/e4ipk7i:tJ\FDh/*LCB@qRi*"2m @!κ+ '6Չb2 XQJ΍Vg,OIe6}.TҠHGzhzAj`% TwDBhxG51 !2 2ME <4\8R4G\@wiBJkTĢ4@_:Z19xQMC%ʄ7Ӈ"sUքBhB24kN9,ųN d7 9^ 5d(*/Ҁ<_Uk` wbE;mvOrT iY+-{j* ;(S"c/wx\Ձ*ݺ9Y!G%(@)HEL& *z,Q+,AF Z2.mttv!8xNըb7 V-)  ƯuÂ7|.|JW/Xy)bp%J%%#@}uVe3 O(B-x]pIˑ>'YAZPWlYKYFUZ3yTa/+ QC-\".ySD/.w]U2EgU],USsb6P;"NXc}[ptE û^hɪӂ@!0ۃ>B #o12ӑUHB`HvުۂC`]QG|lVχ=3 K:;ϘA уEуUăEֈ>K>&NE}DVM}L/[xv)yFOpИ)RMme=:R`0:#ɯ+~OMWXݧCafi3Z@mJݝZj \ Ū}7 +KČxpS0pL1G^\]UPzǘKˣLy\)ͷIl*ӮʃS~-D݋ڌVPVdV;BM%҇Wri7Ҧzh @bTQƨwɐ8.3k@73k}|Xg)EC-E8_QV /ݐ(T+`d/9#8{xqk-AR2&wc-띀:uk hAg:$Mt͘6b yՐIl̮4<u U}TPɎhL$PndjT lfkCr6ʳ5t (md9EN*sh*9wjuPMa)X΋VKAYif0>ڈKvR!eMB&H2x* LBӍiޏ F;=LzG\Z7SUBJS%gUz#DՐBӇ1 A:Lq$VNZkPVnPX1Ӎ)#+ J9"O,K4ZX&t`qQQ(BWJE^־B~~W" X4W7T aWV S4[iu$2Gh$>c ΢)Wf;H~Si4V'Yjz0KívTl%bɛg}oDQ>7F>* =[yCi A0V$SRZT1!hۜHMu̽s [ll M[3 I 0UiZ{ϥahGlT#ûo 4.ZuRʍblF#C x:\BF#pOlM_7$9d !) >١.\ڡeL"颶z`S r'7j- Cӑ??eHfU0Ymjs x ڋ2[M^4p7i!8܅LL'GϾGp5<ت(Ŵuh[i/P6 Cwʧ +DB+T7*ȚJ 4n'&Xڀ6ڔ"@ƒ&_0P62YR}֦Ր?)GAA& nRʋW0ݐUjTkFKDA,9Er v#_YG@o TuPrJ:Y݅Et'j(Pm2qZ >N>AmK.ƳRp NրQiD Ƈ6b-Y(MLa$W;Ɋn^ߊ.zur;݅E&^Ci@EPqpڔ<ً$mPlfݕ]$6fBSE"Ņ |bG6aiH t#&7 {!XPrh2Sfw9ٶ 1P *КC!Smܮ4[T¯G {xDT, ,SNWx{h$`u+4XJJ?w(4fO[(.w0Ri6*;IM0G3:M OVy;WY@㿃. {Zh@tT4h3 [ۨ)2LAmX]UI)U8FWo#)l>z? PeƜPl=,]/K^֗CPvC(X?3l$Y [A06͌s |\lۇK=6Q . 4D[z^ĈZ̘P+SD1Fg3[ 4折ȥwc{np ؒh+y(|1VV?CŴӼX^qnrg0}F~O _hn6ã`v@9mNvӃn!-t/9{^%,/u ar],EOKۺ(qTN1>br$Q}ZPd(^‡ .`؝" ;|#D'ѫ'Iy&k%jҌhDƷ 20!nza |?tGmgeM4ȯrPda3gO=_g![-f,5  __,&W*,urH"G^U{,)qF( ǜySE.EF&"t,FIolc{w}00zOAw hq,,'b`tA]{ h̴k!lgx 75Eģ Q3Ql-E^t\j5`q(_4֥KNwwT{7V++9F{}kDu).hGpCf |݊EƸY\9vA8B=+ʯh42\WmlI.-#`.fۛQM`Ƭ5dd\&u(d Ӈ+_zPެ`HK9Bf3e^&xQ3=R=rPF0w!.zl9s80$xRUQH(-x2ViԩF6"Pʤ7*}~#KD}$0DzFC7y^IBKCW=~c:xWf(G3n0 me9`?C=jXX4]KvMਚ!xش(=aBk4pLTuB9KTG?)X ax g'h afI. 4эXdt`^DIo0JwcL}9Ei4Jb{d,77bepiփb  Rq! su"@.ěAC'u?H>}q ] M!H}Ʒ:K [ AY@/B3[8Cg0 x=~?&.#`_>LB:70xM5 - BR |$\>ȲNcw)40*mV#,z t I^+{L*4:@sa|;~m&HS}D{7mūoX5y k ;L%R_#oS}X j{G EGǥSg ŒA/6fp`pPW~ Ž/E҉L SjEjO2mfP5I )u280(@D @V*|pw?F8,@W]BL (^r H ~SOFC@<LQcbd 7e qAR~MT .i(9K X*ʧ©XĄJ!}8%AVQfߴ7HB6je0cbge]=ԃtO=0 m4PK9G씩1h" DoJ,hmgO?@!\3 ɴ)qSH!C21wIJvHI^]FL6<9/!Spz'p^*ɝ:-q u41j?ZqmhTӃѺpCG\>Vƿ92tǹáq˟vZ 7-:+fj~8MA90"j|׿7sc'Z=ƒiO֎83HUo^vߟ{VO{d]DxqyP rpPgnN hJs?|XL}`\,as5yxd"?B5Ht;dSr!h9 ^AAr >Eh9n`Ssc^t@ÑBP͐p[>hڶq<>R$ͼ?=,2 ^h4a ,H\1WM@ ){% -%p>ذ:m=_ǁ;i׸惺gJk+W nڢ"}"n#cc2hwG!Z~E=Z!}4*'wÜҟ_eGsNlbj'H}¸3 ŧ{Z~(Kqۃ8?;HE+B(Ǿ-'C e8-̫GOs`;9L-aӕCݸXK"u>n@G|LE+y;^Nm%}>x>2'aȈA:L޹ mÚUλnkۗw] 븕6;D#i>4".}M\2 $9L? L 9E y{hF/kl;M K jǶ-D*j>$B` !N<,Bz6\|A_jMLnY^oY3Z]4\6u=m[5Sz.y>1/a=@{ |Ÿē1yH󠕋h)+V?UvXثK7 !v4ݗ LOyeR?N oTkz߄ۻtuʋ4TݭaQyXVH<7コ_{/KԬ1}N,o}8G }?lqSn9a6>}?qhE3OKYlx?}= \xC\ꅳ?tljc}~_~޿nVڗ~zƩ¥_kKo|g}Ä:0ͫYRO^̞o NpxD+h]7K,ڏ ?}>\}'lWM]^2s}r$}{U{fߺ2/kOm⯶f#~â?kK|Ѧw:#s3bvPdo"s| ʡthx;zFb@Ÿ>@  ň1zs>M>|ڛG]}ߝ]+;r\1 CE՝gN.Ѻ,Ewxl㌝}կn[9C7^Z'/^d9SfӮHJk´y]{[3l鏘!AHw)L0:ئNOQ3̇N.Kv P\lZsU_.3ĉs_k/=O-KΛBL쭗= Õ5G&<>5'4o,Kv=+'#O?ґF1ft E(5H!l%c 1Ä-2I~~V=< x;vϾܔx*w|}ǿsOWNnJ#7ݿV>S3zԾYk6yu7߼qJ}\G=snޑ%eekcZQPVه 6BkqY".ODK: ˽l8[Cnh]\E5tOOۿx} Wzӱ?5ƎGa=4/ ߒ׿d{sδċ_|oEg/\՛O.83j`!5 *ȧщȤj n#s'Km-(&!}{?;[>5u;]k{e釯 yO=خ4w7{} o9_OH|3svBCiXܫb֛q?W<r93>̫a,J<}@}g85/x3:>5>O}S=Z`q{7\p߾Ӂ{:]0؍f%eL=32x m?;3*|gI_p;+D$= 5>ƈF Bai$CLN jn|1ƃ?Ů^v|9Y_8xa;m;{哝翙ӵ$\ri3~`n钾g?{?bo3f}ߟ37{%ϧ9}/;g_xuׇi3<{s%gtr -S ve7$r%Xo& !>&&5Gz\5.M9L<9I7gV]*~}ieo?٘]kNk?_ķ_xpO'Rŕ%oMuSG7á=o^zQʪs r3 d"<|+ߩ2˵_YwYcx CJl`{R3.c9TQB쐻2_a^%UG!rگsWKOnPƫ+W>_ xa=hg-u,/=48󊟾RMcOg%n7:P+^ֹ;\[^ُ^1y7bќ<3wP^5h$«_1YHB BOƥG0}@kكixk%7Skݵs79~~^5>){g{~Ο{p+_)U6t__Nz+{p?e{_ϿfucĤ̝y 6~ﴜLl"Ƽ S q#!M! !c9/-Uc}N=_m?'޽{[?y?;_ѻUjssKJ:оT׮:x)鷩ɛ2~ zc+^}V̳*W-R[SU;Fu7iiu|>g8 Y\E==âN|s_֗/Z/{S_\5nXꚷT_]NKG8n]tk%f(^=ٰ'y/=3+nwϵ5߀e?~plΛ23Vh9a 2"k#B@@D &mQxiqE8m.]UB{V\,aӉ\s뿸ڛ{ʯ}^nM֦w[^tgo__{%wJycOL87ܩ?ko,&Ȭ=S\W@߮'z1'FwZ+2֔cpқ6 sE:=⤃ǓaNwqIҕK^X?5_GwpS~7g{{|X;9ԥBϭ5 ?:jo4>tIf_|W^en:u0oKpg>A{Pt".lFd<||]{a'[7r[-o]0}$\%O??>~S{6}gN_^9sAqPݶOuv:XoMIu?Zѩ!l맥?QmK}ⳄsٽItF@=J%X7{ S(!w" k0dS/BS7jz垊ԞH᷅S_-]9g5~_h}=s6zGKR'Us΄)'$5U>D {7zOhF]`bLcHhŕ "h-C6)1ۥds§K VYOy#Tu ߽D_ez2X>_SoyCp.ާ^DwSX;VoS_QE$ ecԾ]7Zˇ>i$E4w@NFDZϦ_s'n7 isⶦ|=[wzz"2H5st+ȴN.88 ihֲ_QONoFydAL8]ž£~b9d0D؜Ζ*ZN"CXIF.zT ^J;4xhBJ|2l<6mݎved 6>9 sQ%xKz{^|L5ط[}T -h ddeMX."{"TM%"_Fu[rx\y N_s +` u:)ŪX`(=1ϭsޣIv#~HЈCo<Θt&}WQy<4(QKV!1#$bĆ.%!LӰ(:kF,vh_O2X0R75wZA$[=nk=<;.-6gW󧆷p''Oy~\FJ,R9x5 WHEEkW`K*37iPmҲt|=ݽ--y'&;aö=S i s"'ƚ`蒭9a쩠Wa8{kմSzhi ^1rѠA%b"?kMEЅ"X?<}}%@QUu7ݳf 6&ĘI;QczhFD9I!/ŋQx}Hk0FEk |sIx? <܉>p=H@O7xbsu7aN~~py{Q,>CjCu; F'acu8y #_cLu㶯wvgLIr.Ve`[R?a[*Hgs. Z wGҀ$?ki bƚO96Sgc{A\TrAClgd6 !#}Q%&"k A~pAYwċ; p/Pw;Ͼ֝E>x^_Uai~uvyhD6އӬyI#@^jTsk_SK3S{SޛǑ3o2 3H28M't0$@?7H|7ڡ'#4 ǥْ Kcp4D-I^,>23YK!Ϟ#KX}:Q"En. Lnv]S%s1F'))1k\&ere.{&ںz>t]3 Zä3&$LUp?vr|/K" IB>ܤ4[1xaM 4`4(<ܷ;[Ht`GbDHۂ*FD8=r*XF>^/.M6T&OHyW./Znqkdm N7EP]uu@MOse%)CH^&\ ]_`-$}_Y0BH3ik`9,Ph>}*j *^}@i7z5+ήSǚ ovhb 9s1~ #mW vb2)8118Y]S;; 0W3S) a@͇%H` Ρ #"GIhˆ̗59ݸk4~ KX>oQ0:,u1{A0iV z}>(@Cv^q!>u5@ )hH cHс Ϡ0X \nӴeC-%_v` JlYbSx2Ӥ"Og 1ѧ|\Aɗ{AG]NzXa8s2O7a KV+zETurn6(2;gI?GD6wk!J^X"|W<'NiNhĂ.8Mk~@C-ϳ2d~`(u|7swΣZ#lGn|SتgLl)v6ī%ߕˢSS規Oȩ*Gċfi6F5DS3 +Stmk%P۬lI<4 ZPB)J*Y }Ƀ9{ƉXboFIl R4Pv#LYCpjmIÇ(SZ))9 #׉@m,}]tK7¤8 biB>x:B@pKaF`kF{(@B΀ h7bT)59H@3Jss)g$2}(.リ (]~^rzH&:JיE J>W'k!] M{e(~B}(c_O#f,h D{(:ۀx(3<5*aX̧5QGxL,(xAŅ X2i6˸߃ܸh׵"2$<8ݡ64P1(@|!__^pBSSdS`||hď _st3 |3C}3QLڶdžjG)7bsjʎmL*)A3ް{ s gT<O3U<-=lv(@'Oo 2sj=Pp= JYl]L-!*?SҠd[!(iMbR\^ <6|ӝLfckeQ %u˂΂3]`.CJ|4Rǐ' I6cJ"-ꪟR}XS8%[W9 UH ϊ?._rMt//O#y3oƫ.E[#ffǩSQ5h:J$tɉ Ldױ]qC'PĿ#)ƳjfWH.R}iE_;zA@X 1)khܺ:_61֕KӊN!`#\aC6f} |@d>D8< 9ErNy-2 ldݨ|QV+r|>25p͕R4 LZcMum.RÄ[sq.I -` (\y0 P#5 ƇtRA<KQ[aHeK&/iڴ*A !c7³RnoIҗ|zwG @ 'A Lt*=HL]wz-ͧwťtQO'3 ! z'/Okyͅd ?H&fޭ$ڔNc_Q >!:^b&pRŠLCͤ| YՎS >.6f%ҩS}{Nu_%4='evOhbR`[:人Ux'u%B3r *ֹ|Mgҗe<b;"kxqJq1S㧼%x}]7gss+'KI7TEzjR˾],.~0ɲ]Zp//q '!4 DGe~bĦGUq LN4<^]AϿFE%4ܰ ZTGFUs*Tutބ D2|_SOc̠m6>svEʞw1:^9cbg`Td?bN:y 9@D}c+ lʙ“Dmڟh&L"KzOM;Ґyb2*Frv% {tzT؎WԡօiP@^)_5h>ɘ̄}uЁZ@9Ȅs8F1y~4c2w>m|(v!|<,P-E79GJ0CQ,UD^ff (4|1Auz :KzfR,Z #dߖsvaDzYg\ \7>"yمpE BpLrh,)4YNX&1Bg-uX11dLB3 } |; gEgVc8zhI"e\cJg6TF}·iZ~9C`3zgD׷ߢqP5a 4</EJ!ox(J2=l(f9,i؆L @֔o*Q*3<[a=hmtKٹR %0$0;/9-dT`C9lD6 ]R`CFlep/QYΰl,󭃷:e*JE M#\Hr&#EpV_~GBy.,Znzq'9Ul7JTk2שvYSa*J-.ckƢsp2Rl[˲m_A6*_ƈŀ[Sԭ4HޢD9U_Yg&x-7bUZU_q€5(Ut_-U~M[FǧZY8S◜)[X3> ܭV,xzyf `ǙEOV/ ,83pZc|噁EgV}& qF>"UƂ +>ܤBgM CA?aA 8,f>9`A X#Ye& ,, ,jV>& qF>"Uf@?, t 0a퟇,+똇iO:4D#O_:Wjw+YYNk^+O\0"jg%<їnp:=Qf^:`x.o4{1D1Ӣ%SP0CEP$ $dW"]N>C&*u8 nA/|+| зOѻ AMbu"f=䃀%fx!=O`\},d &Vl&&pՀ`WV 0!VKb$IGDɇ n%SIUÒmrL*3셪Z#N*IVE- ۶י'X~HȻI *o@5/l7QSy,T|ijZ^#灻tEȺ(57<T`.'ũq}>v:qj< Ƣ"m}MdHt 飫ny`YCjӠ/*Ҋv;C+Kyk)[>,V6.dGHxPUqRUEREbUw?׉v{֯Ŀ. ><睪21SJ3fvV毃>JhV*2!gچZö}&c3Y9JnQu%{%r"AuTaixi MS2;N~&DA>_Q,?}ҭ f /AԎ?hCݠYY xEɐx}NJ =TZ*O*Qj ] $fć.Zt5J Bz>!L<$酩.#Tr8|0n(NqI7|a!m~p N4L%$$a[ ؕz]h8&Ai04`kY&XcBy!D!N4K/ⴿ'4dd37xVíc{rHY R͵.ż $y!8KD@4owKrtV| 2D).{H-ٳQ:|%E-&ҙwdNoznPc˘Mhҙ@cn݀y'u>[|)H'ަG4^DL MpZ]u䡝&1xL $FVщ s^TuVSoY۱f\P)Cb":ݼgjG$hꞢXɂvLKAzRixx=%CTb+PlzbbNK0$+K v@M[m爸9YŐz:UnhǢ%ܢqa 7 8J#Dm΢s.[ C#l$["Z?8 Ia+mڎT#ai쾟E#**2ao)u$.4 Kp2Nnhâ@D m꽾:/Y vJ^7~%q$ˈmtIo( TdmA L@ɮt9B2VAk84֓XN6߮<:v;۾4Vu?İ}XPuEm\MEgA CH)-3m5Pj*Vz!_QaފDtD*D,&7)g 0,W\B㺢,k1`< Zljbǃr\|eNVq혇3(D~ ̤x8N``usRC9襯s'!4?PHL$e pDK%=6DeD>֛%<C`xJM9S D4*` ;xǃ7iP{3}>W^ag=@$LS@tW@J 6C$L vaüw"?kEdl!œj vLPʋ)J1otnr\  DXbqlC.b3rQmnQM梙N\)жDZNu'A&58rYĴ êP|C n輔w͎ބ|E) nK`I18OD!0gQӖW\ ˣyx˩V%-+:]Iq``<2-8lʊu9ei!'" z{c]( 1ZxJK\!^ɤmGOy,ǩb] )D/sU) _䠪\x~a\=ZYfXk2ǝՊMVy51ũTb EDj(A{8]rӝtͬ ![ ;4H X:wgo~U-mZSnk9eڠ>9uvRI'6o_QW*Uy yƼNuZ"DvԨ葁,LT56M{?d#4|%6[ejGa)pjSw iJJȶ1 `B@-Qɳ KݼL@D÷5!@JsC^ݎ.}^ aĉpЙuvB%tM>H :q3:pKX/:32C6$'#[P<=\U/AG"rx9͐A/V-c-FwCMhP_ I$9XԅN ]xXKR8+SgzO4Ç =k>A A[UęB'?÷CrJ _̥ٕ̌ 嫪%ɂhB;Mi]ḩ=hw:c;b$R$C{9,B~VˍLz̃;tB~2@# ˀ]tk`{ ,bs+qd }$\B@PlNitFô)+vȒowHu% 'jaP"y| BBO2DF"m-6AqB041 k?O++*V2fWfs hE`K%o:jB}#rT)Q+=/aylݎ:܎HWyѴNGՕ ;Hʸ{6g񾋦:Yj'cjά=-x&aHxTJ[(Lbv]kCT+pl6e&hkX} #z>2,ԕ#9Jz@ Co3yPfGI[|8[~PÝ5v3_3 3C,EmrQwEs^^]g(}Nk!Eє5ezT! >"uņEK5+#cߨ  LЇ~K7 vM-Zc6&wn:ꚪ$\3SRRgC}h*y\ EMQh) o@`A'#ӷ0mum[T *3A"}Lv2`DD>3K <3j Fu;wxSe62C[ -] {KECQU@ȋj"暢ai&胙uo]. 5gzQU@#Oח |2)]i Dz%RRn;b Lc&F 7>!vO^q%vtawpfD@m+4Hc>dXyj Pơ?Q rl; /|'c$V3&yQ`vKĉ`W*zce@YR=═՘Ec;H)K v/6T_D*ϐ7rhk-,[װ%?Ph]>$(ӱIuY av>^ 2Vp됉>+446$"tz?jsus&Ɗ aaٞҘI{h$(Oh׎8- ;)e-lP_YRf# HCļvѪ lr"(45@$M(q74|"Fp [.hDmavbz&C7-uT6c:s!kJW+1KD8 CL6褗NNTR(KurU]YҵW;v(V5L5t0.v RՍJ sxF\N7%7D✉mXrAyɡKx0Af9:4Y;=9|k wLaW¶]e9ۥ ˣD@-7(\VFOAdZ}q[ :qCJVFp2A·x7ؖ%)'c#2%/<'!j5:n !]} 4,Ubߕ4b W`Q4TBPHc["tUR(TCʲ@s%UͯC%_@]!WEjl_dvBփ v0Qܮ;c!j}k֐T+jaGItU].Wu,]d?TKR ?(ޑУ=2&(~6^iM#[d,X1Rj'k&h.tS>==l0jk-o6Bmr"t=9"/||. nOVw=*tKE긫zslrtzI L3C+R7~}[E P2*rTWor8uv^Gt1BRc.ƣp95GȾEUm65\F^NkXpD;E3 yu FOy|E)Z.m$GrZ5OklJh 39)""#F d)yg`3CZ BD,2-;x8 -z>߫t tzO ~~k].QH9/~M &6?LV2E)9\ ~P4?{zBg\% \>R D!eoҋNLbr{۶,]N DA?bO|yx#$I1j&eb"ͭ2C3H'^,7AǦ\JJ24ϟ֠JB3i}d\6e2l+]]_D [8 ŞCQ.("/ė~_ԡ3G,b"7z4hcax6|eߋ CAm c;nj}4(Ymjdž#z 3jx>)RR g %k,^jfI*H5@K7R [ TiL* >Rdfo2WiH&+9j5ߤ>仮;+K"S N?%(ZDs}4,_xp["\b'-t_EByNsO>dƳ񌄯wRvd*oڒpe9 w>Pڈ&Oe+4@x=vz1s'/&uB6Jfv&*l.CNGCT3Z8_j8uB> Wa1s+Y/yhcUޠm!dS#DDDO3[ZʧW̝X3k\ܲ p[!G\+ !@I*i\Rݍ&<R_X?>}}'!Ȝ< M[ޚ=SlO,L0`ߞd'{S[q*2,M%,c:€0ś*`c^ԢmUh|CTk(R>(DB?W ZI%')4ϴJ8 ~q[o  ✦B@|CBӰm)r77 ra]^zp$>/}͵W0p޻Y{d >t+f9#UbLg+~gה_0x|ifkk0#A XZCI)ȈF0P .>Ӌ>?N(3h|끘,z%L` uPcܸ,?pz`t?ӧ{^ ç`11ewD>z|?N_yS£~X&m?҅I;ry/A ]EXp5dqH CqHCyur"x؅ FlTCSC<$S2nu\@q5r*#`KߚaDH"aaLa- vl6T!6`%+qŞ#N괽AS {{ ;{7\?JC,35{Zg <۳EGcQsdI*?xJ+%%9`/ G;axOK@XCނ1h_`]N~a/2iEHtP?7B= jKk1bd£GhlgL芦Tw0Cj7wteo{;psZ o^u]'ćv"\㋥9,\#N]NXޠlvg bȾז.%$f3,˟YU;U,Qg q>j\mWypK(އT/IPC5 K [~oGU*o}̌#%aLᄙ|%% ۥU/K*MF`WDNW =RY{6l^cV`1AaT~!?L%E ή2xS/l8lG&19KIEi}&UvRVS#g.VN3jkn7YJ D?BU`CQ9r*B&,%P93tGEJ;'b8"v!CF+5-q f<0SuvltH1* ]ƒAkSbk.7]T5wbУIaJ8:Қt/V)_!D>C;tZKBedmqҹ%m^\ DJ)0x,T~PLpRhaUj`ul ScbDKc@?9Gq LgCkr>#,Z$j!ZIa>Fk&87IjѐXh:@H]Doo<_M@ ZYÛ$ph0߾Feo?(>l`%\H^nO~.*{~[F$BOB4+hPLbݤ$~I-o w?^hmU޺ *m/Sϥ\UJKY(uR5Abxd+ Dc*]5נ E,A>( 2i/:qjJ7Kɫ?F>:[ßV;eX)]_3)D2A\N([&q#t/ `Lv)Z,E N(Up@1VZ؅ EX2uJ\, NQbXTAEI^C!F90pWC =Q[E'ڠ9åx*I츠(\ӉvPW' }]w"Z!IhҶҽ?&F {aʢPE30Hby q0I ^Ow N~CF>*8 M {/%M24^V"D-AK/M6xDFO 2a*0i @S1b@ŷ6| GoHw%!7lE6{| \pPNf+句N*<+MD{1迦Kv~%ADUK ɾ͚7J"`!),$Ioʒ74Ji x8{GƕՕp5 ,@S% 'L9=Sm[(Hu%"#"AqzK)aӇdmf ~Sș+D&Z =tTw"(+U Ɋ.Tz2C򟐬/_#*ر!Ӧ*`Gh65dr]) A8ZV-(1~҉~So|DF#s*@(C 8A /?Uمsat3EuS( -ҏAkݏ^VB;_ *#ȗF(&vO >`(\m|X0|QZCf:G& έq LDS?P?G*`؊4au}-=]4vN' ň"a⤉Ÿ[!WX1s89!FMƛ{(#_]Uz޻KҗJvl=OCzgU`mch4 P] WmN䑨~o.62J;qor"P=G.ίR9َ5(1!"g67. diC8]Y`& @l!'7K^~Wة=(9Lc.M/&|e,:h@%D*ȇOޭ(ŕϏt淅33Hഊ>Cb˙Xn]؍ӻz1q8m!y ZL^?J0""dʆ bp,7-1v=lZ.bIr&G^'XsD(^ }B:GYG',$.æњA_ՍqG/z*F7X h=r(LǶb vsDcjM( [ buY81Uَf,qS6{&((hEo "AU n"b+i3$>t{ HI7g1үԍQǫ$SQ `TsUx q!qEC?K}6(JgNQRȬoPhS yWiW&BmQl {],B=Zʌ/9t?BNjnhÚR1.}`8D u o_<(QqlJn̂Π|սx`a(Z'ѪwbӋsg,6HS4AvWXbcd V='}zꁻoO~teڂ}HG7VRUNr+4v| >%:h׃oPQNlCa>M8awC-NEBXdk<&j%ۭ.Uԝu,x<HcȞy*v]tƟ$WFO2j"g+Iy4?_tUi31LϬ|@{O}3\0L`Gx5@hU>.K+[NQxi烍YH!iU=ẸzZYt2XH >ul9,2Eqg錍ZWcCcY5}fp@mu/ Eؓ3:P_^aBHuK˔?-3>b-y YH  xJLAmt"N'QKA;07W6C(4?Ѝ,2PГ_MKnrG3v}FrBdz!ϭ({Fg~? pǕKsOPdQ=)$34[8D5yÄN枯  ?/~nJB )B׍cyiz@ʖ|JU}V=w$,W0@|{k@ysewPۋRԙ0?-?bւ@ 'EiM}}j);:pU?V.WWΨgkn ~t\ྏj[/>iP sWe5܂U;wMk[ms/(ǪbC`ўijS@Xar~'AG~ȫ$US'-|14<.MkyۿQ{'漩s4ew\zVgj=z^r;yx?gl[|q΁o_t+rjkά=8ڗ~NzZ>,PmvqԶXD#VG>A*1q3,)$~rNce{W"cA0?>{˧4x~w_Q_b۷M}gSybihͲaBz6~pvb2Uw$D'"Psga FIP@=qv,]tg??ۛҘk8V\}#_;S?ٜ.6l?_l/bǴ[.ya.i[h_*  -9ַ`w^s GtjPb7wS0M0}fZ@x`ui}^>aCwWݙ?t}ekp{JU>ڪ>i_V~o7=W7< vw Uv5J9}Rp{ K?ݕYθSFKpdh'.[rޛg ^H޲ ~ ]}H?Un0ST\ၤn'm_m){NXx_ڻaݶct;.tco]c;_OHBs?uўfߑw߬[|sOi#p-?dtyoZlk"w pw{0۴Sd~ Ė F(qCpd%lqX oY~wWwZJzϮ*{+N$@3~FN N}D.>pſfg'?t#7n&[OrK@z %I}2weуUӤKӯ U41^0}C/5Dcyi+\-%38 KRWӶ~XY+;:{-.{{~{w;;U{j;fϟT;cnLsJx0 ^+J NA=}ʔSot]δmG޾_1 {T&^DKwW;hx~?^=t伖t/;ו3s:\w}w~CdJa@u^Id97;@F[S=vU?~v5fRe|1_Ns&̹+=~>lgOLP^*@v,ce×/^XasϢ3x FV }^0(g%x' zѵ3N|2w*gL5{{5pٛI"ӗϘUV2&Es3q;cX,(`_(ѷuZj|c9;xC  ԮwH׉c/>8x=wA=prh{/-ɀzK]U #%9)#i]1!Ntd2I!˕׾c|^xv 6.7F?b7Ϛܗ(駶BrboiSRIf3vp\}hN320= Gz!mVN$ū5@`_E,^VW~Ө ѳ<p[A.$/]9~HLKPz ]2rS끑 ƞóg12nGtdesRhQ\1 ~ҨX̊HSmJ, 7z5;\WOa9tWT7DSo "4*P?3]IG-§_ǫ}L։qmV~̨\xFq B:RӔ|0{G5?hpf@{W?s#xTC[{=ے%̔$!6҇]p_K4~?s?F lV=/'A݃>}lK+Vd5a_2?ছ_] (=sK {N6!)ޠ2Ar<"ufBh>ѷbeӭM2sGi-,—/Qׯ@HOR2/#)''B R\m%e֌4pJ4c u&FiLf"}GGoO&: (y<=d (;_{g*I4T&z5* SM+)gOR\Y>s~ IbV[+0FJј ̻֬|&_ow21{j*6:+,L҈5wv6ӗ7+ jrB>-U7A”m#IĆ3xl C`6&ft&Q#6t+R- ;O`B5v CB֫[?ve%\={j”ة {ٶռkh ?&͊ ,|߻<hΒ=mGi~ t zjȢ^Å@w04c07NA7&Z҄5IPEm VqR@pV1?ut'K'8s%+m0HÁׂBnudlقx }gY}iX1cP¢o0SGVF ~M޲>캬 ,!J;P:XWcVW,tHRՆu!mS]D mW?jMW#٪:`~>ɍzG -9RR?ɣ ( XI".fh<C/Xx IL J#Nӎ@|h[oȭ((P g9"IJFTL?c:H0%-(`"+S=RRз;FэJ'FvDweho=[JƂmƽ@z킕,AX$yܦlF}X3!ҩ5)_m)"bxrys#k"*P{5]=.XY- 85Q*WQxc;ԍdBrۋUB 5*(PǴIS(C ~ YQ-%걒Q'zS,g]Wtي/U|bf;p? )݅e4M;_(śL6.Ky):r^o[\Q@Z $K^aKQ1ls: *"]:C41ݠ&$mT݆DxIx+.ځV@`ZIDL>br|\HZ"QTq֬dA`Br&iu>QK.ҵjtЕ4l<̀s!"tS:DLm]I[,4]W;׀w=)lԤi":d>nTA,I]L˫^+J+jҝ)e.09#JF ;Uc*䅫(V~O3ɊnJV d5IǤ >&/Ead嘼cyhXFV >&/Ead嘼cyh(r(Cxl]Н 5P U 14BF^J1I9va3v{9T ,E VE1j )j#j*c"R `G@iU4!`D5AҪhB TkHQEQUE֐>J >& R!E }D VE}L@ZC,(& ,H5X5PZM@X1j )j#j*c!Չz؀Ec^8^&kbm"#TDŻtԘCV 9@.#r]rY~J2!Sx`RBfO"DBi4@#)ul "TJkք&HkPUׄjj.1hmٕijgiiZo0 j~OFI LM`ˡGNuڔP恕]-ryArs]VA/M@!R0F:YbM5%QEAqk5^ AX"SHk)AfFk N)M,X+. -*MRlG WttsH*H݊ )ABX`o(Fe17~W§O?FUnTZwF(s7s`N!b+M<Gn?I֍O`%WaJUBТwAU|åiq&ȯ*}; OIDspnT@#ҨU ѥrJS{B(l lyyZ4Iʑ )m!S`3V]PikT5,yH<}Nuj[F9VS%UbO 2U@ZU9?]:lX*2B^&t{udj!;O]j58`JDnRS:lJd e\lMA xN&xO8S L[Á5F0Ul$i+DnCM5] 6~ΏEVjj3(ύ,uVDuk¥{%Jx*`c kE%"Ru^l#m}pr41CZ}@0&@#=Ά^BbBdDɟ>{W@xjNE " `a`Ʒ.3:Oyq!ZLfX23K=o<ٴ9ƳY,4ߵ|2129?dC~O=E[]#J^ч'ln#tsS%-ɅTH-4`\WB,ZhGeE>_T }4}C Grz KyEx J )s,j~p Yc_ͻ,C"%(INbHp-;R+!:kw6kuHE6}m@9LZ ɞK6:#6gL/ssO y K,ڍ M1=;P'/ӗ>՚dc$6$@fNY2 uTv؊')FfhoZA"b}gne2mT˚\LMz%M]Z|m .Gfx<"K@٨zz(ACd,g'B?o`7U+vG J*% "=*H9HkuM@`Ƽ lYEY"ZiÈpPp+  ,13Dr~dUD 3D+YjDvxٯDy6U =3I!7[_t01 &m|2Q.5j4uro[9_n2Jz7vdWGIz[a9[*PRJR"PYs Lw }ܚG6+iVJ2JJy7]I57Bi|y0[0]I:lg&se67^ucyݗa֩wfDTW aJ%嘶s7IENDB`^ 2 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~_HmH nH sH tH @`@ NormalCJ_HaJmH sH tH DA D Default Paragraph FontRiR  Table Normal4 l4a (k (No List 6U6 | Hyperlink >*B*phB^B = Normal (Web)dd[$\$>f> C HTML SampleOJPJQJ^JBb!B C HTML CodeCJOJPJQJ^JaJe@2 oQHTML Preformatted7 2( Px 4 #\'*.25@9CJOJQJ^JaJHBH ww Balloon TextCJOJQJ^JaJPK![Content_Types].xmlj0Eжr(΢Iw},-j4 wP-t#bΙ{UTU^hd}㨫)*1P' ^W0)T9<l#$yi};~@(Hu* Dנz/0ǰ $ X3aZ,D0j~3߶b~i>3\`?/[G\!-Rk.sԻ..a濭?PK!֧6 _rels/.relsj0 }Q%v/C/}(h"O = C?hv=Ʌ%[xp{۵_Pѣ<1H0ORBdJE4b$q_6LR7`0̞O,En7Lib/SeеPK!kytheme/theme/themeManager.xml M @}w7c(EbˮCAǠҟ7՛K Y, e.|,H,lxɴIsQ}#Ր ֵ+!,^$j=GW)E+& 8PK!Ptheme/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3ڗP 1Pm \\9Mؓ2aD];Yt\[x]}Wr|]g- eW )6-rCSj id DЇAΜIqbJ#x꺃 6k#ASh&ʌt(Q%p%m&]caSl=X\P1Mh9MVdDAaVB[݈fJíP|8 քAV^f Hn- "d>znNJ ة>b&2vKyϼD:,AGm\nziÙ.uχYC6OMf3or$5NHT[XF64T,ќM0E)`#5XY`פ;%1U٥m;R>QD DcpU'&LE/pm%]8firS4d 7y\`JnίI R3U~7+׸#m qBiDi*L69mY&iHE=(K&N!V.KeLDĕ{D vEꦚdeNƟe(MN9ߜR6&3(a/DUz<{ˊYȳV)9Z[4^n5!J?Q3eBoCM m<.vpIYfZY_p[=al-Y}Nc͙ŋ4vfavl'SA8|*u{-ߟ0%M07%<ҍPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 +_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!Ptheme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK] JJr&E2J:MR*,/0247)a3<CwOR+-.13568l,b$e:"ʲ.vMP4r@ (    s <#A Fig03-033"`?B S  ?K4J'$1D:{*$:{*I% F FJ F FJ9*urn:schemas-microsoft-com:office:smarttagsState9*urn:schemas-microsoft-com:office:smarttagsplace 0RHMV [ o r z } #8;TVkmWY[]_`ijUWX[mo$.359Y[]bdfnp57>D%'79!!##8#:#;#>#H#J#K#N#X#Z#[#^#$$$$$$$$$$7%:%N%T%))3*;***,,,,,,,,,,- ---U0W0b0d0 33333333999999::::; <<"<<<4=8=F=J=== >>s>w>>>1A3A7A9A?AAABAKAmAoACCCCCCDDADHD~DDDDDDFDFKFeFjFFFFFGGBIHI\IbIII7J"********++?+C+b+f+++++++,,a,e,,,, -y-|-0045B5F555; <<#<<<4=9===s>x>@@1A3A7A9A?AAAWA]AAAAACCCCDDADGD~DDDDDDFeFiFFFFFGGbHH0J2JWJYJJJJJ33333333333333333333333333333333333333333333333333333333333333333333344888899991ABCCCDDHDTDCELEEEEE?JJJJ4488889999BCCCDDHDTDCELEEEEE?JJJ ]E j:4|Z4\,+m6 <45!\l/9.H:4@BRb6vZEIpqhSkzggH%Yx0c,Fhv^`OJQJo(hH^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHopp^p`OJQJo(hH@ @ ^@ `OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHh^`OJQJo(hHhpp^p`OJQJ^Jo(hHoh@ @ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhPP^P`OJQJ^Jo(hHoh  ^ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHhpp^p`OJQJ^Jo(hHoh@ @ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhPP^P`OJQJ^Jo(hHoh  ^ `OJQJo(hHh^`OJQJo(hHhpp^p`OJQJ^Jo(hHoh@ @ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhPP^P`OJQJ^Jo(hHoh  ^ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHhpp^p`OJQJ^Jo(hHoh@ @ ^@ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHhPP^P`OJQJ^Jo(hHoh  ^ `OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohpp^p`OJQJo(hHh@ @ ^@ `OJQJo(hHh^`OJQJ^Jo(hHoh^`OJQJo(hHh^`OJQJo(hHh^`OJQJ^Jo(hHohPP^P`OJQJo(hH |Z+m6H:4qhS/9.45!%Yxgg]E b6,FEI                                                                                                             `S'\E+KEsr d =u= --kQ8?K'C$ 8*k"z#G$0%&T'V*0X*1K+~,I-&. 2,T3[99D3EIP6BWdZ9\?\B_Xr_`GI`UaKb b3ci jj*jRlKn |r5t}_t9uww{xz(QkNg&t<4AL ~CY Xy5 s #%AVC iDNMYHnt|5N!(M- 7}oQk"L|X1S~>c/ 1JJ@J@@UnknownG* Times New Roman5Symbol3. * Arial;Wingdings?= * Courier New5. *aTahomaA BCambria Math"qhQ؆Q؆r&) ?&) ?&!24JJ2QHP ?V*2!xxOperating Systems TechnologyNKUfoxr<         Oh+'0  ( H T ` lx Operating Systems TechnologyNKU Normal.dotmfoxr2Microsoft Office Word@@fV@n!@n!) ?՜.+,0 hp|  NKU&J Operating Systems Technology Title  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry F!1TablesOWordDocumentSummaryInformation(DocumentSummaryInformation8CompObjy  F'Microsoft Office Word 97-2003 Document MSWordDocWord.Document.89q