December 20, 2004
> >Plus, it seems you still have the === identity token in there, wasn't that
> >replaced
> >with 'in'?
> 
> The === operator, AFAIK, is indeed the same as 'is', which I'm sure you meant rather than 'in' (just clarifying for newbies, no offense meant).  In the static this() constructor of the DLexer class, you can see the line `keywords["in"] = TOK.TOKidentity` ...

Lousy kharmic retribution... that's what I get for correcting someone else.  The line is actually keywords["is"], not keywords["in"].


December 20, 2004
James Dunne wrote:
> I don't want to host these projects on dsource.org due to the overhead of the
> SVN repository (since they're only single modules) and that dsource is (I'm
> sure) intended for medium-sized to large-scale projects.  If there was a
> code-snippets section, that would be perfect!  

This may be a good idea.  I'd say put them in the Bindings project, because it's read/write for everyone, but your code is not really a binding to C.

Perhaps it's time to start a project that has D syntax/grammar/beautifier code (other than DGrammar), and we just start by dropping your work to-date in there.  The SVN repos is web-enabled, and you can make project downloads that point directly to the repos, so it will be quite easy to make accessible the two files you have so far.

The other approach is to make a project like Bindings that everyone can upload utilities and tools they've created.

Thoughts?

BA

December 20, 2004
As a temporary solution, that sounds great.  But I have a few issues with that... Seeing how its read/write to everyone, what's to stop someone from simply removing the files there?  In SVN, can I be the only one to modify my modules?  For now, your solution works ;)  I'll throw my stuff in the Bindings project.  Keep me informed on anything you'll be doing in this area.

Thanks a lot, Brad!

In article <cq62nv$2lpp$1@digitaldaemon.com>, Brad Anderson says...
>
>James Dunne wrote:
>> I don't want to host these projects on dsource.org due to the overhead of the SVN repository (since they're only single modules) and that dsource is (I'm sure) intended for medium-sized to large-scale projects.  If there was a code-snippets section, that would be perfect!
>
>This may be a good idea.  I'd say put them in the Bindings project, because it's read/write for everyone, but your code is not really a binding to C.
>
>Perhaps it's time to start a project that has D syntax/grammar/beautifier code (other than DGrammar), and we just start by dropping your work to-date in there.  The SVN repos is web-enabled, and you can make project downloads that point directly to the repos, so it will be quite easy to make accessible the two files you have so far.
>
>The other approach is to make a project like Bindings that everyone can upload utilities and tools they've created.
>
>Thoughts?
>
>BA
>

Regards,
James Dunne
December 22, 2004
Anyone interested in my dlexer and dparser modules will take a look in the bindings project over at dsource.org!  I've taken to completely rewriting the parser code.  I slightly modified the lexer code to work more closely like DMD's front end lexer.  I'm gonna do a straight conversion of the C++ code to D for the parser.  It's working well so far, just gotta define all those darn classes! I'll throw my work into the bindings project as I go along.

Regards,
James Dunne
December 22, 2004
"James Dunne" <jdunne4@bradley.edu> wrote in message news:cqb842$1uud$1@digitaldaemon.com...
> Anyone interested in my dlexer and dparser modules will take a look in the bindings project over at dsource.org!  I've taken to completely rewriting
the
> parser code.  I slightly modified the lexer code to work more closely like
DMD's
> front end lexer.  I'm gonna do a straight conversion of the C++ code to D
for
> the parser.  It's working well so far, just gotta define all those darn
classes!
> I'll throw my work into the bindings project as I go along.
>

Great work James!
I am not only interested in this but also succesfully using your lexer. It
is used
in a translator D+some_new_features->D.
I have this working:

int[]  numbers;
numbers.length=100;

(each[int index] numbers) = index+1;

int sum=0;

sum += (each numbers);

All i have to do is fix a bug that stops
writef("%s\n",(each numbers));
from working and it will be updated to dsource as part of the
lr-lalr parser project.

Thanks again for dlexer :)


> Regards,
> James Dunne


December 22, 2004
>
>Great work James!
>I am not only interested in this but also succesfully using your lexer. It
>is used
>in a translator D+some_new_features->D.
>I have this working:
>
>int[]  numbers;
>numbers.length=100;
>
>(each[int index] numbers) = index+1;
>
>int sum=0;
>
>sum += (each numbers);
>

Glad to see someone besides me benefiting from my work!  And since dlexer is working just like the one in DMD's front end code, it might not be much work at all to convert that parsing routine back to C++ to throw in the compiler itself ;)

>All i have to do is fix a bug that stops
>writef("%s\n",(each numbers));
>from working and it will be updated to dsource as part of the
>lr-lalr parser project.

Is that a bug in my code?  I was pretty sure I tested all the string parsing routines fairly well.

>
>Thanks again for dlexer :)
>

You're very welcome!

BTW, I've made an incompatible change to dlexer unfortunately.  It is not released yet, but here's the change:

The nextToken() function no longer returns a Token *, but returns the token value (TOK...) of the token parsed.  The actual token structure is a protected member called 'token' in the DLexer class.  Then just check the 'token' member. This eliminates a lot of extra memory allocation and garbage lying around, since we just reuse one Token structure.  peekToken() also works similarly, as it should.

I've also changed the layout of the Token structure itself.  We're now using a new structure Identifier (token.ident) to reference identifiers, and the ustring property to reference string literal tokens (token.ustring).  Identifiers are kept in an AA to eliminate duplicates, just as they are (essentially) in DMD's front end.  Actually, they're stored in the stringtable, but an AA works similarly for our purposes.

Also, numeric parsing works (but still not real number parsing) and returns values in the fields token.(int32value, uns32value, int64value, uns64value, float80value).  All integers smaller than an int32 are stored in int32value. But it doesn't matter which member you choose to read from, since they're all in a union ;).

I'll throw this new version up to the bindings project now.  Sorry to everyone using the old module, but it shouldn't be too hard to convert over to this new format.  For history purposes, the old dlexer module is in bindings revision #11 and 12, and I the new one is in bindings revision #13.

Regards,
James Dunne
December 23, 2004
"James Dunne" <jdunne4@bradley.edu> wrote in message news:cqcs5s$118n$1@digitaldaemon.com...
> >
> >Great work James!
> >I am not only interested in this but also succesfully using your lexer.
It
> >is used
> >in a translator D+some_new_features->D.
> >I have this working:
> >
> >int[]  numbers;
> >numbers.length=100;
> >
> >(each[int index] numbers) = index+1;
> >
> >int sum=0;
> >
> >sum += (each numbers);
> >
>
> Glad to see someone besides me benefiting from my work!  And since dlexer
is
> working just like the one in DMD's front end code, it might not be much
work at
> all to convert that parsing routine back to C++ to throw in the compiler
itself
> ;)
>
> >All i have to do is fix a bug that stops
> >writef("%s\n",(each numbers));
> >from working and it will be updated to dsource as part of the
> >lr-lalr parser project.
>
> Is that a bug in my code?  I was pretty sure I tested all the string
parsing
> routines fairly well.
>

No! The bug is in my code ;)

> >
> >Thanks again for dlexer :)
> >
>
> You're very welcome!
>
> BTW, I've made an incompatible change to dlexer unfortunately.  It is not released yet, but here's the change:
>
> The nextToken() function no longer returns a Token *, but returns the
token
> value (TOK...) of the token parsed.  The actual token structure is a
protected
> member called 'token' in the DLexer class.  Then just check the 'token'
member.
> This eliminates a lot of extra memory allocation and garbage lying around,
since
> we just reuse one Token structure.  peekToken() also works similarly, as
it
> should.
>
> I've also changed the layout of the Token structure itself.  We're now
using a
> new structure Identifier (token.ident) to reference identifiers, and the
ustring
> property to reference string literal tokens (token.ustring).  Identifiers
are
> kept in an AA to eliminate duplicates, just as they are (essentially) in
DMD's
> front end.  Actually, they're stored in the stringtable, but an AA works similarly for our purposes.
>
> Also, numeric parsing works (but still not real number parsing) and
returns
> values in the fields token.(int32value, uns32value, int64value,
uns64value,
> float80value).  All integers smaller than an int32 are stored in
int32value.
> But it doesn't matter which member you choose to read from, since they're
all in
> a union ;).
>
> I'll throw this new version up to the bindings project now.  Sorry to
everyone
> using the old module, but it shouldn't be too hard to convert over to this
new
> format.  For history purposes, the old dlexer module is in bindings
revision #11
> and 12, and I the new one is in bindings revision #13.

I'll check it out and make the changes.

>
> Regards,
> James Dunne


December 24, 2004
In article <cq30e7$31fq$1@digitaldaemon.com>, James Dunne says...
>
>Hey all again,
>
>I thought I'd release my D parser now.  This puppy is still very much a work in progress, but will successfully parse relatively simple D programs.  Writing a parser isn't very difficult, it's just a lot of work ;).  This module uses my dlexer module I released in this thread.  And so, it is a good(?) example of how to use the dlexer module.
>
>The point of this module is to parse D programs for code-completion purposes.  A few simple structures are used to represent the module's information.  An example program is supplied which dumps out the parsed module's structs, enums, classes, functions, and variables.
>
>I should mention that functionality is somewhat limited: version blocks aren't parsed correctly, and the type parsing on identifiers and functions is somewhat lacking.  I do intend to fix these issues in the next couple of days.  Test it out on some D programs you have lying around (or the phobos library for a good kick).
>
>Regards,
>James Dunne
>begin 0644 dtags.d
>M+R\@9'1A9W,@+2!$(&UO9'5L92!P87)S97(-"B\O("A#*2!#;W!Y<FEG:'0@
>M,C`P-"TR,#`U($IA;65S($1U;FYE#0H-"B\O(%!L96%S92!F965L(&9R964@
>M=&\@9&ES=')I8G5T92!T:&ES(&UO9'5L92!I;B!A;GD@9F]R;2!Y;W4@;&EK
>M92X@($D@;VYL>2!A<VL@=&AA="!Y;W4-"B\O(&=I=F4@8W)E9&ET('=H97)E
>M(&-R961I="!I<R!D=64N("!9;W4@;6%Y(&UA:V4@;6]D:69I8V%T:6]N<R!T
>M;R!T:&ES(&UO9'5L92X@($EF('EO=2!D;PT*+R\@<V\L('EO=2!M87D@<')O
>M=FED92!Y;W5R(&UO9&EF:6-A=&EO;G,@<'5B;&EC;'DL(&)U="!Y;W4@87)E
>M(&YO="!R97%U:7)E9"!T;RX-"@T*+R\@5$]$3R!L:7-T.@T*+R\@+2!C;W)R
>M96-T('!A<G-I;F<@;V8@='EP92!D96-L87)A=&EO;G,@:6X@:61E;G1I9FEE
>M<G,@86YD(&9U;F-T:6]N<PT*+R\@+2!I;G1E<F9A8V4@<&%R<VEN9PT*+R\@
>M+2!V97)S:6]N('M](&)L;V-K<PT*+R\@+2!C;W)R96-T(&5X=&5R;B`H='EP
>M92D@>R!](&)L;V-K<RP@(F5X=&5R;B`H='EP92DZ(B!A;F0@(F5X=&5R;B`H
>M='EP92D@9&5C;"(@=V]R:RX-"B\O("T@8V]M<&QE=&4@86-C97-S(&UO9&EF
>M:65R<R!O;B!F=6YC=&EO;G,-"@T*;6]D=6QE"61T86=S.PH*:6UP;W)T"7-T
>M9"YS=')E86T["FEM<&]R=`ES=&0N<W1R:6YG.PII;7!O<G0)<W1D+F-T>7!E
>M.PH*:6UP;W)T"61L97AE<CL*"B\O('!U8FQI8RP@<')I=F%T92P@971C+B!A
>M8V-E<W,Z"F5N=6T@86-C97-S4FEG:'1S(#H@:6YT('L*"6%R56YD969I;F5D
>M(#T@+3$L"@EA<E!U8FQI8RP*"6%R4&%C:V%G92P*"6%R4')O=&5C=&5D+`H)
>M87)0<FEV871E"GT["@HO+R!C;VYS="P@9FEN86PL(&%U=&\L(&5T8RX@;6]D
>M:69I97)S.@IE;G5M(&%C8V5S<TUO9&EF:65R(#H@=6EN="!["@EA;4-O;G-T
>M"0D](#!X,#`P,2P)+R\@=6YU<V5D"@EA;5-T871I8PD](#!X,#`P,BP)+R\@
>M=6YU<V5D"@EA;49I;F%L"0D](#!X,#`P-"P)+R\@=6YU<V5D"@EA;4%U=&\)
>M"3T@,'@P,#`X+`DO+R!U;G5S960-"@EA;4EN"0D](#!X,#`Q,"P-"@EA;4]U
>M=`D)/2`P>#`P,C`L#0H)86U);D]U=`D)/2`P>#`P,S`L"GT["@T*+R\@02!M
>M;V1U;&4@:6UP;W)T.@IS=')U8W0@1$EM<&]R="!["@EC:&%R6UT)"0EN86UE
>M.PH)86-C97-S4FEG:'1S"6%C8V5S<SL)"2\O(&UA:6YL>2!F;W(@<'5B;&EC
>M(&%N9"!P<FEV871E('%U86QI9FEE<G,*?3L*"B\O($$@=F%R:6%B;&4Z"G-T
>M<G5C="!$5F%R('L*"6-H87);70D);F%M93L*"51O:V5N*EM="71Y<&4["@H)
>M86-C97-S4FEG:'1S"6%C8V5S<SL*"6%C8V5S<TUO9&EF:65R"6UO9&EF:65R
>M.PDO+R!M86EN;'D@9F]R(&EN+"!O=70L(&%N9"!I;F]U=`I].PH*+R\@06X@
>M96YU;65R871I;VXZ"G-T<G5C="!$16YU;2!["@EC:&%R6UT)"6YA;64[#0H)
>M5$]+"0D)='EP93L)"0DO+R!T>7!E(&]F('9A;'5E<R!I;B!E;G5M97)A=&EO
>M;@H*"7-T<G5C="!E;G5M5F%L=64@>PH)"6-H87);70EN86UE.PH)"6-H87);
>M70EV86QU93L*"7T*"65N=6U686QU95M="79A;'5E<SL*?3L*"B\O($$@<W1R
>M=6-T=7)E.@IS=')U8W0@1%-T<G5C="!["@EC:&%R6UT)"6YA;64["@H)1%9A
>M<BI;70D)=F%R<SL*"41&=6YC*EM="69U;F-S.PT*"413=')U8W0J6UT)<W1R
>M=6-T<RP@=6YI;VYS.PT*?3L*"B\O($$@9G5N8W1I;VXZ"G-T<G5C="!$1G5N
>M8R!["@EC:&%R6UT)"6YA;64["@E4;VME;BI;70ET>7!E.PT*"6-H87);70D)
>M;&EN:V%G93L*"@E$5F%R*EM="0EP87)M<RP@=F%R<SL*"413=')U8W0J6UT)
>M<W1R=6-T<RP@=6YI;VYS.PH)1$5N=6TJ6UT)96YU;7,["@E$1G5N8RI;70EF
>M=6YC<SL*"@EA8V-E<W-2:6=H=',)86-C97-S.PH)86-C97-S36]D:69I97()
>M;6]D:69I97(["GT["@HO+R!!;B!I;G1E<F9A8V4Z"G-T<G5C="!$26YT97)F
>M86-E('L*"6-H87);70D)"6YA;64["@EA8V-E<W-2:6=H=',)86-C97-S.PH)
>M86-C97-S36]D:69I97();6]D:69I97(["@H)+R\@26YH97)I=&5D(&EN=&5R
>M9F%C97,Z"@EC:&%R6UU;70EI:6YT97)F86-E<SL*"@E$1G5N8RI;70EF=6YC
>M<SL*?3L*"B\O($$@8VQA<W,Z"G-T<G5C="!$0VQA<W,@>PH)8VAA<EM="0D)
>M;F%M93L*"6%C8V5S<U)I9VAT<PEA8V-E<W,["@EA8V-E<W--;V1I9FEE<@EM
>M;V1I9FEE<CL*"@DO+R!);FAE<FET960@:6YT97)F86-E<R`H86YD(&-L87-S
>M97,I+"!C86XG="!D:7-T:6YG=6ES:"!B971W965N(&$@8VQA<W,@;W(@:6YT
>M97)F86-E(&AE<F4Z"@EC:&%R6UU;70EI:6YT97)F86-E<SL*"@E$4W1R=6-T
>M*EM="7-T<G5C=',L('5N:6]N<SL*"41%;G5M*EM="65N=6US.PH)1$9U;F,J
>M6UT)9G5N8W,L(&-T;W)S+"!D=&]R<SL*"41687(J6UT)"79A<G,["GT["@HO
>M+R!!(&UO9'5L93H*<W1R=6-T($1-;V1U;&4@>PH)8VAA<EM="6YA;64["@H)
>M1$EM<&]R="I;70EI;7!O<G1S.PH)1$-L87-S*EM="6-L87-S97,L(&EN=&5R
>M9F%C97,["@E$4W1R=6-T*EM="7-T<G5C=',L('5N:6]N<SL*"41%;G5M*EM=
>M"65N=6US.PH)1$9U;F,J6UT)9G5N8W,["@E$5F%R*EM="0EV87)S.PI].PH*
>M8VQA<W,@1%1A9W,@.B!$3&5X97(@>PH)<')I=F%T93H*"0EA8V-E<W-2:6=H
>M=',)87)$969A=6QT+"!A<D-U<G)E;G0[#0H)"6-H87);70D)"6QN:T-U<G)E
>M;G0L(&QN:T1E9F%U;'0["@H)<'5B;&EC.@H)"2\O(%1H92!P=6)L:6-L>2!A
>M=F%I;&%B;&4@;6]D=6QE('1A9R!S=')U8W1U<F4Z"@D)1$UO9'5L92H)9&UO
>M9'5L93L*"@D)+R\@3&]A9"!U<"!T:&4@;6]D=6QE('-O=7)C92!C;V1E.@H)
>M"71H:7,H8VAA<EM=(&9I;&5N86UE+"!C:&%R6UT@<W)C*2!["@D)"2\O($QO
>M860@=7`@=&AE('-O=7)C92!F;W(@=&AE(&QE>&5R.@H)"0ES=7!E<BAF:6QE
>M;F%M92P@<W)C*3L*"@D)"2\O($-R96%T92!A(&1E9F%U;'0@;6]D=6QE('-T
>M<G5C='5R93H*"0D)9&UO9'5L92`](&YE=R!$36]D=6QE.PH)"0ED;6]D=6QE
>M+FYA;64@/2!F:6QE;F%M93L*"@D)"2\O(%-E="!T:&4@9&5F875L="!A8V-E
>M<W,@<FEG:'1S(&9O<B!N97=L>2!C<F5A=&5D(&ED96YT:69I97)S.@H)"0EA
>M<D1E9F%U;'0@/2!A8V-E<W-2:6=H=',N87)0=6)L:6,["@D)"6%R0W5R<F5N
>M="`](&%C8V5S<U)I9VAT<RYA<E5N9&5F:6YE9#L-"@D)"6QN:T1E9F%U;'0@
>M/2`B1"([#0H)"0EL;FM#=7)R96YT(#T@;G5L;#L*"0E]"@T*"7!R:79A=&4Z
>M"@D)+R\@17AP96-T(&$@=&]K96X@86YD('1H<F]W(&%N(&5X8V5P=&EO;B!I
>M9B!N;W0@9F]U;F0Z"@D)5&]K96XJ"65X<&5C="A43TL@=F%L=64L(&-H87);
>M72!M<V<I('L*"0D)5&]K96XJ"6YT;VL@/2!N97AT5&]K96XH*3L*"0D):68@
>M*&YT;VLN=&]K96X@(3T@=F%L=64I#0H)"0EI9B`H;G1O:RYT;VME;B`A/2!V
>M86QU92D*"0D)"71H<F]W(&YE=R!$3&5X97)%>&-E<'1I;VXH=&AI<RP@(F5X
>M<&5C=&5D("(@?B!M<V<I.PH)"0ER971U<FX@;G1O:SL*"0E]"@H)"2\O($5X
>M<&5C="!A('1O:V5N(&%N9"!T:')O=R!A;B!E>&-E<'1I;VX@:68@;F]T(&9O
>M=6YD.@H)"51O:V5N*@EE>'!E8W14;VME;BA4;VME;B`J=&]K+"!43TL@=F%L
>M=64L(&-H87);72!M<V<I('L*"0D):68@*'1O:RYT;VME;B`A/2!V86QU92D*
>M"0D)"71H<F]W(&YE=R!$3&5X97)%>&-E<'1I;VXH=&AI<RP@(F5X<&5C=&5D
>M("(@?B!M<V<I.PH)"0ER971U<FX@=&]K.PH)"7T-"@T*"0DO+R!)<R!T:&ES
>M('1O:V5N(&$@8F%S:6,@='EP93\-"@D)8F]O;"!I<U1Y<&4H5$]+('9A;'5E
>M*2![#0H)"0ES=VET8V@@*'9A;'5E*2![#0H)"0D)8V%S92!43TLN5$]+=F]I
>M9#H*"0D)"6-A<V4@5$]++E1/2VEN=#@L(%1/2RY43TMU;G,X.@H)"0D)8V%S
>M92!43TLN5$]+:6YT,38L(%1/2RY43TMU;G,Q-CH*"0D)"6-A<V4@5$]++E1/
>M2VEN=#,R+"!43TLN5$]+=6YS,S(Z"@D)"0EC87-E(%1/2RY43TMI;G0V-"P@
>M5$]++E1/2W5N<S8T.@H)"0D)8V%S92!43TLN5$]+9FQO870S,BP@5$]++E1/
>M2V9L;V%T-C0L(%1/2RY43TMF;&]A=#@P.@H)"0D)8V%S92!43TLN5$]+:6UA
>M9VEN87)Y,S(L(%1/2RY43TMI;6%G:6YA<GDV-"P@5$]++E1/2VEM86=I;F%R
>M>3@P.@H)"0D)8V%S92!43TLN5$]+8V]M<&QE>#,R+"!43TLN5$]+8V]M<&QE
>M>#8T+"!43TLN5$]+8V]M<&QE>#@P.@H)"0D)8V%S92!43TLN5$]+8VAA<BP@
>M5$]++E1/2W=C:&%R+"!43TLN5$]+9&-H87(L(%1/2RY43TMB:70Z#0H)"0D)
>M"7)E='5R;B!T<G5E.PT*"0D)"61E9F%U;'0Z#0H)"0D)"7)E='5R;B!F86QS
>M93L-"@D)"7T-"@D)"7)E='5R;B!F86QS93L*"0E]"@H)"2\O($=E="!T:&4@
>M8W5R<F5N="!O<B!D969A=6QT(&%C8V5S<R!R:6=H=#H*"0EA8V-E<W-2:6=H
>M=',)9V5T06-C97-S*"D@>PH)"0EA8V-E<W-2:6=H=',)87(@/2!A8V-E<W-2
>M:6=H=',N87)5;F1E9FEN960["@D)"6EF("AA<D-U<G)E;G0@(3T@86-C97-S
>M4FEG:'1S+F%R56YD969I;F5D*2!["@D)"0EA<B`](&%R0W5R<F5N=#L*"0D)
>M"2\O($EN=F%L:61A=&4@=&AE(&-U<G)E;G0@86-C97-S(')I9VAT.@H)"0D)
>M87)#=7)R96YT(#T@86-C97-S4FEG:'1S+F%R56YD969I;F5D.PH)"0E](&5L
>M<V4@>PH)"0D)+R\@57-E('1H92!D969A=6QT(&EF(&YO(&-U<G)E;G0@86-C
>M97-S('-P96-I9FEE9#H*"0D)"6%R(#T@87)$969A=6QT.PH)"0E]"@D)"7)E
>M='5R;B!A<CL*"0E]#0H)"0T*"0DO+R!'970@=&AE(&-U<G)E;G0@;W(@9&5F
>M875L="!F=6YC=&EO;B!L:6YK86=E.@T*"0EC:&%R6UT)9V5T3&EN:V%G92@I
>M('L-"@D)"6-H87);70EL:6YK86=E(#T@(D0B.PT*"0D):68@*&QN:T-U<G)E
>M;G0@:7,@;G5L;"D@>PT*"0D)"6QI;FMA9V4@/2!L;FM$969A=6QT.PT*"0D)
>M?2!E;'-E('L-"@D)"0EL:6YK86=E(#T@;&YK0W5R<F5N=#L-"@D)"0EL;FM#
>M=7)R96YT(#T@;G5L;#L-"@D)"7T-"@D)"7)E='5R;B!L:6YK86=E.PT*"0E]
>M"@H)"2\O(%-K:7`@;W9E<B!A('-E="!O9B!N97-T960@=&]K96YS.@T*"0EV
>M;VED('-K:7!.97-T*%1/2R!L+"!43TL@<BD@>PT*"0D):6YT"6YE<W0@/2`P
>M.PT*"0D)9F]R("@[.RD@>PT*"0D)"51O:V5N*@ET;VL@/2!N97AT5&]K96XH
>M*3L-"@D)"0EI9B`H=&]K(&ES(&YU;&PI(&)R96%K.PT*"0D)"6EF("AT;VLN
>M=&]K96X@/3T@;"D@*RMN97-T.PT*"0D)"6EF("AT;VLN=&]K96X@/3T@<BD@
>M>PT*"0D)"0DM+6YE<W0[#0H)"0D)"6EF("AN97-T(#P@,"D@8G)E86L[#0H)
>M"0D)?0T*"0D)?0T*"0E]#0H-"@D)+R\@4F5A9"!A('!A<F%M971E<B!L:7-T
>M.@T*"0EV;VED(')E861087)A;65T97)S*&EN;W5T($1687(J6UT@<&%R;7,I
>M('L-"@D)"51O:V5N*@D)"71O:SL-"@D)"6%C8V5S<TUO9&EF:65R"6YE>'1A
>M;3L-"@T*"0D);F5X=&%M(#T@86-C97-S36]D:69I97(N86U);CL-"@T*"0D)
>M9F]R("@[.RD@>PT*"0D)"71O:R`](&YE>'14;VME;B@I.PT*"0D)"6EF("AT
>M;VLN=&]K96X@/3T@5$]++E1/2W)P87)E;BD@8G)E86L[#0H)"0D):68@*'1O
>M:RYT;VME;B`]/2!43TLN5$]+8V]M;6$I(&-O;G1I;G5E.PT*#0H)"0D)<W=I
>M=&-H("AT;VLN=&]K96XI('L-"@D)"0D)8V%S92!43TLN5$]+:6XZ"0EN97AT
>M86T@/2!A8V-E<W--;V1I9FEE<BYA;4EN.R!B<F5A:SL-"@D)"0D)8V%S92!4
>M3TLN5$]+;W5T.@EN97AT86T@/2!A8V-E<W--;V1I9FEE<BYA;4]U=#L@8G)E
>M86L[#0H)"0D)"6-A<V4@5$]++E1/2VEN;W5T.@EN97AT86T@/2!A8V-E<W--
>M;V1I9FEE<BYA;4EN3W5T.R!B<F5A:SL-"@T*"0D)"0DO+R!#:&5C:R!F;W(@
>M86X@:61E;G1I9FEE<B!O<B!A(')E<V5R=F5D('1Y<&4Z#0H)"0D)"6-A<V4@
>M5$]++E1/2W9O:60Z"@D)"0D)8V%S92!43TLN5$]+:6YT."P@5$]++E1/2W5N
>M<S@Z"@D)"0D)8V%S92!43TLN5$]+:6YT,38L(%1/2RY43TMU;G,Q-CH*"0D)
>M"0EC87-E(%1/2RY43TMI;G0S,BP@5$]++E1/2W5N<S,R.@H)"0D)"6-A<V4@
>M5$]++E1/2VEN=#8T+"!43TLN5$]+=6YS-C0Z"@D)"0D)8V%S92!43TLN5$]+
>M9FQO870S,BP@5$]++E1/2V9L;V%T-C0L(%1/2RY43TMF;&]A=#@P.@H)"0D)
>M"6-A<V4@5$]++E1/2VEM86=I;F%R>3,R+"!43TLN5$]+:6UA9VEN87)Y-C0L
>M(%1/2RY43TMI;6%G:6YA<GDX,#H*"0D)"0EC87-E(%1/2RY43TMC;VUP;&5X
>M,S(L(%1/2RY43TMC;VUP;&5X-C0L(%1/2RY43TMC;VUP;&5X.#`Z"@D)"0D)
>M8V%S92!43TLN5$]+8VAA<BP@5$]++E1/2W=C:&%R+"!43TLN5$]+9&-H87(L
>M(%1/2RY43TMB:70Z"@D)"0D)8V%S92!43TLN5$]+:61E;G1I9FEE<CH@>PT*
>M"0D)"0D)5&]K96XJ"6YT;VL[#0H)"0D)"0E$5F%R*@EV87([#0H)"0D)"0EC
>M:&%R6UT):61E;G0[#0H)"0D)"0E4;VME;BI;70ET>7!E.PT*#0H)"0D)"0DO
>M+R!#;VYS=')U8W0@=&AE('1Y<&4@;V8@=&AE(&ED96YT:69I97(Z#0H)"0D)
>M"0ET>7!E+FQE;F=T:"`](#$[#0H)"0D)"0ET>7!E6S!=(#T@=&]K.PT*"0D)
>M"0D)=VAI;&4@*"AN=&]K(#T@;F5X=%1O:V5N*"DI+G1O:V5N("$](%1/2RY4
>M3TMI9&5N=&EF:65R*2![#0H)"0D)"0D)='EP92YL96YG=&@@/2!T>7!E+FQE
>M;F=T:"`K(#$[#0H)"0D)"0D)='EP95ML96YG=&@@+2`Q72`](&YT;VL[#0H)
>M"0D)"0E]#0H-"@D)"0D)"2\O(%)E860@=&AE(&ED96YT:69I97(Z#0H)"0D)
>M"0EE>'!E8W14;VME;BAN=&]K+"!43TLN5$]+:61E;G1I9FEE<BP@(FED96YT
>M:69I97(@869T97(@='EP92(I.PT*"0D)"0D):61E;G0@/2!N=&]K+FED96YT
>M.PT*#0H)"0D)"0DO+R!!9&0@=&AE('!A<F%M971E<CH-"@D)"0D)"79A<B`]
>M(&YE=R!$5F%R.PT*"0D)"0D)=F%R+FYA;64@/2!I9&5N=#L-"@D)"0D)"79A
>M<BYT>7!E(#T@='EP93L-"@D)"0D)"79A<BYM;V1I9FEE<B`](&YE>'1A;3L-
>M"@T*"0D)"0D)<&%R;7,N;&5N9W1H(#T@<&%R;7,N;&5N9W1H("L@,3L-"@D)
>M"0D)"7!A<FUS6VQE;F=T:"`M(#%=(#T@=F%R.PT*#0H)"0D)"0EN97AT86T@
>M/2!A8V-E<W--;V1I9FEE<BYA;4EN.PT*"0D)"0D)8G)E86L[#0H)"0D)"7T-
>M"@T*"0D)"0ED969A=6QT.@T*"0D)"7T-"@D)"7T-"@D)?0T*"@D)+R\@4&%R
>M<V4@86X@:6UP;W)T(&QI;F4Z"@D)+R\@4W1A<G1S(&%F=&5R(&EM<&]R="!T
>M;VME;BX*"0E$26UP;W)T*B!P87)S94EM<&]R="@I('L*"0D)1$EM<&]R="H)
>M:6UP.PH)"0EC:&%R6UT)"6ED96YT.PH)"0E4;VME;BH)"6YT;VL["@H)"0DO
>M+R!'970@=&AE(&EM<&]R="!I9&5N=&EF:65R.@H)"0EW:&EL92`H*&YT;VL@
>M/2!N97AT5&]K96XH*2DN=&]K96X@(3T@5$]++E1/2W-E;6EC;VQO;BD@>PH)
>M"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/2VED96YT:69I97(I"@D)"0D)
>M:61E;G0@?CT@;G1O:RYI9&5N=#L*"0D)"65L<V4@:68@*&YT;VLN=&]K96X@
>M/3T@5$]++E1/2V1O="D*"0D)"0EI9&5N="!^/2`B+B(["@D)"7T*"@D)"6EM
>M<"`](&YE=R!$26UP;W)T.PH)"0EI;7`N;F%M92`](&ED96YT.PH)"0EI;7`N
>M86-C97-S(#T@9V5T06-C97-S*"D["@D)"7)E='5R;B!I;7`["@D)?0H-"@D)
>M+R\@4&%R<V4@82!C;&%S<R!D969I;FET:6]N.@H)"2\O(%-T87)T<R!A9G1E
>M<B!C;&%S<R!T;VME;BX*"0E$0VQA<W,J"7!A<G-E0VQA<W,H*2!["@D)"41#
>M;&%S<RH)"6-L<SL*"0D)8VAA<EM="0EI9&5N=#L*"0D)5&]K96XJ"0EN=&]K
>M.PT*"0D):6YT"0D);F5S=#L*"@D)"2\O($-R96%T92!T:&4@1$-L87-S('-T
>M<G5C='5R93H*"0D)8VQS(#T@;F5W($1#;&%S<SL*"0D)+R\@1W)A8B!T:&4@
>M8VQA<W,@:61E;G1I9FEE<CH*"0D)8VQS+FYA;64@/2!E>'!E8W0H5$]++E1/
>M2VED96YT:69I97(L(")I9&5N=&EF:65R(&%F=&5R(&-L87-S(BDN:61E;G0[
>M#0H)"0EA<D1E9F%U;'0@/2!A8V-E<W-2:6=H=',N87)0<FEV871E.PH*"0D)
>M+R\@0VAE8VL@9F]R(&%N(&EN=&5R9F%C92!L:7-T.@H)"0EN=&]K(#T@;F5X
>M=%1O:V5N*"D["@D)"6EF("AN=&]K+G1O:V5N(#T](%1/2RY43TMC;VQO;BD@
>M>PH)"0D)9F]R("@[.RD@>PH)"0D)"6YT;VL@/2!E>'!E8W0H5$]++E1/2VED
>M96YT:69I97(L(")I9&5N=&EF:65R(BD["@H)"0D)"2\O($%D9"!A(&YE=R!I
>M;G1E<F9A8V4Z"@D)"0D)8VQS+FEI;G1E<F9A8V5S+FQE;F=T:"`](&-L<RYI
>M:6YT97)F86-E<RYL96YG=&@@*R`Q.PH)"0D)"6-L<RYI:6YT97)F86-E<UML
>M96YG=&@@+2`Q72`](&YT;VLN:61E;G0["@H)"0D)"6YT;VL@/2!N97AT5&]K
>M96XH*3L*"0D)"0DO+R!!(&QE9G0M8W5R;'D_($)R96%K+@H)"0D)"6EF("AN
>M=&]K+G1O:V5N(#T](%1/2RY43TML8W5R;'DI(&)R96%K.PH)"0D)"2\O($UA
>M:V4@<W5R92!I="=S(&$@8V]M;6$Z"@D)"0D)97AP96-T5&]K96XH;G1O:RP@
>M5$]++E1/2V-O;6UA+"`B)RPG(&]R("=[)R!A9G1E<B!I;G1E<F9A8V4B*3L*
>M"0D)"7T*"0D)?0H*"0D)+R\@36%K92!S=7)E('=E)W)E(&%T(&$@;&5F="UC
>M=7)L>2UB<F%C92`G>R<Z"@D)"65X<&5C=%1O:V5N*&YT;VLL(%1/2RY43TML
>M8W5R;'DL("(G>R<@869T97(@:6YT97)F86-E(&QI<W0@;W(@8VQA<W,@:61E
>M;G1I9FEE<B(I.PH-"@D)"6YE<W0@/2`P.PH)"0EF;W(@*#L[*2![#0H)"0D)
>M;G1O:R`](&YE>'14;VME;B@I.PT*#0H)"0D)+R\@3F5S=&5D(&-U<FQY(&)R
>M86-E<SH-"@D)"0EI9B`H;G1O:RYT;VME;B`]/2!43TLN5$]+;&-U<FQY*2![
>M("LK;F5S=#L@8V]N=&EN=64[('T-"@D)"0EI9B`H;G1O:RYT;VME;B`]/2!4
>M3TLN5$]+<F-U<FQY*2![#0H)"0D)"2TM;F5S=#L-"@D)"0D):68@*&YE<W0@
>M/"`P*2!B<F5A:SL-"@D)"0D)8V]N=&EN=64[#0H)"0D)?0T*#0H)"0D)+R\@
>M4&5E:R!A="!T:&4@;F5X="!T;VME;B!T;R!S964@:68@:70G<R!A(&-O;&]N
>M(&]N;'D@:68@=V4G<F4@:6X@=&AE(&EM;65D:6%T92!C;&%S<R!S8V]P93H-
>M"@D)"0EI9B`H*&YE<W0@/3T@,"D@)B8@*'!E96M4;VME;B@I+G1O:V5N(#T]
>M(%1/2RY43TMC;VQO;BDI('L-"@D)"0D)+R\@268@<V\L('1H96X@=&AE(&-U
>M<G)E;G0@=&]K96X@<VAO=6QD(&)E(&%N(&%C8V5S<PT*"0D)"0DO+R!M;V1I
>M9FEE<BX-"@D)"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/2W!R:79A=&4I
>M#0H)"0D)"0EA<D1E9F%U;'0@/2!A8V-E<W-2:6=H=',N87)0<FEV871E.PT*
>M"0D)"0EE;'-E(&EF("AN=&]K+G1O:V5N(#T](%1/2RY43TMP<F]T96-T960I
>M#0H)"0D)"0EA<D1E9F%U;'0@/2!A8V-E<W-2:6=H=',N87)0<F]T96-T960[
>M#0H)"0D)"65L<V4@:68@*&YT;VLN=&]K96X@/3T@5$]++E1/2W!U8FQI8RD-
>M"@D)"0D)"6%R1&5F875L="`](&%C8V5S<U)I9VAT<RYA<E!U8FQI8SL-"@D)
>M"0D)96QS92!I9B`H;G1O:RYT;VME;B`]/2!43TLN5$]+<&%C:V%G92D-"@D)
>M"0D)"6%R1&5F875L="`](&%C8V5S<U)I9VAT<RYA<E!A8VMA9V4[#0H)"0D)
>M"65L<V4-"@D)"0D)"71H<F]W(&YE=R!$3&5X97)%>&-E<'1I;VXH=&AI<RP@
>M(DEN=F%L:60@86-C97-S(')I9VAT(&UO9&EF:65R(BD[#0H)"0D)?2!E;'-E
>M('L-"@D)"0D)+R\@0VAE8VL@=&AE('1O:V5N.@T*"0D)"0ES=VET8V@@*&YT
>M;VLN=&]K96XI('L-"@D)"0D)"2\O(%-E="!T:&4@;F5X="!U<V5D(&%C8V5S
>M<R!R:6=H=#H-"@D)"0D)"6-A<V4@5$]++E1/2W!R:79A=&4Z"6%R0W5R<F5N
>M="`](&%C8V5S<U)I9VAT<RYA<E!R:79A=&4[(&)R96%K.PT*"0D)"0D)8V%S
>M92!43TLN5$]+<')O=&5C=&5D.@EA<D-U<G)E;G0@/2!A8V-E<W-2:6=H=',N
>M87)0<F]T96-T960[(&)R96%K.PT*"0D)"0D)8V%S92!43TLN5$]+<'5B;&EC
>M.@D)87)#=7)R96YT(#T@86-C97-S4FEG:'1S+F%R4'5B;&EC.R!B<F5A:SL-
>M"@D)"0D)"6-A<V4@5$]++E1/2W!A8VMA9V4Z"6%R0W5R<F5N="`](&%C8V5S
>M<U)I9VAT<RYA<E!A8VMA9V4[(&)R96%K.PT*"0D)"0D)#0H)"0D)"0EC87-E
>M(%1/2RY43TME>'1E<FXZ#0H)"0D)"0D)+R\@5$]$3SH@($-O<G)E8W0@:6UP
>M;&5M96YT871I;VX-"@D)"0D)"0EP<FEN=&8H(F5X=&5R;EQN(BD[#0H)"0D)
>M"0D);F5X=%1O:V5N*"D[#0H)"0D)"0D);F5X=%1O:V5N*"D[#0H)"0D)"0D)
>M;F5X=%1O:V5N*"D[#0H)"0D)"0D)8G)E86L[#0H)"0D)"0D-"@D)"0D)"6-A
>M<V4@5$]++E1/2W9E<G-I;VXZ#0H)"0D)"0D)+R\@5$]$3SH@($-O<G)E8W0@
>M:6UP;&5M96YT871I;VX-"@D)"0D)"0EB<F5A:SL-"@T*"0D)"0D)+R\@4W1A
>M<G0@;V8@82!V87)I86)L92!O<B!F=6YC=&EO;B!D969I;FET:6]N.@T*"0D)
>M"0D)8V%S92!43TLN5$]+=F]I9#H*"0D)"0D)8V%S92!43TLN5$]+:6YT."P@
>M5$]++E1/2W5N<S@Z"@D)"0D)"6-A<V4@5$]++E1/2VEN=#$V+"!43TLN5$]+
>M=6YS,38Z"@D)"0D)"6-A<V4@5$]++E1/2VEN=#,R+"!43TLN5$]+=6YS,S(Z
>M"@D)"0D)"6-A<V4@5$]++E1/2VEN=#8T+"!43TLN5$]+=6YS-C0Z"@D)"0D)
>M"6-A<V4@5$]++E1/2V9L;V%T,S(L(%1/2RY43TMF;&]A=#8T+"!43TLN5$]+
>M9FQO870X,#H*"0D)"0D)8V%S92!43TLN5$]+:6UA9VEN87)Y,S(L(%1/2RY4
>M3TMI;6%G:6YA<GDV-"P@5$]++E1/2VEM86=I;F%R>3@P.@H)"0D)"0EC87-E
>M(%1/2RY43TMC;VUP;&5X,S(L(%1/2RY43TMC;VUP;&5X-C0L(%1/2RY43TMC
>M;VUP;&5X.#`Z"@D)"0D)"6-A<V4@5$]++E1/2V-H87(L(%1/2RY43TMW8VAA
>M<BP@5$]++E1/2V1C:&%R+"!43TLN5$]+8FET.@H)"0D)"0EC87-E(%1/2RY4
>M3TMI9&5N=&EF:65R.B![#0H)"0D)"0D)5&]K96XJ"71O:SL-"@D)"0D)"0EC
>M:&%R6UT):61E;G0[#0H)"0D)"0D)5&]K96XJ6UT)='EP93L-"@D)"0D)"0EA
>M8V-E<W-2:6=H=',)8W5R87([#0H-"@D)"0D)"0DO+R!#;VYS=')U8W0@=&AE
>M('1Y<&4@;V8@=&AE(&ED96YT:69I97(Z#0H)"0D)"0D)='EP92YL96YG=&@@
>M/2`Q.PT*"0D)"0D)"71Y<&5;,%T@/2!N=&]K.PT*"0D)"0D)"69O<B`H.SLI
>M('L-"@D)"0D)"0D)=&]K(#T@;F5X=%1O:V5N*"D[#0H)"0D)"0D)"6EF("AT
>M;VLN=&]K96X@/3T@5$]++E1/2VED96YT:69I97(I(&)R96%K.PT*"0D)"0D)
>M"0EI9B`H=&]K+G1O:V5N(#T](%1/2RY43TML<&%R96XI(&)R96%K.PT*"0D)
>M"0D)"0ET>7!E+FQE;F=T:"`]('1Y<&4N;&5N9W1H("L@,3L-"@D)"0D)"0D)
>M='EP95ML96YG=&@@+2`Q72`]('1O:SL-"@D)"0D)"0E]#0H-"@D)"0D)"0EI
>M9B`H=&]K+G1O:V5N(#T](%1/2RY43TML<&%R96XI('L-"@D)"0D)"0D)97AP
>M96-T*%1/2RY43TMM=6PL("(G*B<B*3L-"@D)"0D)"0D):61E;G0@/2!E>'!E
>M8W0H5$]++E1/2VED96YT:69I97(L(")I9&5N=&EF:65R(BDN:61E;G0[#0H)
>M"0D)"0D)"65X<&5C="A43TLN5$]+<G!A<F5N+"`B)RDG(BD[#0H)"0D)"0D)
>M?2!E;'-E(&EF("AT;VLN=&]K96X@/3T@5$]++E1/2VED96YT:69I97(I('L-
>M"@D)"0D)"0D)+R\@4F5A9"!T:&4@:61E;G1I9FEE<CH-"@D)"0D)"0D):61E
>M;G0@/2!T;VLN:61E;G0[#0H)"0D)"0D)?0T*#0H)"0D)"0D)+R\@1V5T('1H
>M92!A8V-E<W,@<FEG:'1S(&9O<B!T:&ES(&ED96YT:69I97(Z#0H)"0D)"0D)
>M8W5R87(@/2!G971!8V-E<W,H*3L-"@T*"0D)"0D)"71O:R`](&YE>'14;VME
>M;B@I.PT*"0D)"0D)"6EF("AT;VLN=&]K96X@/3T@5$]++E1/2VQP87)E;BD@
>M>PT*"0D)"0D)"0DO+R!)="=S(&$@9G5N8W1I;VXZ#0H)"0D)"0D)"41&=6YC
>M*@EF=6YC(#T@;F5W($1&=6YC.PT*"0D)"0D)"0EF=6YC+FYA;64@/2!I9&5N
>M=#L-"@D)"0D)"0D)9G5N8RYT>7!E(#T@='EP92YD=7`[#0H)"0D)"0D)"69U
>M;F,N;&EN:V%G92`](&=E=$QI;FMA9V4H*3L-"@D)"0D)"0D)9G5N8RYA8V-E
>M<W,@/2!C=7)A<CL-"@T*"0D)"0D)"0DO+R!!9&0@9G5N8W1I;VX@=&\@8VQA
>M<W,Z#0H)"0D)"0D)"6-L<RYF=6YC<RYL96YG=&@@/2!C;',N9G5N8W,N;&5N
>M9W1H("L@,3L-"@D)"0D)"0D)8VQS+F9U;F-S6VQE;F=T:"`M(#%=(#T@9G5N
>M8SL-"@T*"0D)"0D)"0DO+R!296%D('1H92!P87)A;65T97(@;&ES=#H-"@D)
>M"0D)"0D)<F5A9%!A<F%M971E<G,H9G5N8RYP87)M<RD[#0H-"@D)"0D)"0D)
>M+R\@4VMI<"!T:&4@9G5N8W1I;VX@9&5F:6YI=&EO;CH-"@D)"0D)"0D)=&]K
>M(#T@;F5X=%1O:V5N*"D[#0H)"0D)"0D)"6EF("AT;VLN=&]K96X@/3T@5$]+
>M+E1/2W-E;6EC;VQO;BD@8G)E86L[#0H-"@D)"0D)"0D)97AP96-T5&]K96XH
>M=&]K+"!43TLN5$]+;&-U<FQY+"`B)WLG(BD[#0H)"0D)"0D)"7-K:7!.97-T
>M*%1/2RY43TML8W5R;'DL(%1/2RY43TMR8W5R;'DI.PT*#0H)"0D)"0D)?2!E
>M;'-E('L-"@D)"0D)"0D)+R\@270G<R!A('9A<FEA8FQE(&]R(&QI<W0@=&AE
>M<F5O9CH-"@T*"0D)"0D)"0EF;W(@*#L[*2![#0H)"0D)"0D)"0E$5F%R*@EV
>M87(@/2!N97<@1%9A<CL-"@D)"0D)"0D)"79A<BYN86UE(#T@:61E;G0[#0H)
>M"0D)"0D)"0EV87(N='EP92`]('1Y<&4N9'5P.PT*"0D)"0D)"0D)=F%R+F%C
>M8V5S<R`](&-U<F%R.PT*#0H)"0D)"0D)"0DO+R!!9&0@=F%R:6%B;&4@=&\@
>M8VQA<W,Z#0H)"0D)"0D)"0EC;',N=F%R<RYL96YG=&@@/2!C;',N=F%R<RYL
>M96YG=&@@*R`Q.PT*"0D)"0D)"0D)8VQS+G9A<G-;;&5N9W1H("T@,5T@/2!V
>M87([#0H-"@D)"0D)"0D)"2\O('-E;6EC;VQO;B!B<F5A:W,@=&AE(&QI<W0Z
>M#0H)"0D)"0D)"0EI9B`H=&]K+G1O:V5N(#T](%1/2RY43TMS96UI8V]L;VXI
>M(&)R96%K.PT*"0D)"0D)"0D)97AP96-T5&]K96XH=&]K+"!43TLN5$]+8V]M
>M;6$L("(G+"<B*3L-"@T*"0D)"0D)"0D)=&]K(#T@;F5X=%1O:V5N*"D[#0H)
>M"0D)"0D)"0EE>'!E8W14;VME;BAT;VLL(%1/2RY43TMI9&5N=&EF:65R+"`B
>M:61E;G1I9FEE<B(I.PT*"0D)"0D)"0D):61E;G0@/2!T;VLN:61E;G0[#0H-
>M"@D)"0D)"0D)"2\O($=E="!N97AT(&-O;6UA(&]R('-E;6EC;VQO;CH-"@D)
>M"0D)"0D)"71O:R`](&YE>'14;VME;B@I.PT*"0D)"0D)"0E]#0H-"@D)"0D)
>M"0E]#0H)"0D)"0D)8G)E86L[#0H)"0D)"0E]#0H-"@D)"0D)"6-A<V4@5$]+
>M+E1/2W1H:7,Z('L-"@D)"0D)"0E$1G5N8RH)9G5N8R`](&YE=R!$1G5N8SL-
>M"@D)"0D)"0E4;VME;BH);G1O:SL-"@T*"0D)"0D)"69U;F,N86-C97-S(#T@
>M9V5T06-C97-S*"D[#0H)"0D)"0D)9G5N8RYL:6YK86=E(#T@9V5T3&EN:V%G
>M92@I.PT*#0H)"0D)"0D)+R\@061D('1H92!C;VYS=')U8W1O<CH-"@D)"0D)
>M"0EC;',N8W1O<G,N;&5N9W1H(#T@8VQS+F-T;W)S+FQE;F=T:"`K(#$[#0H)
>M"0D)"0D)8VQS+F-T;W)S6VQE;F=T:"`M(#%=(#T@9G5N8SL-"@T*"0D)"0D)
>M"65X<&5C="A43TLN5$]+;'!A<F5N+"`B)R@G(BD[#0H)"0D)"0D)<F5A9%!A
>M<F%M971E<G,H9G5N8RYP87)M<RD[#0H-"@D)"0D)"0EN=&]K(#T@;F5X=%1O
>M:V5N*"D[#0H)"0D)"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/2W-E;6EC
>M;VQO;BD@8G)E86L[#0H-"@D)"0D)"0EE>'!E8W14;VME;BAN=&]K+"!43TLN
>M5$]+;&-U<FQY+"`B)WLG(BD[#0H)"0D)"0D)<VMI<$YE<W0H5$]++E1/2VQC
>M=7)L>2P@5$]++E1/2W)C=7)L>2D[#0H)"0D)"0D)8G)E86L[#0H)"0D)"0E]
>M#0H-"@D)"0D)"2\O($UU<W0@8F4@82!D97-T<G5C=&]R(&AE<F4Z#0H)"0D)
>M"0EC87-E(%1/2RY43TMT:6QD93H@>PT*"0D)"0D)"65X<&5C="A43TLN5$]+
>M=&AI<RP@(B=T:&ES)R!A9G1E<B`G?B<B*3L-"@T*"0D)"0D)"41&=6YC*@EF
>M=6YC(#T@;F5W($1&=6YC.PT*"0D)"0D)"51O:V5N*@EN=&]K.PT*#0H)"0D)
>M"0D)+R\@061D('1H92!D97-T<G5C=&]R.@T*"0D)"0D)"6-L<RYD=&]R<RYL
>M96YG=&@@/2!C;',N9'1O<G,N;&5N9W1H("L@,3L-"@D)"0D)"0EC;',N9'1O
>M<G-;;&5N9W1H("T@,5T@/2!F=6YC.PT*#0H)"0D)"0D)9G5N8RYL:6YK86=E
>M(#T@9V5T3&EN:V%G92@I.PT*#0H)"0D)"0D)97AP96-T*%1/2RY43TML<&%R
>M96XL("(G*"<B*3L-"@D)"0D)"0ER96%D4&%R86UE=&5R<RAF=6YC+G!A<FUS
>M*3L-"@T*"0D)"0D)"6YT;VL@/2!N97AT5&]K96XH*3L-"@D)"0D)"0EI9B`H
>M;G1O:RYT;VME;B`]/2!43TLN5$]+<V5M:6-O;&]N*2!B<F5A:SL-"@T*"0D)
>M"0D)"65X<&5C=%1O:V5N*&YT;VLL(%1/2RY43TML8W5R;'DL("(G>R<B*3L-
>M"@D)"0D)"0ES:VEP3F5S="A43TLN5$]+;&-U<FQY+"!43TLN5$]+<F-U<FQY
>M*3L-"@D)"0D)"7T-"@T*"0D)"0D)9&5F875L=#H-"@D)"0D)"0D-"@D)"0D)
>M?0T*"0D)"7T-"@D)"7T*"@D)"7)E='5R;B!C;',["@D)?0T*#0H)"2\O(%!A
>M<G-E(&$@<W1R=6-T(&]R('5N:6]N("AS86UE(&9O<FUA="DZ#0H)"2\O(%-T
>M87)T(&%F=&5R('-T<G5C="]U;FEO;B!T;VME;BX-"@D)1%-T<G5C="H)<&%R
>M<V53=')U8W0H*2![#0H)"0E4;VME;BH)"71O:SL-"@D)"413=')U8W0J"7-T
>M(#T@;F5W($13=')U8W0[#0H-"@D)"71O:R`](&YE>'14;VME;B@I.PT*"0D)
>M+R\@06YO;GEM;W5S('-T<G5C=',O=6YI;VYS(&%L;&]W960Z#0H)"0ES="YN
>M86UE(#T@;G5L;#L-"@D)"6EF("AT;VLN=&]K96X@/3T@5$]++E1/2VED96YT
>M:69I97(I('L-"@D)"0ES="YN86UE(#T@=&]K+FED96YT.PT*"0D)"71O:R`]
>M(&YE>'14;VME;B@I.PT*"0D)?0T*#0H)"0DO+R!792!S:&]U;&0@8F4@870@
>M82!C=7)L>3H-"@D)"65X<&5C=%1O:V5N*'1O:RP@5$]++E1/2VQC=7)L>2P@
>M(B=[)R(I.PT*"0D)+R\@4F5A9"!I;B!A;&P@=&AE(&9U;F-T:6]N<RP@=F%R
>M:6%B;&5S+"!S=')U8W1S+"!A;F0@=6YI;VYS.@T*"0D)9F]R("@[.RD@>PT*
>M"0D)"71O:R`](&YE>'14;VME;B@I.PT*"0D)"6EF("AT;VLN=&]K96X@/3T@
>M5$]++E1/2W)C=7)L>2D@8G)E86L[#0H)"0D)+R\@4&%R<V4@82!M;V1U;&4Z
>M#0H)"0D)<W=I=&-H("AT;VLN=&]K96XI('L-"@D)"0D)+R\@4W1A<G0@;V8@
>M82!V87)I86)L92!O<B!F=6YC=&EO;B!D969I;FET:6]N.@T*"0D)"0EC87-E
>M(%1/2RY43TMV;VED.@H)"0D)"6-A<V4@5$]++E1/2VEN=#@L(%1/2RY43TMU
>M;G,X.@H)"0D)"6-A<V4@5$]++E1/2VEN=#$V+"!43TLN5$]+=6YS,38Z"@D)
>M"0D)8V%S92!43TLN5$]+:6YT,S(L(%1/2RY43TMU;G,S,CH*"0D)"0EC87-E
>M(%1/2RY43TMI;G0V-"P@5$]++E1/2W5N<S8T.@H)"0D)"6-A<V4@5$]++E1/
>M2V9L;V%T,S(L(%1/2RY43TMF;&]A=#8T+"!43TLN5$]+9FQO870X,#H*"0D)
>M"0EC87-E(%1/2RY43TMI;6%G:6YA<GDS,BP@5$]++E1/2VEM86=I;F%R>38T
>M+"!43TLN5$]+:6UA9VEN87)Y.#`Z"@D)"0D)8V%S92!43TLN5$]+8V]M<&QE
>M>#,R+"!43TLN5$]+8V]M<&QE>#8T+"!43TLN5$]+8V]M<&QE>#@P.@H)"0D)
>M"6-A<V4@5$]++E1/2V-H87(L(%1/2RY43TMW8VAA<BP@5$]++E1/2V1C:&%R
>M+"!43TLN5$]+8FET.@H)"0D)"6-A<V4@5$]++E1/2VED96YT:69I97(Z('L-
>M"@D)"0D)"51O:V5N*@EN=&]K.PT*"0D)"0D)8VAA<EM="6ED96YT.PT*"0D)
>M"0D)5&]K96XJ6UT)='EP93L-"@T*"0D)"0D)+R\@0V]N<W1R=6-T('1H92!T
>M>7!E(&]F('1H92!I9&5N=&EF:65R.@T*"0D)"0D)='EP92YL96YG=&@@/2`Q
>M.PT*"0D)"0D)='EP95LP72`]('1O:SL-"@D)"0D)"7=H:6QE("@H;G1O:R`]
>M(&YE>'14;VME;B@I*2YT;VME;B`A/2!43TLN5$]+:61E;G1I9FEE<BD@>PT*
>M"0D)"0D)"71Y<&4N;&5N9W1H(#T@='EP92YL96YG=&@@*R`Q.PT*"0D)"0D)
>M"71Y<&5;;&5N9W1H("T@,5T@/2!N=&]K.PT*"0D)"0D)?0T*#0H)"0D)"0DO
>M+R!296%D('1H92!I9&5N=&EF:65R.@T*"0D)"0D)97AP96-T5&]K96XH;G1O
>M:RP@5$]++E1/2VED96YT:69I97(L(")I9&5N=&EF:65R(&%F=&5R('1Y<&4B
>M*3L-"@D)"0D)"6ED96YT(#T@;G1O:RYI9&5N=#L-"@T*"0D)"0D);G1O:R`]
>M(&YE>'14;VME;B@I.PT*"0D)"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/
>M2VQP87)E;BD@>PT*"0D)"0D)"2\O($ET)W,@82!F=6YC=&EO;CH-"@D)"0D)
>M"0E$1G5N8RH)9G5N8R`](&YE=R!$1G5N8SL-"@D)"0D)"0EF=6YC+FYA;64@
>M/2!I9&5N=#L-"@D)"0D)"0EF=6YC+G1Y<&4@/2!T>7!E+F1U<#L-"@D)"0D)
>M"0EF=6YC+FQI;FMA9V4@/2!G971,:6YK86=E*"D[#0H)"0D)"0D)9G5N8RYA
>M8V-E<W,@/2!A8V-E<W-2:6=H=',N87)0=6)L:6,[#0H-"@D)"0D)"0DO+R!!
>M9&0@9G5N8W1I;VX@=&\@8VQA<W,Z#0H)"0D)"0D)<W0N9G5N8W,N;&5N9W1H
>M(#T@<W0N9G5N8W,N;&5N9W1H("L@,3L-"@D)"0D)"0ES="YF=6YC<UML96YG
>M=&@@+2`Q72`](&9U;F,[#0H-"@D)"0D)"0DO+R!296%D('1H92!P87)A;65T
>M97(@;&ES=#H-"@D)"0D)"0ER96%D4&%R86UE=&5R<RAF=6YC+G!A<FUS*3L-
>M"@T*"0D)"0D)"2\O(%-K:7`@=&AE(&9U;F-T:6]N(&1E9FEN:71I;VXZ#0H)
>M"0D)"0D);G1O:R`](&YE>'14;VME;B@I.PT*"0D)"0D)"6EF("AN=&]K+G1O
>M:V5N(#T](%1/2RY43TMS96UI8V]L;VXI(&)R96%K.PT*#0H)"0D)"0D)97AP
>M96-T5&]K96XH;G1O:RP@5$]++E1/2VQC=7)L>2P@(B=[)R(I.PT*"0D)"0D)
>M"7-K:7!.97-T*%1/2RY43TML8W5R;'DL(%1/2RY43TMR8W5R;'DI.PT*#0H)
>M"0D)"0E](&5L<V4@>PT*"0D)"0D)"2\O($ET)W,@82!V87)I86)L92!O<B!L
>M:7-T('1H97)E;V8Z#0H-"@D)"0D)"0EF;W(@*#L[*2![#0H)"0D)"0D)"416
>M87(J"79A<B`](&YE=R!$5F%R.PT*"0D)"0D)"0EV87(N;F%M92`](&ED96YT
>M.PT*"0D)"0D)"0EV87(N='EP92`]('1Y<&4N9'5P.PT*"0D)"0D)"0EV87(N
>M86-C97-S(#T@86-C97-S4FEG:'1S+F%R4'5B;&EC.PT*#0H)"0D)"0D)"2\O
>M($%D9"!V87)I86)L92!T;R!C;&%S<SH-"@D)"0D)"0D)<W0N=F%R<RYL96YG
>M=&@@/2!S="YV87)S+FQE;F=T:"`K(#$[#0H)"0D)"0D)"7-T+G9A<G-;;&5N
>M9W1H("T@,5T@/2!V87([#0H-"@D)"0D)"0D)+R\@<V5M:6-O;&]N(&)R96%K
>M<R!T:&4@;&ES=#H-"@D)"0D)"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/
>M2W-E;6EC;VQO;BD@8G)E86L[#0H)"0D)"0D)"65X<&5C=%1O:V5N*&YT;VLL
>M(%1/2RY43TMC;VUM82P@(B<L)R(I.PT*#0H)"0D)"0D)"6YT;VL@/2!N97AT
>M5&]K96XH*3L-"@D)"0D)"0D)97AP96-T5&]K96XH;G1O:RP@5$]++E1/2VED
>M96YT:69I97(L(")I9&5N=&EF:65R(BD[#0H)"0D)"0D)"6ED96YT(#T@;G1O
>M:RYI9&5N=#L-"@T*"0D)"0D)"0DO+R!'970@;F5X="!C;VUM82!O<B!S96UI
>M8V]L;VXZ#0H)"0D)"0D)"6YT;VL@/2!N97AT5&]K96XH*3L-"@D)"0D)"0E]
>M#0H-"@D)"0D)"7T-"@D)"0D)"6)R96%K.PT*"0D)"0E]#0H-"@D)"0D)8V%S
>M92!43TLN5$]+<W1R=6-T.B![#0H)"0D)"0E$4W1R=6-T*@ES=#(@/2!P87)S
>M95-T<G5C="@I.PT*#0H)"0D)"0ES="YS=')U8W1S+FQE;F=T:"`]('-T+G-T
>M<G5C=',N;&5N9W1H("L@,3L-"@D)"0D)"7-T+G-T<G5C='-;;&5N9W1H("T@
>M,5T@/2!S=#([#0H)"0D)"0EB<F5A:SL-"@D)"0D)?0T*"0D)"0EC87-E(%1/
>M2RY43TMU;FEO;CH@>PT*"0D)"0D)1%-T<G5C="H)<W0R(#T@<&%R<V53=')U
>M8W0H*3L-"@T*"0D)"0D)<W0N=6YI;VYS+FQE;F=T:"`]('-T+G5N:6]N<RYL
>M96YG=&@@*R`Q.PT*"0D)"0D)<W0N=6YI;VYS6VQE;F=T:"`M(#%=(#T@<W0R
>M.PT*"0D)"0D)8G)E86L[#0H)"0D)"7T-"@T*"0D)"0ED969A=6QT.@T*"0D)
>M"7T-"@D)"7T-"@D)"0T*"0D)<F5T=7)N('-T.PT*"0E]"@T*"0DO+R!087)S
>M92!A;B!E;G5M97)A=&EO;CH-"@D)+R\@4W1A<G0@869T97(@<W1R=6-T('1O
>M:V5N+@T*"0E$16YU;2H)<&%R<V5%;G5M*"D@>PT*"0D)5&]K96XJ"0ET;VL[
>M#0H)"0E$16YU;2H)"65N(#T@;F5W($1%;G5M.PT*"0D):6YT"0D):3L-"@T*
>M"0D)=&]K(#T@;F5X=%1O:V5N*"D[#0H)"0DO+R!!;F]N>6UO=7,@96YU;7,@
>M86QL;W=E9#H-"@D)"65N+FYA;64@/2!N=6QL.PT*"0D):68@*'1O:RYT;VME
>M;B`]/2!43TLN5$]+:61E;G1I9FEE<BD@>PT*"0D)"2\O(&5N=6T@:61E;G1I
>M9FEE<@T*"0D)"65N+FYA;64@/2!T;VLN:61E;G0[#0H)"0D)=&]K(#T@;F5X
>M=%1O:V5N*"D[#0H)"0D):68@*'1O:RYT;VME;B`]/2!43TLN5$]+8V]L;VXI
>M('L-"@D)"0D)+R\@96YU;2!I9&5N=&EF:65R(#H@='EP90T*"0D)"0ET;VL@
>M/2!N97AT5&]K96XH*3L-"@D)"0D):68@*&ES5'EP92AT;VLN=&]K96XI*2![
>M#0H)"0D)"0EE;BYT>7!E(#T@=&]K+G1O:V5N.PT*"0D)"0E](&5L<V4@=&AR
>M;W<@;F5W($1,97AE<D5X8V5P=&EO;BAT:&ES+"`B97AP96-T960@='EP92!A
>M9G1E<B`G.B<B*3L-"@D)"0D)=&]K(#T@;F5X=%1O:V5N*"D[#0H)"0D)?0T*
>M"0D)?2!E;'-E(&EF("AI<U1Y<&4H=&]K+G1O:V5N*2D@>PT*"0D)"2\O(&5N
>M=6T@='EP92`Z#0H)"0D)96XN='EP92`]('1O:RYT;VME;CL-"@D)"0EE>'!E
>M8W0H5$]++E1/2V-O;&]N+"`B)SHG(BD[#0H)"0D)=&]K(#T@;F5X=%1O:V5N
>M*"D[#0H)"0E]#0H-"@D)"2\O(%=E('-H;W5L9"!B92!A="!A(&-U<FQY.@T*
>M"0D)97AP96-T5&]K96XH=&]K+"!43TLN5$]+;&-U<FQY+"`B)WLG(BD[#0H-
>M"@D)"6D@/2`P.PT*"0D)96XN=F%L=65S+FQE;F=T:"`](#@[#0H)"0EF;W(@
>M*#L[*2![#0H)"0D)=&]K(#T@;F5X=%1O:V5N*"D[#0H)"0D):68@*'1O:RYT
>M;VME;B`]/2!43TLN5$]+<F-U<FQY*2!B<F5A:SL-"@T*"0D)"2\O($YE960@
>M86X@:61E;G1I9FEE<CH-"@D)"0EE>'!E8W14;VME;BAT;VLL(%1/2RY43TMI
>M9&5N=&EF:65R+"`B:61E;G1I9FEE<B(I.PT*#0H)"0D)1$5N=6TN96YU;59A
>M;'5E"65V.PT*"0D)"65V+FYA;64@/2!T;VLN:61E;G0[#0H-"@D)"0DO+R!!
>M;B!A<W-I9VYM96YT(&]R(&-O;6UA#0H)"0D)=&]K(#T@;F5X=%1O:V5N*"D[
>M#0H)"0D):68@*'1O:RYT;VME;B`]/2!43TLN5$]+87-S:6=N*2![#0H)"0D)
>M"69O<B`H.SLI('L-"@D)"0D)"71O:R`](&YE>'14;VME;B@I.PT*"0D)"0D)
>M:68@*'1O:RYT;VME;B`]/2!43TLN5$]+8V]M;6$I(&)R96%K.PT*"0D)"0D)
>M96QS92!I9B`H=&]K+G1O:V5N(#T](%1/2RY43TMR8W5R;'DI(&)R96%K.PT*
>M#0H)"0D)"0EI9B`H=&]K+G1O:V5N(#T](%1/2RY43TMI9&5N=&EF:65R*2!E
>M=BYV86QU92!^/2!T;VLN:61E;G0[#0H)"0D)"0EE;'-E(&EF("AT;VLN=&]K
>M96X@/3T@5$]++E1/2VEN=#,R=BD@978N=F%L=64@?CT@=&]K+FED96YT.PT*
>M"0D)"0D)96QS92!E=BYV86QU92!^/2!T;VMT;W-T<EMT;VLN=&]K96Y=.PT*
>M"0D)"0E]#0H)"0D)?0T*#0H)"0D):68@*&D@/3T@96XN=F%L=65S+FQE;F=T
>M:"D@96XN=F%L=65S+FQE;F=T:"`](&5N+G9A;'5E<RYL96YG=&@@*B`R.PT*
>M"0D)"65N+G9A;'5E<UMI72`](&5V.PT*"0D)"2LK:3L-"@T*"0D)"6EF("AT
>M;VLN=&]K96X@/3T@5$]++E1/2W)C=7)L>2D@8G)E86L[#0H)"0D)97AP96-T
>M5&]K96XH=&]K+"!43TLN5$]+8V]M;6$L("(G+"<B*3L-"@D)"7T-"@D)"65N
>M+G9A;'5E<RYL96YG=&@@/2!I.PT*#0H)"0ER971U<FX@96X[#0H)"7T*#0H)
>M<'5B;&EC.@H)"2\O(%!A<G-E('1H92!M;V1U;&4Z"@D)=F]I9"!G;R@I('L*
>M"0D):6YT"0EI;F1E;G0@/2`P.PH*"0D)<F5S=&%R="@I.PH)"0EF;W(@*#L[
>M*2!["@D)"0E4;VME;BH)=&]K+"!N=&]K.PH*"0D)"2\O($=R86(@=&AE(&YE
>M>'0@=&]K96X@9G)O;2!T:&4@9FEL92P@82!N=6QL('1O:V5N(&ES('1H92!E
>M;F0@;V8@=&AE(&9I;&4Z"@D)"0ET;VL@/2!N97AT5&]K96XH*3L*"0D)"6EF
>M("AT;VL@:7,@;G5L;"D@8G)E86L["@H)"0D)9&5B=6<@>PH)"0D)"2\O(%1H
>M:7,@9'5M<',@;W5T('1H92!V87)I;W5S('1O:V5N<R`H8F%S:6-A;&QY(')E
>M9F]R;6%T<R!T:&4@<V]U<F-E*3H*"0D)"0EI9B`H=&]K+G1O:V5N(#T](%1/
>M2RY43TMI9&5N=&EF:65R*0H)"0D)"0EP<FEN=&8H(B4N*G,@(BP@=&]K+FED
>M96YT*3L*"0D)"0EE;'-E(&EF("AT;VLN=&]K96X@/3T@5$]++E1/2V-H87)V
>M*0H)"0D)"0EP<FEN=&8H(B<E+BIS)R`B+"!T;VLN:61E;G0I.PH)"0D)"65L
>M<V4@:68@*'1O:RYT;VME;B`]/2!43TLN5$]+<W1R:6YG*0H)"0D)"0EP<FEN
>M=&8H(EPB)2XJ<UPB("(L('1O:RYI9&5N="D["@D)"0D)96QS92!I9B`H=&]K
>M+G1O:V5N(#T](%1/2RY43TMI;G0S,G8I"@D)"0D)"7!R:6YT9B@B)2XJ<R`B
>M+"!T;VLN:61E;G0I.PH)"0D)"65L<V4*"0D)"0D)<')I;G1F*"(E+BIS("(L
>M('1O:W1O<W1R6W1O:RYT;VME;ETI.PH*"0D)"0EN=&]K(#T@<&5E:U1O:V5N
>M*"D["@H)"0D)"2\O($EN9&5N=&%T:6]N.@H)"0D)"6EF("@A*&YT;VL@:7,@
>M;G5L;"DI"@D)"0D)"6EF("AP965K5&]K96XH*2YT;VME;B`]/2!43TLN5$]+
>M<F-U<FQY*0H)"0D)"0D)+2UI;F1E;G0["@H)"0D)"6EF("AT;VLN=&]K96X@
>M/3T@5$]++E1/2VQC=7)L>2D@>PH)"0D)"0DK*VEN9&5N=#L*"0D)"0D)<')I
>M;G1F*")<;B(I.PH)"0D)"0EF;W(@*&EN="!I(#T@,#L@:2`\(&EN9&5N=#L@
>M*RMI*2!P<FEN=&8H(EQT(BD["@D)"0D)?2!E;'-E(&EF("@H=&]K+G1O:V5N
>M(#T](%1/2RY43TMS96UI8V]L;VXI('Q\("AT;VLN=&]K96X@/3T@5$]++E1/
>M2W)C=7)L>2DI('L*"0D)"0D)<')I;G1F*")<;B(I.PH)"0D)"0EF;W(@*&EN
>M="!I(#T@,#L@:2`\(&EN9&5N=#L@*RMI*2!P<FEN=&8H(EQT(BD["@D)"0D)
>M?0H*"0D)"7T@96QS92!["@H)"0D)"2\O(%!A<G-E(&$@;6]D=6QE.@T*"0D)
>M"0ES=VET8V@@*'1O:RYT;VME;BD@>PT*"0D)"0D)8V%S92!43TLN5$]+97AT
>M97)N.B![#0H)"0D)"0D)+R\@5$]$3SH@($-O<G)E8W0@:6UP;&5M96YT871I
>M;VX-"@D)"0D)"0EP<FEN=&8H(F5X=&5R;EQN(BD[#0H)"0D)"0D)97AP96-T
>M*%1/2RY43TML<&%R96XL("(G*"<B*3L-"@D)"0D)"0EC:&%R6UT);&EN:V%G
>M92`](&5X<&5C="A43TLN5$]+:61E;G1I9FEE<BP@(FED96YT:69I97(B*2YI
>M9&5N=#L-"@D)"0D)"0EE>'!E8W0H5$]++E1/2W)P87)E;BP@(B<I)R(I.PT*
>M"0D)"0D)"6EF("AP965K5&]K96XH*2YT;VME;B`]/2!43TLN5$]+8V]L;VXI
>M('L-"@D)"0D)"0D);&YK1&5F875L="`](&QI;FMA9V4[#0H)"0D)"0D)?2!E
>M;'-E(&EF("AP965K5&]K96XH*2YT;VME;B`]/2!43TLN5$]+;&-U<FQY*2![
>M#0H)"0D)"0D)"0T*"0D)"0D)"7T@96QS92![#0H)"0D)"0D)"6QN:T-U<G)E
>M;G0@/2!L:6YK86=E.PT*"0D)"0D)"7T-"@D)"0D)"0EB<F5A:SL-"@D)"0D)
>M"7T-"@T*"0D)"0D)+R\@4W1A<G0@;V8@82!V87)I86)L92!O<B!F=6YC=&EO
>M;B!D969I;FET:6]N.@T*"0D)"0D)8V%S92!43TLN5$]+=F]I9#H*"0D)"0D)
>M8V%S92!43TLN5$]+:6YT."P@5$]++E1/2W5N<S@Z"@D)"0D)"6-A<V4@5$]+
>M+E1/2VEN=#$V+"!43TLN5$]+=6YS,38Z"@D)"0D)"6-A<V4@5$]++E1/2VEN
>M=#,R+"!43TLN5$]+=6YS,S(Z"@D)"0D)"6-A<V4@5$]++E1/2VEN=#8T+"!4
>M3TLN5$]+=6YS-C0Z"@D)"0D)"6-A<V4@5$]++E1/2V9L;V%T,S(L(%1/2RY4
>M3TMF;&]A=#8T+"!43TLN5$]+9FQO870X,#H*"0D)"0D)8V%S92!43TLN5$]+
>M:6UA9VEN87)Y,S(L(%1/2RY43TMI;6%G:6YA<GDV-"P@5$]++E1/2VEM86=I
>M;F%R>3@P.@H)"0D)"0EC87-E(%1/2RY43TMC;VUP;&5X,S(L(%1/2RY43TMC
>M;VUP;&5X-C0L(%1/2RY43TMC;VUP;&5X.#`Z"@D)"0D)"6-A<V4@5$]++E1/
>M2V-H87(L(%1/2RY43TMW8VAA<BP@5$]++E1/2V1C:&%R+"!43TLN5$]+8FET
>M.@H)"0D)"0EC87-E(%1/2RY43TMI9&5N=&EF:65R.B![#0H)"0D)"0D)5&]K
>M96XJ"6YT;VL[#0H)"0D)"0D)8VAA<EM="6ED96YT.PT*"0D)"0D)"51O:V5N
>M*EM="71Y<&4[#0H)"0D)"0D)86-C97-S4FEG:'1S"6-U<F%R.PT*#0H)"0D)
>M"0D)+R\@0V]N<W1R=6-T('1H92!T>7!E(&]F('1H92!I9&5N=&EF:65R.@T*
>M"0D)"0D)"71Y<&4N;&5N9W1H(#T@,3L-"@D)"0D)"0ET>7!E6S!=(#T@=&]K
>M.PT*"0D)"0D)"7=H:6QE("@H;G1O:R`](&YE>'14;VME;B@I*2YT;VME;B`A
>M/2!43TLN5$]+:61E;G1I9FEE<BD@>PT*"0D)"0D)"0ET>7!E+FQE;F=T:"`]
>M('1Y<&4N;&5N9W1H("L@,3L-"@D)"0D)"0D)='EP95ML96YG=&@@+2`Q72`]
>M(&YT;VL[#0H)"0D)"0D)?0T*#0H)"0D)"0D)+R\@4F5A9"!T:&4@:61E;G1I
>M9FEE<CH-"@D)"0D)"0EE>'!E8W14;VME;BAN=&]K+"!43TLN5$]+:61E;G1I
>M9FEE<BP@(FED96YT:69I97(@869T97(@='EP92(I.PT*"0D)"0D)"6ED96YT
>M(#T@;G1O:RYI9&5N=#L-"@T*"0D)"0D)"2\O($=E="!T:&4@86-C97-S(')I
>M9VAT<R!F;W(@=&AI<R!I9&5N=&EF:65R.@T*"0D)"0D)"6-U<F%R(#T@9V5T
>M06-C97-S*"D[#0H-"@D)"0D)"0EN=&]K(#T@;F5X=%1O:V5N*"D[#0H)"0D)
>M"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/2VQP87)E;BD@>PT*"0D)"0D)
>M"0DO+R!)="=S(&$@9G5N8W1I;VXZ#0H)"0D)"0D)"41&=6YC*@EF=6YC(#T@
>M;F5W($1&=6YC.PT*"0D)"0D)"0EF=6YC+FYA;64@/2!I9&5N=#L-"@D)"0D)
>M"0D)9G5N8RYT>7!E(#T@='EP92YD=7`[#0H)"0D)"0D)"69U;F,N;&EN:V%G
>M92`](&=E=$QI;FMA9V4H*3L-"@D)"0D)"0D)9G5N8RYA8V-E<W,@/2!C=7)A
>M<CL-"@T*"0D)"0D)"0DO+R!!9&0@9G5N8W1I;VX@=&\@8VQA<W,Z#0H)"0D)
>M"0D)"61M;V1U;&4N9G5N8W,N;&5N9W1H(#T@9&UO9'5L92YF=6YC<RYL96YG
>M=&@@*R`Q.PT*"0D)"0D)"0ED;6]D=6QE+F9U;F-S6VQE;F=T:"`M(#%=(#T@
>M9G5N8SL-"@T*"0D)"0D)"0DO+R!296%D('1H92!P87)A;65T97(@;&ES=#H-
>M"@D)"0D)"0D)<F5A9%!A<F%M971E<G,H9G5N8RYP87)M<RD[#0H-"@D)"0D)
>M"0D)+R\@4VMI<"!T:&4@9G5N8W1I;VX@9&5F:6YI=&EO;CH-"@D)"0D)"0D)
>M;G1O:R`](&YE>'14;VME;B@I.PT*"0D)"0D)"0EI9B`H;G1O:RYT;VME;B`]
>M/2!43TLN5$]+<V5M:6-O;&]N*2!B<F5A:SL-"@T*"0D)"0D)"0EE>'!E8W14
>M;VME;BAN=&]K+"!43TLN5$]+;&-U<FQY+"`B)WLG(BD[#0H)"0D)"0D)"7-K
>M:7!.97-T*%1/2RY43TML8W5R;'DL(%1/2RY43TMR8W5R;'DI.PT*#0H)"0D)
>M"0D)?2!E;'-E('L-"@D)"0D)"0D)+R\@270G<R!A('9A<FEA8FQE(&]R(&QI
>M<W0@=&AE<F5O9CH-"@T*"0D)"0D)"0EF;W(@*#L[*2![#0H)"0D)"0D)"0E$
>M5F%R*@EV87(@/2!N97<@1%9A<CL-"@D)"0D)"0D)"79A<BYN86UE(#T@:61E
>M;G0[#0H)"0D)"0D)"0EV87(N='EP92`]('1Y<&4N9'5P.PT*"0D)"0D)"0D)
>M=F%R+F%C8V5S<R`](&-U<F%R.PT*#0H)"0D)"0D)"0DO+R!!9&0@=F%R:6%B
>M;&4@=&\@8VQA<W,Z#0H)"0D)"0D)"0ED;6]D=6QE+G9A<G,N;&5N9W1H(#T@
>M9&UO9'5L92YV87)S+FQE;F=T:"`K(#$[#0H)"0D)"0D)"0ED;6]D=6QE+G9A
>M<G-;;&5N9W1H("T@,5T@/2!V87([#0H-"@D)"0D)"0D)"2\O('-E;6EC;VQO
>M;B!B<F5A:W,@=&AE(&QI<W0Z#0H)"0D)"0D)"0EI9B`H;G1O:RYT;VME;B`]
>M/2!43TLN5$]+<V5M:6-O;&]N*2!B<F5A:SL-"@D)"0D)"0D)"6EF("AN=&]K
>M+G1O:V5N(#T](%1/2RY43TMA<W-I9VXI('L-"@D)"0D)"0D)"0EF;W(@*#L[
>M*2![#0H)"0D)"0D)"0D)"6YT;VL@/2!N97AT5&]K96XH*3L-"@D)"0D)"0D)
>M"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/2VQB<F%C:V5T*0T*"0D)"0D)
>M"0D)"0D)<VMI<$YE<W0H5$]++E1/2VQB<F%C:V5T+"!43TLN5$]+<F)R86-K
>M970I.PT*"0D)"0D)"0D)"0EI9B`H;G1O:RYT;VME;B`]/2!43TLN5$]+;&-U
>M<FQY*0T*"0D)"0D)"0D)"0D)<VMI<$YE<W0H5$]++E1/2VQC=7)L>2P@5$]+
>M+E1/2W)C=7)L>2D[#0H)"0D)"0D)"0D)"6EF("AN=&]K+G1O:V5N(#T](%1/
>M2RY43TMC;VUM82D@8G)E86L[#0H)"0D)"0D)"0D)"6EF("AN=&]K+G1O:V5N
>M(#T](%1/2RY43TMS96UI8V]L;VXI(&)R96%K.PT*"0D)"0D)"0D)"7T-"@D)
>M"0D)"0D)"0EI9B`H;G1O:RYT;VME;B`]/2!43TLN5$]+<V5M:6-O;&]N*2!B
>M<F5A:SL-"@D)"0D)"0D)"7T@96QS92!I9B`H;G1O:RYT;VME;B`A/2!43TLN
>M5$]+8V]M;6$I('L-"@D)"0D)"0D)"0DO+R!-=7-T(&)E(&UO<F4@='EP93H-
>M"@D)"0D)"0D)"0EF;W(@*#L[*2![#0H)"0D)"0D)"0D)"6YT;VL@/2!N97AT
>M5&]K96XH*3L-"@D)"0D)"0D)"0D)+R\@5$]$3SH@($AA;F1L92!A9&1I;F<@
>M='EP92!I;F9O+@T*"0D)"0D)"0D)"0EI9B`H;G1O:RYT;VME;B`]/2!43TLN
>M5$]+87-S:6=N*2!B<F5A:SL-"@D)"0D)"0D)"0D):68@*&YT;VLN=&]K96X@
>M/3T@5$]++E1/2V-O;6UA*2!B<F5A:SL-"@D)"0D)"0D)"0D):68@*&YT;VLN
>M=&]K96X@/3T@5$]++E1/2W-E;6EC;VQO;BD@8G)E86L[#0H)"0D)"0D)"0D)
>M?0T*"0D)"0D)"0D)"6EF("AN=&]K+G1O:V5N(#T](%1/2RY43TMS96UI8V]L
>M;VXI(&)R96%K.PT*"0D)"0D)"0D)"6EF("AN=&]K+G1O:V5N(#T](%1/2RY4
>M3TMA<W-I9VXI('L-"@D)"0D)"0D)"0D)9F]R("@[.RD@>PT*"0D)"0D)"0D)
>M"0D);G1O:R`](&YE>'14;VME;B@I.PT*"0D)"0D)"0D)"0D):68@*&YT;VLN
>M=&]K96X@/3T@5$]++E1/2VQB<F%C:V5T*0T*"0D)"0D)"0D)"0D)"7-K:7!.
>M97-T*%1/2RY43TML8G)A8VME="P@5$]++E1/2W)B<F%C:V5T*3L-"@D)"0D)
>M"0D)"0D)"6EF("AN=&]K+G1O:V5N(#T](%1/2RY43TML8W5R;'DI#0H)"0D)
>M"0D)"0D)"0D)<VMI<$YE<W0H5$]++E1/2VQC=7)L>2P@5$]++E1/2W)C=7)L
>M>2D[#0H)"0D)"0D)"0D)"0EI9B`H;G1O:RYT;VME;B`]/2!43TLN5$]+8V]M
>M;6$I(&)R96%K.PT*"0D)"0D)"0D)"0D):68@*&YT;VLN=&]K96X@/3T@5$]+
>M+E1/2W-E;6EC;VQO;BD@8G)E86L[#0H)"0D)"0D)"0D)"7T-"@D)"0D)"0D)
>M"0D):68@*&YT;VLN=&]K96X@/3T@5$]++E1/2W-E;6EC;VQO;BD@8G)E86L[
>M#0H)"0D)"0D)"0D)?0T*"0D)"0D)"0D)?0T*"0D)"0D)"0D)97AP96-T5&]K
>M96XH;G1O:RP@5$]++E1/2V-O;6UA+"`B)RPG(BD[#0H-"@D)"0D)"0D)"6YT
>M;VL@/2!N97AT5&]K96XH*3L-"@D)"0D)"0D)"65X<&5C=%1O:V5N*&YT;VLL
>M(%1/2RY43TMI9&5N=&EF:65R+"`B:61E;G1I9FEE<B(I.PT*"0D)"0D)"0D)
>M:61E;G0@/2!N=&]K+FED96YT.PT*#0H)"0D)"0D)"0DO+R!'970@;F5X="!C
>M;VUM82!O<B!S96UI8V]L;VXZ#0H)"0D)"0D)"0EN=&]K(#T@;F5X=%1O:V5N
>M*"D[#0H)"0D)"0D)"7T-"@T*"0D)"0D)"7T-"@D)"0D)"0EB<F5A:SL-"@D)
>M"0D)"7T-"@H)"0D)"0EC87-E(%1/2RY43TMC;&%S<SH@>PH)"0D)"0D)1$-L
>M87-S*@D)8VQS(#T@<&%R<V5#;&%S<R@I.PH*"0D)"0D)"2\O($%D9"!T:&4@
>M8VQA<W,@=&\@=&AE(&UO9'5L93H*"0D)"0D)"61M;V1U;&4N8VQA<W-E<RYL
>M96YG=&@@/2!D;6]D=6QE+F-L87-S97,N;&5N9W1H("L@,3L*"0D)"0D)"61M
>M;V1U;&4N8VQA<W-E<UML96YG=&@@+2`Q72`](&-L<SL-"@D)"0D)"0D-"@D)
>M"0D)"0EA<D1E9F%U;'0@/2!A8V-E<W-2:6=H=',N87)0=6)L:6,[#0H)"0D)
>M"0D)8G)E86L["@D)"0D)"7T-"@D)"0D)"6-A<V4@5$]++E1/2VEM<&]R=#H@
>M>PH)"0D)"0D)1$EM<&]R="H):6UP(#T@<&%R<V5);7!O<G0H*3L*"@D)"0D)
>M"0DO+R!!9&0@=&AE(&EM<&]R="!T;R!T:&4@;6]D=6QE.@H)"0D)"0D)9&UO
>M9'5L92YI;7!O<G1S+FQE;F=T:"`](&1M;V1U;&4N:6UP;W)T<RYL96YG=&@@
>M*R`Q.PH)"0D)"0D)9&UO9'5L92YI;7!O<G1S6VQE;F=T:"`M(#%=(#T@:6UP
>M.PT*"0D)"0D)"6)R96%K.PH)"0D)"0E]"@D)"0D)"6-A<V4@5$]++E1/2VUO
>M9'5L93H@>PH)"0D)"0D)8VAA<EM="6UO9#L*"@D)"0D)"0DO+R!'970@=&AE
>M(&UO9'5L92=S(&ED96YT:69I97(Z"@D)"0D)"0EW:&EL92`H*&YT;VL@/2!N
>M97AT5&]K96XH*2DN=&]K96X@(3T@5$]++E1/2W-E;6EC;VQO;BD@>PH)"0D)
>M"0D)"6EF("AN=&]K+G1O:V5N(#T](%1/2RY43TMI9&5N=&EF:65R*0H)"0D)
>M"0D)"0EM;V0@?CT@;G1O:RYI9&5N=#L*"0D)"0D)"0EE;'-E(&EF("AN=&]K
>M+G1O:V5N(#T](%1/2RY43TMD;W0I"@D)"0D)"0D)"6UO9"!^/2`B+B(["@D)
>M"0D)"0E]"@H)"0D)"0D)9&UO9'5L92YN86UE(#T@;6]D.PT*"0D)"0D)"6%R
>M1&5F875L="`](&%C8V5S<U)I9VAT<RYA<E!U8FQI8SL-"@D)"0D)"0EB<F5A
>M:SL*"0D)"0D)?0T*#0H)"0D)"0EC87-E(%1/2RY43TMS=')U8W0Z('L-"@D)
>M"0D)"0E$4W1R=6-T*@ES="`]('!A<G-E4W1R=6-T*"D[#0H-"@D)"0D)"0ED
>M;6]D=6QE+G-T<G5C=',N;&5N9W1H(#T@9&UO9'5L92YS=')U8W1S+FQE;F=T
>M:"`K(#$[#0H)"0D)"0D)9&UO9'5L92YS=')U8W1S6VQE;F=T:"`M(#%=(#T@
>M<W0[#0H)"0D)"0D)8G)E86L[#0H)"0D)"0E]#0H)"0D)"0EC87-E(%1/2RY4
>M3TMU;FEO;CH@>PT*"0D)"0D)"413=')U8W0J"7-T(#T@<&%R<V53=')U8W0H
>M*3L-"@T*"0D)"0D)"61M;V1U;&4N=6YI;VYS+FQE;F=T:"`](&1M;V1U;&4N
>M=6YI;VYS+FQE;F=T:"`K(#$[#0H)"0D)"0D)9&UO9'5L92YU;FEO;G-;;&5N
>M9W1H("T@,5T@/2!S=#L-"@D)"0D)"0EB<F5A:SL-"@D)"0D)"7T-"@D)"0D)
>M"6-A<V4@5$]++E1/2V5N=6TZ('L-"@D)"0D)"0E$16YU;2H)"7-T(#T@<&%R
>M<V5%;G5M*"D[#0H-"@D)"0D)"0ED;6]D=6QE+F5N=6US+FQE;F=T:"`](&1M
>M;V1U;&4N96YU;7,N;&5N9W1H("L@,3L-"@D)"0D)"0ED;6]D=6QE+F5N=6US
>M6VQE;F=T:"`M(#%=(#T@<W0[#0H)"0D)"0D)8G)E86L[#0H)"0D)"0E]#0H-
>M"@D)"0D)"61E9F%U;'0Z#0H)"0D)"7T*"0D)"7T*"0D)?0H)"0ER971U<FX[
>M"@D)?0I]"@T*#0HO+R!2971U<FX@82!S=')I;F<@<F5P<F5S96YT871I;VX@
>M;V8@=&AE('1Y<&4Z#0IC:&%R6UT@='EP95-T<FEN9RA4;VME;BI;72!T>7!E
>M*2![#0H)8VAA<EM="7,[#0H)9F]R96%C:"`H5&]K96XJ('1O:SL@='EP92D@
>M>PT*"0EI9B`H=&]K+G1O:V5N(#T](%1/2RY43TMI9&5N=&EF:65R*0T*"0D)
>M<R!^/2!T;VLN:61E;G0[#0H)"65L<V4-"@D)"7,@?CT@=&]K=&]S=');=&]K
>M+G1O:V5N73L-"@E]#0H)<F5T=7)N(',[#0I]#0H*+R\@4F5T=7)N(&$@8V]M
>M;6$M<V5P87)A=&5D(&QI<W0@;V8@<&%R86UE=&5R<SH-"F-H87);72!P87)M
>M;&ES="A$5F%R*EM=('!A<FUS*2![#0H)8VAA<EM="7,[#0H)9F]R96%C:"`H
>M:6YT(&DL($1687(J('!A<FT[('!A<FUS*2![#0H)"6EF("AI(#X@,"D@<R!^
>M/2`B+"`B.PT*"0EI9B`H*'!A<FTN;6]D:69I97(@)B!A8V-E<W--;V1I9FEE
>M<BYA;4EN3W5T*2`]/2!A8V-E<W--;V1I9FEE<BYA;4]U="D-"@D)"7,@?CT@
>M(F]U="`B.PT*"0EE;'-E(&EF("@H<&%R;2YM;V1I9FEE<B`F(&%C8V5S<TUO
>M9&EF:65R+F%M26Y/=70I(#T](&%C8V5S<TUO9&EF:65R+F%M26Y/=70I#0H)
>M"0ES('X](")I;F]U="`B.PT*"0ES('X]('1Y<&53=')I;F<H<&%R;2YT>7!E
>M*2!^("(@(B!^('!A<FTN;F%M93L-"@E]#0H)<F5T=7)N(',[#0I]#0H-"G9O
>M:60@9'5M<%-T<G5C="A$4W1R=6-T("IS="P@:6YT(&EN9&5N="P@8F]O;"!I
>M<W5N:6]N*2![#0H)8VAA<EM="6EN9'-T<CL-"@EF;W(@*&EN="!I(#T@,#L@
>M:2`\(&EN9&5N=#L@*RMI*2!I;F1S='(@?CT@(EQT(CL-"@T*"7!R:6YT9B@B
>M)2XJ<R(L(&EN9'-T<BD[#0H-"@EI9B`H:7-U;FEO;BD-"@D)<')I;G1F*")U
>M;FEO;B`B*3L-"@EE;'-E#0H)"7!R:6YT9B@B<W1R=6-T("(I.PT*#0H):68@
>M*'-T+FYA;64@:7,@;G5L;"D-"@D)<')I;G1F*")[7&XB*3L*"65L<V4*"0EP
>M<FEN=&8H(B4N*G,@>UQN(BP@<W0N;F%M92D[#0H-"@EF;W)E86-H("A$4W1R
>M=6-T*B!S=#([('-T+G-T<G5C=',I('L-"@D)9'5M<%-T<G5C="AS=#(L(&EN
>M9&5N="LQ+"!F86QS92D[#0H)?0T*#0H)9F]R96%C:"`H1%-T<G5C="H@<W0R
>M.R!S="YU;FEO;G,I('L-"@D)9'5M<%-T<G5C="AS=#(L(&EN9&5N="LQ+"!T
>M<G5E*3L-"@E]#0H-"@EF;W)E86-H("A$5F%R*B!V87([('-T+G9A<G,I('L-
>M"@D)<')I;G1F*"(E+BIS7'0B+"!I;F1S='(I.PT*"0EP<FEN=&8H(B4N*G-<
>M="4N*G,[7&XB+"!T>7!E4W1R:6YG*'9A<BYT>7!E*2P@=F%R+FYA;64I.PT*
>M"7T-"@T*"69O<F5A8V@@*$1&=6YC*B!F=6YC.R!S="YF=6YC<RD@>PT*"0EP
>M<FEN=&8H(B4N*G-<="(L(&EN9'-T<BD[#0H)"7-W:71C:"`H9G5N8RYA8V-E
>M<W,I('L-"@D)"6-A<V4@86-C97-S4FEG:'1S+F%R4'5B;&EC.B!P<FEN=&8H
>M(G!U8FQI8R`B*3L@8G)E86L[#0H)"0EC87-E(&%C8V5S<U)I9VAT<RYA<E!R
>M:79A=&4Z('!R:6YT9B@B<')I=F%T92`B*3L@8G)E86L[#0H)"0EC87-E(&%C
>M8V5S<U)I9VAT<RYA<E!R;W1E8W1E9#H@<')I;G1F*")P<F]T96-T960@(BD[
>M(&)R96%K.PT*"0D)8V%S92!A8V-E<W-2:6=H=',N87)086-K86=E.B!P<FEN
>M=&8H(G!A8VMA9V4@(BD[(&)R96%K.PT*"0E]#0H)"6EF("AF=6YC+FQI;FMA
>M9V4@(3T@(D0B*0T*"0D)<')I;G1F*")E>'1E<FX@*"4N*G,I("(L(&9U;F,N
>M;&EN:V%G92D[#0H)"7!R:6YT9B@B)2XJ<UQT)2XJ<R@E+BIS*3M<;B(L('1Y
>M<&53=')I;F<H9G5N8RYT>7!E*2P@9G5N8RYN86UE+"!P87)M;&ES="AF=6YC
>M+G!A<FUS*2D[#0H)?0T*#0H)<')I;G1F*"(E+BIS(BP@:6YD<W1R*3L-"@EP
>M<FEN=&8H(GU<;EQN(BD["GT-"@T*+R\@4VEM<&QE(&UA:6X@<')O9W)A;3H*
>M:6YT(&UA:6XH8VAA<EM=6UT@87)G<RD@>PH)1%1A9W,);&5X.PH)1FEL90ED
>M9FEL93L*"@EI9B`H87)G<RYL96YG=&@@/#T@,2D@>PH)"7!R:6YT9B@B)2XJ
>M<R`\9FEL92YD/EQN(BP@87)G<ULP72D["@D)<F5T=7)N("TQ.PH)?0H*"2\O
>M($]P96X@=&AE(&9I;&4Z"@ED9FEL92`](&YE=R!&:6QE*&%R9W-;,5TI.PH)
>M+R\@4V5N9"!I;B!T:&4@8G5F9F5R('1O('1H92!L97AE<CH*"6-H87);70ES
>M='(@/2!D9FEL92YR96%D4W1R:6YG*&1F:6QE+G-I>F4H*2D["@H);&5X(#T@
>M;F5W($1486=S*&%R9W-;,5TL('-T<BD["@DO+R!#;&]S92!T:&4@9FEL92!N
>M;W<Z"@ED9FEL92YC;&]S92@I.PH*"2\O($QE="!T:&4@;&5X97(@;&]O<V4Z
>M"@EL97@N9V\H*3L*"@DO+R!297!O<G0@=&AE(')E<W5L=',Z"@H)<')I;G1F
>M*")M;V1U;&4@)2XJ<R![7&XB+"!L97@N9&UO9'5L92YN86UE*3L*"@EP<FEN
>M=&8H(EQT<'5B;&EC("!I;7!O<G1S("(I.PH)9F]R96%C:"`H:6YT(&DL($1)
>M;7!O<G0J(&EM.R!L97@N9&UO9'5L92YI;7!O<G1S*2!["@D):68@*&EM+F%C
>M8V5S<R`]/2!A8V-E<W-2:6=H=',N87)0=6)L:6,I('L*"0D):68@*&D@/B`P
>M*2!P<FEN=&8H(BP@(BD["@D)"7!R:6YT9B@B)2XJ<R(L(&EM+FYA;64I.PH)
>M"7T*"7T*"7!R:6YT9B@B.UQN(BD["@H)<')I;G1F*")<='!R:79A=&4@:6UP
>M;W)T<R`B*3L*"69O<F5A8V@@*&EN="!I+"!$26UP;W)T*B!I;3L@;&5X+F1M
>M;V1U;&4N:6UP;W)T<RD@>PH)"6EF("AI;2YA8V-E<W,@/3T@86-C97-S4FEG
>M:'1S+F%R4')I=F%T92D@>PH)"0EI9B`H:2`^(#`I('!R:6YT9B@B+"`B*3L*
>M"0D)<')I;G1F*"(E+BIS(BP@:6TN;F%M92D["@D)?0H)?0H)<')I;G1F*"([
>M7&Y<;B(I.PH*"2\O($5N=6US.@H)9F]R96%C:"`H1$5N=6TJ(&5N.R!L97@N
>M9&UO9'5L92YE;G5M<RD@>PH)"7!R:6YT9B@B7'1E;G5M("4N*G,@>UQN(BP@
>M96XN;F%M92D["@D)9F]R96%C:"`H1$5N=6TN96YU;59A;'5E(&5V.R!E;BYV
>M86QU97,I('L-"@D)"6EF("AE=BYV86QU92!I<R!N=6QL*0T*"0D)"7!R:6YT
>M9B@B7'1<="4N*G,L7&XB+"!E=BYN86UE*3L*"0D)96QS90H)"0D)<')I;G1F
>M*")<=%QT)2XJ<R`]("4N*G,L7&XB+"!E=BYN86UE+"!E=BYV86QU92D["@D)
>M?0H)"7!R:6YT9B@B7'1]7&Y<;B(I.PH)?0H*"2\O(%-T<G5C=',Z"@EF;W)E
>M86-H("A$4W1R=6-T*B!S=#L@;&5X+F1M;V1U;&4N<W1R=6-T<RD@>PT*"0ED
>M=6UP4W1R=6-T*'-T+"`Q+"!F86QS92D[#0H)?0H-"@DO+R!5;FEO;G,Z"@EF
>M;W)E86-H("A$4W1R=6-T*B!S=#L@;&5X+F1M;V1U;&4N=6YI;VYS*2![#0H)
>M"61U;7!3=')U8W0H<W0L(#$L('1R=64I.PT*"7T*#0H)+R\@5F%R:6%B;&5S
>M.@H)9F]R96%C:"`H1%9A<BH@=G([(&QE>"YD;6]D=6QE+G9A<G,I('L*"0EP
>M<FEN=&8H(EQT)2XJ<UQT)2XJ<SM<;B(L('1Y<&53=')I;F<H=G(N='EP92DL
>M('9R+FYA;64I.PH)?0H):68@*&QE>"YD;6]D=6QE+G9A<G,N;&5N9W1H(#X@
>M,"D@<')I;G1F*")<;B(I.PH*"2\O($-L87-S97,Z"@EF;W)E86-H("A$0VQA
>M<W,J(&-L.R!L97@N9&UO9'5L92YC;&%S<V5S*2!["@D):6YT"6H@/2`P.PH*
>M"0EP<FEN=&8H(EQT8VQA<W,@)2XJ<R(L(&-L+FYA;64I.PH)"6EF("AC;"YI
>M:6YT97)F86-E<RYL96YG=&@@/B`P*2!P<FEN=&8H(B`Z("(I.PH*"0EF;W)E
>M86-H("AC:&%R6UT@=CL@8VPN:6EN=&5R9F%C97,I('L*"0D):68@*&H@/B`P
>M*2!P<FEN=&8H(BP@(BD["@D)"7!R:6YT9B@B)2XJ<R(L('8I.PH)"0DK*VH[
>M"@D)?0H)"7!R:6YT9B@B('M<;B(I.PH*"0DO+R!687)I86)L97,Z"@D)9F]R
>M96%C:"`H1%9A<BH@=F%R.R!C;"YV87)S*2![#0H)"0EP<FEN=&8H(EQT7'0B
>M*3L-"@D)"7-W:71C:"`H=F%R+F%C8V5S<RD@>PT*"0D)"6-A<V4@86-C97-S
>M4FEG:'1S+F%R4'5B;&EC.B!P<FEN=&8H(G!U8FQI8R`B*3L@8G)E86L[#0H)
>M"0D)8V%S92!A8V-E<W-2:6=H=',N87)0<FEV871E.B!P<FEN=&8H(G!R:79A
>M=&4@(BD[(&)R96%K.PT*"0D)"6-A<V4@86-C97-S4FEG:'1S+F%R4')O=&5C
>M=&5D.B!P<FEN=&8H(G!R;W1E8W1E9"`B*3L@8G)E86L[#0H)"0D)8V%S92!A
>M8V-E<W-2:6=H=',N87)086-K86=E.B!P<FEN=&8H(G!A8VMA9V4@(BD[(&)R
>M96%K.PT*"0D)?0T*"0D)<')I;G1F*"(E+BIS7'0E+BIS.UQN(BP@='EP95-T
>M<FEN9RAV87(N='EP92DL('9A<BYN86UE*3L-"@D)?0T*"0EI9B`H8VPN=F%R
>M<RYL96YG=&@@/B`P*2!P<FEN=&8H(EQN(BD[#0H-"@D)+R\@0V]N<W1R=6-T
>M;W)S.@T*"0EF;W)E86-H("A$1G5N8RH@9G5N8SL@8VPN8W1O<G,I('L-"@D)
>M"7!R:6YT9B@B7'1<="(I.PT*"0D)<W=I=&-H("AF=6YC+F%C8V5S<RD@>PT*
>M"0D)"6-A<V4@86-C97-S4FEG:'1S+F%R4'5B;&EC.B!P<FEN=&8H(G!U8FQI
>M8R`B*3L@8G)E86L[#0H)"0D)8V%S92!A8V-E<W-2:6=H=',N87)0<FEV871E
>M.B!P<FEN=&8H(G!R:79A=&4@(BD[(&)R96%K.PT*"0D)"6-A<V4@86-C97-S
>M4FEG:'1S+F%R4')O=&5C=&5D.B!P<FEN=&8H(G!R;W1E8W1E9"`B*3L@8G)E
>M86L[#0H)"0D)8V%S92!A8V-E<W-2:6=H=',N87)086-K86=E.B!P<FEN=&8H
>M(G!A8VMA9V4@(BD[(&)R96%K.PT*"0D)?0T*"0D)<')I;G1F*")T:&ES*"4N
>M*G,I.UQN(BP@<&%R;6QI<W0H9G5N8RYP87)M<RDI.PT*"0E]"@T*"0DO+R!$
>M97-T<G5C=&]R<SH-"@D)9F]R96%C:"`H1$9U;F,J(&9U;F,[(&-L+F1T;W)S
>M*2![#0H)"0EP<FEN=&8H(EQT7'0B*3L-"@D)"7-W:71C:"`H9G5N8RYA8V-E
>M<W,I('L-"@D)"0EC87-E(&%C8V5S<U)I9VAT<RYA<E!U8FQI8SH@<')I;G1F
>M*")P=6)L:6,@(BD[(&)R96%K.PT*"0D)"6-A<V4@86-C97-S4FEG:'1S+F%R
>M4')I=F%T93H@<')I;G1F*")P<FEV871E("(I.R!B<F5A:SL-"@D)"0EC87-E
>M(&%C8V5S<U)I9VAT<RYA<E!R;W1E8W1E9#H@<')I;G1F*")P<F]T96-T960@
>M(BD[(&)R96%K.PT*"0D)"6-A<V4@86-C97-S4FEG:'1S+F%R4&%C:V%G93H@
>M<')I;G1F*")P86-K86=E("(I.R!B<F5A:SL-"@D)"7T-"@D)"7!R:6YT9B@B
>M?G1H:7,H)2XJ<RD[7&XB+"!P87)M;&ES="AF=6YC+G!A<FUS*2D[#0H)"7T*
>M#0H)"2\O($9U;F-T:6]N<SH-"@D)9F]R96%C:"`H1$9U;F,J(&9U;F,[(&-L
>M+F9U;F-S*2![#0H)"0EP<FEN=&8H(EQT7'0B*3L-"@D)"7-W:71C:"`H9G5N
>M8RYA8V-E<W,I('L-"@D)"0EC87-E(&%C8V5S<U)I9VAT<RYA<E!U8FQI8SH@
>M<')I;G1F*")P=6)L:6,@(BD[(&)R96%K.PT*"0D)"6-A<V4@86-C97-S4FEG
>M:'1S+F%R4')I=F%T93H@<')I;G1F*")P<FEV871E("(I.R!B<F5A:SL-"@D)
>M"0EC87-E(&%C8V5S<U)I9VAT<RYA<E!R;W1E8W1E9#H@<')I;G1F*")P<F]T
>M96-T960@(BD[(&)R96%K.PT*"0D)"6-A<V4@86-C97-S4FEG:'1S+F%R4&%C
>M:V%G93H@<')I;G1F*")P86-K86=E("(I.R!B<F5A:SL-"@D)"7T-"@D)"7!R
>M:6YT9B@B)2XJ<UQT)2XJ<R@E+BIS*3M<;B(L('1Y<&53=')I;F<H9G5N8RYT
>M>7!E*2P@9G5N8RYN86UE+"!P87)M;&ES="AF=6YC+G!A<FUS*2D[#0H)"7T*
>M"@D)<')I;G1F*")<='U<;EQN(BD["@E]"@T*"2\O($9U;F-T:6]N<SH-"@EF
>M;W)E86-H("A$1G5N8RH@9G5N8SL@;&5X+F1M;V1U;&4N9G5N8W,I('L-"@D)
>M<')I;G1F*")<="(I.PT*"0ES=VET8V@@*&9U;F,N86-C97-S*2![#0H)"0EC
>M87-E(&%C8V5S<U)I9VAT<RYA<E!U8FQI8SH@<')I;G1F*")P=6)L:6,@(BD[
>M(&)R96%K.PT*"0D)8V%S92!A8V-E<W-2:6=H=',N87)0<FEV871E.B!P<FEN
>M=&8H(G!R:79A=&4@(BD[(&)R96%K.PT*"0D)8V%S92!A8V-E<W-2:6=H=',N
>M87)0<F]T96-T960Z('!R:6YT9B@B<')O=&5C=&5D("(I.R!B<F5A:SL-"@D)
>M"6-A<V4@86-C97-S4FEG:'1S+F%R4&%C:V%G93H@<')I;G1F*")P86-K86=E
>M("(I.R!B<F5A:SL-"@D)?0T*"0EP<FEN=&8H(B4N*G-<="4N*G,H)2XJ<RD[
>M7&XB+"!T>7!E4W1R:6YG*&9U;F,N='EP92DL(&9U;F,N;F%M92P@<&%R;6QI
>M<W0H9G5N8RYP87)M<RDI.PT*"7T*#0H)<')I;G1F*")]7&XB*3L*"@ER971U
>'<FX@,#L*?2YP
>`
>end

Why not produce a Coco/R for D instead?
January 01, 2005
The parser couldn't parse below code.

==
import std.stream, std.string;
~
==

parseImport() have a bug.


--- ../dtags.d	2004-12-25 06:00:53.834500000 +0900
+++ dtags.d	2005-01-01 18:34:57.953125000 +0900
@@ -296,14 +296,28 @@

// Parse an import line:
// Starts after import token.
+		private int parse_import_continue = true;
DImport* parseImport() {
DImport*	imp;
char[]		ident;
Token*		ntok;

+			if (!parse_import_continue) {
+				parse_import_continue = true;
+				return null;
+			}
// Get the import identifier:
-			while ((ntok = nextToken()).token != TOK.TOKsemicolon) {
-				if (ntok.token == TOK.TOKidentifier)
+			while (true) {
+				ntok = nextToken();
+				if (ntok.token == TOK.TOKsemicolon) {
+					parse_import_continue = false;
+					break;
+				}
+				else if (ntok.token == TOK.TOKcomma) {
+					parse_import_continue = true;
+					break;
+				}
+				else if (ntok.token == TOK.TOKidentifier)
ident ~= ntok.ident;
else if (ntok.token == TOK.TOKdot)
ident ~= ".";
@@ -925,11 +939,13 @@
break;
}
case TOK.TOKimport: {
-							DImport*	imp = parseImport();
+							DImport*	imp;

-							// Add the import to the module:
-							dmodule.imports.length = dmodule.imports.length + 1;
-							dmodule.imports[length - 1] = imp;
+							while ((imp = parseImport()) !== null) {
+								// Add the import to the module:
+								dmodule.imports.length = dmodule.imports.length + 1;
+								dmodule.imports[length - 1] = imp;
+							}
break;
}
case TOK.TOKmodule: {


January 03, 2005
I never said it was complete ;)  Thanks for the bugfix, but I dropped that module a while back.  I'm working off the DMD front end C++ parsing code now. It will be pretty much guaranteed to work like the compiler does.  I'll let everyone know when I've hammered out all the fine details.

In article <cr5sh1$2ida$1@digitaldaemon.com>, ahiru says...
>
>The parser couldn't parse below code.
>
>==
>import std.stream, std.string;
>~
>==
>
>parseImport() have a bug.
>
>
>--- ../dtags.d	2004-12-25 06:00:53.834500000 +0900
>+++ dtags.d	2005-01-01 18:34:57.953125000 +0900
>@@ -296,14 +296,28 @@
>
>// Parse an import line:
>// Starts after import token.
>+		private int parse_import_continue = true;
>DImport* parseImport() {
>DImport*	imp;
>char[]		ident;
>Token*		ntok;
>
>+			if (!parse_import_continue) {
>+				parse_import_continue = true;
>+				return null;
>+			}
>// Get the import identifier:
>-			while ((ntok = nextToken()).token != TOK.TOKsemicolon) {
>-				if (ntok.token == TOK.TOKidentifier)
>+			while (true) {
>+				ntok = nextToken();
>+				if (ntok.token == TOK.TOKsemicolon) {
>+					parse_import_continue = false;
>+					break;
>+				}
>+				else if (ntok.token == TOK.TOKcomma) {
>+					parse_import_continue = true;
>+					break;
>+				}
>+				else if (ntok.token == TOK.TOKidentifier)
>ident ~= ntok.ident;
>else if (ntok.token == TOK.TOKdot)
>ident ~= ".";
>@@ -925,11 +939,13 @@
>break;
>}
>case TOK.TOKimport: {
>-							DImport*	imp = parseImport();
>+							DImport*	imp;
>
>-							// Add the import to the module:
>-							dmodule.imports.length = dmodule.imports.length + 1;
>-							dmodule.imports[length - 1] = imp;
>+							while ((imp = parseImport()) !== null) {
>+								// Add the import to the module:
>+								dmodule.imports.length = dmodule.imports.length + 1;
>+								dmodule.imports[length - 1] = imp;
>+							}
>break;
>}
>case TOK.TOKmodule: {
>
>


1 2
Next ›   Last »