Hi, Here is my a bit late review for the variant library. In spite of several concerns that I have, I incline to vote to ACCEPT this submission. Design concerns I would like to be discussed and either accepted or dismissed. Implementation issues are less important. Rest is mostly comments. Here follows my detailed review. I was not able to follow closely to the others review, so it may intersects. Issues listen in no particular order.
Design _________________________________________________ In most part design of the library looks solid and well thought-out( I think we definitely ought to give Andrei credits for this also). There are several things that bother me though. 1. Two types requirement It's unreasonable. ! or even zero sized variants should be allowed. 2. Top level const requirement on bounded types. It's unreasonable. I should be able to define variant with const types. It will be as usable as usual constant types are. The only requirements that we may incur is that if one types is const, rest should be also. 3. Copy Constructible/Assignable requirements on bounded types This only need to be required if variant should have appropriate feature. 4. DefaultConstructible requirements on first bounded types This only need to be required if variant need to be default constructible. 5. Usage std::type_info for reflection I don't think we should enforce RTTI for the variant users. We should be able to postpone the decision on what kind of reflection information user want till instantiation time. 6. extract I not like this name. It does not reflect the essence of the operation it performs. It does not extract juice from orange. It provides an access to the varant value. It basically external access method. So the name get, get_value would be more appropriate. Also I think we need free function form of value extraction. In other case it would be difficult to place extract in context where template parameter is deduced. And check function is not that important in most cases. 7. Variant size Unfortunately I was not able to follow exact logic behind usage of 2 different storages. But one thing I know: sizeof(boost::variant<int,std::string>) could not be 28. >From what I view it seems that types that are used to construct storage2 also used when constructed storage1. So we definitely have size duplication here. Separate issue is the type of which field. Having it as int is an overkill. It would be enough in majority of the cases have char. But we should be able to deduce the correct type depends on number of argument types. 8. Visitation algorithm In sketch presented visitation algorithm look like this: void foo1( which, visitor ) { if( n = 1 ) visitor(...) else foo2( which, visitor ); } void foo2( which, visitor ) { if( n = 2 ) visitor(...) else foo3( which, visitor ); } .... In a pseudo code it could be rewritten like this foo( visitor ) { if( which == 1 ) visitor( first field ); else if( which == 2 ) visitor( second field ); ... else if( which == n ) visitor( nth field ); } It's obvious that switch-based algorithm will be more effective. And I believe that given at compile time number of the types supplied (or maximum possible types variant accepts we should be able to generate one (even if we will need to use PP for that ) 9. Design of the container move function I do not see a way how with current design and implementation of the container move function I could move content of one vector into another originally empty vector. move(src.begin(),src.end(),trg.begin() ) will move to garbage memory move(src.begin(),src.end(), back_inserter( trg ) ) will copy instead of move Do we need something like back_move_inserter? Implementation _________________________________________________ General comment: I believe that all template functions in header files need to be defined inline. static_visitor.hpp Line template <typename R = void> fails to compile with MSVC6.5. SO to make it work I was forced to use following form template <typename BOOST_MPL_AUX_VOID_SPEC_PARAM(R)> This and also the fact that MSVC6.5 could not handle return void construct, forced me to change all the visitors defined in visitor.hpp to return boost::mpl::void_. Maybe you could find better workaround static_visitable.hpp 1. I believe that implementation of this concept could be enhanced. The major problem as I see it is that static_visitable_traits could not be instantiated with const type. That force you to propagate switch on const/non const in many different places. While you could do this only once in static_visitable_traits implementation. See attached file for details. Once you do this the implementation of unary apply_visitable will became as simple as this: template <typename Visitor, typename Visitable> typename Visitor::result_type apply_visitor( Visitor& visitor, Visitable& visitable ) { return static_visitable_traits<Visitable> ::apply_visitor(visitor, visitable); } You will see simplification in several other places. 2. is_static_visitable description states that this metafunction will check whether the specified type is visitable by a static visitor. This statement is misleading, cause you do not (and could not ) check this. What you check is that type could be visited using static_visitable_traits interface. I never mention static_visitor here. extractable.hpp 1. First of all this is bad name. extractable implements different concepts that it names. We want name type T extractable to announce that this type support extracting something out of it. Isn't name is misleading and means namely opposite that type is extractable from something? 2. Extractible is the concept and should contain is_extractable check, which is for some reason located in details of extract header and named is_directly_extractable (this name even contradicts the comment in it's definition: it's either directly extractable or through custom traits implementation) 3. This header suffer from the same issue as static_visitable with missing const/non-const switch. For example, once I implemented it I was able to eliminate one layer in extract implantation in extract.hpp. See attached file for details extract.hpp 1. boost/addressof.hpp include is missing 2. From what I view in this header there are 3 ways to make type T work with extract<T> interface a) Make T "directly extractible", iow inherit from extractable b) Make T "indirectly extractable" by means of specializing extractable_trats c) Make T visitable by extractor_visitor, by means of specializing static_visitable_traits for T BTW it may worth mentioning in docs. Now it appears that having extract::visitor in private part of the class definition make third way less usable cause I could not mention Visitor name 3. Defining result type in extract::visitor definition is unnecessary and in fact prohibit compilation on MSVC6.5 4. As I mention above once you fix extractable traits, implementation became more simple. Look on attachment for the details. 5. Name for the visitor could be more specific. For example the one you have in it's description define_forwarding_func.hpp This file contain mix of Unix/Windoos EOLs. mpl/contain.hpp I think this is in Alexey direction: it may worth generalizing this function so that if the second argument is the sequence it will check that one sequence contain another. mpl/guarded_size.hpp I do not understand purpose of this header. Why couldn't we use >,< signs instead? unary_apply_visitor.hpp As I mention in static_visitable discussion, once you fix the traits implementation it simplifies dramatically. I did not touch binary one it may also became more simple. BTW what is the meaning of the NOTE in this fie? delayed_apply_visitor.hpp I did not touch binary side but once you fix the traits implementation unary function operators became much more simple. You don't even need PP anymore, but straightforward: template <typename Visitable> result_type operator()( Visitable& visitable ) { return apply_visitor(visitor_, visitable); } has_trivial_move.hpp >From what I view it seems that: has_trivial_move_constructor <= has_trivial_copy has_trivial_move_assign <= has_trivial_assign So your formulas could be simplified. incomplete.hpp This header presents yet another implementation of smart pointer idiom. In this case with deep copy semantic. Do we need one? If yes, lets name it deep_copy_ptr. aligned_storage.hpp 1. max_align used by implementation is not defined for Borland 2. aligned_storage component is not that generic as it may look from the perfunctory look. It only works of size is 2^N. May be we should check this explicitly for more clear error notification. 3. Why is it noncopyable?? visitor_ptr.hpp 1. why visitor_t is not function1<>? 2. Why constructor expect reference not the object? 3. Couldn't we use std::ptr_fun or it's boost relatives somehow? move.hpp movable.hpp I think this functionality deserve better place in boost hierarchy than variant details. 1. move.hpp missing <new> 2. move.hpp missing Andrei copyright 3. I like name const_lvalue_ref better than original mojo constant. But why this class placed in detail namespace. How would I const lvalue from temporary in place of function parameter. With const_lvalue_ref I could. 4. move_source name is confusing. I would rather say it's move result, cause this is the type returned by move function. I prefer original mojo name temporary better. 5. move_return name is confusing. What it's mean? I would rather say temporary_return or function_return 6. move_type? This type I would name move_result 6. operator move_source<T> in move_return definition is an improvement over original mojo design 7. moveable?? maybe movable? 8. Where is is_moveable? 9. I was forced to define and use typedef detail::const_lvalue_ref<T> base; in move_source definition to make it work with MSVC6.5 10.uninitialized move uses iterator trait that could not be deduced with partial specialization. I fixed this implementation so we would not this this. Look into the attached file for detailes. 11 initialized_move has an obvious bug when it tries to place new object into *result; should be result. 12. I wrote detailed test for all aspects of move semantics. It's attached. variant.cpp 1. You should have relied in latest cvs for review 1.29 workarounds only confusing things 2. max_value metafunction description need to be stated more clear. Is calculate maximum value of the function on a sequence, isn't it? 3. What is purpose of variant_base? What is the difference between detail::variant_base<Variant> and static_visitable<Variant>? 4. using_storage1 implementation could use compile time if instead of runtime one 5. variant class contain a lot of things in private section Why did not you separate them out of class as you did with visitors? It seems to be possible. 6. In general it may worth to separate this file in smaller parts. It would help when you will work on portability issues. 7. Unlike rest of the submission I was not able to make this header work on MSVC6.5. It will require more time and attention from authors. Docs _________________________________________________ General comments: it could be more detailed and explanatory. Especially in the area of design and implementation. Simple concepts as visitable, extractable, movable deserve separate pages. Tutorial::Value semantics section Case 1: .....using the rules discussed throughout this section. -----------------------------------^ This is unclear IMO. What rules? I did not see one. Tutorial::Function-based visitation "print_int_char_visitor" - should be print_int_float_visitor and "...print Float value:" "Output: Int value: 88.0" - shouldn't it be "Output: Int value: 88" Tutorial::Visitor Concept::Structors "....initialize *this with the copy of operand" - do we need word copy here? "May fail with any exception arising from the copy constructor of OperandType". It's not required to be a copy constructor. Sample programs Where are they? Why there is no example directory with discribed files inside? Tests _________________________________________________ 1. Jamfile missing subproject statement 2. Tests could have more sound names to clarify what are they doing 3. While working with the library I created additional set of simple tests. You are free to use them. They may help you when you will work on portability issues. 4. Why variant_test is separate, in wrong place and is not in Jamfile? Code _________________________________________________ In most part code looks very clean and consistent. Only several remarks: * I would prefer if you would follow boost recommendation with class data member naming with leading m_ instead of trailing _. * extra indent of function result type look strange from my POV. * private section of class definition with class representation (data members) I would put on the bottom of the class * do we need that complex hierarchy in variant detail subdirectory? * several files have incorrect/missing file names in the comment on top of the file (especially wrong path) _________________________________________________ My regards to the authors for this interesting and complex work. Gennadiy. begin 666 boost_variant.bz2 M0EIH.3%!62936<SM\7H`5_9_M____?W]______________\(`$! ``" " `) [EMAIL PROTECTED]">3SMF[V/2\CLU7RNIYY9&/"3NND^;>GUJJ[>]YRJI(FM"GM8PI M"SO;G>:=:@5M1-I0%MZZ]]Y'V[NWOO;%`]O/#GWUWW4W;X]JF/=\9PQ7?'.I MUKWVU7-MWWS[P^U[9WKE':UUQ2JVVN?7G9O-T[[#>J&MZ -'4=W=<Y6[,N7/ M6ZQH!A1Y-U;,[EMAIL PROTECTED]:0C9:[EMAIL PROTECTED],L9>\ UT;.A6]MUX') #5>9 M=W0E0^]RK7O-&;W>O+D`2FD": [EMAIL PROTECTED]/4U3U/#0IY3-3:@/4])XIM M1M1Z0>H##*,CU#0>H)$($((U,(%/*I^T9"3TD'ZH\I^J>H:&GIJ ]0``'H"# M0T#U!H $IM2)2:80R:(:#U#0VH&C0 !H``&[EMAIL PROTECTED] ``````(4B(@FC4]$!-4_2 MGZ:GE/)-I3]4_4T/4T)ZF:CU&R: `C1B-& (,C!-`$213)D3334VFFA-2C]3 MS53]3:IXH]J;1/2:GIBGZC%#]4](\FH]0T &@T#U```(DA"&B- $T804V1J; M0F)D2:>GDD :!H#3T1D8$/4#1B #^<%[O_W\Z-]<S]^WK+>&)A\RA^(APFJY M!<*B2$!"&@`*>[EMAIL PROTECTED];[/L+UBV5HRN_BV:ZAV(3*1`#PH<[EMAIL PROTECTED]@*H MP8;U41)ENC$6+68XFUM5,9;I^(7I3B<UM.PX!9[0" @1"(8D:%2A9%E3OPQ& M)%!:[EMAIL PROTECTED]"0D*+$ J$A (GN"JH!0(*_<D1/"%'1$2Q"$410!,P0C)"H3 ( MT02BE*HPJ_H_VU5ZQAA1/]GVL->E_[:[EMAIL PROTECTED],;8"_(PT20!AL:5,7^^\ M5/YYBL2<VLNK84R)W+T_Q;S=C9=L&FDOU^<0VZV+$.05)A\&8P#(;,"],8:N M7KX87,-RIDS"_EB:DS,F!]25K9<"S274FD,0P&+\9'52(@N.8NOT#3;DA6<[ MU)5X(-]4>5%OAWSW4:E[2P<]*I4R+[1^V]ZI!<_X_U;>9QV<,&QU?]V2./\V MZ>[EMAIL PROTECTED]@ZU)IPBA(Y7!TC%PU)71'5B2)1+]&V!\TP_) J MV"/$AU?,D\##&C]VPJ62*NN.XX=]2'/"U1&5-0<>@[E]E6=7T.J(DF$Q0?W_ M1(VB4VO%]L =&B3D$A8..E Y^WFT-0NTN;3A-YG4'%H\7US<[(';T9(VD4.O MQ09CX[M/Y;Y$33H:*TOH_.[P.0;K/N$M&22101!!!!'C[+A#4E58R0K"FY#D M3B80G'1DK2HRA5(LJQ1:$]YZRR%HX91#`20LR)[J\VQ=O%3:<]<3(ZSD^6L# M=N/-JRIPSRPV6D)HDIZ'+U(-(;@BX,TCTG6[?!H/9L(0Z[,0T3A'M7$Z.3)Q MQ)JW93W8-PQ_WM+>J:Q4#:&#::W&*JI=O")Y"[(:H<(B<AF(B*I*F(3K#H\R M3UDZPCQ 9 _BYG;F4%$0)7"ZAJ(JJCD1KV>WXG"[?V4MUFO;ZNIN)]$U9'S' M9$_/K*<GX>2)S%U:$1QU* [EMAIL PROTECTED]>;5T1-S <L!V-$^C'#;/[EMAIL PROTECTED]'+TV MALK72(+<EF\YX[B\Y'F0#'43[8.V"]VZ9%#(9Z&'LFE-#)C;?#Z=,8L0IF:* M,CJB`AALX&%#I20SP)55"[EMAIL PROTECTED]:F!VJV;'CB6IQ<^88R&"V)BJN2)+' M]&J'9MI;[EMAIL PROTECTED]@[EMAIL PROTECTED]/0/JCT'7V[:G>#:)0V MJ$(V$21X<)<=8Q3<D'" YMVR#O"O%>SAN+3/J-[$>[EMAIL PROTECTED],Z7JC M!>BA[^P=LBP>J0I[VWC(28F.`Z:?I;<R$V-+\KRY-9.V_5='3(LALUS.\[Y( M,S"O5&>[JNX33+;8QL]T)UPK-+;[EMAIL PROTECTED]([J[8?*B".X'0ZH[FNA M[9O.R%*&,>OII,[EMAIL PROTECTED]@1B(2*0C(50=,X3IMR6>\<T!Z.'7_`A_GA<-[ MTM\GBM,>J'96-O>1:[EMAIL PROTECTED])1<X83CEW#T6*G8!(&[EMAIL PROTECTED]:^G^[2=R<^K M/CHEC#*TG#SK"2,?$HAI`#\8?1 I3[,BEWD0)$U0B;9>!&R&GL0K-'A^*4AH M^W1[G;QXY6ML0L:-.7G[3(0^7.D.NMQY?0:Y(;N;H0B(2"YGJJWQ43S\-6YU MWD#;!\/T4�@'+IY[(/A&$&!(5+%5$Q2P04A01''7$#I3':6 X=+!M3?/&5 M5%%7QQE4G(R$-E/YA/?$"?<`]0E"@A$"Z7J]K.)A.\*I/H]$^EK4ME@@M2._ M4(Y2P#9I'[EMAIL PROTECTED])L/&L22<T^8T9JMX)RK^."P&$0))! `'U^OZ.7,T^C MNYL5W^_L?)#)#I0[$,(=/Y=>[EMAIL PROTECTED] $53H,0 0.Z ]>0,(3NA 7(!5U8DK[ MVS?7:*O$H&0!R2(IZ!].*&H3F%Z2`NH`#GS8`'%Q`);Q`*3NB7=D>W[K7LQ^ M-W%,BHWF?#;8?I?D.(LYG,N(CN%U8K,"6$A)=[<=P>R\)BS"@REO`0%*"%E@ M,82T3,:83J #G1N"\95"=$^%&]:>$DPMFD9XC[!C-AF8W0ZX/]-PV>J(U J3 M]? CF1.R!/#._[2?0H"<3CB1(<8[%I8")CM)D=,E>J=F6-0SFV<`S/"4OOFQ M5Q_(XTMF9 =;/:<EGH\KP^T,Q#"[EMAIL PROTECTED])C"(-WX:_5=HC^?'YX M^G)[EMAIL PROTECTED](AMY8S\A^0JJN3FHXB(TE-'/T?@/ M^5W C)LZX=6C&[EMAIL PROTECTED];S>=YW%EUC$-XYWMR.F)W_ K+_1:A:Q> O: M1W^]=[U]+3+0PQ4CYO+X4@;5#YS;7X;F"N[D"M\`.>(?.(PI"T=Y95.36(P: M/G4/(]1%"GIJ@,??ATC)T$/WM]Z(9%\#?&# 8-(6&,6 R'VY=O 2K& C\9FN MZB$-.Q4*2>2"2> [EMAIL PROTECTED]:J_;Q/Y_16TV'E#=AP^ M)<%'/\?Q>.>-GD%]JA[Z][GF4$/:'A:HVSS_"9!M.K4,[\:.9P;A//[EMAIL PROTECTED] MNT0#0;]B'):8?;][G11Y%QN:KU>OO^-KW_0'T_C#[\+]/<C.-14RVVZ<*JJR M#1O7>>[EMAIL PROTECTED]<X5S++;49;(JNWJWV^C)?!L-0UPE%&)1DUZR2'C8+& MXYRFG+W0&SA:.]" 5 WA!OL,YD(,T7+&XB5*.0R#Z+<F?-T/Q]YR\,QSHJI@ [EMAIL PROTECTED];P(MK:XJ/'W[FU:,]OG(Z\Z,S7J+!F;IL51YV6QDA"N7A3F#' M`<XP`J3U`C'V06"P&E)8V%X;G8GQT"IROE&#[P#*-QE&E"Z^3[&-E3 @C\?X MXNPYX[M_!OP_*,C.'Y$+Z7AZ[7.]P%B8<I_.I;%$^<VDM(");=1\V\<[EMAIL PROTECTED] M- @!8T(+S4-:-R/2`HW.>[MKIS15NHPD^++?>V4V/AQ,LH?B3-48GRLMQB"S M$?J>]Y-HX2#:3DY*Y2MEMB,8X$\K79CT[>;4P5OGLP8(T(A];U(CSY_)I!6N MG_7"[EMAIL PROTECTED]@N1%%N-=KOPX^]0^'9\!<9M)EBG%H.;EQ(,2;MJ M;>&,D_Q38A20W> =M0^,U0*4#$K]/+L!<EB$#MH/#P[+#<S8% F>`M7-PD4J M?'QC^3#.G98_MZ2R+/LU5)1+)NT-.NXV*-:5!0CI?P.&+$E%UL1H.*[64AK9 M"];9F[6ONI>%<-74`FPM7,49Z2)#-.[9GEQ=U:D2M-+G9=C1.2%!T:H.ZZ1* M4U$/W,-#[;;<$;I5)T+^45>F\00NC?$,1.*9H1&C);&"($&WX)[EMAIL PROTECTED] MD5HRTXXX<3# I:&DU>ILC(X"-%[5OU#YX[9[/W MV!3D:9KM=18"_:_(A<<Q M0W((PM""2Z#4#Q<M5K>!G,X1\7,J%'I.CR(E`T'(1:W^EQ.$A)BUJ,M')K\S M3.TV+.6FE6.$ML =EDS&C&YH)ATE"+&JM99E1$+QY5;NVG7NGTT'(VX`Q,B/ M'4P77Z2I7UIDB(5!'I8Z88,"8-/*YYIY%K"ZJSUH[2I(#T((E''2\#Y<49\[ M&.-B^<>$$X >^:85O9XS([EMAIL PROTECTED]<,5OW<>- \1==?K8'<D`9X(@,8OK8-T M&"IT,XY%<9VR7$NI'[EMAIL PROTECTED]<((F*KM;.:PIP'A6]BY\1K;*S8\=IG36]\S MU?1N_7S1:H5$$:V$JQO33U/I&19T/F,E,QQBYH!#S&,8;O0>0PL#2V3(6%E8 MBGX-&B<G=PSFP<&G?FP3E>",YP7>+\.-^#8FDND'*N0+CDP;01T1HPC<5+^+ ML%;V+.$WJ[WJ90480U['*->KL--+2T1#<"-19<>!R.[E#+'*$_5K6U%[Q:UM MHFM\8>Q:9M)[+25V:7B;H<*%S:1 Y<;"4Q))(A6K'06U6P=<[EMAIL PROTECTED](/A MZ=9-:)Y>03S];@L7&=W;IS+"NSQD`P(P(:"UBS64C\'H<YLSM;"Q;EDK<9E( MLVWTXSK)&[EMAIL PROTECTED]/^N%\L9WZB/%^L:!0,7!'I#?FRS-SW,;6JHE M0=EHMJ"8.!''PU[.+R7]W+9T;,WO!:[EMAIL PROTECTED];F?@/R[L]M&N90<.]A'%((@ M?T],9:1NQ'5(,BD&5U'UWMQOWY2&(KEI+7WW9P0:[?8I=#0=#'4DA(9-9-78 MPLA;',Z/?I/-80&@[EMAIL PROTECTED]@JIHE*Q3/9\Q$%*SVY'+F_^8$_16%UOP7;&<A% ME0_9OV^*^KJ9R",XVL[4NS];17=1;[EMAIL PROTECTED]&QU9-]RCHE]&T'B MRMC<3;'*]=!,;[EMAIL PROTECTED])CO$PV1(Y'D2QB(4S9RVLANF [4.QK' M%,R&;4BVW*NMF>4](]F=C80TQM<O#I**&&WEZ-^_/=E!N!V[]J?J\V7Y7MT? M?"";NSLS+5Q%'9D444907O CI&[EMAIL PROTECTED]'??BK6C:UWC1AYM.*9$XAYW,Y6Y/ M<3H0)HJ%9$_$\)%+^ZV&E9#'>L[&"J3!6$PL3TYFW$6AGH;5#*Z-J-^#A*>% MKQIH!"@0%<[EMAIL PROTECTED]<1T[WLV96:1B6&OF6!(W'4P;X5K-1T[(1.5S#596/-G"'! M-=>\>7RPR#$;CZ$UDU]MKW,9H8,J#WN1I,&D=>7$;'G-,[$/S'>:+V;]ZF3P M>6QS$HP1(5RP7*,6EZM<C35J(VWROX=$6W%3EN)906Y.Z+X!KG>;DS.D)8F4 M(7TNPM)E=.F&A9IL+6_BZ5;5$^)4;1Q74OS6U_"29&$-OSZ<R_.+AG$>7!D1 MK"[NE4!M+Z<O*#=+N8;C7(MHVYKD]Q>LR7J[]SPPKF</GW<7/.I]425YB'UZ M^R;HI:VO;DRYJEZN4'7/&:9DIJ/&99=!<1X>G[5^%VV]FN5LCW#/'<5'Q"<K MVA$=`.R.F#G!,R9#L#A01.*P,<Y+Z/W<MS+]>WL/*/X"`$JFB 1>L_I.UPOI [EMAIL PROTECTED];Q ;P0#J$WCY<>K#S>$_6F0(O[,[EMAIL PROTECTED]@( 2"5?''J^SQHK)6 MQBMF5H0TM:N)P4N5"V&#H4Y?+2LD,$]691:FY&T(R.R48P5A/R?5O1,&-YH5 M_R'*]YGQF,:$4Y1"P3N[.DD,B03X2ZFYO!+L(L5+W.9I#KZW#7-V?2&IK2)? M9HOW1H_[8WPH"[ZQ,#R??*-0%U><=_ED]? MPV6O:Q[$DT8>@!SNZ&GXGHV/ MR[$<@-Y'Q10A>65Z"(+[B4DKQ?)7*DS[L[GL#9$*.J)02G?)U).#QY+A8/MW MTI<>"<>KDH812OH-!-W'BD<S0%'3UWW*-^?KQB5DXQLQ,03;;(W98#?GB)FQ M5F9Y>K"3&ILALBQ,HOO:8GNZ4*3XQ<+0D=^%Z-&QVKK\-'7)^#_;Q1]H^M:/ MU?9/K'G('/[-QF3BWZT]7;[EMAIL PROTECTED],X.LX:15APQ(L'V^F05UR>0\/[EMAIL PROTECTED] M:#2 Y6F709FK5RH'7S81"C8CA?F:48XJ3-2>$"55;+B[YQ-AJW/[EMAIL PROTECTED] M&8V:P=.,23:3G=]"#ET;F.ER4(M1<;^VV@@:B&L:)QTE>/[3M8.?'[1KXG'4 M%J;-,Z8B>4E^(PCA,]F:Y([H[]B^U/NY.CVA-IS/5701(N\,&C AT3+410[N MW:\;!R%A0-YF5^C NN;07$<J4G=;[EMAIL PROTECTED]@[9/[EMAIL PROTECTED]>R6 M=%#*`\K_\.;FK3]_1?RZ, ]]DFQ"`^F^Q$U8IJ=#([$BG+J3J,3^5YD!2$RR MPY5>18E!-U)K/4$0?E^[W8N&4#3$VQB"X?.:9M8NWR:MCMVC;$%I<<\8#B9W M=CB]!H(!-PZ7G8&[EMAIL PROTECTED]<M:F)LS9 (&^AQ"WY)*Y8K\-IZK/.;:=!($'I4`;L7 M9ED?&%NCP^%Y,1K#KZ:9D%S$>Z]_#4,H(9D:8A&"8-:/UY>).B4<Q1Y=F=K? MN2K]G9 B((28SJ,#$_)9C 2K;$S5;1?^/=O$XAV;<33\;3(_"U[:3;:M!#-, MELW+F;@_G;)(*MHNL>RW?23(S72B?A&WLYUI; ]SS2U'-=LD"/ZKIYG=KSIF M?="P' *,$Q8*I&'86N7"4$O1%*].)&$,LC,-W'\VX/P>7@;JA>"QN%<*YW/Z MD.,AC!,<_X79,9]J&-J$>CF>@T?'J6YTB^?Z4HL=]Y5R]Y#[!/#+-VM,/[EMAIL PROTECTED] M1D*JG?"1O,0M)'?/RP/^;)6%IUC];8F9J'PD76B<7H*%I390A;DP0IG]XKCL MGP&-^T!PU$UMGA+(ACY%'<7^T_DGW",H-Q<^QR\=%TH8N)+H=.SQ0C"5"A9* MX)/(VOFOJ][0,0+;1"<U"@+6F<BG;% XHI_1ET]%,\<="-0B*)!:[O6&-)01 M"<=TNK]6,/HTMSG2T8QU6.UID$^<Y>X(YU>QMA;"16UD3X&XQY3GW"741[6W [EMAIL PROTECTED],[EMAIL PROTECTED]:DVE4T5T^GY7+")W8D8MU=);6!24U*QC MXH.(]Q4FYA@'[EMAIL PROTECTED]:T5KVQIYU6DWD[Z;(0D0FB$ M"?"[EMAIL PROTECTED](Z/"#.,!VLE`A3R]=&\$DJ'(7D[/OW_457 [<)U MQD A$FJKM.Z'Z+8X4'@&ST#$!BX]$<[EMAIL PROTECTED],X+U='MOZ^G^?\>/X\=0 M?.!PD#;#C$./MFU4FT+4(D3;7+>&\,P7TDI$CCW5X2)(C!/2-+.>VLZ76SG9 M8DFM5A\KLK74+E??$M?FQOAXB;WQ(W/-8/;L#]H70-5L6'W>&2:)?,(@- >8 MYPZ(7X7F*+%X_(A#) `D#*"?#Y0S+W$/1=T-$ @[EMAIL PROTECTED]<[EMAIL PROTECTED])[EMAIL PROTECTED] MX.,G[,1!!.R.0&!(".&9E%A52%,)@NKR9&R 92X%ERI+L0HD*"Y2+%2E9,R) M10F]90.R=\EN/;8=QF :P- &:,_&V.G2$2B?\,QD88E)D*%E.D)S"966GKO6 ML)I2=PF.F,$_30O0":B"7YK(_Y!..%0XP..92-_ Z<BW#W(7&4E4K50:&J!$ M.EW<48S#I[; AQ+([EMAIL PROTECTED]([EMAIL PROTECTED]"[EMAIL PROTECTED]@\("ZE-))G,!*2&(7F$\%#\OX MOC?B*<;[EMAIL PROTECTED]/%]+>Q\(0^6X2?AV9 +^TP!>T$30"T"T:A#YOH^?V/N<UOU MOKV:U"&L!?A^OW+HQ[YK^3XO#93#[/X>3?EN8S3;N%HQ&(!)[EMAIL PROTECTED]> M3)^Y0QHN\TD$WJH049!+VH O,[EMAIL PROTECTED]>SX>A0?!*E^):[EMAIL PROTECTED]>Q.! M:S,Q]5D&QOP^+FZZ>;]X=+71UIA&NJ['&3UOB["M.HJV#5K7,-SF5,[EMAIL PROTECTED] [EMAIL PROTECTED];]`7.-=3:>M5R(UASO,BRQ!55PU0'A$6 [EMAIL PROTECTED]&[WZ MSU*BT"IR/HT09&.H$Z<2E$>4/$0;!LK1M"@FQTA .:ZZKX8ZI$<[EMAIL PROTECTED] METQ"1L,VJHB EJ-IO5,[EMAIL PROTECTED]"69BT71J+%9#&D#F8>[EMAIL PROTECTED]:: MERZRBG,%XV$56JM>$$8MA=6&[EMAIL PROTECTED]:P;:9;7%;QBQ>]YG#F]K62,[EMAIL PROTECTED]>[ MS%EME%Z,!B3%6E"S96D2C^->] D\-(-B2B,X,[EMAIL PROTECTED];Z)UFYFG<WOOFV,$3.VM MMXO%K1-Q#F6=BP+J"UIG6H&N"MJ5]7R_BVY'S&#X!8R^EN(*HBKM^W\$"[EMAIL PROTECTED] M^;S17Y/6>'7AJT->S"0)@@)@I2)"*L/+[L/T9:,W)V' K(]VCSWE8WJY%B8$ M22&-J+E4>/>)[EMAIL PROTECTED]<,QCS&/X$NQDLS1:T?#KA3M )<NBB>[EMAIL PROTECTED]&F(Z&_(3, M'8DDIV0YU.F:"(AF`GI XT*4S$1H#,MHFPQ30 8'=FA.0R3B5(X31R[JD"/] M64$A,D!N)BFF)"_TM;=L^3/QR10Y(B"M]#+2SPDEX"[EMAIL PROTECTED] U.^>CO^_9?^KG MF]%TXPQKM'O9B$+=_+@<?PS._SG?5 [EMAIL PROTECTED]'%23)Y,0(/0Q;,1S>>COO5BF$` M-ULX2*!HB\)"2J U#OW)[EMAIL PROTECTED] )[EMAIL PROTECTED]'IB M%/Y$F[U2.2#X6$;Y.8H,'N-Y%":"UY4\<[EMAIL PROTECTED]&A'ZW0A>3YF (6XQM(<G M,Y11UQ"G>([EMAIL PROTECTED]:1+UC3P(>H],T,>GW4:/L/.:.<][U7-9S[>GT MGX/RG>ZF2!D^X^BBWKO.L7U;[EMAIL PROTECTED]:*_S"P8L!"884*(M]L"ICM5G+"L M[.(W@;)(("8C>(9)&;PW/[EMAIL PROTECTED],F')!:6R&I4I=76$Q5(8 MHEQ9[%L\ZO?FXMJ20"TP2- @F%N9$S"^C,@/D(H?MSX$9#:1&]B4E0& DB,` MNT!4(A%JJT)ZQ2@&7CONX4>$/IFV+8('RV"S&QUPVQVE2B_WJ)[EMAIL PROTECTED] M\+K4-!L$T*_L^$0Z=.7[R9\D(:)>352 KU%W<[N*H(9WW:@.^_HDM9>NK4EE MD-V/MQ^:?YVC<+7(V5MMK[NF)[^/=U]^TQ-Y5ZEFN>6S?(T4"=7:I58TB7\M MPB0PK81X.2]O4\%4O)8<$.&&)1GD<>)-BVB!)[EMAIL PROTECTED]:?W] M!<[EMAIL PROTECTED]"-M`OU#-SGTQ2ZSW!V;BE 0WPHO/=DA)\0_!\X%A\:+W(?A M??,5(:!+"!=7Z?J4T"9V;_((%?2AUC=P$P+)0N.2AF ?Q&(.A"?B-P+WE/3Z M>Q/[EMAIL PROTECTED]<U/OH;^]'\45V>83_'(H:& EF-)!"QC6F2>V\A3&,F^&1 M_C,(_"P^GZC*!7:W1C"(;P@;89Q^)#T%>"4$#AFIXGIPGGN IXB P2T%Z&EC MT' W!5;$<#![CL3)[EMAIL PROTECTED] =,&V>TT-PFD0*G-O"AC;,3H^[V^[+XT5*0YY:(U8 M8GH<F^B=N&PQPU1H,BJJJJJL_K^H>^!^X!\(YU(!Q;>(^H!3BI_HA>[EMAIL PROTECTED] [EMAIL PROTECTED] '@42D7$70-PS"S&[EMAIL PROTECTED] & XCP>5WF49&2#@&>:9)>XF+S(_"+WN^ MV>@N-#T$H:)'10CW"AU&F#M%,5+)WP.M"Z=-T;8`Y.&2- *0%H]XA?GLZ"!8 MI0\1NA[NW4;"'B[<#OVAUB=KAW%F*]:CLL[OC-C8,)P\\[^CK46T1:L>1W(OY"N'+V'F-@)@7P0\.]#7 M<AHH1>K4P:T(,B>%6^3TH)[EMAIL PROTECTED](0F&XE :4$-G A9I5%@<J$.:BI73ZR24< [EMAIL PROTECTED]))*12<S"J\3K:DO^+LT%DMC>BA,/&P+UP<:@LKH."<-DJ$=.48)1GA M!N2$7>E4CSEBPY00Z8^NAP^#*:RA?!!V(F0)J=2$61%D3)-%@;K2G+. 0DW' M3^D%M:,@8]J'\[X\_N'VFO2/E!(C`R]*`KWAS&!1X%\C<!TH"O8B9N,$I$Y> MOP"@^7G*#+<H^C8#V!N'YA3)[EMAIL PROTECTED]@):(:7PB[%?*!<0-H1*(-Y# MJ+"$0)T#63,)`4%#B84IIA&-D( YKW30D$(HX#Y>8-O!"AN.(/7/6 U#LK8F MU"F*=;Q4;XH8HYB64+(<HD&"`F([EMAIL PROTECTED]&[EMAIL PROTECTED] >+8%-6-C3%K+# MS$!785+N$/!)AZ,Z0(220D)W=!H''"F6_0/!/Q?3-7J(8<!I&+18H-C!W$"$ M2'JFCN3;C!VPCHD)E:81^GZB+U#Z47B!: =(NT#2EWJX2*&C!(%T*'0#^P/K M<BG8(3*J>A8;J5(G-H!(D 6D"[2B<KL/[EMAIL PROTECTED]"R%!S$]T?]472.I.2R>&]]I M/'[EMAIL PROTECTED])0_DP7-"ZF(-;@+"!=#>%.EH2D`N:$>$G10>9 [EMAIL PROTECTED]@!1FBU3 M]W)0B'ZFCG%P72P"8"FC=UM;2&)[IG#N'U \J'A%,D-_!7L#(#(#J@'KP7V9 M\GX+^U\VC^7Z_[?9YI56'TU]+Y)>C]?DA^GR_Z?I]1'[EMAIL PROTECTED] M4O]_O_'*FW[?O?7K^>[ELY9X]9C5<Z^IQBV$Y.YWJ0@'.WIQ_(U>:IVAZ5X+ MG-,13*%$-LHB9/SNGT%%OX)RS8S^J-LLZR9,JBV"C(VVW($0X' U^P=RQ9NM M;SM.B+R[=G3]MY.S\5#[C]W[]5#]O[;P_9AC[^/D7WX9(!3 3+$3%^43[N6E MN_=<1R6X/R(M#\3H,[EMAIL PROTECTED]"[EMAIL PROTECTED](U4-F5G,[EMAIL PROTECTED] M*FC0"WR(E E#*>4C\H??$N YIR(4\N E(AK8ZTHA(!0V<RX>K^YZJEK6*+'D MGZQT"/Y$>X[_1Z3_!ZE/[EMAIL PROTECTED]/O<&/8IB]`A8'8;EA^SA#*)(&89&: [EMAIL PROTECTED]<:HCD_H_!K;"F`USFW6)OJ&!DA @;Q[(:U%9UC.0+,6J2S3)/R'8:;-<! M,&R-\4446CM)[ CD7:[EMAIL PROTECTED] VO*!2X#@&8%F 4N#)C<VH60(:1D0S,[EMAIL PROTECTED] M4F!#"5%D3-C;*0T4A5-&L8)1&[EMAIL PROTECTED]"P!GL_(B8\7$2H-C42R1Q$N801D6E:P` MV)"P#(2*$)FD*UE!#-H%EG=M2!LAH0H3P95Z7&LR,12C)%R**JHF:1P@,B* MG:^N=AWER8W*32&L_-!<?ZH/QR1$.DB&EK([EMAIL PROTECTED]<@S`Q*'#!#"("&1 M[L=&@,D8DDI&PL&H*8&[EMAIL PROTECTED]"E<80IR *)D#(H2(F))%!D$'=-@)W0R0`^!T0 M71\8=Y^R?S=L.^;P>J"BFM=[)[05"'[EMAIL PROTECTED]&X,#Z<&R1#\06-Z&F [EMAIL PROTECTED]'JA0"[EMAIL PROTECTED]/@H03XI^GQE=!,]].(D"XRZ0 M2[AHN=/[?MMT/?8[3),3H0$`M/NZ5N2A%;)"/I3$," _I,^)XG2;!42+$ .( M_M>BGH0UY A1.!<`I"<[EMAIL PROTECTED]>#VY)8*A#(HYQ=L5!*4S#466 MPF:#ZJJ8T":8.HX<']HO1+G=3:# 6%<E546%I:J\&!:QY%E,\B^&X=&H=IQ! M>&SO*50EY'U ._<<1:(KFP2 V]&0);[CK*+Y(G;"020&[EMAIL PROTECTED]/GR_G0SBP? MWH:B<B&:<O8=]!W2T S#G]'N$L;6X'=^K [0HI7:HO(>YT9%S]TKM*H^B%B% MB8L<)MYZ0H7]1AT<$7*&4 *GR,+8HL?!L=&2H/J==,BDBA EZ/$6;6%:2*DR M\X5I]\X>"[EMAIL PROTECTED]@FW2R0(6+P"]7^Z$$<0MYB1#$D4^TL4C,IOB`/Q'O ,PYO(Y MRC)[EMAIL PROTECTED]'B1\5%,!AEYL2VQB,_+*.AE8E% #8[L880H5=CR$?=9(): M1([EMAIL PROTECTED](-+F!FH&I#7U$(^O&4%535 )24+D#D<\%<P'O;Q.L#IL M@;8N!09*GZ_[>, _7^ACH_[?_/V__/Z.C[/UT/N4;[ONL^[]C5F <!F$<6&0 MR$D>HDA\IH#WY!^24<)$I ^;'[EMAIL PROTECTED]&(@GI(!\#8C<6'[EMAIL PROTECTED](U#G M.'L31$^,UCH*X$6T)&T**&1JI$H%(,!*KW4H6BW <LT<4,&['#"@?JD%`!V\ MPGC<$?[-IUTG)H'@UI232:B9?LFO"R++*FOAJQK4J41YH<B", ]W/UV%N-L^ M&T;#C*"FB-,:`^I?284F8G<@IBJI38$,.*(<27JQ942(/Y#R&FB$%F'K%(%# M<P`S3F71W<8ZA8#B5XE/DD#1;KC,E3G0)4 9'[EMAIL PROTECTED] M"Y&[EMAIL PROTECTED]:&0P0,45T,[EMAIL PROTECTED] +V9AL- MB):[EMAIL PROTECTED]:24E2+4`@)[EMAIL PROTECTED]<.R0PM%9JUK"$LUK$'[EMAIL PROTECTED]@ MIE1CO 'C\,=NE>&,5H29`Q6R* PQ:P"RSC/QK0[QPGVU2P+B#-N&&*X43 <F MW:G4-@'52Z>!M/[EMAIL PROTECTED]>5%3OSX%E+%%\(45:PY(B 8VO,?BY$=.F9$1 M(1T))[EMAIL PROTECTED] $Y>S--.H*:_[40)&1/FC1VD-_C4&,8-MMF^X9NJ/>_<,OT1$= M4#ZJ<I#5KF$LO>$$[_.%'&"%T#50HM"T/]LWRP0\HMY>)@FA4*:2$)E&@?_? ME;'[EMAIL PROTECTED]"<T!#N%\>=YH9F"PTA1&"D><U-Q1NO)")[EMAIL PROTECTED],D` MP)YQ#>>;.CQ[M434E53.ST<<@L^]"<_4PTC?95G:PE#B-0IO:?;>TF''XW3V ME7#V1#J0/Y_Q%[[!8,[EMAIL PROTECTED]:.$)(_#Q16#0&LS,`S0F4<<8.L32FZ)0 MBDV0,\E"-ZDXY,Z AJPT(EBY<H*X'+) [EMAIL PROTECTED]"#216!&_027.3 M%VAWZ5<$F_NOU3YY,95)(S3.FW7-NYH&@PW'" RUD:;92PPL8"X%QG+J%A,P M([MBA&W)!N8M>^ [EMAIL PROTECTED]/[EMAIL PROTECTED];#U8S(\UQ7. M3?>#FN>,"[^IP#-=.#8>_34YM"V.<$,Q&L4;)I/.PS; H"_7!P%0*9Y%' \= M(YT&N2.=CB=6%P8(YF'<JR1S=AD)MD..BWF5>X-$M)&^W+N,#+*4S;6"S(.M M9F=U;!!SB5"^)0XCD%13)IJ]ACV<07O>-IM<BB!Z9(X<:[EMAIL PROTECTED]($:WQ. M*B7G9YG+,SN+"'#B'N0[CN(^`'7EN*V(9IILS>)J"-H)M!1I-%2VTL0,330= [EMAIL PROTECTED]) =(#N4EJ.K1*<L#<+:G%X14T:6)!O0S" :+ML. G&[EMAIL PROTECTED]@Y,V M!1P1J4.D#$(:EW(>*P2FPP32!V*=Y&X(JJJBQ#JIXEA!U#J<H;4#"0N#30.0 [EMAIL PROTECTED] #4ME>A+[^93B\FX$W0L;_64)Q"V6$#-=%Y7-V'3]]FYB!KA$ M( #F4!7V!D1?BT8G1E7N/L/@X[SVLTF6$;$[-#;TP529*2G)P()S"(H,T%Y+ M,<I,/[EMAIL PROTECTED]@=6I"S\IIB&F<HFG]2.CK,[EMAIL PROTECTED]/#"R)>*,NT'0 MAJ2R;")-^S=B!;:<@&L/28"VD$W"F:![/[EMAIL PROTECTED]&@8814,WV>S4X M<W.1LQ"&95Q$3Q-D)!)[EMAIL PROTECTED]&_,PYEY( 6?!Z0-OAV/>&=-;82PNPLIO208*P2 M+;"3%BN@/ ><R@@=0WX&P/ B"V??H?O/O4D'IMQS\80;1<I746U/MSKYS3,@ MGNN C8>G#0\[$4T$03)"$C)$(.BADV +-P.X=P>#`8PBIO,C(3[Q,;>X.LPY M;Y+%D<K,OH!Q( 0QP&Q@/%)C"D=FH!P*<9[H(E!9LELZ;S8U&/-<9*8QJUKZ MJW="@W1Q#<H')GC:K/AJX1';2# AK]P(]J %]SC6"E) (#;)BP!"1M2M4*O6 M@:H`8J'QF B!K$L;[4[G3455UQ"1.!PU9;]'*U2E(FFUOA/,4?'!\_M]<6P. [EMAIL PROTECTED]"+&B-_R9KC(X`T$0=F\ G1HQR7W0/A]QL`"$( MC/XLU!JBXX4,$&[EMAIL PROTECTED](4JE#+1"N',%43:XUJ7T6V*DT.%AGD`<'V( ["D,@# MX;+B1LVSJ'C7[&#:CG YQZ[*9"# ]4">V?PE/VX:'I?H,T<TZ# 'J,[EMAIL PROTECTED] MVM<.D[\3,+6+J1CD4)[EMAIL PROTECTED]&"8)[EMAIL PROTECTED])34">G:X$43$$ M0AI)H4-Z,B*J(D%.=+'B'JC2.C#E`.P7M'"=JTBG"]TN)6DRMU9Z2^8%$\7= M&:X)MLU F!F(R%R!I!CL,,S ;LETJGS080#^?1(TU2)P2":4S]$(UKTP!AS( M6!F."8./[EMAIL PROTECTED](17S0)WH"R!N$/-Y2,1!$5$0T$2R0 M%)4I- 'U4 XZ(?@<^I/ W!?6V=2#T0,$(8"J19?)H.Y'0GX.AUI#%<I2%HQ< [EMAIL PROTECTED]"OI,E+<Z)7;0<(J2")NWPWDHFM%D2=7:[EMAIL PROTECTED], MC>:P3Y:$E<4)]%&\L%#C"G$#Z5^,^HB6`+&V0#R>,3B:J;9F&:,$\=X[P Z8 M= '3$($39"[EMAIL PROTECTED] Y\20]69!A)HA[SE'K/ P-?CW@;[$-U<07G0[H)R/A M0(><W =5!\;=\&QT6XAC7K%"\0`_+VVX2;OF+ V(<=PI`AMIIJ"EN!7$.V_B M<[EMAIL PROTECTED] =-^6(3]$UZROM<7A9AJ M*U"T30KU>0;%5QBNBQL! MT8)>'+P8VOTXYKN*FT'?>B0L':["V9#J`GEE[@;)LGD7:M0%)D8HJB+ZP/D@ M[?1P#<&@!P2)%B6(:$XHGD2DA(4PD%"L)*/GA,[EMAIL PROTECTED]@(^5(PB0C& M$(0(1BH5(0^#ZOO*GTO#OE*!F$A(&5(R"04[P5[QP(4MGWKWNO.!#>88'>_0 MP7R>JR=EFFJ6N4XP\!X^5'$3\S 22!(C! 1!"Q%4H2B2BT5!404)"-,"PJ13 M`(3 )$2(,5(@$B\?!X 3P@&3T(: 6A/LGB[ [#;5$J$D0G28A?:)!43,@=E@ MP]71L>R5S@'$@)N%=KR/'A805/0NR$AA09,CN5PD4UU/.C[T3TV1$6S2R"0- M($+\`LE /7GJR1))"1"[EMAIL PROTECTED],''VE+Z=^_9O @A7PB 60,?PMTZT27"_CR46> M7(ADMU*%::("I"09`T&D,T(X$X(2A# 0DB1,0L$D)"[EMAIL PROTECTED] 1 P,;=)1 MHO"*A\(B:G6>$KW2Q:C8(([EMAIL PROTECTED]"04\\F2#3!!2W.(*8$W. M`/F)`!9^A9 ZX+2+(B]"VM8+"Y:_E!49^0T'1FLL/C_9(P->E'N!$[E.L#(^ MK=P$^1GNUL[]ZD]"!T4")3T'`D.>0E0<#G3$R3)#1F&P(>(]2C6*= ,0)L"G M%(!&!!> J'[EMAIL PROTECTED]"ES5'[EMAIL PROTECTED] =#FRF=4$W51?RSN&_>>W1 M[QN*< ()SR0DY1/1K&1.4M?A#ISIYX=)'8:0/E@(AO(J;[EMAIL PROTECTED]<=F*"H469,9 M"%"0$;0`VH2>49]6Z>9/,!P!:!+.F$#DAX>^5S-I?F)+\9[RR-)J<09$;TAZ M#0>5].#I'[EMAIL PROTECTED])K)'+T@;C/2"*7<@61)8"POOG_SS42 M[HG$A;Y:`M:2@'[EMAIL PROTECTED]'97VP#>,4NT1#L,-PR'L]N:.62$K)"@(& 0-)1]2A1 MDBUA%$A$$JJ<XT%S\U7,??A?7,4,;8C0T$.S"&$[$(D)(0H:&,MF:90AA$2Y M2&*)@#8"HEE"BUBDZJT:PTEA9+$.0?4]XTAJX*-*`A8R*T+(6F([EMAIL PROTECTED]@MELUJ [EMAIL PROTECTED]&@-`7/8>'[EMAIL PROTECTED]"12E+QNB)H(G:G!)S&U4=HKL"@*$F"C1 [EMAIL PROTECTED] UA@ [EMAIL PROTECTED] ?$!%06IX>TE-`,&"G+IY/!([EMAIL PROTECTED](K,G=[^&&M*)$ M"BBBI H=06<D)U60]3M]7\?D*AHCCW?<,<J\![1F`"E6B:""*8BFU==2`6FU MHC>P+3#<[EMAIL PROTECTED]/4$3HA([EMAIL PROTECTED]"*'[EMAIL PROTECTED]'>)U)$=2-5O;6E2: MF]:[EMAIL PROTECTED])0I\G:155<KOT!AB&1D#69.!9.4!D!AE8%!(.14D88%$,88/#D$& [EMAIL PROTECTED]'688%+F/0G$MFXTJ.A(+2:!+:A2#% &C<%J#2!IQF)[EMAIL PROTECTED]< \( M/;[EMAIL PROTECTED]"T$.^7^Y"BH8@,Q:PEL4&3'[EMAIL PROTECTED];/X+T\20;6/I-4==P+ M@/8+[/U7#)1.<Q"$D[&[EMAIL PROTECTED]:E%/P^4-=A.#R1`R.8U@>SG92#UP(GM!%# MJ ,22E B5>\S%*(D:[EMAIL PROTECTED]"V:0RW(Z,2(MQ5<[EMAIL PROTECTED]((I<Y5! M0P/AZ:'(#R!'UX"\5*H8"#]4W\9K>0_Y4D7O1NL8GFE2$D3M!'1Z<1B"DZX* M8K3SA-M2T+$>K$UH<9)#RL#DDQ&FF0"D03XI*3=,R2H>P$ #1%$>#9KJP3[2 M&7=X%"ZFS%1R!+(%(4*=B (<;)1U*2#UJ;DP][K$Y#8XJC[8;^7WS,-,!B3: MJG. )6[QEW2"8">Q53I"A( $C4DJ`J<`MHBGB<*,4,+%(23=A*^(A\0='Y30 M'?O"D+Y[$5).")@ZP9);C/7O8$N+U=.DE_#!4^Z(]" 'G+I'=5,9)6J'8 (; M03QF)[\%L7%&01$ORFZ `&8/L6 /U,A$PCN$-A!!#.(@F$)-E"0070=QIT"> MD3B$SCV3VEJI(2 1Y03P(?7$!=H)K6:>E"'%$U$WELH'<[EMAIL PROTECTED] MCYK&[EMAIL PROTECTED](.S8%:],=2D^ZYOPE .CK +Q&[EMAIL PROTECTED])$(W0[()[EMAIL PROTECTED](0W KN>7H M*5R&7$"0CPQ,ER,B@,!83+G-:;V,3>U"UI4T$K1(332NU)0PE(@YLE&:FD"" [EMAIL PROTECTED])B#A$&X`XUA$;A3CZV G)%1!P0#&880;A ,#BP&($A@<>5$ M'%5(!_SHRJ;^!.$^.; *;1P8$OL$T<[EMAIL PROTECTED]:1 RX$/4<T>D`3?H`;&*Z1&)% M*JK!5I=?9IM^3OP$ZCT9B<L45MX4,D[-Z;$P[;YN%HB:49MR0,@NB<QST)8& M$'!'AXNTM4'6"<$+'V*GN,P)R#W8X VH6#0_1O'7&)C#%JLP.)K4,?1:T\)D ML'RS2\D4W*'.AN%;"[EMAIL PROTECTED](25R%&9'40?FADR$(YBJFWL\PGYT-X'^-#P*' MW ![^.S9/')VN[*?`R43`*74(7H:(P$AZ55:@!I4PKR:B;.D\L0)Y!$W(&*5 M-D7R`AI7N!.%#O[PA* HBC$,QJHD:1]]4QR+69$CC%BE,[EMAIL PROTECTED]@6,*60 [EMAIL PROTECTED]'<A5-1V"V2]U&6&&X34UB;^&-*:^)$FNNI)-+D*84'Z730$IC&K1`4<' M?59A-W"#ZXX"[EMAIL PROTECTED]/>6;*C[(.E[\X*-VMTY:M)[EMAIL PROTECTED]>[EMAIL PROTECTED] M!B"28C-LNC0BI5,;'EV;&P9.;[EMAIL PROTECTED]@[EMAIL PROTECTED]"`DF )RR'AEGT M<[>7,^[DN@<_CRZSK?HNM4^E=>3<XL/:T[4L#.BK"1D384C *B0I,IH<"DB1 M#P787)00)3%RT%7[HJRLPM1,)A,11<O4I,?G"$P7;5&L\A*T*D=A"@C>"A2. M#>1 S,D6@&)2! $(`L*MB?CX]22#S1>8-H8;=[BZ8)48^P)A6!X&]0<F"1F\ M.!-,[EMAIL PROTECTED]"U\BYL[%X)181R:1ONA#.)9 G>XJ]'4Y!)N[("DF&4\";!M(YF$#D M0V(>P2DA("QB2 @VCXA^2E]4[&<V77NC58"8H':9-X%5Y612PM6(RK(`4 >& M'G1B:*6$E65F)CZ^),B=02T(1Y QPB44!LAW&O$P=$ [EMAIL PROTECTED]":"P2&%*( M$-$*1B#F`WRAH,SBR2TQF#M*V9F$YPA5% ! 2BP$)20$"CKC4;T8&21!% 3* M<&W&'9&(2N,FR> 78;([EMAIL PROTECTED],P<ZK>[EMAIL PROTECTED]"S>FC=FX<(2$.6 MFI<HP%:;KMQ&@(=1'$<`:7$G8X/8Z'_,?Z*Z?S[2R9>[CQZ Y]4S8)MJ2H,8 M16";)3'KU?!:ZPP/7[Y39<[EMAIL PROTECTED]<%>C= #=YXU!J'VM8$26L$R]8$ MTK07.TZKH'?Q<"KZ"XV((9]25051"BJE5%15JY*T65#9-BDN:\VKX1"]+JS@ M0FHUB!W^B#O=2)('"Q1;@;;(EB2,W%6A>%-4J*<P=>^*IW^:1!C;390B<-!# MMZ5$9N/,X8VM0B$TP87;80)2T1O[ZMK>[EMAIL PROTECTED],++A,8AGT<7+NDBB.3;5X=K*B MIBG+3:<5H1,4QA*1'+08"2Y 7-XG+_4$61JW#E$9"YBB+26?"06JKP;7L$#E MLEHHE#7&*K-U*#2"$)QA[IZM%&T!"EY&GU7#+::.N^-\!10AG?F]IDR2Q>9H MDTC1!K1Q)@$;VD>$X3F&^>MKF(!TBY,-UB"[EMAIL PROTECTED]"##)*BUA%I%<8F.0=I"46H M<,8X#8G&SO8D8BFVV$+ !(P$D#2A$H3 0$I0L!50\\& &F!"860"`"[+!(;L M<UKH5'-LNK6&ITGV)- 1T-8[=C8U"3URAQ.Y2B0Z*0:CN$G&>YAPZ 8=4TX( MR0%W.'<"DYT#``Z+R=KP#UJ:2IJIBH)DB8B(*8B(BAJ)AI((*JHHD:J((JFA [EMAIL PROTECTED]@ADBH(HB2(D"&4A:HJ()&)"2H>43N4?08(@=J=@@67S1]/3(6;:&!1^L0 M(HKFB6""!Z3O=@,B#VGB)@)A*/,T39(!`B,L%(WXIRVA+:"[EMAIL PROTECTED]:&;M9W=L&/ M9Q,&21,7%#,LJF4F-#^R>V%*-VYSV3N',0V04VD$>8A)#<)&`$C"@"R;%'%R M&9'?!*0G]^NF]K27`JI+U5%ZQCPQ0;76!\D*$B;8714.1)?5E0^<DGPL@'N3 MI2!21T.V`F0!W8V<.S0!EHVL-YEUL1::VSJH4+0`FJD5"-"2MR/=\+1[2P+' MO>]#-XD"&%W"HB&(G #)',<$RPD)&@<P#"7G#(21*E\PNH5:E:BBOEO Y#([ [EMAIL PROTECTED]&:<HSH"] ;H&.3$9+0&60D8XK),[EMAIL PROTECTED]"%D([EMAIL PROTECTED],#DQ`48F M1BTAF8YF5D9 X!"[EMAIL PROTECTED]'"D2$"0+60SP2=XG!=0\E$'+:\A#,D(I"(IW>K M`@)=2D.LUY(2!P@,XX:NF9%16%A%ZV&X4U(C\AZQAY"=<N/[EMAIL PROTECTED],"0X<^BD- MR%[5+1).3BCE11$)HPH+,<;(:(L6Q"R$Q8##V9]HTX14;[EMAIL PROTECTED],( MK49#2Q%T'V[484I1$21!(#1,5!'R3LT5+&W,-$0N9J _MZG!II"\(@"],DBQ [EMAIL PROTECTED]@[EMAIL PROTECTED]<'[EMAIL PROTECTED]/:@CQB%([EMAIL PROTECTED])40B$$I$A\Y6F0NT^8-0T M[@,"^! @1A&#!0A049CF"P^BLD.9./<[EMAIL PROTECTED]/TL&$"IQT4X5C9Z^D,54SY M#[6"G*"5@ [EMAIL PROTECTED]>[EMAIL PROTECTED],P^.=00`\8[-U`;?S&L32<>_$_^!?O7>V"2"2 M"[EMAIL PROTECTED]&7*>-FWP.`,> #<;B&8)HQ"!L0YS(!G2Q"1.?'%QK`-'K!M54KM7@ M4%($%[\)"0(1!"P@<H]+W?UTH+C]S$6^4'0F"<L77V.<-'JIT"P+U=2B:G(9 ML'(KT*KGKEYPU">F<[EMAIL PROTECTED])" [EMAIL PROTECTED](EB'A#5$"QH)E`6CC#. /FZH> M/0\!FHBDC(P)""!&[EMAIL PROTECTED]"/E84J&16$C1$@<[EMAIL PROTECTED])YW M*J<[EMAIL PROTECTED],A -(Z$8$S<,G*$743+31-H(<EMZ5-OY:4LO$-FV[RL=XR4QIC< M/)R";@#:,D#EE P4\PE4RPE =2 _0>WND /:":J<#QHL0XR0+U*8T4R'PN$8 M:&:#1Z3$T%1Z8[U>P<[EMAIL PROTECTED]&(GN6P-"8"A(S&-HQ(ZIF,'(>F:P=_9A< MA$R46*!BH2DA6% Q(:#X;C\OB*XP=5S)J2AQJ(GY?""1%422=2M:$7+2D#O= M55)U>9<"N>0BXC7-P7 E:0MR:$@@4^TA"IM=AH-E;0++$$=P%WD[H&@H`]!% MD$S #&O:^H1<Q'TH>:"[EMAIL PROTECTED]: I5/<[EMAIL PROTECTED]) .'<'#MJJQ"[EMAIL PROTECTED] M?^ 940&D(XH?\)X&!,G$Z21UYV40<P& L81BY#8SD4054L<<ZSD-ZW.$)#P# G_M();$XPW(/$NR -3,<[-[+DX0^#7T1W9B(G_\7<D4X4)#,[?%Z ` end _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost