[aquaria] Patch to run Lua scripts as threads

Andrew Church achurch+aquaria at achurch.org
Thu Jun 17 16:05:45 EDT 2010


I've put together a patch that allows the game's Lua scripts to run as
threads within a single Lua state.  The patch is admittedly a bit
hackish, in that it creates a nested environment for each thread so the
global variables defined in each script don't interfere with those used
by other scripts, but IMHO the memory savings -- typically around 80% of
Lua's current memory usage, for example ~16MB in Home Waters -- make it
worth the change.  The nested environment hack could of course be
removed in the future if the scripts are updated to use local variables.
I haven't tested the patch extensively, but in theory it should be safe,
as the only effective change is merging the common function set into a
single read-only parent environment.

The patch is attached below, as a compressed file due to its length.
(Ryan, I hope that's not a problem for either you or the mailing list
software!)  The actual changes aren't too major; the bulk of the patch
is due to s/*L/baseState/ in ScriptInterface::createBaseLuaVM()
(formerly initLuaVM(), which is now used only for threads).

The patch is also in my repository (http://achurch.org/cgi-bin/hg/aquaria/)
on branch "single-lua-state".  It's actually committed as two patches
there, since part of the change is identical to one of my PSP patches,
but I've merged them here for (what I hope is) convenience.

  --Andrew Church
    achurch at achurch.org
    http://achurch.org/

begin 644 single-lua-state.diff.gz
M'XL(")#%&4P"`W-I;F=L92UL=6$M<W1A=&4N9&EF9@"T7>ESW#:R_ZSY*_"<
MVD3*:"R-#NM()14=/O1VY"B6;+]\4D$DAL,UAYSPD*RD\K^_!G@!)([F).ML
MK64T^H=&H]'=:)+0-^3=6^(M:!RPC.5D17-O,?J&?,Q82JBW*%+QSTN:,S+=
M.WIU='@T/3DBD_V]@]U=()RG-/86)`OC(&*3J*"3+(>^0'F?^(Q<79*C*:6O
M]J9'1Z_H='Y\LL\.#P]>[9[0P\/C`W]O[V3_A)Z\.O$?@.6&IBS."?'WIW3_
M<.HQRJ8/N_-][_#5P\$1>_#VV,'\9+I_<D2/CX_FAZ,/14QH%)%904GFI>$J
MSPC-2!C[;,7 at _P`L7Z2,^KP-?F0DHTM6=N=BOAR-[A9A5LZZUH+H]\`6]#%,
M4I+,R:U`OHISELZIQTY/PSC,`>/3]>86H;$_\J(D8W5#GA`/A at 1]`8GX+,O3
MY%D,68OR%.8+$(=66FO%&:44QDZA(XUU(/*\!$.V+>A`I@]1F"U`>#IZH!DK
MR7S23XL0II8O0,)&`%!S!>^#!F[#V&-BTEZ1B at 5H5`G]XB3GXX=!S'P^MP=&
M4J[UK$;;YJPCCZ_V*DT>0^A,&!5C<KJ8+4BI",_BQS!-XB7_>0Y*#J+D at 4:C
M1YJ&,!&6O21$K$L%(7<'8:."CT')');^@7I?2)0D7XH5EXZ+TL[_NZQ")EP_
MC&P^/),HC+^`VDF85_U)S)[D$;[+1O?W7-BO9,ER,!?0G;^US>TL>>*<G*<2
M#!"HY[$L$U8X+V(O#Y,X`X7-0]#7",83QL0EXJL<A0\IS)$)*WUBP$-+<SO[
MO>!SGV0KYH7ST&NQ1BD+P at Q,#]1?V7`[0=#3IE`4_(_ZRS"'%8V>299PJ;FL
M8+V4+$!'VR-N*+`X(&@I5+W(V2(I(E^L*WM*.43,YU7`&%'B@>Z:55',LU1L
M]G*KVD+EY@$,OP"%\-F"]I=LF:3/@$6!!,HH%^EX]U]\*EQ*XL%<P(3`"$;L
M*UVN(G8Z&A'X<Q?FD1"2L?B4D/W#P[W=W6,R^8F0D[W]@]U7@`<;@/>]2RGL
M2)BM1Q_9*9GN3_>.#T\.>-^]HX.]5T=';5]"WO%A/X/RTNR4[$VGN[LGTR/>
M]^!H>KC;X(ZN<EC4+"'+A&\_4%H]-6Y%]"$I<C+=_=>6T&644%^81 at C8W*"Y
M3<'NH=G+T>=%&+'*T&`=?9U1^PG at INSW(DSYCB?L:Y[2RFA+XQYQ5/;(0)NU
M:<!THPCPYFFRY/K>)E>PU(_EEDT>P($_`I7&8`^P>[E5T3@?P?[A<@G?<''S
ML5J;)R'D*J+/,`WP"7XXGY-)JGCBVDAW+F]_?>FM5J/)9$+H3J=UXVY1D/\%
M#P%*G>Z?3E^=[N^3O=WI+AGOGD#(&(_'Y,'*='AZ<'QZN"LS_?PS1)RCDZ/M
M5V0L_IY.R<\_C\A&RO(BC;DGR-@/(_+7B(S&CTGH$P`^/?424)"7E_[[+4T?
M8*J;6Z/QGZ/Q1J8Z]9=5WZ;7#Z/Q7Z/QB+1H27R=P*ZXBE=%#BCD3Q at _G)--
M/_M]\E/`X\JWWY+F'Y.?Z"/-:;KEUN5"H\G%<#TN,%J<[N_O<BV*OX]*)7;B
M&^FH!O2Z\9`D$??[9==-#QP3#T'^Z2E$)F[YW\8PYVVB(7!S_?'%BZT^S/MB
MN0X2>`O8;SF)B^6/NWR=-L0:Z1<;1H5Q18=L19]B2#'RT(O8Z_D<.IN'_P14
MV'&K)`OY7JO'3)/\Q]WZ'^+'$+8O;!N6_CC[<']S]N'NZF+V^K;N,D]XU!!B
M$KLAO(5A-;NJ;AYF#EHN at T6\VML7^TK\?5Q:Q`9LI`VQF3:$09MT.^9;(+L`
M#\55]V.S#S=8_'O!"N;?I.PQ9$\?(*JM&'38=>KA!F*,1@]U\S`]:+D,>MC;
M.X`-,2[_$EKXJ]K@,]CL&W^.)AL;D-_>BV0/VKCAE=KIN9(V'9P)L]^855/G
MD'_9YW_;!>NI0M-CF%9<`"9#F7*W.X:_]O8J,^'Z6!79`K;B`TLW9]M$6+JP
M')Z at 0"(C]L>]G\PAP-SS:!_&&8OYKGIDFYS_5F2JW\\JO[RS0^J,ILPA2M9-
MR,!$)BFRAOR)T2\\2YQ,TF<:O^3^7-K#<[Z'86^GW`O[_RFR_`U`\,8+$("/
M.KOW%LS[4O;G<D^WML2*<G%C6"TN6<#R/%E52\T-03#R6"\D`BXQT$OO'G`V
MM[;(_\`J;PE6EJ9)6G$*HX%0+=2S368?S^ZO/\[N/KR^$^0JA"D#D at F)JP`$
M6^R;,IWD7>:;W`EN;6R4:OWF&_Y/58T\+DD<J\U5GFZ)I;J!E;I)0K[N7!;>
M_ at .IAI_^P%=-XGO8Y,YZJUUC_D]&8\XI*!W6T41B3FLQ.7.=P&Y^#ZQ"X.U&
M=*X!)Q_/=\7T=.RD"M'`\9HK_3H+%'UH(\DR"T0`YV9]O'\L_-_Q_LEQM?-W
M=G[\+_[A^.0-^4C>DPMR!TG;+_#3[7]]U#J7T9YFJWQF9V?#6R2AQUWU9/I#
MI9^3PVWN"(X/=H_X#V+K5T=%-9S67FYGAP<,.&R\CO,P?Z[]_GBC/'2>T^:T
M+$((C+I2<$H1,X'$M]N-CLJ9)^"4V\/XM[/:^1`=!_F^-W78<+J>Y\]7_M=-
MOL5"_^M6J86#P_WMXY-CKH97A_#3GI*`YFE1YY^3X8YOPH/+>HYO\L\XOHG)
M\4W6=GP3N^.;6!S?Y"^^LF9K+9=;TF&CQ.]GU122%8O!0C;@S\[WA/]+J)5\
MOU,*QEONN6,!K]3I5AVQ80G+X_JSRB1.97JNZL"FXZH4KF6K%@_X7JI,2TA?
M]"R<(C'`-JE8DDS/D&2\.^\]UNNUMS7+<-SX7K=>QZI>&TZ,>L<=]=J8>UH>
M=[5LX^XH>ZPJV\:IZ'RLZMS&UZJ>"(]&$CC&I^`=JWT._B+V:>I+&SY+R!.O
MC<1PH(]]F.V\VL:B7@(N(BM8]K+:8DV<%-'N18GR8MOH?"J_V<H?)GJ;N=KY
M13%F_7C9 at GX!][)D*7VQO5'_B>ZE]L8;=%B+59!2G[UC-,H7"K-":;*HEEU*
M"5`3'BL+!A.V+5AGWB4O^3=C*U(797A=S>/834UU,Q/5Q&=>]HF_RTE0GI(F
MU=&)^5LOJUG$[*EGY!4I8WE95Y-SGA?WY1B"Z44U&;,Z<.MA0\`O"]G0+RQD
M!^PLBCA at D2D("L5D%Z`&R%.S))98^0SJ9 at O?=0&>Y2ZY at 2.Y.GN%9`*`5'$>
MIDMUV*K1H33\E*V+YYZY at QVM`.MD['HP+7L*SNH#+P.KC$USY7DTG/,(G/)U
M$G]AJM12NT-DQ-CV?8,3`:9.C,8W"V^2)Y;VUJYJ-UE=8.`,,)PWW#145L%9
MMUM8[\*E9DC1:N%Z1Z-YEU,P- at 3+]KQ(LKQ8LIZ&JG;+L%K.`,/Y/LG9>ZJP
M"LZZO;1*(_OG)(W\N^=5C[\AN`#XLX89>V11#Z&A6%1F8,^Z[!8)RF/85?PV
M38I5BR)D4&CF#5JFA[\6U.\XA:;=-(7?@7;OLXCEJ@:E=BMK!D>(SK*W[5;.
M-.%;NS]HV6Z>J^@$<3M)-<.*=NNP-%HMJ(93M+LYKQ._+W)-L;+#:IYUQJ[8
M:XICSB+,E`5OV4JZ-/MRL?P<<M7.CFE!&J+-9J%?L2HMLVOT=;MEQYR)S`P<
M8)>W(=C&3IDH&*6%E[^%+%V>0X=D$D'J5LJJX"@P+=T=V=W1Q0:`"C(.`$2L
M<2#80XZ#&15Y'$IT!R"'$.XXY`!`A*.Q(U7!1B4,#BXX.;2*C%$(>8:$*CL8
M*F+9`'"!RXG at BE].`&<8&[LQ7-',">`*:C@`5VQSHJ!"'$(?^$B'@4('/-<&
MP,4]!P(J_+DD&10%D4"#@B$I_S,>M^!0=K^@V=7K.]4JVW9;D.?O.C[*C,#)
MN(X>34%=<,RU+',C3Z`;);"-$FA'":RCA%E_$&@S)WM,*/J>^OY5$"<INUTD
M^25=TH!)1 at PHUFY&<4HN%F=%RF;A,LQEX^E3'3 at P]?,D9K/$^Z)NC`:KU\.Z
M\"4/+-N'D+^RU?4"#6JOAT/.IO\ES:EDWSJR&ZJ>D$9U$M6-<Q4'*?-#:-"*
MU)+=4)<0-A>W'HN9%JHENZ"4PI2$82[+53W"[%:\GZ912DUR3P/Z]3R_/`^)
MCK.CBX at N5[_$MT]A[BTNPU1G2=T^SJW)S:4BE#9]&3*_NS&UG3#0YXP6^?.;
M*%QI5="2,0;V&,9>^!`Q at X'59+-<>I0J9BD`MCB#B@>NJ&<-"TY&<W2PLMJ"
MA)/1'"NLK.:0X5#0/Q0Y$&,,"2`(N/7BR!BGC_7"R1!@7%3!(:*#"PYN2(S!
M(0X)-1A$:\1!`.`"#VYNP^(/WO[6#$-H\UX[&F%'&!*4L(:)CTW.<QDR1%5'
M%F(ZMK3#S\*Y"J62W*%WEB1?SG+Q0I]V?A+=G6-;P8(>F#O'@-7OU.J4+5Q1
MW;,\*_+D]@NOMM#HX\IO*R$R7+^3`[@0G6J6_HQ5.B9?+V*/*24`U:?69&=Z
MQLN9XO'Z#4L][5*T9,S1R2Q7T)4+<[K1+V=)<XMCQ`AD#)<D_,M"40,L"QHZ
M3]?I at D*EX7_H!T8]4_Q6.F`07].\6Q3J$3$XMZLP#?,W*6-_Z,U+[H`!O*#Q
MC-%')HJSVD`A=W`BKHHH$BX_9%E?/IF*TIKX:<8_J=!.5J(CC)9_<)C>T"S3
M)T\-V2F9%S&:WM$T8*47S'IZZ_5PB`?9L=2[+Y]*QWG=7ZI7RRY`Z1^H'S:O
MHLBS[G=R*[('B(%T at 9:NFO-H05NR0[XY9`7O[I(S\<%5'THA"RCQ*I@);'&7
MZ.(R;W=/2J16JO%*<VJI3B2?/13!'?NJ._PT-'0JY$XVD#B#<@[<L6Q8ZH'/
MB-$9"`YN_40$@3\X'\&>]/!IR1BY7$.R$^RY')^D##DS.W(5G'"HE`5KDFME
M+FCPH0D,%AB9QV#AAJ8SZ!/PT*P&!3PHN4%K=%". at SVAXU,=E)SK93RXZN&P
MQ`?O\]?/?Y`VMD8:A)5]2#:$0!R8%(U[29$.TYX;X68Z($5"`6(S)6)\;[G\
M4K]R$9`8R$!=FBD5K?KE21!$[(*N="`MT8'"7T&`A2YW@;1V.K+C/;JWL_>P
M25G6>QN@(3C,::!R$%!X'>'D&J(JQ!L8*(V97TRH!O9XK553Z=61'=90)G]F
M+)5N/EFL:)&QSF,?T6;\/B?NL43W5:/-[![%Y0GW<9(N:13^H2QSEV8:N^K'
MSQ0L#N3O4!J,AN;`""P8 at 8QA1?&37%5$V^[D#;-RD+W+*WG]-%3'5#RZT at H!
M[<BR+']VHG[SJHF0FE[8%P0 at 6?<M3VTX&5,:J)X6=G>UO at .BBAQ%,D.F2P^[
M?9QBAIE=2I7N?+GA$XNN8EUTK4AN`-A0OED8B8RPE3#[R!-&)9F6T5JJ0R[Q
MO?'M*J+90A.@)6HM%*9$R-+ at F3]45F>KIM!J'[>-=#E4AVO#5ORXK;84H$<)
M'*/8R^PT]I-E/\=6SJ[=/FY8:]*NTG'.J&10O]J2]2S1<8"ERBX6G$\QC?[J
MR9U0-?/R1H//8;Y04FKE at -GMXS:Z&RJNE+I(8C at Z9%0*\#*PII=-(0])S`Q'
M0H#M4TUBUCT_A9GZX+,%J4A6!'`]78`:H2&9ET#T at R/A+0N6\CL&-41+0KS\
MQ8+,4`;E))<>>NPRP<I<R`5#B;=H'E:ZUK*:XR_S>::X=RT=,1'>^29-5ID9
M2Y"14+"=PO@=:U^V[Z$U/5R(9W&XY%=3ZLRMIMDQ%LG3F[3[B85*<MA;)&K.
MW3>Q*Q"9Z,#A3 at Q.GT6JW3P5R871_X"@;7<I4_MJ>H\H7PE@=";\<X/.^_)=
M&L)+\YM>;KM;J:VGM50$5GG%21T7SY]O"W&9Q7MQMA#H4DW)TM7UH&ZUBE2&
M-TGJ]=]VTW?#@)?!6$;MP$H=7-]HGC.ZU'WQPMN-U@*T<GL%72\M4USLND\J
MNC07AFZ[J"070IET:V=1DEP`7%.?0U\]+_:(5J?-.VL^'9+:S<L("<FMN*3D
MG,9?NE]EM10S0)C=1#3O'/3+1NNH8HW/6?[$6-PM>8O!=1TL'U[+W3N?<LDD
MFR)+T]5\$2,3W''_,PN#1:Y_@%'2$*_X]#RI\BBMXTKMIU'^:$<X3!E/.8LJ
M/1"/Y]7ONSI):>(\HW4^#QO*SR^.O9U_U2%4)%PQ;V#1#($XN'9F+P_:2FC6
M*U7LE31757)@00T!A:VK(:"PY374%.U5-A3$H&(;`L]><QOP/L+?*+T->6\:
M5X%#2SVP$(=\F6*]>MP8][;VP+(<"A-1G</A#"G2C;$S'E"KPSSY'5"R&]?_
M(1]\KU6Y6P]\K0(>ZCGH/U7'0[Z"LF8Y#X<^K*J'7^IAQ;VA)K1.C0_](LF:
MI3X<^M^I^+FTM$;A#P.'JO\Y at 9!E0,0,L=5`Y/M(SJ(@1D>NVJ`3PUDBQ"[^
MT$KA`$QDP7``XK"Z(08863YT0^&JB(@U&5),Q"TQJJ:(@7*4%C&RH"N,8T=L
M'5AH1$:,(?7&,?;KUW^L[(@9[>]6'[%C#"Q"8F[?<=0BK>:%+DEB4)"520P4
MJD")`<+4*3$XZ'*E,X"@JI;.*YR0Q4L[CKV&Z91AW5+F`%A[17.,VA_NPB8N
MA4'5-Y&?#*#+G-AT>HUJ)SI/=Q4],8==1.T3$V<P)5#3"ZAA]FL1YF\B&G0N
MKVC:3078,+ODEZLE*Y;^FSTK(:Y#LB$LD]Y.XXVV1PSBUV"]COF=U.J=7BK)
M-*H?9IPNNBKL,L%Z9XCX95S at NWNW'%?ME@<36M8`SRKNV%/X6_::9I8]9<*R
MP#;BHI,1=DBVZSK#KG/D349M)]<)G(NBMN18*;MM-[/.$NI?L[A03;-MMS^H
MU:^RU&X:>$[];J6=-]FZ[VGZ[]D8]C4,^U:K*U;RD;Q[DXBA at _6IVS5==:Z#
MK*RI;#=O6RUCTVSB6Y9D;F1PKE),N$-R7;B#\5EV@`&NRP5D]F"N/`/OR*R_
MA`#ISYQOGR/<FB-)07 at W#`+2R;FN$1S at ZUSW-II<GOV70V`\GQT!X0#=)T>,
M'[1>3V]TARXNDU=T\9F<(^(*R_5\I#.K=[M*^U9W>DP;^R#':4KTVK*Z5"WH
ME=S;MY)<*)W+4&60,]MUXU*W<%G^KDMM\;^A8H0I>]XEYONUU!XXS&BFGK6Z
M-`S*9<A_R8['[A+#8R=-'X?J-.=DA>)@7R:/6F;>CGCSC7>[2]ZD2:P[]4E4
MA!AWR3G57@;6$M$/DU!6C?W2'&'<2""TC6-%6\/4\=`(B\>"K6GXJ*\NG?:/
M0'%L`V1!=LAN0,-A-H7]BN)6Q5>7NDD*@MM#B]L`9`09H"):3QBE"9X_=Z10
M**AK0\5%#*9;`SD-\;V#IA#;IV+N'876F$;J4R[U>C>Y!^(3L:8(I:U\M60'
M5'DM>]<UM%@J'0FF45=-0B'T'@9JJ$X3F(<I>TNUSTHK$G(VIM=?5#KRLIWJ
MF<<E2.!I'Z9K>SG!$U5C$F"",2CN)LZB)`ZJ at 7L6VNV`5%W_69-&?T->;A?O
M5#8L_351Z:AO_8Q0$A4GU3OMW:\M$9$I!2E]Z-B;Y$`;HDO]$-, at 4!@-5R9C
M$E(1<?C]0]J,I*$BOF at R`V4=(#M4YTEPBV+[RD026>579E,CV/-IB-"A9P at -
M+=%]&1U-<_'`ZYWZ3$1YY"MU<+W9#+TMCT04, at +J0^=W>2A`'YK?2^5`,27&
M#0WERL]RDSG+5/R%E?K5;WY7I/T&P6QAW*0M$7,-7)*&?_!S>&2X\J2A(\`^
M,?X:K at FJIKJ`%MK+AX<)X[B3SL;Z:!P>.0'-BTD*Q14)LT`K`?\=[)B!KR%0
M+K672ZMT%-A%^6O+,Q-834>!S1)0WF>:KLY21GL7#>GZ8++L.@?^/ZU';ZCX
M5/LW*]!O;M]NR=D'?9;>24(5%%26'EBU$^"U$UBU$W2T at _TNOB.9[B5:M'@J
MPV]N3+>D8>Q5EW7-&(5<K/_2?:^'LP;F0NSU0*:YGUAD.?)\8A$:Q[/B>*C[
M=UF07=.OO$ZBS[):>GN'A?-H\5%UJYWCQ4?IPW!;GJQ[C:1-E/$?R8FG,:;K
M,ENBR^ODR<IXYV9-0V#<R)>@J1`W[NM at FY?+;](0(JRF/M?K@;M>XIPMZ",P
MF%^/D3H at +N>VP at 6#X)I+`XVRM62W9#:HH`N%V#X\/G?>F^ML(*D'9BU6]"FN
M/Y+*WJ3)4KR/GX$?O*;9%_4=3$=GU[4Z<9B_7H9YKC5JB>HT:Y"@"R19=DM%
M[`^S0!(5$1#"G.O%,"].0BBG6CQ-2B53'4!/D"&9 at 60J1B+C-;HR%0.4\U\?
MGAGT4U&=:EX4:6X\W+1$5ZQ-;E<LBLX>D]"GL::@U.W at Q"MWL0VPTP,5<W7G
MA!1SL/63MY'\#9(BB2"Y3CIA[!OUW!(=*`N:F1>KICFOXKJ*/RAO'$@?XY4D
M!,(E3?^_O6MMKAIGTI_#K_#P8=_`28#`"\S`SM0DX3+LYD(17F9KM[8HYU at Y
M\>!CG[%]`KQ3\]]7%U\D65(_,E.U55L[%TC4ZL>ZMB[=ZOY4,I<[5YU*QTSC
M!Q!O[!I%`SR=*5?'YZ5'X65G`!"/F(B&Q%=SEKEJJ)$!,.&8\?Q2A9%T>3^>
MY"";[05+,_=SSQ>=#QO`A9H:+;S'W:_ at K`STNCRJZOR*1SL/T'JA0#DZ%>P(
MH9,JG9TZ4DDHI6?CDC]K/*K+20[D2EY^/`"H9X at IH_%,P57$H`.520',5P^.
M$J)PW=>]BDQ)A8OE at 3F,[E*IMCQFY;B)<95+RX5753*)]V*CT/-B=]DH%STW
MJP]69&N#0F_-O3K]!K9B$2:`Z1>^Q+/,C=-3:2D2P%G!.-H73UCMCMFE9P!5
M&>ZZ70#[AY4?804CO"Q_W[(MRPPD\^BC94`NA][6[,8LEW'/U%/)S=%P9K$W
M;-HN:9J'&MGJ/:1S:"L2H#?G&:6_;G&X/]T6KN?8DSR0QT5U%^MW%&!D('UO
M&L=`C_N-:1;@W/*^>BO\:K3Z2<HXNF at 9@+.=M%O85$7::KLVXWQGY*!5/7Q0
M5)]%"5S;XH%(;HA>R:QB4Z9#:8N[D8':J\N\OGLKG4JUF+DL:0W5+TD4\ZN:
M_>Z2.CT-N(Y05KRGE7SC66RGP2?L#-1L5S;C`<!)CE`I^U\O-E7-CJ_S(K.B
MB;HS^`IIY'Y15QO3JMLBPD9Z81LI#`,TE2(-C4&+J454&!["<`KT'H':3Z$A
M,J/-J&(?_='65`!BM%%5!&;8M at H&`DVLH#$#65I%5!$VN(J(X#';[@KZ!F!^
M!5IRQEIA133K+&,L*/).I$T6[-,)-,W"RPA8:(%&O+BA%M)#<?9:J#DU;K8%
MNIZ!K;>PB4D9<8&UI&VYL,`\L$D7[,DCTK(+1(TP\`(1,3LO$`PQ]X*7%=CJ
M*RX>(&'\!05:0VW`T.!7,:9@("9L$8;@@89A$%0X+A>``)F)P9$L@]9BR,(=
M-!J#BQ%A.P9C1IB0P9BS+,D6D4<&VJ`L#H^V*\,$"&Q>AL%!5F9Q):.-S>+P
M:)NS1:3SQBC3LSG0H`4:YJYTEB$:]"9MCCU:Q(8?,4N+ at J.MTQ817@QQ(S78
M9VN4K1H65C3&9`W:ZJ.6:TA#@@9L(!1MQQ;C2S7*G`UWJ!IKU08&=8XT;HL)
MG(O9N&'EC#%UBYB+L19O:'?]M89OD+#&[=^@61%A!@?.,M0:;H'6ES:*`X%@
MVS@`+\I$#BT?:BF'XH$&<U!/X'9ST%U$O/D<!#O'B@[>(@2-Z:#B`39UT,4!
M:EJ']"MH80<YOD<,[4`@V-X.PL/,[D#W_O'6=R!PE!$>B#G'%@\+ZT"9Y"WP
M@`G1EGFQ_C:B#/06Z!B%[?0B^@HTUXOPQ!%KM8=J<B*-]V)+#-OP1947-N6+
M*RQIT1=52,JP+[8IY]CWS?A"M)D?X at N;MO;#3@&0T1]ZI(!M_S`Y!9L`QI4.
MM02,T(Z%#0(CU'9ANT#TL!AI'HC>X^%6 at M"N;[:Q(#(_$)M!T$ADIND@', at E
MUH(0"OXSVY`0/.1%VA."A^1XLT),I0A;%T+[D6 at C0[B(H*TATIJ4R2&*`5@>
M at OO9.0:(B""998>X('W"SC5'A%$1J\3$ZZ13[OM7-<MR7LO7ND]W:0)HT`+.
MHH4,&//J(!;)9V at ILQT6Q9A3/YLZJ$$@I\0:@#"K9YGU-"W3H[0PMT@&)62,
MFC<OFV6Z8?_.OEK>EH=TVD%Q3/<0[FIC>HD$BNPL$B^RST@\J.L6I,MLI`?]
M;A%="IO!(?3@(<#-FV;9F_*JV#+#GE:$<]4(WM$K/`\?I4V^G,9BLFD^#!'+
MX73+LYEE'Y))/G$):@?KF!"]->#+M./K0[*_X;8-DX%=/V9L77W,R[:NM.'D
MH/J*H+*F-W8LVS[97X2AEN=VYQD44LX#HR<\@-%!1+JYQL=2,*8P/:0@=G1D
M!:M%#[!PV\X99S1><+ at ML.8A1YUO.S"-[-(QJY at NWN`2$YXN$>C/P.<HK^V!
MKWJ=DJ^KUO8M+]/"<_F#JY`?\F:;%N%=A)W/'K`HQEEE\W<`/8':Y0;J30\J
MI/HD!MX*%!32&/XM+Y^3YS>LKO.,6=-?BC.#%HR/TN?\4.5+]HH//5W+ZZ0'
M5NO7Z9I9UU0*92#XF<M,"=]3UC1&F#4!8!%]*->,=X`=HHL#C.D^3G%,-V+'
M=IQC>HCS+,U_2]]7%TM6LK,JTR^%7.2P,X*V^C4O,Q&PLEK+N!UZ4TR(_LYM
MJ]6J8._KM&SR]E7>7+_+C9(YZ12<"G1WL:ES\X)N2J603O+C:GV9FN/?)%$0
MQ]NZL4*!Z01?CZD\1T6Z_'24ULVT&@,I,-2'/). at 9A,BO3.)F<H+%"QJ1A.8
MT,0.8T3.[Q`8-,U#`-!LIP#B)SVM[HR>^Q3</!&`H$9)`@00$P@($BT7:`Q0
M/!#S)DY*!)9[OI]7A7]=5)_-26B0J-?EKUQWJ\/UX"O@'?=@M7>QK/--:]5)
M)X6C`>9E?IIN?K&M74R2KQ"7+%.;I,8*ACRD^S_^*2^<TF-,!Y;Z:0M.B,'J
MRYQ"S6E'IY4M8%-]!4JEK!(<45`^QPO"1LL1X71,#L27+)>U([1<EYIX at Q4R
M%UN?F at 3&X)2K2TP"P2"G3"N"J>F#X%JLQ4>#$OJHAW\%\1<LK4MIZ&:6>TPG
M6*MRY>+DR5[&;>EBY6?XDN:]3IOI)[O$$--);IWK9%H2G$/':2F>UTQ&09<>
MZE.>Y?A:&`J]JNJU)<(,6 at ADM-\Y+\]8TQHF64YZ`MSFH&(>T3-%27MB*<.%
M/ATR$97]X>#7P!(0+ at JT$H#;0&Q!()LF>ET(WIO.6AX6A%8=624(A02Y6`3C
M.Y)K!M'&P:6#4&0%5Q#BN^A"`H5KI]>3$`RVK-`(X=4E>$^,+3+!8R"QUA"\
M_B6'G*7`RD,CX`L0 at 35O'0K<+(JXF'55N.2S1 at JOKVM6I\)X[`4KTJ^3"AI4
M/]"R9JP45Q2OS=?2.@'@[@ZXIF\;%QG`.DXWAA0UD#IB8-NR%*/;V;[%1YN6
MA-3R0I?RMC)[2)2E3_961=A:NA:],3WQGW\F$7U%4B!_N[R>,/"T)!PH70W2
MTS0OC5XW28D_T+:'7R<$V]9ZS"X:I_'O7I?2'E:LGV:#CNGA!N*S7%[%&64U
M*.%M\,M"/HF7-G<?\L:R-G=G\+==&,U)#YP*FU_S]MKH!@FB4I/P/?@F7W[:
M;EZSM:6UZ9-#\N>(I<NJG,AGE1PZK+D85R3CI20[]#DZ`5D58,%++B^1\C>(
MAXIA#"1*&F.0J%`.+^RQLIFZS$5$=#"`-22IP^<3K\`.LP7D-AWT'1;?8:,E
M4(I3O>`5YL&A`,ETL at TQT4YN-V=*>,(F;):@IRS-*'E/JT`0L4_=NE/2GSAA
MD8M`^%X"7`M\&_#E=6I:OLB!=]U[!_8L7=7[ZGW>%I;9S9#L6[E^VZXWUFL+
MP3<D!Y9*Y]N*P>OFQ.NRW^[F36E55B6&3'7.M^W4:(8G^AOH1CZ=L#ZD$OU,
M:Z%S_5`5V[4YA;7TP!>MF2\_*-*"9C8V$\$CB9:E5,]S7A)\\@'!=F,.4X,2
M/(&TU<91W"$Y9!-Y6!13P:@3".:)T=28'MY4=N/$-ID;!A!BP!>>H(2O6GJ>
MAMB!Z4IZRL5G+26JPY.7X at S,X?!GPU.9V`U`,YKX?F!BDP9D_OE-?C(\S4EV
M:+:3>UIZTE/LR-P',,(B8`$-7D02)%(M?_^N6YY4&W%2L5007:)/AE4;>U,^
M,H1*3'R+8/5^,MFY>]]W?+]H:Y:N\W)E]9C8U)DT_XW"6S[LIP@>"/^6R+XJ
M[86N2@\I?2=L7:*_R#:++&R(1=Y9BPS_V*SJ-#-:RJ8%M*!.!'4S;0%X6RIM
MVNFE>)_JKW'OW<&R\-()"/-142T_F</$(H8NBVSEBFIVG at C$,1IYD\D3Q`XA
M'+UBHE`Q2?XBE%7&G`70"+[/RRRNC^N$(//*Q[RBRMUI!Z7>*"\*\XE&\=%%
M)NQ01%ZA.SJ^%N]SW5 at CG2P9EP]<-%@^66P:4:2\>5]ME]>6U^L)D40YVM9-
MZRM*3R113O@$2"]-7\T3(HGR3CP$]Q2EHY$8Y^6OJ>GJSB*1"!?7.2LR&1?`
MT=4FG1XWHMRV9WICX!@9R*%SQ6MP?G7EJ:-&I2VKI-2R!^(`964(B>:.0]D0
M.AS=.NFD"715WK"ZD9$9E'7HV'B^'&&[Z!=Y6E0K$XM"\QX1KZO/;TIA(WS*
MRJVYX3-(WC4Q%X<))X!)(J^[HG8R8:B8#<V"/$F2^QK*(B&PO0G7([3+(57_
M^&:'4,/#>QYJ0T]N?<*M@>V`4`QH(T1=IH;V0Z"_*'I;A'GFH'='X0*!FR02
M`M at KD1C`EFF!V%5%[IQ`Q*@-%%1.=!\%0:';*0@,W55!8.CF"@+#]E at 0%++5
MPGHQ;L>%C;?HC1<TY&+V7Y@%8^PV;($5-'HW!KT_F;<I`][<Q._-R`N]B"U:
M<"6/V*GY74W(3ZZ-YV%#2=:AAY_B$U.^(=FK3N#`G5:_F=2])W at -?\1FYQ=6
M6':`0W*0[^*ZLBV7Q_2P#F/P<CW9]H6?KVC1\,[2]?3R/_S"0RR..9?(#M-?
MDQ3X_!G[XN$?*4%;IXNVJK].%+LR-?@"8\*UHKG.JI99S[:ZLO8$@OD#EYEN
M;D4)L+]+R^RLLIRV:>G^1KH2SJA.JJ8]96NCUL5'BT1=L]-3D90'X1E)?1V9
MF*0]3WA^DNS4-*7U#,!L!8-;AB8M609X[A(XX!1>T,;PH9E,FL"')C15`V1>
M`QC`]"90@%E.Z+!B)GL26'?%S<6D2;O$T(W]FU)M26S&-Z6^&:&BYZ:6G!B]
MU:6AQ;MW0<Y2I_=7D1Y<SH2W9-:T#F=BW7BVR`B8\1#<!.H]/]``1W9X"Q<Y
M7!JS&/W0#!=`0IM"!F9\7W418FT)91(#)KM^E"8"Q1'&MH.`(]@2<X&ZM(&G
M!.+/D9X9B/_^\`19T"(_>IZ at F/1TP7'064.7+3!Y`-;@'`+X\:E$O26,FE$$
M&#BQO"ZK=&^X9 at -;KG)#PL9P%^Y!&8GT`_Q3GJNPZS-2`@8)Z9H?NJ<#94SW
M'OYXCJ9,-U,^D1KB:BO'ODLG!#_I#MMGD4*Z'"W`I"=VI:2$B^+(ZH[,&05T
M86V,)T32?D!E]8RHD0B5QAUS;J"196D^YVMO648B9=$@,T[ZW`)".EY%>!,'
M'FO,#NE4L^2UQ6Z$L.T1*`.-0VDYS;*CK_(.O''Y![?S$"7+&^,F6]>.=$8!
M5+/\RBY=K<*3O6^^V*7P6VD_#"D^ZH00LYRO+N:>$&(6R\AV+;,9GFUL6@@C
M$U&F+,$WI@>$IAHPPJ6S*</&]'"3\[-_ZPM`:M,"-WZM'"GYVC[`=2`ZD4(Q
M;5A'@,X4/<1ZDE^9D<0U]IY&89Q-S"@U`L5L!\W0TBG6(WZX7#)CNZ4!C%1B
M^FW2]EIJ>9RQLCL:=?KC9^5"RI`A/L(D'J\KSPQ8(_A:$%P+Q!;[D5_2O!N2
MP2^(;`3Z4F3.6%^6#\UQ7B^+26`)3[98\).\I*%%IGFE?E75)SSWL+>FBF_D
MQSZI&(V:3#ZCYXE'U2(+A8#[^$+45JQC%4/!ZMP)O)X'66N%R_UC\YF#OLR.
M9!),O#?DG>$).*%1B>;L7\VYXTSH5+)(?)'U!0R2%*(D*M-#/_]#&D#<\%5K
MO10ZQD!%JB(#)KGWG!J5&JSB3ML-TI-`A(<!B(?`H*[937[CCJ,H*623#&&N
MW?&#AM`QX7WAA2^:8T=")M%;/DM8[?*\I%/)H at 1@1B+0LB*BY[BZ3()]`BL*
M;SB1RW^HL#(@C23R"_]#-JC>5'8>HIA;&=[:4]612*"P+[Q=13XN5EQBT*0C
M59U<"YFD\(7N=GW)ZO,K>2K.62,8LK&M?#E"=_>6JQCC<;6?[[,12F>.F>EG
M(^!L$.*BNJ*/AGE6N&=J1NYBNB=#AS(,EOZVQHBS9.1P%<>:(T=5R8Z^OLF^
MN"700)X6S at ED#)LIT+#!L7QV*<<4/(O(*MW%.N:MDQX^A.7EQME[;\K-\/[6
MZ5WR^-3B.SYUE7M0+;WX)5]=LZ:US#&']!#SR]?G;NZ1$&*_^,=;-_M(0":\
M=QUJJ'6HN^T5GGZGCN4FQ*#DN)".,(S0CH/"5".%.SUCE]O5237QN:92O:^B
MJC0[M:\ZNT1_F6LFLG3^Z$SEOTGR0XA<%U;4K^[3%UW,K]!CGG1R9=Y;B*:$
M!JHW(YV(>IU`,8M-K&.NNL at DE..FQ*91;Y.\&`V(L5+>:ZQH31:)0CA<\XYK
MG6VJ2!3`1?Y/=Y<(`M4&RFO#N;,->EI,P$!$`P*'5T44(9CC25H?0IG@`VH1
M"B"H':&_3BM)R`*@NA(PV!^L,H&Q0,T)C(<H4"*JBNA18#!:G8)%%X6U*C!8
MA'*%?+N"Z%B0)H-4+6 at XUID:%^AA"J%X68!-%M2_!/TS at 6H8"@/1QE`8$4H9
M"HK4S4#CD%#1+!"K\AA-#0D5H[!!P,)Z&P0!5-\@4)06!\$(*W,0A`B=#C#!
M4=4.8KXT7\,S$WV6HF?FM^+T/<!'OEGM,^<;,=J?^77X5B40_N49NJ!YX)$J
M(7#'.5\SA&X-8A1$"^Q<A.N)(+@(=1%40$!K!*,0RB,,!]<AH?6#54G($(0T
M2A%`E&()G!J`?@G"0=5,T&88T#:A$Q-6.D$%0W5/8.-C*BBL]6,U46@#SE1(
M`>"X7 at H`BU9/H?6GM52T`?5L9=4"\@GLU5F%V:-45P10I`8+FQUA11;2?;/T
M69/"N2=<A%HK`@_3;DTBTA@>=V<JN>AC+*7KHD+EN%5>81Y,\T5A8`HP"@73
M at Z&2!5*'`0\D<*T8*:EPY1@]6$@=6="G3EA5%OYRC,9L01:#4)P!?EX at _1GB
MIH52HR$8<=HT"!%3JB&^;$#=&E(J2,6&`"&:- at 2'4K at A[0/JW:2'5B')ZMT=
MFRR8Y,,D158"_*)EZ5H!<MK//R?[/SQZ_/W>P=.#9/'#HR=_ES_]_+,$]CZ:
M'0;C=MWO8]ZXAIA!!PRU5OY-&*%!'K;F/GY%06=?9+T6\,F)KAYT.B%KF83[
M3H1"D2$5IX_;QF%FYZ!4Q<?B;N%P:;KJU>`T,F&&,`9VX.TKXS`8OG^TF>#*
M!0PT%1BP<-ZX##3*[E.ZJK- at Q@.Z1J5K:[DVTJM(UZD+1BZBF[N"E(OT4)!7
M$:9[ZA7`H``M*B^6?/$V=2IB/G2L;NC>I5F^=>K>C`RT[688;Q6')_9LPMO7
MVVUS[;P"'*@@T`OSK?,$ZL7@"X"0?:J!WY3OQ-";XED9://;;AFV`/5[$#,'
MW;7\#*9BK^;E2K^@-$YI1 at ZJ#7G.]]4%YW+?=YITVOA9?7B*J-]+V7GH-Y;\
M0-R]QU8]<'ZE:9LT/;4S&UGHH;W,Z:<[/#1S$(B\`-LU\]Q'CT3`'KUD=2H]
MBRA=SFG:?+(K[<P$C/7N'&\ZJIM2:=DP7`CH:ZHN&XP,&-Z9VZID'IC,?L+*
ME6,T3K- at F#PO4;X1C136VZ+P7)L)$F0N:@7H-65 at .!*\YHXS+XK7=9ZY87HJ
M/;;$N7=3%7Q0:K9+VG6M1B;GYILAM^F]SYV!A'M7M?Y!WQ.1%Q'-JR+?;%CV
M2U7G_^2'I-%/AN$GU<I#EN_JVKTKG8%T$T3ZP.HV7Z;0Z/HUSWP;/4FB1]8O
M+%]=M[Z]HJ!1[SWUO8)N$-#M$L)/G8K-=>K4FPE"P"$:7T],/Y32/5*7&AHE
M%=\R\JG"_K.JUL:'=8*OREG>"'^CYRZ,XJ.#2CQ]WJ2?R\-:W,%,MY<3XHSG
M](!M%XFJSM;BXM8Q2$:B'T?>U"K7-J^*M#&&JTWSQN(4^=3F6&SFDQT+HB<%
M^9??PNRYU[%I08RZFJ@$M72`]?SJJC$O6R?$((KT_-JFSDIHM"!&996AYZ^&
MSP>8[?G>,Q/3O6]E]YG"0:5:X:RJUY;_))-$`7C'P at H<"_(R.BV8LPR20K%'
M/_\AP29CPP+3QX=?J at T-:5_DZ(1@>1R70%HZ595<5V9IG\U=C[-,UC=EQJ*9
MY6W&%TLGI!*#+%]=+%^#+/TQ]VW:3.^$=2*$,CU-N\@$U'A.=A1H)(:'C/92
MXH27WJNEMS,06Q,KEEB?2G!]=7)1)\L;5GQQ;61$.LWZU<,*?/5]Q5LE:QR+
M\T@,M[ZR4IC&3-/2 at 5T"E[V'TKVV*9^UK8*5(_1,3KQ.F7IK$ZD!KI/<FE$R
M+7`_.&%H>@;/([:TS*31WJ,G#TR%G$;P?4_DF7 at 7[7 at AU\$.UZ0F;^"]H&IW
M?XN2J at O][L9U5#<RT`?U+KO8.-I/+ARH9K:(\AHO0QS`88=R at TK$57E=98+4
MW<ILE<Q!Q71*KNW<E!IPFB=CVSC"+G;)9(2T?JWP+D>4[,^;$W;5GE;;QHZ[
M,Z3[@]2]$P=4%^]((-0+,I"'N(<Y-+>F4AB8Q(`D&3+:BH:!0$Q0<6QU;$H-
M2DCT\46QN^AW[`C=&4!M[2QE&@0<I5-;8*KE;U*M+7![0D3#AMC!QBC:L"9`
M]&T+^NDHH':CG(%CVK<%:DJ.*^'07HS6Q6&*\&B5'&AI!6OF(O!@!1T8FBI:
M3X=9+,]0URU0V\IXK1T"'*N\PTS*9^KPL&>^WZK*PV*7S=#H02\`4,4>:,[R
M#?H]<*K@:CY,[$1K^W!87.D76=08W1\.':$"A)<*4A,(&\QB"D$P at A^J%P1?
M<D2I!Z%1'JTEA%!19>$"#ZDX3V<(@<>H#C%`6(.(CDI`D8CNC`%](O+6.*Q6
MQ%Z_4=I%(A`+I62D1A>J:PP:H,]0.0)/^6,UCS.]2V`*2`@<UT.&X2+5D204
MII4D899_`0:NHR2A2%4EB(!I+$DP7'%)0I'Z2V#X4&K,!=17,=I,I(40I2:"
M`^HV$2A:Q8F at 1+\!0S$C%)ZT3$7UGB0&J?Y$2A'6 at B((E#*4O(SRZD1)3J]J
M%(A&C6M(83!840H at XOK2!7XU%J\V!6#]VE.`V:]$!9@)72J&$%*I8 at B@9I7N
M)TS!"NZ"YNA9J?>7074KP>S5NA+7PU[E*_$L$M3!4ABD*A8(\TAI9($HHH1B
M%GY[%:N?C8*=JZ:-+#VHK5U@[]PBE;81F)#N%G\W!ZMPB2,=K<E=Q"QY884N
M\,P>TNN&$3#U+J#-BM/RHF`A92\P]T&=+R5_YZE^$_FO?"3[^-&#O8</DP7_
MX<G>T^_E$]F=^_>3'XU_DHQM:K;DW\UN)7]RWL5-E6?)Q;+.-ZV\Q+M*E^S9
MLXS/@;KZ>L1+>;)-/YSNWKFU^(-7(K]*1@<//&U'),JJ+8NJ81I-5'EG^#7Y
M,7D at 4OZ\M?A3M*G[J\+3C/J<0%2,=^^>:-_^;OKQ_AG_[NVS2C9KT at CZ=[=5
M$>Z>]-_>J5F[K<NN&/Q/21)?*MGG]IK/L,PJO_RB_+[&+%TS)*_S&Y:TU^)_
MP9CD;9-4G\N$E3=Y795",YWL7E5U4E;E?E'Q<U+^3Y8E-VF=B[N>1J'D9=+(
M1FCN["67VS:YXF.&5V+Y*6DK"2\KI(,*3#X(^"2^REG=X;37:9MPP57^3638
MEMF];L")FHGOZ15+$L[Q4H.4.2B&4\9_T3***[R;M- at RW>''R3\./[X^.3\Z
M/+EX<_;BY7\,`Y_/*U[<(M,S[S_D8__CQUR>4+JO[#_D7;*V/L69AR030'!U
M__3,S%,Q40).\_(;(*I3^[Z^2,V^KBY_XYL#T7EIPH>K^HSH,#ZU;L1W<]X+
M=;5.+EE>KA3&*JTO^39N7_AVDQ=G?0_QN;TJJLNT,!RG?%2?DLBWAU84;5X(
MH<E%9LUWG:G.P\?I\U#?[#_JV_B15D,EEM+/O'FFF9,QOUZ at _BO51F>1GKX"
MDUL*B,GL[B<W_\Y[^85&C&,^:]J$?=D4^3)OBZ^)Y,V>\R;GTC/-]I+/+%%^
M4T6_K%5K\Y^ZMI;MV?>6+/(>_VW+H3NEI.+B/7;)W#W#4;K?7ROR[IUDF98B
M/Y_*!9_)8L+Q/"7O\%R.-;YL"$0^/Y?Y)2_S5<VZ\H at YG<FBJ!+Q#4:UK9>L
M^<O'@#D$RKRP!)J_L]U]>D#UJ=5&JB]EE983N7!\?'YR\O+X_5[RH(=-W+#-
M];;-N#3E@,D?M_:E'.8#97]'_**M-B?2F&JGD_#[7*PG.T(^[KY-A>ZD8,K3
MA,)O^/K2"E6O$*"<8^/*<^^2K]#\NWRH)=_Y\K`RDSD6"UX^7J9D9\?UP>3N
MAG_F7W;OYG?N-8P/E4RX/9"5V>S_Q&LAN%65M#IU)+E@[6AS9D at 7E\OJ%U5M
M_KNHMUK2INOV<[7.^UI:&G[QA:/M:_!"#"G]%UZ-.]T6X\GCO8<_\"W&DX=/
MQ0]RBR&JH]:P>T*ILONW^W^[\^./39MQ\+;F<^W9LW)3-;*N5WDA=@*WNS7O
M_NUDT:U__(?;]WB5;HOZ=-F65<WV?TJSW[:-4(*R,EVS8UZQ74&7/9^+]3#-
M"YY9R)03Z0U'4'=/]A+Q][VEV#KOWKFCEG-O=FVHVFRJAH)-=?:^MN,0O=96
MJIKBD_L'ZD.>'/J4.U#8VNYEE]4U'YJB3$)"J79YEIAMI"2=;*#_$A3Y$T__
M[SNW%=[]^Q*&(R:[MQ4B7Z?,O%U6M:,16XZ&/9<C*-EA_.>^FEU32;$@A)ZH
MX0/UGZKE)(-6P3%C-^3[%NP&?%]*?QMZLK@:<=J*627:4.PG<[X2U-LRJ:X\
M3=JWW)_2(4DOC]5NY62ZI>$C9%LNAQ'RO.>1`E?ZSA-<_"=%TL:<T9`'>D,:
MWPQLIR;?7DR^K7&K,BP\9="E/-%7]'B/&/#3OA+%$;TEZJ8Z1_PD1_NP/PYT
M&O]?2J<G#Q[O'3P0TNG)4_&#E$Z=S%G\J(F7/_]?Q/SOB!C530=\[7 at JNNGI
M#^('V4U_]"/O.SG`V7K3?N5M,PY!4A;APL@<X1T^(H]B!-)?(I%ZD31+)GDE
MC]ELWR)Z2,$"M#L at 6V*$RU\K7:2H4']T"^/_F>'8-PO6`%E^=97L\T'\Z"!]
M]/A at R5)VD!S^OA6W&?>M3>6]ZUO[^_M)>M]+WWE_O4W^C<^`@Z?)P:-G!T^>
M/7J4/'P at A/>#'QX\N+58+))+D/WQL[]__^SQ`YU=B)F_/]I[DBSXGTK`;+:7
M_"CYC%=&;H/%+)0[8_6KD(?.$\.N;&J9QS[I#,SC665,FFRJ%>JN at F76QY*[
MRB':9545&J^ZITUVN[]E)E&UQP=[WR>+QP_WON_<X'%6<[^^<F_J[R1_))U`
M7D[)S_DQ03U,Z4_FS_7F<EW+C8WC.=H/M>+B3M5]EQ^#FC;1C@?)OZAAMY<X
M2&*J.E#.MNL90'N)D%=J5Y3LM%\W+&-7*MLZW?RKEG\O<0V'GYRIC>H5ON?@
M`^[)]WL'!_W5:]]Q*ZM+'1VA"*(+DDU=M?(:XIFXG>W:5\9X,0YU'<5UWNNO
MK+MN&`2"H)A#Y:YS(/!,[H$ZR:Z2!4-?5[,^B-Q at G7G:O>5FXQ0<>H8YDL/+
M[Q$=CW]XRJ7&0OTEN_+N_6Z+=C+LS\P["+$=:W[?_ZFQ1)4V+]1DZ*\JY";T
,SUO_`RPH=-TQJ@$`
`
end


More information about the aquaria mailing list