info-mac@uw-beaver (09/14/85)
From: Dan Winkler <daw%brown.csnet@CSNET-RELAY.arpa> Here is Mark Stowe's VI Mode for Microsoft Word. The first file in this letter is vmode.doc, a description of the system, and the second is vmode.Hqx, a binhex copy of the DRVR itself. Dan. :::::::::::::: vmode.doc :::::::::::::: Using Vmode Introduction VMode is a desk accessory -- to start it, choose it from the 'Apple' menu while in Microsoft Word (it will not work within other programs). Vmode creates a hybrid editing environment where you can use a large subset of the editing commands of the editor 'vi', as well as the normal Word editing features. When you start VMode a new 'Mode' menu appears at the right. By selecting the 'VMode' entry in this menu you can exit or reenter vi mode at any time. While in vi mode, all the normal mouse/menu manipulations are available. There are only two Keyboard command differences -- in insert mode,'CMD W' no longer closes windows, in non-insert mode 'CMD D' no longer formats characters. Word obeys vi rules only when you are working in document windows: the usual rules apply at all other times -- while working in a "find" window, in a desk accessory, etc. Vmode reminds you of what mode you are in by 'inverting' the menubar (white letters on a black background) when you are in non-insert mode. Most users familiar with 'vi' and Word, should find the hybrid editing environment easy to use. There are however two features of this environment which will probably require slight habit adjustments. 1) While in non-insert mode, if you choose to make changes in text by first selecting the text and then typing new text, you must remember to type 'i' to get into insert mode before typing the new text. 2) Backspace never has the "move left non-destructively" meaning it has in non-insert mode in conventional 'vi' -- it always has the effect it would have in the normal Word environment. To move left non-destructively in non-insert mode, use the conventional 'vi' alternative 'h'. The Commands VMode supports most of the conventional vi commands but currently lacks line operations such as 'dd', 'cc', and 'J'. VMode works by translating vi commands into Word commands -- so it lacks some commands which require capabilities not possessed by Word (most sorely missed; backwards searching commands, marking and returning commands). The '`' key serves as the escape key -- use it to get to non-insert mode from insertmode, to abort the building of numbers, etc. Non-insert mode Movement commands You may use preceeding numbers to multiply the effects of movement commands. (However, the use of numbered movement commands may be prohibitively slow for numbers larger than 30 or so.) 'l', SPACE move right 'h' move left 'j' move down 'k' move up 'RETURN' beginning of line below '-' beginning of line above 'w' word forward 'b' word back ')' sentence forward '(' sentence back 'H' top left of visible screen 'L' bottom right of visible screen '0' start of line '$' end of line 'G' by itself -- to end of file, with number to the start of Nth page CMD plus 'd' scroll down one page CMD plus 'u' scroll up one page CMD plus '-' scroll up one line CMD plus '+' scroll down one line The following movement commands work by opening up a search window (but out of the way where you can't see it), and closing it after the search is over. This has two important consequences. 1) For these commands to work smoothly, you must close every search window that you opened with CMD 'f' or equivalent, after you are through searching. (If you do not -- for example if you make the text window the front window by clicking on it -- your next use of one of these commands will not result in a search -- it will merely result in the search window being closed for you). 2) Should a search fail, there will be a multiple beep sound and a 'search failed' type of window will appear. You should close the error window and the find window before doing anything else. You can combine operators (see below) with 'f', 't' and ';' but not the other movement commands in this section. (Note that you should only do so when the letter being searched for is visible within the window and on the same line as the current position -- if the letter is on another line, or moving to the letter results in horizontal scrolling, undesirable results will be obtained.) Except when used with operators, there are none of the conventional between-line movement restrictions for 'f' etc. 'fx' find and move to the letter 'x'. 'tx' find and move to the character before the letter 'x'. ';' repeats most recent 't' or 'f' search 'e' move to the end of the word '}' move to the start of the next paragraph '/' open search window -- equivalent to Command + 'f' (does not take numbers) 'n' search for last pattern searched for in most recent Command + 'f' (or equivalent) search Insert mode While in insert mode the following have special meanings: Command + 'w' deletes backward one word (differs from the normal Word feature, Option + Backspace, in that it avoids deleting forwards when there is no space to the right of the current insertion point) Command + Backspace expand glossary abbreviation (is equivalent to Command + Backspace followed by Command + Shift + Space, so that text typed immediately after a glossary expansion is plain text) Command + '`' inserts '`' To start insertion use the following commands: 'i' insert starting at current position 'a' insert starting one char right of current position 'I' insert starting at beginning of line 'A' insert starting at end of line Operators These commands combine with motion commands to effect all characters from the current character to the movement destination. 'y' ("yank") copies characters to clipboard 'd' ("delete") cuts characters to clipboard 'c' ("change") cuts characters to clipboard and leaves in insert mode 'Y' selects characters. Simple changes 'rX' replace current character with 'X' 'x' delete N characters forward from current character 's' delete N characters and leave in insert mode 'X' delete N characters backward from character before current character 'D' delete from current position to end of line 'C' delete from current position to end of line and leave in insert mode Miscellaneous 'p' paste contents of clipboard to right of current position 'P' paste contents of clipboard to left of current position 'u' undo '.' redo (The following discussion assumes that you have edited Word with the Resource Editor so that Command + 'l' is equivalent to Show Glossary see above.) Normally operators ('d', 'y', etc.) and the put commmands ('p', and 'P') cut, copy and paste text to and from the clipboard. It is possible to cut, copy and paste to and from 'named buffers' by preceding the command with '"' (double quote) and a single letter. Thus '"ad2w' deletes two words and puts them in buffer a, while '"bp' pastes from buffer b. (The named buffers are actually glossary entries -- Oa for buffer a, etc.) Installing Vmode To install Vmode, you must use Resource Editor of creation date Jan. 25, 1985 or later. You install vmode by copying the 'DRVR' type resource in the file named 'vmode' and pasting it into your System file. (You may wonder why it is not more appropriate to add the driver to Word itself -- while this is possible, the addition alerts part of the copy-protection scheme and you will have to insert the master disk every time you use the program). You will probably also want to modify Menu ID 258 of Word so that Command-key + 'l' (the letter 'el') is equivalent to 'Show Glossary' -- this will allow you to use the named buffers -- see below. Past and Future This program started as something I called MacMacros -- a desk accessory for use in any program which makes it possible for any key to be expanded into any arbitrary combination of key strokes. I gave it a mode that made Word obey vi rules. For the moment I have decided not to distribute MacMacros principally for two reasons. 1) The appearance on the market (before completing MacMacros) of Assimilation Inc.'s MacTracks. For most people, and for most purposes, this program will provide an adequate means of creating macros within programs. (It is compatible with VMode and can be used to create vi macros). 2) The fact that I am a biologist and program as a sideline -- I don't have time at the moment to make MacMacros as powerful and user-friendly as I'd like. However, there are certain features necessary for an optimally useful macro program which MacTracks lacks. These include a) the ability to edit existing macros (so you don't have to type a long one in all over again to correct one mistake) b) the ability to create macros that work for a while in one application and then work for a while in another (either with one program ending, and the other beginning, or in the switcher environment) c) the ability to make a macro repeat itself a set number of times or repeat itself indefinitely until some condition is met d) the ability to generate a number of null events to pad some events -- for some programs (such as Word) which display certain bugs when commands follow upon each other too quickly e) the ability to manipulate windows independently of their current dimensions or positions (eg. making it possible to include a command equivalent to "click on the title bar of the window which is third from the front"). As MacMacros has most of these features, I may yet For the near future my plans are to release desk accessories equivalent to VMode which will make Word obey the syntax of other popular editors (eg. WordStar). In closing, I leave you with two tips for using the current version of MacTracks. 1) When you are using the Switcher, you may start up the desk accessory in one application (to make a new macro or whatever) but if you start it in another, the system crashes. It is possible to use macros in more than one application but they have to have been created ahead of time in all but one application. 2) Within Word, commands tend to get lost after commands that opened, closed or manipulated a window (particularly the find window). Pad these commands by grabbing a window, moving it slightly and then moving it back. Also, it seems to be safer to select a command from the menu rather than use the keyboard equivalent. Apple is a trademark of Apple Computer, Inc. Macintosh is a registered trademark licensed to Apple Computer, Inc. Switcher is a registered trademark of Apple Computer, Inc. Microsoft is a registered trademark of Microsoft Corp. MacTracks is a trademark of Assimilation, Inc. WordStar is a registered trademark of MicroPro International Corp. :::::::::::::: vmode.Hqx :::::::::::::: (This file must be converted with BinHex 4.0) :"ACYEf4P!%459P*0B@ji!*!))jF9%3#3"!%!N!-MAJ!!)Pi!N!-j!*$b)PTN!!! m!!$p#aq5!F3"c!(%!@3!!%Rk)N3T52lB+8Rqh%je)'cqf%je!9)"r!'F!ba19J! !*'cr@N*5!+`!N!2rrej1ANje6PB!!%MR!""&l2mh*JSQ3aDZ!!N[2!#3!`SQ#e+ $,`-[,J!+6VSAd0lm!!a-h`J!6Pj1G8j@rra#V[rm$+i!N!-+rraX*LBZrra5Jq1 $4HcrDL3Zrr`LEJ!)%M%S!%L"ld%eJ6J!8Ulrr'$36Pj1G8j@!!")j`!34Hcr)LB +*N-@VJ!*,c`!N!-+*JY5Jbm$,bi!#Nkk&f$Hr!!-60m)!%jH6R919J!!51F)!$P m!!AqiMPm!!Aqi%KXrZ#SF8*R2bcqiMmXrZ#SC6!I1!"+E2jbC`4+4'Bq3UHT*#! I*%!-DJ!)!'aQ%KBXre*)JlCm!!&R"NTXrRTQ"MBm!!&J!N*$5N4R"M3m!!&J!N* #YN*Q"%*RU8a-h`!36Pj1G8j@!!")j`!36VVqTLCXrY`[+`!HU44#U`!H2ccp#kN fU6G1ZK`56VSErNkk(%T1ZKa@6VSF)Nkk(#j1ZKaD6VSFGNkk('*1ZK[q3QcqHNk krcC1Z[jUF!"-h`J!6Pj1G8j@!!"1ANje6PB!!%MR#""1Z[iq&Lcqp8L$YR`!"'B 5*'cqh#9Xr[!!(N)Xr[9J!!&F*'cqh%UU!"jR!!&36VSGF%T!C`!"4L4XrY`[+J! HU(-NE2lB-#S!'Q!!!4`NE2lB)QS!(!a4!!CQ1#4XrYJLDJ!F,bN!!UNL5(S"(NA k!6SQ#NAk!43N#TD#,`0)E2jL3QHTcL4XrYJLDJ!F,bN!!UNMB!!!jNkkrR`3,2l e5)"J3#mXrZ`r2!"i2c`!Y%*RU4Y#Ccmmrrp1ZKiB@%pJ,LmXr["#TkNKB#3[,2l `2c`!"$mm!#Jr2!%!U4Y#CkNiB!a63'Hm8d"ReP0!Cpa#,2leB!!!KL4XrYJ`+J! H1!"J9JTX!3$qHLmXrZ3r2!!"2bcqHUP&B%K1ZJ'S*N![#kKc5(S!K%Ak!CNQ#NA k!(SN#TD#,`0)E2jL3QHTcN*R2c`!#NKXreUTF$!I5N"Q!Q$X,`ZT&'!)8d"RTP0 !ClK#CkNiB"53!(`!3'F!rZ"63'F!rb493'F!rhj1Z[c3F!"-h`J36Pj1G80XEh0 P)(4SDA-JGfPZC'ph)'&ZC#"4G@Pd)'&RB@PZ9Lia$94SC5"cG@0MCA0c)'pQ)(0 SBA*PGf&bC5"NCA"PEQ4c)'pZ)(P[GA)JD'pZCA0dH3e8D'pcC5"hD'mJCQPZC#" dD'9YFf9XGQ9c)'CbCA&eC@jdE(NJGA0TEQF0G'KTFb"`FQpRFQ&Y)(0SEh9XC#" cC@jN)#3a-#"dEcS065iJ5biJ8h4[Gf8J-cB`)%aXEhPN)%&fC5iJ8(*[GQPNC@j MC5"555!`-MNf-!e*)'&Y)'%JG'PYC5eXD@eTG'9N,#"eEQ4PFQCeEQ4PC#"LD@p XEfGTFh3Z)!e'GA*dD'9b)'4PGQ9XEh"YC@jd)'pQ)(4SDA-JF(*[Ch*KE5"NCA" PEQ4c)'pZ)(P[GA)JFh9`F'pbG#i!6PB!!%MR!""#Td+R5'cq9NKXrR`r2!%!2c` !"#mmrj!%2c`"!%+RU4-J(bC!3QX!4%*V!%T#D`"))!Y-h`J!6Pj1G8MRIha*qKe i+8Mr@LP!rf*K!!-F)#crANcI2[j1G@%!'*iJE2pD)#crBU!a+8$rAQ%!'LC1G8j @!!")ja!J,`a*qKdm6VSBQ%kk'Nj+3'GU5LcrhfGD&LcrhNL$5N0Q8"BXrq")JlC m!!&Q4#4Z!!JL8LPT!$lr"#mm!*!$(%KXrT!!*'cr"#B58B-[!dkk%Y,Hr!!-$'` !(2k5Ea3jI!!FrT)@,2k3!%L$aRcrm"P$rT!!5Lcri'F%8bcri#mZ!!LTd%kk'63 SAdcI"!K1AL"I@%p1d%j@rra)ja!J,`a*qKbJ6VSB$%kk'E*+3'F85Lcri@F14IV k@#B+,8-!'N)Xrq&#TbmZ!"i[,J!D,bi!&MmZ!"3r,J!5,bi!$MmZ!!`[,J!)U4- J(be!!"j1ZKPX5N"R"%kkqYT1ZKM-+&mJ,J!H60m%#%jH)&rHr!!D,S"1d%j@!!" )jaJJ,`a*qK`L6VSARN+R,bi!#+Np)"mS!%kk'5K+3'F3Z,`!!J!+CJKi!"Pm!!2 qp8kk')SSAb!%60m%'%jH)&pB6bk!6Y"19J!!51F3)#m-5ISEeNkk&f*+,2qNC`4 6,2qN3Lcri#mZ!!LTfNkk'&`SAdcI"!K1AL"I@%p1d%j@!!")ja!J,`a*qKZH6VS A1Nkk',"+3'F'5'crm+LD2bi!#MmZ!!LSNNkk'%SSAdcI"!K1AL"I@%p1d%j@!!" )ja``1#i!$#CZ!!J[$%Rk'eT1ZKF'3QFr"#m,UA!`(cS!5Lcrb'F@$&-!#'B36VS B9%T!C`K#8hS!8bcrb%kk&qJSAc!&60m-1%jH)&pF6ck!6Y"19J!!51F3)#m-5IS E#NSXrmKR'Nkk'"T+3'F55Qi!#'F'3Qi!#'!'2AcrB!!)6VS@TLmZ!!Sr,J!)U4a 1ZKH)+&p-h`3)6PiJAea26Y"19J!!51F3)#m-5ISD[%kk&JJ[,J!-2bi!#MmZ!!L SXdSXrp*R"&-Xrp*1ZKF'+&p-h`3)6PiJAe"26Y"19J!!5QcqF'FB5QcqJ'F)6VV p'N*XrS"1ZK3HB3T1ANje6VVp#'$f6PB!!%SXrmTR#&-Xrm*1ANjeB2T19[rk5Qc qG'F-*LcrBXDm!*!$$fB)6VVmf%jH6R9+E2jbCbT1ZK%)B93p32rk5QlrqQF55Qc qJQF-BBK#E2k#6VS3l'%i*'cr[&-5B-a1Z[pd5QcqFQB8*'cr@NT5CJ*JZ%kk!m* +3'B#B+j1ZJ$16VS3['%)*'cr[&-5B*a19J!!51F-!%SXrpeR#L4XreSeI!#!!!j +E2pQCLSr2!!"UFJr2!!#UFJr2!!"UFK+,2qQC`i[,2lS3QHT("Pm!!(qp8kk$qj 6E2pQ*'cr@MJ55N4R8,Km!!&Q$#BXrf,'[!#3!`*R*,Km!!*Q$#BXrf,'[!#3!`4 R%VKm!!0Q*LBXrf,'[!#3!`KQ'NAXrm%Q#L3XrlbdJdkkp`j`!%cI!$"1ANjeF!& Jp%(Xrda+%'F)2c`!!DRZ6R9`!8je6PErr"Pm!%Er`6Pm!!(qFMPm!PMrCKBXre0 )JdT$CKK+,2rBC`T&l2rS3qcrm#6C'A`!!IqRB&BCI!!"rp&+,2r+C`JCE2rArkG J+NSXrmGR#''B'8$rTf!%3LcrTaBXre0)JlCm!!*Q$"BXrkG)Jq0$'82rTdSXrpC Q$"BXrpK)JlCm!!&Q"KPXrkIred)XrpC1ANje6PB!!%MR$"!3,J!*5)"J!!%F*'c r@L9m!*!$-!!#B"!NE2pD&Lcr$%L$5--P3`!#*'cr@M9m!)!!$R!!60m)-%jH6R9 J!!#%6VS1[NT!C`*JkKBXrk9)JlCm!!*Q%KPm!!Vr`4PXrS[rT"Pm!!2rT8SXrk4 R$%AXrm%Q#LP$rlaJ5"BXrk9)JlCm!!0Q-N+RU53J(l#XrZKR*L4XreSPI!#3!bi !!L4XreSeI!'!!!j&l2r"*JST3rqmF!"J!2pq3LcrT4PXrSrr`8kkpBK`!@!!rfT +,2r"C`a&l2r"*JST3rqmB13jE2r`rZ!f,2rU8N-j3rlL5'cqi+K`*'cr@YAm!*! $#N2XrZ!Nf54XreSeI!)!!!jJ+(!!B!$r)2q@rpVr#[l8rZ,rf[m'N!"m!"1`I!! (C1,M3$!l!141q`!!*'cr@M5m!!&`!@!!r["19J!!51F-!$BXrT*)`e+$&#cqN!" )JX4m!!p)`TD#8B-k!lTm!"0[!RS6'8Ar)KPm!!Rr)hJ"Z%9X-MB%8N0&l2mL5-8 L48(XrTFN#02#5-56a"@4-!!f"&*$5-2MJdAXrfSe[!#!1!"54'$+60m!-%jH6R9 19J!!'@crh[rI'@i!#IrH6Pj1G8j@!!!@,2p-5)1fI!!$E3BCI!!#rda5,2p-&Lc r6%L$5-0&l2p-&Di!#6J!6Pj1G3-"N!3$!a-A!`F$!4FJ#-B6`[X9qrX9`K8C'@' r`VkrXVll##!`)-)9Geir#'E#qm+qqll#[ljLBhTf,RBA&QclmAT`AJKQ`[YMqhE #6PErmNMR!""1ZK-k5N"Q#R!!60m)!%jH6R8NE2pD$&)!!fF+*'cr@Ja5!!9Q+L4 XreSQ+J!#5)1fI!"aCKSNE2pD$'S"J!!1CJiCI!!$r[91Z[1ZF!"JZNTXrRTR%%+ RU53J(b4!$'S!#!"XC`4`!'#J3UHT*#!I*N!NE2pD$&)!!fF-*'cr@Ja5!!9Q!!# %*'cr@LBU!!*)JlCm!'CQFL4XreS-DJ'!!!jQCKPm!!(r)KPm!'Er)cPm!B$rE"P m!!(r8cmm!!&1Z[kN9%p+,2rIC`C`!@!!rcT#,2r(6VVq'P)Xrb)@,2mL5)0)`dA Xrb)9[!"Q1!!@,2mL5)0)`q1$4HcrDM@m!B!i!(!"B!$r!L4XreS`%Q!!#Z!NE2p D*LS!!NL$YR`!B'Bb*'cr@JaU!)!!$QBQ3Lcrc%)Xrme#,2p63Lcr6%)Xre*#,2r B3QcqFNkkmf4`!@!!rVB3,2p55)"J!!Tq*'cr@JaU!B!!$QCi*'cr@L!U!!*)J'" F3LcradKkrMSr2!!#6VVbq&a25(Vq+%kkmV*B6aPm!!(r8h!"B!$qE%)XrmG)H[i 62c`!!NkkmY"F6dKkrJ*1Z[++@%mCI!!"re0`!@!!rN3NE2pD0A`!J!!1B""43'H JN!"m!&KRkT!!I!!ACla`!'!!rL*1Z[,'*'cr@JaU!B!!$QB!!+JNE2pD)#S!!NL !B(!@,2r-5)0+3fB'F!"J!2hd3Lcrad)Xrb)CI!!)rcFNE2pD'@S!"Imr6VS+-KP m!!(r8h!"B!$pc#4XreSPI!#3!p)!!Q"1*'cr@L9m!*!$eJ!#B%!NE2pD*A`!N!1 j!!*J-L4XreSPI!#3!l-!!Q!NN!"m!#eR`T!!I!!3CmU3!(`!*QF!rhj63'IDN!" m!"&RaPG!C`$rER!!B!$pDL4XreSf+J!1aR`"!'B!#+K#,2p6*'cr@L!U!!*)J'! !!GKJ!!L53Lcrf"Pm!!2rcdKkr33r2!!#6VVaSPa25(VmcNkkm9aB6aPm!!,ri"P m!!(ri4Pm!!(rT8SXrpKR!!#-&Lcr0dL$YR`!#@B''A`!!Ir-'A`!"[mh,c`!N!- &5'cr1NKkr*01ZJMBh[`!$%SXrmjR'"BXrmp)JlCm!!&Q$"Pm!2[r1aPm!-,r2%S XrmaR0Lmm!*!$"NKXrd&)E2mi6VS)RYlm!!`[2!#3!`G)E2mi5(VmE%kk#)MHr!! -'A`!$rmh3Lcrc'"-5LcrcQFF&LcrcdL$YR`!!@B35(Vm(6mm!!01Z["NA%pJ+KB Xrmp)JlCm!!4Q%%Kkr!3r2!!$6VV`5&a2B!j)H[[b2c`!!Nkkm$KF6aPm!!hracP m!)$rD"Pm!!,rb"Pm!!(rTN*R6VVlF&423UHT*#!I+8$qk"Pm!!(r8h!"B!$lr'! !r*)CI!!$re*`!@!!qq`CI!!"re0#,2p-3LcradKkqlXr2!!$6VV`4Pa25(VlFdk km!"B6h!"B!$l`%kk#dSCI!!"rp"`!@!!ql!CI!!#rpK)H[YJ2c`!!Nkklk*F6h! "B!$lPKPm!!,rf%Kkqh8r2!!#6VV[L&a25Lcrc'F%6VS(T(!"B!$lFP&!C`$q*T! !I!!DC`$rET!!I!!-Cjj63'F!rek3!(`!+QHLN!"m!"9R!2i)Ad"R!2pD@8"RUL4 XreSGDJ!&rrF@,[rh5)1fI!!aE3`@,[rh5)1fI!!jEaB@,[rh5)1fI!!`CL)@,2p -5)0+3fFB*'cr@LBU!!*)Jcm$6VVkD&42F!&J!2V`1A`*J2pS&LcrbNL$5N0Q&KB XrpK)JlCm!!&Q#L4XreSCDJ!&rm0+,2rBC`BjI!Z!rfJCI!!"re-NE2pD)#S!!NL !B!!!k"Pm!2[rah!"B!$kRKPm!-,rah!"B!$kNKPm!,rrah!"B!$kKKPm!,,rah! "B!$kHKPm!-Erah!"B!$kEKPm!-Rrah!"B!$kBNKkqN)r2!!&6VVZbPa25(VjmNk klS4B6d)XrpJCI!!%rmpJ!2dF5(Vk!Mmm!!C1ZZkNA%p)H[R,6VVZAPK2'A`!![r 2B!$mqKPm!!(rcQ!%3LcrcKBXrpK)JlCm!!&Q"KPm!$[r`aPm!!Ar8N)Xre0`!@! !qHa)H[R02c`!"%kklP4F6dKkqAe1ZZi1@%mCE2ldrb-CI!!"rmpJ!2bNN!"m!#" R!2mJN!"m!"YRbT!!I!!RC`$r0PG!C`$rEP0!Cj*93'F!r[C93'F!ra463'F!r`* 63'F!r["43'F!rfjA3'F!ra4G3'F!raSCI!!#re-NE2pD)#S!!NL!B!!"!KBXrda )JdT$CJ`CI!#crmG`!@!!q9"#,2rC6VVf1%M!X,`!N!-"CJ`CI!#jrmG`!@!!q6) @,2p-5)083ce$rr`CE[rprb)CI!!0rb-pI!!"rri@,2p-5)-d,[rqY%0Z0MBZrrb @E[rq4Hcr)M3Zrrj$l2p-&E%J!$!!0Llrr*CZrrj)`q1$4HcrDM@m!)!i!&*Zrrj J[$BZrra&l2mL&E`!Cc!!0Llrr%M$ii0&l2pU0E`"J$J!3Lcrf%)XrmG`!@!!q+) CI!$'rmG`!@!!q*BCI!$*rmG`!@!!q)SCI!$lrmF-E!!*rr*X"%)XrmG`!@!!q() CI!$#rmG`!@!!q'D3!(`!*'IZ@8"RZP0!Cm*I3'I+N!"m!"GR!2lS'A`!!Ip62A` !!Irq$'i!#rrqE"Jf,[rq5-2MJdAXrfSeV2pS1!"5E[rqB1!NE2pD)#S!!NL!B'4 #,2r(5(VhbMmm!!91ZZaiA%p`!@!!pra#,2r(5(Vhacmm!!91ZZaJA%p`!@!!pq3 CI!#brmGJ"KPm!,rradKkpimr2!!$6VVX2Pa2$'`!#IrbE!4#,2mL'A`!!IrEF!& J!2H`N!"m!!eRaT!!I!!JCmL3!(`!'fHL@8"RKN)XrpJ@,2r-5)0+3fB''A`!![r C'A`!!Ir@*'cr@KPU!!Ara$Pm#i$rD#4XreSJ+J!#5)"J!!$13LcraaPm!!(r)KP m!2(r)cPm!i$rE"Pm!!,r8R!"B!$h3%kk"ZiCI!$armG+,2r+C`C`!@!!pbTJ$KP m!2$raf!''A`!mIr(5(VflMmm!!*1ZZX5A%p+,2r-C`41ZJ-ZF!&J!2Em6VS'UNS XrmTQ'%KkpXBr2!!#6VVUkPa25Lcrc'F%6VS$"Mem!!(rrJaZ!![rrQ`B0LlrrNM $ii0&l2pU0E`$J$J!8QlrrQ$J5(VfJ$mm!!01ZZXFA%p#,2r('A`!!Ip6F!&J!2D @N!"m!%0RP&0!CjU3!(`!&'F!rek3!(`!'QF!raa63'F!rcKE3'F!re)pI!!"rri -EJ!+rrjX'$BZrrj)`q1$4HcrDM@m!B!i!&*ZrrjJi%)Xre-jI!Q!rfJNE2pD)#S !!NL!B%41ZJAL3Lcr0f!!rhC1ZJA@'A`!![p6B!$pNNkk"FJCI!!"re0#,2r('A` !!ImL'A`!`[mMF!&J!2Ak6VS&U(!"B!$em*!!I!""ClC43'HqN!"m!"KRaP&!Cq* #,2r('A`!!Ip6*'cr@LBU!!*)JlCm!("Q5NKkpDNr2!!$6VVU+Pa25Lcrc'FX'A` !"2rC5(VeCcmm!!C1ZZS3A%mCE2m-rb8jI!#!rh!jI!#!rh)jI!#!rh4#,2r-F!& J!29i*'cr@LBU!!*)JlCm!&"Q3"Pm!!(r)KPm!(Er)dSXrmaR*"Pm!!6rf8Kkp4! r2!!%6VVTZ&a25(VdhNkkkA*B6aPXr`cr*%)Xrma`!@!!p5K#,2p6'A`!!IrB3Lc reN)XrmG)H[6U2c`!!Nkkk3jF6dSXrmaR"%kk!5SNE2pD)#S!!NL!B#SCI!!"rme +,2r+Ca*)H[5G2c`!!Nkkk0jF6d)Xrme`!@!!p-j`!@!!p-L3!(`!BfI38d"Rm%k k"%K`!@!!p,41ZJ3qF!"J!25U3Lcr8L4XreSCDJ!&r[4J!2UZ3Lcr8N)Xre-NE2p D'@S!"Im-'A`!!Ir-3Lcr6(!"B!$dGN)Xre)CI!!"re0#,2r('A`!![mL*'cr@KP U!!Ar*#4XreSjDJ!1rfiCI!$lrb-jI!Q!rfa`!@!!p$cf!29frkcrLJ!#rhL`I!! 'C!VM3$!l!1T1q`!!F!"J!23D9d"R!28H98"R!28BB1aJ!23)6PErr%+Zrr`Q,[r mYUi!%'`F*Llrr#4Z!!`N,[rm)Qi!#"@a+!!i!&+ZrraJfNjH6R919J!!'A`!"2r C'A`!)[r''@cr$2r&'A`!#Imh'@cr1Ip!'@cr12mrB341ANje6PB!!%)Xrm`[2!# 3!`G)E2mi5(VcE'')h[`!$%jH6R919J!!3Lcri8)Xrk9#,2rJ3LcrTN)XrmK#,2r (3QcqFN)Xrp&1ANje6PB!!%KXrj5TGNUXrj4Q3!bX!)#!!2qBCMC+V2qFCM"+V2q JCLSCI!!$rk9#,2qN'A`!!Imh'A`!&Imi4Hcr`5B++82r[%kk!k4`!8jH6R9`!'$ i6PB!!%MR#""&l2qR*JST3rqm*'cr@M5m!!-#V2q3!`$rAKBXre0)JdT$CM41ZZE +5LcrTfF)60m)%%jH6R9+,2r3CaC#,2r3'A`!!Ir+1A`!!Ij`'@crfIr#6VVr+'$ @5Lcr)QG+&Lcr)NL$5-0&l2mL'$)i!#4XreT)K%M%*83!!L4XreS@,2mL5)0)`q1 $3qcrDM9a1!!!$NAXrb)Q#LP$rla)K$m%6VV[qP42B)B@,2qP5)1fI!!"CJ!!S%+ RU53J(l#XrZKQ&N)Xrk4&l2r"*JST3rqm6VVQ(Q!!reK+,2qNC`*JjNSXrq&R%%) XrmG#,2rK'A`!![qPB0"#TkNN)"mT32lX'A`!![qP'@crTrr5&LcrTdL$eR`!#KP $rkFCI!#mrm%@,2r25)1fI!!$CJi@,2rI5)0+3fB%6VV`XP)Xrb)@,2mL5)0)`dA Xrb)9[!!C1!"J!2m'5LcrTfF!!+JNE2pD&LcradL$5--P3`!#&Lcr8dL$YR`!!QB H&LcrTdL$5-1(r!!#5%0+3fB-*'cr@L9m!*!$[J!#*'cr@M9XrfJ!$NAXrkFQ#LP $rla+,2qQCdj1Z[hb5N"Q'KBXrkG)JlCm!!TZ1Nkkj5S@,2r55)0+3fB53LcrTdA Xrm%Q#LP$rlaJ!2j-&LcrTdL$YR`!!@B1&LcrdNL$eR`!#KP$rkGJ!2iZ5LcrffF H3Lcrf`aX!!VrmQm55(V`[cmm!!01ZZ9BA%pJ!2id5Lcr0fFq&Lcr0dL$5-0&l2m h'$)i!#4XreT)K%M%*83!!L4XreSeI!'!!!j&l2mh*JST3rqm5)3r"%kklMT86f! !rFC#,2qQ&Lcrc8L$YR`!!@B#B6K#,2r03Lcrc%)Xrda#,2rBB!$pPNj@!!"#,2m L3Lcr0d)XrmG#,2r03Lcrc%)Xrda#,2rB6Pj1G8j@!!!CI!!"re*1ZZ6U6Pj1G8j @!!")j`m3*'cr@M5m!!-#V2q3!`$rAL4XreSeI!#!!!j+,2r+C`!!K"BXrm*)JdT $CL"#,2p56VVNUN)XrmT#E2j`3QcrYNkkiq"-h`M`6Pj1G54XreS@,2r#5)0)`d2 Xrm)8-6J!5)*)`L9#!!)@,2r#5)1fI!!"CLi@,2p55)0+3fFB*'cr@L9m!*!$B3! #*'cr@M9m!B!!$Q#Z&Lcrf%L$5N0RS'#LB+"JRNMRIha*qJ@J+8Mr@LP!rf*K1#! Xrej-hclq6R9K!!#i)'cr@L!Xrf+J-#P!rejK!!(56R919J!!5QcqF'F)6VVr%Nj H6R9Ke'$i6PB!!%TXrR4R$#BXrf,'[!#3!`pQ"Q'k6Pj1G8TXrR*R#Nkkr"C1ZZY LB1aK[%TXrR*QXreT+8QB#B0T1ZZlb5N"Q!Q$36VVVrNkkqq`jI!!"rS*1ZZX bB,`!N$""q[r5)&!J2!!!S$#J4dje3IVr[L"3)$`!!+!aS%G1G8(krlBJ8#!m!!# SXk"(6R9"q[qU)&!J2!!!UG#J4dje3IVrRL"3)$`!!+N6S%G1G8(krj)J8#!m!!# T2D"(6R9"q[q')&!J2!!!UGUJ4dje3IVrHL"3)$`!!+L5S%G1G8(krfiJ8#!m!!# TF+"(6R9"q[pL)&!J2!!!U4bJ4dje51F!J+&')!K-h`%!))"1G5!m!!#J-%(kraa Kj#!m!!#J-8(kr`aKf#!m!!#SXd(kr`KKc#!m!!#Td%(kr`"K`#!m!!#T%d(kr[K KY#!m!!#T28(kr["KU#!m!!#TfN(krZKKR#!m!!#SNN(krZ"KN!!J2!!!UA""q[l BBB3J2!!!U4a"q[l36VVrH%je)$`!!+!`3IVppU"(6R8J2!!!U,0"qZM'S%G1G5! m!!#Td%(kjMLJ4dje)$`!!+N63IVQaU"(6R8J2!!!U6e"qZFfS%G1G5!m!!#TfN( kjh5J4dje)$`!!+NF3IVS-U"(6R8J2!!!UA""qZI-S%G1G5!m!!#SNN(kji+J4dj e)$`!!+!a3IVPS+"(6R919J!!6VVqmQ(S6VVrD%kkrja1Z[qQ6VVrH%kkri*1Z[r %6VVrT%kkrkj1Z[p@6Pj1G8j@!!"#Td+R,c`!!!N35'cqY8kk!1cHr!!36Pj1G8j @rra)j``36VVJH#JXrYaKd%T!CKiN4%UU!"jR$"Pm!!6qp54%3US!(Mmm!!@Tb'! !!+)N4%UU!"jR#"Pm!!,qp@$Q3UHT*#!I+8$qk%kkrf!jI!%!rRSN4#m+6VVNU#C !*&mP3!!H+8[qm#4%0fS!'!"X*'cqm#*U!(BN895+3qcq9L6C*0P#Tcmmr3Y)E2l &U6%J(bP!rZ3[,2lN5'cqbkNc,bcqj%*RU6@T0bmXrZ3r2!!"2bcqHUP&,`Xr2!& U2c`"r%*RU4Y1ZZ#-'A`!![le6VVIZR!!60m)-%jH6R9&l`!%)&SL@R!!%"K)3"! C5LS!!QF-5K*R"+BmB!kL2'!+5K*R"+3mB!+J2!S!!!(K3%je)#m!"+!b6R8!+!! %!2%"q`!&!!8!N!A+!IJ!N!8#!*!&!3#3"!%!N!`"!*!$!`#3!`'%!!!-!*!%BC! F!!j0D@0bEh0[CR3J9fpbC!!%E@pNC3!+9Ne[C'8l5@jQE`#3r`#3,3%!N!-MAJ! !)Pi!N!-j!!$-(!!q!*!$(!!b!!"%8PC5!*!$#J!2!!"3!*!%!3p5"J"@6@pNCBm [!: