From owner-freebsd-hackers Thu Mar 23 02:26:50 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id CAA07407 for hackers-outgoing; Thu, 23 Mar 1995 02:26:50 -0800 Received: from expo.x.org (expo.x.org [198.112.45.11]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id CAA07400 for ; Thu, 23 Mar 1995 02:26:46 -0800 Received: from fedora.x.org by expo.x.org id AA19246; Thu, 23 Mar 95 05:26:03 -0500 Received: by fedora.x.org id AA25927; Thu, 23 Mar 1995 05:26:02 -0500 Message-Id: <9503231026.AA25927@fedora.x.org> To: hackers@freefall.cdrom.com Subject: Re: fast string inline routines (asm) In-Reply-To: Your message of Thu, 23 Mar 1995 09:35:45 +0100. <199503230835.JAA14369@gilberto.physik.rwth-aachen.de> Organization: X Consortium Date: Thu, 23 Mar 1995 05:26:02 EST From: "Kaleb S. KEITHLEY" Sender: hackers-owner@FreeBSD.org Precedence: bulk > > > > As Christoph P. Kukulies wrote: > > > > > > In the djgpp list a discussion came up recently about inlining (asm) > > > fast memcpy/memmove/strcpy and such stuff and someone pointed out that > > > Linux had these - I cite from Mat Hostetter: > > > > Do you mean those? They are not inlined, but regular lib functions. > > > > Can you compare them against the Linux versions? > > Sorry, I don't have a Linux system in reach (for the moment, though I > have two CDs lying here but Linux installation is a horror to me :-) > The mainline of that discussion was asm inlining and I assume that > the functions in question are defines as inline asm code in the header > file (string.h). Looks like you have to a) explicitly include to get it, and b) install kernel source, as /usr/include/asm is just a symlink into the kernel source tree. The files are not GnuPoLluted, but they are copyrighted by Torvalds, as you will see. These are all the files that are in 1.1.59, from some Slackware distribution. begin 664 linux-asm.tar.gz M'XL("$I+<2\``VQI;G5X+6%S;2YT87(`[#O]5]O&LOW5_!5;)VDL(AM+!D-, MR#T.)@TMA%R@KZ_OY1X=65J#@BSY:F4,[4W_]C'YR8VUC?8VML_UX=IL$%YHW#2>!EZ'#<,0A[-XQA,W#>)(L(2G\R0"(PLF M&AMB6;B">2%W$\`QYI,XX?0T`V1NY+.O]R177K4PF)8&T^!G MR45'`HHTF7LILE_8/!+!100LA'%TP=S_A?7UKUWV>3?3VG`T.F6M M]58)'O*#'9=1SX0+&$^66M@??C MT(PU77?-9MKC4: M@^9>TF0MB<(PFWM3N$):#7J(SZ+$,';7&DI]>K+/JR@F73X"S0KKY+E@$U<`L_C4BWW.Y')+ M$0LL:&G']>)(N7@,JWN@+.A&)@WS(:)X&T1^&]>W$H=>EHH=Y<602EA[OC,) M$F#H9Y[$Q%6.&W.Y<$7P,\^82[A`SL#CM+Z6#QJ:F.YNQG$+F?%"'[ZG\77( MGK8M\]DS[M[0Z!G?9<)S10A7GSBS)O!7S$$.3S=QE!]HL!9=&1DH>#<0EKH8 MBXFZ(""\]6DZ8_9DS1HT&C=Q0D]]_=0>J$G@_V:;1DF:XZ:THOB[['^31#N31/OT;='WW[0 MS.F1I+IPHY^P:8-B7)#6D):*P,IFR`$38:,-=1'%\QB%@,B0;" M&!D:&]^FG`9LP'?>5)0RP4BZ>/4I4E:AK*<'81N>H%X;-'S`Y$(A7N4U7O[: M6I\A`T@/+1.B#FE^Q5H0\=KR"4(HP>.S%XHQ'"\YUD/QSNS%"_CS>8UX`];> MQY*I6YZ:`.XFWB7(8NH&$01_-IEC>`Z'80`/-^8+)Y&>8#ST"?*'X_T45S&\]"'2,"]*^9>`*.`ZM?N#T=2J;4.ID@Z$%)B!BD@ M(\V,8&D`.3\HA^DH\"M=YOC':^+W"8]\8&)CO90"(F%_=<[Z]^?Q/CX/(3[_ MH>7???6?U>_VL_K/[F]C_;?9L_ZN__Z,3['^&QT<#7^JE'_Z;J7Z:^T;6`'V M2@6@JI9&:%I9U@39CT!W[K)9PMM>/)W-4_!=S3".9\*!`LP1W(LCR`H`QYRK MFJF:,U*DAHH&D5/.2`B*GJ_CAN`9F6UV;UYV/T;6X&/J(YU+*3$NK`%OYG< M,G<,S")P&`N!%2"PZA$674'^`,5P'(6W%,J@X+ME8NI"?"-V!&M!5+78%"1A M=!@[DV%BEL1C%PID$"`DWA)]?#6?L13N>X4W(::F M<:QB!93?%(\NXR15<\-\E/3#/Q="/W=%'"'^)@NFLY!/>9020A,FB><7EY"+ M012$"2DN4C`$]<%B`I642;C@*8A#EK:@__[_+]M M]?N]\OZ?9?7^]O]_Q@?,\NFA/V!D!^8ULSK;M*FW8<&_3=;M#NR7@]XF0_;9 MP"<'@R/CGYRSHY.?B1$ M^R?OST]/CHX.3K-)0!0.!(UQ`[^<&7B+4/#ZI\J3Z`#U_N3\X$R&'!)+FKB1 MF/!$#%2L06^:)G$8\H19@TS@K-ONF9+FY8:IR5"4\*S;MMZ6@>T<\&9[VZ0J MH09XO]L>O=63MQGP#K'I(L"-(0@J"6<[6`$*"H`8MB[BK:%`*M MZ$T,2A&8'7A5'^^[PG-],#`+"_282?M8`A"+-"%QV:8J#^;A8L.+YU$JB4'K MG%W>"HA2JKXL8]EJ;]-(8O_9RV@U&"` MP[)WX`IF-!AH-/+=).!E5(SFA7@'S--&W%*Z`0J#9)D"]R;[('R%;>?`R%9>9>\-RT.`RE)),AS$]\-W7E/CEJ&/(? M`8F#Y`YAQ6H\J#/$4`%&.6E8RBOSQDXLA)!8I%(DF%.$\0)I[A_3+KRC!>ZP M*9_&R2UD.K1^XI3+5PZ98K5HR:J6U)$"QSR/*0.ANAZ5&\87I-4ELM;B,H"L M:PKY#2Q;U!^D`<`(>D#,LKPTN.:&S@S94`+"^-F,]CU0!3F#SI8U&]H]UNET MV-#JP_\M^7L'[F_+GUT,JZT/VLXRBJ02&?L/HW'X5__._WS\41^VU:@/W0*5 M>8)Q)$*R#V@:A`(EPH[/WNB?1_036$,+R-1C/$B`8*5U`MPN"O$ERE%397V9 M)#^J_WCC(U/_]$7-^#L!6MK=U0Q'A@F;HQELM5!6SE9!U>?@\L/H=I4 MV<$2;>F%+K+U2YX#%I8#(^*$^[!*U5L(?.&6^`MR%>#J0IHP]OTVQ8>"+T$_ M-@,W'4#IDZW-\Z(#;CFHG2#$N*G%A'5@+!VLW"1%?S-> M@DB!B^A(=)1C$?4IG'\?"_9V M91*6!0>!XZ6?.?$ MQ\.S[[.)AS0QN+F0MW6>!!*ZJH<\&1UDD&\0P3*?64GV:R6DY\H":6<,&FQ=U'HF= M-ZI1]X%&91>,2H+=;U1VO5&-[(<;E5TPJM'FPXW*+AC5J/\0H[++1C7:^3*C MLNN-:C3\$J.RBT8U&C[`J.QZHQKMWV=4=KU1C;0U/LBH''Q9[719X8/.52%! MAZ=CX"IO)W%8%1QV=9!=&;19'=2K#.I7!VV6!^UWJX.V*H-JINM7!NU4!VU7 M!NT7Y;C__KPL1J3$6SX M@<"_S&5BQKU@$GB%G3IJ8H-,TZOLY4MXQY^ZR_U\?*D#-R+5_C-A+;IZM=?# MK7:])29OFJR8&^$>/.V@E0=BBX4<;.<'?UY;19EBZ;>3!G72YD/(6])G+$'* M1&8Q!HN9YRC;#RI>OH5X"5_Q['FVD\I9EXI?J-8VH'[#R@(OX><&%G"NYT&D MZ.C74=2D%4<>O<="\PF@QOI9-D:^?8LW7785Q8N(4A)Z,<>&$VKVNG3!P*XX MGV&UX5WA;DN0=MB@355KN]UFAU!I)+YL#/-C!8&8J7Y4KP:A7(%*3G=%`)B& M)DN#6H;V_1:704@-/%#3S&=J\TIIR?]:@:TT--DIB$*?3+Y8GUVMQWS^4J?+ MKM9>::#4(+:4T#ILN>/XFANJG^4+EPQV:>*$B*F&$ZJN$IKG;J:(DO^PXC)2 M.5T=;VJ\1/9-S\@,=0DCV3P#-DESJ.=")%#;O_+-7[8QH%*73M9W"/](XR@> M,2=K#:[S=?KBDD=LP6>SPBW+KBUYN`A3E)PG.HB:.TDC')9D87JO(K MO05[B\BPGJ;7O&,.L](>+O<[=]F:UA#ROEI#^%09GE@$J7[KUQ;))7,'[-4>1ART-DQC,LG` M"B"I3$S6RM;ZJU<6-C3F=W<88,OG04L$+9ALQW@XEL9GQM#9U-""J*QZ5/82 ME;U$505_^27@]?JF/L+6U+TAWX":1OH['4@H+'LGN[/5Z6R33Y>]#"NMX:=X M+E\I\$C,U0F$F9NX4YZ]*+N&$$P^AM[R#=@DB:>`$JB?N^&`-1$DFD_'0%SN MW1EY3MS8PPU"Z0?=B-"KL"[?9%&)T_PZ\[78(!+)=QZ0&N##6J-M5ZR6B,.W M@TV)9/^&_W_YI&*X!;91TH]U^D-W+RF^E MU5IUEELR-T)QM_'7H='4?I;+H+H*%-Z[5H+]@-6@T-RU(NK09.3IQ?$MEV^< M0=>!/^=2JUPBS.]5GBIVQ'7;*71_?U,AS`I3?%<%58Y!( M@S#$7>M9$E^0ZUW@#85K'H'5^8%'[5!(U#Q,939Q.&&>&X;%PSXZP[ITA0SI MF&N8C':8;S5.B^!/8'RR"`2GQ_*1;+):+CYMZ"&?I/0"4I&NWQWH981LU2^C M.NM':[Y0QJ_$O"IK+=P.8H=Z(O9R2=\_[K="C'F-!AO<;Q!X4@%,0+9UR/XQ M8!I(A52+3DDL$G<&/@P3*.JP6IYYH,%D*XA$+K<](B6(QBU%.9JM?/1BKW"? MO7K%=J@]7K=JYQB4$`-EXLCDKC96>0`-G2K8SQ5/0/74I^(-"CW6J=XN75'P MJ:0-F[BN`X\?CHS=!NVQ"IY<:[/-)>\*,7FQ2<)7UI$*"]B"P%,SLAM<=9(L M6["S3I1';Q;#5I9'15CSN;O_R^IN;VXM^W^W<1=B>[O?_;O_Z\_X%/J?8*&7 MVI_H3OY,V`2=-)9;>&A!=7!.*+W`1D\,[GCO9J>/#5%XK@%/(.(S.L09C3>" M:`'_PPV,2?BUP*^0J692U@0(="W7D,X@6%.7;@+R(\31`J2(12`:07@$(1*$ M281&AS(L#]M@0A%33TESYI+':B(&C3K#+%]XE.C%B<;.#.F%[TYG^3(X$X/J M2IIR['F5Y^+B\60N9)?;0!Z,^S2GSMBI;(?E/N5E,:2F!D2@R`_EJI?AS56G M7UV,15<0-/!<*$4U@-#]L^IL'42O!0UVX2J"9>'*5FND7RJ*^/"F0HG['' M6,13#I5YHGNWM=6XD3SK^IV+'R:3V=BH((/&M!S(?>G(LAZ\9@-UO44_P3G4Z%$G9T;+LXC9#X: M1W1V$3CR+NETGU+SB9*7G'$\`X?;LP_X"R#S;A M$`QD.Q2X?G?"5;N>9*![L]-E+947(3X72U'97:TZ*AH-ZJS/6A5QI5(W(:S+ M-S\YW_UP_.'P_;?+):M:#4]^?`\C6/U923S19TUD5_SR=],HM1X^"!?J@#US M0_,I,D,X9(NBHC7?`'EXDN$N8/ZE--7N%U]_+I%>(CQ_6>JA/'?#*Z43L&*I M%C"$)-:'/'/B./GAW&H)\\9@'TM'L]21!,#RY(E8!OD;>9(A?^R3K%BF,[^4 M<-N`6UBFL!%_G;09B;O)G@C69,^:3%BLV37QA\V:5K.$3F*[DG:BZ: M!N1,4+YA?SO1BL=2#1`LCGP)T^\"H9:!,%*!,[L-]!0TG61HAJ,]])4 M-IZ[U;1/\0+0=13LFH6U-KNUE$)G$%'0A. MA$U1GYM'B;>YA\)PKNEW)EMF/GD20(&G:QX@5HF7$(%TB[BJJ(('HW)FOX&N MHJ)64EG&_1`Z5Z,NBOBLSAQHO4.NL,(*"D?8S=+!3;E%`2A_J76IH'X/H@&2 M-(/O`!,@L(6/:\A1_C#T'IZ85LCRPI,'5.0H\`IZC%'B#-;+:M8PC5K)&QW1 M>3P.<:X_ET5:%V.S.6[*85W#D/<6:'2E>R$:RYKT)PH(JSQ#W9$@Q+R^ M%9IF@%M,:](XQH;ZL=`_0HU//:1?B^P7/E;M^UG[,6ZAJ,YE3/\<9SP/0LC7 M''T:RIFU#-RZNQ(F'CW3#=VN[KG&MD=0@8]EJ-+C9!Y1&@M9;"HW2R*.&1XU M!H)+5#CN/,C&""6?3+B7"LH*`YD3912J(*G-BK:9P.6:EJ^8O=4WV#\`ID&!=.RU$)-AZK&#Y:/B$V-IUKA=\#NG!A2>>C#([BB@ MM0*C@.RQ6,5QJY@M/RNR"T\?@>$,RY)E?:O(].*16%ZLUN[B#G87OY_9146[ MBUI&'TV[B[NTN[A3NXO'T.ZB1KN+>NV&C\1RN%J[X1WLAK^?V;"BW;"6T4?3 M;GB7=L,[M1L^AG;#&NV&>>W*:N>._9\@^?=??/Z3;??M;G'_S^I:_]?>T2ZW MC1M_.T_!D\^UZ-".2$EVZL0WXR:^:Z:)TUK.S+5W-QJ)HFQ=:$HEZ;/UZH#BA%?'KF%%_`H1-<&MDP@Q4L1!)HX,OL M-KMV=JXR,V5<2HE**2,C)78@^E(Y;3@KIXTFY;3,DC:RU!?:VE#2*$A0`^GQ ME[.+\[/W_;<]UVEX>G4L&\-A[FEXR,0HLU?XJ7=VL;@Z03I'*=M2,A?)%(YJ M-#S"#S+('G36AX^]RQ<79[W+CQ?THAD6P4*6!RWC"F'0Y3%VYVK9E%S[0"7, MCQ#ON=X.2O9.V6K_\NSBXM-?+YUQ/+@ZX`=-GR?)*.,U[6:TN$:_'U#Q0DEI M]$9K_ZD#S#F(J56H/LI#4$K2GM0C5ZA!@@MTU+;".68:Q8-Y5/@4[&>#WWA9 M!.2>>W:"7Q6/U(8NV'@$>DMGJK?HL(1V*Q""PB,UJ&)?1ZI.4!E'*1@/Q`@V M)QTX5+&A^!E#9:03(*'GD,,C;2C(Y2F^)Q=I"Y+R@!2@3.1NZ"XJBF:P*>&F M9--,M2@FO\V4FP9.4%?\AN$TE.1M8A@SY`_$'7B>/,TF8[[O08TUJL)9JY-T MA!W./NV"7C>!7ZDSO4N0H@0&EU=*^P#BB-SU,]'BPRU@(`CVA M4QN$?Z):)#5FL)-@H:51.&NA)!K*0 MH-)CPL9B0PEHZC38#JFAGQ9!#P(3`+>#.0'8$L(A!$9$Q(B/=)9!1P]D(03G M`OO8:[#;9I]O8"N/1Q?$8.I`XZ.,;=!A=($V@+$DUA/'TKWQP#E-KZZO];X_ M??.7_O?O+GJ737`P<0FE9,@DZCSPO9U!7&`JS@/H33TA*%*FZ1"Z M/QR$UU$_\+5>&SHR76]!/3%0R]1I&>N%V=O/IZ_+:-_NC;T M3RO0-UM003U]`O1/6RMBLXATG\[_]'ZMK,.D&BO[GZ8DG[L&]C'A76=G5P/\ MB`XO`(;%]?GIA[,`8I`Z2;J]W9?S+X:D=$M9,6=1COW:W@9#()'O^]/>9;\B M,TSP_5*)/YV^K2HP'(R*_%M%B4_OWF.99G@]F7E)Z@EBLRT!7[?3*ERM]Y7E M>PE:6R83P%?%T4F3_6S\G/!X7QWJN@;D9CV6I$ZCH.>Q.4M]N]]@61K[@?R@ M+O%!;&QO`WX:)X6Q`U6F9)&()>%#ED\T=L"E^,S3U]2V=38'A4-;I.-RL3^: M`BI%*D92_?8E3(?*?B",B\9I")0`Q^AG)N!R%+#IK0\6IOWL/NM#RYR.9<(* M#EI`76VE49^*]:@AVC=)TEDC28R5!8!1H@,?&(\A@]H,[DJ7JFJ>Y)$[\"=L M8XG]EQ]T#PW]#P0`V^A_OL2CZ7]Z9S]\.#N_-'5`1;*P5#7/Q=$V$NQ5V78L M18O8)IT3@+I1?&<7,;V;M*,NL.V,L<4O_:X MJ$`YX`10QAD!0M&8=>":!)=+']U*O.C@4Y8%\WF.&'W9DX@912P(W1D(I0]` M"`$P$,*T)H=G*49X1"O+PAM'"/:8%G0POP6;N`XV(.<6XH/M&_A@&D;VK,0& MEP6S6XW=H$-!J4\]*Q`Q68HMG0GLQC$8UB93.`]@-8&/LG/]*QXK#W7((RK8>@D58B5`93D[]?M741*ED[!_$]V$L_M^/AUG M(BY\/C4,'V"Y9!H^)`J&3:ECD?H4J<.0">,B`50.2@:X%(%M/"#"?QB+1(SK M+UX8_;(A6X[PC0HO$)@%`JW`'14(6('L.HTIOU"9L`]DD@$Y8Q,R]KO<1<]X MY/Z$=1`8IS2!#BZC%GOO%>]`+!?SSAL>A.GW&MFDH7E?ZSTAS\`>U17#XRE)3H->$8VE/GS)D5?*]HJ[V8^HRD0F> M6_!Q/0?2%Z/4T<'`,;6G3AH2"/Y6JN??3+*(F9\E%[_HU.!CGE_CY&<*KSD[3J?$;QSO1L-*85_+ MPTTU%>D&WFQN"2F[8*P6A'N%F%/KHJ5&22H^0A*:?*B+M2<1 M9`5CKE6B%0.VCD@K!FH=F:8.ZY_SZI8LDDUTA3["8&C1:$K0-,=JF9.0#4[U M.&T"R9LTQ[+<9)Y3*3C-W&X).%P!/1(TK*,F8-:\KGJ''5[C=SW%&!R9\\/Y M)X\DNNX&S]VG<3R]FR17Y*4KS[S0_/0S'9Z]X^?( M&.-C,G;>[=ZP%/0ZE:>VV>TPC^^=NW3*JX*@,9=_O_0CO(["X]9,^2@A4=TY((VF(M+SA+P![YR?B'CE64[:BZ>*_;/RE4# M<*C)EC/>SIV^=>:VR24EP+*&1RLU/'IHP](C?YR5-WKJ!1R&DQ`V>T=;/6.? M1]L\L>XB%WRZ]Y_VO0/NJB_V_GJ'UXV.WZ>/_KT4;_^T4> M_?Z?WN7%N_,?^G_N&S<`%>FJ+S#QSKXPW!OQ:Q_@L(9[\0HWA`S<5$F,0&F9 M?(`1R*["\`!F`;)7$F%'LI,H.\%P\FCP0I$D'.DN27'7TYM!?.!\F&:Y].8E MH)26P5YJ0&Z"W27R/AC?[\CX:NIHMBIP(0[:0Y5&>YM//'ON/_87_?@I_ MR68)-Z[B0!23%;?^X-[%]TXTR#`R'RPY4IB$1P?.&7RA>6B2T36X49)/T@AF ML,*Y0FC(":C<$ZZV.&]*I-!6"PV*XFC`P.H1O363%!FT"JI".ZG\.@7GTGTF M?&6]8`#6(&_?^+[!(*9PK&BH1('NO+,T5%6$VAPB;);$=B^>CO@&%@]?I\4+;01WX,1]1QS$PU:0@>$/ M2ULYOI.#I3$T3XMF@(Q-BK@>QI4Q7#6I;-GX'`G9+#=,%L@F2[#U(*Y07XE: M4PMUNL@JD(AERA[W@611=KY&8=HHKT`VKU$X;95(&#Z,CN$@KR2C4X=K)'9) M)/%C6PF)-Y'4_Y+LY:%[:HO3"X+QT&,EVDH\MX18JS%=;"OL`Z2BVD]`MX+LM82!N.V7[@(>2/48&(RTQXH.;3BTYD,[.5^D04H; M!0EWS`6T7.H1O%8-.B14949!5$Z"*JHF-EO\[<]A[H MC`5-:_0`-`$)G1H=4"7`-3%4U2.*S+Y.]3[)Z&`VU(C/O]6AOQ0P!>&N*SB? M\0-FNM:IN_(((,-EWQ,S0T`VF/Q.75T$MNR4%1<&AD3+52CX>R2A)D78,C%V M]GVX4#R#"\5;!966SI)TPZ*@5(M+8$&Q`:<8"MI:9./#&Y;KLZ0D#)Q%0O8A M!*1)3GK@+)PBQ07KQ0$#<8R:PNTI6`K=D%[1*U5D-8YYR]")^NGF=NVHHP+J M7W51I#%Y3^FZRLFS)>3*%^NIW>3WU'W%B)O M-DP_K[1`VO3NHM[5YJ>JY1LM,EI2?(M%VM-QP4(68'^?D`,4\^SU\0`$<(1` MN#R@+BJQ\`[%?\"Q118-V$Q.2JF3W5W7W7'_FH4(,P]03R//P^DI99682.+3FUE)P\?!MRZ.U MP6#NKK;!""RKU%85!_8L'*@QW\H+B#@RIICL0?N%>FQE7T6&"N9OE351BP\Y M35VP>(#)\=$GC>:KZJ''OC:+E>:CQQP(/%HJ^UK_:VMP*7HD?[XTI&'+4Q4S MJK12%^G[OCX"JGCK::<"!OZ1&%XPOFA`C2*Z'##=YTKQ!2(@J#]M'#W!DB^H M4NR((=W<\=T%,/C*-%(;D>Y3S'_M%3'1@"AE(!E7\#&;0P_Y'-J57%EL%`]9 M6M%.2Y-_!(;YS,,9$L&A0ON;`<2I'AB;F;CW@4B2TMA:)F+9VW+?JM M*O')K9#(>&")D1(7M4E-Y:/2__IHJVO!JAB4C5:UI1W5L:6%_ZWJQE%]`S&G MVD),A+M&L\H%E&=`18+TBNJ7IX#J5R,]!L1GV5ZC!KW>7*81K`IK819G4;;* MV5E1\F'DSJKFL[RR>46D+X'DV9:#P"3[OF'KA>#!Y[?R,WVP0[N:PA<&@]1, M\EZ0JUGQO@;-Y/(U7\'IM56%_H)%V"*5H:XIKZ4T5&2'U'@IY$*55S65>$Y> M.3#U-P(2WN[YI_?O'[E8,Z4%J05;IE:8+]_>&ELG,0209CJI5B%0'VRSP/R& MFVJ)L5Y)H]7&],*#$Q4-*Q95XR,3ET+=1XS$B2P0"4`%L$2#26A%\>E!EJB5$/)VR3=3U-$TQ M.O;M57Q/A@%T.=7-;`(W$4,8%R6*-Z,"A):Y]V0X;X@Q`^9N_%ZK0>X,I_FU M,QODR`_R5FR\/H)CP&,P5K",0C!66L=6\H]A4L:;D].%9"AI$LII9+4GABXW M+(IU7S\F=IT3T<@K:\'`+"A,>Y>6;-I\^,/BV9^CJ*G:]CZ6#Y'7`@$6++&)0SWEDS MMBT9JZI>8-*K,?Z\&-Y,2A;Q:>WVL_RS:4-K&3^F1!"FM&4A9>9T54C7`5P= ML);(,]WFN#Y$-E+--5C@AEWZ\^F](0S<2CAM\)'`92"2G>YXDH+95T@7^H48 MBQ],^IW=<->#.%4^7&5*,GB01@-0Q\%%`19YR54:T#03TD(R&M&-^31+Y\Y, M-,KK%;^A-SGJH9QJ=\N&.'Z<)?]B@QL6%NSUU^1?;%$!%RQ&(>YO)L_\XZTM M-@-O66,]BS:.'27\L4,[.?CD.7R65LQX"9!_+PHND-VS9=3-U[3_=+I!ZTCQ M_R?[SVY[8__Y)1YI_TG&UG_O79Y]4/W_]>1%`1P+\<$VHOU\2GXQ>$OI@F#W M4K<]4W8D:KB45BFEG&T_)5I1/B,<:H%X$1^84%^/JF1R?ABGS.\DG3K0JNSCXVX/Z#XV*2%^7" M>$$Y]K&J7#*=59=C'QM2-M,=Q;!.A;MN=R][NQCD+$7+VGSR6Q3?:Z')PCC/ M%H&49PH868Z9JUA).=S9"=-27X*V#4+GE'JXV!"S4HN<1'GJ)-$[S=BWSWW5<$N-HJ2-`,VY"`, M9::M+@U'#!HJ;(%)4?"D#\CFNKE][/(&\UB'AQ@D22"$!VH9S98Y`YM M#'=&%8S3*B=#+3XQ$^])6HV#7V`!&UO5>)#'$7G\Y_9<5!'(!'*$=($C7K9: MK>=-AMGKUW[;?=X$1%^_?EE4"OI'Z?_(8Q_021*/P_BF![?J^8>N9&74_JJB MAM$38R0A41-)PZV"TG^8C/*?DE\\O^.UZ+M>/$\'LSK%N_;BM$"I5T';5@$$ MCZ*<`UOQ@><'Y8+XG4UN_5&4A39F&K+=BH<'.VR_Q"ID_5MTV',?-I+-)F02 MEVVV\($KWEGNK:;ZL=6BSRY>TBMS\-JQN%Z6`>!BIXL4J*/3>JEE`E!=X`<, MP[*G@(>P:>T#!.,QU&EOGS[K=XA@WV99/,J)2-0Y1!.DT[*Q!G&^,#?$`O7- M`8,TKA-7^?T\T-XZ)7D:3:=%HE*8)A'_8ERD\X[X/ M+]HT29CY!68X.?K>(+WR=20QW1'I3X4J7',E=,--;.SIL0^LV.//`'X&582@ M+([(\@5I0@KU(BGX`F1J+R,3_FS#SW8-BE%N1^3^NL3#-E*?I)T52(H_._"SHU'74S;-Y_G^>_P(B1PD%`,@``"IZ ` end