Marco Kleefman writes:
: Hello,
:
: I am new to this list and I like to ask the Perl-unicode guru's in this list
: some questions.
:
: Does Perl (standard release, without additional modules) already supports
: unicode?
Depends on what you mean by "support". You can certainly process UTF-8
with anything as new as Perl 3, since that's when Perl became binary safe.
You can put any characters you want into literal strings, and you know
that UTF-8 characters will not match a trailing quote because they always
have the high bit set.
There are modules on CPAN which will do various character set
transformations, including to and from Unicode, that will work with
current stable versions of Perl.
However, if you want to have the semantics of regular expressions and
various operators such as length() represent characters rather than octets,
you have to use a development version. When 5.6 comes out, it will
support this, but we're still ironing out the wrinkles.
: If so, can somebody point me in some direction how to implement unicode in
: my Perl/cgi applications, so I can serve e.g. Japanese html-pages. At this
: moment I have no idea how to implement it.
:
: I have also read about the unicode modules from Aas/Schwartz. Do I need
: these modules?
They're helpful if you have to deal with other character sets and translate
to UTF-8.
: Does anybody have (or know where to find on the internet) a sample perl/cgi
: script which uses/supports unicode?
Funny you should ask. My church's webpage (www.nlnc.org) will send the
Chinese name of our church encoded in UTF-8 if your browser admits to
supporting it. It might even display if you have a decent Unicode font.
(Otherwise it comes out as boxes.)
It's only a little bit of Chinese mixed in with a lot of English, but
it might give you a start. It doesn't require character semantics, so
it works with current stable versions of Perl. The Chinese characters
are just hard-wired into a here doc that is conditionally printed, so
you need a UTF-8 capable editor to modify it. (I used yudit at the
time. Hopefully the vim folks will get their act together at some
point...)
Larry
begin 644 index.cgi
M(R$O=7-R+V)I;B]P97)L"@IU<V4@0T=).PH*)'$@/2!N97<@0T=)*"(B*3L*
M"B155$8X(#T@)$5.5GM(5%107T%#0T505%]#2$%24T54?2`]?B`O=71F+3@O
M:3L*"D!N86UE<R`]("1Q+3YP87)A;3L*"G!R:6YT("1Q+3YH96%D97(H"B`@
M("`M='EP92`]/B`B=&5X="]H=&UL.R!C:&%R<V5T/5541BTX(BP*("`@("UE
M>'!I<F5S(#T^("<K,S!M)RP**3L*<')I;G0@)'$M/G-T87)T7VAT;6PH"B`@
M("`M=&ET;&4@/3X@(DYE=R!,:69E($-H=7)C:"P@0W5P97)T:6YO($-H=7)C
M:"!O9B!T:&4@3F%Z87)E;F4B+`HC("`@+6UE=&$@/3X@>PHC"2U(5%107T51
M54E6(#T^(")#;VYT96YT+51Y<&4B+`HC"2U#3TY414Y4(#T^(")T97AT+VAT
M;6P[(&-H87)S970]551&+3@B+`HC("`@('TL"B`@("`M>&)A<V4@/3X@(FAT
M='`Z+R]W=W<N;FQN8RYO<F<O(BP*("`@("UB86-K9W)O=6YD(#T^(")S;F)R
M<W0N:G!G(BP**3L*<')I;G0@/#PB14Y$(CL*/%`^/%1!0DQ%($)/4D1%4CTP
M/@H@("`\5%(^"B`@("`@(#Q41"!(14E'2%0].#,R/@H@("`@("`@("`\4#X\
M5$%"3$4@0D]21$52/3`^"B`@("`@("`@("`@(#Q44CX*("`@("`@("`@("`@
M("`@/%1$(%9!3$E'3CUT;W`@2$5)1TA4/3<Y,3X*("`@("`@("`@("`@("`@
M("`@/%`^/%1!0DQ%($)/4D1%4CTQ/@H@("`@("`@("`@("`@("`@("`@("`\
M5%(^"B`@("`@("`@("`@("`@("`@("`@("`@(#Q41"!604Q)1TX]=&]P"B`@
M("`@("`@("`@("`@("`@("`@("`@($A%24=(5#TW.34^"@D)"2`@(#QB<CX*
M"0D)("`@/&)R/@H)"0D@("`\8G(^"@D)"2`@(#QB<CX*"0D)("`@/&)R/@H@
M("`@("`@("`@("`@("`@("`@("`@("`@("`\4"!!3$E'3CUL969T/CQ404),
M12!"3U)$15(],"!#14Q,4U!!0TE.1STQ,#X*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@/%12/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`\5$0^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(#Q0($%,24=./5))1TA4/CQ"/@H)"0D)("`@(#Q!($A2148](FAT='`Z+R]W
M=W<N;FQN8RYO<F<O;6%P+FAT;6PB/@H)"0D)("`@(#Q&3TY4($-/3$]2/2(C
M1D9&1C`P(B!325I%/2(M,2(^"@D)"0D@("`@36%P<SPO1D].5#X\+T$^"@D)
M"0D@("`@/"]"/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\
M+U1$/CPO5%(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q44CX*
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/%1$/@H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\4"!!3$E'3CUR:6=H=#X\
M0CX*"0D)"2`@("`\02!(4D5&/2)H='1P.B\O=W=W+FYL;F,N;W)G+V%B;W5T
M+FAT;6PB/@H)"0D)("`@(#Q&3TY4($-/3$]2/2(C1D9&1C`P(B!325I%/2(M
M,2(^"@D)"0D@("`@06)O=70F;F)S<#M5<SPO1D].5#X\+T$^"@D)"0D@("`@
M/"]"/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\+U1$/CPO
M5%(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q44CX*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@/%1$/@H@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`\4"!!3$E'3CUR:6=H=#X\0CX*"0D)
M"2`@("`\02!(4D5&/2)H='1P.B\O=W=W+FYL;F,N;W)G+W-C:&5D+FAT;6PB
M/@H)"0D)("`@(#Q&3TY4($-/3$]2/2(C1D9&1C`P(B!325I%/2(M,2(^"@D)
M"0D@("`@4V-H961U;&4\+T9/3E0^/"]!/@H)"0D)("`@(#PO0CX*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@/"]41#X\+U12/@H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`\5%(^"B`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@(#Q41#X*("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@/%`@04Q)1TX]<FEG:'0^/$(^"@D)"0D@("`@/$$@2%)%
M1CTB:'1T<#HO+W=W=RYN;&YC+F]R9R]C86PN:'1M;"(^"@D)"0D@("`@/$9/
M3E0@0T],3U(](B-&1D9&,#`B(%-)6D4](BTQ(CX*"0D)"2`@("!#86QE;F1A
M<CPO1D].5#X\+T$^"@D)"0D@("`@/"]"/@H@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`\+U1$/CPO5%(^"B`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@(#Q44CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@/%1$/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\
M4"!!3$E'3CUR:6=H=#X\0CX*"0D)"2`@("`\02!(4D5&/2)H='1P.B\O=W=W
M+FYL;F,N;W)G+W-M86QL+FAT;6PB/@H)"0D)("`@(#Q&3TY4($-/3$]2/2(C
M1D9&1C`P(B!325I%/2(M,2(^"@D)"0D@("`@1W)O=7!S/"]&3TY4/CPO03X*
M"0D)"2`@("`\+T(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(#PO5$0^/"]44CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/%12
M/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\5$0^"B`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q0($%,24=./7)I9VAT
M/CQ"/@H)"0D)("`@(#Q!($A2148](FAT='`Z+R]W=W<N;FQN8RYO<F<O:VED
M<W1U9F8N:'1M;"(^"@D)"0D@("`@/$9/3E0@0T],3U(](B-&1D9&,#`B(%-)
M6D4](BTQ(CX*"0D)"2`@("!+:61S/"]&3TY4/CPO03X*"0D)"2`@("`\+T(^
M"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#PO5$0^/"]44CX*
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/%12/@H@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`\5$0^"B`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@(#Q0($%,24=./7)I9VAT/CQ"/@H)"0D)("`@
M(#Q!($A2148](FAT='`Z+R]W=W<N;FQN8RYO<F<O9V%T:&5R(CX*"0D)"2`@
M("`\1D].5"!#3TQ/4CTB(T9&1D8P,"(@4TE:13TB+3$B/@H)"0D)("`@(%1E
M96YS/"]&3TY4/CPO03X*"0D)"2`@("`\+T(^"B`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@(#PO5$0^/"]44CX*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@/%12/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`\5$0^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(#Q0($%,24=./7)I9VAT/CQ"/@H)"0D)("`@(#Q!($A2148](FAT='`Z+R]W
M=W<N;FQN8RYO<F<O8VAI;F5S92YH=&UL(CX*"0D)"2`@("`\1D].5"!#3TQ/
M4CTB(T9&1D8P,"(@4TE:13TB+3$B/@H)"0D)("`@($-H:6YE<V4\+T9/3E0^
M/"]!/@H)"0D)("`@(#PO0CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@/"]41#X\+U12/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`\5%(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q41#X*
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/%`@04Q)1TX]
M<FEG:'0^/$(^"@D)"0D@("`@/$$@2%)%1CTB:'1T<#HO+W=W=RYN;&YC+F]R
M9R]S='5F9B(^"@D)"0D@("`@/$9/3E0@0T],3U(](B-&1D9&,#`B(%-)6D4]
M(BTQ(CX*"0D)"2`@("!';V]D)FYB<W`[4W1U9F8\+T9/3E0^/"]!/@H)"0D)
M("`@(#PO0CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/"]4
M1#X\+U12/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\5%(^"B`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q41#X*("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@/%`@04Q)1TX]<FEG:'0^/$(^
M"@D)"0D@("`@/$$@2%)%1CTB:'1T<#HO+W=W=RYN;&YC+F]R9R]P96]P;&4N
M:'1M;"(^"@D)"0D@("`@/$9/3E0@0T],3U(](B-&1D9&,#`B(%-)6D4](BTQ
M(CX*"0D)"2`@("!!9&1R97-S97,\+T9/3E0^/"]!/@H)"0D)("`@(#PO0CX*
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/"]41#X\+U12/@H@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\5%(^"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@(#Q41#X*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@/%`@04Q)1TX]<FEG:'0^/$(^"@D)"0D@("`@
M/$$@2%)%1CTB:'1T<#HO+W=W=RYN;&YC+F]R9R]P:7@B/@H)"0D)("`@(#Q&
M3TY4($-/3$]2/2(C1D9&1C`P(B!325I%/2(M,2(^"@D)"0D@("`@4&EC='5R
M97,\+T9/3E0^/"]!/@H)"0D)("`@(#PO0CX*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@/"]41#X\+U12/@H@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`\5%(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@(#Q41#X*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M/%`@04Q)1TX]<FEG:'0^/$(^"@D)"0D@("`@/$$@2%)%1CTB:'1T<#HO+W=W
M=RYN;&YC+F]R9R]L:6YK<RYH=&UL(CX*"0D)"2`@("`\1D].5"!#3TQ/4CTB
M(T9&1D8P,"(@4TE:13TB+3$B/@H)"0D)("`@($QI;FMS/"]&3TY4/CPO03X*
M"0D)"2`@("`\+T(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(#PO5$0^/"]44CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@/"]404),
M13X*("`@("`@("`@("`@("`@("`@("`@("`@/"]41#X\+U12/@H@("`@("`@
M("`@("`@("`@("`\+U1!0DQ%/@H@("`@("`@("`@("`@("`\+U1$/@H)("`@
M("`@(#Q41"!604Q)1TX]=&]P($A%24=(5#TW.3$^"B`@("`@("`@("`@("`@
M("`@(#Q0/CQ404),12!"3U)$15(],#X*("`@("`@("`@("`@("`@("`@("`@
M/%12/@H@("`@("`@("`@("`@("`@("`@("`@("`\5$0@8F=C;VQO<CTB,#`P
M,#`P(B!(14E'2%0],2!724142#TQ,#`E/@H@("`@("`@("`@("`@("`@("`@
M("`@("`@("`\4#X\0T5.5$52/@H)"0D@("`\0CX\1D].5"!C;VQO<CTB(S`P
M,#`P,"(^/"]&3TY4/CPO0CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@
M/"]#14Y415(^"B`@("`@("`@("`@("`@("`@("`@("`@(#PO5$0^/"]44CX*
M("`@("`@("`@("`@("`@("`@/"]404),13X\5$%"3$4@0D]21$52/3`^"B`@
M("`@("`@("`@("`@("`@("`@(#Q44CX*"0D)/%1$(%9!3$E'3CUT;W`@2$5)
M1TA4/3$V-SX*("`@("`@("`@("`@("`@("`@("`@("`@("`@/$1,/@H@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`\1%0^/$-%3E1%4CX\24U'(%-2
M0STB;FQN8RYG:68B"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(%=)
M1%1(/3(Q,2!(14E'2%0],3(S"B`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@(%@M4T%3+55S94EM86=E5VED=&@*("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@6"U305,M57-E26UA9V5(96EG:'0@04Q)1TX]8F]T=&]M/@H@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\+T-%3E1%4CX*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@"B`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@(#Q$5#X\0T5.5$52/CQ"/CQ&3TY4"B`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@(%-)6D4](BLR(CY#=7!E<G1I;F\@0VAU<F-H(&]F
M('1H90H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("!.87IA<F5N93PO
M1D].5#X\+T(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#QB<CX*
M14Y$"G!R:6YT(#P\(D5.1"(@:68@)%541C@["B`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@(#QB<CX*"0D)("`@("`@/$9/3E0@4TE:13TB*S(B/CQ"
M/@KEKJ,@Z(&6(.:<@R#FEK`@YY2?(.61O2#EH((*"0D)("`@("`@/"]"/CPO
M1D].5#X*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/&)R/@I%3D0*
M<')I;G0@/#PB14Y$(CL*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M/&)R/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`R,#DP,"!-8T-L
M96QL86X@4F]A9`H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\8G(^
M"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@($-U<&5R=&EN;RP@0T$@
M.34P,30*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/&)R/@H@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`H-#`X*2`R-3<M,S`V,#PO0T5.
M5$52/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`\+T1,/@H@("`@("`@
M("`@("`@("`@("`@("`@("`\+U1$/@H@("`@("`@("`@("`@("`@("`@("`@
M("`\5$0@5D%,24=./6-E;G1E<B!(14E'2%0],38W/@H@("`@("`@("`@("`@
M("`@("`@("`@("`@("`\4#X\0T5.5$52/CQ404),12!"3U)$15(],"!#14Q,
M4$%$1$E.1STV/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\5%(^
M"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q41"!604Q)1TX]
M8V5N=&5R/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`\1D].5"!325I%/2(K,2(^/&D^5&AE<F5F;W)E+"!I9@H@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("!A;GEO;F4@:7,@:6X@0VAR
M:7-T+"!H92!I<R!A"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@(&YE=R!C<F5A=&EO;CL@;VQD('1H:6YG<R!H879E"B`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@('!A<W-E9"!A=V%Y.R!B
M96AO;&0L(&%L;`H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("!T:&EN9W,@:&%V92!B96-O;64*("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@;F5W+CPO:3X\+T9/3E0^"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@(#QD:78@04Q)1TX]4DE'2%0^
M/&9O;G0^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(#(@0V]R:6YT:&EA;G,@-3HQ-SPO9&EV/@H@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`\+U1$/CPO5%(^"B`@("`@("`@("`@("`@("`@("`@
M("`@("`@(#PO5$%"3$4^/"]#14Y415(^"B`@("`@("`@("`@("`@("`@("`@
M("`@(#PO5$0^"@D)"3PO5%(^"B`@("`@("`@("`@("`@("`@(#PO5$%"3$4^
M/%1!0DQ%($)/4D1%4CTP/@H@("`@("`@("`@("`@("`@("`@("`\5%(^"B`@
M("`@("`@("`@("`@("`@("`@("`@(#Q41"!B9V-O;&]R/2(P,#`P,#`B($A%
M24=(5#TQ(%=)1%1(/3$P,"4^"B`@("`@("`@("`@("`@("`@("`@("`@(#PO
M5$0^/"]44CX*("`@("`@("`@("`@("`@("`@/"]404),13X@/%1!0DQ%($)/
M4D1%4CTP/@H@("`@("`@("`@("`@("`@("`@("`\5%(^"B`@("`@("`@("`@
M("`@("`@("`@("`@(#Q41"!604Q)1TX]=&]P($A%24=(5#TT,C@@5TE$5$@]
M(C4P)2(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q0/CQ$3#X*("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/&QT/@H@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`\4#X\0CX\1D].5"!325I%/2(K
M,2(^3W5R"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@($UI
M<W-I;VX\+T9/3E0^/"]"/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`\54P@='EP93TB8G5L;&5T(CX*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@/$Q)/E1O(&5N8V]U<F%G92!A('!E<G-O
M;F%L"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(')E
M;&%T:6]N<VAI<"!W:71H('1H92!#:')I<W0*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@;V8@=&AE($)I8FQE"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@(`H@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`\3$D^5&\@8G5I;&0@86X@875T:&5N
M=&EC"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(&-O
M;6UU;FET>2!O9B!F86ET:`H@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@/$Q)/E1O('-H87)E('1H92!L;W9E(&%N9`H@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("!T<F%N<V9O<FUI;F<@<&]W97(@
M;V8@2F5S=7,*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@0VAR:7-T"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(#PO54P^"@D)"0D@("`\<#X*("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@/&QT/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`\4#X\0CX\1D].5"!325I%/2(K,2(^5V4*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@16UP:&%S:7IE/"]&3TY4/CPO0CX*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/%5,('1Y<&4](F)U;&QE
M="(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q,
M23Y!;B!I;G1I;6%T92!R96QA=&EO;G-H:7`*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@=VET:"!';V0*("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@"@D)"0D@("`@("`@/$Q)/E=O<G-H
M:7`L(&)O=&@@9V%T:&5R960@86YD('!R:79A=&4*"B`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@(#Q,23Y-:6YI<W1R>2!B>2!A;&P@
M1V]D)W,*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M<&5O<&QE"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(`H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\3$D^
M5&AE(&-H=7)C:"!S8V%T=&5R960*("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@(#Q,23Y286ES:6YG('5P('1H92!N97AT"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@(&=E;F5R871I;VX*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q,23Y&96QL;W=S:&EP(&%M
M;VYG($=O9"=S"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@(%!E;W!L90H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`\+U5,/@H)"0D)("`@/'`^"B`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@(#QL=#X*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@/%`^/$(^/$9/3E0@4TE:13TB*S$B/E=E"B`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@($)E;&EE=F4\+T9/3E0^/"]"/@H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\54P@='EP93TB8G5L;&5T
M(CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/$Q)
M/D=O9"!D97-I<F5S(&$@<&5R<V]N86P*("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@<F5L871I;VYS:&EP('=I=&@@96%C:"!O9B!U
M<PH@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`*("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/$Q)/D=O9"!G
M:79E<R!E=&5R;F%L(&QI9F4@=&\*("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@86QL('=H;R!B96QI979E($IE<W5S(&1I960@9F]R
M"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@('1H96ER
M('-I;G,@86YD('=H;R!A8V-E<'0@:&EM"B`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@(&%S('1H96ER(')I<V5N($QO<F0*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q,23Y';V0G<R!3<&ER:70@
M:&5L<',@=7,*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@<F5S:7-T('1E;7!T871I;VXL(&%S<W5R97,@=7,*("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@;V8@971E<FYA;"!L:69E+"!A
M;F0@:6X@;W1H97(*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@=V%Y<R!L96%D<R!U<R!I;G1O($-H<FES=&EA;@H@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("!M871U<FET>0H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`*("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@/$Q)/D=O9"!C86QL<R!A;&P@
M8F5L:65V97)S"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@(&EN=&\@0VAR:7-T:6%N(&-O;6UU;FET>3H@2&ES"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@($-H=7)C:`H@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`*("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@/$Q)/E1H92!":6)L92!I<R!';V0G
M<PH@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("!C;VUM
M=6YI8V%T:6]N('1O(&UA;FMI;F0L"B`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@(&1E<V-R:6)I;F<@=VAO('=E(&%R92P@=VAO($=O
M9`H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("!I<RP@
M86YD(&AO=R!';V0@=V%N=',@=7,@=&\*("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@<F5L871E('1O9V5T:&5R+@H@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`\+U5,/@H)"0D)("`@/'`^"B`@
M("`@("`@("`@("`@("`@("`@("`@("`@(#PO1$P^"B`@("`@("`@("`@("`@
M("`@("`@("`@(#PO5$0^/%1$(%9!3$E'3CUT;W`^"B`@("`@("`@("`@("`@
M("`@("`@("`@("`@(#Q0/CQ$3#X*("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@/$14/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`\0CX\1D].5"!325I%/2(K,2(^/&$@:')E9CTB<VUA;&PN:'1M;"(^"@D)
M"0D@("`@061U;'0@36EN:7-T<FEE<SPO83X\+T9/3E0^/"]"/@H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\54P@='EP93TB8G5L;&5T
M(CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/$Q)
M/D)I8FQE('-T=61Y(&=R;W5P<PH@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`\3$D^365N)W,@86YD('=O;65N)W,@;6EN:7-T<FEE
M<PH@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\3$D^
M375S:6,@;6EN:7-T<FEE<PH@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`\+U5,/@H)"0D)("`@(#QP/@H@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`\1%0^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@(#Q"/CQ&3TY4(%-)6D4](BLQ(CX\82!H<F5F/2)G871H97(B/@H@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("!4:&4@1V%T:&5R
M:6YG/"]A/CPO1D].5#X\+T(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@(#Q53"!T>7!E/2)B=6QL970B/@H@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`\3$D^4W1U9F8@=&AA="=S(&9U;B!F
M;W(@=&5E;G,A"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@(#Q,23Y3='5F9B!T:&%T)W,@:6UP;W)T86YT(&9O<B!T965N<R$*("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/$Q)/E!L=7,@
M;W1H97(@<F%N9&]M('1E96X@<W1U9F8N+BX*("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@/"]53#X*"0D)"2`@("`\<#X*("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@/$14/@H@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`\0CX\1D].5"!325I%/2(K,2(^/&$@:')E9CTB
M:VED<W1U9F8N:'1M;"(^"@D)"0D@("`@0VAI;&1R96XG<R!-:6YI<W1R:65S
M/"]A/CPO1D].5#X\+T(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@(#Q53"!T>7!E/2)B=6QL970B/@H@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`\3$D^3G5R<V5R>0H@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`\3$D^4W5N9&%Y('-C:&]O;"!C
M;&%S<V5S"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M(#Q,23Y+;VEN;VYI82!+:61S(&-H:6QD<F5N)W,@=V]R<VAI<`H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\+U5,/@H)"0D)("`@(#QP
M/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\1%0^"B`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q"/CQ&3TY4(%-)6D4](BLQ
M(CX*"0D)"2`@("`\82!H<F5F/2)C:&EN97-E+FAT;6PB/DYE=R!,:69E($-H
M:6YE<V4@36EN:7-T<GD\+V$^"@D)"0D@("`@/"]&3TY4/CPO0CX*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/%5,('1Y<&4](F)U;&QE
M="(^"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q,
M23Y3=6YD87D@;6]R;FEN9R!W;W)S:&EP"B`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@('-E<G9I8V4@:6X@0VAI;F5S90H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\3$D^0FEB;&4@9F5L
M;&]W<VAI<"!C;&%S<V5S"B`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@(#Q,23Y3;V-I86P@06-T:79I=&EE<PH@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`\+U5,/@H)"0D)("`@(#QP/@H@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`\1%0^"B`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@(#Q"/CQ&3TY4(%-)6D4](BLQ(CX*"0D)
M"2`@("`\82!H<F5F/2)S='5F9B]G:79I;F<N:'1M;"-N=VUS(CY7;W)L9"!-
M:7-S:6]N<SPO83X*"0D)"2`@("`\+T9/3E0^/"]"/@H@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`\54P@='EP93TB8G5L;&5T(CX*("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@/$Q)/E=E('!R
M;W9I9&4@86X@;W!P;W)T=6YI='D*("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@=&\@<W5P<&]R="!M:7-S:6]N87)I97,*("`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@=V]R;&1W:61E+@H@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\+U5,/@H)"0D)
M("`@(#QP/@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`\1%0^"B`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q"/CQ&3TY4(%-)
M6D4](BLQ(CX*"0D)"2`@("`\82!H<F5F/2)L:71T;&5P96]P;&4N:'1M;"(^
M3&ET=&QE(%!E;W!L92!#:')I<W1I86X@1&%Y($-A<F4\+V$^"@D)"0D@("`@
M/"]&3TY4/CPO0CX*("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@/%5,('1Y<&4](F)U;&QE="(^"B`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@(#Q,23Y,:6-E;G-E9"!#:')I<W1I86X@9&%Y"B`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(&-A<F4@36]N
M9&%Y('1H<F]U9V@@1G)I9&%Y"B`@("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@(#PO54P^"B`@("`@("`@("`@("`@("`@("`@("`@("`@(#PO
M1$P^"B`@("`@("`@("`@("`@("`@("`@("`@(#PO5$0^/"]44CX*("`@("`@
M("`@("`@("`@("`@/"]404),13X\24U'(%-20STB;F]T93`Q+F=I9B(@5TE$
M5$@]-C4@2$5)1TA4/30P"B`@("`@("`@("`@("`@("`@(%@M4T%3+55S94EM
M86=E5VED=&@@6"U305,M57-E26UA9V5(96EG:'0*("`@("`@("`@("`@("`@
M("`@04Q)1TX]8F]T=&]M/CQ"/CQ&3TY4"B`@("`@("`@("`@("`@("`@(%-)
M6D4](BLR(CYE;6%I;#PO1D].5#X\+T(^/%1!0DQ%($)/4D1%4CTP/@H@("`@
M("`@("`@("`@("`@("`@("`\5%(^"B`@("`@("`@("`@("`@("`@("`@("`@
M(#Q41"!B9V-O;&]R/2(P,#`P,#`B($A%24=(5#TQ(#X*("`@("`@("`@("`@
M("`@("`@("`@("`@("`@/%`^/$-%3E1%4CX*"0D)("`@/$(^/$9/3E0@8V]L
M;W(](B,P,#`P,#`B/CPO1D].5#X\+T(^"B`@("`@("`@("`@("`@("`@("`@
M("`@("`@(#PO0T5.5$52/@H@("`@("`@("`@("`@("`@("`@("`@("`\+U1$
M/CPO5%(^"B`@("`@("`@("`@("`@("`@(#PO5$%"3$4^/%1!0DQ%($)/4D1%
M4CTP($-%3$Q34$%#24Y'/34^"B`@("`@("`@("`@("`@("`@("`@(#Q44CX*
M("`@("`@("`@("`@("`@("`@("`@("`@/%1$(%9!3$E'3CUT;W`^"B`@("`@
M("`@("`@("`@("`@("`@("`@("`@(#Q0/CQ!($A2148](FUA:6QT;SIT:6U<
M0&YL;F,N;W)G(CY4:6TF;F)S<#M)<V)E;&P\+T$^/$)2/@H)"0D@("!087-T
M;W(*("`@("`@("`@("`@("`@("`@("`@("`@/"]41#X\5$0@5D%,24=./71O
M<#X*("`@("`@("`@("`@("`@("`@("`@("`@("`@/%`^/$$@2%)%1CTB;6%I
M;'1O.FYO<FUA7$!N;&YC+F]R9R(^3F]R;6$F;F)S<#M3:6)E<G1S/"]!/CQ"
M4CX*"0D)("`@4&%S=&]R"B`@("`@("`@("`@("`@("`@("`@("`@(#PO5$0^
M/%1$(%9!3$E'3CUT;W`^"B`@("`@("`@("`@("`@("`@("`@("`@("`@(#Q0
M/CQ!($A2148](FUA:6QT;SIK979I;EQ`;FQN8RYO<F<B/DME=FEN)FYB<W`[
M4F]G97)S/"]!/CQ"4CX*"0D)("`@4&%S=&]R"B`@("`@("`@("`@("`@("`@
M("`@("`@(#PO5$0^/%1$(%9!3$E'3CUT;W`^"B`@("`@("`@("`@("`@("`@
M("`@("`@("`@(#Q0/CQ!($A2148](FUA:6QT;SID879I9%Q`;FQN8RYO<F<B
M/D1A=FED)FYB<W`[2&]I/"]!/CQ"4CX*"0D)("`@4&%S=&]R"B`@("`@("`@
M("`@("`@("`@("`@("`@(#PO5$0^/"]44CX*("`@("`@("`@("`@("`@("`@
M("`@/%12/@H@("`@("`@("`@("`@("`@("`@("`@("`\5$0@5D%,24=./71O
M<#X*("`@("`@("`@("`@("`@("`@("`@("`@("`@/%`^/$$@2%)%1CTB;6%I
M;'1O.E-U95],:6Y?0VAU;F=<0&YL;F,N;W)G(CY3=64F;F)S<#M#:'5N9SPO
M03X\0E(^"@D)"2`@($1A>2!#87)E"B`@("`@("`@("`@("`@("`@("`@("`@
M(#PO5$0^/%1$(%9!3$E'3CUT;W`^"B`@("`@("`@("`@("`@("`@("`@("`@
M("`@(#Q0/CQ!($A2148](FUA:6QT;SIO9F9I8V5<0&YL;F,N;W)G(CY,:6YD
M829N8G-P.U-P<F]W;#PO03X\0E(^"@D)"2`@($]F9FEC92!-86YA9V5R"B`@
M("`@("`@("`@("`@("`@("`@("`@(#PO5$0^/%1$(%9!3$E'3CUT;W`^"B`@
M("`@("`@("`@("`@("`@("`@("`@("`@(#Q0/CQ!($A2148](FUA:6QT;SIJ
M;VY<0&)I9V=A<BYO<F<B/DIO;B9N8G-P.T)I9V=A<CPO03X\0E(^"@D)"2`@
M($9I;F%N8V4*("`@("`@("`@("`@("`@("`@("`@("`@/"]41#X\5$0@5D%,
M24=./71O<#X*("`@("`@("`@("`@("`@("`@("`@("`@("`@/%`^/$$@2%)%
M1CTB;6%I;'1O.FQA<G)Y7$!W86QL+F]R9R(^3&%R<GDF;F)S<#M786QL/"]!
M/CQ"4CX*"0D)("`@5V5B;6%S=&5R"B`@("`@("`@("`@("`@("`@("`@("`@
M(#PO5$0^/"]44CX*("`@("`@("`@("`@("`@("`@/"]404),13X*/'`^"B9N
M8G-P.U-E92!A;'-O(&]U<B`\82!H<F5F/2)P96]P;&4N:'1M;"(^861D<F5S
M<V5S/"]A/B!P86=E+@H@("`@("`@("`@("`@("`\+U1$/CPO5%(^"B`@("`@
M("`@(#PO5$%"3$4^/"]0/@H@("`@("`@("`*("`@("`@("`@/%`^)FYB<W`[
M"B`@("`@(#PO5$0^/"]44CX*/"]404),13X\+U`^"D5.1`HC('!R:6YT(")"
M24Y'3SQB<CXB(&EF("155$8X.PHC('!R:6YT(")`;F%M97-<;CQB<CXB.PHC
M(&9O<F5A8V@@)&ME>2`H<V]R="!K97ES("5%3E8I('L*(R`@("`@<')I;G0@
M(B1K97D@/3X@)$5.5GLD:V5Y?3QB<CY<;B(["B,@?0IP<FEN="`D<2T^96YD
27VAT;6PH*3L*"E]?14Y$7U\*
`
end